Browse Source

localization wip

Krzysztof Krysiński 2 years ago
parent
commit
95250b27be
29 changed files with 54 additions and 24 deletions
  1. 9 3
      src/PixiEditor.Extensions/Common/Localization/ILocalizationProvider.cs
  2. 1 0
      src/PixiEditor.Extensions/Common/Localization/Language.cs
  3. 1 2
      src/PixiEditor.Extensions/Common/Localization/LanguageData.cs
  4. 1 0
      src/PixiEditor.Extensions/Common/Localization/LocalizationData.cs
  5. 2 1
      src/PixiEditor.Extensions/Common/Localization/LocalizedString.cs
  6. 3 1
      src/PixiEditor.Extensions/Palettes/ExtensionPalette.cs
  7. 1 0
      src/PixiEditor.Extensions/Palettes/IPalette.cs
  8. 2 0
      src/PixiEditor.Extensions/Palettes/PaletteListDataSource.cs
  9. 1 0
      src/PixiEditor/Helpers/Extensions/ServiceCollectionHelpers.cs
  10. BIN
      src/PixiEditor/Images/SupperterPack.png
  11. 1 0
      src/PixiEditor/Models/Commands/CommandGroup.cs
  12. 1 0
      src/PixiEditor/Models/Commands/Commands/Command.cs
  13. 3 2
      src/PixiEditor/Models/DataHolders/Palettes/Palette.cs
  14. 1 1
      src/PixiEditor/Models/DataHolders/Palettes/PaletteObject.cs
  15. 2 2
      src/PixiEditor/Models/DataProviders/LocalPalettesFetcher.cs
  16. 6 0
      src/PixiEditor/Models/Localization/LocalizationProvider.cs
  17. 0 1
      src/PixiEditor/PixiEditor.csproj
  18. 1 0
      src/PixiEditor/ViewModels/SettingsWindowViewModel.cs
  19. 1 0
      src/PixiEditor/ViewModels/SubViewModels/Tools/ToolViewModel.cs
  20. 1 0
      src/PixiEditor/ViewModels/SubViewModels/UserPreferences/Settings/GeneralSettings.cs
  21. 1 0
      src/PixiEditor/ViewModels/ViewModelMain.cs
  22. 1 0
      src/PixiEditor/Views/Dialogs/DebugDialogs/Localization/LocalizationDataContext.cs
  23. 1 0
      src/PixiEditor/Views/Dialogs/DebugDialogs/Localization/PoeLanguage.cs
  24. 1 1
      src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml.cs
  25. 1 0
      src/PixiEditor/Views/Translator.cs
  26. 1 1
      src/PixiEditor/Views/UserControls/Chip.xaml
  27. 1 0
      src/PixiEditor/Views/UserControls/Overlays/SymmetryOverlay/SymmetryOverlay.cs
  28. 3 6
      src/PixiEditor/Views/UserControls/Palettes/PaletteItem.xaml
  29. 6 3
      src/SampleExtension/TestPaletteDataSource.cs

+ 9 - 3
src/PixiEditor/Models/Localization/ILocalizationProvider.cs → src/PixiEditor.Extensions/Common/Localization/ILocalizationProvider.cs

@@ -1,9 +1,10 @@
-namespace PixiEditor.Models.Localization;
+using PixiEditor.Models.Localization;
+
+namespace PixiEditor.Extensions.Common.Localization;
 
 
 public interface ILocalizationProvider
 public interface ILocalizationProvider
 {
 {
-    public static ILocalizationProvider Current => ViewModelMain.Current?.LocalizationProvider;
-    
+    public static ILocalizationProvider Current { get; private set; }
     public string LocalizationDataPath { get; }
     public string LocalizationDataPath { get; }
     public LocalizationData LocalizationData { get; }
     public LocalizationData LocalizationData { get; }
     public Language CurrentLanguage { get; set; }
     public Language CurrentLanguage { get; set; }
@@ -19,4 +20,9 @@ public interface ILocalizationProvider
     public void LoadDebugKeys(Dictionary<string, string> languageKeys, bool rightToLeft);
     public void LoadDebugKeys(Dictionary<string, string> languageKeys, bool rightToLeft);
     public void ReloadLanguage();
     public void ReloadLanguage();
     public Language DefaultLanguage { get; }
     public Language DefaultLanguage { get; }
+
+    protected static void SetAsCurrent(ILocalizationProvider provider)
+    {
+        Current = provider;
+    }
 }
 }

+ 1 - 0
src/PixiEditor/Models/Localization/Language.cs → src/PixiEditor.Extensions/Common/Localization/Language.cs

