Browse Source

Merge branch 'master' into development

Krzysztof Krysiński 2 days ago
parent
commit
9f117973cc
32 changed files with 1811 additions and 1443 deletions
  1. 21 23
      src/ChunkyImageLib/Operations/RectangleOperation.cs
  2. 1 1
      src/PixiEditor.ChangeableDocument/Changeables/Animations/KeyFrameData.cs
  3. 4 4
      src/PixiEditor.ChangeableDocument/Changeables/Document.cs
  4. 73 0
      src/PixiEditor.ChangeableDocument/Changes/Animation/CreateAnimationDataFromFolder_Change.cs
  5. 62 14
      src/PixiEditor.ChangeableDocument/Changes/Structure/DuplicateFolder_Change.cs
  6. 124 124
      src/PixiEditor/Data/Localization/Languages/ar.json
  7. 1133 1131
      src/PixiEditor/Data/Localization/Languages/en.json
  8. 106 100
      src/PixiEditor/Data/Localization/Languages/es.json
  9. 131 1
      src/PixiEditor/Data/Localization/Languages/ru.json
  10. 2 5
      src/PixiEditor/Data/Localization/Languages/tr.json
  11. 5 5
      src/PixiEditor/Data/Localization/LocalizationData.json
  12. 1 0
      src/PixiEditor/Helpers/Constants/ClipboardDataFormats.cs
  13. 3 1
      src/PixiEditor/Helpers/SupportedFilesHelper.cs
  14. 2 0
      src/PixiEditor/Models/Commands/Attributes/Commands/ToolAttribute.cs
  15. 14 3
      src/PixiEditor/Models/Controllers/ClipboardController.cs
  16. 2 1
      src/PixiEditor/Models/DocumentModels/Public/DocumentOperationsModule.cs
  17. 12 5
      src/PixiEditor/Models/DocumentModels/UpdateableChangeExecutors/VectorTextToolExecutor.cs
  18. 2 2
      src/PixiEditor/Properties/AssemblyInfo.cs
  19. 9 0
      src/PixiEditor/ViewModels/Document/DocumentViewModel.Serialization.cs
  20. 8 8
      src/PixiEditor/ViewModels/Document/NodeGraphViewModel.cs
  21. 22 2
      src/PixiEditor/ViewModels/SettingsWindowViewModel.cs
  22. 3 1
      src/PixiEditor/ViewModels/SubViewModels/LayersViewModel.cs
  23. 36 1
      src/PixiEditor/ViewModels/SubViewModels/ToolsViewModel.cs
  24. 28 0
      src/PixiEditor/ViewModels/SubViewModels/WindowViewModel.cs
  25. 1 1
      src/PixiEditor/ViewModels/Tools/Tools/RasterEllipseToolViewModel.cs
  26. 1 1
      src/PixiEditor/ViewModels/Tools/Tools/RasterLineToolViewModel.cs
  27. 1 1
      src/PixiEditor/ViewModels/Tools/Tools/RasterRectangleToolViewModel.cs
  28. 1 1
      src/PixiEditor/ViewModels/Tools/Tools/VectorEllipseToolViewModel.cs
  29. 1 1
      src/PixiEditor/ViewModels/Tools/Tools/VectorLineToolViewModel.cs
  30. 1 1
      src/PixiEditor/ViewModels/Tools/Tools/VectorRectangleToolViewModel.cs
  31. 1 1
      src/PixiEditor/Views/Main/ViewportControls/Viewport.axaml
  32. 0 4
      src/PixiEditor/Views/Nodes/NodeGraphView.cs

+ 21 - 23
src/ChunkyImageLib/Operations/RectangleOperation.cs

@@ -44,7 +44,7 @@ internal class RectangleOperation : IMirroredDrawOperation
 
         if (Data.AntiAliasing)
         {
-            DrawAntiAliased(surf, rect, radiusInPx);
+            DrawAntiAliased(surf, rect, innerRect, radiusInPx);
         }
         else
         {
@@ -90,8 +90,24 @@ internal class RectangleOperation : IMirroredDrawOperation
         surf.Canvas.DrawPaintable(Data.Stroke, Data.BlendMode);
     }
 
-    private void DrawAntiAliased(DrawingSurface surf, RectD rect, double radius)
+    private void DrawAntiAliased(DrawingSurface surf, RectD rect, RectD innerRect, double radius)
     {
+        surf.Canvas.Save();
+        paint.StrokeWidth = Data.StrokeWidth > 0 ? Data.StrokeWidth : 1;
+        paint.SetPaintable(Data.StrokeWidth > 0 ? Data.Stroke : Data.FillPaintable);
+        paint.Style = PaintStyle.Fill;
+
+        if (radius == 0)
+        {
+            surf.Canvas.DrawRect((float)rect.Left, (float)rect.Top, (float)rect.Width,
+                (float)rect.Height, paint);
+        }
+        else
+        {
+            surf.Canvas.DrawRoundRect((float)rect.Left, (float)rect.Top, (float)rect.Width,
+                (float)rect.Height, (float)radius, (float)radius, paint);
+        }
+
         // draw fill
         if (Data.FillPaintable.AnythingVisible)
         {
@@ -102,34 +118,16 @@ internal class RectangleOperation : IMirroredDrawOperation
             paint.Style = PaintStyle.Fill;
             if (radius == 0)
             {
-                surf.Canvas.DrawRect((float)rect.Left, (float)rect.Top, (float)rect.Width, (float)rect.Height, paint);
+                surf.Canvas.DrawRect((float)innerRect.Left, (float)innerRect.Top, (float)innerRect.Width, (float)innerRect.Height, paint);
             }
             else
             {
-                surf.Canvas.DrawRoundRect((float)rect.Left, (float)rect.Top, (float)rect.Width,
-                    (float)rect.Height, (float)radius, (float)radius, paint);
+                surf.Canvas.DrawRoundRect((float)innerRect.Left, (float)innerRect.Top, (float)innerRect.Width,
+                    (float)innerRect.Height, (float)radius, (float)radius, paint);
             }
 
             surf.Canvas.RestoreToCount(saved);
         }
-
-        // draw stroke
-        surf.Canvas.Save();
-        paint.StrokeWidth = Data.StrokeWidth > 0 ? Data.StrokeWidth : 1;
-        paint.SetPaintable(Data.StrokeWidth > 0 ? Data.Stroke : Data.FillPaintable);
-        paint.Style = PaintStyle.Stroke;
-        RectD innerRect = rect.Inflate(-Data.StrokeWidth / 2f);
-
-        if (radius == 0)
-        {
-            surf.Canvas.DrawRect((float)innerRect.Left, (float)innerRect.Top, (float)innerRect.Width,
-                (float)innerRect.Height, paint);
-        }
-        else
-        {
-            surf.Canvas.DrawRoundRect((float)innerRect.Left, (float)innerRect.Top, (float)innerRect.Width,
-                (float)innerRect.Height, (float)radius, (float)radius, paint);
-        }
     }
 
     public AffectedArea FindAffectedArea(VecI imageSize)

+ 1 - 1
src/PixiEditor.ChangeableDocument/Changeables/Animations/KeyFrameData.cs

@@ -8,7 +8,7 @@ public class KeyFrameData : IDisposable, IReadOnlyKeyFrameData
 {
     public int StartFrame { get; set; }
     public int Duration { get; set; }
-    public Guid KeyFrameGuid { get; }
+    public Guid KeyFrameGuid { get; internal set; }
     public string AffectedElement { get; set; }
     public object Data { get; set; }
     public bool IsVisible { get; set; } = true;

+ 4 - 4
src/PixiEditor.ChangeableDocument/Changeables/Document.cs

@@ -444,12 +444,12 @@ internal class Document : IChangeable, IReadOnlyDocument
 
     private void ExtractLayers(FolderNode folder, List<Guid> list)
     {
-        List<Guid> result = new();
-        folder.TraverseBackwards(node =>
+        if(folder.Content.Connection == null) return;
+        folder.Content.Connection.Node.TraverseBackwards(node =>
         {
-            if (node is LayerNode layer && !result.Contains(layer.Id))
+            if (node is LayerNode layer && !list.Contains(layer.Id))
             {
-                result.Add(layer.Id);
+                list.Add(layer.Id);
             }
 
             return true;

+ 73 - 0
src/PixiEditor.ChangeableDocument/Changes/Animation/CreateAnimationDataFromFolder_Change.cs

@@ -0,0 +1,73 @@
+using PixiEditor.ChangeableDocument.Changeables.Animations;
+using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes;
+using PixiEditor.ChangeableDocument.ChangeInfos.Animation;
+
+namespace PixiEditor.ChangeableDocument.Changes.Animation;
+
+internal class CreateAnimationDataFromFolder_Change : Change
+{
+    private readonly Guid folderGuid;
+    private Guid[] layerGuids;
+
+    [GenerateMakeChangeAction]
+    public CreateAnimationDataFromFolder_Change(Guid folderGuid)
+    {
+        this.folderGuid = folderGuid;
+    }
+
+    public override bool InitializeAndValidate(Document target)
+    {
+        if (!target.TryFindMember<FolderNode>(folderGuid, out FolderNode? layer))
+        {
+            return false;
+        }
+
+        var layers = target.ExtractLayers([layer.Id]);
+        if (layers.Count == 0) return false;
+
+        return true;
+    }
+
+    public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply,
+        out bool ignoreInUndo)
+    {
+        FolderNode folder = target.FindNode(folderGuid) as FolderNode;
+        List<IChangeInfo> infos = new List<IChangeInfo>();
+        layerGuids = target.ExtractLayers([folder.Id]).ToArray();
+
+        foreach (var layer in layerGuids)
+        {
+            var node = target.FindNode(layer);
+            if(node is not LayerNode) continue;
+            foreach (var frame in node.KeyFrames)
+            {
+                Guid keyFrameId = frame.KeyFrameGuid;
+                target.AnimationData.AddKeyFrame(new RasterKeyFrame(keyFrameId, folder.Id, frame.StartFrame, target)
+                {
+                    Duration = frame.Duration
+                });
+                infos.Add(new CreateRasterKeyFrame_ChangeInfo(folder.Id, frame.StartFrame, keyFrameId, true));
+            }
+        }
+
+        ignoreInUndo = false;
+        return infos;
+    }
+
+    public override OneOf<None, IChangeInfo, List<IChangeInfo>> Revert(Document target)
+    {
+        var layer = target.FindNode(folderGuid) as FolderNode;
+        List<IChangeInfo> infos = new List<IChangeInfo>();
+
+        var keyFrame = target.AnimationData.KeyFrames;
+        var ids = keyFrame.Where(x => x.NodeId == layer.Id || layerGuids.Contains(x.NodeId)).Select(x => x.Id).ToList();
+
+        foreach (var id in ids)
+        {
+            target.AnimationData.RemoveKeyFrame(id);
+            infos.Add(new DeleteKeyFrame_ChangeInfo(id));
+        }
+
+        return infos;
+    }
+}

+ 62 - 14
src/PixiEditor.ChangeableDocument/Changes/Structure/DuplicateFolder_Change.cs

@@ -1,6 +1,7 @@
 using System.Collections.Immutable;
 using System.Collections.ObjectModel;
 using Drawie.Numerics;
+using PixiEditor.ChangeableDocument.Changeables.Animations;
 using PixiEditor.ChangeableDocument.Changeables.Graph;
 using PixiEditor.ChangeableDocument.Changeables.Graph.Nodes;
 using PixiEditor.ChangeableDocument.ChangeInfos.NodeGraph;
@@ -17,6 +18,8 @@ internal class DuplicateFolder_Change : Change
     private Guid[] contentDuplicateGuids;
 
     private Guid[]? childGuidsToUse;
+    private Dictionary<Guid, List<Guid>> keyFramesMap = new();
+    private Dictionary<Guid, Guid> nodeMap = new();
 
     private ConnectionsData? connectionsData;
     private Dictionary<Guid, ConnectionsData> contentConnectionsData = new();
@@ -64,14 +67,15 @@ internal class DuplicateFolder_Change : Change
         List<IChangeInfo> operations = new();
 
         target.NodeGraph.AddNode(clone);
-        
+
         var previousConnection = targetInput.Connection;
 
         operations.Add(CreateNode_ChangeInfo.CreateFromNode(clone));
         operations.AddRange(NodeOperations.AppendMember(targetInput, clone.Output, clone.Background, clone.Id));
-        operations.AddRange(NodeOperations.AdjustPositionsAfterAppend(clone, targetInput.Node, previousConnection?.Node as Node, out originalPositions));
+        operations.AddRange(NodeOperations.AdjustPositionsAfterAppend(clone, targetInput.Node,
+            previousConnection?.Node as Node, out originalPositions));
 
-        DuplicateContent(target, clone, existingLayer, operations);
+        DuplicateContent(target, clone, existingLayer, operations, firstApply);
 
         ignoreInUndo = false;
 
@@ -116,29 +120,70 @@ internal class DuplicateFolder_Change : Change
     }
 
     private void DuplicateContent(Document target, FolderNode clone, FolderNode existingLayer,
-        List<IChangeInfo> operations)
+        List<IChangeInfo> operations, bool firstApply)
     {
-        Dictionary<Guid, Guid> nodeMap = new Dictionary<Guid, Guid>();
+        if (firstApply)
+        {
+            nodeMap = new Dictionary<Guid, Guid>();
+            nodeMap[existingLayer.Id] = clone.Id;
+        }
 
-        nodeMap[existingLayer.Id] = clone.Id;
         int counter = 0;
         List<Guid> contentGuidList = new();
 
+        if (firstApply)
+        {
+            keyFramesMap = new Dictionary<Guid, List<Guid>>();
+        }
+
+        int childCounter = 0;
+
         existingLayer.Content.Connection?.Node.TraverseBackwards(x =>
         {
             if (x is not Node targetNode)
                 return false;
 
             Node? node = targetNode.Clone();
-            
-            if(node is not FolderNode && childGuidsToUse is not null && counter < childGuidsToUse.Length)
+
+            if (contentDuplicateGuids != null && contentDuplicateGuids.Length > 0)
+            {
+                node.Id = contentDuplicateGuids[childCounter];
+                childCounter++;
+            }
+            else
             {
-                node.Id = childGuidsToUse[counter];
-                counter++;
+                if (node is not FolderNode && childGuidsToUse is not null && counter < childGuidsToUse.Length)
+                {
+                    node.Id = childGuidsToUse[counter];
+                    counter++;
+                }
+            }
+
+            if (firstApply)
+            {
+                keyFramesMap[node.Id] = new List<Guid>();
+                keyFramesMap[node.Id].AddRange(x.KeyFrames.Select(kf => kf.KeyFrameGuid));
+            }
+            else
+            {
+                if (keyFramesMap.TryGetValue(node.Id, out List<Guid>? keyFrameGuids))
+                {
+                    for (int i = 0; i < x.KeyFrames.Count; i++)
+                    {
+                        if (i < keyFrameGuids.Count)
+                        {
+                            var kf = x.KeyFrames[i] as KeyFrameData;
+                            kf.KeyFrameGuid = keyFrameGuids[i];
+                        }
+                    }
+                }
+            }
+
+            if (firstApply)
+            {
+                nodeMap[x.Id] = node.Id;
+                contentGuidList.Add(node.Id);
             }
-            
-            nodeMap[x.Id] = node.Id;
-            contentGuidList.Add(node.Id);
 
             target.NodeGraph.AddNode(node);
 
@@ -154,6 +199,9 @@ internal class DuplicateFolder_Change : Change
                 target.FindNodeOrThrow<Node>(targetNodeId), target.NodeGraph));
         }
 
-        contentDuplicateGuids = contentGuidList.ToArray();
+        if (firstApply)
+        {
+            contentDuplicateGuids = contentGuidList.ToArray();
+        }
     }
 }

+ 124 - 124
src/PixiEditor/Data/Localization/Languages/ar.json

@@ -8,16 +8,16 @@
   "DISCORD": "ديسكورد",
   "KEY_BINDINGS": "ارتباطات المفاتيح",
   "MISC": "متنوع",
-  "SHOW_STARTUP_WINDOW": "عرض نافذة بدء التشغيل",
+  "SHOW_STARTUP_WINDOW": "عرض نافذة بدئ التشغيل",
   "RECENT_FILE_LENGTH": "طول قائمة الملفات الاخيرة",
   "RECENT_FILE_LENGTH_TOOLTIP": "كم عدد المستندات التي يتم اضهارها في ملف > الملفات الاخيرة. الافتراضي: 8",
   "DEFAULT_NEW_SIZE": "الحجم الافتراضي للملف الجديد",
   "WIDTH": "العرض",
   "HEIGHT": "الطول",
-  "TOOLS": "ألادوات",
+  "TOOLS": "الأدوات",
   "ENABLE_SHARED_TOOLBAR": "تمكين شريط الادوات المشترك",
   "AUTOMATIC_UPDATES": "التحديثات التلقائية",
-  "CHECK_FOR_UPDATES": "تحقق من التحديثات عند بدء التشغيل",
+  "CHECK_FOR_UPDATES": "تحقق من التحديثات عند بدئ التشغيل",
   "UPDATE_STREAM": "مصدر التحديث",
   "UPDATE_CHANNEL_HELP_TOOLTIP": "لا يمكن تغيير قنوات التحديث إلا في إصدار مستقل (يتم تنزيله من https://pixieditor.net).\nتتعامل إصدارات Steam و Microsoft Store مع التحديثات بشكل منفصل.",
   "DEBUG": "معالجة",
@@ -25,14 +25,14 @@
   "OPEN_CRASH_REPORTS_DIR": "افتح دليل تقارير الاعطال",
   "DISCORD_RICH_PRESENCE": "Rich Presence",
   "ENABLED": "مفعل",
-  "SHOW_IMAGE_NAME": "اضهار اسم الصورة",
-  "SHOW_IMAGE_SIZE": "اضهار حجم الصورة",
-  "SHOW_LAYER_COUNT": "اضهار عدد الطبقات",
+  "SHOW_IMAGE_NAME": "إظهار اسم الصورة",
+  "SHOW_IMAGE_SIZE": "إظهار حجم الصورة",
+  "SHOW_LAYER_COUNT": "إظهار عدد الطبقات",
   "FILE": "ملف",
   "RECENT": "مؤخرًا",
   "OPEN": "فتح",
-  "SAVE_PIXI": "حفض ( .pixi )",
-  "SAVE_AS_PIXI": "حفض جديد ك ( .pixi )",
+  "SAVE_PIXI": "حفظ ( .pixi )",
+  "SAVE_AS_PIXI": "حفظ جديد كـ( .pixi )",
   "EXPORT_IMG": "تصدير (png, .jpg., الخ.)",
   "EDIT": "تعديل",
   "EXIT": "خروج",
@@ -85,7 +85,7 @@
   "PATH_DOES_NOT_EXIST": "{0} غير موجود.",
   "LOCATION_DOES_NOT_EXIST": "الموقع غير موجود.",
   "FILE_NOT_FOUND": "لم يتم العثور على الملف.",
-  "ARE_YOU_SURE": "هل انت متاكد؟",
+  "ARE_YOU_SURE": "هل انت متأكد؟",
   "ARE_YOU_SURE_PATH_FULL_PATH": "هل أنت متأكد أنك تريد حذف {0}؟\nستفقد هذه البيانات لجميع التركيبات.\n(مسار كامل: {1})",
   "FAILED_TO_OPEN_FILE": "فشل في فتح الملف",
   "OLD_FILE_FORMAT": "تنسيق الملف القديم",
@@ -93,14 +93,14 @@
   "NOTHING_FOUND": "لم يتم العثور على شيء",
   "EXPORT": "تصدير",
   "EXPORT_IMAGE": "تصدير الصورة",
-  "IMPORT": "اضافة",
-  "SHORTCUT_TEMPLATES": "اختصارات القوالب",
+  "IMPORT": "إضافة",
+  "SHORTCUT_TEMPLATES": "إختصارات القوالب",
   "RESET_ALL": "إعادة ضبط الكل",
   "LAYER": "طبقة",
   "LAYER_DELETE_SELECTED": "حذف الطبقة/المجلد النشط",
   "LAYER_DELETE_SELECTED_DESCRIPTIVE": "حذف الطبقة أو المجلد النشط",
-  "LAYER_DELETE_ALL_SELECTED": "احذف جميع الطبقات / المجلدات المحددة",
-  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "احذف كل الطبقات و / أو المجلدات المحددة",
+  "LAYER_DELETE_ALL_SELECTED": "حذف جميع الطبقات / المجلدات المحددة",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "حذف كل الطبقات و / أو المجلدات المحددة",
   "DELETE_SELECTED_PIXELS": "حذف البكسلات المحددة",
   "NEW_FOLDER": "مجلد جديد",
   "CREATE_NEW_FOLDER": "انشاء مجلد جديد",
@@ -108,34 +108,34 @@
   "CREATE_NEW_LAYER": "انشاء طبقة جديدة",
   "NEW_IMAGE": "صورة جديدة",
   "CREATE_NEW_IMAGE": "انشاء صورة جديدة",
-  "SAVE": "حفض",
-  "SAVE_AS": "حفض جديد...",
+  "SAVE": "حفظ",
+  "SAVE_AS": "حفظ جديد...",
   "IMAGE": "صورة",
-  "SAVE_IMAGE": "حفض الصورة",
-  "SAVE_IMAGE_AS": "حفض الصورة كجديدة",
+  "SAVE_IMAGE": "حفظ الصورة",
+  "SAVE_IMAGE_AS": "حفظ الصورة كجديدة",
   "DUPLICATE": "تكرار",
   "DUPLICATE_SELECTED_LAYER": "تكرار الطبقة المجددة",
-  "CREATE_MASK": "انشاء قناع",
-  "DELETE_MASK": "حذف قناع",
+  "CREATE_MASK": "إنشاء قناع",
+  "DELETE_MASK": "حذف القناع",
   "TOGGLE_MASK": "تبديل القناع",
   "APPLY_MASK": "تطبيق القناع",
   "TOGGLE_VISIBILITY": "تبديل الرؤية",
-  "MOVE_MEMBER_UP": "حرك العضو لأعلى",
-  "MOVE_MEMBER_UP_DESCRIPTIVE": "انقل الطبقة أو المجلد المحدد لأعلى",
-  "MOVE_MEMBER_DOWN": "حرك العضو لأسفل",
-  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "انقل الطبقة أو المجلد المحدد لأسفل",
+  "MOVE_MEMBER_UP": "تحريك العضو لأعلى",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "نقل الطبقة أو المجلد المحدد لأعلى",
+  "MOVE_MEMBER_DOWN": "تحريك العضو لأسفل",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "نقل الطبقة أو المجلد المحدد لأسفل",
   "MERGE_ALL_SELECTED_LAYERS": "دمج كل الطبقات المحددة",
-  "MERGE_WITH_ABOVE": "دمج الطبقة المحددة أعلاه",
+  "MERGE_WITH_ABOVE": "دمج الطبقة المحددة مع أعلاها",
   "MERGE_WITH_ABOVE_DESCRIPTIVE": "دمج الطبقة المحددة مع الطبقة التي فوقها",
-  "MERGE_WITH_BELOW": "دمج الطبقة المحددة أدناه",
+  "MERGE_WITH_BELOW": "دمج الطبقة المحددة مع أدناها",
   "MERGE_WITH_BELOW_DESCRIPTIVE": "دمج الطبقة المحددة مع الطبقة الموجودة تحتها",
-  "ADD_REFERENCE_LAYER": "أضف طبقة مرجعية",
-  "DELETE_REFERENCE_LAYER": "احذف الطبقة المرجعية",
+  "ADD_REFERENCE_LAYER": "إضافة طبقة مرجعية",
+  "DELETE_REFERENCE_LAYER": "حذف الطبقة المرجعية",
   "TRANSFORM_REFERENCE_LAYER": "تحويل الطبقة المرجعية",
   "TOGGLE_REFERENCE_LAYER_POS": "تبديل موضع الطبقة المرجعية",
   "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "تبديل الطبقة المرجعية بين الأعلى أو الأكثر أدناه",
   "RESET_REFERENCE_LAYER_POS": "إعادة تعيين موضع الطبقة المرجعية",
-  "CLIP_CANVAS": "مقطع الصورة",
+  "CLIP_CANVAS": "حف الصورة",
   "FLIP_IMG_VERTICALLY": "قلب الصورة عموديًا",
   "FLIP_IMG_HORIZONTALLY": "قلب الصورة أفقيًا",
   "FLIP_LAYERS_VERTICALLY": "قلب الطبقات المحددة عموديًا",
@@ -149,40 +149,40 @@
   "TOGGLE_VERT_SYMMETRY_AXIS": "تبديل محور التناظر العمودي",
   "TOGGLE_HOR_SYMMETRY_AXIS": "تبديل محور التناظر الأفقي",
   "RESIZE_DOCUMENT": "تغيير حجم العنصر",
-  "RESIZE_CANVAS": "تغيير حجم الصورة",
+  "RESIZE_CANVAS": "تغيير حجم اللوحة",
   "CENTER_CONTENT": "توسيط المحتوى",
   "CUT": "قص",
   "CUT_DESCRIPTIVE": "قص المنطقة/الطبقات المحددة",
   "PASTE": "لصق",
   "PASTE_DESCRIPTIVE": "لصق محتويات الحافظة",
   "PASTE_AS_NEW_LAYER": "لصق كطبقة جديدة",
-  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "لصق من الحافضةكطبقة جديدة",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "لصق من الحافظة كطبقة جديدة",
   "PASTE_REFERENCE_LAYER": "لصق الطبقة المرجعية",
   "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "لصق محتويات الحافظة كطبقة مرجعية",
   "PASTE_COLOR": "لصق اللون",
   "PASTE_COLOR_DESCRIPTIVE": "لصق اللون من الحافظة",
-  "PASTE_COLOR_SECONDARY": "لصق اللون على أنه ثانوي",
-  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "الصق اللون من الحافظة كلون ثانوي",
+  "PASTE_COLOR_SECONDARY": "لصق اللون كلون ثانوي",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "لصق اللون من الحافظة كلون ثانوي",
   "CLIPBOARD": "الحافظة",
   "COPY": "نسخ",
-  "COPY_DESCRIPTIVE": "نسخ الي الحافضة",
+  "COPY_DESCRIPTIVE": "نسخ الي الحافظة",
   "COPY_COLOR_HEX": "نسخ اللون الاساسي (HEX)",
-  "COPY_COLOR_HEX_DESCRIPTIVE": "نسخ اللون الاساسي ك HEX",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "نسخ اللون الاساسي كـ HEX",
   "COPY_COLOR_RGB": "نسخ اللون الاساسي (RGB)",
-  "COPY_COLOR_RGB_DESCRIPTIVE": "نسخ اللون الاساسي ك RGB",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "نسخ اللون الاساسي كـ RGB",
   "COPY_COLOR_SECONDARY_HEX": "نسخ اللون الثانوي (HEX)",
-  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "نسخ اللون الثانوي ك HEX",
+  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "نسخ اللون الثانوي كـ HEX",
   "COPY_COLOR_SECONDARY_RGB": "نسخ اللون الثانوي (RGB)",
-  "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "نسخ اللون الثانوي ك RGB",
-  "PALETTE_COLORS": "لوحة الالوان",
-  "REPLACE_SECONDARY_BY_PRIMARY": "استبدل اللون الثانوي باللون الأساسي",
-  "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "استبدل اللون الثانوي باللون الأساسي",
-  "REPLACE_PRIMARY_BY_SECONDARY": "استبدل اللون الأساسي باللون الثانوي",
-  "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "استبدل اللون الأساسي باللون الثانوي",
-  "OPEN_PALETTE_BROWSER": "افتح متصفح لوحة الألوان",
+  "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "نسخ اللون الثانوي كـ RGB",
+  "PALETTE_COLORS": "لوحة الألوان",
+  "REPLACE_SECONDARY_BY_PRIMARY": "استبدال اللون الأساسي بالثانوي",
+  "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "استبدال اللون الأساسي باللون الثانوي",
+  "REPLACE_PRIMARY_BY_SECONDARY": "استبدال اللون الثانوي بالأساسي",
+  "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "استبدال اللون الثانوي باللون الأساسي",
+  "OPEN_PALETTE_BROWSER": "فتح متصفح لوحة الألوان",
   "OVERWRITE_PALETTE_CONSENT": "اللوحة '{0}' موجودة بالفعل ، هل تريد استبدالها؟",
   "PALETTE_EXISTS": "لوح الألوان موجود بالفعل",
-  "REPLACE_PALETTE_CONSENT": "هل تريد استبدال اللوحة الحالية باللوحة المحددة؟",
+  "REPLACE_PALETTE_CONSENT": "هل تريد استبدال اللوحة المحددة باللوحة الحالية؟",
   "REPLACE_PALETTE": "استبدال اللوحة الحالية",
   "SELECT_COLOR_1": "حدد اللون 1",
   "SELECT_COLOR_2": "حدد اللون 2",
@@ -194,7 +194,7 @@
   "SELECT_COLOR_8": "حدد اللون 8",
   "SELECT_COLOR_9": "حدد اللون 9",
   "SELECT_COLOR_10": "حدد اللون 10",
-  "SELECT_TOOL": "حدد الاداة {0}",
+  "SELECT_TOOL": "حدد الأداة {0}",
   "SELECT_COLOR_1_DESCRIPTIVE": "حدد اللون الأول في اللوحة",
   "SELECT_COLOR_2_DESCRIPTIVE": "حدد اللون الثاني في اللوحة",
   "SELECT_COLOR_3_DESCRIPTIVE": "حدد اللون الثالث في اللوحة",
@@ -208,23 +208,23 @@
   "SWAP_COLORS": "تبديل الألوان",
   "SWAP_COLORS_DESCRIPTIVE": "تبديل الألوان الأساسية والثانوية",
   "SEARCH": "بحث",
-  "COMMAND_SEARCH": "اوامر البحث",
-  "OPEN_COMMAND_SEARCH": "فتح نافذة اوامر البحث",
+  "COMMAND_SEARCH": "أوامر البحث",
+  "OPEN_COMMAND_SEARCH": "فتح نافذة أوامر البحث",
   "SELECT": "حدد",
-  "DESELECT": "الغاء التحديد",
+  "DESELECT": "إلغاء التحديد",
   "INVERT": "عكس",
-  "SELECTION": "اختيار",
-  "SELECT_ALL": "حدد الكل",
-  "SELECT_ALL_DESCRIPTIVE": "حدد كل شيء",
+  "SELECTION": "تحديد",
+  "SELECT_ALL": "تحديد الكل",
+  "SELECT_ALL_DESCRIPTIVE": "تحديد كل شيء",
   "CLEAR_SELECTION": "حذف المحدد",
-  "INVERT_SELECTION": "اقلب المحدد",
-  "INVERT_SELECTION_DESCRIPTIVE": "اقلب المنطقة المحددة",
+  "INVERT_SELECTION": "عكس المحدد",
+  "INVERT_SELECTION_DESCRIPTIVE": "عكس المنطقة المحددة",
   "TRANSFORM_SELECTED_AREA": "تحويل المنطقة المحددة",
   "NUDGE_SELECTED_LEFT": "دفع العنصر المحدد لليسار",
   "NUDGE_SELECTED_RIGHT": "دفع العنصر المحدد لليمين",
   "NUDGE_SELECTED_UP": "دفع العنصر المحدد لأعلى",
   "NUDGE_SELECTED_DOWN": "دفع العنصر المحدد لأسفل",
-  "MASK_FROM_SELECTION": "قناع جديد من الاختيار",
+  "MASK_FROM_SELECTION": "قناع جديد من المحدد",
   "MASK_FROM_SELECTION_DESCRIPTIVE": "التحديد لقناع جديد",
   "ADD_SELECTION_TO_MASK": "إضافة التحديد إلى القناع",
   "SUBTRACT_SELECTION_FROM_MASK": "قطع التحديد من القناع",
