From 97c61e006884bfe00450ccedf25e9899173c74de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Tue, 2 Apr 2024 12:57:55 +0200 Subject: [PATCH] Extract strings from resource renderer. --- OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs | 1 + .../Lint/CheckTranslationReference.cs | 14 ++++++++++++++ .../Traits/World/ResourceRenderer.cs | 10 +++++++++- mods/cnc/languages/rules/en.ftl | 2 ++ mods/cnc/rules/world.yaml | 4 ++-- mods/d2k/languages/rules/en.ftl | 2 ++ mods/d2k/rules/world.yaml | 2 +- mods/ra/languages/rules/en.ftl | 2 ++ mods/ra/rules/world.yaml | 4 ++-- mods/ts/languages/rules/en.ftl | 3 +++ mods/ts/rules/world.yaml | 6 +++--- 11 files changed, 41 insertions(+), 9 deletions(-) diff --git a/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs b/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs index e8d7259531..a518860c2b 100644 --- a/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs +++ b/OpenRA.Mods.Cnc/Traits/World/TSVeinsRenderer.cs @@ -39,6 +39,7 @@ namespace OpenRA.Mods.Cnc.Traits public readonly string Palette = TileSet.TerrainPaletteInternalName; [FieldLoader.Require] + [TranslationReference] [Desc("Resource name used by tooltips.")] public readonly string Name = null; diff --git a/OpenRA.Mods.Common/Lint/CheckTranslationReference.cs b/OpenRA.Mods.Common/Lint/CheckTranslationReference.cs index aebc862bfe..439a5e8ca7 100644 --- a/OpenRA.Mods.Common/Lint/CheckTranslationReference.cs +++ b/OpenRA.Mods.Common/Lint/CheckTranslationReference.cs @@ -17,6 +17,7 @@ using System.Reflection; using System.Text.RegularExpressions; using Linguini.Syntax.Ast; using Linguini.Syntax.Parser; +using OpenRA.Mods.Common.Traits; using OpenRA.Traits; using OpenRA.Widgets; @@ -136,6 +137,19 @@ namespace OpenRA.Mods.Common.Lint foreach (var speed in gameSpeeds.Speeds.Values) usedKeys.Add(speed.Name, gameSpeedTranslationReference, $"`{nameof(GameSpeed)}.{nameof(GameSpeed.Name)}`"); + // TODO: linter does not work with LoadUsing + foreach (var actorInfo in modData.DefaultRules.Actors) + { + foreach (var info in actorInfo.Value.TraitInfos()) + { + var resourceTypeNameField = typeof(ResourceRendererInfo.ResourceTypeInfo).GetField(nameof(ResourceRendererInfo.ResourceTypeInfo.Name)); + var resourceTypeTranslationReference = Utility.GetCustomAttributes(resourceTypeNameField, true)[0]; + testedFields.Add(resourceTypeNameField); + foreach (var resourceTypes in info.ResourceTypes) + usedKeys.Add(resourceTypes.Value.Name, resourceTypeTranslationReference, $"`{nameof(ResourceRendererInfo.ResourceTypeInfo)}.{nameof(ResourceRendererInfo.ResourceTypeInfo.Name)}`"); + } + } + foreach (var modType in modData.ObjectCreator.GetTypes()) { const BindingFlags Binding = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static; diff --git a/OpenRA.Mods.Common/Traits/World/ResourceRenderer.cs b/OpenRA.Mods.Common/Traits/World/ResourceRenderer.cs index 0a79f976b3..39b45a8e22 100644 --- a/OpenRA.Mods.Common/Traits/World/ResourceRenderer.cs +++ b/OpenRA.Mods.Common/Traits/World/ResourceRenderer.cs @@ -39,6 +39,7 @@ namespace OpenRA.Mods.Common.Traits [FieldLoader.Require] [Desc("Resource name used by tooltips.")] + [TranslationReference] public readonly string Name = null; public ResourceTypeInfo(MiniYaml yaml) @@ -266,7 +267,14 @@ namespace OpenRA.Mods.Common.Traits protected virtual string GetRenderedResourceType(CPos cell) { return RenderContents[cell].Type; } - protected virtual string GetRenderedResourceTooltip(CPos cell) { return RenderContents[cell].Info?.Name; } + protected virtual string GetRenderedResourceTooltip(CPos cell) + { + var info = RenderContents[cell].Info; + if (info == null) + return null; + + return TranslationProvider.GetString(info.Name); + } IEnumerable IResourceRenderer.ResourceTypes => Info.ResourceTypes.Keys; diff --git a/mods/cnc/languages/rules/en.ftl b/mods/cnc/languages/rules/en.ftl index 2a9c40259e..f2db316833 100644 --- a/mods/cnc/languages/rules/en.ftl +++ b/mods/cnc/languages/rules/en.ftl @@ -30,6 +30,8 @@ dropdown-map-creeps = .label = Creep Actors .description = Hostile forces spawn on the battlefield +resource-tiberium = Tiberium + ## defaults.yaml notification-unit-lost = Unit lost. notification-unit-promoted = Unit promoted. diff --git a/mods/cnc/rules/world.yaml b/mods/cnc/rules/world.yaml index b72b59c646..4b2f8db7d2 100644 --- a/mods/cnc/rules/world.yaml +++ b/mods/cnc/rules/world.yaml @@ -142,11 +142,11 @@ Tiberium: Sequences: ti1, ti2, ti3, ti4, ti5, ti6, ti7, ti8, ti9, ti10, ti11, ti12 Palette: staticterrain - Name: Tiberium + Name: resource-tiberium BlueTiberium: Sequences: bti1, bti2, bti3, bti4, bti5, bti6, bti7, bti8, bti9, bti10, bti11, bti12 Palette: bluetiberium - Name: Tiberium + Name: resource-tiberium World: Inherits: ^BaseWorld diff --git a/mods/d2k/languages/rules/en.ftl b/mods/d2k/languages/rules/en.ftl index 218685268e..580b698001 100644 --- a/mods/d2k/languages/rules/en.ftl +++ b/mods/d2k/languages/rules/en.ftl @@ -31,6 +31,8 @@ options-starting-units = .light-support = Light Support .heavy-support = Heavy Support +resource-spice = Spice + ## defaults.yaml notification-unit-lost = Unit lost. notification-unit-promoted = Unit promoted. diff --git a/mods/d2k/rules/world.yaml b/mods/d2k/rules/world.yaml index 34fab1c4a1..fe540f98f3 100644 --- a/mods/d2k/rules/world.yaml +++ b/mods/d2k/rules/world.yaml @@ -114,7 +114,7 @@ Spice: Sequences: spicea, spiceb, spicec, spiced Palette: d2k - Name: Spice + Name: resource-spice World: Inherits: ^BaseWorld diff --git a/mods/ra/languages/rules/en.ftl b/mods/ra/languages/rules/en.ftl index b8523625ea..6be01f4441 100644 --- a/mods/ra/languages/rules/en.ftl +++ b/mods/ra/languages/rules/en.ftl @@ -32,6 +32,8 @@ options-starting-units = .light-support = Light Support .heavy-support = Heavy Support +resource-minerals = Valuable Minerals + ## aircraft.yaml actor-badr-name = Badger diff --git a/mods/ra/rules/world.yaml b/mods/ra/rules/world.yaml index ec5776e336..54d1cc882f 100644 --- a/mods/ra/rules/world.yaml +++ b/mods/ra/rules/world.yaml @@ -155,11 +155,11 @@ Ore: Sequences: gold01, gold02, gold03, gold04 Palette: player - Name: Valuable Minerals + Name: resource-minerals Gems: Sequences: gem01, gem02, gem03, gem04 Palette: player - Name: Valuable Minerals + Name: resource-minerals World: Inherits: ^BaseWorld diff --git a/mods/ts/languages/rules/en.ftl b/mods/ts/languages/rules/en.ftl index baebe5d435..0258900deb 100644 --- a/mods/ts/languages/rules/en.ftl +++ b/mods/ts/languages/rules/en.ftl @@ -29,6 +29,9 @@ dropdown-map-creeps = .label = Creep Actors .description = Hostile forces spawn on the battlefield +resource-veins = Veins +resource-tiberium = Tiberium + ## Structures notification-construction-complete = Construction complete. notification-unit-ready = Unit ready. diff --git a/mods/ts/rules/world.yaml b/mods/ts/rules/world.yaml index bc863178ac..86838ad70d 100644 --- a/mods/ts/rules/world.yaml +++ b/mods/ts/rules/world.yaml @@ -209,11 +209,11 @@ Tiberium: Sequences: tib01, tib02, tib03, tib04, tib05, tib06, tib07, tib08, tib09, tib10, tib11, tib12 Palette: greentiberium - Name: Tiberium + Name: resource-tiberium BlueTiberium: Sequences: tib01, tib02, tib03, tib04, tib05, tib06, tib07, tib08, tib09, tib10, tib11, tib12 Palette: bluetiberium - Name: Tiberium + Name: resource-tiberium Ramp1Sequences: Tiberium: tib13, tib14 BlueTiberium: tib13, tib14 @@ -228,7 +228,7 @@ BlueTiberium: tib19, tib20 TSVeinsRenderer: ResourceType: Veins - Name: Veins + Name: resource-veins Palette: player VeinholeActors: veinhole