Ver Fonte

Merge branch 'master' into avalonia-rewrite

Krzysztof Krysiński há 2 anos atrás
pai
commit
4d51eaf7a8
43 ficheiros alterados com 1891 adições e 190 exclusões
  1. 1 1
      src/PixiEditor.Builder/build/PixiEditor.Builder.csproj
  2. 16 2
      src/PixiEditor.ChangeableDocument/PixiEditor.ChangeableDocument.csproj
  3. 5 0
      src/PixiEditor.DrawingApi.Core/Numerics/VecI.cs
  4. 16 2
      src/PixiEditor.DrawingApi.Core/PixiEditor.DrawingApi.Core.csproj
  5. 16 2
      src/PixiEditor.DrawingApi.Skia/PixiEditor.DrawingApi.Skia.csproj
  6. 32 0
      src/PixiEditor.Platform.Steam/OverlayHandler.cs
  7. 129 0
      src/PixiEditor.sln
  8. 5 0
      src/PixiEditor/App.xaml.cs
  9. 30 10
      src/PixiEditor/Data/Localization/Languages/ar.json
  10. 46 26
      src/PixiEditor/Data/Localization/Languages/cs.json
  11. 48 28
      src/PixiEditor/Data/Localization/Languages/de.json
  12. 6 1
      src/PixiEditor/Data/Localization/Languages/en.json
  13. 21 1
      src/PixiEditor/Data/Localization/Languages/es.json
  14. 21 1
      src/PixiEditor/Data/Localization/Languages/hu.json
  15. 584 0
      src/PixiEditor/Data/Localization/Languages/it.json
  16. 21 1
      src/PixiEditor/Data/Localization/Languages/pl.json
  17. 29 9
      src/PixiEditor/Data/Localization/Languages/pt-br.json
  18. 45 25
      src/PixiEditor/Data/Localization/Languages/ru.json
  19. 584 0
      src/PixiEditor/Data/Localization/Languages/tr.json
  20. 30 10
      src/PixiEditor/Data/Localization/Languages/uk.json
  21. 48 28
      src/PixiEditor/Data/Localization/Languages/zh.json
  22. 22 8
      src/PixiEditor/Data/Localization/LocalizationData.json
  23. 1 0
      src/PixiEditor/Extensions/readme.txt
  24. 12 1
      src/PixiEditor/Helpers/ClipboardHelper.cs
  25. 3 0
      src/PixiEditor/Helpers/VersionHelpers.cs
  26. BIN
      src/PixiEditor/Images/LanguageFlags/it.png
  27. BIN
      src/PixiEditor/Images/LanguageFlags/tr.png
  28. 1 9
      src/PixiEditor/Models/AppExtensions/ExtensionLoader.cs
  29. 2 1
      src/PixiEditor/Models/IO/Importer.cs
  30. 30 1
      src/PixiEditor/PixiEditor.csproj
  31. 2 2
      src/PixiEditor/Properties/AssemblyInfo.cs
  32. 2 2
      src/PixiEditor/ViewModels/SubViewModels/Document/DocumentViewModel.cs
  33. 1 0
      src/PixiEditor/ViewModels/SubViewModels/Main/ClipboardViewModel.cs
  34. 2 7
      src/PixiEditor/ViewModels/SubViewModels/Main/ColorsViewModel.cs
  35. 2 0
      src/PixiEditor/ViewModels/SubViewModels/Main/FileViewModel.cs
  36. 18 5
      src/PixiEditor/ViewModels/SubViewModels/Main/UpdateViewModel.cs
  37. 1 1
      src/PixiEditor/Views/Dialogs/AboutPopup.xaml.cs
  38. 2 3
      src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml
  39. 20 0
      src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml.cs
  40. 1 1
      src/PixiEditor/Views/Dialogs/SettingsWindow.xaml
  41. 17 0
      src/PixiEditor/Views/MainWindow.xaml
  42. 18 2
      src/PixiEditor/Views/MainWindow.xaml.cs
  43. 1 0
      src/PixiEditor/Views/UserControls/Palettes/PaletteViewer.xaml.cs

+ 1 - 1
src/PixiEditor.Builder/build/PixiEditor.Builder.csproj

@@ -5,7 +5,7 @@
         <RunWorkingDirectory>$(MSBuildProjectDirectory)</RunWorkingDirectory>
         <AssemblyName>PixiEditor.Builder</AssemblyName>
         <RootNamespace>PixiEditor.Builder</RootNamespace>
-        <Configurations>Debug;Release;DevRelease</Configurations>
+        <Configurations>Debug;Release;DevRelease;DevSteam</Configurations>
         <Platforms>AnyCPU;x86;x64</Platforms>
     </PropertyGroup>
     <ItemGroup>

+ 16 - 2
src/PixiEditor.ChangeableDocument/PixiEditor.ChangeableDocument.csproj

@@ -6,8 +6,8 @@
     <Nullable>enable</Nullable>
     <WarningsAsErrors>Nullable</WarningsAsErrors>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-    <Configurations>Debug;Release;Steam;DevRelease</Configurations>
-    <Platforms>AnyCPU</Platforms>
+    <Configurations>Debug;Release;Steam;DevRelease;DevSteam</Configurations>
+    <Platforms>AnyCPU;x86;x64</Platforms>
   </PropertyGroup>
 
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Steam|AnyCPU'">
@@ -48,6 +48,20 @@
     <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
 
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevSteam|x86' ">
+    <Optimize>True</Optimize>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+  </PropertyGroup>
+
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevSteam|x64' ">
+    <Optimize>True</Optimize>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+  </PropertyGroup>
+
+  <PropertyGroup Condition=" '$(Configuration)' == 'DevSteam' ">
+    <Optimize>True</Optimize>
+  </PropertyGroup>
+
   <ItemGroup>
     <ProjectReference Include="..\ChunkyImageLib\ChunkyImageLib.csproj" />
     <ProjectReference Include="..\PixiEditor.ChangeableDocument.Gen\PixiEditor.ChangeableDocument.Gen.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />

+ 5 - 0
src/PixiEditor.DrawingApi.Core/Numerics/VecI.cs