@@ -232,8 +232,8 @@
   "SELECTION_TO_MASK": "التحديد للقناع",
   "TO_NEW_MASK": "إلى قناع جديد",
   "ADD_TO_MASK": "أضف إلى القناع",
-  "SUBTRACT_FROM_MASK": "قص من القناع",
-  "INTERSECT_WITH_MASK": "تتقاطع مع القناع",
+  "SUBTRACT_FROM_MASK": "إنقاص من القناع",
+  "INTERSECT_WITH_MASK": "تقاطع مع القناع",
   "STYLUS": "قلم",
   "TOGGLE_PEN_MODE": "تبديل وضع القلم",
   "UNDO": "تراجع",
@@ -247,12 +247,12 @@
   "NEW_WINDOW_FOR_IMG": "نافذة جديدة للصورة الحالية",
   "CENTER_ACTIVE_VIEWPORT": "توسيط إطار العرض النشط",
   "FLIP_VIEWPORT_HORIZONTALLY": "قلب إطار العرض أفقيًا",
-  "FLIP_VIEWPORT_VERTICALLY": "قلب إطار العرض رأسيًا",
+  "FLIP_VIEWPORT_VERTICALLY": "قلب إطار العرض عموديًا",
   "SETTINGS": "الاعدادات",
   "OPEN_SETTINGS": "فتح الاعدادات",
   "OPEN_SETTINGS_DESCRIPTIVE": "فتح نافذة الاعدادات",
   "OPEN_STARTUP_WINDOW": "فتح نافذة التشغيل",
-  "OPEN_SHORTCUT_WINDOW": "افتح نافذة الاختصارات",
+  "OPEN_SHORTCUT_WINDOW": "فتح نافذة الاختصارات",
   "OPEN_ABOUT_WINDOW": "فتح نافذة المعلومات",
   "ERROR": "خطأ",
   "INTERNAL_ERROR": "خطأ داخلي",
@@ -266,51 +266,51 @@
   "DONATE": "تبرع",
   "YES": "نعم",
   "NO": "لا",
-  "CANCEL": "الغاء",
+  "CANCEL": "إلغاء",
   "UNNAMED": "بدون اسم",
-  "OPEN_COMMAND_DEBUG_WINDOW": "افتح نافذة تصحيح أخطاء الأمر",
+  "OPEN_COMMAND_DEBUG_WINDOW": "افتح نافذة معالجة أخطاء الأمر",
   "DELETE": "حذف",
   "USER_PREFS": "تفضيلات المستخدم (Roaming)",
-  "SHORTCUT_FILE": "اختصار الملف (Roaming)",
+  "SHORTCUT_FILE": "ملف الاختصارات (Roaming)",
   "EDITOR_DATA": "بيانات البرنامج (Local)",
   "MOVE_VIEWPORT_TOOLTIP": "ينقل إطار العرض. ({0})",
-  "MOVE_VIEWPORT_ACTION_DISPLAY": "انقر وانتقل لتحريك منفذ العرض",
+  "MOVE_VIEWPORT_ACTION_DISPLAY": "انقر وانتقل لتحريك إطار العرض",
   "MOVE_TOOL_TOOLTIP": "ينقل وحدات البكسل المحددة ({0}). اضغط مع الاستمرار على Ctrl لتحريك كل الطبقات.",
   "MOVE_TOOL_ACTION_DISPLAY": "استمر في الضغط على الماوس لتحريك وحدات البكسل المحددة. اضغط مع الاستمرار على Ctrl لتحريك كل الطبقات.",
   "PEN_TOOL_TOOLTIP": "قلم. ({0})",
   "PEN_TOOL_ACTION_DISPLAY": "اضغط وحرك للرسم.",
   "PIXEL_PERFECT_SETTING": "بكسل مثالي",
-  "RECTANGLE_TOOL_TOOLTIP": "رسم مستطيل على الصورة ({0}). اضغط مع الاستمرار على Shift لرسم مربع.",
+  "RECTANGLE_TOOL_TOOLTIP": "رسم مستطيل على اللوحة ({0}). اضغط مع الاستمرار على Shift لرسم مربع.",
   "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وتحرك لرسم مستطيل. اضغط مع الاستمرار على Shift لرسم مربع.",
   "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "انقر وحرك لرسم مربع.",
   "KEEP_ORIGINAL_IMAGE_SETTING": "احتفظ بالصورة الأصلية",
-  "ROTATE_VIEWPORT_TOOLTIP": "يدور منفذ العرض. ({0})",
+  "ROTATE_VIEWPORT_TOOLTIP": "يدير إطار العرض. ({0})",
   "ROTATE_VIEWPORT_ACTION_DISPLAY": "انقر وحرك لتدوير منفذ العرض",
   "SELECT_TOOL_TOOLTIP": "يختار المنطقة. ({0})",
-  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وتحرك لتحديد منطقة. اضغط مع الاستمرار على Shift للإضافة إلى التحديد الحالي. استمر في الضغط على Ctrl لقصها منه.",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وتحرك لتحديد منطقة. اضغط مع الاستمرار على Shift للإضافة إلى التحديد الحالي. استمر في الضغط على Ctrl لإنقاصها منه.",
   "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "انقر وانتقل للإضافة إلى التحديد الحالي.",
-  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "انقر وانتقل للقص من التحديد الحالي.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "انقر وانتقل للإنقاص من التحديد الحالي.",
   "ZOOM_TOOL_TOOLTIP": "تكبير / تصغير منفذ العرض ({0}). انقر للتكبير ، او مع الاستمرار في الضغط على مفتاح alt وانقر للتصغير.",
   "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وتحرك للتكبير. انقر للتكبير ، واضغط باستمرار على ctrl وانقر للتصغير.",
   "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "انقر وتحرك للتكبير. انقر للتصغير ، وحرر مفتاح التحكم وانقر للتكبير.",
   "BRIGHTNESS_TOOL_TOOLTIP": "جعل وحدات البكسل أفتح أو أغمق ({0}). اضغط باستمرار على مفتاح Ctrl لجعل البكسل أغمق.",
-  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "ارسم على وحدات البكسل لجعلها أكثر إشراقًا. اضغط باستمرار على Ctrl للتغميق.",
-  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "ارسم بالبكسل لجعلها أكثر قتامة. اترك Ctrl لتفتيح.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "ارسم على وحدات البكسل لجعلها أفتح. اضغط باستمرار على Ctrl للتغميق.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "ارسم بالبكسل لجعلها أغمق. اترك Ctrl لتفتيح.",
   "COLOR_PICKER_TOOLTIP": "يختار اللون الأساسي من الصورة. ({0})",
-  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "انقر لاختيار الألوان. اضغط باستمرار على Ctrl لإخفاء الصورة. اضغط مع الاستمرار على Shift لإخفاء الطبقة المرجعية",
+  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "انقر لاختيار الألوان. اضغط باستمرار على Ctrl لإخفاء اللوحة. اضغط مع الاستمرار على Shift لإخفاء الطبقة المرجعية",
   "ELLIPSE_TOOL_TOOLTIP": "رسم قطع ناقص على الصورة ({0}). اضغط مع الاستمرار على Shift لرسم دائرة.",
   "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وحرك الماوس لرسم شكل بيضاوي. اضغط مع الاستمرار على Shift لرسم دائرة.",
   "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "انقر وحرك الماوس لرسم دائرة.",
   "ERASER_TOOL_TOOLTIP": "يمحو اللون من البكسل. ({0})",
   "ERASER_TOOL_ACTION_DISPLAY": "انقر وحرك للمسح.",
   "FLOOD_FILL_TOOL_TOOLTIP": "املأ المنطقة باللون. ({0})",
-  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "اضغط على منطقة لملئها. اضغط باستمرار على مفتاح Ctrl للتطبيق على جميع الطبقات.",
-  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "اضغط على منطقة لملئها. حرر Ctrl للنظر في الطبقات الحالية فقط.",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "اضغط على منطقة لملئها. اضغط باستمرار على مفتاح Ctrl لاعتبار جميع الطبقات.",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "اضغط على منطقة لملئها. حرر Ctrl لاعتبار الطبقات الحالية فقط.",
   "LASSO_TOOL_TOOLTIP": "لاسو. ({0})",
-  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وتحرك لتحديد وحدات البكسل داخل لاسو. اضغط مع الاستمرار على Shift للإضافة إلى التحديد الحالي. استمر في الضغط على Ctrl للحذف منه.",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وتحرك لتحديد وحدات البكسل داخل لاسو. اضغط مع الاستمرار على Shift للإضافة إلى التحديد الحالي. استمر في الضغط على Ctrl للإنقاص منه.",
   "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "انقر وتحرك لإضافة وحدات بكسل داخل لاسو إلى التحديد.",
   "LASSO_TOOL_ACTION_DISPLAY_CTRL": "انقر وتحرك لحذف وحدات البكسل داخل لاسو من التحديد.",
-  "LINE_TOOL_TOOLTIP": "رسم خط على الصورة ({0}). اضغط مع الاستمرار على Shift لتمكين الالتقاط.",
+  "LINE_TOOL_TOOLTIP": "رسم خط على اللوحة ({0}). اضغط مع الاستمرار على Shift لتمكين الالتقاط.",
   "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وتحرك لرسم خط. اضغط مع الاستمرار على Shift لتمكين الالتقاط.",
   "LINE_TOOL_ACTION_DISPLAY_SHIFT": "انقر وحرك الماوس لرسم خط مع تمكين الالتقاط.",
   "MAGIC_WAND_TOOL_TOOLTIP": "العصا السحرية ({0}). ملء المحدد",
@@ -320,42 +320,42 @@
   "COLOR_PICKER_TOOL": "أداة انتقاء اللون",
   "ELLIPSE_TOOL": "القطع الناقص",
   "ERASER_TOOL": "ممحاة",
-  "FLOOD_FILL_TOOL": "ملء الفيضانات",
+  "FLOOD_FILL_TOOL": "ملؤ الفيضانات",
   "LASSO_TOOL": "لاسو",
   "LINE_TOOL": "خط",
   "MAGIC_WAND_TOOL": "العصا السحرية",
   "MOVE_TOOL": "تحريك",
-  "MOVE_VIEWPORT_TOOL": "تحريك منفذ العرض",
+  "MOVE_VIEWPORT_TOOL": "تحريك إطار العرض",
   "RECTANGLE_TOOL": "مستطيل",
-  "ROTATE_VIEWPORT_TOOL": "تدوير منفذ العرض",
+  "ROTATE_VIEWPORT_TOOL": "تدوير إطار العرض",
   "SELECT_TOOL_NAME": "حدد",
   "ZOOM_TOOL": "تكبير",
   "SHAPE_LABEL": "شكل",
   "MODE_LABEL": "الوضع",
   "SCOPE_LABEL": "نطاق",
-  "FILL_SHAPE_LABEL": "ملء الشكل",
-  "FILL_COLOR_LABEL": "ملء اللون",
+  "FILL_SHAPE_LABEL": "ملؤ الشكل",
+  "FILL_COLOR_LABEL": "ملؤ اللون",
   "TOOL_SIZE_LABEL": "حجم الأداة",
   "STRENGTH_LABEL": "قوة",
   "NEW": "جديد",
-  "ADD": "اضافة",
-  "SUBTRACT": "قص",
-  "INTERSECT": "تتقاطع",
+  "ADD": "إضافة",
+  "SUBTRACT": "إنقاص",
+  "INTERSECT": "تقاطع",
   "RECTANGLE": "مستطيل",
   "CIRCLE": "دائرة",
   "ABOUT": "حول البرنامج",
   "MINIMIZE": "تصغير",
-  "RESTORE": "اعادة",
+  "RESTORE": "إعادة",
   "MAXIMIZE": "تكبير",
-  "CLOSE": "اغلق",
-  "EXPORT_SIZE_HINT": "إذا كنت ترغب في مشاركة الصورة ، فجرّب {0}٪ للحصول على أفضل وضوح",
-  "CREATE": "انشاء",
+  "CLOSE": "إغلاق",
+  "EXPORT_SIZE_HINT": "إن كنت ترغب في مشاركة الصورة ، فجرّب {0}٪ للحصول على أفضل وضوح",
+  "CREATE": "إنشاء",
   "BASE_LAYER_NAME": "الطبقة الرئيسية",
   "ENABLE_MASK": "تمكين القناع",
   "SELECTED_AREA_EMPTY": "المنطقة المحددة فارغة",
   "NOTHING_TO_COPY": "لا يوجد شي لنسخه",
   "REFERENCE_LAYER_PATH": "مسار الطبقة المرجعية",
-  "FLIP": "توجيه",
+  "FLIP": "قلب",
   "ROTATION": "دوران",
   "ROT_IMG_90_D": "تدوير الصورة 90 درجة",
   "ROT_IMG_180_D": "تدوير الصورة 180 درجة",
@@ -366,63 +366,63 @@
   "UNNAMED_PALETTE": "لوح غير مسمى",
   "CLICK_SELECT_PRIMARY": "انقر لتحديد اللون الرئيسي.",
   "PEN_MODE": "وضع القلم",
-  "VIEW": "منظر",
+  "VIEW": "إظهار",
   "HORIZONTAL_LINE_SYMMETRY": "تناظر الخط الأفقي",
   "VERTICAL_LINE_SYMMETRY": "تناظر الخط العمودي",
   "COLOR_PICKER_TITLE": "أداة اختيار اللون",
-  "COLOR_SLIDERS_TITLE": "لوحة الالوان",
+  "COLOR_SLIDERS_TITLE": "أشرطة الألوان",
   "PALETTE_TITLE": "اللوحة",
   "SWATCHES_TITLE": "حوامل",
   "LAYERS_TITLE": "الطبقات",
   "NORMAL_BLEND_MODE": "عادي",
-  "DARKEN_BLEND_MODE": "أغمق",
+  "DARKEN_BLEND_MODE": "تغميق",
   "MULTIPLY_BLEND_MODE": "تضاعف",
   "COLOR_BURN_BLEND_MODE": "احتراق الالوان",
-  "LIGHTEN_BLEND_MODE": "فاتح",
+  "LIGHTEN_BLEND_MODE": "تفتيح",
   "SCREEN_BLEND_MODE": "شاشة",
   "COLOR_DODGE_BLEND_MODE": "انقاص كثافة اللون",
   "OVERLAY_BLEND_MODE": "تراكب",
   "SOFT_LIGHT_BLEND_MODE": "ضوء خافت",
-  "HARD_LIGHT_BLEND_MODE": "ضوء غامق",
-  "DIFFERENCE_BLEND_MODE": "اختلاف",
+  "HARD_LIGHT_BLEND_MODE": "ضوء شديد",
+  "DIFFERENCE_BLEND_MODE": "الفرق",
   "EXCLUSION_BLEND_MODE": "استبعاد",
-  "HUE_BLEND_MODE": "مسحة",
+  "HUE_BLEND_MODE": "المسحة",
   "SATURATION_BLEND_MODE": "التشبع",
-  "LUMINOSITY_BLEND_MODE": "لمعان",
+  "LUMINOSITY_BLEND_MODE": "اللمعان",
   "COLOR_BLEND_MODE": "اللون",
   "NOT_SUPPORTED_BLEND_MODE": "غير مدعوم",
-  "RESTART": "اعد تشغيل",
+  "RESTART": "إعادة التشغيل",
   "SORT_BY": "ترتيب حسب",
   "NAME": "الاسم",
-  "COLORS": "الالوان",
+  "COLORS": "الألوان",
   "DEFAULT": "الافتراضي",
-  "ALPHABETICAL": "مرتب حسب الحروف الأبجدية",
+  "ALPHABETICAL": "أبجدي",
   "COLOR_COUNT": "عدد الألوان",
-  "ANY": "اي",
+  "ANY": "أي",
   "MAX": "الاقصى",
-  "MIN": "الاقل",
+  "MIN": "الأدنى",
   "EXACT": "بالضبط",
   "ASCENDING": "تصاعدي",
   "DESCENDING": "تنازلي",
-  "NAME_IS_TOO_LONG": "الاسم طويل جدا",
+  "NAME_IS_TOO_LONG": "الاسم طويل جدًا",
   "STOP_IT_TEXT1": "هذا يكفي. رتب أسماء ملفاتك.",
   "STOP_IT_TEXT2": "هل يمكنك التوقف عن نسخ هذه الأسماء من فضلك؟",
-  "REPLACER_TOOLTIP": "انقر بزر الماوس الأيمن على لوحة الألوان واختر 'استبدال' أو أسقطها هنا.",
+  "REPLACER_TOOLTIP": "انقر زر الماوس الأيمن على لوحة الألوان واختر 'استبدال' أو ألقها هنا.",
   "CLICK_TO_CHOOSE_COLOR": "انقر لاختيار اللون",
   "REPLACE_COLOR": "استبدل اللون",
-  "PALETTE_COLOR_TOOLTIP": "انقر لتحديد اللون الرئيسي. قم بالسحب والإفلات على لون لوح آخر لتبديلها.",
+  "PALETTE_COLOR_TOOLTIP": "انقر لتحديده كلون رئيسي. قم بالسحب والإفلات على لون لوح آخر لتبديلها.",
   "ADD_FROM_SWATCHES": "أضف من العينات",
   "ADD_COLOR_TO_PALETTE": "أضف اللون إلى لوح الألوان",
   "USE_IN_CURRENT_IMAGE": "استخدم في الصورة الحالية",
-  "ADD_TO_FAVORITES": "اضافة الى المفضلة",
+  "ADD_TO_FAVORITES": "إضافة الى المفضلة",
   "BROWSE_PALETTES": "تصفح اللوحات",
   "LOAD_PALETTE": "تحميل لوحة",
-  "SAVE_PALETTE": "حفض اللوحة",
+  "SAVE_PALETTE": "حفظ اللوحة",
   "FAVORITES": "المفضلة",
   "ADD_FROM_CURRENT_PALETTE": "أضف من اللوحة الحالية",
   "OPEN_PALETTES_DIR_TOOLTIP": "افتح دليل اللوحات في المستكشف",
   "BROWSE_ON_LOSPEC_TOOLTIP": "تصفح اللوحات على Lospec",
-  "IMPORT_FROM_FILE_TOOLTIP": "اضافة من ملف",
+  "IMPORT_FROM_FILE_TOOLTIP": "استيراد من ملف",
   "TOP_LEFT": "أعلى اليسار",
   "TOP_CENTER": "اعلى الوسط",
   "TOP_RIGHT": "اعلى اليمين",
@@ -433,29 +433,29 @@
   "BOTTOM_CENTER": "اسفل الوسط",
   "BOTTOM_RIGHT": "أسفل اليمين",
   "CLIP_TO_BELOW": "مقطع للطبقة أدناه",
-  "MOVE_UPWARDS": "تحرك لأعلى",
+  "MOVE_UPWARDS": "تحريك لأعلى",
   "MOVE_DOWNWARDS": "تحريك للاسفل",
   "MERGE_SELECTED": "دمج المحدد",
   "LOCK_TRANSPARENCY": "قفل الشفافية",
   "COULD_NOT_LOAD_PALETTE": "تعذر إحضار اللوحات",
   "NO_PALETTES_FOUND": "لم يتم العثور على لوحات.",
   "LOSPEC_LINK_TEXT": "سمعت أنه يمكنك العثور على بعضها هنا: lospec.com/palette-list",
-  "PALETTE_BROWSER": "متصفح لوح الألوان",
-  "DELETE_PALETTE_CONFIRMATION": "هل أنت متأكد أنك تريد حذف هذه اللوحة؟ هذا لا يمكن التراجع عنها.",
-  "SHORTCUTS_IMPORTED": "تم اضافة الاختصارات من {0} بنجاح.",
-  "SHORTCUT_PROVIDER_DETECTED": "لقد اكتشفنا أنك قمت بتثبيت {0}. هل تريد اضافة الاختصارات منه؟",
-  "IMPORT_FROM_INSTALLATION": "اضافة من التثبيت",
-  "IMPORT_INSTALLATION_OPTION1": "اضافة من التنزيلات",
-  "IMPORT_INSTALLATION_OPTION2": "استخدام الافتراضي",
-  "IMPORT_FROM_TEMPLATE": "اضافة من قالب",
+  "PALETTE_BROWSER": "متصفح ألواح الألوان",
+  "DELETE_PALETTE_CONFIRMATION": "هل أنت متأكد أنك تريد حذف هذه اللوحة؟ لا يمكن التراجع عن هذا الفعل.",
+  "SHORTCUTS_IMPORTED": "تم استيراد الاختصارات من {0} بنجاح.",
+  "SHORTCUT_PROVIDER_DETECTED": "لقد وجدنا أنك قمت بتثبيت {0}. هل تريد إضافة الاختصارات منها؟",
+  "IMPORT_FROM_INSTALLATION": "إضافة من التثبيت",
+  "IMPORT_INSTALLATION_OPTION1": "إضافة من التثبيت",
+  "IMPORT_INSTALLATION_OPTION2": "استخدام الافتراضيات",
+  "IMPORT_FROM_TEMPLATE": "استيراد من قالب",
   "SHORTCUTS_IMPORTED_SUCCESS": "تم اضافة الاختصارات بنجاح.",
-  "WARNING_RESET_SHORTCUTS_DEFAULT": "هل أنت متأكد من أنك تريد إعادة تعيين جميع الاختصارات إلى قيمتها الافتراضية؟",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "هل أنت متأكد من أنك تريد إعادة تعيين جميع الاختصارات إلى قيمها الافتراضية؟",
   "SUCCESS": "نجاح",
   "WARNING": "تحذير",
   "ERROR_IMPORTING_IMAGE": "حدث خطأ أثناء استيراد الصورة.",
   "SHORTCUTS_CORRUPTED_TITLE": "ملف الاختصارات تالف",
-  "SHORTCUTS_CORRUPTED": "تعرض ملف الاختصارات للتلف ، اعادة التعيين إلى الوضع الافتراضي.",
-  "FAILED_DOWNLOAD_PALETTE": "فشل تحميل لوح الألوان",
+  "SHORTCUTS_CORRUPTED": "كان ملف الاختصارات مصابًا بالتلف، اعادة التعيين إلى الوضع الافتراضي.",
+  "FAILED_DOWNLOAD_PALETTE": "فشل تنزيل لوح الألوان",
   "FILE_INCORRECT_FORMAT": "لم يكن الملف بتنسيق صحيح",
   "INVALID_FILE": "ملف غير صالح",
   "SHORTCUTS_FILE_INCORRECT_FORMAT": "تنسيق ملف الاختصارات ليس صحيحًا",
@@ -465,14 +465,14 @@
   "SWAP": "تبديل",
   "SHORTCUT_ALREADY_ASSIGNED_SWAP": "تم بالفعل تعيين هذا الاختصار لـ '{0}'\nهل تريد استبدال الاختصار الحالي أم تبديل الاختصارين؟",
   "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "تم بالفعل تعيين هذا الاختصار لـ '{0}'\nهل تريد استبدال الاختصار الموجود؟",
-  "UNSAVED_CHANGES": "تغييرات غير محفوضة",
+  "UNSAVED_CHANGES": "تغييرات غير محفوظة",
   "DOCUMENT_MODIFIED_SAVE": "تم تعديل العنصر. هل تريد ان تحفظ التغييرات؟",
   "SESSION_UNSAVED_DATA": "{0} ببيانات غير محفوظة. هل أنت متأكد؟",
   "PROJECT_MAINTAINERS": "مشرفو المشروع",
   "OTHER_AWESOME_CONTRIBUTORS": "وغيرهم من المساهمين الرائعين",
-  "HELP": "مساعد",
-  "STOP_IT_TEXT3": "لا ، حقًا ، توقف عن ذلك.",
-  "STOP_IT_TEXT4": "أليس لديك أي شيء أفضل لتفعله؟",
+  "HELP": "مساعدة",
+  "STOP_IT_TEXT3": "لا، حقًا ، توقف عن ذلك.",
+  "STOP_IT_TEXT4": "أليس لديك شيء أفضل تفعله؟",
   "LINEAR_DODGE_BLEND_MODE": "مراوغة خطية (إضافة)",
   "PRESS_ANY_KEY": "اضغط اي مفتاح",
   "NONE_SHORTCUT": "غير محدد",
@@ -481,15 +481,15 @@
   "PUT_REFERENCE_LAYER_BELOW": "ضع طبقة مرجعية أدناه",
   "TOGGLE_VERTICAL_SYMMETRY": "تبديل التناظر العمودي",
   "TOGGLE_HORIZONTAL_SYMMETRY": "تبديل التناظر الأفقي",
-  "RESET_VIEWPORT": "إعادة تعيين منفذ العرض",
-  "VIEWPORT_SETTINGS": "إعدادات منفذ العرض",
+  "RESET_VIEWPORT": "إعادة تعيين إطار العرض",
+  "VIEWPORT_SETTINGS": "إعدادات إطار العرض",
   "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "انقر بالماوس مع الاستمرار لتحريك وحدات البكسل في الطبقات المحددة.",
   "CTRL_KEY": "Ctrl",
   "SHIFT_KEY": "Shift",
   "ALT_KEY": "Alt",
   "RENAME": "إعادة تسمية",
   "PIXEL_UNIT": "بكسل",
-  "OPEN_LOCALIZATION_DEBUG_WINDOW": "افتح نافذة تصحيح أخطاء الترجمة",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "افتح نافذة معالجة أخطاء الترجمة",
   "FORCE_OTHER_FLOW_DIRECTION": "فرض اتجاه تدفق آخر",
   "API_KEY": "مفتاح API",
   "LOCALIZATION_VIEW_TYPE": "نوع عرض الترجمة",

+ 1133 - 1131
src/PixiEditor/Data/Localization/Languages/en.json