@@ -1,5 +1,6 @@
 using System.Diagnostics;
 using System.Diagnostics;
 using System.Windows;
 using System.Windows;
+using PixiEditor.Extensions.Common.Localization;
 
 
 namespace PixiEditor.Models.Localization;
 namespace PixiEditor.Models.Localization;
 
 

+ 1 - 2
src/PixiEditor/Models/Localization/LanguageData.cs → src/PixiEditor.Extensions/Common/Localization/LanguageData.cs

@@ -1,7 +1,6 @@
 using System.Globalization;
 using System.Globalization;
-using Newtonsoft.Json;
 
 
-namespace PixiEditor.Models.Localization;
+namespace PixiEditor.Extensions.Common.Localization;
 
 
 public class LanguageData
 public class LanguageData
 {
 {

+ 1 - 0
src/PixiEditor/Models/Localization/LocalizationData.cs → src/PixiEditor.Extensions/Common/Localization/LocalizationData.cs

@@ -1,4 +1,5 @@
 using System.Diagnostics;
 using System.Diagnostics;
+using PixiEditor.Extensions.Common.Localization;
 
 
 namespace PixiEditor.Models.Localization;
 namespace PixiEditor.Models.Localization;
 
 

+ 2 - 1
src/PixiEditor/Models/Localization/LocalizedString.cs → src/PixiEditor.Extensions/Common/Localization/LocalizedString.cs

@@ -1,4 +1,5 @@
-using PixiEditor.Models.Enums;
+using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Models.Enums;
 
 
 namespace PixiEditor.Models.Localization;
 namespace PixiEditor.Models.Localization;
 
 

+ 3 - 1
src/PixiEditor.Extensions/Palettes/ExtensionPalette.cs

@@ -6,10 +6,12 @@ public class ExtensionPalette : IPalette
     public List<PaletteColor> Colors { get; }
     public List<PaletteColor> Colors { get; }
     public bool IsFavourite { get; set; }
     public bool IsFavourite { get; set; }
     public string FileName { get; set; }
     public string FileName { get; set; }
+    public PaletteListDataSource Source { get; }
 
 
-    public ExtensionPalette(string name, List<PaletteColor> colors)
+    public ExtensionPalette(string name, List<PaletteColor> colors, PaletteListDataSource source)
     {
     {
         Name = name;
         Name = name;
         Colors = colors;
         Colors = colors;
+        Source = source;
     }
     }
 }
 }

+ 1 - 0
src/PixiEditor.Extensions/Palettes/IPalette.cs

@@ -6,4 +6,5 @@ public interface IPalette
     public List<PaletteColor> Colors { get; }
     public List<PaletteColor> Colors { get; }
     public bool IsFavourite { get; }
     public bool IsFavourite { get; }
     public string FileName { get; set; }
     public string FileName { get; set; }
+    public PaletteListDataSource Source { get; }
 }
 }

+ 2 - 0
src/PixiEditor.Extensions/Palettes/PaletteListDataSource.cs

@@ -1,9 +1,11 @@
 using PixiEditor.Extensions.Palettes.Parsers;
 using PixiEditor.Extensions.Palettes.Parsers;