@@ -86,6 +86,11 @@ public struct VecI : IEquatable<VecI>
 
     public static VecI FromBytes(ReadOnlySpan<byte> value)
     {
+        if (value.Length < sizeof(int) * 2)
+        {
+            throw new ArgumentException("Value bytes are invalid. Span must have 8 bytes", nameof(value));
+        }
+
         var x = BitConverter.ToInt32(value);
         var y = BitConverter.ToInt32(value[4..]);
 

+ 16 - 2
src/PixiEditor.DrawingApi.Core/PixiEditor.DrawingApi.Core.csproj

@@ -5,8 +5,8 @@
         <Nullable>enable</Nullable>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
         <LangVersion>10</LangVersion>
-        <Configurations>Debug;Release;Steam;DevRelease</Configurations>
-        <Platforms>AnyCPU</Platforms>
+        <Configurations>Debug;Release;Steam;DevRelease;DevSteam</Configurations>
+        <Platforms>AnyCPU;x86;x64</Platforms>
     </PropertyGroup>
 
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Steam|AnyCPU'">
@@ -46,4 +46,18 @@
     <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
       <PlatformTarget>AnyCPU</PlatformTarget>
     </PropertyGroup>
+
+    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevSteam|x86' ">
+      <Optimize>True</Optimize>
+      <PlatformTarget>AnyCPU</PlatformTarget>
+    </PropertyGroup>
+
+    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevSteam|x64' ">
+      <Optimize>True</Optimize>
+      <PlatformTarget>AnyCPU</PlatformTarget>
+    </PropertyGroup>
+
+    <PropertyGroup Condition=" '$(Configuration)' == 'DevSteam' ">
+      <Optimize>True</Optimize>
+    </PropertyGroup>
 </Project>

+ 16 - 2
src/PixiEditor.DrawingApi.Skia/PixiEditor.DrawingApi.Skia.csproj

@@ -4,8 +4,8 @@
         <TargetFramework>netstandard2.1</TargetFramework>
         <Nullable>enable</Nullable>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-        <Configurations>Debug;Release;Steam;DevRelease</Configurations>
-        <Platforms>AnyCPU</Platforms>
+        <Configurations>Debug;Release;Steam;DevRelease;DevSteam</Configurations>
+        <Platforms>AnyCPU;x86;x64</Platforms>
     </PropertyGroup>
 
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Steam|AnyCPU'">
@@ -46,6 +46,20 @@
       <PlatformTarget>AnyCPU</PlatformTarget>
     </PropertyGroup>
 
+    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevSteam|x86' ">
+      <Optimize>True</Optimize>
+      <PlatformTarget>AnyCPU</PlatformTarget>
+    </PropertyGroup>
+
+    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevSteam|x64' ">
+      <Optimize>True</Optimize>
+      <PlatformTarget>AnyCPU</PlatformTarget>
+    </PropertyGroup>
+
+    <PropertyGroup Condition=" '$(Configuration)' == 'DevSteam' ">
+      <Optimize>True</Optimize>
+    </PropertyGroup>
+
     <ItemGroup>
       <PackageReference Include="SkiaSharp" Version="2.80.3" />
     </ItemGroup>

+ 32 - 0
src/PixiEditor.Platform.Steam/OverlayHandler.cs

@@ -0,0 +1,32 @@
+using Steamworks;
+
+namespace PixiEditor.Platform.Steam;
+
+public class SteamOverlayHandler
+{
+    public event Action<bool> ActivateRefreshingElement;
+    protected Callback<GameOverlayActivated_t> overlayActivated;
+
+    public SteamOverlayHandler()
+    {
+        overlayActivated = Callback<GameOverlayActivated_t>.Create(OnOverlayActivated);
+        InitStartingRefresh();
+    }
+
+    private void InitStartingRefresh()
+    {
+        System.Timers.Timer timer = new(10000);
+        timer.Elapsed += (sender, args) =>
+        {
+            if (SteamUtils.IsOverlayEnabled()) return;
+
+            ActivateRefreshingElement?.Invoke(false);
+        };
+        timer.Start();
+    }
+
+    private void OnOverlayActivated(GameOverlayActivated_t param)
+    {
+        ActivateRefreshingElement?.Invoke(param.m_bActive == 1);
+    }
+}

+ 129 - 0
src/PixiEditor.sln

@@ -92,6 +92,9 @@ Global
 		Steam|Any CPU = Steam|Any CPU
 		Steam|x64 = Steam|x64
 		Steam|x86 = Steam|x86
+		DevSteam|x86 = DevSteam|x86
+		DevSteam|x64 = DevSteam|x64
+		DevSteam|Any CPU = DevSteam|Any CPU
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{2CCDDE79-06CB-4771-AF85-7B25313EBA30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -130,6 +133,12 @@ Global
 		{2CCDDE79-06CB-4771-AF85-7B25313EBA30}.Steam|x64.Build.0 = Steam|x64
 		{2CCDDE79-06CB-4771-AF85-7B25313EBA30}.Steam|x86.ActiveCfg = Steam|x86
 		{2CCDDE79-06CB-4771-AF85-7B25313EBA30}.Steam|x86.Build.0 = Steam|x86
+		{2CCDDE79-06CB-4771-AF85-7B25313EBA30}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{2CCDDE79-06CB-4771-AF85-7B25313EBA30}.DevSteam|x86.Build.0 = DevSteam|x86
+		{2CCDDE79-06CB-4771-AF85-7B25313EBA30}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{2CCDDE79-06CB-4771-AF85-7B25313EBA30}.DevSteam|x64.Build.0 = DevSteam|x64
+		{2CCDDE79-06CB-4771-AF85-7B25313EBA30}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{2CCDDE79-06CB-4771-AF85-7B25313EBA30}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.Debug|x64.ActiveCfg = Debug|x64
@@ -166,6 +175,12 @@ Global
 		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.Steam|x64.Build.0 = Steam|x64
 		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.Steam|x86.ActiveCfg = Steam|x86
 		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.Steam|x86.Build.0 = Steam|x86
+		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.DevSteam|x86.Build.0 = DevSteam|x86
+		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.DevSteam|x64.Build.0 = DevSteam|x64
+		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{41B40602-2E8C-4B76-9BDB-B9FDE686ACCE}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.Debug|x64.ActiveCfg = Debug|x64
@@ -202,6 +217,12 @@ Global
 		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.Steam|x64.Build.0 = Steam|x64
 		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.Steam|x86.ActiveCfg = Steam|x86
 		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.Steam|x86.Build.0 = Steam|x86
+		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.DevSteam|x86.Build.0 = DevSteam|x86
+		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.DevSteam|x64.Build.0 = DevSteam|x64
+		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{80BB2920-3DC0-406C-9E2B-30B08D5CC7A8}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{5193C1C1-8362-40FD-802B-E097E8C88082}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5193C1C1-8362-40FD-802B-E097E8C88082}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{5193C1C1-8362-40FD-802B-E097E8C88082}.Debug|x64.ActiveCfg = Debug|x64
@@ -238,6 +259,12 @@ Global
 		{5193C1C1-8362-40FD-802B-E097E8C88082}.Steam|x64.Build.0 = Steam|x64
 		{5193C1C1-8362-40FD-802B-E097E8C88082}.Steam|x86.ActiveCfg = Steam|x86
 		{5193C1C1-8362-40FD-802B-E097E8C88082}.Steam|x86.Build.0 = Steam|x86
+		{5193C1C1-8362-40FD-802B-E097E8C88082}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{5193C1C1-8362-40FD-802B-E097E8C88082}.DevSteam|x86.Build.0 = DevSteam|x86
+		{5193C1C1-8362-40FD-802B-E097E8C88082}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{5193C1C1-8362-40FD-802B-E097E8C88082}.DevSteam|x64.Build.0 = DevSteam|x64
+		{5193C1C1-8362-40FD-802B-E097E8C88082}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{5193C1C1-8362-40FD-802B-E097E8C88082}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
@@ -292,6 +319,12 @@ Global
 		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.Steam|x86.ActiveCfg = Debug|x86
 		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.Steam|x86.Build.0 = Debug|x86
 		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.Steam|x86.Deploy.0 = Debug|x86
+		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.DevSteam|x86.Build.0 = DevSteam|x86
+		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.DevSteam|x64.Build.0 = DevSteam|x64
+		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{1F97F972-F9E8-4F35-A8B5-3F71408D2230}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -328,6 +361,12 @@ Global
 		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.Steam|x64.Build.0 = Steam|Any CPU
 		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.Steam|x86.ActiveCfg = Steam|Any CPU
 		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.Steam|x86.Build.0 = Steam|Any CPU
+		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.DevSteam|x86.Build.0 = DevSteam|x86
+		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.DevSteam|x64.Build.0 = DevSteam|x64
+		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{6A9DA760-1E47-414C-B8E8-3B4927F18131}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.Debug|x64.ActiveCfg = Debug|x64
@@ -364,6 +403,12 @@ Global
 		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.Steam|x64.Build.0 = Steam|x64
 		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.Steam|x86.ActiveCfg = Steam|x86
 		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.Steam|x86.Build.0 = Steam|x86
+		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.DevSteam|x86.Build.0 = DevSteam|x86
+		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.DevSteam|x64.Build.0 = DevSteam|x64
+		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{E31A8266-5BCA-4877-B9E5-9C5BB42829D6}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{510ED47C-2455-4DCE-A561-1074725E1236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{510ED47C-2455-4DCE-A561-1074725E1236}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{510ED47C-2455-4DCE-A561-1074725E1236}.Debug|x64.ActiveCfg = Debug|x64
@@ -400,6 +445,12 @@ Global
 		{510ED47C-2455-4DCE-A561-1074725E1236}.Steam|x64.Build.0 = Steam|x64
 		{510ED47C-2455-4DCE-A561-1074725E1236}.Steam|x86.ActiveCfg = Steam|x86
 		{510ED47C-2455-4DCE-A561-1074725E1236}.Steam|x86.Build.0 = Steam|x86
+		{510ED47C-2455-4DCE-A561-1074725E1236}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{510ED47C-2455-4DCE-A561-1074725E1236}.DevSteam|x86.Build.0 = DevSteam|x86
+		{510ED47C-2455-4DCE-A561-1074725E1236}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{510ED47C-2455-4DCE-A561-1074725E1236}.DevSteam|x64.Build.0 = DevSteam|x64
+		{510ED47C-2455-4DCE-A561-1074725E1236}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{510ED47C-2455-4DCE-A561-1074725E1236}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{294FD171-9536-474C-A679-83F0266275FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{294FD171-9536-474C-A679-83F0266275FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{294FD171-9536-474C-A679-83F0266275FB}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -436,6 +487,12 @@ Global
 		{294FD171-9536-474C-A679-83F0266275FB}.Steam|x64.Build.0 = Steam|Any CPU
 		{294FD171-9536-474C-A679-83F0266275FB}.Steam|x86.ActiveCfg = Steam|Any CPU
 		{294FD171-9536-474C-A679-83F0266275FB}.Steam|x86.Build.0 = Steam|Any CPU
+		{294FD171-9536-474C-A679-83F0266275FB}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{294FD171-9536-474C-A679-83F0266275FB}.DevSteam|x86.Build.0 = DevSteam|x86
+		{294FD171-9536-474C-A679-83F0266275FB}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{294FD171-9536-474C-A679-83F0266275FB}.DevSteam|x64.Build.0 = DevSteam|x64
+		{294FD171-9536-474C-A679-83F0266275FB}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{294FD171-9536-474C-A679-83F0266275FB}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{758DF7DF-A8B1-4409-B79A-018E542B7251}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{758DF7DF-A8B1-4409-B79A-018E542B7251}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{758DF7DF-A8B1-4409-B79A-018E542B7251}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -472,6 +529,12 @@ Global
 		{758DF7DF-A8B1-4409-B79A-018E542B7251}.Steam|x64.Build.0 = Steam|Any CPU
 		{758DF7DF-A8B1-4409-B79A-018E542B7251}.Steam|x86.ActiveCfg = Steam|Any CPU
 		{758DF7DF-A8B1-4409-B79A-018E542B7251}.Steam|x86.Build.0 = Steam|Any CPU
+		{758DF7DF-A8B1-4409-B79A-018E542B7251}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{758DF7DF-A8B1-4409-B79A-018E542B7251}.DevSteam|x86.Build.0 = DevSteam|x86
+		{758DF7DF-A8B1-4409-B79A-018E542B7251}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{758DF7DF-A8B1-4409-B79A-018E542B7251}.DevSteam|x64.Build.0 = DevSteam|x64
+		{758DF7DF-A8B1-4409-B79A-018E542B7251}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{758DF7DF-A8B1-4409-B79A-018E542B7251}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -508,6 +571,12 @@ Global
 		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.Steam|x64.Build.0 = Steam|Any CPU
 		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.Steam|x86.ActiveCfg = Steam|Any CPU
 		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.Steam|x86.Build.0 = Steam|Any CPU
+		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.DevSteam|x86.Build.0 = DevSteam|x86
+		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.DevSteam|x64.Build.0 = DevSteam|x64
+		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{69DD5830-C682-49FB-B1A5-D2A506EEA06B}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -544,6 +613,12 @@ Global
 		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.Steam|x64.Build.0 = Steam|Any CPU
 		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.Steam|x86.ActiveCfg = Steam|Any CPU
 		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.Steam|x86.Build.0 = Steam|Any CPU
+		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.DevSteam|x86.Build.0 = DevSteam|x86
+		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.DevSteam|x64.Build.0 = DevSteam|x64
+		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{5FC5E9C5-F439-43AA-92AF-9B7554D6FA13}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{98040E8A-F08E-45F8-956F-6480C8272049}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{98040E8A-F08E-45F8-956F-6480C8272049}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{98040E8A-F08E-45F8-956F-6480C8272049}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -580,6 +655,12 @@ Global
 		{98040E8A-F08E-45F8-956F-6480C8272049}.Steam|x64.Build.0 = Steam|Any CPU
 		{98040E8A-F08E-45F8-956F-6480C8272049}.Steam|x86.ActiveCfg = Steam|Any CPU
 		{98040E8A-F08E-45F8-956F-6480C8272049}.Steam|x86.Build.0 = Steam|Any CPU
+		{98040E8A-F08E-45F8-956F-6480C8272049}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{98040E8A-F08E-45F8-956F-6480C8272049}.DevSteam|x86.Build.0 = DevSteam|x86
+		{98040E8A-F08E-45F8-956F-6480C8272049}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{98040E8A-F08E-45F8-956F-6480C8272049}.DevSteam|x64.Build.0 = DevSteam|x64
+		{98040E8A-F08E-45F8-956F-6480C8272049}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{98040E8A-F08E-45F8-956F-6480C8272049}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -616,6 +697,12 @@ Global
 		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.Steam|x64.Build.0 = Steam|Any CPU
 		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.Steam|x86.ActiveCfg = Steam|Any CPU
 		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.Steam|x86.Build.0 = Steam|Any CPU
+		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.DevSteam|x86.Build.0 = DevSteam|x86
+		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.DevSteam|x64.Build.0 = DevSteam|x64
+		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{1DC5B4C4-6902-4659-AE7E-17FDA0403DEB}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.Debug|x64.ActiveCfg = Debug|x64
@@ -652,6 +739,12 @@ Global
 		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.Steam|x64.Build.0 = Debug|x64
 		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.Steam|x86.ActiveCfg = Debug|x86
 		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.Steam|x86.Build.0 = Debug|x86
+		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.DevSteam|x86.Build.0 = DevSteam|x86
+		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.DevSteam|x64.Build.0 = DevSteam|x64
+		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{7AEE19FA-A4F8-4ACA-9E39-401AA1F603C2}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -688,6 +781,12 @@ Global
 		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Steam|x64.Build.0 = Debug|Any CPU
 		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Steam|x86.ActiveCfg = Debug|Any CPU
 		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.Steam|x86.Build.0 = Debug|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevSteam|x86.Build.0 = DevSteam|x86
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevSteam|x64.Build.0 = DevSteam|x64
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{9BCD0764-9C16-4A2A-B153-C676FEF38887}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -724,6 +823,12 @@ Global
 		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Steam|x64.Build.0 = Debug|Any CPU
 		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Steam|x86.ActiveCfg = Debug|Any CPU
 		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.Steam|x86.Build.0 = Debug|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevSteam|x86.Build.0 = DevSteam|x86
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevSteam|x64.Build.0 = DevSteam|x64
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{2BDEB8C6-F22D-43EA-A309-B3387A803689}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -760,6 +865,12 @@ Global
 		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Steam|x64.Build.0 = Debug|Any CPU
 		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Steam|x86.ActiveCfg = Debug|Any CPU
 		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.Steam|x86.Build.0 = Debug|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevSteam|x86.Build.0 = DevSteam|x86
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevSteam|x64.Build.0 = DevSteam|x64
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{8EF48E6C-8219-4EE2-87C6-5176D8D092E6}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -796,6 +907,12 @@ Global
 		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Steam|x64.Build.0 = Debug|Any CPU
 		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Steam|x86.ActiveCfg = Debug|Any CPU
 		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.Steam|x86.Build.0 = Debug|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevSteam|x86.Build.0 = DevSteam|x86
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevSteam|x64.Build.0 = DevSteam|x64
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{7A12C96B-8B5C-45E1-9EF6-0B1DA7F270DE}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -832,6 +949,12 @@ Global
 		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.Steam|x64.Build.0 = Debug|Any CPU
 		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.Steam|x86.ActiveCfg = Debug|Any CPU
 		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.Steam|x86.Build.0 = Debug|Any CPU
+		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.DevSteam|x86.Build.0 = DevSteam|x86
+		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.DevSteam|x64.Build.0 = DevSteam|x64
+		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{1249EE2B-EB0D-411C-B311-53A7A22B7743}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 		{CE1C8DC9-E26B-4BBB-AB87-34054DE34814}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{CE1C8DC9-E26B-4BBB-AB87-34054DE34814}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{CE1C8DC9-E26B-4BBB-AB87-34054DE34814}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -1048,6 +1171,12 @@ Global
 		{6B71BBFF-27D2-4A65-9357-1376356B5ECC}.Steam|x64.Build.0 = Debug|Any CPU
 		{6B71BBFF-27D2-4A65-9357-1376356B5ECC}.Steam|x86.ActiveCfg = Debug|Any CPU
 		{6B71BBFF-27D2-4A65-9357-1376356B5ECC}.Steam|x86.Build.0 = Debug|Any CPU
+		{CE1C8DC9-E26B-4BBB-AB87-34054DE34814}.DevSteam|x86.ActiveCfg = DevSteam|x86
+		{CE1C8DC9-E26B-4BBB-AB87-34054DE34814}.DevSteam|x86.Build.0 = DevSteam|x86
+		{CE1C8DC9-E26B-4BBB-AB87-34054DE34814}.DevSteam|x64.ActiveCfg = DevSteam|x64
+		{CE1C8DC9-E26B-4BBB-AB87-34054DE34814}.DevSteam|x64.Build.0 = DevSteam|x64
+		{CE1C8DC9-E26B-4BBB-AB87-34054DE34814}.DevSteam|Any CPU.ActiveCfg = DevSteam|Any CPU
+		{CE1C8DC9-E26B-4BBB-AB87-34054DE34814}.DevSteam|Any CPU.Build.0 = DevSteam|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 5 - 0
src/PixiEditor/App.xaml.cs

@@ -1,7 +1,10 @@
 using System.IO;
 using System.Text.RegularExpressions;
 using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Interop;
 using System.Windows.Media;
+using System.Windows.Threading;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Models.AppExtensions;
 using PixiEditor.Helpers.UI;
@@ -12,6 +15,7 @@ using PixiEditor.Models.Enums;
 using PixiEditor.Platform;
 using PixiEditor.Views;
 using PixiEditor.Views.Dialogs;
+using Timer = System.Timers.Timer;
 
 namespace PixiEditor;
 
@@ -59,6 +63,7 @@ internal partial class App : Application
         extensionLoader.LoadExtensions();
 
         MainWindow = new MainWindow(extensionLoader);
+
         MainWindow.Show();
     }
 

+ 30 - 10
src/PixiEditor/Data/Localization/Languages/ar.json

@@ -137,7 +137,7 @@
   "TOGGLE_REFERENCE_LAYER_POS": "تبديل موضع الطبقة المرجعية",
   "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "تبديل الطبقة المرجعية بين الأعلى أو الأكثر أدناه",
   "RESET_REFERENCE_LAYER_POS": "إعادة تعيين موضع الطبقة المرجعية",
-  "CLIP_CANVAS": "Clip Canvas",
+  "CLIP_CANVAS": "مقطع الصورة",
   "FLIP_IMG_VERTICALLY": "قلب الصورة عموديًا",
   "FLIP_IMG_HORIZONTALLY": "قلب الصورة أفقيًا",
   "FLIP_LAYERS_VERTICALLY": "قلب الطبقات المحددة عموديًا",
@@ -552,13 +552,33 @@
   "SOURCE_NEWER": "مصدر أحدث",
   "SOURCE_UP_TO_DATE": "تم تحديث المصدر",
   "SOURCE_OLDER": "سحابة احدث",
-  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
-  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
-  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
-  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
-  "SHORTCUTS_TITLE": "Shortcuts",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "انقر لاختيار الوان من الطبقة المرجعية.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "انقر لاختيار الوان من الصورة.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "نافذة تصحيح أخطاء الترجمة",
+  "COMMAND_DEBUG_WINDOW_TITLE": "نافذة تصحيح الأوامر",
+  "SHORTCUTS_TITLE": "الاختصارات",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "اسحب المقابض لتوسيع نطاق التحويل. استمر في الضغط على Ctrl واسحب المقبض لتحريك المقبض بحرية. اضغط على مفتاح Shift لتغيير الحجم بشكل متناسب. استمر في الضغط على Alt واسحب المقبض الجانبي للقص. اسحب المقابض الخارجية للتدوير.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "اسحب المقابض لتوسيع نطاق التحويل. اضغط على مفتاح Shift لتغيير الحجم بشكل متناسب. استمر في الضغط على Alt واسحب المقبض الجانبي للقص. اسحب المقابض الخارجية للتدوير.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "اسحب المقابض لتوسيع نطاق التحويل. اضغط على مفتاح Shift لتغيير الحجم بشكل متناسب. اسحب المقابض الخارجية للتدوير.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "اسحب المقابض لتوسيع نطاق التحويل. اضغط على مفتاح Shift لتغيير الحجم بشكل متناسب.",
+  "OPEN_DOCUMENTATION": "فتح الوثائق",
+  "LOCAL_PALETTE_SOURCE_NAME": "محلي",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "لا يمكن أن يبدأ الاسم الفريد للملحق بـ 'pixieditor'.",
+  "ERROR_MISSING_METADATA": "مفتاح البيانات الوصفية للإضافة '{0}' مفقود.",
+  "ERROR_NO_CLASS_ENTRY": "إدخال فئة الامتداد مفقود في المسار '{0}'.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "تجميع إدخال الملحق مفقود في المسار '{0}'.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "إعدادك الحالي لا يسمح بتحميل هذا الملحق. ربما لا تملكه أو لم تقم بتثبيته. يمكنك شرائه هنا '{0}'.",
+  "BUY_SUPPORTER_PACK": "شراء حزمة الداعم",
+  "NEWS": "الأخبار",
+  "DISABLE_NEWS_PANEL": "تعطيل لوحة الأخبار في نافذة بدء التشغيل",
+  "FAILED_FETCH_NEWS": "فشل في جمع الأخبار",
+  "CROP_TO_SELECTION": "اقتصاص للتحديد",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "اقتصاص الصورة للتحديد",
+  "SHOW_CONTEXT_MENU": "عرض القائمة المنبثقة",
+  "ERASE": "محو",
+  "USE_SECONDARY_COLOR": "استخدم اللون الثانوي",
+  "RIGHT_CLICK_MODE": "وضع النقر بزر الماوس الأيمن",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "أضف اللون الأساسي إلى لوح الألوان",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "أضف اللون الأساسي إلى اللوحة الحالية",
+  "COPY_COLOR": "انسخ اللون"
 }

+ 46 - 26
src/PixiEditor/Data/Localization/Languages/cs.json

@@ -8,7 +8,7 @@
   "DISCORD": "Discord",
   "KEY_BINDINGS": "Klávesové zkratky",
   "MISC": "Různé",
-  "SHOW_STARTUP_WINDOW": "Ukazovat spouštěcí okno",
+  "SHOW_STARTUP_WINDOW": "Ukazovat úvodní okno",
   "SHOW_IMAGE_PREVIEW_TASKBAR": "Zobrazit náhled obrázku na hlavním panelu",
   "RECENT_FILE_LENGTH": "Délka seznamu posledních souborů",
   "RECENT_FILE_LENGTH_TOOLTIP": "Kolik dokumentů se objeví pod \"File > Recent\".\nNormálně: 8",
@@ -120,7 +120,7 @@
   "CREATE_MASK": "Vytvořit masku",
   "DELETE_MASK": "Odstranit masku",
   "TOGGLE_MASK": "Přepnout masku",
-  "APPLY_MASK": "Použit masku",
+  "APPLY_MASK": "Použít masku",
   "TOGGLE_VISIBILITY": "Přepnout viditelnost",
   "MOVE_MEMBER_UP": "Posunout člena nahoru",
   "MOVE_MEMBER_UP_DESCRIPTIVE": "Pohnout vybranou vrstvu nebo složku nahoru",
@@ -255,7 +255,7 @@
   "SETTINGS": "Nastavení",
   "OPEN_SETTINGS": "Otevřít nastavení",
   "OPEN_SETTINGS_DESCRIPTIVE": "Otevřít okno nastavení",
-  "OPEN_STARTUP_WINDOW": "Otevřít spouštěcí okno",
+  "OPEN_STARTUP_WINDOW": "Otevřít úvodní okno",
   "OPEN_SHORTCUT_WINDOW": "Otevřít okno klávesových zkratek",
   "OPEN_ABOUT_WINDOW": "Otevřít okno s informacemi",
   "OPEN_NAVIGATION_WINDOW": "Otevřít okno navigace",
@@ -537,28 +537,48 @@
   "NAVIGATOR_PICK_ACTION_DISPLAY": "Pravím tlačítkem myši vybereš barvu, když budeš držet \"Shift\" a zmáčkneš pravé tlačítko myší, zkopíruješ barvu do schránky",
   "OPEN_FILE_FROM_CLIPBOARD": "Otevřít ze schránky",
   "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Otevřít ze schránky",
-  "OPEN_LOCALIZATION_DATA": "Do you want to open the LocalizationData.json?\nThe updated date has been put in the clipboard.\nNote that changes wont be applied until a restart",
-  "DOWNLOADING_LANGUAGE_FAILED": "Downloading language failed.\nAPI Key might have been overused.",
-  "LOCALIZATION_DATA_NOT_FOUND": "Localization data path not found",
-  "APPLY": "Apply",
-  "UPDATE_SOURCE": "Update source",
-  "COPY_TO_CLIPBOARD": "Copy to clipboard",
-  "LANGUAGE_FILE_NOT_FOUND": "Language file not found.\nLooking for {0}",
-  "PROJECT_ROOT_NOT_FOUND": "PixiEditor Project root not found.\nLooking for PixiEditor.csproj",
-  "LOCALIZATION_FOLDER_NOT_FOUND": "Localization folder not found.\nLooking for /Data/Localization",
-  "SELECT_A_LANGUAGE": "Select a language",
-  "DONE": "Done",
-  "SOURCE_UNSET_OR_MISSING": "Source missing/unset",
+  "OPEN_LOCALIZATION_DATA": "Chceš otevřít LocalizationData.json?\nAktualizované datum bylo vloženo do schránky.\nZměnu budou aplikovány až po restartu aplikace.",
+  "DOWNLOADING_LANGUAGE_FAILED": "Stahování jazykového souboru se nepovedlo.\nAPI Klíč byl nejspíš používán až moc.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Cesta k lokalizačním datům nebyla nalezena",
+  "APPLY": "Použít",
+  "UPDATE_SOURCE": "Aktualizovat zdroj",
+  "COPY_TO_CLIPBOARD": "Zkopírovat do schránky ",
+  "LANGUAGE_FILE_NOT_FOUND": "Jazykoví soubor nebyl nalezen.\nHledá se {0}",
+  "PROJECT_ROOT_NOT_FOUND": "Zdroj projektu PixiEditor nebyl nalezen.\nHledání souboru PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Lokalizační soubor nebyl nalezen.\n",
+  "SELECT_A_LANGUAGE": "Vybrat jazyk",
+  "DONE": "Hotovo",
+  "SOURCE_UNSET_OR_MISSING": "Zdroj chybí/není nastaven",
   "SOURCE_NEWER": "Source newer",
-  "SOURCE_UP_TO_DATE": "Source is up to date",
-  "SOURCE_OLDER": "Cloud newer",
-  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
-  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
-  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
-  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
-  "SHORTCUTS_TITLE": "Shortcuts",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+  "SOURCE_UP_TO_DATE": "Zdroj je aktuální",
+  "SOURCE_OLDER": "Novější cloud",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Klikni pro výběr barvy z referenční vrstvy.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Klikni pro výběr barvy z canvasu.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Lokalizační Debug okno",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Okno Command debug",
+  "SHORTCUTS_TITLE": "Zkratky",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Přetažením úchytů transformujte měřítko. Podržením klávesy Ctrl a přetažením úchytu jej můžete libovolně přesouvat. Podržením klávesy Shift proporcionálně škálujete. Podržením klávesy Alt a tažením bočního úchytu stříháte. Přetažením vnějších úchytů otáčíte.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Přetažením úchytů transformujte měřítko. Pro proporcionální škálování podržte Shift. Podržte Alt a přetáhněte boční úchyt pro střih. Tažením vnějších úchytů otáčíte.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Přetažením úchytů transformujte měřítko. Pro proporcionální škálování podržte Shift. Přetažením vnějších úchytů otáčíte.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Přetažením úchytů změňte měřítko transformace. Pro proporcionální škálování podržte klávesu Shift.",
+  "OPEN_DOCUMENTATION": "Otevřít dokumentaci",
+  "LOCAL_PALETTE_SOURCE_NAME": "Lokální",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "Název rozšíření nesmí začínat slovem \"pixieditor\".",
+  "ERROR_MISSING_METADATA": "Chybí klíč k metadatům rozšíření \"{0}\".",
+  "ERROR_NO_CLASS_ENTRY": "Chybí položka třídy rozšíření v cestě '{0}'.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "Chybí sestava položek rozšíření na cestě '{0}'.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "Aktuální konfigurace neumožňuje toto rozšíření načíst. Možná ho nemáte nebo ho nemáte nainstalované. Můžete si jej zakoupit zde: \"{0}\".",
+  "BUY_SUPPORTER_PACK": "Koupit podporovací balíček",
+  "NEWS": "Novinky",
+  "DISABLE_NEWS_PANEL": "Vypnout panel Novinek v úvodním okně",
+  "FAILED_FETCH_NEWS": "Nepodařilo se načíst novinky",
+  "CROP_TO_SELECTION": "Oříznout do výběru",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "Oříznout obrázek do výběru",
+  "SHOW_CONTEXT_MENU": "Zobrazit kontext menu",
+  "ERASE": "Vygumovat",
+  "USE_SECONDARY_COLOR": "Použít vedlejší barvu",
+  "RIGHT_CLICK_MODE": "Režim pravého tlačítka",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "Přidat hlavní barvu do palety",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Přidat hlavní barvu do současné palety",
+  "COPY_COLOR": "Zkopírovat barvu"
 }

+ 48 - 28
src/PixiEditor/Data/Localization/Languages/de.json

@@ -183,7 +183,7 @@
   "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "Ersetzte Zweitfarbe mit Primärfarbe",
   "REPLACE_PRIMARY_BY_SECONDARY": "Farbe mit Zweitfarbe ersetzen",
   "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Primärfarbe mit Zweitfarbe ersetzen",
-  "OPEN_PALETTE_BROWSER": "Palette Browser öffnen",
+  "OPEN_PALETTE_BROWSER": "Paletten Browser öffnen",
   "OVERWRITE_PALETTE_CONSENT": "Palette '{0}' existiert bereits, möchtest du sie ersetzten?",
   "PALETTE_EXISTS": "Palette existiert bereits",
   "REPLACE_PALETTE_CONSENT": "Aktuelle Palette mit anderer ersetzten?",
@@ -302,7 +302,7 @@
   "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Zeichne auf Pixel um sie heller zu machen. Halte Strg um sie zu dunkler zu machen.",
   "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Zeichne auf Pixel um sie dunkler zu machen. Lasse Strg los um sie zu heller zu machen.",
   "COLOR_PICKER_TOOLTIP": "Pickt die Farbe von der Leinwand. ({0})",
-  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Klick um eine Farbe zu picken. Halte Strg um die Referenzebene zu verstecken.",
+  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Klicke um eine Farbe zu picken. Halte Strg um die Referenzebene zu verstecken.",
   "ELLIPSE_TOOL_TOOLTIP": "Zeichnet eine Ellipse auf die Leinwand ({0}). Halte die Umschalttaste/Shift um einen Kreis zu zeichnen.",
   "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Klicke und halte die Maus um eine Ellipse zu zeichnen. Halte die Umschalttaste/Shift um einen Kreis zu zeichnen.",
   "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Klicke und bewege die Maus um einen Kreis zu zeichnen.",
@@ -421,13 +421,13 @@
   "ADD_COLOR_TO_PALETTE": "Fügt Farbe der Palette zu",
   "USE_IN_CURRENT_IMAGE": "In aktuellen Bild benutzten",
   "ADD_TO_FAVORITES": "Zu Favoriten hinzufügen",
-  "BROWSE_PALETTES": "Palettes browsen",
+  "BROWSE_PALETTES": "Paletten durchsuchen",
   "LOAD_PALETTE": "Palette laden",
   "SAVE_PALETTE": "Palette speichern",
   "FAVORITES": "Favoriten",
   "ADD_FROM_CURRENT_PALETTE": "Aus aktueller Palette hinzufügen",
   "OPEN_PALETTES_DIR_TOOLTIP": "Öffnet Palettenverzeichnis in Explorer",
-  "BROWSE_ON_LOSPEC_TOOLTIP": "Palettes auf Lospec browsen",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "Paletten auf Lospec dursuchen",
   "IMPORT_FROM_FILE_TOOLTIP": "Aus Datei importieren",
   "TOP_LEFT": "Oben links",
   "TOP_CENTER": "Oben zentral",
@@ -537,28 +537,48 @@
   "NAVIGATOR_PICK_ACTION_DISPLAY": "Rechtsklick um farbe zu picken, Shift + Rechtsklick um sie in die Zwischenablage zu kopieren",
   "OPEN_FILE_FROM_CLIPBOARD": "Aus Zwischenablage öffnen",
   "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Datei aus Zwischenablage öffnen",
-  "OPEN_LOCALIZATION_DATA": "Do you want to open the LocalizationData.json?\nThe updated date has been put in the clipboard.\nNote that changes wont be applied until a restart",
-  "DOWNLOADING_LANGUAGE_FAILED": "Downloading language failed.\nAPI Key might have been overused.",
-  "LOCALIZATION_DATA_NOT_FOUND": "Localization data path not found",
-  "APPLY": "Apply",
-  "UPDATE_SOURCE": "Update source",
-  "COPY_TO_CLIPBOARD": "Copy to clipboard",
-  "LANGUAGE_FILE_NOT_FOUND": "Language file not found.\nLooking for {0}",
-  "PROJECT_ROOT_NOT_FOUND": "PixiEditor Project root not found.\nLooking for PixiEditor.csproj",
-  "LOCALIZATION_FOLDER_NOT_FOUND": "Localization folder not found.\nLooking for /Data/Localization",
-  "SELECT_A_LANGUAGE": "Select a language",
-  "DONE": "Done",
-  "SOURCE_UNSET_OR_MISSING": "Source missing/unset",
-  "SOURCE_NEWER": "Source newer",
-  "SOURCE_UP_TO_DATE": "Source is up to date",
-  "SOURCE_OLDER": "Cloud newer",
-  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
-  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
-  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
-  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
-  "SHORTCUTS_TITLE": "Shortcuts",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+  "OPEN_LOCALIZATION_DATA": "Möchtest du die LocalizationData.json öffnen?\nDas neue Datum wurde in die Zwischenablage kopiert.\nÄnderung werden bis neustart nicht angwendet",
+  "DOWNLOADING_LANGUAGE_FAILED": "Fehler beim herunterladen der Sprache.\nAPI Schlüssel ist eventuell zu oft benutzt.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Lokalisierungspfad nicht gefunden",
+  "APPLY": "Anwenden",
+  "UPDATE_SOURCE": "Quellcode aktualisieren",
+  "COPY_TO_CLIPBOARD": "Kopieren",
+  "LANGUAGE_FILE_NOT_FOUND": "Sprachdatei nicht gefunden.\nSuche nach {0}",
+  "PROJECT_ROOT_NOT_FOUND": "PixiEditor Project root nicht gefunden.\nSuche nach PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Localization Ordner nicht gefunden.\nSuche nach /Data/Localization",
+  "SELECT_A_LANGUAGE": "Sprache auswählen",
+  "DONE": "Fertig",
+  "SOURCE_UNSET_OR_MISSING": "Quellcode fehlt",
+  "SOURCE_NEWER": "Quellcode neuer",
+  "SOURCE_UP_TO_DATE": "Quellcode aktuell",
+  "SOURCE_OLDER": "Cloud neuer",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Klicke um eine Farbe von der Referenzebene zu picken.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Klicke um eine Farbe von der Leinwand zu picken.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Lokalisierungs Debug Fenster",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Fenster",
+  "SHORTCUTS_TITLE": "Tastenkürzel",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Ziehe die griffe um zu skalieren. Halte Strg and ziehe einen Griff um ihn frei zu bewegen. Halte Shift um proportional zu skalieren. Halte Alt und ziehe seitliche Griffe um zu kippen. Ziehe außerhalb der Griffe um zu rotieren.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Ziehe die griffe um zu skalieren. Halte Shift um proportional zu skalieren. Halte Alt und ziehe seitliche Griffe um zu kippen. Ziehe außerhalb der Griffe um zu rotieren.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Ziehe die griffe um zu skalieren. Halte Shift um proportional zu skalieren. Ziehe außerhalb der Griffe um zu rotieren.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Ziehe",
+  "OPEN_DOCUMENTATION": "Dokumentation öffnen",
+  "LOCAL_PALETTE_SOURCE_NAME": "Lokal",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "Der einmalige name der Erweiterung kann nicht mit 'pixieditor' anfangen.",
+  "ERROR_MISSING_METADATA": "Erweiterungs metadata name '{0}' fehlt.",
+  "ERROR_NO_CLASS_ENTRY": "Erweiterungs klassen eingang fehlt bei dem pfad '{0}'.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "Erweiterungs Eingangsbibliothek fehlt bei dem pfad '{0}'.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "Dein aktuelles setup erlaubt es dir nicht die Erweiterung zu laden. Eventuell gehört sie dir nicht oder du hast sie nicht installiert. Du kannst sie hier kaufen '{0}'.",
+  "BUY_SUPPORTER_PACK": "Unterstützerpaket kaufen",
+  "NEWS": "Neuigkeiten",
+  "DISABLE_NEWS_PANEL": "Neuigkeiten aus Startfenster verstecken",
+  "FAILED_FETCH_NEWS": "Fehler beim holen der Neuigkeiten",
+  "CROP_TO_SELECTION": "Auf Auswahl zuschneiden",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "Bild auf Auswahl zuschneiden",
+  "SHOW_CONTEXT_MENU": "Kontextmenü zeigen",
+  "ERASE": "Radieren",
+  "USE_SECONDARY_COLOR": "Zweitfarbe benutzten",
+  "RIGHT_CLICK_MODE": "Rechtsklick Modus",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "Primärfarbe zu Palette hinzufügen",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Primärfarbe der Farbpalette hinzufügen",
+  "COPY_COLOR": "Copy color"
 }

+ 6 - 1
src/PixiEditor/Data/Localization/Languages/en.json

@@ -584,5 +584,10 @@
   "USE_SECONDARY_COLOR": "Use secondary color",
   "RIGHT_CLICK_MODE": "Right click mode",
   "ADD_PRIMARY_COLOR_TO_PALETTE": "Add primary color to palette",
-  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Add primary color to current palette"
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Add primary color to current palette",
+  
+  "COPY_COLOR": "Copy color",
+
+  "FAILED_DOWNLOADING_TITLE": "Downloading update failed",
+  "FAILED_DOWNLOADING": "Failed downloading the update, you might not have enough space on the disk"
 }

+ 21 - 1
src/PixiEditor/Data/Localization/Languages/es.json

@@ -560,5 +560,25 @@
   "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
   "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
   "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally.",