@@ -1,1133 +1,1135 @@
 {
-  "RECENT_FILES": "Recent Files",
-  "OPEN_FILE": "Open file",
-  "NEW_FILE": "New",
-  "RECENT_EMPTY_TEXT": "So much empty space",
-  "LANGUAGE": "Language",
-  "GENERAL": "General",
-  "DISCORD": "Discord",
-  "KEY_BINDINGS": "Key Bindings",
-  "MISC": "Misc",
-  "SHOW_STARTUP_WINDOW": "Show Startup Window",
-  "RECENT_FILE_LENGTH": "Recent file list length",
-  "RECENT_FILE_LENGTH_TOOLTIP": "How many documents are shown under File > Recent. Default: 8",
-  "DEFAULT_NEW_SIZE": "Default new file size",
-  "WIDTH": "Width",
-  "HEIGHT": "Height",
-  "TOOLS": "Tools",
-  "ENABLE_SHARED_TOOLBAR": "Enable shared toolbar",
-  "AUTOMATIC_UPDATES": "Automatic Updates",
-  "CHECK_FOR_UPDATES": "Check updates on startup",
-  "UPDATE_STREAM": "Update stream",
-  "UPDATE_CHANNEL_HELP_TOOLTIP": "Update channels can only be changed in standalone version (downloaded from https://pixieditor.net).\nSteam and Microsoft Store versions handle updates separately.",
-  "DEBUG": "Debug",
-  "ENABLE_DEBUG_MODE": "Enable Debug mode",
-  "OPEN_CRASH_REPORTS_DIR": "Open crash reports directory",
-  "DISCORD_RICH_PRESENCE": "Rich Presence",
-  "ENABLED": "Enabled",
-  "SHOW_IMAGE_NAME": "Show image name",
-  "SHOW_IMAGE_SIZE": "Show image size",
-  "SHOW_LAYER_COUNT": "Show layer count",
-  "FILE": "File",
-  "RECENT": "Recent",
-  "OPEN": "Open",
-  "SAVE_PIXI": "Save (.pixi)",
-  "SAVE_AS_PIXI": "Save as... (.pixi)",
-  "EXPORT_IMG": "Export (.png, .jpg, etc.)",
-  "EDIT": "Edit",
-  "EXIT": "Exit",
-  "PERCENTAGE": "Percentage",
-  "ABSOLUTE": "Absolute",
-  "PRESERVE_ASPECT_RATIO": "Preserve aspect ratio",
-  "ANCHOR_POINT": "Anchor point",
-  "RESIZE_IMAGE": "Resize image",
-  "RESIZE": "Resize",
-  "DOCUMENTATION": "Documentation",
-  "WEBSITE": "Website",
-  "OPEN_WEBSITE": "Open website",
-  "REPOSITORY": "Repository",
-  "OPEN_REPOSITORY": "Open repository",
-  "OPEN_DOCUMENTATION": "Open documentation",
-  "LICENSE": "License",
-  "OPEN_LICENSE": "Open license",
-  "THIRD_PARTY_LICENSES": "Third party licenses",
-  "OPEN_THIRD_PARTY_LICENSES": "Open third party licenses",
-  "APPLY_TRANSFORM": "Apply transform",
-  "INCREASE_TOOL_SIZE": "Increase tool size",
-  "DECREASE_TOOL_SIZE": "Decrease tool size",
-  "UPDATE_READY": "Update is ready to be installed. Do you want to install it now?",
-  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Couldn't update without admin privileges. Please run PixiEditor as administrator.",
-  "INSUFFICIENT_PERMISSIONS": "Insufficient permissions",
-  "VERSION": "Version {0}",
-  "BUILD_ID": "Build ID: {0}",
-  "OPEN_TEMP_DIR": "Open temp directory",
-  "OPEN_LOCAL_APPDATA_DIR": "Open Local AppData directory",
-  "OPEN_ROAMING_APPDATA_DIR": "Open Roaming AppData directory",
-  "OPEN_INSTALLATION_DIR": "Open installation directory",
-  "DUMP_ALL_COMMANDS": "Dump all commands",
-  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Dump all commands to a text file",
-  "CRASH": "Crash",
-  "CRASH_APP": "Crash application",
-  "DELETE_USR_PREFS": "Delete user preferences (Roaming AppData)",
-  "DELETE_SHORTCUT_FILE": "Delete shortcut file (Roaming AppData)",
-  "DELETE_EDITOR_DATA": "Delete editor data (Local AppData)",
-  "GENERATE_KEY_BINDINGS_TEMPLATE": "Generate key bindings template",
-  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Generate key bindings json template",
-  "VALIDATE_SHORTCUT_MAP": "Validate shortcut map",
-  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Validates shortcut map",
-  "VALIDATION_KEYS_NOTICE_DIALOG": "Empty keys: {0}\nUnknown Commands: {1}",
-  "RESULT": "Result",
-  "CLEAR_RECENT_DOCUMENTS": "Clear recent documents",
-  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Clear recently opened documents",
-  "OPEN_CMD_DEBUG_WINDOW": "Open command debug window",
-  "PATH_DOES_NOT_EXIST": "{0} does not exist.",
-  "LOCATION_DOES_NOT_EXIST": "Location does not exist.",
-  "FILE_NOT_FOUND": "File not found.",
-  "ARE_YOU_SURE": "Are you sure?",
-  "ARE_YOU_SURE_PATH_FULL_PATH": "Are you sure you want to delete {0}?\nThis data will be lost for all installations.\n(Full Path: {1})",
-  "FAILED_TO_OPEN_FILE": "Failed to open the file",
-  "OLD_FILE_FORMAT": "Old file format",
-  "OLD_FILE_FORMAT_DESCRIPTION": "This .pixi file uses the old format,\n which is no longer supported and can't be opened.",
-  "NOTHING_FOUND": "Nothing found",
-  "EXPORT": "Export",
-  "EXPORT_IMAGE": "Export image",
-  "IMPORT": "Import",
-  "SHORTCUT_TEMPLATES": "Shortcut templates",
-  "RESET_ALL": "Reset all",
-  "LAYER": "Layer",
-  "LAYER_DELETE_ALL_SELECTED": "Delete all selected layers/folders",
-  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Delete all selected layers and/or folders",
-  "NEW_FOLDER": "New folder",
-  "CREATE_NEW_FOLDER": "Create new folder",
-  "NEW_LAYER": "New layer",
-  "CREATE_NEW_LAYER": "Create new layer",
-  "NEW_IMAGE": "New image",
-  "CREATE_NEW_IMAGE": "Create new image",
-  "SAVE": "Save",
-  "SAVE_AS": "Save as...",
-  "IMAGE": "Image",
-  "SAVE_IMAGE": "Save image",
-  "SAVE_IMAGE_AS": "Save image as new",
-  "DUPLICATE": "Duplicate",
-  "DUPLICATE_SELECTED_LAYER": "Duplicate selected layer",
-  "CREATE_MASK": "Create mask",
-  "DELETE_MASK": "Delete mask",
-  "TOGGLE_MASK": "Toggle mask",
-  "APPLY_MASK": "Apply mask",
-  "TOGGLE_VISIBILITY": "Toggle visibility",
-  "MOVE_MEMBER_UP": "Move member upwards",
-  "MOVE_MEMBER_UP_DESCRIPTIVE": "Move selected layer or folder upwards",
-  "MOVE_MEMBER_DOWN": "Move member downwards",
-  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Move selected layer or folder downwards",
-  "MERGE_ALL_SELECTED_LAYERS": "Merge all selected layers",
-  "MERGE_WITH_ABOVE": "Merge selected layer with above",
-  "MERGE_WITH_ABOVE_DESCRIPTIVE": "Merge selected layer with the one above it",
-  "MERGE_WITH_BELOW": "Merge selected layer with below",
-  "MERGE_WITH_BELOW_DESCRIPTIVE": "Merge selected layer with the one below it",
-  "ADD_REFERENCE_LAYER": "Add Reference Layer",
-  "DELETE_REFERENCE_LAYER": "Delete reference layer",
-  "TRANSFORM_REFERENCE_LAYER": "Transform reference layer",
-  "TOGGLE_REFERENCE_LAYER_POS": "Toggle reference layer position",
-  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Toggle reference layer between topmost or most below",
-  "RESET_REFERENCE_LAYER_POS": "Reset reference layer position",
-  "CLIP_CANVAS": "Clip Canvas",
-  "FLIP_IMG_VERTICALLY": "Flip Image Vertically",
-  "FLIP_IMG_HORIZONTALLY": "Flip Image Horizontally",
-  "FLIP_LAYERS_VERTICALLY": "Flip Selected Layers Vertically",
-  "FLIP_LAYERS_HORIZONTALLY": "Flip Selected Layers Horizontally",
-  "ROT_IMG_90": "Rotate Image 90 degrees",
-  "ROT_IMG_180": "Rotate Image 180 degrees",
-  "ROT_IMG_-90": "Rotate Image -90 degrees",
-  "ROT_LAYERS_90": "Rotate Selected Layers 90 degrees",
-  "ROT_LAYERS_180": "Rotate Selected Layers 180 degrees",
-  "ROT_LAYERS_-90": "Rotate Selected Layers -90 degrees",
-  "TOGGLE_VERT_SYMMETRY_AXIS": "Toggle vertical symmetry axis",
-  "TOGGLE_HOR_SYMMETRY_AXIS": "Toggle horizontal symmetry axis",
-  "DELETE_SELECTED": "Delete selected",
-  "DELETE_SELECTED_DESCRIPTIVE": "Delete selected element (layer, pixels, etc.)",
-  "RESIZE_DOCUMENT": "Resize document",
-  "RESIZE_CANVAS": "Resize canvas",
-  "CENTER_CONTENT": "Center content",
-  "CUT": "Cut",
-  "CUT_DESCRIPTIVE": "Cut selected area/layers",
-  "PASTE": "Paste",
-  "PASTE_DESCRIPTIVE": "Paste clipboard contents",
-  "PASTE_AS_NEW_LAYER": "Paste as new layer",
-  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Paste from clipboard as new layer",
-  "PASTE_REFERENCE_LAYER": "Paste reference layer",
-  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Paste clipboard contents as reference layer",
-  "PASTE_COLOR": "Paste color",
-  "PASTE_COLOR_DESCRIPTIVE": "Paste color from clipboard",
-  "PASTE_COLOR_SECONDARY": "Paste color as secondary",
-  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Paste color from clipboard as secondary color",
-  "CLIPBOARD": "Clipboard",
-  "COPY": "Copy",
-  "COPY_DESCRIPTIVE": "Copy to clipboard",
-  "COPY_COLOR_HEX": "Copy primary color (HEX)",
-  "COPY_COLOR_HEX_DESCRIPTIVE": "Copy primary color as HEX code",
-  "COPY_COLOR_RGB": "Copy primary color (RGB)",
-  "COPY_COLOR_RGB_DESCRIPTIVE": "Copy primary color as RGB code",
-  "COPY_COLOR_SECONDARY_HEX": "Copy secondary color (HEX)",
-  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Copy secondary color as HEX code",
-  "COPY_COLOR_SECONDARY_RGB": "Copy secondary color (RGB)",
-  "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "Copy secondary color as RGB code",
-  "PALETTE_COLORS": "Palette Colors",
-  "REPLACE_SECONDARY_BY_PRIMARY": "Replace secondary color by primary",
-  "REPLACE_PRIMARY_BY_SECONDARY": "Replace primary color by secondary",
-  "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Replace the primary color by the secondary color",
-  "OPEN_PALETTE_BROWSER": "Open palette browser",
-  "OVERWRITE_PALETTE_CONSENT": "Palette '{0}' already exists, do you want to overwrite it?",
-  "PALETTE_EXISTS": "Palette already exists",
-  "REPLACE_PALETTE_CONSENT": "Replace current palette with selected one?",
-  "REPLACE_PALETTE": "Replace current palette",
-  "SELECT_COLOR_1": "Select color 1",
-  "SELECT_COLOR_2": "Select color 2",
-  "SELECT_COLOR_3": "Select color 3",
-  "SELECT_COLOR_4": "Select color 4",
-  "SELECT_COLOR_5": "Select color 5",
-  "SELECT_COLOR_6": "Select color 6",
-  "SELECT_COLOR_7": "Select color 7",
-  "SELECT_COLOR_8": "Select color 8",
-  "SELECT_COLOR_9": "Select color 9",
-  "SELECT_COLOR_10": "Select color 10",
-  "SELECT_TOOL": "Select {0} Tool",
-  "SELECT_COLOR_1_DESCRIPTIVE": "Select the first color in the palette",
-  "SELECT_COLOR_2_DESCRIPTIVE": "Select the second color in the palette",
-  "SELECT_COLOR_3_DESCRIPTIVE": "Select the third color in the palette",
-  "SELECT_COLOR_4_DESCRIPTIVE": "Select the fourth color in the palette",
-  "SELECT_COLOR_5_DESCRIPTIVE": "Select the fifth color in the palette",
-  "SELECT_COLOR_6_DESCRIPTIVE": "Select the sixth color in the palette",
-  "SELECT_COLOR_7_DESCRIPTIVE": "Select the seventh color in the palette",
-  "SELECT_COLOR_8_DESCRIPTIVE": "Select the eighth color in the palette",
-  "SELECT_COLOR_9_DESCRIPTIVE": "Select the ninth color in the palette",
-  "SELECT_COLOR_10_DESCRIPTIVE": "Select the tenth color in the palette",
-  "SWAP_COLORS": "Swap colors",
-  "SWAP_COLORS_DESCRIPTIVE": "Swap primary and secondary colors",
-  "SEARCH": "Search",
-  "COMMAND_SEARCH": "Command search",
-  "OPEN_COMMAND_SEARCH": "Open command search window",
-  "SELECT": "Select",
-  "DESELECT": "Deselect",
-  "INVERT": "Invert",
-  "SELECTION": "Selection",
-  "SELECT_ALL": "Select all",
-  "SELECT_ALL_DESCRIPTIVE": "Select everything",
-  "CLEAR_SELECTION": "Clear selection",
-  "INVERT_SELECTION": "Invert selection",
-  "INVERT_SELECTION_DESCRIPTIVE": "Invert the selection",
-  "TRANSFORM_SELECTED_AREA": "Transform selected area",
-  "NUDGE_SELECTED_LEFT": "Nudge selected object left",
-  "NUDGE_SELECTED_RIGHT": "Nudge selected object right",
-  "NUDGE_SELECTED_UP": "Nudge selected object up",
-  "NUDGE_SELECTED_DOWN": "Nudge selected object down",
-  "MASK_FROM_SELECTION": "New mask from selection",
-  "MASK_FROM_SELECTION_DESCRIPTIVE": "Selection to new mask",
-  "ADD_SELECTION_TO_MASK": "Add selection to mask",
-  "SUBTRACT_SELECTION_FROM_MASK": "Subtract selection from mask",
-  "INTERSECT_SELECTION_MASK": "Intersect selection with mask",
-  "SELECTION_TO_MASK": "Selection to mask",
-  "TO_NEW_MASK": "to new mask",
-  "ADD_TO_MASK": "add to mask",
-  "SUBTRACT_FROM_MASK": "subtract from mask",
-  "INTERSECT_WITH_MASK": "intersect with mask",
-  "STYLUS": "Stylus",
-  "TOGGLE_PEN_MODE": "Toggle pen mode",
-  "UNDO": "Undo",
-  "UNDO_DESCRIPTIVE": "Undo last action",
-  "REDO": "Redo",
-  "REDO_DESCRIPTIVE": "Redo last action",
-  "WINDOWS": "Windows",
-  "TOGGLE_GRIDLINES": "Toggle gridlines",
-  "GRIDLINES_SIZE": "Grid Size",
-  "ZOOM_IN": "Zoom in",
-  "ZOOM_OUT": "Zoom out",
-  "NEW_WINDOW_FOR_IMG": "New window for current image",
-  "CENTER_ACTIVE_VIEWPORT": "Center active viewport",
-  "FLIP_VIEWPORT_HORIZONTALLY": "Flip viewport horizontally",
-  "FLIP_VIEWPORT_VERTICALLY": "Flip viewport vertically",
-  "SETTINGS": "Settings",
-  "OPEN_SETTINGS": "Open settings",
-  "OPEN_SETTINGS_DESCRIPTIVE": "Open settings window",
-  "OPEN_STARTUP_WINDOW": "Open startup window",
-  "OPEN_SHORTCUT_WINDOW": "Open shortcuts window",
-  "OPEN_ABOUT_WINDOW": "Open about window",
-  "OPEN_PREVIEW_WINDOW": "Open preview window",
-  "ERROR": "Error",
-  "INTERNAL_ERROR": "Internal error",
-  "ERROR_SAVE_LOCATION": "Couldn't save the file to the specified location",
-  "ERROR_WHILE_SAVING": "An internal error occured while saving. Please try again.",
-  "UNKNOWN_ERROR_SAVING": "An error occured while saving.",
-  "FAILED_ASSOCIATE_LOSPEC": "Failed to associate Lospec Palette protocol.",
-  "REDDIT": "Reddit",
-  "GITHUB": "GitHub",
-  "YOUTUBE": "YouTube",
-  "DONATE": "Donate",
-  "YES": "Yes",
-  "NO": "No",
-  "CANCEL": "Cancel",
-  "UNNAMED": "Unnamed",
-  "OPEN_COMMAND_DEBUG_WINDOW": "Open command debug window",
-  "DELETE": "Delete",
-  "USER_PREFS": "User preferences (Roaming)",
-  "SHORTCUT_FILE": "Shortcut file (Roaming)",
-  "EDITOR_DATA": "Editor data (Local)",
-  "MOVE_VIEWPORT_TOOLTIP": "Moves viewport. ({0})",
-  "MOVE_VIEWPORT_ACTION_DISPLAY": "Click and move to pan the viewport",
-  "MOVE_TOOL_TOOLTIP": "Select and transform layers ({0}).",
-  "MOVE_TOOL_ACTION_DISPLAY": "Hold mouse to move selected pixels. Hold Ctrl to move all layers.",
-  "PEN_TOOL_TOOLTIP": "Pen. ({0})",
-  "PEN_TOOL_ACTION_DISPLAY": "Click and move to draw.",
-  "PIXEL_PERFECT_SETTING": "Pixel perfect",
-  "RECTANGLE_TOOL_TOOLTIP": "Draws rectangle on canvas ({0}). Hold Shift to draw a square.",
-  "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to draw a rectangle. Hold Shift to draw a square.",
-  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Click and move to draw a square.",
-  "KEEP_ORIGINAL_IMAGE_SETTING": "Keep original image",
-  "ROTATE_VIEWPORT_TOOLTIP": "Rotates viewport. ({0})",
-  "ROTATE_VIEWPORT_ACTION_DISPLAY": "Click and move to rotate the viewport",
-  "SELECT_TOOL_TOOLTIP": "Selects area. ({0})",
-  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to select an area. Hold Shift to add to existing selection. Hold Ctrl to subtract from it.",
-  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Click and move to add to the current selection.",
-  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Click and move to subtract from the current selection.",
-  "ZOOM_TOOL_TOOLTIP": "Zooms viewport ({0}). Click to zoom in, hold alt and click to zoom out.",
-  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to zoom. Click to zoom in, hold ctrl and click to zoom out.",
-  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Click and move to zoom. Click to zoom out, release ctrl and click to zoom in.",
-  "BRIGHTNESS_TOOL_TOOLTIP": "Makes pixels brighter or darker ({0}). Hold Ctrl to make pixels darker.",
-  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Draw on pixels to make them brighter. Hold Ctrl to darken.",
-  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Draw on pixels to make them darker. Release Ctrl to brighten.",
-  "COLOR_PICKER_TOOLTIP": "Picks the primary color from the canvas. ({0})",
-  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Click to pick colors. Hold Ctrl to hide the canvas. Hold Shift to hide the reference layer",
-  "ELLIPSE_TOOL_TOOLTIP": "Draws an ellipse on canvas ({0}). Hold Shift to draw a circle.",
-  "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move mouse to draw an ellipse. Hold Shift to draw a circle.",
-  "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Click and move mouse to draw a circle.",
-  "ERASER_TOOL_TOOLTIP": "Erases color from pixel. ({0})",
-  "ERASER_TOOL_ACTION_DISPLAY": "Click and move to erase.",
-  "FLOOD_FILL_TOOL_TOOLTIP": "Fills area with color. ({0})",
-  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Press on an area to fill it. Hold down Ctrl to consider all layers.",
-  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Press on an area to fill it. Release Ctrl to only consider the current layers.",
-  "LASSO_TOOL_TOOLTIP": "Lasso. ({0})",
-  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to select pixels inside of the lasso. Hold Shift to add to existing selection. Hold Ctrl to subtract from it.",
-  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Click and move to add pixels inside of the lasso to the selection.",
-  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Click and move to subtract pixels inside of the lasso from the selection.",
-  "LINE_TOOL_TOOLTIP": "Draws line on canvas ({0}). Hold Shift to enable snapping.",
-  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to draw a line. Hold Shift to enable snapping.",
-  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Click and move mouse to draw a line with snapping enabled.",
-  "MAGIC_WAND_TOOL_TOOLTIP": "Magic Wand ({0}). Flood's the selection",
-  "MAGIC_WAND_ACTION_DISPLAY": "Click to flood the selection.",
-  "PEN_TOOL": "Pen",
-  "BRIGHTNESS_TOOL": "Brightness",
-  "COLOR_PICKER_TOOL": "Color Picker",
-  "ELLIPSE_TOOL": "Ellipse",
-  "ERASER_TOOL": "Eraser",
-  "FLOOD_FILL_TOOL": "Flood Fill",
-  "LASSO_TOOL": "Lasso",
-  "LINE_TOOL": "Line",
-  "MAGIC_WAND_TOOL": "Magic Wand",
-  "MOVE_TOOL": "Move",
-  "MOVE_VIEWPORT_TOOL": "Move Viewport",
-  "RECTANGLE_TOOL": "Rectangle",
-  "ROTATE_VIEWPORT_TOOL": "Rotate Viewport",
-  "SELECT_TOOL_NAME": "Select",
-  "ZOOM_TOOL": "Zoom",
-  "SHAPE_LABEL": "Shape",
-  "MODE_LABEL": "Mode",
-  "SCOPE_LABEL": "Scope",
-  "FILL_SHAPE_LABEL": "Fill shape",
-  "FILL_COLOR_LABEL": "Fill color",
-  "TOOL_SIZE_LABEL": "Tool size",
-  "STRENGTH_LABEL": "Strength",
-  "NEW": "New",
-  "ADD": "Add",
-  "SUBTRACT": "Subtract",
-  "INTERSECT": "Intersect",
-  "RECTANGLE": "Rectangle",
-  "CIRCLE": "Circle",
-  "ABOUT": "About",
-  "MINIMIZE": "Minimize",
-  "RESTORE": "Restore",
-  "MAXIMIZE": "Maximize",
-  "CLOSE": "Close",
-  "EXPORT_SIZE_HINT": "If you want to share the image, try {0}% for the best clarity",
-  "CREATE": "Create",
-  "BASE_LAYER_NAME": "Base layer",
-  "ENABLE_MASK": "Enable mask",
-  "SELECTED_AREA_EMPTY": "Selected area is empty",
-  "NOTHING_TO_COPY": "Nothing to copy",
-  "REFERENCE_LAYER_PATH": "Reference layer path",
-  "FLIP": "Flip",
-  "ROTATION": "Rotation",
-  "ROT_IMG_90_D": "Rotate Image 90°",
-  "ROT_IMG_180_D": "Rotate Image 180°",
-  "ROT_IMG_-90_D": "Rotate Image -90°",
-  "ROT_LAYERS_90_D": "Rotate Selected Layers 90°",
-  "ROT_LAYERS_180_D": "Rotate Selected Layers 180°",
-  "ROT_LAYERS_-90_D": "Rotate Selected Layers -90°",
-  "UNNAMED_PALETTE": "Unnamed Palette",
-  "CLICK_SELECT_PRIMARY": "Click to select as main color.",
-  "PEN_MODE": "Pen mode",
-  "VIEW": "View",
-  "HORIZONTAL_LINE_SYMMETRY": "Horizontal line symmetry",
-  "VERTICAL_LINE_SYMMETRY": "Vertical line symmetry",
-  "COLOR_PICKER_TITLE": "Color Picker",
-  "COLOR_SLIDERS_TITLE": "Color Sliders",
-  "PALETTE_TITLE": "Palette",
-  "SWATCHES_TITLE": "Swatches",
-  "LAYERS_TITLE": "Layers",
-  "PREVIEW_TITLE": "Preview",
-  "NORMAL_BLEND_MODE": "Normal",
-  "ERASE_BLEND_MODE": "Erase",
-  "DARKEN_BLEND_MODE": "Darken",
-  "MULTIPLY_BLEND_MODE": "Multiply",
-  "COLOR_BURN_BLEND_MODE": "Color burn",
-  "LIGHTEN_BLEND_MODE": "Lighten",
-  "SCREEN_BLEND_MODE": "Screen",
-  "COLOR_DODGE_BLEND_MODE": "Color dodge",
-  "OVERLAY_BLEND_MODE": "Overlay",
-  "SOFT_LIGHT_BLEND_MODE": "Soft light",
-  "HARD_LIGHT_BLEND_MODE": "Hard light",
-  "DIFFERENCE_BLEND_MODE": "Difference",
-  "EXCLUSION_BLEND_MODE": "Exclusion",
-  "HUE_BLEND_MODE": "Hue",
-  "SATURATION_BLEND_MODE": "Saturation",
-  "LUMINOSITY_BLEND_MODE": "Luminosity",
-  "COLOR_BLEND_MODE": "Color",
-  "NOT_SUPPORTED_BLEND_MODE": "Not supported",
-  "RESTART": "Restart",
-  "SORT_BY": "Sort by",
-  "NAME": "Name",
-  "COLORS": "Colors",
-  "DEFAULT": "Default",
-  "ALPHABETICAL": "Alphabetical",
-  "COLOR_COUNT": "Color count",
-  "ANY": "Any",
-  "MAX": "Max",
-  "MIN": "Min",
-  "EXACT": "Exact",
-  "ASCENDING": "Ascending",
-  "DESCENDING": "Descending",
-  "NAME_IS_TOO_LONG": "The name is too long",
-  "STOP_IT_TEXT1": "That's enough. Tidy up your file names.",
-  "STOP_IT_TEXT2": "Can you stop copying these names please?",
-  "REPLACER_TOOLTIP": "Right click on palette color and choose 'Replace' or drop it here.",
-  "CLICK_TO_CHOOSE_COLOR": "Click to choose the color",
-  "REPLACE_COLOR": "Replace color",
-  "PALETTE_COLOR_TOOLTIP": "Click to select as main color. Drag and drop onto another palette color to swap them.",
-  "ADD_FROM_SWATCHES": "Add from swatches",
-  "ADD_COLOR_TO_PALETTE": "Add color to palette",
-  "USE_IN_CURRENT_IMAGE": "Use in current image",
-  "ADD_TO_FAVORITES": "Add to favorites",
-  "BROWSE_PALETTES": "Browse palettes",
-  "LOAD_PALETTE": "Load palette",
-  "SAVE_PALETTE": "Save palette",
-  "FAVORITES": "Favorites",
-  "ADD_FROM_CURRENT_PALETTE": "Add from current palette",
-  "OPEN_PALETTES_DIR_TOOLTIP": "Open palettes directory in explorer",
-  "BROWSE_ON_LOSPEC_TOOLTIP": "Browse palettes on Lospec",
-  "IMPORT_FROM_FILE_TOOLTIP": "Import from file",
-  "TOP_LEFT": "Top left",
-  "TOP_CENTER": "Top center",
-  "TOP_RIGHT": "Top right",
-  "MIDDLE_LEFT": "Middle left",
-  "MIDDLE_CENTER": "Middle center",
-  "MIDDLE_RIGHT": "Middle right",
-  "BOTTOM_LEFT": "Bottom left",
-  "BOTTOM_CENTER": "Bottom center",
-  "BOTTOM_RIGHT": "Bottom right",
-  "CLIP_TO_BELOW": "Clip to member below",
-  "MOVE_UPWARDS": "Move upwards",
-  "MOVE_DOWNWARDS": "Move downwards",
-  "MERGE_SELECTED": "Merge selected",
-  "LOCK_TRANSPARENCY": "Lock transparency",
-  "COULD_NOT_LOAD_PALETTE": "Couldn't fetch palettes",
-  "NO_PALETTES_FOUND": "No palettes found.",
-  "LOSPEC_LINK_TEXT": "I heard you can find some here: lospec.com/palette-list",
-  "PALETTE_BROWSER": "Palette Browser",
-  "DELETE_PALETTE_CONFIRMATION": "Are you sure you want to delete this palette? This cannot be undone.",
-  "SHORTCUTS_IMPORTED": "Shortcuts from {0} were imported successfully.",
-  "SHORTCUT_PROVIDER_DETECTED": "We've detected, that you have {0} installed. Do you want to import shortcuts from it?",
-  "IMPORT_INSTALLATION_OPTION1": "Import from installation",
-  "IMPORT_INSTALLATION_OPTION2": "Use defaults",
-  "IMPORT_FROM_TEMPLATE": "Import from template",
-  "SHORTCUTS_IMPORTED_SUCCESS": "Shortcuts were imported successfully.",
-  "WARNING_RESET_SHORTCUTS_DEFAULT": "Are you sure you want to reset all shortcuts to their default value?",
-  "SUCCESS": "Success",
-  "WARNING": "Warning",
-  "ERROR_IMPORTING_IMAGE": "An error occured while importing the image.",
-  "SHORTCUTS_CORRUPTED_TITLE": "Corrupted shortcuts file",
-  "SHORTCUTS_CORRUPTED": "Shortcuts file was corrupted, resetting to default.",
-  "FAILED_DOWNLOAD_PALETTE": "Failed to download palette",
-  "FILE_INCORRECT_FORMAT": "The file was not in a correct format",
-  "INVALID_FILE": "Invalid file",
-  "SHORTCUTS_FILE_INCORRECT_FORMAT": "Shortcuts file was not in a correct format",
-  "UNSUPPORTED_FILE_FORMAT": "This file format is unsupported",
-  "ALREADY_ASSIGNED": "Already assigned",
-  "REPLACE": "Replace",
-  "SWAP": "Swap",
-  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "This shortcut is already assigned to '{0}'\nDo you want to replace the existing shortcut or swap the two?",
-  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "This shortcut is already assigned to '{0}'\nDo you want to replace the existing shortcut?",
-  "UNSAVED_CHANGES": "Unsaved changes",
-  "DOCUMENT_MODIFIED_SAVE": "The document has been modified. Do you want to save changes?",
-  "PROJECT_MAINTAINERS": "Project Maintainers",
-  "OTHER_AWESOME_CONTRIBUTORS": "And other awesome contributors",
-  "HELP": "Help",
-  "STOP_IT_TEXT3": "No, really, stop it.",
-  "STOP_IT_TEXT4": "Don't you have anything better to do?",
-  "LINEAR_DODGE_BLEND_MODE": "Linear dodge (Add)",
-  "PRESS_ANY_KEY": "Press any key",
-  "NONE_SHORTCUT": "None",
-  "REFERENCE": "Reference",
-  "PUT_REFERENCE_LAYER_ABOVE": "Put reference layer above",
-  "PUT_REFERENCE_LAYER_BELOW": "Put reference layer below",
-  "TOGGLE_VERTICAL_SYMMETRY": "Toggle vertical symmetry",
-  "TOGGLE_HORIZONTAL_SYMMETRY": "Toggle horizontal symmetry",
-  "RESET_VIEWPORT": "Reset viewport",
-  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Click and hold mouse to move pixels in selected layers.",
-  "CTRL_KEY": "Ctrl",
-  "SHIFT_KEY": "Shift",
-  "ALT_KEY": "Alt",
-  "RENAME": "Rename",
-  "PIXEL_UNIT": "px",
-  "OPEN_LOCALIZATION_DEBUG_WINDOW": "Open Localization Debug Window",
-  "FORCE_OTHER_FLOW_DIRECTION": "Force other flow direction",
-  "API_KEY": "API Key",
-  "LOCALIZATION_VIEW_TYPE": "Localization View Type",
-  "LOAD_LANGUAGE_FROM_FILE": "Load language from file",
-  "LOG_IN": "Log in",
-  "SYNC": "Sync",
-  "NOT_LOGGED_IN": "Not logged in",
-  "POE_EDITOR_ERROR": "POEditor Error: {0} {1}",
-  "HTTP_ERROR_MESSAGE": "HTTP Error: {0} {1}",
-  "LOGGED_IN": "Logged in",
-  "SYNCED_SUCCESSFULLY": "Synced successfully",
-  "EXCEPTION_ERROR": "Exception: {0}",
-  "DROP_PALETTE": "Drop palette here",
-  "SECURITY_ERROR": "Security error",
-  "SECURITY_ERROR_MSG": "No rights to write to the specified location.",
-  "IO_ERROR": "IO error",
-  "IO_ERROR_MSG": "Error while writing to disk.",
-  "COULD_NOT_SAVE_PALETTE": "There was an error while saving the palette.",
-  "NO_COLORS_TO_SAVE": "There are no colors to save.",
-  "CANVAS": "Canvas",
-  "SINGLE_LAYER": "Single Layer",
-  "CHOOSE": "Choose",
-  "REMOVE": "Remove",
-  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "File is not a \".aseprite-keys\" file",
-  "FILE_HAS_INVALID_SHORTCUT": "The file contains an invalid shortcut",
-  "FILE_EXTENSION_NOT_SUPPORTED": "The file type '{0}' is not supported",
-  "ERROR_READING_FILE": "Error while reading the file",
-  "DISCARD_PALETTE": "Discard palette",
-  "DISCARD_PALETTE_CONFIRMATION": "Are you sure you want to discard current palette? This cannot be undone.",
-  "IMPORT_AS_NEW_LAYER": "Import as new layer",
-  "PASTE_AS_PRIMARY_COLOR": "Paste as primary color",
-  "IMPORT_AS_NEW_FILE": "Import as new file",
-  "IMPORT_PALETTE_FILE": "Import palette file",
-  "IMPORT_MULTIPLE_PALETTE_COLORS": "Import colors into palette",
-  "IMPORT_SINGLE_PALETTE_COLOR": "Import color into palette",
-  "IMPORT_AS_REFERENCE_LAYER": "Import as reference layer",
-  "NAVIGATOR_PICK_ACTION_DISPLAY": "Right-click to pick color, Shift-right-click to copy color to clipboard",
-  "OPEN_FILE_FROM_CLIPBOARD": "Open from clipboard",
-  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Open from clipboard",
-  "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",
-  "SHORTCUTS_TITLE": "Shortcuts",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to scale from center. 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 Ctrl and drag a handle to scale from center. 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 Ctrl and drag a handle to scale from center. Hold Shift to scale proportionally. Drag outside handles to rotate.",
-  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to scale from center. Hold Shift to scale proportionally.",
-  "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",
-  "EXPORT_SAVE_TITLE": "Choose a location to save the image",
-  "BROWSE_DIRECTORY": "Browse Directory",
-  "CRASH_NOT_ALL_DOCUMENTS_RECOVERED_TITLE": "Not all documents were recovered",
-  "CRASH_NOT_ALL_DOCUMENTS_RECOVERED": "Could not recover all documents. Git gud at saving your work.",
-  "SEND": "Send report",
-  "OPEN_DOCKABLE_MENU": "Open Tab",
-  "TIMELINE_TITLE": "Timeline",
-  "EXPORT_IMAGE_HEADER": "Image",
-  "EXPORT_ANIMATION_HEADER": "Animation",
-  "EXPORT_SPRITESHEET_HEADER": "Spritesheet",
-  "PIXI_FILE": "PixiEditor Files",
-  "PNG_FILE": "PNG Images",
-  "JPEG_FILE": "JPEG Images",
-  "WEBP_FILE": "WebP Images",
-  "GIF_FILE": "GIFs",
-  "BMP_FILE": "BMP Images",
-  "IMAGE_FILES": "Image Files",
-  "VIDEO_FILES": "Video Files",
-  "OPEN_TYPE_FONT": "OpenType Fonts",
-  "TRUE_TYPE_FONT": "TrueType Fonts",
-  "SVG_FILE": "Scalable Vector Graphics",
-  "MP4_FILE": "MP4 Videos",
-  "COLUMNS": "Columns",
-  "ROWS": "Rows",
-  "BACKGROUND": "Background",
-  "OPACITY": "Opacity",
-  "IS_VISIBLE": "Is visible",
-  "BLEND_MODE": "Blend mode",
-  "MASK": "Mask",
-  "MASK_IS_VISIBLE": "Mask is visible",
-  "OUTPUT": "Output",
-  "INPUT": "Input",
-  "NODE_GRAPH_TITLE": "Graph View",
-  "CONTENT": "Content",
-  "RADIUS": "Radius",
-  "STROKE_COLOR": "Stroke color",
-  "STROKE_WIDTH": "Stroke width",
-  "FILL_COLOR": "Fill color",
-  "TOP": "Top",
-  "BOTTOM": "Bottom",
-  "CHANNELS_DOCK_TITLE": "Channels",
-  "RED": "Red",
-  "GREEN": "Green",
-  "BLUE": "Blue",
-  "ALPHA": "Alpha",
-  "COLOR": "Color",
-  "COORDINATE": "Coordinate",
-  "VECTOR": "Vector",
-  "MATRIX": "Matrix",
-  "TRANSFORMED": "Transformed",
-  "GRAYSCALE": "Grayscale",
-  "CLAMP": "Clamp",
-  "SIZE": "Size",
-  "NOISE": "Noise",
-  "SCALE": "Scale",
-  "SEED": "Seed",
-  "KERNEL": "Kernel",
-  "KERNEL_VIEW_SUM": "Sum:",
-  "KERNEL_VIEW_SUM_TOOLTIP": "The sum of all values. You likely want to aim for a value of 1 or 0",
-  "GAIN": "Gain",
-  "BIAS": "Bias",
-  "TILE_MODE": "Tile Mode",
-  "ON_ALPHA": "On Alpha",
-  "OUTPUT_NODE": "Output",
-  "NOISE_NODE": "Noise",
-  "ELLIPSE_NODE": "Ellipse",
-  "LINE_NODE": "Line",
-  "LINE_START": "Start",
-  "LINE_END": "End",
-  "RECTANGLE_NODE": "Rectangle",
-  "CREATE_IMAGE_NODE": "Create Image",
-  "FOLDER_NODE": "Folder",
-  "IMAGE_LAYER_NODE": "Image Layer",
-  "KERNEL_FILTER_NODE": "Kernel Filter",
-  "MATH_NODE": "Math",
-  "COLOR_MATRIX_TRANSFORM_FILTER_NODE": "Matrix Transform Filter",
-  "MERGE_NODE": "Merge",
-  "MODIFY_IMAGE_LEFT_NODE": "Begin Modify Image",
-  "MODIFY_IMAGE_RIGHT_NODE": "End Modify Image",
-  "COMBINE_CHANNELS_NODE": "Combine Channels",
-  "COMBINE_COLOR_NODE": "Combine Color",
-  "COMBINE_VECD_NODE": "Combine Vector",
-  "COMBINE_VECI_NODE": "Combine Integer Vector",
-  "SEPARATE_CHANNELS_NODE": "Separate Channels",
-  "SEPARATE_VECD_NODE": "Separate Vector",
-  "SEPARATE_VECI_NODE": "Separate Integer Vector",
-  "SEPARATE_COLOR_NODE": "Separate Color",
-  "TIME_NODE": "Time",
-  "FILTERS": "Filters",
-  "PREVIOUS": "Previous",
-  "FILL": "Fill",
-  "MATH_MODE": "Math Mode",
-  "NOISE_TYPE": "Noise Type",
-  "OCTAVES": "Octaves",
-  "ACTIVE_FRAME": "Active Frame",
-  "NORMALIZED_TIME": "Normalized Time",
-  "WITHOUT_FILTERS": "Without filters",
-  "RAW_LAYER_OUTPUT": "Raw",
-  "EXAMPLE_FILES": "Example Files",
-  "PROCEDURAL_GENERATION": "Procedural Animation",
-  "POND_EXAMPLE": "Pond",
-  "TREE_EXAMPLE": "Windy Tree",
-  "OUTLINE_EXAMPLE": "Automatic Outline",
-  "BETA_ANIMATIONS": "Animations",
-  "SLIME_EXAMPLE": "Animated Slime",
-  "APPLY_FILTER_NODE": "Apply Filter",
-  "FILTER": "Filter",
-  "LERP_NODE": "Lerp",
-  "GRAYSCALE_FILTER_NODE": "Grayscale Filter",
-  "FROM": "From",
-  "TO": "To",
-  "TIME": "Time",
-  "WARMING_UP": "Warming up",
-  "RENDERING_FRAME": "Generating Frame {0}/{1}",
-  "RENDERING_VIDEO": "Rendering Video",
-  "FINISHED": "Finished",
-  "GENERATING_SPRITE_SHEET": "Generating Sprite Sheet",
-  "RENDERING_IMAGE": "Rendering Image",
-  "PROGRESS_POPUP_TITLE": "Progress",
-  "POINTS": "Points",
-  "MIN_DISTANCE": "Min. Distance",
-  "MAX_POINTS": "Max. Points",
-  "DISTRIBUTE_POINTS": "Distribute points",
-  "REMOVE_CLOSE_POINTS": "Remove close points",
-  "RASTERIZE_SHAPE": "Rasterize Shape",
-  "MODE": "Mode",
-  "Factor": "Factor",
-  "NORMALIZE": "Normalize",
-  "WEIGHT_FACTOR": "Weight",
-  "STARS_EXAMPLE": "Stars",
-  "ADD_EMPTY_FRAME": "Add empty frame",
-  "DUPLICATE_FRAME": "Duplicate frame",
-  "DELETE_FRAME": "Remove frame",
-  "DEFAULT_MEMBER_NAME": "New Element",
-  "NO_PARSER_FOUND": "No file parser found for extension '{0}'",
-  "SELECT_FILE_FORMAT": "Select file format",
-  "SELECT_FILE_FORMAT_DESCRIPTION": "Multiple file types of the same format are supported. Please select the one you want to use.",
-  "NEW_PALETTE_FILE": "palette",
-  "ISLAND_EXAMPLE": "Islands",
-  "ONION_FRAMES_COUNT": "Onion frames",
-  "ONION_OPACITY": "Onion opacity",
-  "TOGGLE_ONION_SKINNING": "Toggle onion skinning",
-  "CHANGE_ACTIVE_FRAME_PREVIOUS": "Change active frame to previous",
-  "CHANGE_ACTIVE_FRAME_NEXT": "Change active frame to next",
-  "TOGGLE_ANIMATION": "Toggle animation",
-  "NEW_FROM_CLIPBOARD": "New from clipboard",
-  "OFFSET": "Offset",
-  "SHAPE": "Shape",
-  "STRUCTURE": "Structure",
-  "NUMBERS": "Numbers",
-  "OPERATIONS": "Operations",
-  "GENERATION": "Generation",
-  "NUMBER": "Number",
-  "ANIMATION": "Animation",
-  "SAMPLE_IMAGE": "Sample Image",
-  "POSITION": "Position",
-  "MATH_ADD": "Add",
-  "MATH_SUBTRACT": "Subtract",
-  "MULTIPLY": "Multiply",
-  "DIVIDE": "Divide",
-  "SIN": "Sin",
-  "COS": "Cos",
-  "TAN": "Tan",
-  "GREATER_THAN": "Greater than",
-  "LESS_THAN": "Less than",
-  "LESS_THAN_OR_EQUAL": "Less than or equal",
-  "COMPARE": "Compare",
-  "MATH_POWER": "Power",
-  "LOGARITHM": "Logarithm",
-  "NATURAL_LOGARITHM": "Natural logarithm",
-  "ROOT": "Root",
-  "INVERSE_ROOT": "Inverse root",
-  "FRACTION": "Fraction",
-  "NEGATE": "Negate",
-  "FLOOR": "Floor",
-  "CEIL": "Ceil",
-  "ROUND": "Round",
-  "MODULO": "Modulo",
-  "STEP": "Step",
-  "SMOOTH_STEP": "Smoothstep",
-  "PIXEL_ART_TOOLSET": "Pixel Art",
-  "VECTOR_TOOLSET": "Vector",
-  "VECTOR_LAYER": "Vector Layer",
-  "STROKE_COLOR_LABEL": "Stroke",
-  "SYNC_WITH_PRIMARY_COLOR_LABEL": "Sync with primary color",
-  "RASTERIZE": "Rasterize",
-  "RASTERIZE_ACTIVE_LAYER": "Rasterize active layer",
-  "RASTERIZE_ACTIVE_LAYER_DESCRIPTIVE": "Convert/Rasterize the active layer into a image (raster) layer.",
-  "NEW_ELLIPSE_LAYER_NAME": "Ellipse",
-  "NEW_RECTANGLE_LAYER_NAME": "Rectangle",
-  "NEW_LINE_LAYER_NAME": "Line",
-  "RENDER_OUTPUT": "Render Output",
-  "PAINT_TOOLSET": "Painting",
-  "HARDNESS_SETTING": "Hardness",
-  "SPACING_SETTING": "Spacing",
-  "ANTI_ALIASING_SETTING": "Anti-aliasing",
-  "TOLERANCE_LABEL": "Tolerance",
-  "TOGGLE_SNAPPING": "Toggle snapping",
-  "HIGH_RES_PREVIEW": "High Resolution Preview",
-  "LOW_RES_PREVIEW": "Document Resolution Preview",
-  "TOGGLE_HIGH_RES_PREVIEW": "Toggle high resolution preview",
-  "FACTOR": "Factor",
-  "PATH_TOOL": "Path",
-  "PATH_TOOL_TOOLTIP": "Create vector paths and curves ({0}).",
-  "PATH_TOOL_ACTION_DISPLAY": "Click to add a point.",
-  "PATH_TOOL_ACTION_DISPLAY_CTRL": "Click on existing point and drag to make it a curve. Tap on a control point to select it.",
-  "PATH_TOOL_ACTION_DISPLAY_SHIFT": "Click to create a new layer.",
-  "PATH_TOOL_ACTION_DISPLAY_CTRL_SHIFT": "Tap on a control point to add it to the selection.",
-  "PATH_TOOL_ACTION_DISPLAY_ALT": "Click on a control point and move to adjust only one side of the curve.",
-  "DEFAULT_PATH_LAYER_NAME": "Path",
-  "DELETE_NODES": "Delete nodes",
-  "DELETE_NODES_DESCRIPTIVE": "Delete selected nodes",
-  "DELETE_CELS": "Delete cels",
-  "DELETE_CELS_DESCRIPTIVE": "Delete selected cels",
-  "COPY_COLOR_TO_CLIPBOARD": "Copy color to clipboard",
-  "VIEWPORT_ROTATION": "Viewport rotation",
-  "NEXT_TOOL_SET": "Next tool set",
-  "PREVIOUS_TOOL_SET": "Previous tool set",
-  "FILL_MODE": "Fill mode",
-  "USE_LINEAR_SRGB_PROCESSING": "Use linear sRGB for processing colors",
-  "USE_LINEAR_SRGB_PROCESSING_DESC": "Convert document using sRGB blending mode to linear sRGB for processing colors. This will affect the colors of the document, but will make blending more accurate.",
-  "FILL_TYPE_WINDING": "Winding",
-  "FILL_TYPE_EVEN_ODD": "Even Odd",
-  "FILL_TYPE_INVERSE_WINDING": "Inverse Winding",
-  "FILL_TYPE_INVERSE_EVEN_ODD": "Inverse Even Odd",
-  "STROKE_CAP": "Stroke Cap",
-  "STROKE_JOIN": "Stroke Join",
-  "COPY_VISIBLE": "Copy visible",
-  "COPY_VISIBLE_DESCRIPTIVE": "Copy visible pixels",
-  "COLOR_SAMPLE_MODE": "Sample mode",
-  "CREATE_CEL": "Create cel",
-  "CREATE_CEL_DESCRIPTIVE": "Create a new cel",
-  "DUPLICATE_CEL": "Duplicate cel",
-  "DUPLICATE_CEL_DESCRIPTIVE": "Duplicate cel in the current frame",
-  "RENDER_PREVIEW": "Render preview",
-  "OUTPUT_NAME": "Output name",
-  "CUSTOM_OUTPUT_NODE": "Custom Output",
-  "TOGGLE_HUD": "Toggle HUD",
-  "OPEN_TIMELINE": "Open timeline",
-  "OPEN_NODE_GRAPH": "Open node graph",
-  "TOGGLE_PLAY": "Play/Pause animation",
-  "COPY_NODES": "Copy nodes",
-  "COPY_NODES_DESCRIPTIVE": "Copy selected nodes",
-  "PASTE_NODES": "Paste nodes",
-  "PASTE_NODES_DESCRIPTIVE": "Paste copied nodes",
-  "COPY_CELS": "Copy cels",
-  "COPY_CELS_DESCRIPTIVE": "Copy selected cels",
-  "TOGGLE_ONION_SKINNING_DESCRIPTIVE": "Toggle onion skinning",
-  "VALUE": "Value",
-  "TARGET": "Target",
-  "EPSILON": "Epsilon",
-  "PRESERVE_ALPHA": "Preserve alpha",
-  "BLUR_FILTER_NODE": "Gaussian Blur Filter",
-  "LENGTH": "Length",
-  "GREATER_THAN_OR_EQUAL": "Greater than or equal",
-  "COLOR_NODE": "Color",
-  "CONVERT_TO_CURVE": "Convert to curve",
-  "CONVERT_TO_CURVE_DESCRIPTIVE": "Convert selected vector layer to a curve/path",
-  "FONT_FILES": "Font Files",
-  "UNIT_PT": "pt",
-  "FONT_LABEL": "Family",
-  "FONT_SIZE_LABEL": "Size",
-  "SPACING_LABEL": "Spacing",
-  "TEXT_TOOL": "Text",
-  "MISSING_FONT": "Missing font",
-  "TEXT_LAYER_NAME": "Text",
-  "TEXT_TOOL_TOOLTIP": "Create text ({0}).",
-  "BOLD_TOOLTIP": "Bold",
-  "ITALIC_TOOLTIP": "Italic",
-  "CUSTOM_FONT": "Custom font",
-  "DUMP_GPU_DIAGNOSTICS": "Dump GPU diagnostics",
-  "USE_SRGB_PROCESSING": "Use sRGB for processing colors",
-  "USE_SRGB_PROCESSING_DESC": "Convert document using linear sRGB to sRGB for processing colors. This will affect the colors of the document.",
-  "TEXT_NODE": "Text",
-  "TEXT_LABEL": "Text",
-  "TEXT_ON_PATH_NODE": "Text on Path",
-  "HIGH_DPI_RENDERING": "High DPI Rendering",
-  "THICKNESS": "Thickness",
-  "TYPE": "Type",
-  "EFFECTS": "Effects",
-  "OUTLINE_NODE": "Outline",
-  "SHADER_CODE": "Shader Code",
-  "SHADER_NODE": "Shader",
-  "FAILED_TO_OPEN_EDITABLE_STRING_TITLE": "Failed to open file",
-  "FAILED_TO_OPEN_EDITABLE_STRING_MESSAGE": "Failed to edit this string in external editor. Reason: {0}",
-  "STRING_EDIT_IN_DEFAULT_APP": "Edit in default app",
-  "STRING_OPEN_IN_FOLDER": "Open in folder",
-  "DISCO_BALL_EXAMPLE": "Disco Ball",
-  "COLOR_SPACE": "Color Space",
-  "PHOTO_EXAMPLES": "Photo",
-  "MASK_EXAMPLE": "Mask",
-  "SHADOW_NODE": "Shadow Filter",
-  "INPUT_MATRIX": "Input Matrix",
-  "OUTPUT_MATRIX": "Output Matrix",
-  "CENTER": "Center",
-  "CANVAS_POSITION": "Canvas Position",
-  "CENTER_POSITION": "Center Position",
-  "TILE_MODE_X": "Tile Mode X",
-  "TILE_MODE_Y": "Tile Mode Y",
-  "TILE_NODE": "Tile",
-  "SKEW": "Skew",
-  "OFFSET_NODE": "Offset",
-  "SKEW_NODE": "Skew",
-  "SCALE_NODE": "Scale",
-  "ROTATE_NODE": "Rotate",
-  "TRANSFORM_NODE": "Transform",
-  "UNIT": "Unit",
-  "ANGLE": "Angle",
-  "DOCUMENT_INFO_NODE": "Document Info",
-  "MASK_NODE": "Mask",
-  "SEPIA_FILTER_NODE": "Sepia Filter",
-  "INTENSITY": "Intensity",
-  "INVERT_FILTER_NODE": "Invert Filter",
-  "COLOR_ADJUSTMENTS_FILTER": "Color Adjustments Filter",
-  "ADJUST_BRIGHTNESS": "Adjust Brightness",
-  "ADJUST_CONTRAST": "Adjust Contrast",
-  "ADJUST_SATURATION": "Adjust Saturation",
-  "ADJUST_TEMPERATURE": "Adjust Temperature",
-  "ADJUST_TINT": "Adjust Tint",
-  "ADJUST_HUE": "Adjust Hue",
-  "HUE_VALUE": "Hue",
-  "SATURATION_VALUE": "Saturation",
-  "BRIGHTNESS_VALUE": "Brightness",
-  "CONTRAST_VALUE": "Contrast",
-  "TEMPERATURE_VALUE": "Temperature",
-  "TINT_VALUE": "Tint",
-  "UNEXPECTED_SHUTDOWN": "Unexpected shutdown",
-  "UNEXPECTED_SHUTDOWN_MSG": "PixiEditor was unexpectedly shut down. We've loaded latest autosave of your files.",
-  "OK": "OK",
-  "OPEN_AUTOSAVES": "Browse Autosaves",
-  "AUTOSAVE_SETTINGS_HEADER": "Autosave",
-  "AUTOSAVE_SETTINGS_SAVE_STATE": "Reopen last files on startup",
-  "AUTOSAVE_SETTINGS_PERIOD": "Autosave period",
-  "AUTOSAVE_ENABLED": "Autosave enabled",
-  "MINUTE_UNIVERSAL": "min",
-  "AUTOSAVE_SETTINGS_SAVE_USER_FILE": "Autosave to selected file",
-  "LOAD_LAZY_FILE_MESSAGE": "To improve startup time, PixiEditor didn't load this file. Click the button below to load it.",
-  "EASING_NODE": "Easing",
-  "EASING_TYPE": "Easing Type",
-  "OPEN_DIRECTORY_ON_EXPORT": "Open directory on export",
-  "ERROR_LOOP_DETECTED_MESSAGE": "Moving this layer will create a loop. Fix it in the Node Graph.",
-  "LINEAR_EASING_TYPE": "Linear",
-  "IN_SINE_EASING_TYPE": "In Sine",
-  "OUT_SINE_EASING_TYPE": "Out Sine",
-  "IN_OUT_SINE_EASING_TYPE": "In Out Sine",
-  "IN_QUAD_EASING_TYPE": "In Quad",
-  "OUT_QUAD_EASING_TYPE": "Out Quad",
-  "IN_OUT_QUAD_EASING_TYPE": "In Out Quad",
-  "IN_CUBIC_EASING_TYPE": "In Cubic",
-  "OUT_CUBIC_EASING_TYPE": "Out Cubic",
-  "IN_OUT_CUBIC_EASING_TYPE": "In Out Cubic",
-  "IN_QUART_EASING_TYPE": "In Quart",
-  "OUT_QUART_EASING_TYPE": "Out Quart",
-  "IN_OUT_QUART_EASING_TYPE": "In Out Quart",
-  "IN_QUINT_EASING_TYPE": "In Quint",
-  "OUT_QUINT_EASING_TYPE": "Out Quint",
-  "IN_OUT_QUINT_EASING_TYPE": "In Out Quint",
-  "IN_EXPO_EASING_TYPE": "In Expo",
-  "OUT_EXPO_EASING_TYPE": "Out Expo",
-  "IN_OUT_EXPO_EASING_TYPE": "In Out Expo",
-  "IN_CIRC_EASING_TYPE": "In Circ",
-  "OUT_CIRC_EASING_TYPE": "Out Circ",
-  "IN_OUT_CIRC_EASING_TYPE": "In Out Circ",
-  "IN_BACK_EASING_TYPE": "In Back",
-  "OUT_BACK_EASING_TYPE": "Out Back",
-  "IN_OUT_BACK_EASING_TYPE": "In Out Back",
-  "IN_ELASTIC_EASING_TYPE": "In Elastic",
-  "OUT_ELASTIC_EASING_TYPE": "Out Elastic",
-  "IN_OUT_ELASTIC_EASING_TYPE": "In Out Elastic",
-  "IN_BOUNCE_EASING_TYPE": "In Bounce",
-  "OUT_BOUNCE_EASING_TYPE": "Out Bounce",
-  "IN_OUT_BOUNCE_EASING_TYPE": "In Out Bounce",
-  "R_G_B_COMBINE_SEPARATE_COLOR_MODE": "RGB",
-  "H_S_V_COMBINE_SEPARATE_COLOR_MODE": "HSV",
-  "H_S_L_COMBINE_SEPARATE_COLOR_MODE": "HSL",
-  "COLOR_MANAGED_COLOR_SAMPLE_MODE": "Color Managed",
-  "RAW_COLOR_SAMPLE_MODE": "Raw",
-  "FRACTAL_PERLIN_NOISE_TYPE": "Perlin",
-  "TURBULENCE_PERLIN_NOISE_TYPE": "Turbulence",
-  "VORONOI_NOISE_TYPE": "Voronoi",
-  "VORONOI_FEATURE": "Feature",
-  "F1_VORONOI_FEATURE": "F1",
-  "F2_VORONOI_FEATURE": "F2",
-  "F2_MINUS_F1_VORONOI_FEATURE": "F2-F1",
-  "RANDOMNESS": "Randomness",
-  "ANGLE_OFFSET": "Angle Offset",
-  "INHERIT_COLOR_SPACE_TYPE": "Inherit",
-  "SRGB_COLOR_SPACE_TYPE": "sRGB",
-  "LINEAR_SRGB_COLOR_SPACE_TYPE": "Linear sRGB",
-  "SIMPLE_OUTLINE_TYPE": "Simple",
-  "GAUSSIAN_OUTLINE_TYPE": "Gaussian",
-  "PIXEL_PERFECT_OUTLINE_TYPE": "Pixel Perfect",
-  "DEGREES_ROTATION_TYPE": "Degrees",
-  "RADIANS_ROTATION_TYPE": "Radians",
-  "WEIGHTED_GRAYSCALE_MODE": "Weighted",
-  "AVERAGE_GRAYSCALE_MODE": "Average",
-  "CUSTOM_GRAYSCALE_MODE": "Custom",
-  "CLAMP_TILE_MODE": "Clamp",
-  "REPEAT_TILE_MODE": "Repeat",
-  "MIRROR_TILE_MODE": "Mirror",
-  "DECAL_TILE_MODE": "Decal",
-  "ERR_UNKNOWN_FILE_FORMAT": "Unknown file format",
-  "ERR_EXPORT_SIZE_INVALID": "Invalid export size. Values must be greater than 0.",
-  "ERR_UNKNOWN_IMG_FORMAT": "Unknown image format '{0}'.",
-  "ERR_FAILED_GENERATE_SPRITE_SHEET": "Failed generating sprite sheet",
-  "ERR_NO_RENDERER": "Animation renderer not found.",
-  "ERR_RENDERING_FAILED": "Rendering failed",
-  "ENABLE_ANALYTICS": "Send anonymous analytics",
-  "ANALYTICS_INFO": "We collect anonymous usage data to improve PixiEditor. No personal data is collected.",
-  "LANGUAGE_INFO": "All translations are community-driven. Join our Discord server for more information.",
-  "UP_TO_DATE_UNKNOWN": "Couldn't check for updates",
-  "UP_TO_DATE": "PixiEditor is up to date",
-  "UPDATE_AVAILABLE": "Update {0} is available",
-  "UPDATE_FAILED_DOWNLOAD": "Failed to download the update",
-  "UPDATE_READY_TO_INSTALL": "Update is ready. Switch to {0}?",
-  "SWITCH_TO_NEW_VERSION": "Switch",
-  "DOWNLOAD_UPDATE": "Download",
-  "DOWNLOADING_UPDATE": "Downloading update...",
-  "CHECKING_FOR_UPDATES": "Checking for updates...",
-  "PAINT_SHAPE_SETTING": "Brush shape",
-  "BOOL_OPERATION_NODE": "Boolean Operation",
-  "FIRST_SHAPE": "First shape",
-  "SECOND_SHAPE": "Second shape",
-  "OPERATION": "Operation",
-  "UNION_VECTOR_PATH_OP": "Union",
-  "DIFFERENCE_VECTOR_PATH_OP": "Difference",
-  "INTERSECT_VECTOR_PATH_OP": "Intersect",
-  "XOR_VECTOR_PATH_OP": "XOR",
-  "REVERSE_DIFFERENCE_VECTOR_PATH_OP": "Reverse Difference",
-  "NO_DOCUMENT_OPEN": "Nothing's here",
-  "EMPTY_DOCUMENT_ACTION_BTN": "Start creating",
-  "ONBOARDING_TITLE": "Welcome to",
-  "ONBOARDING_DESCRIPTION": "Let's set up your workspace!",
-  "ONBOARDING_SKIP_BTN": "Skip",
-  "ONBOARDING_ACTION_BTN": "Let's begin",
-  "ONB_SELECT_PRIMARY_TOOLSET": "Select Your Primary Toolset",
-  "ONB_NEXT_BTN": "Next",
-  "ONB_FINISH_BTN": "Finish",
-  "ONB_BACK_BTN": "Previous",
-  "ONB_ANALYTICS": "Anonymous Analytics",
-  "ONB_ALL_SET": "You are all set!",
-  "ONB_ALL_SET_BTN": "Start creating",
-  "ANALYTICS_INFO_DETAILED": "PixiEditor collects anonymous usage data to improve the app. The data does not contain any personal information. Among other things, PixiEditor tracks the following:\n- Which and how the tools are used\n- How long you've used the app for\n- Which commands are used\n- Performance data\n\n You can opt out of analytics at any time in the settings.",
-  "PRIVACY_POLICY": "Privacy Policy",
-  "ONB_SHORTCUTS": "Select Your Shortcuts",
-  "GRAPH_STATE_UNABLE_TO_CREATE_MEMBER": "Current Node Graph setup disallows creation of a new layer next to the selected one.",
-  "PRIMARY_TOOLSET": "Primary Toolset",
-  "OPEN_ONBOARDING_WINDOW": "Open onboarding window",
-  "USER_NOT_FOUND": "Please enter the email you used to purchase the Founder's Edition.",
-  "SESSION_NOT_VALID": "Session is not valid, please log in again",
-  "SESSION_NOT_FOUND": "Session not found, try logging in again",
-  "INTERNAL_SERVER_ERROR": "There was an internal server error. Please try again later.",
-  "TOO_MANY_REQUESTS": "Too many requests. Try again in {0} seconds.",
-  "SESSION_EXPIRED": "Session expired. Please log in again.",
-  "CONNECTION_ERROR": "Connection error. Please check your internet connection.",
-  "FAIL_LOAD_USER_DATA": "Failed to load saved user data",
-  "LOGOUT": "Logout",
-  "LOGGED_IN_AS": "Hello",
-  "EMAIL_SENT": "Email sent! Check your inbox.",
-  "RESEND_ACTIVATION": "Resend",
-  "INVALID_TOKEN": "Session is invalid or expired. Please log in again.",
-  "ENTER_EMAIL": "Enter your email",
-  "LOGIN_LINK": "Send Login Link",
-  "LOGIN_LINK_INFO": "We'll email you a secure link to log in. No password needed.",
-  "ACCOUNT_WINDOW_TITLE": "Account",
-  "CONNECTION_TIMEOUT": "Connection timed out. Please try again.",
-  "OPEN_ACCOUNT_WINDOW": "Manage Account",
-  "AUTO_SCALE_BACKGROUND": "Auto scale background",
-  "UPDATES": "Updates",
-  "SCENE": "Scene",
-  "CUSTOM_BACKGROUND_SCALE": "Custom background scale",
-  "PRIMARY_BG_COLOR": "Primary background color",
-  "SECONDARY_BG_COLOR": "Secondary background color",
-  "RESET": "Reset",
-  "INSTALL": "Install",
-  "OWNED_PRODUCTS": "Owned Content",
-  "INSTALLING": "Installing",
-  "INSTALLED": "Installed",
-  "ACCOUNT_PROVIDER_INFO": "Account handled by",
-  "UPDATE": "Update",
-  "AUTOSAVE_OPEN_FOLDER": "Open autosave folder",
-  "AUTOSAVE_OPEN_FOLDER_DESCRIPTIVE": "Open the folder where autosaves are stored",
-  "AUTOSAVE_TOGGLE_DESCRIPTIVE": "Enable/disable autosave",
-  "FOUNDERS_BUNDLE": "Founder's Bundle",
-  "FOUNDERS_BUNDLE_SUBTEXT": "Support PixiEditor and boost your productivity!",
-  "BECOME_A_FOUNDER": "Become a Founder",
-  "LOGIN": "Login",
-  "NOT_FOUNDER_YET": "Not a Founder yet?",
-  "ERROR_GRAPH": "Graph setup produced an error. Fix it in the node graph",
-  "COLOR_MATRIX_FILTER_NODE": "Color Matrix Filter",
-  "WORKSPACE": "Workspace",
-  "IS_DEFAULT_EXPORT": "Is Default Export",
-  "EXPORT_OUTPUT": "Export Output",
-  "RENDER_OUTPUT_SIZE": "Render Output Size",
-  "RENDER_OUTPUT_CENTER": "Render Output Center",
-  "COLOR_PICKER": "Color Picker",
-  "UNAUTHORIZED_ACCESS": "Unauthorized access",
-  "SEPARATE_SHAPES": "Separate Shapes",
-  "SEPARATE_SHAPES_DESCRIPTIVE": "Separate shapes from current vector into individual layers",
-  "TEXT": "Text",
-  "EXTRACT_SELECTED_TEXT": "Extract selected text",
-  "EXTRACT_SELECTED_TEXT_DESCRIPTIVE": "Extract selected text into new layer.",
-  "EXTRACT_SELECTED_CHARACTERS": "Extract selected characters",
-  "EXTRACT_SELECTED_CHARACTERS_DESCRIPTIVE": "Extract individual characters from selection into new layers.",
-  "STEP_START": "Step back to closest cel",
-  "STEP_END": "Step forward to closest cel",
-  "STEP_FORWARD": "Step forward one frame",
-  "STEP_BACK": "Step back one frame",
-  "ANIMATION_QUALITY_PRESET": "Quality Preset",
-  "VERY_LOW_QUALITY_PRESET": "Very Low",
-  "LOW_QUALITY_PRESET": "Low",
-  "MEDIUM_QUALITY_PRESET": "Medium",
-  "HIGH_QUALITY_PRESET": "High",
-  "VERY_HIGH_QUALITY_PRESET": "Very High",
-  "EXPORT_FRAMES": "Export Frames",
-  "NORMALIZE_OFFSET": "Normalize Offset",
-  "TANGENT": "Tangent",
-  "EVALUATE_PATH_NODE": "Evaluate Path",
-  "OLD_MIN": "Old Min",
-  "OLD_MAX": "Old Max",
-  "NEW_MIN": "New Min",
-  "NEW_MAX": "New Max",
-  "REMAP_NODE": "Remap",
-  "TEXT_TOOL_ACTION_DISPLAY": "Click on the canvas to add a new text (drag while clicking to set the size). Click on existing text to edit it.",
-  "PASTE_CELS": "Paste cels",
-  "PASTE_CELS_DESCRIPTIVE": "Paste cels from clipboard into the current frame",
-  "SCALE_X": "Scale X",
-  "SCALE_Y": "Scale Y",
-  "TRANSLATE_X": "Translate X",
-  "TRANSLATE_Y": "Translate Y",
-  "SKEW_X": "Skew X",
-  "SKEW_Y": "Skew Y",
-  "PERSPECTIVE_0": "Perspective 0",
-  "PERSPECTIVE_1": "Perspective 1",
-  "PERSPECTIVE_2": "Perspective 2",
-  "COMPOSE_MATRIX": "Compose Matrix",
-  "DECOMPOSE_MATRIX": "Decompose Matrix",
-  "NORMALIZE_COORDINATES": "Normalize Coordinates",
-  "TRANSFORMED_POSITION": "Transformed Position",
-  "ACCOUNT_PROVIDER_NOT_AVAILABLE": "This build of PixiEditor does not support accounts. Use the official build from pixieditor.net to manage your account.",
-  "STEAM_OFFLINE": "Cannot validate the account. Steam is offline. Make sure Steam client is running and you are logged in.",
-  "ERROR_GPU_RESOURCES_CREATION": "Failed to create resources: Try updating your GPU drivers or try setting different rendering api in settings. \nError: '{0}'",
-  "ERROR_SAVING_PREFERENCES_DESC": "Failed to save preferences with error: '{0}'. Please check if you have write permissions to the PixiEditor data folder.",
-  "ERROR_SAVING_PREFERENCES": "Failed to save preferences",
-  "PREFERRED_RENDERER": "Preferred Render Api",
-  "PERFORMANCE": "Performance",
-  "DISABLE_PREVIEWS": "Disable Previews",
-  "MAX_BILINEAR_CANVAS_SIZE": "Max Bilinear Canvas Size",
-  "MAX_BILINEAR_CANVAS_SIZE_DESC": "Maximum canvas size for bilinear filtering. Set to 0 to disable bilinear filtering. Bilinear filtering improves the quality of the canvas, but can cause performance issues on large canvases.",
-  "INVERT_MASK": "Invert mask",
-  "TOGGLE_TINTING_SELECTION": "Toggle selection tinting",
-  "TOGGLE_TINTING_SELECTION_DESCRIPTIVE": "Toggle selection tinting",
-  "TINT_SELECTION": "Selection tinting",
-  "PAINT_BRUSH_SHAPE_CIRCLE": "Circle",
-  "PAINT_BRUSH_SHAPE_SQUARE": "Square",
-  "BRIGHTNESS_MODE_DEFAULT": "Default",
-  "BRIGHTNESS_MODE_REPEAT": "Repeat",
-  "ROUND_STROKE_CAP": "Round",
-  "BUTT_STROKE_CAP": "Butt",
-  "SQUARE_STROKE_CAP": "Square",
-  "ROUND_STROKE_JOIN": "Round",
-  "MITER_STROKE_JOIN": "Miter",
-  "BEVEL_STROKE_JOIN": "Bevel"
+    "RECENT_FILES": "Recent Files",
+    "OPEN_FILE": "Open file",
+    "NEW_FILE": "New",
+    "RECENT_EMPTY_TEXT": "So much empty space",
+    "LANGUAGE": "Language",
+    "GENERAL": "General",
+    "DISCORD": "Discord",
+    "KEY_BINDINGS": "Key Bindings",
+    "MISC": "Misc",
+    "SHOW_STARTUP_WINDOW": "Show Startup Window",
+    "RECENT_FILE_LENGTH": "Recent file list length",
+    "RECENT_FILE_LENGTH_TOOLTIP": "How many documents are shown under File > Recent. Default: 8",
+    "DEFAULT_NEW_SIZE": "Default new file size",
+    "WIDTH": "Width",
+    "HEIGHT": "Height",
+    "TOOLS": "Tools",
+    "ENABLE_SHARED_TOOLBAR": "Enable shared toolbar",
+    "AUTOMATIC_UPDATES": "Automatic Updates",
+    "CHECK_FOR_UPDATES": "Check updates on startup",
+    "UPDATE_STREAM": "Update stream",
+    "UPDATE_CHANNEL_HELP_TOOLTIP": "Update channels can only be changed in standalone version (downloaded from https://pixieditor.net).\nSteam and Microsoft Store versions handle updates separately.",
+    "DEBUG": "Debug",
+    "ENABLE_DEBUG_MODE": "Enable Debug mode",
+    "OPEN_CRASH_REPORTS_DIR": "Open crash reports directory",
+    "DISCORD_RICH_PRESENCE": "Rich Presence",
+    "ENABLED": "Enabled",
+    "SHOW_IMAGE_NAME": "Show image name",
+    "SHOW_IMAGE_SIZE": "Show image size",
+    "SHOW_LAYER_COUNT": "Show layer count",
+    "FILE": "File",
+    "RECENT": "Recent",
+    "OPEN": "Open",
+    "SAVE_PIXI": "Save (.pixi)",
+    "SAVE_AS_PIXI": "Save as... (.pixi)",
+    "EXPORT_IMG": "Export (.png, .jpg, etc.)",
+    "EDIT": "Edit",
+    "EXIT": "Exit",
+    "PERCENTAGE": "Percentage",
+    "ABSOLUTE": "Absolute",
+    "PRESERVE_ASPECT_RATIO": "Preserve aspect ratio",
+    "ANCHOR_POINT": "Anchor point",
+    "RESIZE_IMAGE": "Resize image",
+    "RESIZE": "Resize",
+    "DOCUMENTATION": "Documentation",
+    "WEBSITE": "Website",
+    "OPEN_WEBSITE": "Open website",
+    "REPOSITORY": "Repository",
+    "OPEN_REPOSITORY": "Open repository",
+    "OPEN_DOCUMENTATION": "Open documentation",
+    "LICENSE": "License",
+    "OPEN_LICENSE": "Open license",
+    "THIRD_PARTY_LICENSES": "Third party licenses",
+    "OPEN_THIRD_PARTY_LICENSES": "Open third party licenses",
+    "APPLY_TRANSFORM": "Apply transform",
+    "INCREASE_TOOL_SIZE": "Increase tool size",
+    "DECREASE_TOOL_SIZE": "Decrease tool size",
+    "UPDATE_READY": "Update is ready to be installed. Do you want to install it now?",
+    "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Couldn't update without admin privileges. Please run PixiEditor as administrator.",
+    "INSUFFICIENT_PERMISSIONS": "Insufficient permissions",
+    "VERSION": "Version {0}",
+    "BUILD_ID": "Build ID: {0}",
+    "OPEN_TEMP_DIR": "Open temp directory",
+    "OPEN_LOCAL_APPDATA_DIR": "Open Local AppData directory",
+    "OPEN_ROAMING_APPDATA_DIR": "Open Roaming AppData directory",
+    "OPEN_INSTALLATION_DIR": "Open installation directory",
+    "DUMP_ALL_COMMANDS": "Dump all commands",
+    "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Dump all commands to a text file",
+    "CRASH": "Crash",
+    "CRASH_APP": "Crash application",
+    "DELETE_USR_PREFS": "Delete user preferences (Roaming AppData)",
+    "DELETE_SHORTCUT_FILE": "Delete shortcut file (Roaming AppData)",
+    "DELETE_EDITOR_DATA": "Delete editor data (Local AppData)",
+    "GENERATE_KEY_BINDINGS_TEMPLATE": "Generate key bindings template",
+    "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Generate key bindings json template",
+    "VALIDATE_SHORTCUT_MAP": "Validate shortcut map",
+    "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Validates shortcut map",
+    "VALIDATION_KEYS_NOTICE_DIALOG": "Empty keys: {0}\nUnknown Commands: {1}",
+    "RESULT": "Result",
+    "CLEAR_RECENT_DOCUMENTS": "Clear recent documents",
+    "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Clear recently opened documents",
+    "OPEN_CMD_DEBUG_WINDOW": "Open command debug window",
+    "PATH_DOES_NOT_EXIST": "{0} does not exist.",
+    "LOCATION_DOES_NOT_EXIST": "Location does not exist.",
+    "FILE_NOT_FOUND": "File not found.",
+    "ARE_YOU_SURE": "Are you sure?",
+    "ARE_YOU_SURE_PATH_FULL_PATH": "Are you sure you want to delete {0}?\nThis data will be lost for all installations.\n(Full Path: {1})",
+    "FAILED_TO_OPEN_FILE": "Failed to open the file",
+    "OLD_FILE_FORMAT": "Old file format",
+    "OLD_FILE_FORMAT_DESCRIPTION": "This .pixi file uses the old format,\n which is no longer supported and can't be opened.",
+    "NOTHING_FOUND": "Nothing found",
+    "EXPORT": "Export",
+    "EXPORT_IMAGE": "Export image",
+    "IMPORT": "Import",
+    "SHORTCUT_TEMPLATES": "Shortcut templates",
+    "RESET_ALL": "Reset all",
+    "LAYER": "Layer",
+    "LAYER_DELETE_ALL_SELECTED": "Delete all selected layers/folders",
+    "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Delete all selected layers and/or folders",
+    "NEW_FOLDER": "New folder",
+    "CREATE_NEW_FOLDER": "Create new folder",
+    "NEW_LAYER": "New layer",
+    "CREATE_NEW_LAYER": "Create new layer",
+    "NEW_IMAGE": "New image",
+    "CREATE_NEW_IMAGE": "Create new image",
+    "SAVE": "Save",
+    "SAVE_AS": "Save as...",
+    "IMAGE": "Image",
+    "SAVE_IMAGE": "Save image",
+    "SAVE_IMAGE_AS": "Save image as new",
+    "DUPLICATE": "Duplicate",
+    "DUPLICATE_SELECTED_LAYER": "Duplicate selected layer",
+    "CREATE_MASK": "Create mask",
+    "DELETE_MASK": "Delete mask",
+    "TOGGLE_MASK": "Toggle mask",
+    "APPLY_MASK": "Apply mask",
+    "TOGGLE_VISIBILITY": "Toggle visibility",
+    "MOVE_MEMBER_UP": "Move member upwards",
+    "MOVE_MEMBER_UP_DESCRIPTIVE": "Move selected layer or folder upwards",
+    "MOVE_MEMBER_DOWN": "Move member downwards",
+    "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Move selected layer or folder downwards",
+    "MERGE_ALL_SELECTED_LAYERS": "Merge all selected layers",
+    "MERGE_WITH_ABOVE": "Merge selected layer with above",
+    "MERGE_WITH_ABOVE_DESCRIPTIVE": "Merge selected layer with the one above it",
+    "MERGE_WITH_BELOW": "Merge selected layer with below",
+    "MERGE_WITH_BELOW_DESCRIPTIVE": "Merge selected layer with the one below it",
+    "ADD_REFERENCE_LAYER": "Add Reference Layer",
+    "DELETE_REFERENCE_LAYER": "Delete reference layer",
+    "TRANSFORM_REFERENCE_LAYER": "Transform reference layer",
+    "TOGGLE_REFERENCE_LAYER_POS": "Toggle reference layer position",
+    "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Toggle reference layer between topmost or most below",
+    "RESET_REFERENCE_LAYER_POS": "Reset reference layer position",
+    "CLIP_CANVAS": "Clip Canvas",
+    "FLIP_IMG_VERTICALLY": "Flip Image Vertically",
+    "FLIP_IMG_HORIZONTALLY": "Flip Image Horizontally",
+    "FLIP_LAYERS_VERTICALLY": "Flip Selected Layers Vertically",
+    "FLIP_LAYERS_HORIZONTALLY": "Flip Selected Layers Horizontally",
+    "ROT_IMG_90": "Rotate Image 90 degrees",
+    "ROT_IMG_180": "Rotate Image 180 degrees",
+    "ROT_IMG_-90": "Rotate Image -90 degrees",
+    "ROT_LAYERS_90": "Rotate Selected Layers 90 degrees",
+    "ROT_LAYERS_180": "Rotate Selected Layers 180 degrees",
+    "ROT_LAYERS_-90": "Rotate Selected Layers -90 degrees",
+    "TOGGLE_VERT_SYMMETRY_AXIS": "Toggle vertical symmetry axis",
+    "TOGGLE_HOR_SYMMETRY_AXIS": "Toggle horizontal symmetry axis",
+    "DELETE_SELECTED": "Delete selected",
+    "DELETE_SELECTED_DESCRIPTIVE": "Delete selected element (layer, pixels, etc.)",
+    "RESIZE_DOCUMENT": "Resize document",
+    "RESIZE_CANVAS": "Resize canvas",
+    "CENTER_CONTENT": "Center content",
+    "CUT": "Cut",
+    "CUT_DESCRIPTIVE": "Cut selected area/layers",
+    "PASTE": "Paste",
+    "PASTE_DESCRIPTIVE": "Paste clipboard contents",
+    "PASTE_AS_NEW_LAYER": "Paste as new layer",
+    "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Paste from clipboard as new layer",
+    "PASTE_REFERENCE_LAYER": "Paste reference layer",
+    "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Paste clipboard contents as reference layer",
+    "PASTE_COLOR": "Paste color",
+    "PASTE_COLOR_DESCRIPTIVE": "Paste color from clipboard",
+    "PASTE_COLOR_SECONDARY": "Paste color as secondary",
+    "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Paste color from clipboard as secondary color",
+    "CLIPBOARD": "Clipboard",
+    "COPY": "Copy",
+    "COPY_DESCRIPTIVE": "Copy to clipboard",
+    "COPY_COLOR_HEX": "Copy primary color (HEX)",
+    "COPY_COLOR_HEX_DESCRIPTIVE": "Copy primary color as HEX code",
+    "COPY_COLOR_RGB": "Copy primary color (RGB)",
+    "COPY_COLOR_RGB_DESCRIPTIVE": "Copy primary color as RGB code",
+    "COPY_COLOR_SECONDARY_HEX": "Copy secondary color (HEX)",
+    "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Copy secondary color as HEX code",
+    "COPY_COLOR_SECONDARY_RGB": "Copy secondary color (RGB)",
+    "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "Copy secondary color as RGB code",
+    "PALETTE_COLORS": "Palette Colors",
+    "REPLACE_SECONDARY_BY_PRIMARY": "Replace secondary color by primary",
+    "REPLACE_PRIMARY_BY_SECONDARY": "Replace primary color by secondary",
+    "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Replace the primary color by the secondary color",
+    "OPEN_PALETTE_BROWSER": "Open palette browser",
+    "OVERWRITE_PALETTE_CONSENT": "Palette '{0}' already exists, do you want to overwrite it?",
+    "PALETTE_EXISTS": "Palette already exists",
+    "REPLACE_PALETTE_CONSENT": "Replace current palette with selected one?",
+    "REPLACE_PALETTE": "Replace current palette",
+    "SELECT_COLOR_1": "Select color 1",
+    "SELECT_COLOR_2": "Select color 2",
+    "SELECT_COLOR_3": "Select color 3",
+    "SELECT_COLOR_4": "Select color 4",
+    "SELECT_COLOR_5": "Select color 5",
+    "SELECT_COLOR_6": "Select color 6",
+    "SELECT_COLOR_7": "Select color 7",
+    "SELECT_COLOR_8": "Select color 8",
+    "SELECT_COLOR_9": "Select color 9",
+    "SELECT_COLOR_10": "Select color 10",
+    "SELECT_TOOL": "Select {0} Tool",
+    "SELECT_COLOR_1_DESCRIPTIVE": "Select the first color in the palette",
+    "SELECT_COLOR_2_DESCRIPTIVE": "Select the second color in the palette",
+    "SELECT_COLOR_3_DESCRIPTIVE": "Select the third color in the palette",
+    "SELECT_COLOR_4_DESCRIPTIVE": "Select the fourth color in the palette",
+    "SELECT_COLOR_5_DESCRIPTIVE": "Select the fifth color in the palette",
+    "SELECT_COLOR_6_DESCRIPTIVE": "Select the sixth color in the palette",
+    "SELECT_COLOR_7_DESCRIPTIVE": "Select the seventh color in the palette",
+    "SELECT_COLOR_8_DESCRIPTIVE": "Select the eighth color in the palette",
+    "SELECT_COLOR_9_DESCRIPTIVE": "Select the ninth color in the palette",
+    "SELECT_COLOR_10_DESCRIPTIVE": "Select the tenth color in the palette",
+    "SWAP_COLORS": "Swap colors",
+    "SWAP_COLORS_DESCRIPTIVE": "Swap primary and secondary colors",
+    "SEARCH": "Search",
+    "COMMAND_SEARCH": "Command search",
+    "OPEN_COMMAND_SEARCH": "Open command search window",
+    "SELECT": "Select",
+    "DESELECT": "Deselect",
+    "INVERT": "Invert",
+    "SELECTION": "Selection",
+    "SELECT_ALL": "Select all",
+    "SELECT_ALL_DESCRIPTIVE": "Select everything",
+    "CLEAR_SELECTION": "Clear selection",
+    "INVERT_SELECTION": "Invert selection",
+    "INVERT_SELECTION_DESCRIPTIVE": "Invert the selection",
+    "TRANSFORM_SELECTED_AREA": "Transform selected area",
+    "NUDGE_SELECTED_LEFT": "Nudge selected object left",
+    "NUDGE_SELECTED_RIGHT": "Nudge selected object right",
+    "NUDGE_SELECTED_UP": "Nudge selected object up",
+    "NUDGE_SELECTED_DOWN": "Nudge selected object down",
+    "MASK_FROM_SELECTION": "New mask from selection",
+    "MASK_FROM_SELECTION_DESCRIPTIVE": "Selection to new mask",
+    "ADD_SELECTION_TO_MASK": "Add selection to mask",
+    "SUBTRACT_SELECTION_FROM_MASK": "Subtract selection from mask",
+    "INTERSECT_SELECTION_MASK": "Intersect selection with mask",
+    "SELECTION_TO_MASK": "Selection to mask",
+    "TO_NEW_MASK": "to new mask",
+    "ADD_TO_MASK": "add to mask",
+    "SUBTRACT_FROM_MASK": "subtract from mask",
+    "INTERSECT_WITH_MASK": "intersect with mask",
+    "STYLUS": "Stylus",
+    "TOGGLE_PEN_MODE": "Toggle pen mode",
+    "UNDO": "Undo",
+    "UNDO_DESCRIPTIVE": "Undo last action",
+    "REDO": "Redo",
+    "REDO_DESCRIPTIVE": "Redo last action",
+    "WINDOWS": "Windows",
+    "TOGGLE_GRIDLINES": "Toggle gridlines",
+    "GRIDLINES_SIZE": "Grid Size",
+    "ZOOM_IN": "Zoom in",
+    "ZOOM_OUT": "Zoom out",
+    "NEW_WINDOW_FOR_IMG": "New window for current image",
+    "CENTER_ACTIVE_VIEWPORT": "Center active viewport",
+    "FLIP_VIEWPORT_HORIZONTALLY": "Flip viewport horizontally",
+    "FLIP_VIEWPORT_VERTICALLY": "Flip viewport vertically",
+    "SETTINGS": "Settings",
+    "OPEN_SETTINGS": "Open settings",
+    "OPEN_SETTINGS_DESCRIPTIVE": "Open settings window",
+    "OPEN_STARTUP_WINDOW": "Open startup window",
+    "OPEN_SHORTCUT_WINDOW": "Open shortcuts window",
+    "OPEN_ABOUT_WINDOW": "Open about window",
+    "OPEN_PREVIEW_WINDOW": "Open preview window",
+    "ERROR": "Error",
+    "INTERNAL_ERROR": "Internal error",
+    "ERROR_SAVE_LOCATION": "Couldn't save the file to the specified location",
+    "ERROR_WHILE_SAVING": "An internal error occured while saving. Please try again.",
+    "UNKNOWN_ERROR_SAVING": "An error occured while saving.",
+    "FAILED_ASSOCIATE_LOSPEC": "Failed to associate Lospec Palette protocol.",
+    "REDDIT": "Reddit",
+    "GITHUB": "GitHub",
+    "YOUTUBE": "YouTube",
+    "DONATE": "Donate",
+    "YES": "Yes",
+    "NO": "No",
+    "CANCEL": "Cancel",
+    "UNNAMED": "Unnamed",
+    "OPEN_COMMAND_DEBUG_WINDOW": "Open command debug window",
+    "DELETE": "Delete",
+    "USER_PREFS": "User preferences (Roaming)",
+    "SHORTCUT_FILE": "Shortcut file (Roaming)",
+    "EDITOR_DATA": "Editor data (Local)",
+    "MOVE_VIEWPORT_TOOLTIP": "Moves viewport. ({0})",
+    "MOVE_VIEWPORT_ACTION_DISPLAY": "Click and move to pan the viewport",
+    "MOVE_TOOL_TOOLTIP": "Select and transform layers ({0}).",
+    "MOVE_TOOL_ACTION_DISPLAY": "Hold mouse to move selected pixels. Hold Ctrl to move all layers.",
+    "PEN_TOOL_TOOLTIP": "Pen. ({0})",
+    "PEN_TOOL_ACTION_DISPLAY": "Click and move to draw.",
+    "PIXEL_PERFECT_SETTING": "Pixel perfect",
+    "RECTANGLE_TOOL_TOOLTIP": "Draws rectangle on canvas ({0}). Hold Shift to draw a square.",
+    "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to draw a rectangle. Hold Shift to draw a square.",
+    "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Click and move to draw a square.",
+    "KEEP_ORIGINAL_IMAGE_SETTING": "Keep original image",
+    "ROTATE_VIEWPORT_TOOLTIP": "Rotates viewport. ({0})",
+    "ROTATE_VIEWPORT_ACTION_DISPLAY": "Click and move to rotate the viewport",
+    "SELECT_TOOL_TOOLTIP": "Selects area. ({0})",
+    "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to select an area. Hold Shift to add to existing selection. Hold Ctrl to subtract from it.",
+    "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Click and move to add to the current selection.",
+    "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Click and move to subtract from the current selection.",
+    "ZOOM_TOOL_TOOLTIP": "Zooms viewport ({0}). Click to zoom in, hold alt and click to zoom out.",
+    "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to zoom. Click to zoom in, hold ctrl and click to zoom out.",
+    "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Click and move to zoom. Click to zoom out, release ctrl and click to zoom in.",
+    "BRIGHTNESS_TOOL_TOOLTIP": "Makes pixels brighter or darker ({0}). Hold Ctrl to make pixels darker.",
+    "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Draw on pixels to make them brighter. Hold Ctrl to darken.",
+    "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Draw on pixels to make them darker. Release Ctrl to brighten.",
+    "COLOR_PICKER_TOOLTIP": "Picks the primary color from the canvas. ({0})",
+    "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Click to pick colors. Hold Ctrl to hide the canvas. Hold Shift to hide the reference layer",
+    "ELLIPSE_TOOL_TOOLTIP": "Draws an ellipse on canvas ({0}). Hold Shift to draw a circle.",
+    "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move mouse to draw an ellipse. Hold Shift to draw a circle.",
+    "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Click and move mouse to draw a circle.",
+    "ERASER_TOOL_TOOLTIP": "Erases color from pixel. ({0})",
+    "ERASER_TOOL_ACTION_DISPLAY": "Click and move to erase.",
+    "FLOOD_FILL_TOOL_TOOLTIP": "Fills area with color. ({0})",
+    "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Press on an area to fill it. Hold down Ctrl to consider all layers.",
+    "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Press on an area to fill it. Release Ctrl to only consider the current layers.",
+    "LASSO_TOOL_TOOLTIP": "Lasso. ({0})",
+    "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to select pixels inside of the lasso. Hold Shift to add to existing selection. Hold Ctrl to subtract from it.",
+    "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Click and move to add pixels inside of the lasso to the selection.",
+    "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Click and move to subtract pixels inside of the lasso from the selection.",
+    "LINE_TOOL_TOOLTIP": "Draws line on canvas ({0}). Hold Shift to enable snapping.",
+    "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Click and move to draw a line. Hold Shift to enable snapping.",
+    "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Click and move mouse to draw a line with snapping enabled.",
+    "MAGIC_WAND_TOOL_TOOLTIP": "Magic Wand ({0}). Flood's the selection",
+    "MAGIC_WAND_ACTION_DISPLAY": "Click to flood the selection.",
+    "PEN_TOOL": "Pen",
+    "BRIGHTNESS_TOOL": "Brightness",
+    "COLOR_PICKER_TOOL": "Color Picker",
+    "ELLIPSE_TOOL": "Ellipse",
+    "ERASER_TOOL": "Eraser",
+    "FLOOD_FILL_TOOL": "Flood Fill",
+    "LASSO_TOOL": "Lasso",
+    "LINE_TOOL": "Line",
+    "MAGIC_WAND_TOOL": "Magic Wand",
+    "MOVE_TOOL": "Move",
+    "MOVE_VIEWPORT_TOOL": "Move Viewport",
+    "RECTANGLE_TOOL": "Rectangle",
+    "ROTATE_VIEWPORT_TOOL": "Rotate Viewport",
+    "SELECT_TOOL_NAME": "Select",
+    "ZOOM_TOOL": "Zoom",
+    "SHAPE_LABEL": "Shape",
+    "MODE_LABEL": "Mode",
+    "SCOPE_LABEL": "Scope",
+    "FILL_SHAPE_LABEL": "Fill shape",
+    "FILL_COLOR_LABEL": "Fill color",
+    "TOOL_SIZE_LABEL": "Tool size",
+    "STRENGTH_LABEL": "Strength",
+    "NEW": "New",
+    "ADD": "Add",
+    "SUBTRACT": "Subtract",
+    "INTERSECT": "Intersect",
+    "RECTANGLE": "Rectangle",
+    "CIRCLE": "Circle",
+    "ABOUT": "About",
+    "MINIMIZE": "Minimize",
+    "RESTORE": "Restore",
+    "MAXIMIZE": "Maximize",
+    "CLOSE": "Close",
+    "EXPORT_SIZE_HINT": "If you want to share the image, try {0}% for the best clarity",
+    "CREATE": "Create",
+    "BASE_LAYER_NAME": "Base layer",
+    "ENABLE_MASK": "Enable mask",
+    "SELECTED_AREA_EMPTY": "Selected area is empty",
+    "NOTHING_TO_COPY": "Nothing to copy",
+    "REFERENCE_LAYER_PATH": "Reference layer path",
+    "FLIP": "Flip",
+    "ROTATION": "Rotation",
+    "ROT_IMG_90_D": "Rotate Image 90°",
+    "ROT_IMG_180_D": "Rotate Image 180°",
+    "ROT_IMG_-90_D": "Rotate Image -90°",
+    "ROT_LAYERS_90_D": "Rotate Selected Layers 90°",
+    "ROT_LAYERS_180_D": "Rotate Selected Layers 180°",
+    "ROT_LAYERS_-90_D": "Rotate Selected Layers -90°",
+    "UNNAMED_PALETTE": "Unnamed Palette",
+    "CLICK_SELECT_PRIMARY": "Click to select as main color.",
+    "PEN_MODE": "Pen mode",
+    "VIEW": "View",
+    "HORIZONTAL_LINE_SYMMETRY": "Horizontal line symmetry",
+    "VERTICAL_LINE_SYMMETRY": "Vertical line symmetry",
+    "COLOR_PICKER_TITLE": "Color Picker",
+    "COLOR_SLIDERS_TITLE": "Color Sliders",
+    "PALETTE_TITLE": "Palette",
+    "SWATCHES_TITLE": "Swatches",
+    "LAYERS_TITLE": "Layers",
+    "PREVIEW_TITLE": "Preview",
+    "NORMAL_BLEND_MODE": "Normal",
+    "ERASE_BLEND_MODE": "Erase",
+    "DARKEN_BLEND_MODE": "Darken",
+    "MULTIPLY_BLEND_MODE": "Multiply",
+    "COLOR_BURN_BLEND_MODE": "Color burn",
+    "LIGHTEN_BLEND_MODE": "Lighten",
+    "SCREEN_BLEND_MODE": "Screen",
+    "COLOR_DODGE_BLEND_MODE": "Color dodge",
+    "OVERLAY_BLEND_MODE": "Overlay",
+    "SOFT_LIGHT_BLEND_MODE": "Soft light",
+    "HARD_LIGHT_BLEND_MODE": "Hard light",
+    "DIFFERENCE_BLEND_MODE": "Difference",
+    "EXCLUSION_BLEND_MODE": "Exclusion",
+    "HUE_BLEND_MODE": "Hue",
+    "SATURATION_BLEND_MODE": "Saturation",
+    "LUMINOSITY_BLEND_MODE": "Luminosity",
+    "COLOR_BLEND_MODE": "Color",
+    "NOT_SUPPORTED_BLEND_MODE": "Not supported",
+    "RESTART": "Restart",
+    "SORT_BY": "Sort by",
+    "NAME": "Name",
+    "COLORS": "Colors",
+    "DEFAULT": "Default",
+    "ALPHABETICAL": "Alphabetical",
+    "COLOR_COUNT": "Color count",
+    "ANY": "Any",
+    "MAX": "Max",
+    "MIN": "Min",
+    "EXACT": "Exact",
+    "ASCENDING": "Ascending",
+    "DESCENDING": "Descending",
+    "NAME_IS_TOO_LONG": "The name is too long",
+    "STOP_IT_TEXT1": "That's enough. Tidy up your file names.",
+    "STOP_IT_TEXT2": "Can you stop copying these names please?",
+    "REPLACER_TOOLTIP": "Right click on palette color and choose 'Replace' or drop it here.",
+    "CLICK_TO_CHOOSE_COLOR": "Click to choose the color",
+    "REPLACE_COLOR": "Replace color",
+    "PALETTE_COLOR_TOOLTIP": "Click to select as main color. Drag and drop onto another palette color to swap them.",
+    "ADD_FROM_SWATCHES": "Add from swatches",
+    "ADD_COLOR_TO_PALETTE": "Add color to palette",
+    "USE_IN_CURRENT_IMAGE": "Use in current image",
+    "ADD_TO_FAVORITES": "Add to favorites",
+    "BROWSE_PALETTES": "Browse palettes",
+    "LOAD_PALETTE": "Load palette",
+    "SAVE_PALETTE": "Save palette",
+    "FAVORITES": "Favorites",
+    "ADD_FROM_CURRENT_PALETTE": "Add from current palette",
+    "OPEN_PALETTES_DIR_TOOLTIP": "Open palettes directory in explorer",
+    "BROWSE_ON_LOSPEC_TOOLTIP": "Browse palettes on Lospec",
+    "IMPORT_FROM_FILE_TOOLTIP": "Import from file",
+    "TOP_LEFT": "Top left",
+    "TOP_CENTER": "Top center",
+    "TOP_RIGHT": "Top right",
+    "MIDDLE_LEFT": "Middle left",
+    "MIDDLE_CENTER": "Middle center",
+    "MIDDLE_RIGHT": "Middle right",
+    "BOTTOM_LEFT": "Bottom left",
+    "BOTTOM_CENTER": "Bottom center",
+    "BOTTOM_RIGHT": "Bottom right",
+    "CLIP_TO_BELOW": "Clip to member below",
+    "MOVE_UPWARDS": "Move upwards",
+    "MOVE_DOWNWARDS": "Move downwards",
+    "MERGE_SELECTED": "Merge selected",
+    "LOCK_TRANSPARENCY": "Lock transparency",
+    "COULD_NOT_LOAD_PALETTE": "Couldn't fetch palettes",
+    "NO_PALETTES_FOUND": "No palettes found.",
+    "LOSPEC_LINK_TEXT": "I heard you can find some here: lospec.com/palette-list",
+    "PALETTE_BROWSER": "Palette Browser",
+    "DELETE_PALETTE_CONFIRMATION": "Are you sure you want to delete this palette? This cannot be undone.",
+    "SHORTCUTS_IMPORTED": "Shortcuts from {0} were imported successfully.",
+    "SHORTCUT_PROVIDER_DETECTED": "We've detected, that you have {0} installed. Do you want to import shortcuts from it?",
+    "IMPORT_INSTALLATION_OPTION1": "Import from installation",
+    "IMPORT_INSTALLATION_OPTION2": "Use defaults",
+    "IMPORT_FROM_TEMPLATE": "Import from template",
+    "SHORTCUTS_IMPORTED_SUCCESS": "Shortcuts were imported successfully.",
+    "WARNING_RESET_SHORTCUTS_DEFAULT": "Are you sure you want to reset all shortcuts to their default value?",
+    "SUCCESS": "Success",
+    "WARNING": "Warning",
+    "ERROR_IMPORTING_IMAGE": "An error occured while importing the image.",
+    "SHORTCUTS_CORRUPTED_TITLE": "Corrupted shortcuts file",
+    "SHORTCUTS_CORRUPTED": "Shortcuts file was corrupted, resetting to default.",
+    "FAILED_DOWNLOAD_PALETTE": "Failed to download palette",
+    "FILE_INCORRECT_FORMAT": "The file was not in a correct format",
+    "INVALID_FILE": "Invalid file",
+    "SHORTCUTS_FILE_INCORRECT_FORMAT": "Shortcuts file was not in a correct format",
+    "UNSUPPORTED_FILE_FORMAT": "This file format is unsupported",
+    "ALREADY_ASSIGNED": "Already assigned",
+    "REPLACE": "Replace",
+    "SWAP": "Swap",
+    "SHORTCUT_ALREADY_ASSIGNED_SWAP": "This shortcut is already assigned to '{0}'\nDo you want to replace the existing shortcut or swap the two?",
+    "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "This shortcut is already assigned to '{0}'\nDo you want to replace the existing shortcut?",
+    "UNSAVED_CHANGES": "Unsaved changes",
+    "DOCUMENT_MODIFIED_SAVE": "The document has been modified. Do you want to save changes?",
+    "PROJECT_MAINTAINERS": "Project Maintainers",
+    "OTHER_AWESOME_CONTRIBUTORS": "And other awesome contributors",
+    "HELP": "Help",
+    "STOP_IT_TEXT3": "No, really, stop it.",
+    "STOP_IT_TEXT4": "Don't you have anything better to do?",
+    "LINEAR_DODGE_BLEND_MODE": "Linear dodge (Add)",
+    "PRESS_ANY_KEY": "Press any key",
+    "NONE_SHORTCUT": "None",
+    "REFERENCE": "Reference",
+    "PUT_REFERENCE_LAYER_ABOVE": "Put reference layer above",
+    "PUT_REFERENCE_LAYER_BELOW": "Put reference layer below",
+    "TOGGLE_VERTICAL_SYMMETRY": "Toggle vertical symmetry",
+    "TOGGLE_HORIZONTAL_SYMMETRY": "Toggle horizontal symmetry",
+    "RESET_VIEWPORT": "Reset viewport",
+    "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Click and hold mouse to move pixels in selected layers.",
+    "CTRL_KEY": "Ctrl",
+    "SHIFT_KEY": "Shift",
+    "ALT_KEY": "Alt",
+    "RENAME": "Rename",
+    "PIXEL_UNIT": "px",
+    "OPEN_LOCALIZATION_DEBUG_WINDOW": "Open Localization Debug Window",
+    "FORCE_OTHER_FLOW_DIRECTION": "Force other flow direction",
+    "API_KEY": "API Key",
+    "LOCALIZATION_VIEW_TYPE": "Localization View Type",
+    "LOAD_LANGUAGE_FROM_FILE": "Load language from file",
+    "LOG_IN": "Log in",
+    "SYNC": "Sync",
+    "NOT_LOGGED_IN": "Not logged in",
+    "POE_EDITOR_ERROR": "POEditor Error: {0} {1}",
+    "HTTP_ERROR_MESSAGE": "HTTP Error: {0} {1}",
+    "LOGGED_IN": "Logged in",
+    "SYNCED_SUCCESSFULLY": "Synced successfully",
+    "EXCEPTION_ERROR": "Exception: {0}",
+    "DROP_PALETTE": "Drop palette here",
+    "SECURITY_ERROR": "Security error",
+    "SECURITY_ERROR_MSG": "No rights to write to the specified location.",
+    "IO_ERROR": "IO error",
+    "IO_ERROR_MSG": "Error while writing to disk.",
+    "COULD_NOT_SAVE_PALETTE": "There was an error while saving the palette.",
+    "NO_COLORS_TO_SAVE": "There are no colors to save.",
+    "CANVAS": "Canvas",
+    "SINGLE_LAYER": "Single Layer",
+    "CHOOSE": "Choose",
+    "REMOVE": "Remove",
+    "FILE_FORMAT_NOT_ASEPRITE_KEYS": "File is not a \".aseprite-keys\" file",
+    "FILE_HAS_INVALID_SHORTCUT": "The file contains an invalid shortcut",
+    "FILE_EXTENSION_NOT_SUPPORTED": "The file type '{0}' is not supported",
+    "ERROR_READING_FILE": "Error while reading the file",
+    "DISCARD_PALETTE": "Discard palette",
+    "DISCARD_PALETTE_CONFIRMATION": "Are you sure you want to discard current palette? This cannot be undone.",
+    "IMPORT_AS_NEW_LAYER": "Import as new layer",
+    "PASTE_AS_PRIMARY_COLOR": "Paste as primary color",
+    "IMPORT_AS_NEW_FILE": "Import as new file",
+    "IMPORT_PALETTE_FILE": "Import palette file",
+    "IMPORT_MULTIPLE_PALETTE_COLORS": "Import colors into palette",
+    "IMPORT_SINGLE_PALETTE_COLOR": "Import color into palette",
+    "IMPORT_AS_REFERENCE_LAYER": "Import as reference layer",
+    "NAVIGATOR_PICK_ACTION_DISPLAY": "Right-click to pick color, Shift-right-click to copy color to clipboard",
+    "OPEN_FILE_FROM_CLIPBOARD": "Open from clipboard",
+    "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Open from clipboard",
+    "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",
+    "SHORTCUTS_TITLE": "Shortcuts",
+    "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to scale from center. 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 Ctrl and drag a handle to scale from center. 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 Ctrl and drag a handle to scale from center. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+    "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to scale from center. Hold Shift to scale proportionally.",
+    "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",
+    "EXPORT_SAVE_TITLE": "Choose a location to save the image",
+    "BROWSE_DIRECTORY": "Browse Directory",
+    "CRASH_NOT_ALL_DOCUMENTS_RECOVERED_TITLE": "Not all documents were recovered",
+    "CRASH_NOT_ALL_DOCUMENTS_RECOVERED": "Could not recover all documents. Git gud at saving your work.",
+    "SEND": "Send report",
+    "OPEN_DOCKABLE_MENU": "Open Tab",
+    "TIMELINE_TITLE": "Timeline",
+    "EXPORT_IMAGE_HEADER": "Image",
+    "EXPORT_ANIMATION_HEADER": "Animation",
+    "EXPORT_SPRITESHEET_HEADER": "Spritesheet",
+    "PIXI_FILE": "PixiEditor Files",
+    "PNG_FILE": "PNG Images",
+    "JPEG_FILE": "JPEG Images",
+    "WEBP_FILE": "WebP Images",
+    "GIF_FILE": "GIFs",
+    "BMP_FILE": "BMP Images",
+    "IMAGE_FILES": "Image Files",
+    "VIDEO_FILES": "Video Files",
+    "OPEN_TYPE_FONT": "OpenType Fonts",
+    "TRUE_TYPE_FONT": "TrueType Fonts",
+    "SVG_FILE": "Scalable Vector Graphics",
+    "MP4_FILE": "MP4 Videos",
+    "COLUMNS": "Columns",
+    "ROWS": "Rows",
+    "BACKGROUND": "Background",
+    "OPACITY": "Opacity",
+    "IS_VISIBLE": "Is visible",
+    "BLEND_MODE": "Blend mode",
+    "MASK": "Mask",
+    "MASK_IS_VISIBLE": "Mask is visible",
+    "OUTPUT": "Output",
+    "INPUT": "Input",
+    "NODE_GRAPH_TITLE": "Graph View",
+    "CONTENT": "Content",
+    "RADIUS": "Radius",
+    "STROKE_COLOR": "Stroke color",
+    "STROKE_WIDTH": "Stroke width",
+    "FILL_COLOR": "Fill color",
+    "TOP": "Top",
+    "BOTTOM": "Bottom",
+    "CHANNELS_DOCK_TITLE": "Channels",
+    "RED": "Red",
+    "GREEN": "Green",
+    "BLUE": "Blue",
+    "ALPHA": "Alpha",
+    "COLOR": "Color",
+    "COORDINATE": "Coordinate",
+    "VECTOR": "Vector",
+    "MATRIX": "Matrix",
+    "TRANSFORMED": "Transformed",
+    "GRAYSCALE": "Grayscale",
+    "CLAMP": "Clamp",
+    "SIZE": "Size",
+    "NOISE": "Noise",
+    "SCALE": "Scale",
+    "SEED": "Seed",
+    "KERNEL": "Kernel",
+    "KERNEL_VIEW_SUM": "Sum:",
+    "KERNEL_VIEW_SUM_TOOLTIP": "The sum of all values. You likely want to aim for a value of 1 or 0",
+    "GAIN": "Gain",
+    "BIAS": "Bias",
+    "TILE_MODE": "Tile Mode",
+    "ON_ALPHA": "On Alpha",
+    "OUTPUT_NODE": "Output",
+    "NOISE_NODE": "Noise",
+    "ELLIPSE_NODE": "Ellipse",
+    "LINE_NODE": "Line",
+    "LINE_START": "Start",
+    "LINE_END": "End",
+    "RECTANGLE_NODE": "Rectangle",
+    "CREATE_IMAGE_NODE": "Create Image",
+    "FOLDER_NODE": "Folder",
+    "IMAGE_LAYER_NODE": "Image Layer",
+    "KERNEL_FILTER_NODE": "Kernel Filter",
+    "MATH_NODE": "Math",
+    "COLOR_MATRIX_TRANSFORM_FILTER_NODE": "Matrix Transform Filter",
+    "MERGE_NODE": "Merge",
+    "MODIFY_IMAGE_LEFT_NODE": "Begin Modify Image",
+    "MODIFY_IMAGE_RIGHT_NODE": "End Modify Image",
+    "COMBINE_CHANNELS_NODE": "Combine Channels",
+    "COMBINE_COLOR_NODE": "Combine Color",
+    "COMBINE_VECD_NODE": "Combine Vector",
+    "COMBINE_VECI_NODE": "Combine Integer Vector",
+    "SEPARATE_CHANNELS_NODE": "Separate Channels",
+    "SEPARATE_VECD_NODE": "Separate Vector",
+    "SEPARATE_VECI_NODE": "Separate Integer Vector",
+    "SEPARATE_COLOR_NODE": "Separate Color",
+    "TIME_NODE": "Time",
+    "FILTERS": "Filters",
+    "PREVIOUS": "Previous",
+    "FILL": "Fill",
+    "MATH_MODE": "Math Mode",
+    "NOISE_TYPE": "Noise Type",
+    "OCTAVES": "Octaves",
+    "ACTIVE_FRAME": "Active Frame",
+    "NORMALIZED_TIME": "Normalized Time",
+    "WITHOUT_FILTERS": "Without filters",
+    "RAW_LAYER_OUTPUT": "Raw",
+    "EXAMPLE_FILES": "Example Files",
+    "PROCEDURAL_GENERATION": "Procedural Animation",
+    "POND_EXAMPLE": "Pond",
+    "TREE_EXAMPLE": "Windy Tree",
+    "OUTLINE_EXAMPLE": "Automatic Outline",
+    "BETA_ANIMATIONS": "Animations",
+    "SLIME_EXAMPLE": "Animated Slime",
+    "APPLY_FILTER_NODE": "Apply Filter",
+    "FILTER": "Filter",
+    "LERP_NODE": "Lerp",
+    "GRAYSCALE_FILTER_NODE": "Grayscale Filter",
+    "FROM": "From",
+    "TO": "To",
+    "TIME": "Time",
+    "WARMING_UP": "Warming up",
+    "RENDERING_FRAME": "Generating Frame {0}/{1}",
+    "RENDERING_VIDEO": "Rendering Video",
+    "FINISHED": "Finished",
+    "GENERATING_SPRITE_SHEET": "Generating Sprite Sheet",
+    "RENDERING_IMAGE": "Rendering Image",
+    "PROGRESS_POPUP_TITLE": "Progress",
+    "POINTS": "Points",
+    "MIN_DISTANCE": "Min. Distance",
+    "MAX_POINTS": "Max. Points",
+    "DISTRIBUTE_POINTS": "Distribute points",
+    "REMOVE_CLOSE_POINTS": "Remove close points",
+    "RASTERIZE_SHAPE": "Rasterize Shape",
+    "MODE": "Mode",
+    "Factor": "Factor",
+    "NORMALIZE": "Normalize",
+    "WEIGHT_FACTOR": "Weight",
+    "STARS_EXAMPLE": "Stars",
+    "ADD_EMPTY_FRAME": "Add empty frame",
+    "DUPLICATE_FRAME": "Duplicate frame",
+    "DELETE_FRAME": "Remove frame",
+    "DEFAULT_MEMBER_NAME": "New Element",
+    "NO_PARSER_FOUND": "No file parser found for extension '{0}'",
+    "SELECT_FILE_FORMAT": "Select file format",
+    "SELECT_FILE_FORMAT_DESCRIPTION": "Multiple file types of the same format are supported. Please select the one you want to use.",
+    "NEW_PALETTE_FILE": "palette",
+    "ISLAND_EXAMPLE": "Islands",
+    "ONION_FRAMES_COUNT": "Onion frames",
+    "ONION_OPACITY": "Onion opacity",
+    "TOGGLE_ONION_SKINNING": "Toggle onion skinning",
+    "CHANGE_ACTIVE_FRAME_PREVIOUS": "Change active frame to previous",
+    "CHANGE_ACTIVE_FRAME_NEXT": "Change active frame to next",
+    "TOGGLE_ANIMATION": "Toggle animation",
+    "NEW_FROM_CLIPBOARD": "New from clipboard",
+    "OFFSET": "Offset",
+    "SHAPE": "Shape",
+    "STRUCTURE": "Structure",
+    "NUMBERS": "Numbers",
+    "OPERATIONS": "Operations",
+    "GENERATION": "Generation",
+    "NUMBER": "Number",
+    "ANIMATION": "Animation",
+    "SAMPLE_IMAGE": "Sample Image",
+    "POSITION": "Position",
+    "MATH_ADD": "Add",
+    "MATH_SUBTRACT": "Subtract",
+    "MULTIPLY": "Multiply",
+    "DIVIDE": "Divide",
+    "SIN": "Sin",
+    "COS": "Cos",
+    "TAN": "Tan",
+    "GREATER_THAN": "Greater than",
+    "LESS_THAN": "Less than",
+    "LESS_THAN_OR_EQUAL": "Less than or equal",
+    "COMPARE": "Compare",
+    "MATH_POWER": "Power",
+    "LOGARITHM": "Logarithm",
+    "NATURAL_LOGARITHM": "Natural logarithm",
+    "ROOT": "Root",
+    "INVERSE_ROOT": "Inverse root",
+    "FRACTION": "Fraction",
+    "NEGATE": "Negate",
+    "FLOOR": "Floor",
+    "CEIL": "Ceil",
+    "ROUND": "Round",
+    "MODULO": "Modulo",
+    "STEP": "Step",
+    "SMOOTH_STEP": "Smoothstep",
+    "PIXEL_ART_TOOLSET": "Pixel Art",
+    "VECTOR_TOOLSET": "Vector",
+    "VECTOR_LAYER": "Vector Layer",
+    "STROKE_COLOR_LABEL": "Stroke",
+    "SYNC_WITH_PRIMARY_COLOR_LABEL": "Sync with primary color",
+    "RASTERIZE": "Rasterize",
+    "RASTERIZE_ACTIVE_LAYER": "Rasterize active layer",
+    "RASTERIZE_ACTIVE_LAYER_DESCRIPTIVE": "Convert/Rasterize the active layer into a image (raster) layer.",
+    "NEW_ELLIPSE_LAYER_NAME": "Ellipse",
+    "NEW_RECTANGLE_LAYER_NAME": "Rectangle",
+    "NEW_LINE_LAYER_NAME": "Line",
+    "RENDER_OUTPUT": "Render Output",
+    "PAINT_TOOLSET": "Painting",
+    "HARDNESS_SETTING": "Hardness",
+    "SPACING_SETTING": "Spacing",
+    "ANTI_ALIASING_SETTING": "Anti-aliasing",
+    "TOLERANCE_LABEL": "Tolerance",
+    "TOGGLE_SNAPPING": "Toggle snapping",
+    "HIGH_RES_PREVIEW": "High Resolution Preview",
+    "LOW_RES_PREVIEW": "Document Resolution Preview",
+    "TOGGLE_HIGH_RES_PREVIEW": "Toggle high resolution preview",
+    "FACTOR": "Factor",
+    "PATH_TOOL": "Path",
+    "PATH_TOOL_TOOLTIP": "Create vector paths and curves ({0}).",
+    "PATH_TOOL_ACTION_DISPLAY": "Click to add a point.",
+    "PATH_TOOL_ACTION_DISPLAY_CTRL": "Click on existing point and drag to make it a curve. Tap on a control point to select it.",
+    "PATH_TOOL_ACTION_DISPLAY_SHIFT": "Click to create a new layer.",
+    "PATH_TOOL_ACTION_DISPLAY_CTRL_SHIFT": "Tap on a control point to add it to the selection.",
+    "PATH_TOOL_ACTION_DISPLAY_ALT": "Click on a control point and move to adjust only one side of the curve.",
+    "DEFAULT_PATH_LAYER_NAME": "Path",
+    "DELETE_NODES": "Delete nodes",
+    "DELETE_NODES_DESCRIPTIVE": "Delete selected nodes",
+    "DELETE_CELS": "Delete cels",
+    "DELETE_CELS_DESCRIPTIVE": "Delete selected cels",
+    "COPY_COLOR_TO_CLIPBOARD": "Copy color to clipboard",
+    "VIEWPORT_ROTATION": "Viewport rotation",
+    "NEXT_TOOL_SET": "Next tool set",
+    "PREVIOUS_TOOL_SET": "Previous tool set",
+    "FILL_MODE": "Fill mode",
+    "USE_LINEAR_SRGB_PROCESSING": "Use linear sRGB for processing colors",
+    "USE_LINEAR_SRGB_PROCESSING_DESC": "Convert document using sRGB blending mode to linear sRGB for processing colors. This will affect the colors of the document, but will make blending more accurate.",
+    "FILL_TYPE_WINDING": "Winding",
+    "FILL_TYPE_EVEN_ODD": "Even Odd",
+    "FILL_TYPE_INVERSE_WINDING": "Inverse Winding",
+    "FILL_TYPE_INVERSE_EVEN_ODD": "Inverse Even Odd",
+    "STROKE_CAP": "Stroke Cap",
+    "STROKE_JOIN": "Stroke Join",
+    "COPY_VISIBLE": "Copy visible",
+    "COPY_VISIBLE_DESCRIPTIVE": "Copy visible pixels",
+    "COLOR_SAMPLE_MODE": "Sample mode",
+    "CREATE_CEL": "Create cel",
+    "CREATE_CEL_DESCRIPTIVE": "Create a new cel",
+    "DUPLICATE_CEL": "Duplicate cel",
+    "DUPLICATE_CEL_DESCRIPTIVE": "Duplicate cel in the current frame",
+    "RENDER_PREVIEW": "Render preview",
+    "OUTPUT_NAME": "Output name",
+    "CUSTOM_OUTPUT_NODE": "Custom Output",
+    "TOGGLE_HUD": "Toggle HUD",
+    "OPEN_TIMELINE": "Open timeline",
+    "OPEN_NODE_GRAPH": "Open node graph",
+    "TOGGLE_PLAY": "Play/Pause animation",
+    "COPY_NODES": "Copy nodes",
+    "COPY_NODES_DESCRIPTIVE": "Copy selected nodes",
+    "PASTE_NODES": "Paste nodes",
+    "PASTE_NODES_DESCRIPTIVE": "Paste copied nodes",
+    "COPY_CELS": "Copy cels",
+    "COPY_CELS_DESCRIPTIVE": "Copy selected cels",
+    "TOGGLE_ONION_SKINNING_DESCRIPTIVE": "Toggle onion skinning",
+    "VALUE": "Value",
+    "TARGET": "Target",
+    "EPSILON": "Epsilon",
+    "PRESERVE_ALPHA": "Preserve alpha",
+    "BLUR_FILTER_NODE": "Gaussian Blur Filter",
+    "LENGTH": "Length",
+    "GREATER_THAN_OR_EQUAL": "Greater than or equal",
+    "COLOR_NODE": "Color",
+    "CONVERT_TO_CURVE": "Convert to curve",
+    "CONVERT_TO_CURVE_DESCRIPTIVE": "Convert selected vector layer to a curve/path",
+    "FONT_FILES": "Font Files",
+    "UNIT_PT": "pt",
+    "FONT_LABEL": "Family",
+    "FONT_SIZE_LABEL": "Size",
+    "SPACING_LABEL": "Spacing",
+    "TEXT_TOOL": "Text",
+    "MISSING_FONT": "Missing font",
+    "TEXT_LAYER_NAME": "Text",
+    "TEXT_TOOL_TOOLTIP": "Create text ({0}).",
+    "BOLD_TOOLTIP": "Bold",
+    "ITALIC_TOOLTIP": "Italic",
+    "CUSTOM_FONT": "Custom font",
+    "DUMP_GPU_DIAGNOSTICS": "Dump GPU diagnostics",
+    "USE_SRGB_PROCESSING": "Use sRGB for processing colors",
+    "USE_SRGB_PROCESSING_DESC": "Convert document using linear sRGB to sRGB for processing colors. This will affect the colors of the document.",
+    "TEXT_NODE": "Text",
+    "TEXT_LABEL": "Text",
+    "TEXT_ON_PATH_NODE": "Text on Path",
+    "HIGH_DPI_RENDERING": "High DPI Rendering",
+    "THICKNESS": "Thickness",
+    "TYPE": "Type",
+    "EFFECTS": "Effects",
+    "OUTLINE_NODE": "Outline",
+    "SHADER_CODE": "Shader Code",
+    "SHADER_NODE": "Shader",
+    "FAILED_TO_OPEN_EDITABLE_STRING_TITLE": "Failed to open file",
+    "FAILED_TO_OPEN_EDITABLE_STRING_MESSAGE": "Failed to edit this string in external editor. Reason: {0}",
+    "STRING_EDIT_IN_DEFAULT_APP": "Edit in default app",
+    "STRING_OPEN_IN_FOLDER": "Open in folder",
+    "DISCO_BALL_EXAMPLE": "Disco Ball",
+    "COLOR_SPACE": "Color Space",
+    "PHOTO_EXAMPLES": "Photo",
+    "MASK_EXAMPLE": "Mask",
+    "SHADOW_NODE": "Shadow Filter",
+    "INPUT_MATRIX": "Input Matrix",
+    "OUTPUT_MATRIX": "Output Matrix",
+    "CENTER": "Center",
+    "CANVAS_POSITION": "Canvas Position",
+    "CENTER_POSITION": "Center Position",
+    "TILE_MODE_X": "Tile Mode X",
+    "TILE_MODE_Y": "Tile Mode Y",
+    "TILE_NODE": "Tile",
+    "SKEW": "Skew",
+    "OFFSET_NODE": "Offset",
+    "SKEW_NODE": "Skew",
+    "SCALE_NODE": "Scale",
+    "ROTATE_NODE": "Rotate",
+    "TRANSFORM_NODE": "Transform",
+    "UNIT": "Unit",
+    "ANGLE": "Angle",
+    "DOCUMENT_INFO_NODE": "Document Info",
+    "MASK_NODE": "Mask",
+    "SEPIA_FILTER_NODE": "Sepia Filter",
+    "INTENSITY": "Intensity",
+    "INVERT_FILTER_NODE": "Invert Filter",
+    "COLOR_ADJUSTMENTS_FILTER": "Color Adjustments Filter",
+    "ADJUST_BRIGHTNESS": "Adjust Brightness",
+    "ADJUST_CONTRAST": "Adjust Contrast",
+    "ADJUST_SATURATION": "Adjust Saturation",
+    "ADJUST_TEMPERATURE": "Adjust Temperature",
+    "ADJUST_TINT": "Adjust Tint",
+    "ADJUST_HUE": "Adjust Hue",
+    "HUE_VALUE": "Hue",
+    "SATURATION_VALUE": "Saturation",
+    "BRIGHTNESS_VALUE": "Brightness",
+    "CONTRAST_VALUE": "Contrast",
+    "TEMPERATURE_VALUE": "Temperature",
+    "TINT_VALUE": "Tint",
+    "UNEXPECTED_SHUTDOWN": "Unexpected shutdown",
+    "UNEXPECTED_SHUTDOWN_MSG": "PixiEditor was unexpectedly shut down. We've loaded latest autosave of your files.",
+    "OK": "OK",
+    "OPEN_AUTOSAVES": "Browse Autosaves",
+    "AUTOSAVE_SETTINGS_HEADER": "Autosave",
+    "AUTOSAVE_SETTINGS_SAVE_STATE": "Reopen last files on startup",
+    "AUTOSAVE_SETTINGS_PERIOD": "Autosave period",
+    "AUTOSAVE_ENABLED": "Autosave enabled",
+    "MINUTE_UNIVERSAL": "min",
+    "AUTOSAVE_SETTINGS_SAVE_USER_FILE": "Autosave to selected file",
+    "LOAD_LAZY_FILE_MESSAGE": "To improve startup time, PixiEditor didn't load this file. Click the button below to load it.",
+    "EASING_NODE": "Easing",
+    "EASING_TYPE": "Easing Type",
+    "OPEN_DIRECTORY_ON_EXPORT": "Open directory on export",
+    "ERROR_LOOP_DETECTED_MESSAGE": "Moving this layer will create a loop. Fix it in the Node Graph.",
+    "LINEAR_EASING_TYPE": "Linear",
+    "IN_SINE_EASING_TYPE": "In Sine",
+    "OUT_SINE_EASING_TYPE": "Out Sine",
+    "IN_OUT_SINE_EASING_TYPE": "In Out Sine",
+    "IN_QUAD_EASING_TYPE": "In Quad",
+    "OUT_QUAD_EASING_TYPE": "Out Quad",
+    "IN_OUT_QUAD_EASING_TYPE": "In Out Quad",
+    "IN_CUBIC_EASING_TYPE": "In Cubic",
+    "OUT_CUBIC_EASING_TYPE": "Out Cubic",
+    "IN_OUT_CUBIC_EASING_TYPE": "In Out Cubic",
+    "IN_QUART_EASING_TYPE": "In Quart",
+    "OUT_QUART_EASING_TYPE": "Out Quart",
+    "IN_OUT_QUART_EASING_TYPE": "In Out Quart",
+    "IN_QUINT_EASING_TYPE": "In Quint",
+    "OUT_QUINT_EASING_TYPE": "Out Quint",
+    "IN_OUT_QUINT_EASING_TYPE": "In Out Quint",
+    "IN_EXPO_EASING_TYPE": "In Expo",
+    "OUT_EXPO_EASING_TYPE": "Out Expo",
+    "IN_OUT_EXPO_EASING_TYPE": "In Out Expo",
+    "IN_CIRC_EASING_TYPE": "In Circ",
+    "OUT_CIRC_EASING_TYPE": "Out Circ",
+    "IN_OUT_CIRC_EASING_TYPE": "In Out Circ",
+    "IN_BACK_EASING_TYPE": "In Back",
+    "OUT_BACK_EASING_TYPE": "Out Back",
+    "IN_OUT_BACK_EASING_TYPE": "In Out Back",
+    "IN_ELASTIC_EASING_TYPE": "In Elastic",
+    "OUT_ELASTIC_EASING_TYPE": "Out Elastic",
+    "IN_OUT_ELASTIC_EASING_TYPE": "In Out Elastic",
+    "IN_BOUNCE_EASING_TYPE": "In Bounce",
+    "OUT_BOUNCE_EASING_TYPE": "Out Bounce",
+    "IN_OUT_BOUNCE_EASING_TYPE": "In Out Bounce",
+    "R_G_B_COMBINE_SEPARATE_COLOR_MODE": "RGB",
+    "H_S_V_COMBINE_SEPARATE_COLOR_MODE": "HSV",
+    "H_S_L_COMBINE_SEPARATE_COLOR_MODE": "HSL",
+    "COLOR_MANAGED_COLOR_SAMPLE_MODE": "Color Managed",
+    "RAW_COLOR_SAMPLE_MODE": "Raw",
+    "FRACTAL_PERLIN_NOISE_TYPE": "Perlin",
+    "TURBULENCE_PERLIN_NOISE_TYPE": "Turbulence",
+    "VORONOI_NOISE_TYPE": "Voronoi",
+    "VORONOI_FEATURE": "Feature",
+    "F1_VORONOI_FEATURE": "F1",
+    "F2_VORONOI_FEATURE": "F2",
+    "F2_MINUS_F1_VORONOI_FEATURE": "F2-F1",
+    "RANDOMNESS": "Randomness",
+    "ANGLE_OFFSET": "Angle Offset",
+    "INHERIT_COLOR_SPACE_TYPE": "Inherit",
+    "SRGB_COLOR_SPACE_TYPE": "sRGB",
+    "LINEAR_SRGB_COLOR_SPACE_TYPE": "Linear sRGB",
+    "SIMPLE_OUTLINE_TYPE": "Simple",
+    "GAUSSIAN_OUTLINE_TYPE": "Gaussian",
+    "PIXEL_PERFECT_OUTLINE_TYPE": "Pixel Perfect",
+    "DEGREES_ROTATION_TYPE": "Degrees",
+    "RADIANS_ROTATION_TYPE": "Radians",
+    "WEIGHTED_GRAYSCALE_MODE": "Weighted",
+    "AVERAGE_GRAYSCALE_MODE": "Average",
+    "CUSTOM_GRAYSCALE_MODE": "Custom",
+    "CLAMP_TILE_MODE": "Clamp",
+    "REPEAT_TILE_MODE": "Repeat",
+    "MIRROR_TILE_MODE": "Mirror",
+    "DECAL_TILE_MODE": "Decal",
+    "ERR_UNKNOWN_FILE_FORMAT": "Unknown file format",
+    "ERR_EXPORT_SIZE_INVALID": "Invalid export size. Values must be greater than 0.",
+    "ERR_UNKNOWN_IMG_FORMAT": "Unknown image format '{0}'.",
+    "ERR_FAILED_GENERATE_SPRITE_SHEET": "Failed generating sprite sheet",
+    "ERR_NO_RENDERER": "Animation renderer not found.",
+    "ERR_RENDERING_FAILED": "Rendering failed",
+    "ENABLE_ANALYTICS": "Send anonymous analytics",
+    "ANALYTICS_INFO": "We collect anonymous usage data to improve PixiEditor. No personal data is collected.",
+    "LANGUAGE_INFO": "All translations are community-driven. Join our Discord server for more information.",
+    "UP_TO_DATE_UNKNOWN": "Couldn't check for updates",
+    "UP_TO_DATE": "PixiEditor is up to date",
+    "UPDATE_AVAILABLE": "Update {0} is available",
+    "UPDATE_FAILED_DOWNLOAD": "Failed to download the update",
+    "UPDATE_READY_TO_INSTALL": "Update is ready. Switch to {0}?",
+    "SWITCH_TO_NEW_VERSION": "Switch",
+    "DOWNLOAD_UPDATE": "Download",
+    "DOWNLOADING_UPDATE": "Downloading update...",
+    "CHECKING_FOR_UPDATES": "Checking for updates...",
+    "PAINT_SHAPE_SETTING": "Brush shape",
+    "BOOL_OPERATION_NODE": "Boolean Operation",
+    "FIRST_SHAPE": "First shape",
+    "SECOND_SHAPE": "Second shape",
+    "OPERATION": "Operation",
+    "UNION_VECTOR_PATH_OP": "Union",
+    "DIFFERENCE_VECTOR_PATH_OP": "Difference",
+    "INTERSECT_VECTOR_PATH_OP": "Intersect",
+    "XOR_VECTOR_PATH_OP": "XOR",
+    "REVERSE_DIFFERENCE_VECTOR_PATH_OP": "Reverse Difference",
+    "NO_DOCUMENT_OPEN": "Nothing's here",
+    "EMPTY_DOCUMENT_ACTION_BTN": "Start creating",
+    "ONBOARDING_TITLE": "Welcome to",
+    "ONBOARDING_DESCRIPTION": "Let's set up your workspace!",
+    "ONBOARDING_SKIP_BTN": "Skip",
+    "ONBOARDING_ACTION_BTN": "Let's begin",
+    "ONB_SELECT_PRIMARY_TOOLSET": "Select Your Primary Toolset",
+    "ONB_NEXT_BTN": "Next",
+    "ONB_FINISH_BTN": "Finish",
+    "ONB_BACK_BTN": "Previous",
+    "ONB_ANALYTICS": "Anonymous Analytics",
+    "ONB_ALL_SET": "You are all set!",
+    "ONB_ALL_SET_BTN": "Start creating",
+    "ANALYTICS_INFO_DETAILED": "PixiEditor collects anonymous usage data to improve the app. The data does not contain any personal information. Among other things, PixiEditor tracks the following:\n- Which and how the tools are used\n- How long you've used the app for\n- Which commands are used\n- Performance data\n\n You can opt out of analytics at any time in the settings.",
+    "PRIVACY_POLICY": "Privacy Policy",
+    "ONB_SHORTCUTS": "Select Your Shortcuts",
+    "GRAPH_STATE_UNABLE_TO_CREATE_MEMBER": "Current Node Graph setup disallows creation of a new layer next to the selected one.",
+    "PRIMARY_TOOLSET": "Primary Toolset",
+    "OPEN_ONBOARDING_WINDOW": "Open onboarding window",
+    "USER_NOT_FOUND": "Please enter the email you used to purchase the Founder's Edition.",
+    "SESSION_NOT_VALID": "Session is not valid, please log in again",
+    "SESSION_NOT_FOUND": "Session not found, try logging in again",
+    "INTERNAL_SERVER_ERROR": "There was an internal server error. Please try again later.",
+    "TOO_MANY_REQUESTS": "Too many requests. Try again in {0} seconds.",
+    "SESSION_EXPIRED": "Session expired. Please log in again.",
+    "CONNECTION_ERROR": "Connection error. Please check your internet connection.",
+    "FAIL_LOAD_USER_DATA": "Failed to load saved user data",
+    "LOGOUT": "Logout",
+    "LOGGED_IN_AS": "Hello",
+    "EMAIL_SENT": "Email sent! Check your inbox.",
+    "RESEND_ACTIVATION": "Resend",
+    "INVALID_TOKEN": "Session is invalid or expired. Please log in again.",
+    "ENTER_EMAIL": "Enter your email",
+    "LOGIN_LINK": "Send Login Link",
+    "LOGIN_LINK_INFO": "We'll email you a secure link to log in. No password needed.",
+    "ACCOUNT_WINDOW_TITLE": "Account",
+    "CONNECTION_TIMEOUT": "Connection timed out. Please try again.",
+    "OPEN_ACCOUNT_WINDOW": "Manage Account",
+    "AUTO_SCALE_BACKGROUND": "Auto scale background",
+    "UPDATES": "Updates",
+    "SCENE": "Scene",
+    "CUSTOM_BACKGROUND_SCALE": "Custom background scale",
+    "PRIMARY_BG_COLOR": "Primary background color",
+    "SECONDARY_BG_COLOR": "Secondary background color",
+    "RESET": "Reset",
+    "INSTALL": "Install",
+    "OWNED_PRODUCTS": "Owned Content",
+    "INSTALLING": "Installing",
+    "INSTALLED": "Installed",
+    "ACCOUNT_PROVIDER_INFO": "Account handled by",
+    "UPDATE": "Update",
+    "AUTOSAVE_OPEN_FOLDER": "Open autosave folder",
+    "AUTOSAVE_OPEN_FOLDER_DESCRIPTIVE": "Open the folder where autosaves are stored",
+    "AUTOSAVE_TOGGLE_DESCRIPTIVE": "Enable/disable autosave",
+    "FOUNDERS_BUNDLE": "Founder's Bundle",
+    "FOUNDERS_BUNDLE_SUBTEXT": "Support PixiEditor and boost your productivity!",
+    "BECOME_A_FOUNDER": "Become a Founder",
+    "LOGIN": "Login",
+    "NOT_FOUNDER_YET": "Not a Founder yet?",
+    "ERROR_GRAPH": "Graph setup produced an error. Fix it in the node graph",
+    "COLOR_MATRIX_FILTER_NODE": "Color Matrix Filter",
+    "WORKSPACE": "Workspace",
+    "IS_DEFAULT_EXPORT": "Is Default Export",
+    "EXPORT_OUTPUT": "Export Output",
+    "RENDER_OUTPUT_SIZE": "Render Output Size",
+    "RENDER_OUTPUT_CENTER": "Render Output Center",
+    "COLOR_PICKER": "Color Picker",
+    "UNAUTHORIZED_ACCESS": "Unauthorized access",
+    "SEPARATE_SHAPES": "Separate Shapes",
+    "SEPARATE_SHAPES_DESCRIPTIVE": "Separate shapes from current vector into individual layers",
+    "TEXT": "Text",
+    "EXTRACT_SELECTED_TEXT": "Extract selected text",
+    "EXTRACT_SELECTED_TEXT_DESCRIPTIVE": "Extract selected text into new layer.",
+    "EXTRACT_SELECTED_CHARACTERS": "Extract selected characters",
+    "EXTRACT_SELECTED_CHARACTERS_DESCRIPTIVE": "Extract individual characters from selection into new layers.",
+    "STEP_START": "Step back to closest cel",
+    "STEP_END": "Step forward to closest cel",
+    "STEP_FORWARD": "Step forward one frame",
+    "STEP_BACK": "Step back one frame",
+    "ANIMATION_QUALITY_PRESET": "Quality Preset",
+    "VERY_LOW_QUALITY_PRESET": "Very Low",
+    "LOW_QUALITY_PRESET": "Low",
+    "MEDIUM_QUALITY_PRESET": "Medium",
+    "HIGH_QUALITY_PRESET": "High",
+    "VERY_HIGH_QUALITY_PRESET": "Very High",
+    "EXPORT_FRAMES": "Export Frames",
+    "NORMALIZE_OFFSET": "Normalize Offset",
+    "TANGENT": "Tangent",
+    "EVALUATE_PATH_NODE": "Evaluate Path",
+    "OLD_MIN": "Old Min",
+    "OLD_MAX": "Old Max",
+    "NEW_MIN": "New Min",
+    "NEW_MAX": "New Max",
+    "REMAP_NODE": "Remap",
+    "TEXT_TOOL_ACTION_DISPLAY": "Click on the canvas to add a new text (drag while clicking to set the size). Click on existing text to edit it.",
+    "PASTE_CELS": "Paste cels",
+    "PASTE_CELS_DESCRIPTIVE": "Paste cels from clipboard into the current frame",
+    "SCALE_X": "Scale X",
+    "SCALE_Y": "Scale Y",
+    "TRANSLATE_X": "Translate X",
+    "TRANSLATE_Y": "Translate Y",
+    "SKEW_X": "Skew X",
+    "SKEW_Y": "Skew Y",
+    "PERSPECTIVE_0": "Perspective 0",
+    "PERSPECTIVE_1": "Perspective 1",
+    "PERSPECTIVE_2": "Perspective 2",
+    "COMPOSE_MATRIX": "Compose Matrix",
+    "DECOMPOSE_MATRIX": "Decompose Matrix",
+    "NORMALIZE_COORDINATES": "Normalize Coordinates",
+    "TRANSFORMED_POSITION": "Transformed Position",
+    "ACCOUNT_PROVIDER_NOT_AVAILABLE": "This build of PixiEditor does not support accounts. Use the official build from pixieditor.net to manage your account.",
+    "STEAM_OFFLINE": "Cannot validate the account. Steam is offline. Make sure Steam client is running and you are logged in.",
+    "ERROR_GPU_RESOURCES_CREATION": "Failed to create resources: Try updating your GPU drivers or try setting different rendering api in settings. \nError: '{0}'",
+    "ERROR_SAVING_PREFERENCES_DESC": "Failed to save preferences with error: '{0}'. Please check if you have write permissions to the PixiEditor data folder.",
+    "ERROR_SAVING_PREFERENCES": "Failed to save preferences",
+    "PREFERRED_RENDERER": "Preferred Render Api",
+    "PERFORMANCE": "Performance",
+    "DISABLE_PREVIEWS": "Disable Previews",
+    "MAX_BILINEAR_CANVAS_SIZE": "Max Bilinear Canvas Size",
+    "MAX_BILINEAR_CANVAS_SIZE_DESC": "Maximum canvas size for bilinear filtering. Set to 0 to disable bilinear filtering. Bilinear filtering improves the quality of the canvas, but can cause performance issues on large canvases.",
+    "INVERT_MASK": "Invert mask",
+    "TOGGLE_TINTING_SELECTION": "Toggle selection tinting",
+    "TOGGLE_TINTING_SELECTION_DESCRIPTIVE": "Toggle selection tinting",
+    "TINT_SELECTION": "Selection tinting",
+    "PAINT_BRUSH_SHAPE_CIRCLE": "Circle",
+    "PAINT_BRUSH_SHAPE_SQUARE": "Square",
+    "BRIGHTNESS_MODE_DEFAULT": "Default",
+    "BRIGHTNESS_MODE_REPEAT": "Repeat",
+    "ROUND_STROKE_CAP": "Round",
+    "BUTT_STROKE_CAP": "Butt",
+    "SQUARE_STROKE_CAP": "Square",
+    "ROUND_STROKE_JOIN": "Round",
+    "MITER_STROKE_JOIN": "Miter",
+    "BEVEL_STROKE_JOIN": "Bevel",
+    "TOGGLE_FULLSCREEN": "Toggle Fullscreen",
+    "TOGGLE_FULLSCREEN_DESCRIPTIVE": "Enter or Exit Fullscreen Mode"
 }