+using PixiEditor.Models.Localization;
 
 
 namespace PixiEditor.Extensions.Palettes;
 namespace PixiEditor.Extensions.Palettes;
 
 
 public abstract class PaletteListDataSource
 public abstract class PaletteListDataSource
 {
 {
+    public LocalizedString Name { get; set; }
     public virtual void Initialize() { }
     public virtual void Initialize() { }
 
 
     /// <summary>
     /// <summary>

+ 1 - 0
src/PixiEditor/Helpers/Extensions/ServiceCollectionHelpers.cs

@@ -1,5 +1,6 @@
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.Extensions;
 using PixiEditor.Extensions;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Extensions.Palettes;
 using PixiEditor.Extensions.Palettes;
 using PixiEditor.Extensions.Palettes.Parsers;
 using PixiEditor.Extensions.Palettes.Parsers;
 using PixiEditor.Extensions.Windowing;
 using PixiEditor.Extensions.Windowing;

BIN
src/PixiEditor/Images/SupperterPack.png


+ 1 - 0
src/PixiEditor/Models/Commands/CommandGroup.cs

@@ -1,6 +1,7 @@
 using System.Collections;
 using System.Collections;
 using System.ComponentModel;
 using System.ComponentModel;
 using System.Windows.Input;
 using System.Windows.Input;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Commands;
 using PixiEditor.Models.Commands.Commands;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.Localization;
 using PixiEditor.Models.Localization;

+ 1 - 0
src/PixiEditor/Models/Commands/Commands/Command.cs

@@ -1,6 +1,7 @@
 using System.Diagnostics;
 using System.Diagnostics;
 using System.Windows.Input;
 using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Media;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Commands.Evaluators;
 using PixiEditor.Models.Commands.Evaluators;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.Localization;
 using PixiEditor.Models.Localization;

+ 3 - 2
src/PixiEditor/Models/DataHolders/Palettes/Palette.cs

@@ -29,13 +29,14 @@ internal class Palette : NotifyableObject, IPalette
 
 
     public bool IsFavourite { get; set; }
     public bool IsFavourite { get; set; }
 
 
-    public bool IsFromSupporterPack { get; }
+    public PaletteListDataSource Source { get; }
 
 
-    public Palette(string name, List<PaletteColor> colors, string? fileName)
+    public Palette(string name, List<PaletteColor> colors, string? fileName, PaletteListDataSource source)
     {
     {
         Name = name;
         Name = name;
         Colors = colors;
         Colors = colors;
         FileName = fileName;
         FileName = fileName;
+        Source = source;
     }
     }
 
 
     public static string? ReplaceInvalidChars(string? filename)
     public static string? ReplaceInvalidChars(string? filename)

+ 1 - 1
src/PixiEditor/Models/DataHolders/Palettes/PaletteObject.cs

@@ -20,6 +20,6 @@ internal class PaletteObject
             colors.Add(new PaletteColor(parsedColor.R, parsedColor.G, parsedColor.B));
             colors.Add(new PaletteColor(parsedColor.R, parsedColor.G, parsedColor.B));
         }
         }
 
 
-        return new(Name, colors, null);
+        return new(Name, colors, null, null);
     }
     }
 }
 }

+ 2 - 2
src/PixiEditor/Models/DataProviders/LocalPalettesFetcher.cs

@@ -312,12 +312,12 @@ internal class LocalPalettesFetcher : PaletteListDataSource
         return result;
         return result;
     }
     }
 
 