+  "OPEN_DOCUMENTATION": "Open documentation",
+  "LOCAL_PALETTE_SOURCE_NAME": "Local",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "Extension unique name cannot start with 'pixieditor'.",
+  "ERROR_MISSING_METADATA": "Extension metadata key '{0}' is missing.",
+  "ERROR_NO_CLASS_ENTRY": "Extension class entry is missing on path '{0}'.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "Extension entry assembly is missing on path '{0}'.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "Your current setup doesn't allow loading this extension. Perhaps you don't own it or don't have it installed. You can purchase it here '{0}'.",
+  "BUY_SUPPORTER_PACK": "Buy Supporter Pack",
+  "NEWS": "News",
+  "DISABLE_NEWS_PANEL": "Disable News panel in startup window",
+  "FAILED_FETCH_NEWS": "Failed to fetch news",
+  "CROP_TO_SELECTION": "Crop to selection",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "Crop image to selection",
+  "SHOW_CONTEXT_MENU": "Show context menu",
+  "ERASE": "Erase",
+  "USE_SECONDARY_COLOR": "Use secondary color",
+  "RIGHT_CLICK_MODE": "Right click mode",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "Add primary color to palette",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Add primary color to current palette",
+  "COPY_COLOR": "Copy color"
 }

+ 21 - 1
src/PixiEditor/Data/Localization/Languages/hu.json

@@ -560,5 +560,25 @@
   "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
   "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
   "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally.",
+  "OPEN_DOCUMENTATION": "Open documentation",
+  "LOCAL_PALETTE_SOURCE_NAME": "Local",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "Extension unique name cannot start with 'pixieditor'.",
+  "ERROR_MISSING_METADATA": "Extension metadata key '{0}' is missing.",
+  "ERROR_NO_CLASS_ENTRY": "Extension class entry is missing on path '{0}'.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "Extension entry assembly is missing on path '{0}'.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "Your current setup doesn't allow loading this extension. Perhaps you don't own it or don't have it installed. You can purchase it here '{0}'.",
+  "BUY_SUPPORTER_PACK": "Buy Supporter Pack",
+  "NEWS": "News",
+  "DISABLE_NEWS_PANEL": "Disable News panel in startup window",
+  "FAILED_FETCH_NEWS": "Failed to fetch news",
+  "CROP_TO_SELECTION": "Crop to selection",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "Crop image to selection",
+  "SHOW_CONTEXT_MENU": "Show context menu",
+  "ERASE": "Erase",
+  "USE_SECONDARY_COLOR": "Use secondary color",
+  "RIGHT_CLICK_MODE": "Right click mode",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "Add primary color to palette",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Add primary color to current palette",
+  "COPY_COLOR": "Copy color"
 }

+ 584 - 0
src/PixiEditor/Data/Localization/Languages/it.json

