Browse Source

Fixed string interpolation on Commands

Krzysztof Krysiński 2 years ago
parent
commit
70f16ca1ad

+ 14 - 1
src/PixiEditor/Localization/LocalizedString.cs

@@ -86,7 +86,20 @@ public struct LocalizedString
 
         try
         {
-            return string.Format(value, Parameters);
+            var executedParameters = new object[Parameters.Length];
+            for (var i = 0; i < Parameters.Length; i++)
+            {
+                var parameter = Parameters[i];
+                object objToExecute = parameter;
+                if (parameter is LocalizedString str)
+                {
+                    objToExecute = new LocalizedString(str.Key, str.Parameters).Value;
+                }
+
+                executedParameters[i] = objToExecute;
+            }
+
+            return string.Format(value, executedParameters);
         }
         catch (FormatException)
         {

+ 1 - 1
src/PixiEditor/Models/Commands/CommandController.cs

@@ -156,7 +156,7 @@ internal class CommandController
 
             string internalName = $"PixiEditor.Tools.Select.{type.Name}";
 
-            LocalizedString displayName = new("SELECT_TOOL", toolInstance.DisplayName.Value);
+            LocalizedString displayName = new("SELECT_TOOL", toolInstance.DisplayName);
 
             var command = new Command.ToolCommand()
             {

+ 2 - 2
src/PixiEditor/Models/Commands/Commands/Command.cs

@@ -53,8 +53,8 @@ internal abstract partial class Command : NotifyableObject
 
     private void OnLanguageChanged(Language obj)
     {
-        DisplayName = new LocalizedString(DisplayName.Key);
-        Description = new LocalizedString(Description.Key);
+        DisplayName = new LocalizedString(DisplayName.Key, DisplayName.Parameters);
+        Description = new LocalizedString(Description.Key, Description.Parameters);
 
         RaisePropertyChanged(nameof(DisplayName));
         RaisePropertyChanged(nameof(Description));