+ 106 - 100
src/PixiEditor/Data/Localization/Languages/es.json

@@ -1,33 +1,33 @@
 {
-  "RECENT_FILES": "Archivo Reciente",
-  "OPEN_FILE": "Abrir Archivo",
+  "RECENT_FILES": "Archivos recientes",
+  "OPEN_FILE": "Abrir archivo",
   "NEW_FILE": "Nuevo",
-  "RECENT_EMPTY_TEXT": "Demasiado espacio vacio",
+  "RECENT_EMPTY_TEXT": "Bastante vacío aquí",
   "LANGUAGE": "Idioma",
   "GENERAL": "General",
   "DISCORD": "Discord",
-  "KEY_BINDINGS": "Fijaciones de teclas",
-  "MISC": "Otros",
-  "SHOW_STARTUP_WINDOW": "Abrir Al Iniciar Windows",
+  "KEY_BINDINGS": "Atajos del teclado",
+  "MISC": "Misceláneo",
+  "SHOW_STARTUP_WINDOW": "Mostrar ventana de bienvenida",
   "RECENT_FILE_LENGTH": "Longitud de la lista de archivos reciente",
-  "RECENT_FILE_LENGTH_TOOLTIP": "Cuántos documentos se muestran en Archivo > Recientes. Por defecto: 8",
-  "DEFAULT_NEW_SIZE": "Nuevo archivo por defecto",
-  "WIDTH": "Anchura",
-  "HEIGHT": "Altura",
+  "RECENT_FILE_LENGTH_TOOLTIP": "Cuántos documentos se muestran en Archivo > Recientes. Predeterminado: 8",
+  "DEFAULT_NEW_SIZE": "Tamaño de imagen predeterminado",
+  "WIDTH": "Ancho",
+  "HEIGHT": "Alto",
   "TOOLS": "Herramientas",
   "ENABLE_SHARED_TOOLBAR": "Activar la barra de herramientas compartida",
-  "AUTOMATIC_UPDATES": "Actualizaciones Automáticas",
+  "AUTOMATIC_UPDATES": "Actualizaciones automáticas",
   "CHECK_FOR_UPDATES": "Buscar actualizaciones al iniciar",
-  "UPDATE_STREAM": "Actualizar stream",
-  "UPDATE_CHANNEL_HELP_TOOLTIP": "Los canales de actualización sólo se pueden cambiar en la versión independiente (descargada de https://pixieditor.net).\nLas versiones de Steam y Microsoft Store gestionan las actualizaciones por separado.",
-  "DEBUG": "Debug",
-  "ENABLE_DEBUG_MODE": "Activar modo Debug",
-  "OPEN_CRASH_REPORTS_DIR": "Abrir lista de reportes",
+  "UPDATE_STREAM": "Frecuencia de actualizaciones",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "Las actualizaciones sólo se pueden gestionar manualmente en la versión descargada por el sitio del programa (https://pixieditor.net).\nSteam y la tienda de Microsoft gestionan las actualizaciones por separado.",
+  "DEBUG": "Depuración",
+  "ENABLE_DEBUG_MODE": "Activar modo de depuración",
+  "OPEN_CRASH_REPORTS_DIR": "Abrir carpeta de reportes de colapsos",
   "DISCORD_RICH_PRESENCE": "Rich Presence",
   "ENABLED": "Activado",
-  "SHOW_IMAGE_NAME": "Mostrar nombre del archivo",
-  "SHOW_IMAGE_SIZE": "Mostrar tamaño del archivo",
-  "SHOW_LAYER_COUNT": "Mostrar recuento de capas",
+  "SHOW_IMAGE_NAME": "Mostrar nombre de la imagen",
+  "SHOW_IMAGE_SIZE": "Mostrar tamaño de la imagen",
+  "SHOW_LAYER_COUNT": "Mostrar cantidad de capas",
   "FILE": "Archivo",
   "RECENT": "Reciente",
   "OPEN": "Abrir",
@@ -38,119 +38,119 @@
   "EXIT": "Salir",
   "PERCENTAGE": "Porcentaje",
   "ABSOLUTE": "Absoluto",
-  "PRESERVE_ASPECT_RATIO": "Conservar la relación de aspecto",
-  "ANCHOR_POINT": "Punto de anclaje",
-  "RESIZE_IMAGE": "Cambiar el tamaño de la imagen",
-  "RESIZE": "Cambie el tamaño de",
-  "DOCUMENTATION": "Documentacion",
-  "WEBSITE": "Pagina Web",
-  "OPEN_WEBSITE": "Abrir Pagina Web",
+  "PRESERVE_ASPECT_RATIO": "Preservar la relación de aspecto",
+  "ANCHOR_POINT": "Anclaje",
+  "RESIZE_IMAGE": "Reescalar la imagen",
+  "RESIZE": "Confirmar",
+  "DOCUMENTATION": "Documentación",
+  "WEBSITE": "Pagina web",
+  "OPEN_WEBSITE": "Abrir Pagina web",
   "REPOSITORY": "Repositorio",
   "OPEN_REPOSITORY": "Abrir Repositorio",
   "LICENSE": "Licencia",
-  "OPEN_LICENSE": "Abrir Licencia",
+  "OPEN_LICENSE": "Abrir licencia",
   "THIRD_PARTY_LICENSES": "Licencias de terceros",
   "OPEN_THIRD_PARTY_LICENSES": "Abrir licencias de terceros",
   "APPLY_TRANSFORM": "Aplicar transformacion",
-  "INCREASE_TOOL_SIZE": "Aumentar el tamaño de la herramienta",
-  "DECREASE_TOOL_SIZE": "Disminuir el tamaño de la herramienta",
-  "DOWNLOADING_UPDATE": "Instalando actualizacion...",
-  "UPDATE_READY": "Actualización listo para instalar. ¿Desea instalarlo ahora?",
-  "NEW_UPDATE": "Nueva actualizacion",
-  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "No se ha podido actualizar sin privilegios de administrador. Por favor, ejecute PixiEditor como administrador.",
+  "INCREASE_TOOL_SIZE": "Agrandar la herramienta",
+  "DECREASE_TOOL_SIZE": "Desagrandar la herramienta",
+  "DOWNLOADING_UPDATE": "Descargando actualización...",
+  "UPDATE_READY": "La actualización está lista para instalar. ¿Quieres instalarla ahora?",
+  "NEW_UPDATE": "Nueva actualización",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "No se puede actualizar sin privilegios de administrador. Ejecuta PixiEditor como administrador.",
   "INSUFFICIENT_PERMISSIONS": "Permisos insuficientes",
-  "UPDATE_CHECK_FAILED": "Error en la comprobación de la actualización",
-  "COULD_NOT_CHECK_FOR_UPDATES": "No se ha podido comprobar si hay una actualización disponible.",
-  "VERSION": "Version {0}",
+  "UPDATE_CHECK_FAILED": "Error en detección de actualizaciones",
+  "COULD_NOT_CHECK_FOR_UPDATES": "No se pudo detectar si hay actualizaciones.",
+  "VERSION": "Versión {0}",
   "OPEN_TEMP_DIR": "Abrir directorio temporal",
-  "OPEN_LOCAL_APPDATA_DIR": "Abra el directorio local AppData",
-  "OPEN_ROAMING_APPDATA_DIR": "Abrir el directorio Roaming AppData",
+  "OPEN_LOCAL_APPDATA_DIR": "Abra la carpeta Local AppData",
+  "OPEN_ROAMING_APPDATA_DIR": "Abrir la carpeta Roaming AppData",
   "OPEN_INSTALLATION_DIR": "Abrir el directorio de instalación",
-  "DUMP_ALL_COMMANDS": "Volcar todos los comandos",
-  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Volcar todos los comandos a un archivo de texto",
-  "CRASH": "Error",
-  "CRASH_APP": "Error en la aplicacion",
-  "DELETE_USR_PREFS": "Eliminar las preferencias del usuario (Roaming AppData)",
+  "DUMP_ALL_COMMANDS": "Exportar todos los comandos",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Exportar todos los comandos a un archivo de texto",
+  "CRASH": "Forzar cierre",
+  "CRASH_APP": "Forzar el cierre de la aplicación",
+  "DELETE_USR_PREFS": "Eliminar las preferencias de usuario (Roaming AppData)",
   "DELETE_SHORTCUT_FILE": "Eliminar el archivo de acceso directo (Roaming AppData)",
   "DELETE_EDITOR_DATA": "Eliminar datos del editor (Local AppData)",
-  "GENERATE_KEY_BINDINGS_TEMPLATE": "Generar plantilla de enlaces de teclas",
-  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Generar plantilla json de enlaces de claves",
-  "VALIDATE_SHORTCUT_MAP": "Validar dirección de accesos directos",
-  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Validados dirección de accesos directos",
-  "VALIDATION_KEYS_NOTICE_DIALOG": "Llaves vacías: {0}\nComandos desconocidos: {1}",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "Generar plantilla de atajos del teclado",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Generar plantilla de atajos de teclado en formato JSON",
+  "VALIDATE_SHORTCUT_MAP": "Validar mapa de atajos del teclado",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Valida los atajos del teclado",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "Claves vacías: {0}\nComandos desconocidos: {1}",
   "RESULT": "Resultado",
-  "CLEAR_RECENT_DOCUMENTS": "Limpiar archivos recientes",
-  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Limpiar documentos recientemente abiertos",
-  "OPEN_CMD_DEBUG_WINDOW": "Abrir caja de comandos debug de windows",
+  "CLEAR_RECENT_DOCUMENTS": "Limpiar documentos recientes",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Limpiar documentos abiertos recientemente",
+  "OPEN_CMD_DEBUG_WINDOW": "Abrir ventana de comandos de depuración",
   "PATH_DOES_NOT_EXIST": "{0} no existe.",
   "LOCATION_DOES_NOT_EXIST": "La ubicación no existe.",
   "FILE_NOT_FOUND": "Archivo no encontrado.",
   "ARE_YOU_SURE": "¿Estas seguro?",
   "ARE_YOU_SURE_PATH_FULL_PATH": "¿Está seguro de que desea borrar {0}?\nEstos datos se perderán para todas las instalaciones.\n(Ruta completa: {1})",
-  "FAILED_TO_OPEN_FILE": "Error al abrir el archivo",
-  "OLD_FILE_FORMAT": "Formato de archivo viejo",
+  "FAILED_TO_OPEN_FILE": "No se pudo abrir el archivo",
+  "OLD_FILE_FORMAT": "Formato de archivo antiguo",
   "OLD_FILE_FORMAT_DESCRIPTION": "Este archivo .pixi utiliza el formato antiguo,\nque ya no es compatible y no puede abrirse.",
   "NOTHING_FOUND": "Nada encontrado",
   "EXPORT": "Exportar",
   "EXPORT_IMAGE": "Exportar imagen",
   "IMPORT": "Importar",
-  "SHORTCUT_TEMPLATES": "Plantillas de acceso directo",
-  "RESET_ALL": "Reiniciar todo",
+  "SHORTCUT_TEMPLATES": "Plantillas de atajos del teclado",
+  "RESET_ALL": "Restaurar todos",
   "LAYER": "Capa",
   "LAYER_DELETE_SELECTED": "Borrar capa/carpeta activa",
   "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Borrar capa o carpeta activa",
   "LAYER_DELETE_ALL_SELECTED": "Eliminar todas las capas/carpetas seleccionadas",
   "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Eliminar todas las capas y/o carpetas seleccionadas",
-  "DELETE_SELECTED_PIXELS": "Borrar píxeles seleccionados",
+  "DELETE_SELECTED_PIXELS": "Eliminar pixeles seleccionados",
   "NEW_FOLDER": "Nueva carpeta",
   "CREATE_NEW_FOLDER": "Crear nueva carpeta",
   "NEW_LAYER": "Nueva capa",
   "CREATE_NEW_LAYER": "Crear nueva capa",
-  "NEW_IMAGE": "Imagen nueva",
-  "CREATE_NEW_IMAGE": "Crear imagen nueva",
+  "NEW_IMAGE": "Nueva imagen",
+  "CREATE_NEW_IMAGE": "Crear nueva imagen",
   "SAVE": "Guardar",
   "SAVE_AS": "Guardar como...",
   "IMAGE": "Imagen",
   "SAVE_IMAGE": "Guardar imagen",
-  "SAVE_IMAGE_AS": "Guardar imagen como nuevo",
+  "SAVE_IMAGE_AS": "Guardar imagen como nuevo archivo",
   "DUPLICATE": "Duplicar",
   "DUPLICATE_SELECTED_LAYER": "Duplicar capa selecionada",
-  "CREATE_MASK": "Crear mascara",
-  "DELETE_MASK": "Borrar mascara",
-  "TOGGLE_MASK": "Máscara de conmutación",
-  "APPLY_MASK": "Aplicar mascara",
+  "CREATE_MASK": "Crear máscara",
+  "DELETE_MASK": "Borrar máscara",
+  "TOGGLE_MASK": "Alternar máscara",
+  "APPLY_MASK": "Aplicar máscara",
   "TOGGLE_VISIBILITY": "Alternar visibilidad",
-  "MOVE_MEMBER_UP": "Desplazar al miembro hacia arriba",
-  "MOVE_MEMBER_UP_DESCRIPTIVE": "Mover hacia arriba la capa o carpeta seleccionada",
-  "MOVE_MEMBER_DOWN": "Desplazar el miembro hacia abajo",
-  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Mover hacia abajo la capa o carpeta seleccionada",
-  "MERGE_ALL_SELECTED_LAYERS": "Fusionar todas las capas seleccionadas",
-  "MERGE_WITH_ABOVE": "Fusionar la capa seleccionada con la anterior",
-  "MERGE_WITH_ABOVE_DESCRIPTIVE": "Fusionar la capa seleccionada con la superior",
-  "MERGE_WITH_BELOW": "Fusionar la capa seleccionada con la de abajo",
-  "MERGE_WITH_BELOW_DESCRIPTIVE": "Fusionar la capa seleccionada con la inferior",
+  "MOVE_MEMBER_UP": "Mover miembro hacia arriba",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "Mover la capa o carpeta seleccionada hacia arriba",
+  "MOVE_MEMBER_DOWN": "Desplazar miembro hacia abajo",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Mover la capa o carpeta seleccionada hacia abajo",
+  "MERGE_ALL_SELECTED_LAYERS": "Combinar todas las capas seleccionadas",
+  "MERGE_WITH_ABOVE": "Combinar la capa seleccionada con la de arriba",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "Combinar la capa seleccionada con la que esté por encima",
+  "MERGE_WITH_BELOW": "Combinar la capa seleccionada con la de abajo",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "Combinar la capa seleccionada con la inferior",
   "ADD_REFERENCE_LAYER": "Añadir capa de referencia",
   "DELETE_REFERENCE_LAYER": "Eliminar capa de referencia",
   "TRANSFORM_REFERENCE_LAYER": "Transformar capa de referencia",
-  "TOGGLE_REFERENCE_LAYER_POS": "Conmutar la posición de la capa de referencia",
-  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Conmutar la capa de referencia entre la superior o la inferior",
+  "TOGGLE_REFERENCE_LAYER_POS": "Alternar la posición de la capa de referencia",
+  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Configurar el si la capa de referencia se encuentra arriba o abajo de todo",
   "RESET_REFERENCE_LAYER_POS": "Restablecer la posición de la capa de referencia",
-  "CLIP_CANVAS": "Adjuntar Canvas",
-  "FLIP_IMG_VERTICALLY": "Voltear imagen verticalmente",
-  "FLIP_IMG_HORIZONTALLY": "Voltear imagen horizontalmente",
-  "FLIP_LAYERS_VERTICALLY": "Voltear verticalmente las capas seleccionadas",
-  "FLIP_LAYERS_HORIZONTALLY": "Voltear horizontalmente las capas seleccionadas",
-  "ROT_IMG_90": "Girar la imagen 90 grados",
-  "ROT_IMG_180": "Girar la imagen 180 grados",
-  "ROT_IMG_-90": "Girar la imagen -90 grados",
-  "ROT_LAYERS_90": "Girar 90 grados las capas seleccionadas",
-  "ROT_LAYERS_180": "Girar 180 grados las capas seleccionadas",
-  "ROT_LAYERS_-90": "Girar -90 grados las capas seleccionadas",
-  "TOGGLE_VERT_SYMMETRY_AXIS": "Conmutar el eje de simetría vertical",
-  "TOGGLE_HOR_SYMMETRY_AXIS": "Conmutar el eje de simetría horizontal",
-  "RESIZE_DOCUMENT": "Cambiar el tamaño del documento",
-  "RESIZE_CANVAS": "Cambiar el tamaño del canvas",
-  "CENTER_CONTENT": "Contenido central",
+  "CLIP_CANVAS": "Recortar lienzo",
+  "FLIP_IMG_VERTICALLY": "Espejar imagen verticalmente",
+  "FLIP_IMG_HORIZONTALLY": "Espejar imagen horizontalmente",
+  "FLIP_LAYERS_VERTICALLY": "Espejar verticalmente las capas seleccionadas",
+  "FLIP_LAYERS_HORIZONTALLY": "Espejar horizontalmente las capas seleccionadas",
+  "ROT_IMG_90": "Rotar la imagen 90 grados",
+  "ROT_IMG_180": "Rotar la imagen 180 grados",
+  "ROT_IMG_-90": "Rotar la imagen -90 grados",
+  "ROT_LAYERS_90": "Rotar las capas seleccionadas 90 grados",
+  "ROT_LAYERS_180": "Rotar las capas seleccionadas 180 grados",
+  "ROT_LAYERS_-90": "Rotar las capas seleccionadas -90 grados",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "Alternar el eje de simetría vertical",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "Alternar el eje de simetría horizontal",
+  "RESIZE_DOCUMENT": "Reescalar documento",
+  "RESIZE_CANVAS": "Reescalar lienzo",
+  "CENTER_CONTENT": "Centrar contenido",
   "CUT": "Cortar",
   "CUT_DESCRIPTIVE": "Cortar el área o las capas seleccionadas",
   "PASTE": "Pegar",
@@ -167,20 +167,20 @@
   "COPY": "Copiar",
   "COPY_DESCRIPTIVE": "Copiar al portapapeles",
   "COPY_COLOR_HEX": "Copiar color primario (HEX)",
-  "COPY_COLOR_HEX_DESCRIPTIVE": "Copiar color primario como código HEX",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "Copiar color primario como código hexadecimal",
   "COPY_COLOR_RGB": "Copiar color primario (RGB)",
   "COPY_COLOR_RGB_DESCRIPTIVE": "Copiar color primario como código RGB",
   "COPY_COLOR_SECONDARY_HEX": "Copiar color secundario (HEX)",
-  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Copiar color secundario como código HEX",
+  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Copiar color secundario como código hexadecimal",
   "COPY_COLOR_SECONDARY_RGB": "Copiar color secundario (RGB)",
   "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "Copiar color secundario como código RGB",
   "PALETTE_COLORS": "Colores de la paleta",
-  "REPLACE_SECONDARY_BY_PRIMARY": "Sustituir el color secundario por el primario",
+  "REPLACE_SECONDARY_BY_PRIMARY": "Reemplazar el color secundario por el primario",
   "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "Sustituye el color secundario por el primario",
   "REPLACE_PRIMARY_BY_SECONDARY": "Sustituir el color primario por el secundario",
   "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Sustituir el color primario por el secundario",
   "OPEN_PALETTE_BROWSER": "Abrir el navegador de paletas",
-  "OVERWRITE_PALETTE_CONSENT": "La paleta '{0}' ya existe, ¿desea sobrescribirla?",
+  "OVERWRITE_PALETTE_CONSENT": "La paleta '{0}' ya existe, ¿deseas sobrescribirla?",
   "PALETTE_EXISTS": "La paleta ya existe",
   "REPLACE_PALETTE_CONSENT": "¿Reemplazar la paleta actual por la seleccionada?",
   "REPLACE_PALETTE": "Sustituir la paleta actual",
@@ -194,11 +194,11 @@
   "SELECT_COLOR_8": "Seleccionar color  8",
   "SELECT_COLOR_9": "Seleccionar color 9",
   "SELECT_COLOR_10": "Seleccionar color 10",
-  "SELECT_TOOL": "Seleccionar {0} Herramienta",
-  "SELECT_COLOR_1_DESCRIPTIVE": "Seleccione el primer color de la paleta",
-  "SELECT_COLOR_2_DESCRIPTIVE": "Seleccione el segundo color de la paleta",
-  "SELECT_COLOR_3_DESCRIPTIVE": "Seleccione el tercero color de la paleta",
-  "SELECT_COLOR_4_DESCRIPTIVE": "Seleccione el cuarto color de la paleta",
+  "SELECT_TOOL": "Seleccionar la herramienta de {0}",
+  "SELECT_COLOR_1_DESCRIPTIVE": "Seleccione el primer color en la paleta",
+  "SELECT_COLOR_2_DESCRIPTIVE": "Seleccione el segundo color en la paleta",
+  "SELECT_COLOR_3_DESCRIPTIVE": "Seleccione el tercero color en la paleta",
+  "SELECT_COLOR_4_DESCRIPTIVE": "Seleccione el cuarto color en la paleta",
   "SELECT_COLOR_5_DESCRIPTIVE": "Seleccione el quinto color de la paleta",
   "SELECT_COLOR_6_DESCRIPTIVE": "Seleccione el sexto color de la paleta",
   "SELECT_COLOR_7_DESCRIPTIVE": "Seleccione el séptimo color de la paleta",
@@ -543,5 +543,11 @@
   "SOURCE_UNSET_OR_MISSING": "Fuente ausente/desactivada",
   "SOURCE_NEWER": "Fuente más reciente",
   "SOURCE_UP_TO_DATE": "La fuente está actualizada",
-  "SOURCE_OLDER": "Nube más reciente"
+  "SOURCE_OLDER": "Nube más reciente",
+  "NEWS": "Noticias",
+  "DISABLE_NEWS_PANEL": "No mostrar el panel de noticias en la ventana de bienvenida",
+  "FAILED_FETCH_NEWS": "No se pudieron cargar las noticias",
+  "CRASH_NOT_ALL_DOCUMENTS_RECOVERED_TITLE": "Pérdida de documentos tras colapso",
+  "CRASH_NOT_ALL_DOCUMENTS_RECOVERED": "No todos los documentos pudieron ser recuperados tras un cierre inesperado. Metele ganas a guardar tu trabajo.",
+  "EXAMPLE_FILES": "Archivos de ejemplo"
 }