@@ -0,0 +1,584 @@
+{
+  "RECENT_FILES": "File recenti",
+  "OPEN_FILE": "Apri file",
+  "NEW_FILE": "Nuovo",
+  "RECENT_EMPTY_TEXT": "Nessun file recente",
+  "LANGUAGE": "Lingua",
+  "GENERAL": "Generale",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "Comandi",
+  "MISC": "Varie",
+  "SHOW_STARTUP_WINDOW": "Mostra schermata iniziale",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "Mostra l'anteprima dell'immagine nella barra delle applicazioni",
+  "RECENT_FILE_LENGTH": "Lunghezza elenco file recenti",
+  "RECENT_FILE_LENGTH_TOOLTIP": "Quanti documenti vengono visualizzati in File > Recenti. Predefinito: 8",
+  "DEFAULT_NEW_SIZE": "Dimensione predefinita di un nuovo file",
+  "WIDTH": "Larghezza",
+  "HEIGHT": "Altezza",
+  "TOOLS": "Strumenti",
+  "ENABLE_SHARED_TOOLBAR": "Abilita preferenze globali per la barra degli strumenti",
+  "AUTOMATIC_UPDATES": "Aggiornamenti automatici",
+  "CHECK_FOR_UPDATES": "Controlla aggiornamenti all'avvio",
+  "UPDATE_STREAM": "Aggiorna stream",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "I canali di aggiornamento possono essere cambiati solo nella versione standalone (scaricata dal sito https://pixieditor.net).\nSteam e Microsoft Store gestiscono gli aggiornamenti separatamente.",
+  "DEBUG": "Debug",
+  "ENABLE_DEBUG_MODE": "Abilita modalità Debug",
+  "OPEN_CRASH_REPORTS_DIR": "Apri cartella crash reports",
+  "DISCORD_RICH_PRESENCE": "Rich Presence",
+  "ENABLED": "Abilita",
+  "SHOW_IMAGE_NAME": "Mostra nome immagine",
+  "SHOW_IMAGE_SIZE": "Mostra dimensione immagine",
+  "SHOW_LAYER_COUNT": "Mostra numero livelli",
+  "FILE": "File",
+  "RECENT": "Recente",
+  "OPEN": "Apri",
+  "SAVE_PIXI": "Salva (.pixi)",
+  "SAVE_AS_PIXI": "Salva con nome...\n (.pixi)",
+  "EXPORT_IMG": "Esporta (.png, .jpg, etc.)",
+  "EDIT": "Modifica",
+  "EXIT": "Esci",
+  "PERCENTAGE": "Percentuale",
+  "ABSOLUTE": "Assoluto",
+  "PRESERVE_ASPECT_RATIO": "Mantieni le proporzioni",
+  "ANCHOR_POINT": "Punto di ancoraggio",
+  "RESIZE_IMAGE": "Ridimensiona immagine",
+  "RESIZE": "Ridimensiona",
+  "DOCUMENTATION": "Documentazione",
+  "WEBSITE": "Sito internet",
+  "OPEN_WEBSITE": "Apri sito internet",
+  "REPOSITORY": "Repository",
+  "OPEN_REPOSITORY": "Apri repository",
+  "LICENSE": "Licenza",
+  "OPEN_LICENSE": "Apri licenza",
+  "THIRD_PARTY_LICENSES": "Licenze di terze parti",
+  "OPEN_THIRD_PARTY_LICENSES": "Apri licenza di terze parti",
+  "APPLY_TRANSFORM": "Applica trasformazione",
+  "INCREASE_TOOL_SIZE": "Aumenta dimensione strumento",
+  "DECREASE_TOOL_SIZE": "Diminuisci dimensione strumento",
+  "TO_INSTALL_UPDATE": "per installare l'aggiornamento {0}",
+  "DOWNLOADING_UPDATE": "Download in corso...",
+  "UPDATE_READY": "L'aggiornamento è pronto per essere installato. Vuoi installarlo ora?",
+  "NEW_UPDATE": "Nuovo aggiornamento",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Impossibile aggiornare senza privilegi di amministratore. Si prega di eseguire PixiEditor come amministratore.",
+  "INSUFFICIENT_PERMISSIONS": "Permessi insufficienti",
+  "UPDATE_CHECK_FAILED": "Controllo degli aggiornamenti non riuscito",
+  "COULD_NOT_CHECK_FOR_UPDATES": "Impossibile verificare se è disponibile un aggiornamento.",
+  "VERSION": "Versione {0}",
+  "OPEN_TEMP_DIR": "Apri cartella temporanea",
+  "OPEN_LOCAL_APPDATA_DIR": "Apri cartella Local AppData",
+  "OPEN_ROAMING_APPDATA_DIR": "Apri cartella Roaming AppData",
+  "OPEN_INSTALLATION_DIR": "Apri cartella di installazione",
+  "DUMP_ALL_COMMANDS": "Esporta tutti i comandi",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Esporta tutti i comandi in un file di testo",
+  "CRASH": "Crash",
+  "CRASH_APP": "Crash applicazione",
+  "DELETE_USR_PREFS": "Elimina preferenze utente (Roaming AppData)",
+  "DELETE_SHORTCUT_FILE": "Elimina file delle scorciatoie (Roaming AppData)",
+  "DELETE_EDITOR_DATA": "Elimina i dati dell'editor (AppData locale)",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "Genera template configurazione comandi",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Genera template in JSON della configurazione comandi",
+  "VALIDATE_SHORTCUT_MAP": "Convalidare mappa scorciatoie",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Convalida mappa scorciatoie",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "Tasti non assegnati: {0}\nComandi sconosciuti: {1}",
+  "RESULT": "Risultato",
+  "CLEAR_RECENT_DOCUMENTS": "Svuota elenco documenti recenti",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Svuota l'elenco dei documenti recenti",
+  "OPEN_CMD_DEBUG_WINDOW": "Debug dei comandi",
+  "PATH_DOES_NOT_EXIST": "{0} non esiste.",
+  "LOCATION_DOES_NOT_EXIST": "Il percorso non esiste.",
+  "FILE_NOT_FOUND": "File non trovato.",
+  "ARE_YOU_SURE": "Confermi?",
+  "ARE_YOU_SURE_PATH_FULL_PATH": "Confermi di voler eliminare {0}?\nQuesti dati andranno persi per tutte le installazioni.\n(Percorso completo: {1})",
+  "FAILED_TO_OPEN_FILE": "Impossibile aprire il file",
+  "OLD_FILE_FORMAT": "Formato obsoleto",
+  "OLD_FILE_FORMAT_DESCRIPTION": "Questo file .pixi utilizza il vecchio formato,\n  che non è più supportato e non può essere aperto.",
+  "NOTHING_FOUND": "Nessun risultato",
+  "EXPORT": "Esporta",
+  "EXPORT_IMAGE": "Esporta immagine",
+  "IMPORT": "Importa",
+  "SHORTCUT_TEMPLATES": "Template delle scorciatoie",
+  "RESET_ALL": "Resetta tutto",
+  "LAYER": "Livello",
+  "LAYER_DELETE_SELECTED": "Elimina livello/cartella attiva",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Elimina il livello o la cartella attivi",
+  "LAYER_DELETE_ALL_SELECTED": "Elimina tutti i livelli/cartelle selezionati",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Elimina tutti i livelli e/o le cartelle selezionati",
+  "DELETE_SELECTED_PIXELS": "Elimina i pixel selezionati",
+  "NEW_FOLDER": "Nuova cartella",
+  "CREATE_NEW_FOLDER": "Crea nuova cartella",
+  "NEW_LAYER": "Nuovo livello",
+  "CREATE_NEW_LAYER": "Crea nuovo livello",
+  "NEW_IMAGE": "Nuova immagine",
+  "CREATE_NEW_IMAGE": "Crea nuova immagine",
+  "SAVE": "Salva",
+  "SAVE_AS": "Salva come...",
+  "IMAGE": "Immagine",
+  "SAVE_IMAGE": "Salva immagine",
+  "SAVE_IMAGE_AS": "Salva immagine con nome",
+  "DUPLICATE": "Duplica",
+  "DUPLICATE_SELECTED_LAYER": "Duplica il livello selezionato",
+  "CREATE_MASK": "Crea maschera",
+  "DELETE_MASK": "Elimina maschera",
+  "TOGGLE_MASK": "Attiva/disattiva maschera",
+  "APPLY_MASK": "Applica maschera",
+  "TOGGLE_VISIBILITY": "Attiva/disattiva la visibilità",
+  "MOVE_MEMBER_UP": "Sposta livello in alto",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "Sposta verso l'alto il livello o la cartella selezionato/a",
+  "MOVE_MEMBER_DOWN": "Sposta livello in basso",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Sposta verso il basso il livello o la cartella selezionato/a",
+  "MERGE_ALL_SELECTED_LAYERS": "Unisci tutti i livelli selezionati",
+  "MERGE_WITH_ABOVE": "Unisci livello con quello sovrastante",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "Unisci il livello selezionato con quello sovrastante",
+  "MERGE_WITH_BELOW": "Unisci livello con quello sottostante",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "Unisci il livello selezionato con quello sottostante",
+  "ADD_REFERENCE_LAYER": "Aggiungi livello di riferimento",
+  "DELETE_REFERENCE_LAYER": "Elimina livello di riferimento",
+  "TRANSFORM_REFERENCE_LAYER": "Trasforma il livello di riferimento",
+  "TOGGLE_REFERENCE_LAYER_POS": "Attiva/disattiva la posizione del livello di riferimento",
+  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Alterna il livello di riferimento tra il più in alto o il più in basso",
+  "RESET_REFERENCE_LAYER_POS": "Ripristina la posizione del livello di riferimento",
+  "CLIP_CANVAS": "Ritaglia tela",
+  "FLIP_IMG_VERTICALLY": "Capovolgi immagine verticalmente",
+  "FLIP_IMG_HORIZONTALLY": "Capovolgi immagine orizzontalmente",
+  "FLIP_LAYERS_VERTICALLY": "Capovolgi i livelli selezionati verticalmente",
+  "FLIP_LAYERS_HORIZONTALLY": "Capovolgi i livelli selezionati orizzontalmente",
+  "ROT_IMG_90": "Ruota immagine di 90 gradi",
+  "ROT_IMG_180": "Ruota immagine di 180 gradi",
+  "ROT_IMG_-90": "Ruota immagine di -90 gradi",
+  "ROT_LAYERS_90": "Ruota i livelli selezionati di 90 gradi",
+  "ROT_LAYERS_180": "Ruota i livelli selezionati di 180 gradi",
+  "ROT_LAYERS_-90": "Ruota i livelli selezionati di -90 gradi",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "Attiva/disattiva asse simmetrico verticale",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "Attiva/disattiva asse simmetrico orizzontale",
+  "DELETE_PIXELS": "Elimina i pixel",
+  "DELETE_PIXELS_DESCRIPTIVE": "Elimina i pixel selezionati",
+  "RESIZE_DOCUMENT": "Ridimensiona il documento",
+  "RESIZE_CANVAS": "Ridimensiona tela",
+  "CENTER_CONTENT": "Centra contenuto",
+  "CUT": "Taglia",
+  "CUT_DESCRIPTIVE": "Taglia area/livelli selezionati",
+  "PASTE": "Incolla",
+  "PASTE_DESCRIPTIVE": "Incolla il contenuto degli appunti",
+  "PASTE_AS_NEW_LAYER": "Incolla come nuovo livello",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Incolla dagli appunti come nuovo livello",
+  "PASTE_REFERENCE_LAYER": "Incolla livello di riferimento",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Incolla il contenuto degli appunti come livello di riferimento",
+  "PASTE_COLOR": "Incolla colore",
+  "PASTE_COLOR_DESCRIPTIVE": "Incolla il colore dagli appunti",
+  "PASTE_COLOR_SECONDARY": "Incolla il colore secondario",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Incolla il colore secondario dagli appunti",
+  "CLIPBOARD": "Appunti",
+  "COPY": "Copia",
+  "COPY_DESCRIPTIVE": "Copia negli appunti",
+  "COPY_COLOR_HEX": "Copia colore primario (HEX)",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "Copia il colore primario come codice HEX",
+  "COPY_COLOR_RGB": "Copia colore primario (RGB)",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "Copia il colore primario come codice RGB",
+  "COPY_COLOR_SECONDARY_HEX": "Copia colore secondario (HEX)",
+  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Copia il colore secondario come codice HEX",
+  "COPY_COLOR_SECONDARY_RGB": "Copia colore secondario (RGB)",
+  "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "Copia il colore secondario come codice RGB",
+  "PALETTE_COLORS": "Tavolozza colori",
+  "REPLACE_SECONDARY_BY_PRIMARY": "Sostituisci pixel corrispondenti al colore secondario con quello primario",
+  "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "Sostituisce tutti i pixel che corrispondento al colore secondario con il colore primario",
+  "REPLACE_PRIMARY_BY_SECONDARY": "Sostituisci pixel corrispondenti al colore primario con quello secondario",
+  "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Sostituisce tutti i pixel che corrispondento al colore primario con il colore secondario",
+  "OPEN_PALETTE_BROWSER": "Apri esplora tavolozze",
+  "OVERWRITE_PALETTE_CONSENT": "La tavolozza '{0}' esiste già, vuoi sovrascriverla?",
+  "PALETTE_EXISTS": "La tavolozza esiste già",
+  "REPLACE_PALETTE_CONSENT": "Sostituire la tavolozza corrente con quella selezionata?",
+  "REPLACE_PALETTE": "Sostituisci tavolozza corrente",
+  "SELECT_COLOR_1": "Seleziona il colore 1",
+  "SELECT_COLOR_2": "Seleziona il colore 2",
+  "SELECT_COLOR_3": "Seleziona il colore 3",
+  "SELECT_COLOR_4": "Seleziona il colore 4",
+  "SELECT_COLOR_5": "Seleziona il colore 5",
+  "SELECT_COLOR_6": "Seleziona il colore 6",
+  "SELECT_COLOR_7": "Seleziona il colore 7",
+  "SELECT_COLOR_8": "Seleziona il colore 8",
+  "SELECT_COLOR_9": "Seleziona il colore 9",
+  "SELECT_COLOR_10": "Seleziona il colore 10",
+  "SELECT_TOOL": "Seleziona strumento {0}",
+  "SELECT_COLOR_1_DESCRIPTIVE": "Seleziona il primo colore nella tavolozza",
+  "SELECT_COLOR_2_DESCRIPTIVE": "Seleziona il secondo colore nella tavolozza",
+  "SELECT_COLOR_3_DESCRIPTIVE": "Seleziona il terzo colore nella tavolozza",
+  "SELECT_COLOR_4_DESCRIPTIVE": "Seleziona il quarto colore nella tavolozza",
+  "SELECT_COLOR_5_DESCRIPTIVE": "Seleziona il quinto colore nella tavolozza",
+  "SELECT_COLOR_6_DESCRIPTIVE": "Seleziona il sesto colore nella tavolozza",
+  "SELECT_COLOR_7_DESCRIPTIVE": "Seleziona il settimo colore nella tavolozza",
+  "SELECT_COLOR_8_DESCRIPTIVE": "Seleziona l'ottavo colore nella tavolozza",
+  "SELECT_COLOR_9_DESCRIPTIVE": "Seleziona il nono colore nella tavolozza",
+  "SELECT_COLOR_10_DESCRIPTIVE": "Seleziona il decimo colore nella tavolozza",
+  "SWAP_COLORS": "Scambia i colori",
+  "SWAP_COLORS_DESCRIPTIVE": "Scambia i colori primari e secondari",
+  "SEARCH": "Ricerca",
+  "COMMAND_SEARCH": "Ricerca comandi",
+  "OPEN_COMMAND_SEARCH": "Debug dei comandi",
+  "SELECT": "Seleziona",
+  "DESELECT": "Deseleziona",
+  "INVERT": "Inverti",
+  "SELECTION": "Selezione",
+  "SELECT_ALL": "Seleziona tutto",
+  "SELECT_ALL_DESCRIPTIVE": "Seleziona tutto quanto",
+  "CLEAR_SELECTION": "Cancella selezione",
+  "INVERT_SELECTION": "Inverti selezione",
+  "INVERT_SELECTION_DESCRIPTIVE": "Inverti la selezione",
+  "TRANSFORM_SELECTED_AREA": "Trasforma l'area selezionata",
+  "NUDGE_SELECTED_LEFT": "Sposta l'oggetto selezionato a sinistra",
+  "NUDGE_SELECTED_RIGHT": "Sposta l'oggetto selezionato a destra",
+  "NUDGE_SELECTED_UP": "Sposta in alto l'oggetto selezionato",
+  "NUDGE_SELECTED_DOWN": "Sposta verso il basso l'oggetto selezionato",
+  "MASK_FROM_SELECTION": "Nuova maschera dalla selezione",
+  "MASK_FROM_SELECTION_DESCRIPTIVE": "Crea nuova maschera dalla selezione",
+  "ADD_SELECTION_TO_MASK": "Aggiungi selezione alla maschera",
+  "SUBTRACT_SELECTION_FROM_MASK": "Sottrai la selezione dalla maschera",
+  "INTERSECT_SELECTION_MASK": "Interseca la selezione con la maschera",
+  "SELECTION_TO_MASK": "Maschera selezione",
+  "TO_NEW_MASK": "Alla nuova maschera",
+  "ADD_TO_MASK": "Aggiungi alla maschera",
+  "SUBTRACT_FROM_MASK": "Sottrai dalla maschera",
+  "INTERSECT_WITH_MASK": "interseca con maschera",
+  "STYLUS": "Stilo",
+  "TOGGLE_PEN_MODE": "Attiva/disattiva la modalità penna",
+  "UNDO": "Annulla",
+  "UNDO_DESCRIPTIVE": "Annulla l'ultima azione",
+  "REDO": "Ripristina",
+  "REDO_DESCRIPTIVE": "Ripristina ultima azione",
+  "WINDOWS": "Finestre",
+  "TOGGLE_GRIDLINES": "Attiva/disattiva griglia",
+  "ZOOM_IN": "Ingrandisci",
+  "ZOOM_OUT": "Riduci",
+  "NEW_WINDOW_FOR_IMG": "Nuova finestra per l'immagine corrente",
+  "CENTER_ACTIVE_VIEWPORT": "Centra l'immagine",
+  "FLIP_VIEWPORT_HORIZONTALLY": "Capovolgi l'immagine orizzontalmente",
+  "FLIP_VIEWPORT_VERTICALLY": "Capovolgi l'immagine verticalmente",
+  "SETTINGS": "Impostazioni",
+  "OPEN_SETTINGS": "Apri le impostazioni",
+  "OPEN_SETTINGS_DESCRIPTIVE": "Apri la finestra delle impostazioni",
+  "OPEN_STARTUP_WINDOW": "Apri la finestra di avvio",
+  "OPEN_SHORTCUT_WINDOW": "Apri la finestra delle scorciatoie",
+  "OPEN_ABOUT_WINDOW": "Apri finestra informazioni",
+  "OPEN_NAVIGATION_WINDOW": "Apri la finestra di navigazione",
+  "ERROR": "Errore",
+  "INTERNAL_ERROR": "Errore interno",
+  "ERROR_SAVE_LOCATION": "Impossibile salvare il file nel percorso specificato",
+  "ERROR_WHILE_SAVING": "Si è verificato un errore durante il salvataggio. Per favore riprova.",
+  "UNKNOWN_ERROR_SAVING": "Si è verificato un errore durante il salvataggio.",
+  "FAILED_ASSOCIATE_LOSPEC": "Impossibile associare il protocollo Lospec Palette.",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "Donate",
+  "YES": "Si",
+  "NO": "No",
+  "CANCEL": "Annulla",
+  "UNNAMED": "Senza nome",
+  "OPEN_COMMAND_DEBUG_WINDOW": "Debug dei comandi",
+  "DELETE": "Elimina",
+  "USER_PREFS": "Preferenze utente (roaming)",
+  "SHORTCUT_FILE": "File delle scorciatoie (roaming)",
+  "EDITOR_DATA": "Dati dell'editor (locale)",
+  "MOVE_VIEWPORT_TOOLTIP": "Muovi immagine. ({0})",
+  "MOVE_VIEWPORT_ACTION_DISPLAY": "Clicca e trascina per muovere l'immagine",
+  "MOVE_TOOL_TOOLTIP": "Sposta i pixel selezionati ({0}). Tieni premuto Ctrl per spostare tutti i livelli.",
+  "MOVE_TOOL_ACTION_DISPLAY": "Clicca per spostare i pixel selezionati. Tieni premuto Ctrl per spostare tutti i livelli.",
+  "PEN_TOOL_TOOLTIP": "Penna. ({0})",
+  "PEN_TOOL_ACTION_DISPLAY": "Clicca o tieni premuto per disegnare.",
+  "PIXEL_PERFECT_SETTING": "Pixel singolo",
+  "RECTANGLE_TOOL_TOOLTIP": "Disegna un rettangolo sull'area di disegno ({0}). Tieni premuto Shift per disegnare un quadrato.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "Clicca e trascina per disegnare un rettangolo. Tieni premuto Shift per disegnare un quadrato.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Clicca e trascina per disegnare un quadrato.",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "Mantieni l'immagine originale",
+  "ROTATE_VIEWPORT_TOOLTIP": "Ruota immagine. ({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "Clicca e trascina per ruotare l'immagine",
+  "SELECT_TOOL_TOOLTIP": "Seleziona l'area. ({0})",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Clicca e trascina per selezionare un'area. Tieni premuto SHIFT per aggiungere alla selezione esistente. Tieni premuto CTRL per sottrarre.",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Clicca e trascina per aggiungere alla selezione corrente.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Clicca e trascina per rimuovere dalla selezione corrente.",
+  "ZOOM_TOOL_TOOLTIP": "Zoom ({0}). Clicca per ingrandire, tieni premuto ALT e clicca per ridurre",
+  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Clicca e trascina per zoomare. Clicca per ingrandire, tieni premuto CTRL e clicca per ridurre.",
+  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Clicca e trascina per zoomare. Clicca per ingrandire, tieni premuto CTRL e clicca per ridurre.",
+  "BRIGHTNESS_TOOL_TOOLTIP": "Rende i pixel più luminosi o più scuri ({0}). Tieni premuto CTRL per rendere i pixel più scuri.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Disegna sui pixel per renderli più luminosi. Tieni premuto CTRL per scurire.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Disegna sui pixel per per renderli più scuri. Rilascia CTRL per schiarire.",
+  "COLOR_PICKER_TOOLTIP": "Seleziona il colore primario dalla tela. ({0})",
+  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Clicca per scegliere i colori. Tieni premuto CTRL per nascondere la tela. Teni premuto SHIFT per nascondere il livello di riferimento",
+  "ELLIPSE_TOOL_TOOLTIP": "Disegna un'ellisse su tela ({0}). Tieni premuto SHIFT per disegnare un cerchio.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Clicca e trascina per disegnare un'ellisse. Tieni premuto SHIFT per disegnare un cerchio.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Fare clic e sposta il mouse per disegnare un cerchio.",
+  "ERASER_TOOL_TOOLTIP": "Cancella il colore dal pixel. ({0})",
+  "ERASER_TOOL_ACTION_DISPLAY": "Clicca e trascina per cancellare.",
+  "FLOOD_FILL_TOOL_TOOLTIP": "Riempie le aree di colore. ({0})",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Clicca su un'area per riempirla. Tieni premuto CTRL per applicare su tutti i livelli.",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Clicca su un'area per riempirla. Rilascia CTRL per applicare solo sui livelli correnti.",
+  "LASSO_TOOL_TOOLTIP": "Lazo. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Clicca e trascina per selezionare i pixel all'interno del lazo. Tieni premuto SHIFT per aggiungere alla selezione. Tieni premuto CTRL per sottrarla.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Clicca e trascina per aggiungere pixel nel del lazo alla selezione.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Clicca e trascina per rimuovere pixel nel lazo dalla selezione.",
+  "LINE_TOOL_TOOLTIP": "Disegna una linea sull'area di disegno ({0}). Tieni premuto SHIFT per abilitare lo snap.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Clicca e trascina per tracciare una linea. Tieni premuto Maiusc per abilitare lo snap.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Clica e trascina per tracciare una linea con lo snap abilitato.",
+  "MAGIC_WAND_TOOL_TOOLTIP": "Bacchetta magica ({0}). Seleziona un'area in base al suo colore",
+  "MAGIC_WAND_ACTION_DISPLAY": "Clicca per selezionare un'area in base al suo colore",
+  "PEN_TOOL": "Penna",
+  "BRIGHTNESS_TOOL": "Luminosità",
+  "COLOR_PICKER_TOOL": "Selettore colore",
+  "ELLIPSE_TOOL": "Ellisse",
+  "ERASER_TOOL": "Gomma per cancellare",
+  "FLOOD_FILL_TOOL": "Secchiello",
+  "LASSO_TOOL": "Lazo",
+  "LINE_TOOL": "Linea",
+  "MAGIC_WAND_TOOL": "Bacchetta magica",
+  "MOVE_TOOL": "Sposta",
+  "MOVE_VIEWPORT_TOOL": "Muovi immagine",
+  "RECTANGLE_TOOL": "Rettangolo",
+  "ROTATE_VIEWPORT_TOOL": "Ruota immagine",
+  "SELECT_TOOL_NAME": "Seleziona",
+  "ZOOM_TOOL": "Zoom",
+  "SHAPE_LABEL": "Forma",
+  "MODE_LABEL": "Modalità",
+  "SCOPE_LABEL": "Portata",
+  "FILL_SHAPE_LABEL": "Riempi forma",
+  "FILL_COLOR_LABEL": "Colore",
+  "TOOL_SIZE_LABEL": "Dimensione",
+  "STRENGTH_LABEL": "Durezza",
+  "NEW": "Nuovo",
+  "ADD": "Aggiungi",
+  "SUBTRACT": "Sottrai",
+  "INTERSECT": "Interseca",
+  "RECTANGLE": "Rettangolo",
+  "CIRCLE": "Cerchio",
+  "ABOUT": "Informazioni",
+  "MINIMIZE": "Minimizza",
+  "RESTORE": "Ripristinare",
+  "MAXIMIZE": "Massimizza",
+  "CLOSE": "Chiudi",
+  "EXPORT_SIZE_HINT": "Qualità consigliata: {0}%",
+  "CREATE": "Crea",
+  "BASE_LAYER_NAME": "Livello base",
+  "ENABLE_MASK": "Abilita maschera",
+  "SELECTED_AREA_EMPTY": "L'area selezionata è vuota",
+  "NOTHING_TO_COPY": "Nessun elementa da copiare",
+  "REFERENCE_LAYER_PATH": "Percorso del livello di riferimento",
+  "FLIP": "Capovolgi",
+  "ROTATION": "Ruota",
+  "ROT_IMG_90_D": "Ruota immagine di 90°",
+  "ROT_IMG_180_D": "Ruota immagine di 180°",
+  "ROT_IMG_-90_D": "Ruota immagine di -90°",
+  "ROT_LAYERS_90_D": "Ruota i livelli selezionati di 90°",
+  "ROT_LAYERS_180_D": "Ruota i livelli selezionati di 180°",
+  "ROT_LAYERS_-90_D": "Ruota i livelli selezionati di -90°",
+  "UNNAMED_PALETTE": "Tavolozza senza nome",
+  "CLICK_SELECT_PRIMARY": "Fare clic per selezionare come colore principale.",
+  "PEN_MODE": "Modalità penna",
+  "VIEW": "Visualizza",
+  "HORIZONTAL_LINE_SYMMETRY": "Linea orizzontale simmetrica",
+  "VERTICAL_LINE_SYMMETRY": "Linea verticale simmetrica",
+  "COLOR_PICKER_TITLE": "Selettore colore",
+  "COLOR_SLIDERS_TITLE": "Proprietà",
+  "PALETTE_TITLE": "Tavolozza",
+  "SWATCHES_TITLE": "Campioni",
+  "LAYERS_TITLE": "Livelli",
+  "NAVIGATION_TITLE": "Navigazione",
+  "NORMAL_BLEND_MODE": "Normale",
+  "DARKEN_BLEND_MODE": "Scurisci",
+  "MULTIPLY_BLEND_MODE": "Moltiplica",
+  "COLOR_BURN_BLEND_MODE": "Brucia colore",
+  "LIGHTEN_BLEND_MODE": "Alleggerisci",
+  "SCREEN_BLEND_MODE": "Scolora",
+  "COLOR_DODGE_BLEND_MODE": "Colore Scherma",
+  "OVERLAY_BLEND_MODE": "Sovrapponi",
+  "SOFT_LIGHT_BLEND_MODE": "Luce Soffusa",
+  "HARD_LIGHT_BLEND_MODE": "Luce Intensa",
+  "DIFFERENCE_BLEND_MODE": "Differenza",
+  "EXCLUSION_BLEND_MODE": "Esclusione",
+  "HUE_BLEND_MODE": "Tonalità",
+  "SATURATION_BLEND_MODE": "Saturazione",
+  "LUMINOSITY_BLEND_MODE": "Luminosità",
+  "COLOR_BLEND_MODE": "Colore",
+  "NOT_SUPPORTED_BLEND_MODE": "Non supportato",
+  "RESTART": "Riavvia",
+  "SORT_BY": "Ordina per",
+  "NAME": "Nome",
+  "COLORS": "Colori",
+  "DEFAULT": "Predefinito",
+  "ALPHABETICAL": "Alfabetico",
+  "COLOR_COUNT": "Conteggio colori",
+  "ANY": "Qualsiasi",
+  "MAX": "Massimo",
+  "MIN": "Minimo",
+  "EXACT": "Esatto",
+  "ASCENDING": "Ascendente",
+  "DESCENDING": "Discendente",
+  "NAME_IS_TOO_LONG": "Il nome è troppo lungo",
+  "STOP_IT_TEXT1": "Ora basta. Correggi i nomi dei tuoi file.",
+  "STOP_IT_TEXT2": "Puoi smetterla di copiare questi nomi per favore?",
+  "REPLACER_TOOLTIP": "Clicca con il tasto destro sul colore della tavolozza e seleziona \"Sostituisci\" oppure trascinalo.",
+  "CLICK_TO_CHOOSE_COLOR": "Clicca per scegliere il colore",
+  "REPLACE_COLOR": "Sostituisci colore",
+  "PALETTE_COLOR_TOOLTIP": "Fare clic per selezionare come colore principale. Trascina e rilascia su un altro colore della tavolozza per scambiarli.",
+  "ADD_FROM_SWATCHES": "Aggiungi da campioni",
+  "ADD_COLOR_TO_PALETTE": "Aggiungi colore alla tavolozza",
+  "USE_IN_CURRENT_IMAGE": "Usa nell'immagine corrente",
+  "ADD_TO_FAVORITES": "Aggiungi ai preferiti",
+  "BROWSE_PALETTES": "Sfoglia le tavolozze",
+  "LOAD_PALETTE": "Carica tavolozza",
+  "SAVE_PALETTE": "Salva tavolozza",
+  "FAVORITES": "Preferiti",
+  "ADD_FROM_CURRENT_PALETTE": "Aggiungi dalla tavolozza corrente",
+  "OPEN_PALETTES_DIR_TOOLTIP": "Apri la cartella delle tavolozze in esplora file",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "Sfoglia le tavolozze su Lospec",
+  "IMPORT_FROM_FILE_TOOLTIP": "Importa da file",
+  "TOP_LEFT": "In alto a sinistra",
+  "TOP_CENTER": "In alto al centro",
+  "TOP_RIGHT": "In alto a destra",
+  "MIDDLE_LEFT": "Centrato a sinistra",
+  "MIDDLE_CENTER": "Al centro",
+  "MIDDLE_RIGHT": "Centrato a destra",
+  "BOTTOM_LEFT": "In basso a sinistra",
+  "BOTTOM_CENTER": "In basso al centro",
+  "BOTTOM_RIGHT": "In basso a destra",
+  "CLIP_TO_BELOW": "Aggancia al livello sottostante",
+  "MOVE_UPWARDS": "Sposta verso l'alto",
+  "MOVE_DOWNWARDS": "Sposta verso il basso",
+  "MERGE_SELECTED": "Unisci selezione",
+  "LOCK_TRANSPARENCY": "Blocca trasparenza",
+  "COULD_NOT_LOAD_PALETTE": "Impossibile recuperare le tavolozze",
+  "NO_PALETTES_FOUND": "Nessuna tavolozza trovata.",
+  "LOSPEC_LINK_TEXT": "Puoi provare a cercare qui: lospec.com/palette-list",
+  "PALETTE_BROWSER": "Sfoglia tavolozze",
+  "DELETE_PALETTE_CONFIRMATION": "Sei sicuro di voler eliminare questa tavolozza? Non sarà possibile recuperarla.",
+  "SHORTCUTS_IMPORTED": "Tasti di scelta rapida importati correttamente da {0}.",
+  "SHORTCUT_PROVIDER_DETECTED": "{0} è installato nel tuo sistema, vuoi importare i tasti di scelta rapida?",
+  "IMPORT_FROM_INSTALLATION": "Importa configurazione",
+  "IMPORT_INSTALLATION_OPTION1": "Importa",
+  "IMPORT_INSTALLATION_OPTION2": "Usa le impostazioni predefinite",
+  "IMPORT_FROM_TEMPLATE": "Importa da template",
+  "SHORTCUTS_IMPORTED_SUCCESS": "Tasti di scelta rapida importati con successo.",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "Sei sicuro di voler ripristinare tutte le scorciatoie?",
+  "SUCCESS": "Completato",
+  "WARNING": "Attenzione",
+  "ERROR_IMPORTING_IMAGE": "Si è verificato un errore durante l'importazione dell'immagine.",
+  "SHORTCUTS_CORRUPTED_TITLE": "File danneggiato",
+  "SHORTCUTS_CORRUPTED": "Il file dei tasti di scelta rapida è danneggiato, saranno ripristinate le impostazioni predefinite.",
+  "FAILED_DOWNLOAD_PALETTE": "Impossibile scaricare la tavolozza",
+  "FILE_INCORRECT_FORMAT": "Formato del file non valido",
+  "INVALID_FILE": "File non valido",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "Il formato del file dei tasti di scelta rapida non è corretto",
+  "UNSUPPORTED_FILE_FORMAT": "Questo formato non è supportato",
+  "ALREADY_ASSIGNED": "Warning",
+  "REPLACE": "Sostituisci",
+  "SWAP": "Scambia",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "Questa combinazione è già assegnata a '{0}'\nVuoi sostituirla o scambiarla?",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "Questa combinazione è già assegnata a '{0}'\nVuoi sostituirla?",
+  "UNSAVED_CHANGES": "Modifiche non salvate",
+  "DOCUMENT_MODIFIED_SAVE": "Il documento è stato modificato. Vuoi salvare le modifiche?",
+  "SESSION_UNSAVED_DATA": "{0} non è stato salvato, sei sicuro?",
+  "PROJECT_MAINTAINERS": "Membri del progetto",
+  "OTHER_AWESOME_CONTRIBUTORS": "Altri fantastici collaboratori",
+  "HELP": "Aiuto",
+  "STOP_IT_TEXT3": "No, davvero, smettila.",
+  "STOP_IT_TEXT4": "Non hai niente di meglio da fare?",
+  "LINEAR_DODGE_BLEND_MODE": "Scherma Lineare (Aggiungi)",
+  "PRESS_ANY_KEY": "Premere un tasto qualsiasi",
+  "NONE_SHORTCUT": "Nessuno",
+  "REFERENCE": "Riferimento",
+  "PUT_REFERENCE_LAYER_ABOVE": "Posiziona il livello di riferimento sopra",
+  "PUT_REFERENCE_LAYER_BELOW": "Posiziona il livello di riferimento sotto",
+  "TOGGLE_VERTICAL_SYMMETRY": "Attiva/disattiva la simmetria verticale",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "Attiva/disattiva la simmetria orizzontale",
+  "RESET_VIEWPORT": "Reimposta riquadro di visualizzazione",
+  "VIEWPORT_SETTINGS": "Impostazioni riquadro di visualizzazione",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Clicca e tieni premuto il tasto sinistro del mouse per spostare i pixel nei livelli selezionati.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Tieni premuto il tasto sinistro del mouse per spostare tutti i livelli.",
+  "CTRL_KEY": "Ctrl",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "Rinomina",
+  "PIXEL_UNIT": "px",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "Debug /Data/Localization",
+  "FORCE_OTHER_FLOW_DIRECTION": "Inverti posizione elementi",
+  "API_KEY": "API Key",
+  "LOCALIZATION_VIEW_TYPE": "Tipo di visualizzazione",
+  "LOAD_LANGUAGE_FROM_FILE": "Carica file lingua",
+  "LOG_IN": "Login",
+  "SYNC": "Sincronizza",
+  "NOT_LOGGED_IN": "Accesso non effettuato",
+  "POE_EDITOR_ERROR": "POEditor Errore: {0} {1}",
+  "HTTP_ERROR_MESSAGE": "Errore HTTP: {0} {1}",
+  "LOGGED_IN": "Accesso effettuato",
+  "SYNCED_SUCCESSFULLY": "Sincronizzazione completata",
+  "EXCEPTION_ERROR": "Eccezione: {0}",
+  "DROP_PALETTE": "Trascina qui la tavolozza",
+  "SECURITY_ERROR": "Errore di sicurezza",
+  "SECURITY_ERROR_MSG": "Nessun permesso di scrittura nella posizione specificata.",
+  "IO_ERROR": "Errore IO",
+  "IO_ERROR_MSG": "Errore durante la scrittura su disco.",
+  "FAILED_ASSOCIATE_PIXI": "Impossibile associare il file .pixi a PixiEditor.",
+  "COULD_NOT_SAVE_PALETTE": "Si è verificato un errore durante il salvataggio della tavolozza.",
+  "NO_COLORS_TO_SAVE": "Non ci sono colori da salvare.",
+  "ALL_LAYERS": "Tutti i livelli",
+  "SINGLE_LAYER": "Livello singolo",
+  "CHOOSE": "Scegli",
+  "REMOVE": "Rimuovi",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "Il file non è \".aseprite-keys\"",
+  "FILE_HAS_INVALID_SHORTCUT": "Il file contiene un collegamento non valido",
+  "FILE_EXTENSION_NOT_SUPPORTED": "Il tipo di file '{0}' non è supportato",
+  "ERROR_READING_FILE": "Errore durante la lettura del file",
+  "DISCARD_PALETTE": "Elimina la tavolozza",
+  "DISCARD_PALETTE_CONFIRMATION": "Sei sicuro di voler eliminare la tavolozza corrente? Questo azione può essere annullata.",
+  "IMPORT_AS_NEW_LAYER": "Importa come nuovo livello",
+  "PASTE_AS_PRIMARY_COLOR": "Incolla come colore primario",
+  "IMPORT_AS_NEW_FILE": "Importa come nuovo file",
+  "IMPORT_PALETTE_FILE": "Importa file tavolozza",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "Importa i colori nella tavolozza",
+  "IMPORT_SINGLE_PALETTE_COLOR": "Importa il colore nella tavolozza",
+  "IMPORT_AS_REFERENCE_LAYER": "Importa come livello di riferimento",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "Fare clic con il pulsante destro del mouse per scegliere il colore, Shift+Pulsante destro mouse+Click per copiare il colore negli appunti",
+  "OPEN_FILE_FROM_CLIPBOARD": "Apri dagli appunti",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Apri dagli appunti",
+  "OPEN_LOCALIZATION_DATA": "Vuoi aprire LocalizationData.json?\nLa data aggiornata è stata inserita negli appunti.\nTieni presente che le modifiche non verranno applicate fino al riavvio",
+  "DOWNLOADING_LANGUAGE_FAILED": "Download della lingua non riuscito.\nLa chiave API potrebbe essere stata utilizzata troppe volte.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Dati di localizzazione non trovati",
+  "APPLY": "Applica",
+  "UPDATE_SOURCE": "Aggiorna codice sorgente",
+  "COPY_TO_CLIPBOARD": "Copia negli appunti",
+  "LANGUAGE_FILE_NOT_FOUND": "File della lingua non trovato.\nIl file corretto è {0}",
+  "PROJECT_ROOT_NOT_FOUND": "File progetto non trovato.\nLocalizza il file PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Cartella Localization non trovata.\nMi serve /Data/Localization",
+  "SELECT_A_LANGUAGE": "Seleziona una lingua",
+  "DONE": "Fatto",
+  "SOURCE_UNSET_OR_MISSING": "Codice sorgente mancante",
+  "SOURCE_NEWER": "Nuovo codice sorgente",
+  "SOURCE_UP_TO_DATE": "La fonte è aggiornata",
+  "SOURCE_OLDER": "Cloud newer",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Clicca per selezionare i colori dal livello di riferimento.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Clicca per scegliere i colori dalla tela.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Debug /Data/Localization",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Ddebug comandi",
+  "SHORTCUTS_TITLE": "Scorciatoie",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Trascina le maniglie per scalare. Tieni premuto CTRL e trascina una maniglia per spostarla liberamente. Tieni premuto SHIFT per ridimensionare mantenendo la proporzione. Tieni premuto ALT e trascina una maniglia laterale per inclinare. Trascina le maniglie esterne per ruotare.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Trascina le maniglie per scalare. Tieni premuto SHIFT per ridimensionare mantenendo la proporzione. Tieni premuto ALT e trascina una maniglia laterale per inclinare. Trascina le maniglie esterne per ruotare.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Trascina le maniglie per scalare. Tieni premuto SHIFT per ridimensionare mantenendo la proporzione. Trascina le maniglie esterne per ruotare.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Trascina le maniglie per scalare. Tieni premuto SHIFT per ridimensionare mantenendo la proporzione.",
+  "OPEN_DOCUMENTATION": "Apri documentazione",
+  "LOCAL_PALETTE_SOURCE_NAME": "Locale",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "L'estensione non può iniziare con 'pixieditor'",
+  "ERROR_MISSING_METADATA": "Metadati per la chiave dell'estensione '{0}' mancanti.",
+  "ERROR_NO_CLASS_ENTRY": "Voce della classe di estensione mancante nel percorso '{0}'.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "Modulo di assemblaggio della voce di estensione non è presente nel percorso '{0}'.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "La tua configurazione attuale non consente il caricamento di questa estensione. Forse non lo possiedi o non lo hai installato. Puoi acquistarlo qui '{0}'.",
+  "BUY_SUPPORTER_PACK": "Acquista il pacchetto Supporter",
+  "NEWS": "Novità",
+  "DISABLE_NEWS_PANEL": "Disabilita il pannello Novità nella finestra di avvio",
+  "FAILED_FETCH_NEWS": "Impossibile sincronizzare le Novità",
+  "CROP_TO_SELECTION": "Ritaglia da selezione",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "Ritaglia immagine da selezione",
+  "SHOW_CONTEXT_MENU": "Mostra menu contestuale",
+  "ERASE": "Cancella",
+  "USE_SECONDARY_COLOR": "Usa colore secondario",
+  "RIGHT_CLICK_MODE": "Modalità tasto destro",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "Aggiungi colore primario alla tavolozza",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Aggiungi colore primario alla tavolozza corrente",
+  "COPY_COLOR": "Copia colore"
+}

+ 21 - 1
src/PixiEditor/Data/Localization/Languages/pl.json