-    private static Palette CreatePalette(PaletteFileData fileData, string file, bool isFavourite)
+    private Palette CreatePalette(PaletteFileData fileData, string file, bool isFavourite)
     {
     {
         var palette = new Palette(
         var palette = new Palette(
             fileData.Title,
             fileData.Title,
             new List<PaletteColor>(fileData.GetPaletteColors()),
             new List<PaletteColor>(fileData.GetPaletteColors()),
-            Path.GetFileName(file))
+            Path.GetFileName(file), this)
         {
         {
             IsFavourite = isFavourite
             IsFavourite = isFavourite
         };
         };

+ 6 - 0
src/PixiEditor/Models/Localization/LocalizationProvider.cs

@@ -1,6 +1,7 @@
 using System.Globalization;
 using System.Globalization;
 using System.IO;
 using System.IO;
 using Newtonsoft.Json;
 using Newtonsoft.Json;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.IO;
 using PixiEditor.Models.IO;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.Models.UserPreferences;
 
 
@@ -19,6 +20,11 @@ internal class LocalizationProvider : ILocalizationProvider
 
 
     public Language DefaultLanguage { get; private set; }
     public Language DefaultLanguage { get; private set; }
 
 
+    public LocalizationProvider()
+    {
+        ILocalizationProvider.SetAsCurrent(this);
+    }
+
     public void LoadData()
     public void LoadData()
     {
     {
         Newtonsoft.Json.JsonSerializer serializer = new();
         Newtonsoft.Json.JsonSerializer serializer = new();

+ 0 - 1
src/PixiEditor/PixiEditor.csproj

@@ -433,7 +433,6 @@
 		<None Remove="Images\LanguageFlags\zh.png" />
 		<None Remove="Images\LanguageFlags\zh.png" />
 		<Resource Include="Images\LanguageFlags\zh.png" />
 		<Resource Include="Images\LanguageFlags\zh.png" />
 		<None Remove="Images\SupperterPack.png" />
 		<None Remove="Images\SupperterPack.png" />
-		<Resource Include="Images\SupperterPack.png" />
 	</ItemGroup>
 	</ItemGroup>
 	<ItemGroup>
 	<ItemGroup>
 		<None Include="..\LICENSE">
 		<None Include="..\LICENSE">

+ 1 - 0
src/PixiEditor/ViewModels/SettingsWindowViewModel.cs

@@ -12,6 +12,7 @@ using PixiEditor.Models.Commands.Templates;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.Views.Dialogs;
 using PixiEditor.Views.Dialogs;
 using PixiEditor.Exceptions;
 using PixiEditor.Exceptions;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Localization;
 using PixiEditor.Models.Localization;
 
 
 namespace PixiEditor.ViewModels;
 namespace PixiEditor.ViewModels;

+ 1 - 0
src/PixiEditor/ViewModels/SubViewModels/Tools/ToolViewModel.cs

@@ -3,6 +3,7 @@ using System.Runtime.CompilerServices;
 using System.Windows.Input;
 using System.Windows.Input;
 using ChunkyImageLib.DataHolders;
 using ChunkyImageLib.DataHolders;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.DrawingApi.Core.Numerics;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.DataHolders;
 using PixiEditor.Models.Localization;
 using PixiEditor.Models.Localization;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;
 using PixiEditor.ViewModels.SubViewModels.Tools.ToolSettings.Settings;

+ 1 - 0
src/PixiEditor/ViewModels/SubViewModels/UserPreferences/Settings/GeneralSettings.cs

@@ -1,4 +1,5 @@
 using System.Globalization;
 using System.Globalization;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Localization;
 using PixiEditor.Models.Localization;
 using PixiEditor.Models.UserPreferences;
 using PixiEditor.Models.UserPreferences;
 
 

+ 1 - 0
src/PixiEditor/ViewModels/ViewModelMain.cs

@@ -2,6 +2,7 @@
 using System.Windows;
 using System.Windows;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.DrawingApi.Core.ColorsImpl;
 using PixiEditor.DrawingApi.Core.ColorsImpl;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Helpers;
 using PixiEditor.Helpers;
 using PixiEditor.Helpers.Collections;
 using PixiEditor.Helpers.Collections;
 using PixiEditor.Models.Commands;
 using PixiEditor.Models.Commands;

+ 1 - 0
src/PixiEditor/Views/Dialogs/DebugDialogs/Localization/LocalizationDataContext.cs

@@ -10,6 +10,7 @@ using System.Windows.Media;
 using System.Windows.Threading;
 using System.Windows.Threading;
 using Newtonsoft.Json;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using Newtonsoft.Json.Linq;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Helpers;
 using PixiEditor.Helpers;
 using PixiEditor.Models.Dialogs;
 using PixiEditor.Models.Dialogs;
 using PixiEditor.Models.Localization;
 using PixiEditor.Models.Localization;

+ 1 - 0
src/PixiEditor/Views/Dialogs/DebugDialogs/Localization/PoeLanguage.cs

@@ -1,6 +1,7 @@
 using System.Globalization;
 using System.Globalization;
 using System.Windows.Media;
 using System.Windows.Media;
 using Newtonsoft.Json;
 using Newtonsoft.Json;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Localization;
 using PixiEditor.Models.Localization;
 
 
 namespace PixiEditor.Views.Dialogs.DebugDialogs.Localization;
 namespace PixiEditor.Views.Dialogs.DebugDialogs.Localization;

+ 1 - 1
src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml.cs

@@ -382,7 +382,7 @@ internal partial class PalettesBrowser : Window
         {
         {
             foreach (var pal in src)
             foreach (var pal in src)
             {
             {
-                palettes.Add(new Palette(pal.Name, pal.Colors, pal.FileName) { IsFavourite = IsPaletteFavourite(pal.Name) });
+                palettes.Add(new Palette(pal.Name, pal.Colors, pal.FileName, pal.Source) { IsFavourite = IsPaletteFavourite(pal.Name) });
             }
             }
         }
         }
 
 

+ 1 - 0
src/PixiEditor/Views/Translator.cs

@@ -3,6 +3,7 @@ using System.Windows.Controls;
 using System.Windows.Data;
 using System.Windows.Data;
 using System.Windows.Documents;
 using System.Windows.Documents;
 using AvalonDock.Layout;
 using AvalonDock.Layout;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Localization;
 using PixiEditor.Models.Localization;
 using PixiEditor.Views.Dialogs;
 using PixiEditor.Views.Dialogs;
 
 

+ 1 - 1
src/PixiEditor/Views/UserControls/Chip.xaml

@@ -9,7 +9,7 @@
              d:DesignHeight="30" d:DesignWidth="60">
              d:DesignHeight="30" d:DesignWidth="60">
     <Border VerticalAlignment="Center" Background="{StaticResource GlyphBrush}" BorderThickness="1"
     <Border VerticalAlignment="Center" Background="{StaticResource GlyphBrush}" BorderThickness="1"
             BorderBrush="{Binding ElementName=chip, Path=OutlineColor}"
             BorderBrush="{Binding ElementName=chip, Path=OutlineColor}"
-            Padding="10 5" CornerRadius="2.5">
+            Padding="5 2.5" CornerRadius="2.5">
         <TextBlock Text="{Binding ElementName=chip, Path=Text}" Foreground="White"/>
         <TextBlock Text="{Binding ElementName=chip, Path=Text}" Foreground="White"/>
     </Border>
     </Border>
 </UserControl>
 </UserControl>

+ 1 - 0
src/PixiEditor/Views/UserControls/Overlays/SymmetryOverlay/SymmetryOverlay.cs

@@ -7,6 +7,7 @@ using ChunkyImageLib.DataHolders;
 using PixiEditor;
 using PixiEditor;
 using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.ChangeableDocument.Enums;
 using PixiEditor.DrawingApi.Core.Numerics;
 using PixiEditor.DrawingApi.Core.Numerics;
+using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.Controllers;
 using PixiEditor.Models.Localization;
 using PixiEditor.Models.Localization;
 using PixiEditor.Views;
 using PixiEditor.Views;

+ 3 - 6
src/PixiEditor/Views/UserControls/Palettes/PaletteItem.xaml

@@ -27,9 +27,6 @@
             <Separator Background="{StaticResource MainColor}" />
             <Separator Background="{StaticResource MainColor}" />
             <DockPanel>
             <DockPanel>
                 <StackPanel Orientation="Horizontal" DockPanel.Dock="Left">
                 <StackPanel Orientation="Horizontal" DockPanel.Dock="Left">
-                    <Image Margin="0 5 5 0"
-                           Source="/Images/SupperterPack.png" Width="24"
-                           DockPanel.Dock="Right" HorizontalAlignment="Right"/>
                     <userControls:EditableTextBlock x:Name="titleTextBlock" OnSubmit="EditableTextBlock_OnSubmit"
                     <userControls:EditableTextBlock x:Name="titleTextBlock" OnSubmit="EditableTextBlock_OnSubmit"
                                                     Text="{Binding Palette.Name, ElementName=paletteItem, Mode=TwoWay}"
                                                     Text="{Binding Palette.Name, ElementName=paletteItem, Mode=TwoWay}"
                                                     FontSize="20" MaxChars="50"/>
                                                     FontSize="20" MaxChars="50"/>
@@ -42,9 +39,9 @@
                 <!--<Image Margin="0 5 5 0"
                 <!--<Image Margin="0 5 5 0"
                        Source="/Images/SupperterPack.png" Width="24"
                        Source="/Images/SupperterPack.png" Width="24"
                        DockPanel.Dock="Right" HorizontalAlignment="Right"/>-->
                        DockPanel.Dock="Right" HorizontalAlignment="Right"/>-->
-                <!--<userControls:Chip OutlineColor="Gold" Margin="0 5 5 0"
-                                   Text="{Binding ElementName=paletteItem, Path=Palette.BundleName}"
-                                   DockPanel.Dock="Right" HorizontalAlignment="Right"/>-->
+                <userControls:Chip Margin="0 5 5 0"
+                                   views:Translator.Key="{Binding ElementName=paletteItem, Path=Palette.Source.Name.Key}"
+                                   DockPanel.Dock="Right" HorizontalAlignment="Right"/>
             </DockPanel>
             </DockPanel>
             <TextBlock Margin="0 5 0 0">
             <TextBlock Margin="0 5 0 0">
             </TextBlock>
             </TextBlock>

+ 6 - 3
src/SampleExtension/TestPaletteDataSource.cs

@@ -4,10 +4,13 @@ namespace SampleExtension;
 
 
 public class TestPaletteDataSource : PaletteListDataSource
 public class TestPaletteDataSource : PaletteListDataSource
 {
 {
-    private List<ExtensionPalette> palettes = new()
+    private List<ExtensionPalette> palettes = new();
+
+    public TestPaletteDataSource()
     {
     {
-        new ExtensionPalette("Test Palette", new List<PaletteColor> { PaletteColor.Black, PaletteColor.White, })
-    };
+        palettes.Add(new ExtensionPalette("Test Palette", new List<PaletteColor> { PaletteColor.Black, PaletteColor.White, }, this));
+    }
+
     public override Task<List<IPalette>> FetchPaletteList(int startIndex, int items, FilteringSettings filtering)
     public override Task<List<IPalette>> FetchPaletteList(int startIndex, int items, FilteringSettings filtering)
     {
     {
         if(startIndex >= palettes.Count) return Task.FromResult(new List<IPalette>());
         if(startIndex >= palettes.Count) return Task.FromResult(new List<IPalette>());