+ 131 - 1
src/PixiEditor/Data/Localization/Languages/ru.json

@@ -678,5 +678,135 @@
   "REMOVE_CLOSE_POINTS": "Удалить близкие точки",
   "RASTERIZE_SHAPE": "Растрировать фигуру",
   "MODE": "Режим",
-  "Factor": "Степень"
+  "Factor": "Степень",
+  "SEND": "Отправить отчет",
+  "INPUT": "Ввод",
+  "CHANNELS_DOCK_TITLE": "Каналы",
+  "COORDINATE": "Координата",
+  "NOISE": "Шум",
+  "PIXEL_COORDINATE": "Координаты пикселя",
+  "MODIFY_IMAGE_PAIR_NODE": "Редактировать изображение",
+  "WARMING_UP": "Разогреваемся",
+  "RENDERING_FRAME": "Генерация кадра {0}/{1}",
+  "RENDERING_VIDEO": "Рендеринг видео",
+  "GENERATING_SPRITE_SHEET": "Создание атласа спрайтов",
+  "PROBABILITY": "Вероятность",
+  "STARS_EXAMPLE": "Звёзды",
+  "ADD_EMPTY_FRAME": "Создать пустой кадр",
+  "DUPLICATE_FRAME": "Дублировать кадр",
+  "DELETE_FRAME": "Удалить кадр",
+  "NO_PARSER_FOUND": "Не найден парсер файлов для расширения '{0}'",
+  "SELECT_FILE_FORMAT": "Выберите формат файла",
+  "ISLAND_EXAMPLE": "Острова",
+  "SHAPE": "Фигура",
+  "STRUCTURE": "Структура",
+  "NUMBERS": "Числа",
+  "OPERATIONS": "Операции",
+  "GENERATION": "Генерация",
+  "NUMBER": "Число",
+  "ANIMATION": "Анимация",
+  "SAMPLE_IMAGE": "Цвет с изображения",
+  "POSITION": "Позиция",
+  "MATH_ADD": "Сложение",
+  "MATH_SUBTRACT": "Вычитание",
+  "MULTIPLY": "Умножение",
+  "DIVIDE": "Деление",
+  "SIN": "Синус",
+  "COS": "Косинус",
+  "TAN": "Тангенс",
+  "PIXEL_ART_TOOLSET": "Пиксель-арт",
+  "VECTOR_TOOLSET": "Векторная графика",
+  "VECTOR_LAYER": "Векторный слой",
+  "STROKE_COLOR_LABEL": "Контур",
+  "SYNC_WITH_PRIMARY_COLOR_LABEL": "Синхронизировать с основным цветом",
+  "RASTERIZE_ACTIVE_LAYER_DESCRIPTIVE": "Преобразовать/растеризовать выбранный слой в растровый слой (в изображение)",
+  "NEW_ELLIPSE_LAYER_NAME": "Овал",
+  "NEW_RECTANGLE_LAYER_NAME": "Прямоугольник",
+  "NEW_LINE_LAYER_NAME": "Линия",
+  "PAINT_TOOLSET": "Рисование",
+  "HARDNESS_SETTING": "Жесткость",
+  "SPACING_SETTING": "Промежуток",
+  "ANTI_ALIASING_SETTING": "Сглаживание",
+  "TOLERANCE_LABEL": "Допуск",
+  "HIGH_RES_PREVIEW": "Предварительный просмотр в высоком разрешении",
+  "LOW_RES_PREVIEW": "Предварительный просмотр в разрешении документа",
+  "TOGGLE_HIGH_RES_PREVIEW": "Вкл/выкл предварительный просмотр в высоком разрешении",
+  "PATH_TOOL": "Кривая",
+  "PATH_TOOL_TOOLTIP": "Создание векторных кривых ({0}).",
+  "PATH_TOOL_ACTION_DISPLAY": "Клик для добавления новой точки",
+  "PATH_TOOL_ACTION_DISPLAY_CTRL": "Потяните за точку для создания кривой. Кликните точку для выделения.",
+  "PATH_TOOL_ACTION_DISPLAY_SHIFT": "Кликните для создания нового слоя.",
+  "PATH_TOOL_ACTION_DISPLAY_CTRL_SHIFT": "Кликните точку чтобы добавить её в выделение",
+  "PATH_TOOL_ACTION_DISPLAY_ALT": "Потяните за контрольную точку для изменения кривой только с одной стороны.",
+  "DEFAULT_PATH_LAYER_NAME": "Кривая",
+  "DELETE_NODES": "Удалить ноды",
+  "DELETE_NODES_DESCRIPTIVE": "Удалить выбранные ноды",
+  "DELETE_CELS": "Удалить кадры",
+  "DELETE_CELS_DESCRIPTIVE": "Удалить выбранные кадры",
+  "COPY_COLOR_TO_CLIPBOARD": "Скопировать цвет в буфер обмена",
+  "VIEWPORT_ROTATION": "Поворот камеры",
+  "NEXT_TOOL_SET": "Следующий набор инструментов",
+  "PREVIOUS_TOOL_SET": "Предыдущий набор инструментов",
+  "FILL_MODE": "Режим заливки",
+  "USE_LINEAR_SRGB_PROCESSING": "Использовать линейный sRGB при смешивании цветов",
+  "USE_LINEAR_SRGB_PROCESSING_DESC": "Включить линейное смешивание цветов в этом документе. После включения цвета будут смешиваться более естественно, но внешний вид изображения может измениться.",
+  "STROKE_CAP": "Конец контура",
+  "STROKE_JOIN": "Стык контура",
+  "COPY_VISIBLE": "Копировать видимое",
+  "COPY_VISIBLE_DESCRIPTIVE": "Копировать видимые пиксели",
+  "CREATE_CEL": "Создать кадр",
+  "CREATE_CEL_DESCRIPTIVE": "Создать новый кадр",
+  "DUPLICATE_CEL": "Дублировать кадр",
+  "DUPLICATE_CEL_DESCRIPTIVE": "Дублировать выбранный кадр",
+  "RENDER_PREVIEW": "Предварительный просмотр",
+  "TOGGLE_PLAY": "Плей/пауза анимации",
+  "OPEN_PREVIEW_WINDOW": "Открыть окно предварительного просмотра",
+  "PREVIEW_TITLE": "Предварительный просмотр",
+  "GREATER_THAN": "Больше",
+  "LESS_THAN": "Меньше",
+  "LESS_THAN_OR_EQUAL": "Меньше или равно",
+  "COMPARE": "Сравнить",
+  "MATH_POWER": "Степень",
+  "LOGARITHM": "Логарифм",
+  "ROOT": "Корень",
+  "COPY_NODES_DESCRIPTIVE": "Копировать выбранные ноды",
+  "PASTE_NODES": "Вставить ноды",
+  "PASTE_NODES_DESCRIPTIVE": "Вставить скопированные ноды",
+  "COPY_CELS": "Копировать кадры",
+  "COPY_CELS_DESCRIPTIVE": "Копировать выбранные кадры",
+  "VALUE": "Значение",
+  "PRESERVE_ALPHA": "Не затрагивать alpha",
+  "BLUR_FILTER_NODE": "Размытие по гауссу",
+  "LENGTH": "Длина",
+  "GREATER_THAN_OR_EQUAL": "Больше или равно",
+  "WEBP_FILE": "Изображения WebP",
+  "COLOR_NODE": "Цвет",
+  "CONVERT_TO_CURVE": "Преобразовать в кривую",
+  "CONVERT_TO_CURVE_DESCRIPTIVE": "Преобразовать выбранный векторный слой в кривую",
+  "FONT_FILES": "Файлы шрифтов",
+  "UNIT_PT": "тч",
+  "FONT_LABEL": "Шрифт",
+  "FONT_SIZE_LABEL": "Размер",
+  "SPACING_LABEL": "Интервал",
+  "TEXT_TOOL": "Текст",
+  "MISSING_FONT": "Отсутствует шрифт",
+  "TEXT_LAYER_NAME": "Текст",
+  "TEXT_TOOL_TOOLTIP": "Добавить текст ({0}).",
+  "BOLD_TOOLTIP": "Жирный",
+  "ITALIC_TOOLTIP": "Курсив",
+  "STRING_OPEN_IN_FOLDER": "Показать в проводнике",
+  "DISCO_BALL_EXAMPLE": "Диско-шар",
+  "COLOR_SPACE": "Пространство цветов",
+  "PHOTO_EXAMPLES": "Фотография",
+  "MASK_EXAMPLE": "Маска",
+  "SHADOW_NODE": "Тень",
+  "INPUT_MATRIX": "Входная матрица",
+  "OUTPUT_MATRIX": "Выходная матрица",
+  "CENTER": "Центр",
+  "CONTENT_OFFSET": "Отступ содержимого",
+  "CANVAS_POSITION": "Позиция холста",
+  "ROTATION_NODE": "Поворот",
+  "SCALE_NODE": "Масштабирование",
+  "ROTATE_NODE": "Поворот",
+  "HUE_VALUE": "Тон"
 }