@@ -560,5 +560,25 @@
   "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Przeciągnij uchwyty aby skalować transformację. Przytrzymaj Ctrl i przeciągnij aby przemieścić uchwyt swobodnie. Przytrzymaj Shify aby skalować proporcjonalnie. Przytrzymaj Alt i przeciągnij boczny uchwyt aby ściąć. Porusz zewnętrzne uchwyty aby obracać.",
   "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Przeciągnij uchwyty aby skalować transformację. Przytrzymaj Shify aby zrobić to proporcjonalnie. Przytrzymaj Alt i przeciągnij aby ściąć. Przeciągnij zewnętrzne uchwyty aby obracać.",
   "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Przeciągnij uchwyty aby skalować transformację. Przytrzymaj Shify aby skalować proporcjonalnie. Przeciągnij zewnętrzne uchwyty aby obracać.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Przeciągnij uchwyty aby skalować transformację. Przytrzymaj Shift aby skalować proporcjonalnie."
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Przeciągnij uchwyty aby skalować transformację. Przytrzymaj Shift aby skalować proporcjonalnie.",
+  "OPEN_DOCUMENTATION": "Otwórz dokumentację",
+  "LOCAL_PALETTE_SOURCE_NAME": "Lokalne",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "Unikalna nazwa rozszerzenia nie może zaczynać się od 'pixieditor'.",
+  "ERROR_MISSING_METADATA": "Nie znaleziono klucza '{0}' w metadanych rozszerzenia.",
+  "ERROR_NO_CLASS_ENTRY": "Nie znaleziono klasy startowej rozszerzenia w '{0}'.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "Nie znaleziono modułu startowego rozszerzenia w ścieżce '{0}'.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "Obecna konfiguracja nie pozwala na załadowanie tego rozszerzenia. Być może go nie posiadasz lub nie masz go zainstalowanego. Możesz go zakupić tutaj: '{0}'.",
+  "BUY_SUPPORTER_PACK": "Kup Pakiet Wsparcia",
+  "NEWS": "Wiadomości",
+  "DISABLE_NEWS_PANEL": "Wyłącz panel wiadomości w oknie startowym",
+  "FAILED_FETCH_NEWS": "Nie udało się załadować wiadomości",
+  "CROP_TO_SELECTION": "Przytnij do zaznaczenia",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "Przytnij obraz do zaznaczenia",
+  "SHOW_CONTEXT_MENU": "Pokaż menu kontekstowe",
+  "ERASE": "Zmaż",
+  "USE_SECONDARY_COLOR": "Użyj drugiego koloru",
+  "RIGHT_CLICK_MODE": "Akcja prawego przysiku myszy",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "Dodaj aktywny kolor do palety",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Dodaj aktywny kolor do aktualnej palety",
+  "COPY_COLOR": "Kopiuj kolor"
 }

+ 29 - 9
src/PixiEditor/Data/Localization/Languages/pt-br.json

@@ -552,13 +552,33 @@
   "SOURCE_NEWER": "Fonte mais recente",
   "SOURCE_UP_TO_DATE": "A fonte está atualizada",
   "SOURCE_OLDER": "Mais recente na nuvem",
-  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
-  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
-  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
-  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
-  "SHORTCUTS_TITLE": "Shortcuts",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Clique para selecionar cores da camada de referência.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Clique para escolher as cores da tela.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localização Janela Depuração",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Comando Janela Depuração",
+  "SHORTCUTS_TITLE": "Atalhos",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Arraste as alças para transformar a escala. Mantenha pressionada a tecla Ctrl e arraste uma alça para movê-la livremente. Mantenha pressionada a tecla Shift para dimensionar proporcionalmente. Mantenha pressionada a tecla Alt e arraste uma alça lateral para cortar. Arraste as alças externas para girar.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Arraste as alças para transformar a escala. Mantenha pressionada a tecla Shift para dimensionar proporcionalmente. Mantenha pressionada a tecla Alt e arraste uma alça lateral para cortar. Arraste as alças externas para girar.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Arraste as alças para transformar a escala. Mantenha pressionada a tecla Shift para dimensionar proporcionalmente. Arraste as alças externas para girar.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Arraste as alças para transformar a escala. Mantenha pressionada a tecla Shift para dimensionar proporcionalmente.",
+  "OPEN_DOCUMENTATION": "Open documentation",
+  "LOCAL_PALETTE_SOURCE_NAME": "Local",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "Extension unique name cannot start with 'pixieditor'.",
+  "ERROR_MISSING_METADATA": "Extension metadata key '{0}' is missing.",
+  "ERROR_NO_CLASS_ENTRY": "Extension class entry is missing on path '{0}'.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "Extension entry assembly is missing on path '{0}'.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "Your current setup doesn't allow loading this extension. Perhaps you don't own it or don't have it installed. You can purchase it here '{0}'.",
+  "BUY_SUPPORTER_PACK": "Buy Supporter Pack",
+  "NEWS": "News",
+  "DISABLE_NEWS_PANEL": "Disable News panel in startup window",
+  "FAILED_FETCH_NEWS": "Failed to fetch news",
+  "CROP_TO_SELECTION": "Crop to selection",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "Crop image to selection",
+  "SHOW_CONTEXT_MENU": "Show context menu",
+  "ERASE": "Erase",
+  "USE_SECONDARY_COLOR": "Use secondary color",
+  "RIGHT_CLICK_MODE": "Right click mode",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "Add primary color to palette",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Add primary color to current palette",
+  "COPY_COLOR": "Copy color"
 }

+ 45 - 25
src/PixiEditor/Data/Localization/Languages/ru.json

@@ -255,7 +255,7 @@
   "SETTINGS": "Настройки",
   "OPEN_SETTINGS": "Открыть настройки",
   "OPEN_SETTINGS_DESCRIPTIVE": "Открыть окно настроек",
-  "OPEN_STARTUP_WINDOW": "Открыть окно запуска",
+  "OPEN_STARTUP_WINDOW": "Открыть окно приветствия",
   "OPEN_SHORTCUT_WINDOW": "Открыть окно сочетаний клавиш",
   "OPEN_ABOUT_WINDOW": "Открыть окно \"о программе\"",
   "OPEN_NAVIGATION_WINDOW": "Открыть окно навигации",
@@ -537,28 +537,48 @@
   "NAVIGATOR_PICK_ACTION_DISPLAY": "ПКМ чтобы взять цвет, Shift + ПКМ чтобы скопировать цвет в буфер обмена",
   "OPEN_FILE_FROM_CLIPBOARD": "Открыть из буфера обмена",
   "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Открыть из буфера обмена",
-  "OPEN_LOCALIZATION_DATA": "Do you want to open the LocalizationData.json?\nThe updated date has been put in the clipboard.\nNote that changes wont be applied until a restart",
-  "DOWNLOADING_LANGUAGE_FAILED": "Downloading language failed.\nAPI Key might have been overused.",
-  "LOCALIZATION_DATA_NOT_FOUND": "Localization data path not found",
-  "APPLY": "Apply",
-  "UPDATE_SOURCE": "Update source",
-  "COPY_TO_CLIPBOARD": "Copy to clipboard",
-  "LANGUAGE_FILE_NOT_FOUND": "Language file not found.\nLooking for {0}",
-  "PROJECT_ROOT_NOT_FOUND": "PixiEditor Project root not found.\nLooking for PixiEditor.csproj",
-  "LOCALIZATION_FOLDER_NOT_FOUND": "Localization folder not found.\nLooking for /Data/Localization",
-  "SELECT_A_LANGUAGE": "Select a language",
-  "DONE": "Done",
-  "SOURCE_UNSET_OR_MISSING": "Source missing/unset",
-  "SOURCE_NEWER": "Source newer",
-  "SOURCE_UP_TO_DATE": "Source is up to date",
-  "SOURCE_OLDER": "Cloud newer",
-  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
-  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
-  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
-  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
-  "SHORTCUTS_TITLE": "Shortcuts",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+  "OPEN_LOCALIZATION_DATA": "Хотите открыть LocalizationData.json? Обновлённая дата добавлена в буфер обмена. Перезапустите чтобы применить изменения.",
+  "DOWNLOADING_LANGUAGE_FAILED": "Не удалось загрузить язык. API ключ может быть использован слишком часто.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Путь к данным локализации не найден",
+  "APPLY": "Применить",
+  "UPDATE_SOURCE": "Обновить источник",
+  "COPY_TO_CLIPBOARD": "Скопировать в буфер обмена",
+  "LANGUAGE_FILE_NOT_FOUND": "Файл языка не найден. Идёт поиск {0}",
+  "PROJECT_ROOT_NOT_FOUND": "Корневой файл проекта PixiEditor не был найден. Идёт поиск PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Путь к папке локализации не найден. Идёт поиск /Data/Localization",
+  "SELECT_A_LANGUAGE": "Выберите язык",
+  "DONE": "Готово",
+  "SOURCE_UNSET_OR_MISSING": "Источник отсутствует/не поставлен",
+  "SOURCE_NEWER": "Источник новее",
+  "SOURCE_UP_TO_DATE": "Источник обновлён",
+  "SOURCE_OLDER": "Облако новее",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Нажмите чтобы брать цвета из рефернс слоя.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Нажмите чтобы брать цвета из холста.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Окно дебага локализаций",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Окно дебага команд",
+  "SHORTCUTS_TITLE": "Ярлыки",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Двигайте ручки чтобы изменить масштаб. Удерживайте Ctrl и передвигайте ручку чтобы передвигать ручку без изменений масштаба. Удерживайте Alt и передвигайте сторону ручки чтобы сдвинуть. Выдвиньте из ручки чтобы повернуть.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Двигайте ручки чтобы изменить масштаб. Удерживайте Shift чтобы масштабировать пропорционально. Удерживайте Alt и передвигайте сторону ручки чтобы сдвинуть. Выдвиньте из ручки чтобы повернуть.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Двигайте ручки чтобы изменить масштаб. Удерживайте Shift чтобы масштабировать пропорционально. Выдвиньте из ручек чтобы повернуть.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Двигайте ручки чтобы изменить масштаб. Удерживайте Shift чтобы масштабировать пропорционально.",
+  "OPEN_DOCUMENTATION": "Открыть документацию",
+  "LOCAL_PALETTE_SOURCE_NAME": "Локально",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "Уникальное имя приложения не может начинаться с 'pixieditor'.",
+  "ERROR_MISSING_METADATA": "Ключ метадаты приложения '{0}' отсутствует.",
+  "ERROR_NO_CLASS_ENTRY": "Запись в классе приложения отсутствует в папке '{0}'.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "Входная сборка приложения отсутствует в папке '{0}'.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "Ваша нынешняя сборка не позволяет загрузить это приложение. Возможно вы не приобрели его или не установили. Вы можете приобрести его здесь '{0}'.",
+  "BUY_SUPPORTER_PACK": "Приобретите Supporter Pack",
+  "NEWS": "Новости",
+  "DISABLE_NEWS_PANEL": "Отключить новостную панель в окне приветствия",
+  "FAILED_FETCH_NEWS": "Не удалось загрузить новости",
+  "CROP_TO_SELECTION": "Обрезать выделение",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "Обрезать изображение до выделения",
+  "SHOW_CONTEXT_MENU": "Показать меню контекста",
+  "ERASE": "Стереть",
+  "USE_SECONDARY_COLOR": "Использовать дополнительный цвет",
+  "RIGHT_CLICK_MODE": "Режим ПКМ",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "Добавить основной цвет в палитру",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Добавить основной цвет в нынешнюю палитру",
+  "COPY_COLOR": "Скопировать цвет"
 }

+ 584 - 0
src/PixiEditor/Data/Localization/Languages/tr.json

