From 392b820796f137cfa1f89d15b2aeac91a76d4dbb Mon Sep 17 00:00:00 2001 From: Galactic Chimp <63882831+GalacticChimp@users.noreply.github.com> Date: Mon, 21 Jun 2021 02:13:54 +0200 Subject: [PATCH] Removed old Loc.GetString() use instances (#4155) Co-authored-by: DrSmugleaf --- Content.Client/AME/UI/AMEWindow.cs | 30 ++++---- .../Access/UI/IdCardConsoleWindow.cs | 24 +++--- .../Actions/Assignments/ActionAssignments.cs | 41 +++++++--- .../Actions/ClientActionsComponent.cs | 1 - Content.Client/Actions/UI/ActionMenu.cs | 13 ++-- Content.Client/Actions/UI/ActionsUI.cs | 4 +- .../Administration/UI/AdminAddReagentUI.cs | 33 ++++---- .../Administration/UI/AdminMenuWindow.xaml.cs | 16 ++-- .../Administration/UI/PermissionsEui.cs | 45 +++++------ .../UI/SetOutfit/SetOutfitMenu.xaml.cs | 4 +- .../AdminbusTab/StationEventsWindow.xaml.cs | 4 +- Content.Client/Arcade/BlockGameMenu.cs | 4 +- Content.Client/Atmos/UI/GasAnalyzerMenu.cs | 29 +++---- Content.Client/Body/UI/BodyScannerDisplay.cs | 8 +- Content.Client/Body/UI/SurgeryWindow.cs | 6 +- Content.Client/Cargo/UI/CargoConsoleMenu.cs | 51 ++++++------ .../Cargo/UI/CargoConsoleOrderMenu.cs | 10 +-- .../Cargo/UI/GalacticBankSelectionMenu.cs | 4 +- .../MagicMirrorBoundUserInterface.cs | 2 +- .../Components/CharacterInfoComponent.cs | 6 +- Content.Client/Chat/Managers/ChatManager.cs | 2 +- .../Components/HyposprayComponent.cs | 5 +- .../Chemistry/Components/InjectorComponent.cs | 12 +-- .../UI/ChemMasterBoundUserInterface.cs | 5 +- .../Chemistry/UI/ChemMasterWindow.cs | 42 +++++----- .../UI/ReagentDispenserBoundUserInterface.cs | 4 +- .../Chemistry/UI/ReagentDispenserWindow.cs | 22 +++--- .../Cloning/UI/AcceptCloningWindow.cs | 10 +-- Content.Client/Cloning/UI/CloningPodWindow.cs | 14 ++-- .../ConstructionGhostComponent.cs | 4 +- .../Construction/UI/ConstructionMenu.xaml.cs | 14 ++-- Content.Client/Crayon/CrayonComponent.cs | 10 +-- Content.Client/Crayon/UI/CrayonWindow.cs | 4 +- Content.Client/Credits/CreditsWindow.cs | 23 +++--- .../Disposal/UI/DisposalMailingUnitWindow.cs | 20 ++--- .../Disposal/UI/DisposalRouterWindow.cs | 10 +-- .../Disposal/UI/DisposalTaggerWindow.cs | 8 +- Content.Client/DragDrop/DragDropSystem.cs | 2 +- Content.Client/Examine/ExamineVerb.cs | 2 +- Content.Client/Ghost/GhostGui.cs | 10 +-- .../GravityGeneratorBoundUserInterface.cs | 10 +-- Content.Client/HUD/GameHud.cs | 14 ++-- Content.Client/Info/ServerInfo.cs | 10 +-- .../HumanInventoryInterfaceController.cs | 4 +- .../Inventory/StrippableBoundUserInterface.cs | 6 +- .../Kitchen/UI/MicrowaveBoundUserInterface.cs | 16 ++-- .../UI/ReagentGrinderBoundUserInterface.cs | 14 ++-- Content.Client/LateJoin/LateJoinGui.cs | 7 +- Content.Client/Lathe/UI/LatheQueueMenu.cs | 2 +- .../Launcher/LauncherConnectingGui.xaml.cs | 2 +- Content.Client/Lobby/LobbyState.cs | 24 +++--- .../Lobby/UI/LobbyCharacterPreviewPanel.cs | 10 +-- Content.Client/MainMenu/MainMenu.cs | 22 +++--- .../MedicalScanner/UI/MedicalScannerWindow.cs | 14 ++-- Content.Client/PDA/PDABoundUserInterface.cs | 25 +++--- .../UI/ParticleAcceleratorControlMenu.cs | 32 ++++---- .../Preferences/UI/CharacterSetupGui.cs | 15 ++-- .../Preferences/UI/HumanoidProfileEditor.cs | 76 +++++++++--------- .../UI/ResearchClientServerSelectionMenu.cs | 12 +-- .../Research/UI/ResearchConsoleMenu.cs | 36 ++++----- .../RoundEnd/RoundEndSummaryWindow.cs | 34 ++++---- Content.Client/Sandbox/SandboxManager.cs | 30 ++++---- Content.Client/Suspicion/TraitorOverlay.cs | 2 +- .../Tools/Components/WelderComponent.cs | 6 +- .../Atmos/GasTank/GasTankWindow.cs | 16 ++-- Content.Client/Verbs/VerbSystem.cs | 6 +- Content.Client/Voting/UI/VoteCallMenu.xaml.cs | 6 +- Content.Client/Wires/UI/WiresMenu.cs | 2 +- Content.Server/AI/Commands/FactionCommand.cs | 25 +++--- .../AME/Components/AMEControllerComponent.cs | 12 +-- .../AME/Components/AMEPartComponent.cs | 4 +- Content.Server/APC/Components/ApcComponent.cs | 2 +- .../Access/Components/IdCardComponent.cs | 10 ++- .../Components/IdCardConsoleComponent.cs | 18 ++--- .../Actions/Actions/DisarmAction.cs | 7 +- .../Administration/Commands/ControlMob.cs | 14 ++-- .../Administration/Commands/DSay.cs | 6 +- .../Commands/DeleteEntitiesWithComponent.cs | 22 ++---- .../Administration/Commands/Rejuvenate.cs | 24 ++---- .../Administration/Commands/SetAdminOOC.cs | 10 +-- .../Administration/Commands/SetMindCommand.cs | 18 ++--- .../Commands/SetOutfitCommand.cs | 27 ++++--- .../Administration/Managers/AdminManager.cs | 22 +++--- .../Verbs/AdminAddReagentVerb.cs | 2 +- .../Administration/Verbs/DeleteVerb.cs | 2 +- .../Advertise/AdvertiseComponent.cs | 2 +- .../Components/SpaceVillainArcadeComponent.cs | 38 ++++++--- .../Atmos/Components/FirelockComponent.cs | 4 +- .../Atmos/Components/FlammableComponent.cs | 2 +- .../Atmos/Components/GasAnalyzerComponent.cs | 8 +- .../Atmos/Components/GasTankComponent.cs | 2 +- Content.Server/BarSign/BarSignComponent.cs | 2 +- Content.Server/BarSign/BarSignPrototype.cs | 6 +- Content.Server/Body/Behavior/LungBehavior.cs | 4 +- .../Body/Mechanism/MechanismComponent.cs | 12 +-- Content.Server/Body/Part/BodyPartComponent.cs | 12 +-- .../Surgery/BiologicalSurgeryDataComponent.cs | 28 +++---- .../Components/SurgeryToolComponent.cs | 6 +- .../Botany/Components/PlantHolderComponent.cs | 77 +++++++++++-------- .../Botany/Components/SeedComponent.cs | 14 ++-- .../Components/SeedExtractorComponent.cs | 4 +- Content.Server/Botany/Seed.cs | 62 +++++++-------- .../Buckle/Components/BuckleComponent.cs | 24 +++--- .../Buckle/Components/StrapComponent.cs | 2 +- Content.Server/Cargo/CargoOrderDatabase.cs | 17 ++-- .../Components/MagicMirrorComponent.cs | 2 +- .../Chat/Commands/SuicideCommand.cs | 13 ++-- Content.Server/Chat/Managers/ChatManager.cs | 54 ++++++------- .../Components/ChemMasterComponent.cs | 14 ++-- .../Components/HyposprayComponent.cs | 14 ++-- .../Chemistry/Components/InjectorComponent.cs | 29 ++++--- .../Chemistry/Components/PillComponent.cs | 4 +- .../Components/ReagentDispenserComponent.cs | 14 ++-- .../Components/RehydratableComponent.cs | 2 +- .../Components/SolutionTransferComponent.cs | 18 +++-- .../Clothing/Components/MagbootsComponent.cs | 4 +- .../Configurable/ConfigurationComponent.cs | 8 +- .../Components/ConstructionComponent.Verbs.cs | 8 +- .../Components/ConstructionComponent.cs | 2 +- .../Components/MachineBoardComponent.cs | 24 ++++-- .../Components/MachinePartComponent.cs | 6 +- .../Conditions/MachineFrameComplete.cs | 26 +++++-- .../Conditions/ToiletLidClosed.cs | 2 +- .../Construction/Conditions/WirePanel.cs | 6 +- .../Construction/ConstructionSystem.cs | 6 +- Content.Server/Crayon/CrayonComponent.cs | 2 +- .../Cuffs/Components/CuffableComponent.cs | 24 +++--- .../Cuffs/Components/HandcuffComponent.cs | 22 +++--- Content.Server/Damage/RejuvenateVerb.cs | 2 +- Content.Server/Dice/DiceComponent.cs | 8 +- .../Mailing/DisposalMailingUnitComponent.cs | 10 +-- .../Components/DisposalRouterComponent.cs | 4 +- .../Components/DisposalTaggerComponent.cs | 4 +- .../Tube/Components/DisposalTubeComponent.cs | 4 +- .../Disposal/TubeConnectionsCommand.cs | 14 ++-- .../Unit/Components/DisposalUnitComponent.cs | 12 +-- .../Doors/Components/AirlockComponent.cs | 4 +- Content.Server/Examine/ExamineSystem.cs | 4 +- .../Extinguisher/FireExtinguisherComponent.cs | 2 +- .../Fluids/Components/BucketComponent.cs | 4 +- .../Fluids/Components/MopComponent.cs | 2 +- .../Fluids/Components/PuddleComponent.cs | 2 +- .../Fluids/Components/SpillableComponent.cs | 8 +- .../Fluids/Components/SprayComponent.cs | 6 +- .../GameTicking/GameTicker.Lobby.cs | 11 +-- .../GameTicking/GameTicker.Player.cs | 3 +- .../GameTicking/GameTicker.RoundFlow.cs | 17 ++-- .../GameTicking/GameTicker.Spawning.cs | 2 +- .../GameTicking/GameTicker.Updates.cs | 6 +- .../GameTicking/Presets/GamePreset.cs | 2 +- .../GameTicking/Presets/PresetTraitor.cs | 6 +- .../Presets/PresetTraitorDeathMatch.cs | 14 ++-- .../GameTicking/Rules/RuleDeathMatch.cs | 10 +-- .../Rules/RuleInactivityTimeRestart.cs | 6 +- .../GameTicking/Rules/RuleMaxTimeRestart.cs | 6 +- .../GameTicking/Rules/RuleSuspicion.cs | 20 ++--- .../GameTicking/Rules/RuleTraitor.cs | 2 +- .../Ghost/Roles/MakeGhostRoleVerb.cs | 4 +- .../Hands/Components/HandsComponent.cs | 8 +- Content.Server/Hands/HandsSystem.cs | 8 +- .../Holiday/Greet/DefaultHolidayGreet.cs | 5 +- .../Instruments/InstrumentComponent.cs | 8 +- .../Interaction/InRangeUnoccludedVerb.cs | 8 +- .../HumanInventoryControllerComponent.cs | 6 +- .../Components/InventoryComponent.cs | 12 +-- Content.Server/Items/ItemComponent.cs | 2 +- .../Kitchen/Components/MicrowaveComponent.cs | 19 ++--- .../Components/ReagentGrinderComponent.cs | 2 +- .../Components/EmergencyLightComponent.cs | 10 +-- .../Components/HandheldLightComponent.cs | 14 ++-- .../Light/Components/PoweredLightComponent.cs | 2 +- .../Components/SignalButtonComponent.cs | 6 +- .../Components/SignalReceiverComponent.cs | 12 +-- .../Components/SignalSwitchComponent.cs | 6 +- .../Components/SignalTransmitterComponent.cs | 4 +- .../Components/SignalTwoWayLeverComponent.cs | 4 +- .../Components/MedicalScannerComponent.cs | 4 +- .../Metabolism/MetabolismComponent.cs | 6 +- Content.Server/Mind/Verbs/ControlMobVerb.cs | 2 +- Content.Server/Mind/Verbs/MakeSentientVerb.cs | 2 +- .../BodyBagEntityStorageComponent.cs | 8 +- .../CrematoriumEntityStorageComponent.cs | 16 ++-- .../MorgueEntityStorageComponent.cs | 10 +-- .../NodeContainer/NodeContainerComponent.cs | 6 +- .../Components/CreamPiedComponent.cs | 4 +- .../Nutrition/Components/DrinkComponent.cs | 16 ++-- .../Nutrition/Components/FoodComponent.cs | 6 +- .../Components/SliceableFoodComponent.cs | 2 +- .../Objectives/Conditions/DieCondition.cs | 6 +- .../Conditions/KillPersonCondition.cs | 6 +- .../Conditions/StayAliveCondition.cs | 6 +- .../Objectives/Conditions/StealCondition.cs | 8 +- Content.Server/PDA/PDAComponent.cs | 10 +-- .../ParticleAcceleratorControlBoxComponent.cs | 2 +- .../Components/PottedPlantHideComponent.cs | 2 +- .../Pointing/EntitySystems/PointingSystem.cs | 21 ++--- Content.Server/Pointing/PointingVerb.cs | 2 +- .../Power/Components/BaseCharger.cs | 6 +- .../Components/PowerReceiverComponent.cs | 4 +- .../Components/PowerCellComponent.cs | 2 +- .../Components/PowerCellSlotComponent.cs | 10 +-- Content.Server/Pulling/PullableComponent.cs | 4 +- .../RCD/Components/RCDAmmoComponent.cs | 8 +- Content.Server/RCD/Components/RCDComponent.cs | 16 ++-- .../Components/HandheldRadioComponent.cs | 7 +- .../Recycling/Components/RecyclerComponent.cs | 6 +- .../Rotation/Components/FlippableComponent.cs | 4 +- .../Rotation/Components/RotatableComponent.cs | 6 +- Content.Server/RoundEnd/RoundEndSystem.cs | 6 +- .../StationEvents/Events/PowerGridCheck.cs | 6 +- .../StationEvents/Events/RadiationStorm.cs | 6 +- .../StationEvents/StationEventCommand.cs | 45 ++++++----- .../StationEvents/StationEventSystem.cs | 14 ++-- .../Components/EntityStorageComponent.cs | 10 +-- .../Components/SecretStashComponent.cs | 10 +-- .../SecureEntityStorageComponent.cs | 4 +- Content.Server/Strip/StrippableComponent.cs | 30 ++++---- .../Components/StunnableComponent.cs | 4 +- .../Suspicion/SuspicionRoleComponent.cs | 10 ++- Content.Server/Toilet/ToiletComponent.cs | 10 +-- .../Tools/Components/WelderComponent.cs | 29 +++---- Content.Server/Traitor/TraitorRole.cs | 8 +- .../TraitorDeathMatchRedemptionComponent.cs | 31 +++++--- .../Verbs/AttachToGrandparentVerb.cs | 4 +- .../Transform/Verbs/AttachToGridVerb.cs | 4 +- .../Transform/Verbs/AttachToSelf.cs | 4 +- .../VendingMachineComponent.cs | 6 +- Content.Server/Voting/VoteCommands.cs | 50 ++++++------ Content.Server/Voting/VoteOptions.cs | 4 +- Content.Server/Warps/WarpPointComponent.cs | 4 +- .../Ammunition/Components/AmmoBoxComponent.cs | 10 +-- .../Ammunition/Components/AmmoComponent.cs | 4 +- .../Components/RangedMagazineComponent.cs | 6 +- .../Components/SpeedLoaderComponent.cs | 4 +- .../Components/BoltActionBarrelComponent.cs | 16 ++-- .../Barrels/Components/PumpBarrelComponent.cs | 6 +- .../Components/RevolverBarrelComponent.cs | 8 +- .../ServerBatteryBarrelComponent.cs | 4 +- .../ServerMagazineBarrelComponent.cs | 34 ++++---- .../Components/ServerRangedBarrelComponent.cs | 6 +- .../Ranged/ServerRangedWeaponComponent.cs | 4 +- .../Wires/Components/WiresComponent.cs | 16 ++-- .../SpriteAccessoryPrototype.cs | 5 +- .../SharedSolutionContainerComponent.cs | 11 ++- .../ArbitraryInsertConstructionGraphStep.cs | 3 +- .../Steps/ComponentConstructionGraphStep.cs | 5 +- .../Steps/MaterialConstructionGraphStep.cs | 5 +- .../Steps/PrototypeConstructionGraphStep.cs | 5 +- .../Steps/ToolConstructionGraphStep.cs | 7 +- .../Interaction/SharedInteractionSystem.cs | 3 +- .../Kitchen/MicrowaveMealRecipePrototype.cs | 3 +- Content.Shared/Localizations/Localization.cs | 2 +- Content.Shared/Stacks/SharedStackSystem.cs | 3 +- Content.Shared/Wires/SharedWiresComponent.cs | 5 +- Resources/Locale/en-US/HUD/game-hud.ftl | 7 ++ .../access/components/id-card-component.ftl | 5 ++ .../components/id-card-console-component.ftl | 18 +++++ .../accessories/{common.ftl => accesory.ftl} | 0 .../en-US/actions/actions/combat-mode.ftl | 2 + .../en-US/actions/actions/disarm-action.ftl | 2 + .../Locale/en-US/actions/ui/actionmenu.ftl | 11 +++ Resources/Locale/en-US/admin.ftl | 8 -- .../commands/control-mob-command.ftl | 2 + ...delete-entities-with-component-command.ftl | 4 + .../administration/commands/dsay-command.ftl | 2 + .../commands/rejuvenate-command.ftl | 5 ++ .../commands/set-admin-ooc-command.ftl | 2 + .../commands/set-mind-command.ftl | 4 + .../commands/set-outfit-command.ftl | 4 + .../administration/managers/admin-manager.ftl | 9 +++ .../ui/admin-add-reagent-eui.ftl | 13 ++++ .../administration/ui/admin-menu-window.ftl | 9 +++ .../administration/ui/permissions-eui.ftl | 21 +++++ .../ui/set-outfit/set-outfit-menu.ftl | 4 + .../adminbus-tab/station-events-window.ftl | 2 + .../verbs/admin-add-reagent-verb.ftl | 1 + .../administration/verbs/delete-verb.ftl | 1 + .../en-US/ai/commands/faction-command.ftl | 8 ++ .../components/ame-controller-component.ftl | 23 ++++++ .../ame/components/ame-part-component.ftl | 2 + .../en-US/apc/components/apc-component.ftl | 1 + Resources/Locale/en-US/arcade/blockgame.ftl | 1 + .../space-villain-game-component.ftl | 15 ++++ Resources/Locale/en-US/atmos.ftl | 6 -- .../en-US/barsign/barsign-component.ftl | 1 + .../examinable-battery-component.ftl | 0 .../Locale/en-US/body/behavior/behavior.ftl | 1 + .../body-scanner/body-scanner-component.ftl | 5 ++ .../body/components/bodypart-component.ftl | 9 +++ .../body/components/mechanism-component.ftl | 6 ++ .../biological-surgery-data-component.ftl | 11 +++ .../components/surgery-tool-component.ftl | 2 + .../Locale/en-US/body/surgery/surgery.ftl | 4 + .../components/plant-holder-component.ftl | 35 +++++++++ .../botany/components/seed-component.ftl | 12 +++ .../components/seed-extractor-component.ftl | 3 + .../buckle/components/buckle-component.ftl | 11 +++ .../buckle/components/strap-component.ftl | 4 + .../item-cabinet-system.ftl} | 2 +- .../components/cargo-console-component.ftl | 20 +++++ .../cargo-console-order-component.ftl | 7 ++ .../cargo-order-database-component.ftl | 3 + .../cargo/galactic-bank-selection-menu.ftl | 1 + Resources/Locale/en-US/centcomm.ftl | 5 -- .../changelog-window.ftl} | 2 +- .../components/magic-mirror-component.ftl | 3 + .../components/character-info-component.ftl | 3 + Resources/Locale/en-US/chat-manager.ftl | 3 - .../en-US/chat/commands/suicide-command.ftl | 7 ++ .../en-US/chat/managers/chat-manager.ftl | 24 ++++++ Resources/Locale/en-US/chat/ui/chat-box.ftl | 4 + .../components/chem-master-component.ftl | 34 ++++++++ .../components/hypospray-component.ftl | 12 +++ .../components/injector-component.ftl | 19 +++++ .../chemistry/components/pill-component.ftl | 4 + .../reagent-dispenser-component.ftl | 25 ++++++ .../components/rehydratable-component.ftl | 1 + .../solution-transfer-component.ftl | 5 ++ .../shared-solution-container-component.ftl | 4 + .../climbable-component.ftl | 0 .../en-US/cloning/accept-cloning-window.ftl | 5 ++ .../components/cloning-pod-component.ftl} | 13 +++- .../components/magboots-component.ftl | 3 + .../communications-console-component.ftl} | 0 .../en-US/components/gas-tank-component.ftl | 7 -- .../en-US/components/hands-component.ftl | 4 - .../Locale/en-US/components/pda-component.ftl | 11 --- .../Locale/en-US/components/rcd-component.ftl | 14 ---- .../Locale/en-US/components/secret-stash.ftl | 3 - .../configurable/configuration-component.ftl | 6 ++ Resources/Locale/en-US/construction.ftl | 17 ---- .../construction-component-verbs.ftl | 3 + .../components/construction-component.ftl | 1 + .../components/machine-board-component.ftl | 2 + .../components/machine-part-component.ftl | 2 + .../Locale/en-US/construction/conditions.ftl | 7 -- .../conditions/airlock-bolted.ftl | 3 + .../construction/conditions/door-welded.ftl | 3 + .../conditions/machine-frame-complete.ftl | 4 + .../conditions/toilet-lid-closed.ftl | 2 + .../construction/conditions/wire-panel.ftl | 3 + .../construction-ghost-component.ftl | 1 + .../construction/construction-system.ftl | 5 ++ ...bitrary-insert-construction-graph-step.ftl | 2 + .../component-construction-graph-step.ftl | 5 ++ .../material-construction-graph-step.ftl | 1 + .../prototype-construction-graph-step.ftl | 5 ++ .../steps/tool-construction-graph-step.ftl | 1 + .../construction-menu-presenter.ftl} | 0 .../construction/ui/construction-menu.ftl | 8 ++ .../Locale/en-US/crayon/crayon-component.ftl | 8 ++ .../Locale/en-US/credits/credits-window.ftl | 11 +++ .../cuffs/components/cuffable-component.ftl | 12 +++ .../cuffs/components/handcuff-component.ftl | 11 +++ .../Locale/en-US/damage/rejuvenate-verb.ftl | 1 + .../Locale/en-US/dice/dice-component.ftl | 2 + .../disposal-mailing-unit-component.ftl | 23 ++++++ .../disposal/tube-connections-command.ftl | 2 + .../components/disposal-router-component.ftl | 11 +++ .../components/disposal-tagger-window.ftl | 7 ++ .../components/disposal-tube-component.ftl | 5 ++ .../components/disposal-unit-component.ftl} | 8 +- .../doors/components/airlock-component.ftl | 4 + .../en-US/drag-drop/drag-drop-system.ftl | 1 + .../pointing/pointing-system.ftl | 10 +++ .../ui/escape-menu.ftl} | 2 +- .../ui/options-menu.ftl} | 8 +- .../Locale/en-US/examine/examine-system.ftl | 3 + .../Locale/en-US/examine/examine-verb.ftl | 1 + .../fire-extinguisher-component.ftl | 1 + .../components/flash-component.ftl | 0 .../fluids/components/bucket-component.ftl | 2 + .../en-US/fluids/components/mop-component.ftl | 1 + .../fluids/components/puddle-component.ftl | 1 + .../fluids/components/spillable-component.ftl | 5 ++ .../fluids/components/spray-component.ftl | 2 + .../DONT_PUT_STUFF_HERE_ATMOS_LEFTOVER | 0 .../components/atmos/firelock-component.ftl | 2 + .../components/atmos/flammable-component.ftl | 1 + .../atmos/gas-analyzer-component.ftl | 19 +++++ .../atmos/gas-canister-component.ftl | 17 ++++ .../components/atmos/gas-tank-component.ftl | 17 ++++ .../game-presets/preset-traitor.ftl | 38 +++++++++ .../game-rules/rule-death-match.ftl | 3 + .../game-rules/rule-suspicion.ftl | 8 ++ .../game-ticking/game-rules/rule-traitor.ftl | 1 + .../en-US/game-ticking/game-rules/rules.ftl | 3 + .../Locale/en-US/game-ticking/game-ticker.ftl | 23 ++++++ Resources/Locale/en-US/gamemodes/modes.ftl | 4 - Resources/Locale/en-US/gamemodes/traitor.ftl | 20 ----- Resources/Locale/en-US/generic.ftl | 5 ++ .../ghost/components/ghost-component.ftl | 3 + Resources/Locale/en-US/ghost/ghost-gui.ftl | 6 ++ .../ghost/roles/make-ghost-role-verb.ftl | 1 + .../gravity/gravity-generator-component.ftl | 8 ++ .../hands/components/hands-component.ftl | 8 ++ Resources/Locale/en-US/hands/hands-system.ftl | 8 ++ .../headset-component.ftl | 0 .../en-US/holiday/greet/holiday-greet.ftl | 1 + .../{ui/info.ftl => info/info-window.ftl} | 0 Resources/Locale/en-US/info/server-info.ftl | 4 + .../instruments/instruments-component.ftl | 4 + .../interaction/in-range-unoccluded-verb.ftl | 3 + .../en-US/interaction/interaction-system.ftl | 1 + .../human-inventory-controller-component.ftl | 5 ++ .../components/inventory-component.ftl | 3 + .../human-inventory-interface-controller.ftl | 1 + .../en-US/items/components/item-component.ftl | 3 + .../components/kitchen-spike-component.ftl | 0 .../components/microwave-component.ftl | 25 ++++++ .../components/reagent-grinder-component.ftl | 16 ++++ .../Locale/en-US/late-join/late-join-gui.ftl | 3 + .../Locale/en-US/lathe/ui/lathequeue-menu.ftl | 2 + .../launcher-connecting.ftl} | 8 +- .../components/emergency-light-component.ftl | 5 ++ .../components/handheld-light-component.ftl | 9 +++ .../components/light-replacer-component.ftl | 0 .../components/powered-ligth-component.ftl | 1 + Resources/Locale/en-US/lobby/lobby-state.ftl | 9 +++ .../ui/lobby-character-preview-panel.ftl | 3 + .../components/signal-button-component.ftl | 2 + .../components/signal-receiver-component.ftl | 5 ++ .../components/signal-switch-component.ftl | 4 + .../signal-transmitter-component.ftl | 1 + .../signal-two-way-lever-component.ftl | 1 + .../Locale/en-US/main-menu/main-menu.ftl | 12 +++ .../components/medical-scanner-component.ftl | 20 +++++ Resources/Locale/en-US/menu/configuration.ftl | 2 - Resources/Locale/en-US/menu/lathequeue.ftl | 1 - Resources/Locale/en-US/menu/wires.ftl | 1 - .../en-US/metabolism/metabolism-component.ftl | 3 + .../{ => mind}/components/mind-component.ftl | 7 +- .../en-US/mind/verbs/control-mob-verb.ftl | 1 + .../en-US/mind/verbs/make-sentient-verb.ftl | 1 + .../body-bag-entity-storage-component.ftl | 6 ++ .../crematorium-entity-storage-component.ftl | 9 +++ .../morgue-entity-storage-component.ftl | 5 ++ .../node-container-component.ftl | 3 + .../components/cream-pied-component.ftl | 2 + .../nutrition/components/drink-component.ftl | 9 +++ .../components/food-component.ftl} | 6 ++ .../components/sliceable-food-component.ftl | 1 + .../objectives/conditions/die-condition.ftl | 2 + .../conditions/kill-person-condition.ftl | 2 + .../conditions/stay-alive-condition.ftl | 2 + .../objectives/conditions/steal-condition.ftl | 2 + .../{components => paper}/paper-component.ftl | 0 ...icle-accelerator-control-box-component.ftl | 1 + .../ui/particle-accelerator-control-menu.ftl | 16 ++++ Resources/Locale/en-US/pda/pda-component.ftl | 37 +++++++++ .../component/potted-plant-hide-component.ftl | 1 + .../Locale/en-US/pointing/pointing-verb.ftl | 1 + .../components/power-cell-component.ftl | 1 + .../components/power-cell-slot-component.ftl | 5 ++ .../en-US/power/components/base-charger.ftl | 1 + .../components/power-receiver-component.ftl | 11 +++ .../humanoid-character-profile.ftl} | 1 - .../preferences/ui/character-setup-gui.ftl | 6 ++ .../ui/humanoid-profile-editor.ftl | 34 ++++++++ .../{entities => prototypes}/barricades.ftl | 0 .../{entities => prototypes}/emitter.ftl | 0 .../{entities => prototypes}/gas-tanks.ftl | 0 .../{entities => prototypes}/solar_panels.ftl | 0 .../en-US/pulling/pullable-component.ftl | 4 + .../components/handheld-radio-component.ftl | 4 + .../rcd/components/rcd-ammo-component.ftl | 3 + .../en-US/rcd/components/rcd-component.ftl | 21 +++++ .../components/recycler-component.ftl | 4 + .../repairable-component.ftl | 0 .../components/research-client-component.ftl | 2 + .../components/research-console-component.ftl | 12 +++ .../components/flippable-component.ftl | 5 ++ .../components/rotatable-component.ftl | 8 ++ .../round-end/round-end-summary-window.ftl | 7 ++ .../en-US/round-end/round-end-system.ftl | 5 ++ .../Locale/en-US/sandbox/sandbox-manager.ftl | 14 ++++ Resources/Locale/en-US/shell.ftl | 33 ++++++++ .../components/emitter-component.ftl | 0 .../radiation-collector-component.ftl | 0 .../{components => stack}/stack-component.ftl | 1 - .../events/power-grid-check.ftl | 4 + .../station-events/events/radiation-storm.ftl | 4 + .../station-events/station-event-command.ftl | 19 +++++ .../station-events/station-event-system.ftl | 7 ++ .../components/entity-storage-component.ftl | 8 ++ .../components/secret-stash-component.ftl | 7 ++ .../secure-entity-storage-component.ftl | 6 ++ .../en-US/strip/strippable-component.ftl | 16 ++++ .../components/stunbaton-component.ftl | 4 + .../components/stunnable-component.ftl | 2 + .../roles/suspicion-role-component.ftl | 3 + .../roles/suspicion-traitor-role.ftl} | 13 +--- .../Locale/en-US/suspicion/suspicion-gui.ftl | 8 ++ .../en-US/suspicion/traitor-overlay.ftl | 1 + .../Locale/en-US/toilet/toilet-component.ftl | 7 ++ .../tools/components/welder-component.ftl | 11 +++ ...aitor-death-match-redemption-component.ftl | 11 +++ .../verbs/attach-to-grandparent-verb.ftl | 1 + .../transform/verbs/attach-to-grid-verb.ftl | 1 + .../transform/verbs/attach-to-self-verb.ftl | 1 + Resources/Locale/en-US/ui/hud.ftl | 11 --- .../vending-machine-component.ftl | 5 ++ Resources/Locale/en-US/verbs/verb-system.ftl | 2 + .../managers/vote-manager.ftl} | 23 ++---- .../en-US/voting/ui/vote-call-menu-button.ftl | 2 + .../Locale/en-US/voting/ui/vote-call-menu.ftl | 16 ++++ .../Locale/en-US/voting/ui/vote-popup.ftl | 2 + .../Locale/en-US/voting/vote-commands.ftl | 37 +++++++++ .../Locale/en-US/voting/vote-options.ftl | 1 + .../en-US/warps/warp-point-component.ftl | 1 + .../components/ammo-box-component.ftl | 9 +++ .../ammunition/components/ammo-component.ftl | 2 + .../components/ranged-magazine-component.ftl | 4 + .../components/speed-loader-component.ftl | 3 + .../bolt-action-barrel-component.ftl | 16 ++++ .../pump-barrel-action-component.ftl | 5 ++ .../components/revolver-barrel-component.ftl | 9 +++ .../server-battery-barrel-component.ftl | 4 + .../server-magazine-barrel-component.ftl | 19 +++++ .../server-ranged-barrel-component.ftl | 5 ++ .../ranged/server-ranged-weapon-component.ftl | 3 + .../window-component.ftl | 0 .../wires/components/wires-component.ftl | 11 +++ 523 files changed, 3082 insertions(+), 1551 deletions(-) create mode 100644 Resources/Locale/en-US/HUD/game-hud.ftl create mode 100644 Resources/Locale/en-US/access/components/id-card-component.ftl create mode 100644 Resources/Locale/en-US/access/components/id-card-console-component.ftl rename Resources/Locale/en-US/accessories/{common.ftl => accesory.ftl} (100%) create mode 100644 Resources/Locale/en-US/actions/actions/combat-mode.ftl create mode 100644 Resources/Locale/en-US/actions/actions/disarm-action.ftl create mode 100644 Resources/Locale/en-US/actions/ui/actionmenu.ftl delete mode 100644 Resources/Locale/en-US/admin.ftl create mode 100644 Resources/Locale/en-US/administration/commands/control-mob-command.ftl create mode 100644 Resources/Locale/en-US/administration/commands/delete-entities-with-component-command.ftl create mode 100644 Resources/Locale/en-US/administration/commands/dsay-command.ftl create mode 100644 Resources/Locale/en-US/administration/commands/rejuvenate-command.ftl create mode 100644 Resources/Locale/en-US/administration/commands/set-admin-ooc-command.ftl create mode 100644 Resources/Locale/en-US/administration/commands/set-mind-command.ftl create mode 100644 Resources/Locale/en-US/administration/commands/set-outfit-command.ftl create mode 100644 Resources/Locale/en-US/administration/managers/admin-manager.ftl create mode 100644 Resources/Locale/en-US/administration/ui/admin-add-reagent-eui.ftl create mode 100644 Resources/Locale/en-US/administration/ui/admin-menu-window.ftl create mode 100644 Resources/Locale/en-US/administration/ui/permissions-eui.ftl create mode 100644 Resources/Locale/en-US/administration/ui/set-outfit/set-outfit-menu.ftl create mode 100644 Resources/Locale/en-US/administration/ui/tabs/adminbus-tab/station-events-window.ftl create mode 100644 Resources/Locale/en-US/administration/verbs/admin-add-reagent-verb.ftl create mode 100644 Resources/Locale/en-US/administration/verbs/delete-verb.ftl create mode 100644 Resources/Locale/en-US/ai/commands/faction-command.ftl create mode 100644 Resources/Locale/en-US/ame/components/ame-controller-component.ftl create mode 100644 Resources/Locale/en-US/ame/components/ame-part-component.ftl create mode 100644 Resources/Locale/en-US/apc/components/apc-component.ftl create mode 100644 Resources/Locale/en-US/arcade/components/space-villain-game-component.ftl delete mode 100644 Resources/Locale/en-US/atmos.ftl create mode 100644 Resources/Locale/en-US/barsign/barsign-component.ftl rename Resources/Locale/en-US/{ => battery}/components/examinable-battery-component.ftl (100%) create mode 100644 Resources/Locale/en-US/body/behavior/behavior.ftl create mode 100644 Resources/Locale/en-US/body/body-scanner/body-scanner-component.ftl create mode 100644 Resources/Locale/en-US/body/components/bodypart-component.ftl create mode 100644 Resources/Locale/en-US/body/components/mechanism-component.ftl create mode 100644 Resources/Locale/en-US/body/surgery/biological-surgery-data-component.ftl create mode 100644 Resources/Locale/en-US/body/surgery/components/surgery-tool-component.ftl create mode 100644 Resources/Locale/en-US/body/surgery/surgery.ftl create mode 100644 Resources/Locale/en-US/botany/components/plant-holder-component.ftl create mode 100644 Resources/Locale/en-US/botany/components/seed-component.ftl create mode 100644 Resources/Locale/en-US/botany/components/seed-extractor-component.ftl create mode 100644 Resources/Locale/en-US/buckle/components/buckle-component.ftl create mode 100644 Resources/Locale/en-US/buckle/components/strap-component.ftl rename Resources/Locale/en-US/{components/item-cabinet-component.ftl => cabinet/item-cabinet-system.ftl} (85%) create mode 100644 Resources/Locale/en-US/cargo/components/cargo-console-component.ftl create mode 100644 Resources/Locale/en-US/cargo/components/cargo-console-order-component.ftl create mode 100644 Resources/Locale/en-US/cargo/components/cargo-order-database-component.ftl create mode 100644 Resources/Locale/en-US/cargo/galactic-bank-selection-menu.ftl delete mode 100644 Resources/Locale/en-US/centcomm.ftl rename Resources/Locale/en-US/{ui/changelog.ftl => changelog/changelog-window.ftl} (89%) create mode 100644 Resources/Locale/en-US/character-appearance/components/magic-mirror-component.ftl create mode 100644 Resources/Locale/en-US/character-info/components/character-info-component.ftl delete mode 100644 Resources/Locale/en-US/chat-manager.ftl create mode 100644 Resources/Locale/en-US/chat/commands/suicide-command.ftl create mode 100644 Resources/Locale/en-US/chat/managers/chat-manager.ftl create mode 100644 Resources/Locale/en-US/chat/ui/chat-box.ftl create mode 100644 Resources/Locale/en-US/chemistry/components/chem-master-component.ftl create mode 100644 Resources/Locale/en-US/chemistry/components/hypospray-component.ftl create mode 100644 Resources/Locale/en-US/chemistry/components/injector-component.ftl create mode 100644 Resources/Locale/en-US/chemistry/components/pill-component.ftl create mode 100644 Resources/Locale/en-US/chemistry/components/reagent-dispenser-component.ftl create mode 100644 Resources/Locale/en-US/chemistry/components/rehydratable-component.ftl create mode 100644 Resources/Locale/en-US/chemistry/components/solution-transfer-component.ftl create mode 100644 Resources/Locale/en-US/chemistry/solution/components/shared-solution-container-component.ftl rename Resources/Locale/en-US/{components => climbing}/climbable-component.ftl (100%) create mode 100644 Resources/Locale/en-US/cloning/accept-cloning-window.ftl rename Resources/Locale/en-US/{entities/cloning.ftl => cloning/components/cloning-pod-component.ftl} (61%) create mode 100644 Resources/Locale/en-US/clothing/components/magboots-component.ftl rename Resources/Locale/en-US/{menu/communicationsconsole.ftl => communications/communications-console-component.ftl} (100%) delete mode 100644 Resources/Locale/en-US/components/gas-tank-component.ftl delete mode 100644 Resources/Locale/en-US/components/hands-component.ftl delete mode 100644 Resources/Locale/en-US/components/pda-component.ftl delete mode 100644 Resources/Locale/en-US/components/rcd-component.ftl delete mode 100644 Resources/Locale/en-US/components/secret-stash.ftl create mode 100644 Resources/Locale/en-US/configurable/configuration-component.ftl delete mode 100644 Resources/Locale/en-US/construction.ftl create mode 100644 Resources/Locale/en-US/construction/components/construction-component-verbs.ftl create mode 100644 Resources/Locale/en-US/construction/components/construction-component.ftl create mode 100644 Resources/Locale/en-US/construction/components/machine-board-component.ftl create mode 100644 Resources/Locale/en-US/construction/components/machine-part-component.ftl delete mode 100644 Resources/Locale/en-US/construction/conditions.ftl create mode 100644 Resources/Locale/en-US/construction/conditions/airlock-bolted.ftl create mode 100644 Resources/Locale/en-US/construction/conditions/door-welded.ftl create mode 100644 Resources/Locale/en-US/construction/conditions/machine-frame-complete.ftl create mode 100644 Resources/Locale/en-US/construction/conditions/toilet-lid-closed.ftl create mode 100644 Resources/Locale/en-US/construction/conditions/wire-panel.ftl create mode 100644 Resources/Locale/en-US/construction/construction-ghost-component.ftl create mode 100644 Resources/Locale/en-US/construction/construction-system.ftl create mode 100644 Resources/Locale/en-US/construction/steps/arbitrary-insert-construction-graph-step.ftl create mode 100644 Resources/Locale/en-US/construction/steps/component-construction-graph-step.ftl create mode 100644 Resources/Locale/en-US/construction/steps/material-construction-graph-step.ftl create mode 100644 Resources/Locale/en-US/construction/steps/prototype-construction-graph-step.ftl create mode 100644 Resources/Locale/en-US/construction/steps/tool-construction-graph-step.ftl rename Resources/Locale/en-US/construction/{menu-presenter.ftl => ui/construction-menu-presenter.ftl} (100%) create mode 100644 Resources/Locale/en-US/construction/ui/construction-menu.ftl create mode 100644 Resources/Locale/en-US/crayon/crayon-component.ftl create mode 100644 Resources/Locale/en-US/credits/credits-window.ftl create mode 100644 Resources/Locale/en-US/cuffs/components/cuffable-component.ftl create mode 100644 Resources/Locale/en-US/cuffs/components/handcuff-component.ftl create mode 100644 Resources/Locale/en-US/damage/rejuvenate-verb.ftl create mode 100644 Resources/Locale/en-US/dice/dice-component.ftl create mode 100644 Resources/Locale/en-US/disposal/mailing/components/disposal-mailing-unit-component.ftl create mode 100644 Resources/Locale/en-US/disposal/tube-connections-command.ftl create mode 100644 Resources/Locale/en-US/disposal/tube/components/disposal-router-component.ftl create mode 100644 Resources/Locale/en-US/disposal/tube/components/disposal-tagger-window.ftl create mode 100644 Resources/Locale/en-US/disposal/tube/components/disposal-tube-component.ftl rename Resources/Locale/en-US/{ui/disposal.ftl => disposal/unit/components/disposal-unit-component.ftl} (56%) create mode 100644 Resources/Locale/en-US/doors/components/airlock-component.ftl create mode 100644 Resources/Locale/en-US/drag-drop/drag-drop-system.ftl create mode 100644 Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl rename Resources/Locale/en-US/{ui/escape.ftl => escape-menu/ui/escape-menu.ftl} (83%) rename Resources/Locale/en-US/{ui/options.ftl => escape-menu/ui/options-menu.ftl} (98%) create mode 100644 Resources/Locale/en-US/examine/examine-system.ftl create mode 100644 Resources/Locale/en-US/examine/examine-verb.ftl create mode 100644 Resources/Locale/en-US/fire-extinguisher/fire-extinguisher-component.ftl rename Resources/Locale/en-US/{ => flash}/components/flash-component.ftl (100%) create mode 100644 Resources/Locale/en-US/fluids/components/bucket-component.ftl create mode 100644 Resources/Locale/en-US/fluids/components/mop-component.ftl create mode 100644 Resources/Locale/en-US/fluids/components/puddle-component.ftl create mode 100644 Resources/Locale/en-US/fluids/components/spillable-component.ftl create mode 100644 Resources/Locale/en-US/fluids/components/spray-component.ftl create mode 100644 Resources/Locale/en-US/game-objects/DONT_PUT_STUFF_HERE_ATMOS_LEFTOVER create mode 100644 Resources/Locale/en-US/game-objects/components/atmos/firelock-component.ftl create mode 100644 Resources/Locale/en-US/game-objects/components/atmos/flammable-component.ftl create mode 100644 Resources/Locale/en-US/game-objects/components/atmos/gas-analyzer-component.ftl create mode 100644 Resources/Locale/en-US/game-objects/components/atmos/gas-canister-component.ftl create mode 100644 Resources/Locale/en-US/game-objects/components/atmos/gas-tank-component.ftl create mode 100644 Resources/Locale/en-US/game-ticking/game-presets/preset-traitor.ftl create mode 100644 Resources/Locale/en-US/game-ticking/game-rules/rule-death-match.ftl create mode 100644 Resources/Locale/en-US/game-ticking/game-rules/rule-suspicion.ftl create mode 100644 Resources/Locale/en-US/game-ticking/game-rules/rule-traitor.ftl create mode 100644 Resources/Locale/en-US/game-ticking/game-rules/rules.ftl create mode 100644 Resources/Locale/en-US/game-ticking/game-ticker.ftl delete mode 100644 Resources/Locale/en-US/gamemodes/modes.ftl delete mode 100644 Resources/Locale/en-US/gamemodes/traitor.ftl create mode 100644 Resources/Locale/en-US/generic.ftl create mode 100644 Resources/Locale/en-US/ghost/components/ghost-component.ftl create mode 100644 Resources/Locale/en-US/ghost/ghost-gui.ftl create mode 100644 Resources/Locale/en-US/ghost/roles/make-ghost-role-verb.ftl create mode 100644 Resources/Locale/en-US/gravity/gravity-generator-component.ftl create mode 100644 Resources/Locale/en-US/hands/components/hands-component.ftl create mode 100644 Resources/Locale/en-US/hands/hands-system.ftl rename Resources/Locale/en-US/{components => headset}/headset-component.ftl (100%) create mode 100644 Resources/Locale/en-US/holiday/greet/holiday-greet.ftl rename Resources/Locale/en-US/{ui/info.ftl => info/info-window.ftl} (100%) create mode 100644 Resources/Locale/en-US/info/server-info.ftl create mode 100644 Resources/Locale/en-US/instruments/instruments-component.ftl create mode 100644 Resources/Locale/en-US/interaction/in-range-unoccluded-verb.ftl create mode 100644 Resources/Locale/en-US/interaction/interaction-system.ftl create mode 100644 Resources/Locale/en-US/inventory/components/human-inventory-controller-component.ftl create mode 100644 Resources/Locale/en-US/inventory/components/inventory-component.ftl create mode 100644 Resources/Locale/en-US/inventory/human-inventory-interface-controller.ftl create mode 100644 Resources/Locale/en-US/items/components/item-component.ftl rename Resources/Locale/en-US/{ => kitchen}/components/kitchen-spike-component.ftl (100%) create mode 100644 Resources/Locale/en-US/kitchen/components/microwave-component.ftl create mode 100644 Resources/Locale/en-US/kitchen/components/reagent-grinder-component.ftl create mode 100644 Resources/Locale/en-US/late-join/late-join-gui.ftl create mode 100644 Resources/Locale/en-US/lathe/ui/lathequeue-menu.ftl rename Resources/Locale/en-US/{ui/connecting.ftl => launcher/launcher-connecting.ftl} (53%) create mode 100644 Resources/Locale/en-US/light/components/emergency-light-component.ftl create mode 100644 Resources/Locale/en-US/light/components/handheld-light-component.ftl rename Resources/Locale/en-US/{ => light}/components/light-replacer-component.ftl (100%) create mode 100644 Resources/Locale/en-US/light/components/powered-ligth-component.ftl create mode 100644 Resources/Locale/en-US/lobby/lobby-state.ftl create mode 100644 Resources/Locale/en-US/lobby/ui/lobby-character-preview-panel.ftl create mode 100644 Resources/Locale/en-US/machine-linking/components/signal-button-component.ftl create mode 100644 Resources/Locale/en-US/machine-linking/components/signal-receiver-component.ftl create mode 100644 Resources/Locale/en-US/machine-linking/components/signal-switch-component.ftl create mode 100644 Resources/Locale/en-US/machine-linking/components/signal-transmitter-component.ftl create mode 100644 Resources/Locale/en-US/machine-linking/components/signal-two-way-lever-component.ftl create mode 100644 Resources/Locale/en-US/main-menu/main-menu.ftl create mode 100644 Resources/Locale/en-US/medical/components/medical-scanner-component.ftl delete mode 100644 Resources/Locale/en-US/menu/configuration.ftl delete mode 100644 Resources/Locale/en-US/menu/lathequeue.ftl delete mode 100644 Resources/Locale/en-US/menu/wires.ftl create mode 100644 Resources/Locale/en-US/metabolism/metabolism-component.ftl rename Resources/Locale/en-US/{ => mind}/components/mind-component.ftl (56%) create mode 100644 Resources/Locale/en-US/mind/verbs/control-mob-verb.ftl create mode 100644 Resources/Locale/en-US/mind/verbs/make-sentient-verb.ftl create mode 100644 Resources/Locale/en-US/morgue/components/body-bag-entity-storage-component.ftl create mode 100644 Resources/Locale/en-US/morgue/components/crematorium-entity-storage-component.ftl create mode 100644 Resources/Locale/en-US/morgue/components/morgue-entity-storage-component.ftl create mode 100644 Resources/Locale/en-US/node-container/node-container-component.ftl create mode 100644 Resources/Locale/en-US/nutrition/components/cream-pied-component.ftl create mode 100644 Resources/Locale/en-US/nutrition/components/drink-component.ftl rename Resources/Locale/en-US/{food.ftl => nutrition/components/food-component.ftl} (68%) create mode 100644 Resources/Locale/en-US/nutrition/components/sliceable-food-component.ftl create mode 100644 Resources/Locale/en-US/objectives/conditions/die-condition.ftl create mode 100644 Resources/Locale/en-US/objectives/conditions/kill-person-condition.ftl create mode 100644 Resources/Locale/en-US/objectives/conditions/stay-alive-condition.ftl create mode 100644 Resources/Locale/en-US/objectives/conditions/steal-condition.ftl rename Resources/Locale/en-US/{components => paper}/paper-component.ftl (100%) create mode 100644 Resources/Locale/en-US/particle-accelerator/components/particle-accelerator-control-box-component.ftl create mode 100644 Resources/Locale/en-US/particle-accelerator/components/ui/particle-accelerator-control-menu.ftl create mode 100644 Resources/Locale/en-US/pda/pda-component.ftl create mode 100644 Resources/Locale/en-US/plants/component/potted-plant-hide-component.ftl create mode 100644 Resources/Locale/en-US/pointing/pointing-verb.ftl create mode 100644 Resources/Locale/en-US/power-cell/components/power-cell-component.ftl create mode 100644 Resources/Locale/en-US/power-cell/components/power-cell-slot-component.ftl create mode 100644 Resources/Locale/en-US/power/components/base-charger.ftl create mode 100644 Resources/Locale/en-US/power/components/power-receiver-component.ftl rename Resources/Locale/en-US/{prefs.ftl => preferences/humanoid-character-profile.ftl} (99%) create mode 100644 Resources/Locale/en-US/preferences/ui/character-setup-gui.ftl create mode 100644 Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl rename Resources/Locale/en-US/{entities => prototypes}/barricades.ftl (100%) rename Resources/Locale/en-US/{entities => prototypes}/emitter.ftl (100%) rename Resources/Locale/en-US/{entities => prototypes}/gas-tanks.ftl (100%) rename Resources/Locale/en-US/{entities => prototypes}/solar_panels.ftl (100%) create mode 100644 Resources/Locale/en-US/pulling/pullable-component.ftl create mode 100644 Resources/Locale/en-US/radio/components/handheld-radio-component.ftl create mode 100644 Resources/Locale/en-US/rcd/components/rcd-ammo-component.ftl create mode 100644 Resources/Locale/en-US/rcd/components/rcd-component.ftl create mode 100644 Resources/Locale/en-US/recycling/components/recycler-component.ftl rename Resources/Locale/en-US/{components => repairable}/repairable-component.ftl (100%) create mode 100644 Resources/Locale/en-US/research/components/research-client-component.ftl create mode 100644 Resources/Locale/en-US/research/components/research-console-component.ftl create mode 100644 Resources/Locale/en-US/rotation/components/flippable-component.ftl create mode 100644 Resources/Locale/en-US/rotation/components/rotatable-component.ftl create mode 100644 Resources/Locale/en-US/round-end/round-end-summary-window.ftl create mode 100644 Resources/Locale/en-US/round-end/round-end-system.ftl create mode 100644 Resources/Locale/en-US/sandbox/sandbox-manager.ftl create mode 100644 Resources/Locale/en-US/shell.ftl rename Resources/Locale/en-US/{ => singularity}/components/emitter-component.ftl (100%) rename Resources/Locale/en-US/{ => singularity}/components/radiation-collector-component.ftl (100%) rename Resources/Locale/en-US/{components => stack}/stack-component.ftl (99%) create mode 100644 Resources/Locale/en-US/station-events/events/power-grid-check.ftl create mode 100644 Resources/Locale/en-US/station-events/events/radiation-storm.ftl create mode 100644 Resources/Locale/en-US/station-events/station-event-command.ftl create mode 100644 Resources/Locale/en-US/station-events/station-event-system.ftl create mode 100644 Resources/Locale/en-US/storage/components/entity-storage-component.ftl create mode 100644 Resources/Locale/en-US/storage/components/secret-stash-component.ftl create mode 100644 Resources/Locale/en-US/storage/components/secure-entity-storage-component.ftl create mode 100644 Resources/Locale/en-US/strip/strippable-component.ftl rename Resources/Locale/en-US/{ => stunnable}/components/stunbaton-component.ftl (69%) create mode 100644 Resources/Locale/en-US/stunnable/components/stunnable-component.ftl create mode 100644 Resources/Locale/en-US/suspicion/roles/suspicion-role-component.ftl rename Resources/Locale/en-US/{gamemodes/suspicion.ftl => suspicion/roles/suspicion-traitor-role.ftl} (57%) create mode 100644 Resources/Locale/en-US/suspicion/suspicion-gui.ftl create mode 100644 Resources/Locale/en-US/suspicion/traitor-overlay.ftl create mode 100644 Resources/Locale/en-US/toilet/toilet-component.ftl create mode 100644 Resources/Locale/en-US/tools/components/welder-component.ftl create mode 100644 Resources/Locale/en-US/traitor-death-match/components/traitor-death-match-redemption-component.ftl create mode 100644 Resources/Locale/en-US/transform/verbs/attach-to-grandparent-verb.ftl create mode 100644 Resources/Locale/en-US/transform/verbs/attach-to-grid-verb.ftl create mode 100644 Resources/Locale/en-US/transform/verbs/attach-to-self-verb.ftl delete mode 100644 Resources/Locale/en-US/ui/hud.ftl create mode 100644 Resources/Locale/en-US/vending-machines/vending-machine-component.ftl create mode 100644 Resources/Locale/en-US/verbs/verb-system.ftl rename Resources/Locale/en-US/{ui/voting.ftl => voting/managers/vote-manager.ftl} (50%) create mode 100644 Resources/Locale/en-US/voting/ui/vote-call-menu-button.ftl create mode 100644 Resources/Locale/en-US/voting/ui/vote-call-menu.ftl create mode 100644 Resources/Locale/en-US/voting/ui/vote-popup.ftl create mode 100644 Resources/Locale/en-US/voting/vote-commands.ftl create mode 100644 Resources/Locale/en-US/voting/vote-options.ftl create mode 100644 Resources/Locale/en-US/warps/warp-point-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/ammunition/components/ammo-box-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/ammunition/components/ammo-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/ammunition/components/ranged-magazine-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/ammunition/components/speed-loader-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/barrels/components/bolt-action-barrel-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/barrels/components/pump-barrel-action-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/barrels/components/revolver-barrel-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/barrels/components/server-battery-barrel-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/barrels/components/server-magazine-barrel-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/barrels/components/server-ranged-barrel-component.ftl create mode 100644 Resources/Locale/en-US/weapons/ranged/server-ranged-weapon-component.ftl rename Resources/Locale/en-US/{components => window}/window-component.ftl (100%) create mode 100644 Resources/Locale/en-US/wires/components/wires-component.ftl diff --git a/Content.Client/AME/UI/AMEWindow.cs b/Content.Client/AME/UI/AMEWindow.cs index 7bb1d3b434..94b0e006b5 100644 --- a/Content.Client/AME/UI/AMEWindow.cs +++ b/Content.Client/AME/UI/AMEWindow.cs @@ -27,7 +27,7 @@ namespace Content.Client.AME.UI { IoCManager.InjectDependencies(this); - Title = "Antimatter Control Unit"; + Title = Loc.GetString("ame-window-title"); MinSize = SetSize = (250, 250); @@ -39,37 +39,37 @@ namespace Content.Client.AME.UI { Children = { - new Label {Text = Loc.GetString("Engine Status") + ": "}, - (InjectionStatus = new Label {Text = "Not Injecting"}) + new Label {Text = Loc.GetString("ame-window-engine-status-label")}, + (InjectionStatus = new Label {Text = Loc.GetString("ame-window-engine-injection-status-not-injecting-label")}) } }, new HBoxContainer { Children = { - (ToggleInjection = new Button {Text = "Toggle Injection", StyleClasses = {StyleBase.ButtonOpenBoth}, Disabled = true}), + (ToggleInjection = new Button {Text = Loc.GetString("ame-window-toggle-injection-button"), StyleClasses = {StyleBase.ButtonOpenBoth}, Disabled = true}), } }, new HBoxContainer { Children = { - new Label {Text = Loc.GetString("Fuel Status") + ": "}, - (FuelAmount = new Label {Text = "No fuel inserted"}) + new Label {Text = Loc.GetString("ame-window-fuel-status-label")}, + (FuelAmount = new Label {Text = Loc.GetString("ame-window-fuel-not-inserted-text")}) } }, new HBoxContainer { Children = { - (EjectButton = new Button {Text = "Eject", StyleClasses = {StyleBase.ButtonOpenBoth}, Disabled = true}), + (EjectButton = new Button {Text = Loc.GetString("ame-window-eject-button"), StyleClasses = {StyleBase.ButtonOpenBoth}, Disabled = true}), } }, new HBoxContainer { Children = { - new Label {Text = Loc.GetString("Injection amount") + ": "}, + new Label {Text = Loc.GetString("ame-window-injection-amount-label")}, (InjectionAmount = new Label {Text = "0"}) } }, @@ -77,16 +77,16 @@ namespace Content.Client.AME.UI { Children = { - (IncreaseFuelButton = new Button {Text = "Increase", StyleClasses = {StyleBase.ButtonOpenRight}}), - (DecreaseFuelButton = new Button {Text = "Decrease", StyleClasses = {StyleBase.ButtonOpenLeft}}), + (IncreaseFuelButton = new Button {Text = Loc.GetString("ame-window-increase-fuel-button"), StyleClasses = {StyleBase.ButtonOpenRight}}), + (DecreaseFuelButton = new Button {Text = Loc.GetString("ame-window-decrease-fuel-button"), StyleClasses = {StyleBase.ButtonOpenLeft}}), } }, new HBoxContainer { Children = { - (RefreshPartsButton = new Button {Text = "Refresh Parts", StyleClasses = {StyleBase.ButtonOpenBoth }, Disabled = true }), - new Label { Text = Loc.GetString("Core count") + ": "}, + (RefreshPartsButton = new Button {Text = Loc.GetString("ame-window-refresh-parts-button"), StyleClasses = {StyleBase.ButtonOpenBoth }, Disabled = true }), + new Label { Text = Loc.GetString("ame-window-core-count-label")}, (CoreCount = new Label { Text = "0"}), } } @@ -136,7 +136,7 @@ namespace Content.Client.AME.UI { EjectButton.Disabled = true; ToggleInjection.Disabled = true; - FuelAmount.Text = Loc.GetString("No fuel inserted"); + FuelAmount.Text = Loc.GetString("ame-window-fuel-not-inserted-text"); } else { @@ -152,11 +152,11 @@ namespace Content.Client.AME.UI if (!castState.Injecting) { - InjectionStatus.Text = Loc.GetString("Not Injecting"); + InjectionStatus.Text = Loc.GetString("ame-window-engine-injection-status-not-injecting-label"); } else { - InjectionStatus.Text = Loc.GetString("Injecting..."); + InjectionStatus.Text = Loc.GetString("ame-window-engine-injection-status-injecting-label"); } RefreshPartsButton.Disabled = castState.Injecting; diff --git a/Content.Client/Access/UI/IdCardConsoleWindow.cs b/Content.Client/Access/UI/IdCardConsoleWindow.cs index e9b5caff47..450aa0ebdd 100644 --- a/Content.Client/Access/UI/IdCardConsoleWindow.cs +++ b/Content.Client/Access/UI/IdCardConsoleWindow.cs @@ -45,11 +45,11 @@ namespace Content.Client.Access.UI Columns = 3, Children = { - new Label {Text = Loc.GetString("Privileged ID:")}, + new Label {Text = Loc.GetString("id-card-console-window-privileged-id")}, (_privilegedIdButton = new Button()), (_privilegedIdLabel = new Label()), - new Label {Text = Loc.GetString("Target ID:")}, + new Label {Text = Loc.GetString("id-card-console-window-target-id")}, (_targetIdButton = new Button()), (_targetIdLabel = new Label()) } @@ -71,7 +71,7 @@ namespace Content.Client.Access.UI // Name (_fullNameLabel = new Label { - Text = Loc.GetString("Full name:") + Text = Loc.GetString("id-card-console-window-full-name-label") }), (_fullNameLineEdit = new LineEdit { @@ -79,14 +79,14 @@ namespace Content.Client.Access.UI }), (_fullNameSaveButton = new Button { - Text = Loc.GetString("Save"), + Text = Loc.GetString("id-card-console-window-save-button"), Disabled = true }), // Title (_jobTitleLabel = new Label { - Text = Loc.GetString("Job title:") + Text = Loc.GetString("id-card-console-window-job-title-label") }), (_jobTitleLineEdit = new LineEdit { @@ -94,7 +94,7 @@ namespace Content.Client.Access.UI }), (_jobTitleSaveButton = new Button { - Text = Loc.GetString("Save"), + Text = Loc.GetString("id-card-console-window-save-button"), Disabled = true }), }, @@ -144,14 +144,14 @@ namespace Content.Client.Access.UI public void UpdateState(IdCardConsoleBoundUserInterfaceState state) { _privilegedIdButton.Text = state.IsPrivilegedIdPresent - ? Loc.GetString("Eject") - : Loc.GetString("Insert"); + ? Loc.GetString("id-card-console-window-eject-button") + : Loc.GetString("id-card-console-window-insert-button"); _privilegedIdLabel.Text = state.PrivilegedIdName; _targetIdButton.Text = state.IsTargetIdPresent - ? Loc.GetString("Eject") - : Loc.GetString("Insert"); + ? Loc.GetString("id-card-console-window-eject-button") + : Loc.GetString("id-card-console-window-insert-button"); _targetIdLabel.Text = state.TargetIdName; @@ -165,7 +165,7 @@ namespace Content.Client.Access.UI _fullNameLineEdit.Editable = interfaceEnabled; if (!fullNameDirty) { - _fullNameLineEdit.Text = state.TargetIdFullName ?? ""; + _fullNameLineEdit.Text = state.TargetIdFullName ?? string.Empty; } _fullNameSaveButton.Disabled = !interfaceEnabled || !fullNameDirty; @@ -174,7 +174,7 @@ namespace Content.Client.Access.UI _jobTitleLineEdit.Editable = interfaceEnabled; if (!jobTitleDirty) { - _jobTitleLineEdit.Text = state.TargetIdJobTitle ?? ""; + _jobTitleLineEdit.Text = state.TargetIdJobTitle ?? string.Empty; } _jobTitleSaveButton.Disabled = !interfaceEnabled || !jobTitleDirty; diff --git a/Content.Client/Actions/Assignments/ActionAssignments.cs b/Content.Client/Actions/Assignments/ActionAssignments.cs index 9c6f6d8af0..5eb0f79632 100644 --- a/Content.Client/Actions/Assignments/ActionAssignments.cs +++ b/Content.Client/Actions/Assignments/ActionAssignments.cs @@ -1,8 +1,8 @@ -using System.Collections.Generic; -using System.Linq; using Content.Shared.Actions; using Content.Shared.Actions.Components; using Robust.Shared.GameObjects; +using System.Collections.Generic; +using System.Linq; namespace Content.Client.Actions.Assignments { @@ -70,8 +70,6 @@ namespace Content.Client.Actions.Assignments } } - - foreach (var (item, itemStates) in itemActionStates) { foreach (var itemActionState in itemStates) @@ -94,10 +92,13 @@ namespace Content.Client.Actions.Assignments // which once had an associated item but have been revoked (based on our newly provided action states) // so we can dissociate them from the item. If the provided action states do not // have a state for this action type + item, we can assume that the action has been revoked for that item. - var assignmentsWithoutItem = new List>>(); + var assignmentsWithoutItem = new List>>(); foreach (var assignmentEntry in _assignments) { - if (!assignmentEntry.Key.TryGetItemActionWithItem(out var actionType, out var item)) continue; + if (!assignmentEntry.Key.TryGetItemActionWithItem(out var actionType, out var item)) + { + continue; + } // we have this assignment currently tied to an item, // check if it no longer has an associated item in our dict of states @@ -110,8 +111,10 @@ namespace Content.Client.Actions.Assignments continue; } } + assignmentsWithoutItem.Add(assignmentEntry); } + // reassign without the item for each assignment we found that no longer has an associated item foreach (var (assignment, slots) in assignmentsWithoutItem) { @@ -158,7 +161,7 @@ namespace Content.Client.Actions.Assignments } else { - var newList = new List<(byte Hotbar, byte Slot)> {(hotbar, slot)}; + var newList = new List<(byte Hotbar, byte Slot)> { (hotbar, slot) }; _assignments[actionType] = newList; } } @@ -179,7 +182,12 @@ namespace Content.Client.Actions.Assignments // remove this particular assignment from our data structures // (keeping in mind something can be assigned multiple slots) var currentAction = _slots[hotbar, slot]; - if (!currentAction.HasValue) return; + + if (!currentAction.HasValue) + { + return; + } + if (preventAutoPopulate) { var assignment = currentAction.Value; @@ -199,6 +207,7 @@ namespace Content.Client.Actions.Assignments actionTypes.Add(itemActionType); } } + var assignmentList = _assignments[currentAction.Value]; assignmentList = assignmentList.Where(a => a.Hotbar != hotbar || a.Slot != slot).ToList(); if (!assignmentList.Any()) @@ -209,6 +218,7 @@ namespace Content.Client.Actions.Assignments { _assignments[currentAction.Value] = assignmentList; } + _slots[hotbar, slot] = null; } @@ -223,7 +233,11 @@ namespace Content.Client.Actions.Assignments /// if this assignment has been prevented from auto population. public void AutoPopulate(ActionAssignment toAssign, byte currentHotbar, bool force = true) { - if (ShouldPreventAutoPopulate(toAssign, force)) return; + if (ShouldPreventAutoPopulate(toAssign, force)) + { + return; + } + // if the assignment to make is an item action with an associated item, // then first look for currently assigned item actions without an item, to replace with this // assignment @@ -240,7 +254,7 @@ namespace Content.Client.Actions.Assignments { var cost = possibility.Slot + _numSlots * (currentHotbar >= possibility.Hotbar ? currentHotbar - possibility.Hotbar - : (_numHotbars - currentHotbar) + possibility.Hotbar); + : _numHotbars - currentHotbar + possibility.Hotbar); if (cost < minCost) { hotbar = possibility.Hotbar; @@ -273,8 +287,10 @@ namespace Content.Client.Actions.Assignments AssignSlot(hotbar, slot, toAssign); return; } + continue; } + // slot's empty, assign AssignSlot(hotbar, slot, toAssign); return; @@ -285,7 +301,10 @@ namespace Content.Client.Actions.Assignments private bool ShouldPreventAutoPopulate(ActionAssignment assignment, bool force) { - if (force) return false; + if (force) + { + return false; + } if (assignment.TryGetAction(out var actionType)) { diff --git a/Content.Client/Actions/ClientActionsComponent.cs b/Content.Client/Actions/ClientActionsComponent.cs index a148d31b83..4719dc3697 100644 --- a/Content.Client/Actions/ClientActionsComponent.cs +++ b/Content.Client/Actions/ClientActionsComponent.cs @@ -44,7 +44,6 @@ namespace Content.Client.Actions [ViewVariables] private bool CurrentlyControlled => _playerManager.LocalPlayer != null && _playerManager.LocalPlayer.ControlledEntity == Owner; - protected override void Shutdown() { base.Shutdown(); diff --git a/Content.Client/Actions/UI/ActionMenu.cs b/Content.Client/Actions/UI/ActionMenu.cs index ead0dad451..a2cc63c26d 100644 --- a/Content.Client/Actions/UI/ActionMenu.cs +++ b/Content.Client/Actions/UI/ActionMenu.cs @@ -68,7 +68,7 @@ namespace Content.Client.Actions.UI _actionManager = IoCManager.Resolve(); _gameHud = IoCManager.Resolve(); - Title = Loc.GetString("Actions"); + Title = Loc.GetString("ui-actionmenu-title"); MinSize = (300, 300); Contents.AddChild(new VBoxContainer @@ -83,17 +83,17 @@ namespace Content.Client.Actions.UI { StyleClasses = { StyleNano.StyleClassActionSearchBox }, HorizontalExpand = true, - PlaceHolder = Loc.GetString("Search") + PlaceHolder = Loc.GetString("ui-actionmenu-search-bar-placeholder-text") }), (_filterButton = new MultiselectOptionButton() { - Label = Loc.GetString("Filter") + Label = Loc.GetString("ui-actionmenu-filter-buttonr") }) } }, (_clearButton = new Button { - Text = Loc.GetString("Clear"), + Text = Loc.GetString("ui-actionmenu-clear-button"), }), (_filterLabel = new Label()), new ScrollContainer @@ -353,7 +353,8 @@ namespace Content.Client.Actions.UI else { _filterLabel.Visible = true; - _filterLabel.Text = Loc.GetString("Filters: {0}", string.Join(", ", _filterButton.SelectedLabels)); + _filterLabel.Text = Loc.GetString("ui-actionmenu-filter-label", + ("selectedLabels", string.Join(", ", _filterButton.SelectedLabels))); } } @@ -430,7 +431,7 @@ namespace Content.Client.Actions.UI /// private static string Standardize(string rawText, bool splitOnCaseChange = false) { - rawText ??= ""; + rawText ??= string.Empty; // treat non-alphanumeric characters as whitespace rawText = NonAlphanumeric.Replace(rawText, " "); diff --git a/Content.Client/Actions/UI/ActionsUI.cs b/Content.Client/Actions/UI/ActionsUI.cs index 46fa256524..7c9b5ca86b 100644 --- a/Content.Client/Actions/UI/ActionsUI.cs +++ b/Content.Client/Actions/UI/ActionsUI.cs @@ -131,7 +131,7 @@ namespace Content.Client.Actions.UI VerticalAlignment = VAlignment.Center, SizeFlagsStretchRatio = 1, Scale = (0.5f, 0.5f), - ToolTip = Loc.GetString("ui-actionmenu-function-lock-action-slots"), + ToolTip = Loc.GetString("ui-actionsui-function-lock-action-slots"), TooltipDelay = CustomTooltipDelay }; settingsContainer.AddChild(_lockButton); @@ -143,7 +143,7 @@ namespace Content.Client.Actions.UI VerticalAlignment = VAlignment.Center, SizeFlagsStretchRatio = 1, Scale = (0.5f, 0.5f), - ToolTip = Loc.GetString("ui-actionmenu-function-open-abilities-menu"), + ToolTip = Loc.GetString("ui-actionsui-function-open-abilities-menu"), TooltipDelay = CustomTooltipDelay }; settingsContainer.AddChild(_settingsButton); diff --git a/Content.Client/Administration/UI/AdminAddReagentUI.cs b/Content.Client/Administration/UI/AdminAddReagentUI.cs index e2c4fba355..397b899369 100644 --- a/Content.Client/Administration/UI/AdminAddReagentUI.cs +++ b/Content.Client/Administration/UI/AdminAddReagentUI.cs @@ -1,4 +1,4 @@ -using Content.Client.Eui; +using Content.Client.Eui; using Content.Shared.Administration; using Content.Shared.Chemistry.Reagent; using Content.Shared.Eui; @@ -63,7 +63,7 @@ namespace Content.Client.Administration.UI { _eui = eui; - Title = Loc.GetString("Add reagent..."); + Title = Loc.GetString("admin-add-reagent-eui-title"); Contents.AddChild(new VBoxContainer { @@ -74,14 +74,14 @@ namespace Content.Client.Administration.UI Columns = 2, Children = { - new Label {Text = Loc.GetString("Cur volume: ")}, + new Label {Text = Loc.GetString("admin-add-reagent-eui-current-volume-label") + " "}, (_volumeLabel = new Label()), - new Label {Text = Loc.GetString("Reagent: ")}, - (_reagentIdEdit = new LineEdit {PlaceHolder = Loc.GetString("Reagent ID...")}), - new Label {Text = Loc.GetString("Amount: ")}, + new Label {Text = Loc.GetString("admin-add-reagent-eui-reagent-label") + " "}, + (_reagentIdEdit = new LineEdit {PlaceHolder = Loc.GetString("admin-add-reagent-eui-reagent-id-edit")}), + new Label {Text = Loc.GetString("admin-add-reagent-eui-amount-label") + " "}, (_amountEdit = new LineEdit { - PlaceHolder = Loc.GetString("A number..."), + PlaceHolder = Loc.GetString("admin-add-reagent-eui-amount-edit"), HorizontalExpand = true }), }, @@ -98,8 +98,8 @@ namespace Content.Client.Administration.UI ClipText = true }), - (_addButton = new Button {Text = Loc.GetString("Add")}), - (_addCloseButton = new Button {Text = Loc.GetString("Add & Close")}) + (_addButton = new Button {Text = Loc.GetString("admin-add-reagent-eui-add-button")}), + (_addCloseButton = new Button {Text = Loc.GetString("admin-add-reagent-eui-add-close-button")}) } } } @@ -125,31 +125,32 @@ namespace Content.Client.Administration.UI { if (string.IsNullOrWhiteSpace(_reagentIdEdit.Text)) { - DoError(Loc.GetString("Must specify reagent ID")); + DoError(Loc.GetString("admin-add-reagent-eui-no-reagent-id-error")); return; } if (!_eui._prototypes.HasIndex(_reagentIdEdit.Text)) { - DoError(Loc.GetString("'{0}' does not exist.", _reagentIdEdit.Text)); + DoError(Loc.GetString("admin-add-reagent-eui-reagent-does-not-exist-error", + ("reagent", _reagentIdEdit.Text))); return; } if (string.IsNullOrWhiteSpace(_amountEdit.Text)) { - DoError(Loc.GetString("Must specify reagent amount")); + DoError(Loc.GetString("admin-add-reagent-eui-no-reagent-amount-specified-error")); return; } if (!float.TryParse(_amountEdit.Text, out _)) { - DoError(Loc.GetString("Invalid amount")); + DoError(Loc.GetString("admin-add-reagent-eui-invalid-amount-error")); return; } _addButton.Disabled = false; _addCloseButton.Disabled = false; - _errorLabel.Text = ""; + _errorLabel.Text = string.Empty; void DoError(string text) { @@ -162,7 +163,9 @@ namespace Content.Client.Administration.UI public void HandleState(AdminAddReagentEuiState state) { - _volumeLabel.Text = Loc.GetString("{0}/{1}u", state.CurVolume, state.MaxVolume); + _volumeLabel.Text = Loc.GetString("admin-add-reagent-eui-current-and-max-volume-label", + ("currentVolume", state.CurVolume), + ("maxVolume" ,state.MaxVolume)); } } } diff --git a/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs b/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs index debef4c91e..f527a28c8d 100644 --- a/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs +++ b/Content.Client/Administration/UI/AdminMenuWindow.xaml.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using Content.Client.Administration.UI.Tabs; using Content.Client.HUD; @@ -25,15 +25,15 @@ namespace Content.Client.Administration.UI public AdminMenuWindow() { MinSize = SetSize = (500, 250); - Title = Loc.GetString("Admin Menu"); + Title = Loc.GetString("admin-menu-title"); RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); - MasterTabContainer.SetTabTitle(0, Loc.GetString("Admin")); - MasterTabContainer.SetTabTitle(1, Loc.GetString("Adminbus")); - MasterTabContainer.SetTabTitle(2, Loc.GetString("Atmos")); - MasterTabContainer.SetTabTitle(3, Loc.GetString("Round")); - MasterTabContainer.SetTabTitle(4, Loc.GetString("Server")); - MasterTabContainer.SetTabTitle(5, Loc.GetString("Players")); + MasterTabContainer.SetTabTitle(0, Loc.GetString("admin-menu-admin-tab")); + MasterTabContainer.SetTabTitle(1, Loc.GetString("admin-menu-adminbus-tab")); + MasterTabContainer.SetTabTitle(2, Loc.GetString("admin-menu-atmos-tab")); + MasterTabContainer.SetTabTitle(3, Loc.GetString("admin-menu-round-tab")); + MasterTabContainer.SetTabTitle(4, Loc.GetString("admin-menu-server-tab")); + MasterTabContainer.SetTabTitle(5, Loc.GetString("admin-menu-players-tab")); } protected override void EnteredTree() diff --git a/Content.Client/Administration/UI/PermissionsEui.cs b/Content.Client/Administration/UI/PermissionsEui.cs index 291f6a6f1e..feaa2b751d 100644 --- a/Content.Client/Administration/UI/PermissionsEui.cs +++ b/Content.Client/Administration/UI/PermissionsEui.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Content.Client.Administration.Managers; using Content.Client.Eui; @@ -207,7 +207,7 @@ namespace Content.Client.Administration.UI al.AddChild(new Label {Text = name}); - var titleControl = new Label {Text = admin.Title ?? Loc.GetString("none")}; + var titleControl = new Label {Text = admin.Title ?? Loc.GetString("permissions-eui-edit-admin-title-control-text").ToLowerInvariant()}; if (admin.Title == null) // none { titleControl.StyleClasses.Add(StyleBase.StyleClassItalic); @@ -228,7 +228,7 @@ namespace Content.Client.Administration.UI else { italic = true; - rank = Loc.GetString("none"); + rank = Loc.GetString("permissions-eui-edit-no-rank-text").ToLowerInvariant(); } var rankControl = new Label {Text = rank}; @@ -248,14 +248,14 @@ namespace Content.Client.Administration.UI HorizontalAlignment = Control.HAlignment.Center, }); - var editButton = new Button {Text = Loc.GetString("Edit")}; + var editButton = new Button {Text = Loc.GetString("permissions-eui-edit-title-button") }; editButton.OnPressed += _ => OnEditPressed(admin); al.AddChild(editButton); if (!_adminManager.HasFlag(combinedFlags)) { editButton.Disabled = true; - editButton.ToolTip = Loc.GetString("You do not have the required flags to edit this admin."); + editButton.ToolTip = Loc.GetString("permissions-eui-do-not-have-required-flags-to-edit-admin-tooltip"); } } @@ -271,14 +271,14 @@ namespace Content.Client.Administration.UI HorizontalExpand = true, HorizontalAlignment = Control.HAlignment.Center, }); - var editButton = new Button {Text = Loc.GetString("Edit")}; + var editButton = new Button {Text = Loc.GetString("permissions-eui-edit-admin-rank-button") }; editButton.OnPressed += _ => OnEditRankPressed(kv); _menu.AdminRanksList.AddChild(editButton); if (!_adminManager.HasFlag(rank.Flags)) { editButton.Disabled = true; - editButton.ToolTip = Loc.GetString("You do not have the required flags to edit this rank."); + editButton.ToolTip = Loc.GetString("permissions-eui-do-not-have-required-flags-to-edit-rank-tooltip"); } } } @@ -299,19 +299,19 @@ namespace Content.Client.Administration.UI public Menu(PermissionsEui ui) { _ui = ui; - Title = Loc.GetString("Permissions Panel"); + Title = Loc.GetString("permissions-eui-menu-title"); var tab = new TabContainer(); AddAdminButton = new Button { - Text = Loc.GetString("Add Admin"), + Text = Loc.GetString("permissions-eui-menu-add-admin-button"), HorizontalAlignment = HAlignment.Right }; AddAdminRankButton = new Button { - Text = Loc.GetString("Add Admin Rank"), + Text = Loc.GetString("permissions-eui-menu-add-admin-rank-button"), HorizontalAlignment = HAlignment.Right }; @@ -320,14 +320,14 @@ namespace Content.Client.Administration.UI { Children = {AdminsList, AddAdminButton}, }; - TabContainer.SetTabTitle(adminVBox, Loc.GetString("Admins")); + TabContainer.SetTabTitle(adminVBox, Loc.GetString("permissions-eui-menu-admins-tab-title")); AdminRanksList = new GridContainer {Columns = 3}; var rankVBox = new VBoxContainer { Children = { AdminRanksList, AddAdminRankButton} }; - TabContainer.SetTabTitle(rankVBox, Loc.GetString("Admin Ranks")); + TabContainer.SetTabTitle(rankVBox, Loc.GetString("permissions-eui-menu-admin-ranks-tab-title")); tab.AddChild(adminVBox); tab.AddChild(rankVBox); @@ -360,22 +360,23 @@ namespace Content.Client.Administration.UI if (data is { } dat) { var name = dat.UserName ?? dat.UserId.ToString(); - Title = Loc.GetString("Edit admin {0}", name); + Title = Loc.GetString("permissions-eui-edit-admin-window-edit-admin-label", + ("admin", name)); nameControl = new Label {Text = name}; } else { - Title = Loc.GetString("Add admin"); + Title = Loc.GetString("permissions-eui-menu-add-admin-button"); - nameControl = NameEdit = new LineEdit {PlaceHolder = Loc.GetString("Username/User ID")}; + nameControl = NameEdit = new LineEdit {PlaceHolder = Loc.GetString("permissions-eui-edit-admin-window-name-edit-placeholder") }; } - TitleEdit = new LineEdit {PlaceHolder = Loc.GetString("Custom title, leave blank to inherit rank title.")}; + TitleEdit = new LineEdit {PlaceHolder = Loc.GetString("permissions-eui-edit-admin-window-title-edit-placeholder") }; RankButton = new OptionButton(); - SaveButton = new Button {Text = Loc.GetString("Save"), HorizontalAlignment = HAlignment.Right}; + SaveButton = new Button {Text = Loc.GetString("permissions-eui-edit-admin-window-save-button"), HorizontalAlignment = HAlignment.Right}; - RankButton.AddItem(Loc.GetString("No rank"), NoRank); + RankButton.AddItem(Loc.GetString("permissions-eui-edit-admin-window-no-rank-button"), NoRank); foreach (var (rId, rank) in ui._ranks) { RankButton.AddItem(rank.Name, rId); @@ -454,7 +455,7 @@ namespace Content.Client.Administration.UI if (data != null) { // show remove button. - RemoveButton = new Button {Text = Loc.GetString("Remove")}; + RemoveButton = new Button {Text = Loc.GetString("permissions-eui-edit-admin-window-remove-flag-button") }; bottomButtons.AddChild(RemoveButton); } @@ -527,7 +528,7 @@ namespace Content.Client.Administration.UI NameEdit = new LineEdit { - PlaceHolder = Loc.GetString("Rank name"), + PlaceHolder = Loc.GetString("permissions-eui-edit-admin-rank-window-name-edit-placeholder"), }; if (data != null) @@ -536,7 +537,7 @@ namespace Content.Client.Administration.UI } SaveButton = new Button { - Text = Loc.GetString("Save"), + Text = Loc.GetString("permissions-eui-menu-save-admin-rank-button"), HorizontalAlignment = HAlignment.Right, HorizontalExpand = true }; @@ -568,7 +569,7 @@ namespace Content.Client.Administration.UI if (data != null) { // show remove button. - RemoveButton = new Button {Text = Loc.GetString("Remove")}; + RemoveButton = new Button {Text = Loc.GetString("permissions-eui-menu-remove-admin-rank-button") }; bottomButtons.AddChild(RemoveButton); } diff --git a/Content.Client/Administration/UI/SetOutfit/SetOutfitMenu.xaml.cs b/Content.Client/Administration/UI/SetOutfit/SetOutfitMenu.xaml.cs index b39d0757a6..8139ca655f 100644 --- a/Content.Client/Administration/UI/SetOutfit/SetOutfitMenu.xaml.cs +++ b/Content.Client/Administration/UI/SetOutfit/SetOutfitMenu.xaml.cs @@ -26,9 +26,9 @@ namespace Content.Client.Administration.UI.SetOutfit IoCManager.InjectDependencies(this); RobustXamlLoader.Load(this); - Title = Loc.GetString("Set Outfit"); + Title = Loc.GetString("set-outfit-menu-title"); - ConfirmButton.Text = Loc.GetString("Confirm"); + ConfirmButton.Text = Loc.GetString("set-outfit-menu-confirm-button"); ConfirmButton.OnPressed += ConfirmButtonOnOnPressed; SearchBar.OnTextChanged += SearchBarOnOnTextChanged; OutfitList.OnItemSelected += OutfitListOnOnItemSelected; diff --git a/Content.Client/Administration/UI/Tabs/AdminbusTab/StationEventsWindow.xaml.cs b/Content.Client/Administration/UI/Tabs/AdminbusTab/StationEventsWindow.xaml.cs index 4d55547086..f500ece192 100644 --- a/Content.Client/Administration/UI/Tabs/AdminbusTab/StationEventsWindow.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/AdminbusTab/StationEventsWindow.xaml.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using System.Linq; using Content.Client.StationEvents.Managers; @@ -21,7 +21,7 @@ namespace Content.Client.Administration.UI.Tabs.AdminbusTab protected override void EnteredTree() { _data = IoCManager.Resolve().StationEvents.ToList(); - _data.Add(_data.Any() ? Loc.GetString("Not loaded") : Loc.GetString("Random")); + _data.Add(_data.Any() ? Loc.GetString("station-events-window-not-loaded-text") : Loc.GetString("station-events-window-random-text")); foreach (var stationEvent in _data) { EventsOptions.AddItem(stationEvent); diff --git a/Content.Client/Arcade/BlockGameMenu.cs b/Content.Client/Arcade/BlockGameMenu.cs index 47e0c80a2e..0ac7329a71 100644 --- a/Content.Client/Arcade/BlockGameMenu.cs +++ b/Content.Client/Arcade/BlockGameMenu.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Text; using Content.Client.Arcade.UI; @@ -114,7 +114,7 @@ namespace Content.Client.Arcade _pauseButton = new Button { - Text = Loc.GetString("Pause"), + Text = Loc.GetString("blockgame-menu-button-pause"), TextAlign = Label.AlignMode.Center }; _pauseButton.OnPressed += (e) => TryPause(); diff --git a/Content.Client/Atmos/UI/GasAnalyzerMenu.cs b/Content.Client/Atmos/UI/GasAnalyzerMenu.cs index d05c454e38..3c114f7d7c 100644 --- a/Content.Client/Atmos/UI/GasAnalyzerMenu.cs +++ b/Content.Client/Atmos/UI/GasAnalyzerMenu.cs @@ -29,7 +29,7 @@ namespace Content.Client.Atmos.UI var resourceCache = IoCManager.Resolve(); Owner = owner; - var rootContainer = new LayoutContainer {Name = "WireRoot"}; + var rootContainer = new LayoutContainer { Name = "WireRoot" }; AddChild(rootContainer); MouseFilter = MouseFilterMode.Stop; @@ -85,7 +85,7 @@ namespace Content.Client.Atmos.UI { (_nameLabel = new Label { - Text = Loc.GetString("Gas Analyzer"), + Text = Loc.GetString("gas-analyzer-window-name"), FontOverride = font, FontColorOverride = StyleNano.NanoGold, VerticalAlignment = VAlignment.Center @@ -95,7 +95,7 @@ namespace Content.Client.Atmos.UI MinSize = (20, 0), HorizontalExpand = true, }, - (refreshButton = new Button {Text = "Refresh"}), //TODO: refresh icon? + (refreshButton = new Button {Text = "gas-analyzer-window-refresh-button"}), //TODO: refresh icon? new Control { MinSize = (2, 0), @@ -115,7 +115,7 @@ namespace Content.Client.Atmos.UI var middle = new PanelContainer { - PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#202025")}, + PanelOverride = new StyleBoxFlat { BackgroundColor = Color.FromHex("#202025") }, Children = { (_statusContainer = new VBoxContainer @@ -129,13 +129,13 @@ namespace Content.Client.Atmos.UI _topContainer.AddChild(new PanelContainer { MinSize = (0, 2), - PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#525252ff")} + PanelOverride = new StyleBoxFlat { BackgroundColor = Color.FromHex("#525252ff") } }); _topContainer.AddChild(middle); _topContainer.AddChild(new PanelContainer { MinSize = (0, 2), - PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#525252ff")} + PanelOverride = new StyleBoxFlat { BackgroundColor = Color.FromHex("#525252ff") } }); CloseButton.OnPressed += _ => Close(); SetSize = (300, 200); @@ -149,7 +149,7 @@ namespace Content.Client.Atmos.UI { _statusContainer.AddChild(new Label { - Text = Loc.GetString("Error: {0}", state.Error), + Text = Loc.GetString("gas-analyzer-window-error-text", ("errorText", state.Error)), FontColorOverride = Color.Red }); return; @@ -157,12 +157,13 @@ namespace Content.Client.Atmos.UI _statusContainer.AddChild(new Label { - Text = Loc.GetString("Pressure: {0:0.##} kPa", state.Pressure) + Text = Loc.GetString("gas-analyzer-window-pressure-text", ("pressure", $"{state.Pressure:0.##}")) }); _statusContainer.AddChild(new Label { - Text = Loc.GetString("Temperature: {0:0.#}K ({1:0.#}°C)", state.Temperature, - TemperatureHelpers.KelvinToCelsius(state.Temperature)) + Text = Loc.GetString("gas-analyzer-window-temperature-text", + ("tempK", $"{state.Temperature:0.#}"), + ("tempC", $"{TemperatureHelpers.KelvinToCelsius(state.Temperature):0.#}")) }); // Return here cause all that stuff down there is gas stuff (so we don't get the seperators) if (state.Gases == null || state.Gases.Length == 0) @@ -222,7 +223,7 @@ namespace Content.Client.Atmos.UI }); tableVal.AddChild(new Label { - Text = Loc.GetString("{0:0.##} mol", gas.Amount) + Text = Loc.GetString("gas-analyzer-window-molality-text", ("mol", $"{gas.Amount:0.##}")) }); // Add to the gas bar //TODO: highlight the currently hover one @@ -230,8 +231,10 @@ namespace Content.Client.Atmos.UI var right = (i == state.Gases.Length - 1) ? 0f : 2f; gasBar.AddChild(new PanelContainer { - ToolTip = Loc.GetString("{0}: {1:0.##} mol ({2:0.#}%)", gas.Name, gas.Amount, - (gas.Amount / totalGasAmount) * 100), + ToolTip = Loc.GetString("gas-analyzer-window-molality-percentage-text", + ("gasName", gas.Name), + ("amount", $"{gas.Amount:0.##}"), + ("percentage", $"{(gas.Amount / totalGasAmount * 100):0.#}")), HorizontalExpand = true, SizeFlagsStretchRatio = gas.Amount, MouseFilter = MouseFilterMode.Pass, diff --git a/Content.Client/Body/UI/BodyScannerDisplay.cs b/Content.Client/Body/UI/BodyScannerDisplay.cs index 13afdfa6d6..90b3436582 100644 --- a/Content.Client/Body/UI/BodyScannerDisplay.cs +++ b/Content.Client/Body/UI/BodyScannerDisplay.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Body.Components; using Content.Shared.Body.Mechanism; using Content.Shared.Body.Part; @@ -23,7 +23,7 @@ namespace Content.Client.Body.UI { IoCManager.InjectDependencies(this); Owner = owner; - Title = Loc.GetString("Body Scanner"); + Title = Loc.GetString("body-scanner-display-title"); var hSplit = new HBoxContainer { @@ -57,7 +57,7 @@ namespace Content.Client.Body.UI { new Label { - Text = "Health: " + Text = $"{Loc.GetString("body-scanner-display-health-label")} " }, (BodyPartHealth = new Label()) } @@ -144,7 +144,7 @@ namespace Content.Client.Body.UI // TODO BODY Part damage if (part.Owner.TryGetComponent(out IDamageableComponent? damageable)) { - BodyPartHealth.Text = Loc.GetString("{0} damage", damageable.TotalDamage); + BodyPartHealth.Text = Loc.GetString("body-scanner-display-body-part-damage-text",("damage", damageable.TotalDamage)); } MechanismList.Clear(); diff --git a/Content.Client/Body/UI/SurgeryWindow.cs b/Content.Client/Body/UI/SurgeryWindow.cs index 8cd15d7c46..ef771bab1e 100644 --- a/Content.Client/Body/UI/SurgeryWindow.cs +++ b/Content.Client/Body/UI/SurgeryWindow.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; @@ -18,7 +18,7 @@ namespace Content.Client.Body.UI public SurgeryWindow() { MinSize = SetSize = (300, 400); - Title = Loc.GetString("Surgery"); + Title = Loc.GetString("surgery-window-title"); RectClipContent = true; var vSplitContainer = new VBoxContainer @@ -105,7 +105,7 @@ namespace Content.Client.Body.UI (DisplayText = new Label { VerticalAlignment = VAlignment.Center, - Text = "N/A", + Text = Loc.GetString("surgery-window-not-available-button-text"), }), (new Control { diff --git a/Content.Client/Cargo/UI/CargoConsoleMenu.cs b/Content.Client/Cargo/UI/CargoConsoleMenu.cs index 33889b129a..36eb189c4b 100644 --- a/Content.Client/Cargo/UI/CargoConsoleMenu.cs +++ b/Content.Client/Cargo/UI/CargoConsoleMenu.cs @@ -1,4 +1,5 @@ -using System; +#nullable enable +using System; using System.Collections.Generic; using Content.Client.Stylesheets; using Content.Shared.Cargo; @@ -45,19 +46,19 @@ namespace Content.Client.Cargo.UI Owner = owner; if (Owner.RequestOnly) - Title = Loc.GetString("Cargo Request Console"); + Title = Loc.GetString("cargo-console-menu-request-only-title"); else - Title = Loc.GetString("Cargo Shuttle Console"); + Title = Loc.GetString("cargo-console-menu-title"); var rows = new VBoxContainer(); var accountName = new HBoxContainer(); var accountNameLabel = new Label { - Text = Loc.GetString("Account Name: "), + Text = Loc.GetString("cargo-console-menu-account-name-label") + " ", StyleClasses = { StyleNano.StyleClassLabelKeyText } }; _accountNameLabel = new Label { - Text = "None" //Owner.Bank.Account.Name + Text = Loc.GetString("cargo-console-menu-account-name-none-text") //Owner.Bank.Account.Name }; accountName.AddChild(accountNameLabel); accountName.AddChild(_accountNameLabel); @@ -66,7 +67,7 @@ namespace Content.Client.Cargo.UI var points = new HBoxContainer(); var pointsLabel = new Label { - Text = Loc.GetString("Points: "), + Text = Loc.GetString("cargo-console-menu-points-label") + " ", StyleClasses = { StyleNano.StyleClassLabelKeyText } }; _pointsLabel = new Label @@ -80,12 +81,12 @@ namespace Content.Client.Cargo.UI var shuttleStatus = new HBoxContainer(); var shuttleStatusLabel = new Label { - Text = Loc.GetString("Shuttle Status: "), + Text = Loc.GetString("cargo-console-menu-shuttle-status-label") + " ", StyleClasses = { StyleNano.StyleClassLabelKeyText } }; _shuttleStatusLabel = new Label { - Text = Loc.GetString("Away") // Shuttle.Status + Text = Loc.GetString("cargo-console-menu-shuttle-status-away-text") // Shuttle.Status }; shuttleStatus.AddChild(shuttleStatusLabel); shuttleStatus.AddChild(_shuttleStatusLabel); @@ -94,12 +95,12 @@ namespace Content.Client.Cargo.UI var shuttleCapacity = new HBoxContainer(); var shuttleCapacityLabel = new Label { - Text = Loc.GetString("Order Capacity: "), + Text = Loc.GetString("cargo-console-menu-order-capacity-label") + " ", StyleClasses = { StyleNano.StyleClassLabelKeyText } }; _shuttleCapacityLabel = new Label { - Text = "0/20" + Text = $"{0}/{20}" }; shuttleCapacity.AddChild(shuttleCapacityLabel); shuttleCapacity.AddChild(_shuttleCapacityLabel); @@ -109,13 +110,13 @@ namespace Content.Client.Cargo.UI CallShuttleButton = new Button() { //Text = Loc.GetString("Call Shuttle"), - Text = Loc.GetString("Activate Telepad"), //Shuttle code pending + Text = Loc.GetString("cargo-console-menu-call-shuttle-button"), //Shuttle code pending TextAlign = Label.AlignMode.Center, HorizontalExpand = true }; PermissionsButton = new Button() { - Text = Loc.GetString("Permissions"), + Text = Loc.GetString("cargo-console-menu-permissions-button"), TextAlign = Label.AlignMode.Center }; buttons.AddChild(CallShuttleButton); @@ -125,13 +126,13 @@ namespace Content.Client.Cargo.UI var category = new HBoxContainer(); _categories = new OptionButton { - Prefix = Loc.GetString("Categories: "), + Prefix = Loc.GetString("cargo-console-menu-categories-label") + " ", HorizontalExpand = true, SizeFlagsStretchRatio = 1 }; _searchBar = new LineEdit { - PlaceHolder = Loc.GetString("Search"), + PlaceHolder = Loc.GetString("cargo-console-menu-search-bar-placeholder"), HorizontalExpand = true, SizeFlagsStretchRatio = 1 }; @@ -164,14 +165,14 @@ namespace Content.Client.Cargo.UI VerticalExpand = true }; var rAndOVBox = new VBoxContainer(); - var requestsLabel = new Label { Text = Loc.GetString("Requests") }; + var requestsLabel = new Label { Text = Loc.GetString("cargo-console-menu-requests-label") }; _requests = new VBoxContainer // replace with scroll box so that approval buttons can be added { StyleClasses = { "transparentItemList" }, VerticalExpand = true, SizeFlagsStretchRatio = 1, }; - var ordersLabel = new Label { Text = Loc.GetString("Orders") }; + var ordersLabel = new Label { Text = Loc.GetString("cargo-console-menu-orders-label") }; _orders = new VBoxContainer { StyleClasses = { "transparentItemList" }, @@ -270,7 +271,7 @@ namespace Content.Client.Cargo.UI return; } - _categoryStrings.Add(Loc.GetString("All")); + _categoryStrings.Add(Loc.GetString("cargo-console-menu-populate-categories-all-text")); var search = _searchBar.Text.Trim().ToLowerInvariant(); foreach (var prototype in Owner.Market.Products) @@ -305,13 +306,17 @@ namespace Content.Client.Cargo.UI var row = new CargoOrderRow { Order = order, - Icon = {Texture = Owner.Market.GetProduct(order.ProductId)?.Icon.Frame0()}, + Icon = { Texture = Owner.Market.GetProduct(order.ProductId)?.Icon.Frame0() }, ProductName = { - Text = - $"{Owner.Market.GetProduct(order.ProductId)?.Name} (x{order.Amount}) by {order.Requester}" + Text = Loc.GetString( + "cargo-console-menu-populate-orders-cargo-order-row-product-name-text", + ("productName", Owner.Market.GetProduct(order.ProductId)?.Name!), + ("orderAmount", order.Amount), + ("orderRequester", order.Requester)) }, - Description = {Text = $"Reasons: {order.Reason}"} + Description = {Text = Loc.GetString("cargo-console-menu-order-reason-description", + ("reason", order.Reason))} }; row.Cancel.OnPressed += (args) => { OnOrderCanceled?.Invoke(args); }; if (order.Approved) @@ -463,14 +468,14 @@ namespace Content.Client.Cargo.UI Approve = new Button { - Text = "Approve", + Text = Loc.GetString("cargo-console-menu-cargo-order-row-approve-button"), StyleClasses = { StyleNano.StyleClassLabelSubText } }; hBox.AddChild(Approve); Cancel = new Button { - Text = "Cancel", + Text = Loc.GetString("cargo-console-menu-cargo-order-row-cancel-button"), StyleClasses = { StyleNano.StyleClassLabelSubText } }; hBox.AddChild(Cancel); diff --git a/Content.Client/Cargo/UI/CargoConsoleOrderMenu.cs b/Content.Client/Cargo/UI/CargoConsoleOrderMenu.cs index f98bab6d6a..524a03468e 100644 --- a/Content.Client/Cargo/UI/CargoConsoleOrderMenu.cs +++ b/Content.Client/Cargo/UI/CargoConsoleOrderMenu.cs @@ -17,22 +17,22 @@ namespace Content.Client.Cargo.UI { IoCManager.InjectDependencies(this); - Title = Loc.GetString("Order Form"); + Title = Loc.GetString("cargo-console-order-menu-title"); var vBox = new VBoxContainer(); var gridContainer = new GridContainer { Columns = 2 }; - var requesterLabel = new Label { Text = Loc.GetString("Name:") }; + var requesterLabel = new Label { Text = Loc.GetString("cargo-console-order-menu-requester-label") }; Requester = new LineEdit(); gridContainer.AddChild(requesterLabel); gridContainer.AddChild(Requester); - var reasonLabel = new Label { Text = Loc.GetString("Reason:") }; + var reasonLabel = new Label { Text = Loc.GetString("cargo-console-order-menu-reason-label:") }; Reason = new LineEdit(); gridContainer.AddChild(reasonLabel); gridContainer.AddChild(Reason); - var amountLabel = new Label { Text = Loc.GetString("Amount:") }; + var amountLabel = new Label { Text = Loc.GetString("cargo-console-order-menu-amount-label:") }; Amount = new SpinBox { HorizontalExpand = true, @@ -49,7 +49,7 @@ namespace Content.Client.Cargo.UI SubmitButton = new Button() { - Text = Loc.GetString("OK"), + Text = Loc.GetString("cargo-console-order-menu-submit-button"), TextAlign = Label.AlignMode.Center, }; vBox.AddChild(SubmitButton); diff --git a/Content.Client/Cargo/UI/GalacticBankSelectionMenu.cs b/Content.Client/Cargo/UI/GalacticBankSelectionMenu.cs index bc7ce49b70..2858cf1ed0 100644 --- a/Content.Client/Cargo/UI/GalacticBankSelectionMenu.cs +++ b/Content.Client/Cargo/UI/GalacticBankSelectionMenu.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.IoC; using Robust.Shared.Localization; @@ -18,7 +18,7 @@ namespace Content.Client.Cargo.UI MinSize = SetSize = (300, 300); IoCManager.InjectDependencies(this); - Title = Loc.GetString("Galactic Bank Selection"); + Title = Loc.GetString("galactic-bank-selection-menu-title"); _accounts = new ItemList() { SelectMode = ItemList.ItemListSelectMode.Single }; diff --git a/Content.Client/CharacterAppearance/MagicMirrorBoundUserInterface.cs b/Content.Client/CharacterAppearance/MagicMirrorBoundUserInterface.cs index 1fbdebd375..34ef6f1900 100644 --- a/Content.Client/CharacterAppearance/MagicMirrorBoundUserInterface.cs +++ b/Content.Client/CharacterAppearance/MagicMirrorBoundUserInterface.cs @@ -327,7 +327,7 @@ namespace Content.Client.CharacterAppearance public MagicMirrorWindow(MagicMirrorBoundUserInterface owner) { SetSize = MinSize = (500, 360); - Title = Loc.GetString("Magic Mirror"); + Title = Loc.GetString("magic-mirror-window-title"); _hairStylePicker = new HairStylePicker {HorizontalExpand = true}; _hairStylePicker.OnHairStylePicked += newStyle => owner.HairSelected(newStyle, false); diff --git a/Content.Client/CharacterInfo/Components/CharacterInfoComponent.cs b/Content.Client/CharacterInfo/Components/CharacterInfoComponent.cs index df5c3ffcec..7161808649 100644 --- a/Content.Client/CharacterInfo/Components/CharacterInfoComponent.cs +++ b/Content.Client/CharacterInfo/Components/CharacterInfoComponent.cs @@ -92,12 +92,12 @@ namespace Content.Client.CharacterInfo.Components AddChild(new Placeholder() { - PlaceholderText = Loc.GetString("Health & status effects") + PlaceholderText = Loc.GetString("character-info-health-and-status-effects-text") }); AddChild(new Label { - Text = Loc.GetString("Objectives"), + Text = Loc.GetString("character-info-objectives-label"), HorizontalAlignment = HAlignment.Center }); ObjectivesContainer = new VBoxContainer(); @@ -105,7 +105,7 @@ namespace Content.Client.CharacterInfo.Components AddChild(new Placeholder() { - PlaceholderText = Loc.GetString("Antagonist Roles") + PlaceholderText = Loc.GetString("character-info-roles-antagonist-text") }); } diff --git a/Content.Client/Chat/Managers/ChatManager.cs b/Content.Client/Chat/Managers/ChatManager.cs index 1a60027cc0..2647db7659 100644 --- a/Content.Client/Chat/Managers/ChatManager.cs +++ b/Content.Client/Chat/Managers/ChatManager.cs @@ -357,7 +357,7 @@ namespace Content.Client.Chat.Managers var messageText = FormattedMessage.EscapeText(message.Message); if (!string.IsNullOrEmpty(message.MessageWrap)) { - messageText = string.Format(message.MessageWrap, messageText); + messageText = string.Format(message.MessageWrap, messageText); } if (message.MessageColorOverride != Color.Transparent) diff --git a/Content.Client/Chemistry/Components/HyposprayComponent.cs b/Content.Client/Chemistry/Components/HyposprayComponent.cs index 90d830ffa6..4d832dccae 100644 --- a/Content.Client/Chemistry/Components/HyposprayComponent.cs +++ b/Content.Client/Chemistry/Components/HyposprayComponent.cs @@ -60,8 +60,9 @@ namespace Content.Client.Chemistry.Components _parent._uiUpdateNeeded = false; _label.SetMarkup(Loc.GetString( - "Volume: [color=white]{0}/{1}[/color]", - _parent.CurrentVolume, _parent.TotalVolume)); + "hypospray-volume-text", + ("currentVolume", _parent.CurrentVolume), + ("totalVolume", _parent.TotalVolume))); } } } diff --git a/Content.Client/Chemistry/Components/InjectorComponent.cs b/Content.Client/Chemistry/Components/InjectorComponent.cs index 8e6244caf0..a21f042636 100644 --- a/Content.Client/Chemistry/Components/InjectorComponent.cs +++ b/Content.Client/Chemistry/Components/InjectorComponent.cs @@ -71,12 +71,14 @@ namespace Content.Client.Chemistry.Components //Update current volume and injector state var modeStringLocalized = _parent.CurrentMode switch { - InjectorToggleMode.Draw => Loc.GetString("Draw"), - InjectorToggleMode.Inject => Loc.GetString("Inject"), - _ => Loc.GetString("Invalid") + InjectorToggleMode.Draw => Loc.GetString("injector-draw-text"), + InjectorToggleMode.Inject => Loc.GetString("injector-inject-text"), + _ => Loc.GetString("injector-invalid-injector-toggle-mode") }; - _label.SetMarkup(Loc.GetString("Volume: [color=white]{0}/{1}[/color] | [color=white]{2}[/color]", - _parent.CurrentVolume, _parent.TotalVolume, modeStringLocalized)); + _label.SetMarkup(Loc.GetString("injector-volume-label", + ("currentVolume", _parent.CurrentVolume), + ("totalVolume", _parent.TotalVolume), + ("modeString", modeStringLocalized))); } } } diff --git a/Content.Client/Chemistry/UI/ChemMasterBoundUserInterface.cs b/Content.Client/Chemistry/UI/ChemMasterBoundUserInterface.cs index b3a0297ae8..d1594c11ea 100644 --- a/Content.Client/Chemistry/UI/ChemMasterBoundUserInterface.cs +++ b/Content.Client/Chemistry/UI/ChemMasterBoundUserInterface.cs @@ -31,7 +31,7 @@ namespace Content.Client.Chemistry.UI //Setup window layout/elements _window = new ChemMasterWindow { - Title = Loc.GetString("ChemMaster 4000"), + Title = Loc.GetString("chem-master-bound-user-interface-title"), }; _window.OpenCentered(); @@ -58,7 +58,7 @@ namespace Content.Client.Chemistry.UI { base.UpdateState(state); - var castState = (ChemMasterBoundUserInterfaceState)state; + var castState = (ChemMasterBoundUserInterfaceState) state; _window?.UpdateState(castState); //Update window state } @@ -73,7 +73,6 @@ namespace Content.Client.Chemistry.UI { SendMessage(new UiActionMessage(action, null, null, null, pillAmount, bottleAmount)); } - } protected override void Dispose(bool disposing) diff --git a/Content.Client/Chemistry/UI/ChemMasterWindow.cs b/Content.Client/Chemistry/UI/ChemMasterWindow.cs index da84103c29..f46fc8fd0e 100644 --- a/Content.Client/Chemistry/UI/ChemMasterWindow.cs +++ b/Content.Client/Chemistry/UI/ChemMasterWindow.cs @@ -66,9 +66,9 @@ namespace Content.Client.Chemistry.UI { Children = { - new Label {Text = Loc.GetString("Container")}, + new Label {Text = Loc.GetString("chem-master-window-container-label")}, new Control {HorizontalExpand = true}, - (EjectButton = new Button {Text = Loc.GetString("Eject")}) + (EjectButton = new Button {Text = Loc.GetString("chem-master-window-eject-button")}) } }, //Wrap the container info in a PanelContainer so we can color it's background differently. @@ -91,7 +91,7 @@ namespace Content.Client.Chemistry.UI { new Label { - Text = Loc.GetString("No container loaded.") + Text = Loc.GetString("chem-master-window-no-container-loaded-text") } } }), @@ -106,10 +106,10 @@ namespace Content.Client.Chemistry.UI { Children = { - new Label {Text = Loc.GetString("Buffer")}, + new Label {Text = Loc.GetString("chem-master-window-buffer-text")}, new Control {HorizontalExpand = true}, - (BufferTransferButton = new Button {Text = Loc.GetString("Transfer"), Pressed = BufferModeTransfer, StyleClasses = { StyleBase.ButtonOpenRight }}), - (BufferDiscardButton = new Button {Text = Loc.GetString("Discard"), Pressed = !BufferModeTransfer, StyleClasses = { StyleBase.ButtonOpenLeft }}) + (BufferTransferButton = new Button {Text = Loc.GetString("chem-master-window-transfer-button"), Pressed = BufferModeTransfer, StyleClasses = { StyleBase.ButtonOpenRight }}), + (BufferDiscardButton = new Button {Text = Loc.GetString("chem-master-window-discard-button"), Pressed = !BufferModeTransfer, StyleClasses = { StyleBase.ButtonOpenLeft }}) } }, @@ -133,7 +133,7 @@ namespace Content.Client.Chemistry.UI { new Label { - Text = Loc.GetString("Buffer empty.") + Text = Loc.GetString("chem-master-window-buffer-empty-text") } } }), @@ -148,7 +148,7 @@ namespace Content.Client.Chemistry.UI { Children = { - new Label {Text = Loc.GetString("Packaging ")}, + new Label {Text = $"{Loc.GetString("chem-master-window-packaging-text")} "}, } }, @@ -182,7 +182,7 @@ namespace Content.Client.Chemistry.UI { new Label { - Text = Loc.GetString("Pills:") + Text = $"{Loc.GetString("chem-master-window-pills-label")} " }, }, @@ -204,12 +204,12 @@ namespace Content.Client.Chemistry.UI var pillVolume = new Label { - Text = " max 50u/each ", + Text = $" {Loc.GetString("chem-master-window-max-pills-volume-text")} ", StyleClasses = {StyleNano.StyleClassLabelSecondaryColor} }; PillInfo.AddChild((pillVolume)); - CreatePills = new Button {Text = Loc.GetString("Create")}; + CreatePills = new Button {Text = Loc.GetString("chem-master-window-create-pill-button") }; PillInfo.AddChild(CreatePills); //Bottles @@ -219,7 +219,7 @@ namespace Content.Client.Chemistry.UI { new Label { - Text = Loc.GetString("Bottles:") + Text = Loc.GetString("cham-master-window-bottles-label") }, }, @@ -241,12 +241,12 @@ namespace Content.Client.Chemistry.UI var bottleVolume = new Label { - Text = " max 30u/each ", + Text = $" {Loc.GetString("chem-master-window-max-bottle-volume-text")} ", StyleClasses = {StyleNano.StyleClassLabelSecondaryColor} }; BottleInfo.AddChild((bottleVolume)); - CreateBottles = new Button {Text = Loc.GetString("Create")}; + CreateBottles = new Button {Text = Loc.GetString("chem-master-window-create-bottle-button") }; BottleInfo.AddChild(CreateBottles); } @@ -311,7 +311,7 @@ namespace Content.Client.Chemistry.UI if (!state.HasBeaker) { - ContainerInfo.Children.Add(new Label {Text = Loc.GetString("No container loaded.")}); + ContainerInfo.Children.Add(new Label {Text = Loc.GetString("chem-master-window-no-container-loaded-text") }); return; } @@ -330,7 +330,7 @@ namespace Content.Client.Chemistry.UI foreach (var reagent in state.ContainerReagents) { - var name = Loc.GetString("Unknown reagent"); + var name = Loc.GetString("chem-master-window-unknown-reagent-text"); //Try to the prototype for the given reagent. This gives us it's name. if (_prototypeManager.TryIndex(reagent.ReagentId, out ReagentPrototype? proto)) { @@ -357,7 +357,7 @@ namespace Content.Client.Chemistry.UI MakeChemButton("5", ReagentUnit.New(5), reagent.ReagentId, false, StyleBase.ButtonOpenBoth), MakeChemButton("10", ReagentUnit.New(10), reagent.ReagentId, false, StyleBase.ButtonOpenBoth), MakeChemButton("25", ReagentUnit.New(25), reagent.ReagentId, false, StyleBase.ButtonOpenBoth), - MakeChemButton("All", ReagentUnit.New(-1), reagent.ReagentId, false, StyleBase.ButtonOpenLeft), + MakeChemButton(Loc.GetString("chem-master-window-buffer-all-amount"), ReagentUnit.New(-1), reagent.ReagentId, false, StyleBase.ButtonOpenLeft), } }); } @@ -367,14 +367,14 @@ namespace Content.Client.Chemistry.UI if (!state.BufferReagents.Any()) { - BufferInfo.Children.Add(new Label {Text = Loc.GetString("Buffer empty.")}); + BufferInfo.Children.Add(new Label {Text = Loc.GetString("chem-master-window-buffer-empty-text") }); return; } var bufferHBox = new HBoxContainer(); BufferInfo.AddChild(bufferHBox); - var bufferLabel = new Label {Text = "buffer: "}; + var bufferLabel = new Label { Text = $"{Loc.GetString("chem-master-window-buffer-label")} " }; bufferHBox.AddChild(bufferLabel); var bufferVol = new Label { @@ -385,7 +385,7 @@ namespace Content.Client.Chemistry.UI foreach (var reagent in state.BufferReagents) { - var name = Loc.GetString("Unknown reagent"); + var name = Loc.GetString("chem-master-window-unknown-reagent-text"); //Try to the prototype for the given reagent. This gives us it's name. if (_prototypeManager.TryIndex(reagent.ReagentId, out ReagentPrototype? proto)) { @@ -413,7 +413,7 @@ namespace Content.Client.Chemistry.UI MakeChemButton("5", ReagentUnit.New(5), reagent.ReagentId, true, StyleBase.ButtonOpenBoth), MakeChemButton("10", ReagentUnit.New(10), reagent.ReagentId, true, StyleBase.ButtonOpenBoth), MakeChemButton("25", ReagentUnit.New(25), reagent.ReagentId, true, StyleBase.ButtonOpenBoth), - MakeChemButton("All", ReagentUnit.New(-1), reagent.ReagentId, true, StyleBase.ButtonOpenLeft), + MakeChemButton(Loc.GetString("chem-master-window-buffer-all-amount"), ReagentUnit.New(-1), reagent.ReagentId, true, StyleBase.ButtonOpenLeft), } }); } diff --git a/Content.Client/Chemistry/UI/ReagentDispenserBoundUserInterface.cs b/Content.Client/Chemistry/UI/ReagentDispenserBoundUserInterface.cs index 5036adfe30..54c8196b63 100644 --- a/Content.Client/Chemistry/UI/ReagentDispenserBoundUserInterface.cs +++ b/Content.Client/Chemistry/UI/ReagentDispenserBoundUserInterface.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Content.Shared.Chemistry.Dispenser; using JetBrains.Annotations; @@ -35,7 +35,7 @@ namespace Content.Client.Chemistry.UI //Setup window layout/elements _window = new ReagentDispenserWindow { - Title = Loc.GetString("Reagent dispenser"), + Title = Loc.GetString("reagent-dispenser-bound-user-interface-title"), }; _window.OpenCentered(); diff --git a/Content.Client/Chemistry/UI/ReagentDispenserWindow.cs b/Content.Client/Chemistry/UI/ReagentDispenserWindow.cs index ede41c8ec8..acf11ca5fc 100644 --- a/Content.Client/Chemistry/UI/ReagentDispenserWindow.cs +++ b/Content.Client/Chemistry/UI/ReagentDispenserWindow.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Client.Stylesheets; using Content.Shared.Chemistry.Dispenser; using Content.Shared.Chemistry.Reagent; @@ -81,7 +81,7 @@ namespace Content.Client.Chemistry.UI { Children = { - new Label {Text = Loc.GetString("Amount")}, + new Label {Text = Loc.GetString("reagent-dispenser-window-amount-to-dispense-label")}, //Padding new Control {MinSize = (20, 0)}, (DispenseButton1 = new Button {Text = "1", Group = dispenseAmountGroup, StyleClasses = { StyleBase.ButtonOpenRight }}), @@ -108,9 +108,9 @@ namespace Content.Client.Chemistry.UI { Children = { - new Label {Text = Loc.GetString("Container: ")}, - (ClearButton = new Button {Text = Loc.GetString("Clear"), StyleClasses = {StyleBase.ButtonOpenRight}}), - (EjectButton = new Button {Text = Loc.GetString("Eject"), StyleClasses = {StyleBase.ButtonOpenLeft}}) + new Label {Text = Loc.GetString("reagent-dispenser-window-container-label") + " "}, + (ClearButton = new Button {Text = Loc.GetString("reagent-dispenser-window-clear-button"), StyleClasses = {StyleBase.ButtonOpenRight}}), + (EjectButton = new Button {Text = Loc.GetString("reagent-dispenser-window-eject-button"), StyleClasses = {StyleBase.ButtonOpenLeft}}) } }, //Wrap the container info in a PanelContainer so we can color it's background differently. @@ -133,7 +133,7 @@ namespace Content.Client.Chemistry.UI { new Label { - Text = Loc.GetString("No container loaded.") + Text = Loc.GetString("reagent-dispenser-window-no-container-loaded-text") } } }), @@ -163,7 +163,7 @@ namespace Content.Client.Chemistry.UI } else { - ChemicalList.AddChild(new Button {Text = Loc.GetString("Reagent name not found")}); + ChemicalList.AddChild(new Button {Text = Loc.GetString("reagent-dispenser-window-reagent-name-not-found-text") }); } } } @@ -259,7 +259,7 @@ namespace Content.Client.Chemistry.UI if (!state.HasBeaker) { - ContainerInfo.Children.Add(new Label {Text = Loc.GetString("No container loaded.")}); + ContainerInfo.Children.Add(new Label {Text = Loc.GetString("reagent-dispenser-window-no-container-loaded-text") }); return; } @@ -283,7 +283,7 @@ namespace Content.Client.Chemistry.UI foreach (var reagent in state.ContainerReagents) { - var name = Loc.GetString("Unknown reagent"); + var name = Loc.GetString("reagent-dispenser-window-unknown-reagent-text"); //Try to the prototype for the given reagent. This gives us it's name. if (_prototypeManager.TryIndex(reagent.ReagentId, out ReagentPrototype? proto)) { @@ -304,7 +304,7 @@ namespace Content.Client.Chemistry.UI }, new Label { - Text = $"{reagent.Quantity}u", + Text = Loc.GetString("reagent-dispenser-window-quantity-label-text", ("quantity", reagent.Quantity)), StyleClasses = {StyleNano.StyleClassPowerStateGood} } } @@ -319,7 +319,7 @@ namespace Content.Client.Chemistry.UI new Label {Text = $"{name}: "}, new Label { - Text = $"{reagent.Quantity}u", + Text = Loc.GetString("reagent-dispenser-window-quantity-label-text", ("quantity", reagent.Quantity)), StyleClasses = {StyleNano.StyleClassLabelSecondaryColor} } } diff --git a/Content.Client/Cloning/UI/AcceptCloningWindow.cs b/Content.Client/Cloning/UI/AcceptCloningWindow.cs index 40204566a9..c26d95a30f 100644 --- a/Content.Client/Cloning/UI/AcceptCloningWindow.cs +++ b/Content.Client/Cloning/UI/AcceptCloningWindow.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface; +using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.Localization; @@ -13,7 +13,7 @@ namespace Content.Client.Cloning.UI public AcceptCloningWindow() { - Title = Loc.GetString("Cloning Machine"); + Title = Loc.GetString("accept-cloning-window-title"); Contents.AddChild(new VBoxContainer { @@ -25,7 +25,7 @@ namespace Content.Client.Cloning.UI { (new Label() { - Text = Loc.GetString("You are being cloned!\nTransfer your soul to the clone body?") + Text = Loc.GetString("accept-cloning-window-prompt-text-part") }), new HBoxContainer { @@ -34,7 +34,7 @@ namespace Content.Client.Cloning.UI { (AcceptButton = new Button { - Text = Loc.GetString("Yes"), + Text = Loc.GetString("accept-cloning-window-accept-button"), }), (new Control() @@ -44,7 +44,7 @@ namespace Content.Client.Cloning.UI (DenyButton = new Button { - Text = Loc.GetString("No"), + Text = Loc.GetString("accept-cloning-window-deny-button"), }) } }, diff --git a/Content.Client/Cloning/UI/CloningPodWindow.cs b/Content.Client/Cloning/UI/CloningPodWindow.cs index 88535ee606..b085c5294d 100644 --- a/Content.Client/Cloning/UI/CloningPodWindow.cs +++ b/Content.Client/Cloning/UI/CloningPodWindow.cs @@ -33,7 +33,7 @@ namespace Content.Client.Cloning.UI SetSize = MinSize = (250, 300); _scanManager = scanManager; - Title = Loc.GetString("Cloning Machine"); + Title = Loc.GetString("cloning-pod-window-title"); Contents.AddChild(new VBoxContainer { @@ -54,7 +54,7 @@ namespace Content.Client.Cloning.UI { (CloneButton = new Button { - Text = Loc.GetString("Clone") + Text = Loc.GetString("cloning-pod-clone-button") }) } }, @@ -72,7 +72,7 @@ namespace Content.Client.Cloning.UI }), (EjectButton = new Button { - Text = Loc.GetString("Eject Body") + Text = Loc.GetString("cloning-pod-eject-body-button") }), new HBoxContainer { @@ -80,11 +80,11 @@ namespace Content.Client.Cloning.UI { new Label() { - Text = Loc.GetString("Neural Interface: ") + Text = Loc.GetString($"{Loc.GetString("cloning-pod-neural-interface-label")} ") }, (_mindState = new Label() { - Text = Loc.GetString("No Activity"), + Text = Loc.GetString("cloning-pod-no-activity-text"), FontColorOverride = Color.Red }), } @@ -108,7 +108,7 @@ namespace Content.Client.Cloning.UI _cloningProgressBar.MaxValue = state.Maximum; UpdateProgress(); - _mindState.Text = Loc.GetString(state.MindPresent ? "Consciousness Detected" : "No Activity"); + _mindState.Text = Loc.GetString(state.MindPresent ? "cloning-pod-mind-present-text" : "cloning-pod-no-activity-text"); _mindState.FontColorOverride = state.MindPresent ? Color.Green : Color.Red; } @@ -235,7 +235,7 @@ namespace Content.Client.Cloning.UI { VerticalAlignment = VAlignment.Center, HorizontalExpand = true, - Text = "", + Text = string.Empty, ClipText = true }) } diff --git a/Content.Client/Construction/ConstructionGhostComponent.cs b/Content.Client/Construction/ConstructionGhostComponent.cs index 523abd49d1..4411a7701c 100644 --- a/Content.Client/Construction/ConstructionGhostComponent.cs +++ b/Content.Client/Construction/ConstructionGhostComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Construction.Prototypes; +using Content.Shared.Construction.Prototypes; using Content.Shared.Examine; using Robust.Shared.GameObjects; using Robust.Shared.IoC; @@ -23,7 +23,7 @@ namespace Content.Client.Construction { if (Prototype == null) return; - message.AddMarkup(Loc.GetString("Building: [color=cyan]{0}[/color]\n", Prototype.Name)); + message.AddMarkup(Loc.GetString("construction-ghost-examine-message", ("name", Prototype.Name))); if (!_prototypeManager.TryIndex(Prototype.Graph, out ConstructionGraphPrototype? graph)) return; var startNode = graph.Nodes[Prototype.StartNode]; diff --git a/Content.Client/Construction/UI/ConstructionMenu.xaml.cs b/Content.Client/Construction/UI/ConstructionMenu.xaml.cs index baad99cf68..b1182c005c 100644 --- a/Content.Client/Construction/UI/ConstructionMenu.xaml.cs +++ b/Content.Client/Construction/UI/ConstructionMenu.xaml.cs @@ -1,4 +1,4 @@ -using System; +using System; using Robust.Client.AutoGenerated; using Robust.Client.Graphics; using Robust.Client.UserInterface.Controls; @@ -84,9 +84,9 @@ namespace Content.Client.Construction.UI IoCManager.InjectDependencies(this); RobustXamlLoader.Load(this); - Title = Loc.GetString("Construction"); + Title = Loc.GetString("construction-menu-title"); - BuildButton.Text = Loc.GetString("Place construction ghost"); + BuildButton.Text = Loc.GetString("construction-menu-place-ghost"); RecipesList.OnItemSelected += obj => RecipeSelected?.Invoke(this, obj.ItemList[obj.ItemIndex]); RecipesList.OnItemDeselected += _ => RecipeSelected?.Invoke(this, null); @@ -97,11 +97,11 @@ namespace Content.Client.Construction.UI PopulateRecipes?.Invoke(this, (SearchBar.Text, Categories[obj.Id])); }; - BuildButton.Text = Loc.GetString("Place construction ghost"); + BuildButton.Text = Loc.GetString("construction-menu-place-ghost"); BuildButton.OnToggled += args => BuildButtonToggled?.Invoke(this, args.Pressed); - ClearButton.Text = Loc.GetString("Clear All"); + ClearButton.Text = Loc.GetString("construction-menu-clear-all"); ClearButton.OnPressed += _ => ClearAllGhosts?.Invoke(this, EventArgs.Empty); - EraseButton.Text = Loc.GetString("Eraser Mode"); + EraseButton.Text = Loc.GetString("construction-menu-eraser-mode"); EraseButton.OnToggled += args => EraseButtonToggled?.Invoke(this, args.Pressed); } @@ -121,7 +121,7 @@ namespace Content.Client.Construction.UI public void SetRecipeInfo(string name, string description, Texture iconTexture, bool isItem) { BuildButton.Disabled = false; - BuildButton.Text = Loc.GetString(isItem ? "Place construction ghost" : "Craft"); + BuildButton.Text = Loc.GetString(isItem ? "construction-menu-place-ghost" : "construction-menu-craft"); TargetName.SetMessage(name); TargetDesc.SetMessage(description); TargetTexture.Texture = iconTexture; diff --git a/Content.Client/Crayon/CrayonComponent.cs b/Content.Client/Crayon/CrayonComponent.cs index ac62e8f227..b48b218e62 100644 --- a/Content.Client/Crayon/CrayonComponent.cs +++ b/Content.Client/Crayon/CrayonComponent.cs @@ -61,11 +61,11 @@ namespace Content.Client.Crayon } _parent._uiUpdateNeeded = false; - _label.SetMarkup(Loc.GetString("Drawing: [color={0}]{1}[/color] ({2}/{3})", - _parent.Color, - _parent.SelectedState, - _parent.Charges, - _parent.Capacity)); + _label.SetMarkup(Loc.GetString("crayon-drawing-label", + ("color",_parent.Color), + ("state",_parent.SelectedState), + ("charges", _parent.Charges), + ("capacity",_parent.Capacity))); } } } diff --git a/Content.Client/Crayon/UI/CrayonWindow.cs b/Content.Client/Crayon/UI/CrayonWindow.cs index e63be1ede8..a1b1fc33d1 100644 --- a/Content.Client/Crayon/UI/CrayonWindow.cs +++ b/Content.Client/Crayon/UI/CrayonWindow.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Client.Stylesheets; using Content.Shared.Crayon; using Robust.Client.Graphics; @@ -24,7 +24,7 @@ namespace Content.Client.Crayon.UI public CrayonWindow(CrayonBoundUserInterface owner) { MinSize = SetSize = (250, 300); - Title = Loc.GetString("Crayon"); + Title = Loc.GetString("crayon-window-title"); Owner = owner; var vbox = new VBoxContainer(); diff --git a/Content.Client/Credits/CreditsWindow.cs b/Content.Client/Credits/CreditsWindow.cs index 91616d6f90..a755979ee5 100644 --- a/Content.Client/Credits/CreditsWindow.cs +++ b/Content.Client/Credits/CreditsWindow.cs @@ -35,7 +35,7 @@ namespace Content.Client.Credits { IoCManager.InjectDependencies(this); - Title = Loc.GetString("Credits"); + Title = Loc.GetString("credits-window-title"); var rootContainer = new TabContainer(); @@ -56,9 +56,9 @@ namespace Content.Client.Credits rootContainer.AddChild(patronsList); rootContainer.AddChild(licensesList); - TabContainer.SetTabTitle(patronsList, Loc.GetString("Patrons")); - TabContainer.SetTabTitle(ss14ContributorsList, Loc.GetString("Credits")); - TabContainer.SetTabTitle(licensesList, Loc.GetString("Open Source Licenses")); + TabContainer.SetTabTitle(patronsList, Loc.GetString("credits-window-patrons-tab")); + TabContainer.SetTabTitle(ss14ContributorsList, Loc.GetString("credits-window-ss14contributorslist-tab")); + TabContainer.SetTabTitle(licensesList, Loc.GetString("credits-window-licenses-tab")); PopulatePatronsList(patronsList); PopulateCredits(ss14ContributorsList); @@ -106,7 +106,7 @@ namespace Content.Client.Credits Button patronButton; vBox.AddChild(patronButton = new Button { - Text = "Become a Patron", + Text = Loc.GetString("credits-window-become-patron-button"), HorizontalAlignment = HAlignment.Center }); @@ -163,8 +163,8 @@ namespace Content.Client.Credits SeparationOverride = 20, Children = { - new Label {Text = "Want to get on this list?"}, - (contributeButton = new Button {Text = "Contribute!"}) + new Label {Text = Loc.GetString("credits-window-contributor-encouragement-label") }, + (contributeButton = new Button {Text = Loc.GetString("credits-window-contribute-button")}) } }); @@ -194,10 +194,10 @@ namespace Content.Client.Credits vBox.AddChild(label); } - AddSection("Space Station 14 Contributors", "GitHub.txt"); - AddSection("Space Station 13 Codebases", "SpaceStation13.txt"); - AddSection("Original Space Station 13 Remake Team", "OriginalRemake.txt"); - AddSection("Special Thanks", "SpecialThanks.txt", true); + AddSection(Loc.GetString("credits-window-contributors-section-title"), "GitHub.txt"); + AddSection(Loc.GetString("credits-window-codebases-section-title"), "SpaceStation13.txt"); + AddSection(Loc.GetString("credits-window-original-remake-team-section-title"), "OriginalRemake.txt"); + AddSection(Loc.GetString("credits-window-special-thanks-section-title"), "SpecialThanks.txt", true); contributorsList.AddChild(vBox); @@ -205,6 +205,7 @@ namespace Content.Client.Credits IoCManager.Resolve().OpenUri(UILinks.GitHub); } + // TODO this doesn't looked used anywhere private static IEnumerable Lines(TextReader reader) { while (true) diff --git a/Content.Client/Disposal/UI/DisposalMailingUnitWindow.cs b/Content.Client/Disposal/UI/DisposalMailingUnitWindow.cs index 0602d78b29..13e49516ad 100644 --- a/Content.Client/Disposal/UI/DisposalMailingUnitWindow.cs +++ b/Content.Client/Disposal/UI/DisposalMailingUnitWindow.cs @@ -44,9 +44,9 @@ namespace Content.Client.Disposal.UI { Children = { - new Label {Text = Loc.GetString("State: ")}, + new Label {Text = $"{Loc.GetString("disposal-mailing-unit-window-state-label")} "}, new Control {MinSize = (4, 0)}, - (_unitState = new Label {Text = Loc.GetString("Ready")}) + (_unitState = new Label {Text = Loc.GetString("disposal-mailing-unit-window-ready-state")}) } }, new Control {MinSize = (0, 10)}, @@ -55,7 +55,7 @@ namespace Content.Client.Disposal.UI HorizontalExpand = true, Children = { - new Label {Text = Loc.GetString("Pressure:")}, + new Label {Text = Loc.GetString("disposal-mailing-unit-pressure-label")}, new Control {MinSize = (4, 0)}, (_pressureBar = new ProgressBar { @@ -78,7 +78,7 @@ namespace Content.Client.Disposal.UI HorizontalExpand = true, Children = { - new Label {Text = Loc.GetString("Handle:")}, + new Label {Text = Loc.GetString("disposal-mailing-unit-handle-label")}, new Control { MinSize = (4, 0), @@ -87,7 +87,7 @@ namespace Content.Client.Disposal.UI (Engage = new Button { MinSize = (16, 0), - Text = Loc.GetString("Engage"), + Text = Loc.GetString("disposal-mailing-unit-engage-button"), ToggleMode = true, Disabled = true }) @@ -99,7 +99,7 @@ namespace Content.Client.Disposal.UI HorizontalExpand = true, Children = { - new Label {Text = Loc.GetString("Eject:")}, + new Label {Text = Loc.GetString("disposal-mailing-unit-eject-label")}, new Control { MinSize = (4, 0), @@ -108,7 +108,7 @@ namespace Content.Client.Disposal.UI (Eject = new Button { MinSize = (16, 0), - Text = Loc.GetString("Eject Contents"), + Text = Loc.GetString("disposal-mailing-unit-eject-button"), //HorizontalAlignment = HAlignment.Right }) } @@ -118,7 +118,7 @@ namespace Content.Client.Disposal.UI { Children = { - (Power = new CheckButton {Text = Loc.GetString("Power")}), + (Power = new CheckButton {Text = Loc.GetString("disposal-mailing-unit-power-button")}), } } } @@ -134,7 +134,7 @@ namespace Content.Client.Disposal.UI { new Label { - Text = Loc.GetString("Select a destination:") + Text = Loc.GetString("disposal-mailing-unit-destination-select-label") } } }, @@ -176,7 +176,7 @@ namespace Content.Client.Disposal.UI { new Label { - Text = Loc.GetString("This unit:") + Text = Loc.GetString("disposal-mailing-unit-unit-self-reference") }, new Control { diff --git a/Content.Client/Disposal/UI/DisposalRouterWindow.cs b/Content.Client/Disposal/UI/DisposalRouterWindow.cs index 674b47b509..aed47c39bf 100644 --- a/Content.Client/Disposal/UI/DisposalRouterWindow.cs +++ b/Content.Client/Disposal/UI/DisposalRouterWindow.cs @@ -1,4 +1,4 @@ -using Content.Shared.Disposal.Components; +using Content.Shared.Disposal.Components; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; @@ -18,13 +18,13 @@ namespace Content.Client.Disposal.UI public DisposalRouterWindow() { MinSize = SetSize = (500, 110); - Title = Loc.GetString("Disposal Router"); + Title = Loc.GetString("disposal-router-window-title"); Contents.AddChild(new VBoxContainer { Children = { - new Label {Text = Loc.GetString("Tags:")}, + new Label {Text = Loc.GetString("disposal-router-window-tags-label")}, new Control {MinSize = (0, 10)}, new HBoxContainer { @@ -34,11 +34,11 @@ namespace Content.Client.Disposal.UI { HorizontalExpand = true, MinSize = (320, 0), - ToolTip = Loc.GetString("A comma separated list of tags"), + ToolTip = Loc.GetString("disposal-router-window-tag-input-tooltip"), IsValid = tags => TagRegex.IsMatch(tags) }), new Control {MinSize = (10, 0)}, - (Confirm = new Button {Text = Loc.GetString("Confirm")}) + (Confirm = new Button {Text = Loc.GetString("disposal-router-window-tag-input-confirm-button")}) } } } diff --git a/Content.Client/Disposal/UI/DisposalTaggerWindow.cs b/Content.Client/Disposal/UI/DisposalTaggerWindow.cs index 0dd12081e9..d548a7da30 100644 --- a/Content.Client/Disposal/UI/DisposalTaggerWindow.cs +++ b/Content.Client/Disposal/UI/DisposalTaggerWindow.cs @@ -1,4 +1,4 @@ -using Content.Shared.Disposal.Components; +using Content.Shared.Disposal.Components; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; @@ -18,13 +18,13 @@ namespace Content.Client.Disposal.UI public DisposalTaggerWindow() { MinSize = SetSize = (500, 110); - Title = Loc.GetString("Disposal Tagger"); + Title = Loc.GetString("disposal-tagger-window-title"); Contents.AddChild(new VBoxContainer { Children = { - new Label {Text = Loc.GetString("Tag:")}, + new Label {Text = Loc.GetString("disposal-tagger-window-tag-input-label")}, new Control {MinSize = (0, 10)}, new HBoxContainer { @@ -37,7 +37,7 @@ namespace Content.Client.Disposal.UI IsValid = tag => TagRegex.IsMatch(tag) }), new Control {MinSize = (10, 0)}, - (Confirm = new Button {Text = Loc.GetString("Confirm")}) + (Confirm = new Button {Text = Loc.GetString("disposal-tagger-window-tag-confirm-button")}) } } } diff --git a/Content.Client/DragDrop/DragDropSystem.cs b/Content.Client/DragDrop/DragDropSystem.cs index 25bca35f4d..7051978def 100644 --- a/Content.Client/DragDrop/DragDropSystem.cs +++ b/Content.Client/DragDrop/DragDropSystem.cs @@ -343,7 +343,7 @@ namespace Content.Client.DragDrop if (outOfRange) { - _playerManager.LocalPlayer?.ControlledEntity?.PopupMessage(Loc.GetString("You can't reach there!")); + _playerManager.LocalPlayer?.ControlledEntity?.PopupMessage(Loc.GetString("drag-drop-system-out-of-range-text")); } _dragDropHelper.EndDrag(); diff --git a/Content.Client/Examine/ExamineVerb.cs b/Content.Client/Examine/ExamineVerb.cs index 3d91d2cb31..da6a9b47a7 100644 --- a/Content.Client/Examine/ExamineVerb.cs +++ b/Content.Client/Examine/ExamineVerb.cs @@ -14,7 +14,7 @@ namespace Content.Client.Examine public override void GetData(IEntity user, IEntity target, VerbData data) { data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Examine"); + data.Text = Loc.GetString("examine-verb-name"); data.IconTexture = "/Textures/Interface/VerbIcons/examine.svg.192dpi.png"; } diff --git a/Content.Client/Ghost/GhostGui.cs b/Content.Client/Ghost/GhostGui.cs index 36e0ce9336..1f2d9c289c 100644 --- a/Content.Client/Ghost/GhostGui.cs +++ b/Content.Client/Ghost/GhostGui.cs @@ -13,9 +13,9 @@ namespace Content.Client.Ghost { public class GhostGui : Control { - private readonly Button _returnToBody = new() {Text = Loc.GetString("Return to body")}; - private readonly Button _ghostWarp = new() {Text = Loc.GetString("Ghost Warp")}; - private readonly Button _ghostRoles = new() {Text = Loc.GetString("Ghost Roles")}; + private readonly Button _returnToBody = new() {Text = Loc.GetString("ghost-gui-return-to-body-button") }; + private readonly Button _ghostWarp = new() {Text = Loc.GetString("ghost-gui-ghost-warp-button") }; + private readonly Button _ghostRoles = new() {Text = Loc.GetString("ghost-gui-ghost-roles-button") }; private readonly GhostComponent _owner; public GhostTargetWindow? TargetWindow { get; } @@ -86,7 +86,7 @@ namespace Content.Client.Ghost public GhostTargetWindow(GhostComponent owner, IEntityNetworkManager netManager) { MinSize = SetSize = (300, 450); - Title = "Ghost Warp"; + Title = Loc.GetString("ghost-target-window-title"); _owner = owner; _netManager = netManager; @@ -146,7 +146,7 @@ namespace Content.Client.Ghost { var currentButtonRef = new Button { - Text = $"Warp: {name}", + Text = Loc.GetString("ghost-target-window-current-button", ("name", name)), TextAlign = Label.AlignMode.Right, HorizontalAlignment = HAlignment.Center, VerticalAlignment = VAlignment.Center, diff --git a/Content.Client/Gravity/GravityGeneratorBoundUserInterface.cs b/Content.Client/Gravity/GravityGeneratorBoundUserInterface.cs index cd51dd7696..6dbbe28fb3 100644 --- a/Content.Client/Gravity/GravityGeneratorBoundUserInterface.cs +++ b/Content.Client/Gravity/GravityGeneratorBoundUserInterface.cs @@ -71,7 +71,7 @@ namespace Content.Client.Gravity Owner = ui; - Title = Loc.GetString("Gravity Generator Control"); + Title = Loc.GetString("gravity-generator-window-title"); var vBox = new VBoxContainer { @@ -79,12 +79,12 @@ namespace Content.Client.Gravity }; Status = new Label { - Text = Loc.GetString("Current Status: " + (Owner.IsOn ? "On" : "Off")), + Text = $"{Loc.GetString("gravity-generator-window-status-label")} {Loc.GetString(Owner.IsOn ? "gravity-generator-window-is-on" : "gravity-generator-window-is-off")}", FontColorOverride = Owner.IsOn ? Color.ForestGreen : Color.Red }; Switch = new Button { - Text = Loc.GetString(Owner.IsOn ? "Turn Off" : "Turn On"), + Text = Loc.GetString(Owner.IsOn ? "gravity-generator-window-turn-off-button" : "gravity-generator-window-turn-on-button"), TextAlign = Label.AlignMode.Center, MinSize = new Vector2(150, 60) }; @@ -97,9 +97,9 @@ namespace Content.Client.Gravity public void UpdateButton() { - Status.Text = Loc.GetString("Current Status: " + (Owner.IsOn ? "On" : "Off")); + Status.Text = $"{Loc.GetString("gravity-generator-window-status-label")} {Loc.GetString(Owner.IsOn ? "gravity-generator-window-is-on" : "gravity-generator-window-is-off")}"; Status.FontColorOverride = Owner.IsOn ? Color.ForestGreen : Color.Red; - Switch.Text = Loc.GetString(Owner.IsOn ? "Turn Off" : "Turn On"); + Switch.Text = Loc.GetString(Owner.IsOn ? "gravity-generator-window-turn-off-button" : "gravity-generator-window-turn-on-button"); } } } diff --git a/Content.Client/HUD/GameHud.cs b/Content.Client/HUD/GameHud.cs index c8699f0598..bda10542f3 100644 --- a/Content.Client/HUD/GameHud.cs +++ b/Content.Client/HUD/GameHud.cs @@ -200,7 +200,7 @@ namespace Content.Client.HUD // Escape _buttonEscapeMenu = new TopButton(escapeTexture, EngineKeyFunctions.EscapeMenu, _inputManager) { - ToolTip = Loc.GetString("Open escape menu."), + ToolTip = Loc.GetString("game-hud-open-escape-menu-button-tooltip"), MinSize = (70, 64), StyleClasses = {StyleBase.ButtonOpenRight} }; @@ -212,7 +212,7 @@ namespace Content.Client.HUD // Character _buttonCharacterMenu = new TopButton(characterTexture, ContentKeyFunctions.OpenCharacterMenu, _inputManager) { - ToolTip = Loc.GetString("Open character menu."), + ToolTip = Loc.GetString("game-hud-open-character-menu-button-tooltip"), MinSize = topMinSize, Visible = false, StyleClasses = {StyleBase.ButtonSquare} @@ -225,7 +225,7 @@ namespace Content.Client.HUD // Inventory _buttonInventoryMenu = new TopButton(inventoryTexture, ContentKeyFunctions.OpenInventoryMenu, _inputManager) { - ToolTip = Loc.GetString("Open inventory menu."), + ToolTip = Loc.GetString("game-hud-open-inventory-menu-button-tooltip"), MinSize = topMinSize, Visible = false, StyleClasses = {StyleBase.ButtonSquare} @@ -238,7 +238,7 @@ namespace Content.Client.HUD // Crafting _buttonCraftingMenu = new TopButton(craftingTexture, ContentKeyFunctions.OpenCraftingMenu, _inputManager) { - ToolTip = Loc.GetString("Open crafting menu."), + ToolTip = Loc.GetString("game-hud-open-crafting-menu-button-tooltip"), MinSize = topMinSize, Visible = false, StyleClasses = {StyleBase.ButtonSquare} @@ -251,7 +251,7 @@ namespace Content.Client.HUD // Actions _buttonActionsMenu = new TopButton(actionsTexture, ContentKeyFunctions.OpenActionsMenu, _inputManager) { - ToolTip = Loc.GetString("Open actions menu."), + ToolTip = Loc.GetString("game-hud-open-actions-menu-button-tooltip"), MinSize = topMinSize, Visible = false, StyleClasses = {StyleBase.ButtonSquare} @@ -264,7 +264,7 @@ namespace Content.Client.HUD // Admin _buttonAdminMenu = new TopButton(adminTexture, ContentKeyFunctions.OpenAdminMenu, _inputManager) { - ToolTip = Loc.GetString("Open admin menu."), + ToolTip = Loc.GetString("game-hud-open-admin-menu-button-tooltip"), MinSize = topMinSize, Visible = false, StyleClasses = {StyleBase.ButtonSquare} @@ -277,7 +277,7 @@ namespace Content.Client.HUD // Sandbox _buttonSandboxMenu = new TopButton(sandboxTexture, ContentKeyFunctions.OpenSandboxWindow, _inputManager) { - ToolTip = Loc.GetString("Open sandbox menu."), + ToolTip = Loc.GetString("game-hud-open-sandbox-menu-button-tooltip"), MinSize = topMinSize, Visible = false, StyleClasses = {StyleBase.ButtonSquare} diff --git a/Content.Client/Info/ServerInfo.cs b/Content.Client/Info/ServerInfo.cs index ddea0ba642..66f290a5a0 100644 --- a/Content.Client/Info/ServerInfo.cs +++ b/Content.Client/Info/ServerInfo.cs @@ -1,4 +1,4 @@ -using Content.Client.Changelog; +using Content.Client.Changelog; using Content.Client.Credits; using Content.Client.Links; using Robust.Client.UserInterface; @@ -26,16 +26,16 @@ namespace Content.Client.Info var uriOpener = IoCManager.Resolve(); - var discordButton = new Button {Text = Loc.GetString("Discord")}; + var discordButton = new Button {Text = Loc.GetString("server-info-discord-button") }; discordButton.OnPressed += args => uriOpener.OpenUri(UILinks.Discord); - var websiteButton = new Button {Text = Loc.GetString("Website")}; + var websiteButton = new Button {Text = Loc.GetString("server-info-website-button") }; websiteButton.OnPressed += args => uriOpener.OpenUri(UILinks.Website); - var reportButton = new Button { Text = Loc.GetString("Report Bugs") }; + var reportButton = new Button { Text = Loc.GetString("server-info-report-button") }; reportButton.OnPressed += args => uriOpener.OpenUri(UILinks.BugReport); - var creditsButton = new Button { Text = Loc.GetString("Credits") }; + var creditsButton = new Button { Text = Loc.GetString("server-info-credits-button") }; creditsButton.OnPressed += args => new CreditsWindow().Open(); var changelogButton = new ChangelogButton diff --git a/Content.Client/Inventory/HumanInventoryInterfaceController.cs b/Content.Client/Inventory/HumanInventoryInterfaceController.cs index ebc5147c6b..0c5ed21557 100644 --- a/Content.Client/Inventory/HumanInventoryInterfaceController.cs +++ b/Content.Client/Inventory/HumanInventoryInterfaceController.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Content.Client.HUD; using Content.Client.Items.Managers; @@ -284,7 +284,7 @@ namespace Content.Client.Inventory public HumanInventoryWindow(IGameHud gameHud) { - Title = Loc.GetString("Your Inventory"); + Title = Loc.GetString("human-inventory-window-title"); Resizable = false; var buttonDict = new Dictionary(); diff --git a/Content.Client/Inventory/StrippableBoundUserInterface.cs b/Content.Client/Inventory/StrippableBoundUserInterface.cs index bfc5a89af5..943e3cd16f 100644 --- a/Content.Client/Inventory/StrippableBoundUserInterface.cs +++ b/Content.Client/Inventory/StrippableBoundUserInterface.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Client.Strip; using Content.Shared.Strip.Components; using JetBrains.Annotations; @@ -28,7 +28,7 @@ namespace Content.Client.Inventory { base.Open(); - _strippingMenu = new StrippingMenu($"{Owner.Owner.Name}'s inventory"); + _strippingMenu = new StrippingMenu($"{Loc.GetString("strippable-bound-user-interface-stripping-menu-title",("ownerName", Owner.Owner.Name))}"); _strippingMenu.OnClose += Close; _strippingMenu.OpenCentered(); @@ -76,7 +76,7 @@ namespace Content.Client.Inventory { foreach (var (id, name) in Handcuffs) { - _strippingMenu.AddButton(Loc.GetString("Restraints"), name, (ev) => + _strippingMenu.AddButton(Loc.GetString("strippable-bound-user-interface-stripping-menu-handcuffs-button"), name, (ev) => { SendMessage(new StrippingHandcuffButtonPressed(id)); }); diff --git a/Content.Client/Kitchen/UI/MicrowaveBoundUserInterface.cs b/Content.Client/Kitchen/UI/MicrowaveBoundUserInterface.cs index b1ad64b5f1..252c6aa012 100644 --- a/Content.Client/Kitchen/UI/MicrowaveBoundUserInterface.cs +++ b/Content.Client/Kitchen/UI/MicrowaveBoundUserInterface.cs @@ -90,8 +90,8 @@ namespace Content.Client.Kitchen.UI { var currentlySelectedTimeButton = (Button) _menu.CookTimeButtonVbox.GetChild(cState.ActiveButtonIndex); currentlySelectedTimeButton.Pressed = true; - var label = cState.ActiveButtonIndex <= 0 ? Loc.GetString("INSTANT") : cState.CurrentCookTime.ToString(); - _menu.CookTimeInfoLabel.Text = $"{Loc.GetString("COOK TIME")}: {label}"; + var label = cState.ActiveButtonIndex <= 0 ? Loc.GetString("microwave-bound-user-interface-instant-button") : cState.CurrentCookTime.ToString(); + _menu.CookTimeInfoLabel.Text = $"{Loc.GetString("microwave-bound-user-interface-cook-time-label")}: {label}"; } } @@ -181,7 +181,7 @@ namespace Content.Client.Kitchen.UI SetSize = MinSize = (512, 256); Owner = owner; - Title = Loc.GetString("Microwave"); + Title = Loc.GetString("microwave-menu-title"); DisableCookingPanelOverlay = new PanelContainer { MouseFilter = MouseFilterMode.Stop, @@ -233,14 +233,14 @@ namespace Content.Client.Kitchen.UI StartButton = new Button { - Text = Loc.GetString("Start"), + Text = Loc.GetString("microwave-menu-start-button"), TextAlign = Label.AlignMode.Center, }; EjectButton = new Button { - Text = Loc.GetString("Eject All Contents"), - ToolTip = Loc.GetString("This vaporizes all reagents, but ejects any solids."), + Text = Loc.GetString("microwave-menu-eject-all-text"), + ToolTip = Loc.GetString("microwave-menu-eject-all-tooltip"), TextAlign = Label.AlignMode.Center, }; @@ -266,7 +266,7 @@ namespace Content.Client.Kitchen.UI { var newButton = new MicrowaveCookTimeButton { - Text = index <= 0 ? Loc.GetString("INSTANT") : index.ToString(), + Text = index <= 0 ? Loc.GetString("microwave-menu-instant-button") : index.ToString(), CookTime = (uint)index, TextAlign = Label.AlignMode.Center, ToggleMode = true, @@ -286,7 +286,7 @@ namespace Content.Client.Kitchen.UI CookTimeInfoLabel = new Label { - Text = Loc.GetString("COOK TIME: 1"), + Text = Loc.GetString("microwave-menu-cook-time-label", ("time", 1)), // TODO, hardcoded value Align = Label.AlignMode.Center, Modulate = Color.White, VerticalAlignment = VAlignment.Center diff --git a/Content.Client/Kitchen/UI/ReagentGrinderBoundUserInterface.cs b/Content.Client/Kitchen/UI/ReagentGrinderBoundUserInterface.cs index b7af649c7b..a9e9b5640e 100644 --- a/Content.Client/Kitchen/UI/ReagentGrinderBoundUserInterface.cs +++ b/Content.Client/Kitchen/UI/ReagentGrinderBoundUserInterface.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Shared.Chemistry.Reagent; using Content.Shared.Kitchen.Components; using Robust.Client.GameObjects; @@ -146,7 +146,7 @@ namespace Content.Client.Kitchen.UI //Looks like we have a beaker attached. if (reagents.Count <= 0) { - _menu.BeakerContentBox.BoxContents.AddItem(Loc.GetString("Empty")); + _menu.BeakerContentBox.BoxContents.AddItem(Loc.GetString("grinder-menu-beaker-content-box-is-empty")); } else { @@ -236,7 +236,7 @@ namespace Content.Client.Kitchen.UI { SetSize = MinSize = (512, 256); Owner = owner; - Title = Loc.GetString("All-In-One Grinder 3000"); + Title = Loc.GetString("grinder-menu-title"); var hSplit = new HBoxContainer(); @@ -247,14 +247,14 @@ namespace Content.Client.Kitchen.UI GrindButton = new Button { - Text = Loc.GetString("Grind"), + Text = Loc.GetString("grinder-menu-grind-button"), TextAlign = Label.AlignMode.Center, MinSize = (64, 64) }; JuiceButton = new Button { - Text = Loc.GetString("Juice"), + Text = Loc.GetString("grinder-menu-juice-button"), TextAlign = Label.AlignMode.Center, MinSize = (64, 64) }; @@ -267,7 +267,7 @@ namespace Content.Client.Kitchen.UI }); vBoxGrindJuiceButtonPanel.AddChild(JuiceButton); - ChamberContentBox = new LabelledContentBox(Loc.GetString("Chamber"), Loc.GetString("Eject Contents")) + ChamberContentBox = new LabelledContentBox(Loc.GetString("grinder-menu-chamber-content-box-label"), Loc.GetString("grinder-menu-chamber-content-box-button")) { //Modulate = Color.Red, VerticalExpand = true, @@ -276,7 +276,7 @@ namespace Content.Client.Kitchen.UI }; - BeakerContentBox = new LabelledContentBox(Loc.GetString("Beaker"), Loc.GetString("Eject Beaker")) + BeakerContentBox = new LabelledContentBox(Loc.GetString("grinder-menu-beaker-content-box-label"), Loc.GetString("grinder-menu-beaker-content-box-button")) { //Modulate = Color.Blue, VerticalExpand = true, diff --git a/Content.Client/LateJoin/LateJoinGui.cs b/Content.Client/LateJoin/LateJoinGui.cs index 0f0bfeed02..780461f5bc 100644 --- a/Content.Client/LateJoin/LateJoinGui.cs +++ b/Content.Client/LateJoin/LateJoinGui.cs @@ -35,8 +35,8 @@ namespace Content.Client.LateJoin IoCManager.InjectDependencies(this); var gameTicker = EntitySystem.Get(); + Title = Loc.GetString("late-join-gui-title"); - Title = Loc.GetString("Late Join"); var jobList = new VBoxContainer(); var vBox = new VBoxContainer @@ -67,7 +67,8 @@ namespace Content.Client.LateJoin category = new VBoxContainer { Name = department, - ToolTip = Loc.GetString("Jobs in the {0} department", department) + ToolTip = Loc.GetString("late-join-gui-jobs-amount-in-department-tooltip", + ("departmentName", department)) }; if (firstCategory) @@ -89,7 +90,7 @@ namespace Content.Client.LateJoin { new Label { - Text = Loc.GetString("{0} jobs", department) + Text = Loc.GetString("late-join-gui-department-jobs-label", ("departmentName", department)) } } }); diff --git a/Content.Client/Lathe/UI/LatheQueueMenu.cs b/Content.Client/Lathe/UI/LatheQueueMenu.cs index 135f72fb2a..3d5ee6a0b5 100644 --- a/Content.Client/Lathe/UI/LatheQueueMenu.cs +++ b/Content.Client/Lathe/UI/LatheQueueMenu.cs @@ -91,7 +91,7 @@ namespace Content.Client.Lathe.UI { _icon.Texture = Texture.Transparent; _nameLabel.Text = "-------"; - _description.Text = "Not producing anything."; + _description.Text = "lathequeue-menu-not-producing-text"; } public void PopulateList() diff --git a/Content.Client/Launcher/LauncherConnectingGui.xaml.cs b/Content.Client/Launcher/LauncherConnectingGui.xaml.cs index f679c73e2d..b6876121ba 100644 --- a/Content.Client/Launcher/LauncherConnectingGui.xaml.cs +++ b/Content.Client/Launcher/LauncherConnectingGui.xaml.cs @@ -1,4 +1,4 @@ -using Content.Client.Stylesheets; +using Content.Client.Stylesheets; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; diff --git a/Content.Client/Lobby/LobbyState.cs b/Content.Client/Lobby/LobbyState.cs index 8c21452bdf..6689c0f7c9 100644 --- a/Content.Client/Lobby/LobbyState.cs +++ b/Content.Client/Lobby/LobbyState.cs @@ -142,7 +142,7 @@ namespace Content.Client.Lobby var gameTicker = EntitySystem.Get(); if (gameTicker.IsGameStarted) { - _lobby.StartTime.Text = ""; + _lobby.StartTime.Text = string.Empty; return; } @@ -150,7 +150,7 @@ namespace Content.Client.Lobby if (gameTicker.Paused) { - text = Loc.GetString("Paused"); + text = Loc.GetString("lobby-state-paused"); } else { @@ -158,7 +158,7 @@ namespace Content.Client.Lobby var seconds = difference.TotalSeconds; if (seconds < 0) { - text = Loc.GetString(seconds < -5 ? "Right Now?" : "Right Now"); + text = Loc.GetString(seconds < -5 ? "lobby-state-right-now-question" : "lobby-state-right-now-confirmation"); } else { @@ -166,7 +166,7 @@ namespace Content.Client.Lobby } } - _lobby.StartTime.Text = Loc.GetString("Round Starts In: {0}", text); + _lobby.StartTime.Text = Loc.GetString("lobby-state-round-start-countdown-text", ("timeLeft", text)); } private void PlayerManagerOnPlayerListUpdated(object? sender, EventArgs e) @@ -211,14 +211,14 @@ namespace Content.Client.Lobby if (gameTicker.IsGameStarted) { - _lobby.ReadyButton.Text = Loc.GetString("Join"); + _lobby.ReadyButton.Text = Loc.GetString("lobby-state-ready-button-join-state"); _lobby.ReadyButton.ToggleMode = false; _lobby.ReadyButton.Pressed = false; } else { - _lobby.StartTime.Text = ""; - _lobby.ReadyButton.Text = Loc.GetString("Ready Up"); + _lobby.StartTime.Text = string.Empty; + _lobby.ReadyButton.Text = Loc.GetString("lobby-state-ready-button-ready-up-state"); _lobby.ReadyButton.ToggleMode = true; _lobby.ReadyButton.Disabled = false; _lobby.ReadyButton.Pressed = gameTicker.AreWeReady; @@ -237,7 +237,7 @@ namespace Content.Client.Lobby foreach (var session in _playerManager.Sessions.OrderBy(s => s.Name)) { - var readyState = ""; + var readyState = string.Empty; // Don't show ready state if we're ingame if (!gameTicker.IsGameStarted) { @@ -249,10 +249,10 @@ namespace Content.Client.Lobby readyState = status switch { - LobbyPlayerStatus.NotReady => Loc.GetString("Not Ready"), - LobbyPlayerStatus.Ready => Loc.GetString("Ready"), - LobbyPlayerStatus.Observer => Loc.GetString("Observer"), - _ => "", + LobbyPlayerStatus.NotReady => Loc.GetString("lobby-state-player-status-not-ready"), + LobbyPlayerStatus.Ready => Loc.GetString("lobby-state-player-status-ready"), + LobbyPlayerStatus.Observer => Loc.GetString("lobby-state-player-status-observer"), + _ => string.Empty, }; } diff --git a/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs b/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs index 73dc21fde9..06d23ec908 100644 --- a/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs +++ b/Content.Client/Lobby/UI/LobbyCharacterPreviewPanel.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Client.CharacterAppearance; using Content.Client.HUD.UI; using Content.Client.Inventory; @@ -35,12 +35,12 @@ namespace Content.Client.Lobby.UI var header = new NanoHeading { - Text = Loc.GetString("Character") + Text = Loc.GetString("lobby-character-preview-panel-header") }; CharacterSetupButton = new Button { - Text = Loc.GetString("Customize"), + Text = Loc.GetString("lobby-character-preview-panel-character-setup-button"), HorizontalAlignment = HAlignment.Left }; @@ -55,7 +55,7 @@ namespace Content.Client.Lobby.UI vBox.AddChild(header); - _unloaded = new Label {Text = "Your character preferences have not yet loaded, please stand by."}; + _unloaded = new Label {Text = Loc.GetString("lobby-character-preview-panel-unloaded-preferences-label")}; _loaded = new VBoxContainer {Visible = false}; @@ -147,7 +147,7 @@ namespace Content.Client.Lobby.UI foreach (var slot in AllSlots) { var itemType = gear.GetGear(slot, profile); - if (itemType != "") + if (itemType != string.Empty) { var item = entityMan.SpawnEntity(itemType, MapCoordinates.Nullspace); inventory.SetSlotVisuals(slot, item); diff --git a/Content.Client/MainMenu/MainMenu.cs b/Content.Client/MainMenu/MainMenu.cs index 5cf51e54ba..3cd942d225 100644 --- a/Content.Client/MainMenu/MainMenu.cs +++ b/Content.Client/MainMenu/MainMenu.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Text.RegularExpressions; using Content.Client.Changelog; using Content.Client.EscapeMenu.UI; @@ -105,8 +105,8 @@ namespace Content.Client.MainMenu { var invalidReason = Loc.GetString(reason.ToText()); _userInterfaceManager.Popup( - Loc.GetString("Invalid username:\n{0}", invalidReason), - Loc.GetString("Invalid Username")); + Loc.GetString("main-menu-invalid-username-with-reason", ("invalidReason", invalidReason)), + Loc.GetString("main-menu-invalid-username")); return; } @@ -182,7 +182,7 @@ namespace Content.Client.MainMenu private void _onConnectFailed(object? _, NetConnectFailArgs args) { - _userInterfaceManager.Popup($"Failed to connect:\n{args.Reason}"); + _userInterfaceManager.Popup(Loc.GetString("main-menu-failed-to-connect",("reason", args.Reason))); _netManager.ConnectFailed -= _onConnectFailed; _setConnectingState(false); } @@ -242,12 +242,12 @@ namespace Content.Client.MainMenu var userNameHBox = new HBoxContainer {SeparationOverride = 4}; vBox.AddChild(userNameHBox); - userNameHBox.AddChild(new Label {Text = "Username:"}); + userNameHBox.AddChild(new Label {Text = Loc.GetString("main-menu-username-label") }); var currentUserName = _configurationManager.GetCVar(CVars.PlayerName); UserNameBox = new LineEdit { - Text = currentUserName, PlaceHolder = "Username", + Text = currentUserName, PlaceHolder = Loc.GetString("main-menu-username-text"), HorizontalExpand = true }; @@ -255,12 +255,12 @@ namespace Content.Client.MainMenu JoinPublicServerButton = new Button { - Text = "Join Public Server", + Text = Loc.GetString("main-menu-join-public-server-button"), StyleIdentifier = "mainMenu", TextAlign = Label.AlignMode.Center, #if !FULL_RELEASE Disabled = true, - ToolTip = "Cannot connect to public server with a debug build." + ToolTip = Loc.GetString("main-menu-join-public-server-button-tooltip") #endif }; @@ -280,7 +280,7 @@ namespace Content.Client.MainMenu DirectConnectButton = new Button { - Text = "Direct Connect", + Text = Loc.GetString("main-menu-direct-connect-button"), TextAlign = Label.AlignMode.Center, StyleIdentifier = "mainMenu", }; @@ -292,7 +292,7 @@ namespace Content.Client.MainMenu OptionsButton = new Button { - Text = "Options", + Text = Loc.GetString("main-menu-options-button"), TextAlign = Label.AlignMode.Center, StyleIdentifier = "mainMenu", }; @@ -301,7 +301,7 @@ namespace Content.Client.MainMenu QuitButton = new Button { - Text = "Quit", + Text = Loc.GetString("main-menu-quit-button"), TextAlign = Label.AlignMode.Center, StyleIdentifier = "mainMenu", }; diff --git a/Content.Client/MedicalScanner/UI/MedicalScannerWindow.cs b/Content.Client/MedicalScanner/UI/MedicalScannerWindow.cs index de5fbaa967..5a51ee6f3f 100644 --- a/Content.Client/MedicalScanner/UI/MedicalScannerWindow.cs +++ b/Content.Client/MedicalScanner/UI/MedicalScannerWindow.cs @@ -23,11 +23,11 @@ namespace Content.Client.MedicalScanner.UI { (ScanButton = new Button { - Text = Loc.GetString("Scan and Save DNA") + Text = Loc.GetString("medical-scanner-window-save-button-text") }), (_diagnostics = new Label { - Text = "" + Text = string.Empty }) } }); @@ -41,17 +41,17 @@ namespace Content.Client.MedicalScanner.UI !state.HasDamage() || !IoCManager.Resolve().TryGetEntity(state.Entity.Value, out var entity)) { - _diagnostics.Text = Loc.GetString("No patient data."); + _diagnostics.Text = Loc.GetString("medical-scanner-window-no-patient-data-text"); ScanButton.Disabled = true; SetSize = (250, 100); } else { - text.Append($"{entity.Name}{Loc.GetString("'s health:")}\n"); + text.Append($"{Loc.GetString("medical-scanner-window-entity-health-text", ("entityName", entity.Name))}\n"); foreach (var (@class, classAmount) in state.DamageClasses) { - text.Append($"\n{Loc.GetString("{0}: {1}", @class, classAmount)}"); + text.Append($"\n{Loc.GetString("medical-scanner-window-damage-class-text", ("damageClass", @class), ("amount", classAmount))}"); foreach (var type in @class.ToTypes()) { @@ -60,10 +60,10 @@ namespace Content.Client.MedicalScanner.UI continue; } - text.Append($"\n- {Loc.GetString("{0}: {1}", type, typeAmount)}"); + text.Append($"\n- {Loc.GetString("medical-scanner-window-damage-type-text", ("damageType",type) ,("amount", typeAmount))}"); } - text.Append("\n"); + text.Append('\n'); } _diagnostics.Text = text.ToString(); diff --git a/Content.Client/PDA/PDABoundUserInterface.cs b/Content.Client/PDA/PDABoundUserInterface.cs index e1016d1d32..b02cdfb52a 100644 --- a/Content.Client/PDA/PDABoundUserInterface.cs +++ b/Content.Client/PDA/PDABoundUserInterface.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Client.Examine; using Content.Client.Message; using Content.Shared.PDA; @@ -65,7 +65,7 @@ namespace Content.Client.PDA { if (_menu.CurrentLoggedInAccount?.DataBalance < listing.Price) { - _failPopup = new PDAMenuPopup(Loc.GetString("Insufficient funds!")); + _failPopup = new PDAMenuPopup(Loc.GetString("pda-bound-user-interface-insufficient-funds-popup")); _userInterfaceManager.ModalRoot.AddChild(_failPopup); _failPopup.Open(UIBox2.FromDimensions(_menu.Position.X + 150, _menu.Position.Y + 60, 156, 24)); _menu.OnClose += () => @@ -106,10 +106,10 @@ namespace Content.Client.PDA ("ActualOwnerName", msg.PDAOwnerInfo.ActualOwnerName))); } - + if (msg.PDAOwnerInfo.IdOwner != null || msg.PDAOwnerInfo.JobTitle != null) { - _menu.IDInfoLabel.SetMarkup(Loc.GetString("comp-pda-ui", + _menu.IDInfoLabel.SetMarkup(Loc.GetString("comp-pda-ui", ("Owner",msg.PDAOwnerInfo.IdOwner ?? "Unknown"), ("JobTitle",msg.PDAOwnerInfo.JobTitle ?? "Unassigned"))); } @@ -126,8 +126,9 @@ namespace Content.Client.PDA _menu.CurrentLoggedInAccount = msg.Account; var balance = msg.Account.DataBalance; var weightedColor = GetWeightedColorString(balance); - _menu.BalanceInfo.SetMarkup(Loc.GetString("TC Balance: [color={0}]{1}[/color]", weightedColor, balance)); - + _menu.BalanceInfo.SetMarkup(Loc.GetString("pda-bound-user-interface-tc-balance-popup", + ("weightedColor",weightedColor), + ("balance",balance))); } if (msg.Listings != null) @@ -284,7 +285,7 @@ namespace Content.Client.PDA _owner = owner; _prototypeManager = prototypeManager; - Title = Loc.GetString("PDA"); + Title = Loc.GetString("comp-pda-ui-menu-title"); #region MAIN_MENU_TAB //Main menu @@ -299,13 +300,13 @@ namespace Content.Client.PDA EjectIDButton = new Button { - Text = Loc.GetString("Eject ID"), + Text = Loc.GetString("comp-pda-ui-eject-id-button"), HorizontalAlignment = HAlignment.Center, VerticalAlignment = VAlignment.Center }; EjectPenButton = new Button { - Text = Loc.GetString("Eject Pen"), + Text = Loc.GetString("comp-pda-ui-eject-pen-button"), HorizontalAlignment = HAlignment.Center, VerticalAlignment = VAlignment.Center }; @@ -330,7 +331,7 @@ namespace Content.Client.PDA FlashLightToggleButton = new Button { - Text = Loc.GetString("Toggle Flashlight"), + Text = Loc.GetString("comp-pda-ui-toggle-flashlight-button"), ToggleMode = true, }; @@ -439,9 +440,9 @@ namespace Content.Client.PDA }; //Add all the tabs to the Master container. - MasterTabContainer.SetTabTitle(0, Loc.GetString("Main Menu")); + MasterTabContainer.SetTabTitle(0, Loc.GetString("pda-bound-user-interface-main-menu-tab-title")); MasterTabContainer.AddChild(UplinkTabContainer); - MasterTabContainer.SetTabTitle(1, Loc.GetString("Uplink")); + MasterTabContainer.SetTabTitle(1, Loc.GetString("pda-bound-user-interface-uplink-tab-title")); Contents.AddChild(MasterTabContainer); } diff --git a/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorControlMenu.cs b/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorControlMenu.cs index 3cbdf4b2ef..d6da1a6434 100644 --- a/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorControlMenu.cs +++ b/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorControlMenu.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Client.HUD.UI; using Content.Client.Resources; using Content.Client.Stylesheets; @@ -109,7 +109,7 @@ namespace Content.Client.ParticleAccelerator.UI _offButton = new Button { ToggleMode = false, - Text = "Off", + Text = Loc.GetString("particle-accelerator-control-menu-off-button"), StyleClasses = {StyleBase.ButtonOpenRight}, }; _offButton.OnPressed += args => owner.SendEnableMessage(false); @@ -117,7 +117,7 @@ namespace Content.Client.ParticleAccelerator.UI _onButton = new Button { ToggleMode = false, - Text = "On", + Text = Loc.GetString("particle-accelerator-control-menu-on-button"), StyleClasses = {StyleBase.ButtonOpenLeft}, }; _onButton.OnPressed += args => owner.SendEnableMessage(true); @@ -134,7 +134,7 @@ namespace Content.Client.ParticleAccelerator.UI { HorizontalAlignment = HAlignment.Center, StyleClasses = {StyleBase.StyleClassLabelSubText}, - Text = Loc.GetString("Refer to p.132 of service manual") + Text = Loc.GetString("particle-accelerator-control-menu-service-manual-reference") }; _drawLabel = new Label(); var imgSize = new Vector2(32, 32); @@ -149,7 +149,7 @@ namespace Content.Client.ParticleAccelerator.UI { new Label { - Text = Loc.GetString("Mark 2 Particle Accelerator"), + Text = Loc.GetString("particle-accelerator-control-menu-device-version-label"), FontOverride = font, FontColorOverride = StyleNano.NanoGold, }, @@ -183,7 +183,7 @@ namespace Content.Client.ParticleAccelerator.UI { new Label { - Text = Loc.GetString("Power: "), + Text = Loc.GetString("particle-accelerator-control-menu-power-label") + " ", HorizontalExpand = true, HorizontalAlignment = HAlignment.Left, }, @@ -197,7 +197,7 @@ namespace Content.Client.ParticleAccelerator.UI { new Label { - Text = Loc.GetString("Strength: "), + Text = Loc.GetString("particle-accelerator-control-menu-strength-label") + " ", HorizontalExpand = true, HorizontalAlignment = HAlignment.Left, }, @@ -219,7 +219,7 @@ namespace Content.Client.ParticleAccelerator.UI { new Label { - Text = Loc.GetString("PARTICLE STRENGTH\nLIMITER FAILURE"), + Text = Loc.GetString("particle-accelerator-control-menu-alarm-control"), FontColorOverride = Color.Red, Align = Label.AlignMode.Center }, @@ -272,7 +272,7 @@ namespace Content.Client.ParticleAccelerator.UI }, (_scanButton = new Button { - Text = Loc.GetString("Scan Parts"), + Text = Loc.GetString("particle-accelerator-control-menu-scan-parts-button"), HorizontalAlignment = HAlignment.Center }) } @@ -286,7 +286,7 @@ namespace Content.Client.ParticleAccelerator.UI new Label { Margin = new Thickness(4, 4, 0, 4), - Text = Loc.GetString("Ensure containment field is active before operation"), + Text = Loc.GetString("particle-accelerator-control-menu-check-containment-field-warning"), HorizontalAlignment = HAlignment.Center, StyleClasses = {StyleBase.StyleClassLabelSubText}, } @@ -299,7 +299,7 @@ namespace Content.Client.ParticleAccelerator.UI { new Label { - Text = "FOO-BAR-BAZ", + Text = Loc.GetString("particle-accelerator-control-menu-foo-bar-baz"), StyleClasses = {StyleBase.StyleClassLabelSubText} } } @@ -369,7 +369,9 @@ namespace Content.Client.ParticleAccelerator.UI _assembled = uiState.Assembled; UpdateUI(uiState.Assembled, uiState.InterfaceBlock, uiState.Enabled, uiState.WirePowerBlock); - _statusLabel.Text = Loc.GetString($"Status: {(uiState.Assembled ? "Operational" : "Incomplete")}"); + _statusLabel.Text = Loc.GetString("particle-accelerator-control-menu-status-label", + ("status", Loc.GetString(uiState.Assembled ? "particle-accelerator-control-menu-status-operational" : + "particle-accelerator-control-menu-status-incomplete"))); UpdatePowerState(uiState.State, uiState.Enabled, uiState.Assembled, uiState.MaxLevel); UpdatePreview(uiState); @@ -433,7 +435,7 @@ namespace Content.Client.ParticleAccelerator.UI if (!_assembled) { - _drawLabel.Text = Loc.GetString("Draw: N/A"); + _drawLabel.Text = Loc.GetString("particle-accelerator-control-menu-draw-not-available"); return; } @@ -446,7 +448,9 @@ namespace Content.Client.ParticleAccelerator.UI watts = (int) (_lastDraw + val * 5); } - _drawLabel.Text = Loc.GetString("Draw: {0:##,##0}/{1:##,##0} W", watts, _lastReceive); + _drawLabel.Text = Loc.GetString("particle-accelerator-control-menu-draw", + ("watts", $"{watts:##,##0}"), + ("lastReceive", $"{_lastReceive:##,##0}")); } private sealed class PASegmentControl : Control diff --git a/Content.Client/Preferences/UI/CharacterSetupGui.cs b/Content.Client/Preferences/UI/CharacterSetupGui.cs index eec408ffd0..ee76b25e4d 100644 --- a/Content.Client/Preferences/UI/CharacterSetupGui.cs +++ b/Content.Client/Preferences/UI/CharacterSetupGui.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Client.CharacterAppearance; using Content.Client.Lobby.UI; using Content.Client.Parallax; @@ -74,7 +74,7 @@ namespace Content.Client.Preferences.UI new Label { Margin = new Thickness(8, 0, 0, 0), - Text = Loc.GetString("Character Setup"), + Text = Loc.GetString("character-setup-gui-character-setup-label"), StyleClasses = {StyleNano.StyleClassLabelHeadingBigger}, VAlign = Label.VAlignMode.Center, }, @@ -82,12 +82,12 @@ namespace Content.Client.Preferences.UI { HorizontalExpand = true, HorizontalAlignment = HAlignment.Right, - Text = Loc.GetString("Save"), + Text = Loc.GetString("character-setup-gui-character-setup-save-button"), StyleClasses = {StyleNano.StyleClassButtonBig}, }), (CloseButton = new Button { - Text = Loc.GetString("Close"), + Text = Loc.GetString("character-setup-gui-character-setup-close-button"), StyleClasses = {StyleNano.StyleClassButtonBig}, }) } @@ -125,7 +125,7 @@ namespace Content.Client.Preferences.UI _createNewCharacterButton = new Button { - Text = "Create new slot...", + Text = Loc.GetString("character-setup-gui-create-new-character-button"), }; _createNewCharacterButton.OnPressed += args => { @@ -177,7 +177,8 @@ namespace Content.Client.Preferences.UI } _createNewCharacterButton.ToolTip = - $"A maximum of {_preferencesManager.Settings!.MaxCharacterSlots} characters are allowed."; + Loc.GetString("character-setup-gui-create-new-character-button-tooltip", + ("maxCharacters", _preferencesManager.Settings!.MaxCharacterSlots)); foreach (var (slot, character) in _preferencesManager.Preferences!.Characters) { @@ -261,7 +262,7 @@ namespace Content.Client.Preferences.UI }; var deleteButton = new Button { - Text = "Delete", + Text = Loc.GetString("character-setup-gui-character-picker-button-delete-button"), Visible = !isSelectedCharacter, }; deleteButton.OnPressed += _ => diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.cs b/Content.Client/Preferences/UI/HumanoidProfileEditor.cs index 94bbb2944f..a16e28819c 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.cs +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.cs @@ -97,7 +97,7 @@ namespace Content.Client.Preferences.UI var randomizePanel = HighlightedContainer(); var randomizeEverythingButton = new Button { - Text = Loc.GetString("Randomize everything") + Text = Loc.GetString("humanoid-profile-editor-randomize-everything-button") }; randomizeEverythingButton.OnPressed += args => { RandomizeEverything(); }; randomizePanel.AddChild(randomizeEverythingButton); @@ -112,7 +112,7 @@ namespace Content.Client.Preferences.UI { VerticalExpand = true }; - var nameLabel = new Label { Text = Loc.GetString("Name:") }; + var nameLabel = new Label { Text = Loc.GetString("humanoid-profile-editor-name-label") }; _nameEdit = new LineEdit { MinSize = (270, 0), @@ -121,7 +121,7 @@ namespace Content.Client.Preferences.UI _nameEdit.OnTextChanged += args => { SetName(args.Text); }; var nameRandomButton = new Button { - Text = Loc.GetString("Randomize"), + Text = Loc.GetString("humanoid-profile-editor-name-random-button"), }; nameRandomButton.OnPressed += args => RandomizeName(); nameHBox.AddChild(nameLabel); @@ -153,7 +153,7 @@ namespace Content.Client.Preferences.UI } }; tabContainer.AddChild(appearanceVBox); - tabContainer.SetTabTitle(0, Loc.GetString("Appearance")); + tabContainer.SetTabTitle(0, Loc.GetString("humanoid-profile-editor-appearance-tab")); var sexAndAgeRow = new HBoxContainer { @@ -166,13 +166,13 @@ namespace Content.Client.Preferences.UI var sexPanel = HighlightedContainer(); var sexHBox = new HBoxContainer(); - var sexLabel = new Label { Text = Loc.GetString("Sex:") }; + var sexLabel = new Label { Text = Loc.GetString("humanoid-profile-editor-sex-label") }; var sexButtonGroup = new ButtonGroup(); _sexMaleButton = new Button { - Text = Loc.GetString("Male"), + Text = Loc.GetString("humanoid-profile-editor-sex-male-button"), Group = sexButtonGroup }; _sexMaleButton.OnPressed += args => @@ -187,7 +187,7 @@ namespace Content.Client.Preferences.UI _sexFemaleButton = new Button { - Text = Loc.GetString("Female"), + Text = Loc.GetString("humanoid-profile-editor-sex-female-button"), Group = sexButtonGroup }; _sexFemaleButton.OnPressed += _ => @@ -213,7 +213,7 @@ namespace Content.Client.Preferences.UI var agePanel = HighlightedContainer(); var ageHBox = new HBoxContainer(); - var ageLabel = new Label { Text = Loc.GetString("Age:") }; + var ageLabel = new Label { Text = Loc.GetString("humanoid-profile-editor-age-label") }; _ageEdit = new LineEdit { MinSize = (40, 0) }; _ageEdit.OnTextChanged += args => { @@ -232,14 +232,14 @@ namespace Content.Client.Preferences.UI var genderPanel = HighlightedContainer(); var genderHBox = new HBoxContainer(); - var genderLabel = new Label { Text = Loc.GetString("Pronouns:") }; + var genderLabel = new Label { Text = Loc.GetString("humanoid-profile-editor-pronouns-label") }; _genderButton = new OptionButton(); - _genderButton.AddItem(Loc.GetString("He / Him"), (int) Gender.Male); - _genderButton.AddItem(Loc.GetString("She / Her"), (int) Gender.Female); - _genderButton.AddItem(Loc.GetString("They / Them"), (int) Gender.Epicene); - _genderButton.AddItem(Loc.GetString("It / It"), (int) Gender.Neuter); + _genderButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-male-text"), (int) Gender.Male); + _genderButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-female-text"), (int) Gender.Female); + _genderButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-epicene-text"), (int) Gender.Epicene); + _genderButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-neuter-text"), (int) Gender.Neuter); _genderButton.OnItemSelected += args => { @@ -316,12 +316,12 @@ namespace Content.Client.Preferences.UI var clothingPanel = HighlightedContainer(); var clothingHBox = new HBoxContainer(); - var clothingLabel = new Label { Text = Loc.GetString("Clothing:") }; + var clothingLabel = new Label { Text = Loc.GetString("humanoid-profile-editor-clothing-label") }; _clothingButton = new OptionButton(); - _clothingButton.AddItem(Loc.GetString("Jumpsuit"), (int) ClothingPreference.Jumpsuit); - _clothingButton.AddItem(Loc.GetString("Jumpskirt"), (int) ClothingPreference.Jumpskirt); + _clothingButton.AddItem(Loc.GetString("humanoid-profile-editor-preference-jumpsuit"), (int) ClothingPreference.Jumpsuit); + _clothingButton.AddItem(Loc.GetString("humanoid-profile-editor-preference-jumpskirt"), (int) ClothingPreference.Jumpskirt); _clothingButton.OnItemSelected += args => { @@ -340,13 +340,13 @@ namespace Content.Client.Preferences.UI var backpackPanel = HighlightedContainer(); var backpackHBox = new HBoxContainer(); - var backpackLabel = new Label { Text = Loc.GetString("Backpack:") }; + var backpackLabel = new Label { Text = Loc.GetString("humanoid-profile-editor-backpack-label") }; _backpackButton = new OptionButton(); - _backpackButton.AddItem(Loc.GetString("Backpack"), (int) BackpackPreference.Backpack); - _backpackButton.AddItem(Loc.GetString("Satchel"), (int) BackpackPreference.Satchel); - _backpackButton.AddItem(Loc.GetString("Duffelbag"), (int) BackpackPreference.Duffelbag); + _backpackButton.AddItem(Loc.GetString("humanoid-profile-editor-preference-backpack"), (int) BackpackPreference.Backpack); + _backpackButton.AddItem(Loc.GetString("humanoid-profile-editor-preference-satchel"), (int) BackpackPreference.Satchel); + _backpackButton.AddItem(Loc.GetString("humanoid-profile-editor-preference-duffelbag"), (int) BackpackPreference.Duffelbag); _backpackButton.OnItemSelected += args => { @@ -365,7 +365,7 @@ namespace Content.Client.Preferences.UI var eyesPanel = HighlightedContainer(); var eyesVBox = new VBoxContainer(); - var eyesLabel = new Label { Text = Loc.GetString("Eye color:") }; + var eyesLabel = new Label { Text = Loc.GetString("humanoid-profile-editor-eyes-label") }; _eyesPicker = new EyeColorPicker(); @@ -409,14 +409,14 @@ namespace Content.Client.Preferences.UI tabContainer.AddChild(jobVBox); - tabContainer.SetTabTitle(1, Loc.GetString("Jobs")); + tabContainer.SetTabTitle(1, Loc.GetString("humanoid-profile-editor-jobs-tab")); _preferenceUnavailableButton.AddItem( - Loc.GetString("Stay in lobby if preference unavailable."), + Loc.GetString("humanoid-profile-editor-preference-unavailable-stay-in-lobby-button"), (int) PreferenceUnavailableMode.StayInLobby); _preferenceUnavailableButton.AddItem( - Loc.GetString("Be an {0} if preference unavailable.", - Loc.GetString(SharedGameTicker.OverflowJobName)), + Loc.GetString("humanoid-profile-editor-preference-unavailable-spawn-as-overflow-button", + ("overflowJob", Loc.GetString(SharedGameTicker.OverflowJobName))), (int) PreferenceUnavailableMode.SpawnAsOverflow); _preferenceUnavailableButton.OnItemSelected += args => @@ -441,7 +441,8 @@ namespace Content.Client.Preferences.UI category = new VBoxContainer { Name = department, - ToolTip = Loc.GetString("Jobs in the {0} department", department) + ToolTip = Loc.GetString("humanoid-profile-editor-jobs-amount-in-department-tooltip", + ("departmentName", department)) }; if (firstCategory) @@ -463,7 +464,8 @@ namespace Content.Client.Preferences.UI { new Label { - Text = Loc.GetString("{0} jobs", department) + Text = Loc.GetString("humanoid-profile-editor-department-jobs-label", + ("departmentName" ,department)) } } }); @@ -526,7 +528,7 @@ namespace Content.Client.Preferences.UI tabContainer.AddChild(antagVBox); - tabContainer.SetTabTitle(2, Loc.GetString("Antags")); + tabContainer.SetTabTitle(2, Loc.GetString("humanoid-profile-editor-antags-tab")); _antagPreferences = new List(); @@ -559,15 +561,15 @@ namespace Content.Client.Preferences.UI var importExportHBox = new HBoxContainer(); var importButton = new Button { - Text = Loc.GetString("Import"), + Text = Loc.GetString("humanoid-profile-editor-import-button"), Disabled = true, - ToolTip = "Not yet implemented!" + ToolTip = Loc.GetString("generic-not-yet-implemented") }; var exportButton = new Button { - Text = Loc.GetString("Export"), + Text = Loc.GetString("humanoid-profile-editor-export-button"), Disabled = true, - ToolTip = "Not yet implemented!" + ToolTip = Loc.GetString("generic-not-yet-implemented") }; importExportHBox.AddChild(importButton); importExportHBox.AddChild(exportButton); @@ -582,7 +584,7 @@ namespace Content.Client.Preferences.UI var panel = HighlightedContainer(); _saveButton = new Button { - Text = Loc.GetString("Save"), + Text = Loc.GetString("humanoid-profile-editor-save-button"), HorizontalAlignment = HAlignment.Center }; _saveButton.OnPressed += args => { Save(); }; @@ -899,10 +901,10 @@ namespace Content.Client.Preferences.UI }; // Text, Value - _optionButton.AddItem(Loc.GetString("High"), (int) JobPriority.High); - _optionButton.AddItem(Loc.GetString("Medium"), (int) JobPriority.Medium); - _optionButton.AddItem(Loc.GetString("Low"), (int) JobPriority.Low); - _optionButton.AddItem(Loc.GetString("Never"), (int) JobPriority.Never); + _optionButton.AddItem(Loc.GetString("humanoid-profile-editor-job-priority-high-button"), (int) JobPriority.High); + _optionButton.AddItem(Loc.GetString("humanoid-profile-editor-job-priority-medium-button"), (int) JobPriority.Medium); + _optionButton.AddItem(Loc.GetString("humanoid-profile-editor-job-priority-low-button"), (int) JobPriority.Low); + _optionButton.AddItem(Loc.GetString("humanoid-profile-editor-job-priority-never-button"), (int) JobPriority.Never); _optionButton.OnItemSelected += args => { diff --git a/Content.Client/Research/UI/ResearchClientServerSelectionMenu.cs b/Content.Client/Research/UI/ResearchClientServerSelectionMenu.cs index ca88ecddab..791e378a86 100644 --- a/Content.Client/Research/UI/ResearchClientServerSelectionMenu.cs +++ b/Content.Client/Research/UI/ResearchClientServerSelectionMenu.cs @@ -1,4 +1,4 @@ -using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.IoC; using Robust.Shared.Localization; @@ -9,8 +9,8 @@ namespace Content.Client.Research.UI { private readonly ItemList _servers; private int _serverCount; - private string[] _serverNames = new string[]{}; - private int[] _serverIds = new int[]{}; + private string[] _serverNames = System.Array.Empty(); + private int[] _serverIds = System.Array.Empty(); private int _selectedServerId = -1; public ResearchClientBoundUserInterface Owner { get; } @@ -21,7 +21,7 @@ namespace Content.Client.Research.UI IoCManager.InjectDependencies(this); Owner = owner; - Title = Loc.GetString("Research Server Selection"); + Title = Loc.GetString("research-client-server-selection-menu-title"); _servers = new ItemList() {SelectMode = ItemList.ItemListSelectMode.Single}; @@ -56,9 +56,11 @@ namespace Content.Client.Research.UI for (var i = 0; i < _serverCount; i++) { var id = _serverIds[i]; - _servers.AddItem($"ID: {id} || {_serverNames[i]}"); + _servers.AddItem(Loc.GetString("research-client-server-selection-menu-server-entry-text", ("id", id), ("serverName", _serverNames[i]))); if (id == _selectedServerId) + { _servers[id].Selected = true; + } } _servers.OnItemSelected += OnItemSelected; diff --git a/Content.Client/Research/UI/ResearchConsoleMenu.cs b/Content.Client/Research/UI/ResearchConsoleMenu.cs index 1f9e64e954..0686157a73 100644 --- a/Content.Client/Research/UI/ResearchConsoleMenu.cs +++ b/Content.Client/Research/UI/ResearchConsoleMenu.cs @@ -40,7 +40,7 @@ namespace Content.Client.Research.UI IoCManager.InjectDependencies(this); - Title = Loc.GetString("R&D Console"); + Title = Loc.GetString("research-console-menu-title"); Owner = owner; @@ -92,7 +92,7 @@ namespace Content.Client.Research.UI SizeFlagsStretchRatio = 1 }; - var vboxPoints = new VBoxContainer() + var vboxPoints = new VBoxContainer() { HorizontalExpand = true, VerticalExpand = true, @@ -106,8 +106,8 @@ namespace Content.Client.Research.UI SizeFlagsStretchRatio = 3, }; - _pointLabel = new Label() { Text = Loc.GetString("Research Points") + ": 0" }; - _pointsPerSecondLabel = new Label() { Text = Loc.GetString("Points per Second") + ": 0" }; + _pointLabel = new Label() { Text = Loc.GetString("research-console-menu-research-points-text", ("points", 0)) }; + _pointsPerSecondLabel = new Label() { Text = Loc.GetString("research-console-menu-points-per-second-text", ("pointsPerSecond", 0)) }; var vboxPointsButtons = new VBoxContainer() { @@ -116,9 +116,9 @@ namespace Content.Client.Research.UI VerticalExpand = true, }; - ServerSelectionButton = new Button() { Text = Loc.GetString("Server list") }; - ServerSyncButton = new Button() { Text = Loc.GetString("Sync")}; - UnlockButton = new Button() { Text = Loc.GetString("Unlock"), Disabled = true }; + ServerSelectionButton = new Button() { Text = Loc.GetString("research-console-menu-server-selection-button") }; + ServerSyncButton = new Button() { Text = Loc.GetString("research-console-menu-server-sync-button") }; + UnlockButton = new Button() { Text = Loc.GetString("research-console-menu-server-unlock-button"), Disabled = true }; vboxPointsButtons.AddChild(ServerSelectionButton); @@ -172,9 +172,9 @@ namespace Content.Client.Research.UI { UnlockButton.Disabled = true; _technologyIcon.Texture = Texture.Transparent; - _technologyName.Text = ""; - _technologyDescription.Text = ""; - _technologyRequirements.Text = ""; + _technologyName.Text = string.Empty; + _technologyDescription.Text = string.Empty; + _technologyRequirements.Text = string.Empty; } /// @@ -256,16 +256,16 @@ namespace Content.Client.Research.UI { if (TechnologySelected == null) { - _technologyName.Text = ""; - _technologyDescription.Text = ""; - _technologyRequirements.Text = ""; + _technologyName.Text = string.Empty; + _technologyDescription.Text = string.Empty; + _technologyRequirements.Text = string.Empty; return; } _technologyIcon.Texture = TechnologySelected.Icon.Frame0(); _technologyName.Text = TechnologySelected.Name; - _technologyDescription.Text = TechnologySelected.Description+$"\n{TechnologySelected.RequiredPoints} " + Loc.GetString("research points"); - _technologyRequirements.Text = Loc.GetString("No technology requirements."); + _technologyDescription.Text = TechnologySelected.Description + $"\n{TechnologySelected.RequiredPoints} " + Loc.GetString("research-console-menu-research-points-text").ToLowerInvariant(); + _technologyRequirements.Text = Loc.GetString("research-console-tech-requirements-none"); var prototypeMan = IoCManager.Resolve(); @@ -274,7 +274,7 @@ namespace Content.Client.Research.UI var requiredId = TechnologySelected.RequiredTechnologies[i]; if (!prototypeMan.TryIndex(requiredId, out TechnologyPrototype? prototype)) continue; if (i == 0) - _technologyRequirements.Text = Loc.GetString("Requires") + $": {prototype.Name}"; + _technologyRequirements.Text = Loc.GetString("research-console-tech-requirements-prototype-name", ("prototypeName", prototype.Name)); else _technologyRequirements.Text += $", {prototype.Name}"; } @@ -285,8 +285,8 @@ namespace Content.Client.Research.UI /// public void PopulatePoints() { - _pointLabel.Text = Loc.GetString("Research Points") + $": {Owner.Points}"; - _pointsPerSecondLabel.Text = Loc.GetString("Points per second") + $": {Owner.PointsPerSecond}"; + _pointLabel.Text = Loc.GetString("research-console-menu-research-points-text", ("points", Owner.Points)); + _pointsPerSecondLabel.Text = Loc.GetString("research-console-menu-points-per-second-text", ("pointsPerSeconds", Owner.PointsPerSecond)); } /// diff --git a/Content.Client/RoundEnd/RoundEndSummaryWindow.cs b/Content.Client/RoundEnd/RoundEndSummaryWindow.cs index 7aa4598ecb..3f012842ab 100644 --- a/Content.Client/RoundEnd/RoundEndSummaryWindow.cs +++ b/Content.Client/RoundEnd/RoundEndSummaryWindow.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using Content.Client.Message; @@ -20,7 +20,7 @@ namespace Content.Client.RoundEnd { MinSize = SetSize = (520, 580); - Title = Loc.GetString("Round End Summary"); + Title = Loc.GetString("round-end-summary-window-title"); //Round End Window is split into two tabs, one about the round stats //and the other is a list of RoundEndPlayerInfo for each player. @@ -29,13 +29,13 @@ namespace Content.Client.RoundEnd //Also good for serious info. RoundEndSummaryTab = new VBoxContainer() { - Name = Loc.GetString("Round Information") + Name = Loc.GetString("round-end-summary-window-round-end-summary-tab-title") }; //Tab for listing unique info per player. PlayerManifestoTab = new VBoxContainer() { - Name = Loc.GetString("Player Manifesto") + Name = Loc.GetString("round-end-summary-window-player-manifesto-tab-title") }; RoundEndWindowTabs = new TabContainer(); @@ -46,7 +46,7 @@ namespace Content.Client.RoundEnd //Gamemode Name var gamemodeLabel = new RichTextLabel(); - gamemodeLabel.SetMarkup(Loc.GetString("Round of [color=white]{0}[/color] has ended.", gm)); + gamemodeLabel.SetMarkup(Loc.GetString("round-end-summary-window-gamemode-name-label", ("gamemode",gm))); RoundEndSummaryTab.AddChild(gamemodeLabel); //Round end text @@ -59,13 +59,17 @@ namespace Content.Client.RoundEnd //Duration var roundTimeLabel = new RichTextLabel(); - roundTimeLabel.SetMarkup(Loc.GetString("It lasted for [color=yellow]{0} hours, {1} minutes, and {2} seconds.", - roundTimeSpan.Hours,roundTimeSpan.Minutes,roundTimeSpan.Seconds)); + roundTimeLabel.SetMarkup(Loc.GetString("round-end-summary-window-duration-label", + ("hours",roundTimeSpan.Hours), + ("minutes",roundTimeSpan.Minutes), + ("seconds",roundTimeSpan.Seconds))); RoundEndSummaryTab.AddChild(roundTimeLabel); //Initialize what will be the list of players display. - var scrollContainer = new ScrollContainer(); - scrollContainer.VerticalExpand = true; + var scrollContainer = new ScrollContainer + { + VerticalExpand = true + }; var innerScrollContainer = new VBoxContainer(); //Put observers at the bottom of the list. Put antags on top. @@ -80,8 +84,9 @@ namespace Content.Client.RoundEnd if (playerInfo.Observer) { playerInfoText.SetMarkup( - Loc.GetString("[color=gray]{0}[/color] was [color=lightblue]{1}[/color], an observer.", - playerInfo.PlayerOOCName, playerInfo.PlayerICName)); + Loc.GetString("round-end-summary-window-player-info-if-observer-text", + ("playerOOCName",playerInfo.PlayerOOCName), + ("playerICName", playerInfo.PlayerICName))); } else { @@ -89,8 +94,11 @@ namespace Content.Client.RoundEnd //For example: their antag goals and if they completed them sucessfully. var icNameColor = playerInfo.Antag ? "red" : "white"; playerInfoText.SetMarkup( - Loc.GetString("[color=gray]{0}[/color] was [color={1}]{2}[/color] playing role of [color=orange]{3}[/color].", - playerInfo.PlayerOOCName, icNameColor, playerInfo.PlayerICName, Loc.GetString(playerInfo.Role))); + Loc.GetString("round-end-summary-window-player-info-if-not-observer-text", + ("playerOOCName", playerInfo.PlayerOOCName), + ("icNameColor", icNameColor), + ("playerICName",playerInfo.PlayerICName), + ("playerRole", Loc.GetString(playerInfo.Role)))); } } innerScrollContainer.AddChild(playerInfoText); diff --git a/Content.Client/Sandbox/SandboxManager.cs b/Content.Client/Sandbox/SandboxManager.cs index f383f06d66..829edd23f7 100644 --- a/Content.Client/Sandbox/SandboxManager.cs +++ b/Content.Client/Sandbox/SandboxManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Client.HUD; using Content.Client.Markers; using Content.Shared.Input; @@ -45,48 +45,48 @@ namespace Content.Client.Sandbox Resizable = false; _gameHud = IoCManager.Resolve(); - Title = "Sandbox Panel"; + Title = Loc.GetString("sandbox-window-title"); var vBox = new VBoxContainer { SeparationOverride = 4 }; Contents.AddChild(vBox); - RespawnButton = new Button { Text = Loc.GetString("Respawn") }; + RespawnButton = new Button { Text = Loc.GetString("sandbox-window-respawn-button") }; vBox.AddChild(RespawnButton); - SpawnEntitiesButton = new Button { Text = Loc.GetString("Spawn Entities") }; + SpawnEntitiesButton = new Button { Text = Loc.GetString("sandbox-window-spawn-entities-button") }; vBox.AddChild(SpawnEntitiesButton); - SpawnTilesButton = new Button { Text = Loc.GetString("Spawn Tiles") }; + SpawnTilesButton = new Button { Text = Loc.GetString("sandbox-window-spawn-tiles-button") }; vBox.AddChild(SpawnTilesButton); - GiveFullAccessButton = new Button { Text = Loc.GetString("Grant Full Access") }; + GiveFullAccessButton = new Button { Text = Loc.GetString("sandbox-window-grant-full-access-button") }; vBox.AddChild(GiveFullAccessButton); - GiveAghostButton = new Button { Text = Loc.GetString("Ghost") }; + GiveAghostButton = new Button { Text = Loc.GetString("sandbox-window-ghost-button") }; vBox.AddChild(GiveAghostButton); - ToggleLightButton = new Button { Text = Loc.GetString("Toggle Lights"), ToggleMode = true, Pressed = !IoCManager.Resolve().Enabled }; + ToggleLightButton = new Button { Text = Loc.GetString("sandbox-window-toggle-lights-button"), ToggleMode = true, Pressed = !IoCManager.Resolve().Enabled }; vBox.AddChild(ToggleLightButton); - ToggleFovButton = new Button { Text = Loc.GetString("Toggle FOV"), ToggleMode = true, Pressed = !IoCManager.Resolve().CurrentEye.DrawFov }; + ToggleFovButton = new Button { Text = Loc.GetString("sandbox-window-toggle-fov-button"), ToggleMode = true, Pressed = !IoCManager.Resolve().CurrentEye.DrawFov }; vBox.AddChild(ToggleFovButton); - ToggleShadowsButton = new Button { Text = Loc.GetString("Toggle Shadows"), ToggleMode = true, Pressed = !IoCManager.Resolve().DrawShadows }; + ToggleShadowsButton = new Button { Text = Loc.GetString("sandbox-window-toggle-shadows-button"), ToggleMode = true, Pressed = !IoCManager.Resolve().DrawShadows }; vBox.AddChild(ToggleShadowsButton); - ToggleSubfloorButton = new Button { Text = Loc.GetString("Toggle Subfloor"), ToggleMode = true, Pressed = EntitySystem.Get().ShowAll }; + ToggleSubfloorButton = new Button { Text = Loc.GetString("sandbox-window-toggle-subfloor-button"), ToggleMode = true, Pressed = EntitySystem.Get().ShowAll }; vBox.AddChild(ToggleSubfloorButton); - SuicideButton = new Button { Text = Loc.GetString("Suicide") }; + SuicideButton = new Button { Text = Loc.GetString("sandbox-window-toggle-suicide-button") }; vBox.AddChild(SuicideButton); - ShowMarkersButton = new Button { Text = Loc.GetString("Show Spawns"), ToggleMode = true, Pressed = EntitySystem.Get().MarkersVisible }; + ShowMarkersButton = new Button { Text = Loc.GetString("sandbox-window-show-spawns-button"), ToggleMode = true, Pressed = EntitySystem.Get().MarkersVisible }; vBox.AddChild(ShowMarkersButton); - ShowBbButton = new Button { Text = Loc.GetString("Show BB"), ToggleMode = true, Pressed = IoCManager.Resolve().DebugColliders }; + ShowBbButton = new Button { Text = Loc.GetString("sandbox-window-show-bb-button"), ToggleMode = true, Pressed = IoCManager.Resolve().DebugColliders }; vBox.AddChild(ShowBbButton); - MachineLinkingButton = new Button { Text = Loc.GetString("Link machines"), ToggleMode = true }; + MachineLinkingButton = new Button { Text = Loc.GetString("sandbox-window-link-machines-button"), ToggleMode = true }; vBox.AddChild(MachineLinkingButton); } diff --git a/Content.Client/Suspicion/TraitorOverlay.cs b/Content.Client/Suspicion/TraitorOverlay.cs index 0119597b14..ed0e8b4d8b 100644 --- a/Content.Client/Suspicion/TraitorOverlay.cs +++ b/Content.Client/Suspicion/TraitorOverlay.cs @@ -20,7 +20,7 @@ namespace Content.Client.Suspicion public override OverlaySpace Space => OverlaySpace.ScreenSpace; private readonly Font _font; - private readonly string _traitorText = Loc.GetString("Traitor"); + private readonly string _traitorText = Loc.GetString("traitor-overlay-traitor-text"); public TraitorOverlay( IEntityManager entityManager, diff --git a/Content.Client/Tools/Components/WelderComponent.cs b/Content.Client/Tools/Components/WelderComponent.cs index 415de5281d..f37a81ff5a 100644 --- a/Content.Client/Tools/Components/WelderComponent.cs +++ b/Content.Client/Tools/Components/WelderComponent.cs @@ -71,8 +71,10 @@ namespace Content.Client.Tools.Components var fuelCap = _parent.FuelCapacity; var fuel = _parent.Fuel; - _label.SetMarkup(Loc.GetString("Fuel: [color={0}]{1}/{2}[/color]", - fuel < fuelCap / 4f ? "darkorange" : "orange", Math.Round(fuel), fuelCap)); + _label.SetMarkup(Loc.GetString("welder-component-on-examine-detailed-message", + ("colorName", fuel < fuelCap / 4f ? "darkorange" : "orange"), + ("fuelLeft", Math.Round(fuel)), + ("fuelCapacity", fuelCap))); } } } diff --git a/Content.Client/UserInterface/Atmos/GasTank/GasTankWindow.cs b/Content.Client/UserInterface/Atmos/GasTank/GasTankWindow.cs index c762df0630..d51adb623c 100644 --- a/Content.Client/UserInterface/Atmos/GasTank/GasTankWindow.cs +++ b/Content.Client/UserInterface/Atmos/GasTank/GasTankWindow.cs @@ -1,4 +1,4 @@ -using Content.Client.Message; +using Content.Client.Message; using Content.Client.Resources; using Content.Client.Stylesheets; using Content.Shared.Atmos.Components; @@ -90,7 +90,7 @@ namespace Content.Client.UserInterface.Atmos.GasTank { (_lblName = new Label { - Text = Loc.GetString("Gas Tank"), + Text = Loc.GetString("gas-tank-window-label"), FontOverride = font, FontColorOverride = StyleNano.NanoGold, VerticalAlignment = VAlignment.Center, @@ -138,7 +138,7 @@ namespace Content.Client.UserInterface.Atmos.GasTank //internals _lblInternals = new RichTextLabel {MinSize = (200, 0), VerticalAlignment = VAlignment.Center}; - _btnInternals = new Button {Text = Loc.GetString("Toggle")}; + _btnInternals = new Button {Text = Loc.GetString("gas-tank-window-internals-toggle-button") }; _contentContainer.AddChild( new HBoxContainer @@ -155,7 +155,7 @@ namespace Content.Client.UserInterface.Atmos.GasTank _contentContainer.AddChild(new Label { - Text = Loc.GetString("Output Pressure"), + Text = Loc.GetString("gas-tank-window-output-pressure-label"), Align = Label.AlignMode.Center }); _spbPressure = new FloatSpinBox @@ -181,11 +181,11 @@ namespace Content.Client.UserInterface.Atmos.GasTank public void UpdateState(GasTankBoundUserInterfaceState state) { - _lblPressure.SetMarkup(Loc.GetString("Pressure: {0:0.##} kPa", state.TankPressure)); + _lblPressure.SetMarkup(Loc.GetString("gas-tank-window-tank-pressure-text", ("tankPressure", $"{state.TankPressure:0.##}"))); _btnInternals.Disabled = !state.CanConnectInternals; - _lblInternals.SetMarkup(Loc.GetString("Internals: [color={0}]{1}[/color]", - state.InternalsConnected ? "green" : "red", - state.InternalsConnected ? "Connected" : "Disconnected")); + _lblInternals.SetMarkup(Loc.GetString("gas-tank-window-internal-text", + ("colorName" ,state.InternalsConnected ? "green" : "red"), + ("status", state.InternalsConnected ? "Connected" : "Disconnected"))); if (state.OutputPressure.HasValue) { _spbPressure.Value = state.OutputPressure.Value; diff --git a/Content.Client/Verbs/VerbSystem.cs b/Content.Client/Verbs/VerbSystem.cs index b1ffda0971..a0fd186a07 100644 --- a/Content.Client/Verbs/VerbSystem.cs +++ b/Content.Client/Verbs/VerbSystem.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Reflection; using System.Threading; @@ -106,7 +106,7 @@ namespace Content.Client.Verbs if (!entity.Uid.IsClientSide()) { - _currentVerbListRoot.List.AddChild(new Label { Text = Loc.GetString("Waiting on Server...") }); + _currentVerbListRoot.List.AddChild(new Label { Text = Loc.GetString("verb-system-waiting-on-server-text") }); RaiseNetworkEvent(new VerbSystemMessages.RequestVerbsMessage(_currentEntity)); } @@ -251,7 +251,7 @@ namespace Content.Client.Verbs else { var panel = new PanelContainer(); - panel.AddChild(new Label { Text = Loc.GetString("No verbs!") }); + panel.AddChild(new Label { Text = Loc.GetString("verb-system-no-verbs-text") }); vBox.AddChild(panel); } } diff --git a/Content.Client/Voting/UI/VoteCallMenu.xaml.cs b/Content.Client/Voting/UI/VoteCallMenu.xaml.cs index 6b964b90ed..780b201069 100644 --- a/Content.Client/Voting/UI/VoteCallMenu.xaml.cs +++ b/Content.Client/Voting/UI/VoteCallMenu.xaml.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Client.Stylesheets; using JetBrains.Annotations; using Robust.Client.AutoGenerated; @@ -100,8 +100,8 @@ namespace Content.Client.Voting.UI public sealed class VoteMenuCommand : IConsoleCommand { public string Command => "votemenu"; - public string Description => "Opens the voting menu"; - public string Help => "Usage: votemenu"; + public string Description => Loc.GetString("ui-vote-menu-command-description"); + public string Help => Loc.GetString("ui-vote-menu-command-help-text"); public void Execute(IConsoleShell shell, string argStr, string[] args) { diff --git a/Content.Client/Wires/UI/WiresMenu.cs b/Content.Client/Wires/UI/WiresMenu.cs index 64bae3965e..af42de171c 100644 --- a/Content.Client/Wires/UI/WiresMenu.cs +++ b/Content.Client/Wires/UI/WiresMenu.cs @@ -154,7 +154,7 @@ namespace Content.Client.Wires.UI }), (_serialLabel = new Label { - Text = "DEAD-BEEF", + Text = Loc.GetString("wires-menu-dead-beef-text"), FontOverride = fontSmall, FontColorOverride = Color.Gray, VerticalAlignment = VAlignment.Center, diff --git a/Content.Server/AI/Commands/FactionCommand.cs b/Content.Server/AI/Commands/FactionCommand.cs index 28e1d8c251..0db4c06ae6 100644 --- a/Content.Server/AI/Commands/FactionCommand.cs +++ b/Content.Server/AI/Commands/FactionCommand.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Text; using Content.Server.Administration; using Content.Server.AI.EntitySystems; @@ -13,9 +13,8 @@ namespace Content.Server.AI.Commands public sealed class FactionCommand : IConsoleCommand { public string Command => "factions"; - public string Description => "Update / list factional relationships for NPCs."; - public string Help => "faction target\n" + - "faction list: hostile factions"; + public string Description => Loc.GetString("faction-command-description"); + public string Help => Loc.GetString("faction-command-help-text"); public void Execute(IConsoleShell shell, string argStr, string[] args) { @@ -35,13 +34,13 @@ namespace Content.Server.AI.Commands if (args.Length < 2) { - shell.WriteLine(Loc.GetString("Need more args")); + shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } if (!Enum.TryParse(args[0], true, out Faction faction)) { - shell.WriteLine(Loc.GetString("Invalid faction")); + shell.WriteLine(Loc.GetString("faction-command-invalid-faction-error")); return; } @@ -52,40 +51,40 @@ namespace Content.Server.AI.Commands case "friendly": if (args.Length < 3) { - shell.WriteLine(Loc.GetString("Need to supply a target faction")); + shell.WriteLine(Loc.GetString("faction-command-no-target-faction-error")); return; } if (!Enum.TryParse(args[2], true, out targetFaction)) { - shell.WriteLine(Loc.GetString("Invalid target faction")); + shell.WriteLine(Loc.GetString("faction-command-invalid-target-faction-error")); return; } EntitySystem.Get().MakeFriendly(faction, targetFaction); - shell.WriteLine(Loc.GetString("Command successful")); + shell.WriteLine(Loc.GetString("shell-command-success")); break; case "hostile": if (args.Length < 3) { - shell.WriteLine(Loc.GetString("Need to supply a target faction")); + shell.WriteLine(Loc.GetString("faction-command-no-target-faction-error")); return; } if (!Enum.TryParse(args[2], true, out targetFaction)) { - shell.WriteLine(Loc.GetString("Invalid target faction")); + shell.WriteLine(Loc.GetString("faction-command-invalid-target-faction-error")); return; } EntitySystem.Get().MakeHostile(faction, targetFaction); - shell.WriteLine(Loc.GetString("Command successful")); + shell.WriteLine(Loc.GetString("shell-command-success")); break; case "list": shell.WriteLine(EntitySystem.Get().GetHostileFactions(faction).ToString()); break; default: - shell.WriteLine(Loc.GetString("Unknown faction arg")); + shell.WriteLine(Loc.GetString("faction-command-unknown-faction-argument-error")); break; } diff --git a/Content.Server/AME/Components/AMEControllerComponent.cs b/Content.Server/AME/Components/AMEControllerComponent.cs index 963fb5041a..b6e71fd1c2 100644 --- a/Content.Server/AME/Components/AMEControllerComponent.cs +++ b/Content.Server/AME/Components/AMEControllerComponent.cs @@ -119,7 +119,7 @@ namespace Content.Server.AME.Components if (!args.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(args.User, Loc.GetString("You have no hands.")); + Owner.PopupMessage(args.User, Loc.GetString("ame-controller-component-interact-no-hands-text")); return; } @@ -333,13 +333,13 @@ namespace Content.Server.AME.Components { if (!args.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(args.User, Loc.GetString("You have no hands.")); + Owner.PopupMessage(args.User, Loc.GetString("ame-controller-component-interact-using-no-hands-text")); return true; } if (hands.GetActiveHand == null) { - Owner.PopupMessage(args.User, Loc.GetString("You have nothing on your hand.")); + Owner.PopupMessage(args.User, Loc.GetString("ame-controller-component-interact-using-nothing-in-hands-text")); return false; } @@ -348,19 +348,19 @@ namespace Content.Server.AME.Components { if (HasJar) { - Owner.PopupMessage(args.User, Loc.GetString("The controller already has a jar loaded.")); + Owner.PopupMessage(args.User, Loc.GetString("ame-controller-component-interact-using-already-has-jar")); } else { _jarSlot.Insert(activeHandEntity); - Owner.PopupMessage(args.User, Loc.GetString("You insert the jar into the fuel slot.")); + Owner.PopupMessage(args.User, Loc.GetString("ame-controller-component-interact-using-success")); UpdateUserInterface(); } } else { - Owner.PopupMessage(args.User, Loc.GetString("You can't put that in the controller...")); + Owner.PopupMessage(args.User, Loc.GetString("ame-controller-component-interact-using-fail")); } return true; diff --git a/Content.Server/AME/Components/AMEPartComponent.cs b/Content.Server/AME/Components/AMEPartComponent.cs index fc2e0a8438..42fc2de82e 100644 --- a/Content.Server/AME/Components/AMEPartComponent.cs +++ b/Content.Server/AME/Components/AMEPartComponent.cs @@ -31,7 +31,7 @@ namespace Content.Server.AME.Components { if (!args.User.TryGetComponent(out var hands)) { - Owner.PopupMessage(args.User, Loc.GetString("You have no hands.")); + Owner.PopupMessage(args.User, Loc.GetString("ame-part-component-interact-using-no-hands")); return true; } @@ -44,7 +44,7 @@ namespace Content.Server.AME.Components var snapPos = mapGrid.TileIndicesFor(args.ClickLocation); if (mapGrid.GetAnchoredEntities(snapPos).Any(sc => _serverEntityManager.ComponentManager.HasComponent(sc))) { - Owner.PopupMessage(args.User, Loc.GetString("Shielding is already there!")); + Owner.PopupMessage(args.User, Loc.GetString("ame-part-component-shielding-already-present")); return true; } diff --git a/Content.Server/APC/Components/ApcComponent.cs b/Content.Server/APC/Components/ApcComponent.cs index 4e7d4b4f33..07df66a3fc 100644 --- a/Content.Server/APC/Components/ApcComponent.cs +++ b/Content.Server/APC/Components/ApcComponent.cs @@ -94,7 +94,7 @@ namespace Content.Server.APC.Components } else { - user.PopupMessageCursor(Loc.GetString("Insufficient access!")); + user.PopupMessageCursor(Loc.GetString("apc-component-insufficient-access")); } } diff --git a/Content.Server/Access/Components/IdCardComponent.cs b/Content.Server/Access/Components/IdCardComponent.cs index 4a3391dc67..6e9039b955 100644 --- a/Content.Server/Access/Components/IdCardComponent.cs +++ b/Content.Server/Access/Components/IdCardComponent.cs @@ -55,11 +55,15 @@ namespace Content.Server.Access.Components return; } - var jobSuffix = string.IsNullOrWhiteSpace(JobTitle) ? "" : $" ({JobTitle})"; + var jobSuffix = string.IsNullOrWhiteSpace(JobTitle) ? string.Empty : $" ({JobTitle})"; Owner.Name = string.IsNullOrWhiteSpace(FullName) - ? Loc.GetString("{0}{1}", _originalOwnerName, jobSuffix) - : Loc.GetString("{0}'s ID card{1}", FullName, jobSuffix); + ? Loc.GetString("access-id-card-component-owner-name-job-title-text", + ("originalOwnerName", _originalOwnerName), + ("jobSuffix", jobSuffix)) + : Loc.GetString("access-id-card-component-owner-full-name-job-title-text", + ("fullName", FullName), + ("jobSuffix", jobSuffix)); } protected override void Initialize() diff --git a/Content.Server/Access/Components/IdCardConsoleComponent.cs b/Content.Server/Access/Components/IdCardConsoleComponent.cs index 64c88d209c..627fe8ccb4 100644 --- a/Content.Server/Access/Components/IdCardConsoleComponent.cs +++ b/Content.Server/Access/Components/IdCardConsoleComponent.cs @@ -132,7 +132,7 @@ namespace Content.Server.Access.Components { if (!user.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(user, Loc.GetString("You have no hands.")); + Owner.PopupMessage(user, Loc.GetString("access-id-card-console-component-no-hands-error")); return; } @@ -161,7 +161,7 @@ namespace Content.Server.Access.Components if (!hands.Drop(hands.ActiveHand, container)) { - Owner.PopupMessage(user, Loc.GetString("You can't let go of the ID card!")); + Owner.PopupMessage(user, Loc.GetString("access-id-card-console-component-cannot-let-go-error")); return; } UpdateUserInterface(); @@ -194,8 +194,8 @@ namespace Content.Server.Access.Components null, null, null, - _privilegedIdContainer.ContainedEntity?.Name ?? "", - _targetIdContainer.ContainedEntity?.Name ?? ""); + _privilegedIdContainer.ContainedEntity?.Name ?? string.Empty, + _targetIdContainer.ContainedEntity?.Name ?? string.Empty); } else { @@ -208,8 +208,8 @@ namespace Content.Server.Access.Components targetIdComponent.FullName, targetIdComponent.JobTitle, targetAccessComponent.Tags.ToArray(), - _privilegedIdContainer.ContainedEntity?.Name ?? "", - _targetIdContainer.ContainedEntity?.Name ?? ""); + _privilegedIdContainer.ContainedEntity?.Name ?? string.Empty, + _targetIdContainer.ContainedEntity?.Name ?? string.Empty); } UserInterface?.SetState(newState); } @@ -235,7 +235,7 @@ namespace Content.Server.Access.Components return false; } - if (!item.TryGetComponent(out var idCardComponent) || !user.TryGetComponent(out IHandsComponent? hand)) + if (!item.HasComponent() || !user.TryGetComponent(out IHandsComponent? hand)) { return false; } @@ -265,7 +265,7 @@ namespace Content.Server.Access.Components return; } - data.Text = Loc.GetString("Eject Privileged ID"); + data.Text = Loc.GetString("access-eject-privileged-id-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; data.Visibility = component.PrivilegedIDEmpty ? VerbVisibility.Invisible : VerbVisibility.Visible; } @@ -290,7 +290,7 @@ namespace Content.Server.Access.Components return; } - data.Text = Loc.GetString("Eject Target ID"); + data.Text = Loc.GetString("access-eject-target-id-verb-get-data-text"); data.Visibility = component.TargetIDEmpty ? VerbVisibility.Invisible : VerbVisibility.Visible; data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; } diff --git a/Content.Server/Actions/Actions/DisarmAction.cs b/Content.Server/Actions/Actions/DisarmAction.cs index 3663596464..a54992a282 100644 --- a/Content.Server/Actions/Actions/DisarmAction.cs +++ b/Content.Server/Actions/Actions/DisarmAction.cs @@ -72,8 +72,11 @@ namespace Content.Server.Actions.Actions { SoundSystem.Play(Filter.Pvs(args.Performer), "/Audio/Weapons/punchmiss.ogg", args.Performer, AudioHelpers.WithVariation(0.025f)); - args.Performer.PopupMessageOtherClients(Loc.GetString("{0} fails to disarm {1}!", args.Performer.Name, args.Target.Name)); - args.Performer.PopupMessageCursor(Loc.GetString("You fail to disarm {0}!", args.Target.Name)); + args.Performer.PopupMessageOtherClients(Loc.GetString("disarm-action-popup-message-other-clients", + ("performerName", args.Performer.Name), + ("targetName", args.Target.Name))); + args.Performer.PopupMessageCursor(Loc.GetString("disarm-action-popup-message-cursor", + ("targetName", args.Target.Name))); system.SendLunge(angle, args.Performer); return; } diff --git a/Content.Server/Administration/Commands/ControlMob.cs b/Content.Server/Administration/Commands/ControlMob.cs index 5409442d31..8802931b64 100644 --- a/Content.Server/Administration/Commands/ControlMob.cs +++ b/Content.Server/Administration/Commands/ControlMob.cs @@ -14,21 +14,21 @@ namespace Content.Server.Administration.Commands class ControlMob : IConsoleCommand { public string Command => "controlmob"; - public string Description => Loc.GetString("Transfers user mind to the specified entity."); - public string Help => Loc.GetString("Usage: controlmob ."); + public string Description => Loc.GetString("control-mob-command-description"); + public string Help => Loc.GetString("control-mob-command-help-text"); public void Execute(IConsoleShell shell, string argStr, string[] args) { var player = shell.Player as IPlayerSession; if (player == null) { - shell.WriteLine("Server cannot do this."); + shell.WriteLine("shell-server-cannot"); return; } if (args.Length != 1) { - shell.WriteLine(Loc.GetString("Wrong number of arguments.")); + shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } @@ -37,7 +37,7 @@ namespace Content.Server.Administration.Commands if (!int.TryParse(args[0], out var targetId)) { - shell.WriteLine(Loc.GetString("Argument must be a number.")); + shell.WriteLine(Loc.GetString("shell-argument-must-be-number")); return; } @@ -45,14 +45,14 @@ namespace Content.Server.Administration.Commands if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { - shell.WriteLine(Loc.GetString("Invalid entity ID.")); + shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } var target = entityManager.GetEntity(eUid); if (!target.TryGetComponent(out MindComponent? mindComponent)) { - shell.WriteLine(Loc.GetString("Target entity is not a mob!")); + shell.WriteLine(Loc.GetString("shell-entity-is-not-mob")); return; } diff --git a/Content.Server/Administration/Commands/DSay.cs b/Content.Server/Administration/Commands/DSay.cs index 6e6b10d1c6..42e00b264e 100644 --- a/Content.Server/Administration/Commands/DSay.cs +++ b/Content.Server/Administration/Commands/DSay.cs @@ -12,16 +12,16 @@ namespace Content.Server.Administration.Commands { public string Command => "dsay"; - public string Description => Loc.GetString("Sends a message to deadchat as an admin"); + public string Description => Loc.GetString("dsay-command-description"); - public string Help => Loc.GetString($"Usage: {Command} "); + public string Help => Loc.GetString("dsay-command-help-text", ("command", Command)); public void Execute(IConsoleShell shell, string argStr, string[] args) { var player = shell.Player as IPlayerSession; if (player == null) { - shell.WriteLine("Only players can use this command"); + shell.WriteLine("shell-only-players-can-run-this-command"); return; } diff --git a/Content.Server/Administration/Commands/DeleteEntitiesWithComponent.cs b/Content.Server/Administration/Commands/DeleteEntitiesWithComponent.cs index 7d48800577..a2e76c22c8 100644 --- a/Content.Server/Administration/Commands/DeleteEntitiesWithComponent.cs +++ b/Content.Server/Administration/Commands/DeleteEntitiesWithComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Content.Shared.Administration; using Robust.Shared.Console; @@ -12,20 +12,10 @@ namespace Content.Server.Administration.Commands class DeleteEntitiesWithComponent : IConsoleCommand { public string Command => "deleteewc"; - public string Description - { - get - { - return Loc.GetString("Deletes entities with the specified components."); - } - } - public string Help - { - get - { - return Loc.GetString("Usage: deleteewc ... \nDeletes any entities with the components specified."); - } - } + + public string Description => Loc.GetString("delete-entities-with-component-command-description"); + + public string Help => Loc.GetString("delete-entities-with-component-command-help-text"); public void Execute(IConsoleShell shell, string argStr, string[] args) { @@ -52,7 +42,7 @@ namespace Content.Server.Administration.Commands count += 1; } - shell.WriteLine(Loc.GetString("Deleted {0} entities", count)); + shell.WriteLine(Loc.GetString("delete-entities-with-component-command-deleted-components",("count", count))); } } } diff --git a/Content.Server/Administration/Commands/Rejuvenate.cs b/Content.Server/Administration/Commands/Rejuvenate.cs index d802a09dc8..6ddee77ce1 100644 --- a/Content.Server/Administration/Commands/Rejuvenate.cs +++ b/Content.Server/Administration/Commands/Rejuvenate.cs @@ -12,30 +12,20 @@ namespace Content.Server.Administration.Commands class Rejuvenate : IConsoleCommand { public string Command => "rejuvenate"; - public string Description - { - get - { - return Loc.GetString("Fully heals a mob."); - } - } - public string Help - { - get - { - return Loc.GetString("Usage: rejuvenate ... \nAttempts to heal the user's mob if no arguments are provided."); - } - } + + public string Description => Loc.GetString("rejuvenate-command-description"); + + public string Help => Loc.GetString("rejuvenate-command-help-text"); public void Execute(IConsoleShell shell, string argStr, string[] args) { var player = shell.Player as IPlayerSession; if (args.Length < 1 && player != null) //Try to heal the users mob if applicable { - shell.WriteLine(Loc.GetString("Healing the user's mob since no arguments were provided.")); + shell.WriteLine(Loc.GetString("rejuvenate-command-self-heal-message")); if (player.AttachedEntity == null) { - shell.WriteLine(Loc.GetString("There's no entity attached to the user.")); + shell.WriteLine(Loc.GetString("rejuvenate-command-no-entity-attached-message")); return; } RejuvenateVerb.PerformRejuvenate(player.AttachedEntity); @@ -46,7 +36,7 @@ namespace Content.Server.Administration.Commands { if(!EntityUid.TryParse(arg, out var uid) || !entityManager.TryGetEntity(uid, out var entity)) { - shell.WriteLine(Loc.GetString("Could not find entity {0}", arg)); + shell.WriteLine(Loc.GetString("shell-could-not-find-entity",("entity", arg))); continue; } RejuvenateVerb.PerformRejuvenate(entity); diff --git a/Content.Server/Administration/Commands/SetAdminOOC.cs b/Content.Server/Administration/Commands/SetAdminOOC.cs index 58b3ce3f25..f18723d4c7 100644 --- a/Content.Server/Administration/Commands/SetAdminOOC.cs +++ b/Content.Server/Administration/Commands/SetAdminOOC.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Server.Database; using Content.Server.Interfaces; @@ -16,14 +16,14 @@ namespace Content.Server.Administration.Commands internal class SetAdminOOC : IConsoleCommand { public string Command => "setadminooc"; - public string Description => Loc.GetString($"Sets the color of your OOC messages. Color must be in hex format, example: {Command} #c43b23"); - public string Help => Loc.GetString($"Usage: {Command} "); + public string Description => Loc.GetString("set-admin-ooc-command-description", ("command", Command)); + public string Help => Loc.GetString("set-admin-ooc-command-help-text", ("command", Command)); public void Execute(IConsoleShell shell, string argStr, string[] args) { if (!(shell.Player is IPlayerSession)) { - shell.WriteError(Loc.GetString("Only players can use this command")); + shell.WriteError(Loc.GetString("shell-only-players-can-run-this-command")); return; } @@ -37,7 +37,7 @@ namespace Content.Server.Administration.Commands var color = Color.TryFromHex(colorArg); if (!color.HasValue) { - shell.WriteError(Loc.GetString("Invalid color hex!")); + shell.WriteError(Loc.GetString("shell-invalid-color-hex")); return; } diff --git a/Content.Server/Administration/Commands/SetMindCommand.cs b/Content.Server/Administration/Commands/SetMindCommand.cs index 31a4f3a3a8..88a25fd64d 100644 --- a/Content.Server/Administration/Commands/SetMindCommand.cs +++ b/Content.Server/Administration/Commands/SetMindCommand.cs @@ -15,21 +15,21 @@ namespace Content.Server.Administration.Commands { public string Command => "setmind"; - public string Description => Loc.GetString("Transfers a mind to the specified entity. The entity must have a MindComponent."); + public string Description => Loc.GetString("set-mind-command-description", ("requiredComponent", nameof(MindComponent))); - public string Help => Loc.GetString("Usage: {0} ", Command); + public string Help => Loc.GetString("set-mind-command-help-text", ("command", Command)); public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length != 2) { - shell.WriteLine(Loc.GetString("Wrong number of arguments.")); + shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } if (!int.TryParse(args[0], out var entityUid)) { - shell.WriteLine(Loc.GetString("EntityUid must be a number.")); + shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number")); return; } @@ -39,21 +39,21 @@ namespace Content.Server.Administration.Commands if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { - shell.WriteLine(Loc.GetString("Invalid entity ID.")); + shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } var target = entityManager.GetEntity(eUid); - if (!target.TryGetComponent(out var mindComponent)) + if (!target.HasComponent()) { - shell.WriteLine(Loc.GetString("Target entity does not have a mind (did you forget to make sentient?)")); + shell.WriteLine(Loc.GetString("set-mind-command-target-has-no-mind-message")); return; } if (!IoCManager.Resolve().TryGetSessionByUsername(args[1], out var session)) { - shell.WriteLine(Loc.GetString("Target player does not exist")); + shell.WriteLine(Loc.GetString("shell-target-player-does-not-exist")); return; } @@ -61,7 +61,7 @@ namespace Content.Server.Administration.Commands var playerCData = session.ContentData(); if (playerCData == null) { - shell.WriteLine(Loc.GetString("Target player does not have content data (wtf?)")); + shell.WriteLine(Loc.GetString("set-mind-command-target-has-no-content-data-message")); return; } diff --git a/Content.Server/Administration/Commands/SetOutfitCommand.cs b/Content.Server/Administration/Commands/SetOutfitCommand.cs index ff2cd95b0e..44a6e82a3c 100644 --- a/Content.Server/Administration/Commands/SetOutfitCommand.cs +++ b/Content.Server/Administration/Commands/SetOutfitCommand.cs @@ -10,7 +10,6 @@ using Content.Shared.Administration; using Content.Shared.Inventory; using Content.Shared.Preferences; using Content.Shared.Roles; -using NFluidsynth; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Console; @@ -26,22 +25,21 @@ namespace Content.Server.Administration.Commands { public string Command => "setoutfit"; - public string Description => - Loc.GetString("Sets the outfit of the specified entity. The entity must have an InventoryComponent"); + public string Description => Loc.GetString("set-outfit-command-description", ("requiredComponent", nameof(InventoryComponent))); - public string Help => Loc.GetString("Usage: {0} | {0} ", Command); + public string Help => Loc.GetString("set-outfit-command-help-text", ("command",Command)); public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length < 1) { - shell.WriteLine(Loc.GetString("Wrong number of arguments.")); + shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } if (!int.TryParse(args[0], out var entityUid)) { - shell.WriteLine(Loc.GetString("EntityUid must be a number.")); + shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number")); return; } @@ -51,7 +49,7 @@ namespace Content.Server.Administration.Commands if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { - shell.WriteLine(Loc.GetString("Invalid entity ID.")); + shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } @@ -59,17 +57,15 @@ namespace Content.Server.Administration.Commands if (!target.TryGetComponent(out var inventoryComponent)) { - shell.WriteLine(Loc.GetString("Target entity does not have an inventory!")); + shell.WriteLine(Loc.GetString("shell-target-entity-does-not-have-message",("missing", "inventory"))); return; } if (args.Length == 1) { - if (!(shell.Player is IPlayerSession player)) + if (shell.Player is not IPlayerSession player) { - shell.WriteError( - Loc.GetString( - "This does not work from the server console. You must pass the outfit id aswell.")); + shell.WriteError(Loc.GetString("set-outfit-command-is-not-player-error")); return; } @@ -82,7 +78,7 @@ namespace Content.Server.Administration.Commands var prototypeManager = IoCManager.Resolve(); if (!prototypeManager.TryIndex(args[1], out var startingGear)) { - shell.WriteLine(Loc.GetString("Invalid outfit id")); + shell.WriteLine(Loc.GetString("set-outfit-command-invalid-outfit-id-error")); return; } @@ -100,7 +96,10 @@ namespace Content.Server.Administration.Commands { inventoryComponent.ForceUnequip(slot); var gearStr = startingGear.GetGear(slot, profile); - if (gearStr == "") continue; + if (gearStr == string.Empty) + { + continue; + } var equipmentEntity = entityManager.SpawnEntity(gearStr, target.Transform.Coordinates); if (slot == EquipmentSlotDefines.Slots.IDCARD && equipmentEntity.TryGetComponent(out var pdaComponent) && diff --git a/Content.Server/Administration/Managers/AdminManager.cs b/Content.Server/Administration/Managers/AdminManager.cs index f63195d412..78d8c225db 100644 --- a/Content.Server/Administration/Managers/AdminManager.cs +++ b/Content.Server/Administration/Managers/AdminManager.cs @@ -79,8 +79,8 @@ namespace Content.Server.Administration.Managers return; } - _chat.SendAdminAnnouncement(Loc.GetString("{0} de-adminned themselves.", session.Name)); - _chat.DispatchServerMessage(session, Loc.GetString("You are now a normal player.")); + _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-self-de-admin-message", ("exAdminName", session.Name))); + _chat.DispatchServerMessage(session, Loc.GetString("admin-manager-became-normal-player-message")); var plyData = session.ContentData()!; plyData.ExplicitlyDeadminned = true; @@ -97,13 +97,13 @@ namespace Content.Server.Administration.Managers throw new ArgumentException($"Player {session} is not an admin"); } - _chat.DispatchServerMessage(session, Loc.GetString("You are now an admin.")); + _chat.DispatchServerMessage(session, Loc.GetString("admin-manager-became-admin-message")); var plyData = session.ContentData()!; plyData.ExplicitlyDeadminned = false; reg.Data.Active = true; - _chat.SendAdminAnnouncement(Loc.GetString("{0} re-adminned themselves.", session.Name)); + _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-self-re-admin-message", ("newAdminName", session.Name))); SendPermsChangedEvent(session); UpdateAdminStatus(session); @@ -124,7 +124,7 @@ namespace Content.Server.Administration.Managers { // No longer admin. _admins.Remove(player); - _chat.DispatchServerMessage(player, Loc.GetString("You are no longer an admin.")); + _chat.DispatchServerMessage(player, Loc.GetString("admin-manager-no-longer-admin-message")); } else { @@ -139,7 +139,7 @@ namespace Content.Server.Administration.Managers RankId = rankId }; _admins.Add(player, reg); - _chat.DispatchServerMessage(player, Loc.GetString("You are now an admin.")); + _chat.DispatchServerMessage(player, Loc.GetString("admin-manager-became-admin-message")); } else { @@ -153,7 +153,7 @@ namespace Content.Server.Administration.Managers { aData.Active = true; - _chat.DispatchServerMessage(player, Loc.GetString("Your admin permissions have been updated.")); + _chat.DispatchServerMessage(player, Loc.GetString("admin-manager-admin-permissions-updated-message")); } } @@ -250,7 +250,7 @@ namespace Content.Server.Administration.Managers foreach (var session in _playerManager.GetAllPlayers()) { var name = session.Name; - var username = session.AttachedEntity?.Name ?? ""; + var username = session.AttachedEntity?.Name ?? string.Empty; var antag = session.ContentData()?.Mind?.AllRoles.Any(r => r.Antagonist) ?? false; netMsg.PlayersInfo.Add(new AdminMenuPlayerListMessage.PlayerInfo(name, username, antag)); @@ -308,7 +308,7 @@ namespace Content.Server.Administration.Managers { if (_admins.Remove(e.Session) && _cfg.GetCVar(CCVars.AdminAnnounceLogout)) { - _chat.SendAdminAnnouncement(Loc.GetString("Admin logout: {0}", e.Session.Name)); + _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-admin-logout-message", ("name", e.Session.Name))); } } } @@ -337,7 +337,7 @@ namespace Content.Server.Administration.Managers if (_cfg.GetCVar(CCVars.AdminAnnounceLogin)) { - _chat.SendAdminAnnouncement(Loc.GetString("Admin login: {0}", session.Name)); + _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-admin-login-message", ("name", session.Name))); } SendPermsChangedEvent(session); @@ -352,7 +352,7 @@ namespace Content.Server.Administration.Managers { var data = new AdminData { - Title = Loc.GetString("Host"), + Title = Loc.GetString("admin-manager-admin-data-host-title"), Flags = AdminFlagsHelper.Everything, }; diff --git a/Content.Server/Administration/Verbs/AdminAddReagentVerb.cs b/Content.Server/Administration/Verbs/AdminAddReagentVerb.cs index 03115e13c3..9abc73fcf1 100644 --- a/Content.Server/Administration/Verbs/AdminAddReagentVerb.cs +++ b/Content.Server/Administration/Verbs/AdminAddReagentVerb.cs @@ -43,7 +43,7 @@ namespace Content.Server.Administration.Verbs return; } - data.Text = Loc.GetString("Add Reagent..."); + data.Text = Loc.GetString("admin-add-reagent-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; data.Visibility = VerbVisibility.Invisible; diff --git a/Content.Server/Administration/Verbs/DeleteVerb.cs b/Content.Server/Administration/Verbs/DeleteVerb.cs index bb5d354fd9..c1938af26c 100644 --- a/Content.Server/Administration/Verbs/DeleteVerb.cs +++ b/Content.Server/Administration/Verbs/DeleteVerb.cs @@ -30,7 +30,7 @@ namespace Content.Server.Administration.Verbs return; } - data.Text = Loc.GetString("Delete"); + data.Text = Loc.GetString("delete-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; data.Visibility = VerbVisibility.Visible; data.IconTexture = "/Textures/Interface/VerbIcons/delete.svg.192dpi.png"; diff --git a/Content.Server/Advertise/AdvertiseComponent.cs b/Content.Server/Advertise/AdvertiseComponent.cs index 53e4880d16..b57e0e3aa8 100644 --- a/Content.Server/Advertise/AdvertiseComponent.cs +++ b/Content.Server/Advertise/AdvertiseComponent.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Threading; using Content.Server.Advertisements; using Content.Server.Chat.Managers; diff --git a/Content.Server/Arcade/Components/SpaceVillainArcadeComponent.cs b/Content.Server/Arcade/Components/SpaceVillainArcadeComponent.cs index c5daf82b90..40f337896a 100644 --- a/Content.Server/Arcade/Components/SpaceVillainArcadeComponent.cs +++ b/Content.Server/Arcade/Components/SpaceVillainArcadeComponent.cs @@ -289,7 +289,9 @@ namespace Content.Server.Arcade.Components { case PlayerAction.Attack: var attackAmount = _random.Next(2, 6); - _latestPlayerActionMessage = Loc.GetString("You attack {0} for {1}!", _enemyName, attackAmount); + _latestPlayerActionMessage = Loc.GetString("space-villain-game-player-attack-message", + ("enemyName", _enemyName), + ("attackAmount", attackAmount)); SoundSystem.Play(Filter.Pvs(_owner.Owner), "/Audio/Effects/Arcade/player_attack.ogg", _owner.Owner, AudioParams.Default.WithVolume(-4f)); if(!_owner._enemyInvincibilityFlag) _enemyHp -= attackAmount; _turtleTracker -= _turtleTracker > 0 ? 1 : 0; @@ -297,7 +299,9 @@ namespace Content.Server.Arcade.Components case PlayerAction.Heal: var pointAmount = _random.Next(1, 3); var healAmount = _random.Next(6, 8); - _latestPlayerActionMessage = Loc.GetString("You use {0} magic to heal for {1} damage!", pointAmount, healAmount); + _latestPlayerActionMessage = Loc.GetString("space-villain-game-player-heal-message", + ("magicPointAmount", pointAmount), + ("healAmount", healAmount)); SoundSystem.Play(Filter.Pvs(_owner.Owner), "/Audio/Effects/Arcade/player_heal.ogg", _owner.Owner, AudioParams.Default.WithVolume(-4f)); if(!_owner._playerInvincibilityFlag) _playerMp -= pointAmount; _playerHp += healAmount; @@ -305,7 +309,7 @@ namespace Content.Server.Arcade.Components break; case PlayerAction.Recharge: var chargeAmount = _random.Next(4, 7); - _latestPlayerActionMessage = Loc.GetString("You regain {0} points", chargeAmount); + _latestPlayerActionMessage = Loc.GetString("space-villain-game-player-recharge-message",("regainedPoints", chargeAmount)); SoundSystem.Play(Filter.Pvs(_owner.Owner), "/Audio/Effects/Arcade/player_charge.ogg", _owner.Owner, AudioParams.Default.WithVolume(-4f)); _playerMp += chargeAmount; _turtleTracker -= _turtleTracker > 0 ? 1 : 0; @@ -337,7 +341,9 @@ namespace Content.Server.Arcade.Components if ((_playerHp > 0 && _playerMp > 0) && (_enemyHp <= 0 || _enemyMp <= 0)) { _running = false; - UpdateUi(Loc.GetString("You won!"), Loc.GetString("{0} dies.", _enemyName), true); + UpdateUi(Loc.GetString("space-villain-game-player-wins-message"), + Loc.GetString("space-villain-game-enemy-dies-message",("enemyName", _enemyName)), + true); SoundSystem.Play(Filter.Pvs(_owner.Owner), "/Audio/Effects/Arcade/win.ogg", _owner.Owner, AudioParams.Default.WithVolume(-4f)); _owner.ProcessWin(); return false; @@ -348,14 +354,18 @@ namespace Content.Server.Arcade.Components if ((_enemyHp > 0 && _enemyMp > 0)) { _running = false; - UpdateUi(Loc.GetString("You lost!"), Loc.GetString("{0} cheers.", _enemyName), true); + UpdateUi(Loc.GetString("space-villain-game-player-loses-message"), + Loc.GetString("space-villain-game-enemy-cheers-message",("enemyName", _enemyName)), + true); SoundSystem.Play(Filter.Pvs(_owner.Owner), "/Audio/Effects/Arcade/gameover.ogg", _owner.Owner, AudioParams.Default.WithVolume(-4f)); return false; } if (_enemyHp <= 0 || _enemyMp <= 0) { _running = false; - UpdateUi(Loc.GetString("You lost!"), Loc.GetString("{0} dies, but takes you with him.", _enemyName), true); + UpdateUi(Loc.GetString("space-villain-game-player-loses-message"), + Loc.GetString("space-villain-game-enemy-dies-with-player-message ", ("enemyName", _enemyName)), + true); SoundSystem.Play(Filter.Pvs(_owner.Owner), "/Audio/Effects/Arcade/gameover.ogg", _owner.Owner, AudioParams.Default.WithVolume(-4f)); return false; } @@ -387,14 +397,18 @@ namespace Content.Server.Arcade.Components if (_turtleTracker >= 4) { var boomAmount = _random.Next(5, 10); - _latestEnemyActionMessage = Loc.GetString("{0} throws a bomb, exploding you for {1} damage!", _enemyName, boomAmount); + _latestEnemyActionMessage = Loc.GetString("space-villain-game-enemy-throws-bomb-message", + ("enemyName", _enemyName), + ("damageReceived", boomAmount)); if (_owner._playerInvincibilityFlag) return; _playerHp -= boomAmount; _turtleTracker--; }else if (_enemyMp <= 5 && _random.Prob(0.7f)) { var stealAmount = _random.Next(2, 3); - _latestEnemyActionMessage = Loc.GetString("{0} steals {1} of your power!", _enemyName, stealAmount); + _latestEnemyActionMessage = Loc.GetString("space-villain-game-enemy-steals-player-power-message", + ("enemyName", _enemyName), + ("stolenAmount", stealAmount)); if (_owner._playerInvincibilityFlag) return; _playerMp -= stealAmount; _enemyMp += stealAmount; @@ -402,13 +416,17 @@ namespace Content.Server.Arcade.Components { _enemyHp += 4; _enemyMp -= 4; - _latestEnemyActionMessage = Loc.GetString("{0} heals for 4 health!", _enemyName); + _latestEnemyActionMessage = Loc.GetString("space-villain-game-enemy-heals-message", + ("enemyName", _enemyName), + ("healedAmount", 4)); } else { var attackAmount = _random.Next(3, 6); _latestEnemyActionMessage = - Loc.GetString("{0} attacks you for {1} damage!", _enemyName, attackAmount); + Loc.GetString("space-villain-game-enemy-attacks-message", + ("enemyName", _enemyName), + ("damageDealt", attackAmount)); if (_owner._playerInvincibilityFlag) return; _playerHp -= attackAmount; } diff --git a/Content.Server/Atmos/Components/FirelockComponent.cs b/Content.Server/Atmos/Components/FirelockComponent.cs index d9d28293b8..961cb51d84 100644 --- a/Content.Server/Atmos/Components/FirelockComponent.cs +++ b/Content.Server/Atmos/Components/FirelockComponent.cs @@ -63,11 +63,11 @@ namespace Content.Server.Atmos.Components if (IsHoldingPressure()) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("A gush of air blows in your face... Maybe you should reconsider.")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("firelock-component-is-holding-pressure-message")); } else if (IsHoldingFire()) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("A gush of warm air blows in your face... Maybe you should reconsider.")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("firelock-component-is-holding-fire-message")); } } diff --git a/Content.Server/Atmos/Components/FlammableComponent.cs b/Content.Server/Atmos/Components/FlammableComponent.cs index 4f4d0feb6d..6ca5e0a913 100644 --- a/Content.Server/Atmos/Components/FlammableComponent.cs +++ b/Content.Server/Atmos/Components/FlammableComponent.cs @@ -194,7 +194,7 @@ namespace Content.Server.Atmos.Components _resisting = true; - Owner.PopupMessage(Loc.GetString("You stop, drop, and roll!")); + Owner.PopupMessage(Loc.GetString("flammable-component-resist-message")); stunnable.Paralyze(2f); Owner.SpawnTimer(2000, () => diff --git a/Content.Server/Atmos/Components/GasAnalyzerComponent.cs b/Content.Server/Atmos/Components/GasAnalyzerComponent.cs index 0d540d46e7..e628c61361 100644 --- a/Content.Server/Atmos/Components/GasAnalyzerComponent.cs +++ b/Content.Server/Atmos/Components/GasAnalyzerComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using System.Threading.Tasks; using Content.Server.Atmos.EntitySystems; @@ -231,14 +231,14 @@ namespace Content.Server.Atmos.Components if (!player.TryGetComponent(out IHandsComponent? handsComponent)) { - Owner.PopupMessage(player, Loc.GetString("You have no hands.")); + Owner.PopupMessage(player, Loc.GetString("gas-analyzer-component-player-has-no-hands-message")); return; } var activeHandEntity = handsComponent.GetActiveHand?.Owner; if (activeHandEntity == null || !activeHandEntity.TryGetComponent(out GasAnalyzerComponent? gasAnalyzer)) { - serverMsg.Session.AttachedEntity?.PopupMessage(Loc.GetString("You need a Gas Analyzer in your hand!")); + serverMsg.Session.AttachedEntity?.PopupMessage(Loc.GetString("gas-analyzer-component-need-gas-analyzer-in-hand-message")); return; } @@ -252,7 +252,7 @@ namespace Content.Server.Atmos.Components { if (!eventArgs.CanReach) { - eventArgs.User.PopupMessage(Loc.GetString("You can't reach there!")); + eventArgs.User.PopupMessage(Loc.GetString("gas-analyzer-component-player-cannot-reach-message")); return true; } diff --git a/Content.Server/Atmos/Components/GasTankComponent.cs b/Content.Server/Atmos/Components/GasTankComponent.cs index ac3aebb40b..c2e3b9bd40 100644 --- a/Content.Server/Atmos/Components/GasTankComponent.cs +++ b/Content.Server/Atmos/Components/GasTankComponent.cs @@ -376,7 +376,7 @@ namespace Content.Server.Atmos.Components } data.Visibility = VerbVisibility.Visible; - data.Text = "Open Control Panel"; + data.Text = Loc.GetString("control-verb-open-control-panel-text"); } protected override void Activate(IEntity user, GasTankComponent component) diff --git a/Content.Server/BarSign/BarSignComponent.cs b/Content.Server/BarSign/BarSignComponent.cs index 6f2d9da4da..1a673d1186 100644 --- a/Content.Server/BarSign/BarSignComponent.cs +++ b/Content.Server/BarSign/BarSignComponent.cs @@ -70,7 +70,7 @@ namespace Content.Server.BarSign } else { - Owner.Name = Loc.GetString("bar sign"); + Owner.Name = Loc.GetString("barsign-component-name"); } Owner.Description = prototype.Description; diff --git a/Content.Server/BarSign/BarSignPrototype.cs b/Content.Server/BarSign/BarSignPrototype.cs index 1d006b8a0c..456c7ca38a 100644 --- a/Content.Server/BarSign/BarSignPrototype.cs +++ b/Content.Server/BarSign/BarSignPrototype.cs @@ -9,15 +9,15 @@ namespace Content.Server.BarSign [Prototype("barSign")] public class BarSignPrototype : IPrototype { - private string _description = ""; - private string _name = ""; + private string _description = string.Empty; + private string _name = string.Empty; [ViewVariables] [DataField("id", required: true)] public string ID { get; } = default!; - [DataField("icon")] public string Icon { get; private set; } = ""; + [DataField("icon")] public string Icon { get; private set; } = string.Empty; [DataField("name")] public string Name diff --git a/Content.Server/Body/Behavior/LungBehavior.cs b/Content.Server/Body/Behavior/LungBehavior.cs index cf3954ba3a..6154fd92d0 100644 --- a/Content.Server/Body/Behavior/LungBehavior.cs +++ b/Content.Server/Body/Behavior/LungBehavior.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using Content.Server.Atmos; using Content.Server.Atmos.Components; @@ -59,7 +59,7 @@ namespace Content.Server.Body.Behavior if (_gameTiming.CurTime >= _lastGaspPopupTime + GaspPopupCooldown) { _lastGaspPopupTime = _gameTiming.CurTime; - Owner.PopupMessageEveryone(Loc.GetString("Gasp")); + Owner.PopupMessageEveryone(Loc.GetString("lung-behavior-gasp")); } Inhale(CycleDelay); diff --git a/Content.Server/Body/Mechanism/MechanismComponent.cs b/Content.Server/Body/Mechanism/MechanismComponent.cs index ef19e39ecb..3795cd15b9 100644 --- a/Content.Server/Body/Mechanism/MechanismComponent.cs +++ b/Content.Server/Body/Mechanism/MechanismComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using System.Threading.Tasks; using Content.Server.UserInterface; @@ -56,7 +56,7 @@ namespace Content.Server.Body.Mechanism if (!part.TryAddMechanism(this)) { - eventArgs.Target.PopupMessage(eventArgs.User, Loc.GetString("You can't fit it in!")); + eventArgs.Target.PopupMessage(eventArgs.User, Loc.GetString("mechanism-component-cannot-fit-message")); } } @@ -89,7 +89,7 @@ namespace Content.Server.Body.Mechanism else // If surgery cannot be performed, show message saying so. { eventArgs.Target?.PopupMessage(eventArgs.User, - Loc.GetString("You see no way to install the {0}.", Owner.Name)); + Loc.GetString("mechanism-component-no-way-to-install-message", ("partName", Owner.Name))); } } @@ -115,14 +115,14 @@ namespace Content.Server.Body.Mechanism if (!OptionsCache.TryGetValue(key, out var targetObject)) { BodyCache.Owner.PopupMessage(PerformerCache, - Loc.GetString("You see no useful way to use the {0} anymore.", Owner.Name)); + Loc.GetString("mechanism-component-no-useful-way-to-use-message",("partName", Owner.Name))); return; } var target = (SharedBodyPartComponent) targetObject; var message = target.TryAddMechanism(this) - ? Loc.GetString("You jam {0:theName} inside {1:them}.", Owner, PerformerCache) - : Loc.GetString("You can't fit it in!"); + ? Loc.GetString("mechanism-component-jam-inside-message",("ownerName", Owner),("them", PerformerCache)) + : Loc.GetString("mechanism-component-cannot-fit-message"); BodyCache.Owner.PopupMessage(PerformerCache, message); diff --git a/Content.Server/Body/Part/BodyPartComponent.cs b/Content.Server/Body/Part/BodyPartComponent.cs index 307a887907..38393f00a9 100644 --- a/Content.Server/Body/Part/BodyPartComponent.cs +++ b/Content.Server/Body/Part/BodyPartComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using System.Threading.Tasks; using Content.Server.UserInterface; @@ -153,7 +153,7 @@ namespace Content.Server.Body.Part else // If surgery cannot be performed, show message saying so. { eventArgs.Target?.PopupMessage(eventArgs.User, - Loc.GetString("You see no way to install {0:theName}.", Owner)); + Loc.GetString("bodypart-component-no-way-to-install-message", ("partName", Owner))); } } @@ -180,13 +180,13 @@ namespace Content.Server.Body.Part if (!_optionsCache.TryGetValue(key, out var targetObject)) { _owningBodyCache.Owner.PopupMessage(_surgeonCache, - Loc.GetString("You see no useful way to attach {0:theName} anymore.", Owner)); + Loc.GetString("bodypart-component-no-way-to-attach-message", ("partName", Owner))); } var target = (string) targetObject!; var message = _owningBodyCache.TryAddPart(target, this) - ? Loc.GetString("You attach {0:theName}.", Owner) - : Loc.GetString("You can't attach {0:theName}!", Owner); + ? Loc.GetString("bodypart-component-attach-success-message",("partName", Owner)) + : Loc.GetString("bodypart-component-attach-fail-message",("partName", Owner)); _owningBodyCache.Owner.PopupMessage(_surgeonCache, message); } @@ -256,7 +256,7 @@ namespace Content.Server.Body.Part } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Attach Body Part"); + data.Text = Loc.GetString("attach-bodypart-verb-get-data-text"); } protected override void Activate(IEntity user, BodyPartComponent component) diff --git a/Content.Server/Body/Surgery/BiologicalSurgeryDataComponent.cs b/Content.Server/Body/Surgery/BiologicalSurgeryDataComponent.cs index 21ece952f1..b6db086dc7 100644 --- a/Content.Server/Body/Surgery/BiologicalSurgeryDataComponent.cs +++ b/Content.Server/Body/Surgery/BiologicalSurgeryDataComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using System.Linq; using System.Text; @@ -97,20 +97,20 @@ namespace Content.Server.Body.Surgery if (HasIncisionNotClamped()) { - toReturn.Append(Loc.GetString("The skin on {0:their} {1} has an incision, but it is prone to bleeding.", - Owner, Parent.Name)); + toReturn.Append(Loc.GetString("biological-surgery-data-component-has-incision-not-clamped-message", + ("owner", Owner),("bodyPart", Parent.Name))); } else if (HasClampedIncisionNotRetracted()) { - toReturn.AppendLine(Loc.GetString("The skin on {0:their} {1} has an incision, but it is not retracted.", - Owner, Parent.Name)); + toReturn.AppendLine(Loc.GetString("biological-surgery-data-component-has-clamped-incision-not-retracted-message", + ("owner", Owner),("bodyPary", Parent.Name))); } else if (HasFullyOpenIncision()) { - toReturn.AppendLine(Loc.GetString("There is an incision on {0:their} {1}.\n", Owner, Parent.Name)); + toReturn.AppendLine(Loc.GetString("biological-surgery-data-component-has-fully-open-incision-message", ("owner", Owner), ("bodyPart", Parent.Name)) + "\n"); foreach (var mechanism in _disconnectedOrgans) { - toReturn.AppendLine(Loc.GetString("{0:their} {1} is loose.", Owner, mechanism.Name)); + toReturn.AppendLine(Loc.GetString("biological-surgery-data-component-part-is-loose-message",("owner", Owner), ("bodyPart", mechanism.Name))); } } @@ -225,7 +225,7 @@ namespace Content.Server.Body.Surgery return; } - performer.PopupMessage(Loc.GetString("Cut open the skin...")); + performer.PopupMessage(Loc.GetString("biological-surgery-data-component-open-skin-message")); if (await SurgeryDoAfter(performer)) { @@ -237,7 +237,7 @@ namespace Content.Server.Body.Surgery { if (Parent == null) return; - performer.PopupMessage(Loc.GetString("Clamp the vessels...")); + performer.PopupMessage(Loc.GetString("biological-surgery-data-component-clamp-vessels-message")); if (await SurgeryDoAfter(performer)) { @@ -249,7 +249,7 @@ namespace Content.Server.Body.Surgery { if (Parent == null) return; - performer.PopupMessage(Loc.GetString("Retracting the skin...")); + performer.PopupMessage(Loc.GetString("biological-surgery-data-component-retract-skin-message")); if (await SurgeryDoAfter(performer)) { @@ -261,7 +261,7 @@ namespace Content.Server.Body.Surgery { if (Parent == null) return; - performer.PopupMessage(Loc.GetString("Cauterizing the incision...")); + performer.PopupMessage(Loc.GetString("biological-surgery-data-component-cauterize-incision-message")); if (await SurgeryDoAfter(performer)) { @@ -299,7 +299,7 @@ namespace Content.Server.Body.Surgery return; } - performer.PopupMessage(Loc.GetString("Loosening the organ...")); + performer.PopupMessage(Loc.GetString("biological-surgery-data-component-loosen-organ-message")); if (!performer.HasComponent()) { @@ -340,7 +340,7 @@ namespace Content.Server.Body.Surgery return; } - performer.PopupMessage(Loc.GetString("Removing the organ...")); + performer.PopupMessage(Loc.GetString("biological-surgery-data-component-remove-organ-message")); if (!performer.HasComponent()) { @@ -361,7 +361,7 @@ namespace Content.Server.Body.Surgery if (Parent == null) return; if (container is not SharedBodyComponent body) return; - performer.PopupMessage(Loc.GetString("Sawing off the limb!")); + performer.PopupMessage(Loc.GetString("biological-surgery-data-component-remove-bodypart-message")); if (await SurgeryDoAfter(performer)) { diff --git a/Content.Server/Body/Surgery/Components/SurgeryToolComponent.cs b/Content.Server/Body/Surgery/Components/SurgeryToolComponent.cs index a362cf90e6..da11f79a34 100644 --- a/Content.Server/Body/Surgery/Components/SurgeryToolComponent.cs +++ b/Content.Server/Body/Surgery/Components/SurgeryToolComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Threading.Tasks; @@ -265,7 +265,7 @@ namespace Content.Server.Body.Surgery.Components if (PerformerCache == null) return; BodyCache?.Owner.PopupMessage(PerformerCache, - Loc.GetString("You see no useful way to use {0:theName}.", Owner)); + Loc.GetString("surgery-tool-component-not-useful-message", ("bodyPart", Owner))); } private void NotUsefulAnymorePopup() @@ -273,7 +273,7 @@ namespace Content.Server.Body.Surgery.Components if (PerformerCache == null) return; BodyCache?.Owner.PopupMessage(PerformerCache, - Loc.GetString("You see no useful way to use {0:theName} anymore.", Owner)); + Loc.GetString("surgery-tool-component-not-useful-anymore-message", ("bodyPart", Owner))); } } } diff --git a/Content.Server/Botany/Components/PlantHolderComponent.cs b/Content.Server/Botany/Components/PlantHolderComponent.cs index 7f83058fde..d3af8dc4b8 100644 --- a/Content.Server/Botany/Components/PlantHolderComponent.cs +++ b/Content.Server/Botany/Components/PlantHolderComponent.cs @@ -654,12 +654,14 @@ namespace Content.Server.Botany.Components { if (seeds.Seed == null) { - user.PopupMessageCursor(Loc.GetString("The packet seems to be empty. You throw it away.")); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-empty-seed-packet-message")); usingItem.QueueDelete(); return false; } - user.PopupMessageCursor(Loc.GetString("You plant the {0} {1}.", seeds.Seed.SeedName, seeds.Seed.SeedNoun)); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-plant-success-message", + ("seedName", seeds.Seed.SeedName), + ("seedNoun", seeds.Seed.SeedNoun))); Seed = seeds.Seed; Dead = false; @@ -675,7 +677,7 @@ namespace Content.Server.Botany.Components return true; } - user.PopupMessageCursor(Loc.GetString("The {0} already has seeds in it!", Owner.Name)); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-already-seeded-message", ("name", Owner.Name))); return false; } @@ -683,14 +685,14 @@ namespace Content.Server.Botany.Components { if (WeedLevel > 0) { - user.PopupMessageCursor(Loc.GetString("You remove the weeds from the {0}.", Owner.Name)); - user.PopupMessageOtherClients(Loc.GetString("{0} starts uprooting the weeds.", user.Name)); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-remove-weeds-message",("name", Owner.Name))); + user.PopupMessageOtherClients(Loc.GetString("plant-holder-component-remove-weeds-others-message",("otherName", user.Name))); WeedLevel = 0; UpdateSprite(); } else { - user.PopupMessageCursor(Loc.GetString("This plot is devoid of weeds! It doesn't need uprooting.")); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-no-weeds-message")); } return true; @@ -700,13 +702,13 @@ namespace Content.Server.Botany.Components { if (Seed != null) { - user.PopupMessageCursor(Loc.GetString("You remove the plant from the {0}.", Owner.Name)); - user.PopupMessageOtherClients(Loc.GetString("{0} removes the plant.", user.Name)); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-remove-plant-message",("name", Owner.Name))); + user.PopupMessageOtherClients(Loc.GetString("plant-holder-component-remove-plant-others-message",("name", user.Name))); RemovePlant(); } else { - user.PopupMessageCursor(Loc.GetString("There is no plant to remove.")); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-no-plant-message")); } return true; @@ -731,13 +733,13 @@ namespace Content.Server.Botany.Components var split = solution.Drain(amount); if (split.TotalVolume == 0) { - user.PopupMessageCursor(Loc.GetString("{0:TheName} is empty!", usingItem)); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-empty-message",("owner", usingItem))); return true; } - user.PopupMessageCursor(Loc.GetString( - sprayed ? "You spray {0:TheName}" : "You transfer {1}u to {0:TheName}", - Owner, split.TotalVolume)); + user.PopupMessageCursor(Loc.GetString(sprayed ? "plant-holder-component-spray-message" : "plant-holder-component-transfer-message", + ("owner",Owner), + ("amount",split.TotalVolume))); _solutionContainer?.TryAddSolution(split); @@ -750,25 +752,25 @@ namespace Content.Server.Botany.Components { if (Seed == null) { - user.PopupMessageCursor(Loc.GetString("There is nothing to take a sample of!")); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-nothing-to-sample-message")); return false; } if (Sampled) { - user.PopupMessageCursor(Loc.GetString("This plant has already been sampled.")); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-already-sampled-message")); return false; } if (Dead) { - user.PopupMessageCursor(Loc.GetString("This plant is dead.")); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-dead-plant-message")); return false; } var seed = Seed.SpawnSeedPacket(user.Transform.Coordinates); seed.RandomOffset(0.25f); - user.PopupMessageCursor(Loc.GetString($"You take a sample from the {Seed.DisplayName}.")); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-take-sample-message", ("seedName", Seed.DisplayName))); Health -= (_random.Next(3, 5) * 10); if (_random.Prob(0.3f)) @@ -788,8 +790,13 @@ namespace Content.Server.Botany.Components if (usingItem.HasComponent()) { - user.PopupMessageCursor(Loc.GetString("You compost {1:theName} into {0:theName}.", Owner, usingItem)); - user.PopupMessageOtherClients(Loc.GetString("{0:TheName} composts {1:theName} into {2:theName}.", user, usingItem, Owner)); + user.PopupMessageCursor(Loc.GetString("plant-holder-component-compost-message", + ("owner", Owner), + ("usingItem", usingItem))); + user.PopupMessageOtherClients(Loc.GetString("plant-holder-component-compost-others-message", + ("user",user), + ("usingItem", usingItem), + ("owner", Owner))); if (usingItem.TryGetComponent(out SolutionContainerComponent? solution2)) { @@ -826,45 +833,51 @@ namespace Content.Server.Botany.Components if (Seed == null) { - message.AddMarkup(Loc.GetString("It has nothing planted in it.\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-nothing-planted-message") + "\n"); } else if (!Dead) { - message.AddMarkup(Loc.GetString($"[color=green]{Seed.DisplayName}[/color] {(Seed.DisplayName.EndsWith('s') ? "are" : "is")} growing here.\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-something-already-growing-message", + ("seedName", Seed.DisplayName), + ("toBeForm", Seed.DisplayName.EndsWith('s') ? "are" : "is")) + + "\n"); if(Health <= Seed.Endurance / 2) - message.AddMarkup(Loc.GetString($"The plant looks [color=red]{(Age > Seed.Lifespan ? "old and wilting" : "unhealthy")}[/color].\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-something-already-growing-low-health-message", + ("healthState", Loc.GetString(Age > Seed.Lifespan ? "plant-holder-component-plant-old-adjective" : + "plant-holder-component-plant-unhealthy-adjective"))) + + "\n"); } else { - message.AddMarkup(Loc.GetString("It is full of [color=red]dead plant matter[/color].\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-dead-plant-matter-message") + "\n"); } if(WeedLevel >= 5) - message.AddMarkup(Loc.GetString("It is filled with [color=green]weeds[/color]!\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-weed-high-level-message") + "\n"); if(PestLevel >= 5) - message.AddMarkup(Loc.GetString("It is filled with [color=gray]tiny worms[/color]!\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-pest-high-level-message") + "\n"); - message.AddMarkup(Loc.GetString($"Water: [color=cyan]{(int)WaterLevel}[/color]\n")); - message.AddMarkup(Loc.GetString($"Nutrient: [color=orange]{(int)NutritionLevel}[/color]\n")); + message.AddMarkup(Loc.GetString($"plant-holder-component-water-level-message",("waterLevel", (int)WaterLevel)) + "\n"); + message.AddMarkup(Loc.GetString($"plant-holder-component-nutrient-level-message", ("nutritionLevel", (int)NutritionLevel)) + "\n"); if (DrawWarnings) { if(Toxins > 40f) - message.AddMarkup(Loc.GetString("The [color=red]toxicity level alert[/color] is flashing red.\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-toxins-high-warning") + "\n"); if(ImproperLight) - message.AddMarkup(Loc.GetString("The [color=yellow]improper light level alert[/color] is blinking.\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-light-improper-warning") + "\n"); if(ImproperHeat) - message.AddMarkup(Loc.GetString("The [color=orange]improper temperature level alert[/color] is blinking.\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-heat-improper-warning") + "\n"); if(ImproperPressure) - message.AddMarkup(Loc.GetString("The [color=lightblue]improper environment pressure alert[/color] is blinking.\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-pressure-improper-warning") + "\n"); if(_missingGas > 0) - message.AddMarkup(Loc.GetString("The [color=cyan]improper gas environment alert[/color] is blinking.\n")); + message.AddMarkup(Loc.GetString("plant-holder-component-gas-missing-warning") + "\n"); } } } diff --git a/Content.Server/Botany/Components/SeedComponent.cs b/Content.Server/Botany/Components/SeedComponent.cs index de6c308e0d..9c2728e313 100644 --- a/Content.Server/Botany/Components/SeedComponent.cs +++ b/Content.Server/Botany/Components/SeedComponent.cs @@ -32,18 +32,20 @@ namespace Content.Server.Botany.Components if (Seed == null) { - message.AddMarkup(Loc.GetString("It doesn't seem to contain any seeds.\n")); + message.AddMarkup(Loc.GetString("seed-component-no-seeds-message") + "\n"); return; } - message.AddMarkup(Loc.GetString($"It has a picture of [color=yellow]{Seed.DisplayName}[/color] on the front.\n")); + message.AddMarkup(Loc.GetString($"seed-component-description", ("seedName", Seed.DisplayName)) + "\n"); - if(!Seed.RoundStart) - message.AddMarkup(Loc.GetString($"It's tagged as variety [color=lightgray]no. {Seed.Uid}[/color].\n")); + if (!Seed.RoundStart) + { + message.AddMarkup(Loc.GetString($"seed-component-has-variety-tag", ("seedUid", Seed.Uid)) + "\n"); + } else { - message.AddMarkup(Loc.GetString($"Plant Yield: [color=lightblue]{Seed.Yield}[/color]\n")); - message.AddMarkup(Loc.GetString($"Plant Potency: [color=lightblue]{Seed.Potency}[/color]\n")); + message.AddMarkup(Loc.GetString($"seed-component-plant-yield-text", ("seedYield", Seed.Yield)) + "\n"); + message.AddMarkup(Loc.GetString($"seed-component-plant-potency-text", ("seedPotency", Seed.Potency)) + "\n"); } } } diff --git a/Content.Server/Botany/Components/SeedExtractorComponent.cs b/Content.Server/Botany/Components/SeedExtractorComponent.cs index 8b0099fa71..160fdad86a 100644 --- a/Content.Server/Botany/Components/SeedExtractorComponent.cs +++ b/Content.Server/Botany/Components/SeedExtractorComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Threading.Tasks; using Content.Server.Power.Components; using Content.Shared.Interaction; @@ -31,7 +31,7 @@ namespace Content.Server.Botany.Components if (eventArgs.Using.TryGetComponent(out ProduceComponent? produce) && produce.Seed != null) { - eventArgs.User.PopupMessageCursor(Loc.GetString("You extract some seeds from the {0}.", eventArgs.Using.Name)); + eventArgs.User.PopupMessageCursor(Loc.GetString("seed-extractor-component-interact-message",("name", eventArgs.Using.Name))); eventArgs.Using.QueueDelete(); diff --git a/Content.Server/Botany/Seed.cs b/Content.Server/Botany/Seed.cs index 44ce596024..24cdafd1f1 100644 --- a/Content.Server/Botany/Seed.cs +++ b/Content.Server/Botany/Seed.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -30,35 +30,35 @@ namespace Content.Server.Botany SelfHarvest, } -/* - public enum PlantSpread : byte - { - NoSpread, - Creepers, - Vines, - } + /* + public enum PlantSpread : byte + { + NoSpread, + Creepers, + Vines, + } - public enum PlantMutation : byte - { - NoMutation, - Mutable, - HighlyMutable, - } + public enum PlantMutation : byte + { + NoMutation, + Mutable, + HighlyMutable, + } - public enum PlantCarnivorous : byte - { - NotCarnivorous, - EatPests, - EatLivingBeings, - } + public enum PlantCarnivorous : byte + { + NotCarnivorous, + EatPests, + EatLivingBeings, + } - public enum PlantJuicy : byte - { - NotJuicy, - Juicy, - Slippery, - } -*/ + public enum PlantJuicy : byte + { + NotJuicy, + Juicy, + Slippery, + } + */ [DataDefinition] public struct SeedChemQuantity @@ -265,7 +265,7 @@ namespace Content.Server.Botany sprite.LayerSetSprite(0, new SpriteSpecifier.Rsi(PlantRsi, "seed")); } - seed.Name = Loc.GetString($"packet of {SeedName} {SeedNoun}"); + seed.Name = Loc.GetString("botany-seed-packet-name", ("seedName", SeedName), ("seedNount", SeedNoun)); return seed; } @@ -297,11 +297,11 @@ namespace Content.Server.Botany if (ProductPrototypes == null || ProductPrototypes.Count == 0 || Yield <= 0) { - user.PopupMessageCursor(Loc.GetString("You fail to harvest anything useful.")); + user.PopupMessageCursor(Loc.GetString("botany-harvest-fail-message")); return Enumerable.Empty(); } - user.PopupMessageCursor(Loc.GetString($"You harvest from the {DisplayName}")); + user.PopupMessageCursor(Loc.GetString("botany-harvest-success-message", ("name", DisplayName))); return GenerateProduct(user.Transform.Coordinates, yieldMod); } @@ -344,7 +344,7 @@ namespace Content.Server.Botany if (Mysterious) { entity.Name += "?"; - entity.Description += Loc.GetString(" On second thought, something about this one looks strange."); + entity.Description += " " + Loc.GetString("botany-mysterious-description-addon"); } } diff --git a/Content.Server/Buckle/Components/BuckleComponent.cs b/Content.Server/Buckle/Components/BuckleComponent.cs index 6dadb2cc55..d4b7da3142 100644 --- a/Content.Server/Buckle/Components/BuckleComponent.cs +++ b/Content.Server/Buckle/Components/BuckleComponent.cs @@ -163,7 +163,7 @@ namespace Content.Server.Buckle.Components if (!EntitySystem.Get().CanInteract(user)) { - user.PopupMessage(Loc.GetString("You can't do that!")); + user.PopupMessage(Loc.GetString("buckle-component-cannot-do-that-message")); return false; } @@ -193,15 +193,15 @@ namespace Content.Server.Buckle.Components if (!user.HasComponent()) { - user.PopupMessage(Loc.GetString("You don't have hands!")); + user.PopupMessage(Loc.GetString("buckle-component-no-hands-message ")); return false; } if (Buckled) { var message = Loc.GetString(Owner == user - ? "You are already buckled in!" - : "{0:They} are already buckled in!", Owner); + ? "buckle-component-already-buckled-message" + : "buckle-component-other-already-buckled-message",("owner", Owner)); Owner.PopupMessage(user, message); return false; @@ -213,8 +213,8 @@ namespace Content.Server.Buckle.Components if (parent == user.Transform) { var message = Loc.GetString(Owner == user - ? "You can't buckle yourself there!" - : "You can't buckle {0:them} there!", Owner); + ? "buckle-component-cannot-buckle-message" + : "buckle-component-other-cannot-buckle-message",("owner", Owner)); Owner.PopupMessage(user, message); return false; @@ -226,8 +226,8 @@ namespace Content.Server.Buckle.Components if (!strap.HasSpace(this)) { var message = Loc.GetString(Owner == user - ? "You can't fit there!" - : "{0:They} can't fit there!", Owner); + ? "buckle-component-cannot-fit-message" + : "buckle-component-other-cannot-fit-message",("owner", Owner)); Owner.PopupMessage(user, message); return false; @@ -248,8 +248,8 @@ namespace Content.Server.Buckle.Components if (!strap.TryAdd(this)) { var message = Loc.GetString(Owner == user - ? "You can't buckle yourself there!" - : "You can't buckle {0:them} there!", Owner); + ? "buckle-component-cannot-buckle-message" + : "buckle-component-other-cannot-buckle-message",("owner", Owner)); Owner.PopupMessage(user, message); return false; } @@ -316,7 +316,7 @@ namespace Content.Server.Buckle.Components if (!EntitySystem.Get().CanInteract(user)) { - user.PopupMessage(Loc.GetString("You can't do that!")); + user.PopupMessage(Loc.GetString("buckle-component-cannot-do-that-message")); return false; } @@ -445,7 +445,7 @@ namespace Content.Server.Buckle.Components return; } - data.Text = Loc.GetString("Unbuckle"); + data.Text = Loc.GetString("buckle-verb-unbuckle"); } protected override void Activate(IEntity user, BuckleComponent component) diff --git a/Content.Server/Buckle/Components/StrapComponent.cs b/Content.Server/Buckle/Components/StrapComponent.cs index 90ec5813ef..e27355a13e 100644 --- a/Content.Server/Buckle/Components/StrapComponent.cs +++ b/Content.Server/Buckle/Components/StrapComponent.cs @@ -206,7 +206,7 @@ namespace Content.Server.Buckle.Components data.Visibility = VerbVisibility.Visible; data.IconTexture = buckle.BuckledTo == null ? "/Textures/Interface/VerbIcons/buckle.svg.192dpi.png" : "/Textures/Interface/VerbIcons/unbuckle.svg.192dpi.png"; - data.Text = Loc.GetString(buckle.BuckledTo == null ? "Buckle" : "Unbuckle"); + data.Text = Loc.GetString(buckle.BuckledTo == null ? "strap-verb-get-data-text-buckle" : "strap-verb-get-data-text-unbuckle"); } protected override void Activate(IEntity user, StrapComponent component) diff --git a/Content.Server/Cargo/CargoOrderDatabase.cs b/Content.Server/Cargo/CargoOrderDatabase.cs index 0eee8f24c7..66043491be 100644 --- a/Content.Server/Cargo/CargoOrderDatabase.cs +++ b/Content.Server/Cargo/CargoOrderDatabase.cs @@ -86,18 +86,23 @@ namespace Content.Server.Cargo /// The order to be approved. public bool ApproveOrder(int orderNumber) { - if (CurrentOrderSize == MaxOrderSize) - return false; - if (!_orders.TryGetValue(orderNumber, out var order)) - return false; - if (order.Approved) + if (CurrentOrderSize == MaxOrderSize || + !_orders.TryGetValue(orderNumber, out var order) || + order.Approved) + { return false; + } else if (CurrentOrderSize + order.Amount > MaxOrderSize) { - AddOrder(order.Requester, Loc.GetString("{0} (Overflow)", order.Reason.Replace(" (Overflow)", "")), order.ProductId, + AddOrder( + order.Requester, + Loc.GetString("cargo-order-database-order-overflow-message", ("placeholder", order.Reason.Replace(" (Overflow)", string.Empty))), + order.ProductId, order.Amount - MaxOrderSize - CurrentOrderSize, order.PayingAccountId); + order.Amount = MaxOrderSize - CurrentOrderSize; } + order.Approved = true; CurrentOrderSize += order.Amount; return true; diff --git a/Content.Server/CharacterAppearance/Components/MagicMirrorComponent.cs b/Content.Server/CharacterAppearance/Components/MagicMirrorComponent.cs index cf9e88f49d..39dcc61096 100644 --- a/Content.Server/CharacterAppearance/Components/MagicMirrorComponent.cs +++ b/Content.Server/CharacterAppearance/Components/MagicMirrorComponent.cs @@ -102,7 +102,7 @@ namespace Content.Server.CharacterAppearance.Components if (!eventArgs.User.TryGetComponent(out HumanoidAppearanceComponent? looks)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You can't have any hair!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("magic-mirror-component-activate-user-has-no-hair")); return; } diff --git a/Content.Server/Chat/Commands/SuicideCommand.cs b/Content.Server/Chat/Commands/SuicideCommand.cs index a17be76b56..a1bad9de9b 100644 --- a/Content.Server/Chat/Commands/SuicideCommand.cs +++ b/Content.Server/Chat/Commands/SuicideCommand.cs @@ -26,12 +26,9 @@ namespace Content.Server.Chat.Commands { public string Command => "suicide"; - public string Description => "Commits suicide"; + public string Description => Loc.GetString("suicide-command-description"); - public string Help => "The suicide command gives you a quick way out of a round while remaining in-character.\n" + - "The method varies, first it will attempt to use the held item in your active hand.\n" + - "If that fails, it will attempt to use an object in the environment.\n" + - "Finally, if neither of the above worked, you will die by biting your tongue."; + public string Help => Loc.GetString("suicide-command-help-text"); private void DealDamage(ISuicideAct suicide, IChatManager chat, IDamageableComponent damageableComponent, IEntity source, IEntity target) { @@ -61,7 +58,7 @@ namespace Content.Server.Chat.Commands var player = shell.Player as IPlayerSession; if (player == null) { - shell.WriteLine("You cannot run this command from the server."); + shell.WriteLine(Loc.GetString("shell-cannot-run-command-from-server")); return; } @@ -115,10 +112,10 @@ namespace Content.Server.Chat.Commands } // Default suicide, bite your tongue - var othersMessage = Loc.GetString("{0:theName} is attempting to bite {0:their} own tongue!", owner); + var othersMessage = Loc.GetString("suicide-command-default-text-others",("name", owner)); owner.PopupMessageOtherClients(othersMessage); - var selfMessage = Loc.GetString("You attempt to bite your own tongue!"); + var selfMessage = Loc.GetString("suicide-command-default-text-self"); owner.PopupMessage(selfMessage); dmgComponent.SetDamage(DamageType.Piercing, 200, owner); diff --git a/Content.Server/Chat/Managers/ChatManager.cs b/Content.Server/Chat/Managers/ChatManager.cs index 5825181494..76708b0424 100644 --- a/Content.Server/Chat/Managers/ChatManager.cs +++ b/Content.Server/Chat/Managers/ChatManager.cs @@ -56,11 +56,6 @@ namespace Content.Server.Chat.Managers private const int VoiceRange = 7; // how far voice goes in world units - /// - /// The message displayed to the player when it exceeds the chat character limit - /// - private const string MaxLengthExceededMessage = "Your message exceeded {0} character limit"; - //TODO: make prio based? private readonly List _chatTransformHandlers = new(); private bool _oocEnabled = true; @@ -83,13 +78,13 @@ namespace Content.Server.Chat.Managers private void OnOocEnabledChanged(bool val) { _oocEnabled = val; - DispatchServerAnnouncement(val ? "OOC chat has been enabled." : "OOC chat has been disabled."); + DispatchServerAnnouncement(Loc.GetString(val ? "chat-manager-ooc-chat-enabled-message" : "chat-manager-ooc-chat-disabled-message")); } private void OnAdminOocEnabledChanged(bool val) { _adminOocEnabled = val; - DispatchServerAnnouncement(val ? "Admin OOC chat has been enabled." : "Admin OOC chat has been disabled."); + DispatchServerAnnouncement(Loc.GetString(val ? "chat-manager-admin-ooc-chat-enabled-message" : "chat-manager-admin-ooc-chat-disabled-message")); } public void DispatchServerAnnouncement(string message) @@ -97,7 +92,7 @@ namespace Content.Server.Chat.Managers var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.Server; msg.Message = message; - msg.MessageWrap = "SERVER: {0}"; + msg.MessageWrap = Loc.GetString("chat-manager-server-wrap-message"); _netManager.ServerSendToAll(msg); Logger.InfoS("SERVER", message); } @@ -107,7 +102,7 @@ namespace Content.Server.Chat.Managers var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.Radio; msg.Message = message; - msg.MessageWrap = $"{sender} Announcement:\n{{0}}"; + msg.MessageWrap = Loc.GetString("chat-manager-sender-announcement-wrap-message", ("sender", sender)); _netManager.ServerSendToAll(msg); } @@ -116,7 +111,7 @@ namespace Content.Server.Chat.Managers var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.Server; msg.Message = message; - msg.MessageWrap = "SERVER: {0}"; + msg.MessageWrap = Loc.GetString("chat-manager-server-wrap-message"); _netManager.ServerSendMessage(msg, player.ConnectedClient); } @@ -131,7 +126,7 @@ namespace Content.Server.Chat.Managers if (source.TryGetComponent(out ActorComponent? actor) && message.Length > MaxMessageLength) { - var feedback = Loc.GetString(MaxLengthExceededMessage, MaxMessageLength); + var feedback = Loc.GetString("chat-manager-max-message-length-exceeded-message", ("limit", MaxMessageLength)); DispatchServerMessage(actor.PlayerSession, feedback); @@ -170,7 +165,7 @@ namespace Content.Server.Chat.Managers } else { - source.PopupMessage(Loc.GetString("You don't have a headset on!")); + source.PopupMessage(Loc.GetString("chat-manager-no-headset-on-message")); } } else @@ -188,7 +183,7 @@ namespace Content.Server.Chat.Managers var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.Local; msg.Message = message; - msg.MessageWrap = Loc.GetString("{0} says, \"{{0}}\"", source.Name); + msg.MessageWrap = Loc.GetString("chat-manager-entity-say-wrap-message",("entityName", source.Name)); msg.SenderEntity = source.Uid; _netManager.ServerSendToMany(msg, clients); } @@ -209,7 +204,7 @@ namespace Content.Server.Chat.Managers // Check if message exceeds the character limit if (action.Length > MaxMessageLength) { - DispatchServerMessage(actor.PlayerSession, Loc.GetString(MaxLengthExceededMessage, MaxMessageLength)); + DispatchServerMessage(actor.PlayerSession, Loc.GetString("chat-manager-max-message-length-exceeded-message",("limit", MaxMessageLength))); return; } @@ -221,7 +216,7 @@ namespace Content.Server.Chat.Managers var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.Emotes; msg.Message = action; - msg.MessageWrap = $"{source.Name} {{0}}"; + msg.MessageWrap = Loc.GetString("chat-manager-entity-me-wrap-message", ("entityName",source.Name)); msg.SenderEntity = source.Uid; _netManager.ServerSendToMany(msg, clients.ToList()); } @@ -243,7 +238,7 @@ namespace Content.Server.Chat.Managers // Check if message exceeds the character limit if (message.Length > MaxMessageLength) { - DispatchServerMessage(player, Loc.GetString(MaxLengthExceededMessage, MaxMessageLength)); + DispatchServerMessage(player, Loc.GetString("chat-manager-max-message-length-exceeded-message", ("limit", MaxMessageLength))); return; } @@ -252,7 +247,7 @@ namespace Content.Server.Chat.Managers var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.OOC; msg.Message = message; - msg.MessageWrap = $"OOC: {player.Name}: {{0}}"; + msg.MessageWrap = Loc.GetString("chat-manager-send-ooc-wrap-message", ("playerName",player.Name)); if (_adminManager.HasAdminFlag(player, AdminFlags.Admin)) { var prefs = _preferencesManager.GetPreferences(player.UserId); @@ -261,7 +256,7 @@ namespace Content.Server.Chat.Managers if (player.ConnectedClient.UserData.PatronTier is { } patron && PatronOocColors.TryGetValue(patron, out var patronColor)) { - msg.MessageWrap = $"OOC: [color={patronColor}]{player.Name}[/color]: {{0}}"; + msg.MessageWrap = Loc.GetString("chat-manager-send-ooc-patron-wrap-message", ("patronColor", patronColor),("playerName", player.Name)); } //TODO: player.Name color, this will need to change the structure of the MsgChatMessage @@ -275,7 +270,7 @@ namespace Content.Server.Chat.Managers // Check if message exceeds the character limit if (message.Length > MaxMessageLength) { - DispatchServerMessage(player, Loc.GetString(MaxLengthExceededMessage, MaxMessageLength)); + DispatchServerMessage(player, Loc.GetString("chat-manager-max-message-length-exceeded-message",("limit", MaxMessageLength))); return; } @@ -286,7 +281,9 @@ namespace Content.Server.Chat.Managers var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.Dead; msg.Message = message; - msg.MessageWrap = $"{Loc.GetString("DEAD")}: {player.AttachedEntity?.Name}: {{0}}"; + msg.MessageWrap = Loc.GetString("chat-manager-send-dead-chat-wrap-message", + ("deadChannelName", Loc.GetString("chat-manager-dead-channel-name")), + ("playerName", player.AttachedEntity?.Name ?? "???")); msg.SenderEntity = player.AttachedEntityUid.GetValueOrDefault(); _netManager.ServerSendToMany(msg, clients.ToList()); } @@ -296,7 +293,7 @@ namespace Content.Server.Chat.Managers // Check if message exceeds the character limit if (message.Length > MaxMessageLength) { - DispatchServerMessage(player, Loc.GetString(MaxLengthExceededMessage, MaxMessageLength)); + DispatchServerMessage(player, Loc.GetString("chat-manager-max-message-length-exceeded-message", ("limit", MaxMessageLength))); return; } @@ -307,7 +304,9 @@ namespace Content.Server.Chat.Managers var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.Dead; msg.Message = message; - msg.MessageWrap = $"{Loc.GetString("ADMIN")}:(${player.ConnectedClient.UserName}): {{0}}"; + msg.MessageWrap = Loc.GetString("chat-manager-send-admin-dead-chat-wrap-message", + ("adminChannelName", Loc.GetString("chat-manager-admin-channel-name")), + ("userName", player.ConnectedClient.UserName)); _netManager.ServerSendToMany(msg, clients.ToList()); } @@ -324,7 +323,7 @@ namespace Content.Server.Chat.Managers // Check if message exceeds the character limit if (message.Length > MaxMessageLength) { - DispatchServerMessage(player, Loc.GetString(MaxLengthExceededMessage, MaxMessageLength)); + DispatchServerMessage(player, Loc.GetString("chat-manager-max-message-length-exceeded-message", ("limit", MaxMessageLength))); return; } @@ -336,7 +335,9 @@ namespace Content.Server.Chat.Managers msg.Channel = ChatChannel.AdminChat; msg.Message = message; - msg.MessageWrap = $"{Loc.GetString("ADMIN")}: {player.Name}: {{0}}"; + msg.MessageWrap = Loc.GetString("chat-manager-send-admin-chat-wrap-message", + ("adminChannelName", Loc.GetString("chat-manager-admin-channel-name")), + ("playerName", player.Name)); _netManager.ServerSendToMany(msg, clients.ToList()); } @@ -350,7 +351,8 @@ namespace Content.Server.Chat.Managers msg.Channel = ChatChannel.AdminChat; msg.Message = message; - msg.MessageWrap = $"{Loc.GetString("ADMIN")}: {{0}}"; + msg.MessageWrap = Loc.GetString("chat-manager-send-admin-announcement-wrap-message", + ("adminChannelName", Loc.GetString("chat-manager-admin-channel-name"))); _netManager.ServerSendToMany(msg, clients.ToList()); } @@ -362,7 +364,7 @@ namespace Content.Server.Chat.Managers var msg = _netManager.CreateNetMessage(); msg.Channel = ChatChannel.OOC; msg.Message = message; - msg.MessageWrap = $"OOC: (D){sender}: {{0}}"; + msg.MessageWrap = Loc.GetString("chat-manager-send-hook-ooc-wrap-message", ("senderName", sender)); _netManager.ServerSendToAll(msg); } diff --git a/Content.Server/Chemistry/Components/ChemMasterComponent.cs b/Content.Server/Chemistry/Components/ChemMasterComponent.cs index c39e0b3ec6..b06c5c9479 100644 --- a/Content.Server/Chemistry/Components/ChemMasterComponent.cs +++ b/Content.Server/Chemistry/Components/ChemMasterComponent.cs @@ -355,7 +355,7 @@ namespace Content.Server.Chemistry.Components if (!args.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(args.User, Loc.GetString("You have no hands.")); + Owner.PopupMessage(args.User, Loc.GetString("chem-master-component-activate-no-hands")); return; } @@ -377,13 +377,13 @@ namespace Content.Server.Chemistry.Components { if (!args.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(args.User, Loc.GetString("You have no hands!")); + Owner.PopupMessage(args.User, Loc.GetString("chem-master-component-interact-using-no-hands")); return true; } if (hands.GetActiveHand == null) { - Owner.PopupMessage(args.User, Loc.GetString("You have nothing in your hand!")); + Owner.PopupMessage(args.User, Loc.GetString("chem-master-component-interact-using-nothing-in-hands")); return false; } @@ -392,12 +392,12 @@ namespace Content.Server.Chemistry.Components { if (HasBeaker) { - Owner.PopupMessage(args.User, Loc.GetString("This ChemMaster already has a container in it.")); + Owner.PopupMessage(args.User, Loc.GetString("chem-master-component-has-beaker-already-message")); } else if (!solution.CanUseWithChemDispenser) { //If it can't fit in the chem master, don't put it in. For example, buckets and mop buckets can't fit. - Owner.PopupMessage(args.User, Loc.GetString("The {0:theName} is too large for the ChemMaster!", activeHandEntity)); + Owner.PopupMessage(args.User, Loc.GetString("chem-master-component-container-too-large-message",("container", activeHandEntity))); } else { @@ -407,7 +407,7 @@ namespace Content.Server.Chemistry.Components } else { - Owner.PopupMessage(args.User, Loc.GetString("You can't put {0:theName} in the ChemMaster!", activeHandEntity)); + Owner.PopupMessage(args.User, Loc.GetString("chem-master-component-cannot-put-entity-message", ("entity", activeHandEntity))); } return true; @@ -431,7 +431,7 @@ namespace Content.Server.Chemistry.Components return; } - data.Text = Loc.GetString("Eject Beaker"); + data.Text = Loc.GetString("eject-beaker-verb-get-data-text"); data.Visibility = component.HasBeaker ? VerbVisibility.Visible : VerbVisibility.Invisible; } diff --git a/Content.Server/Chemistry/Components/HyposprayComponent.cs b/Content.Server/Chemistry/Components/HyposprayComponent.cs index b352c539b6..0e2c688f47 100644 --- a/Content.Server/Chemistry/Components/HyposprayComponent.cs +++ b/Content.Server/Chemistry/Components/HyposprayComponent.cs @@ -41,28 +41,28 @@ namespace Content.Server.Chemistry.Components if (target == null || !EligibleEntity(target)) return false; - var msgFormat = "You inject {0:TheName}."; + string? msgFormat = null; if (target == user) { - msgFormat = "You inject yourself."; + msgFormat = "hypospray-component-inject-self-message"; } else if (EligibleEntity(user) && ClumsyComponent.TryRollClumsy(user, ClumsyFailChance)) { - msgFormat = "Oops! You injected yourself!"; + msgFormat = "hypospray-component-inject-self-clumsy-message"; target = user; } if (_solution == null || _solution.CurrentVolume == 0) { - user.PopupMessageCursor(Loc.GetString("It's empty!")); + user.PopupMessageCursor(Loc.GetString("hypospray-component-empty-message")); return true; } - user.PopupMessage(Loc.GetString(msgFormat, target)); + user.PopupMessage(Loc.GetString(msgFormat ?? "hypospray-component-inject-other-message",("other", target))); if (target != user) { - target.PopupMessage(Loc.GetString("You feel a tiny prick!")); + target.PopupMessage(Loc.GetString("hypospray-component-feel-prick-message")); var meleeSys = EntitySystem.Get(); var angle = Angle.FromWorldVec(target.Transform.WorldPosition - user.Transform.WorldPosition); meleeSys.SendLunge(angle, user); @@ -77,7 +77,7 @@ namespace Content.Server.Chemistry.Components if (realTransferAmount <= 0) { - user.PopupMessage(user, Loc.GetString("{0:TheName} is already full!", targetSolution.Owner)); + user.PopupMessage(user, Loc.GetString("hypospray-component-transfer-already-full-message ",("owner", targetSolution.Owner))); return true; } diff --git a/Content.Server/Chemistry/Components/InjectorComponent.cs b/Content.Server/Chemistry/Components/InjectorComponent.cs index c965315afb..2d41190eff 100644 --- a/Content.Server/Chemistry/Components/InjectorComponent.cs +++ b/Content.Server/Chemistry/Components/InjectorComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Threading.Tasks; using Content.Server.Body.Circulatory; @@ -88,11 +88,11 @@ namespace Content.Server.Chemistry.Components { case InjectorToggleMode.Inject: ToggleState = InjectorToggleMode.Draw; - msg = "Now drawing"; + msg = "injector-component-drawing-text"; break; case InjectorToggleMode.Draw: ToggleState = InjectorToggleMode.Inject; - msg = "Now injecting"; + msg = "injector-component-injecting-text"; break; default: throw new ArgumentOutOfRangeException(); @@ -130,7 +130,7 @@ namespace Content.Server.Chemistry.Components else { eventArgs.User.PopupMessage(eventArgs.User, - Loc.GetString("You aren't able to transfer to {0:theName}!", targetSolution.Owner)); + Loc.GetString("injector-component-cannot-transfer-message", ("owner", targetSolution.Owner))); } } else if (ToggleState == InjectorToggleMode.Draw) @@ -142,7 +142,7 @@ namespace Content.Server.Chemistry.Components else { eventArgs.User.PopupMessage(eventArgs.User, - Loc.GetString("You aren't able to draw from {0:theName}!", targetSolution.Owner)); + Loc.GetString("injector-component-cannot-draw-message", ("owner", targetSolution.Owner))); } } } @@ -180,7 +180,7 @@ namespace Content.Server.Chemistry.Components if (realTransferAmount <= 0) { Owner.PopupMessage(user, - Loc.GetString("You aren't able to inject {0:theName}!", targetBloodstream.Owner)); + Loc.GetString("injector-component-cannot-inject-message",("owner", targetBloodstream.Owner))); return; } @@ -201,8 +201,9 @@ namespace Content.Server.Chemistry.Components removedSolution.DoEntityReaction(targetBloodstream.Owner, ReactionMethod.Injection); Owner.PopupMessage(user, - Loc.GetString("You inject {0}u into {1:theName}!", removedSolution.TotalVolume, - targetBloodstream.Owner)); + Loc.GetString("injector-component-inject-success-message", + ("amount", removedSolution.TotalVolume), + ("target", targetBloodstream.Owner))); Dirty(); AfterInject(); } @@ -219,7 +220,7 @@ namespace Content.Server.Chemistry.Components if (realTransferAmount <= 0) { - Owner.PopupMessage(user, Loc.GetString("{0:theName} is already full!", targetSolution.Owner)); + Owner.PopupMessage(user, Loc.GetString("injector-component-target-already-full-message", ("target", targetSolution.Owner))); return; } @@ -231,7 +232,9 @@ namespace Content.Server.Chemistry.Components targetSolution.Inject(removedSolution); Owner.PopupMessage(user, - Loc.GetString("You transfer {0}u to {1:theName}", removedSolution.TotalVolume, targetSolution.Owner)); + Loc.GetString("injector-component-transfer-success-message", + ("amount", removedSolution.TotalVolume), + ("target", targetSolution.Owner))); Dirty(); AfterInject(); } @@ -257,7 +260,7 @@ namespace Content.Server.Chemistry.Components if (realTransferAmount <= 0) { - Owner.PopupMessage(user, Loc.GetString("{0:theName} is empty!", targetSolution.Owner)); + Owner.PopupMessage(user, Loc.GetString("injector-component-target-is-empty-message",("target", targetSolution.Owner))); return; } @@ -270,7 +273,9 @@ namespace Content.Server.Chemistry.Components } Owner.PopupMessage(user, - Loc.GetString("Drew {0}u from {1:theName}", removedSolution.TotalVolume, targetSolution.Owner)); + Loc.GetString("injector-component-draw-success-message", + ("amount", removedSolution.TotalVolume), + ("target", targetSolution.Owner))); Dirty(); AfterDraw(); } diff --git a/Content.Server/Chemistry/Components/PillComponent.cs b/Content.Server/Chemistry/Components/PillComponent.cs index 95c0cb3b85..770558ca59 100644 --- a/Content.Server/Chemistry/Components/PillComponent.cs +++ b/Content.Server/Chemistry/Components/PillComponent.cs @@ -88,7 +88,7 @@ namespace Content.Server.Chemistry.Components if (firstStomach == null) { _contents.TryAddSolution(split); - trueTarget.PopupMessage(user, Loc.GetString("You can't eat any more!")); + trueTarget.PopupMessage(user, Loc.GetString("pill-component-cannot-eat-more-message")); return false; } @@ -103,7 +103,7 @@ namespace Content.Server.Chemistry.Components SoundSystem.Play(Filter.Pvs(trueTarget), UseSound, trueTarget, AudioParams.Default.WithVolume(-1f)); } - trueTarget.PopupMessage(user, Loc.GetString("You swallow the pill.")); + trueTarget.PopupMessage(user, Loc.GetString("pill-component-swallow-success-message")); Owner.QueueDelete(); return true; diff --git a/Content.Server/Chemistry/Components/ReagentDispenserComponent.cs b/Content.Server/Chemistry/Components/ReagentDispenserComponent.cs index 5b318b001d..66c31a9357 100644 --- a/Content.Server/Chemistry/Components/ReagentDispenserComponent.cs +++ b/Content.Server/Chemistry/Components/ReagentDispenserComponent.cs @@ -297,7 +297,7 @@ namespace Content.Server.Chemistry.Components if (!args.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(args.User, Loc.GetString("You have no hands.")); + Owner.PopupMessage(args.User, Loc.GetString("reagent-dispenser-component-activate-no-hands")); return; } @@ -319,13 +319,13 @@ namespace Content.Server.Chemistry.Components { if (!args.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(args.User, Loc.GetString("You have no hands.")); + Owner.PopupMessage(args.User, Loc.GetString("reagent-dispenser-component-interact-using-no-hands")); return true; } if (hands.GetActiveHand == null) { - Owner.PopupMessage(args.User, Loc.GetString("You have nothing on your hand.")); + Owner.PopupMessage(args.User, Loc.GetString("reagent-dispenser-component-interact-using-nothing-in-hands")); return false; } @@ -334,12 +334,12 @@ namespace Content.Server.Chemistry.Components { if (HasBeaker) { - Owner.PopupMessage(args.User, Loc.GetString("This dispenser already has a container in it.")); + Owner.PopupMessage(args.User, Loc.GetString("reagent-dispenser-component-has-container-already-message")); } else if ((solution.Capabilities & SolutionContainerCaps.FitsInDispenser) == 0) { //If it can't fit in the dispenser, don't put it in. For example, buckets and mop buckets can't fit. - Owner.PopupMessage(args.User, Loc.GetString("That can't fit in the dispenser.")); + Owner.PopupMessage(args.User, Loc.GetString("reagent-dispenser-component-cannot-fit-message")); } else { @@ -349,7 +349,7 @@ namespace Content.Server.Chemistry.Components } else { - Owner.PopupMessage(args.User, Loc.GetString("You can't put this in the dispenser.")); + Owner.PopupMessage(args.User, Loc.GetString("reagent-dispenser-component-cannot-put-entity-message", ("entity", activeHandEntity))); } return true; @@ -373,7 +373,7 @@ namespace Content.Server.Chemistry.Components return; } - data.Text = Loc.GetString("Eject Beaker"); + data.Text = Loc.GetString("eject-beaker-verb-get-data-text"); data.Visibility = component.HasBeaker ? VerbVisibility.Visible : VerbVisibility.Invisible; } diff --git a/Content.Server/Chemistry/Components/RehydratableComponent.cs b/Content.Server/Chemistry/Components/RehydratableComponent.cs index fe3da8cee0..91cf6853dd 100644 --- a/Content.Server/Chemistry/Components/RehydratableComponent.cs +++ b/Content.Server/Chemistry/Components/RehydratableComponent.cs @@ -45,7 +45,7 @@ namespace Content.Server.Chemistry.Components return; } _expanding = true; - Owner.PopupMessageEveryone(Loc.GetString("{0:TheName} expands!", Owner)); + Owner.PopupMessageEveryone(Loc.GetString("rehydratable-component-expands-message",("owner", Owner))); if (!string.IsNullOrEmpty(_targetPrototype)) { var ent = Owner.EntityManager.SpawnEntity(_targetPrototype, Owner.Transform.Coordinates); diff --git a/Content.Server/Chemistry/Components/SolutionTransferComponent.cs b/Content.Server/Chemistry/Components/SolutionTransferComponent.cs index 1333999459..38238299d7 100644 --- a/Content.Server/Chemistry/Components/SolutionTransferComponent.cs +++ b/Content.Server/Chemistry/Components/SolutionTransferComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Threading.Tasks; using Content.Shared.Chemistry.Reagent; using Content.Shared.Chemistry.Solution.Components; @@ -68,10 +68,10 @@ namespace Content.Server.Chemistry.Components { var toTheBrim = ownerSolution.RefillSpaceAvailable == 0; var msg = toTheBrim - ? "You fill {0:TheName} to the brim with {1}u from {2:theName}" - : "You fill {0:TheName} with {1}u from {2:theName}"; + ? "solution-transfer-component-fill-to-brim-message" + : "solution-transfer-component-fill--message"; - target.PopupMessage(eventArgs.User, Loc.GetString(msg, Owner, transferred, target)); + target.PopupMessage(eventArgs.User, Loc.GetString(msg,("owner", Owner),("amount", transferred),("target", target))); return true; } } @@ -82,8 +82,10 @@ namespace Content.Server.Chemistry.Components if (transferred > 0) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You transfer {0}u to {1:theName}.", - transferred, target)); + Owner.PopupMessage(eventArgs.User, + Loc.GetString("solution-transfer-component-transfer-success-message", + ("amount",transferred), + ("target",target))); return true; } @@ -101,13 +103,13 @@ namespace Content.Server.Chemistry.Components { if (source.DrainAvailable == 0) { - source.Owner.PopupMessage(user, Loc.GetString("{0:TheName} is empty!", source.Owner)); + source.Owner.PopupMessage(user, Loc.GetString("solution-transfer-component-do-transfer-component-is-empty", ("entity",source.Owner))); return ReagentUnit.Zero; } if (target.RefillSpaceAvailable == 0) { - target.Owner.PopupMessage(user, Loc.GetString("{0:TheName} is full!", target.Owner)); + target.Owner.PopupMessage(user, Loc.GetString("solution-transfer-component-do-transfer-component-is-full", ("entity", target.Owner))); return ReagentUnit.Zero; } diff --git a/Content.Server/Clothing/Components/MagbootsComponent.cs b/Content.Server/Clothing/Components/MagbootsComponent.cs index 9101646f88..10b4cae51b 100644 --- a/Content.Server/Clothing/Components/MagbootsComponent.cs +++ b/Content.Server/Clothing/Components/MagbootsComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Server.Alert; using Content.Server.Atmos.Components; using Content.Server.Inventory.Components; @@ -131,7 +131,7 @@ namespace Content.Server.Clothing.Components return; } - data.Text = Loc.GetString("Toggle Magboots"); + data.Text = Loc.GetString("toggle-magboots-verb-get-data-text"); } protected override void Activate(IEntity user, MagbootsComponent component) diff --git a/Content.Server/Configurable/ConfigurationComponent.cs b/Content.Server/Configurable/ConfigurationComponent.cs index bb7239450a..0aeafeeabf 100644 --- a/Content.Server/Configurable/ConfigurationComponent.cs +++ b/Content.Server/Configurable/ConfigurationComponent.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -43,7 +43,7 @@ namespace Content.Server.Configurable { foreach (var key in _keys) { - _config.Add(key, ""); + _config.Add(key, string.Empty); } } @@ -102,7 +102,7 @@ namespace Content.Server.Configurable { var value = msg.Config.GetValueOrDefault(key); - if (value == null || _validation != null && !_validation.IsMatch(value) && value != "") + if (value == null || _validation != null && !_validation.IsMatch(value) && value != string.Empty) continue; _config[key] = value; @@ -144,7 +144,7 @@ namespace Content.Server.Configurable return; } - data.Text = Loc.GetString("Open Configuration"); + data.Text = Loc.GetString("configure-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/settings.svg.192dpi.png"; } diff --git a/Content.Server/Construction/Components/ConstructionComponent.Verbs.cs b/Content.Server/Construction/Components/ConstructionComponent.Verbs.cs index d73658a728..96f7b0b8c4 100644 --- a/Content.Server/Construction/Components/ConstructionComponent.Verbs.cs +++ b/Content.Server/Construction/Components/ConstructionComponent.Verbs.cs @@ -1,4 +1,4 @@ -using Content.Shared.ActionBlocker; +using Content.Shared.ActionBlocker; using Content.Shared.Interaction.Events; using Content.Shared.Notification.Managers; using Content.Shared.Verbs; @@ -28,7 +28,7 @@ namespace Content.Server.Construction.Components } data.CategoryData = VerbCategories.Construction; - data.Text = Loc.GetString("Begin deconstructing"); + data.Text = Loc.GetString("deconstructible-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/rotate_ccw.svg.192dpi.png"; } @@ -38,11 +38,11 @@ namespace Content.Server.Construction.Components if (component.Target == null) { // Maybe check, but on the flip-side a better solution might be to not make it undeconstructible in the first place, no? - component.Owner.PopupMessage(user, Loc.GetString("There is no way to deconstruct this.")); + component.Owner.PopupMessage(user, Loc.GetString("deconstructible-verb-activate-no-target-text")); } else { - component.Owner.PopupMessage(user, Loc.GetString("Examine to see instructions.")); + component.Owner.PopupMessage(user, Loc.GetString("deconstructible-verb-activate-text")); } } } diff --git a/Content.Server/Construction/Components/ConstructionComponent.cs b/Content.Server/Construction/Components/ConstructionComponent.cs index 77ace559b5..8b86182e5a 100644 --- a/Content.Server/Construction/Components/ConstructionComponent.cs +++ b/Content.Server/Construction/Components/ConstructionComponent.cs @@ -536,7 +536,7 @@ namespace Content.Server.Construction.Components void IExamine.Examine(FormattedMessage message, bool inDetailsRange) { if(Target != null) - message.AddMarkup(Loc.GetString("To create {0}...\n", Target.Name)); + message.AddMarkup(Loc.GetString("construction-component-to-create-header",("targetName", Target.Name)) + "\n"); if (Edge == null && TargetNextEdge != null) { diff --git a/Content.Server/Construction/Components/MachineBoardComponent.cs b/Content.Server/Construction/Components/MachineBoardComponent.cs index cdee5f1826..d67216aece 100644 --- a/Content.Server/Construction/Components/MachineBoardComponent.cs +++ b/Content.Server/Construction/Components/MachineBoardComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Content.Shared.Examine; using Content.Shared.Stacks; @@ -53,25 +53,37 @@ namespace Content.Server.Construction.Components public void Examine(FormattedMessage message, bool inDetailsRange) { - message.AddMarkup(Loc.GetString("Requires:\n")); + message.AddMarkup(Loc.GetString("machine-board-component-on-examine-label") + "\n"); foreach (var (part, amount) in Requirements) { - message.AddMarkup(Loc.GetString("[color=yellow]{0}x[/color] [color=green]{1}[/color]\n", amount, Loc.GetString(part.ToString()))); + message.AddMarkup(Loc.GetString("machine-board-component-required-element-entry-text", + ("amount", amount), + ("requiredElement", Loc.GetString(part.ToString()))) + + "\n"); } foreach (var (material, amount) in MaterialRequirements) { - message.AddMarkup(Loc.GetString("[color=yellow]{0}x[/color] [color=green]{1}[/color]\n", amount, Loc.GetString(material.Name))); + message.AddMarkup(Loc.GetString("machine-board-component-required-element-entry-text", + ("amount", amount), + ("requiredElement", Loc.GetString(material.Name))) + + "\n"); } foreach (var (_, info) in ComponentRequirements) { - message.AddMarkup(Loc.GetString("[color=yellow]{0}x[/color] [color=green]{1}[/color]\n", info.Amount, Loc.GetString(info.ExamineName))); + message.AddMarkup(Loc.GetString("machine-board-component-required-element-entry-text", + ("amount", info.Amount), + ("requiredElement", Loc.GetString(info.ExamineName))) + + "\n"); } foreach (var (_, info) in TagRequirements) { - message.AddMarkup(Loc.GetString("[color=yellow]{0}x[/color] [color=green]{1}[/color]\n", info.Amount, Loc.GetString(info.ExamineName))); + message.AddMarkup(Loc.GetString("machine-board-component-required-element-entry-text", + ("amount", info.Amount), + ("requiredElement", Loc.GetString(info.ExamineName))) + + "\n"); } } } diff --git a/Content.Server/Construction/Components/MachinePartComponent.cs b/Content.Server/Construction/Components/MachinePartComponent.cs index e8ef2a0445..8286cbe601 100644 --- a/Content.Server/Construction/Components/MachinePartComponent.cs +++ b/Content.Server/Construction/Components/MachinePartComponent.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Shared.Examine; using Robust.Shared.GameObjects; using Robust.Shared.Localization; @@ -38,8 +38,8 @@ namespace Content.Server.Construction.Components public void Examine(FormattedMessage message, bool inDetailsRange) { - message.AddMarkup(Loc.GetString("[color=white]Rating:[/color] [color=cyan]{0}[/color]\n", Rating)); - message.AddMarkup(Loc.GetString("[color=white]Type:[/color] [color=cyan]{0}[/color]\n", PartType)); + message.AddMarkup(Loc.GetString("machine-part-component-on-examine-rating-text", ("rating", Rating)) + "\n"); + message.AddMarkup(Loc.GetString("machine-part-component-on-examine-type-text", ("type", PartType)) + "\n"); } } } diff --git a/Content.Server/Construction/Conditions/MachineFrameComplete.cs b/Content.Server/Construction/Conditions/MachineFrameComplete.cs index ce0e4bbc64..ebb0fb7bf7 100644 --- a/Content.Server/Construction/Conditions/MachineFrameComplete.cs +++ b/Content.Server/Construction/Conditions/MachineFrameComplete.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Content.Server.Construction.Components; using Content.Shared.Construction; using JetBrains.Annotations; @@ -31,20 +31,23 @@ namespace Content.Server.Construction.Conditions if (!machineFrame.HasBoard) { - message.AddMarkup(Loc.GetString("Insert [color=cyan]any machine circuit board[/color].")); + message.AddMarkup(Loc.GetString("construction-condition-machine-frame-insert-circuit-board-message")); return true; } if (machineFrame.IsComplete) return false; - message.AddMarkup(Loc.GetString("Requires:\n")); + message.AddMarkup(Loc.GetString("construction-condition-machine-frame-requirement-label") + "\n"); foreach (var (part, required) in machineFrame.Requirements) { var amount = required - machineFrame.Progress[part]; if(amount == 0) continue; - message.AddMarkup(Loc.GetString("[color=yellow]{0}x[/color] [color=green]{1}[/color]\n", amount, Loc.GetString(part.ToString()))); + message.AddMarkup(Loc.GetString("construction-condition-machine-frame-required-element-entry", + ("amount", amount), + ("elementName", Loc.GetString(part.ToString()))) + + "\n"); } foreach (var (material, required) in machineFrame.MaterialRequirements) @@ -53,7 +56,10 @@ namespace Content.Server.Construction.Conditions if(amount == 0) continue; - message.AddMarkup(Loc.GetString("[color=yellow]{0}x[/color] [color=green]{1}[/color]\n", amount, Loc.GetString(material.ToString()))); + message.AddMarkup(Loc.GetString("construction-condition-machine-frame-required-element-entry", + ("amount", amount), + ("elementName", Loc.GetString(material.ToString()))) + + "\n"); } foreach (var (compName, info) in machineFrame.ComponentRequirements) @@ -62,7 +68,10 @@ namespace Content.Server.Construction.Conditions if(amount == 0) continue; - message.AddMarkup(Loc.GetString("[color=yellow]{0}x[/color] [color=green]{1}[/color]\n", info.Amount, Loc.GetString(info.ExamineName))); + message.AddMarkup(Loc.GetString("construction-condition-machine-frame-required-element-entry", + ("amount", info.Amount), + ("elementName", Loc.GetString(info.ExamineName))) + + "\n"); } foreach (var (tagName, info) in machineFrame.TagRequirements) @@ -71,7 +80,10 @@ namespace Content.Server.Construction.Conditions if(amount == 0) continue; - message.AddMarkup(Loc.GetString("[color=yellow]{0}x[/color] [color=green]{1}[/color]\n", info.Amount, Loc.GetString(info.ExamineName))); + message.AddMarkup(Loc.GetString("construction-condition-machine-frame-required-element-entry", + ("amount", info.Amount), + ("elementName", Loc.GetString(info.ExamineName))) + + "\n"); } return true; diff --git a/Content.Server/Construction/Conditions/ToiletLidClosed.cs b/Content.Server/Construction/Conditions/ToiletLidClosed.cs index 1f66c53d8b..7fb338aebf 100644 --- a/Content.Server/Construction/Conditions/ToiletLidClosed.cs +++ b/Content.Server/Construction/Conditions/ToiletLidClosed.cs @@ -25,7 +25,7 @@ namespace Content.Server.Construction.Conditions if (!entity.TryGetComponent(out ToiletComponent? toilet)) return false; if (!toilet.LidOpen) return false; - message.AddMarkup(Loc.GetString("Use a [color=yellow]crowbar[/color] to close the lid.\n")); + message.AddMarkup(Loc.GetString("construction-condition-toilet-lid-closed") + "\n"); return true; } } diff --git a/Content.Server/Construction/Conditions/WirePanel.cs b/Content.Server/Construction/Conditions/WirePanel.cs index cbd2c8fc40..a966a3c845 100644 --- a/Content.Server/Construction/Conditions/WirePanel.cs +++ b/Content.Server/Construction/Conditions/WirePanel.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Content.Server.GameObjects.Components; using Content.Server.Wires.Components; using Content.Shared.Construction; @@ -30,10 +30,10 @@ namespace Content.Server.Construction.Conditions switch (Open) { case true when !wires.IsPanelOpen: - message.AddMarkup(Loc.GetString("First, open the maintenance panel.\n")); + message.AddMarkup(Loc.GetString("construction-condition-wire-panel-open") + "\n"); return true; case false when wires.IsPanelOpen: - message.AddMarkup(Loc.GetString("First, close the maintenance panel.\n")); + message.AddMarkup(Loc.GetString("construction-condition-wire-panel-close") + "\n"); return true; } diff --git a/Content.Server/Construction/ConstructionSystem.cs b/Content.Server/Construction/ConstructionSystem.cs index 6f8b4d07e6..a102f51697 100644 --- a/Content.Server/Construction/ConstructionSystem.cs +++ b/Content.Server/Construction/ConstructionSystem.cs @@ -98,7 +98,7 @@ namespace Content.Server.Construction if (existed) { - user.PopupMessageCursor(Loc.GetString("You can't start another construction now!")); + user.PopupMessageCursor(Loc.GetString("construction-system-construct-cannot-start-another-construction")); return null; } @@ -222,7 +222,7 @@ namespace Content.Server.Construction if (failed) { - user.PopupMessageCursor(Loc.GetString("You don't have the materials to build that!")); + user.PopupMessageCursor(Loc.GetString("construction-system-construct-no-materials")); FailCleanup(); return null; } @@ -374,7 +374,7 @@ namespace Content.Server.Construction { if (!set.Add(ev.Ack)) { - user.PopupMessageCursor(Loc.GetString("You are already building that!")); + user.PopupMessageCursor(Loc.GetString("construction-system-already-building")); return; } } diff --git a/Content.Server/Crayon/CrayonComponent.cs b/Content.Server/Crayon/CrayonComponent.cs index 123407ce30..13d0f4b90b 100644 --- a/Content.Server/Crayon/CrayonComponent.cs +++ b/Content.Server/Crayon/CrayonComponent.cs @@ -121,7 +121,7 @@ namespace Content.Server.Crayon if (Charges <= 0) { - eventArgs.User.PopupMessage(Loc.GetString("Not enough left.")); + eventArgs.User.PopupMessage(Loc.GetString("crayon-interact-not-enough-left-text")); return true; } diff --git a/Content.Server/Cuffs/Components/CuffableComponent.cs b/Content.Server/Cuffs/Components/CuffableComponent.cs index 9da1f5f041..0e3c3fa623 100644 --- a/Content.Server/Cuffs/Components/CuffableComponent.cs +++ b/Content.Server/Cuffs/Components/CuffableComponent.cs @@ -211,13 +211,13 @@ namespace Content.Server.Cuffs.Components // TODO: Make into an event and instead have a system check for owner. if (!isOwner && !EntitySystem.Get().CanInteract(user)) { - user.PopupMessage(Loc.GetString("You can't do that!")); + user.PopupMessage(Loc.GetString("cuffable-component-cannot-interact-message")); return; } if (!isOwner && !user.InRangeUnobstructed(Owner)) { - user.PopupMessage(Loc.GetString("You are too far away to remove the cuffs.")); + user.PopupMessage(Loc.GetString("cuffable-component-cannot-remove-cuffs-too-far-message")); return; } @@ -228,7 +228,7 @@ namespace Content.Server.Cuffs.Components return; } - user.PopupMessage(Loc.GetString("You start removing the cuffs.")); + user.PopupMessage(Loc.GetString("cuffable-component-start-removing-cuffs-message")); if (isOwner) { @@ -286,29 +286,33 @@ namespace Content.Server.Cuffs.Components if (CuffedHandCount == 0) { - user.PopupMessage(Loc.GetString("You successfully remove the cuffs.")); + user.PopupMessage(Loc.GetString("cuffable-component-remove-cuffs-success-message")); if (!isOwner) { - user.PopupMessage(Owner, Loc.GetString("{0:theName} uncuffs your hands.", user)); + user.PopupMessage(Owner, Loc.GetString("cuffable-component-remove-cuffs-by-other-success-message",("otherName", user))); } } else { if (!isOwner) { - user.PopupMessage(Loc.GetString("You successfully remove the cuffs. {0} of {1:theName}'s hands remain cuffed.", CuffedHandCount, user)); - user.PopupMessage(Owner, Loc.GetString("{0:theName} removes your cuffs. {1} of your hands remain cuffed.", user, CuffedHandCount)); + user.PopupMessage(Loc.GetString("cuffable-component-remove-cuffs-partial-success-message", + ("cuffedHandCount", CuffedHandCount), + ("otherName", user))); + user.PopupMessage(Owner, Loc.GetString("cuffable-component-remove-cuffs-by-other-partial-success-message", + ("otherName", user), + ("cuffedHandCount", CuffedHandCount))); } else { - user.PopupMessage(Loc.GetString("You successfully remove the cuffs. {0} of your hands remain cuffed.", CuffedHandCount)); + user.PopupMessage(Loc.GetString("cuffable-component-remove-cuffs-partial-success-message",("cuffedHandCount", CuffedHandCount))); } } } else { - user.PopupMessage(Loc.GetString("You fail to remove the cuffs.")); + user.PopupMessage(Loc.GetString("cuffable-component-remove-cuffs-fail-message")); } return; @@ -328,7 +332,7 @@ namespace Content.Server.Cuffs.Components return; } - data.Text = Loc.GetString("Uncuff"); + data.Text = Loc.GetString("uncuff-verb-get-data-text"); } protected override void Activate(IEntity user, CuffableComponent component) diff --git a/Content.Server/Cuffs/Components/HandcuffComponent.cs b/Content.Server/Cuffs/Components/HandcuffComponent.cs index 546de4ab15..66fd797321 100644 --- a/Content.Server/Cuffs/Components/HandcuffComponent.cs +++ b/Content.Server/Cuffs/Components/HandcuffComponent.cs @@ -153,36 +153,36 @@ namespace Content.Server.Cuffs.Components if (eventArgs.Target == eventArgs.User) { - eventArgs.User.PopupMessage(Loc.GetString("You can't cuff yourself!")); + eventArgs.User.PopupMessage(Loc.GetString("handcuff-component-target-self-error")); return true; } if (Broken) { - eventArgs.User.PopupMessage(Loc.GetString("The cuffs are broken!")); + eventArgs.User.PopupMessage(Loc.GetString("handcuff-component-cuffs-broken-error")); return true; } if (!eventArgs.Target.TryGetComponent(out var hands)) { - eventArgs.User.PopupMessage(Loc.GetString("{0:theName} has no hands!", eventArgs.Target)); + eventArgs.User.PopupMessage(Loc.GetString("handcuff-component-target-has-no-hands-error",("targetName", eventArgs.Target))); return true; } if (cuffed.CuffedHandCount == hands.Count) { - eventArgs.User.PopupMessage(Loc.GetString("{0:theName} has no free hands to handcuff!", eventArgs.Target)); + eventArgs.User.PopupMessage(Loc.GetString("handcuff-component-target-has-no-free-hands-error",("targetName", eventArgs.Target))); return true; } if (!eventArgs.InRangeUnobstructed(ignoreInsideBlocker: true)) { - eventArgs.User.PopupMessage(Loc.GetString("You are too far away to use the cuffs!")); + eventArgs.User.PopupMessage(Loc.GetString("handcuff-component-too-far-away-error")); return true; } - eventArgs.User.PopupMessage(Loc.GetString("You start cuffing {0:theName}.", eventArgs.Target)); - eventArgs.User.PopupMessage(eventArgs.Target, Loc.GetString("{0:theName} starts cuffing you!", eventArgs.User)); + eventArgs.User.PopupMessage(Loc.GetString("handcuff-component-start-cuffing-target-message",("targetName", eventArgs.Target))); + eventArgs.User.PopupMessage(eventArgs.Target, Loc.GetString("handcuff-component-start-cuffing-by-other-message",("otherName", eventArgs.User))); if (StartCuffSound != null) SoundSystem.Play(Filter.Pvs(Owner), StartCuffSound, Owner); @@ -225,14 +225,14 @@ namespace Content.Server.Cuffs.Components if (EndCuffSound != null) SoundSystem.Play(Filter.Pvs(Owner), EndCuffSound, Owner); - user.PopupMessage(Loc.GetString("You successfully cuff {0:theName}.", target)); - target.PopupMessage(Loc.GetString("You have been cuffed by {0:theName}!", user)); + user.PopupMessage(Loc.GetString("handcuff-component-cuff-other-success-message",("otherName", target))); + target.PopupMessage(Loc.GetString("handcuff-component-cuff-by-other-success-message", ("otherName", user))); } } else { - user.PopupMessage(Loc.GetString("You were interrupted while cuffing {0:theName}!", target)); - target.PopupMessage(Loc.GetString("You interrupt {0:theName} while they are cuffing you!", user)); + user.PopupMessage(Loc.GetString("handcuff-component-cuff-interrupt-message",("targetName", target))); + target.PopupMessage(Loc.GetString("handcuff-component-cuff-interrupt-other-message",("otherName", user))); } } } diff --git a/Content.Server/Damage/RejuvenateVerb.cs b/Content.Server/Damage/RejuvenateVerb.cs index c5845fffa1..12cfa57497 100644 --- a/Content.Server/Damage/RejuvenateVerb.cs +++ b/Content.Server/Damage/RejuvenateVerb.cs @@ -23,7 +23,7 @@ namespace Content.Server.Damage public override void GetData(IEntity user, IEntity target, VerbData data) { - data.Text = Loc.GetString("Rejuvenate"); + data.Text = Loc.GetString("rejuvenate-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; data.Visibility = VerbVisibility.Invisible; data.IconTexture = "/Textures/Interface/VerbIcons/rejuvenate.svg.192dpi.png"; diff --git a/Content.Server/Dice/DiceComponent.cs b/Content.Server/Dice/DiceComponent.cs index 9ece67c8c2..94cb65945b 100644 --- a/Content.Server/Dice/DiceComponent.cs +++ b/Content.Server/Dice/DiceComponent.cs @@ -85,9 +85,11 @@ namespace Content.Server.Dice void IExamine.Examine(FormattedMessage message, bool inDetailsRange) { //No details check, since the sprite updates to show the side. - message.AddMarkup(Loc.GetString( - "A dice with [color=lightgray]{0}[/color] sides.\n" + "It has landed on a [color=white]{1}[/color].", - _sides, _currentSide)); + message.AddMarkup(Loc.GetString("dice-component-on-examine-message-part-1", + ("sidesAmount", _sides)) + + "\n" + + Loc.GetString("dice-component-on-examine-message-part-2", + ("currentSide", _currentSide))); } } } diff --git a/Content.Server/Disposal/Mailing/DisposalMailingUnitComponent.cs b/Content.Server/Disposal/Mailing/DisposalMailingUnitComponent.cs index f541944425..af7225fd4a 100644 --- a/Content.Server/Disposal/Mailing/DisposalMailingUnitComponent.cs +++ b/Content.Server/Disposal/Mailing/DisposalMailingUnitComponent.cs @@ -663,20 +663,20 @@ namespace Content.Server.Disposal.Mailing { if (!EntitySystem.Get().CanInteract(eventArgs.User)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You can't do that!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("disposal-mailing-unit-is-valid-interaction-cannot-interact")); return false; } if (eventArgs.User.IsInContainer()) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You can't reach there!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("disposal-mailing-unit-is-valid-interaction-cannot-reach")); return false; } // This popup message doesn't appear on clicks, even when code was seperate. Unsure why. if (!eventArgs.User.HasComponent()) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You have no hands!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("disposal-mailing-unit-is-valid-interaction-no-hands")); return false; } @@ -755,7 +755,7 @@ namespace Content.Server.Disposal.Mailing } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Jump inside"); + data.Text = Loc.GetString("self-insert-verb-get-data-text"); } protected override void Activate(IEntity user, DisposalMailingUnitComponent component) @@ -778,7 +778,7 @@ namespace Content.Server.Disposal.Mailing } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Flush"); + data.Text = Loc.GetString("flush-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; } diff --git a/Content.Server/Disposal/Tube/Components/DisposalRouterComponent.cs b/Content.Server/Disposal/Tube/Components/DisposalRouterComponent.cs index 6c68d3d0e9..33c7a83feb 100644 --- a/Content.Server/Disposal/Tube/Components/DisposalRouterComponent.cs +++ b/Content.Server/Disposal/Tube/Components/DisposalRouterComponent.cs @@ -166,7 +166,7 @@ namespace Content.Server.Disposal.Tube.Components if (!args.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(args.User, Loc.GetString("You have no hands.")); + Owner.PopupMessage(args.User, Loc.GetString("disposal-router-window-tag-input-activate-no-hands")); return; } @@ -202,7 +202,7 @@ namespace Content.Server.Disposal.Tube.Components return; } - data.Text = Loc.GetString("Open Configuration"); + data.Text = Loc.GetString("configure-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/settings.svg.192dpi.png"; } diff --git a/Content.Server/Disposal/Tube/Components/DisposalTaggerComponent.cs b/Content.Server/Disposal/Tube/Components/DisposalTaggerComponent.cs index bc4f8605af..3dde6dee78 100644 --- a/Content.Server/Disposal/Tube/Components/DisposalTaggerComponent.cs +++ b/Content.Server/Disposal/Tube/Components/DisposalTaggerComponent.cs @@ -132,7 +132,7 @@ namespace Content.Server.Disposal.Tube.Components if (!args.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(args.User, Loc.GetString("You have no hands.")); + Owner.PopupMessage(args.User, Loc.GetString("disposal-tagger-window-activate-no-hands")); return; } @@ -162,7 +162,7 @@ namespace Content.Server.Disposal.Tube.Components return; } - data.Text = Loc.GetString("Open Configuration"); + data.Text = Loc.GetString("configure-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/settings.svg.192dpi.png"; } diff --git a/Content.Server/Disposal/Tube/Components/DisposalTubeComponent.cs b/Content.Server/Disposal/Tube/Components/DisposalTubeComponent.cs index 006777e18e..27e5d2b6e7 100644 --- a/Content.Server/Disposal/Tube/Components/DisposalTubeComponent.cs +++ b/Content.Server/Disposal/Tube/Components/DisposalTubeComponent.cs @@ -176,7 +176,7 @@ namespace Content.Server.Disposal.Tube.Components { var directions = string.Join(", ", ConnectableDirections()); - Owner.PopupMessage(entity, Loc.GetString("{0}", directions)); + Owner.PopupMessage(entity, Loc.GetString("disposal-tube-component-popup-directions-text", ("directions", directions))); } private void UpdateVisualState() @@ -283,7 +283,7 @@ namespace Content.Server.Disposal.Tube.Components { protected override void GetData(IEntity user, IDisposalTubeComponent component, VerbData data) { - data.Text = Loc.GetString("Tube Directions"); + data.Text = Loc.GetString("tube-direction-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; data.Visibility = VerbVisibility.Invisible; diff --git a/Content.Server/Disposal/TubeConnectionsCommand.cs b/Content.Server/Disposal/TubeConnectionsCommand.cs index df507e8924..a442e8af95 100644 --- a/Content.Server/Disposal/TubeConnectionsCommand.cs +++ b/Content.Server/Disposal/TubeConnectionsCommand.cs @@ -14,15 +14,15 @@ namespace Content.Server.Disposal public class TubeConnectionsCommand : IConsoleCommand { public string Command => "tubeconnections"; - public string Description => Loc.GetString("Shows all the directions that a tube can connect in."); - public string Help => $"Usage: {Command} "; + public string Description => Loc.GetString("tube-connections-command-description"); + public string Help => Loc.GetString("tube-connections-command-help-text", ("command", Command)); public void Execute(IConsoleShell shell, string argStr, string[] args) { var player = shell.Player as IPlayerSession; if (player?.AttachedEntity == null) { - shell.WriteLine(Loc.GetString("Only players can use this command")); + shell.WriteLine(Loc.GetString("shell-only-players-can-run-this-command")); return; } @@ -34,20 +34,22 @@ namespace Content.Server.Disposal if (!EntityUid.TryParse(args[0], out var id)) { - shell.WriteLine(Loc.GetString("{0} isn't a valid entity uid", args[0])); + shell.WriteLine(Loc.GetString("shell-invalid-entity-uid",("uid", args[0]))); return; } var entityManager = IoCManager.Resolve(); if (!entityManager.TryGetEntity(id, out var entity)) { - shell.WriteLine(Loc.GetString("No entity exists with uid {0}", id)); + shell.WriteLine(Loc.GetString("shell-could-not-find-entity-with-uid",("uid", id))); return; } if (!entity.TryGetComponent(out IDisposalTubeComponent? tube)) { - shell.WriteLine(Loc.GetString("Entity with uid {0} doesn't have a {1} component", id, nameof(IDisposalTubeComponent))); + shell.WriteLine(Loc.GetString("shell-entity-with-uid-lacks-component", + ("uid", id), + ("componentName", nameof(IDisposalTubeComponent)))); return; } diff --git a/Content.Server/Disposal/Unit/Components/DisposalUnitComponent.cs b/Content.Server/Disposal/Unit/Components/DisposalUnitComponent.cs index 2b3f9df9fe..25075c8be7 100644 --- a/Content.Server/Disposal/Unit/Components/DisposalUnitComponent.cs +++ b/Content.Server/Disposal/Unit/Components/DisposalUnitComponent.cs @@ -507,7 +507,7 @@ namespace Content.Server.Disposal.Unit.Components if(!Owner.HasComponent()) { - Logger.WarningS("VitalComponentMissing", $"Disposal unit {Owner.Uid} is missing an anchorable component"); + Logger.WarningS("VitalComponentMissing", $"Disposal unit {Owner.Uid} is missing an {nameof(AnchorableComponent)}"); } UpdateVisualState(); @@ -559,20 +559,20 @@ namespace Content.Server.Disposal.Unit.Components { if (!EntitySystem.Get().CanInteract(eventArgs.User)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You can't do that!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("ui-disposal-unit-is-valid-interaction-cannot=interact")); return false; } if (eventArgs.User.IsInContainer()) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You can't reach there!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("ui-disposal-unit-is-valid-interaction-cannot-reach")); return false; } // This popup message doesn't appear on clicks, even when code was seperate. Unsure why. if (!eventArgs.User.HasComponent()) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You have no hands!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("ui-disposal-unit-is-valid-interaction-no-hands")); return false; } @@ -657,7 +657,7 @@ namespace Content.Server.Disposal.Unit.Components } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Jump inside"); + data.Text = Loc.GetString("self-insert-verb-get-data-text"); } protected override void Activate(IEntity user, DisposalUnitComponent component) @@ -680,7 +680,7 @@ namespace Content.Server.Disposal.Unit.Components } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Flush"); + data.Text = Loc.GetString("flush-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; } diff --git a/Content.Server/Doors/Components/AirlockComponent.cs b/Content.Server/Doors/Components/AirlockComponent.cs index e1b536d87a..d810e71c0b 100644 --- a/Content.Server/Doors/Components/AirlockComponent.cs +++ b/Content.Server/Doors/Components/AirlockComponent.cs @@ -169,12 +169,12 @@ namespace Content.Server.Doors.Components { if (IsBolted()) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The airlock's bolts prevent it from being forced!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("airlock-component-cannot-pry-is-bolted-message ")); return false; } if (IsPowered()) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The powered motors block your efforts!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("airlock-component-cannot-pry-is-powered-message")); return false; } return true; diff --git a/Content.Server/Examine/ExamineSystem.cs b/Content.Server/Examine/ExamineSystem.cs index 23cb7d5db1..037913bb63 100644 --- a/Content.Server/Examine/ExamineSystem.cs +++ b/Content.Server/Examine/ExamineSystem.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; using JetBrains.Annotations; using Robust.Server.Player; using Robust.Shared.GameObjects; @@ -16,7 +16,7 @@ namespace Content.Server.Examine static ExamineSystem() { _entityNotFoundMessage = new FormattedMessage(); - _entityNotFoundMessage.AddText(Loc.GetString("That entity doesn't exist")); + _entityNotFoundMessage.AddText(Loc.GetString("examine-system-entity-does-not-exist")); } public override void Initialize() diff --git a/Content.Server/Extinguisher/FireExtinguisherComponent.cs b/Content.Server/Extinguisher/FireExtinguisherComponent.cs index 15eb150b60..a09bdf4e20 100644 --- a/Content.Server/Extinguisher/FireExtinguisherComponent.cs +++ b/Content.Server/Extinguisher/FireExtinguisherComponent.cs @@ -41,7 +41,7 @@ namespace Content.Server.Extinguisher container.TryAddSolution(drained); SoundSystem.Play(Filter.Pvs(Owner), "/Audio/Effects/refill.ogg", Owner); - eventArgs.Target.PopupMessage(eventArgs.User, Loc.GetString("{0:TheName} is now refilled", Owner)); + eventArgs.Target.PopupMessage(eventArgs.User, Loc.GetString("fire-extinguisher-component-after-interact-refilled-message",("owner", Owner))); } return true; diff --git a/Content.Server/Fluids/Components/BucketComponent.cs b/Content.Server/Fluids/Components/BucketComponent.cs index cb43bcf45c..a205e507e3 100644 --- a/Content.Server/Fluids/Components/BucketComponent.cs +++ b/Content.Server/Fluids/Components/BucketComponent.cs @@ -64,13 +64,13 @@ namespace Content.Server.Fluids.Components if (CurrentVolume <= 0) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Bucket is empty")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("bucket-component-bucket-is-empty-message")); return false; } if (mopComponent.CurrentVolume == mopComponent.MaxVolume) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Mop is full")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("bucket-component-mop-is-full-message")); return false; } diff --git a/Content.Server/Fluids/Components/MopComponent.cs b/Content.Server/Fluids/Components/MopComponent.cs index d60d1ad970..864358d321 100644 --- a/Content.Server/Fluids/Components/MopComponent.cs +++ b/Content.Server/Fluids/Components/MopComponent.cs @@ -110,7 +110,7 @@ namespace Content.Server.Fluids.Components if (currentVolume <= 0) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Mop needs to be wet!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("mop-component-mop-is-dry-message")); return false; } diff --git a/Content.Server/Fluids/Components/PuddleComponent.cs b/Content.Server/Fluids/Components/PuddleComponent.cs index 3d2e1db3fa..b54d4bdba0 100644 --- a/Content.Server/Fluids/Components/PuddleComponent.cs +++ b/Content.Server/Fluids/Components/PuddleComponent.cs @@ -144,7 +144,7 @@ namespace Content.Server.Fluids.Components { if(Slippery) { - message.AddText(Loc.GetString("It looks slippery.")); + message.AddText(Loc.GetString("puddle-component-examine-is-slipper-text")); } } diff --git a/Content.Server/Fluids/Components/SpillableComponent.cs b/Content.Server/Fluids/Components/SpillableComponent.cs index b5956c6525..79e1f267a7 100644 --- a/Content.Server/Fluids/Components/SpillableComponent.cs +++ b/Content.Server/Fluids/Components/SpillableComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.ActionBlocker; +using Content.Shared.ActionBlocker; using Content.Shared.Chemistry.Reagent; using Content.Shared.Chemistry.Solution.Components; using Content.Shared.DragDrop; @@ -31,7 +31,7 @@ namespace Content.Server.Fluids.Components return; } - data.Text = Loc.GetString("Spill liquid"); + data.Text = Loc.GetString("spill-target-verb-get-data-text"); data.Visibility = solutionComponent.DrainAvailable > ReagentUnit.Zero ? VerbVisibility.Visible : VerbVisibility.Disabled; @@ -44,12 +44,12 @@ namespace Content.Server.Fluids.Components if (!solutionComponent.CanDrain) { user.PopupMessage(user, - Loc.GetString("You can't pour anything from {0:theName}!", component.Owner)); + Loc.GetString("spill-target-verb-activate-cannot-drain-message",("owner", component.Owner))); } if (solutionComponent.DrainAvailable <= 0) { - user.PopupMessage(user, Loc.GetString("{0:theName} is empty!", component.Owner)); + user.PopupMessage(user, Loc.GetString("spill-target-verb-activate-is-empty-message",("owner", component.Owner))); } // Need this as when we split the component's owner may be deleted diff --git a/Content.Server/Fluids/Components/SprayComponent.cs b/Content.Server/Fluids/Components/SprayComponent.cs index 64c8faeb8f..a843ba0bbc 100644 --- a/Content.Server/Fluids/Components/SprayComponent.cs +++ b/Content.Server/Fluids/Components/SprayComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using Content.Server.Chemistry.Components; using Content.Shared.ActionBlocker; @@ -101,13 +101,13 @@ namespace Content.Server.Fluids.Components if (_hasSafety && _safety) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Its safety is on!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("spray-component-safety-on-message")); return true; } if (CurrentVolume <= 0) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("It's empty!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("spray-component-is-empty-message")); return true; } diff --git a/Content.Server/GameTicking/GameTicker.Lobby.cs b/Content.Server/GameTicking/GameTicker.Lobby.cs index 769a66d6e0..681da403e8 100644 --- a/Content.Server/GameTicking/GameTicker.Lobby.cs +++ b/Content.Server/GameTicking/GameTicker.Lobby.cs @@ -42,10 +42,7 @@ namespace Content.Server.GameTicking var gmTitle = Preset.ModeTitle; var desc = Preset.Description; - return Loc.GetString(@"Hi and welcome to [color=white]Space Station 14![/color] - -The current game mode is: [color=white]{0}[/color]. -[color=yellow]{1}[/color]", gmTitle, desc); + return Loc.GetString("game-ticker-get-info-text",("gmTitle", gmTitle),("desc", desc)); } private TickerLobbyReadyEvent GetStatusSingle(ICommonSession player, LobbyPlayerStatus status) @@ -108,9 +105,9 @@ The current game mode is: [color=white]{0}[/color]. RaiseNetworkEvent(new TickerLobbyCountdownEvent(_roundStartTime, Paused)); - _chatManager.DispatchServerAnnouncement(Paused - ? "Round start has been paused." - : "Round start countdown is now resumed."); + _chatManager.DispatchServerAnnouncement(Loc.GetString(Paused + ? "game-ticker-pause-start" + : "game-ticker-pause-start-resumed")); return true; } diff --git a/Content.Server/GameTicking/GameTicker.Player.cs b/Content.Server/GameTicking/GameTicker.Player.cs index 3831f510e9..cf182341f9 100644 --- a/Content.Server/GameTicking/GameTicker.Player.cs +++ b/Content.Server/GameTicking/GameTicker.Player.cs @@ -115,8 +115,7 @@ namespace Content.Server.GameTicking private void PlayerJoinGame(IPlayerSession session) { - _chatManager.DispatchServerMessage(session, - "Welcome to Space Station 14! If this is your first time checking out the game, be sure to check out the tutorial in the top left!"); + _chatManager.DispatchServerMessage(session, Loc.GetString("game-ticker-player-join-game-message")); if (_playersInLobby.ContainsKey(session)) _playersInLobby.Remove(session); diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs index c5d3c74782..0d6df65844 100644 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs @@ -77,7 +77,7 @@ namespace Content.Server.GameTicking DebugTools.Assert(RunLevel == GameRunLevel.PreRoundLobby); Logger.InfoS("ticker", "Starting round!"); - SendServerMessage("The round is starting now..."); + SendServerMessage(Loc.GetString("game-ticker-start-round")); List readyPlayers; if (LobbyEnabled) @@ -143,7 +143,9 @@ namespace Content.Server.GameTicking SetStartPreset(_configurationManager.GetCVar(CCVars.GameLobbyFallbackPreset)); var newPreset = MakeGamePreset(profiles); _chatManager.DispatchServerAnnouncement( - $"Failed to start {Preset.ModeTitle} mode! Defaulting to {newPreset.ModeTitle}..."); + Loc.GetString("game-ticker-start-round-cannot-start-game-mode-fallback", + ("failedGameMode", Preset.ModeTitle), + ("fallbackMode", newPreset.ModeTitle))); if (!newPreset.Start(readyPlayers, force)) { throw new ApplicationException("Fallback preset failed to start!"); @@ -155,7 +157,7 @@ namespace Content.Server.GameTicking } else { - SendServerMessage($"Failed to start {Preset.ModeTitle} mode! Restarting round..."); + SendServerMessage(Loc.GetString("game-ticker-start-round-cannot-start-game-mode-restart", ("failedGameMode", Preset.ModeTitle))); RestartRound(); DelayStart(TimeSpan.FromSeconds(PresetFailedCooldownIncrease)); return; @@ -204,7 +206,7 @@ namespace Content.Server.GameTicking PlayerICName = mind.CurrentEntity?.Name, Role = antag ? mind.AllRoles.First(role => role.Antagonist).Name - : mind.AllRoles.FirstOrDefault()?.Name ?? Loc.GetString("Unknown"), + : mind.AllRoles.FirstOrDefault()?.Name ?? Loc.GetString("game-ticker-unknown-role"), Antag = antag, Observer = status == LobbyPlayerStatus.Observer, }; @@ -223,14 +225,13 @@ namespace Content.Server.GameTicking if (_updateOnRoundEnd) { - _baseServer.Shutdown( - Loc.GetString("Server is shutting down for update and will automatically restart.")); + _baseServer.Shutdown(Loc.GetString("game-ticker-shutdown-server-update")); return; } Logger.InfoS("ticker", "Restarting round!"); - SendServerMessage("Restarting round..."); + SendServerMessage(Loc.GetString("game-ticker-restart-round")); RoundNumberMetric.Inc(); @@ -319,7 +320,7 @@ namespace Content.Server.GameTicking RaiseNetworkEvent(new TickerLobbyCountdownEvent(_roundStartTime, Paused)); - _chatManager.DispatchServerAnnouncement($"Round start has been delayed for {time.TotalSeconds} seconds."); + _chatManager.DispatchServerAnnouncement(Loc.GetString("game-ticker-delay-start", ("seconds",time.TotalSeconds))); return true; } diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index 7fd06d60ac..272a9ad3cd 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -187,7 +187,7 @@ namespace Content.Server.GameTicking foreach (var slot in EquipmentSlotDefines.AllSlots) { var equipmentStr = startingGear.GetGear(slot, profile); - if (equipmentStr != "") + if (equipmentStr != string.Empty) { var equipmentEntity = _entityManager.SpawnEntity(equipmentStr, entity.Transform.Coordinates); inventory.Equip(slot, equipmentEntity.GetComponent()); diff --git a/Content.Server/GameTicking/GameTicker.Updates.cs b/Content.Server/GameTicking/GameTicker.Updates.cs index 26de47acaa..566842fdf4 100644 --- a/Content.Server/GameTicking/GameTicker.Updates.cs +++ b/Content.Server/GameTicking/GameTicker.Updates.cs @@ -23,8 +23,7 @@ namespace Content.Server.GameTicking private void WatchdogApiOnUpdateReceived() { - _chatManager.DispatchServerAnnouncement(Loc.GetString( - "Update has been received, server will automatically restart for update at the end of this round.")); + _chatManager.DispatchServerAnnouncement(Loc.GetString("game-ticker-restart-round-server-update")); _updateOnRoundEnd = true; ServerEmptyUpdateRestartCheck(); } @@ -55,8 +54,7 @@ namespace Content.Server.GameTicking Timer.Spawn(UpdateRestartDelay, () => { - _baseServer.Shutdown( - Loc.GetString("Server is shutting down for update and will automatically restart.")); + _baseServer.Shutdown(Loc.GetString("game-ticker-shutdown-server-update")); }, _updateShutdownCts.Token); } } diff --git a/Content.Server/GameTicking/Presets/GamePreset.cs b/Content.Server/GameTicking/Presets/GamePreset.cs index 99a4dfaebb..e76d442ba5 100644 --- a/Content.Server/GameTicking/Presets/GamePreset.cs +++ b/Content.Server/GameTicking/Presets/GamePreset.cs @@ -84,6 +84,6 @@ namespace Content.Server.GameTicking.Presets return true; } - public virtual string GetRoundEndDescription() => ""; + public virtual string GetRoundEndDescription() => string.Empty; } } diff --git a/Content.Server/GameTicking/Presets/PresetTraitor.cs b/Content.Server/GameTicking/Presets/PresetTraitor.cs index ae6d1daf3f..e5c5ff95f1 100644 --- a/Content.Server/GameTicking/Presets/PresetTraitor.cs +++ b/Content.Server/GameTicking/Presets/PresetTraitor.cs @@ -35,7 +35,7 @@ namespace Content.Server.GameTicking.Presets [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - public override string ModeTitle => "Traitor"; + public override string ModeTitle => Loc.GetString("traitor-title"); private int MinPlayers { get; set; } private int PlayersPerTraitor { get; set; } @@ -59,13 +59,13 @@ namespace Content.Server.GameTicking.Presets if (!force && readyPlayers.Count < MinPlayers) { - _chatManager.DispatchServerAnnouncement($"Not enough players readied up for the game! There were {readyPlayers.Count} players readied up out of {MinPlayers} needed."); + _chatManager.DispatchServerAnnouncement(Loc.GetString("traitor-not-enough-ready-players", ("readyPlayersCount", readyPlayers.Count), ("minumumPlayers", MinPlayers))); return false; } if (readyPlayers.Count == 0) { - _chatManager.DispatchServerAnnouncement("No players readied up! Can't start Traitor."); + _chatManager.DispatchServerAnnouncement(Loc.GetString("traitor-no-one-ready")); return false; } diff --git a/Content.Server/GameTicking/Presets/PresetTraitorDeathMatch.cs b/Content.Server/GameTicking/Presets/PresetTraitorDeathMatch.cs index 0192bac8cf..684769beac 100644 --- a/Content.Server/GameTicking/Presets/PresetTraitorDeathMatch.cs +++ b/Content.Server/GameTicking/Presets/PresetTraitorDeathMatch.cs @@ -119,7 +119,7 @@ namespace Content.Server.GameTicking.Presets // The station is too drained of air to safely continue. if (_safeToEndRound) { - _chatManager.DispatchServerAnnouncement(Loc.GetString("The station is too unsafe to continue. You have one minute.")); + _chatManager.DispatchServerAnnouncement(Loc.GetString("traitor-death-match-station-is-too-unsafe-announcement")); _restarter.RoundMaxTime = TimeSpan.FromMinutes(1); _restarter.RestartTimer(); _safeToEndRound = false; @@ -214,20 +214,22 @@ namespace Content.Server.GameTicking.Presets public override string GetRoundEndDescription() { var lines = new List(); - lines.Add("The PDAs recovered afterwards..."); + lines.Add("traitor-death-match-end-round-description-first-line"); foreach (var entity in _entityManager.GetEntities(new TypeEntityQuery(typeof(PDAComponent)))) { var pda = entity.GetComponent(); var uplink = pda.SyndicateUplinkAccount; - if ((uplink != null) && _allOriginalNames.ContainsKey(uplink)) + if (uplink != null && _allOriginalNames.ContainsKey(uplink)) { - lines.Add(Loc.GetString("{0}'s PDA, with {1} TC", _allOriginalNames[uplink], uplink.Balance)); + lines.Add(Loc.GetString("traitor-death-match-end-round-description-entry", + ("originalName", _allOriginalNames[uplink]), + ("tcBalance", uplink.Balance))); } } return string.Join('\n', lines); } - public override string ModeTitle => "Traitor Deathmatch"; - public override string Description => Loc.GetString("Everyone's a traitor. Everyone wants each other dead."); + public override string ModeTitle => Loc.GetString("traitor-death-match-title"); + public override string Description => Loc.GetString("traitor-death-match-description"); } } diff --git a/Content.Server/GameTicking/Rules/RuleDeathMatch.cs b/Content.Server/GameTicking/Rules/RuleDeathMatch.cs index e49400a68d..bdf1e380f6 100644 --- a/Content.Server/GameTicking/Rules/RuleDeathMatch.cs +++ b/Content.Server/GameTicking/Rules/RuleDeathMatch.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using Content.Server.Chat.Managers; using Content.Shared; @@ -32,7 +32,7 @@ namespace Content.Server.GameTicking.Rules public override void Added() { - _chatManager.DispatchServerAnnouncement(Loc.GetString("The game is now a death match. Kill everybody else to win!")); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-death-match-added-announcement")); _entityManager.EventBus.SubscribeEvent(EventSource.Local, this, OnHealthChanged); _playerManager.PlayerStatusChanged += PlayerManagerOnPlayerStatusChanged; @@ -83,12 +83,12 @@ namespace Content.Server.GameTicking.Rules } _chatManager.DispatchServerAnnouncement(winner == null - ? Loc.GetString("Everybody is dead, it's a stalemate!") - : Loc.GetString("{0} wins the death match!", winner)); + ? Loc.GetString("rule-death-match-check-winner-stalemate") + : Loc.GetString("rule-death-match-check-winner",("winner", winner))); var restartDelay = 10; - _chatManager.DispatchServerAnnouncement(Loc.GetString("Restarting in {0} seconds.", restartDelay)); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-restarting-in-seconds", ("seconds", restartDelay))); Timer.Spawn(TimeSpan.FromSeconds(restartDelay), () => EntitySystem.Get().RestartRound()); } diff --git a/Content.Server/GameTicking/Rules/RuleInactivityTimeRestart.cs b/Content.Server/GameTicking/Rules/RuleInactivityTimeRestart.cs index 1f72ba86cb..746a2b9674 100644 --- a/Content.Server/GameTicking/Rules/RuleInactivityTimeRestart.cs +++ b/Content.Server/GameTicking/Rules/RuleInactivityTimeRestart.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Threading; using Content.Server.Chat.Managers; @@ -54,9 +54,9 @@ namespace Content.Server.GameTicking.Rules private void TimerFired() { var gameticker = EntitySystem.Get(); - gameticker.EndRound(Loc.GetString("Time has run out!")); + gameticker.EndRound(Loc.GetString("rule-time-has-run-out")); - _chatManager.DispatchServerAnnouncement(Loc.GetString("Restarting in {0} seconds.", (int) RoundEndDelay.TotalSeconds)); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-restarting-in-seconds", ("seconds",(int) RoundEndDelay.TotalSeconds))); Timer.Spawn(RoundEndDelay, () => gameticker.RestartRound()); } diff --git a/Content.Server/GameTicking/Rules/RuleMaxTimeRestart.cs b/Content.Server/GameTicking/Rules/RuleMaxTimeRestart.cs index ec3f7a6fc1..494b303ec2 100644 --- a/Content.Server/GameTicking/Rules/RuleMaxTimeRestart.cs +++ b/Content.Server/GameTicking/Rules/RuleMaxTimeRestart.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using Content.Server.Chat.Managers; using Robust.Shared.GameObjects; @@ -47,9 +47,9 @@ namespace Content.Server.GameTicking.Rules private void TimerFired() { - EntitySystem.Get().EndRound(Loc.GetString("Time has run out!")); + EntitySystem.Get().EndRound(Loc.GetString("rule-time-has-run-out")); - _chatManager.DispatchServerAnnouncement(Loc.GetString("Restarting in {0} seconds.", (int) RoundEndDelay.TotalSeconds)); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-restarting-in-seconds",("seconds", (int) RoundEndDelay.TotalSeconds))); Timer.Spawn(RoundEndDelay, () => EntitySystem.Get().RestartRound()); } diff --git a/Content.Server/GameTicking/Rules/RuleSuspicion.cs b/Content.Server/GameTicking/Rules/RuleSuspicion.cs index 82107e6fdd..9b0bb0a5ce 100644 --- a/Content.Server/GameTicking/Rules/RuleSuspicion.cs +++ b/Content.Server/GameTicking/Rules/RuleSuspicion.cs @@ -45,7 +45,7 @@ namespace Content.Server.GameTicking.Rules _endTime = _timing.CurTime + RoundMaxTime; - _chatManager.DispatchServerAnnouncement(Loc.GetString("There are traitors on the station! Find them, and kill them!")); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-suspicion-added-announcement")); var filter = Filter.Empty() .AddWhere(session => ((IPlayerSession)session).ContentData()?.Mind?.HasRole() ?? false); @@ -69,7 +69,7 @@ namespace Content.Server.GameTicking.Rules private void Timeout() { - _chatManager.DispatchServerAnnouncement(Loc.GetString("Time has run out for the traitors!")); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-suspicion-traitor-time-has-run-out")); EndRound(Victory.Innocents); } @@ -106,23 +106,23 @@ namespace Content.Server.GameTicking.Rules if (innocentsAlive + traitorsAlive == 0) { - _chatManager.DispatchServerAnnouncement(Loc.GetString("Everybody is dead, it's a stalemate!")); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-suspicion-check-winner-stalemate")); EndRound(Victory.Stalemate); } else if (traitorsAlive == 0) { - _chatManager.DispatchServerAnnouncement(Loc.GetString("The traitors are dead! The innocents win.")); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-suspicion-check-winner-station-win")); EndRound(Victory.Innocents); } else if (innocentsAlive == 0) { - _chatManager.DispatchServerAnnouncement(Loc.GetString("The innocents are dead! The traitors win.")); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-suspicion-check-winner-traitor-win")); EndRound(Victory.Traitors); } else if (_timing.CurTime > _endTime) { - _chatManager.DispatchServerAnnouncement(Loc.GetString("Time has run out for the traitors!")); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-suspicion-traitor-time-has-run-out")); EndRound(Victory.Innocents); } } @@ -141,20 +141,20 @@ namespace Content.Server.GameTicking.Rules switch (victory) { case Victory.Innocents: - text = Loc.GetString("The innocents have won!"); + text = Loc.GetString("rule-suspicion-end-round-innocents-victory"); break; case Victory.Traitors: - text = Loc.GetString("The traitors have won!"); + text = Loc.GetString("rule-suspicion-end-round-trators-victory"); break; default: - text = Loc.GetString("Nobody wins!"); + text = Loc.GetString("rule-suspicion-end-round-nobody-victory"); break; } var gameTicker = EntitySystem.Get(); gameTicker.EndRound(text); - _chatManager.DispatchServerAnnouncement(Loc.GetString("Restarting in {0} seconds.", (int) RoundEndDelay.TotalSeconds)); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-restarting-in-seconds",("seconds", (int) RoundEndDelay.TotalSeconds))); _checkTimerCancel.Cancel(); Timer.Spawn(RoundEndDelay, () => gameTicker.RestartRound()); diff --git a/Content.Server/GameTicking/Rules/RuleTraitor.cs b/Content.Server/GameTicking/Rules/RuleTraitor.cs index 1ede045b5d..4bf40c835c 100644 --- a/Content.Server/GameTicking/Rules/RuleTraitor.cs +++ b/Content.Server/GameTicking/Rules/RuleTraitor.cs @@ -15,7 +15,7 @@ namespace Content.Server.GameTicking.Rules public override void Added() { - _chatManager.DispatchServerAnnouncement(Loc.GetString("Hello crew! Have a good shift!")); + _chatManager.DispatchServerAnnouncement(Loc.GetString("rule-traitor-added-announcement")); var filter = Filter.Empty() .AddWhere(session => ((IPlayerSession)session).ContentData()?.Mind?.HasRole() ?? false); diff --git a/Content.Server/Ghost/Roles/MakeGhostRoleVerb.cs b/Content.Server/Ghost/Roles/MakeGhostRoleVerb.cs index b38c2d8244..0724db5d74 100644 --- a/Content.Server/Ghost/Roles/MakeGhostRoleVerb.cs +++ b/Content.Server/Ghost/Roles/MakeGhostRoleVerb.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Server.Mind.Components; using Content.Shared.Verbs; using Robust.Server.Console; @@ -34,7 +34,7 @@ namespace Content.Server.Ghost.Roles } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Make Ghost Role"); + data.Text = Loc.GetString("make-ghost-role-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; } diff --git a/Content.Server/Hands/Components/HandsComponent.cs b/Content.Server/Hands/Components/HandsComponent.cs index 219a37b563..83701223a4 100644 --- a/Content.Server/Hands/Components/HandsComponent.cs +++ b/Content.Server/Hands/Components/HandsComponent.cs @@ -766,13 +766,13 @@ namespace Content.Server.Hands.Components { if (ActiveHand != null && Drop(ActiveHand, false)) { - source.PopupMessageOtherClients(Loc.GetString("{0} disarms {1}!", source.Name, target.Name)); - source.PopupMessageCursor(Loc.GetString("You disarm {0}!", target.Name)); + source.PopupMessageOtherClients(Loc.GetString("hands-component-disarm-success-others-message!",("source", source.Name),("target", target.Name))); + source.PopupMessageCursor(Loc.GetString("hands-component-disarm-success-message",("target", target.Name))); } else { - source.PopupMessageOtherClients(Loc.GetString("{0} shoves {1}!", source.Name, target.Name)); - source.PopupMessageCursor(Loc.GetString("You shove {0}!", target.Name)); + source.PopupMessageOtherClients(Loc.GetString("hands-component-shove-success-others-message",("source", source.Name),("target", target.Name))); + source.PopupMessageCursor(Loc.GetString("hands-component-shove-success-message",("target", target.Name))); } } } diff --git a/Content.Server/Hands/HandsSystem.cs b/Content.Server/Hands/HandsSystem.cs index 179d7c23a8..88e2d8b091 100644 --- a/Content.Server/Hands/HandsSystem.cs +++ b/Content.Server/Hands/HandsSystem.cs @@ -240,8 +240,8 @@ namespace Content.Server.Hands if (!inventoryComp.TryGetSlotItem(equipmentSlot, out ItemComponent? equipmentItem) || !equipmentItem.Owner.TryGetComponent(out var storageComponent)) { - plyEnt.PopupMessage(Loc.GetString("You have no {0} to take something out of!", - SlotNames[equipmentSlot].ToLower())); + plyEnt.PopupMessage(Loc.GetString("hands-system-missing-equipment-slot", + ("slotName", SlotNames[equipmentSlot].ToLower()))); return; } @@ -255,8 +255,8 @@ namespace Content.Server.Hands { if (storageComponent.StoredEntities.Count == 0) { - plyEnt.PopupMessage(Loc.GetString("There's nothing in your {0} to take out!", - SlotNames[equipmentSlot].ToLower())); + plyEnt.PopupMessage(Loc.GetString("hands-system-empty-equipment-slot", + ("slotName", SlotNames[equipmentSlot].ToLower()))); } else { diff --git a/Content.Server/Holiday/Greet/DefaultHolidayGreet.cs b/Content.Server/Holiday/Greet/DefaultHolidayGreet.cs index f240d8bcd5..7f45216d60 100644 --- a/Content.Server/Holiday/Greet/DefaultHolidayGreet.cs +++ b/Content.Server/Holiday/Greet/DefaultHolidayGreet.cs @@ -5,9 +5,6 @@ namespace Content.Server.Holiday.Greet { public class DefaultHolidayGreet : IHolidayGreet { - public string Greet(HolidayPrototype holiday) - { - return Loc.GetString("Have a happy {0}!", holiday.Name); - } + public string Greet(HolidayPrototype holiday) => Loc.GetString("holiday-greet", ("holidayName", holiday.Name)); } } diff --git a/Content.Server/Instruments/InstrumentComponent.cs b/Content.Server/Instruments/InstrumentComponent.cs index 4a54990671..e9099119f8 100644 --- a/Content.Server/Instruments/InstrumentComponent.cs +++ b/Content.Server/Instruments/InstrumentComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Linq; using Content.Server.Standing; @@ -204,11 +204,11 @@ namespace Content.Server.Instruments if (_laggedBatches == (int) (maxMidiLaggedBatches * (1 / 3d) + 1)) { InstrumentPlayer.AttachedEntity?.PopupMessage( - Loc.GetString("Your fingers are beginning to a cramp a little!")); + Loc.GetString("instrument-component-finger-cramps-light-message")); } else if (_laggedBatches == (int) (maxMidiLaggedBatches * (2 / 3d) + 1)) { InstrumentPlayer.AttachedEntity?.PopupMessage( - Loc.GetString("Your fingers are seriously cramping up!")); + Loc.GetString("instrument-component-finger-cramps-serious-message")); } } @@ -365,7 +365,7 @@ namespace Content.Server.Instruments Clean(); } - Owner.PopupMessage(mob, "Your fingers cramp up from playing!"); + Owner.PopupMessage(mob, "instrument-component-finger-cramps-max-message"); } InstrumentPlayer = null; diff --git a/Content.Server/Interaction/InRangeUnoccludedVerb.cs b/Content.Server/Interaction/InRangeUnoccludedVerb.cs index 6f47ff7a83..c61815f64f 100644 --- a/Content.Server/Interaction/InRangeUnoccludedVerb.cs +++ b/Content.Server/Interaction/InRangeUnoccludedVerb.cs @@ -1,4 +1,4 @@ -using Content.Shared.Interaction.Helpers; +using Content.Shared.Interaction.Helpers; using Content.Shared.Notification; using Content.Shared.Notification.Managers; using Content.Shared.Verbs; @@ -31,7 +31,7 @@ namespace Content.Server.Interaction } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("In Range Unoccluded"); + data.Text = Loc.GetString("in-range-unoccluded-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; } @@ -49,8 +49,8 @@ namespace Content.Server.Interaction } var message = user.InRangeUnOccluded(target) - ? Loc.GetString("Not occluded") - : Loc.GetString("Occluded"); + ? Loc.GetString("in-range-unoccluded-verb-on-activate-not-occluded") + : Loc.GetString("in-range-unoccluded-verb-on-activate-occluded"); target.PopupMessage(user, message); } diff --git a/Content.Server/Inventory/Components/HumanInventoryControllerComponent.cs b/Content.Server/Inventory/Components/HumanInventoryControllerComponent.cs index c1262e06ef..9f324f7514 100644 --- a/Content.Server/Inventory/Components/HumanInventoryControllerComponent.cs +++ b/Content.Server/Inventory/Components/HumanInventoryControllerComponent.cs @@ -35,8 +35,8 @@ namespace Content.Server.Inventory.Components if (_inventory.GetSlotItem(Slots.INNERCLOTHING) == null) { reason = Loc.GetString(slotMask == SlotFlags.IDCARD - ? "You need a uniform to store something in your ID slot!" - : "You need a uniform to store something in your pockets!"); + ? "human-inventory-controller-component-need-uniform-to-store-in-id-slot-text" + : "human-inventory-controller-component-need-uniform-to-store-in-pockets-text"); return false; } @@ -51,7 +51,7 @@ namespace Content.Server.Inventory.Components } else if (!flagsCheck) { - reason = Loc.GetString("This is too large!"); + reason = Loc.GetString("human-inventory-controller-component-too-large-text"); } } } diff --git a/Content.Server/Inventory/Components/InventoryComponent.cs b/Content.Server/Inventory/Components/InventoryComponent.cs index a41eb594f5..f35374f01f 100644 --- a/Content.Server/Inventory/Components/InventoryComponent.cs +++ b/Content.Server/Inventory/Components/InventoryComponent.cs @@ -258,7 +258,7 @@ namespace Content.Server.Inventory.Components var inventorySlot = _slotContainers[slot]; if (!inventorySlot.Insert(item.Owner)) { - reason = Loc.GetString("You can't equip this!"); + reason = Loc.GetString("inventory-component-on-equip-cannot"); return false; } @@ -293,7 +293,7 @@ namespace Content.Server.Inventory.Components if (mobCheck && !EntitySystem.Get().CanEquip(Owner)) { - reason = Loc.GetString("You can't equip this!"); + reason = Loc.GetString("inventory-component-can-equip-cannot"); return false; } @@ -305,7 +305,7 @@ namespace Content.Server.Inventory.Components } else { - reason = Loc.GetString("This doesn't fit."); + reason = Loc.GetString("inventory-component-can-equip-does-not-fit"); } } @@ -317,14 +317,14 @@ namespace Content.Server.Inventory.Components if (!pass && reason == null) { - reason = Loc.GetString("You can't equip this!"); + reason = Loc.GetString("inventory-component-can-equip-cannot"); } var canEquip = pass && _slotContainers[slot].CanInsert(item.Owner); if (!canEquip) { - reason = Loc.GetString("You can't equip this!"); + reason = Loc.GetString("inventory-component-can-equip-cannot"); } return canEquip; @@ -667,7 +667,7 @@ namespace Content.Server.Inventory.Components return; data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Set Outfit"); + data.Text = Loc.GetString("set-outfit-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; data.IconTexture = "/Textures/Interface/VerbIcons/outfit.svg.192dpi.png"; } diff --git a/Content.Server/Items/ItemComponent.cs b/Content.Server/Items/ItemComponent.cs index fd179626ec..4441757f64 100644 --- a/Content.Server/Items/ItemComponent.cs +++ b/Content.Server/Items/ItemComponent.cs @@ -61,7 +61,7 @@ namespace Content.Server.Items return; } - data.Text = Loc.GetString("Pick Up"); + data.Text = Loc.GetString("pick-up-verb-get-data-text"); } protected override void Activate(IEntity user, ItemComponent component) diff --git a/Content.Server/Kitchen/Components/MicrowaveComponent.cs b/Content.Server/Kitchen/Components/MicrowaveComponent.cs index 190f2aa635..26ff81bc50 100644 --- a/Content.Server/Kitchen/Components/MicrowaveComponent.cs +++ b/Content.Server/Kitchen/Components/MicrowaveComponent.cs @@ -222,7 +222,7 @@ namespace Content.Server.Kitchen.Components { if (!Powered) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("It has no power!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("microwave-component-interact-using-no-power")); return false; } @@ -236,7 +236,7 @@ namespace Content.Server.Kitchen.Components if (itemEntity == null) { - eventArgs.User.PopupMessage(Loc.GetString("You have no active hand!")); + eventArgs.User.PopupMessage(Loc.GetString("microwave-component-interact-using-no-active-hand")); return false; } @@ -257,7 +257,7 @@ namespace Content.Server.Kitchen.Components var realTransferAmount = ReagentUnit.Min(attackPourable.TransferAmount, solution.EmptyVolume); if (realTransferAmount <= 0) //Special message if container is full { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Container is full")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("microwave-component-interact-using-container-full")); return false; } @@ -268,14 +268,15 @@ namespace Content.Server.Kitchen.Components return false; } - Owner.PopupMessage(eventArgs.User, Loc.GetString("Transferred {0}u", removedSolution.TotalVolume)); + Owner.PopupMessage(eventArgs.User, Loc.GetString("microwave-component-interact-using-transfer-success", + ("amount",removedSolution.TotalVolume))); return true; } if (!itemEntity.TryGetComponent(typeof(ItemComponent), out var food)) { - Owner.PopupMessage(eventArgs.User, "That won't work!"); + Owner.PopupMessage(eventArgs.User, "microwave-component-interact-using-transfer-fail"); return false; } @@ -529,14 +530,14 @@ namespace Content.Server.Kitchen.Components } var othersMessage = headCount > 1 - ? Loc.GetString("{0:theName} is trying to cook {0:their} heads!", victim) - : Loc.GetString("{0:theName} is trying to cook {0:their} head!", victim); + ? Loc.GetString("microwave-component-suicide-multi-head-others-message", ("victim", victim)) + : Loc.GetString("microwave-component-suicide-others-message",("victim", victim)); victim.PopupMessageOtherClients(othersMessage); var selfMessage = headCount > 1 - ? Loc.GetString("You cook your heads!") - : Loc.GetString("You cook your head!"); + ? Loc.GetString("microwave-component-suicide-multi-head-message") + : Loc.GetString("microwave-component-suicide-message"); victim.PopupMessage(selfMessage); diff --git a/Content.Server/Kitchen/Components/ReagentGrinderComponent.cs b/Content.Server/Kitchen/Components/ReagentGrinderComponent.cs index 4b9025cc99..2ea4a7a955 100644 --- a/Content.Server/Kitchen/Components/ReagentGrinderComponent.cs +++ b/Content.Server/Kitchen/Components/ReagentGrinderComponent.cs @@ -266,7 +266,7 @@ namespace Content.Server.Kitchen.Components { if (!eventArgs.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You have no hands.")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("reagent-grinder-component-interact-using-no-hands")); return true; } diff --git a/Content.Server/Light/Components/EmergencyLightComponent.cs b/Content.Server/Light/Components/EmergencyLightComponent.cs index 310f189849..667ba5c925 100644 --- a/Content.Server/Light/Components/EmergencyLightComponent.cs +++ b/Content.Server/Light/Components/EmergencyLightComponent.cs @@ -147,7 +147,7 @@ namespace Content.Server.Light.Components void IExamine.Examine(FormattedMessage message, bool inDetailsRange) { - message.AddMarkup(Loc.GetString($"The battery indicator displays: {BatteryStateText[State]}.")); + message.AddMarkup(Loc.GetString("emergency-light-component-on-examine",("batteryStateText", BatteryStateText[State]))); } public enum EmergencyLightState @@ -160,10 +160,10 @@ namespace Content.Server.Light.Components public Dictionary BatteryStateText = new() { - { EmergencyLightState.Full, "[color=darkgreen]Full[/color]"}, - { EmergencyLightState.Empty, "[color=darkred]Empty[/color]"}, - { EmergencyLightState.Charging, "[color=darkorange]Charging[/color]"}, - { EmergencyLightState.On, "[color=darkorange]Discharging[/color]"} + { EmergencyLightState.Full, "emergency-light-component-light-state-full" }, + { EmergencyLightState.Empty, "emergency-light-component-light-state-empty" }, + { EmergencyLightState.Charging, "emergency-light-component-light-state-charging" }, + { EmergencyLightState.On, "emergency-light-component-light-state-on" } }; } diff --git a/Content.Server/Light/Components/HandheldLightComponent.cs b/Content.Server/Light/Components/HandheldLightComponent.cs index 7fbc10d3d3..a2bc02aed3 100644 --- a/Content.Server/Light/Components/HandheldLightComponent.cs +++ b/Content.Server/Light/Components/HandheldLightComponent.cs @@ -85,11 +85,11 @@ namespace Content.Server.Light.Components { if (Activated) { - message.AddMarkup(Loc.GetString("The light is currently [color=darkgreen]on[/color].")); + message.AddMarkup(Loc.GetString("handheld-light-component-on-examine-is-on-message")); } else { - message.AddMarkup(Loc.GetString("The light is currently [color=darkred]off[/color].")); + message.AddMarkup(Loc.GetString("handheld-light-component-on-examine-is-off-message")); } } @@ -138,7 +138,7 @@ namespace Content.Server.Light.Components if (Cell == null) { if (TurnOnFailSound != null) SoundSystem.Play(Filter.Pvs(Owner), TurnOnFailSound, Owner); - Owner.PopupMessage(user, Loc.GetString("Cell missing...")); + Owner.PopupMessage(user, Loc.GetString("handheld-light-component-cell-missing-message")); UpdateLightAction(); return false; } @@ -149,7 +149,7 @@ namespace Content.Server.Light.Components if (Wattage > Cell.CurrentCharge) { if (TurnOnFailSound != null) SoundSystem.Play(Filter.Pvs(Owner), TurnOnFailSound, Owner); - Owner.PopupMessage(user, Loc.GetString("Dead cell...")); + Owner.PopupMessage(user, Loc.GetString("handheld-light-component-cell-dead-message")); UpdateLightAction(); return false; } @@ -177,12 +177,12 @@ namespace Content.Server.Light.Components if (Owner.TryGetComponent(out ClothingComponent? clothing)) { - clothing.ClothingEquippedPrefix = on ? "on" : "off"; + clothing.ClothingEquippedPrefix = Loc.GetString(on ? "handheld-light-component-on-state" : "handheld-light-component-off-state"); } if (Owner.TryGetComponent(out ItemComponent? item)) { - item.EquippedPrefix = on ? "on" : "off"; + item.EquippedPrefix = Loc.GetString(on ? "handheld-light-component-on-state" : "handheld-light-component-off-state"); } } @@ -256,7 +256,7 @@ namespace Content.Server.Light.Components return; } - data.Text = Loc.GetString("Toggle light"); + data.Text = Loc.GetString("toggle-light-verb-get-data-text"); } protected override void Activate(IEntity user, HandheldLightComponent component) diff --git a/Content.Server/Light/Components/PoweredLightComponent.cs b/Content.Server/Light/Components/PoweredLightComponent.cs index 82a852675a..2bc11a73f4 100644 --- a/Content.Server/Light/Components/PoweredLightComponent.cs +++ b/Content.Server/Light/Components/PoweredLightComponent.cs @@ -117,7 +117,7 @@ namespace Content.Server.Light.Components void Burn() { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You burn your hand!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("powered-light-component-burn-hand")); damageableComponent.ChangeDamage(DamageType.Heat, 20, false, Owner); SoundSystem.Play(Filter.Pvs(Owner), "/Audio/Effects/lightburn.ogg", Owner); } diff --git a/Content.Server/MachineLinking/Components/SignalButtonComponent.cs b/Content.Server/MachineLinking/Components/SignalButtonComponent.cs index 792377266c..eecfd3970e 100644 --- a/Content.Server/MachineLinking/Components/SignalButtonComponent.cs +++ b/Content.Server/MachineLinking/Components/SignalButtonComponent.cs @@ -1,4 +1,4 @@ -using Content.Server.MachineLinking.Signals; +using Content.Server.MachineLinking.Signals; using Content.Shared.Interaction; using Content.Shared.Notification; using Content.Shared.Notification.Managers; @@ -33,11 +33,11 @@ namespace Content.Server.MachineLinking.Components if (transmitter.TransmitSignal(new ToggleSignal())) { // Since the button doesn't have an animation, I'm going to use a popup message - Owner.PopupMessage(user, Loc.GetString("Click.")); + Owner.PopupMessage(user, Loc.GetString("signal-button-component-transmit-signal-success-message")); } else { - Owner.PopupMessage(user, Loc.GetString("No receivers connected.")); + Owner.PopupMessage(user, Loc.GetString("signal-button-component-transmit-signal-no-receivers-message")); } } diff --git a/Content.Server/MachineLinking/Components/SignalReceiverComponent.cs b/Content.Server/MachineLinking/Components/SignalReceiverComponent.cs index 164a979805..eef43e4916 100644 --- a/Content.Server/MachineLinking/Components/SignalReceiverComponent.cs +++ b/Content.Server/MachineLinking/Components/SignalReceiverComponent.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Threading.Tasks; using Content.Server.Tools.Components; using Content.Shared.Interaction; @@ -73,29 +73,29 @@ namespace Content.Server.MachineLinking.Components { if (transmitter == null) { - user.PopupMessage(Loc.GetString("Signal not set.")); + user.PopupMessage(Loc.GetString("signal-receiver-component-interact-no-transmitter-message")); return false; } if (_transmitters.Contains(transmitter)) { Unsubscribe(transmitter); - Owner.PopupMessage(user, Loc.GetString("Unlinked.")); + Owner.PopupMessage(user, Loc.GetString("signal-receiver-component-interact-unlinked")); return true; } if (transmitter.Range > 0 && !Owner.Transform.Coordinates.InRange(Owner.EntityManager, transmitter.Owner.Transform.Coordinates, transmitter.Range)) { - Owner.PopupMessage(user, Loc.GetString("Out of range.")); + Owner.PopupMessage(user, Loc.GetString("signal-receiver-component-interact-out-of-range")); return false; } if (!Subscribe(transmitter)) { - Owner.PopupMessage(user, Loc.GetString("Max Transmitters reached!")); + Owner.PopupMessage(user, Loc.GetString("signal-receiver-component-interact-max-transmitters-limit")); return false; } - Owner.PopupMessage(user, Loc.GetString("Linked!")); + Owner.PopupMessage(user, Loc.GetString("signal-receiver-component-interact-success")); return true; } diff --git a/Content.Server/MachineLinking/Components/SignalSwitchComponent.cs b/Content.Server/MachineLinking/Components/SignalSwitchComponent.cs index 46c2ad4f67..f4b5d79daa 100644 --- a/Content.Server/MachineLinking/Components/SignalSwitchComponent.cs +++ b/Content.Server/MachineLinking/Components/SignalSwitchComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.ActionBlocker; +using Content.Shared.ActionBlocker; using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.MachineLinking; @@ -50,7 +50,7 @@ namespace Content.Server.MachineLinking.Components if (!transmitter.TransmitSignal(_on)) { - Owner.PopupMessage(user, Loc.GetString("No receivers connected.")); + Owner.PopupMessage(user, Loc.GetString("signal-switch-component-transmit-no-receivers-connected")); } } @@ -78,7 +78,7 @@ namespace Content.Server.MachineLinking.Components return; } - data.Text = Loc.GetString("Toggle Switch"); + data.Text = Loc.GetString("toggle-switch-verb-get-data-text"); data.Visibility = VerbVisibility.Visible; } } diff --git a/Content.Server/MachineLinking/Components/SignalTransmitterComponent.cs b/Content.Server/MachineLinking/Components/SignalTransmitterComponent.cs index 86bd67b39c..94d2f95509 100644 --- a/Content.Server/MachineLinking/Components/SignalTransmitterComponent.cs +++ b/Content.Server/MachineLinking/Components/SignalTransmitterComponent.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Threading.Tasks; using Content.Server.Tools.Components; using Content.Shared.Interaction; @@ -118,7 +118,7 @@ namespace Content.Server.MachineLinking.Components { if (user != null) { - Owner.PopupMessage(user, Loc.GetString("Signal fetched.")); + Owner.PopupMessage(user, Loc.GetString("signal-transmitter-component-get-signal-success")); } return this; diff --git a/Content.Server/MachineLinking/Components/SignalTwoWayLeverComponent.cs b/Content.Server/MachineLinking/Components/SignalTwoWayLeverComponent.cs index 963486fdc7..212ab41258 100644 --- a/Content.Server/MachineLinking/Components/SignalTwoWayLeverComponent.cs +++ b/Content.Server/MachineLinking/Components/SignalTwoWayLeverComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Shared.Interaction; using Content.Shared.MachineLinking; using Content.Shared.Notification; @@ -47,7 +47,7 @@ namespace Content.Server.MachineLinking.Components if (!TransmitSignal(State)) { - Owner.PopupMessage(user, Loc.GetString("No receivers connected.")); + Owner.PopupMessage(user, Loc.GetString("signal-two-way-lever-component-next-state-no-receivers-connected")); } } diff --git a/Content.Server/Medical/Components/MedicalScannerComponent.cs b/Content.Server/Medical/Components/MedicalScannerComponent.cs index f837e5cef2..bc677a2503 100644 --- a/Content.Server/Medical/Components/MedicalScannerComponent.cs +++ b/Content.Server/Medical/Components/MedicalScannerComponent.cs @@ -216,7 +216,7 @@ namespace Content.Server.Medical.Components return; } - data.Text = Loc.GetString("Enter"); + data.Text = Loc.GetString("enter-verb-get-data-text"); data.Visibility = component.IsOccupied ? VerbVisibility.Invisible : VerbVisibility.Visible; } @@ -237,7 +237,7 @@ namespace Content.Server.Medical.Components return; } - data.Text = Loc.GetString("Eject"); + data.Text = Loc.GetString("eject-verb-get-data-text"); data.Visibility = component.IsOccupied ? VerbVisibility.Visible : VerbVisibility.Invisible; } diff --git a/Content.Server/Metabolism/MetabolismComponent.cs b/Content.Server/Metabolism/MetabolismComponent.cs index 2e0bc2f94e..4499ef387f 100644 --- a/Content.Server/Metabolism/MetabolismComponent.cs +++ b/Content.Server/Metabolism/MetabolismComponent.cs @@ -262,7 +262,7 @@ namespace Content.Server.Metabolism { if (_isShivering || _isSweating) { - Owner.PopupMessage(Loc.GetString("You feel comfortable")); + Owner.PopupMessage(Loc.GetString("metabolism-component-is-comfortable")); } _isShivering = false; @@ -278,7 +278,7 @@ namespace Content.Server.Metabolism if (!actionBlocker.CanSweat(Owner)) return; if (!_isSweating) { - Owner.PopupMessage(Loc.GetString("You are sweating")); + Owner.PopupMessage(Loc.GetString("metabolism-component-is-sweating")); _isSweating = true; } @@ -293,7 +293,7 @@ namespace Content.Server.Metabolism if (!actionBlocker.CanShiver(Owner)) return; if (!_isShivering) { - Owner.PopupMessage(Loc.GetString("You are shivering")); + Owner.PopupMessage(Loc.GetString("metabolism-component-is-shivering")); _isShivering = true; } diff --git a/Content.Server/Mind/Verbs/ControlMobVerb.cs b/Content.Server/Mind/Verbs/ControlMobVerb.cs index 2605064578..2520895482 100644 --- a/Content.Server/Mind/Verbs/ControlMobVerb.cs +++ b/Content.Server/Mind/Verbs/ControlMobVerb.cs @@ -35,7 +35,7 @@ namespace Content.Server.Mind.Verbs if (groupController.CanCommand(player.PlayerSession, "controlmob")) { data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Control Mob"); + data.Text = Loc.GetString("control-mob-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; } } diff --git a/Content.Server/Mind/Verbs/MakeSentientVerb.cs b/Content.Server/Mind/Verbs/MakeSentientVerb.cs index 054e997bce..ef8f1abcdb 100644 --- a/Content.Server/Mind/Verbs/MakeSentientVerb.cs +++ b/Content.Server/Mind/Verbs/MakeSentientVerb.cs @@ -29,7 +29,7 @@ namespace Content.Server.Mind.Verbs if (groupController.CanCommand(player, "makesentient")) { data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Make Sentient"); + data.Text = Loc.GetString("make-sentient-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; data.IconTexture = "/Textures/Interface/VerbIcons/sentient.svg.192dpi.png"; } diff --git a/Content.Server/Morgue/Components/BodyBagEntityStorageComponent.cs b/Content.Server/Morgue/Components/BodyBagEntityStorageComponent.cs index 1925775fe3..7ab3aa7997 100644 --- a/Content.Server/Morgue/Components/BodyBagEntityStorageComponent.cs +++ b/Content.Server/Morgue/Components/BodyBagEntityStorageComponent.cs @@ -54,7 +54,7 @@ namespace Content.Server.Morgue.Components { if (LabelContainer?.ContainedEntity != null && LabelContainer.ContainedEntity.TryGetComponent(out var paper)) { - message.AddText(Loc.GetString("The label reads: {0}", paper.Content)); + message.AddText(Loc.GetString("body-bag-entity-storage-component-on-examine-details", ("paper", paper.Content))); } } } @@ -65,7 +65,7 @@ namespace Content.Server.Morgue.Components if (LabelContainer.ContainedEntity != null) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("There's already a label attached.")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("body-bag-entity-storage-component-interact-using-already-attached")); return false; } @@ -77,7 +77,7 @@ namespace Content.Server.Morgue.Components _appearance?.SetData(BodyBagVisuals.Label, true); - Owner.PopupMessage(eventArgs.User, Loc.GetString("You attach {0:theName} to the body bag.", eventArgs.Using)); + Owner.PopupMessage(eventArgs.User, Loc.GetString("body-bag-entity-storage-component-interact-using-success",("entity", eventArgs.Using))); return true; } @@ -113,7 +113,7 @@ namespace Content.Server.Morgue.Components return; } - data.Text = Loc.GetString("Remove label"); + data.Text = Loc.GetString("remove-label-verb-get-data-text"); } /// diff --git a/Content.Server/Morgue/Components/CrematoriumEntityStorageComponent.cs b/Content.Server/Morgue/Components/CrematoriumEntityStorageComponent.cs index a7aa8edd62..e98d5d8ca9 100644 --- a/Content.Server/Morgue/Components/CrematoriumEntityStorageComponent.cs +++ b/Content.Server/Morgue/Components/CrematoriumEntityStorageComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Threading; using Content.Server.Act; using Content.Server.Chat.Managers; @@ -50,16 +50,16 @@ namespace Content.Server.Morgue.Components { if (Appearance.TryGetData(CrematoriumVisuals.Burning, out bool isBurning) && isBurning) { - message.AddMarkup(Loc.GetString("The {0:theName} is [color=red]active[/color]!\n", Owner)); + message.AddMarkup(Loc.GetString("crematorium-entity-storage-component-on-examine-details-is-burning",("owner", Owner)) + "\n"); } if (Appearance.TryGetData(MorgueVisuals.HasContents, out bool hasContents) && hasContents) { - message.AddMarkup(Loc.GetString("The content light is [color=green]on[/color], there's something in here.")); + message.AddMarkup(Loc.GetString("crematorium-entity-storage-component-on-examine-details-has-contents")); } else { - message.AddText(Loc.GetString("The content light is off, there's nothing in here.")); + message.AddText(Loc.GetString("crematorium-entity-storage-component-on-examine-details-empty")); } } } @@ -68,7 +68,7 @@ namespace Content.Server.Morgue.Components { if (Cooking) { - if (!silent) Owner.PopupMessage(user, Loc.GetString("Safety first, not while it's active!")); + if (!silent) Owner.PopupMessage(user, Loc.GetString("crematorium-entity-storage-component-is-cooking-safety-message")); return false; } return base.CanOpen(user, silent); @@ -127,10 +127,10 @@ namespace Content.Server.Morgue.Components if (mind != null) { EntitySystem.Get().OnGhostAttempt(mind, false); - mind.OwnedEntity?.PopupMessage(Loc.GetString("You cremate yourself!")); + mind.OwnedEntity?.PopupMessage(Loc.GetString("crematorium-entity-storage-component-suicide-message")); } - victim.PopupMessageOtherClients(Loc.GetString("{0:theName} is cremating {0:themself}!", victim)); + victim.PopupMessageOtherClients(Loc.GetString("crematorium-entity-storage-component-suicide-message-others", ("victim", victim))); EntitySystem.Get().Down(victim, false, false, true); if (CanInsert(victim)) @@ -158,7 +158,7 @@ namespace Content.Server.Morgue.Components return; } - data.Text = Loc.GetString("Cremate"); + data.Text = Loc.GetString("cremate-verb-get-data-text"); } /// diff --git a/Content.Server/Morgue/Components/MorgueEntityStorageComponent.cs b/Content.Server/Morgue/Components/MorgueEntityStorageComponent.cs index 4696ea08bd..8737c503bd 100644 --- a/Content.Server/Morgue/Components/MorgueEntityStorageComponent.cs +++ b/Content.Server/Morgue/Components/MorgueEntityStorageComponent.cs @@ -74,7 +74,7 @@ namespace Content.Server.Morgue.Components collisionMask: CollisionGroup.Impassable | CollisionGroup.VaultImpassable )) { - if(!silent) Owner.PopupMessage(user, Loc.GetString("There's no room for the tray to extend!")); + if(!silent) Owner.PopupMessage(user, Loc.GetString("morgue-entity-storage-component-cannot-open-no-space")); return false; } @@ -152,18 +152,18 @@ namespace Content.Server.Morgue.Components { if (Appearance.TryGetData(MorgueVisuals.HasSoul, out bool hasSoul) && hasSoul) { - message.AddMarkup(Loc.GetString("The content light is [color=green]green[/color], this body might still be saved!")); + message.AddMarkup(Loc.GetString("morgue-entity-storage-component-on-examine-details-body-has-soul")); } else if (Appearance.TryGetData(MorgueVisuals.HasMob, out bool hasMob) && hasMob) { - message.AddMarkup(Loc.GetString("The content light is [color=red]red[/color], there's a dead body in here! Oh wait...")); + message.AddMarkup(Loc.GetString("morgue-entity-storage-component-on-examine-details-body-has-no-soul")); } else if (Appearance.TryGetData(MorgueVisuals.HasContents, out bool hasContents) && hasContents) { - message.AddMarkup(Loc.GetString("The content light is [color=yellow]yellow[/color], there's something in here.")); + message.AddMarkup(Loc.GetString("morgue-entity-storage-component-on-examine-details-has-contents")); } else { - message.AddMarkup(Loc.GetString("The content light is off, there's nothing in here.")); + message.AddMarkup(Loc.GetString("morgue-entity-storage-component-on-examine-details-empty")); } } } diff --git a/Content.Server/NodeContainer/NodeContainerComponent.cs b/Content.Server/NodeContainer/NodeContainerComponent.cs index 9c5bdd4bec..2c1e4841bf 100644 --- a/Content.Server/NodeContainer/NodeContainerComponent.cs +++ b/Content.Server/NodeContainer/NodeContainerComponent.cs @@ -94,15 +94,15 @@ namespace Content.Server.NodeContainer { case NodeGroupID.HVPower: message.AddMarkup( - Loc.GetString("It has a connector for [color=orange]HV cables[/color].\n")); + Loc.GetString("node-container-component-on-examine-details-hvpower") + "\n"); break; case NodeGroupID.MVPower: message.AddMarkup( - Loc.GetString("It has a connector for [color=yellow]MV cables[/color].\n")); + Loc.GetString("node-container-component-on-examine-details-mvpower") + "\n"); break; case NodeGroupID.Apc: message.AddMarkup( - Loc.GetString("It has a connector for [color=green]APC cables[/color].\n")); + Loc.GetString("node-container-component-on-examine-details-apc") + "\n"); break; } } diff --git a/Content.Server/Nutrition/Components/CreamPiedComponent.cs b/Content.Server/Nutrition/Components/CreamPiedComponent.cs index cefd0250da..61f83e7c25 100644 --- a/Content.Server/Nutrition/Components/CreamPiedComponent.cs +++ b/Content.Server/Nutrition/Components/CreamPiedComponent.cs @@ -43,8 +43,8 @@ namespace Content.Server.Nutrition.Components if (eventArgs.Thrown.Deleted || !eventArgs.Thrown.TryGetComponent(out CreamPieComponent? creamPie)) return; CreamPied = true; - Owner.PopupMessage(Loc.GetString("You have been creamed by {0:theName}!", eventArgs.Thrown)); - Owner.PopupMessageOtherClients(Loc.GetString("{0:theName} has been creamed by {1:theName}!", Owner, eventArgs.Thrown)); + Owner.PopupMessage(Loc.GetString("cream-pied-component-on-hit-by-message",("thrower", eventArgs.Thrown))); + Owner.PopupMessageOtherClients(Loc.GetString("cream-pied-component-on-hit-by-message-others", ("owner", Owner),("thrower", eventArgs.Thrown))); if (Owner.TryGetComponent(out StunnableComponent? stun)) { diff --git a/Content.Server/Nutrition/Components/DrinkComponent.cs b/Content.Server/Nutrition/Components/DrinkComponent.cs index 1455355c1b..62a05b7703 100644 --- a/Content.Server/Nutrition/Components/DrinkComponent.cs +++ b/Content.Server/Nutrition/Components/DrinkComponent.cs @@ -138,7 +138,7 @@ namespace Content.Server.Nutrition.Components if (!Owner.TryGetComponent(out ISolutionInteractionsComponent? contents) || contents.DrainAvailable <= 0) { - args.User.PopupMessage(Loc.GetString("{0:theName} is empty!", Owner)); + args.User.PopupMessage(Loc.GetString("drink-component-on-use-is-empty",("owner", Owner))); return true; } @@ -163,15 +163,15 @@ namespace Content.Server.Nutrition.Components return; } var color = Empty ? "gray" : "yellow"; - var openedText = Loc.GetString(Empty ? "Empty" : "Opened"); - message.AddMarkup(Loc.GetString("[color={0}]{1}[/color]", color, openedText)); + var openedText = Loc.GetString(Empty ? "drink-component-on-examine-is-empty" : "drink-component-on-examine-is-opened"); + message.AddMarkup(Loc.GetString("drink-component-on-examine-details-text",("colorName", color),("text", openedText))); } private bool TryUseDrink(IEntity user, IEntity target, bool forced = false) { if (!Opened) { - target.PopupMessage(Loc.GetString("Open {0:theName} first!", Owner)); + target.PopupMessage(Loc.GetString("drink-component-try-use-drink-not-open",("owner", Owner))); return false; } @@ -181,7 +181,7 @@ namespace Content.Server.Nutrition.Components { if (!forced) { - target.PopupMessage(Loc.GetString("{0:theName} is empty!", Owner)); + target.PopupMessage(Loc.GetString("drink-component-try-use-drink-is-empty", ("entity",Owner))); } return false; @@ -190,7 +190,7 @@ namespace Content.Server.Nutrition.Components if (!target.TryGetComponent(out SharedBodyComponent? body) || !body.TryGetMechanismBehaviors(out var stomachs)) { - target.PopupMessage(Loc.GetString("You can't drink {0:theName}!", Owner)); + target.PopupMessage(Loc.GetString("drink-component-try-use-drink-cannot-drink",("owner", Owner))); return false; } @@ -208,7 +208,7 @@ namespace Content.Server.Nutrition.Components // All stomach are full or can't handle whatever solution we have. if (firstStomach == null) { - target.PopupMessage(Loc.GetString("You've had enough {0:theName}!", Owner)); + target.PopupMessage(Loc.GetString("drink-component-try-use-drink-had-enough",("owner", Owner))); if (!interactions.CanRefill) { @@ -225,7 +225,7 @@ namespace Content.Server.Nutrition.Components SoundSystem.Play(Filter.Pvs(target), _useSound, target, AudioParams.Default.WithVolume(-2f)); } - target.PopupMessage(Loc.GetString("Slurp")); + target.PopupMessage(Loc.GetString("drink-component-try-use-drink-success-slurp")); UpdateAppearance(); // TODO: Account for partial transfer. diff --git a/Content.Server/Nutrition/Components/FoodComponent.cs b/Content.Server/Nutrition/Components/FoodComponent.cs index 48d33a79ee..161e9e426e 100644 --- a/Content.Server/Nutrition/Components/FoodComponent.cs +++ b/Content.Server/Nutrition/Components/FoodComponent.cs @@ -97,7 +97,7 @@ namespace Content.Server.Nutrition.Components if (UsesRemaining <= 0) { - user.PopupMessage(Loc.GetString("{0:TheName} is empty!", Owner)); + user.PopupMessage(Loc.GetString("food-component-try-use-food-is-empty", ("entity", Owner))); return false; } @@ -150,7 +150,7 @@ namespace Content.Server.Nutrition.Components if (firstStomach == null) { - trueTarget.PopupMessage(user, Loc.GetString("You can't eat any more!")); + trueTarget.PopupMessage(user, Loc.GetString("food-you-cannot-eat-any-more")); return false; } @@ -165,7 +165,7 @@ namespace Content.Server.Nutrition.Components SoundSystem.Play(Filter.Pvs(trueTarget), UseSound, trueTarget, AudioParams.Default.WithVolume(-1f)); } - trueTarget.PopupMessage(user, Loc.GetString("Nom")); + trueTarget.PopupMessage(user, Loc.GetString("food-nom")); // If utensils were used if (utensils != null) diff --git a/Content.Server/Nutrition/Components/SliceableFoodComponent.cs b/Content.Server/Nutrition/Components/SliceableFoodComponent.cs index 57f3944f39..32733e65c1 100644 --- a/Content.Server/Nutrition/Components/SliceableFoodComponent.cs +++ b/Content.Server/Nutrition/Components/SliceableFoodComponent.cs @@ -81,7 +81,7 @@ namespace Content.Server.Nutrition.Components public void Examine(FormattedMessage message, bool inDetailsRange) { - message.AddMarkup(Loc.GetString($"There are { Count } slices remaining.")); + message.AddMarkup(Loc.GetString("sliceable-food-component-on-examine-remaining-slices-text", ("remainingCount", Count))); } } } diff --git a/Content.Server/Objectives/Conditions/DieCondition.cs b/Content.Server/Objectives/Conditions/DieCondition.cs index 6678f0991f..c2dcaa97b9 100644 --- a/Content.Server/Objectives/Conditions/DieCondition.cs +++ b/Content.Server/Objectives/Conditions/DieCondition.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Server.Objectives.Interfaces; using JetBrains.Annotations; using Robust.Shared.Localization; @@ -18,9 +18,9 @@ namespace Content.Server.Objectives.Conditions return new DieCondition {_mind = mind}; } - public string Title => Loc.GetString("Die a glorious death"); + public string Title => Loc.GetString("objective-condition-die-title"); - public string Description => Loc.GetString("Die."); + public string Description => Loc.GetString("objective-condition-die-description"); public SpriteSpecifier Icon => new SpriteSpecifier.Rsi(new ResourcePath("Mobs/Ghosts/ghost_human.rsi"), "icon"); diff --git a/Content.Server/Objectives/Conditions/KillPersonCondition.cs b/Content.Server/Objectives/Conditions/KillPersonCondition.cs index 6c0fbc4783..3e75e8ec5d 100644 --- a/Content.Server/Objectives/Conditions/KillPersonCondition.cs +++ b/Content.Server/Objectives/Conditions/KillPersonCondition.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Server.Objectives.Interfaces; using Robust.Shared.Localization; using Robust.Shared.Utility; @@ -10,9 +10,9 @@ namespace Content.Server.Objectives.Conditions protected Mind.Mind? Target; public abstract IObjectiveCondition GetAssigned(Mind.Mind mind); - public string Title => Loc.GetString("Kill {0}", Target?.OwnedEntity?.Name ?? ""); + public string Title => Loc.GetString("objective-condition-kill-person-title", ("targetName", Target?.OwnedEntity?.Name ?? string.Empty)); - public string Description => Loc.GetString("Do it however you like, just make sure they don't last the shift."); + public string Description => Loc.GetString("objective-condition-kill-person-description"); public SpriteSpecifier Icon => new SpriteSpecifier.Rsi(new ResourcePath("Objects/Weapons/Guns/Pistols/mk58_wood.rsi"), "icon"); diff --git a/Content.Server/Objectives/Conditions/StayAliveCondition.cs b/Content.Server/Objectives/Conditions/StayAliveCondition.cs index 69e35026b9..607e672f63 100644 --- a/Content.Server/Objectives/Conditions/StayAliveCondition.cs +++ b/Content.Server/Objectives/Conditions/StayAliveCondition.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Server.Objectives.Interfaces; using JetBrains.Annotations; using Robust.Shared.Localization; @@ -18,9 +18,9 @@ namespace Content.Server.Objectives.Conditions return new StayAliveCondition {_mind = mind}; } - public string Title => Loc.GetString("Stay alive."); + public string Title => Loc.GetString("objective-condition-stay-alive-title"); - public string Description => Loc.GetString("Survive this shift, we need you for another assignment."); + public string Description => Loc.GetString("objective-condition-stay-alive-description"); public SpriteSpecifier Icon => new SpriteSpecifier.Rsi(new ResourcePath("Objects/Misc/skub.rsi"), "icon"); //didn't know what else would have been a good icon for staying alive diff --git a/Content.Server/Objectives/Conditions/StealCondition.cs b/Content.Server/Objectives/Conditions/StealCondition.cs index f80761c8c9..ea9ec71cf1 100644 --- a/Content.Server/Objectives/Conditions/StealCondition.cs +++ b/Content.Server/Objectives/Conditions/StealCondition.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using Content.Server.Containers; using Content.Server.GameObjects; @@ -46,9 +46,11 @@ namespace Content.Server.Objectives.Conditions ? prototype.Name : "[CANNOT FIND NAME]"; - public string Title => Loc.GetString("Steal {0}{1}", _amount > 1 ? $"{_amount}x " : "", Loc.GetString(PrototypeName)); + public string Title => Loc.GetString("objective-condition-steal-title", + ("amount", _amount > 1 ? $"{_amount}x " : string.Empty), + ("itemName", Loc.GetString(PrototypeName))); - public string Description => Loc.GetString("We need you to steal {0}. Don't get caught.", Loc.GetString(PrototypeName)); + public string Description => Loc.GetString("objective-condition-steal-description",("itemName", Loc.GetString(PrototypeName))); public SpriteSpecifier Icon => new SpriteSpecifier.EntityPrototype(_prototypeId); diff --git a/Content.Server/PDA/PDAComponent.cs b/Content.Server/PDA/PDAComponent.cs index aa8a4f8b76..91f1a25d93 100644 --- a/Content.Server/PDA/PDAComponent.cs +++ b/Content.Server/PDA/PDAComponent.cs @@ -185,7 +185,7 @@ namespace Content.Server.PDA if (!eventArgs.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You have no hands!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("comp-pda-ui-try-insert-id-card-no-hands")); return true; } @@ -220,7 +220,7 @@ namespace Content.Server.PDA if (!eventArgs.User.TryGetComponent(out IHandsComponent? hands)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You have no hands!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("comp-pda-ui-try-insert-pen-no-hands")); return true; } @@ -376,7 +376,7 @@ namespace Content.Server.PDA return; } - data.Text = Loc.GetString("Eject ID"); + data.Text = Loc.GetString("eject-id-verb-get-data-text"); data.Visibility = component.IdSlotEmpty ? VerbVisibility.Invisible : VerbVisibility.Visible; data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; } @@ -398,7 +398,7 @@ namespace Content.Server.PDA return; } - data.Text = Loc.GetString("Eject Pen"); + data.Text = Loc.GetString("eject-pen-verb-get-data-text"); data.Visibility = component.PenSlotEmpty ? VerbVisibility.Invisible : VerbVisibility.Visible; data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; } @@ -420,7 +420,7 @@ namespace Content.Server.PDA return; } - data.Text = Loc.GetString("Toggle flashlight"); + data.Text = Loc.GetString("toggle-flashlight-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/light.svg.192dpi.png"; } diff --git a/Content.Server/ParticleAccelerator/Components/ParticleAcceleratorControlBoxComponent.cs b/Content.Server/ParticleAccelerator/Components/ParticleAcceleratorControlBoxComponent.cs index 706bea36c7..b3ef6644ee 100644 --- a/Content.Server/ParticleAccelerator/Components/ParticleAcceleratorControlBoxComponent.cs +++ b/Content.Server/ParticleAccelerator/Components/ParticleAcceleratorControlBoxComponent.cs @@ -309,7 +309,7 @@ namespace Content.Server.ParticleAccelerator.Components case ParticleAcceleratorControlBoxWires.Limiter: if (args.Action == WiresAction.Pulse) { - Owner.PopupMessageEveryone(Loc.GetString("The control box makes a whirring noise.")); + Owner.PopupMessageEveryone(Loc.GetString("particle-accelerator-control-box-component-wires-update-limiter-on-pulse")); } else { diff --git a/Content.Server/Plants/Components/PottedPlantHideComponent.cs b/Content.Server/Plants/Components/PottedPlantHideComponent.cs index 98ec67881d..13efc18346 100644 --- a/Content.Server/Plants/Components/PottedPlantHideComponent.cs +++ b/Content.Server/Plants/Components/PottedPlantHideComponent.cs @@ -38,7 +38,7 @@ namespace Content.Server.Plants.Components var gotItem = _secretStash.TryGetItem(eventArgs.User); if (!gotItem) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You root around in the roots.")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("potted-plant-hide-component-interact-hand-got-no-item-message")); } return gotItem; diff --git a/Content.Server/Pointing/EntitySystems/PointingSystem.cs b/Content.Server/Pointing/EntitySystems/PointingSystem.cs index 6ce69a2f5b..0ad51b44dc 100644 --- a/Content.Server/Pointing/EntitySystems/PointingSystem.cs +++ b/Content.Server/Pointing/EntitySystems/PointingSystem.cs @@ -77,7 +77,8 @@ namespace Content.Server.Pointing.EntitySystems public bool InRange(IEntity pointer, EntityCoordinates coordinates) { - if (pointer.HasComponent()){ + if (pointer.HasComponent()) + { return pointer.Transform.Coordinates.InRange(EntityManager, coordinates, 15); } else @@ -108,7 +109,7 @@ namespace Content.Server.Pointing.EntitySystems if (!InRange(player, coords)) { - player.PopupMessage(Loc.GetString("You can't reach there!")); + player.PopupMessage(Loc.GetString("pointing-system-try-point-cannot-reach")); return false; } @@ -123,7 +124,7 @@ namespace Content.Server.Pointing.EntitySystems var arrow = EntityManager.SpawnEntity("pointingarrow", coords); - var layer = (int)VisibilityFlags.Normal; + var layer = (int) VisibilityFlags.Normal; if (player.TryGetComponent(out VisibilityComponent? playerVisibility)) { var arrowVisibility = arrow.EnsureComponent(); @@ -148,23 +149,23 @@ namespace Content.Server.Pointing.EntitySystems if (EntityManager.TryGetEntity(uid, out var pointed)) { selfMessage = player == pointed - ? Loc.GetString("You point at yourself.") - : Loc.GetString("You point at {0:theName}.", pointed); + ? Loc.GetString("pointing-system-point-at-self") + : Loc.GetString("pointing-system-point-at-other", ("other", pointed)); viewerMessage = player == pointed - ? $"{player.Name} {Loc.GetString("points at {0:themself}.", player)}" - : $"{player.Name} {Loc.GetString("points at {0:theName}.", pointed)}"; + ? Loc.GetString("pointing-system-point-at-self-others", ("otherName", player.Name), ("other", player)) + : Loc.GetString("pointing-system-point-at-other-others", ("otherName", player.Name), ("other", pointed)); - viewerPointedAtMessage = $"{player.Name} {Loc.GetString("points at you.")}"; + viewerPointedAtMessage = Loc.GetString("pointing-system-point-at-you-other", ("otherName", player.Name)); } else { var tileRef = _mapManager.GetGrid(coords.GetGridId(EntityManager)).GetTileRef(coords); var tileDef = _tileDefinitionManager[tileRef.Tile.TypeId]; - selfMessage = Loc.GetString("You point at {0}.", tileDef.DisplayName); + selfMessage = Loc.GetString("pointing-system-point-at-tile", ("tileName", tileDef.DisplayName)); - viewerMessage = $"{player.Name} {Loc.GetString("points at {0}.", tileDef.DisplayName)}"; + viewerMessage = Loc.GetString("pointing-system-other-point-at-tile", ("otherName", player.Name), ("tileName", tileDef.DisplayName)); } _pointers[session!] = _gameTiming.CurTime; diff --git a/Content.Server/Pointing/PointingVerb.cs b/Content.Server/Pointing/PointingVerb.cs index bff6fb659e..54127cbbe7 100644 --- a/Content.Server/Pointing/PointingVerb.cs +++ b/Content.Server/Pointing/PointingVerb.cs @@ -37,7 +37,7 @@ namespace Content.Server.Pointing data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Point at"); + data.Text = Loc.GetString("pointing-verb-get-data-text"); } public override void Activate(IEntity user, IEntity target) diff --git a/Content.Server/Power/Components/BaseCharger.cs b/Content.Server/Power/Components/BaseCharger.cs index fcac755f49..a438ad97cb 100644 --- a/Content.Server/Power/Components/BaseCharger.cs +++ b/Content.Server/Power/Components/BaseCharger.cs @@ -73,7 +73,7 @@ namespace Content.Server.Power.Components var result = TryInsertItem(eventArgs.Using); if (!result) { - eventArgs.User.PopupMessage(Owner, Loc.GetString("Unable to insert capacitor")); + eventArgs.User.PopupMessage(Owner, Loc.GetString("base-charger-on-interact-using-fail")); } return result; @@ -140,7 +140,7 @@ namespace Content.Server.Power.Components var heldItemName = Loc.GetString(handsComponent.GetActiveHand.Owner.Name); - data.Text = Loc.GetString("Insert {0}", heldItemName); + data.Text = Loc.GetString("insert-verb-get-data-text", ("itemName", heldItemName)); data.IconTexture = "/Textures/Interface/VerbIcons/insert.svg.192dpi.png"; } @@ -179,7 +179,7 @@ namespace Content.Server.Power.Components var containerItemName = Loc.GetString(component._container.ContainedEntity.Name); - data.Text = Loc.GetString("Eject {0}", containerItemName); + data.Text = Loc.GetString("eject-verb-get-data-text",("containerName", containerItemName)); data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; } diff --git a/Content.Server/Power/Components/PowerReceiverComponent.cs b/Content.Server/Power/Components/PowerReceiverComponent.cs index 3c0e608017..89d44c13a7 100644 --- a/Content.Server/Power/Components/PowerReceiverComponent.cs +++ b/Content.Server/Power/Components/PowerReceiverComponent.cs @@ -220,7 +220,9 @@ namespace Content.Server.Power.Components /// public void Examine(FormattedMessage message, bool inDetailsRange) { - message.AddMarkup(Loc.GetString("It appears to be {0}.", Powered ? "[color=darkgreen]powered[/color]" : "[color=darkred]un-powered[/color]")); + message.AddMarkup(Loc.GetString("power-receiver-component-on-examine-main", + ("stateText", Loc.GetString( Powered ? "power-receiver-component-on-examine-powered" : + "power-receiver-component-on-examine-unpowered")))); } } diff --git a/Content.Server/PowerCell/Components/PowerCellComponent.cs b/Content.Server/PowerCell/Components/PowerCellComponent.cs index 5073f96d67..05b951913a 100644 --- a/Content.Server/PowerCell/Components/PowerCellComponent.cs +++ b/Content.Server/PowerCell/Components/PowerCellComponent.cs @@ -94,7 +94,7 @@ namespace Content.Server.PowerCell.Components { if (inDetailsRange) { - message.AddMarkup(Loc.GetString($"The charge indicator reads {CurrentCharge / MaxCharge * 100:F0} %.")); + message.AddMarkup(Loc.GetString("power-cell-component-examine-details", ("currentCharge", $"{CurrentCharge / MaxCharge * 100}:F0"))); } } diff --git a/Content.Server/PowerCell/Components/PowerCellSlotComponent.cs b/Content.Server/PowerCell/Components/PowerCellSlotComponent.cs index c2c618cd91..5423f01441 100644 --- a/Content.Server/PowerCell/Components/PowerCellSlotComponent.cs +++ b/Content.Server/PowerCell/Components/PowerCellSlotComponent.cs @@ -110,9 +110,9 @@ namespace Content.Server.PowerCell.Components if (!inDetailsRange) return; string sizeLetter = SlotSize switch { - PowerCellSize.Small => Loc.GetString("S"), - PowerCellSize.Medium => Loc.GetString("M"), - PowerCellSize.Large => Loc.GetString("L"), + PowerCellSize.Small => Loc.GetString("power-cell-slot-component-small-size-shorthand"), + PowerCellSize.Medium => Loc.GetString("power-cell-slot-component-medium-size-shorthand"), + PowerCellSize.Large => Loc.GetString("power-cell-slot-component-large-size-shorthand"), _ => "???" }; if (DescFormatString != null) message.AddMarkup(string.Format(DescFormatString, sizeLetter)); @@ -189,12 +189,12 @@ namespace Content.Server.PowerCell.Components if (component.Cell == null) { - data.Text = Loc.GetString("No cell"); + data.Text = Loc.GetString("power-cell-slot-component-no-cell"); data.Visibility = VerbVisibility.Disabled; } else { - data.Text = Loc.GetString("Eject cell"); + data.Text = Loc.GetString("power-cell-slot-component-eject-cell"); data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; } diff --git a/Content.Server/Pulling/PullableComponent.cs b/Content.Server/Pulling/PullableComponent.cs index 6d10d8d5e1..56074a7072 100644 --- a/Content.Server/Pulling/PullableComponent.cs +++ b/Content.Server/Pulling/PullableComponent.cs @@ -41,8 +41,8 @@ namespace Content.Server.Pulling data.Visibility = VerbVisibility.Visible; data.Text = component.Puller == userPhysics.Owner - ? Loc.GetString("Stop pulling") - : Loc.GetString("Pull"); + ? Loc.GetString("pulling-verb-get-data-text-stop-pulling") + : Loc.GetString("pulling-verb-get-data-text"); } protected override void Activate(IEntity user, PullableComponent component) diff --git a/Content.Server/RCD/Components/RCDAmmoComponent.cs b/Content.Server/RCD/Components/RCDAmmoComponent.cs index 29c7d36c8d..5ea8367fbd 100644 --- a/Content.Server/RCD/Components/RCDAmmoComponent.cs +++ b/Content.Server/RCD/Components/RCDAmmoComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; using Content.Server.Hands.Components; using Content.Shared.Examine; @@ -23,7 +23,7 @@ namespace Content.Server.RCD.Components public void Examine(FormattedMessage message, bool inDetailsRange) { - message.AddMarkup(Loc.GetString("It holds {0} charges.", refillAmmo)); + message.AddMarkup(Loc.GetString("rcd-ammo-component-on-examine-text",("ammo", refillAmmo))); } async Task IAfterInteract.AfterInteract(AfterInteractEventArgs eventArgs) @@ -37,12 +37,12 @@ namespace Content.Server.RCD.Components if (rcdComponent.MaxAmmo - rcdComponent._ammo < refillAmmo) { - rcdComponent.Owner.PopupMessage(eventArgs.User, Loc.GetString("The RCD is full!")); + rcdComponent.Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-ammo-component-after-interact-full-text")); return true; } rcdComponent._ammo = Math.Min(rcdComponent.MaxAmmo, rcdComponent._ammo + refillAmmo); - rcdComponent.Owner.PopupMessage(eventArgs.User, Loc.GetString("You refill the RCD.")); + rcdComponent.Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-ammo-component-after-interact-refilled-text")); //Deleting a held item causes a lot of errors hands.Drop(Owner, false); diff --git a/Content.Server/RCD/Components/RCDComponent.cs b/Content.Server/RCD/Components/RCDComponent.cs index 79365aead0..aa344649b8 100644 --- a/Content.Server/RCD/Components/RCDComponent.cs +++ b/Content.Server/RCD/Components/RCDComponent.cs @@ -165,7 +165,7 @@ namespace Content.Server.RCD.Components //Less expensive checks first. Failing those ones, we need to check that the tile isn't obstructed. if (_ammo <= 0) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The RCD is out of ammo!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-component-no-ammo-message")); return false; } @@ -186,7 +186,7 @@ namespace Content.Server.RCD.Components case RcdMode.Floors: if (!tile.Tile.IsEmpty) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You can only build a floor on space!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-component-cannot-build-floor-tile-not-empty-message")); return false; } @@ -201,13 +201,13 @@ namespace Content.Server.RCD.Components //They tried to decon a turf but the turf is blocked if (eventArgs.Target == null && tile.IsBlockedTurf(true)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("That tile is obstructed!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-component-tile-obstructed-message")); return false; } //They tried to decon a non-turf but it's not in the whitelist if (eventArgs.Target != null && !eventArgs.Target.TryGetComponent(out RCDDeconstructWhitelist? deCon)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You can't deconstruct that!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-component-deconstruct-target-not-on-whitelist-message")); return false; } @@ -216,25 +216,25 @@ namespace Content.Server.RCD.Components case RcdMode.Walls: if (tile.Tile.IsEmpty) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("You cannot build a wall on space!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-component-cannot-build-wall-tile-not-empty-message")); return false; } if (tile.IsBlockedTurf(true)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("That tile is obstructed!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-component-tile-obstructed-message")); return false; } return true; case RcdMode.Airlock: if (tile.Tile.IsEmpty) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Cannot build an airlock on space!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-component-cannot-build-airlock-tile-not-empty-message")); return false; } if (tile.IsBlockedTurf(true)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("That tile is obstructed!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("rcd-component-tile-obstructed-message")); return false; } return true; diff --git a/Content.Server/Radio/Components/HandheldRadioComponent.cs b/Content.Server/Radio/Components/HandheldRadioComponent.cs index 61f4963d47..d3ae7c3167 100644 --- a/Content.Server/Radio/Components/HandheldRadioComponent.cs +++ b/Content.Server/Radio/Components/HandheldRadioComponent.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Content.Server.Chat.Managers; using Content.Server.Radio.EntitySystems; using Content.Shared.Examine; @@ -65,7 +65,8 @@ namespace Content.Server.Radio.Components { RadioOn = !RadioOn; - var message = Loc.GetString($"The radio is now {(RadioOn ? "on" : "off")}."); + var message = Loc.GetString("handheld-radio-component-on-use", + ("radioState", Loc.GetString(RadioOn ? "handheld-radio-component-on-state" : "handheld-radio-component-off-state"))); Owner.PopupMessage(user, message); return true; @@ -108,7 +109,7 @@ namespace Content.Server.Radio.Components public void Examine(FormattedMessage message, bool inDetailsRange) { - message.AddText(Loc.GetString("It is set to broadcast over the {0} frequency.", BroadcastFrequency)); + message.AddText(Loc.GetString("handheld-radio-component-on-examine",("frequency", BroadcastFrequency))); } } } diff --git a/Content.Server/Recycling/Components/RecyclerComponent.cs b/Content.Server/Recycling/Components/RecyclerComponent.cs index d7f95359e5..1c1073b0a1 100644 --- a/Content.Server/Recycling/Components/RecyclerComponent.cs +++ b/Content.Server/Recycling/Components/RecyclerComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using Content.Server.Act; using Content.Server.Chat.Managers; @@ -154,10 +154,10 @@ namespace Content.Server.Recycling.Components if (mind != null) { EntitySystem.Get().OnGhostAttempt(mind, false); - mind.OwnedEntity?.PopupMessage(Loc.GetString("You recycle yourself!")); + mind.OwnedEntity?.PopupMessage(Loc.GetString("recycler-component-suicide-message")); } - victim.PopupMessageOtherClients(Loc.GetString("{0:theName} tries to recycle {0:themself}!", victim)); + victim.PopupMessageOtherClients(Loc.GetString("recycler-component-suicide-message-others", ("victim",victim))); if (victim.TryGetComponent(out var body)) { diff --git a/Content.Server/Rotation/Components/FlippableComponent.cs b/Content.Server/Rotation/Components/FlippableComponent.cs index 8a21e85f30..007a6652b7 100644 --- a/Content.Server/Rotation/Components/FlippableComponent.cs +++ b/Content.Server/Rotation/Components/FlippableComponent.cs @@ -26,7 +26,7 @@ namespace Content.Server.Rotation.Components if (Owner.TryGetComponent(out IPhysBody? physics) && physics.BodyType == BodyType.Static) { - Owner.PopupMessage(user, Loc.GetString("It's stuck.")); + Owner.PopupMessage(user, Loc.GetString("flippable-component-try-flip-is-stuck")); return; } @@ -50,7 +50,7 @@ namespace Content.Server.Rotation.Components return; } - data.Text = Loc.GetString("Flip"); + data.Text = Loc.GetString("flippable-verb-get-data-text"); } protected override void Activate(IEntity user, FlippableComponent component) diff --git a/Content.Server/Rotation/Components/RotatableComponent.cs b/Content.Server/Rotation/Components/RotatableComponent.cs index c2679fa90e..a3d0541d89 100644 --- a/Content.Server/Rotation/Components/RotatableComponent.cs +++ b/Content.Server/Rotation/Components/RotatableComponent.cs @@ -21,7 +21,7 @@ namespace Content.Server.Rotation.Components { if (physics.BodyType == BodyType.Static) { - Owner.PopupMessage(user, Loc.GetString("It's stuck.")); + Owner.PopupMessage(user, Loc.GetString("rotatable-component-try-rotate-stuck")); return; } } @@ -41,7 +41,7 @@ namespace Content.Server.Rotation.Components } data.CategoryData = VerbCategories.Rotate; - data.Text = Loc.GetString("Rotate clockwise"); + data.Text = Loc.GetString("rotate-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/rotate_cw.svg.192dpi.png"; } @@ -63,7 +63,7 @@ namespace Content.Server.Rotation.Components } data.CategoryData = VerbCategories.Rotate; - data.Text = Loc.GetString("Rotate counter-clockwise"); + data.Text = Loc.GetString("rotate-counter-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/rotate_ccw.svg.192dpi.png"; } diff --git a/Content.Server/RoundEnd/RoundEndSystem.cs b/Content.Server/RoundEnd/RoundEndSystem.cs index b8cd6d7bcd..649c7374b9 100644 --- a/Content.Server/RoundEnd/RoundEndSystem.cs +++ b/Content.Server/RoundEnd/RoundEndSystem.cs @@ -78,7 +78,7 @@ namespace Content.Server.RoundEnd IsRoundEndCountdownStarted = true; - _chatManager.DispatchStationAnnouncement(Loc.GetString("An emergency shuttle has been sent. ETA: {0} minutes.", RoundEndCountdownTime.Minutes), Loc.GetString("Station")); + _chatManager.DispatchStationAnnouncement(Loc.GetString("round-end-system-shuttle-called-announcement",("minutes", RoundEndCountdownTime.Minutes)), Loc.GetString("Station")); SoundSystem.Play(Filter.Broadcast(), "/Audio/Announcements/shuttlecalled.ogg"); @@ -102,7 +102,7 @@ namespace Content.Server.RoundEnd IsRoundEndCountdownStarted = false; - _chatManager.DispatchStationAnnouncement(Loc.GetString("The emergency shuttle has been recalled."), Loc.GetString("Station")); + _chatManager.DispatchStationAnnouncement(Loc.GetString("round-end-system-shuttle-recalled-announcement"), Loc.GetString("Station")); SoundSystem.Play(Filter.Broadcast(), "/Audio/Announcements/shuttlerecalled.ogg"); @@ -122,7 +122,7 @@ namespace Content.Server.RoundEnd var gameTicker = EntitySystem.Get(); gameTicker.EndRound(); - _chatManager.DispatchServerAnnouncement(Loc.GetString("Restarting the round in {0} seconds...", RestartRoundTime)); + _chatManager.DispatchServerAnnouncement(Loc.GetString("round-end-system-round-restart-eta-announcement", ("seconds", RestartRoundTime))); Timer.Spawn(TimeSpan.FromSeconds(RestartRoundTime), () => gameTicker.RestartRound(), CancellationToken.None); } diff --git a/Content.Server/StationEvents/Events/PowerGridCheck.cs b/Content.Server/StationEvents/Events/PowerGridCheck.cs index c211dc941a..0d44829a18 100644 --- a/Content.Server/StationEvents/Events/PowerGridCheck.cs +++ b/Content.Server/StationEvents/Events/PowerGridCheck.cs @@ -19,10 +19,8 @@ namespace Content.Server.StationEvents.Events public override string Name => "PowerGridCheck"; public override float Weight => WeightNormal; public override int? MaxOccurrences => 3; - public override string StartAnnouncement => Loc.GetString( - "Abnormal activity detected in the station's powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration."); - protected override string EndAnnouncement => Loc.GetString( - "Power has been restored to the station. We apologize for the inconvenience."); + public override string StartAnnouncement => Loc.GetString("station-event-power-grid-check-start-announcement"); + protected override string EndAnnouncement => Loc.GetString("station-event-power-grid-check-end-announcement"); public override string? StartAudio => "/Audio/Announcements/power_off.ogg"; // If you need EndAudio it's down below. Not set here because we can't play it at the normal time without spamming sounds. diff --git a/Content.Server/StationEvents/Events/RadiationStorm.cs b/Content.Server/StationEvents/Events/RadiationStorm.cs index f4b6eae37f..a199a53038 100644 --- a/Content.Server/StationEvents/Events/RadiationStorm.cs +++ b/Content.Server/StationEvents/Events/RadiationStorm.cs @@ -21,10 +21,8 @@ namespace Content.Server.StationEvents.Events [Dependency] private IRobustRandom _robustRandom = default!; public override string Name => "RadiationStorm"; - public override string StartAnnouncement => Loc.GetString( - "High levels of radiation detected near the station. Evacuate any areas containing abnormal green energy fields."); - protected override string EndAnnouncement => Loc.GetString( - "The radiation threat has passed. Please return to your workplaces."); + public override string StartAnnouncement => Loc.GetString("station-event-radiation-storm-start-announcement"); + protected override string EndAnnouncement => Loc.GetString("station-event-radiation-storm-end-announcement"); public override string StartAudio => "/Audio/Announcements/radiation.ogg"; protected override float StartAfter => 10.0f; diff --git a/Content.Server/StationEvents/StationEventCommand.cs b/Content.Server/StationEvents/StationEventCommand.cs index 336a36f6ec..56ef7b8ce5 100644 --- a/Content.Server/StationEvents/StationEventCommand.cs +++ b/Content.Server/StationEvents/StationEventCommand.cs @@ -5,6 +5,7 @@ using Robust.Server.Player; using Robust.Shared.Console; using Robust.Shared.GameObjects; using Robust.Shared.Localization; +using System.Linq; namespace Content.Server.StationEvents { @@ -12,30 +13,24 @@ namespace Content.Server.StationEvents public sealed class StationEventCommand : IConsoleCommand { public string Command => "events"; - public string Description => "Provides admin control to station events"; - public string Help => $"events >\n{RunningHelp}\n{ListHelp}\n{PauseHelp}\n{ResumeHelp}\n{RunHelp}"; - - private const string RunningHelp = "running: return the current running event"; - - private const string ListHelp = "list: return all event names that can be run"; - - private const string PauseHelp = "pause: stop all random events from running and any one currently running"; - - private const string ResumeHelp = "resume: allow random events to run again"; - - private const string RunHelp = - "run : start a particular event now; is case-insensitive and not localized"; + public string Description => Loc.GetString("station-event-command-description"); + public string Help => Loc.GetString("station-event-command-help-text", + ("runningHelp", Loc.GetString("station-event-command-running-help-text")), + ("listHelp", Loc.GetString("station-event-command-list-help-text")), + ("pauseHelp", Loc.GetString("station-event-command-pause-help-text")), + ("resumeHelp", Loc.GetString("station-event-command-resume-help-text")), + ("runHelp", Loc.GetString("station-event-command-run-help-text"))); public void Execute(IConsoleShell shell, string argStr, string[] args) { var player = shell.Player as IPlayerSession; - if (args.Length == 0) + if (!args.Any()) { - shell.WriteLine($"Invalid amount of arguments.\n{Help}"); + shell.WriteLine(Loc.GetString("shell-wrong-arguments-number") + $"\n{Help}"); return; } - switch (args[0]) + switch (args.First()) { case "list": List(shell, player); @@ -56,14 +51,17 @@ namespace Content.Server.StationEvents case "run": if (args.Length != 2) { - shell.WriteLine($"Need 2 arguments, there were {args.Length}.\n{RunHelp}"); + shell.WriteLine(Loc.GetString("shell-wrong-arguments-number-need-specific", + ("properAmount", 2), + ("currentAmount", args.Length)) + + $"\n{Loc.GetString("station-event-command-run-help-text")}"); break; } Run(shell, player, args[1]); break; default: - shell.WriteLine(Loc.GetString($"Invalid events command.\n{Help}")); + shell.WriteLine(Loc.GetString($"shell-invalid-command-specific.", ("commandName", "events")) + $"\n{Help}"); break; } } @@ -94,7 +92,8 @@ namespace Content.Server.StationEvents private void List(IConsoleShell shell, IPlayerSession? player) { - var resultText = "Random\n" + EntitySystem.Get().GetEventNames(); + var resultText = Loc.GetString("station-event-command-event-list", + ("otherEvents", EntitySystem.Get().GetEventNames())); shell.WriteLine(resultText); } @@ -104,12 +103,12 @@ namespace Content.Server.StationEvents if (!stationEventSystem.Enabled) { - shell.WriteLine(Loc.GetString("Station events are already paused")); + shell.WriteLine(Loc.GetString("station-event-command-events-already-paused-message")); } else { stationEventSystem.Enabled = false; - shell.WriteLine(Loc.GetString("Station events paused")); + shell.WriteLine(Loc.GetString("station-event-command-events-paused-message")); } } @@ -119,12 +118,12 @@ namespace Content.Server.StationEvents if (stationEventSystem.Enabled) { - shell.WriteLine(Loc.GetString("Station events are already running")); + shell.WriteLine(Loc.GetString("station-event-command-events-already-running-message")); } else { stationEventSystem.Enabled = true; - shell.WriteLine(Loc.GetString("Station events resumed")); + shell.WriteLine(Loc.GetString("station-event-command-events-resumed-message")); } } diff --git a/Content.Server/StationEvents/StationEventSystem.cs b/Content.Server/StationEvents/StationEventSystem.cs index 60a2c9f7e3..6873e23f40 100644 --- a/Content.Server/StationEvents/StationEventSystem.cs +++ b/Content.Server/StationEvents/StationEventSystem.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -106,11 +106,11 @@ namespace Content.Server.StationEvents CurrentEvent?.Shutdown(); CurrentEvent = stationEvent; stationEvent.Announce(); - return Loc.GetString("Running event ") + stationEvent.Name; + return Loc.GetString("station-event-system-run-event", ("eventName", stationEvent.Name)); } // I had string interpolation but lord it made it hard to read - return Loc.GetString("No event named ") + name; + return Loc.GetString("station-event-system-run-event-no-event-name", ("eventName", name)); } /// @@ -123,14 +123,14 @@ namespace Content.Server.StationEvents if (randomEvent == null) { - return Loc.GetString("No valid events available"); + return Loc.GetString("station-event-system-run-random-event-no-valid-events"); } CurrentEvent?.Shutdown(); CurrentEvent = randomEvent; CurrentEvent.Startup(); - return Loc.GetString("Running ") + randomEvent.Name; + return Loc.GetString("station-event-system-run-event",("eventName", randomEvent.Name)); } /// @@ -152,11 +152,11 @@ namespace Content.Server.StationEvents if (CurrentEvent == null) { - resultText = Loc.GetString("No event running currently"); + resultText = Loc.GetString("station-event-system-stop-event-no-running-event"); } else { - resultText = Loc.GetString("Stopped event ") + CurrentEvent.Name; + resultText = Loc.GetString("station-event-system-stop-event", ("eventName", CurrentEvent.Name)); CurrentEvent.Shutdown(); CurrentEvent = null; } diff --git a/Content.Server/Storage/Components/EntityStorageComponent.cs b/Content.Server/Storage/Components/EntityStorageComponent.cs index d30fb7de76..3b5ecd277b 100644 --- a/Content.Server/Storage/Components/EntityStorageComponent.cs +++ b/Content.Server/Storage/Components/EntityStorageComponent.cs @@ -172,7 +172,7 @@ namespace Content.Server.Storage.Components { if (IsWeldedShut) { - if(!silent) Owner.PopupMessage(user, Loc.GetString("It's welded completely shut!")); + if(!silent) Owner.PopupMessage(user, Loc.GetString("entity-storage-component-welded-shut-message")); return false; } return true; @@ -410,7 +410,7 @@ namespace Content.Server.Storage.Components if (Contents.Contains(eventArgs.User)) { _beingWelded = false; - Owner.PopupMessage(eventArgs.User, Loc.GetString("It's too Cramped!")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("entity-storage-component-already-contains-user-message")); return false; } @@ -474,12 +474,12 @@ namespace Content.Server.Storage.Components if (IsWeldedShut) { data.Visibility = VerbVisibility.Disabled; - var verb = Loc.GetString(component.Open ? "Close" : "Open"); - data.Text = Loc.GetString("{0} (welded shut)", verb); + var verb = Loc.GetString(component.Open ? "open-toggle-verb-close" : "open-toggle-verb-open"); + data.Text = Loc.GetString("open-toggle-verb-welded-shut-message",("verb", verb)); return; } - data.Text = Loc.GetString(component.Open ? "Close" : "Open"); + data.Text = Loc.GetString(component.Open ? "open-toggle-verb-close" : "open-toggle-verb-open"); data.IconTexture = component.Open ? "/Textures/Interface/VerbIcons/close.svg.192dpi.png" : "/Textures/Interface/VerbIcons/open.svg.192dpi.png"; } diff --git a/Content.Server/Storage/Components/SecretStashComponent.cs b/Content.Server/Storage/Components/SecretStashComponent.cs index 68dfb18820..b3975c531b 100644 --- a/Content.Server/Storage/Components/SecretStashComponent.cs +++ b/Content.Server/Storage/Components/SecretStashComponent.cs @@ -29,7 +29,7 @@ namespace Content.Server.Storage.Components [ViewVariables] private ContainerSlot _itemContainer = default!; - public string SecretPartName => _secretPartNameOverride ?? Loc.GetString("{0:theName}", Owner); + public string SecretPartName => _secretPartNameOverride ?? Loc.GetString("comp-secret-stash-secret-part-name", ("name", Owner.Name)); protected override void Initialize() { @@ -47,7 +47,7 @@ namespace Content.Server.Storage.Components { if (_itemContainer.ContainedEntity != null) { - Owner.PopupMessage(user, Loc.GetString("There's already something in here?!")); + Owner.PopupMessage(user, Loc.GetString("comp-secret-stash-action-hide-container-not-empty")); return false; } @@ -57,7 +57,7 @@ namespace Content.Server.Storage.Components if (item.Size > _maxItemSize) { Owner.PopupMessage(user, - Loc.GetString("{0:TheName} is too big to fit in {1}!", itemToHide, SecretPartName)); + Loc.GetString("comp-secret-stash-action-hide-item-too-big",("item", itemToHide),("stash", SecretPartName))); return false; } @@ -67,7 +67,7 @@ namespace Content.Server.Storage.Components if (!hands.Drop(itemToHide, _itemContainer)) return false; - Owner.PopupMessage(user, Loc.GetString("comp-secret-stash-action-hide", ("item", itemToHide), ("this", SecretPartName))); + Owner.PopupMessage(user, Loc.GetString("comp-secret-stash-action-hide-success", ("item", itemToHide), ("this", SecretPartName))); return true; } @@ -82,7 +82,7 @@ namespace Content.Server.Storage.Components if (_itemContainer.ContainedEntity == null) return false; - Owner.PopupMessage(user, Loc.GetString("There was something inside {0}!", SecretPartName)); + Owner.PopupMessage(user, Loc.GetString("There was something inside {0}!", ("stash", SecretPartName))); if (user.TryGetComponent(out HandsComponent? hands)) { diff --git a/Content.Server/Storage/Components/SecureEntityStorageComponent.cs b/Content.Server/Storage/Components/SecureEntityStorageComponent.cs index 840026e6c3..5dcaf78cf4 100644 --- a/Content.Server/Storage/Components/SecureEntityStorageComponent.cs +++ b/Content.Server/Storage/Components/SecureEntityStorageComponent.cs @@ -117,7 +117,7 @@ namespace Content.Server.Storage.Components { if (!reader.IsAllowed(user)) { - Owner.PopupMessage(user, Loc.GetString("Access denied")); + Owner.PopupMessage(user, Loc.GetString("secure-entity-storage-component-not-allowed-message")); return false; } } @@ -136,7 +136,7 @@ namespace Content.Server.Storage.Components return; } - data.Text = Loc.GetString(component.Locked ? "Unlock" : "Lock"); + data.Text = Loc.GetString(component.Locked ? "toggle-lock-verb-unlock" : "toggle-lock-verb-lock"); } protected override void Activate(IEntity user, SecureEntityStorageComponent component) diff --git a/Content.Server/Strip/StrippableComponent.cs b/Content.Server/Strip/StrippableComponent.cs index 6e15fc302e..07d7dc6495 100644 --- a/Content.Server/Strip/StrippableComponent.cs +++ b/Content.Server/Strip/StrippableComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Collections.Generic; using System.Threading; using Content.Server.Cuffs.Components; @@ -157,13 +157,13 @@ namespace Content.Server.Strip if (item == null) { - user.PopupMessageCursor(Loc.GetString("You aren't holding anything!")); + user.PopupMessageCursor(Loc.GetString("strippable-component-not-holding-anything")); return false; } if (!userHands.CanDrop(userHands.ActiveHand!)) { - user.PopupMessageCursor(Loc.GetString("You can't drop that!")); + user.PopupMessageCursor(Loc.GetString("strippable-component-cannot-drop")); return false; } @@ -172,13 +172,13 @@ namespace Content.Server.Strip if (inventory.TryGetSlotItem(slot, out ItemComponent _)) { - user.PopupMessageCursor(Loc.GetString("{0:They} already {0:have} something there!", Owner)); + user.PopupMessageCursor(Loc.GetString("strippable-component-item-slot-occupied",("owner", Owner))); return false; } if (!inventory.CanEquip(slot, item, false)) { - user.PopupMessageCursor(Loc.GetString("{0:They} cannot equip that there!", Owner)); + user.PopupMessageCursor(Loc.GetString("strippable-component-cannot-equip-message",("owner", Owner))); return false; } @@ -222,28 +222,30 @@ namespace Content.Server.Strip if (item == null) { - user.PopupMessageCursor(Loc.GetString("You aren't holding anything!")); + user.PopupMessageCursor(Loc.GetString("strippable-component-not-holding-anything")); return false; } if (!userHands.CanDrop(userHands.ActiveHand!)) { - user.PopupMessageCursor(Loc.GetString("You can't drop that!")); + user.PopupMessageCursor(Loc.GetString("strippable-component-cannot-drop")); return false; } if (!hands.HasHand(hand)) + { return false; + } if (hands.TryGetItem(hand, out var _)) { - user.PopupMessageCursor(Loc.GetString("{0:They} already {0:have} something there!", Owner)); + user.PopupMessageCursor(Loc.GetString("strippable-component-item-slot-occupied-message", ("owner", Owner))); return false; } if (!hands.CanPutInHand(item, hand, false)) { - user.PopupMessageCursor(Loc.GetString("{0:They} cannot put that there!", Owner)); + user.PopupMessageCursor(Loc.GetString("strippable-component-cannot-put-message",("owner", Owner))); return false; } @@ -288,13 +290,13 @@ namespace Content.Server.Strip if (!inventory.TryGetSlotItem(slot, out ItemComponent? itemToTake)) { - user.PopupMessageCursor(Loc.GetString("{0:They} {0:have} nothing there!", Owner)); + user.PopupMessageCursor(Loc.GetString("strippable-component-item-slot-free-message",("owner", Owner))); return false; } if (!inventory.CanUnequip(slot, false)) { - user.PopupMessageCursor(Loc.GetString("{0:They} cannot unequip that!", Owner)); + user.PopupMessageCursor(Loc.GetString("strippable-component-cannot-unequip-message",("owner", Owner))); return false; } @@ -344,13 +346,13 @@ namespace Content.Server.Strip if (!hands.TryGetItem(hand, out var heldItem)) { - user.PopupMessageCursor(Loc.GetString("{0:They} {0:have} nothing there!", Owner)); + user.PopupMessageCursor(Loc.GetString("strippable-component-item-slot-free-message",("owner", Owner))); return false; } if (!hands.CanDrop(hand, false)) { - user.PopupMessageCursor(Loc.GetString("{0:They} cannot drop that!", Owner)); + user.PopupMessageCursor(Loc.GetString("strippable-component-cannot-drop-message",("owner", Owner))); return false; } @@ -443,7 +445,7 @@ namespace Content.Server.Strip } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Strip"); + data.Text = Loc.GetString("strip-verb-get-data-text"); } protected override void Activate(IEntity user, StrippableComponent component) diff --git a/Content.Server/Stunnable/Components/StunnableComponent.cs b/Content.Server/Stunnable/Components/StunnableComponent.cs index 61dc8e35cd..29982e02ce 100644 --- a/Content.Server/Stunnable/Components/StunnableComponent.cs +++ b/Content.Server/Stunnable/Components/StunnableComponent.cs @@ -74,8 +74,8 @@ namespace Content.Server.Stunnable.Components AudioHelpers.WithVariation(0.025f)); if (target != null) { - source.PopupMessageOtherClients(Loc.GetString("{0} pushes {1}!", source.Name, target.Name)); - source.PopupMessageCursor(Loc.GetString("You push {0}!", target.Name)); + source.PopupMessageOtherClients(Loc.GetString("stunnable-component-disarm-success-others", ("source", source.Name),("target", target.Name))); + source.PopupMessageCursor(Loc.GetString("stunnable-component-disarm-success",("target", target.Name))); } } diff --git a/Content.Server/Suspicion/SuspicionRoleComponent.cs b/Content.Server/Suspicion/SuspicionRoleComponent.cs index 5ff64872a5..2b36fef940 100644 --- a/Content.Server/Suspicion/SuspicionRoleComponent.cs +++ b/Content.Server/Suspicion/SuspicionRoleComponent.cs @@ -131,11 +131,13 @@ namespace Content.Server.Suspicion var traitor = IsTraitor(); var color = traitor ? "red" : "green"; - var role = traitor ? "traitor" : "innocent"; - var article = traitor ? "a" : "an"; + var role = traitor ? "suspicion-role-component-role-traitor" : "suspicion-role-component-role-innocent"; + var article = traitor ? "generic-article-a" : "generic-article-an"; - var tooltip = Loc.GetString("They were {0} [color={1}]{2}[/color]!", Loc.GetString(article), color, - Loc.GetString(role)); + var tooltip = Loc.GetString("suspicion-role-component-on-examine-tooltip", + ("article", Loc.GetString(article)), + ("colorName", color), + ("role",Loc.GetString(role))); message.AddMarkup(tooltip); } diff --git a/Content.Server/Toilet/ToiletComponent.cs b/Content.Server/Toilet/ToiletComponent.cs index 24dfab1245..be6f3b6e4e 100644 --- a/Content.Server/Toilet/ToiletComponent.cs +++ b/Content.Server/Toilet/ToiletComponent.cs @@ -119,7 +119,7 @@ namespace Content.Server.Toilet { if (_secretStash.HasItemInside()) { - message.AddMarkup(Loc.GetString("There is [color=darkgreen]something[/color] inside cistern!")); + message.AddMarkup(Loc.GetString("toilet-component-on-examine-found-hidden-item")); } } } @@ -147,20 +147,20 @@ namespace Content.Server.Toilet if (victim.TryGetComponent(out var body) && body.HasPartOfType(BodyPartType.Head)) { - var othersMessage = Loc.GetString("{0:theName} sticks their head into {1:theName} and flushes it!", victim, Owner); + var othersMessage = Loc.GetString("toilet-component-suicide-head-message-others", ("victim",victim.Name),("owner", Owner.Name)); victim.PopupMessageOtherClients(othersMessage); - var selfMessage = Loc.GetString("You stick your head into {0:theName} and flush it!", Owner); + var selfMessage = Loc.GetString("toilet-component-suicide-head-message", ("owner", Owner.Name)); victim.PopupMessage(selfMessage); return SuicideKind.Asphyxiation; } else { - var othersMessage = Loc.GetString("{0:theName} bashes themselves with {1:theName}!", victim, Owner); + var othersMessage = Loc.GetString("toilet-component-suicide-message-others",("victim", victim.Name),("owner", Owner.Name)); victim.PopupMessageOtherClients(othersMessage); - var selfMessage = Loc.GetString("You bash yourself with {0:theName}!", Owner); + var selfMessage = Loc.GetString("toilet-component-suicide-message", ("owner",Owner.Name)); victim.PopupMessage(selfMessage); return SuicideKind.Blunt; diff --git a/Content.Server/Tools/Components/WelderComponent.cs b/Content.Server/Tools/Components/WelderComponent.cs index 5ddf597d6a..2394ea0e39 100644 --- a/Content.Server/Tools/Components/WelderComponent.cs +++ b/Content.Server/Tools/Components/WelderComponent.cs @@ -142,7 +142,7 @@ namespace Content.Server.Tools.Components if (!WelderLit) { if (!silent && user != null) - Owner.PopupMessage(user, Loc.GetString("The welder is turned off!")); + Owner.PopupMessage(user, Loc.GetString("welder-component-welder-not-lit-message")); return false; } @@ -150,7 +150,7 @@ namespace Content.Server.Tools.Components if (!CanWeld(value)) { if (!silent && user != null) - Owner.PopupMessage(user, Loc.GetString("The welder does not have enough fuel for that!")); + Owner.PopupMessage(user, Loc.GetString("welder-component-cannot-weld-message")); return false; } @@ -200,7 +200,7 @@ namespace Content.Server.Tools.Components if (!CanLitWelder() && user != null) { - Owner.PopupMessage(user, Loc.GetString("The welder has no fuel left!")); + Owner.PopupMessage(user, Loc.GetString("welder-component-no-fuel-message")); return false; } @@ -228,17 +228,19 @@ namespace Content.Server.Tools.Components { if (WelderLit) { - message.AddMarkup(Loc.GetString("[color=orange]Lit[/color]\n")); + message.AddMarkup(Loc.GetString("welder-component-on-examine-welder-lit-message") + "\n"); } else { - message.AddText(Loc.GetString("Not lit\n")); + message.AddText(Loc.GetString("welder-component-on-examine-welder-not-lit-message") + "\n"); } if (inDetailsRange) { - message.AddMarkup(Loc.GetString("Fuel: [color={0}]{1}/{2}[/color].", - Fuel < FuelCapacity / 4f ? "darkorange" : "orange", Math.Round(Fuel), FuelCapacity)); + message.AddMarkup(Loc.GetString("welder-component-on-examine-detailed-message", + ("colorName", Fuel < FuelCapacity / 4f ? "darkorange" : "orange"), + ("fuelLeft", Math.Round(Fuel)), + ("fuelCapacity", FuelCapacity))); } } @@ -273,21 +275,20 @@ namespace Content.Server.Tools.Components PlaySoundCollection(WeldSoundCollection); othersMessage = - Loc.GetString( - "{0:theName} welds {0:their} every orifice closed! It looks like {0:theyre} trying to commit suicide!", - victim); + Loc.GetString("welder-component-suicide-lit-others-message", + ("victim",victim)); victim.PopupMessageOtherClients(othersMessage); - selfMessage = Loc.GetString("You weld your every orifice closed!"); + selfMessage = Loc.GetString("welder-component-suicide-lit-message"); victim.PopupMessage(selfMessage); return SuicideKind.Heat; } - othersMessage = Loc.GetString("{0:theName} bashes themselves with the unlit welding torch!", victim); + othersMessage = Loc.GetString("welder-component-suicide-unlit-others-message", ("victim", victim)); victim.PopupMessageOtherClients(othersMessage); - selfMessage = Loc.GetString("You bash yourself with the unlit welding torch!"); + selfMessage = Loc.GetString("welder-component-suicide-unlit-message"); victim.PopupMessage(selfMessage); return SuicideKind.Blunt; @@ -326,7 +327,7 @@ namespace Content.Server.Tools.Components _solutionComponent.TryAddSolution(drained); SoundSystem.Play(Filter.Pvs(Owner), "/Audio/Effects/refill.ogg", Owner); - eventArgs.Target.PopupMessage(eventArgs.User, Loc.GetString("Welder refueled")); + eventArgs.Target.PopupMessage(eventArgs.User, Loc.GetString("welder-component-after-interact-refueled-message")); } } diff --git a/Content.Server/Traitor/TraitorRole.cs b/Content.Server/Traitor/TraitorRole.cs index e15687620f..7b6b25dfaf 100644 --- a/Content.Server/Traitor/TraitorRole.cs +++ b/Content.Server/Traitor/TraitorRole.cs @@ -1,4 +1,4 @@ -using Content.Server.Chat.Managers; +using Content.Server.Chat.Managers; using Content.Server.Roles; using Robust.Shared.IoC; using Robust.Shared.Localization; @@ -11,7 +11,7 @@ namespace Content.Server.Traitor { } - public override string Name => "Syndicate Agent"; + public override string Name => Loc.GetString("traitor-role-name"); public override bool Antagonist => true; public void GreetTraitor(string[] codewords) @@ -19,8 +19,8 @@ namespace Content.Server.Traitor if (Mind.TryGetSession(out var session)) { var chatMgr = IoCManager.Resolve(); - chatMgr.DispatchServerMessage(session, Loc.GetString("Hello Agent!")); - chatMgr.DispatchServerMessage(session, Loc.GetString("Your codewords are: {0}", string.Join(", ",codewords))); + chatMgr.DispatchServerMessage(session, Loc.GetString("traitor-role-greeting")); + chatMgr.DispatchServerMessage(session, Loc.GetString("traitor-role-codewords", ("codewords", string.Join(", ",codewords)))); } } } diff --git a/Content.Server/TraitorDeathMatch/Components/TraitorDeathMatchRedemptionComponent.cs b/Content.Server/TraitorDeathMatch/Components/TraitorDeathMatchRedemptionComponent.cs index 42c0705485..1027d2c2bc 100644 --- a/Content.Server/TraitorDeathMatch/Components/TraitorDeathMatchRedemptionComponent.cs +++ b/Content.Server/TraitorDeathMatch/Components/TraitorDeathMatchRedemptionComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System.Threading.Tasks; using Content.Server.Inventory.Components; using Content.Server.Mind.Components; @@ -22,38 +22,44 @@ namespace Content.Server.TraitorDeathMatch.Components { if (!eventArgs.User.TryGetComponent(out var userInv)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The machine buzzes, and displays: \"USER PDA OUT OF RANGE (0039)\"")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("traitor-death-match-redemption-component-interact-using-main-message", + ("secondMessage", Loc.GetString("traitor-death-match-redemption-component-interact-using-no-inventory-message")))); return false; } if (!eventArgs.User.TryGetComponent(out var userMindComponent)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The machine buzzes, and displays: \"AUTHENTICATION FAILED (0045)\"")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("traitor-death-match-redemption-component-interact-using-main-message", + ("secondMessage", Loc.GetString("traitor-death-match-redemption-component-interact-using-no-mind-message")))); return false; } var userMind = userMindComponent.Mind; if (userMind == null) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The machine buzzes, and displays: \"AUTHENTICATION FAILED (0052)\"")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("traitor-death-match-redemption-component-interact-using-main-message", + ("secondMessage", Loc.GetString("traitor-death-match-redemption-component-interact-using-no-user-mind-message")))); return false; } if (!eventArgs.Using.TryGetComponent(out var victimPDA)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The machine buzzes, and displays: \"GIVEN PDA IS NOT A PDA (0058)\"")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("traitor-death-match-redemption-component-interact-using-main-message", + ("secondMessage", Loc.GetString("traitor-death-match-redemption-component-interact-using-no-pda-message")))); return false; } if (!eventArgs.Using.TryGetComponent(out var victimPDAOwner)) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The machine buzzes, and displays: \"GIVEN PDA HAS NO OWNER (0064)\"")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("traitor-death-match-redemption-component-interact-using-main-message", + ("secondMessage", Loc.GetString("traitor-death-match-redemption-component-interact-using-no-pda-owner-message")))); return false; } if (victimPDAOwner.UserId == userMind.UserId) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The machine buzzes, and displays: \"GIVEN PDA OWNED BY USER (0070)\"")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("traitor-death-match-redemption-component-interact-using-main-message", + ("secondMessage", Loc.GetString("traitor-death-match-redemption-component-interact-using-pda-different-user-message")))); return false; } @@ -66,7 +72,8 @@ namespace Content.Server.TraitorDeathMatch.Components if (userPDA == null) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The machine buzzes, and displays: \"NO USER PDA IN IDCARD POCKET (0083)\"")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("traitor-death-match-redemption-component-interact-using-main-message", + ("secondMessage", Loc.GetString("traitor-death-match-redemption-component-interact-using-no-pda-in-pocket-message")))); return false; } @@ -85,13 +92,15 @@ namespace Content.Server.TraitorDeathMatch.Components // ...So apparently, "it probably shouldn't kill people for a mistake". // :( // Give boring error message instead. - Owner.PopupMessage(eventArgs.User, Loc.GetString("The machine buzzes, and displays: \"USER PDA HAS NO UPLINK ACCOUNT (0102)\"")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("traitor-death-match-redemption-component-interact-using-main-message", + ("secondMessage", Loc.GetString("traitor-death-match-redemption-component-interact-using-user-no-uplink-account-message")))); return false; } if (victimAccount == null) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("The machine buzzes, and displays: \"GIVEN PDA HAS NO UPLINK ACCOUNT (0108)\"")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("traitor-death-match-redemption-component-interact-using-main-message", + ("secondMessage", Loc.GetString("traitor-death-match-redemption-component-interact-using-victim-no-uplink-account-message")))); return false; } @@ -102,7 +111,7 @@ namespace Content.Server.TraitorDeathMatch.Components victimPDA.Owner.Delete(); - Owner.PopupMessage(eventArgs.User, Loc.GetString("The machine plays a happy little tune, and displays: \"SUCCESS: {0} TC TRANSFERRED\"", transferAmount)); + Owner.PopupMessage(eventArgs.User, Loc.GetString("traitor-death-match-redemption-component-interact-using-success-message", ("tcAmount", transferAmount))); return true; } } diff --git a/Content.Server/Transform/Verbs/AttachToGrandparentVerb.cs b/Content.Server/Transform/Verbs/AttachToGrandparentVerb.cs index 66f4d823a9..ab9d3b75a0 100644 --- a/Content.Server/Transform/Verbs/AttachToGrandparentVerb.cs +++ b/Content.Server/Transform/Verbs/AttachToGrandparentVerb.cs @@ -1,4 +1,4 @@ -using Content.Shared.Transform; +using Content.Shared.Transform; using Content.Shared.Verbs; using Robust.Server.Console; using Robust.Server.GameObjects; @@ -32,7 +32,7 @@ namespace Content.Server.Transform.Verbs } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Attach to grid"); + data.Text = Loc.GetString("attach-to-grandparent-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; } diff --git a/Content.Server/Transform/Verbs/AttachToGridVerb.cs b/Content.Server/Transform/Verbs/AttachToGridVerb.cs index 560007eb60..eb19efac10 100644 --- a/Content.Server/Transform/Verbs/AttachToGridVerb.cs +++ b/Content.Server/Transform/Verbs/AttachToGridVerb.cs @@ -1,4 +1,4 @@ -using Content.Shared.Verbs; +using Content.Shared.Verbs; using Robust.Server.Console; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; @@ -31,7 +31,7 @@ namespace Content.Server.Transform.Verbs } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Attach to grid"); + data.Text = Loc.GetString("attach-to-grid-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; } diff --git a/Content.Server/Transform/Verbs/AttachToSelf.cs b/Content.Server/Transform/Verbs/AttachToSelf.cs index 037b33a020..c4f224daad 100644 --- a/Content.Server/Transform/Verbs/AttachToSelf.cs +++ b/Content.Server/Transform/Verbs/AttachToSelf.cs @@ -1,4 +1,4 @@ -using Content.Shared.Verbs; +using Content.Shared.Verbs; using Robust.Server.Console; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; @@ -31,7 +31,7 @@ namespace Content.Server.Transform.Verbs } data.Visibility = VerbVisibility.Visible; - data.Text = Loc.GetString("Attach to self"); + data.Text = Loc.GetString("attach-to-self-verb-get-data-text"); data.CategoryData = VerbCategories.Debug; } diff --git a/Content.Server/VendingMachines/VendingMachineComponent.cs b/Content.Server/VendingMachines/VendingMachineComponent.cs index ef4bf25c09..f0a6ce7000 100644 --- a/Content.Server/VendingMachines/VendingMachineComponent.cs +++ b/Content.Server/VendingMachines/VendingMachineComponent.cs @@ -178,14 +178,14 @@ namespace Content.Server.VendingMachines var entry = Inventory.Find(x => x.ID == id); if (entry == null) { - Owner.PopupMessageEveryone(Loc.GetString("Invalid item")); + Owner.PopupMessageEveryone(Loc.GetString("vending-machine-component-try-eject-invalid-item")); Deny(); return; } if (entry.Amount <= 0) { - Owner.PopupMessageEveryone(Loc.GetString("Out of stock")); + Owner.PopupMessageEveryone(Loc.GetString("vending-machine-component-try-eject-out-of-stock")); Deny(); return; } @@ -211,7 +211,7 @@ namespace Content.Server.VendingMachines { if (sender == null || !accessReader.IsAllowed(sender)) { - Owner.PopupMessageEveryone(Loc.GetString("Access denied")); + Owner.PopupMessageEveryone(Loc.GetString("vending-machine-component-try-eject-access-denied")); Deny(); return; } diff --git a/Content.Server/Voting/VoteCommands.cs b/Content.Server/Voting/VoteCommands.cs index 4dc629c679..d05546c370 100644 --- a/Content.Server/Voting/VoteCommands.cs +++ b/Content.Server/Voting/VoteCommands.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Text; using Content.Server.Administration; @@ -18,14 +18,14 @@ namespace Content.Server.Voting public sealed class CreateVoteCommand : IConsoleCommand { public string Command => "createvote"; - public string Description => "Creates a vote"; - public string Help => "Usage: createvote <'restart'|'preset'>"; + public string Description => Loc.GetString("create-vote-command-description"); + public string Help => Loc.GetString("create-vote-command-help"); public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length != 1) { - shell.WriteError("Need exactly one argument!"); + shell.WriteError(Loc.GetString("shell-need-exactly-one-argument")); return; } @@ -35,7 +35,7 @@ namespace Content.Server.Voting if (shell.Player != null && !mgr.CanCallVote((IPlayerSession) shell.Player)) { - shell.WriteError("You can't call a vote right now!"); + shell.WriteError(Loc.GetString("create-vote-command-cannot-call-vote-now")); return; } @@ -48,7 +48,7 @@ namespace Content.Server.Voting mgr.CreatePresetVote((IPlayerSession?) shell.Player); break; default: - shell.WriteError("Invalid vote type!"); + shell.WriteError(Loc.GetString("create-vote-command-invalid-vote-type")); break; } } @@ -58,14 +58,14 @@ namespace Content.Server.Voting public sealed class CreateCustomCommand : IConsoleCommand { public string Command => "customvote"; - public string Description => "Creates a custom vote"; - public string Help => "customvote <option1> <option2> [option3...]"; + public string Description => Loc.GetString("create-custom-command-description"); + public string Help => Loc.GetString("create-custom-command-help"); public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length < 3 || args.Length > 10) { - shell.WriteError("Need 3 to 10 arguments!"); + shell.WriteError(Loc.GetString("shell-need-between-arguments",("lower", 3), ("upper", 10))); return; } @@ -94,11 +94,11 @@ namespace Content.Server.Voting if (eventArgs.Winner == null) { var ties = string.Join(", ", eventArgs.Winners.Select(c => args[(int) c])); - chatMgr.DispatchServerAnnouncement(Loc.GetString("Tie between {0}!", ties)); + chatMgr.DispatchServerAnnouncement(Loc.GetString("create-custom-command-on-finished-tie",("ties", ties))); } else { - chatMgr.DispatchServerAnnouncement(Loc.GetString("{0} wins!", args[(int) eventArgs.Winner])); + chatMgr.DispatchServerAnnouncement(Loc.GetString("create-custom-command-on-finished-win",("winner", args[(int) eventArgs.Winner]))); } }; } @@ -109,39 +109,39 @@ namespace Content.Server.Voting public sealed class VoteCommand : IConsoleCommand { public string Command => "vote"; - public string Description => "Votes on an active vote"; - public string Help => "vote <voteId> <option>"; + public string Description => Loc.GetString("vote-command-description"); + public string Help => Loc.GetString("vote-command-help"); public void Execute(IConsoleShell shell, string argStr, string[] args) { if (shell.Player == null) { - shell.WriteError("Must be a player"); + shell.WriteError(Loc.GetString("vote-command-on-execute-error-must-be-player")); return; } if (args.Length != 2) { - shell.WriteError("Expected two arguments."); + shell.WriteError(Loc.GetString("shell-wrong-arguments-number-need-specific", ("properAmount", 2), ("currentAmount", args.Length))); return; } if (!int.TryParse(args[0], out var voteId)) { - shell.WriteError("Invalid vote ID"); + shell.WriteError(Loc.GetString("vote-command-on-execute-error-invalid-vote-id")); return; } if (!int.TryParse(args[1], out var voteOption)) { - shell.WriteError("Invalid vote options"); + shell.WriteError(Loc.GetString("vote-command-on-execute-error-invalid-vote-options")); return; } var mgr = IoCManager.Resolve<IVoteManager>(); if (!mgr.TryGetVote(voteId, out var vote)) { - shell.WriteError("Invalid vote"); + shell.WriteError(Loc.GetString("vote-command-on-execute-error-invalid-vote")); return; } @@ -156,7 +156,7 @@ namespace Content.Server.Voting } else { - shell.WriteError("Invalid option"); + shell.WriteError(Loc.GetString("vote-command-on-execute-error-invalid-option")); return; } @@ -168,8 +168,8 @@ namespace Content.Server.Voting public sealed class ListVotesCommand : IConsoleCommand { public string Command => "listvotes"; - public string Description => "Lists currently active votes"; - public string Help => "Usage: listvotes"; + public string Description => Loc.GetString("list-votes-command-description"); + public string Help => Loc.GetString("list-votes-command-help"); public void Execute(IConsoleShell shell, string argStr, string[] args) { @@ -186,8 +186,8 @@ namespace Content.Server.Voting public sealed class CancelVoteCommand : IConsoleCommand { public string Command => "cancelvote"; - public string Description => "Cancels an active vote"; - public string Help => "Usage: cancelvote <id>\nYou can get the ID from the listvotes command."; + public string Description => Loc.GetString("cancel-vote-command-description"); + public string Help => Loc.GetString("cancel-vote-command-help"); public void Execute(IConsoleShell shell, string argStr, string[] args) { @@ -195,13 +195,13 @@ namespace Content.Server.Voting if (args.Length < 1) { - shell.WriteError("Missing ID"); + shell.WriteError(Loc.GetString("cancel-vote-command-on-execute-error-missing-vote-id")); return; } if (!int.TryParse(args[0], out var id) || !mgr.TryGetVote(id, out var vote)) { - shell.WriteError("Invalid vote ID"); + shell.WriteError(Loc.GetString("cancel-vote-command-on-execute-error-invalid-vote-id")); return; } diff --git a/Content.Server/Voting/VoteOptions.cs b/Content.Server/Voting/VoteOptions.cs index 283c3d3f2f..c40d119194 100644 --- a/Content.Server/Voting/VoteOptions.cs +++ b/Content.Server/Voting/VoteOptions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Robust.Server.Player; using Robust.Shared.Localization; @@ -61,7 +61,7 @@ namespace Content.Server.Voting } else { - InitiatorText = Loc.GetString("The server"); + InitiatorText = Loc.GetString("vote-options-server-initiator-text"); } } } diff --git a/Content.Server/Warps/WarpPointComponent.cs b/Content.Server/Warps/WarpPointComponent.cs index 8dff88d66b..5ca8b22926 100644 --- a/Content.Server/Warps/WarpPointComponent.cs +++ b/Content.Server/Warps/WarpPointComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Examine; +using Content.Shared.Examine; using Robust.Shared.GameObjects; using Robust.Shared.Localization; using Robust.Shared.Serialization.Manager.Attributes; @@ -17,7 +17,7 @@ namespace Content.Server.Warps public void Examine(FormattedMessage message, bool inDetailsRange) { var loc = Location == null ? "<null>" : $"'{Location}'"; - message.AddText(Loc.GetString("This one's location ID is {0}", loc)); + message.AddText(Loc.GetString("warp-point-component-on-examine-success", ("location", loc))); } } } diff --git a/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoBoxComponent.cs b/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoBoxComponent.cs index a0ecd6bb92..768a763e15 100644 --- a/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoBoxComponent.cs +++ b/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoBoxComponent.cs @@ -108,13 +108,13 @@ namespace Content.Server.Weapon.Ranged.Ammunition.Components if (ammoComponent.Caliber != _caliber) { - Owner.PopupMessage(user, Loc.GetString("Wrong caliber")); + Owner.PopupMessage(user, Loc.GetString("ammo-box-component-try-insert-ammo-wrong-caliber")); return false; } if (AmmoLeft >= Capacity) { - Owner.PopupMessage(user, Loc.GetString("No room")); + Owner.PopupMessage(user, Loc.GetString("ammo-box-component-try-insert-ammo-no-room")); return false; } @@ -228,7 +228,7 @@ namespace Content.Server.Weapon.Ranged.Ammunition.Components return; } - data.Text = Loc.GetString("Dump 10"); + data.Text = Loc.GetString("dump-vert-get-data-text"); data.Visibility = component.AmmoLeft > 0 ? VerbVisibility.Visible : VerbVisibility.Disabled; data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; } @@ -241,8 +241,8 @@ namespace Content.Server.Weapon.Ranged.Ammunition.Components public void Examine(FormattedMessage message, bool inDetailsRange) { - message.AddMarkup(Loc.GetString("\nIt's a [color=white]{0}[/color] ammo box.", _caliber)); - message.AddMarkup(Loc.GetString("\nIt has [color=white]{0}[/color] out of [color=white]{1}[/color] ammo left.", AmmoLeft, _capacity)); + message.AddMarkup("\n" + Loc.GetString("ammo-box-component-on-examine-caliber-description", ("caliber", _caliber))); + message.AddMarkup("\n" + Loc.GetString("ammo-box-component-on-examine-remaining-ammo-description", ("ammoLeft",AmmoLeft),("capacity", _capacity))); } } } diff --git a/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoComponent.cs b/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoComponent.cs index dadc676cb9..e4605731c8 100644 --- a/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoComponent.cs +++ b/Content.Server/Weapon/Ranged/Ammunition/Components/AmmoComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Shared.Examine; using Content.Shared.Weapons.Ranged.Barrels.Components; using Robust.Server.GameObjects; @@ -154,7 +154,7 @@ namespace Content.Server.Weapon.Ranged.Ammunition.Components public void Examine(FormattedMessage message, bool inDetailsRange) { - var text = Loc.GetString("It's [color=white]{0}[/color] ammo.", Caliber); + var text = Loc.GetString("ammo-component-on-examine",("caliber", Caliber)); message.AddMarkup(text); } } diff --git a/Content.Server/Weapon/Ranged/Ammunition/Components/RangedMagazineComponent.cs b/Content.Server/Weapon/Ranged/Ammunition/Components/RangedMagazineComponent.cs index ae66abd0ff..33187160b6 100644 --- a/Content.Server/Weapon/Ranged/Ammunition/Components/RangedMagazineComponent.cs +++ b/Content.Server/Weapon/Ranged/Ammunition/Components/RangedMagazineComponent.cs @@ -99,13 +99,13 @@ namespace Content.Server.Weapon.Ranged.Ammunition.Components if (ammoComponent.Caliber != _caliber) { - Owner.PopupMessage(user, Loc.GetString("Wrong caliber")); + Owner.PopupMessage(user, Loc.GetString("ranged-magazine-component-try-insert-ammo-wrong-caliber")); return false; } if (ShotsLeft >= Capacity) { - Owner.PopupMessage(user, Loc.GetString("Magazine is full")); + Owner.PopupMessage(user, Loc.GetString("ranged-magazine-component-try-insert-ammo-is-full ")); return false; } @@ -168,7 +168,7 @@ namespace Content.Server.Weapon.Ranged.Ammunition.Components public void Examine(FormattedMessage message, bool inDetailsRange) { - var text = Loc.GetString("It's a [color=white]{0}[/color] magazine of [color=white]{1}[/color] caliber.", MagazineType, Caliber); + var text = Loc.GetString("ranged-magazine-component-on-examine", ("magazineType", MagazineType),("caliber", Caliber)); message.AddMarkup(text); } } diff --git a/Content.Server/Weapon/Ranged/Ammunition/Components/SpeedLoaderComponent.cs b/Content.Server/Weapon/Ranged/Ammunition/Components/SpeedLoaderComponent.cs index d6baa5e0d9..a8c8f1503f 100644 --- a/Content.Server/Weapon/Ranged/Ammunition/Components/SpeedLoaderComponent.cs +++ b/Content.Server/Weapon/Ranged/Ammunition/Components/SpeedLoaderComponent.cs @@ -77,13 +77,13 @@ namespace Content.Server.Weapon.Ranged.Ammunition.Components if (ammoComponent.Caliber != _caliber) { - Owner.PopupMessage(user, Loc.GetString("Wrong caliber")); + Owner.PopupMessage(user, Loc.GetString("speed-loader-component-try-insert-ammo-wrong-caliber")); return false; } if (AmmoLeft >= Capacity) { - Owner.PopupMessage(user, Loc.GetString("No room")); + Owner.PopupMessage(user, Loc.GetString("speed-loader-component-try-insert-ammo-no-room")); return false; } diff --git a/Content.Server/Weapon/Ranged/Barrels/Components/BoltActionBarrelComponent.cs b/Content.Server/Weapon/Ranged/Barrels/Components/BoltActionBarrelComponent.cs index 82dc8907b2..55a74605eb 100644 --- a/Content.Server/Weapon/Ranged/Barrels/Components/BoltActionBarrelComponent.cs +++ b/Content.Server/Weapon/Ranged/Barrels/Components/BoltActionBarrelComponent.cs @@ -218,7 +218,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components BoltOpen = true; if (Owner.TryGetContainer(out var container)) { - Owner.PopupMessage(container.Owner, Loc.GetString("Bolt opened")); + Owner.PopupMessage(container.Owner, Loc.GetString("bolt-action-barrel-component-bolt-opened")); } return; } @@ -243,13 +243,13 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components if (ammoComponent.Caliber != _caliber) { - Owner.PopupMessage(user, Loc.GetString("Wrong caliber")); + Owner.PopupMessage(user, Loc.GetString("bolt-action-barrel-component-try-insert-bullet-wrong-caliber")); return false; } if (!BoltOpen) { - Owner.PopupMessage(user, Loc.GetString("Bolt isn't open")); + Owner.PopupMessage(user, Loc.GetString("bolt-action-barrel-component-try-insert-bullet-bolt-closed")); return false; } @@ -278,7 +278,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components return true; } - Owner.PopupMessage(user, Loc.GetString("No room")); + Owner.PopupMessage(user, Loc.GetString("bolt-action-barrel-component-try-insert-bullet-no-room")); return false; } @@ -288,7 +288,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components if (BoltOpen) { BoltOpen = false; - Owner.PopupMessage(eventArgs.User, Loc.GetString("Bolt closed")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("bolt-action-barrel-component-bolt-closed")); return true; } @@ -346,7 +346,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components { base.Examine(message, inDetailsRange); - message.AddMarkup(Loc.GetString("\nIt uses [color=white]{0}[/color] ammo.", _caliber)); + message.AddMarkup("\n" + Loc.GetString("bolt-action-barrel-component-on-examine", ("caliber",_caliber))); } [Verb] @@ -360,7 +360,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components return; } - data.Text = Loc.GetString("Open bolt"); + data.Text = Loc.GetString("open-bolt-verb-get-data-text"); data.Visibility = component.BoltOpen ? VerbVisibility.Invisible : VerbVisibility.Visible; } @@ -381,7 +381,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components return; } - data.Text = Loc.GetString("Close bolt"); + data.Text = Loc.GetString("close-bolt-verb-get-data-text"); data.Visibility = component.BoltOpen ? VerbVisibility.Visible : VerbVisibility.Invisible; } diff --git a/Content.Server/Weapon/Ranged/Barrels/Components/PumpBarrelComponent.cs b/Content.Server/Weapon/Ranged/Barrels/Components/PumpBarrelComponent.cs index e6b25e9827..df514a4417 100644 --- a/Content.Server/Weapon/Ranged/Barrels/Components/PumpBarrelComponent.cs +++ b/Content.Server/Weapon/Ranged/Barrels/Components/PumpBarrelComponent.cs @@ -208,7 +208,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components if (ammoComponent.Caliber != _caliber) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Wrong caliber")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("pump-barrel-component-try-insert-bullet-wrong-caliber")); return false; } @@ -225,7 +225,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components return true; } - Owner.PopupMessage(eventArgs.User, Loc.GetString("No room")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("pump-barrel-component-try-insert-bullet-no-room")); return false; } @@ -245,7 +245,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components { base.Examine(message, inDetailsRange); - message.AddMarkup(Loc.GetString("\nIt uses [color=white]{0}[/color] ammo.", _caliber)); + message.AddMarkup("\n" + Loc.GetString("pump-barrel-component-on-examine",("caliber", _caliber))); } } } diff --git a/Content.Server/Weapon/Ranged/Barrels/Components/RevolverBarrelComponent.cs b/Content.Server/Weapon/Ranged/Barrels/Components/RevolverBarrelComponent.cs index 16bf972cec..4ec03a3b28 100644 --- a/Content.Server/Weapon/Ranged/Barrels/Components/RevolverBarrelComponent.cs +++ b/Content.Server/Weapon/Ranged/Barrels/Components/RevolverBarrelComponent.cs @@ -149,7 +149,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components if (ammoComponent.Caliber != _caliber) { - Owner.PopupMessage(user, Loc.GetString("Wrong caliber")); + Owner.PopupMessage(user, Loc.GetString("revolver-barrel-component-try-inser-bullet-wrong-caliber")); return false; } @@ -175,7 +175,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components } } - Owner.PopupMessage(user, Loc.GetString("Ammo full")); + Owner.PopupMessage(user, Loc.GetString("revolver-barrel-component-try-inser-bullet-ammo-full")); return false; } @@ -289,7 +289,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components return; } - data.Text = Loc.GetString("Spin"); + data.Text = Loc.GetString("spin-revolver-verb-get-data-text"); if (component.Capacity <= 1) { data.Visibility = VerbVisibility.Invisible; @@ -303,7 +303,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components protected override void Activate(IEntity user, RevolverBarrelComponent component) { component.Spin(); - component.Owner.PopupMessage(user, Loc.GetString("Spun the cylinder")); + component.Owner.PopupMessage(user, Loc.GetString("spin-revolver-verb-on-activate")); } } } diff --git a/Content.Server/Weapon/Ranged/Barrels/Components/ServerBatteryBarrelComponent.cs b/Content.Server/Weapon/Ranged/Barrels/Components/ServerBatteryBarrelComponent.cs index b15a36d0ac..95b4aff527 100644 --- a/Content.Server/Weapon/Ranged/Barrels/Components/ServerBatteryBarrelComponent.cs +++ b/Content.Server/Weapon/Ranged/Barrels/Components/ServerBatteryBarrelComponent.cs @@ -305,12 +305,12 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components if (component.PowerCell == null) { - data.Text = Loc.GetString("No cell"); + data.Text = Loc.GetString("eject-cell-verb-get-data-text-no-cell"); data.Visibility = VerbVisibility.Disabled; } else { - data.Text = Loc.GetString("Eject cell"); + data.Text = Loc.GetString("eject-cell-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; } } diff --git a/Content.Server/Weapon/Ranged/Barrels/Components/ServerMagazineBarrelComponent.cs b/Content.Server/Weapon/Ranged/Barrels/Components/ServerMagazineBarrelComponent.cs index 043c2ed499..15916e16bd 100644 --- a/Content.Server/Weapon/Ranged/Barrels/Components/ServerMagazineBarrelComponent.cs +++ b/Content.Server/Weapon/Ranged/Barrels/Components/ServerMagazineBarrelComponent.cs @@ -235,7 +235,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components if (Owner.TryGetContainer(out var container)) { - Owner.PopupMessage(container.Owner, Loc.GetString("Bolt open")); + Owner.PopupMessage(container.Owner, Loc.GetString("server-magazine-barrel-component-cycle-bolt-open")); } BoltOpen = true; return; @@ -275,7 +275,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components { SoundSystem.Play(Filter.Pvs(Owner), _soundBoltClosed, Owner.Transform.Coordinates, AudioParams.Default.WithVolume(-5)); } - Owner.PopupMessage(eventArgs.User, Loc.GetString("Bolt closed")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("server-magazine-barrel-component-use-entity-bolt-closed")); BoltOpen = false; return true; } @@ -347,7 +347,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components if (MagNeedsOpenBolt && !BoltOpen) { - Owner.PopupMessage(user, Loc.GetString("Bolt needs to be open")); + Owner.PopupMessage(user, Loc.GetString("server-magazine-barrel-component-remove-magazine-bolt-closed")); return; } @@ -373,19 +373,19 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components { if ((MagazineTypes & magazineComponent.MagazineType) == 0) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Wrong magazine type")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("server-magazine-barrel-component-interact-using-wrong-magazine-type")); return false; } if (magazineComponent.Caliber != _caliber) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Wrong caliber")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("server-magazine-barrel-component-interact-using-wrong-caliber")); return false; } if (_magNeedsOpenBolt && !BoltOpen) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Need to open bolt first")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("server-magazine-barrel-component-interact-using-bolt-closed")); return false; } @@ -395,14 +395,14 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components { SoundSystem.Play(Filter.Pvs(Owner), _soundMagInsert, Owner.Transform.Coordinates, AudioParams.Default.WithVolume(-2)); } - Owner.PopupMessage(eventArgs.User, Loc.GetString("Magazine inserted")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("server-magazine-barrel-component-interact-using-success")); _magazineContainer.Insert(eventArgs.Using); Dirty(); UpdateAppearance(); return true; } - Owner.PopupMessage(eventArgs.User, Loc.GetString("Already holding a magazine")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("server-magazine-barrel-component-interact-using-already-holding-magazine")); return false; } @@ -411,26 +411,26 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components { if (!BoltOpen) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Cannot insert ammo while bolt is closed")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("server-magazine-barrel-component-interact-using-ammo-bolt-closed")); return false; } if (ammoComponent.Caliber != _caliber) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Wrong caliber")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("server-magazine-barrel-component-interact-using-wrong-caliber")); return false; } if (_chamberContainer.ContainedEntity == null) { - Owner.PopupMessage(eventArgs.User, Loc.GetString("Ammo inserted")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("server-magazine-barrel-component-interact-using-ammo-success")); _chamberContainer.Insert(eventArgs.Using); Dirty(); UpdateAppearance(); return true; } - Owner.PopupMessage(eventArgs.User, Loc.GetString("Chamber full")); + Owner.PopupMessage(eventArgs.User, Loc.GetString("server-magazine-barrel-component-interact-using-ammo-full")); return false; } @@ -441,11 +441,11 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components { base.Examine(message, inDetailsRange); - message.AddMarkup(Loc.GetString("\nIt uses [color=white]{0}[/color] ammo.", Caliber)); + message.AddMarkup("\n" + Loc.GetString("server-magazine-barrel-component-on-examine", ("caliber",Caliber))); foreach (var magazineType in GetMagazineTypes()) { - message.AddMarkup(Loc.GetString("\nIt accepts [color=white]{0}[/color] magazines.", magazineType)); + message.AddMarkup("\n" + Loc.GetString("server-magazine-barrel-component-on-examine-magazine-type",("magazineType", magazineType))); } } @@ -460,7 +460,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components return; } - data.Text = Loc.GetString("Eject magazine"); + data.Text = Loc.GetString("eject-magazine-verb-get-data-text"); data.IconTexture = "/Textures/Interface/VerbIcons/eject.svg.192dpi.png"; if (component.MagNeedsOpenBolt) { @@ -490,7 +490,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components return; } - data.Text = Loc.GetString("Open bolt"); + data.Text = Loc.GetString("open-bolt-verb-get-data-text"); data.Visibility = component.BoltOpen ? VerbVisibility.Invisible : VerbVisibility.Visible; } @@ -511,7 +511,7 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components return; } - data.Text = Loc.GetString("Close bolt"); + data.Text = Loc.GetString("close-bolt-verb-get-data-text"); data.Visibility = component.BoltOpen ? VerbVisibility.Visible : VerbVisibility.Invisible; } diff --git a/Content.Server/Weapon/Ranged/Barrels/Components/ServerRangedBarrelComponent.cs b/Content.Server/Weapon/Ranged/Barrels/Components/ServerRangedBarrelComponent.cs index 7d6925e7f4..754757d7e9 100644 --- a/Content.Server/Weapon/Ranged/Barrels/Components/ServerRangedBarrelComponent.cs +++ b/Content.Server/Weapon/Ranged/Barrels/Components/ServerRangedBarrelComponent.cs @@ -429,9 +429,9 @@ namespace Content.Server.Weapon.Ranged.Barrels.Components { var fireRateMessage = Loc.GetString(FireRateSelector switch { - FireRateSelector.Safety => "Its safety is enabled.", - FireRateSelector.Single => "It's in single fire mode.", - FireRateSelector.Automatic => "It's in automatic fire mode.", + FireRateSelector.Safety => "server-ranged-barrel-component-on-examine-fire-rate-safety-description", + FireRateSelector.Single => "server-ranged-barrel-component-on-examine-fire-rate-single-description", + FireRateSelector.Automatic => "server-ranged-barrel-component-on-examine-fire-rate-automatic-description", _ => throw new IndexOutOfRangeException() }); diff --git a/Content.Server/Weapon/Ranged/ServerRangedWeaponComponent.cs b/Content.Server/Weapon/Ranged/ServerRangedWeaponComponent.cs index 05306696ff..360786624d 100644 --- a/Content.Server/Weapon/Ranged/ServerRangedWeaponComponent.cs +++ b/Content.Server/Weapon/Ranged/ServerRangedWeaponComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using Content.Server.Atmos; using Content.Server.CombatMode; using Content.Server.Hands.Components; @@ -176,7 +176,7 @@ namespace Content.Server.Weapon.Ranged stun.Paralyze(3f); } - user.PopupMessage(Loc.GetString("The gun blows up in your face!")); + user.PopupMessage(Loc.GetString("server-ranged-weapon-component-try-fire-clumsy")); Owner.Delete(); return; diff --git a/Content.Server/Wires/Components/WiresComponent.cs b/Content.Server/Wires/Components/WiresComponent.cs index 89e73228a0..60d19b0e1f 100644 --- a/Content.Server/Wires/Components/WiresComponent.cs +++ b/Content.Server/Wires/Components/WiresComponent.cs @@ -397,13 +397,13 @@ namespace Content.Server.Wires.Components if (!player.TryGetComponent(out IHandsComponent? handsComponent)) { - Owner.PopupMessage(player, Loc.GetString("You have no hands.")); + Owner.PopupMessage(player, Loc.GetString("wires-component-ui-on-receive-message-no-hands")); return; } if (!player.InRangeUnobstructed(Owner)) { - Owner.PopupMessage(player, Loc.GetString("You can't reach there!")); + Owner.PopupMessage(player, Loc.GetString("wires-component-ui-on-receive-message-cannot-reach")); return; } @@ -416,7 +416,7 @@ namespace Content.Server.Wires.Components case WiresAction.Cut: if (tool == null || !tool.HasQuality(ToolQuality.Cutting)) { - player.PopupMessageCursor(Loc.GetString("You need to hold a wirecutter in your hand!")); + player.PopupMessageCursor(Loc.GetString("wires-component-ui-on-receive-message-need-wirecutters")); return; } @@ -427,7 +427,7 @@ namespace Content.Server.Wires.Components case WiresAction.Mend: if (tool == null || !tool.HasQuality(ToolQuality.Cutting)) { - player.PopupMessageCursor(Loc.GetString("You need to hold a wirecutter in your hand!")); + player.PopupMessageCursor(Loc.GetString("wires-component-ui-on-receive-message-need-wirecutters")); return; } @@ -438,13 +438,13 @@ namespace Content.Server.Wires.Components case WiresAction.Pulse: if (tool == null || !tool.HasQuality(ToolQuality.Multitool)) { - player.PopupMessageCursor(Loc.GetString("You need to hold a multitool in your hand!")); + player.PopupMessageCursor(Loc.GetString("wires-component-ui-on-receive-message-need-wirecutters")); return; } if (wire.IsCut) { - player.PopupMessageCursor(Loc.GetString("You can't pulse a wire that's been cut!")); + player.PopupMessageCursor(Loc.GetString("wires-component-ui-on-receive-message-cannot-pulse-cut-wire")); return; } @@ -509,8 +509,8 @@ namespace Content.Server.Wires.Components void IExamine.Examine(FormattedMessage message, bool inDetailsRange) { message.AddMarkup(Loc.GetString(IsPanelOpen - ? "The [color=lightgray]maintenance panel[/color] is [color=darkgreen]open[/color]." - : "The [color=lightgray]maintenance panel[/color] is [color=darkred]closed[/color].")); + ? "wires-component-on-examine-panel-open" + : "wires-component-on-examine-panel-closed")); } public void SetStatus(object statusIdentifier, object status) diff --git a/Content.Shared/CharacterAppearance/SpriteAccessoryPrototype.cs b/Content.Shared/CharacterAppearance/SpriteAccessoryPrototype.cs index e6550c0dc8..bc5a966f88 100644 --- a/Content.Shared/CharacterAppearance/SpriteAccessoryPrototype.cs +++ b/Content.Shared/CharacterAppearance/SpriteAccessoryPrototype.cs @@ -1,4 +1,5 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Localization; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Utility; @@ -26,7 +27,7 @@ namespace Content.Shared.CharacterAppearance void ISerializationHooks.AfterDeserialization() { - Name = Robust.Shared.Localization.Loc.GetString($"accessory-{ID}"); + Name = Loc.GetString($"accessory-{ID}"); } } } diff --git a/Content.Shared/Chemistry/Solution/Components/SharedSolutionContainerComponent.cs b/Content.Shared/Chemistry/Solution/Components/SharedSolutionContainerComponent.cs index f14d91eeac..95946865e3 100644 --- a/Content.Shared/Chemistry/Solution/Components/SharedSolutionContainerComponent.cs +++ b/Content.Shared/Chemistry/Solution/Components/SharedSolutionContainerComponent.cs @@ -7,6 +7,7 @@ using Content.Shared.Examine; using Content.Shared.NetIDs; using Robust.Shared.GameObjects; using Robust.Shared.IoC; +using Robust.Shared.Localization; using Robust.Shared.Log; using Robust.Shared.Maths; using Robust.Shared.Players; @@ -195,7 +196,7 @@ namespace Content.Shared.Chemistry.Solution.Components if (ReagentList.Count == 0) { - message.AddText(Robust.Shared.Localization.Loc.GetString("Contains no chemicals.")); + message.AddText(Loc.GetString("shared-solution-container-component-on-examine-empty-container")); return; } @@ -207,9 +208,13 @@ namespace Content.Shared.Chemistry.Solution.Components } var colorHex = Color.ToHexNoAlpha(); //TODO: If the chem has a dark color, the examine text becomes black on a black background, which is unreadable. - var messageString = "It contains a [color={0}]{1}[/color] " + (ReagentList.Count == 1 ? "chemical." : "mixture of chemicals."); + var messageString = "shared-solution-container-component-on-examine-main-text"; - message.AddMarkup(Robust.Shared.Localization.Loc.GetString(messageString, colorHex, Robust.Shared.Localization.Loc.GetString(proto.PhysicalDescription))); + message.AddMarkup(Loc.GetString(messageString, + ("color", colorHex), + ("wordedAmount", Loc.GetString(ReagentList.Count == 1 ? "shared-solution-container-component-on-examine-worded-amount-one-reagent" : + "shared-solution-container-component-on-examine-worded-amount-multiple-reagents")), + ("desc", Loc.GetString(proto.PhysicalDescription)))); } ReagentUnit ISolutionInteractionsComponent.RefillSpaceAvailable => EmptyVolume; diff --git a/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs b/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs index 962aa93a26..0e60d05c13 100644 --- a/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/ArbitraryInsertConstructionGraphStep.cs @@ -1,4 +1,5 @@ #nullable enable +using Robust.Shared.Localization; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Utility; @@ -13,7 +14,7 @@ namespace Content.Shared.Construction.Steps public override void DoExamine(FormattedMessage message, bool inDetailsRange) { if (string.IsNullOrEmpty(Name)) return; - message.AddMarkup(Robust.Shared.Localization.Loc.GetString("construction-insert-arbitrary-entity", ("stepName", Name))); + message.AddMarkup(Loc.GetString("construction-insert-arbitrary-entity", ("stepName", Name))); } } } diff --git a/Content.Shared/Construction/Steps/ComponentConstructionGraphStep.cs b/Content.Shared/Construction/Steps/ComponentConstructionGraphStep.cs index a79869c029..32f952377e 100644 --- a/Content.Shared/Construction/Steps/ComponentConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/ComponentConstructionGraphStep.cs @@ -1,5 +1,6 @@ #nullable enable using Robust.Shared.GameObjects; +using Robust.Shared.Localization; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Utility; @@ -24,10 +25,10 @@ namespace Content.Shared.Construction.Steps public override void DoExamine(FormattedMessage message, bool inDetailsRange) { message.AddMarkup(string.IsNullOrEmpty(Name) - ? Robust.Shared.Localization.Loc.GetString( + ? Loc.GetString( "construction-insert-entity-with-component", ("componentName", Component))// Terrible. - : Robust.Shared.Localization.Loc.GetString( + : Loc.GetString( "construction-insert-exact-entity", ("entityName", Name))); } diff --git a/Content.Shared/Construction/Steps/MaterialConstructionGraphStep.cs b/Content.Shared/Construction/Steps/MaterialConstructionGraphStep.cs index 566f1f347b..f6570cbcbc 100644 --- a/Content.Shared/Construction/Steps/MaterialConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/MaterialConstructionGraphStep.cs @@ -1,8 +1,9 @@ -#nullable enable +#nullable enable using System.Diagnostics.CodeAnalysis; using Content.Shared.Stacks; using Robust.Shared.GameObjects; using Robust.Shared.IoC; +using Robust.Shared.Localization; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Utility; @@ -23,7 +24,7 @@ namespace Content.Shared.Construction.Steps public override void DoExamine(FormattedMessage message, bool inDetailsRange) { - message.AddMarkup(Robust.Shared.Localization.Loc.GetString("Next, add [color=yellow]{0}x[/color] [color=cyan]{1}[/color].", Amount, MaterialPrototype.Name)); + message.AddMarkup(Loc.GetString("construction-insert-material-entity",("amount", Amount),("materialName", MaterialPrototype.Name))); } public override bool EntityValid(IEntity entity) diff --git a/Content.Shared/Construction/Steps/PrototypeConstructionGraphStep.cs b/Content.Shared/Construction/Steps/PrototypeConstructionGraphStep.cs index 9b1886afc3..18f19dda20 100644 --- a/Content.Shared/Construction/Steps/PrototypeConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/PrototypeConstructionGraphStep.cs @@ -1,5 +1,6 @@ #nullable enable using Robust.Shared.GameObjects; +using Robust.Shared.Localization; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Utility; @@ -18,11 +19,11 @@ namespace Content.Shared.Construction.Steps public override void DoExamine(FormattedMessage message, bool inDetailsRange) { message.AddMarkup(string.IsNullOrEmpty(Name) - ? Robust.Shared.Localization.Loc.GetString( + ? Loc.GetString( "construction-insert-prototype-no-name", ("prototypeName", Prototype) // Terrible. ) - : Robust.Shared.Localization.Loc.GetString( + : Loc.GetString( "construction-insert-prototype", ("entityName", Name) )); diff --git a/Content.Shared/Construction/Steps/ToolConstructionGraphStep.cs b/Content.Shared/Construction/Steps/ToolConstructionGraphStep.cs index a80abde5b9..73ccf75a0c 100644 --- a/Content.Shared/Construction/Steps/ToolConstructionGraphStep.cs +++ b/Content.Shared/Construction/Steps/ToolConstructionGraphStep.cs @@ -1,5 +1,6 @@ -#nullable enable +#nullable enable using Content.Shared.Tool; +using Robust.Shared.Localization; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Utility; @@ -18,11 +19,11 @@ namespace Content.Shared.Construction.Steps { if (!string.IsNullOrEmpty(ExamineOverride)) { - message.AddMarkup(Robust.Shared.Localization.Loc.GetString(ExamineOverride)); + message.AddMarkup(Loc.GetString(ExamineOverride)); return; } - message.AddMarkup(Robust.Shared.Localization.Loc.GetString($"Next, use a [color=cyan]{Tool.GetToolName()}[/color].")); + message.AddMarkup(Loc.GetString("construction-use-tool-entity", ("toolName", Tool.GetToolName()))); } } } diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index d908454683..d15e0ee256 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Notification.Managers; using Content.Shared.Physics; using JetBrains.Annotations; using Robust.Shared.GameObjects; +using Robust.Shared.Localization; using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Physics.Broadphase; @@ -327,7 +328,7 @@ namespace Content.Shared.Interaction if (!inRange && popup) { - var message = Robust.Shared.Localization.Loc.GetString("You can't reach there!"); + var message = Loc.GetString("shared-interaction-system-in-range-unobstructed-cannot-reach"); origin.PopupMessage(message); } diff --git a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs index 06b78ca577..d1ebef976f 100644 --- a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs @@ -1,5 +1,6 @@ #nullable enable using System.Collections.Generic; +using Robust.Shared.Localization; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.ViewVariables; @@ -31,7 +32,7 @@ namespace Content.Shared.Kitchen [DataField("time")] public int CookTime { get; } = 5; - public string Name => Robust.Shared.Localization.Loc.GetString(_name); + public string Name => Loc.GetString(_name); public IReadOnlyDictionary<string, int> IngredientsReagents => _ingsReagents; public IReadOnlyDictionary<string, int> IngredientsSolids => _ingsSolids; diff --git a/Content.Shared/Localizations/Localization.cs b/Content.Shared/Localizations/Localization.cs index 221fca6ac1..bca3172c47 100644 --- a/Content.Shared/Localizations/Localization.cs +++ b/Content.Shared/Localizations/Localization.cs @@ -47,7 +47,7 @@ namespace Content.Shared.Localizations places += 1; } - return new LocValueString(Robust.Shared.Localization.Loc.GetString("zzzz-fmt-pressure", ("divided", pressure), ("places", places))); + return new LocValueString(Loc.GetString("zzzz-fmt-pressure", ("divided", pressure), ("places", places))); } } } diff --git a/Content.Shared/Stacks/SharedStackSystem.cs b/Content.Shared/Stacks/SharedStackSystem.cs index 6eb5933f42..9c62543d42 100644 --- a/Content.Shared/Stacks/SharedStackSystem.cs +++ b/Content.Shared/Stacks/SharedStackSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Examine; using JetBrains.Annotations; using Robust.Shared.GameObjects; +using Robust.Shared.Localization; namespace Content.Shared.Stacks { @@ -66,7 +67,7 @@ namespace Content.Shared.Stacks args.Message.AddText("\n"); args.Message.AddMarkup( - Robust.Shared.Localization.Loc.GetString("comp-stack-examine-detail-count", + Loc.GetString("comp-stack-examine-detail-count", ("count", component.Count), ("markupCountColor", "lightgray") ) diff --git a/Content.Shared/Wires/SharedWiresComponent.cs b/Content.Shared/Wires/SharedWiresComponent.cs index 0bf4eb855e..c392d93af7 100644 --- a/Content.Shared/Wires/SharedWiresComponent.cs +++ b/Content.Shared/Wires/SharedWiresComponent.cs @@ -3,6 +3,7 @@ using System; using System.Diagnostics.CodeAnalysis; using JetBrains.Annotations; using Robust.Shared.GameObjects; +using Robust.Shared.Localization; using Robust.Shared.Maths; using Robust.Shared.Serialization; using static Content.Shared.Wires.SharedWiresComponent; @@ -184,7 +185,7 @@ namespace Content.Shared.Wires { public static string Name(this WireColor color) { - return Robust.Shared.Localization.Loc.GetString(color switch + return Loc.GetString(color switch { WireColor.Red => "Red", WireColor.Blue => "Blue", @@ -224,7 +225,7 @@ namespace Content.Shared.Wires public static string Name(this WireLetter letter) { - return Robust.Shared.Localization.Loc.GetString(letter switch + return Loc.GetString(letter switch { WireLetter.α => "Alpha", WireLetter.β => "Beta", diff --git a/Resources/Locale/en-US/HUD/game-hud.ftl b/Resources/Locale/en-US/HUD/game-hud.ftl new file mode 100644 index 0000000000..1e40c951ae --- /dev/null +++ b/Resources/Locale/en-US/HUD/game-hud.ftl @@ -0,0 +1,7 @@ +game-hud-open-escape-menu-button-tooltip = Open escape menu. +game-hud-open-character-menu-button-tooltip = Open character menu. +game-hud-open-inventory-menu-button-tooltip = Open inventory menu. +game-hud-open-crafting-menu-button-tooltip = Open crafting menu. +game-hud-open-actions-menu-button-tooltip = Open actions menu. +game-hud-open-admin-menu-button-tooltip = Open admin menu. +game-hud-open-sandbox-menu-button-tooltip = Open sandbox menu. \ No newline at end of file diff --git a/Resources/Locale/en-US/access/components/id-card-component.ftl b/Resources/Locale/en-US/access/components/id-card-component.ftl new file mode 100644 index 0000000000..ce1981b30d --- /dev/null +++ b/Resources/Locale/en-US/access/components/id-card-component.ftl @@ -0,0 +1,5 @@ +## IdCardComponent + +access-id-card-component-owner-name-job-title-text = {$originalOwnerName}{$jobSuffix} +access-id-card-component-owner-full-name-job-title-text = {$fullName}'s ID card{$jobSuffix} + diff --git a/Resources/Locale/en-US/access/components/id-card-console-component.ftl b/Resources/Locale/en-US/access/components/id-card-console-component.ftl new file mode 100644 index 0000000000..17b147e168 --- /dev/null +++ b/Resources/Locale/en-US/access/components/id-card-console-component.ftl @@ -0,0 +1,18 @@ +id-card-console-window-privileged-id = Privileged ID: +id-card-console-window-target-id = Target ID: +id-card-console-window-full-name-label = Full name: +id-card-console-window-save-button = Save +id-card-console-window-job-title-label = Job title: +id-card-console-window-eject-button = Eject +id-card-console-window-insert-button = Insert + +access-id-card-console-component-no-hands-error = You have no hands. +access-id-card-console-component-cannot-let-go-error = You can't let go of the ID card! + +## EjectPrivilegedIDVerb + +access-eject-privileged-id-verb-get-data-text = Eject Privileged ID + +## EjectTargetIDVert + +access-eject-target-id-verb-get-data-text = Eject Target ID \ No newline at end of file diff --git a/Resources/Locale/en-US/accessories/common.ftl b/Resources/Locale/en-US/accessories/accesory.ftl similarity index 100% rename from Resources/Locale/en-US/accessories/common.ftl rename to Resources/Locale/en-US/accessories/accesory.ftl diff --git a/Resources/Locale/en-US/actions/actions/combat-mode.ftl b/Resources/Locale/en-US/actions/actions/combat-mode.ftl new file mode 100644 index 0000000000..20bb5d22d9 --- /dev/null +++ b/Resources/Locale/en-US/actions/actions/combat-mode.ftl @@ -0,0 +1,2 @@ +hud-combat-enabled = Combat mode enabled! +hud-combat-disabled = Combat mode disabled. \ No newline at end of file diff --git a/Resources/Locale/en-US/actions/actions/disarm-action.ftl b/Resources/Locale/en-US/actions/actions/disarm-action.ftl new file mode 100644 index 0000000000..17ddf1c994 --- /dev/null +++ b/Resources/Locale/en-US/actions/actions/disarm-action.ftl @@ -0,0 +1,2 @@ +disarm-action-popup-message-other-clients = {$performerName} fails to disarm {$targetName}! +disarm-action-popup-message-cursor = You fail to disarm {$targetName}! \ No newline at end of file diff --git a/Resources/Locale/en-US/actions/ui/actionmenu.ftl b/Resources/Locale/en-US/actions/ui/actionmenu.ftl new file mode 100644 index 0000000000..a6f0dee534 --- /dev/null +++ b/Resources/Locale/en-US/actions/ui/actionmenu.ftl @@ -0,0 +1,11 @@ +## Action menu stuff (left panel, with hotbars etc) + +ui-actionmenu-title = Actions +ui-actionmenu-filter-label = Filters: {$selectedLabels} +ui-actionmenu-filter-button = Filter +ui-actionmenu-search-bar-placeholder-text = Search +ui-actionmenu-clear-button = Clear + +ui-actionsui-function-lock-action-slots = (Un)lock dragging and clearing action slots +ui-actionsui-function-open-abilities-menu = Open action menu + diff --git a/Resources/Locale/en-US/admin.ftl b/Resources/Locale/en-US/admin.ftl deleted file mode 100644 index 05454a16f1..0000000000 --- a/Resources/Locale/en-US/admin.ftl +++ /dev/null @@ -1,8 +0,0 @@ - -### Admin - -# Displayed in chat to admins when a player joins -player-join-message = Player {$name} joined the server! - -# Displayed in chat to admins when a player leaves -player-leave-message = Player {$name} left the server! diff --git a/Resources/Locale/en-US/administration/commands/control-mob-command.ftl b/Resources/Locale/en-US/administration/commands/control-mob-command.ftl new file mode 100644 index 0000000000..9260898a0b --- /dev/null +++ b/Resources/Locale/en-US/administration/commands/control-mob-command.ftl @@ -0,0 +1,2 @@ +control-mob-command-description = Transfers user mind to the specified entity. +control-mob-command-help-text = Usage: controlmob <mobUid>. \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/commands/delete-entities-with-component-command.ftl b/Resources/Locale/en-US/administration/commands/delete-entities-with-component-command.ftl new file mode 100644 index 0000000000..50f7945eaf --- /dev/null +++ b/Resources/Locale/en-US/administration/commands/delete-entities-with-component-command.ftl @@ -0,0 +1,4 @@ +delete-entities-with-component-command-description = Deletes entities with the specified components. +delete-entities-with-component-command-help-text = Usage: deleteewc <componentName_1> <componentName_2> ... <componentName_n> + Deletes any entities with the components specified. +delete-entities-with-component-command-deleted-components = Deleted {$count} entities \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/commands/dsay-command.ftl b/Resources/Locale/en-US/administration/commands/dsay-command.ftl new file mode 100644 index 0000000000..4f9a7cc221 --- /dev/null +++ b/Resources/Locale/en-US/administration/commands/dsay-command.ftl @@ -0,0 +1,2 @@ +dsay-command-description = Sends a message to deadchat as an admin +dsay-command-help-text = Usage: {$command} <message> \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/commands/rejuvenate-command.ftl b/Resources/Locale/en-US/administration/commands/rejuvenate-command.ftl new file mode 100644 index 0000000000..18f0958074 --- /dev/null +++ b/Resources/Locale/en-US/administration/commands/rejuvenate-command.ftl @@ -0,0 +1,5 @@ +rejuvenate-command-description = Fully heals a mob. +rejuvenate-command-help-text = Usage: rejuvenate <mobUid_1> <mobUid_2> ... <mobUid_n> + Attempts to heal the user's mob if no arguments are provided. +rejuvenate-command-self-heal-message = Healing the user's mob since no arguments were provided. +rejuvenate-command-no-entity-attached-message = There's no entity attached to the user. \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/commands/set-admin-ooc-command.ftl b/Resources/Locale/en-US/administration/commands/set-admin-ooc-command.ftl new file mode 100644 index 0000000000..6532483dc1 --- /dev/null +++ b/Resources/Locale/en-US/administration/commands/set-admin-ooc-command.ftl @@ -0,0 +1,2 @@ +set-admin-ooc-command-description = Sets the color of your OOC messages. Color must be in hex format, example: {$command} #c43b23 +set-admin-ooc-command-help-text = Usage: {$command} <color> \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/commands/set-mind-command.ftl b/Resources/Locale/en-US/administration/commands/set-mind-command.ftl new file mode 100644 index 0000000000..9f89d88339 --- /dev/null +++ b/Resources/Locale/en-US/administration/commands/set-mind-command.ftl @@ -0,0 +1,4 @@ +set-mind-command-description = Transfers a mind to the specified entity. The entity must have a {$requiredComponent}. +set-mind-command-help-text = Usage: {$command} <entityUid> <username> +set-mind-command-target-has-no-content-data-message = Target player does not have content data (wtf?) +set-mind-command-target-has-no-mind-message = Target entity does not have a mind (did you forget to make sentient?) \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/commands/set-outfit-command.ftl b/Resources/Locale/en-US/administration/commands/set-outfit-command.ftl new file mode 100644 index 0000000000..d1c02256af --- /dev/null +++ b/Resources/Locale/en-US/administration/commands/set-outfit-command.ftl @@ -0,0 +1,4 @@ +set-outfit-command-description = Sets the outfit of the specified entity. The entity must have an {$requiredComponent} +set-outfit-command-help-text = Usage: {$command} <entityUid> | {$command} <entityUid> <outfitId> +set-outfit-command-is-not-player-error = This does not work from the server console. You must pass the outfit id aswell. +set-outfit-command-invalid-outfit-id-error = Invalid outfit id \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/managers/admin-manager.ftl b/Resources/Locale/en-US/administration/managers/admin-manager.ftl new file mode 100644 index 0000000000..b1bbcc4c8c --- /dev/null +++ b/Resources/Locale/en-US/administration/managers/admin-manager.ftl @@ -0,0 +1,9 @@ +admin-manager-self-de-admin-message = {$exAdminName} de-adminned themselves. +admin-manager-self-re-admin-message = {$newAdminName} re-adminned themselves. +admin-manager-became-normal-player-message = You are now a normal player. +admin-manager-became-admin-message = You are now an admin. +admin-manager-no-longer-admin-message = You are no longer an admin. +admin-manager-admin-permissions-updated-message = Your admin permission have been updated. +admin-manager-admin-logout-message = Admin logout: {$name} +admin-manager-admin-login-message = Admin login: {$name} +admin-manager-admin-data-host-title = Host \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/ui/admin-add-reagent-eui.ftl b/Resources/Locale/en-US/administration/ui/admin-add-reagent-eui.ftl new file mode 100644 index 0000000000..55808215a4 --- /dev/null +++ b/Resources/Locale/en-US/administration/ui/admin-add-reagent-eui.ftl @@ -0,0 +1,13 @@ +admin-add-reagent-eui-title = Add reagent... +admin-add-reagent-eui-current-volume-label = Cur volume: +admin-add-reagent-eui-reagent-label = Reagent: +admin-add-reagent-eui-reagent-id-edit = Reagent ID... +admin-add-reagent-eui-amount-label = Amount: +admin-add-reagent-eui-amount-edit = A number... +admin-add-reagent-eui-add-close-button = Add & Close +admin-add-reagent-eui-add-button = Add +admin-add-reagent-eui-no-reagent-id-error = Must specify reagent ID +admin-add-reagent-eui-reagent-does-not-exist-error = '{$reagent}' does not exist. +admin-add-reagent-eui-no-reagent-amount-specified-error = Must specify reagent amount +admin-add-reagent-eui-invalid-amount-error = Invalid amount +admin-add-reagent-eui-current-and-max-volume-label = {$currentVolume}/{$maxVolume}u diff --git a/Resources/Locale/en-US/administration/ui/admin-menu-window.ftl b/Resources/Locale/en-US/administration/ui/admin-menu-window.ftl new file mode 100644 index 0000000000..274b6f0060 --- /dev/null +++ b/Resources/Locale/en-US/administration/ui/admin-menu-window.ftl @@ -0,0 +1,9 @@ +## AdminMenuWindow.xaml.cs + +admin-menu-title = Admin Menu +admin-menu-admin-tab = Admin +admin-menu-adminbus-tab = Adminbus +admin-menu-atmos-tab = Atmos +admin-menu-round-tab = Round +admin-menu-server-tab = Server +admin-menu-players-tab = Players \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/ui/permissions-eui.ftl b/Resources/Locale/en-US/administration/ui/permissions-eui.ftl new file mode 100644 index 0000000000..9011a0d1c0 --- /dev/null +++ b/Resources/Locale/en-US/administration/ui/permissions-eui.ftl @@ -0,0 +1,21 @@ +permissions-eui-do-not-have-required-flags-to-edit-admin-tooltip = You do not have the required flags to edit this admin. +permissions-eui-do-not-have-required-flags-to-edit-rank-tooltip = You do not have the required flags to edit this rank. + +permissions-eui-menu-title = Permissions Panel +permissions-eui-menu-add-admin-button = Add Admin +permissions-eui-menu-add-admin-rank-button = Add Admin rank +permissions-eui-menu-save-admin-rank-button = Save +permissions-eui-menu-remove-admin-rank-button = Remove +permissions-eui-menu-admins-tab-title = Admins +permissions-eui-menu-admin-ranks-tab-title = Admin Ranks +permissions-eui-edit-admin-window-edit-admin-label = Edit admin {$admin} +permissions-eui-edit-admin-window-name-edit-placeholder = Username/User ID +permissions-eui-edit-admin-window-title-edit-placeholder = Custom title, leave blank to inherit rank title. +permissions-eui-edit-admin-window-no-rank-button = No rank +permissions-eui-edit-admin-rank-window-name-edit-placeholder = Rank name +permissions-eui-edit-admin-title-control-text = none +permissions-eui-edit-no-rank-text = none +permissions-eui-edit-title-button = Edit +permissions-eui-edit-admin-rank-button = Edit +permissions-eui-edit-admin-window-save-button = Save +permissions-eui-edit-admin-window-remove-flag-button = Remove \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/ui/set-outfit/set-outfit-menu.ftl b/Resources/Locale/en-US/administration/ui/set-outfit/set-outfit-menu.ftl new file mode 100644 index 0000000000..ccdf9467f2 --- /dev/null +++ b/Resources/Locale/en-US/administration/ui/set-outfit/set-outfit-menu.ftl @@ -0,0 +1,4 @@ +### SetOutfitMEnu.xaml.cs + +set-outfit-menu-title = Set Outfit +set-outfit-menu-confirm-button = Confirm \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/ui/tabs/adminbus-tab/station-events-window.ftl b/Resources/Locale/en-US/administration/ui/tabs/adminbus-tab/station-events-window.ftl new file mode 100644 index 0000000000..863ede5794 --- /dev/null +++ b/Resources/Locale/en-US/administration/ui/tabs/adminbus-tab/station-events-window.ftl @@ -0,0 +1,2 @@ +station-events-window-not-loaded-text = Not loaded +station-events-window-random-text = Random \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/verbs/admin-add-reagent-verb.ftl b/Resources/Locale/en-US/administration/verbs/admin-add-reagent-verb.ftl new file mode 100644 index 0000000000..ecc20c201b --- /dev/null +++ b/Resources/Locale/en-US/administration/verbs/admin-add-reagent-verb.ftl @@ -0,0 +1 @@ +admin-add-reagent-verb-get-data-text = Add Reagent... \ No newline at end of file diff --git a/Resources/Locale/en-US/administration/verbs/delete-verb.ftl b/Resources/Locale/en-US/administration/verbs/delete-verb.ftl new file mode 100644 index 0000000000..9a642c44a2 --- /dev/null +++ b/Resources/Locale/en-US/administration/verbs/delete-verb.ftl @@ -0,0 +1 @@ +delete-verb-get-data-text = Delete \ No newline at end of file diff --git a/Resources/Locale/en-US/ai/commands/faction-command.ftl b/Resources/Locale/en-US/ai/commands/faction-command.ftl new file mode 100644 index 0000000000..164e7120da --- /dev/null +++ b/Resources/Locale/en-US/ai/commands/faction-command.ftl @@ -0,0 +1,8 @@ +faction-command-no-target-faction-error = Need to supply a target faction +faction-command-unknown-faction-argument-error = Unknown faction argument + +faction-command-description = Update / list factional relationships for NPCs. +faction-command-help-text = faction <source> <friendly/hostile> target + faction <source> list: hostile factions +faction-command-invalid-faction-error = Invalid faction +faction-command-invalid-target-faction-error = Invalid target faction diff --git a/Resources/Locale/en-US/ame/components/ame-controller-component.ftl b/Resources/Locale/en-US/ame/components/ame-controller-component.ftl new file mode 100644 index 0000000000..75a4cf7dd3 --- /dev/null +++ b/Resources/Locale/en-US/ame/components/ame-controller-component.ftl @@ -0,0 +1,23 @@ +ame-controller-component-interact-no-hands-text = You have no hands. +ame-controller-component-interact-using-no-hands-text = You have no hands. +ame-controller-component-interact-using-nothing-in-hands-text = You have nothing in your hand! +ame-controller-component-interact-using-already-has-jar = The controller already has a jar loaded. +ame-controller-component-interact-using-success = You insert the jar into the fuel slot. +ame-controller-component-interact-using-fail = You can't put that in the controller... + +## UI + +ame-window-title = Antimatter Control Unit +ame-window-engine-status-label = Engine Status: +ame-window-engine-injection-status-not-injecting-label = Not Injecting +ame-window-engine-injection-status-injecting-label = Injecting... +ame-window-toggle-injection-button = Toggle Injection +ame-window-fuel-status-label = Fuel Status: +ame-window-fuel-not-inserted-text = No fuel inserted +ame-window-injection-amount-label = Injection amount: +ame-window-refresh-parts-button = Refresh Parts +ame-window-core-count-label = Core count: +ame-window-toggle-injection-button = Toggle Injection +ame-window-eject-button = Eject +ame-window-increase-fuel-button = Increase +ame-window-decrease-fuel-button = Decrease \ No newline at end of file diff --git a/Resources/Locale/en-US/ame/components/ame-part-component.ftl b/Resources/Locale/en-US/ame/components/ame-part-component.ftl new file mode 100644 index 0000000000..c601120be3 --- /dev/null +++ b/Resources/Locale/en-US/ame/components/ame-part-component.ftl @@ -0,0 +1,2 @@ +ame-part-component-interact-using-no-hands = You have no hands. +ame-part-component-shielding-already-present = Shielding is already there! \ No newline at end of file diff --git a/Resources/Locale/en-US/apc/components/apc-component.ftl b/Resources/Locale/en-US/apc/components/apc-component.ftl new file mode 100644 index 0000000000..36e132cb15 --- /dev/null +++ b/Resources/Locale/en-US/apc/components/apc-component.ftl @@ -0,0 +1 @@ +apc-component-insufficient-access = Insufficient access! \ No newline at end of file diff --git a/Resources/Locale/en-US/arcade/blockgame.ftl b/Resources/Locale/en-US/arcade/blockgame.ftl index 11fd855840..b4005d4a33 100644 --- a/Resources/Locale/en-US/arcade/blockgame.ftl +++ b/Resources/Locale/en-US/arcade/blockgame.ftl @@ -15,6 +15,7 @@ blockgame-menu-gameover-info = Global: {$global} blockgame-menu-title = Nanotrasen Block Game blockgame-menu-button-new-game = New Game blockgame-menu-button-scoreboard = Scoreboard +blockgame-menu-button-pause = Pause blockgame-menu-button-unpause = Unpause blockgame-menu-msg-game-over = Game over! blockgame-menu-label-highscores = Highscores diff --git a/Resources/Locale/en-US/arcade/components/space-villain-game-component.ftl b/Resources/Locale/en-US/arcade/components/space-villain-game-component.ftl new file mode 100644 index 0000000000..e7766bd2f9 --- /dev/null +++ b/Resources/Locale/en-US/arcade/components/space-villain-game-component.ftl @@ -0,0 +1,15 @@ +## SpaceVillainGame + +space-villain-game-player-attack-message = You attack {$enemyName} for {$attackAmount}! +space-villain-game-player-heal-message = You use {$magicPointAmount} magic to heal for {$healAmount} damage! +space-villain-game-player-recharge-message = You regain {$regainedPoints} points +space-villain-game-player-wins-message = You won! +space-villain-game-enemy-dies-message = {$enemyName} dies. +space-villain-game-player-loses-message = You lost! +space-villain-game-enemy-cheers-message = {$enemyName} cheers. +space-villain-game-enemy-dies-with-player-message = {$enemyName} dies, but takes you with him. +space-villain-game-enemy-throws-bomb-message = {$enemyName} throws a bomb, exploding you for {$damageReceived} damage! +space-villain-game-enemy-steals-player-power-message = {$enemyName} steals {$stolenAmount} of your power! +space-villain-game-enemy-heals-message = {$enemyName} heals for {healedAmount} health! +space-villain-game-enemy-steals-player-power-message = {$enemyName} steals {$stolenAmount} of your power! +space-villain-game-enemy-attacks-message = {$enemyName} attacks you for {$damageDealt} damage! \ No newline at end of file diff --git a/Resources/Locale/en-US/atmos.ftl b/Resources/Locale/en-US/atmos.ftl deleted file mode 100644 index d63239b896..0000000000 --- a/Resources/Locale/en-US/atmos.ftl +++ /dev/null @@ -1,6 +0,0 @@ - -### UI - -# Used for GasEntry.ToString() -gas-entry-info = {$gasName}: {$gasAmount} mol -itemstatus-pressure-warn = Pressure: [color={$color}]{$danger}[/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/barsign/barsign-component.ftl b/Resources/Locale/en-US/barsign/barsign-component.ftl new file mode 100644 index 0000000000..80a9bc57e6 --- /dev/null +++ b/Resources/Locale/en-US/barsign/barsign-component.ftl @@ -0,0 +1 @@ +barsign-component-name = bar sign \ No newline at end of file diff --git a/Resources/Locale/en-US/components/examinable-battery-component.ftl b/Resources/Locale/en-US/battery/components/examinable-battery-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/examinable-battery-component.ftl rename to Resources/Locale/en-US/battery/components/examinable-battery-component.ftl diff --git a/Resources/Locale/en-US/body/behavior/behavior.ftl b/Resources/Locale/en-US/body/behavior/behavior.ftl new file mode 100644 index 0000000000..6870fdb894 --- /dev/null +++ b/Resources/Locale/en-US/body/behavior/behavior.ftl @@ -0,0 +1 @@ +lung-behavior-gasp = Gasp \ No newline at end of file diff --git a/Resources/Locale/en-US/body/body-scanner/body-scanner-component.ftl b/Resources/Locale/en-US/body/body-scanner/body-scanner-component.ftl new file mode 100644 index 0000000000..7f5ac28ee4 --- /dev/null +++ b/Resources/Locale/en-US/body/body-scanner/body-scanner-component.ftl @@ -0,0 +1,5 @@ +## UI + +body-scanner-display-title = Body Scanner +body-scanner-display-health-label = Health: +body-scanner-display-body-part-damage-text = {$damage} damage \ No newline at end of file diff --git a/Resources/Locale/en-US/body/components/bodypart-component.ftl b/Resources/Locale/en-US/body/components/bodypart-component.ftl new file mode 100644 index 0000000000..c72ac51c09 --- /dev/null +++ b/Resources/Locale/en-US/body/components/bodypart-component.ftl @@ -0,0 +1,9 @@ +## Entity + +bodypart-component-no-way-to-install-message = You see no way to install the {$partName} +bodypart-component-no-way-to-attach-message = You see no useful way to attach the {$partName} anymore. +bodypart-component-attach-success-message = You attach {$partName} +bodypart-component-attach-fail-message = You can't attach {$partName} + +# AttachBodypartVerb +attach-bodypart-verb-get-data-text = Attach Body Part \ No newline at end of file diff --git a/Resources/Locale/en-US/body/components/mechanism-component.ftl b/Resources/Locale/en-US/body/components/mechanism-component.ftl new file mode 100644 index 0000000000..d9e522ebce --- /dev/null +++ b/Resources/Locale/en-US/body/components/mechanism-component.ftl @@ -0,0 +1,6 @@ +## Entity + +mechanism-component-cannot-fit-message = You can't fit it in! +mechanism-component-no-way-to-install-message = You see no way to install the {$partName} +mechanism-component-no-useful-way-to-use-message = You see no useful way to use the {$partName} anymore. +mechanism-component-jam-inside-message = You jam {$ownerName} inside {$them}. \ No newline at end of file diff --git a/Resources/Locale/en-US/body/surgery/biological-surgery-data-component.ftl b/Resources/Locale/en-US/body/surgery/biological-surgery-data-component.ftl new file mode 100644 index 0000000000..49aa5bbb04 --- /dev/null +++ b/Resources/Locale/en-US/body/surgery/biological-surgery-data-component.ftl @@ -0,0 +1,11 @@ +biological-surgery-data-component-has-incision-not-clamped-message = The skin on their {$bodyPart} has an incision, but it is prone to bleeding. +biological-surgery-data-component-has-clamped-incision-not-retracted-message = The skin on their {$bodyPart} has an incision, but it is not retracted. +biological-surgery-data-component-has-fully-open-incision-message = There is an incision on their {$bodyPart}. +biological-surgery-data-component-part-is-loose-message = {$owner}'s {$bodyPart} is loose. +biological-surgery-data-component-open-skin-message = Cut open the skin... +biological-surgery-data-component-clamp-vessels-message = Clamp the vessels... +biological-surgery-data-component-retract-skin-message = Retracting the skin... +biological-surgery-data-component-cauterize-incision-message = Cauterizing the incision... +biological-surgery-data-component-loosen-organ-message = Loosening the organ... +biological-surgery-data-component-remove-organ-message = Removing the organ... +biological-surgery-data-component-remove-bodypart-message = Sawing off the limb! \ No newline at end of file diff --git a/Resources/Locale/en-US/body/surgery/components/surgery-tool-component.ftl b/Resources/Locale/en-US/body/surgery/components/surgery-tool-component.ftl new file mode 100644 index 0000000000..e156491bf0 --- /dev/null +++ b/Resources/Locale/en-US/body/surgery/components/surgery-tool-component.ftl @@ -0,0 +1,2 @@ +surgery-tool-component-not-useful-message = You see no useful way to use {$bodyPart}. +surgery-tool-component-not-useful-anymore-message = You see no useful way to use {$bodyPart} anymore. \ No newline at end of file diff --git a/Resources/Locale/en-US/body/surgery/surgery.ftl b/Resources/Locale/en-US/body/surgery/surgery.ftl new file mode 100644 index 0000000000..f370d19357 --- /dev/null +++ b/Resources/Locale/en-US/body/surgery/surgery.ftl @@ -0,0 +1,4 @@ +## UI + +surgery-window-title = Surgery +surgery-window-not-available-button-text = N/A \ No newline at end of file diff --git a/Resources/Locale/en-US/botany/components/plant-holder-component.ftl b/Resources/Locale/en-US/botany/components/plant-holder-component.ftl new file mode 100644 index 0000000000..5900a1a373 --- /dev/null +++ b/Resources/Locale/en-US/botany/components/plant-holder-component.ftl @@ -0,0 +1,35 @@ +## Entity + +plant-holder-component-empty-seed-packet-message = The packet seems to be empty. You throw it away. +plant-holder-component-plant-success-message = You plant the {$seedName} {$seedNoun}. +plant-holder-component-already-seeded-message = The {$name} already has seeds in it! +plant-holder-component-remove-weeds-message = You remove the weeds from the {$name}. +plant-holder-component-remove-weeds-others-message = {$otherName} starts uprooting the weeds. +plant-holder-component-no-weeds-message = This plot is devoid of weeds! It doesn't need uprooting. +plant-holder-component-remove-plant-message = You remove the plant from the {$name}. +plant-holder-component-remove-plant-others-message = {$name} removes the plant. +plant-holder-component-no-plant-message = There is no plant to remove. +plant-holder-component-empty-message = {$owner} is empty! +plant-holder-component-spray-message = You spray {$owner}. +plant-holder-component-transfer-message = You transfer {$amount}u to {$owner}. +plant-holder-component-nothing-to-sample-message =There is nothing to take a sample of!. +plant-holder-component-already-sampled-message = This plant has already been sampled. +plant-holder-component-dead-plant-message = This plant is dead. +plant-holder-component-take-sample-message = You take a sample from the {$seedName}. +plant-holder-component-compost-message = You compost {$usingItem} into {$owner}. +plant-holder-component-compost-others-message = {$user} composts {$usingItem} into {$owner}. +plant-holder-component-nothing-planted-message = It has nothing planted in it.. +plant-holder-component-something-already-growing-message = [color=green]{$seedName}[/color] {$toBeForm} growing here. +plant-holder-component-something-already-growing-low-health-message = The plant looks [color=red]{$healthState}[/color]. +plant-holder-component-plant-old-adjective = old and wilting +plant-holder-component-plant-unhealthy-adjective = unhealthy +plant-holder-component-dead-plant-matter-message = It is full of [color=red]dead plant matter[/color]. +plant-holder-component-weed-high-level-message = It is filled with [color=green]weeds[/color]! +plant-holder-component-pest-high-level-message = It is filled with [color=gray]tiny worms[/color]! +plant-holder-component-water-level-message = Water: [color=cyan]{$waterLevel}[/color]. +plant-holder-component-nutrient-level-message = Nutrient: [color=orange]{$nutritionLevel}[/color]. +plant-holder-component-toxins-high-warning = The [color=red]toxicity level alert[/color] is flashing red. +plant-holder-component-light-improper-warning = The [color=yellow]improper light level alert[/color] is blinking. +plant-holder-component-heat-improper-warning = The [color=orange]improper temperature level alert[/color] is blinking. +plant-holder-component-pressure-improper-warning = The [color=lightblue]improper environment pressure alert[/color] is blinking. +plant-holder-component-gas-missing-warning = The [color=cyan]improper gas environment alert[/color] is blinking. \ No newline at end of file diff --git a/Resources/Locale/en-US/botany/components/seed-component.ftl b/Resources/Locale/en-US/botany/components/seed-component.ftl new file mode 100644 index 0000000000..74434e0a9a --- /dev/null +++ b/Resources/Locale/en-US/botany/components/seed-component.ftl @@ -0,0 +1,12 @@ +## Entity + +seed-component-no-seeds-message = It doesn't seem to contain any seeds. +seed-component-description = It has a picture of [color=yellow]{$seedName}[/color] on the front. +seed-component-has-variety-tag = It's tagged as variety [color=lightgray]no. {$seedUid}[/color]. +seed-component-plant-yield-text = Plant Yield: [color=lightblue]{$seedYield}[/color] +seed-component-plant-potency-text = Plant Potency: [color=lightblue]{$seedPotency}[/color] + +botany-seed-packet-name = packet of {$seedName} {$seedNoun} +botany-harvest-fail-message = You fail to harvest anything useful. +botany-harvest-success-message = You harvest from the {$name} +botany-mysterious-description-addon = On second thought, something about this one looks strange. \ No newline at end of file diff --git a/Resources/Locale/en-US/botany/components/seed-extractor-component.ftl b/Resources/Locale/en-US/botany/components/seed-extractor-component.ftl new file mode 100644 index 0000000000..47296ae1f4 --- /dev/null +++ b/Resources/Locale/en-US/botany/components/seed-extractor-component.ftl @@ -0,0 +1,3 @@ +## Entity + +seed-extractor-component-interact-message = You extract some seeds from the {$name}. \ No newline at end of file diff --git a/Resources/Locale/en-US/buckle/components/buckle-component.ftl b/Resources/Locale/en-US/buckle/components/buckle-component.ftl new file mode 100644 index 0000000000..898d7d69ee --- /dev/null +++ b/Resources/Locale/en-US/buckle/components/buckle-component.ftl @@ -0,0 +1,11 @@ +buckle-component-cannot-do-that-message = You can't do that! +buckle-component-no-hands-message = You don't have hands! +buckle-component-already-buckled-message = You are already buckled in! +buckle-component-other-already-buckled-message = {$owner} is already buckled in! +buckle-component-cannot-buckle-message = You can't buckle yourself there! +buckle-component-other-cannot-buckle-message = You can't buckle {$owner} there! +buckle-component-cannot-fit-message = You can't fit there! +buckle-component-other-cannot-fit-message = {$owner} can't fit there! + +# BuckleVerb +buckle-verb-unbuckle = Unbuckle \ No newline at end of file diff --git a/Resources/Locale/en-US/buckle/components/strap-component.ftl b/Resources/Locale/en-US/buckle/components/strap-component.ftl new file mode 100644 index 0000000000..dcb56fc77e --- /dev/null +++ b/Resources/Locale/en-US/buckle/components/strap-component.ftl @@ -0,0 +1,4 @@ +## StrapVerb + +strap-verb-get-data-text-buckle = Buckle +strap-verb-get-data-text-unbuckle = Unbuckle \ No newline at end of file diff --git a/Resources/Locale/en-US/components/item-cabinet-component.ftl b/Resources/Locale/en-US/cabinet/item-cabinet-system.ftl similarity index 85% rename from Resources/Locale/en-US/components/item-cabinet-component.ftl rename to Resources/Locale/en-US/cabinet/item-cabinet-system.ftl index 9862050223..4671a4d6ba 100644 --- a/Resources/Locale/en-US/components/item-cabinet-component.ftl +++ b/Resources/Locale/en-US/cabinet/item-cabinet-system.ftl @@ -1,4 +1,4 @@ -### Used for item cabinet (fire extinguisher cabinets) +### Used for item cabinet (fire extinguisher cabinets) ## Displayed when the item is successfully taken out of the cabinet. diff --git a/Resources/Locale/en-US/cargo/components/cargo-console-component.ftl b/Resources/Locale/en-US/cargo/components/cargo-console-component.ftl new file mode 100644 index 0000000000..6c78afc362 --- /dev/null +++ b/Resources/Locale/en-US/cargo/components/cargo-console-component.ftl @@ -0,0 +1,20 @@ +## UI +cargo-console-menu-request-only-title = Cargo Request Console +cargo-console-menu-title = Cargo Shuttle Console +cargo-console-menu-account-name-label = Account Name: +cargo-console-menu-account-name-none-text = None +cargo-console-menu-points-label = Points: +cargo-console-menu-shuttle-status-label = Shuttle Status: +cargo-console-menu-shuttle-status-away-text = Away +cargo-console-menu-order-capacity-label = Order Capacity: +cargo-console-menu-call-shuttle-button = Activate Telepad +cargo-console-menu-permissions-button = Permissions +cargo-console-menu-categories-label = Categories: +cargo-console-menu-search-bar-placeholder = Search +cargo-console-menu-requests-label = Requests +cargo-console-menu-orders-label = Orders +cargo-console-menu-order-reason-description = Reasons: {$reason} +cargo-console-menu-populate-categories-all-text = All +cargo-console-menu-populate-orders-cargo-order-row-product-name-text = {$productName} (x{$orderAmount}) by {$orderRequester} +cargo-console-menu-cargo-order-row-approve-button = Approve +cargo-console-menu-cargo-order-row-cancel-button = Cancel diff --git a/Resources/Locale/en-US/cargo/components/cargo-console-order-component.ftl b/Resources/Locale/en-US/cargo/components/cargo-console-order-component.ftl new file mode 100644 index 0000000000..1aeefa9cc4 --- /dev/null +++ b/Resources/Locale/en-US/cargo/components/cargo-console-order-component.ftl @@ -0,0 +1,7 @@ +## UI + +cargo-console-order-menu-title = Order Form +cargo-console-order-menu-requester-label = Name: +cargo-console-order-menu-reason-label = Reason: +cargo-console-order-menu-amount-label = Amount: +cargo-console-order-menu-submit-button = OK \ No newline at end of file diff --git a/Resources/Locale/en-US/cargo/components/cargo-order-database-component.ftl b/Resources/Locale/en-US/cargo/components/cargo-order-database-component.ftl new file mode 100644 index 0000000000..1987902383 --- /dev/null +++ b/Resources/Locale/en-US/cargo/components/cargo-order-database-component.ftl @@ -0,0 +1,3 @@ +## Cargo order database + +cargo-order-database-order-overflow-message = {$placeholder} (Overflow) \ No newline at end of file diff --git a/Resources/Locale/en-US/cargo/galactic-bank-selection-menu.ftl b/Resources/Locale/en-US/cargo/galactic-bank-selection-menu.ftl new file mode 100644 index 0000000000..76b54eaddf --- /dev/null +++ b/Resources/Locale/en-US/cargo/galactic-bank-selection-menu.ftl @@ -0,0 +1 @@ +galactic-bank-selection-menu-title = Galactic Bank Selection \ No newline at end of file diff --git a/Resources/Locale/en-US/centcomm.ftl b/Resources/Locale/en-US/centcomm.ftl deleted file mode 100644 index 4567780fe3..0000000000 --- a/Resources/Locale/en-US/centcomm.ftl +++ /dev/null @@ -1,5 +0,0 @@ -### Automated Centcomm announcements - -latejoin-arrival-announcement = {$character} ({$job}) has arrived at the station! - -latejoin-arrival-sender = Station diff --git a/Resources/Locale/en-US/ui/changelog.ftl b/Resources/Locale/en-US/changelog/changelog-window.ftl similarity index 89% rename from Resources/Locale/en-US/ui/changelog.ftl rename to Resources/Locale/en-US/changelog/changelog-window.ftl index 620cc361f1..597a059b0f 100644 --- a/Resources/Locale/en-US/ui/changelog.ftl +++ b/Resources/Locale/en-US/changelog/changelog-window.ftl @@ -1,4 +1,4 @@ -### Stuff for the changelog window. +### ChangelogWindow.xaml.cs changelog-window-title = Changelog changelog-author-changed = [color=#EEE]{ $author }[/color] changed: diff --git a/Resources/Locale/en-US/character-appearance/components/magic-mirror-component.ftl b/Resources/Locale/en-US/character-appearance/components/magic-mirror-component.ftl new file mode 100644 index 0000000000..e9018171a4 --- /dev/null +++ b/Resources/Locale/en-US/character-appearance/components/magic-mirror-component.ftl @@ -0,0 +1,3 @@ +magic-mirror-component-activate-user-has-no-hair = You can't have any hair! + +magic-mirror-window-title = Magic Mirror \ No newline at end of file diff --git a/Resources/Locale/en-US/character-info/components/character-info-component.ftl b/Resources/Locale/en-US/character-info/components/character-info-component.ftl new file mode 100644 index 0000000000..551348fdbd --- /dev/null +++ b/Resources/Locale/en-US/character-info/components/character-info-component.ftl @@ -0,0 +1,3 @@ +character-info-health-and-status-effects-text = Health & status effects +character-info-roles-antagonist-text = Antagonist Roles +character-info-objectives-label = Objectives \ No newline at end of file diff --git a/Resources/Locale/en-US/chat-manager.ftl b/Resources/Locale/en-US/chat-manager.ftl deleted file mode 100644 index 67b0dad9b1..0000000000 --- a/Resources/Locale/en-US/chat-manager.ftl +++ /dev/null @@ -1,3 +0,0 @@ -### UI - -chat-manager-max-message-length = Your message exceeds {$maxMessageLength} character limit diff --git a/Resources/Locale/en-US/chat/commands/suicide-command.ftl b/Resources/Locale/en-US/chat/commands/suicide-command.ftl new file mode 100644 index 0000000000..b3a95d9840 --- /dev/null +++ b/Resources/Locale/en-US/chat/commands/suicide-command.ftl @@ -0,0 +1,7 @@ +suicide-command-description = Commits suicide +suicide-command-help-text = The suicide command gives you a quick way out of a round while remaining in-character. + The method varies, first it will attempt to use the held item in your active hand. + If that fails, it will attempt to use an object in the environment. + Finally, if neither of the above worked, you will die by biting your tongue. +suicide-command-default-text-others = {$name} is attempting to bite their own tongue! +suicide-command-default-text-self = You attempt to bite your own tongue! \ No newline at end of file diff --git a/Resources/Locale/en-US/chat/managers/chat-manager.ftl b/Resources/Locale/en-US/chat/managers/chat-manager.ftl new file mode 100644 index 0000000000..02b71db263 --- /dev/null +++ b/Resources/Locale/en-US/chat/managers/chat-manager.ftl @@ -0,0 +1,24 @@ +### UI + +chat-manager-max-message-length = Your message exceeds {$maxMessageLength} character limit +chat-manager-ooc-chat-enabled-message = OOC chat has been enabled. +chat-manager-ooc-chat-disabled-message = OOC chat has been disabled. +chat-manager-admin-ooc-chat-enabled-message = Admin OOC chat has been enabled. +chat-manager-admin-ooc-chat-disabled-message = Admin OOC chat has been disabled. +chat-manager-max-message-length-exceeded-message = Your message exceeded {$limit} character limit +chat-manager-no-headset-on-message = You don't have a headset on! +chat-manager-server-wrap-message = SERVER: {"{0}"} +chat-manager-sender-announcement-wrap-message = {$sender} Announcement: + {"{0}"} +chat-manager-entity-say-wrap-message = {$entityName} says: "{"{0}"}" +chat-manager-entity-me-wrap-message = {$entityName} {"{0}"} +chat-manager-send-ooc-wrap-message = OOC: {$playerName}: {"{0}"} +chat-manager-send-ooc-patron-wrap-message = OOC: [color={$patronColor}]{$playerName}[/color]: {"{0}"}: +chat-manager-send-dead-chat-wrap-message = {$deadChannelName}: {$playerName}: {"{0}"} +chat-manager-send-admin-dead-chat-wrap-message = {$adminChannelName}:({$userName}): {"{0}"} +chat-manager-send-admin-chat-wrap-message = {$adminChannelName}: {$playerName}: {"{0}"} +chat-manager-send-admin-announcement-wrap-message = {$adminChannelName}: {"{0}"} +chat-manager-send-hook-ooc-wrap-message = OOC: (D){$senderName}: {"{0}"} + +chat-manager-dead-channel-name = DEAD +chat-manager-admin-channel-name = ADMIN \ No newline at end of file diff --git a/Resources/Locale/en-US/chat/ui/chat-box.ftl b/Resources/Locale/en-US/chat/ui/chat-box.ftl new file mode 100644 index 0000000000..19d8555583 --- /dev/null +++ b/Resources/Locale/en-US/chat/ui/chat-box.ftl @@ -0,0 +1,4 @@ +hud-chatbox-info = Say something! T to talk, Tab to cycle channels. +hud-chatbox-admin = Admin +hud-chatbox-ooc = OOC +hud-chatbox-console = Console \ No newline at end of file diff --git a/Resources/Locale/en-US/chemistry/components/chem-master-component.ftl b/Resources/Locale/en-US/chemistry/components/chem-master-component.ftl new file mode 100644 index 0000000000..432ea43e2b --- /dev/null +++ b/Resources/Locale/en-US/chemistry/components/chem-master-component.ftl @@ -0,0 +1,34 @@ +## Entity + +chem-master-component-activate-no-hands = You have no hands. +chem-master-component-interact-using-no-hands = You have no hands. +chem-master-component-interact-using-nothing-in-hands = You have nothing in your hand! +chem-master-component-has-beaker-already-message = This ChemMaster already has a container in it. +chem-master-component-container-too-large-message = The {$container} is too large for the ChemMaster! +chem-master-component-cannot-put-entity-message = You can't put {entity} in the ChemMaster! + +## Bound UI +chem-master-bound-user-interface-title = ChemMaster 4000 + +## UI + +chem-master-window-container-label = Container +chem-master-window-eject-button = Eject +chem-master-window-no-container-loaded-text = No container loaded. +chem-master-window-buffer-text = Buffer +chem-master-window-buffer-label = buffer: +chem-master-window-buffer-all-amount = All +chem-master-window-buffer-empty-text = Buffer empty. +chem-master-window-transfer-button = Transfer +chem-master-window-discard-button = Discard +chem-master-window-packaging-text = Packaging +chem-master-window-pills-label = Pills: +chem-master-window-max-pills-volume-text = max 50u/each +chem-master-window-max-bottle-volume-text = max 30u/each +chem-master-window-create-pill-button = Create +chem-master-window-create-bottle-button = Create +cham-master-window-bottles-label = Bottles: +chem-master-window-unknown-reagent-text = Unknown reagent + +## Eject beaker verb +eject-beaker-verb-get-data-text = Eject Beaker \ No newline at end of file diff --git a/Resources/Locale/en-US/chemistry/components/hypospray-component.ftl b/Resources/Locale/en-US/chemistry/components/hypospray-component.ftl new file mode 100644 index 0000000000..6ea6911135 --- /dev/null +++ b/Resources/Locale/en-US/chemistry/components/hypospray-component.ftl @@ -0,0 +1,12 @@ +## UI + +hypospray-volume-text = Volume: [color=white]{$currentVolume}/{$totalVolume}[/color] + +## Entity + +hypospray-component-inject-other-message = You inject {$other}. +hypospray-component-inject-self-message = You inject yourself. +hypospray-component-inject-self-clumsy-message = Oops! You injected yourself. +hypospray-component-empty-message = It's empty! +hypospray-component-feel-prick-message = You feel a tiny prick! +hypospray-component-transfer-already-full-message = {$owner} is already full! \ No newline at end of file diff --git a/Resources/Locale/en-US/chemistry/components/injector-component.ftl b/Resources/Locale/en-US/chemistry/components/injector-component.ftl new file mode 100644 index 0000000000..9e3ba0c63d --- /dev/null +++ b/Resources/Locale/en-US/chemistry/components/injector-component.ftl @@ -0,0 +1,19 @@ +## UI + +injector-draw-text = Draw +injector-inject-text = Inject +injector-invalid-injector-toggle-mode = Invalid +injector-volume-label = Volume: [color=white]{$currentVolume}/{$totalVolume}[/color] | [color=white]{$modeString}[/color] + +## Entity + +injector-component-drawing-text = Now drawing +injector-component-injecting-text = Now injecting +injector-component-cannot-transfer-message = You aren't able to transfer to {$owner}! +injector-component-cannot-draw-message = You aren't able to draw from {$owner}! +injector-component-cannot-inject-message = You aren't able to inject to {$owner}! +injector-component-inject-success-message = You inject {$amount}u into {$target}! +injector-component-transfer-success-message = You transfer {$amount}u into {$target}. +injector-component-draw-success-message = You draw {$amount}u from {$target}. +injector-component-target-already-full-message = {$target} is already full! +injector-component-target-is-empty-message = {$target} is empty! \ No newline at end of file diff --git a/Resources/Locale/en-US/chemistry/components/pill-component.ftl b/Resources/Locale/en-US/chemistry/components/pill-component.ftl new file mode 100644 index 0000000000..6640e9191a --- /dev/null +++ b/Resources/Locale/en-US/chemistry/components/pill-component.ftl @@ -0,0 +1,4 @@ +## Entity + +pill-component-cannot-eat-more-message = You can't eat any more! +pill-component-swallow-success-message = You swallow the pill. \ No newline at end of file diff --git a/Resources/Locale/en-US/chemistry/components/reagent-dispenser-component.ftl b/Resources/Locale/en-US/chemistry/components/reagent-dispenser-component.ftl new file mode 100644 index 0000000000..98e956cf0a --- /dev/null +++ b/Resources/Locale/en-US/chemistry/components/reagent-dispenser-component.ftl @@ -0,0 +1,25 @@ +## Entity + +reagent-dispenser-component-activate-no-hands = You have no hands. +reagent-dispenser-component-interact-using-no-hands = You have no hands. +reagent-dispenser-component-interact-using-nothing-in-hands = You have nothing in your hand! + +reagent-dispenser-component-has-container-already-message = This dispenser already has a container in it. +reagent-dispenser-component-container-too-large-message = The {$container} is too large for the ChemMaster! +reagent-dispenser-component-cannot-put-entity-message = You can't put {$entity} in the dispenser! +reagent-dispenser-component-cannot-fit-message = That can't fit in the dispenser. + +## Bound UI + +reagent-dispenser-bound-user-interface-title = Reagent dispenser + +## UI + +reagent-dispenser-window-amount-to-dispense-label = Amount +reagent-dispenser-window-container-label = Container: +reagent-dispenser-window-clear-button = Clear +reagent-dispenser-window-eject-button = Eject +reagent-dispenser-window-no-container-loaded-text = No container loaded. +reagent-dispenser-window-reagent-name-not-found-text = Reagent name not found +reagent-dispenser-window-unknown-reagent-text = Unknown reagent +reagent-dispenser-window-quantity-label-text = {$quantity}u \ No newline at end of file diff --git a/Resources/Locale/en-US/chemistry/components/rehydratable-component.ftl b/Resources/Locale/en-US/chemistry/components/rehydratable-component.ftl new file mode 100644 index 0000000000..c2e61e6cd4 --- /dev/null +++ b/Resources/Locale/en-US/chemistry/components/rehydratable-component.ftl @@ -0,0 +1 @@ +rehydratable-component-expands-message = {$owner} expands! \ No newline at end of file diff --git a/Resources/Locale/en-US/chemistry/components/solution-transfer-component.ftl b/Resources/Locale/en-US/chemistry/components/solution-transfer-component.ftl new file mode 100644 index 0000000000..414113c034 --- /dev/null +++ b/Resources/Locale/en-US/chemistry/components/solution-transfer-component.ftl @@ -0,0 +1,5 @@ +solution-transfer-component-fill-to-brim-message = You fill {$owner} to the brim with {$amount}u from {$target} +solution-transfer-component-fill--message = You fill {$owner} with {$amount}u from {$target} +solution-transfer-component-transfer-success-message = You transfer {$amount}u to {$target}. +solution-transfer-component-do-transfer-component-is-empty = {$entity} is empty! +solution-transfer-component-do-transfer-component-is-full = {$entity} is full! \ No newline at end of file diff --git a/Resources/Locale/en-US/chemistry/solution/components/shared-solution-container-component.ftl b/Resources/Locale/en-US/chemistry/solution/components/shared-solution-container-component.ftl new file mode 100644 index 0000000000..0c836a6b11 --- /dev/null +++ b/Resources/Locale/en-US/chemistry/solution/components/shared-solution-container-component.ftl @@ -0,0 +1,4 @@ +shared-solution-container-component-on-examine-empty-container = Contains no chemicals. +shared-solution-container-component-on-examine-main-text = It contains a [color={$color}]{$desc}[/color] {wordedAmount} +shared-solution-container-component-on-examine-worded-amount-one-reagent = chemical. +shared-solution-container-component-on-examine-worded-amount-multiple-reagents = mixture of chemicals. \ No newline at end of file diff --git a/Resources/Locale/en-US/components/climbable-component.ftl b/Resources/Locale/en-US/climbing/climbable-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/climbable-component.ftl rename to Resources/Locale/en-US/climbing/climbable-component.ftl diff --git a/Resources/Locale/en-US/cloning/accept-cloning-window.ftl b/Resources/Locale/en-US/cloning/accept-cloning-window.ftl new file mode 100644 index 0000000000..26ddcec1ed --- /dev/null +++ b/Resources/Locale/en-US/cloning/accept-cloning-window.ftl @@ -0,0 +1,5 @@ +accept-cloning-window-title = Cloning Machine +accept-cloning-window-prompt-text-part = You are being cloned! + Transfer your soul to the clone body? +accept-cloning-window-accept-button = Yes +accept-cloning-window-deny-button = No \ No newline at end of file diff --git a/Resources/Locale/en-US/entities/cloning.ftl b/Resources/Locale/en-US/cloning/components/cloning-pod-component.ftl similarity index 61% rename from Resources/Locale/en-US/entities/cloning.ftl rename to Resources/Locale/en-US/cloning/components/cloning-pod-component.ftl index 940d4a76a3..61e1eddf73 100644 --- a/Resources/Locale/en-US/entities/cloning.ftl +++ b/Resources/Locale/en-US/cloning/components/cloning-pod-component.ftl @@ -1,4 +1,13 @@ -### yup etc +## UI + +cloning-pod-window-title = Cloning Machine +cloning-pod-clone-button = Clone +cloning-pod-eject-body-button = Eject Body +cloning-pod-neural-interface-label = Neural Interface: +cloning-pod-no-activity-text = No Activity +cloning-pod-mind-present-text = Consciousness Detected + +### yup etc cloning-pod-component-msg-occupied = ERROR: The pod already contains a clone cloning-pod-component-msg-no-selection = ERROR: You didn't select someone to clone @@ -6,6 +15,4 @@ cloning-pod-component-msg-bad-selection = ERROR: Entry Removed During Selection cloning-pod-component-msg-already-cloning = ERROR: Pod Network Conflict cloning-pod-component-msg-already-alive = ERROR: Metaphysical Conflict cloning-pod-component-msg-user-offline = ERROR: Metaphysical Disturbance -medical-scanner-component-msg-no-soul = ERROR: Body is completely devoid of soul -medical-scanner-component-msg-soul-broken = ERROR: Soul present, but defunct / departed diff --git a/Resources/Locale/en-US/clothing/components/magboots-component.ftl b/Resources/Locale/en-US/clothing/components/magboots-component.ftl new file mode 100644 index 0000000000..4113a74862 --- /dev/null +++ b/Resources/Locale/en-US/clothing/components/magboots-component.ftl @@ -0,0 +1,3 @@ + +# Toggle Magboots Verb +toggle-magboots-verb-get-data-text = Toggle Magboots \ No newline at end of file diff --git a/Resources/Locale/en-US/menu/communicationsconsole.ftl b/Resources/Locale/en-US/communications/communications-console-component.ftl similarity index 100% rename from Resources/Locale/en-US/menu/communicationsconsole.ftl rename to Resources/Locale/en-US/communications/communications-console-component.ftl diff --git a/Resources/Locale/en-US/components/gas-tank-component.ftl b/Resources/Locale/en-US/components/gas-tank-component.ftl deleted file mode 100644 index dcda4be9b9..0000000000 --- a/Resources/Locale/en-US/components/gas-tank-component.ftl +++ /dev/null @@ -1,7 +0,0 @@ -### GasTankComponent stuff. - -# Examine text showing pressure in tank. -comp-gas-tank-examine = Pressure: [color=orange]{PRESSURE($pressure)}[/color]. - -# Examine text when internals are active. -comp-gas-tank-connected = {"\u000A"}Connected to external component diff --git a/Resources/Locale/en-US/components/hands-component.ftl b/Resources/Locale/en-US/components/hands-component.ftl deleted file mode 100644 index 0e1816f4a0..0000000000 --- a/Resources/Locale/en-US/components/hands-component.ftl +++ /dev/null @@ -1,4 +0,0 @@ -### HandComponent stuff - -# Examine text after when they're holding something (in-hand) -comp-hands-examine = { CAPITALIZE(SUBJECT($user)) } { CONJUGATE-BE($user) } holding a { $item }. diff --git a/Resources/Locale/en-US/components/pda-component.ftl b/Resources/Locale/en-US/components/pda-component.ftl deleted file mode 100644 index 6c4c736c77..0000000000 --- a/Resources/Locale/en-US/components/pda-component.ftl +++ /dev/null @@ -1,11 +0,0 @@ - -### UI - -# For the PDA screen -comp-pda-ui = ID: [color=white]{$Owner}[/color], [color=yellow]{$JobTitle}[/color] - -comp-pda-ui-blank = ID: - -comp-pda-ui-owner = Owner: [color=white]{$ActualOwnerName}[/color] - - diff --git a/Resources/Locale/en-US/components/rcd-component.ftl b/Resources/Locale/en-US/components/rcd-component.ftl deleted file mode 100644 index 30aa0d72fc..0000000000 --- a/Resources/Locale/en-US/components/rcd-component.ftl +++ /dev/null @@ -1,14 +0,0 @@ - -### UI - -# Shown when an RCD is examined in details range -rcd-component-examine-detail-count = It's currently on {$mode} mode, and holds {$ammoCount -> - *[zero] no charges. - [one] one charge. - [other] {$ammoCount} charges. -} - -### Interaction Messages - -# Shown when changing RCD Mode -rcd-component-change-mode = The RCD is now set to {$mode} mode. diff --git a/Resources/Locale/en-US/components/secret-stash.ftl b/Resources/Locale/en-US/components/secret-stash.ftl deleted file mode 100644 index 4a0e396211..0000000000 --- a/Resources/Locale/en-US/components/secret-stash.ftl +++ /dev/null @@ -1,3 +0,0 @@ -### Secret stash component. Stuff like potted plants, comfy chair cushions, etc... - -comp-secret-stash-action-hide = You hide { THE($item) } in { $this } diff --git a/Resources/Locale/en-US/configurable/configuration-component.ftl b/Resources/Locale/en-US/configurable/configuration-component.ftl new file mode 100644 index 0000000000..5632003c2c --- /dev/null +++ b/Resources/Locale/en-US/configurable/configuration-component.ftl @@ -0,0 +1,6 @@ + +configuration-menu-confirm = Confirm +configuration-menu-device-title = Device Configuration + +## ConfigureVerb +configure-verb-get-data-text = Open Configuration \ No newline at end of file diff --git a/Resources/Locale/en-US/construction.ftl b/Resources/Locale/en-US/construction.ftl deleted file mode 100644 index 5cf12f2783..0000000000 --- a/Resources/Locale/en-US/construction.ftl +++ /dev/null @@ -1,17 +0,0 @@ - -### Interaction Messages - -# Shown when examining an in-construction object -construction-insert-prototype-no-name = Next, insert {$prototypeName}. - -# Shown when examining an in-construction object -construction-insert-prototype = Next, insert {$entityName}. - -# Shown when examining an in-construction object -construction-insert-entity-with-component = Next, insert an entity with a {$componentName} component. - -# Shown when examining an in-construction object -construction-insert-exact-entity = Next, insert {$entityName}. - -# Shown when examining an in-construction object -construction-insert-arbitrary-entity = Next, insert {$stepName}. diff --git a/Resources/Locale/en-US/construction/components/construction-component-verbs.ftl b/Resources/Locale/en-US/construction/components/construction-component-verbs.ftl new file mode 100644 index 0000000000..b26309fdae --- /dev/null +++ b/Resources/Locale/en-US/construction/components/construction-component-verbs.ftl @@ -0,0 +1,3 @@ +deconstructible-verb-get-data-text = Begin deconstructing +deconstructible-verb-activate-no-target-text = There is no way to deconstruct this. +deconstructible-verb-activate-text = Examine to see instructions. \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/components/construction-component.ftl b/Resources/Locale/en-US/construction/components/construction-component.ftl new file mode 100644 index 0000000000..85276a45aa --- /dev/null +++ b/Resources/Locale/en-US/construction/components/construction-component.ftl @@ -0,0 +1 @@ +construction-component-to-create-header = To create {$targetName}... \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/components/machine-board-component.ftl b/Resources/Locale/en-US/construction/components/machine-board-component.ftl new file mode 100644 index 0000000000..6c926c7552 --- /dev/null +++ b/Resources/Locale/en-US/construction/components/machine-board-component.ftl @@ -0,0 +1,2 @@ +machine-board-component-on-examine-label = Requires: +machine-board-component-required-element-entry-text = [color=yellow]{$amount}x[/color] [color=green]{$requiredElement}[/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/components/machine-part-component.ftl b/Resources/Locale/en-US/construction/components/machine-part-component.ftl new file mode 100644 index 0000000000..2db3b92da9 --- /dev/null +++ b/Resources/Locale/en-US/construction/components/machine-part-component.ftl @@ -0,0 +1,2 @@ +machine-part-component-on-examine-rating-text = [color=white]Rating:[/color] [color=cyan]{$rating}[/color] +machine-part-component-on-examine-type-text = [color=white]Type:[/color] [color=cyan]{$type}[/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/conditions.ftl b/Resources/Locale/en-US/construction/conditions.ftl deleted file mode 100644 index c9af878fb3..0000000000 --- a/Resources/Locale/en-US/construction/conditions.ftl +++ /dev/null @@ -1,7 +0,0 @@ -# DoorWelded -construction-condition-door-weld = First, weld the {$entityName}. -construction-condition-door-unweld = First, unweld the {$entityName}. - -# AirlockBolted -construction-condition-airlock-bolt = First, bolt the {$entityName}. -construction-condition-airlock-unbolt = First, unbolt the {$entityName}. diff --git a/Resources/Locale/en-US/construction/conditions/airlock-bolted.ftl b/Resources/Locale/en-US/construction/conditions/airlock-bolted.ftl new file mode 100644 index 0000000000..4ba7be4705 --- /dev/null +++ b/Resources/Locale/en-US/construction/conditions/airlock-bolted.ftl @@ -0,0 +1,3 @@ +# AirlockBolted +construction-condition-airlock-bolt = First, bolt the {$entityName}. +construction-condition-airlock-unbolt = First, unbolt the {$entityName}. \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/conditions/door-welded.ftl b/Resources/Locale/en-US/construction/conditions/door-welded.ftl new file mode 100644 index 0000000000..db0c561e5b --- /dev/null +++ b/Resources/Locale/en-US/construction/conditions/door-welded.ftl @@ -0,0 +1,3 @@ +# DoorWelded +construction-condition-door-weld = First, weld the {$entityName}. +construction-condition-door-unweld = First, unweld the {$entityName}. \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/conditions/machine-frame-complete.ftl b/Resources/Locale/en-US/construction/conditions/machine-frame-complete.ftl new file mode 100644 index 0000000000..d251775be4 --- /dev/null +++ b/Resources/Locale/en-US/construction/conditions/machine-frame-complete.ftl @@ -0,0 +1,4 @@ +# MachineFrameComplete +construction-condition-machine-frame-requirement-label = Requires: +construction-condition-machine-frame-insert-circuit-board-message = Insert [color=cyan]any machine circuit board[/color]. +construction-condition-machine-frame-required-element-entry = [color=yellow]{$amount}x[/color] [color=green]{$elementName}[/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/conditions/toilet-lid-closed.ftl b/Resources/Locale/en-US/construction/conditions/toilet-lid-closed.ftl new file mode 100644 index 0000000000..17d24728cc --- /dev/null +++ b/Resources/Locale/en-US/construction/conditions/toilet-lid-closed.ftl @@ -0,0 +1,2 @@ +# ToiletLidClosed +construction-condition-toilet-lid-closed = Use a [color=yellow]crowbar[/color] to close the lid. \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/conditions/wire-panel.ftl b/Resources/Locale/en-US/construction/conditions/wire-panel.ftl new file mode 100644 index 0000000000..c9b9ecec1e --- /dev/null +++ b/Resources/Locale/en-US/construction/conditions/wire-panel.ftl @@ -0,0 +1,3 @@ +# WirePanel +construction-condition-wire-panel-open = First, open the maintenance panel. +construction-condition-wire-panel-close = First, close the maintenance panel. \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/construction-ghost-component.ftl b/Resources/Locale/en-US/construction/construction-ghost-component.ftl new file mode 100644 index 0000000000..893e173d55 --- /dev/null +++ b/Resources/Locale/en-US/construction/construction-ghost-component.ftl @@ -0,0 +1 @@ +construction-ghost-examine-message = Building: [color=cyan]{$name}[/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/construction-system.ftl b/Resources/Locale/en-US/construction/construction-system.ftl new file mode 100644 index 0000000000..aa3dda391c --- /dev/null +++ b/Resources/Locale/en-US/construction/construction-system.ftl @@ -0,0 +1,5 @@ +## ConstructionSystem + +construction-system-construct-cannot-start-another-construction = You can't start another construction now! +construction-system-construct-no-materials = You don't have the materials to build that! +construction-system-already-building = You are already building that! \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/steps/arbitrary-insert-construction-graph-step.ftl b/Resources/Locale/en-US/construction/steps/arbitrary-insert-construction-graph-step.ftl new file mode 100644 index 0000000000..6a7998e57a --- /dev/null +++ b/Resources/Locale/en-US/construction/steps/arbitrary-insert-construction-graph-step.ftl @@ -0,0 +1,2 @@ +# Shown when examining an in-construction object +construction-insert-arbitrary-entity = Next, insert {$stepName}. \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/steps/component-construction-graph-step.ftl b/Resources/Locale/en-US/construction/steps/component-construction-graph-step.ftl new file mode 100644 index 0000000000..4e4cb8a462 --- /dev/null +++ b/Resources/Locale/en-US/construction/steps/component-construction-graph-step.ftl @@ -0,0 +1,5 @@ +# Shown when examining an in-construction object +construction-insert-entity-with-component = Next, insert an entity with a {$componentName} component. + +# Shown when examining an in-construction object +construction-insert-exact-entity = Next, insert {$entityName}. \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/steps/material-construction-graph-step.ftl b/Resources/Locale/en-US/construction/steps/material-construction-graph-step.ftl new file mode 100644 index 0000000000..e62e250c17 --- /dev/null +++ b/Resources/Locale/en-US/construction/steps/material-construction-graph-step.ftl @@ -0,0 +1 @@ +construction-insert-material-entity = Next, add [color=yellow]{$amount}}x[/color] [color=cyan]{$materialName}[/color]. \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/steps/prototype-construction-graph-step.ftl b/Resources/Locale/en-US/construction/steps/prototype-construction-graph-step.ftl new file mode 100644 index 0000000000..9cd828f31f --- /dev/null +++ b/Resources/Locale/en-US/construction/steps/prototype-construction-graph-step.ftl @@ -0,0 +1,5 @@ +# Shown when examining an in-construction object +construction-insert-prototype-no-name = Next, insert {$prototypeName}. + +# Shown when examining an in-construction object +construction-insert-prototype = Next, insert {$entityName}. \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/steps/tool-construction-graph-step.ftl b/Resources/Locale/en-US/construction/steps/tool-construction-graph-step.ftl new file mode 100644 index 0000000000..ac32fee293 --- /dev/null +++ b/Resources/Locale/en-US/construction/steps/tool-construction-graph-step.ftl @@ -0,0 +1 @@ +construction-use-tool-entity = Next, use a [color=cyan]{$toolName}[/color]. \ No newline at end of file diff --git a/Resources/Locale/en-US/construction/menu-presenter.ftl b/Resources/Locale/en-US/construction/ui/construction-menu-presenter.ftl similarity index 100% rename from Resources/Locale/en-US/construction/menu-presenter.ftl rename to Resources/Locale/en-US/construction/ui/construction-menu-presenter.ftl diff --git a/Resources/Locale/en-US/construction/ui/construction-menu.ftl b/Resources/Locale/en-US/construction/ui/construction-menu.ftl new file mode 100644 index 0000000000..f4b7f3559a --- /dev/null +++ b/Resources/Locale/en-US/construction/ui/construction-menu.ftl @@ -0,0 +1,8 @@ +## ConstructionMenu.xaml.cs + +construction-menu-title = Construction +construction-menu-place-ghost = Place construction ghost +construction-menu-clear-all = Clear All +construction-menu-eraser-mode = Eraser Mode +construction-menu-title = Construction +construction-menu-craft = Craft \ No newline at end of file diff --git a/Resources/Locale/en-US/crayon/crayon-component.ftl b/Resources/Locale/en-US/crayon/crayon-component.ftl new file mode 100644 index 0000000000..34fe271be1 --- /dev/null +++ b/Resources/Locale/en-US/crayon/crayon-component.ftl @@ -0,0 +1,8 @@ + +## Entity + +crayon-drawing-label = Drawing: [color={$color}]{$state}[/color] ({$charges}/{$capacity}) +crayon-interact-not-enough-left-text = Not enough left. + +## UI +crayon-window-title = Crayon \ No newline at end of file diff --git a/Resources/Locale/en-US/credits/credits-window.ftl b/Resources/Locale/en-US/credits/credits-window.ftl new file mode 100644 index 0000000000..1b9636367b --- /dev/null +++ b/Resources/Locale/en-US/credits/credits-window.ftl @@ -0,0 +1,11 @@ +credits-window-title = Credits +credits-window-patrons-tab = Patrons +credits-window-ss14contributorslist-tab = Credits +credits-window-licenses-tab = Open Source Licenses +credits-window-become-patron-button = Become a Patron +credits-window-contributor-encouragement-label = Want to get on this list? +credits-window-contribute-button = Contribute! +credits-window-contributors-section-title = Space Station 14 Contributors +credits-window-codebases-section-title = Space Station 13 Codebases +credits-window-original-remake-team-section-title = Original Space Station 13 Remake Team +credits-window-special-thanks-section-title = Special Thanks \ No newline at end of file diff --git a/Resources/Locale/en-US/cuffs/components/cuffable-component.ftl b/Resources/Locale/en-US/cuffs/components/cuffable-component.ftl new file mode 100644 index 0000000000..8efb76cda6 --- /dev/null +++ b/Resources/Locale/en-US/cuffs/components/cuffable-component.ftl @@ -0,0 +1,12 @@ +cuffable-component-cannot-interact-message = You can't do that! +cuffable-component-cannot-remove-cuffs-too-far-message = You are too far away to remove the cuffs. +cuffable-component-start-removing-cuffs-message = You start removing the cuffs. +cuffable-component-remove-cuffs-success-message = You successfully remove the cuffs. +cuffable-component-remove-cuffs-by-other-success-message = {$otherName} uncuffs your hands. +cuffable-component-remove-cuffs-to-other-partial-success-message = You successfully remove the cuffs. {$cuffedHandCount} of {$otherName}'s hands remain cuffed. +cuffable-component-remove-cuffs-by-other-partial-success-message = {$otherName} removes your cuffs. {$cuffedHandCount} of your hands remain cuffed. +cuffable-component-remove-cuffs-partial-success-message = You successfully remove the cuffs. {$cuffedHandCount} of your hands remain cuffed. +cuffable-component-remove-cuffs-fail-message = You fail to remove the cuffs. + +# UncuffVerb +uncuff-verb-get-data-text = Uncuff \ No newline at end of file diff --git a/Resources/Locale/en-US/cuffs/components/handcuff-component.ftl b/Resources/Locale/en-US/cuffs/components/handcuff-component.ftl new file mode 100644 index 0000000000..e5fd3a611e --- /dev/null +++ b/Resources/Locale/en-US/cuffs/components/handcuff-component.ftl @@ -0,0 +1,11 @@ +handcuff-component-target-self-error = You can't cuff yourself! +handcuff-component-cuffs-broken-error = The cuffs are broken! +handcuff-component-target-has-no-hands-error = {$targetName} has no hands! +handcuff-component-target-has-no-free-hands-error = {$targetName} has no free hands! +handcuff-component-too-far-away-error = You are too far away to use the cuffs! +handcuff-component-start-cuffing-target-message = You start cuffing {$targetName}. +handcuff-component-start-cuffing-by-other-message = {$otherName} starts cuffing you! +handcuff-component-cuff-other-success-message = You successfully cuff {$otherName}. +handcuff-component-cuff-by-other-success-message = You have been cuffed by {$otherName}! +handcuff-component-cuff-interrupt-message = You were interrupted while cuffing {$targetName}! +handcuff-component-cuff-interrupt-other-message = You interrupt {$otherName} while they are cuffing you! \ No newline at end of file diff --git a/Resources/Locale/en-US/damage/rejuvenate-verb.ftl b/Resources/Locale/en-US/damage/rejuvenate-verb.ftl new file mode 100644 index 0000000000..88b499b357 --- /dev/null +++ b/Resources/Locale/en-US/damage/rejuvenate-verb.ftl @@ -0,0 +1 @@ +rejuvenate-verb-get-data-text = Rejuvenate \ No newline at end of file diff --git a/Resources/Locale/en-US/dice/dice-component.ftl b/Resources/Locale/en-US/dice/dice-component.ftl new file mode 100644 index 0000000000..2a8d8634c8 --- /dev/null +++ b/Resources/Locale/en-US/dice/dice-component.ftl @@ -0,0 +1,2 @@ +dice-component-on-examine-message-part-1 = A dice with [color=lightgray]{$sidesAmount}[/color] sides. +dice-component-on-examine-message-part-2 = It has landed on a [color=white]{$currentSide}[/color]. \ No newline at end of file diff --git a/Resources/Locale/en-US/disposal/mailing/components/disposal-mailing-unit-component.ftl b/Resources/Locale/en-US/disposal/mailing/components/disposal-mailing-unit-component.ftl new file mode 100644 index 0000000000..0fcf911167 --- /dev/null +++ b/Resources/Locale/en-US/disposal/mailing/components/disposal-mailing-unit-component.ftl @@ -0,0 +1,23 @@ +## UI + +disposal-mailing-unit-window-state-label = State: +disposal-mailing-unit-window-ready-state = Ready +disposal-mailing-unit-pressure-label = Pressure: +disposal-mailing-unit-handle-label = Handle: +disposal-mailing-unit-engage-button = Engage +disposal-mailing-unit-eject-label = Eject: +disposal-mailing-unit-eject-button = Eject Contents +disposal-mailing-unit-power-button = Power +disposal-mailing-unit-destination-select-label = Select a destination: +disposal-mailing-unit-unit-self-reference = This unit: +disposal-mailing-unit-is-valid-interaction-cannot-interact = You can't do that! +disposal-mailing-unit-is-valid-interaction-cannot-reach = You can't reach there! +disposal-mailing-unit-is-valid-interaction-no-hands = You have no hands. + +## SelfInsertVerb + +self-insert-verb-get-data-text = Jump inside + +## FlushVerb + +flush-verb-get-data-text = Flush \ No newline at end of file diff --git a/Resources/Locale/en-US/disposal/tube-connections-command.ftl b/Resources/Locale/en-US/disposal/tube-connections-command.ftl new file mode 100644 index 0000000000..44b8682ce5 --- /dev/null +++ b/Resources/Locale/en-US/disposal/tube-connections-command.ftl @@ -0,0 +1,2 @@ +tube-connections-command-description = Shows all the directions that a tube can connect in. +tube-connections-command-help-text = Usage: {$command} <entityUid> \ No newline at end of file diff --git a/Resources/Locale/en-US/disposal/tube/components/disposal-router-component.ftl b/Resources/Locale/en-US/disposal/tube/components/disposal-router-component.ftl new file mode 100644 index 0000000000..2975607fd7 --- /dev/null +++ b/Resources/Locale/en-US/disposal/tube/components/disposal-router-component.ftl @@ -0,0 +1,11 @@ +## UI + +disposal-router-window-title = Disposal Router +disposal-router-window-tags-label = Tags: +disposal-router-window-tag-input-tooltip = A comma separated list of tags +disposal-router-window-tag-input-confirm-button = Confirm +disposal-router-window-tag-input-activate-no-hands = You have no hands + +## ConfigureVerb + +configure-verb-get-data-text = Open Configuration diff --git a/Resources/Locale/en-US/disposal/tube/components/disposal-tagger-window.ftl b/Resources/Locale/en-US/disposal/tube/components/disposal-tagger-window.ftl new file mode 100644 index 0000000000..24091a0533 --- /dev/null +++ b/Resources/Locale/en-US/disposal/tube/components/disposal-tagger-window.ftl @@ -0,0 +1,7 @@ +disposal-tagger-window-title = Disposal Tagger +disposal-tagger-window-tag-input-label = Tag: +disposal-tagger-window-tag-confirm-button = Confirm +disposal-tagger-window-activate-no-hands = You have no hands. + +## ConfigureVerb +configure-verb-get-data-text = Open Configuration diff --git a/Resources/Locale/en-US/disposal/tube/components/disposal-tube-component.ftl b/Resources/Locale/en-US/disposal/tube/components/disposal-tube-component.ftl new file mode 100644 index 0000000000..251731f913 --- /dev/null +++ b/Resources/Locale/en-US/disposal/tube/components/disposal-tube-component.ftl @@ -0,0 +1,5 @@ +disposal-tube-component-popup-directions-text = {$directions} + +## TubeDirectionVerb + +tube-direction-verb-get-data-text = Tube Directions \ No newline at end of file diff --git a/Resources/Locale/en-US/ui/disposal.ftl b/Resources/Locale/en-US/disposal/unit/components/disposal-unit-component.ftl similarity index 56% rename from Resources/Locale/en-US/ui/disposal.ftl rename to Resources/Locale/en-US/disposal/unit/components/disposal-unit-component.ftl index b9d3399def..485f25deef 100644 --- a/Resources/Locale/en-US/ui/disposal.ftl +++ b/Resources/Locale/en-US/disposal/unit/components/disposal-unit-component.ftl @@ -1,6 +1,4 @@ -### Disposal UIs - -## Disposal Units +## UI ui-disposal-unit-title = Disposal Unit @@ -11,3 +9,7 @@ ui-disposal-unit-label-status = Ready ui-disposal-unit-button-flush = Flush ui-disposal-unit-button-eject = Eject Contents ui-disposal-unit-button-power = Power + +ui-disposal-unit-is-valid-interaction-cannot=interact = You can't do that! +ui-disposal-unit-is-valid-interaction-cannot-reach = You can't reach there! +ui-disposal-unit-is-valid-interaction-no-hands = You have no hands. \ No newline at end of file diff --git a/Resources/Locale/en-US/doors/components/airlock-component.ftl b/Resources/Locale/en-US/doors/components/airlock-component.ftl new file mode 100644 index 0000000000..27861ec4e2 --- /dev/null +++ b/Resources/Locale/en-US/doors/components/airlock-component.ftl @@ -0,0 +1,4 @@ +## AirlockComponent + +airlock-component-cannot-pry-is-bolted-message = The airlock's bolts prevent it from being forced! +airlock-component-cannot-pry-is-powered-message = The powered motors block your efforts! \ No newline at end of file diff --git a/Resources/Locale/en-US/drag-drop/drag-drop-system.ftl b/Resources/Locale/en-US/drag-drop/drag-drop-system.ftl new file mode 100644 index 0000000000..421f598959 --- /dev/null +++ b/Resources/Locale/en-US/drag-drop/drag-drop-system.ftl @@ -0,0 +1 @@ +drag-drop-system-out-of-range-text = You can't reach there! \ No newline at end of file diff --git a/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl b/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl new file mode 100644 index 0000000000..73c22d9d37 --- /dev/null +++ b/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl @@ -0,0 +1,10 @@ +## PointingSystem + +pointing-system-try-point-cannot-reach = You can't reach there! +pointing-system-point-at-self = You point at yourself. +pointing-system-point-at-other = You point at {$other}. +pointing-system-point-at-self-others = {$otherName} points at {$other}}. +pointing-system-point-at-other-others = {$otherName} points at {$other}}. +pointing-system-point-at-other-others = {$otherName} points at {$other}}. +pointing-system-point-at-you-other = {$otherName} points at you. +pointing-system-other-point-at-tile = {$otherName} points at {$tileName} \ No newline at end of file diff --git a/Resources/Locale/en-US/ui/escape.ftl b/Resources/Locale/en-US/escape-menu/ui/escape-menu.ftl similarity index 83% rename from Resources/Locale/en-US/ui/escape.ftl rename to Resources/Locale/en-US/escape-menu/ui/escape-menu.ftl index 1ec71b5efe..bfb6071dfa 100644 --- a/Resources/Locale/en-US/ui/escape.ftl +++ b/Resources/Locale/en-US/escape-menu/ui/escape-menu.ftl @@ -1,4 +1,4 @@ -### Escape menu stuff +### EscapeMenu.xaml ui-escape-title = Esc Menu ui-escape-options = Options diff --git a/Resources/Locale/en-US/ui/options.ftl b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl similarity index 98% rename from Resources/Locale/en-US/ui/options.ftl rename to Resources/Locale/en-US/escape-menu/ui/options-menu.ftl index 7bf7c1924e..d2746a3c6e 100644 --- a/Resources/Locale/en-US/ui/options.ftl +++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl @@ -1,6 +1,5 @@ -### Options menu stuff. - ## General stuff + ui-options-title = Game Options ui-options-tab-graphics = Graphics ui-options-tab-controls = Controls @@ -10,6 +9,7 @@ ui-options-apply = Apply ui-options-reset-all = Reset All ## Audio menu + ui-options-master-volume = Master Volume: ui-options-ambient-hum = Ambient Hum ui-options-lobby-music = Lobby Music @@ -17,6 +17,7 @@ ui-options-volume-sliders = Volume Sliders ui-options-volume-percent = { TOSTRING($volume, "P0") } ## Graphics menu + ui-options-vsync = VSync ui-options-fullscreen = Fullscreen ui-options-lighting-label = Lighting Quality: @@ -41,6 +42,7 @@ ui-options-vp-scale = Fixed viewport scale: x{ $scale } ui-options-vp-low-res = Low-resolution viewport? ## Controls menu + ui-options-binds-reset-all = Reset ALL keybinds ui-options-binds-explanation = Click to change binding, right-click to clear ui-options-unbound = Unbound @@ -128,4 +130,4 @@ ui-options-function-loadout5 = Hotbar Loadout 5 ui-options-function-loadout6 = Hotbar Loadout 6 ui-options-function-loadout7 = Hotbar Loadout 7 ui-options-function-loadout8 = Hotbar Loadout 8 -ui-options-function-loadout9 = Hotbar Loadout 9 +ui-options-function-loadout9 = Hotbar Loadout 9 \ No newline at end of file diff --git a/Resources/Locale/en-US/examine/examine-system.ftl b/Resources/Locale/en-US/examine/examine-system.ftl new file mode 100644 index 0000000000..43c90faa7d --- /dev/null +++ b/Resources/Locale/en-US/examine/examine-system.ftl @@ -0,0 +1,3 @@ +## ExamineSystem + +examine-system-entity-does-not-exist = That entity doesn't exist \ No newline at end of file diff --git a/Resources/Locale/en-US/examine/examine-verb.ftl b/Resources/Locale/en-US/examine/examine-verb.ftl new file mode 100644 index 0000000000..8f5424f12a --- /dev/null +++ b/Resources/Locale/en-US/examine/examine-verb.ftl @@ -0,0 +1 @@ +examine-verb-name = Examine \ No newline at end of file diff --git a/Resources/Locale/en-US/fire-extinguisher/fire-extinguisher-component.ftl b/Resources/Locale/en-US/fire-extinguisher/fire-extinguisher-component.ftl new file mode 100644 index 0000000000..184a136317 --- /dev/null +++ b/Resources/Locale/en-US/fire-extinguisher/fire-extinguisher-component.ftl @@ -0,0 +1 @@ +fire-extinguisher-component-after-interact-refilled-message = {$owner} is now refilled \ No newline at end of file diff --git a/Resources/Locale/en-US/components/flash-component.ftl b/Resources/Locale/en-US/flash/components/flash-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/flash-component.ftl rename to Resources/Locale/en-US/flash/components/flash-component.ftl diff --git a/Resources/Locale/en-US/fluids/components/bucket-component.ftl b/Resources/Locale/en-US/fluids/components/bucket-component.ftl new file mode 100644 index 0000000000..3ce566ff1f --- /dev/null +++ b/Resources/Locale/en-US/fluids/components/bucket-component.ftl @@ -0,0 +1,2 @@ +bucket-component-bucket-is-empty-message = Bucket is empty +bucket-component-mop-is-full-message = Bucket is full \ No newline at end of file diff --git a/Resources/Locale/en-US/fluids/components/mop-component.ftl b/Resources/Locale/en-US/fluids/components/mop-component.ftl new file mode 100644 index 0000000000..a7ea8f73de --- /dev/null +++ b/Resources/Locale/en-US/fluids/components/mop-component.ftl @@ -0,0 +1 @@ +mop-component-mop-is-dry-message = Mop needs to be wet! \ No newline at end of file diff --git a/Resources/Locale/en-US/fluids/components/puddle-component.ftl b/Resources/Locale/en-US/fluids/components/puddle-component.ftl new file mode 100644 index 0000000000..eaed045d8d --- /dev/null +++ b/Resources/Locale/en-US/fluids/components/puddle-component.ftl @@ -0,0 +1 @@ +puddle-component-examine-is-slipper-text = It looks slippery. \ No newline at end of file diff --git a/Resources/Locale/en-US/fluids/components/spillable-component.ftl b/Resources/Locale/en-US/fluids/components/spillable-component.ftl new file mode 100644 index 0000000000..4c00b7b459 --- /dev/null +++ b/Resources/Locale/en-US/fluids/components/spillable-component.ftl @@ -0,0 +1,5 @@ +## SpillTargetVerb + +spill-target-verb-get-data-text = Spill liquid +spill-target-verb-activate-cannot-drain-message = You can't pour anything from {$owner}! +spill-target-verb-activate-is-empty-message = {$owner} is empty! \ No newline at end of file diff --git a/Resources/Locale/en-US/fluids/components/spray-component.ftl b/Resources/Locale/en-US/fluids/components/spray-component.ftl new file mode 100644 index 0000000000..7b4acaee69 --- /dev/null +++ b/Resources/Locale/en-US/fluids/components/spray-component.ftl @@ -0,0 +1,2 @@ +spray-component-safety-on-message = Its safety is on! +spray-component-is-empty-message = It's empty! \ No newline at end of file diff --git a/Resources/Locale/en-US/game-objects/DONT_PUT_STUFF_HERE_ATMOS_LEFTOVER b/Resources/Locale/en-US/game-objects/DONT_PUT_STUFF_HERE_ATMOS_LEFTOVER new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Resources/Locale/en-US/game-objects/components/atmos/firelock-component.ftl b/Resources/Locale/en-US/game-objects/components/atmos/firelock-component.ftl new file mode 100644 index 0000000000..fc375183e9 --- /dev/null +++ b/Resources/Locale/en-US/game-objects/components/atmos/firelock-component.ftl @@ -0,0 +1,2 @@ +firelock-component-is-holding-pressure-message = A gush of air blows in your face... Maybe you should reconsider. +firelock-component-is-holding-fire-message = A gush of warm air blows in your face... Maybe you should reconsider. \ No newline at end of file diff --git a/Resources/Locale/en-US/game-objects/components/atmos/flammable-component.ftl b/Resources/Locale/en-US/game-objects/components/atmos/flammable-component.ftl new file mode 100644 index 0000000000..b5d108be57 --- /dev/null +++ b/Resources/Locale/en-US/game-objects/components/atmos/flammable-component.ftl @@ -0,0 +1 @@ +flammable-component-resist-message = You stop, drop, and roll! \ No newline at end of file diff --git a/Resources/Locale/en-US/game-objects/components/atmos/gas-analyzer-component.ftl b/Resources/Locale/en-US/game-objects/components/atmos/gas-analyzer-component.ftl new file mode 100644 index 0000000000..3601c97c39 --- /dev/null +++ b/Resources/Locale/en-US/game-objects/components/atmos/gas-analyzer-component.ftl @@ -0,0 +1,19 @@ +## Entity + +gas-analyzer-component-player-has-no-hands-message = You have no hands. +gas-analyzer-component-need-gas-analyzer-in-hand-message = You need a Gas Analyzer in your hand! +gas-analyzer-component-player-cannot-reach-message = You can't reach there. + +## UI + +gas-analyzer-window-name = Gas Analyzer +gas-analyzer-window-refresh-button = Refresh +gas-analyzer-window-error-text = Error: {$errorText} +gas-analyzer-window-pressure-text = Pressure: {$pressure} kPa +gas-analyzer-window-temperature-text = Temperature: {$tempK}K ({$tempC}°C) +gas-analyzer-window-molality-text = {$mol} mol +gas-analyzer-window-molality-percentage-text = {$gasName}: {$amount} mol ({$percentage}%) + +# Used for GasEntry.ToString() +gas-entry-info = {$gasName}: {$gasAmount} mol +itemstatus-pressure-warn = Pressure: [color={$color}]{$danger}[/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/game-objects/components/atmos/gas-canister-component.ftl b/Resources/Locale/en-US/game-objects/components/atmos/gas-canister-component.ftl new file mode 100644 index 0000000000..edc657b616 --- /dev/null +++ b/Resources/Locale/en-US/game-objects/components/atmos/gas-canister-component.ftl @@ -0,0 +1,17 @@ +## UI + +# Bound Interface + +gas-canister-bound-user-interface-title = Gas Canister + +# window + +gas-canister-window-ok-text = OK +gas-canister-window-edit-text = Edit +gas-canister-window-label-label = Label: +gas-canister-window-pressure-label = Pressure: +gas-canister-window-release-pressure-label = Release pressure: +gas-canister-window-valve-label = Valve: +gas-canister-window-valve-closed-text = Closed +gas-canister-window-valve-open-text = Open +gas-canister-window-pressure-format-text = {$pressure}kPa \ No newline at end of file diff --git a/Resources/Locale/en-US/game-objects/components/atmos/gas-tank-component.ftl b/Resources/Locale/en-US/game-objects/components/atmos/gas-tank-component.ftl new file mode 100644 index 0000000000..afda880f75 --- /dev/null +++ b/Resources/Locale/en-US/game-objects/components/atmos/gas-tank-component.ftl @@ -0,0 +1,17 @@ +### GasTankComponent stuff. + +# Examine text showing pressure in tank. +comp-gas-tank-examine = Pressure: [color=orange]{PRESSURE($pressure)}[/color]. + +# Examine text when internals are active. +comp-gas-tank-connected = {"\u000A"}Connected to external component + +## ControlVerb +control-verb-open-control-panel-text = Open Control Panel + +## UI +gas-tank-window-label = Gas Tank +gas-tank-window-internals-toggle-button = Toggle +gas-tank-window-output-pressure-label = Output Pressure +gas-tank-window-tank-pressure-text = Pressure: {$tankPressure} kPA +gas-tank-window-internal-text = Internals: [color={$colorName}]{$status}[/color] diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-traitor.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-traitor.ftl new file mode 100644 index 0000000000..590a76db5c --- /dev/null +++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-traitor.ftl @@ -0,0 +1,38 @@ + +## Traitor + +# Shown at the end of a round of Traitor +traitor-round-end-result = {$traitorCount -> + [one] There was one traitor. + *[other] There were {$traitorCount} traitors. +} + +# Shown at the end of a round of Traitor +traitor-user-was-a-traitor = {$user} was a traitor. + +# Shown at the end of a round of Traitor +traitor-objective-list-start = and had the following objectives: + +# Shown at the end of a round of Traitor +traitor-objective-condition-success = {$condition} | [color={$markupColor}]Success![/color] + +# Shown at the end of a round of Traitor +traitor-objective-condition-fail = {$condition} | [color={$markupColor}]Failure![/color] ({$progress}%) + +traitor-title = Traitor +traitor-not-enough-ready-players = Not enough players readied up for the game! There were {$readyPlayersCount} players readied up out of {$minimumPlayers} needed. +traitor-no-one-ready = No players readied up! Can't start Traitor. + +## TraitorDeathMatch +traitor-death-match-title = Traitor Deathmatch +traitor-death-match-description = Everyone's a traitor. Everyone wants each other dead. +traitor-death-match-station-is-too-unsafe-announcement = The station is too unsafe to continue. You have one minute. +traitor-death-match-end-round-description-first-line = The PDAs recovered afterwards... +traitor-death-match-end-round-description-entry = {$originalName}'s PDA, with {tcBalance} TC + +## TraitorRole + +# TraitorRole +traitor-role-name = Syndicate Agent +traitor-role-greeting = Hello Agent +traitor-role-codewords = Your codewords are: {$codewords} \ No newline at end of file diff --git a/Resources/Locale/en-US/game-ticking/game-rules/rule-death-match.ftl b/Resources/Locale/en-US/game-ticking/game-rules/rule-death-match.ftl new file mode 100644 index 0000000000..b9754ed9aa --- /dev/null +++ b/Resources/Locale/en-US/game-ticking/game-rules/rule-death-match.ftl @@ -0,0 +1,3 @@ +rule-death-match-added-announcement = The game is now a death match. Kill everybody else to win! +rule-death-match-check-winner-stalemate = Everybody is dead, it's a stalemate! +rule-death-match-check-winner = {$winner} wins the death match! \ No newline at end of file diff --git a/Resources/Locale/en-US/game-ticking/game-rules/rule-suspicion.ftl b/Resources/Locale/en-US/game-ticking/game-rules/rule-suspicion.ftl new file mode 100644 index 0000000000..51bed9f128 --- /dev/null +++ b/Resources/Locale/en-US/game-ticking/game-rules/rule-suspicion.ftl @@ -0,0 +1,8 @@ +rule-suspicion-added-announcement = There are traitors on the station! Find them, and kill them! +rule-suspicion-traitor-time-has-run-out = Time has run out for the traitors! +rule-suspicion-check-winner-stalemate = Everybody is dead, it's a stalemate! +rule-suspicion-check-winner-station-win = The traitors are dead! The innocents win. +rule-suspicion-check-winner-traitor-win = The innocents are dead! The traitors win. +rule-suspicion-end-round-innocents-victory = The innocents have won! +rule-suspicion-end-round-trators-victory = The traitors have won! +rule-suspicion-end-round-nobody-victory = Nobody wins! \ No newline at end of file diff --git a/Resources/Locale/en-US/game-ticking/game-rules/rule-traitor.ftl b/Resources/Locale/en-US/game-ticking/game-rules/rule-traitor.ftl new file mode 100644 index 0000000000..22b37313aa --- /dev/null +++ b/Resources/Locale/en-US/game-ticking/game-rules/rule-traitor.ftl @@ -0,0 +1 @@ +rule-traitor-added-announcement = Hello crew! Have a good shift! \ No newline at end of file diff --git a/Resources/Locale/en-US/game-ticking/game-rules/rules.ftl b/Resources/Locale/en-US/game-ticking/game-rules/rules.ftl new file mode 100644 index 0000000000..fede404413 --- /dev/null +++ b/Resources/Locale/en-US/game-ticking/game-rules/rules.ftl @@ -0,0 +1,3 @@ +# General +rule-restarting-in-seconds = Restarting in {$seconds} seconds. +rule-time-has-run-out = Time has run out! \ No newline at end of file diff --git a/Resources/Locale/en-US/game-ticking/game-ticker.ftl b/Resources/Locale/en-US/game-ticking/game-ticker.ftl new file mode 100644 index 0000000000..9a1d11b1d6 --- /dev/null +++ b/Resources/Locale/en-US/game-ticking/game-ticker.ftl @@ -0,0 +1,23 @@ +game-ticker-restart-round-server-update = Update has been received, server will automatically restart for update at the end of this round. +game-ticker-shutdown-server-update = Server is shutting down for update and will automatically restart. +game-ticker-restart-round = Restarting round... +game-ticker-start-round = The round is starting now... +game-ticker-start-round-cannot-start-game-mode-fallback = Failed to start {$failedGameMode} mode! Defaulting to {$fallbackMode}... +game-ticker-start-round-cannot-start-game-mode-restart = Failed to start {$failedGameMode} mode! Restarting round... +game-ticker-unknown-role = Unknown +game-ticker-delay-start = Round start has been delayed for {$seconds} seconds. +game-ticker-pause-start = Round start has been paused. +game-ticker-pause-start-resumed = Round start countdown is now resumed. +game-ticker-player-join-game-message = Welcome to Space Station 14! If this is your first time checking out the game, be sure to check out the tutorial in the top left! +game-ticker-get-info-text = Hi and welcome to [color=white]Space Station 14![/color] + The current game mode is: [color=white]{$gmTitle}[/color]. + >[color=yellow]{$desc}[/color] + +# Displayed in chat to admins when a player joins +player-join-message = Player {$name} joined the server! + +# Displayed in chat to admins when a player leaves +player-leave-message = Player {$name} left the server! + +latejoin-arrival-announcement = {$character} ({$job}) has arrived at the station! +latejoin-arrival-sender = Station \ No newline at end of file diff --git a/Resources/Locale/en-US/gamemodes/modes.ftl b/Resources/Locale/en-US/gamemodes/modes.ftl deleted file mode 100644 index 0476001dab..0000000000 --- a/Resources/Locale/en-US/gamemodes/modes.ftl +++ /dev/null @@ -1,4 +0,0 @@ -mode-traitor = Traitor -mode-extended = Extended -mode-sandbox = Sandbox -mode-suspicion = Suspicion diff --git a/Resources/Locale/en-US/gamemodes/traitor.ftl b/Resources/Locale/en-US/gamemodes/traitor.ftl deleted file mode 100644 index 5dfb0843d0..0000000000 --- a/Resources/Locale/en-US/gamemodes/traitor.ftl +++ /dev/null @@ -1,20 +0,0 @@ - -### UI - -# Shown at the end of a round of Traitor -traitor-round-end-result = {$traitorCount -> - [one] There was one traitor. - *[other] There were {$traitorCount} traitors. -} - -# Shown at the end of a round of Traitor -traitor-user-was-a-traitor = {$user} was a traitor. - -# Shown at the end of a round of Traitor -traitor-objective-list-start = and had the following objectives: - -# Shown at the end of a round of Traitor -traitor-objective-condition-success = {$condition} | [color={$markupColor}]Success![/color] - -# Shown at the end of a round of Traitor -traitor-objective-condition-fail = {$condition} | [color={$markupColor}]Failure![/color] ({$progress}%) \ No newline at end of file diff --git a/Resources/Locale/en-US/generic.ftl b/Resources/Locale/en-US/generic.ftl new file mode 100644 index 0000000000..c0171e680f --- /dev/null +++ b/Resources/Locale/en-US/generic.ftl @@ -0,0 +1,5 @@ +### Generic, general words, which fit into multiple contexts + +generic-not-available-shorthand = N/A +generic-article-a = a +generic-article-an = an \ No newline at end of file diff --git a/Resources/Locale/en-US/ghost/components/ghost-component.ftl b/Resources/Locale/en-US/ghost/components/ghost-component.ftl new file mode 100644 index 0000000000..48a191da33 --- /dev/null +++ b/Resources/Locale/en-US/ghost/components/ghost-component.ftl @@ -0,0 +1,3 @@ +ghost-component-on-examine-death-time-info-minutes = {$minutes} minutes ago +ghost-component-on-examine-death-time-info-seconds = {$seconds} seconds ago +ghost-component-on-examine-message = Died [color=yellow]{$timeOfDeath}[/color]. \ No newline at end of file diff --git a/Resources/Locale/en-US/ghost/ghost-gui.ftl b/Resources/Locale/en-US/ghost/ghost-gui.ftl new file mode 100644 index 0000000000..ee56e10c13 --- /dev/null +++ b/Resources/Locale/en-US/ghost/ghost-gui.ftl @@ -0,0 +1,6 @@ +ghost-gui-return-to-body-button = Return to body +ghost-gui-ghost-warp-button = Ghost Warp +ghost-gui-ghost-roles-button = Ghost Roles + +ghost-target-window-title = Ghost Warp +ghost-target-window-current-button = Warp: {$name} \ No newline at end of file diff --git a/Resources/Locale/en-US/ghost/roles/make-ghost-role-verb.ftl b/Resources/Locale/en-US/ghost/roles/make-ghost-role-verb.ftl new file mode 100644 index 0000000000..6ff4d7e89c --- /dev/null +++ b/Resources/Locale/en-US/ghost/roles/make-ghost-role-verb.ftl @@ -0,0 +1 @@ +make-ghost-role-verb-get-data-text = Make Ghost Role \ No newline at end of file diff --git a/Resources/Locale/en-US/gravity/gravity-generator-component.ftl b/Resources/Locale/en-US/gravity/gravity-generator-component.ftl new file mode 100644 index 0000000000..a1c983519a --- /dev/null +++ b/Resources/Locale/en-US/gravity/gravity-generator-component.ftl @@ -0,0 +1,8 @@ +## UI + +gravity-generator-window-title = Gravity Generator Control +gravity-generator-window-status-label = Current Status: +gravity-generator-window-turn-off-button = Turn off +gravity-generator-window-turn-on-button = Turn on +gravity-generator-window-is-on = On +gravity-generator-window-is-off = Off \ No newline at end of file diff --git a/Resources/Locale/en-US/hands/components/hands-component.ftl b/Resources/Locale/en-US/hands/components/hands-component.ftl new file mode 100644 index 0000000000..406095d2a7 --- /dev/null +++ b/Resources/Locale/en-US/hands/components/hands-component.ftl @@ -0,0 +1,8 @@ +hands-component-disarm-success-others-message = {$source} disarms {$target}! +hands-component-disarm-success-message = You disarm {$target}! +hands-component-shove-success-others-message = {$source} shoves {$target}! +hands-component-shove-success-message = You shove {$target}! + +### HandComponent stuff + + diff --git a/Resources/Locale/en-US/hands/hands-system.ftl b/Resources/Locale/en-US/hands/hands-system.ftl new file mode 100644 index 0000000000..3268e5098c --- /dev/null +++ b/Resources/Locale/en-US/hands/hands-system.ftl @@ -0,0 +1,8 @@ +## HandsSystem +hands-system-missing-equipment-slot = You have no {$slotName} to take something out of! +hands-system-empty-equipment-slot = There's nothing in your {$slotName} to take out! + + +# Examine text after when they're holding something (in-hand) +comp-hands-examine = { CAPITALIZE(SUBJECT($user)) } { CONJUGATE-BE($user) } holding a { $item }. + diff --git a/Resources/Locale/en-US/components/headset-component.ftl b/Resources/Locale/en-US/headset/headset-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/headset-component.ftl rename to Resources/Locale/en-US/headset/headset-component.ftl diff --git a/Resources/Locale/en-US/holiday/greet/holiday-greet.ftl b/Resources/Locale/en-US/holiday/greet/holiday-greet.ftl new file mode 100644 index 0000000000..1e0937fad0 --- /dev/null +++ b/Resources/Locale/en-US/holiday/greet/holiday-greet.ftl @@ -0,0 +1 @@ +holiday-greet = Have a happy {$holidayName}! \ No newline at end of file diff --git a/Resources/Locale/en-US/ui/info.ftl b/Resources/Locale/en-US/info/info-window.ftl similarity index 100% rename from Resources/Locale/en-US/ui/info.ftl rename to Resources/Locale/en-US/info/info-window.ftl diff --git a/Resources/Locale/en-US/info/server-info.ftl b/Resources/Locale/en-US/info/server-info.ftl new file mode 100644 index 0000000000..ac68494f81 --- /dev/null +++ b/Resources/Locale/en-US/info/server-info.ftl @@ -0,0 +1,4 @@ +server-info-discord-button = Discord +server-info-website-button = Website +server-info-report-button = Report Bugs +server-info-credits-button = Credits \ No newline at end of file diff --git a/Resources/Locale/en-US/instruments/instruments-component.ftl b/Resources/Locale/en-US/instruments/instruments-component.ftl new file mode 100644 index 0000000000..cc2fe6e719 --- /dev/null +++ b/Resources/Locale/en-US/instruments/instruments-component.ftl @@ -0,0 +1,4 @@ +# InstrumentComponent +instrument-component-finger-cramps-light-message = Your fingers are beginning to a cramp a little! +instrument-component-finger-cramps-serious-message = Your fingers are seriously cramping up! +instrument-component-finger-cramps-max-message = Your fingers cramp up from playing! \ No newline at end of file diff --git a/Resources/Locale/en-US/interaction/in-range-unoccluded-verb.ftl b/Resources/Locale/en-US/interaction/in-range-unoccluded-verb.ftl new file mode 100644 index 0000000000..66d136fbfc --- /dev/null +++ b/Resources/Locale/en-US/interaction/in-range-unoccluded-verb.ftl @@ -0,0 +1,3 @@ +in-range-unoccluded-verb-get-data-text = In Range Unoccluded +in-range-unoccluded-verb-on-activate-not-occluded = Not occluded +in-range-unoccluded-verb-on-activate-occluded = Occluded \ No newline at end of file diff --git a/Resources/Locale/en-US/interaction/interaction-system.ftl b/Resources/Locale/en-US/interaction/interaction-system.ftl new file mode 100644 index 0000000000..c5c3b58c8c --- /dev/null +++ b/Resources/Locale/en-US/interaction/interaction-system.ftl @@ -0,0 +1 @@ +shared-interaction-system-in-range-unobstructed-cannot-reach = You can't reach there! \ No newline at end of file diff --git a/Resources/Locale/en-US/inventory/components/human-inventory-controller-component.ftl b/Resources/Locale/en-US/inventory/components/human-inventory-controller-component.ftl new file mode 100644 index 0000000000..df8dd6d52b --- /dev/null +++ b/Resources/Locale/en-US/inventory/components/human-inventory-controller-component.ftl @@ -0,0 +1,5 @@ +human-inventory-controller-component-need-uniform-to-store-in-id-slot-text = You need a uniform to store something in your ID slot! +human-inventory-controller-component-need-uniform-to-store-in-pockets-text = You need a uniform to store something in your pockets! +human-inventory-controller-component-too-large-text = This is too large! + +set-outfit-verb-get-data-text = Set Outfit \ No newline at end of file diff --git a/Resources/Locale/en-US/inventory/components/inventory-component.ftl b/Resources/Locale/en-US/inventory/components/inventory-component.ftl new file mode 100644 index 0000000000..98d11a18ae --- /dev/null +++ b/Resources/Locale/en-US/inventory/components/inventory-component.ftl @@ -0,0 +1,3 @@ +inventory-component-on-equip-cannot = You can't equip this! +inventory-component-can-equip-cannot = You can't equip this! +inventory-component-can-equip-does-not-fit = This doesn't fit! \ No newline at end of file diff --git a/Resources/Locale/en-US/inventory/human-inventory-interface-controller.ftl b/Resources/Locale/en-US/inventory/human-inventory-interface-controller.ftl new file mode 100644 index 0000000000..9a098d960a --- /dev/null +++ b/Resources/Locale/en-US/inventory/human-inventory-interface-controller.ftl @@ -0,0 +1 @@ +human-inventory-window-title = Your Inventory \ No newline at end of file diff --git a/Resources/Locale/en-US/items/components/item-component.ftl b/Resources/Locale/en-US/items/components/item-component.ftl new file mode 100644 index 0000000000..23a5375e2e --- /dev/null +++ b/Resources/Locale/en-US/items/components/item-component.ftl @@ -0,0 +1,3 @@ +## PickUpVerb + +pick-up-verb-get-data-text = Pick Up \ No newline at end of file diff --git a/Resources/Locale/en-US/components/kitchen-spike-component.ftl b/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/kitchen-spike-component.ftl rename to Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl diff --git a/Resources/Locale/en-US/kitchen/components/microwave-component.ftl b/Resources/Locale/en-US/kitchen/components/microwave-component.ftl new file mode 100644 index 0000000000..e304ce8b87 --- /dev/null +++ b/Resources/Locale/en-US/kitchen/components/microwave-component.ftl @@ -0,0 +1,25 @@ +## Entity + +microwave-component-interact-using-no-power = It has no power! +microwave-component-interact-using-no-active-hand = You have no active hand! +microwave-component-interact-using-container-full = Container is full +microwave-component-interact-using-transfer-success = Transferred {$amount}u +microwave-component-interact-using-transfer-fail = That won't work! +microwave-component-suicide-multi-head-others-message = {$victim} is trying to cook their heads! +microwave-component-suicide-others-message = {$victim} is trying to cook their head! +microwave-component-suicide-multi-head-message = You cook your heads! +microwave-component-suicide-message = You cook your head! + +## Bound UI + +microwave-bound-user-interface-instant-button = INSTANT +microwave-bound-user-interface-cook-time-label = COOK TIME + +## UI + +microwave-menu-title = Microwave +microwave-menu-start-button = Start +microwave-menu-eject-all-text = Eject All Contents +microwave-menu-eject-all-tooltip = This vaporizes all reagents, but ejects any solids. +microwave-menu-instant-button = INSTANT +microwave-menu-cook-time-label = COOK TIME: {$time} \ No newline at end of file diff --git a/Resources/Locale/en-US/kitchen/components/reagent-grinder-component.ftl b/Resources/Locale/en-US/kitchen/components/reagent-grinder-component.ftl new file mode 100644 index 0000000000..932cf35d9b --- /dev/null +++ b/Resources/Locale/en-US/kitchen/components/reagent-grinder-component.ftl @@ -0,0 +1,16 @@ +## UI + +reagent-grinder-bound-user-interface-instant-button = INSTANT +reagent-grinder-bound-user-interface-cook-time-label = COOK TIME + +grinder-menu-title = All-In-One Grinder 3000 +grinder-menu-grind-button = Grind +grinder-menu-juice-button = Juice +grinder-menu-chamber-content-box-label = Chamber +grinder-menu-chamber-content-box-button = Eject Contents +grinder-menu-beaker-content-box-label = Beaker +grinder-menu-beaker-content-box-button = Eject Beaker +grinder-menu-beaker-content-box-is-empty = Empty + +## Entity +reagent-grinder-component-interact-using-no-hands = You have no hands. \ No newline at end of file diff --git a/Resources/Locale/en-US/late-join/late-join-gui.ftl b/Resources/Locale/en-US/late-join/late-join-gui.ftl new file mode 100644 index 0000000000..298244b244 --- /dev/null +++ b/Resources/Locale/en-US/late-join/late-join-gui.ftl @@ -0,0 +1,3 @@ +late-join-gui-title = Late Join +late-join-gui-jobs-amount-in-department-tooltip = Jobs in the {$departmentName} department +late-join-gui-department-jobs-label = {$departmentName} jobs \ No newline at end of file diff --git a/Resources/Locale/en-US/lathe/ui/lathequeue-menu.ftl b/Resources/Locale/en-US/lathe/ui/lathequeue-menu.ftl new file mode 100644 index 0000000000..29f4c22941 --- /dev/null +++ b/Resources/Locale/en-US/lathe/ui/lathequeue-menu.ftl @@ -0,0 +1,2 @@ +lathequeue-menu-title = Lathe Queue +lathequeue-menu-not-producing-text = Not producing anything. diff --git a/Resources/Locale/en-US/ui/connecting.ftl b/Resources/Locale/en-US/launcher/launcher-connecting.ftl similarity index 53% rename from Resources/Locale/en-US/ui/connecting.ftl rename to Resources/Locale/en-US/launcher/launcher-connecting.ftl index 43db66becf..7d25adb736 100644 --- a/Resources/Locale/en-US/ui/connecting.ftl +++ b/Resources/Locale/en-US/launcher/launcher-connecting.ftl @@ -9,10 +9,4 @@ connecting-disconnected = Disconnected from server: connecting-tip = Don't die! connecting-version = ver 0.1 connecting-fail-reason = Failed to connect to server: - { $reason } - -connecting-state-NotConnecting = You should not be seeing this -connecting-state-ResolvingHost = Resolving server address... -connecting-state-EstablishingConnection = Establishing initial connection... -connecting-state-Handshake = Doing handshake... -connecting-state-Connected = Synchronizing game state... + { $reason } \ No newline at end of file diff --git a/Resources/Locale/en-US/light/components/emergency-light-component.ftl b/Resources/Locale/en-US/light/components/emergency-light-component.ftl new file mode 100644 index 0000000000..b976e5d702 --- /dev/null +++ b/Resources/Locale/en-US/light/components/emergency-light-component.ftl @@ -0,0 +1,5 @@ +emergency-light-component-on-examine = The battery indicator displays: {$batteryStateText}. +emergency-light-component-light-state-full = [color=darkgreen]Full[/color] +emergency-light-component-light-state-empty = [color=darkgreen]Empty[/color] +emergency-light-component-light-state-charging = [color=darkgreen]Charging[/color] +emergency-light-component-light-state-on = [color=darkgreen]On[/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/light/components/handheld-light-component.ftl b/Resources/Locale/en-US/light/components/handheld-light-component.ftl new file mode 100644 index 0000000000..108d5fd60a --- /dev/null +++ b/Resources/Locale/en-US/light/components/handheld-light-component.ftl @@ -0,0 +1,9 @@ +handheld-light-component-on-examine-is-on-message = The light is currently [color=darkgreen]on[/color]. +handheld-light-component-on-examine-is-off-message = The light is currently [color=darkred]off[/color]. +handheld-light-component-cell-missing-message = Cell missing... +handheld-light-component-cell-dead-message = Dead cell... +handheld-light-component-on-state = on +handheld-light-component-off-state = off + +# ToggleLightVerb +toggle-light-verb-get-data-text = Toggle light \ No newline at end of file diff --git a/Resources/Locale/en-US/components/light-replacer-component.ftl b/Resources/Locale/en-US/light/components/light-replacer-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/light-replacer-component.ftl rename to Resources/Locale/en-US/light/components/light-replacer-component.ftl diff --git a/Resources/Locale/en-US/light/components/powered-ligth-component.ftl b/Resources/Locale/en-US/light/components/powered-ligth-component.ftl new file mode 100644 index 0000000000..3a4c7ab4f9 --- /dev/null +++ b/Resources/Locale/en-US/light/components/powered-ligth-component.ftl @@ -0,0 +1 @@ +powered-light-component-burn-hand = You burn your hand! \ No newline at end of file diff --git a/Resources/Locale/en-US/lobby/lobby-state.ftl b/Resources/Locale/en-US/lobby/lobby-state.ftl new file mode 100644 index 0000000000..998eb7bb34 --- /dev/null +++ b/Resources/Locale/en-US/lobby/lobby-state.ftl @@ -0,0 +1,9 @@ +lobby-state-paused = Paused +lobby-state-right-now-question = Right Now? +lobby-state-right-now-confirmation = Right Now +lobby-state-round-start-countdown-text = Rounds Starts In: {$timeLeft} +lobby-state-ready-button-join-state = Join +lobby-state-ready-button-ready-up-state = Ready Up +lobby-state-player-status-not-ready = Not Ready +lobby-state-player-status-ready = Ready +lobby-state-player-status-observer = Observer \ No newline at end of file diff --git a/Resources/Locale/en-US/lobby/ui/lobby-character-preview-panel.ftl b/Resources/Locale/en-US/lobby/ui/lobby-character-preview-panel.ftl new file mode 100644 index 0000000000..04af8d6be5 --- /dev/null +++ b/Resources/Locale/en-US/lobby/ui/lobby-character-preview-panel.ftl @@ -0,0 +1,3 @@ +lobby-character-preview-panel-header = character +lobby-character-preview-panel-character-setup-button = Customize +lobby-character-preview-panel-unloaded-preferences-label = Your character preferences have not yet loaded, please stand by. \ No newline at end of file diff --git a/Resources/Locale/en-US/machine-linking/components/signal-button-component.ftl b/Resources/Locale/en-US/machine-linking/components/signal-button-component.ftl new file mode 100644 index 0000000000..dd9967534f --- /dev/null +++ b/Resources/Locale/en-US/machine-linking/components/signal-button-component.ftl @@ -0,0 +1,2 @@ +signal-button-component-transmit-signal-success-message = Click +signal-button-component-transmit-signal-no-receivers-message = No receivers connected. \ No newline at end of file diff --git a/Resources/Locale/en-US/machine-linking/components/signal-receiver-component.ftl b/Resources/Locale/en-US/machine-linking/components/signal-receiver-component.ftl new file mode 100644 index 0000000000..ba1fad71c6 --- /dev/null +++ b/Resources/Locale/en-US/machine-linking/components/signal-receiver-component.ftl @@ -0,0 +1,5 @@ +signal-receiver-component-interact-no-transmitter-message = Signal not set. +signal-receiver-component-interact-unlinked = Unlinked. +signal-receiver-component-interact-out-of-range = Out of range. +signal-receiver-component-interact-max-transmitters-limit = Max Transmitters reached! +signal-receiver-component-interact-success = Linked! \ No newline at end of file diff --git a/Resources/Locale/en-US/machine-linking/components/signal-switch-component.ftl b/Resources/Locale/en-US/machine-linking/components/signal-switch-component.ftl new file mode 100644 index 0000000000..cbd46503de --- /dev/null +++ b/Resources/Locale/en-US/machine-linking/components/signal-switch-component.ftl @@ -0,0 +1,4 @@ +signal-switch-component-transmit-no-receivers-connected = No receivers connected. + +# ToggleSwitchVerb +toggle-switch-verb-get-data-text = Toggle Switch \ No newline at end of file diff --git a/Resources/Locale/en-US/machine-linking/components/signal-transmitter-component.ftl b/Resources/Locale/en-US/machine-linking/components/signal-transmitter-component.ftl new file mode 100644 index 0000000000..ed2654f0d5 --- /dev/null +++ b/Resources/Locale/en-US/machine-linking/components/signal-transmitter-component.ftl @@ -0,0 +1 @@ +signal-transmitter-component-get-signal-success = Signal fetched. \ No newline at end of file diff --git a/Resources/Locale/en-US/machine-linking/components/signal-two-way-lever-component.ftl b/Resources/Locale/en-US/machine-linking/components/signal-two-way-lever-component.ftl new file mode 100644 index 0000000000..70c79f0b82 --- /dev/null +++ b/Resources/Locale/en-US/machine-linking/components/signal-two-way-lever-component.ftl @@ -0,0 +1 @@ +signal-two-way-lever-component-next-state-no-receivers-connected = No receivers connected. \ No newline at end of file diff --git a/Resources/Locale/en-US/main-menu/main-menu.ftl b/Resources/Locale/en-US/main-menu/main-menu.ftl new file mode 100644 index 0000000000..6e7bfa3e92 --- /dev/null +++ b/Resources/Locale/en-US/main-menu/main-menu.ftl @@ -0,0 +1,12 @@ +main-menu-invalid-username-with-reason = Invalid username: + {$invalidReason} +main-menu-invalid-username = Invalid username +main-menu-failed-to-connect = Failed to connect: + {$reason} +main-menu-username-label = Username: +main-menu-username-text = Username +main-menu-join-public-server-button = Join Public Server +main-menu-join-public-server-button-tooltip = Cannot connect to public server with a debug build. +main-menu-direct-connect-button = Direct Connect +main-menu-options-button = Options +main-menu-quit-button = Quit \ No newline at end of file diff --git a/Resources/Locale/en-US/medical/components/medical-scanner-component.ftl b/Resources/Locale/en-US/medical/components/medical-scanner-component.ftl new file mode 100644 index 0000000000..3f16bc956b --- /dev/null +++ b/Resources/Locale/en-US/medical/components/medical-scanner-component.ftl @@ -0,0 +1,20 @@ +## Entity + +medical-scanner-component-msg-no-soul = ERROR: Body is completely devoid of soul +medical-scanner-component-msg-soul-broken = ERROR: Soul present, but defunct / departed + +## EnterVerb + +enter-verb-get-data-text = Enter + +## EjectVerb + +eject-verb-get-data-text = Eject + +## UI + +medical-scanner-window-save-button-text = Scan and Save DNA +medical-scanner-window-no-patient-data-text = No patient data. +medical-scanner-window-entity-health-text = {$entityName}'s health: +medical-scanner-window-damage-class-text = {$damageClass}: {$amount} +medical-scanner-window-damage-type-text = {$damageType}: {$amount} diff --git a/Resources/Locale/en-US/menu/configuration.ftl b/Resources/Locale/en-US/menu/configuration.ftl deleted file mode 100644 index 6cad83bcce..0000000000 --- a/Resources/Locale/en-US/menu/configuration.ftl +++ /dev/null @@ -1,2 +0,0 @@ -configuration-menu-confirm = Confirm -configuration-menu-device-title = Device Configuration diff --git a/Resources/Locale/en-US/menu/lathequeue.ftl b/Resources/Locale/en-US/menu/lathequeue.ftl deleted file mode 100644 index d67d4819cd..0000000000 --- a/Resources/Locale/en-US/menu/lathequeue.ftl +++ /dev/null @@ -1 +0,0 @@ -lathequeue-menu-title = Lathe Queue diff --git a/Resources/Locale/en-US/menu/wires.ftl b/Resources/Locale/en-US/menu/wires.ftl deleted file mode 100644 index df876a31e7..0000000000 --- a/Resources/Locale/en-US/menu/wires.ftl +++ /dev/null @@ -1 +0,0 @@ -wires-menu-name-label = Wires diff --git a/Resources/Locale/en-US/metabolism/metabolism-component.ftl b/Resources/Locale/en-US/metabolism/metabolism-component.ftl new file mode 100644 index 0000000000..5baa4cc254 --- /dev/null +++ b/Resources/Locale/en-US/metabolism/metabolism-component.ftl @@ -0,0 +1,3 @@ +metabolism-component-is-comfortable = You feel comfortable +metabolism-component-is-sweating = You are sweating +metabolism-component-is-shivering = You are shivering \ No newline at end of file diff --git a/Resources/Locale/en-US/components/mind-component.ftl b/Resources/Locale/en-US/mind/components/mind-component.ftl similarity index 56% rename from Resources/Locale/en-US/components/mind-component.ftl rename to Resources/Locale/en-US/mind/components/mind-component.ftl index ef042522c5..6c12ec1505 100644 --- a/Resources/Locale/en-US/components/mind-component.ftl +++ b/Resources/Locale/en-US/mind/components/mind-component.ftl @@ -1,6 +1,11 @@ -# MindComponent localization +# MindComponent localization ## Messages displayed when a body is examined and in a certain state comp-mind-examined-catatonic = { CAPITALIZE(SUBJECT($ent)) } { CONJUGATE-BE($ent) } totally catatonic. The stresses of life in deep-space must have been too much for { OBJECT($ent) }. Any recovery is unlikely. comp-mind-examined-dead = { CAPITALIZE(POSS-ADJ($ent)) } soul has departed. comp-mind-examined-ssd = { CAPITALIZE(SUBJECT($ent)) } { CONJUGATE-HAVE($ent) } a blank, absent-minded stare and appears completely unresponsive to anything. { CAPITALIZE(SUBJECT($ent)) } may snap out of it soon. + + +mind-component-no-mind-and-alive-text = {$owner} is totally catatonic. The stresses of life in deep-space must have been too much for them. Any recovery is unlikely. +mind-component-no-mind-and-dead-text = {$owner}'s soul has departed. +mind-component-mind-and-no-session-text = {$owner} has a blank, absent-minded stare and appears completely unresponsive to anything. {$owner} may snap out of it soon. \ No newline at end of file diff --git a/Resources/Locale/en-US/mind/verbs/control-mob-verb.ftl b/Resources/Locale/en-US/mind/verbs/control-mob-verb.ftl new file mode 100644 index 0000000000..3841479bac --- /dev/null +++ b/Resources/Locale/en-US/mind/verbs/control-mob-verb.ftl @@ -0,0 +1 @@ +control-mob-verb-get-data-text = Control Mob \ No newline at end of file diff --git a/Resources/Locale/en-US/mind/verbs/make-sentient-verb.ftl b/Resources/Locale/en-US/mind/verbs/make-sentient-verb.ftl new file mode 100644 index 0000000000..76e05ff6ee --- /dev/null +++ b/Resources/Locale/en-US/mind/verbs/make-sentient-verb.ftl @@ -0,0 +1 @@ +make-sentient-verb-get-data-text = Make Sentient \ No newline at end of file diff --git a/Resources/Locale/en-US/morgue/components/body-bag-entity-storage-component.ftl b/Resources/Locale/en-US/morgue/components/body-bag-entity-storage-component.ftl new file mode 100644 index 0000000000..7d4d4fa753 --- /dev/null +++ b/Resources/Locale/en-US/morgue/components/body-bag-entity-storage-component.ftl @@ -0,0 +1,6 @@ +body-bag-entity-storage-component-on-examine-details = The label reads: {$paper} +body-bag-entity-storage-component-interact-using-already-attached = There's already a label attached. +body-bag-entity-storage-component-interact-using-success = You attach {$entity} to the body bag. + +# RemoveLabelVerb +remove-label-verb-get-data-text = Remove label \ No newline at end of file diff --git a/Resources/Locale/en-US/morgue/components/crematorium-entity-storage-component.ftl b/Resources/Locale/en-US/morgue/components/crematorium-entity-storage-component.ftl new file mode 100644 index 0000000000..96915b468b --- /dev/null +++ b/Resources/Locale/en-US/morgue/components/crematorium-entity-storage-component.ftl @@ -0,0 +1,9 @@ +crematorium-entity-storage-component-on-examine-details-is-burning = The {$owner} is [color=red]active[/color]! +crematorium-entity-storage-component-on-examine-details-has-contents = The content light is [color=green]on[/color], there's something in here. +crematorium-entity-storage-component-on-examine-details-empty = The content light is off, there's nothing in here. +crematorium-entity-storage-component-is-cooking-safety-message = Safety first, not while it's active! +crematorium-entity-storage-component-suicide-message = You cremate yourself! +crematorium-entity-storage-component-suicide-message-others = {$victim} is cremating {$victim}! + +# CremateVerb +cremate-verb-get-data-text = Cremate \ No newline at end of file diff --git a/Resources/Locale/en-US/morgue/components/morgue-entity-storage-component.ftl b/Resources/Locale/en-US/morgue/components/morgue-entity-storage-component.ftl new file mode 100644 index 0000000000..a58533ce8e --- /dev/null +++ b/Resources/Locale/en-US/morgue/components/morgue-entity-storage-component.ftl @@ -0,0 +1,5 @@ +morgue-entity-storage-component-cannot-open-no-space = There's no room for the tray to extend! +morgue-entity-storage-component-on-examine-details-body-has-soul = The content light is [color=green]green[/color], this body might still be saved! +morgue-entity-storage-component-on-examine-details-body-has-no-soul = The content light is [color=red]red[/color], there's a dead body in here! Oh wait... +morgue-entity-storage-component-on-examine-details-has-contents = The content light is [color=yellow]yellow[/color], there's something in here. +morgue-entity-storage-component-on-examine-details-empty = The content light is off, there's nothing in here. \ No newline at end of file diff --git a/Resources/Locale/en-US/node-container/node-container-component.ftl b/Resources/Locale/en-US/node-container/node-container-component.ftl new file mode 100644 index 0000000000..e279d8eb11 --- /dev/null +++ b/Resources/Locale/en-US/node-container/node-container-component.ftl @@ -0,0 +1,3 @@ +node-container-component-on-examine-details-hvpower = It has a connector for [color=orange]HV cables[/color]. +node-container-component-on-examine-details-mvpower = It has a connector for [color=yellow]MV cables[/color]. +node-container-component-on-examine-details-apc = It has a connector for [color=green]APC cables[/color]. \ No newline at end of file diff --git a/Resources/Locale/en-US/nutrition/components/cream-pied-component.ftl b/Resources/Locale/en-US/nutrition/components/cream-pied-component.ftl new file mode 100644 index 0000000000..2322d20162 --- /dev/null +++ b/Resources/Locale/en-US/nutrition/components/cream-pied-component.ftl @@ -0,0 +1,2 @@ +cream-pied-component-on-hit-by-message = You have been creamed by {$thrower}! +cream-pied-component-on-hit-by-message-others = {$owner} has been creamed by {$thrower}! \ No newline at end of file diff --git a/Resources/Locale/en-US/nutrition/components/drink-component.ftl b/Resources/Locale/en-US/nutrition/components/drink-component.ftl new file mode 100644 index 0000000000..97649a551b --- /dev/null +++ b/Resources/Locale/en-US/nutrition/components/drink-component.ftl @@ -0,0 +1,9 @@ +drink-component-on-use-is-empty = {$owner} is empty! +drink-component-on-examine-is-empty = Empty +drink-component-on-examine-is-opened = Opened +drink-component-on-examine-details-text = [color={$colorName}]{$text}[/color] +drink-component-try-use-drink-not-open = Open {$owner} first! +drink-component-try-use-drink-is-empty = {$entity} is empty! +drink-component-try-use-drink-cannot-drink = You can't drink {$owner}! +drink-component-try-use-drink-had-enough = You've had enough {$owner}! +drink-component-try-use-drink-success-slurp = Slurp \ No newline at end of file diff --git a/Resources/Locale/en-US/food.ftl b/Resources/Locale/en-US/nutrition/components/food-component.ftl similarity index 68% rename from Resources/Locale/en-US/food.ftl rename to Resources/Locale/en-US/nutrition/components/food-component.ftl index 1ec7bd92c5..a68cb3c7b3 100644 --- a/Resources/Locale/en-US/food.ftl +++ b/Resources/Locale/en-US/nutrition/components/food-component.ftl @@ -7,3 +7,9 @@ food-you-need-utensil = You need to use a {$utensil} to eat that! # When trying to eat food without the required utensil... but you gotta hold it food-you-need-to-hold-utensil = You need to be holding a {$utensil} to eat that! +food-you-cannot-eat-any-more = You can't eat any more! +food-nom = Nom + +## Entity + +food-component-try-use-food-is-empty = {$entity} is empty! diff --git a/Resources/Locale/en-US/nutrition/components/sliceable-food-component.ftl b/Resources/Locale/en-US/nutrition/components/sliceable-food-component.ftl new file mode 100644 index 0000000000..4c7056b509 --- /dev/null +++ b/Resources/Locale/en-US/nutrition/components/sliceable-food-component.ftl @@ -0,0 +1 @@ +sliceable-food-component-on-examine-remaining-slices-text = There are {$remainingCount} slices remaining. \ No newline at end of file diff --git a/Resources/Locale/en-US/objectives/conditions/die-condition.ftl b/Resources/Locale/en-US/objectives/conditions/die-condition.ftl new file mode 100644 index 0000000000..d00c3cca35 --- /dev/null +++ b/Resources/Locale/en-US/objectives/conditions/die-condition.ftl @@ -0,0 +1,2 @@ +objective-condition-die-title = Die a glorious death +objective-condition-die-description = Die. \ No newline at end of file diff --git a/Resources/Locale/en-US/objectives/conditions/kill-person-condition.ftl b/Resources/Locale/en-US/objectives/conditions/kill-person-condition.ftl new file mode 100644 index 0000000000..98112d91b0 --- /dev/null +++ b/Resources/Locale/en-US/objectives/conditions/kill-person-condition.ftl @@ -0,0 +1,2 @@ +objective-condition-kill-person-title = Kill {$targetName} +objective-condition-kill-person-description = Do it however you like, just make sure they don't last the shift. \ No newline at end of file diff --git a/Resources/Locale/en-US/objectives/conditions/stay-alive-condition.ftl b/Resources/Locale/en-US/objectives/conditions/stay-alive-condition.ftl new file mode 100644 index 0000000000..5868cda183 --- /dev/null +++ b/Resources/Locale/en-US/objectives/conditions/stay-alive-condition.ftl @@ -0,0 +1,2 @@ +objective-condition-stay-alive-title = Stay alive. +objective-condition-stay-alive-description = Survive this shift, we need you for another assignment. \ No newline at end of file diff --git a/Resources/Locale/en-US/objectives/conditions/steal-condition.ftl b/Resources/Locale/en-US/objectives/conditions/steal-condition.ftl new file mode 100644 index 0000000000..cb24e842df --- /dev/null +++ b/Resources/Locale/en-US/objectives/conditions/steal-condition.ftl @@ -0,0 +1,2 @@ +objective-condition-steal-title = Steal {$amount}{$itemName} +objective-condition-steal-description = We need you to steal {$itemName}. Don't get caught. \ No newline at end of file diff --git a/Resources/Locale/en-US/components/paper-component.ftl b/Resources/Locale/en-US/paper/paper-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/paper-component.ftl rename to Resources/Locale/en-US/paper/paper-component.ftl diff --git a/Resources/Locale/en-US/particle-accelerator/components/particle-accelerator-control-box-component.ftl b/Resources/Locale/en-US/particle-accelerator/components/particle-accelerator-control-box-component.ftl new file mode 100644 index 0000000000..9b600e7951 --- /dev/null +++ b/Resources/Locale/en-US/particle-accelerator/components/particle-accelerator-control-box-component.ftl @@ -0,0 +1 @@ +particle-accelerator-control-box-component-wires-update-limiter-on-pulse = The control box makes a whirring noise. \ No newline at end of file diff --git a/Resources/Locale/en-US/particle-accelerator/components/ui/particle-accelerator-control-menu.ftl b/Resources/Locale/en-US/particle-accelerator/components/ui/particle-accelerator-control-menu.ftl new file mode 100644 index 0000000000..022ce3087c --- /dev/null +++ b/Resources/Locale/en-US/particle-accelerator/components/ui/particle-accelerator-control-menu.ftl @@ -0,0 +1,16 @@ +particle-accelerator-control-menu-on-button = On +particle-accelerator-control-menu-off-button = Off +particle-accelerator-control-menu-service-manual-reference = Refer to p.132 of service manual +particle-accelerator-control-menu-device-version-label = Mark 2 Particle Accelerator +particle-accelerator-control-menu-power-label = Power: +particle-accelerator-control-menu-strength-label = Strength: +particle-accelerator-control-menu-alarm-control = PARTICLE STRENGTH + LIMITER FAILURE +particle-accelerator-control-menu-scan-parts-button = Scan Parts +particle-accelerator-control-menu-check-containment-field-warning = Ensure containment field is active before operation +particle-accelerator-control-menu-foo-bar-baz = FOO-BAR-BAZ +particle-accelerator-control-menu-status-label = Status: {$status} +particle-accelerator-control-menu-status-operational = Operational +particle-accelerator-control-menu-status-incomplete = Incomplete +particle-accelerator-control-menu-draw-not-available = Draw: N/A +particle-accelerator-control-menu-draw = Draw: {$watts}/{lastReceive} \ No newline at end of file diff --git a/Resources/Locale/en-US/pda/pda-component.ftl b/Resources/Locale/en-US/pda/pda-component.ftl new file mode 100644 index 0000000000..e741b3ef63 --- /dev/null +++ b/Resources/Locale/en-US/pda/pda-component.ftl @@ -0,0 +1,37 @@ + +### UI + +comp-pda-ui-try-insert-id-card-no-hands = You have no hands. +comp-pda-ui-try-insert-pen-no-hands = You have no hands. + +# For the PDA screen +comp-pda-ui = ID: [color=white]{$Owner}[/color], [color=yellow]{$JobTitle}[/color] + +comp-pda-ui-blank = ID: + +comp-pda-ui-owner = Owner: [color=white]{$ActualOwnerName}[/color] + +pda-bound-user-interface-insufficient-funds-popup = Insufficient funds! + +pda-bound-user-interface-tc-balance-popup = TC Balance: [color={$weightedColor}]{$balance}[/color] + +pda-bound-user-interface-main-menu-tab-title = Main Menu + +pda-bound-user-interface-uplink-tab-title = Uplink + +comp-pda-ui-menu-title = PDA + +comp-pda-ui-eject-id-button = Eject ID + +comp-pda-ui-eject-pen-button = Eject Pen + +comp-pda-ui-toggle-flashlight-button = Toggle Flashlight + +# EjectIDVerb +eject-id-verb-get-data-text = Eject ID + +# EjectPenVerb +eject-pen-verb-get-data-text = Eject Pen + +# ToggleFlashlightVerb +toggle-flashlight-verb-get-data-text = Toggle flashlight \ No newline at end of file diff --git a/Resources/Locale/en-US/plants/component/potted-plant-hide-component.ftl b/Resources/Locale/en-US/plants/component/potted-plant-hide-component.ftl new file mode 100644 index 0000000000..698dc780b6 --- /dev/null +++ b/Resources/Locale/en-US/plants/component/potted-plant-hide-component.ftl @@ -0,0 +1 @@ +potted-plant-hide-component-interact-hand-got-no-item-message = You root around in the roots. \ No newline at end of file diff --git a/Resources/Locale/en-US/pointing/pointing-verb.ftl b/Resources/Locale/en-US/pointing/pointing-verb.ftl new file mode 100644 index 0000000000..300a5c01b2 --- /dev/null +++ b/Resources/Locale/en-US/pointing/pointing-verb.ftl @@ -0,0 +1 @@ +pointing-verb-get-data-text = Point at \ No newline at end of file diff --git a/Resources/Locale/en-US/power-cell/components/power-cell-component.ftl b/Resources/Locale/en-US/power-cell/components/power-cell-component.ftl new file mode 100644 index 0000000000..f1406c477b --- /dev/null +++ b/Resources/Locale/en-US/power-cell/components/power-cell-component.ftl @@ -0,0 +1 @@ +power-cell-component-examine-details = The charge indicator reads {$currentCharge} %. \ No newline at end of file diff --git a/Resources/Locale/en-US/power-cell/components/power-cell-slot-component.ftl b/Resources/Locale/en-US/power-cell/components/power-cell-slot-component.ftl new file mode 100644 index 0000000000..80bb8f71a5 --- /dev/null +++ b/Resources/Locale/en-US/power-cell/components/power-cell-slot-component.ftl @@ -0,0 +1,5 @@ +power-cell-slot-component-no-cell = No cell +power-cell-slot-component-eject-cell = Eject cell +power-cell-slot-component-small-size-shorthand = S +power-cell-slot-component-medium-size-shorthand = M +power-cell-slot-component-large-size-shorthand = L \ No newline at end of file diff --git a/Resources/Locale/en-US/power/components/base-charger.ftl b/Resources/Locale/en-US/power/components/base-charger.ftl new file mode 100644 index 0000000000..d30fbbbf0e --- /dev/null +++ b/Resources/Locale/en-US/power/components/base-charger.ftl @@ -0,0 +1 @@ +base-charger-on-interact-using-fail = Unable to insert capacitor \ No newline at end of file diff --git a/Resources/Locale/en-US/power/components/power-receiver-component.ftl b/Resources/Locale/en-US/power/components/power-receiver-component.ftl new file mode 100644 index 0000000000..a3d81c4013 --- /dev/null +++ b/Resources/Locale/en-US/power/components/power-receiver-component.ftl @@ -0,0 +1,11 @@ +power-receiver-component-on-examine-main = It appears to be {$stateText}. +power-receiver-component-on-examine-powered = [color=darkgreen]powered[/color] +power-receiver-component-on-examine-unpowered = [color=darkred]un-powered[/color] + +## InsertVerb + +insert-verb-get-data-text = Insert {$itemName} + +## EjectVerb + +eject-verb-get-data-text = Eject {$containerName} \ No newline at end of file diff --git a/Resources/Locale/en-US/prefs.ftl b/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl similarity index 99% rename from Resources/Locale/en-US/prefs.ftl rename to Resources/Locale/en-US/preferences/humanoid-character-profile.ftl index 2e518bc9a5..800da35ba5 100644 --- a/Resources/Locale/en-US/prefs.ftl +++ b/Resources/Locale/en-US/preferences/humanoid-character-profile.ftl @@ -1,4 +1,3 @@ - ### UI # Displayed in the Character prefs window diff --git a/Resources/Locale/en-US/preferences/ui/character-setup-gui.ftl b/Resources/Locale/en-US/preferences/ui/character-setup-gui.ftl new file mode 100644 index 0000000000..4842141bb5 --- /dev/null +++ b/Resources/Locale/en-US/preferences/ui/character-setup-gui.ftl @@ -0,0 +1,6 @@ +character-setup-gui-character-setup-label = Character setup +character-setup-gui-character-setup-save-button = Save +character-setup-gui-character-setup-close-button = Close +character-setup-gui-create-new-character-button = Create new slot... +character-setup-gui-create-new-character-button-tooltip = A maximum of {$maxCharacters} characters are allowed. +character-setup-gui-character-picker-button-delete-button = Delete \ No newline at end of file diff --git a/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl b/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl new file mode 100644 index 0000000000..1c4cac4048 --- /dev/null +++ b/Resources/Locale/en-US/preferences/ui/humanoid-profile-editor.ftl @@ -0,0 +1,34 @@ +humanoid-profile-editor-randomize-everything-button = Randomize everything +humanoid-profile-editor-name-label = Name: +humanoid-profile-editor-name-random-button = Randomize +humanoid-profile-editor-appearance-tab = Appearance +humanoid-profile-editor-sex-label = Sex: +humanoid-profile-editor-sex-male-button = Male +humanoid-profile-editor-sex-female-button = Female +humanoid-profile-editor-age-label = Age: +humanoid-profile-editor-pronouns-label = Pronouns: +humanoid-profile-editor-pronouns-male-text = He / Him +humanoid-profile-editor-pronouns-female-text = She / Her +humanoid-profile-editor-pronouns-epicene-text = They / Them +humanoid-profile-editor-pronouns-neuter-text = It / It +humanoid-profile-editor-import-button = Import +humanoid-profile-editor-export-button = Export +humanoid-profile-editor-save-button = Save +humanoid-profile-editor-clothing-label = Clothing: +humanoid-profile-editor-backpack-label = Backpack: +humanoid-profile-editor-eyes-label = Eye color: +humanoid-profile-editor-jobs-tab = Jobs +humanoid-profile-editor-preference-unavailable-stay-in-lobby-button = Stay in lobby if preference unavailable. +humanoid-profile-editor-preference-unavailable-spawn-as-overflow-button = Be an {$overflowJob} if preference unavailable. +humanoid-profile-editor-preference-jumpsuit = Jumpsuit +humanoid-profile-editor-preference-jumpskirt = Jumpskirt +humanoid-profile-editor-preference-backpack = Backpack +humanoid-profile-editor-preference-satchel = Satchel +humanoid-profile-editor-preference-duffelbag = Duffelbag +humanoid-profile-editor-jobs-amount-in-department-tooltip = Jobs in the {$departmentName} department +humanoid-profile-editor-department-jobs-label = {$departmentName} jobs +humanoid-profile-editor-antags-tab = Antags +humanoid-profile-editor-job-priority-high-button = High +humanoid-profile-editor-job-priority-medium-button = Medium +humanoid-profile-editor-job-priority-low-button = Low +humanoid-profile-editor-job-priority-never-button = Never \ No newline at end of file diff --git a/Resources/Locale/en-US/entities/barricades.ftl b/Resources/Locale/en-US/prototypes/barricades.ftl similarity index 100% rename from Resources/Locale/en-US/entities/barricades.ftl rename to Resources/Locale/en-US/prototypes/barricades.ftl diff --git a/Resources/Locale/en-US/entities/emitter.ftl b/Resources/Locale/en-US/prototypes/emitter.ftl similarity index 100% rename from Resources/Locale/en-US/entities/emitter.ftl rename to Resources/Locale/en-US/prototypes/emitter.ftl diff --git a/Resources/Locale/en-US/entities/gas-tanks.ftl b/Resources/Locale/en-US/prototypes/gas-tanks.ftl similarity index 100% rename from Resources/Locale/en-US/entities/gas-tanks.ftl rename to Resources/Locale/en-US/prototypes/gas-tanks.ftl diff --git a/Resources/Locale/en-US/entities/solar_panels.ftl b/Resources/Locale/en-US/prototypes/solar_panels.ftl similarity index 100% rename from Resources/Locale/en-US/entities/solar_panels.ftl rename to Resources/Locale/en-US/prototypes/solar_panels.ftl diff --git a/Resources/Locale/en-US/pulling/pullable-component.ftl b/Resources/Locale/en-US/pulling/pullable-component.ftl new file mode 100644 index 0000000000..b9d076404d --- /dev/null +++ b/Resources/Locale/en-US/pulling/pullable-component.ftl @@ -0,0 +1,4 @@ +## PullingVerb + +pulling-verb-get-data-text = Pull +pulling-verb-get-data-text-stop-pulling = Stop pulling \ No newline at end of file diff --git a/Resources/Locale/en-US/radio/components/handheld-radio-component.ftl b/Resources/Locale/en-US/radio/components/handheld-radio-component.ftl new file mode 100644 index 0000000000..8faf20c864 --- /dev/null +++ b/Resources/Locale/en-US/radio/components/handheld-radio-component.ftl @@ -0,0 +1,4 @@ +handheld-radio-component-on-use = The radio is now {$radioState}. +handheld-radio-component-on-examine = It is set to broadcast over the {$frequency} frequency. +handheld-radio-component-on-state = on +handheld-radio-component-off-state = off \ No newline at end of file diff --git a/Resources/Locale/en-US/rcd/components/rcd-ammo-component.ftl b/Resources/Locale/en-US/rcd/components/rcd-ammo-component.ftl new file mode 100644 index 0000000000..705f8fdc5c --- /dev/null +++ b/Resources/Locale/en-US/rcd/components/rcd-ammo-component.ftl @@ -0,0 +1,3 @@ +rcd-ammo-component-on-examine-text = It holds {$ammo} charges. +rcd-ammo-component-after-interact-full-text = The RCD is full! +rcd-ammo-component-after-interact-refilled-text = You refill the RCD. \ No newline at end of file diff --git a/Resources/Locale/en-US/rcd/components/rcd-component.ftl b/Resources/Locale/en-US/rcd/components/rcd-component.ftl new file mode 100644 index 0000000000..a1671fa7f9 --- /dev/null +++ b/Resources/Locale/en-US/rcd/components/rcd-component.ftl @@ -0,0 +1,21 @@ + +### UI + +# Shown when an RCD is examined in details range +rcd-component-examine-detail-count = It's currently on {$mode} mode, and holds {$ammoCount -> + *[zero] no charges. + [one] one charge. + [other] {$ammoCount} charges. +} + +### Interaction Messages + +# Shown when changing RCD Mode +rcd-component-change-mode = The RCD is now set to {$mode} mode. + +rcd-component-no-ammo-message = The RCD is out of ammo! +rcd-component-tile-obstructed-message = That tile is obstructed! +rcd-component-deconstruct-target-not-on-whitelist-message = You can't deconstruct that! +rcd-component-cannot-build-floor-tile-not-empty-message = You can only build a floor on space! +rcd-component-cannot-build-wall-tile-not-empty-message = You cannot build a wall on space! +rcd-component-cannot-build-airlock-tile-not-empty-message = Cannot build an airlock on space! \ No newline at end of file diff --git a/Resources/Locale/en-US/recycling/components/recycler-component.ftl b/Resources/Locale/en-US/recycling/components/recycler-component.ftl new file mode 100644 index 0000000000..b434a918f0 --- /dev/null +++ b/Resources/Locale/en-US/recycling/components/recycler-component.ftl @@ -0,0 +1,4 @@ +## RecyclerComponent + +recycler-component-suicide-message-others = {$victim} tries to recycle {$victim}! +recycler-component-suicide-message = You recycle yourself! \ No newline at end of file diff --git a/Resources/Locale/en-US/components/repairable-component.ftl b/Resources/Locale/en-US/repairable/repairable-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/repairable-component.ftl rename to Resources/Locale/en-US/repairable/repairable-component.ftl diff --git a/Resources/Locale/en-US/research/components/research-client-component.ftl b/Resources/Locale/en-US/research/components/research-client-component.ftl new file mode 100644 index 0000000000..9a4382103c --- /dev/null +++ b/Resources/Locale/en-US/research/components/research-client-component.ftl @@ -0,0 +1,2 @@ +research-client-server-selection-menu-title = Research Server Selection +research-client-server-selection-menu-server-entry-text = ID: {$id} || {$serverName} \ No newline at end of file diff --git a/Resources/Locale/en-US/research/components/research-console-component.ftl b/Resources/Locale/en-US/research/components/research-console-component.ftl new file mode 100644 index 0000000000..8666390739 --- /dev/null +++ b/Resources/Locale/en-US/research/components/research-console-component.ftl @@ -0,0 +1,12 @@ +## UI + +research-console-menu-title = R&D Console +research-console-menu-research-points-text = Research Points: {$points} +research-console-menu-points-per-second-text = Points per Second {$pointsPerSecond} +research-console-menu-server-selection-button = Server list +research-console-menu-server-sync-button = Sync +research-console-menu-server-unlock-button = Unlock +research-console-menu-title = R&D Console +research-console-menu-title = R&D Console +research-console-tech-requirements-none = No technology requirements. +research-console-tech-requirements-prototype-name = Requires: {$prototypeName} \ No newline at end of file diff --git a/Resources/Locale/en-US/rotation/components/flippable-component.ftl b/Resources/Locale/en-US/rotation/components/flippable-component.ftl new file mode 100644 index 0000000000..cfeb19eeae --- /dev/null +++ b/Resources/Locale/en-US/rotation/components/flippable-component.ftl @@ -0,0 +1,5 @@ +# FlippableComponent +flippable-component-try-flip-is-stuck = It's stuck. + +# FlippableVerb +flippable-verb-get-data-text = Flip \ No newline at end of file diff --git a/Resources/Locale/en-US/rotation/components/rotatable-component.ftl b/Resources/Locale/en-US/rotation/components/rotatable-component.ftl new file mode 100644 index 0000000000..3c373f130a --- /dev/null +++ b/Resources/Locale/en-US/rotation/components/rotatable-component.ftl @@ -0,0 +1,8 @@ +# RotatableComponenet +rotatable-component-try-rotate-stuck = It's stuck. + +# RotateVerb +rotate-verb-get-data-text = Rotate clockwise + +# RotateCounterVerb +rotate-counter-verb-get-data-text = Rotate counter-clockwise diff --git a/Resources/Locale/en-US/round-end/round-end-summary-window.ftl b/Resources/Locale/en-US/round-end/round-end-summary-window.ftl new file mode 100644 index 0000000000..52c38d3e64 --- /dev/null +++ b/Resources/Locale/en-US/round-end/round-end-summary-window.ftl @@ -0,0 +1,7 @@ +round-end-summary-window-title = Round End Summary +round-end-summary-window-round-end-summary-tab-title = Round Information +round-end-summary-window-player-manifesto-tab-title = Player Manifesto +round-end-summary-window-gamemode-name-label = Round of [color=white]{$gamemode}[/color] has ended. +round-end-summary-window-duration-label = It lasted for [color=yellow]{$hours} hours, {$minutes} minutes, and {$seconds} seconds. +round-end-summary-window-player-info-if-observer-text = [color=gray]{$playerOOCName}[/color] was [color=lightblue]{$playerICName}[/color], an observer. +round-end-summary-window-player-info-if-not-observer-text = [color=gray]{$playerOOCName}[/color] was [color={$icNameColor}]{$playerICName}[/color] playing role of [color=orange]{$playerRole}[/color]. \ No newline at end of file diff --git a/Resources/Locale/en-US/round-end/round-end-system.ftl b/Resources/Locale/en-US/round-end/round-end-system.ftl new file mode 100644 index 0000000000..7b74c65fba --- /dev/null +++ b/Resources/Locale/en-US/round-end/round-end-system.ftl @@ -0,0 +1,5 @@ +## RoundEndSystem + +round-end-system-shuttle-called-announcement = An emergency shuttle has been sent. ETA: {$minutes} minutes. +round-end-system-shuttle-recalled-announcement = The emergency shuttle has been recalled. +round-end-system-round-restart-eta-announcement = Restarting the round in {$seconds} seconds... \ No newline at end of file diff --git a/Resources/Locale/en-US/sandbox/sandbox-manager.ftl b/Resources/Locale/en-US/sandbox/sandbox-manager.ftl new file mode 100644 index 0000000000..7f8c72d6f6 --- /dev/null +++ b/Resources/Locale/en-US/sandbox/sandbox-manager.ftl @@ -0,0 +1,14 @@ +sandbox-window-title = Sandbox Panel +sandbox-window-respawn-button = Respawn +sandbox-window-spawn-entities-button = Spawn Entities +sandbox-window-spawn-tiles-button = Spawn Tiles +sandbox-window-grant-full-access-button = Grant Full Access +sandbox-window-ghost-button = Ghost +sandbox-window-toggle-lights-button = Toggle Lights +sandbox-window-toggle-fov-button = Toggle FOV +sandbox-window-toggle-shadows-button = Toggle Shadows +sandbox-window-toggle-subfloor-button = Toggle Subfloor +sandbox-window-toggle-suicide-button = Suicide +sandbox-window-show-spawns-button = Shows Spawns +sandbox-window-show-bb-button = Show BB +sandbox-window-link-machines-button = Link machines \ No newline at end of file diff --git a/Resources/Locale/en-US/shell.ftl b/Resources/Locale/en-US/shell.ftl new file mode 100644 index 0000000000..371e12585b --- /dev/null +++ b/Resources/Locale/en-US/shell.ftl @@ -0,0 +1,33 @@ +### for technical and/or system messages + +## General + +shell-server-cannot = Server cannot do this. +shell-command-success = Command successful +shell-invalid-command = Invalid command. +shell-invalid-command-specific = Invalid {commandName} command. +shell-cannot-run-command-from-server = You cannot run this command from the server. +shell-only-players-can-run-this-command = Only players can run this command. + +## Arguments + +shell-need-exactly-one-argument = Need exactly one argument. +shell-wrong-arguments-number-need-specific = Need {$properAmount} arguments, there were {$currentAmount}. +shell-argument-must-be-number = Argument must be a number. +shell-wrong-arguments-number = Wrong number of arguments. +shell-need-between-arguments = Need {$lower} to {$upper} arguments! + +## Guards + +shell-entity-is-not-mob = Target entity is not a mob! +shell-invalid-entity-id = Invalid entity ID. +shell-invalid-entity-uid = {$uid} is not a valid entity uid +shell-entity-uid-must-be-number = EntityUid must be a number. +shell-could-not-find-entity = Could not find entity {$entity} +shell-could-not-find-entity-with-uid = Could not find entity with uid {$uid} +shell-entity-with-uid-lacks-component = Entity with uid {$uid} doesn't have a {$componentName} component +shell-invalid-color-hex = Invalid color hex! +shell-target-player-does-not-exist = Target player does not exist! +shell-target-entity-does-not-have-message = Target entity does not have a(n) {$missing}! + + diff --git a/Resources/Locale/en-US/components/emitter-component.ftl b/Resources/Locale/en-US/singularity/components/emitter-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/emitter-component.ftl rename to Resources/Locale/en-US/singularity/components/emitter-component.ftl diff --git a/Resources/Locale/en-US/components/radiation-collector-component.ftl b/Resources/Locale/en-US/singularity/components/radiation-collector-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/radiation-collector-component.ftl rename to Resources/Locale/en-US/singularity/components/radiation-collector-component.ftl diff --git a/Resources/Locale/en-US/components/stack-component.ftl b/Resources/Locale/en-US/stack/stack-component.ftl similarity index 99% rename from Resources/Locale/en-US/components/stack-component.ftl rename to Resources/Locale/en-US/stack/stack-component.ftl index 17ec78a34e..cce1fea47e 100644 --- a/Resources/Locale/en-US/components/stack-component.ftl +++ b/Resources/Locale/en-US/stack/stack-component.ftl @@ -1,4 +1,3 @@ - ### UI # Shown when a stack is examined in details range diff --git a/Resources/Locale/en-US/station-events/events/power-grid-check.ftl b/Resources/Locale/en-US/station-events/events/power-grid-check.ftl new file mode 100644 index 0000000000..b42dbd19db --- /dev/null +++ b/Resources/Locale/en-US/station-events/events/power-grid-check.ftl @@ -0,0 +1,4 @@ +## PowerGridCheck + +station-event-power-grid-check-start-announcement = Abnormal activity detected in the station's powernet. As a precautionary measure, the station's power will be shut off for an indeterminate duration. +station-event-power-grid-check-end-announcement = Power has been restored to the station. We apologize for the inconvenience. \ No newline at end of file diff --git a/Resources/Locale/en-US/station-events/events/radiation-storm.ftl b/Resources/Locale/en-US/station-events/events/radiation-storm.ftl new file mode 100644 index 0000000000..c8f07c1b2f --- /dev/null +++ b/Resources/Locale/en-US/station-events/events/radiation-storm.ftl @@ -0,0 +1,4 @@ +## RadiationStorm + +station-event-radiation-storm-start-announcement = High levels of radiation detected near the station. Evacuate any areas containing abnormal green energy fields. +station-event-radiation-storm-end-announcement = The radiation threat has passed. Please return to your workplaces. \ No newline at end of file diff --git a/Resources/Locale/en-US/station-events/station-event-command.ftl b/Resources/Locale/en-US/station-events/station-event-command.ftl new file mode 100644 index 0000000000..aa129904aa --- /dev/null +++ b/Resources/Locale/en-US/station-events/station-event-command.ftl @@ -0,0 +1,19 @@ +station-event-command-description = Provides admin control to station events +station-event-command-help-text = events <running/list/pause/resume/stop/run <eventName/random>> + running: return the current running event + list: return all event names that can be run + pause: stop all random events from running and any one currently running + resume: allow random events to run again + run <eventName/random>: start a particular event now; <eventName> is case-insensitive and not localized +station-event-command-running-help-text = running: return the current running event +station-event-command-list-help-text = list: return all event names that can be run +station-event-command-pause-help-text = pause: stop all random events from running and any one currently running +station-event-command-resume-help-text = resume: allow random events to run again +station-event-command-run-help-text = run <eventName/random>: start a particular event now; <eventName> is case-insensitive and not localized +station-event-command-no-event-running-message = No station event running +station-event-command-event-list = Random + {$otherEvents} +station-event-command-events-paused-message = Station events paused +station-event-command-events-already-paused-message = Station events are already paused +station-event-command-events-resumed-message = Station events resumed +station-event-command-events-already-running-message = Station events are already running diff --git a/Resources/Locale/en-US/station-events/station-event-system.ftl b/Resources/Locale/en-US/station-events/station-event-system.ftl new file mode 100644 index 0000000000..a8b6d41846 --- /dev/null +++ b/Resources/Locale/en-US/station-events/station-event-system.ftl @@ -0,0 +1,7 @@ +## StationEventSystem + +station-event-system-run-event = Running event {$eventName} +station-event-system-run-event-no-event-name = No event named: {$eventName} +station-event-system-run-random-event-no-valid-events = No valid events available +station-event-system-stop-event-no-running-event = No event running currently +station-event-system-stop-event = Stopped event {$eventName} \ No newline at end of file diff --git a/Resources/Locale/en-US/storage/components/entity-storage-component.ftl b/Resources/Locale/en-US/storage/components/entity-storage-component.ftl new file mode 100644 index 0000000000..0d96080690 --- /dev/null +++ b/Resources/Locale/en-US/storage/components/entity-storage-component.ftl @@ -0,0 +1,8 @@ +entity-storage-component-welded-shut-message = It's welded completely shut! +entity-storage-component-already-contains-user-message = It's too Cramped! + +## OpenToggleVerb + +open-toggle-verb-close = Close +open-toggle-verb-open = Open +open-toggle-verb-welded-shut-message = {$verb} (welded shut) \ No newline at end of file diff --git a/Resources/Locale/en-US/storage/components/secret-stash-component.ftl b/Resources/Locale/en-US/storage/components/secret-stash-component.ftl new file mode 100644 index 0000000000..57b79b748d --- /dev/null +++ b/Resources/Locale/en-US/storage/components/secret-stash-component.ftl @@ -0,0 +1,7 @@ +### Secret stash component. Stuff like potted plants, comfy chair cushions, etc... + +comp-secret-stash-secret-part-name = {$name} +comp-secret-stash-action-hide-success = You hide { THE($item) } in { $this } +comp-secret-stash-action-hide-container-not-empty = There's already something in here?! +comp-secret-stash-action-hide-item-too-big = {$item} is too big to fit in {$stash}! +comp-secret-stash-action-get-item-found-something = There was something inside {$stash}! \ No newline at end of file diff --git a/Resources/Locale/en-US/storage/components/secure-entity-storage-component.ftl b/Resources/Locale/en-US/storage/components/secure-entity-storage-component.ftl new file mode 100644 index 0000000000..02082f2dcc --- /dev/null +++ b/Resources/Locale/en-US/storage/components/secure-entity-storage-component.ftl @@ -0,0 +1,6 @@ +secure-entity-storage-component-not-allowed-message = Access denied + +## ToggleLockVerb + +toggle-lock-verb-unlock = Unlock +toggle-lock-verb-lock = Lock \ No newline at end of file diff --git a/Resources/Locale/en-US/strip/strippable-component.ftl b/Resources/Locale/en-US/strip/strippable-component.ftl new file mode 100644 index 0000000000..af6b84b473 --- /dev/null +++ b/Resources/Locale/en-US/strip/strippable-component.ftl @@ -0,0 +1,16 @@ +strippable-component-not-holding-anything = You aren't holding anything! +strippable-component-cannot-drop = You can't drop that! +strippable-component-item-slot-occupied-message = {$owner} already has something there! +strippable-component-cannot-equip-message = {$owner} cannot equip that there! +strippable-component-cannot-put-message = {$owner} cannot put that there! +strippable-component-item-slot-free-message = {$owner} has nothing there! +strippable-component-cannot-unequip-message = {$owner} cannot unequip that! +strippable-component-cannot-drop-message = {$owner} cannot drop that! + +# StripVerb +strip-verb-get-data-text = Strip + +## UI + +strippable-bound-user-interface-stripping-menu-title = {ownerName}'s inventory +strippable-bound-user-interface-stripping-menu-handcuffs-button = Restraints \ No newline at end of file diff --git a/Resources/Locale/en-US/components/stunbaton-component.ftl b/Resources/Locale/en-US/stunnable/components/stunbaton-component.ftl similarity index 69% rename from Resources/Locale/en-US/components/stunbaton-component.ftl rename to Resources/Locale/en-US/stunnable/components/stunbaton-component.ftl index 24a17466e4..a20e5ecd69 100644 --- a/Resources/Locale/en-US/components/stunbaton-component.ftl +++ b/Resources/Locale/en-US/stunnable/components/stunbaton-component.ftl @@ -9,3 +9,7 @@ comp-stunbaton-examined-off = The light is currently [color=darkred]off[/color] comp-stunbaton-activated-dead-cell = Dead cell... comp-stunbaton-activated-missing-cell = Missing cell... + +stunbaton-component-no-cell = Cell missing... +stunbaton-component-dead-cell = Dead cell... +stunbaton-component-on-examine = The light is currently [color=darkgreen]on[/color]. \ No newline at end of file diff --git a/Resources/Locale/en-US/stunnable/components/stunnable-component.ftl b/Resources/Locale/en-US/stunnable/components/stunnable-component.ftl new file mode 100644 index 0000000000..671aee2cef --- /dev/null +++ b/Resources/Locale/en-US/stunnable/components/stunnable-component.ftl @@ -0,0 +1,2 @@ +stunnable-component-disarm-success-others = {$source} pushes {$target}! +stunnable-component-disarm-success = You push {$target}! \ No newline at end of file diff --git a/Resources/Locale/en-US/suspicion/roles/suspicion-role-component.ftl b/Resources/Locale/en-US/suspicion/roles/suspicion-role-component.ftl new file mode 100644 index 0000000000..1eb737b616 --- /dev/null +++ b/Resources/Locale/en-US/suspicion/roles/suspicion-role-component.ftl @@ -0,0 +1,3 @@ +suspicion-role-component-role-traitor = traitor +suspicion-role-component-role-innocent = innocent +suspicion-role-component-on-examine-tooltip = They were {$article} [color={$colorName}]{$role}[/color]! \ No newline at end of file diff --git a/Resources/Locale/en-US/gamemodes/suspicion.ftl b/Resources/Locale/en-US/suspicion/roles/suspicion-traitor-role.ftl similarity index 57% rename from Resources/Locale/en-US/gamemodes/suspicion.ftl rename to Resources/Locale/en-US/suspicion/roles/suspicion-traitor-role.ftl index 2b2e748d55..7c2623196f 100644 --- a/Resources/Locale/en-US/gamemodes/suspicion.ftl +++ b/Resources/Locale/en-US/suspicion/roles/suspicion-traitor-role.ftl @@ -1,13 +1,3 @@ - -### UI - -# Shown when clicking your Role Button in Suspicion -suspicion-ally-count-display = {$allyCount -> - *[zero] You have no allies - [one] Your ally is {$allyNames} - [other] Your allies are {$allyNames} -} - # Shown when greeted with the Suspicion role suspicion-role-greeting = You're a {$roleName}! @@ -18,5 +8,4 @@ suspicion-objective = Objective: {$objectiveText} suspicion-partners-in-crime = {$partnersCount -> *[zero] You're on your own. Good luck! [one] Your partner in crime is {$partnerNames}. - [other] Your partners in crime are {$partnerNames}. -} \ No newline at end of file + [other] Your partners in crime are {$partnerNames}. \ No newline at end of file diff --git a/Resources/Locale/en-US/suspicion/suspicion-gui.ftl b/Resources/Locale/en-US/suspicion/suspicion-gui.ftl new file mode 100644 index 0000000000..fdbd400b77 --- /dev/null +++ b/Resources/Locale/en-US/suspicion/suspicion-gui.ftl @@ -0,0 +1,8 @@ +## SuspicionGui.xaml.cs + +# Shown when clicking your Role Button in Suspicion +suspicion-ally-count-display = {$allyCount -> + *[zero] You have no allies + [one] Your ally is {$allyNames} + [other] Your allies are {$allyNames} +} \ No newline at end of file diff --git a/Resources/Locale/en-US/suspicion/traitor-overlay.ftl b/Resources/Locale/en-US/suspicion/traitor-overlay.ftl new file mode 100644 index 0000000000..01dc1011a2 --- /dev/null +++ b/Resources/Locale/en-US/suspicion/traitor-overlay.ftl @@ -0,0 +1 @@ +traitor-overlay-traitor-text = Traitor \ No newline at end of file diff --git a/Resources/Locale/en-US/toilet/toilet-component.ftl b/Resources/Locale/en-US/toilet/toilet-component.ftl new file mode 100644 index 0000000000..3f589f78bf --- /dev/null +++ b/Resources/Locale/en-US/toilet/toilet-component.ftl @@ -0,0 +1,7 @@ +## ToiletComponent + +toilet-component-on-examine-found-hidden-item = There is [color=darkgreen]something[/color] inside cistern! +toilet-component-suicide-head-message-others = {$victim} sticks their head into {$owner} and flushes it! +toilet-component-suicide-head-message = You stick your head into {$owner} and flush it! +toilet-component-suicide-message-others = {$victim} bashes themselves with {$owner}! +toilet-component-suicide-message = You bash yourself with {$owner}! \ No newline at end of file diff --git a/Resources/Locale/en-US/tools/components/welder-component.ftl b/Resources/Locale/en-US/tools/components/welder-component.ftl new file mode 100644 index 0000000000..53d01c1641 --- /dev/null +++ b/Resources/Locale/en-US/tools/components/welder-component.ftl @@ -0,0 +1,11 @@ +welder-component-welder-not-lit-message = The welder is turned off! +welder-component-cannot-weld-message = The welder does not have enough fuel for that! +welder-component-no-fuel-message = The welder has no fuel left! +welder-component-on-examine-welder-lit-message = [color=orange]Lit[/color] +welder-component-on-examine-welder-not-lit-message = Not lit +welder-component-on-examine-detailed-message = Fuel: [color={$colorName}]{$fuelLeft}/{$fuelCapacity}[/color]. +welder-component-suicide-lit-others-message = {$victim} welds their every orifice closed! It looks like they are trying to commit suicide! +welder-component-suicide-lit-message = You weld your every orifice closed! +welder-component-suicide-unlit-others-message = {$victim} bashes themselves with the unlit welding torch! +welder-component-suicide-unlit-message = You bash yourself with the unlit welding torch! +welder-component-after-interact-refueled-message = Welder refueled \ No newline at end of file diff --git a/Resources/Locale/en-US/traitor-death-match/components/traitor-death-match-redemption-component.ftl b/Resources/Locale/en-US/traitor-death-match/components/traitor-death-match-redemption-component.ftl new file mode 100644 index 0000000000..a66c7c3d7d --- /dev/null +++ b/Resources/Locale/en-US/traitor-death-match/components/traitor-death-match-redemption-component.ftl @@ -0,0 +1,11 @@ +traitor-death-match-redemption-component-interact-using-main-message = The machine buzzes, and displays: {$secondMessage} +traitor-death-match-redemption-component-interact-using-no-inventory-message = "USER PDA OUT OF RANGE (0039)" +traitor-death-match-redemption-component-interact-using-no-mind-message = "AUTHENTICATION FAILED (0045)" +traitor-death-match-redemption-component-interact-using-no-user-mind-message = "AUTHENTICATION FAILED (0052)" +traitor-death-match-redemption-component-interact-using-no-pda-message = GIVEN PDA IS NOT A PDA (0058)" +traitor-death-match-redemption-component-interact-using-no-pda-owner-message ="GIVEN PDA HAS NO OWNER (0064)" +traitor-death-match-redemption-component-interact-using-pda-different-user-message = "GIVEN PDA OWNED BY USER (0070)" +traitor-death-match-redemption-component-interact-using-no-pda-in-pocket-message = "NO USER PDA IN IDCARD POCKET (0083)" +traitor-death-match-redemption-component-interact-using-user-no-uplink-account-message = "USER PDA HAS NO UPLINK ACCOUNT (0102)" +traitor-death-match-redemption-component-interact-using-victim-no-uplink-account-message = "USER PDA HAS NO UPLINK ACCOUNT (0108)" +traitor-death-match-redemption-component-interact-using-success-message = The machine plays a happy little tune, and displays: "SUCCESS: {$tcAmount} TC TRANSFERRED" \ No newline at end of file diff --git a/Resources/Locale/en-US/transform/verbs/attach-to-grandparent-verb.ftl b/Resources/Locale/en-US/transform/verbs/attach-to-grandparent-verb.ftl new file mode 100644 index 0000000000..17bb0a7d46 --- /dev/null +++ b/Resources/Locale/en-US/transform/verbs/attach-to-grandparent-verb.ftl @@ -0,0 +1 @@ +attach-to-grandparent-verb-get-data-text = Attach to grid \ No newline at end of file diff --git a/Resources/Locale/en-US/transform/verbs/attach-to-grid-verb.ftl b/Resources/Locale/en-US/transform/verbs/attach-to-grid-verb.ftl new file mode 100644 index 0000000000..9d60979a42 --- /dev/null +++ b/Resources/Locale/en-US/transform/verbs/attach-to-grid-verb.ftl @@ -0,0 +1 @@ +attach-to-grid-verb-get-data-text = Attach to grid \ No newline at end of file diff --git a/Resources/Locale/en-US/transform/verbs/attach-to-self-verb.ftl b/Resources/Locale/en-US/transform/verbs/attach-to-self-verb.ftl new file mode 100644 index 0000000000..a6abcd239d --- /dev/null +++ b/Resources/Locale/en-US/transform/verbs/attach-to-self-verb.ftl @@ -0,0 +1 @@ +attach-to-self-verb-get-data-text = Attach to self \ No newline at end of file diff --git a/Resources/Locale/en-US/ui/hud.ftl b/Resources/Locale/en-US/ui/hud.ftl deleted file mode 100644 index 1b272f143d..0000000000 --- a/Resources/Locale/en-US/ui/hud.ftl +++ /dev/null @@ -1,11 +0,0 @@ -### HUD stuff - -## Combat mode -hud-combat-enabled = Combat mode enabled! -hud-combat-disabled = Combat mode disabled. - -## Chat box -hud-chatbox-info = Say something! T to talk, Tab to cycle channels. -hud-chatbox-admin = Admin -hud-chatbox-ooc = OOC -hud-chatbox-console = Console diff --git a/Resources/Locale/en-US/vending-machines/vending-machine-component.ftl b/Resources/Locale/en-US/vending-machines/vending-machine-component.ftl new file mode 100644 index 0000000000..3cd6b38d66 --- /dev/null +++ b/Resources/Locale/en-US/vending-machines/vending-machine-component.ftl @@ -0,0 +1,5 @@ +## VendingMachineComponent + +vending-machine-component-try-eject-invalid-item = Invalid item +vending-machine-component-try-eject-out-of-stock = Out of stock +vending-machine-component-try-eject-access-denied = Access denied \ No newline at end of file diff --git a/Resources/Locale/en-US/verbs/verb-system.ftl b/Resources/Locale/en-US/verbs/verb-system.ftl new file mode 100644 index 0000000000..7265ee1e2d --- /dev/null +++ b/Resources/Locale/en-US/verbs/verb-system.ftl @@ -0,0 +1,2 @@ +verb-system-waiting-on-server-text = Waiting on Server... +verb-system-no-verbs-text = No verbs! \ No newline at end of file diff --git a/Resources/Locale/en-US/ui/voting.ftl b/Resources/Locale/en-US/voting/managers/vote-manager.ftl similarity index 50% rename from Resources/Locale/en-US/ui/voting.ftl rename to Resources/Locale/en-US/voting/managers/vote-manager.ftl index 21960ad7ae..c5e7e09cda 100644 --- a/Resources/Locale/en-US/ui/voting.ftl +++ b/Resources/Locale/en-US/voting/managers/vote-manager.ftl @@ -1,8 +1,8 @@ -### Voting menu stuff - # Displayed as initiator of vote when no user creates the vote ui-vote-initiator-server = The server +## Default.Votes + ui-vote-restart-title = Restart round ui-vote-restart-succeeded = Restart vote succeeded. ui-vote-restart-failed = Restart vote failed (need { TOSTRING($ratio, "P0") }). @@ -13,18 +13,7 @@ ui-vote-gamemode-title = Next gamemode ui-vote-gamemode-tie = Tie for gamemode vote! Picking... { $picked } ui-vote-gamemode-win = { $winner } won the gamemode vote! -ui-vote-created = { $initiator } has called a vote: -ui-vote-button = { $text } ({ $votes }) - -ui-vote-type-restart = Restart round -ui-vote-type-gamemode = Next gamemode - -# Window title of the vote create menu -ui-vote-create-title = Call Vote -# Submit button in the vote create button -ui-vote-create-button = Call Vote -# Hue hue hue -ui-vote-fluff = Powered by Robust™ Anti-Tamper Technology - -# Button text in lobby/escape menu -ui-vote-menu-button = Call vote +mode-traitor = Traitor +mode-extended = Extended +mode-sandbox = Sandbox +mode-suspicion = Suspicion \ No newline at end of file diff --git a/Resources/Locale/en-US/voting/ui/vote-call-menu-button.ftl b/Resources/Locale/en-US/voting/ui/vote-call-menu-button.ftl new file mode 100644 index 0000000000..eee71abf10 --- /dev/null +++ b/Resources/Locale/en-US/voting/ui/vote-call-menu-button.ftl @@ -0,0 +1,2 @@ +# Button text in lobby/escape menu +ui-vote-menu-button = Call vote \ No newline at end of file diff --git a/Resources/Locale/en-US/voting/ui/vote-call-menu.ftl b/Resources/Locale/en-US/voting/ui/vote-call-menu.ftl new file mode 100644 index 0000000000..87b3d60440 --- /dev/null +++ b/Resources/Locale/en-US/voting/ui/vote-call-menu.ftl @@ -0,0 +1,16 @@ +ui-vote-type-restart = Restart round +ui-vote-type-gamemode = Next gamemode + +# Window title of the vote create menu +ui-vote-create-title = Call Vote + +# Submit button in the vote create button +ui-vote-create-button = Call Vote + +# Hue hue hue +ui-vote-fluff = Powered by Robust™ Anti-Tamper Technology + +## Vote menu command + +ui-vote-menu-command-description = Opens the voting menu +ui-vote-menu-command-help-text = Usage: votemenu \ No newline at end of file diff --git a/Resources/Locale/en-US/voting/ui/vote-popup.ftl b/Resources/Locale/en-US/voting/ui/vote-popup.ftl new file mode 100644 index 0000000000..7e8a9f4273 --- /dev/null +++ b/Resources/Locale/en-US/voting/ui/vote-popup.ftl @@ -0,0 +1,2 @@ +ui-vote-created = { $initiator } has called a vote: +ui-vote-button = { $text } ({ $votes }) \ No newline at end of file diff --git a/Resources/Locale/en-US/voting/vote-commands.ftl b/Resources/Locale/en-US/voting/vote-commands.ftl new file mode 100644 index 0000000000..e3dcdeada3 --- /dev/null +++ b/Resources/Locale/en-US/voting/vote-commands.ftl @@ -0,0 +1,37 @@ +## CreateVoteCommand + +create-vote-command-description = Creates a vote +create-vote-command-help = Usage: createvote <'restart'|'preset'> +create-vote-command-cannot-call-vote-now = You can't call a vote right now! +create-vote-command-invalid-vote-type = You can't call a vote right now! + +## CreateCustomCommand + +create-custom-command-description = Creates a custom vote +create-custom-command-help = customvote <title> <option1> <option2> [option3...] +create-custom-command-on-finished-tie = Tie between {$ties}! +create-custom-command-on-finished-win = {$winner} wins! + +## VoteCommand + +vote-command-description = Votes on an active vote +vote-command-help = vote <voteId> <option> +vote-command-cannot-call-vote-now = You can't call a vote right now! +vote-command-on-execute-error-must-be-player = Must be a player +vote-command-on-execute-error-invalid-vote-id = Invalid vote ID +vote-command-on-execute-error-invalid-vote-options = Invalid vote options +vote-command-on-execute-error-invalid-vote = Invalid vote +vote-command-on-execute-error-invalid-option = Invalid option + +## ListVotesCommand + +list-votes-command-description = Lists currently active votes +list-votes-command-help = Usage: listvotes + +## CancelVoteCommand + +cancel-vote-command-description = Cancels an active vote +cancel-vote-command-help = Usage: cancelvote <id> + You can get the ID from the listvotes command. +cancel-vote-command-on-execute-error-invalid-vote-id = Invalid vote ID +cancel-vote-command-on-execute-error-missing-vote-id = Missing ID \ No newline at end of file diff --git a/Resources/Locale/en-US/voting/vote-options.ftl b/Resources/Locale/en-US/voting/vote-options.ftl new file mode 100644 index 0000000000..dffd61b3b5 --- /dev/null +++ b/Resources/Locale/en-US/voting/vote-options.ftl @@ -0,0 +1 @@ +vote-options-server-initiator-text = The server \ No newline at end of file diff --git a/Resources/Locale/en-US/warps/warp-point-component.ftl b/Resources/Locale/en-US/warps/warp-point-component.ftl new file mode 100644 index 0000000000..988c172363 --- /dev/null +++ b/Resources/Locale/en-US/warps/warp-point-component.ftl @@ -0,0 +1 @@ +warp-point-component-on-examine-success = This one's location ID is {$location} \ No newline at end of file diff --git a/Resources/Locale/en-US/weapons/ranged/ammunition/components/ammo-box-component.ftl b/Resources/Locale/en-US/weapons/ranged/ammunition/components/ammo-box-component.ftl new file mode 100644 index 0000000000..50048fb61f --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/ammunition/components/ammo-box-component.ftl @@ -0,0 +1,9 @@ +## AmmoBoxComponent + +ammo-box-component-try-insert-ammo-wrong-caliber = Wrong caliber +ammo-box-component-try-insert-ammo-no-room = No room +ammo-box-component-on-examine-caliber-description = It's a [color=white]{$caliber}[/color] ammo box. +ammo-box-component-on-examine-remaining-ammo-description = It has [color=white]{$ammoLeft}[/color] out of [color=white]{$capacity}[/color] ammo left. + +## DumpVerb +dump-vert-get-data-text = Dump 10 \ No newline at end of file diff --git a/Resources/Locale/en-US/weapons/ranged/ammunition/components/ammo-component.ftl b/Resources/Locale/en-US/weapons/ranged/ammunition/components/ammo-component.ftl new file mode 100644 index 0000000000..aaf77a84dd --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/ammunition/components/ammo-component.ftl @@ -0,0 +1,2 @@ +## AmmoComponent +ammo-component-on-examine = It's [color=white]{$caliber}[/color] ammo. \ No newline at end of file diff --git a/Resources/Locale/en-US/weapons/ranged/ammunition/components/ranged-magazine-component.ftl b/Resources/Locale/en-US/weapons/ranged/ammunition/components/ranged-magazine-component.ftl new file mode 100644 index 0000000000..a233b9a7c0 --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/ammunition/components/ranged-magazine-component.ftl @@ -0,0 +1,4 @@ +## RangedMagazineComponent +ranged-magazine-component-try-insert-ammo-wrong-caliber = Wrong caliber +ranged-magazine-component-try-insert-ammo-is-full = Magazine is full +ranged-magazine-component-on-examine = It's a [color=white]{$magazineType}[/color] magazine of [color=white]{$caliber}[/color] caliber. \ No newline at end of file diff --git a/Resources/Locale/en-US/weapons/ranged/ammunition/components/speed-loader-component.ftl b/Resources/Locale/en-US/weapons/ranged/ammunition/components/speed-loader-component.ftl new file mode 100644 index 0000000000..3d3cc4f99f --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/ammunition/components/speed-loader-component.ftl @@ -0,0 +1,3 @@ +## SpeedLoaderComponent +speed-loader-component-try-insert-ammo-wrong-caliber = Wrong caliber +speed-loader-component-try-insert-ammo-no-room = No room \ No newline at end of file diff --git a/Resources/Locale/en-US/weapons/ranged/barrels/components/bolt-action-barrel-component.ftl b/Resources/Locale/en-US/weapons/ranged/barrels/components/bolt-action-barrel-component.ftl new file mode 100644 index 0000000000..f572404a27 --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/barrels/components/bolt-action-barrel-component.ftl @@ -0,0 +1,16 @@ +## BoltActionBarrelComponent + +bolt-action-barrel-component-bolt-opened = Bolt opened +bolt-action-barrel-component-bolt-closed = Bolt closed +bolt-action-barrel-component-try-insert-bullet-wrong-caliber = Wrong caliber +bolt-action-barrel-component-try-insert-bullet-bolt-closed = Bolt isn't open +bolt-action-barrel-component-try-insert-bullet-no-room = No room +bolt-action-barrel-component-on-examine = It uses [color=white]{$caliber}[/color] ammo. + +## OpenBoltVerb + +open-bolt-verb-get-data-text = Open bolt + +## CloseBoltVerb + +close-bolt-verb-get-data-text = Close bolt \ No newline at end of file diff --git a/Resources/Locale/en-US/weapons/ranged/barrels/components/pump-barrel-action-component.ftl b/Resources/Locale/en-US/weapons/ranged/barrels/components/pump-barrel-action-component.ftl new file mode 100644 index 0000000000..f3d5a73048 --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/barrels/components/pump-barrel-action-component.ftl @@ -0,0 +1,5 @@ +## PumpBarrelComponent + +pump-barrel-component-try-insert-bullet-wrong-caliber = Wrong caliber +pump-barrel-component-try-insert-bullet-no-room = No room +pump-barrel-component-on-examine = It uses [color=white]{$caliber}[/color] ammo. \ No newline at end of file diff --git a/Resources/Locale/en-US/weapons/ranged/barrels/components/revolver-barrel-component.ftl b/Resources/Locale/en-US/weapons/ranged/barrels/components/revolver-barrel-component.ftl new file mode 100644 index 0000000000..17af63039a --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/barrels/components/revolver-barrel-component.ftl @@ -0,0 +1,9 @@ +## RevolverBarrelComponent + +revolver-barrel-component-try-inser-bullet-wrong-caliber = Wrong caliber +revolver-barrel-component-try-inser-bullet-ammo-full = Ammo full + +## SpinRevolverVerb + +spin-revolver-verb-get-data-text = Spin +spin-revolver-verb-on-activate = Spun the cylinder \ No newline at end of file diff --git a/Resources/Locale/en-US/weapons/ranged/barrels/components/server-battery-barrel-component.ftl b/Resources/Locale/en-US/weapons/ranged/barrels/components/server-battery-barrel-component.ftl new file mode 100644 index 0000000000..f4da8608d2 --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/barrels/components/server-battery-barrel-component.ftl @@ -0,0 +1,4 @@ +## EjectCellVerb + +eject-cell-verb-get-data-text = Eject cell +eject-cell-verb-get-data-text-no-cell = No cell \ No newline at end of file diff --git a/Resources/Locale/en-US/weapons/ranged/barrels/components/server-magazine-barrel-component.ftl b/Resources/Locale/en-US/weapons/ranged/barrels/components/server-magazine-barrel-component.ftl new file mode 100644 index 0000000000..3cb9f91102 --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/barrels/components/server-magazine-barrel-component.ftl @@ -0,0 +1,19 @@ +## ServerMagazineBarrelComponent + +server-magazine-barrel-component-cycle-bolt-open = Bolt open +server-magazine-barrel-component-use-entity-bolt-closed = Bolt closed +server-magazine-barrel-component-remove-magazine-bolt-closed = Bolt needs to be open +server-magazine-barrel-component-interact-using-wrong-magazine-type = Wrong magazine type +server-magazine-barrel-component-interact-using-wrong-caliber = Wrong caliber +server-magazine-barrel-component-interact-using-bolt-closed = Need to open bolt first +server-magazine-barrel-component-interact-using-success = Magazine inserted +server-magazine-barrel-component-interact-using-already-holding-magazine = Already holding a magazine +server-magazine-barrel-component-interact-using-ammo-bolt-closed = Cannot insert ammo while bolt is closed +server-magazine-barrel-component-interact-using-ammo-success = Ammo inserted +server-magazine-barrel-component-interact-using-ammo-full = Chamber full +server-magazine-barrel-component-on-examine = It uses [color=white]{$caliber}[/color] ammo. +server-magazine-barrel-component-on-examine-magazine-type = It accepts [color=white]{$magazineType}[/color] magazines. + +## EjectMagazineVerb + +eject-magazine-verb-get-data-text = Eject magazine \ No newline at end of file diff --git a/Resources/Locale/en-US/weapons/ranged/barrels/components/server-ranged-barrel-component.ftl b/Resources/Locale/en-US/weapons/ranged/barrels/components/server-ranged-barrel-component.ftl new file mode 100644 index 0000000000..f95f2137e5 --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/barrels/components/server-ranged-barrel-component.ftl @@ -0,0 +1,5 @@ +## ServerRangedBarrelComponent + +server-ranged-barrel-component-on-examine-fire-rate-safety-description = Its safety is enabled. +server-ranged-barrel-component-on-examine-fire-rate-single-description = It's in single fire mode. +server-ranged-barrel-component-on-examine-fire-rate-automatic-description = It's in automatic fire mode. diff --git a/Resources/Locale/en-US/weapons/ranged/server-ranged-weapon-component.ftl b/Resources/Locale/en-US/weapons/ranged/server-ranged-weapon-component.ftl new file mode 100644 index 0000000000..01b59254ce --- /dev/null +++ b/Resources/Locale/en-US/weapons/ranged/server-ranged-weapon-component.ftl @@ -0,0 +1,3 @@ +## ServerRangedWeaponComponent + +server-ranged-weapon-component-try-fire-clumsy = The gun blows up in your face! \ No newline at end of file diff --git a/Resources/Locale/en-US/components/window-component.ftl b/Resources/Locale/en-US/window/window-component.ftl similarity index 100% rename from Resources/Locale/en-US/components/window-component.ftl rename to Resources/Locale/en-US/window/window-component.ftl diff --git a/Resources/Locale/en-US/wires/components/wires-component.ftl b/Resources/Locale/en-US/wires/components/wires-component.ftl new file mode 100644 index 0000000000..8fafd02718 --- /dev/null +++ b/Resources/Locale/en-US/wires/components/wires-component.ftl @@ -0,0 +1,11 @@ +wires-component-ui-on-receive-message-no-hands = You have no hands. +wires-component-ui-on-receive-message-cannot-reach = You can't reach there! +wires-component-ui-on-receive-message-need-wirecutters = You need to hold a wirecutter in your hand! +wires-component-ui-on-receive-message-cannot-pulse-cut-wire = You can't pulse a wire that's been cut! +wires-component-on-examine-panel-open = The [color=lightgray]maintenance panel[/color] is [color=darkgreen]open[/color]. +wires-component-on-examine-panel-closed = The [color=lightgray]maintenance panel[/color] is [color=darkgreen]closed[/color]. + +## UI + +wires-menu-name-label = Wires +wires-menu-dead-beef-text = DEAD-BEEF