+ 2 - 5
src/PixiEditor/Data/Localization/Languages/tr.json

@@ -1123,8 +1123,5 @@
   "TRANSFORMED_POSITION": "Dönüştürülmüş Konum",
   "ACCOUNT_PROVIDER_NOT_AVAILABLE": "PixiEditor'ın bu yapısı hesapları desteklemiyor. Hesabınızı yönetmek için pixieditor.net'teki resmi yapıyı kullanın.",
   "STEAM_OFFLINE": "Hesap doğrulanamıyor. Steam çevrimdışı. Steam istemcisinin çalıştığından ve giriş yaptığınızdan emin olun.",
-  "ERROR_GPU_RESOURCES_CREATION": "Kaynaklar oluşturulamadı: GPU sürücülerinizi güncellemeyi deneyin veya ayarlarda farklı bir oluşturma API'si ayarlamayı deneyin. \nHata: '{0}'",
-  "ERROR_SAVING_PREFERENCES_DESC": "Tercihler şu hatayla kaydedilemedi: '{0}'. Lütfen PixiEditor veri klasörüne yazma izniniz olup olmadığını kontrol edin.",
-  "ERROR_SAVING_PREFERENCES": "Tercihler kaydedilemedi",
-  "PREFERRED_RENDERER": "Tercih Edilen Oluşturma Api"
-}
+  "OPEN_COMMAND_DEBUG_WINDOW": "Komut hata ayıklama penceresini aç"
+}