@@ -0,0 +1,584 @@
+{
+    "RECENT_FILES": "Son Dosyalar",
+    "OPEN_FILE": "Dosya Aç",
+    "NEW_FILE": "Yeni",
+    "RECENT_EMPTY_TEXT": "Çok fazla boşluk",
+    "LANGUAGE": "Dil",
+    "GENERAL": "Genel",
+    "DISCORD": "Discord",
+    "KEY_BINDINGS": "Tuş Atamaları",
+    "MISC": "Çeşitli",
+    "SHOW_STARTUP_WINDOW": "Başlangıç Ekranını Göster",
+    "SHOW_IMAGE_PREVIEW_TASKBAR": "Görev çubuğunda resim önizlemesini göster",
+    "RECENT_FILE_LENGTH": "Son dosya listesi uzunluğu",
+    "RECENT_FILE_LENGTH_TOOLTIP": "Dosya > Son dosyalar altında gösterilen belge sayısı. Varsayılan: 8",
+    "DEFAULT_NEW_SIZE": "Varsayılan yeni dosya boyutu",
+    "WIDTH": "Genişlik",
+    "HEIGHT": "Yükseklik",
+    "TOOLS": "Araçlar",
+    "ENABLE_SHARED_TOOLBAR": "Paylaşılan araç çubuğunu etkinleştir",
+    "AUTOMATIC_UPDATES": "Otomatik Güncellemeler",
+    "CHECK_FOR_UPDATES": "Başlangıçta güncellemeleri kontrol et",
+    "UPDATE_STREAM": "Güncelleme akışı",
+    "UPDATE_CHANNEL_HELP_TOOLTIP": "Güncelleme kanalları yalnızca bağımsız sürümde (https://pixieditor.net'den indirilen) değiştirilebilir.\nSteam ve Microsoft Store sürümleri güncellemeleri ayrı şekilde yönetir.",
+    "DEBUG": "Hata Ayıklama",
+    "ENABLE_DEBUG_MODE": "Hata Ayıklama modunu etkinleştir",
+    "OPEN_CRASH_REPORTS_DIR": "Çökme raporları dizinini aç",
+    "DISCORD_RICH_PRESENCE": "Zengin Durum",
+    "ENABLED": "Etkin",
+    "SHOW_IMAGE_NAME": "Resim adını göster",
+    "SHOW_IMAGE_SIZE": "Resim boyutunu göster",
+    "SHOW_LAYER_COUNT": "Katman sayısını göster",
+    "FILE": "Dosya",
+    "RECENT": "Son",
+    "OPEN": "Aç",
+    "SAVE_PIXI": "Kaydet (.pixi)",
+    "SAVE_AS_PIXI": "Farklı Kaydet... (.pixi)",
+    "EXPORT_IMG": "Dışa Aktar (.png, .jpg, vb.)",
+    "EDIT": "Düzenle",
+    "EXIT": "Çıkış",
+    "PERCENTAGE": "Yüzde",
+    "ABSOLUTE": "Mutlak",
+    "PRESERVE_ASPECT_RATIO": "En-boy oranını koru",
+    "ANCHOR_POINT": "Bağlama Noktası",
+    "RESIZE_IMAGE": "Resmi Yeniden Boyutlandır",
+    "RESIZE": "Yeniden Boyutlandır",
+    "DOCUMENTATION": "Dokümantasyon",
+    "WEBSITE": "Web Sitesi",
+    "OPEN_WEBSITE": "Web sitesini aç",
+    "REPOSITORY": "Depo",
+    "OPEN_REPOSITORY": "Depoyu aç",
+    "LICENSE": "Lisans",
+    "OPEN_LICENSE": "Lisansı aç",
+    "THIRD_PARTY_LICENSES": "Üçüncü Taraf Lisansları",
+    "OPEN_THIRD_PARTY_LICENSES": "Üçüncü taraf lisanslarını aç",
+    "APPLY_TRANSFORM": "Dönüşümü Uygula",
+    "INCREASE_TOOL_SIZE": "Araç boyutunu artır",
+    "DECREASE_TOOL_SIZE": "Araç boyutunu azalt",
+    "TO_INSTALL_UPDATE": "güncellemeyi yüklemek için {0}",
+    "DOWNLOADING_UPDATE": "Güncelleme indiriliyor...",
+    "UPDATE_READY": "Güncelleme yüklemeye hazır. Şimdi yüklemek istiyor musunuz?",
+    "NEW_UPDATE": "Yeni güncelleme",
+    "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Yönetici ayrıcalıkları olmadan güncelleme yapılamadı. Lütfen PixiEditor'ü yönetici olarak çalıştırın.",
+    "INSUFFICIENT_PERMISSIONS": "Yetersiz izinler",
+    "UPDATE_CHECK_FAILED": "Güncelleme kontrolü başarısız oldu",
+    "COULD_NOT_CHECK_FOR_UPDATES": "Güncelleme mevcut olup olmadığı kontrol edilemedi.",
+    "VERSION": "Sürüm {0}",
+    "OPEN_TEMP_DIR": "Geçici dizini aç",
+    "OPEN_LOCAL_APPDATA_DIR": "Yerel AppData dizinini aç",
+    "OPEN_ROAMING_APPDATA_DIR": "Gezintili AppData dizinini aç",
+    "OPEN_INSTALLATION_DIR": "Kurulum dizinini aç",
+    "DUMP_ALL_COMMANDS": "Tüm komutları dök",
+    "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Tüm komutları bir metin dosyasına dök",
+    "CRASH": "Çökme",
+    "CRASH_APP": "Uygulamayı çökert",
+    "DELETE_USR_PREFS": "Kullanıcı tercihlerini sil (Gezintili AppData)",
+    "DELETE_SHORTCUT_FILE": "Kısayol dosyasını sil (Gezintili AppData)",
+    "DELETE_EDITOR_DATA": "Düzenleyici verilerini sil (Yerel AppData)",
+    "GENERATE_KEY_BINDINGS_TEMPLATE": "Tuş atama şablonu oluştur",
+    "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Tuş atama json şablonu oluştur",
+    "VALIDATE_SHORTCUT_MAP": "Kısayol haritasını doğrula",
+    "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Kısayol haritasını doğrular",
+    "VALIDATION_KEYS_NOTICE_DIALOG": "Boş anahtarlar: {0}\nBilinmeyen Komutlar: {1}",
+    "RESULT": "Sonuç",
+    "CLEAR_RECENT_DOCUMENTS": "Son belgeleri temizle",
+    "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Yeni açılan belgeleri temizle",
+    "OPEN_CMD_DEBUG_WINDOW": "Komut hata ayıklama penceresini aç",
+    "PATH_DOES_NOT_EXIST": "{0} mevcut değil.",
+    "LOCATION_DOES_NOT_EXIST": "Konum mevcut değil.",
+    "FILE_NOT_FOUND": "Dosya bulunamadı.",
+    "ARE_YOU_SURE": "Emin misiniz?",
+    "ARE_YOU_SURE_PATH_FULL_PATH": "{0}'yi silmek istediğinizden emin misiniz?\nBu veri tüm yüklemeler için kaybolacak.\n(Tam Yol: {1})",
+    "FAILED_TO_OPEN_FILE": "Dosya açılamadı",
+    "OLD_FILE_FORMAT": "Eski dosya formatı",
+    "OLD_FILE_FORMAT_DESCRIPTION": "Bu .pixi dosyası eski formatta kullanılmıştır,\n artık desteklenmiyor ve açılamaz.",
+    "NOTHING_FOUND": "Hiçbir şey bulunamadı",
+    "EXPORT": "Dışa Aktar",
+    "EXPORT_IMAGE": "Resmi Dışa Aktar",
+    "IMPORT": "İçe Aktar",
+    "SHORTCUT_TEMPLATES": "Kısayol şablonları",
+    "RESET_ALL": "Hepsini Sıfırla",
+    "LAYER": "Katman",
+    "LAYER_DELETE_SELECTED": "Aktif katmanı/dizini sil",
+    "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Aktif katmanı veya dizini sil",
+    "LAYER_DELETE_ALL_SELECTED": "Tüm seçili katmanları/dizinleri sil",
+    "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Tüm seçili katmanları ve/veya dizinleri sil",
+    "DELETE_SELECTED_PIXELS": "Seçili pikselleri sil",
+    "NEW_FOLDER": "Yeni klasör",
+    "CREATE_NEW_FOLDER": "Yeni klasör oluştur",
+    "NEW_LAYER": "Yeni katman",
+    "CREATE_NEW_LAYER": "Yeni katman oluştur",
+    "NEW_IMAGE": "Yeni görüntü",
+    "CREATE_NEW_IMAGE": "Yeni görüntü oluştur",
+    "SAVE": "Kaydet",
+    "SAVE_AS": "Farklı Kaydet...",
+    "IMAGE": "Görüntü",
+    "SAVE_IMAGE": "Görüntüyü kaydet",
+    "SAVE_IMAGE_AS": "Yeni olarak görüntüyü kaydet",
+    "DUPLICATE": "Kopyala",
+    "DUPLICATE_SELECTED_LAYER": "Seçili katmanı kopyala",
+    "CREATE_MASK": "Maske oluştur",
+    "DELETE_MASK": "Maskeyi sil",
+    "TOGGLE_MASK": "Maskesi aç/kapat",
+    "APPLY_MASK": "Maskeyi uygula",
+    "TOGGLE_VISIBILITY": "Görünürlüğü aç/kapat",
+    "MOVE_MEMBER_UP": "Üyeyi yukarı taşı",
+    "MOVE_MEMBER_UP_DESCRIPTIVE": "Seçili katmanı veya dizini yukarı taşı",
+    "MOVE_MEMBER_DOWN": "Üyeyi aşağı taşı",
+    "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Seçili katmanı veya dizini aşağı taşı",
+    "MERGE_ALL_SELECTED_LAYERS": "Tüm seçili katmanları birleştir",
+    "MERGE_WITH_ABOVE": "Seçili katmanı üsttekiyle birleştir",
+    "MERGE_WITH_ABOVE_DESCRIPTIVE": "Seçili katmanı üzerindekiyle birleştir",
+    "MERGE_WITH_BELOW": "Seçili katmanı alttakilerle birleştir",
+    "MERGE_WITH_BELOW_DESCRIPTIVE": "Seçili katmanı altındakilerle birleştir",
+    "ADD_REFERENCE_LAYER": "Referans Katman Ekle",
+    "DELETE_REFERENCE_LAYER": "Referans katmanı sil",
+    "TRANSFORM_REFERENCE_LAYER": "Referans katmanını dönüştür",
+    "TOGGLE_REFERENCE_LAYER_POS": "Referans katmanının konumunu değiştir",
+    "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Referans katmanını en üstte veya en altta arasında değiştir",
+    "RESET_REFERENCE_LAYER_POS": "Referans katmanının konumunu sıfırla",
+    "CLIP_CANVAS": "Kanvası Kırp",
+    "FLIP_IMG_VERTICALLY": "Görüntüyü Dikey Olarak Çevir",
+    "FLIP_IMG_HORIZONTALLY": "Görüntüyü Yatay Olarak Çevir",
+    "FLIP_LAYERS_VERTICALLY": "Seçili Katmanları Dikey Olarak Çevir",
+    "FLIP_LAYERS_HORIZONTALLY": "Seçili Katmanları Yatay Olarak Çevir",
+    "ROT_IMG_90": "Görüntüyü 90 derece döndür",
+    "ROT_IMG_180": "Görüntüyü 180 derece döndür",
+    "ROT_IMG_-90": "Görüntüyü -90 derece döndür",
+    "ROT_LAYERS_90": "Seçili Katmanları 90 derece döndür",
+    "ROT_LAYERS_180": "Seçili Katmanları 180 derece döndür",
+    "ROT_LAYERS_-90": "Seçili Katmanları -90 derece döndür",
+    "TOGGLE_VERT_SYMMETRY_AXIS": "Dikey simetri eksenini aç/kapat",
+    "TOGGLE_HOR_SYMMETRY_AXIS": "Yatay simetri eksenini aç/kapat",
+    "DELETE_PIXELS": "Pikselleri sil",
+    "DELETE_PIXELS_DESCRIPTIVE": "Seçili pikselleri sil",
+    "RESIZE_DOCUMENT": "Belgeyi Yeniden Boyutlandır",
+    "RESIZE_CANVAS": "Kanvası Yeniden Boyutlandır",
+    "CENTER_CONTENT": "İçeriği Ortala",
+    "CUT": "Kes",
+    "CUT_DESCRIPTIVE": "Seçili alanı/katmanları kes",
+    "PASTE": "Yapıştır",
+    "PASTE_DESCRIPTIVE": "Pano içeriğini yapıştır",
+    "PASTE_AS_NEW_LAYER": "Yeni katman olarak yapıştır",
+    "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Panodan yeni bir katman olarak yapıştır",
+    "PASTE_REFERENCE_LAYER": "Referans katmanını yapıştır",
+    "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Panodaki içeriği referans katmanı olarak yapıştır",
+    "PASTE_COLOR": "Rengi yapıştır",
+    "PASTE_COLOR_DESCRIPTIVE": "Panodan rengi yapıştır",
+    "PASTE_COLOR_SECONDARY": "İkincil olarak yapıştır",
+    "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Panodan rengi ikincil renk olarak yapıştır",
+    "CLIPBOARD": "Pano",
+    "COPY": "Kopyala",
+    "COPY_DESCRIPTIVE": "Panoya kopyala",
+    "COPY_COLOR_HEX": "Birincil rengi kopyala (HEX)",
+    "COPY_COLOR_HEX_DESCRIPTIVE": "Birincil rengi HEX kodu olarak kopyala",
+    "COPY_COLOR_RGB": "Birincil rengi kopyala (RGB)",
+    "COPY_COLOR_RGB_DESCRIPTIVE": "Birincil rengi RGB kodu olarak kopyala",
+    "COPY_COLOR_SECONDARY_HEX": "İkincil rengi kopyala (HEX)",
+    "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "İkincil rengi HEX kodu olarak kopyala",
+    "COPY_COLOR_SECONDARY_RGB": "İkincil rengi kopyala (RGB)",
+    "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "İkincil rengi RGB kodu olarak kopyala",
+    "PALETTE_COLORS": "Palet Renkleri",
+    "REPLACE_SECONDARY_BY_PRIMARY": "İkincil rengi birincil renk ile değiştir",
+    "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "İkincil rengi birincil renk ile değiştir",
+    "REPLACE_PRIMARY_BY_SECONDARY": "Birincil rengi ikincil renk ile değiştir",
+    "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Birincil rengi ikincil renk ile değiştir",
+    "OPEN_PALETTE_BROWSER": "Palet tarayıcısını aç",
+    "OVERWRITE_PALETTE_CONSENT": "'{0}' paleti zaten mevcut, üzerine yazmak istiyor musunuz?",
+    "PALETTE_EXISTS": "Palet zaten mevcut",
+    "REPLACE_PALETTE_CONSENT": "Geçerli palet seçilenle değiştirilsin mi?",
+    "REPLACE_PALETTE": "Geçerli paleti değiştir",
+    "SELECT_COLOR_1": "Renk 1'i seç",
+    "SELECT_COLOR_2": "Renk 2'yi seç",
+    "SELECT_COLOR_3": "Renk 3'ü seç",
+    "SELECT_COLOR_4": "Renk 4'ü seç",
+    "SELECT_COLOR_5": "Renk 5'i seç",
+    "SELECT_COLOR_6": "Renk 6'yı seç",
+    "SELECT_COLOR_7": "Renk 7'yi seç",
+    "SELECT_COLOR_8": "Renk 8'i seç",
+    "SELECT_COLOR_9": "Renk 9'u seç",
+    "SELECT_COLOR_10": "Renk 10'u seç",
+    "SELECT_TOOL": "{0} Aracını Seç",
+    "SELECT_COLOR_1_DESCRIPTIVE": "Paletin ilk rengini seçin",
+    "SELECT_COLOR_2_DESCRIPTIVE": "Paletin ikinci rengini seçin",
+    "SELECT_COLOR_3_DESCRIPTIVE": "Paletin üçüncü rengini seçin",
+    "SELECT_COLOR_4_DESCRIPTIVE": "Paletin dördüncü rengini seçin",
+    "SELECT_COLOR_5_DESCRIPTIVE": "Paletin beşinci rengini seçin",
+    "SELECT_COLOR_6_DESCRIPTIVE": "Paletin altıncı rengini seçin",
+    "SELECT_COLOR_7_DESCRIPTIVE": "Paletin yedinci rengini seçin",
+    "SELECT_COLOR_8_DESCRIPTIVE": "Paletin sekizinci rengini seçin",
+    "SELECT_COLOR_9_DESCRIPTIVE": "Paletin dokuzuncu rengini seçin",
+    "SELECT_COLOR_10_DESCRIPTIVE": "Paletin onuncu rengini seçin",
+    "SWAP_COLORS": "Renkleri Değiştir",
+    "SWAP_COLORS_DESCRIPTIVE": "Birincil ve ikincil renkleri değiştir",
+    "SEARCH": "Ara",
+    "COMMAND_SEARCH": "Komut arama",
+    "OPEN_COMMAND_SEARCH": "Komut arama penceresini aç",
+    "SELECT": "Seç",
+    "DESELECT": "Seçimi Kaldır",
+    "INVERT": "Tersine Çevir",
+    "SELECTION": "Seçim",
+    "SELECT_ALL": "Hepsini Seç",
+    "SELECT_ALL_DESCRIPTIVE": "Hepsini seç",
+    "CLEAR_SELECTION": "Seçimi Temizle",
+    "INVERT_SELECTION": "Seçimi Tersine Çevir",
+    "INVERT_SELECTION_DESCRIPTIVE": "Seçimi tersine çevir",
+    "TRANSFORM_SELECTED_AREA": "Seçili alanı dönüştür",
+    "NUDGE_SELECTED_LEFT": "Seçili nesneyi sola kaydır",
+    "NUDGE_SELECTED_RIGHT": "Seçili nesneyi sağa kaydır",
+    "NUDGE_SELECTED_UP": "Seçili nesneyi yukarı kaydır",
+    "NUDGE_SELECTED_DOWN": "Seçili nesneyi aşağı kaydır",
+    "MASK_FROM_SELECTION": "Yeni maske oluştur",
+    "MASK_FROM_SELECTION_DESCRIPTIVE": "Seçimi yeni maskeye dönüştür",
+    "ADD_SELECTION_TO_MASK": "Seçimi maskeye ekle",
+    "SUBTRACT_SELECTION_FROM_MASK": "Seçimi maskeye çıkar",
+    "INTERSECT_SELECTION_MASK": "Seçimi maskeyle kesiştir",
+    "SELECTION_TO_MASK": "Seçimi maskeye dönüştür",
+    "TO_NEW_MASK": "yeni maske için",
+    "ADD_TO_MASK": "maskeye ekle",
+    "SUBTRACT_FROM_MASK": "maskeden çıkar",
+    "INTERSECT_WITH_MASK": "maskelerle kesiştir",
+    "STYLUS": "Stylus",
+    "TOGGLE_PEN_MODE": "Kalem modunu aç/kapat",
+    "UNDO": "Geri Al",
+    "UNDO_DESCRIPTIVE": "Son işlemi geri al",
+    "REDO": "Yinele",
+    "REDO_DESCRIPTIVE": "Son işlemi yeniden yap",
+    "WINDOWS": "Windows",
+    "TOGGLE_GRIDLINES": "Kılavuz çizgilerini aç/kapat",
+    "ZOOM_IN": "Yakınlaştır",
+    "ZOOM_OUT": "Uzaklaştır",
+    "NEW_WINDOW_FOR_IMG": "Mevcut resim için yeni pencere aç",
+    "CENTER_ACTIVE_VIEWPORT": "Etkin görünümü ortala",
+    "FLIP_VIEWPORT_HORIZONTALLY": "Görünümü yatay olarak çevir",
+    "FLIP_VIEWPORT_VERTICALLY": "Görünümü dikey olarak çevir",
+    "SETTINGS": "Ayarlar",
+    "OPEN_SETTINGS": "Ayarları aç",
+    "OPEN_SETTINGS_DESCRIPTIVE": "Ayarlar penceresini aç",
+    "OPEN_STARTUP_WINDOW": "Başlangıç penceresini aç",
+    "OPEN_SHORTCUT_WINDOW": "Kısayol penceresini aç",
+    "OPEN_ABOUT_WINDOW": "Hakkında penceresini aç",
+    "OPEN_NAVIGATION_WINDOW": "Gezinme penceresini aç",
+    "ERROR": "Hata",
+    "INTERNAL_ERROR": "Dahili hata",
+    "ERROR_SAVE_LOCATION": "Dosyayı belirtilen konuma kaydedemedim",
+    "ERROR_WHILE_SAVING": "Kaydetme sırasında dahili bir hata oluştu. Lütfen tekrar deneyin.",
+    "UNKNOWN_ERROR_SAVING": "Kaydetme sırasında bir hata oluştu.",
+    "FAILED_ASSOCIATE_LOSPEC": "Lospec Palet protokolü ilişkilendirilemedi.",
+    "REDDIT": "Reddit",
+    "GITHUB": "GitHub",
+    "YOUTUBE": "YouTube",
+    "DONATE": "Bağış Yap",
+    "YES": "Evet",
+    "NO": "Hayır",
+    "CANCEL": "İptal",
+    "UNNAMED": "İsimsiz",
+    "OPEN_COMMAND_DEBUG_WINDOW": "Komut hata ayıklama penceresini aç",
+    "DELETE": "Sil",
+    "USER_PREFS": "Kullanıcı tercihleri (Gezinti)",
+    "SHORTCUT_FILE": "Kısayol dosyası (Gezinti)",
+    "EDITOR_DATA": "Düzenleyici verileri (Yerel)",
+    "MOVE_VIEWPORT_TOOLTIP": "Görünümü taşı. ({0})",
+    "MOVE_VIEWPORT_ACTION_DISPLAY": "Görünümü kaydırmak için tıklayın ve sürükleyin",
+    "MOVE_TOOL_TOOLTIP": "Seçili pikselleri taşır ({0}). Tüm katmanları taşımak için Ctrl tuşuna basılı tutun.",
+    "MOVE_TOOL_ACTION_DISPLAY": "Seçili pikselleri taşımak için fareyi basılı tutun. Tüm katmanları taşımak için Ctrl tuşuna basılı tutun.",
+    "PEN_TOOL_TOOLTIP": "Kalem. ({0})",
+    "PEN_TOOL_ACTION_DISPLAY": "Çizmek için tıklayın ve sürükleyin.",
+    "PIXEL_PERFECT_SETTING": "Mükemmel piksel",
+    "RECTANGLE_TOOL_TOOLTIP": "Tuval üzerinde dikdörtgen çizer ({0}). Kare çizmek için Shift tuşunu basılı tutun.",
+    "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "Dikdörtgen çizmek için tıklayın ve sürükleyin. Kare çizmek için Shift tuşunu basılı tutun.",
+    "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Kare çizmek için tıklayın ve sürükleyin.",
+    "KEEP_ORIGINAL_IMAGE_SETTING": "Orijinal resmi koru",
+    "ROTATE_VIEWPORT_TOOLTIP": "Görünümü döndür. ({0})",
+    "ROTATE_VIEWPORT_ACTION_DISPLAY": "Görünümü döndürmek için tıklayın ve sürükleyin",
+    "SELECT_TOOL_TOOLTIP": "Alan seçer. ({0})",
+    "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Bir alan seçmek için tıklayın ve sürükleyin. Mevcut seçime eklemek için Shift tuşunu basılı tutun. Çıkarmak için Ctrl tuşuna basılı tutun.",
+    "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Mevcut seçime eklemek için tıklayın ve sürükleyin.",
+    "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Mevcut seçimden çıkarmak için tıklayın ve sürükleyin.",
+    "ZOOM_TOOL_TOOLTIP": "Görünümü yakınlaştırır ({0}). Yakınlaştırmak için tıklayın, alt tuşunu basılı tutun ve tıklayınarak uzaklaştırın.",
+    "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Yakınlaştırmak için tıklayın ve sürükleyin. Yakınlaştırmak için Ctrl tuşunu basılı tutun ve tıklayınarak uzaklaştırın.",
+    "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Yakınlaştırmak için tıklayın ve sürükleyin. Uzaklaştırmak için Ctrl tuşunu bırakın ve tıklayın.",
+    "BRIGHTNESS_TOOL_TOOLTIP": "Pikselleri daha parlak veya daha koyu hale getirir ({0}). Pikselleri daha koyu yapmak için Ctrl tuşunu basılı tutun.",
+    "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Pikselleri daha parlak hale getirmek için üzerlerine çizin. Pikselleri daha koyu yapmak için Ctrl tuşunu basılı tutun.",
+    "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Pikselleri daha koyu yapmak için üzerlerine çizin. Daha parlak hale getirmek için Ctrl tuşunu bırakın.",
+    "COLOR_PICKER_TOOLTIP": "Tuvalden birincil rengi seçer. ({0})",
+    "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Renkleri seçmek için tıklayın. Tuvali gizlemek için Ctrl tuşunu basılı tutun. Referans katmanı gizlemek için Shift tuşunu basılı tutun",
+    "ELLIPSE_TOOL_TOOLTIP": "Tuval üzerinde bir elips çizer ({0}). Bir daire çizmek için Shift tuşunu basılı tutun.",
+    "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Bir elips çizmek için tıklayın ve sürükleyin. Bir daire çizmek için Shift tuşunu basılı tutun.",
+    "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Bir daire çizmek için tıklayın ve sürükleyin.",
+    "ERASER_TOOL_TOOLTIP": "Piksellerden rengi siler. ({0})",
+    "ERASER_TOOL_ACTION_DISPLAY": "Silmek için tıklayın ve sürükleyin.",
+    "FLOOD_FILL_TOOL_TOOLTIP": "Alanı renkle doldurur. ({0})",
+    "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Doldurmak için bir alana basın. Tüm katmanları dikkate almak için Ctrl tuşunu basılı tutun.",
+    "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Doldurmak için bir alana basın. Yalnızca geçerli katmanları dikkate almak için Ctrl tuşunu bırakın.",
+    "LASSO_TOOL_TOOLTIP": "Lasso. ({0})",
+    "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Lasso içindeki pikselleri seçmek için tıklayın ve sürükleyin. Mevcut seçime eklemek için Shift tuşunu basılı tutun. Çıkarmak için Ctrl tuşunu basılı tutun.",
+    "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Lasso içindeki pikselleri seçmek için tıklayın ve sürükleyin.",
+    "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Lasso içindeki pikselleri mevcut seçimden çıkarmak için tıklayın ve sürükleyin.",
+    "LINE_TOOL_TOOLTIP": "Tuval üzerinde çizgi çizer ({0}). Yakalama etkinleştirmek için Shift tuşunu basılı tutun.",
+    "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Bir çizgi çizmek için tıklayın ve sürükleyin. Yakalamayı etkinleştirmek için Shift tuşunu basılı tutun.",
+    "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Yakalama etkinleştirilmiş bir çizgi çizmek için tıklayın ve sürükleyin.",
+    "MAGIC_WAND_TOOL_TOOLTIP": "Sihirli Değnek ({0}). Seçimi doldurur",
+    "MAGIC_WAND_ACTION_DISPLAY": "Seçimi doldurmak için tıklayın.",
+    "PEN_TOOL": "Kalem",
+    "BRIGHTNESS_TOOL": "Parlaklık",
+    "COLOR_PICKER_TOOL": "Renk Seçici",
+    "ELLIPSE_TOOL": "Elips",
+    "ERASER_TOOL": "Silgi",
+    "FLOOD_FILL_TOOL": "Doldurma",
+    "LASSO_TOOL": "Lasso",
+    "LINE_TOOL": "Çizgi",
+    "MAGIC_WAND_TOOL": "Sihirli Değnek",
+    "MOVE_TOOL": "Taşı",
+    "MOVE_VIEWPORT_TOOL": "Görünümü Taşı",
+    "RECTANGLE_TOOL": "Dikdörtgen",
+    "ROTATE_VIEWPORT_TOOL": "Görünümü Döndür",
+    "SELECT_TOOL_NAME": "Seçim",
+    "ZOOM_TOOL": "Yakınlaştırma",
+    "SHAPE_LABEL": "Şekil",
+    "MODE_LABEL": "Mod",
+    "SCOPE_LABEL": "Kapsam",
+    "FILL_SHAPE_LABEL": "Şekli Doldur",
+    "FILL_COLOR_LABEL": "Renk Doldur",
+    "TOOL_SIZE_LABEL": "Araç Boyutu",
+    "STRENGTH_LABEL": "Güç",
+    "NEW": "Yeni",
+    "ADD": "Ekle",
+    "SUBTRACT": "Çıkar",
+    "INTERSECT": "Kesişim",
+    "RECTANGLE": "Dikdörtgen",
+    "CIRCLE": "Daire",
+    "ABOUT": "Hakkında",
+    "MINIMIZE": "Simge Durumuna Küçült",
+    "RESTORE": "Geri Al",
+    "MAXIMIZE": "Büyüt",
+    "CLOSE": "Kapat",
+    "EXPORT_SIZE_HINT": "Görüntüyü paylaşmak isterseniz, en iyi netlik için {0}% önerilir",
+    "CREATE": "Oluştur",
+    "BASE_LAYER_NAME": "Ana katman",
+    "ENABLE_MASK": "Maskeleri Etkinleştir",
+    "SELECTED_AREA_EMPTY": "Seçilen alan boş",
+    "NOTHING_TO_COPY": "Kopyalanacak bir şey yok",
+    "REFERENCE_LAYER_PATH": "Referans katmanı yolu",
+    "FLIP": "Çevir",
+    "ROTATION": "Döndürme",
+    "ROT_IMG_90_D": "Görüntüyü 90° Döndür",
+    "ROT_IMG_180_D": "Görüntüyü 180° Döndür",
+    "ROT_IMG_-90_D": "Görüntüyü -90° Döndür",
+    "ROT_LAYERS_90_D": "Seçili Katmanları 90° Döndür",
+    "ROT_LAYERS_180_D": "Seçili Katmanları 180° Döndür",
+    "ROT_LAYERS_-90_D": "Seçili Katmanları -90° Döndür",
+    "UNNAMED_PALETTE": "Adsız Palet",
+    "CLICK_SELECT_PRIMARY": "Ana rengi seçmek için tıklayın.",
+    "PEN_MODE": "Kalem modu",
+    "VIEW": "Görünüm",
+    "HORIZONTAL_LINE_SYMMETRY": "Yatay çizgi simetrisi",
+    "VERTICAL_LINE_SYMMETRY": "Dikey çizgi simetrisi",
+    "COLOR_PICKER_TITLE": "Renk Seçici",
+    "COLOR_SLIDERS_TITLE": "Renk Kaydırıcıları",
+    "PALETTE_TITLE": "Palet",
+    "SWATCHES_TITLE": "Renk Örnekleri",
+    "LAYERS_TITLE": "Katmanlar",
+    "NAVIGATION_TITLE": "Gezinme",
+    "NORMAL_BLEND_MODE": "Normal",
+    "DARKEN_BLEND_MODE": "Karartma",
+    "MULTIPLY_BLEND_MODE": "Çarpma",
+    "COLOR_BURN_BLEND_MODE": "Renk Yakma",
+    "LIGHTEN_BLEND_MODE": "Aydınlatma",
+    "SCREEN_BLEND_MODE": "Ekran",
+    "COLOR_DODGE_BLEND_MODE": "Renk Geçişi",
+    "OVERLAY_BLEND_MODE": "Üzerine Yerleştirme",
+    "SOFT_LIGHT_BLEND_MODE": "Yumuşak Işık",
+    "HARD_LIGHT_BLEND_MODE": "Sert Işık",
+    "DIFFERENCE_BLEND_MODE": "Fark",
+    "EXCLUSION_BLEND_MODE": "Dışlama",
+    "HUE_BLEND_MODE": "Ton",
+    "SATURATION_BLEND_MODE": "Doygunluk",
+    "LUMINOSITY_BLEND_MODE": "Parlaklık",
+    "COLOR_BLEND_MODE": "Renk",
+    "NOT_SUPPORTED_BLEND_MODE": "Desteklenmeyen",
+    "RESTART": "Yeniden Başlat",
+    "SORT_BY": "Sırala",
+    "NAME": "İsim",
+    "COLORS": "Renkler",
+    "DEFAULT": "Varsayılan",
+    "ALPHABETICAL": "Alfabetik",
+    "COLOR_COUNT": "Renk sayısı",
+    "ANY": "Herhangi biri",
+    "MAX": "Maksimum",
+    "MIN": "Minimum",
+    "EXACT": "Tam",
+    "ASCENDING": "Artan",
+    "DESCENDING": "Azalan",
+    "NAME_IS_TOO_LONG": "İsim çok uzun",
+    "STOP_IT_TEXT1": "Yeter. Dosya isimlerinizi düzgünleştirin.",
+    "STOP_IT_TEXT2": "Bu isimleri kopyalamayı bırakabilir misiniz?",
+    "REPLACER_TOOLTIP": "Palet renginin üzerine sağ tıklayın ve 'Değiştir' seçeneğini seçin veya buraya bırakın.",
+    "CLICK_TO_CHOOSE_COLOR": "Renk seçmek için tıklayın",
+    "REPLACE_COLOR": "Rengi değiştir",
+    "PALETTE_COLOR_TOOLTIP": "Ana renk olarak seçmek için tıklayın. Başka bir palet renginin üzerine sürükleyip bırakarak değiştirin.",
+    "ADD_FROM_SWATCHES": "Renk örneklerinden ekle",
+    "ADD_COLOR_TO_PALETTE": "Palet'e renk ekle",
+    "USE_IN_CURRENT_IMAGE": "Geçerli görüntüde kullan",
+    "ADD_TO_FAVORITES": "Favorilere ekle",
+    "BROWSE_PALETTES": "Paletlere göz at",
+    "LOAD_PALETTE": "Paleti yükle",
+    "SAVE_PALETTE": "Paleti kaydet",
+    "FAVORITES": "Favoriler",
+    "ADD_FROM_CURRENT_PALETTE": "Mevcut paletten ekle",
+    "OPEN_PALETTES_DIR_TOOLTIP": "Paletler dizinini gezginde aç",
+    "BROWSE_ON_LOSPEC_TOOLTIP": "Lospec'te paletlere göz at",
+    "IMPORT_FROM_FILE_TOOLTIP": "Dosyadan içe aktar",
+    "TOP_LEFT": "Sol üst",
+    "TOP_CENTER": "Orta üst",
+    "TOP_RIGHT": "Sağ üst",
+    "MIDDLE_LEFT": "Sol orta",
+    "MIDDLE_CENTER": "Orta",
+    "MIDDLE_RIGHT": "Sağ orta",
+    "BOTTOM_LEFT": "Sol alt",
+    "BOTTOM_CENTER": "Orta alt",
+    "BOTTOM_RIGHT": "Sağ alt",
+    "CLIP_TO_BELOW": "Alt katmana kırp",
+    "MOVE_UPWARDS": "Yukarı taşı",
+    "MOVE_DOWNWARDS": "Aşağı taşı",
+    "MERGE_SELECTED": "Seçilenleri birleştir",
+    "LOCK_TRANSPARENCY": "Şeffaflığı kilitle",
+    "COULD_NOT_LOAD_PALETTE": "Palet alınamadı",
+    "NO_PALETTES_FOUND": "Palet bulunamadı.",
+    "LOSPEC_LINK_TEXT": "İşte bazılarına buradan ulaşabilirsiniz: lospec.com/palette-list",
+    "PALETTE_BROWSER": "Palet Tarayıcısı",
+    "DELETE_PALETTE_CONFIRMATION": "Bu paleti silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
+    "SHORTCUTS_IMPORTED": "{0} kaynaklı kısayollar başarıyla içe aktarıldı.",
+    "SHORTCUT_PROVIDER_DETECTED": "{0} yüklendiği tespit edildi. Kısayollarını içe aktarmak istiyor musunuz?",
+    "IMPORT_FROM_INSTALLATION": "Yüklemeyi içe aktar",
+    "IMPORT_INSTALLATION_OPTION1": "Yüklemeyi içe aktar",
+    "IMPORT_INSTALLATION_OPTION2": "Varsayılanları kullan",
+    "IMPORT_FROM_TEMPLATE": "Şablondan içe aktar",
+    "SHORTCUTS_IMPORTED_SUCCESS": "Kısayollar başarıyla içe aktarıldı.",
+    "WARNING_RESET_SHORTCUTS_DEFAULT": "Tüm kısayolları varsayılan değerlerine sıfırlamak istediğinizden emin misiniz?",
+    "SUCCESS": "Başarılı",
+    "WARNING": "Uyarı",
+    "ERROR_IMPORTING_IMAGE": "Resim içe aktarılırken bir hata oluştu.",
+    "SHORTCUTS_CORRUPTED_TITLE": "Bozuk kısayollar dosyası",
+    "SHORTCUTS_CORRUPTED": "Kısayollar dosyası bozuldu, varsayılanlara sıfırlanıyor.",
+    "FAILED_DOWNLOAD_PALETTE": "Palet indirilemedi",
+    "FILE_INCORRECT_FORMAT": "Dosya doğru bir formatta değil",
+    "INVALID_FILE": "Geçersiz dosya",
+    "SHORTCUTS_FILE_INCORRECT_FORMAT": "Kısayollar dosyası doğru bir formatta değil",
+    "UNSUPPORTED_FILE_FORMAT": "Bu dosya formatı desteklenmiyor",
+    "ALREADY_ASSIGNED": "Zaten atanmış",
+    "REPLACE": "Değiştir",
+    "SWAP": "Değiştir",
+    "SHORTCUT_ALREADY_ASSIGNED_SWAP": "Bu kısayol zaten '{0}' için atanmış\nMevcut kısayolu değiştirmek veya ikisini değiştirmek istiyor musunuz?",
+    "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "Bu kısayol zaten '{0}' için atanmış\nMevcut kısayolu değiştirmek istiyor musunuz?",
+    "UNSAVED_CHANGES": "Kaydedilmemiş değişiklikler",
+    "DOCUMENT_MODIFIED_SAVE": "Belge değiştirildi. Değişiklikleri kaydetmek istiyor musunuz?",
+    "SESSION_UNSAVED_DATA": "{0} kaydedilmemiş veri içeriyor. Emin misiniz?",
+    "PROJECT_MAINTAINERS": "Proje Bakımcıları",
+    "OTHER_AWESOME_CONTRIBUTORS": "Ve diğer harika katkıda bulunanlar",
+    "HELP": "Yardım",
+    "STOP_IT_TEXT3": "Hayır gerçekten, yeter.",
+    "STOP_IT_TEXT4": "Daha iyi yapacak başka bir şeyiniz yok mu?",
+    "LINEAR_DODGE_BLEND_MODE": "Lineer dodge (Ekleme)",
+    "PRESS_ANY_KEY": "Herhangi bir tuşa basın",
+    "NONE_SHORTCUT": "Hiçbiri",
+    "REFERENCE": "Referans",
+    "PUT_REFERENCE_LAYER_ABOVE": "Referans katmanını üste yerleştir",
+    "PUT_REFERENCE_LAYER_BELOW": "Referans katmanını alta yerleştir",
+    "TOGGLE_VERTICAL_SYMMETRY": "Dikey simetriyi aç/kapat",
+    "TOGGLE_HORIZONTAL_SYMMETRY": "Yatay simetriyi aç/kapat",
+    "RESET_VIEWPORT": "Görünümü sıfırla",
+    "VIEWPORT_SETTINGS": "Görünüm ayarları",
+    "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Tıklanıp basılı tutarak seçili katmanlardaki pikselleri taşımak için fareyi kullanın.",
+    "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Tüm katmanları taşımak için fareyi basılı tutun.",
+    "CTRL_KEY": "Ctrl",
+    "SHIFT_KEY": "Shift",
+    "ALT_KEY": "Alt",
+    "RENAME": "Yeniden adlandır",
+    "PIXEL_UNIT": "px",
+    "OPEN_LOCALIZATION_DEBUG_WINDOW": "Yerelleştirme Hata Ayıklama Penceresini Aç",
+    "FORCE_OTHER_FLOW_DIRECTION": "Diğer akış yönünü zorla",
+    "API_KEY": "API Anahtarı",
+    "LOCALIZATION_VIEW_TYPE": "Yerelleştirme Görünüm Türü",
+    "LOAD_LANGUAGE_FROM_FILE": "Dili dosyadan yükle",
+    "LOG_IN": "Giriş yap",
+    "SYNC": "Senkronize Et",
+    "NOT_LOGGED_IN": "Giriş Yapılmadı",
+    "POE_EDITOR_ERROR": "POEditor Hatası: {0} {1}",
+    "HTTP_ERROR_MESSAGE": "HTTP Hatası: {0} {1}",
+    "LOGGED_IN": "Giriş Yapıldı",
+    "SYNCED_SUCCESSFULLY": "Başarıyla Senkronize Edildi",
+    "EXCEPTION_ERROR": "Hata: {0}",
+    "DROP_PALETTE": "Paleti Buraya Bırak",
+    "SECURITY_ERROR": "Güvenlik Hatası",
+    "SECURITY_ERROR_MSG": "Belirtilen konuma yazma izni yok.",
+    "IO_ERROR": "G/Ç Hatası",
+    "IO_ERROR_MSG": "Disk'e yazarken hata oluştu.",
+    "FAILED_ASSOCIATE_PIXI": ".pixi dosyası PixiEditor ile ilişkilendirilemedi.",
+    "COULD_NOT_SAVE_PALETTE": "Palet kaydedilirken bir hata oluştu.",
+    "NO_COLORS_TO_SAVE": "Kaydedilecek renk bulunmuyor.",
+    "ALL_LAYERS": "Tüm Katmanlar",
+    "SINGLE_LAYER": "Tek Katman",
+    "CHOOSE": "Seç",
+    "REMOVE": "Kaldır",
+    "FILE_FORMAT_NOT_ASEPRITE_KEYS": "Dosya bir \".aseprite-keys\" dosyası değil",
+    "FILE_HAS_INVALID_SHORTCUT": "Dosya geçersiz bir kısayol içeriyor",
+    "FILE_EXTENSION_NOT_SUPPORTED": "Dosya türü '{0}' desteklenmiyor",
+    "ERROR_READING_FILE": "Dosya okunurken hata oluştu",
+    "DISCARD_PALETTE": "Paleti At",
+    "DISCARD_PALETTE_CONFIRMATION": "Mevcut paleti atmak istediğinizden emin misiniz? Bu işlem geri alınamaz.",
+    "IMPORT_AS_NEW_LAYER": "Yeni katman olarak içe aktar",
+    "PASTE_AS_PRIMARY_COLOR": "Birincil renk olarak yapıştır",
+    "IMPORT_AS_NEW_FILE": "Yeni dosya olarak içe aktar",
+    "IMPORT_PALETTE_FILE": "Palet dosyasını içe aktar",
+    "IMPORT_MULTIPLE_PALETTE_COLORS": "Renkleri palet içine aktar",
+    "IMPORT_SINGLE_PALETTE_COLOR": "Renkleri palet içine aktar",
+    "IMPORT_AS_REFERENCE_LAYER": "Referans katmanı olarak içe aktar",
+    "NAVIGATOR_PICK_ACTION_DISPLAY": "Renk seçmek için sağ tıklayın, Renkleri panoya kopyalamak için Shift tuşuna basılı tutun",
+    "OPEN_FILE_FROM_CLIPBOARD": "Panodan aç",
+    "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Panodan aç",
+    "OPEN_LOCALIZATION_DATA": "LocalizationData.json dosyasını mı açmak istiyorsunuz?\nGüncellenmiş tarih panoya kopyalandı.\nNot Değişiklikler, yeniden başlatma yapılana kadar uygulanmayacaktır",
+    "DOWNLOADING_LANGUAGE_FAILED": "Dil indirme başarısız oldu.\nAPI Anahtarı aşırı kullanılmış olabilir.",
+    "LOCALIZATION_DATA_NOT_FOUND": "Yerelleştirme veri yolu bulunamadı",
+    "APPLY": "Uygula",
+    "UPDATE_SOURCE": "Kaynağı Güncelle",
+    "COPY_TO_CLIPBOARD": "Panoya Kopyala",
+    "LANGUAGE_FILE_NOT_FOUND": "Dil dosyası bulunamadı.\n'{0}' dosyası aranıyor",
+    "PROJECT_ROOT_NOT_FOUND": "PixiEditor proje kökü bulunamadı.\nPixiEditor.csproj dosyası aranıyor",
+    "LOCALIZATION_FOLDER_NOT_FOUND": "Yerelleştirme klasörü bulunamadı.\n/Data/Localization dizini aranıyor",
+    "SELECT_A_LANGUAGE": "Bir dil seçin",
+    "DONE": "Tamamlandı",
+    "SOURCE_UNSET_OR_MISSING": "Kaynak eksik/belirtilmemiş",
+    "SOURCE_NEWER": "Kaynak daha yeni",
+    "SOURCE_UP_TO_DATE": "Kaynak güncel",
+    "SOURCE_OLDER": "Bulut daha yeni",
+    "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Referans katmanından renk seçmek için tıklayın.",
+    "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Tuvalden renk seçmek için tıklayın.",
+    "LOCALIZATION_DEBUG_WINDOW_TITLE": "Yerelleştirme Hata Ayıklama Penceresi",
+    "COMMAND_DEBUG_WINDOW_TITLE": "Komut Hata Ayıklama Penceresi",
+    "SHORTCUTS_TITLE": "Kısayollar",
+    "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Dönüştürmeyi ölçeklendirmek için kolları sürükleyin. Bir kolun üzerine tıklayıp Ctrl tuşunu basılı tutarak kolun serbestçe hareket etmesini sağlayın. Orantılı olarak ölçeklendirmek için Shift tuşunu basılı tutun. Bir yan kolun üzerine tıklayıp Alt tuşunu basılı tutarak kaydırın. Dış kolları sürükleyerek döndürün.",
+    "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Dönüştürmeyi ölçeklendirmek için kolları sürükleyin. Orantılı olarak ölçeklendirmek için Shift tuşunu basılı tutun. Bir yan kolun üzerine tıklayıp Alt tuşunu basılı tutarak kaydırın. Dış kolları sürükleyerek döndürün.",
+    "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Dönüştürmeyi ölçeklendirmek için kolları sürükleyin. Shift tuşunu basılı tutunarak orantılı olarak ölçeklendirin. Dış kolları sürükleyerek döndürün.",
+    "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Dönüştürmeyi ölçeklendirmek için kolları sürükleyin. Shift tuşunu basılı tutarak orantılı olarak ölçeklendirin.",
+    "OPEN_DOCUMENTATION": "Dokümantasyonu aç",
+    "LOCAL_PALETTE_SOURCE_NAME": "Yerel",
+    "ERROR_FORBIDDEN_UNIQUE_NAME": "Uzantı benzersiz adı 'pixieditor' ile başlayamaz.",
+    "ERROR_MISSING_METADATA": "Uzantı metaverisi '{0}' eksik.",
+    "ERROR_NO_CLASS_ENTRY": "Uzantı sınıf girişi '{0}' yolda eksik.",
+    "ERROR_NO_ENTRY_ASSEMBLY": "Uzantı giriş derlemesi '{0}' yolda eksik.",
+    "ERROR_MISSING_ADDITIONAL_CONTENT": "Mevcut yapılandırmanız bu uzantının yüklenmesine izin vermiyor. Belki de sahibi değilsiniz veya yüklü değil. Uzantıyı buradan satın alabilirsiniz '{0}'.",
+    "BUY_SUPPORTER_PACK": "Destekçi Paketi Satın Al",
+    "NEWS": "Haberler",
+    "DISABLE_NEWS_PANEL": "Başlangıç penceresinde Haberler panelini devre dışı bırak",
+    "FAILED_FETCH_NEWS": "Haberleri alırken hata oluştu",
+    "CROP_TO_SELECTION": "Seçime Kırp",
+    "CROP_TO_SELECTION_DESCRIPTIVE": "Resmi seçime kırp",
+    "SHOW_CONTEXT_MENU": "Bağlam Menüsünü Göster",
+    "ERASE": "Sil",
+    "USE_SECONDARY_COLOR": "İkincil rengi kullan",
+    "RIGHT_CLICK_MODE": "Sağ Tıklama Modu",
+    "ADD_PRIMARY_COLOR_TO_PALETTE": "Birincil rengi palete ekle",
+    "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Birincil rengi mevcut palete ekle",
+    "COPY_COLOR": "Rengi Kopyala"
+}

