diff --git a/OpenRA.Mods.Common/UtilityCommands/ExtractChromeStrings.cs b/OpenRA.Mods.Common/UtilityCommands/ExtractChromeStrings.cs index de7397dbe8..080f2d1808 100644 --- a/OpenRA.Mods.Common/UtilityCommands/ExtractChromeStrings.cs +++ b/OpenRA.Mods.Common/UtilityCommands/ExtractChromeStrings.cs @@ -48,7 +48,7 @@ namespace OpenRA.Mods.Common.UtilityCommands foreach (var layout in chromeLayouts) { - var fluentFolder = layout.Key + "|languages"; + var fluentFolder = layout.Key + "|fluent"; var fluentPackage = modData.ModFiles.OpenPackage(fluentFolder); var fluentPath = Path.Combine(fluentPackage.Name, "chrome.ftl"); @@ -262,12 +262,23 @@ namespace OpenRA.Mods.Common.UtilityCommands && !UpdateUtils.IsAlreadyExtracted(childNode.Value.Value) && childNode.Value.Value.Any(char.IsLetterOrDigit)) { - var value = childNode.Value.Value - .Replace("\\n", "\n ") + var replaced = false; + var value = childNode.Value.Value; + if (value.Contains("\\n")) + { + value = value.Replace("\\n", "\n "); + replaced = true; + } + + value = value .Replace("{", "<") .Replace("}", ">") .Trim().Trim('\n'); + // Preserve indentation + if (replaced) + value = "\n " + value; + validChildTypes.Add((childNode, childType.ToLowerInvariant(), value)); } } diff --git a/OpenRA.Mods.Common/UtilityCommands/ExtractYamlStrings.cs b/OpenRA.Mods.Common/UtilityCommands/ExtractYamlStrings.cs index ab432636f0..2fafe771ab 100644 --- a/OpenRA.Mods.Common/UtilityCommands/ExtractYamlStrings.cs +++ b/OpenRA.Mods.Common/UtilityCommands/ExtractYamlStrings.cs @@ -64,7 +64,7 @@ namespace OpenRA.Mods.Common.UtilityCommands } } - var fluentPackage = modData.ModFiles.OpenPackage(modData.Manifest.Id + "|languages"); + var fluentPackage = modData.ModFiles.OpenPackage(modData.Manifest.Id + "|fluent"); ExtractFromFile(Path.Combine(fluentPackage.Name, "rules.ftl"), modRules, traitInfos); modRules.Save(); @@ -307,9 +307,16 @@ namespace OpenRA.Mods.Common.UtilityCommands if (string.IsNullOrEmpty(propertyValue) || UpdateUtils.IsAlreadyExtracted(propertyValue) || !propertyValue.Any(char.IsLetterOrDigit)) continue; - var value = propertyValue - .Replace("\\n", "\n ") - .Trim().Trim('\n'); + var replaced = false; + var value = propertyValue; + if (value.Contains("\\n")) + { + value = value.Replace("\\n", "\n "); + replaced = true; + } + + // Preserve indentation + value = (replaced ? "\n " : "") + value.Trim().Trim('\n'); var actorName = ToLowerActor(actor.Key); var key = traitInfo;