+ 5 - 5
src/PixiEditor/Data/Localization/LocalizationData.json

@@ -27,7 +27,7 @@
       "code": "es",
       "localeFileName": "es.json",
       "iconFileName": "es.png",
-      "lastUpdated": "2023-05-17 16:46:19"
+      "lastUpdated": "2025-09-07 02:23:00"
     },
     {
       "name": "中文",
@@ -42,7 +42,7 @@
       "code": "ru",
       "localeFileName": "ru.json",
       "iconFileName": "ru.png",
-      "lastUpdated": "2025-06-30 11:13:26"
+      "lastUpdated": "2025-07-28 08:51:44"
     },
     {
       "name": "Українська",
@@ -57,7 +57,7 @@
       "localeFileName": "ar.json",
       "iconFileName": "ar.png",
       "rightToLeft": true,
-      "lastUpdated": "2025-06-04 18:20:46"
+      "lastUpdated": "2025-09-06 22:22:52"
     },
     {
       "name": "Čeština",
@@ -85,7 +85,7 @@
       "code": "tr",
       "localeFileName": "tr.json",
       "iconFileName": "tr.png",
-      "lastUpdated": "2025-08-06 09:23:12"
+      "lastUpdated": "2025-08-07 18:24:00"
     }
   ]
-}
+}