+ 30 - 10
src/PixiEditor/Data/Localization/Languages/uk.json

@@ -537,7 +537,7 @@
   "NAVIGATOR_PICK_ACTION_DISPLAY": "Клацніть правою кнопкою миші, щоб вибрати колір, клацніть правою кнопкою миші, утримуючи Shift, щоб скопіювати колір до буфера обміну",
   "OPEN_FILE_FROM_CLIPBOARD": "Відкрити з буфера обміну",
   "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Відкрити з буфера обміну",
-  "OPEN_LOCALIZATION_DATA": "Do you want to open the LocalizationData.json?\nThe updated date has been put in the clipboard.\nNote that changes wont be applied until a restart",
+  "OPEN_LOCALIZATION_DATA": "Бажаєте відкрити файл LocalizationData.json?\nОновлені дані поміщено в буфер обміну.\nЗауважте, що зміни не буде застосовано до перезапуску",
   "DOWNLOADING_LANGUAGE_FAILED": "Помилка завантаження мови.\nМожливо, було зловживано ключем API.",
   "LOCALIZATION_DATA_NOT_FOUND": "Шлях до даних локалізації не знайдено",
   "APPLY": "Застосувати",
@@ -552,13 +552,33 @@
   "SOURCE_NEWER": "Джерело новіше",
   "SOURCE_UP_TO_DATE": "Джерело актуальне",
   "SOURCE_OLDER": "Хмара новіше",
-  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
-  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
-  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
-  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
-  "SHORTCUTS_TITLE": "Shortcuts",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Натисніть, щоб вибрати кольори з опорного шару.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Натисніть, щоб вибрати кольори з полотна.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Вікно налагодження локалізації",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Вікно налагодження команд",
+  "SHORTCUTS_TITLE": "Комбінації клавіш",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Перетягніть маркери, щоб змінити масштаб. Утримуйте Ctrl і перетягніть маркер, щоб вільно переміщати його. Утримуйте Shift, щоб масштабувати пропорційно. Утримуйте Alt і перетягніть бічний маркер, щоб зсунути. Перетягніть зовнішні маркери, щоб обертати.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Перетягніть маркери, щоб змінити масштаб. Утримуйте Shift, щоб масштабувати пропорційно. Утримуйте Alt і перетягніть бічний маркер, щоб зсунути. Перетягніть зовнішні маркери, щоб обертати.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Перетягніть маркери, щоб змінити масштаб. Утримуйте Shift, щоб масштабувати пропорційно. Перетягніть зовнішні маркери, щоб обертати.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Перетягніть маркери, щоб змінити масштаб. Утримуйте Shift, щоб масштабувати пропорційно.",
+  "OPEN_DOCUMENTATION": "Відкрити документацію",
+  "LOCAL_PALETTE_SOURCE_NAME": "Локально",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "Унікальна назва розширення не може починатися з 'pixieditor'.",
+  "ERROR_MISSING_METADATA": "Ключ метаданих розширення '{0}' відсутній.",
+  "ERROR_NO_CLASS_ENTRY": "За шляхом '{0}' немає запису класу розширення.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "За шляхом '{0}' немає вузла запису розширення.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "Ваші поточні налаштування не дозволяють завантажити це розширення. Можливо, воно вам не належить або воно не встановлено. Ви можете придбати його тут '{0}'.",
+  "BUY_SUPPORTER_PACK": "Купити Пакет підтримки",
+  "NEWS": "Новини",
+  "DISABLE_NEWS_PANEL": "Вимкнути панель новин у вікні запуску",
+  "FAILED_FETCH_NEWS": "Не вдалося отримати новини",
+  "CROP_TO_SELECTION": "Обрізати до виділеного",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "Обрізати зображення згідно виділеному",
+  "SHOW_CONTEXT_MENU": "Показати контекстне меню",
+  "ERASE": "Стерти",
+  "USE_SECONDARY_COLOR": "Використати вторинний колір",
+  "RIGHT_CLICK_MODE": "Режим правої кнопки миші",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "Додати основний колір до палітри",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Додати основний колір до поточної палітри",
+  "COPY_COLOR": "Copy color"
 }

+ 48 - 28
src/PixiEditor/Data/Localization/Languages/zh.json

@@ -108,13 +108,13 @@
   "CREATE_NEW_FOLDER": "新建一个文件夹",
   "NEW_LAYER": "新图层",
   "CREATE_NEW_LAYER": "新建一个图层",
-  "NEW_IMAGE": "新图片",
-  "CREATE_NEW_IMAGE": "新建图片",
+  "NEW_IMAGE": "新画布",
+  "CREATE_NEW_IMAGE": "新建画布",
   "SAVE": "保存",
   "SAVE_AS": "另存为……",
-  "IMAGE": "图片",
-  "SAVE_IMAGE": "保存图片",
-  "SAVE_IMAGE_AS": "另存为新图片",
+  "IMAGE": "画布",
+  "SAVE_IMAGE": "保存画布",
+  "SAVE_IMAGE_AS": "另存为新画布",
   "DUPLICATE": "复制",
   "DUPLICATE_SELECTED_LAYER": "复制当前图层",
   "CREATE_MASK": "创建蒙版",
@@ -138,13 +138,13 @@
   "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "在最上层和最下层之间切换参考图层",
   "RESET_REFERENCE_LAYER_POS": "重置参考图层位置",
   "CLIP_CANVAS": "裁剪画布",
-  "FLIP_IMG_VERTICALLY": "垂直翻转图片",
-  "FLIP_IMG_HORIZONTALLY": "水平翻转图片",
+  "FLIP_IMG_VERTICALLY": "垂直翻转画布",
+  "FLIP_IMG_HORIZONTALLY": "水平翻转画布",
   "FLIP_LAYERS_VERTICALLY": "垂直翻转已选图层",
   "FLIP_LAYERS_HORIZONTALLY": "水平翻转已选图层",
-  "ROT_IMG_90": "将图片顺时针旋转90度",
-  "ROT_IMG_180": "将图片旋转180度",
-  "ROT_IMG_-90": "将图片逆时针旋转90度",
+  "ROT_IMG_90": "将画布顺时针旋转90度",
+  "ROT_IMG_180": "将画布旋转180度",
+  "ROT_IMG_-90": "将画布逆时针旋转90度",
   "ROT_LAYERS_90": "将已选图层顺时针旋转90度",
   "ROT_LAYERS_180": "将已选图层旋转180度",
   "ROT_LAYERS_-90": "将已选图层逆时针旋转90度",
@@ -248,7 +248,7 @@
   "TOGGLE_GRIDLINES": "开/关网格线",
   "ZOOM_IN": "放大",
   "ZOOM_OUT": "缩小",
-  "NEW_WINDOW_FOR_IMG": "为当前图片创建新窗口",
+  "NEW_WINDOW_FOR_IMG": "为当前画布创建新窗口",
   "CENTER_ACTIVE_VIEWPORT": "居中视口",
   "FLIP_VIEWPORT_HORIZONTALLY": "将视口水平翻转",
   "FLIP_VIEWPORT_VERTICALLY": "将视口垂直翻转",
@@ -362,12 +362,12 @@
   "REFERENCE_LAYER_PATH": "参考图层路径",
   "FLIP": "反转",
   "ROTATION": "旋转",
-  "ROT_IMG_90_D": "顺时针旋转图片90°",
-  "ROT_IMG_180_D": "旋转图片180°",
-  "ROT_IMG_-90_D": "逆时针旋转图片90°",
-  "ROT_LAYERS_90_D": "顺时针旋转已选图90°",
-  "ROT_LAYERS_180_D": "旋转已选图180°",
-  "ROT_LAYERS_-90_D": "逆时针旋转已选图90°",
+  "ROT_IMG_90_D": "顺时针旋转画布90°",
+  "ROT_IMG_180_D": "旋转画布180°",
+  "ROT_IMG_-90_D": "逆时针旋转画布90°",
+  "ROT_LAYERS_90_D": "顺时针旋转已选图90°",
+  "ROT_LAYERS_180_D": "旋转已选图180°",
+  "ROT_LAYERS_-90_D": "逆时针旋转已选图90°",
   "UNNAMED_PALETTE": "未命名调色板",
   "CLICK_SELECT_PRIMARY": "单击以将其设为主色",
   "PEN_MODE": "画笔模式",
@@ -419,7 +419,7 @@
   "PALETTE_COLOR_TOOLTIP": "单击以选为主色。点击并将其拖动至另一个色板以将其互换。",
   "ADD_FROM_SWATCHES": "从颜色样品中加入",
   "ADD_COLOR_TO_PALETTE": "将颜色加至色板",
-  "USE_IN_CURRENT_IMAGE": "在当前图片中使用",
+  "USE_IN_CURRENT_IMAGE": "在当前画布中使用",
   "ADD_TO_FAVORITES": "加至收藏夹",
   "BROWSE_PALETTES": "浏览色板",
   "LOAD_PALETTE": "导入色板",
@@ -458,7 +458,7 @@
   "WARNING_RESET_SHORTCUTS_DEFAULT": "你确认要将所有捷径重置为默认值吗?",
   "SUCCESS": "成功",
   "WARNING": "警告",
-  "ERROR_IMPORTING_IMAGE": "导入图片时出现错误。",
+  "ERROR_IMPORTING_IMAGE": "导入图片时出现错误。",
   "SHORTCUTS_CORRUPTED_TITLE": "损坏的捷径文件",
   "SHORTCUTS_CORRUPTED": "捷径文件已损坏,将其重置为默认值。",
   "FAILED_DOWNLOAD_PALETTE": "无法下载色板",
@@ -552,13 +552,33 @@
   "SOURCE_NEWER": "来源更新",
   "SOURCE_UP_TO_DATE": "来源已更新",
   "SOURCE_OLDER": "云更新",