+ 1 - 0
src/PixiEditor/Helpers/Constants/ClipboardDataFormats.cs

@@ -10,4 +10,5 @@ public static class ClipboardDataFormats
     public const string CelIdList = "PixiEditor.CelIdList";
     public const string PixiVectorData = "PixiEditor.VectorData";
     public const string UriList = "text/uri-list";
+    public const string HadSelectionFormat = "PixiEditor.HadSelection";
 }

+ 3 - 1
src/PixiEditor/Helpers/SupportedFilesHelper.cs

@@ -83,7 +83,9 @@ internal class SupportedFilesHelper
         if (file is null)
             return null;
 
-        string extension = Path.GetExtension(file.Path.LocalPath);
+        string? localPath = file.TryGetLocalPath();
+
+        string extension = Path.GetExtension(localPath ?? file.Name);
         return allSupportedExtensions.Single(i => i.CanSave && i.Extensions.Contains(extension, StringComparer.OrdinalIgnoreCase));
     }
 

+ 2 - 0
src/PixiEditor/Models/Commands/Attributes/Commands/ToolAttribute.cs

@@ -10,6 +10,8 @@ internal partial class Command
         public Key Transient { get; set; }
         public bool TransientImmediate { get; set; } = false;
 
+        public string? CommonToolType { get; set; }
+
         public ToolAttribute() : base(null, null, null)
         {
         }

+ 14 - 3
src/PixiEditor/Models/Controllers/ClipboardController.cs

@@ -68,6 +68,7 @@ internal static class ClipboardController
 
         Surface surfaceToCopy = null;
         RectD copyArea = RectD.Empty;
+        bool hadSelection = false;
 
         if (!document.SelectionPathBindable.IsEmpty)
         {
@@ -83,6 +84,7 @@ internal static class ClipboardController
 
             surfaceToCopy = surface.AsT2.Item1;
             copyArea = (RectD)surface.AsT2.Item2;
+            hadSelection = true;
         }
         else if (document.TransformViewModel.TransformActive || lastTransform != null)
         {
@@ -122,6 +124,11 @@ internal static class ClipboardController
             data.SetVecD(ClipboardDataFormats.PositionFormat, copyArea.Pos);
         }
 
+        if (hadSelection)
+        {
+            data.Set(ClipboardDataFormats.HadSelectionFormat, true);
+        }
+
         string[] layerIds = document.GetSelectedMembers().Select(x => x.ToString()).ToArray();
         string layerIdsString = string.Join(";", layerIds);
 
@@ -235,14 +242,18 @@ internal static class ClipboardController
         Guid[] layerIds = await GetLayerIds(data);
 
         bool hasPos = data.Any(x => x.Contains(ClipboardDataFormats.PositionFormat));
+        bool hadSelection = data.Any(x => x.Contains(ClipboardDataFormats.HadSelectionFormat));
 
         IDocument? targetDoc = manager.Documents.FirstOrDefault(x => x.Id == sourceDocument);
 
-        if (targetDoc != null && pasteAsNew && layerIds is { Length: > 0 } &&
+        if (targetDoc != null && !hadSelection && pasteAsNew && layerIds is { Length: > 0 } &&
             (!hasPos || await AllMatchesPos(layerIds, data, targetDoc)))
         {
             foreach (var layerId in layerIds)
             {
+                if (targetDoc.StructureHelper.Find(layerId) == null)
+                    continue;
+
                 if (sourceDocument == document.Id)
                 {
                     document.Operations.DuplicateMember(layerId);
@@ -495,7 +506,7 @@ internal static class ClipboardController
         {
             text = await importObj.GetDataAsync(DataFormats.Text) as string;
         }
-        catch(InvalidCastException ex) // bug on x11
+        catch (InvalidCastException ex) // bug on x11
         {
         }
 
@@ -848,7 +859,7 @@ internal static class ClipboardController
         data.Set(ClipboardDataFormats.DocumentFormat, Encoding.UTF8.GetBytes(docId.ToString()));
 
         byte[] idsBytes = Encoding.UTF8.GetBytes(string.Join(";", ids.Select(x => x.ToString())));
-        
+
         data.Set(format, idsBytes);
 
         await Clipboard.SetDataObjectAsync(data);

+ 2 - 1
src/PixiEditor/Models/DocumentModels/Public/DocumentOperationsModule.cs

@@ -235,7 +235,8 @@ internal class DocumentOperationsModule : IDocumentOperations
         {
             Internals.ActionAccumulator.AddFinishedActions(
                 new DuplicateFolder_Action(guidValue, newGuid, null),
-                new SetSelectedMember_PassthroughAction(newGuid));
+                new SetSelectedMember_PassthroughAction(newGuid),
+                new CreateAnimationDataFromFolder_Action(newGuid));
         }
 
         return newGuid;

+ 12 - 5
src/PixiEditor/Models/DocumentModels/UpdateableChangeExecutors/VectorTextToolExecutor.cs

@@ -84,11 +84,18 @@ internal class VectorTextToolExecutor : UpdateableChangeExecutor, ITextOverlayEv
             toolbar.FillBrush = textData.FillPaintable.ToBrush();
             toolbar.StrokeBrush = textData.Stroke.ToBrush();
             toolbar.ToolSize = textData.StrokeWidth;
-            toolbar.FontFamily = textData.Font.Family;
-            toolbar.FontSize = textData.Font.Size;
-            toolbar.Spacing = textData.Spacing ?? textData.Font.Size;
-            toolbar.Bold = textData.Font.Bold;
-            toolbar.Italic = textData.Font.Italic;
+            try
+            {
+                toolbar.FontFamily = textData.Font.Family;
+                toolbar.FontSize = textData.Font.Size;
+                toolbar.Spacing = textData.Spacing ?? textData.Font.Size;
+                toolbar.Bold = textData.Font.Bold;
+                toolbar.Italic = textData.Font.Italic;
+            }
+            catch (InvalidOperationException) // Native font likely disposed
+            {
+                
+            }
 
             onPath = textData.Path;
             lastText = textData.Text;

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

@@ -43,5 +43,5 @@ using System.Runtime.InteropServices;
 // 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("2.0.1.11")]
-[assembly: AssemblyFileVersion("2.0.1.11")]
+[assembly: AssemblyVersion("2.0.1.12")]
+[assembly: AssemblyFileVersion("2.0.1.12")]

+ 9 - 0
src/PixiEditor/ViewModels/Document/DocumentViewModel.Serialization.cs

@@ -299,6 +299,12 @@ internal partial class DocumentViewModel
         float centerY = (float)rectangleData.Center.Y;
         float halfWidth = (float)rectangleData.Size.X / 2f;
         float halfHeight = (float)rectangleData.Size.Y / 2f;
+        float minHalf = Math.Min(halfWidth, halfHeight);
+        float clampedCorner = Math.Clamp((float)rectangleData.CornerRadius, 0f, 1f);
+        float radius = minHalf * clampedCorner;
+        float radiusX = Math.Min(radius, halfWidth);
+        float radiusY = Math.Min(radius, halfHeight);
+
 
         rect.X.Unit = SvgNumericUnit.FromUserUnits(centerX - halfWidth);
         rect.Y.Unit = SvgNumericUnit.FromUserUnits(centerY - halfHeight);
@@ -306,6 +312,9 @@ internal partial class DocumentViewModel
         rect.Width.Unit = SvgNumericUnit.FromUserUnits(rectangleData.Size.X);
         rect.Height.Unit = SvgNumericUnit.FromUserUnits(rectangleData.Size.Y);
 
+        rect.Rx.Unit = SvgNumericUnit.FromUserUnits(radiusX);
+        rect.Ry.Unit = SvgNumericUnit.FromUserUnits(radiusY);
+        
         return rect;
     }
 

+ 8 - 8
src/PixiEditor/ViewModels/Document/NodeGraphViewModel.cs

@@ -20,7 +20,7 @@ namespace PixiEditor.ViewModels.Document;
 internal class NodeGraphViewModel : ViewModelBase, INodeGraphHandler, IDisposable
 {
     private bool isFullyCreated;
-    
+
     public DocumentViewModel DocumentViewModel { get; }
     public ObservableCollection<INodeHandler> AllNodes { get; } = new();
     public ObservableCollection<NodeConnectionViewModel> Connections { get; } = new();
@@ -110,7 +110,7 @@ internal class NodeGraphViewModel : ViewModelBase, INodeGraphHandler, IDisposabl
         connection.OutputProperty.ConnectedInputs.Add(connection.InputProperty);
 
         Connections.Add(connection);
-        
+
         UpdatesFramesPartOf(connection.InputNode);
         UpdatesFramesPartOf(connection.OutputNode);
 
@@ -126,11 +126,11 @@ internal class NodeGraphViewModel : ViewModelBase, INodeGraphHandler, IDisposabl
             connection.InputProperty.ConnectedOutput = null;
             connection.OutputProperty.ConnectedInputs.Remove(connection.InputProperty);
             Connections.Remove(connection);
+
+            UpdatesFramesPartOf(connection.InputNode);
+            UpdatesFramesPartOf(connection.OutputNode);
         }
 
-        UpdatesFramesPartOf(connection.InputNode);
-        UpdatesFramesPartOf(connection.OutputNode);
-        
         var node = AllNodes.FirstOrDefault(x => x.Id == nodeId);
         if (node != null)
         {
@@ -152,7 +152,7 @@ internal class NodeGraphViewModel : ViewModelBase, INodeGraphHandler, IDisposabl
         var lastKnownFramesPartOf = node.Frames.OfType<NodeZoneViewModel>().ToHashSet();
         var startLookup = Frames.OfType<NodeZoneViewModel>().ToDictionary(x => x.Start);
         var currentlyPartOf = new HashSet<NodeZoneViewModel>();
-        
+
         node.TraverseBackwards(x =>
         {
             if (x is IPairNodeEndViewModel)
@@ -185,9 +185,9 @@ internal class NodeGraphViewModel : ViewModelBase, INodeGraphHandler, IDisposabl
     {
         if (isFullyCreated)
             return;
-        
+
         isFullyCreated = true;
-        
+
         foreach (var nodeZoneViewModel in Frames.OfType<NodeZoneViewModel>())
         {
             UpdateNodesPartOf(nodeZoneViewModel);

+ 22 - 2
src/PixiEditor/ViewModels/SettingsWindowViewModel.cs

@@ -95,9 +95,21 @@ internal partial class SettingsWindowViewModel : ViewModelBase
     [Command.Internal("PixiEditor.Shortcuts.Export")]
     public static async Task ExportShortcuts()
     {
+        IStorageFolder? suggestedStartLocation = null;
+        try
+        {
+            suggestedStartLocation =
+                await MainWindow.Current!.StorageProvider.TryGetWellKnownFolderAsync(WellKnownFolder.Documents);
+        }
+        catch (Exception)
+        {
+            // If we can't get the documents folder, we will just use the default location
+            // This is not a critical error, so we can ignore it
+        }
+
         var file = await MainWindow.Current!.StorageProvider.SaveFilePickerAsync(new()
         {
-            SuggestedStartLocation = await MainWindow.Current!.StorageProvider.TryGetWellKnownFolderAsync(WellKnownFolder.Documents),
+            SuggestedStartLocation = suggestedStartLocation,
             FileTypeChoices = new List<FilePickerFileType>()
             {
                 new FilePickerFileType("PixiShorts (*.pixisc)")
@@ -127,7 +139,15 @@ internal partial class SettingsWindowViewModel : ViewModelBase
         
         if (file is not null)
         {
-            File.Copy(CommandController.ShortcutsPath, file.Path.LocalPath, true);
+            try
+            {
+                File.Copy(CommandController.ShortcutsPath, file.Path.LocalPath, true);
+            }
+            catch (Exception ex)
+            {
+                string errMessageTrimmed = ex.Message.Length > 100 ? ex.Message[..100] + "..." : ex.Message;
+                NoticeDialog.Show(title: "ERROR", message: new LocalizedString("UNKNOWN_ERROR_SAVING").Value + $" {errMessageTrimmed}");
+            }
         }
         
         // Sometimes, focus was brought back to the last edited shortcut

+ 3 - 1
src/PixiEditor/ViewModels/SubViewModels/LayersViewModel.cs

@@ -347,13 +347,15 @@ internal class LayersViewModel : SubViewModel<ViewModelMain>
     private void MoveSelectedMember(bool upwards)
     {
         var doc = Owner.DocumentManagerSubViewModel.ActiveDocument;
-        var member = Owner.DocumentManagerSubViewModel.ActiveDocument?.SelectedStructureMember;
+        var member = doc?.SelectedStructureMember;
         if (member is null)
             return;
         var path = doc!.StructureHelper.FindPath(member.Id);
         if (path.Count < 2 || path[1] is not FolderNodeViewModel folderVm)
             return;
         var parent = folderVm;
+        if(parent.Children.Count == 0)
+            return;
         int curIndex = parent.Children.IndexOf(path[0]);
         if (upwards)
         {

+ 36 - 1
src/PixiEditor/ViewModels/SubViewModels/ToolsViewModel.cs

@@ -2,6 +2,7 @@
 using System.Collections.ObjectModel;
 using System.ComponentModel;
 using System.Linq;
+using System.Reflection;
 using Avalonia.Input;
 using Microsoft.Extensions.DependencyInjection;
 using PixiEditor.ChangeableDocument;
@@ -180,14 +181,36 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
     {
         ActiveTool?.OnToolDeselected(false);
         ActiveToolSet = toolSetHandler;
+        if (ActiveTool != null && !ActiveToolSet.Tools.Contains(ActiveTool))
+        {
+            TrySelectCommonToolInNewToolSet();
+        }
         ActiveToolSet.ApplyToolSetSettings();
         UpdateEnabledState();
 
+
         ActiveTool?.OnToolSelected(false);
 
         OnPropertyChanged(nameof(NonSelectedToolSets));
     }
 
+    private void TrySelectCommonToolInNewToolSet()
+    {
+        var commonTool = ActiveToolSet.Tools.FirstOrDefault(tool =>
+        {
+            var attr = tool.GetType().GetCustomAttribute<Command.ToolAttribute>();
+            if (attr is null) return false;
+
+            return ActiveTool?.GetType().GetCustomAttribute<Command.ToolAttribute>()?.CommonToolType ==
+                   attr.CommonToolType;
+        });
+
+        if (commonTool is not null)
+        {
+            SetActiveTool(commonTool, false);
+        }
+    }
+
     [Command.Basic("PixiEditor.Tools.ToggleSelectionTinting", "TOGGLE_TINTING_SELECTION", "TOGGLE_TINTING_SELECTION_DESCRIPTIVE", AnalyticsTrack = true)]
     public void ToggleTintSelection() => SelectionTintingEnabled = !SelectionTintingEnabled;
 
@@ -389,7 +412,7 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
         if (foundTool == null)
         {
             foundTool = allTools.FirstOrDefault(x => x.GetType().IsAssignableFrom(toolType));
-            if(foundTool == null)
+            if(foundTool == null || SimilarToolInActiveToolSetExists(toolType))
                 return;
 
             var toolset = AllToolSets.FirstOrDefault(x => x.Tools.Contains(foundTool));
@@ -426,6 +449,18 @@ internal class ToolsViewModel : SubViewModel<ViewModelMain>, IToolsHandler
         }
     }
 
+    private bool SimilarToolInActiveToolSetExists(Type toolType)
+    {
+        Command.ToolAttribute attr = toolType.GetCustomAttribute<Command.ToolAttribute>();
+        if (attr is null) return false;
+
+        return ActiveToolSet.Tools.Any(tool =>
+        {
+            var toolAttr = tool.GetType().GetCustomAttribute<Command.ToolAttribute>();
+            return toolAttr is not null && toolAttr.CommonToolType == attr.CommonToolType;
+        });
+    }
+
     public void HandleToolRepeatShortcutDown()
     {
         if (ActiveTool == null) return;

+ 28 - 0
src/PixiEditor/ViewModels/SubViewModels/WindowViewModel.cs

@@ -2,6 +2,7 @@
 using System.Drawing;
 using System.Linq;
 using System.Threading.Tasks;
+using Avalonia.Controls;
 using Avalonia.Input;
 using CommunityToolkit.Mvvm.Input;
 using Drawie.Numerics;
@@ -303,4 +304,31 @@ internal class WindowViewModel : SubViewModel<ViewModelMain>, IWindowHandler
         popup.Show();
         return popup;
     }
+
+    /// <summary>
+    /// Used to save the WindowState before toggling to FullScreen-Mode.
+    /// </summary>
+    private WindowState LastWindowState { get; set; }
+
+    /// <summary>
+    /// Method used to toggle to FullScreen-Mode.
+    /// </summary>
+    [Commands_Command.Basic("PixiEditor.Window.ToggleFullscreen", "TOGGLE_FULLSCREEN", "TOGGLE_FULLSCREEN_DESCRIPTIVE",
+        Key = Key.F11,
+        Icon = PixiPerfectIcons.Fullscreen,
+        AnalyticsTrack = true)]
+    public void ToggleFullscreen()
+    {
+        var window = Owner.AttachedWindow;
+
+        if (window is null) return;
+
+        if (window.WindowState != WindowState.FullScreen) LastWindowState = window.WindowState;
+
+        window.WindowState = window.WindowState switch
+        {
+            WindowState.FullScreen => LastWindowState,
+            _ => WindowState.FullScreen
+        };
+    }
 }

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/RasterEllipseToolViewModel.cs

@@ -10,7 +10,7 @@ using PixiEditor.UI.Common.Localization;
 
 namespace PixiEditor.ViewModels.Tools.Tools;
 
-[Command.Tool(Key = Key.C)]
+[Command.Tool(Key = Key.C, CommonToolType = "Ellipse")]
 internal class RasterEllipseToolViewModel : ShapeTool, IRasterEllipseToolHandler
 {
     private string defaultActionDisplay = "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT";

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/RasterLineToolViewModel.cs

@@ -12,7 +12,7 @@ using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars;
 
 namespace PixiEditor.ViewModels.Tools.Tools;
 
-[Command.Tool(Key = Key.L)]
+[Command.Tool(Key = Key.L, CommonToolType = "Line")]
 internal class RasterLineToolViewModel : ShapeTool, ILineToolHandler
 {
     private string defaultActionDisplay = "LINE_TOOL_ACTION_DISPLAY_DEFAULT";

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/RasterRectangleToolViewModel.cs

@@ -11,7 +11,7 @@ using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars;
 
 namespace PixiEditor.ViewModels.Tools.Tools;
 
-[Command.Tool(Key = Key.R)]
+[Command.Tool(Key = Key.R, CommonToolType = "Rectangle")]
 internal class RasterRectangleToolViewModel : ShapeTool, IRasterRectangleToolHandler
 {
     private string defaultActionDisplay = "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT";

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/VectorEllipseToolViewModel.cs

@@ -12,7 +12,7 @@ using PixiEditor.UI.Common.Localization;
 
 namespace PixiEditor.ViewModels.Tools.Tools;
 
-[Command.Tool(Key = Key.C)]
+[Command.Tool(Key = Key.C, CommonToolType = "Ellipse")]
 internal class VectorEllipseToolViewModel : ShapeTool, IVectorEllipseToolHandler
 {
     public const string NewLayerKey = "NEW_ELLIPSE_LAYER_NAME";

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/VectorLineToolViewModel.cs

@@ -16,7 +16,7 @@ using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars;
 
 namespace PixiEditor.ViewModels.Tools.Tools;
 
-[Command.Tool(Key = Key.L)]
+[Command.Tool(Key = Key.L, CommonToolType = "Line")]
 internal class VectorLineToolViewModel : ShapeTool, IVectorLineToolHandler
 {
     public const string NewLayerKey = "NEW_LINE_LAYER_NAME";

+ 1 - 1
src/PixiEditor/ViewModels/Tools/Tools/VectorRectangleToolViewModel.cs

@@ -13,7 +13,7 @@ using PixiEditor.ViewModels.Tools.ToolSettings.Toolbars;
 
 namespace PixiEditor.ViewModels.Tools.Tools;
 
-[Command.Tool(Key = Key.R)]
+[Command.Tool(Key = Key.R, CommonToolType = "Rectangle")]
 internal class VectorRectangleToolViewModel : ShapeTool, IVectorRectangleToolHandler
 {
     public const string NewLayerKey = "NEW_RECTANGLE_LAYER_NAME";

+ 1 - 1
src/PixiEditor/Views/Main/ViewportControls/Viewport.axaml

@@ -174,7 +174,7 @@
             </Grid.RowDefinitions>
             <tools:Toolbar
                 DataContext="{Binding Source={viewModels:MainVM}, Path=.}" />
-            <StackPanel Margin="0, 5, 0, 0" Background="Transparent" Grid.Row="1" Orientation="Horizontal" Name="toolsetsPanel">
+            <StackPanel Margin="0, 5, 0, 0" Grid.Row="1" Orientation="Horizontal" Name="toolsetsPanel">
                 <Border ClipToBounds="False"
                         HorizontalAlignment="Left"
                         Padding="5 0"

+ 0 - 4
src/PixiEditor/Views/Nodes/NodeGraphView.cs

@@ -773,10 +773,6 @@ internal class NodeGraphView : Zoombox.Zoombox
                 {
                     connection = (endConnectionProperty, startConnectionProperty, null);
                 }
-                else
-                {
-                    return;
-                }
             }
         }