-  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
-  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
-  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
-  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
-  "SHORTCUTS_TITLE": "Shortcuts",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "点击以从参考图层中选取颜色。",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "点击以从画布选取颜色。",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "本地化调试窗口",
+  "COMMAND_DEBUG_WINDOW_TITLE": "命令调试窗口",
+  "SHORTCUTS_TITLE": "快捷键",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "拖动手柄以缩放已选像素。按住 Ctrl 并拖动手柄可自由移动手柄。按住 Shift 键按比例缩放。按住 Alt 并拖动侧手柄进行剪切。 拖动外部手柄进行旋转。",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "拖动手柄以缩放已选像素。按住 Shift 键按比例缩放。按住 Alt 并拖动侧手柄进行剪切。拖动外部手柄进行旋转。",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "拖动手柄以缩放已选像素。按住 Shift 键按比例缩放。拖动外部手柄进行旋转。",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "拖动手柄以缩放已选像素。按住 Shift 键按比例缩放。",
+  "OPEN_DOCUMENTATION": "Open documentation",
+  "LOCAL_PALETTE_SOURCE_NAME": "Local",
+  "ERROR_FORBIDDEN_UNIQUE_NAME": "Extension unique name cannot start with 'pixieditor'.",
+  "ERROR_MISSING_METADATA": "Extension metadata key '{0}' is missing.",
+  "ERROR_NO_CLASS_ENTRY": "Extension class entry is missing on path '{0}'.",
+  "ERROR_NO_ENTRY_ASSEMBLY": "Extension entry assembly is missing on path '{0}'.",
+  "ERROR_MISSING_ADDITIONAL_CONTENT": "Your current setup doesn't allow loading this extension. Perhaps you don't own it or don't have it installed. You can purchase it here '{0}'.",
+  "BUY_SUPPORTER_PACK": "Buy Supporter Pack",
+  "NEWS": "News",
+  "DISABLE_NEWS_PANEL": "Disable News panel in startup window",
+  "FAILED_FETCH_NEWS": "Failed to fetch news",
+  "CROP_TO_SELECTION": "Crop to selection",
+  "CROP_TO_SELECTION_DESCRIPTIVE": "Crop image to selection",
+  "SHOW_CONTEXT_MENU": "Show context menu",
+  "ERASE": "Erase",
+  "USE_SECONDARY_COLOR": "Use secondary color",
+  "RIGHT_CLICK_MODE": "Right click mode",
+  "ADD_PRIMARY_COLOR_TO_PALETTE": "Add primary color to palette",
+  "ADD_PRIMARY_COLOR_TO_PALETTE_DESCRIPTIVE": "Add primary color to current palette",
+  "COPY_COLOR": "Copy color"
 }

+ 22 - 8
src/PixiEditor/Data/Localization/LocalizationData.json

@@ -13,14 +13,14 @@
       "code": "pl",
       "localeFileName": "pl.json",
       "iconFileName": "pl.png",
-      "lastUpdated": "2023-05-24 21:30:08"
+      "lastUpdated": "2023-06-25 14:16:00"
     },
     {
       "name": "Deutsch",
       "code": "de",
       "localeFileName": "de.json",
       "iconFileName": "de.png",
-      "lastUpdated": "2023-05-09 16:10:00"
+      "lastUpdated": "2023-06-25 12:55:11"
     },
     {
       "name": "Español",
@@ -34,21 +34,21 @@
       "code": "zh",
       "localeFileName": "zh.json",
       "iconFileName": "zh.png",
-      "lastUpdated": "2023-05-15 03:23:28"
+      "lastUpdated": "2023-06-01 12:32:02"
     },
     {
       "name": "Русский",
       "code": "ru",
       "localeFileName": "ru.json",
       "iconFileName": "ru.png",
-      "lastUpdated": "2023-05-15 00:49:58"
+      "lastUpdated": "2023-06-25 14:17:44"
     },
     {
       "name": "Українська",
       "code": "uk",
       "localeFileName": "uk.json",
       "iconFileName": "uk.png",
-      "lastUpdated": "2023-05-18 17:47:07"
+      "lastUpdated": "2023-06-25 11:35:31"
     },
     {
       "name": "عربي",
@@ -56,21 +56,21 @@
       "localeFileName": "ar.json",
       "iconFileName": "ar.png",
       "rightToLeft": true,
-      "lastUpdated": "2023-05-20 11:59:21"
+      "lastUpdated": "2023-06-25 14:47:47"
     },
     {
       "name": "Čeština",
       "code": "cs",
       "localeFileName": "cs.json",
       "iconFileName": "cs.png",
-      "lastUpdated": "2023-05-07 14:01:25"
+      "lastUpdated": "2023-06-27 18:55:52"
     },
     {
       "name": "Português (Brasil)",
       "code": "pt-br",
       "localeFileName": "pt-br.json",
       "iconFileName": "pt-br.png",
-      "lastUpdated": "2023-05-15 09:13:45"
+      "lastUpdated": "2023-06-01 21:22:27"
     },
     {
       "name": "Magyar",
@@ -78,6 +78,20 @@
       "localeFileName": "hu.json",
       "iconFileName": "hu.png",
       "lastUpdated": "2023-05-09 00:07:37"
+    },
+    {
+      "name": "Italiano",
+      "code": "it",
+      "localeFileName": "it.json",
+      "iconFileName": "it.png",
+      "lastUpdated": "2023-06-25 14:44:38"
+    },
+    {
+      "name": "Türkçe",
+      "code": "tr",
+      "localeFileName": "tr.json",
+      "iconFileName": "tr.png",
+      "lastUpdated": "2023-06-25 19:43:24"
     }
   ]
 }

+ 1 - 0
src/PixiEditor/Extensions/readme.txt

@@ -0,0 +1 @@
+All the extensions goes in this folder.

+ 12 - 1
src/PixiEditor/Helpers/ClipboardHelper.cs

@@ -43,7 +43,18 @@ internal static class ClipboardHelper
         }
     }
     
-    public static VecI GetVecI(this DataObject data, string format) => VecI.FromBytes((byte[])data.GetData(format));
+    public static VecI GetVecI(this DataObject data, string format)
+    {
+        if (!data.GetDataPresent(format))
+            return VecI.NegativeOne;
+
+        byte[] bytes = (byte[])data.GetData(format);
+
+        if (bytes is { Length: < 8 })
+            return VecI.NegativeOne;
+
+        return VecI.FromBytes(bytes);
+    }
 
     public static void SetVecI(this DataObject data, string format, VecI value) => data.SetData(format, value.ToByteArray());
 }

+ 3 - 0
src/PixiEditor/Helpers/VersionHelpers.cs

@@ -17,6 +17,9 @@ internal static class VersionHelpers
 #if DEVRELEASE
         builder.Append(" Dev Build");
         return builder.ToString();
+#elif DEVSTEAM
+        builder.Append(" Dev Steam Build");
+        return builder.ToString();
 #elif MSIX_DEBUG
         builder.Append(" MSIX Debug Build");
         return builder.ToString();

BIN
src/PixiEditor/Images/LanguageFlags/it.png


BIN
src/PixiEditor/Images/LanguageFlags/tr.png


+ 1 - 9
src/PixiEditor/Models/AppExtensions/ExtensionLoader.cs

@@ -20,12 +20,12 @@ internal class ExtensionLoader
 
     public ExtensionLoader()
     {
-        ValidateExtensionFolder();
         _officialExtensionsKeys.Add("pixieditor.supporterpack", new OfficialExtensionData("supporter-pack.snk", AdditionalContentProduct.SupporterPack));
     }
 
     public void LoadExtensions()
     {
+        if (!Directory.Exists(Paths.ExtensionsFullPath)) return;
         var directories = Directory.GetDirectories(Paths.ExtensionsFullPath);
         foreach (var directory in directories)
         {
@@ -208,14 +208,6 @@ internal class ExtensionLoader
         extensionType = null;
         return null;
     }
-
-    private void ValidateExtensionFolder()
-    {
-        if (!Directory.Exists(Paths.ExtensionsFullPath))
-        {
-            Directory.CreateDirectory(Paths.ExtensionsFullPath);
-        }
-    }
 }
 
 internal struct OfficialExtensionData

+ 2 - 1
src/PixiEditor/Models/IO/Importer.cs

@@ -28,8 +28,9 @@ internal class Importer : NotifyableObject
     /// <param name="path">Path of the image.</param>
     /// <param name="size">New size of the image.</param>
     /// <returns>WriteableBitmap of imported image.</returns>
-    public static Surface ImportImage(string path, VecI size)
+    public static Surface? ImportImage(string path, VecI size)
     {
+        if (!Path.Exists(path)) return null;
         Surface original = Surface.Load(path);
         if (original.Size == size || size == VecI.NegativeOne)
         {

+ 30 - 1
src/PixiEditor/PixiEditor.csproj

@@ -14,7 +14,7 @@
 		<PackageIcon>icon.ico</PackageIcon>
 		<ApplicationIcon>..\icon.ico</ApplicationIcon>
 		<Authors>Krzysztof Krysiński, Egor Mozgovoy, CPK</Authors>
-		<Configurations>Debug;Release;MSIX;MSIX Debug;Steam;DevRelease</Configurations>
+		<Configurations>Debug;Release;MSIX;MSIX Debug;Steam;DevRelease;DevSteam</Configurations>
 		<Platforms>AnyCPU;x64;x86</Platforms>
     <RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
     <ImplicitUsings>true</ImplicitUsings>
@@ -125,6 +125,24 @@
 	  <Optimize>True</Optimize>
 	</PropertyGroup>
 
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DevSteam|x86'">
+    <DefineConstants>TRACE;RELEASE;STEAM</DefineConstants>
+    <Optimize>True</Optimize>
+    <OutputPath>bin\x86\Steam\</OutputPath>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DevSteam|x64' ">
+    <DefineConstants>TRACE;RELEASE;STEAM</DefineConstants>
+    <Optimize>True</Optimize>
+    <PlatformTarget>x64</PlatformTarget>
+  </PropertyGroup>
+
+  <PropertyGroup Condition=" '$(Configuration)' == 'DevSteam' ">
+    <DefineConstants>TRACE;RELEASE;STEAM</DefineConstants>
+    <Optimize>True</Optimize>
+  </PropertyGroup>
+
 	<PropertyGroup Condition=" '$(Configuration)' == 'DevRelease' ">
 	  <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
 	  <DefineConstants>TRACE;UPDATE;RELEASE</DefineConstants>
@@ -152,6 +170,9 @@
 		<EmbeddedResource Include="OfficialExtensions\supporter-pack.snk" />
 		<None Remove="Styles\AvalonDock\Images\**" />
 		<Page Remove="Styles\AvalonDock\Images\**" />
+		<None Update="Extensions\readme.txt">
+		  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+		</None>
 	</ItemGroup>
 
 	<ItemGroup>
@@ -422,6 +443,8 @@
 		<Resource Include="Images\LanguageFlags\ru.png" />
 		<None Remove="Images\LanguageFlags\cs.png" />
 		<Resource Include="Images\LanguageFlags\cs.png" />
+		<None Remove="Images\LanguageFlags\tr.png" />
+		<Resource Include="Images\LanguageFlags\tr.png" />
 		<None Remove="Images\Commands\PixiEditor\Clipboard\PasteReferenceLayer.png" />
 		<Resource Include="Images\Commands\PixiEditor\Clipboard\PasteReferenceLayer.png" />
 		<None Remove="Images\Commands\PixiEditor\Clipboard\PasteAsNewLayer.png" />
@@ -455,6 +478,8 @@
 		<Resource Include="Images\News\OfficialAnnouncement.png" />
 		<None Remove="Images\Chevron-right.png" />
 		<Resource Include="Images\Chevron-right.png" />
+		<None Remove="Images\LanguageFlags\it.png" />
+		<Resource Include="Images\LanguageFlags\it.png" />
 	</ItemGroup>
 	<ItemGroup>
 		<None Include="..\LICENSE">
@@ -496,6 +521,10 @@
     <ProjectReference Include="..\PixiEditor.Platform.Steam\PixiEditor.Platform.Steam.csproj" />
   </ItemGroup>
 
+  <ItemGroup Condition="'$(Configuration)' == 'DevSteam'">
+    <ProjectReference Include="..\PixiEditor.Platform.Steam\PixiEditor.Platform.Steam.csproj" />
+  </ItemGroup>
+
   <ItemGroup Condition="'$(Configuration)' == 'MSIX Debug'">
     <ProjectReference Include="..\PixiEditor.Platform.MSStore\PixiEditor.Platform.MSStore.csproj" />
   </ItemGroup>

+ 2 - 2
src/PixiEditor/Properties/AssemblyInfo.cs

@@ -50,5 +50,5 @@ using System.Windows;
 // You can specify all the values or you can default the Build and Revision Numbers
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.1.4.0")]
-[assembly: AssemblyFileVersion("1.1.4.0")]
+[assembly: AssemblyVersion("1.2.1.0")]
+[assembly: AssemblyFileVersion("1.2.1.0")]

+ 2 - 2
src/PixiEditor/ViewModels/SubViewModels/Document/DocumentViewModel.cs

@@ -144,8 +144,8 @@ internal partial class DocumentViewModel : NotifyableObject
     private VectorPath selectionPath = new VectorPath();
     public VectorPath SelectionPathBindable => selectionPath;
 
-    public WpfObservableRangeCollection<PaletteColor> Swatches { get; set; } = new WpfObservableRangeCollection<PaletteColor>();
-    public WpfObservableRangeCollection<PaletteColor> Palette { get; set; } = new WpfObservableRangeCollection<PaletteColor>();
+    public WpfObservableRangeCollection<PaletteColor> Swatches { get; set; } = new();
+    public WpfObservableRangeCollection<PaletteColor> Palette { get; set; } = new();
 
     public DocumentTransformViewModel TransformViewModel { get; }
     public ReferenceLayerViewModel ReferenceLayerViewModel { get; }

+ 1 - 0
src/PixiEditor/ViewModels/SubViewModels/Main/ClipboardViewModel.cs

@@ -103,6 +103,7 @@ internal class ClipboardViewModel : SubViewModel<ViewModelMain>
     [Command.Basic("PixiEditor.Clipboard.CopyPrimaryColorAsRgb", CopyColor.PrimaryRGB, "COPY_COLOR_RGB", "COPY_COLOR_RGB_DESCRIPTIVE", IconEvaluator = "PixiEditor.Clipboard.CopyColorIcon")]
     [Command.Basic("PixiEditor.Clipboard.CopySecondaryColorAsHex", CopyColor.SecondaryHEX, "COPY_COLOR_SECONDARY_HEX", "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE", IconEvaluator = "PixiEditor.Clipboard.CopyColorIcon")]
     [Command.Basic("PixiEditor.Clipboard.CopySecondaryColorAsRgb", CopyColor.SecondardRGB, "COPY_COLOR_SECONDARY_RGB", "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE", IconEvaluator = "PixiEditor.Clipboard.CopyColorIcon")]
+    [Command.Filter("PixiEditor.Clipboard.CopyColorToClipboard", "COPY_COLOR_TO_CLIPBOARD", "COPY_COLOR", Key = Key.C, Modifiers = ModifierKeys.Shift)]
     public void CopyColorAsHex(CopyColor color)
     {
         var targetColor = color switch

+ 2 - 7
src/PixiEditor/ViewModels/SubViewModels/Main/ColorsViewModel.cs

@@ -218,16 +218,11 @@ internal class ColorsViewModel : SubViewModel<ViewModelMain>
     public void ImportPalette(List<PaletteColor> palette)
     {
         var doc = Owner.DocumentManagerSubViewModel.ActiveDocument;
-        if (doc is null)
+        if (doc is null || doc.Palette.SequenceEqual(palette))
             return;
 
-        if (ConfirmationDialog.Show(new LocalizedString("REPLACE_PALETTE_CONSENT"), new LocalizedString("REPLACE_PALETTE")) == ConfirmationType.Yes)
+        if (doc.Palette.Count == 0 || ConfirmationDialog.Show(new LocalizedString("REPLACE_PALETTE_CONSENT"), new LocalizedString("REPLACE_PALETTE")) == ConfirmationType.Yes)
         {
-            if (doc.Palette is null)
-            {
-                doc.Palette = new WpfObservableRangeCollection<PaletteColor>();
-            }
-
             doc.Palette.ReplaceRange(palette.Select(x => new PaletteColor(x.R, x.G, x.B)));
         }
     }

+ 2 - 0
src/PixiEditor/ViewModels/SubViewModels/Main/FileViewModel.cs

@@ -230,6 +230,8 @@ internal class FileViewModel : SubViewModel<ViewModelMain>
     {
         var image = Importer.ImportImage(path, VecI.NegativeOne);
 
+        if (image == null) return;
+
         var doc = NewDocument(b => b
             .WithSize(image.Size)
             .WithLayer(l => l

+ 18 - 5
src/PixiEditor/ViewModels/SubViewModels/Main/UpdateViewModel.cs

@@ -79,16 +79,29 @@ internal class UpdateViewModel : SubViewModel<ViewModelMain>
         {
             UpdateReadyToInstall = false;
             VersionText = new LocalizedString("DOWNLOADING_UPDATE");
-            if (updateCompatible)
+            try
+            {
+                if (updateCompatible)
+                {
+                    await UpdateDownloader.DownloadReleaseZip(UpdateChecker.LatestReleaseInfo);
+                }
+                else
+                {
+                    await UpdateDownloader.DownloadInstaller(UpdateChecker.LatestReleaseInfo);
+                }
+
+                UpdateReadyToInstall = true;
+            }
+            catch (IOException ex)
             {
-                await UpdateDownloader.DownloadReleaseZip(UpdateChecker.LatestReleaseInfo);
+                NoticeDialog.Show("FAILED_DOWNLOADING_TITLE", "FAILED_DOWNLOADING");
+                return false;
             }
-            else
+            catch(TaskCanceledException ex)
             {
-                await UpdateDownloader.DownloadInstaller(UpdateChecker.LatestReleaseInfo);
+                return false;
             }
 
-            UpdateReadyToInstall = true;
             return true;
         }
 

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

@@ -9,7 +9,7 @@ namespace PixiEditor.Views.Dialogs;
 public partial class AboutPopup : Window
 {
     public static LocalizedString VersionText =>
-        new LocalizedString("VERSION", VersionHelpers.GetCurrentAssemblyVersionString());
+        new LocalizedString("VERSION", VersionHelpers.GetCurrentAssemblyVersionString(true));
 
     public bool DisplayDonationButton
     {

+ 2 - 3
src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml

@@ -19,9 +19,8 @@
     xmlns:xaml="clr-namespace:PixiEditor.Models.Commands.XAML"
     x:Class="PixiEditor.Views.Dialogs.PalettesBrowser"
     mc:Ignorable="d"
-    WindowStartupLocation="CenterScreen" 
-    MinWidth="200" 
-    Height="600" Width="850" 
+    WindowStartupLocation="CenterScreen"
+    Height="600" Width="850"
     WindowStyle="None"
     x:Name="palettesBrowser"
     FlowDirection="{helpers:Localization FlowDirection}"

+ 20 - 0
src/PixiEditor/Views/Dialogs/PalettesBrowser.xaml.cs

@@ -172,10 +172,16 @@ internal partial class PalettesBrowser : Window, IPopupWindow
 
     private LocalPalettesFetcher localPalettesFetcher;
 
+    private ILocalizationProvider localizationProvider;
+
     private double _lastScrolledOffset = -1;
 
     public PalettesBrowser(PaletteProvider provider)
     {
+        localizationProvider = ViewModelMain.Current.LocalizationProvider;
+        localizationProvider.OnLanguageChanged += LocalizationProviderOnOnLanguageChanged;
+        MinWidth = DetermineWidth();
+        
         PaletteProvider = provider;
         InitializeComponent();
         Title = new LocalizedString("PALETTE_BROWSER");
@@ -198,6 +204,20 @@ internal partial class PalettesBrowser : Window, IPopupWindow
         IPreferences.Current.AddCallback(PreferencesConstants.FavouritePalettes, OnFavouritePalettesChanged);
     }
 
+    private void LocalizationProviderOnOnLanguageChanged(Language obj)
+    {
+        MinWidth = DetermineWidth();
+    }
+
+    private double DetermineWidth()
+    {
+        return localizationProvider.CurrentLanguage.LanguageData.Code switch
+        {
+            "ru" or "uk" => 900,
+            _ => 850
+        };
+    } 
+
     private bool CanAddFromPalette(object param)
     {
         return CurrentEditingPalette != null;

+ 1 - 1
src/PixiEditor/Views/Dialogs/SettingsWindow.xaml

@@ -53,7 +53,7 @@
             TitleKey="SETTINGS" CloseCommand="{x:Static SystemCommands.CloseWindowCommand}"/>
 
         <ListBox DockPanel.Dock="Left" x:Name="pages" ItemsSource="{Binding Pages}"
-                 Background="Transparent" BorderThickness="0" Width="180" ItemContainerStyle="{StaticResource PixiListBoxItemStyle}"
+                 Background="Transparent" BorderThickness="0" MinWidth="165" Width="Auto" ItemContainerStyle="{StaticResource PixiListBoxItemStyle}"
                  SelectedIndex="{Binding CurrentPage}">
             <ListBox.ItemTemplate>
                 <DataTemplate>

+ 17 - 0
src/PixiEditor/Views/MainWindow.xaml

@@ -101,6 +101,23 @@
         </b:EventTrigger>
     </b:Interaction.Triggers>
     <Grid>
+        <Border HorizontalAlignment="Right" VerticalAlignment="Bottom" Name="steamRefresher"
+                Visibility="Collapsed"
+                Background="Transparent"
+                BorderThickness="0"
+                Focusable="False"
+                Width="{Binding ElementName=mainWindow, Path=Width}"
+                Height="{Binding ElementName=mainWindow, Path=Height}" Panel.ZIndex="-1000">
+            <Border.Triggers>
+                <EventTrigger RoutedEvent="Loaded">
+                    <BeginStoryboard>
+                        <Storyboard>
+                            <DoubleAnimation Storyboard.TargetProperty="Opacity" RepeatBehavior="Forever" From="0" To="1" Duration="0:0:10"/>
+                        </Storyboard>
+                    </BeginStoryboard>
+                </EventTrigger>
+            </Border.Triggers>
+        </Border>
         <Grid
             Name="mainGrid"
             Margin="5"

+ 18 - 2
src/PixiEditor/Views/MainWindow.xaml.cs

@@ -1,5 +1,5 @@
 using System.ComponentModel;
-using System.Reflection;
+using System.Diagnostics;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Input;
@@ -19,7 +19,6 @@ using PixiEditor.Models.Enums;
 using PixiEditor.Models.IO;
 using PixiEditor.Platform;
 using PixiEditor.ViewModels.SubViewModels.Document;
-using PixiEditor.ViewModels.SubViewModels.Tools;
 using PixiEditor.ViewModels.SubViewModels.Tools.Tools;
 
 namespace PixiEditor.Views;
@@ -63,6 +62,8 @@ internal partial class MainWindow : Window
 
         InitializeComponent();
 
+        StartSteamRefresher();
+
         OnDataContextInitialized?.Invoke();
         pixiEditorLogo = BitmapFactory.FromResource(@"/Images/PixiEditorLogo.png");
 
@@ -79,6 +80,21 @@ internal partial class MainWindow : Window
         });
 
         DataContext.DocumentManagerSubViewModel.ActiveDocumentChanged += DocumentChanged;
+
+        StartSteamRefresher();
+    }
+
+    private void StartSteamRefresher()
+    {
+#if STEAM
+        steamRefresher.Visibility = Visibility.Visible;
+
+        PixiEditor.Platform.Steam.SteamOverlayHandler handler = new PixiEditor.Platform.Steam.SteamOverlayHandler();
+        handler.ActivateRefreshingElement += (bool activate) =>
+        {
+            steamRefresher.Visibility = activate ? Visibility.Visible : Visibility.Collapsed;
+        };
+#endif
     }
 
     private void SetupTranslator()

+ 1 - 0
src/PixiEditor/Views/UserControls/Palettes/PaletteViewer.xaml.cs

@@ -112,6 +112,7 @@ internal partial class PaletteViewer : UserControl
     private async Task ImportPalette(string fileName)
     {
         var parser = PaletteProvider.AvailableParsers.FirstOrDefault(x => x.SupportedFileExtensions.Contains(Path.GetExtension(fileName)));
+        if (parser == null) return;
         var data = await parser.Parse(fileName);
         if (data.IsCorrupted || data.Colors.Length == 0) return;
         Colors.Clear();