Browse Source

Translator and Localization rewritten to Avalonia

Krzysztof Krysiński 2 năm trước cách đây
mục cha
commit
8e300d3952
46 tập tin đã thay đổi với 8343 bổ sung117 xóa
  1. 1 1
      src/PixiEditor.Avalonia/Directory.Build.props
  2. 1 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia.Desktop/PixiEditor.Avalonia.Desktop.csproj
  3. 9 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/App.axaml
  4. 1 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/App.axaml.cs
  5. 6 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/BuildConstants.cs
  6. 564 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/ar.json
  7. 564 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/cs.json
  8. 564 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/de.json
  9. 588 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/en.json
  10. 564 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/es.json
  11. 564 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/hu.json
  12. 564 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/pl.json
  13. 564 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/pt-br.json
  14. 564 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/ru.json
  15. 564 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/uk.json
  16. 564 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/zh.json
  17. 83 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/LocalizationData.json
  18. 59 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/LocalizationDataSchema.json
  19. 614 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/ShortcutActionMaps/AsepriteShortcutMap.json
  20. 23 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Exceptions/Exceptions/CorruptedFileException.cs
  21. 21 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Exceptions/Exceptions/InvalidFileTypeException.cs
  22. 22 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Exceptions/Exceptions/MissingFileException.cs
  23. 37 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Exceptions/Exceptions/RecoverableException.cs
  24. 146 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Helpers/CrashHelper.cs
  25. 29 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Helpers/Extensions/DictionaryHelper.cs
  26. 41 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Helpers/VersionHelpers.cs
  27. 48 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/AppExtensions/ExtensionException.cs
  28. 236 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/AppExtensions/ExtensionLoader.cs
  29. 75 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/AppExtensions/Services/PaletteProvider.cs
  30. 51 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/AppExtensions/Services/WindowProvider.cs
  31. 13 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Constants.cs
  32. 221 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/ExceptionHandling/CrashReport.cs
  33. 16 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/IO/Paths.cs
  34. 196 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Localization/LocalizationProvider.cs
  35. 8 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/PixiEditor.Avalonia.csproj
  36. 14 1
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Views/MainView.axaml
  37. 7 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/Views/MainWindow.axaml.cs
  38. 20 0
      src/PixiEditor.Avalonia/PixiEditor.Avalonia/stylecop.json
  39. 2 2
      src/PixiEditor.Extensions/Common/Localization/ILocalizationProvider.cs
  40. 1 0
      src/PixiEditor.Extensions/Common/Localization/Language.cs
  41. 2 2
      src/PixiEditor.Extensions/PixiEditor.Extensions.csproj
  42. 7 8
      src/PixiEditor.Extensions/UI/ExternalProperty.cs
  43. 4 4
      src/PixiEditor.Extensions/UI/ICustomTranslatorElement.cs
  44. 93 93
      src/PixiEditor.Extensions/UI/Translator.cs
  45. 1 3
      src/PixiEditor.Extensions/Windowing/IWindowProvider.cs
  46. 7 2
      src/PixiEditor.UI.Common/PixiEditor.UI.Common.csproj

+ 1 - 1
src/PixiEditor.Avalonia/Directory.Build.props

@@ -1,6 +1,6 @@
 <Project>
   <PropertyGroup>
     <Nullable>enable</Nullable>
-    <AvaloniaVersion>11.0.0-preview7</AvaloniaVersion>
+    <AvaloniaVersion>11.0.0-rc1.1</AvaloniaVersion>
   </PropertyGroup>
 </Project>

+ 1 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia.Desktop/PixiEditor.Avalonia.Desktop.csproj

@@ -6,6 +6,7 @@
         <TargetFramework>net7.0</TargetFramework>
         <Nullable>enable</Nullable>
         <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
+        <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
     </PropertyGroup>
 
     <PropertyGroup>

+ 9 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/App.axaml

@@ -7,5 +7,14 @@
 
     <Application.Styles>
         <themes:PixiEditorTheme />
+        <StyleInclude Source="avares://PixiEditor.UI.Common/Styles/PixiEditor.Controls.axaml"/>
     </Application.Styles>
+
+             <Application.Resources>
+                 <ResourceDictionary>
+                     <ResourceDictionary.MergedDictionaries>
+                         <ResourceInclude Source="avares://PixiEditor.UI.Common/Styles/PixiEditor.axaml"/>
+                     </ResourceDictionary.MergedDictionaries>
+                 </ResourceDictionary>
+             </Application.Resources>
 </Application>

+ 1 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/App.axaml.cs

@@ -3,6 +3,7 @@ using Avalonia.Controls.ApplicationLifetimes;
 using Avalonia.Markup.Xaml;
 using PixiEditor.Avalonia.ViewModels;
 using PixiEditor.Avalonia.Views;
+using Splat;
 
 namespace PixiEditor.Avalonia;
 

+ 6 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/BuildConstants.cs

@@ -0,0 +1,6 @@
+namespace PixiEditor;
+
+public static class BuildConstants
+{
+    public const string CrashReportWebhookUrl = "${crash-report-webhook-url}";
+}

+ 564 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/ar.json

@@ -0,0 +1,564 @@
+{
+  "RECENT_FILES": "الملفات الاخيرة",
+  "OPEN_FILE": "فتح ملف",
+  "NEW_FILE": "جديد",
+  "RECENT_EMPTY_TEXT": "الكثير من المساحات الفارغة",
+  "LANGUAGE": "اللغة",
+  "GENERAL": "العامة",
+  "DISCORD": "ديسكورد",
+  "KEY_BINDINGS": "ارتباطات المفاتيح",
+  "MISC": "متنوع",
+  "SHOW_STARTUP_WINDOW": "عرض نافذة بدء التشغيل",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "عرض معاينة الصورة في شريط المهام",
+  "RECENT_FILE_LENGTH": "طول قائمة الملفات الاخيرة",
+  "RECENT_FILE_LENGTH_TOOLTIP": "كم عدد المستندات التي يتم اضهارها في ملف > الملفات الاخيرة. الافتراضي: 8",
+  "DEFAULT_NEW_SIZE": "الحجم الافتراضي للملف الجديد",
+  "WIDTH": "العرض",
+  "HEIGHT": "الطول",
+  "TOOLS": "ألادوات",
+  "ENABLE_SHARED_TOOLBAR": "تمكين شريط الادوات المشترك",
+  "AUTOMATIC_UPDATES": "التحديثات التلقائية",
+  "CHECK_FOR_UPDATES": "تحقق من التحديثات عند بدء التشغيل",
+  "UPDATE_STREAM": "مصدر التحديث",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "لا يمكن تغيير قنوات التحديث إلا في إصدار مستقل (يتم تنزيله من https://pixieditor.net).\nتتعامل إصدارات Steam و Microsoft Store مع التحديثات بشكل منفصل.",
+  "DEBUG": "معالجة",
+  "ENABLE_DEBUG_MODE": "تفعيل وضع المعالجة",
+  "OPEN_CRASH_REPORTS_DIR": "افتح دليل تقارير الاعطال",
+  "DISCORD_RICH_PRESENCE": "Rich Presence",
+  "ENABLED": "مفعل",
+  "SHOW_IMAGE_NAME": "اضهار اسم الصورة",
+  "SHOW_IMAGE_SIZE": "اضهار حجم الصورة",
+  "SHOW_LAYER_COUNT": "اضهار عدد الطبقات",
+  "FILE": "ملف",
+  "RECENT": "مؤخرًا",
+  "OPEN": "فتح",
+  "SAVE_PIXI": "حفض ( .pixi )",
+  "SAVE_AS_PIXI": "حفض جديد ك ( .pixi )",
+  "EXPORT_IMG": "تصدير (png, .jpg., الخ.)",
+  "EDIT": "تعديل",
+  "EXIT": "خروج",
+  "PERCENTAGE": "نسبة مئوية",
+  "ABSOLUTE": "مطلق",
+  "PRESERVE_ASPECT_RATIO": "الإحتفاظ بنسبة العرض للإرتفاع",
+  "ANCHOR_POINT": "نقاط الربط",
+  "RESIZE_IMAGE": "تغيير حجم الصورة",
+  "RESIZE": "تغيير الحجم",
+  "DOCUMENTATION": "التعليمات",
+  "WEBSITE": "الموقع",
+  "OPEN_WEBSITE": "فتح الموقع",
+  "REPOSITORY": "Repository",
+  "OPEN_REPOSITORY": "فتح Repository",
+  "LICENSE": "رخصة",
+  "OPEN_LICENSE": "فتح الترخيص",
+  "THIRD_PARTY_LICENSES": "تراخيص الطرف الثالث",
+  "OPEN_THIRD_PARTY_LICENSES": "فتح تراخيص الطرف الثالث",
+  "APPLY_TRANSFORM": "تطبيق التحويل",
+  "INCREASE_TOOL_SIZE": "زيادة حجم الأداة",
+  "DECREASE_TOOL_SIZE": "تقليل حجم الأداة",
+  "TO_INSTALL_UPDATE": "لتنزيل التحديث {0}",
+  "DOWNLOADING_UPDATE": "تحميل التحديث...",
+  "UPDATE_READY": "التحديث جاهز للتثبيت. هل تريد تثبيته الآن؟",
+  "NEW_UPDATE": "تحديث جديد",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "تعذر التحديث بدون امتيازات المسؤول. الرجاء تشغيل PixiEditor كمسؤول.",
+  "INSUFFICIENT_PERMISSIONS": "أذونات غير كافية",
+  "UPDATE_CHECK_FAILED": "فشل التحقق من التحديث",
+  "COULD_NOT_CHECK_FOR_UPDATES": "تعذر التحقق مما إذا كان هناك تحديث متوفر.",
+  "VERSION": "الاصدار {0}",
+  "OPEN_TEMP_DIR": "افتح الدليل temp",
+  "OPEN_LOCAL_APPDATA_DIR": "افتح دليل Local AppData",
+  "OPEN_ROAMING_APPDATA_DIR": "افتح دليل Roaming AppData",
+  "OPEN_INSTALLATION_DIR": "افتح دليل التثبيت",
+  "DUMP_ALL_COMMANDS": "تفريغ كل الأوامر",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "تفريغ كل الأوامر في ملف نصي",
+  "CRASH": "توقيف",
+  "CRASH_APP": "توقيف البرنامج",
+  "DELETE_USR_PREFS": "حذف تفضيلات المستخدم (Roaming AppData)",
+  "DELETE_SHORTCUT_FILE": "حذف ملف الاختصار (Roaming AppData)",
+  "DELETE_EDITOR_DATA": "حذف بيانات البرنامج (Roaming AppData)",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "إنشاء قالب روابط المفاتيح",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "إنشاء قالب json لربط المفاتيح",
+  "VALIDATE_SHORTCUT_MAP": "تحقق من صحة الاختصار",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "تحقق من صحة الاختصار",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "مفاتيح فارغة: {0}\nأوامر غير معروفة: {1}",
+  "RESULT": "نتيجة",
+  "CLEAR_RECENT_DOCUMENTS": "مسح المستندات الأخيرة",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "مسح المستندات التي تم فتحها مؤخرًا",
+  "OPEN_CMD_DEBUG_WINDOW": "افتح نافذة تصحيح أخطاء الأمر",
+  "PATH_DOES_NOT_EXIST": "{0} غير موجود.",
+  "LOCATION_DOES_NOT_EXIST": "الموقع غير موجود.",
+  "FILE_NOT_FOUND": "لم يتم العثور على الملف.",
+  "ARE_YOU_SURE": "هل انت متاكد؟",
+  "ARE_YOU_SURE_PATH_FULL_PATH": "هل أنت متأكد أنك تريد حذف {0}؟\nستفقد هذه البيانات لجميع التركيبات.\n(مسار كامل: {1})",
+  "FAILED_TO_OPEN_FILE": "فشل في فتح الملف",
+  "OLD_FILE_FORMAT": "تنسيق الملف القديم",
+  "OLD_FILE_FORMAT_DESCRIPTION": "يستخدم ملف pixi هذا التنسيق القديم ،\n  التي لم تعد مدعومة ولا يمكن فتحها.",
+  "NOTHING_FOUND": "لم يتم العثور على شيء",
+  "EXPORT": "تصدير",
+  "EXPORT_IMAGE": "تصدير الصورة",
+  "IMPORT": "اضافة",
+  "SHORTCUT_TEMPLATES": "اختصارات القوالب",
+  "RESET_ALL": "إعادة ضبط الكل",
+  "LAYER": "طبقة",
+  "LAYER_DELETE_SELECTED": "حذف الطبقة/المجلد النشط",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "حذف الطبقة أو المجلد النشط",
+  "LAYER_DELETE_ALL_SELECTED": "احذف جميع الطبقات / المجلدات المحددة",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "احذف كل الطبقات و / أو المجلدات المحددة",
+  "DELETE_SELECTED_PIXELS": "حذف البكسلات المحددة",
+  "NEW_FOLDER": "مجلد جديد",
+  "CREATE_NEW_FOLDER": "انشاء مجلد جديد",
+  "NEW_LAYER": "طبقة جديدة",
+  "CREATE_NEW_LAYER": "انشاء طبقة جديدة",
+  "NEW_IMAGE": "صورة جديدة",
+  "CREATE_NEW_IMAGE": "انشاء صورة جديدة",
+  "SAVE": "حفض",
+  "SAVE_AS": "حفض جديد...",
+  "IMAGE": "صورة",
+  "SAVE_IMAGE": "حفض الصورة",
+  "SAVE_IMAGE_AS": "حفض الصورة كجديدة",
+  "DUPLICATE": "تكرار",
+  "DUPLICATE_SELECTED_LAYER": "تكرار الطبقة المجددة",
+  "CREATE_MASK": "انشاء قناع",
+  "DELETE_MASK": "حذف قناع",
+  "TOGGLE_MASK": "تبديل القناع",
+  "APPLY_MASK": "تطبيق القناع",
+  "TOGGLE_VISIBILITY": "تبديل الرؤية",
+  "MOVE_MEMBER_UP": "حرك العضو لأعلى",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "انقل الطبقة أو المجلد المحدد لأعلى",
+  "MOVE_MEMBER_DOWN": "حرك العضو لأسفل",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "انقل الطبقة أو المجلد المحدد لأسفل",
+  "MERGE_ALL_SELECTED_LAYERS": "دمج كل الطبقات المحددة",
+  "MERGE_WITH_ABOVE": "دمج الطبقة المحددة أعلاه",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "دمج الطبقة المحددة مع الطبقة التي فوقها",
+  "MERGE_WITH_BELOW": "دمج الطبقة المحددة أدناه",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "دمج الطبقة المحددة مع الطبقة الموجودة تحتها",
+  "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": "قلب الطبقات المحددة عموديًا",
+  "FLIP_LAYERS_HORIZONTALLY": "قلب الطبقات المحددة أفقيًا",
+  "ROT_IMG_90": "تدوير الصورة 90 درجة",
+  "ROT_IMG_180": "تدوير الصورة 180 درجة",
+  "ROT_IMG_-90": "تدوير الصورة -90 درجة",
+  "ROT_LAYERS_90": "تدوير الطبقات المحددة 90 درجة",
+  "ROT_LAYERS_180": "تدوير الطبقات المحددة 180 درجة",
+  "ROT_LAYERS_-90": "تدوير الطبقات المحددة -90 درجة",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "تبديل محور التناظر العمودي",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "تبديل محور التناظر الأفقي",
+  "DELETE_PIXELS": "حذف pixels",
+  "DELETE_PIXELS_DESCRIPTIVE": "حذف pixels المحددة",
+  "RESIZE_DOCUMENT": "تغيير حجم العنصر",
+  "RESIZE_CANVAS": "تغيير حجم الصورة",
+  "CENTER_CONTENT": "توسيط المحتوى",
+  "CUT": "قص",
+  "CUT_DESCRIPTIVE": "قص المنطقة/الطبقات المحددة",
+  "PASTE": "لصق",
+  "PASTE_DESCRIPTIVE": "لصق محتويات الحافظة",
+  "PASTE_AS_NEW_LAYER": "لصق كطبقة جديدة",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "لصق من الحافضةكطبقة جديدة",
+  "PASTE_REFERENCE_LAYER": "لصق الطبقة المرجعية",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "لصق محتويات الحافظة كطبقة مرجعية",
+  "PASTE_COLOR": "لصق اللون",
+  "PASTE_COLOR_DESCRIPTIVE": "لصق اللون من الحافظة",
+  "PASTE_COLOR_SECONDARY": "لصق اللون على أنه ثانوي",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "الصق اللون من الحافظة كلون ثانوي",
+  "CLIPBOARD": "الحافظة",
+  "COPY": "نسخ",
+  "COPY_DESCRIPTIVE": "نسخ الي الحافضة",
+  "COPY_COLOR_HEX": "نسخ اللون الاساسي (HEX)",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "نسخ اللون الاساسي ك HEX",
+  "COPY_COLOR_RGB": "نسخ اللون الاساسي (RGB)",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "نسخ اللون الاساسي ك RGB",
+  "COPY_COLOR_SECONDARY_HEX": "نسخ اللون الثانوي (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": "افتح متصفح لوحة الألوان",
+  "OVERWRITE_PALETTE_CONSENT": "اللوحة '{0}' موجودة بالفعل ، هل تريد استبدالها؟",
+  "PALETTE_EXISTS": "لوح الألوان موجود بالفعل",
+  "REPLACE_PALETTE_CONSENT": "هل تريد استبدال اللوحة الحالية باللوحة المحددة؟",
+  "REPLACE_PALETTE": "استبدال اللوحة الحالية",
+  "SELECT_COLOR_1": "حدد اللون 1",
+  "SELECT_COLOR_2": "حدد اللون 2",
+  "SELECT_COLOR_3": "حدد اللون 3",
+  "SELECT_COLOR_4": "حدد اللون 4",
+  "SELECT_COLOR_5": "حدد اللون 5",
+  "SELECT_COLOR_6": "حدد اللون 6",
+  "SELECT_COLOR_7": "حدد اللون 7",
+  "SELECT_COLOR_8": "حدد اللون 8",
+  "SELECT_COLOR_9": "حدد اللون 9",
+  "SELECT_COLOR_10": "حدد اللون 10",
+  "SELECT_TOOL": "حدد الاداة {0}",
+  "SELECT_COLOR_1_DESCRIPTIVE": "حدد اللون الأول في اللوحة",
+  "SELECT_COLOR_2_DESCRIPTIVE": "حدد اللون الثاني في اللوحة",
+  "SELECT_COLOR_3_DESCRIPTIVE": "حدد اللون الثالث في اللوحة",
+  "SELECT_COLOR_4_DESCRIPTIVE": "حدد اللون الرابع في اللوحة",
+  "SELECT_COLOR_5_DESCRIPTIVE": "حدد اللون الخامس في اللوحة",
+  "SELECT_COLOR_6_DESCRIPTIVE": "حدد اللون السادس في اللوحة",
+  "SELECT_COLOR_7_DESCRIPTIVE": "حدد اللون السابع في اللوحة",
+  "SELECT_COLOR_8_DESCRIPTIVE": "حدد اللون الثامن في اللوحة",
+  "SELECT_COLOR_9_DESCRIPTIVE": "حدد اللون التاسع في اللوحة",
+  "SELECT_COLOR_10_DESCRIPTIVE": "حدد اللون العاشر في اللوحة",
+  "SWAP_COLORS": "تبديل الألوان",
+  "SWAP_COLORS_DESCRIPTIVE": "تبديل الألوان الأساسية والثانوية",
+  "SEARCH": "بحث",
+  "COMMAND_SEARCH": "اوامر البحث",
+  "OPEN_COMMAND_SEARCH": "فتح نافذة اوامر البحث",
+  "SELECT": "حدد",
+  "DESELECT": "الغاء التحديد",
+  "INVERT": "عكس",
+  "SELECTION": "اختيار",
+  "SELECT_ALL": "حدد الكل",
+  "SELECT_ALL_DESCRIPTIVE": "حدد كل شيء",
+  "CLEAR_SELECTION": "حذف المحدد",
+  "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_DESCRIPTIVE": "التحديد لقناع جديد",
+  "ADD_SELECTION_TO_MASK": "إضافة التحديد إلى القناع",
+  "SUBTRACT_SELECTION_FROM_MASK": "قطع التحديد من القناع",
+  "INTERSECT_SELECTION_MASK": "تقاطع التحديد مع القناع",
+  "SELECTION_TO_MASK": "التحديد للقناع",
+  "TO_NEW_MASK": "إلى قناع جديد",
+  "ADD_TO_MASK": "أضف إلى القناع",
+  "SUBTRACT_FROM_MASK": "قص من القناع",
+  "INTERSECT_WITH_MASK": "تتقاطع مع القناع",
+  "STYLUS": "قلم",
+  "TOGGLE_PEN_MODE": "تبديل وضع القلم",
+  "UNDO": "تراجع",
+  "UNDO_DESCRIPTIVE": "تراجع عن الإجراء الأخير",
+  "REDO": "إعادة",
+  "REDO_DESCRIPTIVE": "إعادة الإجراء الأخير",
+  "WINDOWS": "النوافذ",
+  "TOGGLE_GRIDLINES": "تبديل خطوط الشبكة",
+  "ZOOM_IN": "تكبير",
+  "ZOOM_OUT": "تصغير",
+  "NEW_WINDOW_FOR_IMG": "نافذة جديدة للصورة الحالية",
+  "CENTER_ACTIVE_VIEWPORT": "توسيط إطار العرض النشط",
+  "FLIP_VIEWPORT_HORIZONTALLY": "قلب إطار العرض أفقيًا",
+  "FLIP_VIEWPORT_VERTICALLY": "قلب إطار العرض رأسيًا",
+  "SETTINGS": "الاعدادات",
+  "OPEN_SETTINGS": "فتح الاعدادات",
+  "OPEN_SETTINGS_DESCRIPTIVE": "فتح نافذة الاعدادات",
+  "OPEN_STARTUP_WINDOW": "فتح نافذة التشغيل",
+  "OPEN_SHORTCUT_WINDOW": "افتح نافذة الاختصارات",
+  "OPEN_ABOUT_WINDOW": "فتح نافذة المعلومات",
+  "OPEN_NAVIGATION_WINDOW": "افتح نافذة التنقل",
+  "ERROR": "خطأ",
+  "INTERNAL_ERROR": "خطأ داخلي",
+  "ERROR_SAVE_LOCATION": "تعذر حفظ الملف في الموقع المحدد",
+  "ERROR_WHILE_SAVING": "حدث خطأ داخلي أثناء الحفظ. حاول مرة اخرى.",
+  "UNKNOWN_ERROR_SAVING": "حدث خطأ أثناء الحفظ.",
+  "FAILED_ASSOCIATE_LOSPEC": "فشل إقتران بروتوكول Lospec Palette.",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "تبرع",
+  "YES": "نعم",
+  "NO": "لا",
+  "CANCEL": "الغاء",
+  "UNNAMED": "بدون اسم",
+  "OPEN_COMMAND_DEBUG_WINDOW": "افتح نافذة تصحيح أخطاء الأمر",
+  "DELETE": "حذف",
+  "USER_PREFS": "تفضيلات المستخدم (Roaming)",
+  "SHORTCUT_FILE": "اختصار الملف (Roaming)",
+  "EDITOR_DATA": "بيانات البرنامج (Local)",
+  "MOVE_VIEWPORT_TOOLTIP": "ينقل إطار العرض. ({0})",
+  "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_ACTION_DISPLAY_DEFAULT": "انقر وتحرك لرسم مستطيل. اضغط مع الاستمرار على Shift لرسم مربع.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "انقر وحرك لرسم مربع.",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "احتفظ بالصورة الأصلية",
+  "ROTATE_VIEWPORT_TOOLTIP": "يدور منفذ العرض. ({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "انقر وحرك لتدوير منفذ العرض",
+  "SELECT_TOOL_TOOLTIP": "يختار المنطقة. ({0})",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وتحرك لتحديد منطقة. اضغط مع الاستمرار على Shift للإضافة إلى التحديد الحالي. استمر في الضغط على Ctrl لقصها منه.",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "انقر وانتقل للإضافة إلى التحديد الحالي.",
+  "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 لتفتيح.",
+  "COLOR_PICKER_TOOLTIP": "يختار اللون الأساسي من الصورة. ({0})",
+  "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 للنظر في الطبقات الحالية فقط.",
+  "LASSO_TOOL_TOOLTIP": "لاسو. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وتحرك لتحديد وحدات البكسل داخل لاسو. اضغط مع الاستمرار على Shift للإضافة إلى التحديد الحالي. استمر في الضغط على Ctrl للحذف منه.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "انقر وتحرك لإضافة وحدات بكسل داخل لاسو إلى التحديد.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "انقر وتحرك لحذف وحدات البكسل داخل لاسو من التحديد.",
+  "LINE_TOOL_TOOLTIP": "رسم خط على الصورة ({0}). اضغط مع الاستمرار على Shift لتمكين الالتقاط.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "انقر وتحرك لرسم خط. اضغط مع الاستمرار على Shift لتمكين الالتقاط.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "انقر وحرك الماوس لرسم خط مع تمكين الالتقاط.",
+  "MAGIC_WAND_TOOL_TOOLTIP": "العصا السحرية ({0}). ملء المحدد",
+  "MAGIC_WAND_ACTION_DISPLAY": "أنقر لملء التحديد.",
+  "PEN_TOOL": "قلم",
+  "BRIGHTNESS_TOOL": "السطوع",
+  "COLOR_PICKER_TOOL": "أداة انتقاء اللون",
+  "ELLIPSE_TOOL": "القطع الناقص",
+  "ERASER_TOOL": "ممحاة",
+  "FLOOD_FILL_TOOL": "ملء الفيضانات",
+  "LASSO_TOOL": "لاسو",
+  "LINE_TOOL": "خط",
+  "MAGIC_WAND_TOOL": "العصا السحرية",
+  "MOVE_TOOL": "تحريك",
+  "MOVE_VIEWPORT_TOOL": "تحريك منفذ العرض",
+  "RECTANGLE_TOOL": "مستطيل",
+  "ROTATE_VIEWPORT_TOOL": "تدوير منفذ العرض",
+  "SELECT_TOOL_NAME": "حدد",
+  "ZOOM_TOOL": "تكبير",
+  "SHAPE_LABEL": "شكل",
+  "MODE_LABEL": "الوضع",
+  "SCOPE_LABEL": "نطاق",
+  "FILL_SHAPE_LABEL": "ملء الشكل",
+  "FILL_COLOR_LABEL": "ملء اللون",
+  "TOOL_SIZE_LABEL": "حجم الأداة",
+  "STRENGTH_LABEL": "قوة",
+  "NEW": "جديد",
+  "ADD": "اضافة",
+  "SUBTRACT": "قص",
+  "INTERSECT": "تتقاطع",
+  "RECTANGLE": "مستطيل",
+  "CIRCLE": "دائرة",
+  "ABOUT": "حول البرنامج",
+  "MINIMIZE": "تصغير",
+  "RESTORE": "اعادة",
+  "MAXIMIZE": "تكبير",
+  "CLOSE": "اغلق",
+  "EXPORT_SIZE_HINT": "إذا كنت ترغب في مشاركة الصورة ، فجرّب {0}٪ للحصول على أفضل وضوح",
+  "CREATE": "انشاء",
+  "BASE_LAYER_NAME": "الطبقة الرئيسية",
+  "ENABLE_MASK": "تمكين القناع",
+  "SELECTED_AREA_EMPTY": "المنطقة المحددة فارغة",
+  "NOTHING_TO_COPY": "لا يوجد شي لنسخه",
+  "REFERENCE_LAYER_PATH": "مسار الطبقة المرجعية",
+  "FLIP": "توجيه",
+  "ROTATION": "دوران",
+  "ROT_IMG_90_D": "تدوير الصورة 90 درجة",
+  "ROT_IMG_180_D": "تدوير الصورة 180 درجة",
+  "ROT_IMG_-90_D": "تدوير الصورة -90 درجة",
+  "ROT_LAYERS_90_D": "تدوير الطبقات المحددة 90 درجة",
+  "ROT_LAYERS_180_D": "تدوير الطبقات المحددة 180 درجة",
+  "ROT_LAYERS_-90_D": "تدوير الطبقات المحددة -90 درجة",
+  "UNNAMED_PALETTE": "لوح غير مسمى",
+  "CLICK_SELECT_PRIMARY": "انقر لتحديد اللون الرئيسي.",
+  "PEN_MODE": "وضع القلم",
+  "VIEW": "منظر",
+  "HORIZONTAL_LINE_SYMMETRY": "تناظر الخط الأفقي",
+  "VERTICAL_LINE_SYMMETRY": "تناظر الخط العمودي",
+  "COLOR_PICKER_TITLE": "أداة اختيار اللون",
+  "COLOR_SLIDERS_TITLE": "لوحة الالوان",
+  "PALETTE_TITLE": "اللوحة",
+  "SWATCHES_TITLE": "حوامل",
+  "LAYERS_TITLE": "الطبقات",
+  "NAVIGATION_TITLE": "التنقل",
+  "NORMAL_BLEND_MODE": "عادي",
+  "DARKEN_BLEND_MODE": "أغمق",
+  "MULTIPLY_BLEND_MODE": "تضاعف",
+  "COLOR_BURN_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": "اختلاف",
+  "EXCLUSION_BLEND_MODE": "استبعاد",
+  "HUE_BLEND_MODE": "مسحة",
+  "SATURATION_BLEND_MODE": "التشبع",
+  "LUMINOSITY_BLEND_MODE": "لمعان",
+  "COLOR_BLEND_MODE": "اللون",
+  "NOT_SUPPORTED_BLEND_MODE": "غير مدعوم",
+  "RESTART": "اعد تشغيل",
+  "SORT_BY": "ترتيب حسب",
+  "NAME": "الاسم",
+  "COLORS": "الالوان",
+  "DEFAULT": "الافتراضي",
+  "ALPHABETICAL": "مرتب حسب الحروف الأبجدية",
+  "COLOR_COUNT": "عدد الألوان",
+  "ANY": "اي",
+  "MAX": "الاقصى",
+  "MIN": "الاقل",
+  "EXACT": "بالضبط",
+  "ASCENDING": "تصاعدي",
+  "DESCENDING": "تنازلي",
+  "NAME_IS_TOO_LONG": "الاسم طويل جدا",
+  "STOP_IT_TEXT1": "هذا يكفي. رتب أسماء ملفاتك.",
+  "STOP_IT_TEXT2": "هل يمكنك التوقف عن نسخ هذه الأسماء من فضلك؟",
+  "REPLACER_TOOLTIP": "انقر بزر الماوس الأيمن على لوحة الألوان واختر 'استبدال' أو أسقطها هنا.",
+  "CLICK_TO_CHOOSE_COLOR": "انقر لاختيار اللون",
+  "REPLACE_COLOR": "استبدل اللون",
+  "PALETTE_COLOR_TOOLTIP": "انقر لتحديد اللون الرئيسي. قم بالسحب والإفلات على لون لوح آخر لتبديلها.",
+  "ADD_FROM_SWATCHES": "أضف من العينات",
+  "ADD_COLOR_TO_PALETTE": "أضف اللون إلى لوح الألوان",
+  "USE_IN_CURRENT_IMAGE": "استخدم في الصورة الحالية",
+  "ADD_TO_FAVORITES": "اضافة الى المفضلة",
+  "BROWSE_PALETTES": "تصفح اللوحات",
+  "LOAD_PALETTE": "تحميل لوحة",
+  "SAVE_PALETTE": "حفض اللوحة",
+  "FAVORITES": "المفضلة",
+  "ADD_FROM_CURRENT_PALETTE": "أضف من اللوحة الحالية",
+  "OPEN_PALETTES_DIR_TOOLTIP": "افتح دليل اللوحات في المستكشف",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "تصفح اللوحات على Lospec",
+  "IMPORT_FROM_FILE_TOOLTIP": "اضافة من ملف",
+  "TOP_LEFT": "أعلى اليسار",
+  "TOP_CENTER": "اعلى الوسط",
+  "TOP_RIGHT": "اعلى اليمين",
+  "MIDDLE_LEFT": "اليسار الأوسط",
+  "MIDDLE_CENTER": "منتصف الوسط",
+  "MIDDLE_RIGHT": "وسط اليمين",
+  "BOTTOM_LEFT": "أسفل اليسار",
+  "BOTTOM_CENTER": "اسفل الوسط",
+  "BOTTOM_RIGHT": "أسفل اليمين",
+  "CLIP_TO_BELOW": "مقطع للطبقة أدناه",
+  "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": "اضافة من قالب",
+  "SHORTCUTS_IMPORTED_SUCCESS": "تم اضافة الاختصارات بنجاح.",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "هل أنت متأكد من أنك تريد إعادة تعيين جميع الاختصارات إلى قيمتها الافتراضية؟",
+  "SUCCESS": "نجاح",
+  "WARNING": "تحذير",
+  "ERROR_IMPORTING_IMAGE": "حدث خطأ أثناء استيراد الصورة.",
+  "SHORTCUTS_CORRUPTED_TITLE": "ملف الاختصارات تالف",
+  "SHORTCUTS_CORRUPTED": "تعرض ملف الاختصارات للتلف ، اعادة التعيين إلى الوضع الافتراضي.",
+  "FAILED_DOWNLOAD_PALETTE": "فشل تحميل لوح الألوان",
+  "FILE_INCORRECT_FORMAT": "لم يكن الملف بتنسيق صحيح",
+  "INVALID_FILE": "ملف غير صالح",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "تنسيق ملف الاختصارات ليس صحيحًا",
+  "UNSUPPORTED_FILE_FORMAT": "تنسيق الملف هذا غير مدعوم",
+  "ALREADY_ASSIGNED": "تم تعيينه بالفعل",
+  "REPLACE": "استبدال",
+  "SWAP": "تبديل",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "تم بالفعل تعيين هذا الاختصار لـ '{0}'\nهل تريد استبدال الاختصار الحالي أم تبديل الاختصارين؟",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "تم بالفعل تعيين هذا الاختصار لـ '{0}'\nهل تريد استبدال الاختصار الموجود؟",
+  "UNSAVED_CHANGES": "تغييرات غير محفوضة",
+  "DOCUMENT_MODIFIED_SAVE": "تم تعديل العنصر. هل تريد ان تحفظ التغييرات؟",
+  "SESSION_UNSAVED_DATA": "{0} ببيانات غير محفوظة. هل أنت متأكد؟",
+  "PROJECT_MAINTAINERS": "مشرفو المشروع",
+  "OTHER_AWESOME_CONTRIBUTORS": "وغيرهم من المساهمين الرائعين",
+  "HELP": "مساعد",
+  "STOP_IT_TEXT3": "لا ، حقًا ، توقف عن ذلك.",
+  "STOP_IT_TEXT4": "أليس لديك أي شيء أفضل لتفعله؟",
+  "LINEAR_DODGE_BLEND_MODE": "مراوغة خطية (إضافة)",
+  "PRESS_ANY_KEY": "اضغط اي مفتاح",
+  "NONE_SHORTCUT": "غير محدد",
+  "REFERENCE": "مرجع",
+  "PUT_REFERENCE_LAYER_ABOVE": "ضع طبقة مرجعية أعلاه",
+  "PUT_REFERENCE_LAYER_BELOW": "ضع طبقة مرجعية أدناه",
+  "TOGGLE_VERTICAL_SYMMETRY": "تبديل التناظر العمودي",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "تبديل التناظر الأفقي",
+  "RESET_VIEWPORT": "إعادة تعيين منفذ العرض",
+  "VIEWPORT_SETTINGS": "إعدادات منفذ العرض",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "انقر بالماوس مع الاستمرار لتحريك وحدات البكسل في الطبقات المحددة.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "انقر بالماوس مع الاستمرار لتحريك جميع الطبقات.",
+  "CTRL_KEY": "Ctrl",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "إعادة تسمية",
+  "PIXEL_UNIT": "بكسل",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "افتح نافذة تصحيح أخطاء الترجمة",
+  "FORCE_OTHER_FLOW_DIRECTION": "فرض اتجاه تدفق آخر",
+  "API_KEY": "مفتاح API",
+  "LOCALIZATION_VIEW_TYPE": "نوع عرض الترجمة",
+  "LOAD_LANGUAGE_FROM_FILE": "تحميل اللغة من ملف",
+  "LOG_IN": "تسجيل دخول",
+  "SYNC": "مزامنة",
+  "NOT_LOGGED_IN": "لم تقم بتسجيل الدخول",
+  "POE_EDITOR_ERROR": "خطأ POEditor: {0} {1}",
+  "HTTP_ERROR_MESSAGE": "خطأ HTTP: {0} {1}",
+  "LOGGED_IN": "تم التسجيل",
+  "SYNCED_SUCCESSFULLY": "تمت المزامنة بنجاح",
+  "EXCEPTION_ERROR": "استثناء: {0}",
+  "DROP_PALETTE": "قم بإسقاط اللوحة هنا",
+  "SECURITY_ERROR": "خطآ امني",
+  "SECURITY_ERROR_MSG": "لا توجد حقوق للكتابة إلى الموقع المحدد.",
+  "IO_ERROR": "خطأ IO",
+  "IO_ERROR_MSG": "خطأ أثناء الكتابة على القرص.",
+  "FAILED_ASSOCIATE_PIXI": "فشل إقران ملف .pixi بـ PixiEditor.",
+  "COULD_NOT_SAVE_PALETTE": "حدث خطأ أثناء حفظ اللوحة.",
+  "NO_COLORS_TO_SAVE": "لا توجد ألوان للحفظ.",
+  "ALL_LAYERS": "جميع الطبقات",
+  "SINGLE_LAYER": "طبقة واحدة",
+  "CHOOSE": "اختيار",
+  "REMOVE": "ازالة",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "الملف ليس ملف \".aseprite-keys\"",
+  "FILE_HAS_INVALID_SHORTCUT": "يحتوي الملف على اختصار غير صالح",
+  "FILE_EXTENSION_NOT_SUPPORTED": "نوع الملف '{0}' غير مدعوم",
+  "ERROR_READING_FILE": "خطأ أثناء قراءة الملف",
+  "DISCARD_PALETTE": "تجاهل لوح الألوان",
+  "DISCARD_PALETTE_CONFIRMATION": "هل أنت متأكد أنك تريد تجاهل لوحة الألوان الحالية؟ هذا لا يمكن التراجع عنها.",
+  "IMPORT_AS_NEW_LAYER": "اضافة كطبقة جديدة",
+  "PASTE_AS_PRIMARY_COLOR": "لصق كلون أساسي",
+  "IMPORT_AS_NEW_FILE": "اضافة كملف جديد",
+  "IMPORT_PALETTE_FILE": "اضافة ملف لوح الألوان",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "اضافة الألوان إلى لوح الألوان",
+  "IMPORT_SINGLE_PALETTE_COLOR": "اضافة اللون إلى لوح الألوان",
+  "IMPORT_AS_REFERENCE_LAYER": "اضافة كطبقة مرجعية",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "انقر بزر الماوس الأيمن لاختيار اللون ، وانقر بزر الماوس الأيمن مع الاستمرار بالضغط على Shift لنسخ اللون إلى الحافظة",
+  "OPEN_FILE_FROM_CLIPBOARD": "فتح من الحافظة",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "فتح من الحافظة",
+  "OPEN_LOCALIZATION_DATA": "هل تريد فتح LocalizationData.json؟\nتم وضع البيانات المحدثة في الحافظة.\nلاحظ أنه لن يتم تطبيق التغييرات حتى إعادة تشغيل البرنامج",
+  "DOWNLOADING_LANGUAGE_FAILED": "فشل تحميل اللغة.\nربما تم الإفراط في استخدام مفتاح API.",
+  "LOCALIZATION_DATA_NOT_FOUND": "مسار بيانات الترجمة غير موجود",
+  "APPLY": "حفض",
+  "UPDATE_SOURCE": "تحديث المصدر",
+  "COPY_TO_CLIPBOARD": "نسخ للحافضة",
+  "LANGUAGE_FILE_NOT_FOUND": "ملف اللغة غير موجود.\nالبحث عن {0}",
+  "PROJECT_ROOT_NOT_FOUND": "لم يتم العثور على جذر مشروع PixiEditor.\nأبحث عن PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "مجلد الترجمة غير موجود.\nأبحث عن/البيانات/التعريب",
+  "SELECT_A_LANGUAGE": "اختار لغة",
+  "DONE": "انتهاء",
+  "SOURCE_UNSET_OR_MISSING": "المصدر مفقود/غير محدد",
+  "SOURCE_NEWER": "مصدر أحدث",
+  "SOURCE_UP_TO_DATE": "تم تحديث المصدر",
+  "SOURCE_OLDER": "سحابة احدث",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
+  "SHORTCUTS_TITLE": "Shortcuts",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+}

+ 564 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/cs.json

@@ -0,0 +1,564 @@
+{
+  "RECENT_FILES": "Poslední soubory",
+  "OPEN_FILE": "Otevřít soubor",
+  "NEW_FILE": "Nový",
+  "RECENT_EMPTY_TEXT": "Hodně prázdného místa",
+  "LANGUAGE": "Jazyk",
+  "GENERAL": "Obecný",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "Klávesové zkratky",
+  "MISC": "Různé",
+  "SHOW_STARTUP_WINDOW": "Ukazovat spouštěcí okno",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "Zobrazit náhled obrázku na hlavním panelu",
+  "RECENT_FILE_LENGTH": "Délka seznamu posledních souborů",
+  "RECENT_FILE_LENGTH_TOOLTIP": "Kolik dokumentů se objeví pod \"File > Recent\".\nNormálně: 8",
+  "DEFAULT_NEW_SIZE": "Standartní velikost nového souboru",
+  "WIDTH": "Šířka",
+  "HEIGHT": "Výška",
+  "TOOLS": "Nástroje",
+  "ENABLE_SHARED_TOOLBAR": "Zapnout sdílený panel nástrojů",
+  "AUTOMATIC_UPDATES": "Automatické aktualizace",
+  "CHECK_FOR_UPDATES": "Vyhledávat aktualizace při spuštění",
+  "UPDATE_STREAM": "Druh verze",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "Aktualizační  kanály mohou být aktualizovány jen v samostatných verzích aplikace (stáhnutých z https://pixieditor.net/) Steam a Microsoft Store verze zacházejí s jednotlivými verzemi odlišně.",
+  "DEBUG": "Debug",
+  "ENABLE_DEBUG_MODE": "Aktivovat Debug mód",
+  "OPEN_CRASH_REPORTS_DIR": "Otevřít složku crash reportů",
+  "DISCORD_RICH_PRESENCE": "Bohatá přítomnost",
+  "ENABLED": "Povoleno",
+  "SHOW_IMAGE_NAME": "Ukázat jméno obrázku",
+  "SHOW_IMAGE_SIZE": "Ukázat název obrázku",
+  "SHOW_LAYER_COUNT": "Zobrazit počet vrstev",
+  "FILE": "Soubor",
+  "RECENT": "Poslední",
+  "OPEN": "Otevřít",
+  "SAVE_PIXI": "Uložit (.pixi)",
+  "SAVE_AS_PIXI": "Uložit jako... (.pixi)",
+  "EXPORT_IMG": "Exportovat (.png, .jpg, etc.)",
+  "EDIT": "Editovat",
+  "EXIT": "Odejít",
+  "PERCENTAGE": "Procentuální ",
+  "ABSOLUTE": "Absolutní",
+  "PRESERVE_ASPECT_RATIO": "Zachování poměru stran",
+  "ANCHOR_POINT": "Upevněný bod",
+  "RESIZE_IMAGE": "Změnit velikost obrázku",
+  "RESIZE": "Upravit velikost",
+  "DOCUMENTATION": "Dokumentace",
+  "WEBSITE": "Web",
+  "OPEN_WEBSITE": "Otevřít web",
+  "REPOSITORY": "Úložiště",
+  "OPEN_REPOSITORY": "Otevřít úložiště",
+  "LICENSE": "Licence",
+  "OPEN_LICENSE": "Otevřít licenci",
+  "THIRD_PARTY_LICENSES": "Licence třetí strany",
+  "OPEN_THIRD_PARTY_LICENSES": "Otevřít licenci třetí strany",
+  "APPLY_TRANSFORM": "Použít transformaci",
+  "INCREASE_TOOL_SIZE": "Zvětšit velikost nástroje",
+  "DECREASE_TOOL_SIZE": "Zmenšit velikost nástroje",
+  "TO_INSTALL_UPDATE": "Nainstalovat aktualizaci {0}",
+  "DOWNLOADING_UPDATE": "Stahování aktualizace...",
+  "UPDATE_READY": "Je tu nová aktualizace. Chceš aby jsme jí pro tebe nainstalovali teď nebo až později?",
+  "NEW_UPDATE": "Nová aktualizace",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Potřebujeme pro dokončení aktualizace povolení od Admina. Spusť tedy PixiEditor jako administrátor.",
+  "INSUFFICIENT_PERMISSIONS": "Nedostatečná oprávnění",
+  "UPDATE_CHECK_FAILED": "Při hledání aktualizací se něco pokazilo",
+  "COULD_NOT_CHECK_FOR_UPDATES": "Z nějakého důvodu nejsme schopni zjistit jestli je nějaká nová aktualizace.",
+  "VERSION": "Verze {0}",
+  "OPEN_TEMP_DIR": "Otevřít složku \"temp\"",
+  "OPEN_LOCAL_APPDATA_DIR": "Otevřít složku \"Local AppData\"",
+  "OPEN_ROAMING_APPDATA_DIR": "Otevřít složku \"Roaming AppData\"",
+  "OPEN_INSTALLATION_DIR": "Otevřít instalační složku",
+  "DUMP_ALL_COMMANDS": "Vypsat všechny příkazy",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Vypsat všechny příkazy do textového souboru",
+  "CRASH": "Crash",
+  "CRASH_APP": "Shodit aplikaci",
+  "DELETE_USR_PREFS": "Smazat uživatelské předvolby (Roaming AppData)",
+  "DELETE_SHORTCUT_FILE": "Odstranit složkus",
+  "DELETE_EDITOR_DATA": "Odstranit data editoru (Local AppData)",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "Vytvořit šablonu pro klávesové zkratky",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Vytvořit \"json\" šablonu pro klávesové zkratky",
+  "VALIDATE_SHORTCUT_MAP": "Ověřit mapu klávesových zkratek",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Ověřuje mapu klávesových zkratek",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "Empty keys: {0}\nUnknown Commands: {1}",
+  "RESULT": "Výsledek",
+  "CLEAR_RECENT_DOCUMENTS": "Vyčistit poslední dokumenty",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Vyčistit nedávno otevřené dokumenty",
+  "OPEN_CMD_DEBUG_WINDOW": "Otevřít okno Command debug",
+  "PATH_DOES_NOT_EXIST": "{0} neexistuje.",
+  "LOCATION_DOES_NOT_EXIST": "Umístění neexistuje.",
+  "FILE_NOT_FOUND": "Soubor nebyl nalezen.",
+  "ARE_YOU_SURE": "Jsi si opravdu jist, že tuto akci chceš udělat? Promysli to ještě jednou či dvakrát ať toho pak nelituješ.",
+  "ARE_YOU_SURE_PATH_FULL_PATH": "Jsi si jist že chceš smazat {0}?\nTahle data budou ztracena na všech instalací.\n(Celá cesta k souboru: {1})",
+  "FAILED_TO_OPEN_FILE": "Nepodařilo se otevřít soubor",
+  "OLD_FILE_FORMAT": "Starý formát souboru",
+  "OLD_FILE_FORMAT_DESCRIPTION": "Tenhle .pixi soubor používá starý formát,\nkterý již bohužel není podporován a nemůže být otevřen.",
+  "NOTHING_FOUND": "Nic se nenašlo",
+  "EXPORT": "Exportovat",
+  "EXPORT_IMAGE": "Exportovat obrázek",
+  "IMPORT": "Importovat",
+  "SHORTCUT_TEMPLATES": "Šablony klávesových zkratek",
+  "RESET_ALL": "Resetovat vše",
+  "LAYER": "Vrstva",
+  "LAYER_DELETE_SELECTED": "Smazat aktivní vrstvu/složku",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Smazat aktivní vrstvu nebo složku",
+  "LAYER_DELETE_ALL_SELECTED": "Smazat všechny vybrané vrstvy/složky",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Smazat všechny vybrané vrstvy a/nebo složky",
+  "DELETE_SELECTED_PIXELS": "Odstranit vybrané pixely",
+  "NEW_FOLDER": "Nová složka",
+  "CREATE_NEW_FOLDER": "Vytvořit složku",
+  "NEW_LAYER": "Nová vrstva",
+  "CREATE_NEW_LAYER": "Vytvořit novou vrstvu",
+  "NEW_IMAGE": "Nový obrázek",
+  "CREATE_NEW_IMAGE": "Vytvořit nový obrázek",
+  "SAVE": "Uložit",
+  "SAVE_AS": "Uložit jako...",
+  "IMAGE": "Obrázek",
+  "SAVE_IMAGE": "Uložit obrázek",
+  "SAVE_IMAGE_AS": "Uložit obrázek jako nový",
+  "DUPLICATE": "Duplikovat",
+  "DUPLICATE_SELECTED_LAYER": "Duplikovat vybranou vrstvu",
+  "CREATE_MASK": "Vytvořit masku",
+  "DELETE_MASK": "Odstranit masku",
+  "TOGGLE_MASK": "Přepnout masku",
+  "APPLY_MASK": "Použit masku",
+  "TOGGLE_VISIBILITY": "Přepnout viditelnost",
+  "MOVE_MEMBER_UP": "Posunout člena nahoru",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "Pohnout vybranou vrstvu nebo složku nahoru",
+  "MOVE_MEMBER_DOWN": "Posunout člena dolů",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Pohnout vybranou vrstvu nebo složku dolů",
+  "MERGE_ALL_SELECTED_LAYERS": "Spojit všechny vybrané vrstvy",
+  "MERGE_WITH_ABOVE": "Spojit vybranou vrstvu s vrstvou nad",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "Spojit vybranou vrstvu s vrstvou nad ní",
+  "MERGE_WITH_BELOW": "Spojit vybranou vrstvu s vrstvou pod ní",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "Spojit vybranou vrstvu s vrstvou pod ní",
+  "ADD_REFERENCE_LAYER": "Přidat referenční vrstvu",
+  "DELETE_REFERENCE_LAYER": "Odstranit referenční vrstvu",
+  "TRANSFORM_REFERENCE_LAYER": "Transformovat referenční vrstvu",
+  "TOGGLE_REFERENCE_LAYER_POS": "Přepnout pozici referenční vrstvy",
+  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Přepnout referenční vrstvu mezi nejvyšší nebo nejnižší",
+  "RESET_REFERENCE_LAYER_POS": "Z resetovat pozici referenční vrstvy",
+  "CLIP_CANVAS": "Připni Canvas",
+  "FLIP_IMG_VERTICALLY": "Překlopit obrázek svisle",
+  "FLIP_IMG_HORIZONTALLY": "Překlopit obrázek vodorovně",
+  "FLIP_LAYERS_VERTICALLY": "Svisle překlopit vybrané vrstvy",
+  "FLIP_LAYERS_HORIZONTALLY": "Vodorovně překlopit vybrané vrstvy",
+  "ROT_IMG_90": "Otočit obrázek o 90 stupňů",
+  "ROT_IMG_180": "Otočit obrázek o 180 stupňů",
+  "ROT_IMG_-90": "Otočit obrázek o -90 stupňů",
+  "ROT_LAYERS_90": "Otočit vybrané vrstvy o 90 stupňů",
+  "ROT_LAYERS_180": "Otočit vybrané vrstvy o 180 stupňů",
+  "ROT_LAYERS_-90": "Otočit vybrané vrstvy o -90 stupňů",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "Přepnout vertikální osu symetrie",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "Zapnout osu vodorovné symetrie",
+  "DELETE_PIXELS": "Odstranit pixely",
+  "DELETE_PIXELS_DESCRIPTIVE": "Odstranit vybrané pixely",
+  "RESIZE_DOCUMENT": "Změnit velikost dokumentu",
+  "RESIZE_CANVAS": "Změnit velikost canvasu",
+  "CENTER_CONTENT": "Vycentrovat obsah",
+  "CUT": "Oříznout",
+  "CUT_DESCRIPTIVE": "Oříznout vybranou oblast/vrstvy",
+  "PASTE": "Vložit",
+  "PASTE_DESCRIPTIVE": "Vložit obsah schránky",
+  "PASTE_AS_NEW_LAYER": "Vložit jako novou vrstvu",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Vložit ze schránky jako novou vrstvu",
+  "PASTE_REFERENCE_LAYER": "Vložit referenční vrstvu",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Vložit obsah schránky jako referenční vrstvu",
+  "PASTE_COLOR": "Vložit barvu",
+  "PASTE_COLOR_DESCRIPTIVE": "Vložit barvu ze schránky",
+  "PASTE_COLOR_SECONDARY": "Vložit barvu jako vedlejší",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Vložit barvu ze schránky jako vedlejší barvu",
+  "CLIPBOARD": "Schránka",
+  "COPY": "Kopírovat",
+  "COPY_DESCRIPTIVE": "Zkopírovat do schránky",
+  "COPY_COLOR_HEX": "Zkopírovat hlavní barvu (HEX)",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "Zkopírovat hlavní barvu jako HEX kód",
+  "COPY_COLOR_RGB": "Zkopírovat hlavní barvu (RGB)",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "Zkopíruj hlavní barvu jako RGB kód",
+  "COPY_COLOR_SECONDARY_HEX": "Zkopíruj vedlejší barvu (HEX)",
+  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Zkopíruj vedlejší barvu jako HEX kód",
+  "COPY_COLOR_SECONDARY_RGB": "Zkopírovat vedlejší barvu (RGB)",
+  "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "Zkopírovat vedlejší barvu jako RGB kód",
+  "PALETTE_COLORS": "Barvy palety",
+  "REPLACE_SECONDARY_BY_PRIMARY": "Nahradit vedlejší barvu barvou vedlejší",
+  "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "Nahradit vedlejší barvu barvou vedlejší",
+  "REPLACE_PRIMARY_BY_SECONDARY": "Nahradit hlavní barvu barvou vedlejší",
+  "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Nahradit hlavní barvu barvou vedlejší",
+  "OPEN_PALETTE_BROWSER": "Otevřít prohlížeč palet",
+  "OVERWRITE_PALETTE_CONSENT": "Paleta \"{0}\" již existuje, chcete ji přepsat?",
+  "PALETTE_EXISTS": "Paleta již existuje",
+  "REPLACE_PALETTE_CONSENT": "Nahradit současnou paletu s",
+  "REPLACE_PALETTE": "Nahradit současnou paletu",
+  "SELECT_COLOR_1": "Vybrat barvu 1",
+  "SELECT_COLOR_2": "Vybrat barvu 2",
+  "SELECT_COLOR_3": "Vybrat barvu 3",
+  "SELECT_COLOR_4": "Vybrat barvu 4",
+  "SELECT_COLOR_5": "Vybrat barvu 5",
+  "SELECT_COLOR_6": "Vybrat barvu 6",
+  "SELECT_COLOR_7": "Vybrat barvu 7",
+  "SELECT_COLOR_8": "Vybrat barvu 8",
+  "SELECT_COLOR_9": "Vybrat barvu 9",
+  "SELECT_COLOR_10": "Vybrat barvu 10",
+  "SELECT_TOOL": "Vybrat {0} Nástroj",
+  "SELECT_COLOR_1_DESCRIPTIVE": "Vybrat první barvu z palety",
+  "SELECT_COLOR_2_DESCRIPTIVE": "Vybrat druhou barvu z palety",
+  "SELECT_COLOR_3_DESCRIPTIVE": "Vybrat třetí barvu z palety",
+  "SELECT_COLOR_4_DESCRIPTIVE": "Vybrat čtvrtou barvu z palety",
+  "SELECT_COLOR_5_DESCRIPTIVE": "Vybrat pátou barvu z palety",
+  "SELECT_COLOR_6_DESCRIPTIVE": "Vybrat šestou barvu z palety",
+  "SELECT_COLOR_7_DESCRIPTIVE": "Vybrat sedmou barvu z palety",
+  "SELECT_COLOR_8_DESCRIPTIVE": "Vybrat osmou barvu z palety",
+  "SELECT_COLOR_9_DESCRIPTIVE": "Vybrat devátou barvu z palety",
+  "SELECT_COLOR_10_DESCRIPTIVE": "Vybrat desátou barvu z palety",
+  "SWAP_COLORS": "Přepnout barvy",
+  "SWAP_COLORS_DESCRIPTIVE": "Přepnout mezi hlavní a vedlejší barvou",
+  "SEARCH": "Hledat",
+  "COMMAND_SEARCH": "Vyhledávač příkazů",
+  "OPEN_COMMAND_SEARCH": "Otevřít okno vyhledávač příkazů",
+  "SELECT": "Vybrat",
+  "DESELECT": "Zrušit výběr",
+  "INVERT": "Invertovat",
+  "SELECTION": "Výběr",
+  "SELECT_ALL": "Vybrat vše",
+  "SELECT_ALL_DESCRIPTIVE": "Vybrat vše",
+  "CLEAR_SELECTION": "Vyčistit vybrané",
+  "INVERT_SELECTION": "Invertovat výběr",
+  "INVERT_SELECTION_DESCRIPTIVE": "Invertovat vybranou oblast",
+  "TRANSFORM_SELECTED_AREA": "Transformovat vybrané pole",
+  "NUDGE_SELECTED_LEFT": "Posunout vybraný objekt doleva",
+  "NUDGE_SELECTED_RIGHT": "Posunout vybraný objekt doprava",
+  "NUDGE_SELECTED_UP": "Posunout vybraný objekt nahoru",
+  "NUDGE_SELECTED_DOWN": "Posunout vybraný objekt dolů",
+  "MASK_FROM_SELECTION": "Nová maska z výběru",
+  "MASK_FROM_SELECTION_DESCRIPTIVE": "Výběr pro novou masku",
+  "ADD_SELECTION_TO_MASK": "Přidat výběr k masce",
+  "SUBTRACT_SELECTION_FROM_MASK": "Odebrat výběr z masky",
+  "INTERSECT_SELECTION_MASK": "Výběr průsečíku s maskou",
+  "SELECTION_TO_MASK": "Výběr pro masku",
+  "TO_NEW_MASK": "Na novou masku",
+  "ADD_TO_MASK": "Přidat do masky",
+  "SUBTRACT_FROM_MASK": "Odebrat z masky",
+  "INTERSECT_WITH_MASK": "průsečík s maskou",
+  "STYLUS": "Stylus",
+  "TOGGLE_PEN_MODE": "Přepnout režim pera",
+  "UNDO": "Zpět",
+  "UNDO_DESCRIPTIVE": "Poslední akce zpět",
+  "REDO": "Znovu",
+  "REDO_DESCRIPTIVE": "Udělat znovu poslední akci",
+  "WINDOWS": "Okna",
+  "TOGGLE_GRIDLINES": "Zapnout mřížku",
+  "ZOOM_IN": "Přiblížit",
+  "ZOOM_OUT": "Oddálit",
+  "NEW_WINDOW_FOR_IMG": "Nové okno pro aktuální obrázek",
+  "CENTER_ACTIVE_VIEWPORT": "Vycentrovat aktivní okna zobrazení",
+  "FLIP_VIEWPORT_HORIZONTALLY": "Vodorovně překlopit pole zobrazení",
+  "FLIP_VIEWPORT_VERTICALLY": "Svisle překlopit pole zobrazení",
+  "SETTINGS": "Nastavení",
+  "OPEN_SETTINGS": "Otevřít nastavení",
+  "OPEN_SETTINGS_DESCRIPTIVE": "Otevřít okno nastavení",
+  "OPEN_STARTUP_WINDOW": "Otevřít spouštěcí okno",
+  "OPEN_SHORTCUT_WINDOW": "Otevřít okno klávesových zkratek",
+  "OPEN_ABOUT_WINDOW": "Otevřít okno s informacemi",
+  "OPEN_NAVIGATION_WINDOW": "Otevřít okno navigace",
+  "ERROR": "Chyba",
+  "INTERNAL_ERROR": "Interní error",
+  "ERROR_SAVE_LOCATION": "Soubor se nepodařilo uložit do zadaného umístění",
+  "ERROR_WHILE_SAVING": "Při ukládání došlo k interní chybě. Zkuste to prosím znovu.",
+  "UNKNOWN_ERROR_SAVING": "Něco se nepovedlo při ukládání.",
+  "FAILED_ASSOCIATE_LOSPEC": "Nepodařilo se spojit protokolem Lospec Palette.",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "Přispět",
+  "YES": "ANO",
+  "NO": "Ne",
+  "CANCEL": "Zrušit",
+  "UNNAMED": "Bez jména",
+  "OPEN_COMMAND_DEBUG_WINDOW": "Otevřít okno Command debug",
+  "DELETE": "Odstranit",
+  "USER_PREFS": "Předvolby uživatele (Roaming)",
+  "SHORTCUT_FILE": "Složka s klávesovými zkratky (Roaming)",
+  "EDITOR_DATA": "Data editoru (Local)",
+  "MOVE_VIEWPORT_TOOLTIP": "Posunout pole zobrazení. ({0})",
+  "MOVE_VIEWPORT_ACTION_DISPLAY": "Klikni a posuň myší pro přesunutí pole zobrazení.",
+  "MOVE_TOOL_TOOLTIP": "Pohnout vybrané pixely ({0}). Drž \"Ctrl\" pro pohnutí se všemi vrstvy.",
+  "MOVE_TOOL_ACTION_DISPLAY": "Podržením myši přesunete vybrané pixely. Podržením klávesy Ctrl přesunete všechny vrstvy.",
+  "PEN_TOOL_TOOLTIP": "Pero. ({0})",
+  "PEN_TOOL_ACTION_DISPLAY": "Klikni a posuň myší pro malování.",
+  "PIXEL_PERFECT_SETTING": "Perfektní pixely",
+  "RECTANGLE_TOOL_TOOLTIP": "Nakreslí obdélník na canvas ({0}). Podržením klávesy Shift nakreslíte čtverec.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "Klikni a posuň myší pro vytvoření Obdélníku. Drž \"Shift\" pro vytvoření čtverce.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Klikni a posuň myší pro vytvoření čtverce.",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "Ponechat originální obrázek",
+  "ROTATE_VIEWPORT_TOOLTIP": "Otáčí pohled. ({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "Klikni a posuň myší pro otočení pohledu.",
+  "SELECT_TOOL_TOOLTIP": "Vybrána oblast. ({0})",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Klikni a posuň myší pro vybrání oblasti. Podrž \"Shift\" pro přidání do existujícího výběru. Podrž \"Ctrl\" pro odebrání z něj.",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Klikni a posuň myší pro přidání do současného výběru.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Klikni a posuň myší pro odebrání ze současného výběru.",
+  "ZOOM_TOOL_TOOLTIP": "Přiblížení pohledu ({0}). Klikni pro přiblížení, podrž \"ctrl\" a klikni pro oddálení.",
+  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Klikni a posuň myší pro přiblížení. Klikni pro přiblížení, podrž \"Ctrl\" a klikni pro oddálení.",
+  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Klikni a posuň myší pro přiblížení. Klikni pro oddálení, pusť \"Ctrl\" a klikni pro přiblížení.",
+  "BRIGHTNESS_TOOL_TOOLTIP": "Udělá pixely tmavší nebo světlejší. ({0}). Drž \"Ctrl\" aby dělal ty pixely tmavší.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Kreslením na pixely je zesvětlíš. Podrž \"Ctrl\" pro jejich ztmavnutí.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Kreslením na pixely je ztmavíš. Pusť \"Ctrl\" pro jejich zesvětlení.",
+  "COLOR_PICKER_TOOLTIP": "Vybere hlavní barvu z canvasu. ({0})",
+  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Klikni pro výběr barev. Podrž \"Ctrl\" abys schoval canvas. Podrž \"Shift\" pro schování referenční vrstvy.",
+  "ELLIPSE_TOOL_TOOLTIP": "Vytvoří elipsu na canvas ({0}). Podrž \"Shift\" pro přidání kružnice.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Klikni a posuň myší pro vytvoření elipsy. Podrž \"Shift\" pro vytvoření kružnice.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Klikni a posuň myší pro vytvoření kružnice.",
+  "ERASER_TOOL_TOOLTIP": "Vygumuje barvu z pixelu. ({0})",
+  "ERASER_TOOL_ACTION_DISPLAY": "Klikni a posuň myší pro gumování.",
+  "FLOOD_FILL_TOOL_TOOLTIP": "Vyplní oblast barvou. ({0})",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Klikni na oblast pro zaplnění. Podrž \"Ctrl\" pro ovlivnění všech vrstev.",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Klikni na oblast pro zaplnění. Pusť \"Ctrl\" pro ovlivnění jen současných vrstev.",
+  "LASSO_TOOL_TOOLTIP": "Laso. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Klikni a posuň myší pro vybrání pixelů uvnitř vybrané oblasti lasa. Podrž \"Shift\" pro přidání do existujícího výběru. Podrž \"Ctrl\" pro odebraní z něj.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Klikni a posuň myší pro přidání pixelů dovnitř vybrané oblasti lasa.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Klikni a posuň myší pro odebrání pixelů uvnitř vybrané oblasti lasa.",
+  "LINE_TOOL_TOOLTIP": "Nakreslí čáru na canvas ({0}). Podržením klávesy Shift povolíte přichytávání.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Klikni a posuň myší pro vytvoření čáry. Podrž \"Shift\" pro rovnoměrné čáry.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Klikni a posuň myší pro vytvoření rovnoměrné čáry.",
+  "MAGIC_WAND_TOOL_TOOLTIP": "Kouzelná hůlka ({0}). Vyplní výběr",
+  "MAGIC_WAND_ACTION_DISPLAY": "Klikni pro vyplnění výběru.",
+  "PEN_TOOL": "Pero",
+  "BRIGHTNESS_TOOL": "Zesvětlovač",
+  "COLOR_PICKER_TOOL": "Kapátko",
+  "ELLIPSE_TOOL": "Elipsa",
+  "ERASER_TOOL": "Guma",
+  "FLOOD_FILL_TOOL": "Kyblík",
+  "LASSO_TOOL": "Laso",
+  "LINE_TOOL": "Čára",
+  "MAGIC_WAND_TOOL": "Kouzelná hůlka",
+  "MOVE_TOOL": "Pohnout",
+  "MOVE_VIEWPORT_TOOL": "Posunout pole zobrazení",
+  "RECTANGLE_TOOL": "Obdélník",
+  "ROTATE_VIEWPORT_TOOL": "Otočit pohled",
+  "SELECT_TOOL_NAME": "Vybrat",
+  "ZOOM_TOOL": "Lupa",
+  "SHAPE_LABEL": "Tvar",
+  "MODE_LABEL": "Mód",
+  "SCOPE_LABEL": "Rozsah působnosti",
+  "FILL_SHAPE_LABEL": "Vyplnit obrazec barvou",
+  "FILL_COLOR_LABEL": "Vyplnit barvou",
+  "TOOL_SIZE_LABEL": "Velikost nástroje",
+  "STRENGTH_LABEL": "Síla",
+  "NEW": "Nový",
+  "ADD": "Přidat",
+  "SUBTRACT": "Odebrat",
+  "INTERSECT": "Průsečík",
+  "RECTANGLE": "Obdélník",
+  "CIRCLE": "Kruh",
+  "ABOUT": "O",
+  "MINIMIZE": "Minimalizovat",
+  "RESTORE": "Obnovit",
+  "MAXIMIZE": "Maximalizovat",
+  "CLOSE": "Zavřít",
+  "EXPORT_SIZE_HINT": "Pokud chceš sdílet obrázek, zkus {0}% pro nejlepší zobrazení",
+  "CREATE": "Vytvořit",
+  "BASE_LAYER_NAME": "Základní vrstva",
+  "ENABLE_MASK": "Zapnout masku",
+  "SELECTED_AREA_EMPTY": "Vybraná oblast je prázdná",
+  "NOTHING_TO_COPY": "Nic k zkopírování",
+  "REFERENCE_LAYER_PATH": "Cesta referenční vrstvy",
+  "FLIP": "Překlopit",
+  "ROTATION": "Rotace",
+  "ROT_IMG_90_D": "Otočit obrázek o 90°",
+  "ROT_IMG_180_D": "Otočit obrázek o 180°",
+  "ROT_IMG_-90_D": "Otočit obrázek o -90°",
+  "ROT_LAYERS_90_D": "Otočit vybrané vrstvy o 90°",
+  "ROT_LAYERS_180_D": "Otočit vybrané vrstvy o 180°",
+  "ROT_LAYERS_-90_D": "Otočit vybrané vrstvy o -90°",
+  "UNNAMED_PALETTE": "Nepojmenovaná paleta",
+  "CLICK_SELECT_PRIMARY": "Klikni pro vybrání jako hlavní barvu",
+  "PEN_MODE": "Režim pera",
+  "VIEW": "Zobrazení",
+  "HORIZONTAL_LINE_SYMMETRY": "Symetrie vodorovné čáry",
+  "VERTICAL_LINE_SYMMETRY": "Symetrie svislých čar",
+  "COLOR_PICKER_TITLE": "Kapátko",
+  "COLOR_SLIDERS_TITLE": "Vyběrač barev",
+  "PALETTE_TITLE": "Paleta",
+  "SWATCHES_TITLE": "Vzorky",
+  "LAYERS_TITLE": "Vrstvy",
+  "NAVIGATION_TITLE": "Navigace",
+  "NORMAL_BLEND_MODE": "Normální",
+  "DARKEN_BLEND_MODE": "Ztmavit",
+  "MULTIPLY_BLEND_MODE": "Násobit",
+  "COLOR_BURN_BLEND_MODE": "Ztmavit barvy",
+  "LIGHTEN_BLEND_MODE": "Zesvětlit",
+  "SCREEN_BLEND_MODE": "Závoj",
+  "COLOR_DODGE_BLEND_MODE": "Zesvětlit barvy",
+  "OVERLAY_BLEND_MODE": "Překrýt",
+  "SOFT_LIGHT_BLEND_MODE": "Měkké světlo",
+  "HARD_LIGHT_BLEND_MODE": "Tvrdé světlo",
+  "DIFFERENCE_BLEND_MODE": "Rozdíl",
+  "EXCLUSION_BLEND_MODE": "Vyloučit",
+  "HUE_BLEND_MODE": "Odstín",
+  "SATURATION_BLEND_MODE": "Sytost",
+  "LUMINOSITY_BLEND_MODE": "Světlost",
+  "COLOR_BLEND_MODE": "Barva",
+  "NOT_SUPPORTED_BLEND_MODE": "Není podporováno",
+  "RESTART": "Restartovat",
+  "SORT_BY": "Řazeno podle",
+  "NAME": "Jméno",
+  "COLORS": "Barvy",
+  "DEFAULT": "Standartně",
+  "ALPHABETICAL": "Abecední",
+  "COLOR_COUNT": "Počet barev",
+  "ANY": "Jakýkoliv",
+  "MAX": "Max",
+  "MIN": "Min",
+  "EXACT": "Přesně",
+  "ASCENDING": "Vzestupně",
+  "DESCENDING": "Sestupně",
+  "NAME_IS_TOO_LONG": "Název je moc dlouhý",
+  "STOP_IT_TEXT1": "Dost. Udělej pořádek v názvech souborů.",
+  "STOP_IT_TEXT2": "Můžeš přestat kopírovat tyhle jména prosím?",
+  "REPLACER_TOOLTIP": "Klikni pravým tlačítkem na barvu palety a vyber \"Nahradit\" nebo ji sem přeneste.",
+  "CLICK_TO_CHOOSE_COLOR": "Klikni pro vybrání barvy",
+  "REPLACE_COLOR": "Nahradit barvu",
+  "PALETTE_COLOR_TOOLTIP": "Kliknutím vyberte jako hlavní barvu. Přetažením na jinou paletu je vyměníte.",
+  "ADD_FROM_SWATCHES": "Přidat ze vzorků",
+  "ADD_COLOR_TO_PALETTE": "Přidat barvu na paletu",
+  "USE_IN_CURRENT_IMAGE": "Použít v tomhle obrázku",
+  "ADD_TO_FAVORITES": "Přidat do oblíbených",
+  "BROWSE_PALETTES": "Procházet palety",
+  "LOAD_PALETTE": "Načíst paletu",
+  "SAVE_PALETTE": "Uložit paletu",
+  "FAVORITES": "Oblíbené",
+  "ADD_FROM_CURRENT_PALETTE": "Přidat ze současné palety",
+  "OPEN_PALETTES_DIR_TOOLTIP": "Otevření adresáře palet v Průzkumníku souborů",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "Procházet palety na \"Lospec\"",
+  "IMPORT_FROM_FILE_TOOLTIP": "Nahrát ze složky",
+  "TOP_LEFT": "V levo nahoře",
+  "TOP_CENTER": "Ve středu nahoře",
+  "TOP_RIGHT": "V pravo nahoře",
+  "MIDDLE_LEFT": "Prostřední vlevo",
+  "MIDDLE_CENTER": "Prostřední uprostřed",
+  "MIDDLE_RIGHT": "Prostřední pravo",
+  "BOTTOM_LEFT": "Nalevo dole",
+  "BOTTOM_CENTER": "Střed dole",
+  "BOTTOM_RIGHT": "Vpravo dole",
+  "CLIP_TO_BELOW": "Spoj do vrstvy níže",
+  "MOVE_UPWARDS": "Pohnout nahoru",
+  "MOVE_DOWNWARDS": "Pohnout dolů",
+  "MERGE_SELECTED": "Spojit vybrané",
+  "LOCK_TRANSPARENCY": "Uzamknout transparentnost",
+  "COULD_NOT_LOAD_PALETTE": "Nepodařilo se načíst palety",
+  "NO_PALETTES_FOUND": "Žádná paleta nebyla nalezena.",
+  "LOSPEC_LINK_TEXT": "Slyšel jsem, že můžeš najít nějaké tady: lospec.com/palette-list",
+  "PALETTE_BROWSER": "Prohlížeč palet",
+  "DELETE_PALETTE_CONFIRMATION": "Chceš opravdu odstranit tuhle paletu? Odstranění je na vždy tak pozor.",
+  "SHORTCUTS_IMPORTED": "Klávesové zkratky z {0} byly importované úspěšně.",
+  "SHORTCUT_PROVIDER_DETECTED": "Zjistili jsme, že máš nainstalovaný {0}. Chceš aby jsme z toho importovali klávesové zkratky?",
+  "IMPORT_FROM_INSTALLATION": "Importovat z instalace",
+  "IMPORT_INSTALLATION_OPTION1": "Importovat z instalace",
+  "IMPORT_INSTALLATION_OPTION2": "Použít výchozí nastavení",
+  "IMPORT_FROM_TEMPLATE": "Importovat z šablony",
+  "SHORTCUTS_IMPORTED_SUCCESS": "Klávesové zkratky byly importované úspěšně.",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "Jsi si jist toho co se právě chystáš udělat? Opravdu chceš přenastavit všechny klávesové zkratky zase do normálu? ",
+  "SUCCESS": "Us",
+  "WARNING": "VAROVÁNÍ",
+  "ERROR_IMPORTING_IMAGE": "Při importu obrázku došlo k chybě.",
+  "SHORTCUTS_CORRUPTED_TITLE": "Poškozený soubor s klávesovýma zkratkama",
+  "SHORTCUTS_CORRUPTED": "Složka s klávesovýma zkratkami byla poškozena, resetování do výchozího nastavení.",
+  "FAILED_DOWNLOAD_PALETTE": "Nepodařilo se stáhnout paletu",
+  "FILE_INCORRECT_FORMAT": "Soubor je ve špatném formátu",
+  "INVALID_FILE": "Neplatný soubor",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "Soubor s klávesovýma zkratkami není ve správném formátu",
+  "UNSUPPORTED_FILE_FORMAT": "Tenhle formát souboru není podporován",
+  "ALREADY_ASSIGNED": "Už přidělený",
+  "REPLACE": "Nahradit",
+  "SWAP": "Přepnout",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "Tahle klávesová zkratka je již použita u '{0}'\nPřejete si nahradit existující klávesovou zkratku, nebo je vzájemně prohodit?",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "Tahle klávesová zkratka je již použita u '{0}'\nPřejete si nahradit existující klávesovou zkratku?",
+  "UNSAVED_CHANGES": "Neuložené změny",
+  "DOCUMENT_MODIFIED_SAVE": "Dokument byl upraven. Chcete změny uložit?",
+  "SESSION_UNSAVED_DATA": "{0} s neuloženými daty. Jste si jisti?",
+  "PROJECT_MAINTAINERS": "Správci projektu",
+  "OTHER_AWESOME_CONTRIBUTORS": "A další úžasní přispěvatelé",
+  "HELP": "Pomoc",
+  "STOP_IT_TEXT3": "Hele opravdu přestaň.",
+  "STOP_IT_TEXT4": "Vážně nemáš nic lepšího na práci?",
+  "LINEAR_DODGE_BLEND_MODE": "Lineárně zesvětlit (Přidat)",
+  "PRESS_ANY_KEY": "Zmáčkni jakoukoliv klávesu",
+  "NONE_SHORTCUT": "Žádná",
+  "REFERENCE": "Referenční",
+  "PUT_REFERENCE_LAYER_ABOVE": "Dát referenční vrstvu pod",
+  "PUT_REFERENCE_LAYER_BELOW": "Dát referenční vrstvu nad",
+  "TOGGLE_VERTICAL_SYMMETRY": "Přepnout vertikální symetrii",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "Zapnout vodorovnou symetrii",
+  "RESET_VIEWPORT": "Resetovat pole pohledu",
+  "VIEWPORT_SETTINGS": "Nastavení pohledu",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Klikni a drž tlačítko myši pro přesouvání pixelů ve vybraných vrstvách.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Podržením myši přesunete všechny vrstvy.",
+  "CTRL_KEY": "Ctrl",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "Přejmenovat",
+  "PIXEL_UNIT": "px",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "Otevřít okno Localization Debug",
+  "FORCE_OTHER_FLOW_DIRECTION": "Vynutit jiný směr toku",
+  "API_KEY": "API Klíč",
+  "LOCALIZATION_VIEW_TYPE": "Typ zobrazení lokalizace",
+  "LOAD_LANGUAGE_FROM_FILE": "Načíst jazyk ze složky",
+  "LOG_IN": "Přihlásit se",
+  "SYNC": "Synchronizace",
+  "NOT_LOGGED_IN": "Nepřihlášeno",
+  "POE_EDITOR_ERROR": "POEditor Error: {0} {1}",
+  "HTTP_ERROR_MESSAGE": "HTTP Error\" {0} {1}",
+  "LOGGED_IN": "Přihlášeno",
+  "SYNCED_SUCCESSFULLY": "Úspěšně synchronizováno",
+  "EXCEPTION_ERROR": "Výjimka: {0}",
+  "DROP_PALETTE": "Sem přesuňte paletu",
+  "SECURITY_ERROR": "Bezpečnostní chyba",
+  "SECURITY_ERROR_MSG": "Nejsou práva do této určené lokace",
+  "IO_ERROR": "IO chyba",
+  "IO_ERROR_MSG": "Chyba při zápisu a disk.",
+  "FAILED_ASSOCIATE_PIXI": "Nepodařilo se spojit .pixi soubor s PixiEditor.",
+  "COULD_NOT_SAVE_PALETTE": "Nastala chyba při ukládání palety.",
+  "NO_COLORS_TO_SAVE": "Nejsou žádné barvy k uložení",
+  "ALL_LAYERS": "Všechny vrstvy",
+  "SINGLE_LAYER": "Jediná vrstva",
+  "CHOOSE": "Vybrat",
+  "REMOVE": "Odstranit",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "Soubor není typu \".aseprite-keys\"",
+  "FILE_HAS_INVALID_SHORTCUT": "Soubor obsahuje klávesovou zkratku",
+  "FILE_EXTENSION_NOT_SUPPORTED": "Typ souboru \"{0} není podporován",
+  "ERROR_READING_FILE": "Chyba při čtení souboru",
+  "DISCARD_PALETTE": "Smazat paletu",
+  "DISCARD_PALETTE_CONFIRMATION": "Jsi si jist že chceš smazat současnou paletu? Tahle akce nejde vrátit.",
+  "IMPORT_AS_NEW_LAYER": "Importovat jako novou vrstvu",
+  "PASTE_AS_PRIMARY_COLOR": "Vložit jako hlavní barvu",
+  "IMPORT_AS_NEW_FILE": "Importovat jako nový soubor",
+  "IMPORT_PALETTE_FILE": "Importovat soubor palety",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "Importovat barvy do palety",
+  "IMPORT_SINGLE_PALETTE_COLOR": "Importovat barvu do palety",
+  "IMPORT_AS_REFERENCE_LAYER": "Importovat jako referenční vrstvu",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "Pravím tlačítkem myši vybereš barvu, když budeš držet \"Shift\" a zmáčkneš pravé tlačítko myší, zkopíruješ barvu do schránky",
+  "OPEN_FILE_FROM_CLIPBOARD": "Otevřít ze schránky",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Otevřít ze schránky",
+  "OPEN_LOCALIZATION_DATA": "Do you want to open the LocalizationData.json?\nThe updated date has been put in the clipboard.\nNote that changes wont be applied until a restart",
+  "DOWNLOADING_LANGUAGE_FAILED": "Downloading language failed.\nAPI Key might have been overused.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Localization data path not found",
+  "APPLY": "Apply",
+  "UPDATE_SOURCE": "Update source",
+  "COPY_TO_CLIPBOARD": "Copy to clipboard",
+  "LANGUAGE_FILE_NOT_FOUND": "Language file not found.\nLooking for {0}",
+  "PROJECT_ROOT_NOT_FOUND": "PixiEditor Project root not found.\nLooking for PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Localization folder not found.\nLooking for /Data/Localization",
+  "SELECT_A_LANGUAGE": "Select a language",
+  "DONE": "Done",
+  "SOURCE_UNSET_OR_MISSING": "Source missing/unset",
+  "SOURCE_NEWER": "Source newer",
+  "SOURCE_UP_TO_DATE": "Source is up to date",
+  "SOURCE_OLDER": "Cloud newer",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
+  "SHORTCUTS_TITLE": "Shortcuts",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+}

+ 564 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/de.json

@@ -0,0 +1,564 @@
+{
+  "RECENT_FILES": "Zuletzt geöffnete Dateien",
+  "OPEN_FILE": "Datei öffnen",
+  "NEW_FILE": "Neu",
+  "RECENT_EMPTY_TEXT": "So viel Platz hier, den sollte mal jemand füllen",
+  "LANGUAGE": "Sprache",
+  "GENERAL": "Generell",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "Tastenkürzel",
+  "MISC": "Sonstige",
+  "SHOW_STARTUP_WINDOW": "Startfenster beim Start öffnen",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "Bildvorschau in der Taskbar anzeigen",
+  "RECENT_FILE_LENGTH": "Anzahl an gezeigten zuletzt geöffneten datein",
+  "RECENT_FILE_LENGTH_TOOLTIP": "Wie viele zuletzt geöffnete Dateien in der Datei > Zuletzt geöffnet liste angezeigt werden. Standard: 8",
+  "DEFAULT_NEW_SIZE": "Standardgröße neuer Datein",
+  "WIDTH": "Breite",
+  "HEIGHT": "Höhe",
+  "TOOLS": "Werkzeuge",
+  "ENABLE_SHARED_TOOLBAR": "Werkzeugeinstellungen teilen",
+  "AUTOMATIC_UPDATES": "Automatische Updates",
+  "CHECK_FOR_UPDATES": "Nach Updates beim Start suchen",
+  "UPDATE_STREAM": "Updatequelle",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "Update quelle kann nur in der standalone version geändert werden (Verfügbar unter https://pixieditor.net).\nSteam und Microsoft Store hat ihr eigenes Update System.",
+  "DEBUG": "Debug",
+  "ENABLE_DEBUG_MODE": "Debug Modus aktivieren",
+  "OPEN_CRASH_REPORTS_DIR": "Fehlerberichtverzeichnis öffnen",
+  "DISCORD_RICH_PRESENCE": "Rich Presence",
+  "ENABLED": "Aktiv",
+  "SHOW_IMAGE_NAME": "Dateinamen zeigen",
+  "SHOW_IMAGE_SIZE": "Dateigröße zeigen",
+  "SHOW_LAYER_COUNT": "Anzahl an Ebenen zeigen",
+  "FILE": "Datei",
+  "RECENT": "Zuletzt geöffnet",
+  "OPEN": "Öffnen",
+  "SAVE_PIXI": "Speichern (.pixi)",
+  "SAVE_AS_PIXI": "Speichern als... (.pixi)",
+  "EXPORT_IMG": "Exportieren (.png, .jpg, etc.)",
+  "EDIT": "Bearbeiten",
+  "EXIT": "Beenden",
+  "PERCENTAGE": "Prozent",
+  "ABSOLUTE": "Absolut",
+  "PRESERVE_ASPECT_RATIO": "Seitenverhältnis beibehalten",
+  "ANCHOR_POINT": "Ankerpunkt",
+  "RESIZE_IMAGE": "Bild skalieren",
+  "RESIZE": "Skalieren",
+  "DOCUMENTATION": "Dokumentation",
+  "WEBSITE": "Website",
+  "OPEN_WEBSITE": "Website öffnen",
+  "REPOSITORY": "Repository",
+  "OPEN_REPOSITORY": "Repository öffnen",
+  "LICENSE": "Lizenz",
+  "OPEN_LICENSE": "Lizenz öffnen",
+  "THIRD_PARTY_LICENSES": "Drittanbieter Lizensen",
+  "OPEN_THIRD_PARTY_LICENSES": "Drittanbieter Lizensen öffnen",
+  "APPLY_TRANSFORM": "Transformation anwenden",
+  "INCREASE_TOOL_SIZE": "Werkzeug vergrößern",
+  "DECREASE_TOOL_SIZE": "Werkzeug verkleinern",
+  "TO_INSTALL_UPDATE": "um Update {0} zu installieren",
+  "DOWNLOADING_UPDATE": "Lade Update herunter...",
+  "UPDATE_READY": "Update ist bereit zum installieren. Möchtest du es jetzt installieren?",
+  "NEW_UPDATE": "Neues update",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Konnte ohne Administartor Berechtigungen nicht updaten. Bitte start PixiEditor als Administrator.",
+  "INSUFFICIENT_PERMISSIONS": "Fehlende Berechtigungen",
+  "UPDATE_CHECK_FAILED": "Updateprüfung fehlgeschlagen",
+  "COULD_NOT_CHECK_FOR_UPDATES": "Konnte nicht überprüfen, ob ein Update verfügbar ist.",
+  "VERSION": "Version {0}",
+  "OPEN_TEMP_DIR": "temp Ordner öffnen",
+  "OPEN_LOCAL_APPDATA_DIR": "Lokalen AppData Ordner öffnen",
+  "OPEN_ROAMING_APPDATA_DIR": "Roaming AppData Ordner öffnen",
+  "OPEN_INSTALLATION_DIR": "Installations Ordner öffnen",
+  "DUMP_ALL_COMMANDS": "Alle Befehle ausgeben",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Alle Befehle als Textdatei ausgeben",
+  "CRASH": "Abstürzen",
+  "CRASH_APP": "App abstürzen",
+  "DELETE_USR_PREFS": "Benutzereinstellungen löschen (Roaming AppData)",
+  "DELETE_SHORTCUT_FILE": "Tastenbelegung löschen (Roaming AppData)",
+  "DELETE_EDITOR_DATA": "Editordaten löschen (Lokale AppData)",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "Tastenbelegungsvorlage erstellen",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Json Tastenbelegungsvorlage erstellen",
+  "VALIDATE_SHORTCUT_MAP": "Tastenbelegung überprüfen",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Tastenbelegung überprüfen",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "Leere Keys: {0}\nUnbekannte Befehle: {1}",
+  "RESULT": "Ergebnis",
+  "CLEAR_RECENT_DOCUMENTS": "Zuletzt geöffnete leeren",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Liste an zuletzt geöffneten Datein leeren",
+  "OPEN_CMD_DEBUG_WINDOW": "Befehldebug Fenster öffnen",
+  "PATH_DOES_NOT_EXIST": "{0} existiert nicht.",
+  "LOCATION_DOES_NOT_EXIST": "Pfad existiert nicht.",
+  "FILE_NOT_FOUND": "Datei nicht gefunden.",
+  "ARE_YOU_SURE": "Bist du sicher?",
+  "ARE_YOU_SURE_PATH_FULL_PATH": "Bist du sicher das du {0} löschen möchtest?\nDie daten gehen für alle installationen verloren.\n(Ganzer Pfad: {1})",
+  "FAILED_TO_OPEN_FILE": "Fehler beim öffnen der Datei",
+  "OLD_FILE_FORMAT": "Altes Dateiformat",
+  "OLD_FILE_FORMAT_DESCRIPTION": "Diese .pixi Datei nutzt das alte Dateiformat,\nwelches nicht mehr geöffnet werden kann.",
+  "NOTHING_FOUND": "Nichts gefunden",
+  "EXPORT": "Exportieren",
+  "EXPORT_IMAGE": "Bild exportieren",
+  "IMPORT": "Importieren",
+  "SHORTCUT_TEMPLATES": "Vorlagen",
+  "RESET_ALL": "Alle zurücksetzten",
+  "LAYER": "Ebene",
+  "LAYER_DELETE_SELECTED": "Ausgewählte Ebene/Ordner löschen",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Ausgewählte Ebene oder Ordner löschen",
+  "LAYER_DELETE_ALL_SELECTED": "Alle ausgewählte Ebenen/Ordner löschen",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Alle ausgewählte Ebenen oder Ordner löschen",
+  "DELETE_SELECTED_PIXELS": "Alle ausgewählten Pixel löschen",
+  "NEW_FOLDER": "Neuer Ordner",
+  "CREATE_NEW_FOLDER": "Neuen Ordner erstellen",
+  "NEW_LAYER": "Neue Ebene",
+  "CREATE_NEW_LAYER": "Neue Ebene erstellen",
+  "NEW_IMAGE": "Neues Bild",
+  "CREATE_NEW_IMAGE": "Neues Bild erstellen",
+  "SAVE": "Speichern",
+  "SAVE_AS": "Speichern als...",
+  "IMAGE": "Bild",
+  "SAVE_IMAGE": "Bild speichern",
+  "SAVE_IMAGE_AS": "Bild speichern als neue Datei",
+  "DUPLICATE": "Duplizieren",
+  "DUPLICATE_SELECTED_LAYER": "Ausgewählte Ebene löschen",
+  "CREATE_MASK": "Maske erstellen",
+  "DELETE_MASK": "Maske löschen",
+  "TOGGLE_MASK": "Maske umschalten",
+  "APPLY_MASK": "Maske anwenden",
+  "TOGGLE_VISIBILITY": "Sichtbarkeit umschalten",
+  "MOVE_MEMBER_UP": "Element nach oben bewegen",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "Ausgewählte Ebene oder ausgewählten Ordner nach oben bewegen",
+  "MOVE_MEMBER_DOWN": "Element nach unten bewegen",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Ausgewählte Ebene oder ausgewählten Ordner nach unten bewegen",
+  "MERGE_ALL_SELECTED_LAYERS": "Alle ausgewählten Ebenen zusammenführen",
+  "MERGE_WITH_ABOVE": "Ebene mit der oberen zusammenführen",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "Ausgewählte Ebene mit der Ebene darüber zusammenführen",
+  "MERGE_WITH_BELOW": "Ebene mit der unteren zusammenführen",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "Ausgewählte Ebene mit der Ebene darunter zusammenführen",
+  "ADD_REFERENCE_LAYER": "Referenz Ebene hinzufügen",
+  "DELETE_REFERENCE_LAYER": "Referenz Ebene löschen",
+  "TRANSFORM_REFERENCE_LAYER": "Referenzebene transformieren",
+  "TOGGLE_REFERENCE_LAYER_POS": "Referenz Ebene",
+  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Wechseln zwischen Referenzebene ganz oben oder unten",
+  "RESET_REFERENCE_LAYER_POS": "Position der Referenzebene zurücksetzten",
+  "CLIP_CANVAS": "Leinwand anpassen",
+  "FLIP_IMG_VERTICALLY": "Bild Vertikal spiegeln",
+  "FLIP_IMG_HORIZONTALLY": "Bild Horizontal spiegeln",
+  "FLIP_LAYERS_VERTICALLY": "Ausgewählte Ebenen Vertikal spiegeln",
+  "FLIP_LAYERS_HORIZONTALLY": "Ausgewählte Ebenen Horizontal spiegeln",
+  "ROT_IMG_90": "Bild um 90° drehen",
+  "ROT_IMG_180": "Bild um 180° drehen",
+  "ROT_IMG_-90": "Bild um -90° drehen",
+  "ROT_LAYERS_90": "Ausgewählte Ebene 90° drehen",
+  "ROT_LAYERS_180": "Ausgewählte Ebene 180° drehen",
+  "ROT_LAYERS_-90": "Ausgewählte Ebene -90° drehen",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "Vertikale Symmetrieachse umschalten",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "Horizontale Symmetrieachse umschalten",
+  "DELETE_PIXELS": "Pixel löschen",
+  "DELETE_PIXELS_DESCRIPTIVE": "Ausgewählte Pixel löschen",
+  "RESIZE_DOCUMENT": "Bild skalieren",
+  "RESIZE_CANVAS": "Leinwand skalieren",
+  "CENTER_CONTENT": "Inhalt zentrieren",
+  "CUT": "Ausschneiden",
+  "CUT_DESCRIPTIVE": "Ausgewählten Bereich oder Ausgewählte Elemente ausschneiden",
+  "PASTE": "Einfügen",
+  "PASTE_DESCRIPTIVE": "Aus Zwischenablage einfügen",
+  "PASTE_AS_NEW_LAYER": "Einfügen als neue Ebene",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Aus Zwischenablage als neue Ebene einfügen",
+  "PASTE_REFERENCE_LAYER": "Referenzebene einfügen",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Referenzebene aus Zwischenablage einfügen",
+  "PASTE_COLOR": "Farbe einfügen",
+  "PASTE_COLOR_DESCRIPTIVE": "Farbe aus Zwischenablage einfügen",
+  "PASTE_COLOR_SECONDARY": "Zeitfarbe einfügen",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Zweitfarbe aus Zwischenablage einfügen",
+  "CLIPBOARD": "Zwischenablage",
+  "COPY": "Kopieren",
+  "COPY_DESCRIPTIVE": "In Zwischenablage kopieren",
+  "COPY_COLOR_HEX": "Farbe kopieren (HEX)",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "Farbe als HEX-Code kopieren",
+  "COPY_COLOR_RGB": "Farbe kopieren (RGB)",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "Farbe als RGB-Code kopieren",
+  "COPY_COLOR_SECONDARY_HEX": "Zweitfarbe kopieren (HEX)",
+  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Zweitfarbe als HEX-Code kopieren",
+  "COPY_COLOR_SECONDARY_RGB": "Zweitfarbe kopieren (RGB)",
+  "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "Zweitfarbe als RGB-Code kopieren",
+  "PALETTE_COLORS": "Palette Farben",
+  "REPLACE_SECONDARY_BY_PRIMARY": "Ersetzte Zweitfarbe mit Primärfarbe",
+  "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "Ersetzte Zweitfarbe mit Primärfarbe",
+  "REPLACE_PRIMARY_BY_SECONDARY": "Farbe mit Zweitfarbe ersetzen",
+  "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Primärfarbe mit Zweitfarbe ersetzen",
+  "OPEN_PALETTE_BROWSER": "Palette Browser öffnen",
+  "OVERWRITE_PALETTE_CONSENT": "Palette '{0}' existiert bereits, möchtest du sie ersetzten?",
+  "PALETTE_EXISTS": "Palette existiert bereits",
+  "REPLACE_PALETTE_CONSENT": "Aktuelle Palette mit anderer ersetzten?",
+  "REPLACE_PALETTE": "Aktuelle Palette ersetzen",
+  "SELECT_COLOR_1": "1. Farbe auswählen",
+  "SELECT_COLOR_2": "2. Farbe auswählen",
+  "SELECT_COLOR_3": "3. Farbe auswählen",
+  "SELECT_COLOR_4": "4. Farbe auswählen",
+  "SELECT_COLOR_5": "5. Farbe auswählen",
+  "SELECT_COLOR_6": "6. Farbe auswählen",
+  "SELECT_COLOR_7": "7. Farbe auswählen",
+  "SELECT_COLOR_8": "8. Farbe auswählen",
+  "SELECT_COLOR_9": "9. Farbe auswählen",
+  "SELECT_COLOR_10": "10. Farbe auswählen",
+  "SELECT_TOOL": "{0} auswählen",
+  "SELECT_COLOR_1_DESCRIPTIVE": "1. Farbe der Palette auswählen",
+  "SELECT_COLOR_2_DESCRIPTIVE": "2. Farbe der Palette auswählen",
+  "SELECT_COLOR_3_DESCRIPTIVE": "3. Farbe der Palette auswählen",
+  "SELECT_COLOR_4_DESCRIPTIVE": "4. Farbe der Palette auswählen",
+  "SELECT_COLOR_5_DESCRIPTIVE": "5. Farbe der Palette auswählen",
+  "SELECT_COLOR_6_DESCRIPTIVE": "6. Farbe der Palette auswählen",
+  "SELECT_COLOR_7_DESCRIPTIVE": "7. Farbe der Palette auswählen",
+  "SELECT_COLOR_8_DESCRIPTIVE": "8. Farbe der Palette auswählen",
+  "SELECT_COLOR_9_DESCRIPTIVE": "9. Farbe der Palette auswählen",
+  "SELECT_COLOR_10_DESCRIPTIVE": "10. Farbe der Palette auswählen",
+  "SWAP_COLORS": "Farben tauschen",
+  "SWAP_COLORS_DESCRIPTIVE": "Primärfarbe und Zweitfarbe wechseln",
+  "SEARCH": "Suchen",
+  "COMMAND_SEARCH": "Suche öffnen",
+  "OPEN_COMMAND_SEARCH": "Suche öffnen",
+  "SELECT": "Auswahl",
+  "DESELECT": "Nichts",
+  "INVERT": "Invertieren",
+  "SELECTION": "Auswahl",
+  "SELECT_ALL": "Alles",
+  "SELECT_ALL_DESCRIPTIVE": "Alles auswählen",
+  "CLEAR_SELECTION": "Auswahl löschen",
+  "INVERT_SELECTION": "Auswahl invertieren",
+  "INVERT_SELECTION_DESCRIPTIVE": "Auswahl invertieren",
+  "TRANSFORM_SELECTED_AREA": "Auswahl transformieren",
+  "NUDGE_SELECTED_LEFT": "Ausgewähltes Objekt nach links bewegen",
+  "NUDGE_SELECTED_RIGHT": "Ausgewähltes Objekt nach rechts bewegen",
+  "NUDGE_SELECTED_UP": "Ausgewähltes Objekt nach oben bewegen",
+  "NUDGE_SELECTED_DOWN": "Ausgewähltes Objekt nach unten bewegen",
+  "MASK_FROM_SELECTION": "Neue Maske aus Auswahl",
+  "MASK_FROM_SELECTION_DESCRIPTIVE": "Maske aus Auswahl erstellen",
+  "ADD_SELECTION_TO_MASK": "Auswahl zu Maske hinzufügen",
+  "SUBTRACT_SELECTION_FROM_MASK": "Auswahl von Maske entfernen",
+  "INTERSECT_SELECTION_MASK": "Auswahl mit Maske schneiden",
+  "SELECTION_TO_MASK": "Maske aus Auswahl",
+  "TO_NEW_MASK": "Auswahl als neue Maske",
+  "ADD_TO_MASK": "Auswahl zu Maske hinzufügen",
+  "SUBTRACT_FROM_MASK": "Auswahl von Maske entferenen",
+  "INTERSECT_WITH_MASK": "Auswahl mit Maske schneiden",
+  "STYLUS": "Eingabestift",
+  "TOGGLE_PEN_MODE": "Stiftmodus umschalten",
+  "UNDO": "Rückgängig",
+  "UNDO_DESCRIPTIVE": "Rückgängig machen",
+  "REDO": "Wiederherstellen",
+  "REDO_DESCRIPTIVE": "Letzte Aktion wiederherstellen",
+  "WINDOWS": "Fenster",
+  "TOGGLE_GRIDLINES": "Raster umschalten",
+  "ZOOM_IN": "Reinzommen",
+  "ZOOM_OUT": "Rauszoomen",
+  "NEW_WINDOW_FOR_IMG": "Neues Fenster für Bild",
+  "CENTER_ACTIVE_VIEWPORT": "Anzeigebereich zentrieren",
+  "FLIP_VIEWPORT_HORIZONTALLY": "Anzeigebereich Horizontal spiegeln",
+  "FLIP_VIEWPORT_VERTICALLY": "Anzeigebereich Vertikal spiegeln",
+  "SETTINGS": "Preferenzen",
+  "OPEN_SETTINGS": "Preferenzen öffnen",
+  "OPEN_SETTINGS_DESCRIPTIVE": "Präferenzfenster öffnen",
+  "OPEN_STARTUP_WINDOW": "Startfenster öffnen",
+  "OPEN_SHORTCUT_WINDOW": "Tastenkürzelfenster öffnen",
+  "OPEN_ABOUT_WINDOW": "Info über PixiEditor öffnen",
+  "OPEN_NAVIGATION_WINDOW": "Navigationsfenster öffnen",
+  "ERROR": "Fehler",
+  "INTERNAL_ERROR": "Interner Fehler",
+  "ERROR_SAVE_LOCATION": "Konnte die Datei nicht unter diesem Pfad speichern",
+  "ERROR_WHILE_SAVING": "Ein internet Fehler ist beim speichern passiert. Bitte versuche es erneut.",
+  "UNKNOWN_ERROR_SAVING": "Ein Fehler ist beim speichern passiert.",
+  "FAILED_ASSOCIATE_LOSPEC": "Konnte das Lospec Protokoll nicht einstellen.",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "Spenden",
+  "YES": "Ja",
+  "NO": "Nein",
+  "CANCEL": "Abbrechen",
+  "UNNAMED": "Unbenannt",
+  "OPEN_COMMAND_DEBUG_WINDOW": "Befehldebug Fenster öffnen",
+  "DELETE": "Löschen",
+  "USER_PREFS": "Nutzerpräferenzen (Roaming)",
+  "SHORTCUT_FILE": "Tastenbelegung (Roaming)",
+  "EDITOR_DATA": "Editordaten (Lokal)",
+  "MOVE_VIEWPORT_TOOLTIP": "Bewegt Anzeigebereich. ({0})",
+  "MOVE_VIEWPORT_ACTION_DISPLAY": "Klicke and bewege die Maus um den Anzeigebereich zu bewegen",
+  "MOVE_TOOL_TOOLTIP": "Bewegt die ausgewählten Pixel ({0}). Halte Strg um alle Ebenen zu bewegen.",
+  "MOVE_TOOL_ACTION_DISPLAY": "Halte die Maus um die ausgewählten Pixel zu bewegen. Halte Strg um alle Ebenen zu bewegen.",
+  "PEN_TOOL_TOOLTIP": "Stift. ({0})",
+  "PEN_TOOL_ACTION_DISPLAY": "Klick und halte die Maus um zu zeichnen.",
+  "PIXEL_PERFECT_SETTING": "Pixel Perfekt",
+  "RECTANGLE_TOOL_TOOLTIP": "Zeichnet Rechteck auf Leinwand ({0])",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "Klicke und bewegen die Maus um ein Rechteck zu zeichnen. Halte die Umschalttaste/Shift um ein Quadrat zu zeichnen.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Klicke und halte um ein Quadrat zu zeichnen.",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "Originalbild beibehalten",
+  "ROTATE_VIEWPORT_TOOLTIP": "Rotiert den Anzeigebereich. ({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "Klicke und bewege die Maus um den Anzeigebereich zu rotieren",
+  "SELECT_TOOL_TOOLTIP": "Wählt Bereich aus. ({0})",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Klicke und bewegen die Maus um einen Bereich auszuwählen. Halte die Umschalttaste/Shift um zu der existierenden Auswahl hinzuzufügen. Halte Strg um von ihr zu entfernen.",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Klicke und bewegen die Maus um den Bereich zur aktuellen Auswahl hinzuzufügen.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Clicke und Bewege die Maus um den Bereich von der aktuellen Auswahl zu löschen.",
+  "ZOOM_TOOL_TOOLTIP": "Zoomt Anzeigebereich ({0}). Klicke um rein zu zoomen, halte Strg und Klicke um raus zu zoomen.",
+  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Klicke und bewegen die Maus um zu zoomen. Klicke nur, um rein zu zoomen. Halte Strg und Klicke um raus zu zoomen.",
+  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Klicke und bewegen die Maus um zu zoomen. Klicke nur, um raus zu zoomen. Lasse Strg los, um Klicke nur, um rein zu zoomen",
+  "BRIGHTNESS_TOOL_TOOLTIP": "Macht Pixel heller oder dunkler ({0}). Halte Strg um Pixel dunkler zu machen.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Zeichne auf Pixel um sie heller zu machen. Halte Strg um sie zu dunkler zu machen.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Zeichne auf Pixel um sie dunkler zu machen. Lasse Strg los um sie zu heller zu machen.",
+  "COLOR_PICKER_TOOLTIP": "Pickt die Farbe von der Leinwand. ({0})",
+  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Klick um eine Farbe zu picken. Halte Strg um die Referenzebene zu verstecken.",
+  "ELLIPSE_TOOL_TOOLTIP": "Zeichnet eine Ellipse auf die Leinwand ({0}). Halte die Umschalttaste/Shift um einen Kreis zu zeichnen.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Klicke und halte die Maus um eine Ellipse zu zeichnen. Halte die Umschalttaste/Shift um einen Kreis zu zeichnen.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Klicke und bewege die Maus um einen Kreis zu zeichnen.",
+  "ERASER_TOOL_TOOLTIP": "Radierer. ({0})",
+  "ERASER_TOOL_ACTION_DISPLAY": "Klicke und bewege die Maus zum radieren.",
+  "FLOOD_FILL_TOOL_TOOLTIP": "Füllte den Bereich mit Farbe. ({0})",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Drücke auf einen Bereich, um ihn zu füllen. Halte Strg um alle Ebenen zu berücksichtigen.",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Drücke auf einen Bereich, um ihn zu füllen. Lasse Strg los, um nur die ausgewählte Ebene zu berücksichtigen.",
+  "LASSO_TOOL_TOOLTIP": "Lasso. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Klicke und bewege die Maus um den Bereich im Lasso auszuwählen. Halte die Umschalttaste/Shift um zu der aktuellen Auswahl hinzuzufügen. Halte Strg um von ihr zu entfernen.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Klicke und bewege die Maus um den Bereich im Lasso der aktuellen Auswahl hinzuzufügen.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Klicke und bewege die Maus um den Bereich im Lasso von der aktuellen Auswahl zu entfernen.",
+  "LINE_TOOL_TOOLTIP": "Zeichnet Linien auf die Leinwand ({0}). Halte die Umschalttaste/Shift um diagonale Linien zu zeichnen.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Klicke und bewege die Maus um eine Linie zu zeichnen. Halte die Umschalttaste/Shift um eine diagonale Linie zu zeichnen.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Klicke und bewege die Maus um eine diagonale Linie zu zeichnen.",
+  "MAGIC_WAND_TOOL_TOOLTIP": "Zauberstab ({0}). Füllte die Auswahl",
+  "MAGIC_WAND_ACTION_DISPLAY": "Klicke um die Auswahl zu füllen.",
+  "PEN_TOOL": "Stift",
+  "BRIGHTNESS_TOOL": "Helligkeitswerkzeug",
+  "COLOR_PICKER_TOOL": "Pipette",
+  "ELLIPSE_TOOL": "Ellipse",
+  "ERASER_TOOL": "Radierer",
+  "FLOOD_FILL_TOOL": "Füllwerkzeug",
+  "LASSO_TOOL": "Lasso",
+  "LINE_TOOL": "Linie",
+  "MAGIC_WAND_TOOL": "Zauberstab",
+  "MOVE_TOOL": "Verschiebungswerkzeug",
+  "MOVE_VIEWPORT_TOOL": "Ansichtswerkzeug",
+  "RECTANGLE_TOOL": "Rechteck",
+  "ROTATE_VIEWPORT_TOOL": "Anzeigebereichrotierer",
+  "SELECT_TOOL_NAME": "Auswahlrahmen",
+  "ZOOM_TOOL": "Zoomwerkzeug",
+  "SHAPE_LABEL": "Form",
+  "MODE_LABEL": "Modus",
+  "SCOPE_LABEL": "Bereich",
+  "FILL_SHAPE_LABEL": "Form füllen",
+  "FILL_COLOR_LABEL": "Füllfarbe",
+  "TOOL_SIZE_LABEL": "Werkzeuggröße",
+  "STRENGTH_LABEL": "Stärke",
+  "NEW": "Neu",
+  "ADD": "Addieren",
+  "SUBTRACT": "Subtrahieren",
+  "INTERSECT": "Schneiden",
+  "RECTANGLE": "Rechteck",
+  "CIRCLE": "Kreis",
+  "ABOUT": "Über PixiEditor",
+  "MINIMIZE": "Minimieren",
+  "RESTORE": "Widerherstellen",
+  "MAXIMIZE": "Maximieren",
+  "CLOSE": "Schließen",
+  "EXPORT_SIZE_HINT": "Falls du das Bild teilen möchtest, benutz {0}% um es scharf zu halten",
+  "CREATE": "Erstellen",
+  "BASE_LAYER_NAME": "Standard Ebene",
+  "ENABLE_MASK": "Maske aktivieren",
+  "SELECTED_AREA_EMPTY": "Ausgewählter Bereich ist leer",
+  "NOTHING_TO_COPY": "Nichts zu kopieren",
+  "REFERENCE_LAYER_PATH": "Referenzebenen Pfad",
+  "FLIP": "Spiegeln",
+  "ROTATION": "Rotieren",
+  "ROT_IMG_90_D": "Bild um 90° drehen",
+  "ROT_IMG_180_D": "Bild um 180° drehen",
+  "ROT_IMG_-90_D": "Bild um -90° drehen",
+  "ROT_LAYERS_90_D": "Ausgewählte Ebenen um 90° drehen",
+  "ROT_LAYERS_180_D": "Ausgewählte Ebenen um 180° drehen",
+  "ROT_LAYERS_-90_D": "Ausgewählte Ebenen um -90° drehen",
+  "UNNAMED_PALETTE": "Unbenannte Palette",
+  "CLICK_SELECT_PRIMARY": "Klicke um als Hauptfarbe auszuwählen.",
+  "PEN_MODE": "Stift Modus",
+  "VIEW": "Ansicht",
+  "HORIZONTAL_LINE_SYMMETRY": "Horizontale Symterrie Linie",
+  "VERTICAL_LINE_SYMMETRY": "Vertikale Symterrie Linie",
+  "COLOR_PICKER_TITLE": "Farbauswahl",
+  "COLOR_SLIDERS_TITLE": "Farbregler",
+  "PALETTE_TITLE": "Palette",
+  "SWATCHES_TITLE": "Farbfelder",
+  "LAYERS_TITLE": "Ebenen",
+  "NAVIGATION_TITLE": "Navigation",
+  "NORMAL_BLEND_MODE": "Normal",
+  "DARKEN_BLEND_MODE": "Abdunkeln",
+  "MULTIPLY_BLEND_MODE": "Multiplizieren",
+  "COLOR_BURN_BLEND_MODE": "Farben nachbelichten",
+  "LIGHTEN_BLEND_MODE": "Aufhellen",
+  "SCREEN_BLEND_MODE": "Negativ multiplizieren",
+  "COLOR_DODGE_BLEND_MODE": "Farben abwedeln",
+  "OVERLAY_BLEND_MODE": "Ineinanderkopieren",
+  "SOFT_LIGHT_BLEND_MODE": "Weiches Licht",
+  "HARD_LIGHT_BLEND_MODE": "Hartes Licht",
+  "DIFFERENCE_BLEND_MODE": "Differenz",
+  "EXCLUSION_BLEND_MODE": "Ausschluss",
+  "HUE_BLEND_MODE": "Farbton",
+  "SATURATION_BLEND_MODE": "Sättigung",
+  "LUMINOSITY_BLEND_MODE": "Luminanz",
+  "COLOR_BLEND_MODE": "Farbe",
+  "NOT_SUPPORTED_BLEND_MODE": "Nicht unterstützt",
+  "RESTART": "Neustarten",
+  "SORT_BY": "Sortieren nach",
+  "NAME": "Name",
+  "COLORS": "Farben",
+  "DEFAULT": "Standard",
+  "ALPHABETICAL": "Alphabetisch",
+  "COLOR_COUNT": "Anzahl an Farben",
+  "ANY": "Alle",
+  "MAX": "Max",
+  "MIN": "Min",
+  "EXACT": "Exakt",
+  "ASCENDING": "Aufsteigend",
+  "DESCENDING": "Absteigend",
+  "NAME_IS_TOO_LONG": "Der Name ist zu lang",
+  "STOP_IT_TEXT1": "Dat isch a bissle lang",
+  "STOP_IT_TEXT2": "Reicht dann auch mal wieder",
+  "REPLACER_TOOLTIP": "Rechts klick auf die Palette und auf 'Ersetzten' oder Drag-n-drop sie hier.",
+  "CLICK_TO_CHOOSE_COLOR": "Klicke um Farbe auszuwählen",
+  "REPLACE_COLOR": "Farbe ersetzten",
+  "PALETTE_COLOR_TOOLTIP": "Klicke um Hauptfarbe auszuwählen. Drag-n-drop eine andere palette um sie zu wechseln.",
+  "ADD_FROM_SWATCHES": "Fügt Farbfelder hinzu",
+  "ADD_COLOR_TO_PALETTE": "Fügt Farbe der Palette zu",
+  "USE_IN_CURRENT_IMAGE": "In aktuellen Bild benutzten",
+  "ADD_TO_FAVORITES": "Zu Favoriten hinzufügen",
+  "BROWSE_PALETTES": "Palettes browsen",
+  "LOAD_PALETTE": "Palette laden",
+  "SAVE_PALETTE": "Palette speichern",
+  "FAVORITES": "Favoriten",
+  "ADD_FROM_CURRENT_PALETTE": "Aus aktueller Palette hinzufügen",
+  "OPEN_PALETTES_DIR_TOOLTIP": "Öffnet Palettenverzeichnis in Explorer",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "Palettes auf Lospec browsen",
+  "IMPORT_FROM_FILE_TOOLTIP": "Aus Datei importieren",
+  "TOP_LEFT": "Oben links",
+  "TOP_CENTER": "Oben zentral",
+  "TOP_RIGHT": "Oben rechts",
+  "MIDDLE_LEFT": "Mitte Links",
+  "MIDDLE_CENTER": "Zentrale Mitte",
+  "MIDDLE_RIGHT": "Mitte Rechts",
+  "BOTTOM_LEFT": "Unten Links",
+  "BOTTOM_CENTER": "Unten Zentral",
+  "BOTTOM_RIGHT": "Unten Rechts",
+  "CLIP_TO_BELOW": "Auf Ebene darunter zuschneiden",
+  "MOVE_UPWARDS": "Nach oben bewegen",
+  "MOVE_DOWNWARDS": "Nach unten bewegen",
+  "MERGE_SELECTED": "Ausgewählte zusammenführen",
+  "LOCK_TRANSPARENCY": "Transparenz behalten",
+  "COULD_NOT_LOAD_PALETTE": "Konnte Paletten nicht laden",
+  "NO_PALETTES_FOUND": "Es wurden keine Paletten gefunden.",
+  "LOSPEC_LINK_TEXT": "Vielleicht findest du ja welche hier: lospec.com/palette-list",
+  "PALETTE_BROWSER": "Paletten Browser",
+  "DELETE_PALETTE_CONFIRMATION": "Soll diese Palette wirklich gelöscht werden? Dies kann nicht rückgängig gemacht werden.",
+  "SHORTCUTS_IMPORTED": "Tastenbelegung von {0} importiert.",
+  "SHORTCUT_PROVIDER_DETECTED": "Es scheint, als hättest du {0} installiert. Möchtest du die Tastenbelegung von {0} benutzten?",
+  "IMPORT_FROM_INSTALLATION": "Aus Installation importieren",
+  "IMPORT_INSTALLATION_OPTION1": "Aus Installation importieren",
+  "IMPORT_INSTALLATION_OPTION2": "Standardvorlage benutzten",
+  "IMPORT_FROM_TEMPLATE": "Aus Vorlage importieren",
+  "SHORTCUTS_IMPORTED_SUCCESS": "Tastenbelegung wurde erfolgreich importiert.",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "Bist du sicher das du deine Tastenbelegung auf den standard zurücksetzten möchtest?",
+  "SUCCESS": "Erfolg",
+  "WARNING": "Warnung",
+  "ERROR_IMPORTING_IMAGE": "Ein Fehler ist beim importieren des Bildes passiert.",
+  "SHORTCUTS_CORRUPTED_TITLE": "Korruptierte Tastenbelegung",
+  "SHORTCUTS_CORRUPTED": "Tastenbelegungsdatei ist korrupt. Tastenbelegung wurde auf den standard zurück gesetzt.",
+  "FAILED_DOWNLOAD_PALETTE": "Downloaded der Palette fehlgeschlagen",
+  "FILE_INCORRECT_FORMAT": "Die Datei war nicht in einem korrekten Format",
+  "INVALID_FILE": "Invalide Datei",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "Tastenbelegungsdatei war nicht in einem korrekten Format.",
+  "UNSUPPORTED_FILE_FORMAT": "Das Datei Format ist nicht unterstüzt",
+  "ALREADY_ASSIGNED": "Bereits benutzt",
+  "REPLACE": "Ersetzten",
+  "SWAP": "Wechseln",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "Dieses Tastenkürzel ist schon für '{0}' zugewiesen\nSoll es ersetzt oder mit dem aktuellen getauscht werden?",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "Dieses Tastenkürzel ist schon für '{0}' zugewiesen\nSoll es mit dem aktuellen ersetzt werden?",
+  "UNSAVED_CHANGES": "Ungespeicherte änderungen",
+  "DOCUMENT_MODIFIED_SAVE": "Das Bild wurde verändert. Möchtest du die Änderungen speichern?",
+  "SESSION_UNSAVED_DATA": "{0} mit ungespeicherten Dateien. Bist du sicher?",
+  "PROJECT_MAINTAINERS": "Projektverwalter",
+  "OTHER_AWESOME_CONTRIBUTORS": "Und andere tolle Mitwirkende",
+  "HELP": "Hilfe",
+  "STOP_IT_TEXT3": "Des isch dann gnua.",
+  "STOP_IT_TEXT4": "Bittschön nicht so lang.",
+  "LINEAR_DODGE_BLEND_MODE": "Linear abwedeln",
+  "PRESS_ANY_KEY": "Drücke eine Taste",
+  "NONE_SHORTCUT": "Nichts",
+  "REFERENCE": "Referenz",
+  "PUT_REFERENCE_LAYER_ABOVE": "Zeige Referenz Ebene als erste",
+  "PUT_REFERENCE_LAYER_BELOW": "Zeige Referenz Ebene als letzte",
+  "TOGGLE_VERTICAL_SYMMETRY": "Vertikale Symmetrie umschalten",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "Horizontale Symmetrie umschalten",
+  "RESET_VIEWPORT": "Anzeigebereich zurücksetzten",
+  "VIEWPORT_SETTINGS": "Anzeigebereich Einstellungen",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Klicke und bewege die Maus um alle Pixel in den Ausgewählten Ebenen zu bewegen.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Halte und bewege die Maus, um alle Ebenen zu bewegen.",
+  "CTRL_KEY": "Strg",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "Umbenennen",
+  "PIXEL_UNIT": "px",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "Lokalisierungsdebug Fenster öffnen",
+  "FORCE_OTHER_FLOW_DIRECTION": "Andere Layoutrichtung erzwingen",
+  "API_KEY": "API Schlüssel",
+  "LOCALIZATION_VIEW_TYPE": "Lokalisierungs Ansicht",
+  "LOAD_LANGUAGE_FROM_FILE": "Sprache aus Datei laden",
+  "LOG_IN": "Einloggen",
+  "SYNC": "Sync",
+  "NOT_LOGGED_IN": "Nicht eingeloggt",
+  "POE_EDITOR_ERROR": "POEditor Fehler: {0} {1}",
+  "HTTP_ERROR_MESSAGE": "HTTP Fehler: {0} {1}",
+  "LOGGED_IN": "Eingeloggt",
+  "SYNCED_SUCCESSFULLY": "Erfolgreich synchronisiert",
+  "EXCEPTION_ERROR": "Exception: {0}",
+  "DROP_PALETTE": "Palette hier fallen lassen",
+  "SECURITY_ERROR": "Berechtigungsfehler",
+  "SECURITY_ERROR_MSG": "Keine Berechtigungen um an dem Ort zu speichern.",
+  "IO_ERROR": "IO Fehler",
+  "IO_ERROR_MSG": "Fehler beim schreiben der Datei.",
+  "FAILED_ASSOCIATE_PIXI": "Fehler beim assoziieren von .pixi mit PixiEditor.",
+  "COULD_NOT_SAVE_PALETTE": "Es gab einen Fehler beim speichern der Palette.",
+  "NO_COLORS_TO_SAVE": "Es gibt keine Farben zum speichern.",
+  "ALL_LAYERS": "Alle Ebenen",
+  "SINGLE_LAYER": "Ausgewählte Ebene",
+  "CHOOSE": "Auswählen",
+  "REMOVE": "Entfernen",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "Datei ist keine \".aseprite-keys\" Datei",
+  "FILE_HAS_INVALID_SHORTCUT": "Die Datei beinhaltet nicht valide Tastenkürzel",
+  "FILE_EXTENSION_NOT_SUPPORTED": "Der Dateitype '{0}' ist nicht unterstützt",
+  "ERROR_READING_FILE": "Fehler beim Lesen der Datei",
+  "DISCARD_PALETTE": "Palette löschen",
+  "DISCARD_PALETTE_CONFIRMATION": "Bist du sicher, das du die aktuelle palette löschen möchtest? Dies kann nicht rückgängig gemacht werden.",
+  "IMPORT_AS_NEW_LAYER": "Als neue Ebene importieren",
+  "PASTE_AS_PRIMARY_COLOR": "Als Primärfarbe einfügen",
+  "IMPORT_AS_NEW_FILE": "Als neue Datei importieren",
+  "IMPORT_PALETTE_FILE": "Palettedatei importieren",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "Farben in Palette importieren",
+  "IMPORT_SINGLE_PALETTE_COLOR": "Farbe in Palette importieren",
+  "IMPORT_AS_REFERENCE_LAYER": "Als Referenzebene importieren",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "Rechtsklick um farbe zu picken, Shift + Rechtsklick um sie in die Zwischenablage zu kopieren",
+  "OPEN_FILE_FROM_CLIPBOARD": "Aus Zwischenablage öffnen",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Datei aus Zwischenablage öffnen",
+  "OPEN_LOCALIZATION_DATA": "Do you want to open the LocalizationData.json?\nThe updated date has been put in the clipboard.\nNote that changes wont be applied until a restart",
+  "DOWNLOADING_LANGUAGE_FAILED": "Downloading language failed.\nAPI Key might have been overused.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Localization data path not found",
+  "APPLY": "Apply",
+  "UPDATE_SOURCE": "Update source",
+  "COPY_TO_CLIPBOARD": "Copy to clipboard",
+  "LANGUAGE_FILE_NOT_FOUND": "Language file not found.\nLooking for {0}",
+  "PROJECT_ROOT_NOT_FOUND": "PixiEditor Project root not found.\nLooking for PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Localization folder not found.\nLooking for /Data/Localization",
+  "SELECT_A_LANGUAGE": "Select a language",
+  "DONE": "Done",
+  "SOURCE_UNSET_OR_MISSING": "Source missing/unset",
+  "SOURCE_NEWER": "Source newer",
+  "SOURCE_UP_TO_DATE": "Source is up to date",
+  "SOURCE_OLDER": "Cloud newer",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
+  "SHORTCUTS_TITLE": "Shortcuts",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+}

+ 588 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/en.json

@@ -0,0 +1,588 @@
+{
+  "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",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "Show image preview in taskbar",
+  "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",
+  "TO_INSTALL_UPDATE": "to install update {0}",
+  "DOWNLOADING_UPDATE": "Downloading update...",
+  "UPDATE_READY": "Update is ready to be installed. Do you want to install it now?",
+  "NEW_UPDATE": "New update",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Couldn't update without admin privileges. Please run PixiEditor as administrator.",
+  "INSUFFICIENT_PERMISSIONS": "Insufficient permissions",
+  "UPDATE_CHECK_FAILED": "Update check failed",
+  "COULD_NOT_CHECK_FOR_UPDATES": "Could not check if there is an update available.",
+  "VERSION": "Version {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_SELECTED": "Delete active layer/folder",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Delete active layer or folder",
+  "LAYER_DELETE_ALL_SELECTED": "Delete all selected layers/folders",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Delete all selected layers and/or folders",
+  "DELETE_SELECTED_PIXELS": "Delete selected pixels",
+  "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_PIXELS": "Delete pixels",
+  "DELETE_PIXELS_DESCRIPTIVE": "Delete selected pixels",
+  "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_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "Replace the secondary color by the primary color",
+  "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",
+  "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_NAVIGATION_WINDOW": "Open navigation 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": "Moves selected pixels ({0}). Hold Ctrl to move all layers.",
+  "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",
+  "NAVIGATION_TITLE": "Navigation",
+  "NORMAL_BLEND_MODE": "Normal",
+  "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 layer 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_FROM_INSTALLATION": "Import from installation",
+  "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?",
+  "SESSION_UNSAVED_DATA": "{0} with unsaved data. Are you sure?",
+  "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",
+  "VIEWPORT_SETTINGS": "Viewport settings",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Click and hold mouse to move pixels in selected layers.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Hold mouse to move all 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.",
+  "FAILED_ASSOCIATE_PIXI": "Failed to associate .pixi file with PixiEditor.",
+  "COULD_NOT_SAVE_PALETTE": "There was an error while saving the palette.",
+  "NO_COLORS_TO_SAVE": "There are no colors to save.",
+  "ALL_LAYERS": "All Layers",
+  "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",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
+  "SHORTCUTS_TITLE": "Shortcuts",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally.",
+
+  "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"
+}

+ 564 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/es.json

@@ -0,0 +1,564 @@
+{
+  "RECENT_FILES": "Archivo Reciente",
+  "OPEN_FILE": "Abrir Archivo",
+  "NEW_FILE": "Nuevo",
+  "RECENT_EMPTY_TEXT": "Demasiado espacio vacio",
+  "LANGUAGE": "Idioma",
+  "GENERAL": "General",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "Fijaciones de teclas",
+  "MISC": "Otros",
+  "SHOW_STARTUP_WINDOW": "Abrir Al Iniciar Windows",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "Mostrar imagen en la barra de tareas",
+  "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",
+  "TOOLS": "Herramientas",
+  "ENABLE_SHARED_TOOLBAR": "Activar la barra de herramientas compartida",
+  "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",
+  "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",
+  "FILE": "Archivo",
+  "RECENT": "Reciente",
+  "OPEN": "Abrir",
+  "SAVE_PIXI": "Guardar (.pixi)",
+  "SAVE_AS_PIXI": "Guardar como... (.pixi)",
+  "EXPORT_IMG": "Exportar (.png, .jpg, etc.)",
+  "EDIT": "Editar",
+  "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",
+  "REPOSITORY": "Repositorio",
+  "OPEN_REPOSITORY": "Abrir Repositorio",
+  "LICENSE": "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",
+  "TO_INSTALL_UPDATE": "instalar actualización {0}",
+  "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.",
+  "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}",
+  "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_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)",
+  "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}",
+  "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",
+  "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",
+  "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",
+  "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",
+  "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",
+  "SAVE": "Guardar",
+  "SAVE_AS": "Guardar como...",
+  "IMAGE": "Imagen",
+  "SAVE_IMAGE": "Guardar imagen",
+  "SAVE_IMAGE_AS": "Guardar imagen como nuevo",
+  "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",
+  "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",
+  "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",
+  "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",
+  "DELETE_PIXELS": "Borrar píxeles",
+  "DELETE_PIXELS_DESCRIPTIVE": "Borrar píxeles seleccionados",
+  "RESIZE_DOCUMENT": "Cambiar el tamaño del documento",
+  "RESIZE_CANVAS": "Cambiar el tamaño del canvas",
+  "CENTER_CONTENT": "Contenido central",
+  "CUT": "Cortar",
+  "CUT_DESCRIPTIVE": "Cortar el área o las capas seleccionadas",
+  "PASTE": "Pegar",
+  "PASTE_DESCRIPTIVE": "Pegar el contenido del portapapeles",
+  "PASTE_AS_NEW_LAYER": "Pegar como nueva capa",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Pegar desde el portapapeles como nueva capa",
+  "PASTE_REFERENCE_LAYER": "Pegar capa de referencia",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Pegar el contenido del portapapeles como capa de referencia",
+  "PASTE_COLOR": "Pegar color",
+  "PASTE_COLOR_DESCRIPTIVE": "Pegar color desde el portapapeles",
+  "PASTE_COLOR_SECONDARY": "Pegar color como secundario",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Pegar color del portapapeles como color secundario",
+  "CLIPBOARD": "Portapapeles",
+  "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_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_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_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?",
+  "PALETTE_EXISTS": "La paleta ya existe",
+  "REPLACE_PALETTE_CONSENT": "¿Reemplazar la paleta actual por la seleccionada?",
+  "REPLACE_PALETTE": "Sustituir la paleta actual",
+  "SELECT_COLOR_1": "Seleccionar color 1",
+  "SELECT_COLOR_2": "Seleccionar color 2",
+  "SELECT_COLOR_3": "Seleccionar color 3",
+  "SELECT_COLOR_4": "Seleccionar color 4",
+  "SELECT_COLOR_5": "Seleccionar color 5",
+  "SELECT_COLOR_6": "Seleccionar color 6",
+  "SELECT_COLOR_7": "Seleccionar color 7",
+  "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_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",
+  "SELECT_COLOR_8_DESCRIPTIVE": "Seleccione el octavo color de la paleta",
+  "SELECT_COLOR_9_DESCRIPTIVE": "Seleccione el noveno color de la paleta",
+  "SELECT_COLOR_10_DESCRIPTIVE": "Seleccione el decimo color de la paleta",
+  "SWAP_COLORS": "Intercambiar colores",
+  "SWAP_COLORS_DESCRIPTIVE": "Intercambiar colores primarios y secundarios",
+  "SEARCH": "Buscar",
+  "COMMAND_SEARCH": "Buscar comandos",
+  "OPEN_COMMAND_SEARCH": "Abrir buscador de comandos",
+  "SELECT": "Seleccionar",
+  "DESELECT": "Deseleccionar",
+  "INVERT": "Invertir",
+  "SELECTION": "Seleccionar",
+  "SELECT_ALL": "Seleccionar todo",
+  "SELECT_ALL_DESCRIPTIVE": "Seleccionar todo",
+  "CLEAR_SELECTION": "Limpiar seleccionado",
+  "INVERT_SELECTION": "Invertir seleccionado",
+  "INVERT_SELECTION_DESCRIPTIVE": "Invertir zona seleccionada",
+  "TRANSFORM_SELECTED_AREA": "Transformar zona seleccionada",
+  "NUDGE_SELECTED_LEFT": "Desplazar el objeto seleccionado hacia la izquierda",
+  "NUDGE_SELECTED_RIGHT": "Desplazar el objeto seleccionado hacia la derecha",
+  "NUDGE_SELECTED_UP": "Desplazar hacia arriba el objeto seleccionado",
+  "NUDGE_SELECTED_DOWN": "Desplazar hacia abajo el objeto seleccionado",
+  "MASK_FROM_SELECTION": "Nueva máscara a partir de la selección",
+  "MASK_FROM_SELECTION_DESCRIPTIVE": "Seleccionar nueva mascara",
+  "ADD_SELECTION_TO_MASK": "Agregar mascara seleccionada",
+  "SUBTRACT_SELECTION_FROM_MASK": "Restar la selección de la máscara",
+  "INTERSECT_SELECTION_MASK": "Selección de intersección con máscara",
+  "SELECTION_TO_MASK": "Selección para enmascarar",
+  "TO_NEW_MASK": "a la nueva máscara",
+  "ADD_TO_MASK": "agregar mascara",
+  "SUBTRACT_FROM_MASK": "restar de la máscara",
+  "INTERSECT_WITH_MASK": "intersecar con máscara",
+  "STYLUS": "Stylus",
+  "TOGGLE_PEN_MODE": "Activar el modo lápiz",
+  "UNDO": "Deshacer",
+  "UNDO_DESCRIPTIVE": "Deshacer la última acción",
+  "REDO": "Rehacer",
+  "REDO_DESCRIPTIVE": "Rehacer la última acción",
+  "WINDOWS": "Windows",
+  "TOGGLE_GRIDLINES": "Activar cuadrículas",
+  "ZOOM_IN": "Ampliar",
+  "ZOOM_OUT": "Alejar",
+  "NEW_WINDOW_FOR_IMG": "Nueva ventana para la imagen actual",
+  "CENTER_ACTIVE_VIEWPORT": "Centrar la ventana activa",
+  "FLIP_VIEWPORT_HORIZONTALLY": "Voltear horizontalmente la ventana gráfica",
+  "FLIP_VIEWPORT_VERTICALLY": "Voltear la ventana verticalmente",
+  "SETTINGS": "Ajustes",
+  "OPEN_SETTINGS": "Abrir ajustes",
+  "OPEN_SETTINGS_DESCRIPTIVE": "Abrir la ventana de configuración",
+  "OPEN_STARTUP_WINDOW": "Abrir la ventana de inicio",
+  "OPEN_SHORTCUT_WINDOW": "Abrir la ventana de accesos directos",
+  "OPEN_ABOUT_WINDOW": "Abrir la ventana Acerca de",
+  "OPEN_NAVIGATION_WINDOW": "Abrir la ventana de navegación",
+  "ERROR": "Error",
+  "INTERNAL_ERROR": "Error interno",
+  "ERROR_SAVE_LOCATION": "No se ha podido guardar el archivo en la ubicación especificada",
+  "ERROR_WHILE_SAVING": "Se ha producido un error interno al guardar. Por favor, inténtelo de nuevo.",
+  "UNKNOWN_ERROR_SAVING": "Se ha producido un error al guardar.",
+  "FAILED_ASSOCIATE_LOSPEC": "Fallo al asociar el protocolo Lospec Palette.",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "Donar",
+  "YES": "Si",
+  "NO": "No",
+  "CANCEL": "Cancelar",
+  "UNNAMED": "SinNombre",
+  "OPEN_COMMAND_DEBUG_WINDOW": "Abrir ventana de comandos debug",
+  "DELETE": "Eliminar",
+  "USER_PREFS": "Preferencias del usuario (Roaming)",
+  "SHORTCUT_FILE": "Archivo de acceso directo (Roaming)",
+  "EDITOR_DATA": "Editor de datos (Local)",
+  "MOVE_VIEWPORT_TOOLTIP": "Mueve la ventana gráfica. ({0})",
+  "MOVE_VIEWPORT_ACTION_DISPLAY": "Haz clic y desplázate para desplazar la ventana gráfica",
+  "MOVE_TOOL_TOOLTIP": "Mueve los píxeles seleccionados ({0}). Mantenga pulsada la tecla Ctrl para mover todas las capas.",
+  "MOVE_TOOL_ACTION_DISPLAY": "Mantenga pulsado el ratón para mover los píxeles seleccionados. Mantenga pulsada la tecla Ctrl para mover todas las capas.",
+  "PEN_TOOL_TOOLTIP": "Lapiz. ({0})",
+  "PEN_TOOL_ACTION_DISPLAY": "Haz clic y muévete para dibujar.",
+  "PIXEL_PERFECT_SETTING": "Pixel perfecto",
+  "RECTANGLE_TOOL_TOOLTIP": "Dibuja un rectángulo en el canvas ({0}). Mantenga pulsada la tecla Mayús para dibujar un cuadrado.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "Haga clic y mueva para dibujar un rectángulo. Mantenga pulsada la tecla Mayús para dibujar un cuadrado.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Haz clic y mueve para dibujar un cuadrado.",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "Mantener archivo original",
+  "ROTATE_VIEWPORT_TOOLTIP": "Rotar la vista. ({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "Haga clic y mueva para girar la ventana gráfica",
+  "SELECT_TOOL_TOOLTIP": "Seleccionar area. ({0})",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Haga clic y mueva para seleccionar un área. Mantenga pulsada la tecla Mayús para añadir a la selección existente. Mantenga pulsada la tecla Ctrl para restar.",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Pulse y mueva para añadir a la selección actual.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Haga clic y mueva para restar de la selección actual.",
+  "ZOOM_TOOL_TOOLTIP": "Amplía la vista ({0}). Haz clic para acercar, mantén pulsado alt y haz clic para alejar.",
+  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Haz clic y muévete para ampliar. Haz clic para acercar, mantén pulsada la tecla ctrl y haz clic para alejar.",
+  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Haz clic y muévete para ampliar. Haz clic para alejar, suelta ctrl y haz clic para acercar.",
+  "BRIGHTNESS_TOOL_TOOLTIP": "Aclara u oscurece los píxeles ({0}). Mantenga pulsada la tecla Ctrl para oscurecer los píxeles.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Dibuja sobre los píxeles para hacerlos más brillantes. Mantenga pulsada la tecla Ctrl para oscurecer.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Dibuja sobre los píxeles para oscurecerlos. Suelte Ctrl para aclarar.",
+  "COLOR_PICKER_TOOLTIP": "Elige el color primario del canvas. ({0})",
+  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Haz clic para elegir colores. Mantenga pulsada la tecla Ctrl para ocultar el canvas. Mantenga pulsada la tecla Shift para ocultar la referencia.",
+  "ELLIPSE_TOOL_TOOLTIP": "Dibuja una elipse en el canvas ({0}). Mantenga pulsada la tecla Shift para dibujar un círculo.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Haz clic y mueve el ratón para dibujar una elipse. Mantenga pulsada la tecla Shift para dibujar un círculo.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Haz clic y mueve el ratón para dibujar un círculo.",
+  "ERASER_TOOL_TOOLTIP": "Color del borrador del píxel. ({0})",
+  "ERASER_TOOL_ACTION_DISPLAY": "Pulse y mueva para borrar.",
+  "FLOOD_FILL_TOOL_TOOLTIP": "Rellena el área con color. ({0})",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Pulse sobre un área para rellenarla. Mantenga pulsada la tecla Ctrl para considerar todas las capas.",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Pulse sobre un área para rellenarla. Suelte Ctrl para considerar sólo las capas actuales.",
+  "LASSO_TOOL_TOOLTIP": "Lazo. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Haga clic y mueva para seleccionar píxeles dentro del lazo. Mantenga pulsada la tecla Shift para añadir a la selección existente. Mantenga pulsada la tecla Ctrl para restar de ella.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Haga clic y mueva para añadir píxeles dentro del lazo a la selección.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Haga clic y mueva para restar píxeles dentro del lazo de la selección.",
+  "LINE_TOOL_TOOLTIP": "Dibuja una línea en el lienzo ({0}). Mantenga pulsada la tecla Shift para activar el ajuste.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Haga clic y mueva para dibujar una línea. Mantenga pulsada la tecla Shift para activar el ajuste.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Haga clic y mueva el ratón para dibujar una línea con el ajuste activado.",
+  "MAGIC_WAND_TOOL_TOOLTIP": "Varita Mágica ({0}). Inundar es la selección",
+  "MAGIC_WAND_ACTION_DISPLAY": "Haga clic para inundar la selección.",
+  "PEN_TOOL": "Lapiz",
+  "BRIGHTNESS_TOOL": "Oscuridad",
+  "COLOR_PICKER_TOOL": "Selector de color",
+  "ELLIPSE_TOOL": "Elipse",
+  "ERASER_TOOL": "Borrador",
+  "FLOOD_FILL_TOOL": "Relleno de inundación",
+  "LASSO_TOOL": "Lazo",
+  "LINE_TOOL": "Linea",
+  "MAGIC_WAND_TOOL": "Varita mágica",
+  "MOVE_TOOL": "Mover",
+  "MOVE_VIEWPORT_TOOL": "Mover la ventana gráfica",
+  "RECTANGLE_TOOL": "Rectangulo",
+  "ROTATE_VIEWPORT_TOOL": "Rotar la ventana gráfica",
+  "SELECT_TOOL_NAME": "Seleccionar",
+  "ZOOM_TOOL": "Zoom",
+  "SHAPE_LABEL": "Forma",
+  "MODE_LABEL": "Forma",
+  "SCOPE_LABEL": "Alcance",
+  "FILL_SHAPE_LABEL": "Forma de relleno",
+  "FILL_COLOR_LABEL": "Forma de color",
+  "TOOL_SIZE_LABEL": "Herramienta de tamaño",
+  "STRENGTH_LABEL": "Fuerza",
+  "NEW": "Nuevo",
+  "ADD": "Agregar",
+  "SUBTRACT": "Resta",
+  "INTERSECT": "Intersect",
+  "RECTANGLE": "Rectangulo",
+  "CIRCLE": "Circulo",
+  "ABOUT": "Sobre",
+  "MINIMIZE": "Minimizar",
+  "RESTORE": "Restaurar",
+  "MAXIMIZE": "Maximizar",
+  "CLOSE": "Cerrar",
+  "EXPORT_SIZE_HINT": "Si quieres compartir la imagen, prueba {0}% para obtener la mejor claridad",
+  "CREATE": "Crear",
+  "BASE_LAYER_NAME": "Capa base",
+  "ENABLE_MASK": "Activar máscara",
+  "SELECTED_AREA_EMPTY": "El área seleccionada está vacía",
+  "NOTHING_TO_COPY": "Nada para copiar",
+  "REFERENCE_LAYER_PATH": "Trayectoria de la capa de referencia",
+  "FLIP": "Voltear",
+  "ROTATION": "Rotacion",
+  "ROT_IMG_90_D": "Girar la imagen 90",
+  "ROT_IMG_180_D": "Girar la imagen 180",
+  "ROT_IMG_-90_D": "Girar la imagen -90",
+  "ROT_LAYERS_90_D": "Girar la imagen seleccionada 90",
+  "ROT_LAYERS_180_D": "Girar la imagen seleccionada 180",
+  "ROT_LAYERS_-90_D": "Girar la imagen seleccionada -90",
+  "UNNAMED_PALETTE": "Paleta sin nombre",
+  "CLICK_SELECT_PRIMARY": "Haga clic para seleccionar como color principal.",
+  "PEN_MODE": "Modo lapiz",
+  "VIEW": "Mirar",
+  "HORIZONTAL_LINE_SYMMETRY": "Simetría de línea horizontal",
+  "VERTICAL_LINE_SYMMETRY": "Simetría de línea vertical",
+  "COLOR_PICKER_TITLE": "Selector de color",
+  "COLOR_SLIDERS_TITLE": "Deslizadores de color",
+  "PALETTE_TITLE": "Paleta",
+  "SWATCHES_TITLE": "Muestras",
+  "LAYERS_TITLE": "Capas",
+  "NAVIGATION_TITLE": "Navegación",
+  "NORMAL_BLEND_MODE": "Normal",
+  "DARKEN_BLEND_MODE": "Oscurecer",
+  "MULTIPLY_BLEND_MODE": "Multpilicar",
+  "COLOR_BURN_BLEND_MODE": "Quemadura de color",
+  "LIGHTEN_BLEND_MODE": "Aclarar",
+  "SCREEN_BLEND_MODE": "Pantalla",
+  "COLOR_DODGE_BLEND_MODE": "Esquivar el color",
+  "OVERLAY_BLEND_MODE": "Superposición",
+  "SOFT_LIGHT_BLEND_MODE": "Luz suave",
+  "HARD_LIGHT_BLEND_MODE": "Luz dura",
+  "DIFFERENCE_BLEND_MODE": "Diferencia",
+  "EXCLUSION_BLEND_MODE": "Exclusion",
+  "HUE_BLEND_MODE": "Tono",
+  "SATURATION_BLEND_MODE": "Saturacion",
+  "LUMINOSITY_BLEND_MODE": "Luminosidad",
+  "COLOR_BLEND_MODE": "Color",
+  "NOT_SUPPORTED_BLEND_MODE": "No compatible",
+  "RESTART": "Reiniciar",
+  "SORT_BY": "Ordenar por",
+  "NAME": "Nombre",
+  "COLORS": "Colores",
+  "DEFAULT": "Defecto",
+  "ALPHABETICAL": "Alfabético",
+  "COLOR_COUNT": "Recuento de colores",
+  "ANY": "Cualquier",
+  "MAX": "Max",
+  "MIN": "Min",
+  "EXACT": "Exacto",
+  "ASCENDING": "Ascendente",
+  "DESCENDING": "Descendente",
+  "NAME_IS_TOO_LONG": "El nombre es demasiado largo",
+  "STOP_IT_TEXT1": "Es suficiente. Ordena los nombres de tus archivos.",
+  "STOP_IT_TEXT2": "¿Puedes dejar de copiar estos nombres, por favor?",
+  "REPLACER_TOOLTIP": "Haga clic con el botón derecho en el color de la paleta y elija 'Reemplazar' o suéltelo aquí.",
+  "CLICK_TO_CHOOSE_COLOR": "Haga clic para elegir el color",
+  "REPLACE_COLOR": "Sustituir color",
+  "PALETTE_COLOR_TOOLTIP": "Haga clic para seleccionarlo como color principal. Arrastre y suelte sobre otro color de la paleta para intercambiarlos.",
+  "ADD_FROM_SWATCHES": "Agregar a partir de muestras",
+  "ADD_COLOR_TO_PALETTE": "Agregar color a la paleta",
+  "USE_IN_CURRENT_IMAGE": "Uso en la imagen actual",
+  "ADD_TO_FAVORITES": "Agregar a favoritos",
+  "BROWSE_PALETTES": "Explorar paletas",
+  "LOAD_PALETTE": "Cargar paleta",
+  "SAVE_PALETTE": "Guardar paleta",
+  "FAVORITES": "Favoritos",
+  "ADD_FROM_CURRENT_PALETTE": "Añadir desde la paleta actual",
+  "OPEN_PALETTES_DIR_TOOLTIP": "Abrir el directorio de paletas en el explorador",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "Buscar paletas en Lospec",
+  "IMPORT_FROM_FILE_TOOLTIP": "Importar desde archivo",
+  "TOP_LEFT": "Arriba a la izquierda",
+  "TOP_CENTER": "Centro superior",
+  "TOP_RIGHT": "Arriba a la derecha",
+  "MIDDLE_LEFT": "Centro izquierda",
+  "MIDDLE_CENTER": "Centro",
+  "MIDDLE_RIGHT": "Centro derecha",
+  "BOTTOM_LEFT": "Abajo a la izquierda",
+  "BOTTOM_CENTER": "Abajo al centro",
+  "BOTTOM_RIGHT": "Abajo a la derecha",
+  "CLIP_TO_BELOW": "Recorte a la capa inferior",
+  "MOVE_UPWARDS": "Moverse hacia arriba",
+  "MOVE_DOWNWARDS": "Desplazarse hacia abajo",
+  "MERGE_SELECTED": "Fusión seleccionada",
+  "LOCK_TRANSPARENCY": "Bloquear la transparencia",
+  "COULD_NOT_LOAD_PALETTE": "No se pueden obtener paletas",
+  "NO_PALETTES_FOUND": "No se han encontrado paletas.",
+  "LOSPEC_LINK_TEXT": "He oído que puedes encontrar algunos aquí: lospec.com/palette-list",
+  "PALETTE_BROWSER": "Navegador de paletas",
+  "DELETE_PALETTE_CONFIRMATION": "¿Está seguro de que desea eliminar esta paleta? Esto no se puede deshacer.",
+  "SHORTCUTS_IMPORTED": "Los accesos directos de {0} se han importado correctamente.",
+  "SHORTCUT_PROVIDER_DETECTED": "Hemos detectado que tiene {0} instalado. ¿Desea importar accesos directos desde él?",
+  "IMPORT_FROM_INSTALLATION": "Importar desde la instalación",
+  "IMPORT_INSTALLATION_OPTION1": "Importar desde la instalación",
+  "IMPORT_INSTALLATION_OPTION2": "Utilizar valores por defecto",
+  "IMPORT_FROM_TEMPLATE": "Importar desde plantilla",
+  "SHORTCUTS_IMPORTED_SUCCESS": "Los accesos directos se han importado correctamente.",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "¿Estás seguro de que quieres restablecer todos los accesos directos a su valor por defecto?",
+  "SUCCESS": "Éxito",
+  "WARNING": "Aviso",
+  "ERROR_IMPORTING_IMAGE": "Se ha producido un error al importar la imagen.",
+  "SHORTCUTS_CORRUPTED_TITLE": "Archivo de accesos directos dañado",
+  "SHORTCUTS_CORRUPTED": "El archivo de accesos directos estaba dañado, restableciendo el valor por defecto.",
+  "FAILED_DOWNLOAD_PALETTE": "No se ha podido descargar la paleta",
+  "FILE_INCORRECT_FORMAT": "El archivo no tenía el formato correcto",
+  "INVALID_FILE": "Archivo no válido",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "El archivo de accesos directos no tenía el formato correcto",
+  "UNSUPPORTED_FILE_FORMAT": "Este formato de archivo no es compatible",
+  "ALREADY_ASSIGNED": "Ya asignado",
+  "REPLACE": "Sustituir",
+  "SWAP": "Intercambiar",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "Este acceso directo ya está asignado a '{0}'.\n¿Quieres reemplazar el acceso directo existente o intercambiar los dos?",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "Este acceso directo ya está asignado a '{0}'.\n¿Desea sustituir el acceso directo existente?",
+  "UNSAVED_CHANGES": "Cambios no guardados",
+  "DOCUMENT_MODIFIED_SAVE": "El documento ha sido modificado. ¿Desea guardar los cambios?",
+  "SESSION_UNSAVED_DATA": "{0} con datos sin guardar. ¿Está seguro?",
+  "PROJECT_MAINTAINERS": "Mantenedores de proyectos",
+  "OTHER_AWESOME_CONTRIBUTORS": "Y otros increíbles colaboradores",
+  "HELP": "Ayuda",
+  "STOP_IT_TEXT3": "No, en serio, basta.",
+  "STOP_IT_TEXT4": "¿No tienes nada mejor que hacer?",
+  "LINEAR_DODGE_BLEND_MODE": "Esquiva lineal (Añadir)",
+  "PRESS_ANY_KEY": "Pulsar cualquier tecla",
+  "NONE_SHORTCUT": "Ninguno",
+  "REFERENCE": "Referencia",
+  "PUT_REFERENCE_LAYER_ABOVE": "Poner capa de referencia encima",
+  "PUT_REFERENCE_LAYER_BELOW": "Poner capa de referencia debajo",
+  "TOGGLE_VERTICAL_SYMMETRY": "Alternar simetría vertical",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "Alternar simetría horizontal",
+  "RESET_VIEWPORT": "Restablecer vista",
+  "VIEWPORT_SETTINGS": "Viewport settings",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Mantenga pulsado el ratón para mover los píxeles de las capas seleccionadas.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Mantenga pulsado el ratón para mover todas las capas.",
+  "CTRL_KEY": "Ctrl",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "Renombrar",
+  "PIXEL_UNIT": "px",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "Abrir la ventana de depuración de localización",
+  "FORCE_OTHER_FLOW_DIRECTION": "Forzar otra dirección de flujo",
+  "API_KEY": "Clave API",
+  "LOCALIZATION_VIEW_TYPE": "Localización tipo de vista",
+  "LOAD_LANGUAGE_FROM_FILE": "Cargar idioma desde archivo",
+  "LOG_IN": "Iniciar sesion",
+  "SYNC": "Sincronización",
+  "NOT_LOGGED_IN": "No ha iniciado sesión",
+  "POE_EDITOR_ERROR": "POEditor Error: {0} {1}",
+  "HTTP_ERROR_MESSAGE": "HTTP Error: {0} {1}",
+  "LOGGED_IN": "Iniciado sesion",
+  "SYNCED_SUCCESSFULLY": "Sincronizado correctamente",
+  "EXCEPTION_ERROR": "Exception: {0}",
+  "DROP_PALETTE": "Suelte la paleta aquí",
+  "SECURITY_ERROR": "Error de seguridad",
+  "SECURITY_ERROR_MSG": "No hay derechos para escribir en la ubicación especificada.",
+  "IO_ERROR": "IO error",
+  "IO_ERROR_MSG": "Error al escribir en disco.",
+  "FAILED_ASSOCIATE_PIXI": "Error al asociar el archivo .pixi con PixiEditor.",
+  "COULD_NOT_SAVE_PALETTE": "Se ha producido un error al guardar la paleta.",
+  "NO_COLORS_TO_SAVE": "No hay colores que guardar.",
+  "ALL_LAYERS": "Todas las capas",
+  "SINGLE_LAYER": "Unica capa",
+  "CHOOSE": "Elija",
+  "REMOVE": "Eliminar",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "El archivo no es un archivo \".aseprite-keys",
+  "FILE_HAS_INVALID_SHORTCUT": "El archivo contiene un acceso directo no válido",
+  "FILE_EXTENSION_NOT_SUPPORTED": "No se admite el tipo de archivo '{0}",
+  "ERROR_READING_FILE": "Error al leer el archivo",
+  "DISCARD_PALETTE": "Descartar paleta",
+  "DISCARD_PALETTE_CONFIRMATION": "¿Está seguro de que desea descartar la paleta actual? Esto no se puede deshacer.",
+  "IMPORT_AS_NEW_LAYER": "Importar como nueva capa",
+  "PASTE_AS_PRIMARY_COLOR": "Pegar como color primario",
+  "IMPORT_AS_NEW_FILE": "Importar como archivo nuevo",
+  "IMPORT_PALETTE_FILE": "Importar archivo de paleta",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "Importar colores a la paleta",
+  "IMPORT_SINGLE_PALETTE_COLOR": "Importar color a la paleta",
+  "IMPORT_AS_REFERENCE_LAYER": "Importar como capa de referencia",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "Haga clic con el botón derecho del ratón para seleccionar el color y pulse Mayús y haga clic con el botón derecho para copiar el color en el portapapeles",
+  "OPEN_FILE_FROM_CLIPBOARD": "Abrir desde el portapapeles",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Abrir desde el portapapeles",
+  "OPEN_LOCALIZATION_DATA": "¿Quiere abrir el archivo LocalizationData.json? La fecha actualizada se ha puesto en el portapapeles.\nTenga en cuenta que los cambios no se aplicarán hasta que se reinicie el sistema",
+  "DOWNLOADING_LANGUAGE_FAILED": "Error al descargar el idioma.\nEs posible que la clave API se haya utilizado en exceso.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Ruta de datos de localización no encontrada",
+  "APPLY": "Aplicar",
+  "UPDATE_SOURCE": "Actualizar source",
+  "COPY_TO_CLIPBOARD": "Copiar al portapapeles",
+  "LANGUAGE_FILE_NOT_FOUND": "Archivo de idioma no encontrado.\nBuscando {0}",
+  "PROJECT_ROOT_NOT_FOUND": "No se ha encontrado la raíz del proyecto PixiEditor.\nBuscando PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "No se ha encontrado la carpeta de localización.\nBuscando /Data/Localization",
+  "SELECT_A_LANGUAGE": "Seleccione un idioma",
+  "DONE": "Hecho",
+  "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",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
+  "SHORTCUTS_TITLE": "Shortcuts",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+}

+ 564 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/hu.json

@@ -0,0 +1,564 @@
+{
+  "RECENT_FILES": "Legutóbbi",
+  "OPEN_FILE": "Megnyitás",
+  "NEW_FILE": "Új",
+  "RECENT_EMPTY_TEXT": "Halló? Van itt valaki?",
+  "LANGUAGE": "Nyelv",
+  "GENERAL": "Általános",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "Billentyűparancsok",
+  "MISC": "Egyéb",
+  "SHOW_STARTUP_WINDOW": "Indítási ablak megjelenítése",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "Képek előnézetének megjelenítése a feladatlistában",
+  "RECENT_FILE_LENGTH": "Legutóbbi fájlok listájának hossza",
+  "RECENT_FILE_LENGTH_TOOLTIP": "Ezzel beállíthatod, hogy hány dokumentum jelenjen meg a Fájl > Legutóbbi menüpont alatt. Alapértelmezett: 8",
+  "DEFAULT_NEW_SIZE": "Az új fájlok alapértelmezett méretei",
+  "WIDTH": "Szélesség",
+  "HEIGHT": "Magasság",
+  "TOOLS": "Eszközök",
+  "ENABLE_SHARED_TOOLBAR": "Megosztott eszköztár engedélyezése",
+  "AUTOMATIC_UPDATES": "Automatikus frissítések",
+  "CHECK_FOR_UPDATES": "Frissítések keresése indításkor",
+  "UPDATE_STREAM": "Frissítési csatorna",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "A frissítési csatornákat csak a telepített, önálló változatban (letölthető a https://pixieditor.net oldalról) lehet módosítani.\nA Steam és Microsoft Store verziók külön kezelik a frissítéseket.",
+  "DEBUG": "Debugolás",
+  "ENABLE_DEBUG_MODE": "Debug mód bekapcsolása",
+  "OPEN_CRASH_REPORTS_DIR": "Összeomlási jelentések könyvtárának megnyitása",
+  "DISCORD_RICH_PRESENCE": "Rich Presence",
+  "ENABLED": "Engedélyezve",
+  "SHOW_IMAGE_NAME": "Szerkesztett kép nevének megjelenítése",
+  "SHOW_IMAGE_SIZE": "Szerkesztett kép méretének megjelenítése",
+  "SHOW_LAYER_COUNT": "Szerkesztett kép rétegszámának megjelenítése",
+  "FILE": "Fájl",
+  "RECENT": "Legutóbbi",
+  "OPEN": "Megnyitás",
+  "SAVE_PIXI": "Mentés (.pixi)",
+  "SAVE_AS_PIXI": "Mentés másként... (.pixi)",
+  "EXPORT_IMG": "Exportálás (.png, .jpg, stb.)",
+  "EDIT": "Szerkesztés",
+  "EXIT": "Kilépés",
+  "PERCENTAGE": "Átméretezés százalék alapján",
+  "ABSOLUTE": "Abszolút átméretezés",
+  "PRESERVE_ASPECT_RATIO": "Oldalarány megőrzése",
+  "ANCHOR_POINT": "Horgonyzópont",
+  "RESIZE_IMAGE": "Kép átméretezése",
+  "RESIZE": "Átméretezés",
+  "DOCUMENTATION": "Dokumentáció",
+  "WEBSITE": "Weboldal",
+  "OPEN_WEBSITE": "Weboldal megnyitása",
+  "REPOSITORY": "Repository",
+  "OPEN_REPOSITORY": "Repository megnyitása",
+  "LICENSE": "Licensz",
+  "OPEN_LICENSE": "Licensz megnyitása",
+  "THIRD_PARTY_LICENSES": "Harmadik féltől származó licenszek",
+  "OPEN_THIRD_PARTY_LICENSES": "Harmadik féltől származó licenszek megnyitása",
+  "APPLY_TRANSFORM": "Átalakítás alkalmazása",
+  "INCREASE_TOOL_SIZE": "Eszközméret növelése",
+  "DECREASE_TOOL_SIZE": "Eszközméret csökkentése",
+  "TO_INSTALL_UPDATE": "a {0} frissítés telepítéséhez",
+  "DOWNLOADING_UPDATE": "Frissítés letöltése folyamatban...",
+  "UPDATE_READY": "A frissítés telepítésre kész. Szeretnéd most telepíteni?",
+  "NEW_UPDATE": "Új frissítés",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Az adminisztrátori jogosultságok nélkül nem lehet frissíteni. Kérlek, futtassd a PixiEditort rendszergazdaként.",
+  "INSUFFICIENT_PERMISSIONS": "Elégtelen jogosultságok",
+  "UPDATE_CHECK_FAILED": "Frissítés ellenőrzése sikertelen volt",
+  "COULD_NOT_CHECK_FOR_UPDATES": "Nem sikerült ellenőrizni, hogy elérhető-e frissítés.",
+  "VERSION": "{0} verzió",
+  "OPEN_TEMP_DIR": "Temp mappa megnyitása",
+  "OPEN_LOCAL_APPDATA_DIR": "Local AppData mappa megnyitása",
+  "OPEN_ROAMING_APPDATA_DIR": "Roaming AppData mappa megnyitása",
+  "OPEN_INSTALLATION_DIR": "Telepítési mappa megnyitása",
+  "DUMP_ALL_COMMANDS": "Összes parancs dumpolása",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Összes parancs dumpolása (textfájlba)",
+  "CRASH": "Összeomlás",
+  "CRASH_APP": "Az alkalmazás összeomlasztása",
+  "DELETE_USR_PREFS": "Felhasználói beállítások törlése (Roaming AppData-ban)",
+  "DELETE_SHORTCUT_FILE": "Parancsikon fájl törlése (Roaming AppData-ban)",
+  "DELETE_EDITOR_DATA": "Editor adatok törlése (Local AppData-ban)",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "Billentyűkiosztás sablon generálása",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Billentyűkiosztás JSON sablon generálása",
+  "VALIDATE_SHORTCUT_MAP": "Parancsikontérkép ellenőrzése",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Ellenőrzi a parancsikontérképet",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "Üres billentyűk: {0}\nIsmeretlen parancsok: {1}",
+  "RESULT": "Eredmény",
+  "CLEAR_RECENT_DOCUMENTS": "Legutóbbi dokumentumok törlése",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Törli a legutóbbi dokumentumokat",
+  "OPEN_CMD_DEBUG_WINDOW": "Debug ablak megnyitása",
+  "PATH_DOES_NOT_EXIST": "{0} nem létezik",
+  "LOCATION_DOES_NOT_EXIST": "A hely nem létezik.",
+  "FILE_NOT_FOUND": "Fájl nem található.",
+  "ARE_YOU_SURE": "Biztos vagy ebben?",
+  "ARE_YOU_SURE_PATH_FULL_PATH": "Biztos, hogy törölni szeretnéd a(z) {0} fájlt?\nEz az adat véglegesen elveszik az összes telepítésről.\n(Teljes path: {1})",
+  "FAILED_TO_OPEN_FILE": "A fájl megnyitása sikertelen volt.",
+  "OLD_FILE_FORMAT": "Elavult fájlformátum",
+  "OLD_FILE_FORMAT_DESCRIPTION": "Ez a .pixi fájl a régi, már elavult fájlformátumot használja, \nami már nem támogatott és nem megnyitható.",
+  "NOTHING_FOUND": "Nem találtunk semmit",
+  "EXPORT": "Exportálás",
+  "EXPORT_IMAGE": "Kép exportálása",
+  "IMPORT": "Importálás",
+  "SHORTCUT_TEMPLATES": "Shortcut sablonok",
+  "RESET_ALL": "Minden visszaállítása",
+  "LAYER": "Réteg",
+  "LAYER_DELETE_SELECTED": "Aktív réteg/mappa törlése",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Aktív réteg vagy mappa törlése",
+  "LAYER_DELETE_ALL_SELECTED": "Az összes kijelölt réteg/mappa törlése",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Az összes kijelölt réteg és/vagy mappa törlése",
+  "DELETE_SELECTED_PIXELS": "Kijelölt pixelek törlése",
+  "NEW_FOLDER": "Új mappa",
+  "CREATE_NEW_FOLDER": "Új mappa létrehozása",
+  "NEW_LAYER": "Új réteg",
+  "CREATE_NEW_LAYER": "Új réteg létrehozása",
+  "NEW_IMAGE": "Új kép",
+  "CREATE_NEW_IMAGE": "Új kép létrehozása",
+  "SAVE": "Mentés",
+  "SAVE_AS": "Mentés másként...",
+  "IMAGE": "Kép",
+  "SAVE_IMAGE": "Kép mentése",
+  "SAVE_IMAGE_AS": "Kép mentése másként",
+  "DUPLICATE": "Duplikálás",
+  "DUPLICATE_SELECTED_LAYER": "Kijelölt réteg duplikálása",
+  "CREATE_MASK": "Maszk létrehozása",
+  "DELETE_MASK": "Maszk törlése",
+  "TOGGLE_MASK": "Maszk váltása",
+  "APPLY_MASK": "Maszk alkalmazása",
+  "TOGGLE_VISIBILITY": "Láthatóság átkapcsolása",
+  "MOVE_MEMBER_UP": "Réteg felfelé mozgatása",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "A kijelölt réteg vagy mappa felfelé mozgatása",
+  "MOVE_MEMBER_DOWN": "Réteg lefelé mozgatása",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "A kijelölt réteg vagy mappa lefelé mozgatása",
+  "MERGE_ALL_SELECTED_LAYERS": "Az összes kijelölt réteg egyesítése",
+  "MERGE_WITH_ABOVE": "A kiválasztott réteg egyesítése a feljebbi réteggel",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "A kiválasztott réteg egyesítése a felette lévővel",
+  "MERGE_WITH_BELOW": "A kiválasztott réteg egyesítése az alábbi réteggel",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "A kijelölt réteg egyesítése az alatta lévővel",
+  "ADD_REFERENCE_LAYER": "Referenciaréteg hozzáadása",
+  "DELETE_REFERENCE_LAYER": "Referenciaréteg törlése",
+  "TRANSFORM_REFERENCE_LAYER": "Referenciaréteg átalakítása",
+  "TOGGLE_REFERENCE_LAYER_POS": "Referenciaréteg pozíciójának váltása",
+  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Referenciaréteg váltása a legfelső vagy a legalsó pozíció között",
+  "RESET_REFERENCE_LAYER_POS": "Referenciaréteg pozíciójának visszaállítása",
+  "CLIP_CANVAS": "Clip vászon",
+  "FLIP_IMG_VERTICALLY": "Kép függőlegesen történő átfordítása",
+  "FLIP_IMG_HORIZONTALLY": "Kép vízszintes átfordítása",
+  "FLIP_LAYERS_VERTICALLY": "Kijelölt rétegek függőlegesen történő átfordítása",
+  "FLIP_LAYERS_HORIZONTALLY": "Kijelölt rétegek vízszintes átfordítása",
+  "ROT_IMG_90": "Kép elforgatása 90 fokkal",
+  "ROT_IMG_180": "Kép elforgatása 180 fokban",
+  "ROT_IMG_-90": "Kép elforgatása -90 fokban",
+  "ROT_LAYERS_90": "Kijelölt rétegek elforgatása 90 fokkal",
+  "ROT_LAYERS_180": "Kijelölt rétegek elforgatása 180 fokban",
+  "ROT_LAYERS_-90": "Kijelölt rétegek elforgatása -90 fokban",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "Függőleges szimmetriatengely átkapcsolása",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "Vízszintes szimmetriatengely átkapcsolása",
+  "DELETE_PIXELS": "Pixelek törlése",
+  "DELETE_PIXELS_DESCRIPTIVE": "Kijelölt pixelek törlése",
+  "RESIZE_DOCUMENT": "A dokumentum átméretezése",
+  "RESIZE_CANVAS": "Vászon átméretezése",
+  "CENTER_CONTENT": "Tartalom középre állítása",
+  "CUT": "Kivágás",
+  "CUT_DESCRIPTIVE": "Kiválasztott terület/rétegek kivágása",
+  "PASTE": "Beillesztés",
+  "PASTE_DESCRIPTIVE": "A vágólap tartalmának beillesztése",
+  "PASTE_AS_NEW_LAYER": "Beillesztés új rétegként",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Beillesztés a vágólapról új rétegként",
+  "PASTE_REFERENCE_LAYER": "Referenciaréteg beillesztése",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "A vágólap tartalmának beillesztése referenciarétegként",
+  "PASTE_COLOR": "Szín beillesztése",
+  "PASTE_COLOR_DESCRIPTIVE": "Szín beillesztése a vágólapról",
+  "PASTE_COLOR_SECONDARY": "Szín beillesztése másodlagosként",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Szín beillesztése a vágólapról másodlagos színként",
+  "CLIPBOARD": "Vágólap",
+  "COPY": "Másolás",
+  "COPY_DESCRIPTIVE": "Másolás a vágólapra",
+  "COPY_COLOR_HEX": "Elsődleges szín másolása (HEX)",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "Elsődleges szín másolása HEX-kódként",
+  "COPY_COLOR_RGB": "Elsődleges szín másolása (RGB)",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "Elsődleges szín másolása RGB kódként",
+  "COPY_COLOR_SECONDARY_HEX": "Másodlagos szín másolása (HEX)",
+  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Másodlagos szín másolása HEX kódként",
+  "COPY_COLOR_SECONDARY_RGB": "Másodlagos szín másolása (RGB)",
+  "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "Másodlagos szín másolása RGB kódként",
+  "PALETTE_COLORS": "Paletta színei",
+  "REPLACE_SECONDARY_BY_PRIMARY": "A másodlagos szín elsődleges színnel cserélése",
+  "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "A másodlagos színt az elsődleges színre cseréli",
+  "REPLACE_PRIMARY_BY_SECONDARY": "Az elsődleges szín másodlagos színnel cserélése",
+  "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Az elsődleges színt a másodlagos színre cseréli",
+  "OPEN_PALETTE_BROWSER": "Paletta böngésző megnyitása",
+  "OVERWRITE_PALETTE_CONSENT": "A '{0}' paletta már létezik, felül akarja írni?",
+  "PALETTE_EXISTS": "Paletta már létezik",
+  "REPLACE_PALETTE_CONSENT": "Szeretnéd az aktuális palettát kicserélni a kiválasztott palettára?",
+  "REPLACE_PALETTE": "Jelenlegi paletta cseréje",
+  "SELECT_COLOR_1": "Szín 1 kiválasztása",
+  "SELECT_COLOR_2": "Szín 2 kiválasztása",
+  "SELECT_COLOR_3": "Szín 3 kiválasztása",
+  "SELECT_COLOR_4": "Szín 4 kiválasztása",
+  "SELECT_COLOR_5": "Szín 5 kiválasztása",
+  "SELECT_COLOR_6": "Szín 6 kiválasztása",
+  "SELECT_COLOR_7": "Szín 7 kiválasztása",
+  "SELECT_COLOR_8": "Szín 8 kiválasztása",
+  "SELECT_COLOR_9": "Szín 9 kiválasztása",
+  "SELECT_COLOR_10": "Szín 10 kiválasztása",
+  "SELECT_TOOL": "A {0} eszköz kiválasztása",
+  "SELECT_COLOR_1_DESCRIPTIVE": "Kiválasztja az első színt a palettán",
+  "SELECT_COLOR_2_DESCRIPTIVE": "Kiválasztja a második színt a palettán",
+  "SELECT_COLOR_3_DESCRIPTIVE": "Kiválasztja a harmadik színt a palettán",
+  "SELECT_COLOR_4_DESCRIPTIVE": "Kiválasztja a negyedik színt a palettán",
+  "SELECT_COLOR_5_DESCRIPTIVE": "Kiválasztja az ötödik színt a palettán",
+  "SELECT_COLOR_6_DESCRIPTIVE": "Kiválasztja a hatodik színt a palettán",
+  "SELECT_COLOR_7_DESCRIPTIVE": "Kiválasztja a hetedik színt a palettán",
+  "SELECT_COLOR_8_DESCRIPTIVE": "Kiválasztja a nyolcadik színt a palettán",
+  "SELECT_COLOR_9_DESCRIPTIVE": "Kiválasztja a kilencedik színt a palettán",
+  "SELECT_COLOR_10_DESCRIPTIVE": "Kiválasztja a tizedik színt a palettán",
+  "SWAP_COLORS": "Színek cseréje",
+  "SWAP_COLORS_DESCRIPTIVE": "Elsődleges és másodlagos színek cseréje",
+  "SEARCH": "Keresés",
+  "COMMAND_SEARCH": "Parancskeresés",
+  "OPEN_COMMAND_SEARCH": "Parancskereső ablak megnyitása",
+  "SELECT": "Kijelöl",
+  "DESELECT": "Kijelölés megszüntetése",
+  "INVERT": "Invertálás",
+  "SELECTION": "Kijelölés",
+  "SELECT_ALL": "Összes kijelölése",
+  "SELECT_ALL_DESCRIPTIVE": "Mindent kijelöl",
+  "CLEAR_SELECTION": "Kijelölés törlése",
+  "INVERT_SELECTION": "Kijelölés inverzálása",
+  "INVERT_SELECTION_DESCRIPTIVE": "Kijelölés inverzének készítése",
+  "TRANSFORM_SELECTED_AREA": "Kijelölt terület átalakítása",
+  "NUDGE_SELECTED_LEFT": "Kijelölt objektum elmozdítása balra",
+  "NUDGE_SELECTED_RIGHT": "Kijelölt objektum elmozdítása jobbra",
+  "NUDGE_SELECTED_UP": "Kijelölt objektum elmozdítása felfelé",
+  "NUDGE_SELECTED_DOWN": "Kijelölt objektum elmozdítása lefelé",
+  "MASK_FROM_SELECTION": "Új maszk a kijelölésből",
+  "MASK_FROM_SELECTION_DESCRIPTIVE": "Kijelölés új maszkká konvertálása",
+  "ADD_SELECTION_TO_MASK": "Kijelölés hozzáadása a maszkhoz",
+  "SUBTRACT_SELECTION_FROM_MASK": "Kijelölés kivonása a maszkból",
+  "INTERSECT_SELECTION_MASK": "Kijelölés metszése a maszkkal",
+  "SELECTION_TO_MASK": "Kijelölés maszkká konvertálása",
+  "TO_NEW_MASK": "új maszkba",
+  "ADD_TO_MASK": "hozzáadás a maszkhoz",
+  "SUBTRACT_FROM_MASK": "kivonás a maszkból",
+  "INTERSECT_WITH_MASK": "metszet a maszkkal",
+  "STYLUS": "Stylus",
+  "TOGGLE_PEN_MODE": "Toll üzemmód váltása",
+  "UNDO": "Visszavonás",
+  "UNDO_DESCRIPTIVE": "Utolsó művelet visszavonása",
+  "REDO": "Újra",
+  "REDO_DESCRIPTIVE": "Utolsó művelet megismétlése",
+  "WINDOWS": "Ablakok",
+  "TOGGLE_GRIDLINES": "Rácsvonalak kapcsolása",
+  "ZOOM_IN": "Nagyítás",
+  "ZOOM_OUT": "Kicsinyítés",
+  "NEW_WINDOW_FOR_IMG": "Új ablak az aktuális képhez",
+  "CENTER_ACTIVE_VIEWPORT": "Aktív nézetablak központosítása",
+  "FLIP_VIEWPORT_HORIZONTALLY": "Nézetablak vízszintesen átfordítása",
+  "FLIP_VIEWPORT_VERTICALLY": "Nézetablak függőlegesen történő átfordítása",
+  "SETTINGS": "Beállítások",
+  "OPEN_SETTINGS": "Beállítások megnyitása",
+  "OPEN_SETTINGS_DESCRIPTIVE": "Beállítások ablak megnyitása",
+  "OPEN_STARTUP_WINDOW": "Indítási ablak megnyitása",
+  "OPEN_SHORTCUT_WINDOW": "Shortcuts ablak megnyitása",
+  "OPEN_ABOUT_WINDOW": "Névjegy ablak megnyitása",
+  "OPEN_NAVIGATION_WINDOW": "Navigációs ablak megnyitása",
+  "ERROR": "Hiba",
+  "INTERNAL_ERROR": "Belső hiba",
+  "ERROR_SAVE_LOCATION": "Nem sikerült a fájlt a megadott helyre menteni",
+  "ERROR_WHILE_SAVING": "Belső hiba történt a mentés közben. Kérlek próbáld meg újra.",
+  "UNKNOWN_ERROR_SAVING": "Hiba történt mentés közben.",
+  "FAILED_ASSOCIATE_LOSPEC": "Nem sikerült társítani a Lospec Palette protokollt.",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "Adományozás",
+  "YES": "Igen",
+  "NO": "Nem",
+  "CANCEL": "Mégse",
+  "UNNAMED": "Névtelen",
+  "OPEN_COMMAND_DEBUG_WINDOW": "Debug parancsablak megnyitása",
+  "DELETE": "Törlés",
+  "USER_PREFS": "Felhasználói beállítások (Roaming)",
+  "SHORTCUT_FILE": "Shortcut fájl (Roaming)",
+  "EDITOR_DATA": "Szerkesztői adatok (Helyi)",
+  "MOVE_VIEWPORT_TOOLTIP": "Nézetpont mozgatása. ({0})",
+  "MOVE_VIEWPORT_ACTION_DISPLAY": "Kattints és húzz a nézetablak pásztázásához",
+  "MOVE_TOOL_TOOLTIP": "Kiválasztott pixelek mozgatása ({0}). Tartsd lenyomva a Ctrl-t az összes réteg mozgatásához.",
+  "MOVE_TOOL_ACTION_DISPLAY": "Tartsd lenyomva az egeret a kijelölt pixelek mozgatásához. Tartsd lenyomva a Ctrl billentyűt az összes réteg mozgatásához.",
+  "PEN_TOOL_TOOLTIP": "Toll. ({0})",
+  "PEN_TOOL_ACTION_DISPLAY": "Kattints és húzd a rajzoláshoz.",
+  "PIXEL_PERFECT_SETTING": "Pixel pontos",
+  "RECTANGLE_TOOL_TOOLTIP": "Téglalap rajzolása a vásznon ({0}). Tartsd lenyomva a Shift-et egy négyzet rajzolásához.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "Kattints és húzd a téglalap rajzolásához. Tartsd lenyomva a Shift-et egy négyzet rajzolásához.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Kattints és húzd az egyenlő oldalú négyzet rajzolásához.",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "Eredeti kép megtartása",
+  "ROTATE_VIEWPORT_TOOLTIP": "Nézetpont forgatása. ({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "Kattints és húzd a nézetpont forgatásához.",
+  "SELECT_TOOL_TOOLTIP": "Terület kijelölése. ({0})",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Kattints és húzd az egy terület kijelöléséhez. Tartsd lenyomva a Shift-et a meglévő kijelöléshez adáshoz. Tartsd lenyomva a Ctrl-t az eltávolításhoz.",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Kattints és húzd a jelenlegi kijelölés kiegészítéséhez.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Kattints és húzd a jelenlegi kijelölés eltávolításához.",
+  "ZOOM_TOOL_TOOLTIP": "Nagyítás ({0}). Kattints a nagyításhoz, tartsd lenyomva az Alt-ot és kattints a kicsinyítéshez.",
+  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Kattints és húzd a nagyításhoz. Kattints a nagyításhoz, tartsd lenyomva a Ctrl-t és kattints a kicsinyítéshez.",
+  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Kattints és húzd a nagyításhoz. Kattints a kicsinyítéshez, engedd fel a Ctrl-t, majd kattints a nagyításhoz.",
+  "BRIGHTNESS_TOOL_TOOLTIP": "Pixel világosítása/sötétítése ({0}). Tartsd lenyomva a Ctrl-t a sötétítéshez.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Rajzolj a pixelekre, hogy világosabbá tedd őket. Sötétítéshez tartsd lenyomva a Ctrl billentyűt.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Rajzolj a pixelekre, hogy sötétebbé tegye őket. A Ctrl felengedésével világosabbá teheted őket.",
+  "COLOR_PICKER_TOOLTIP": "Kiválasztja az elsődleges színt a vászonról. ({0})",
+  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Kattintson a színek kiválasztásához. Tartsa lenyomva a Ctrl billentyűt a vászon elrejtéséhez. Tartsa lenyomva a Shift billentyűt a referenciaréteg elrejtéséhez",
+  "ELLIPSE_TOOL_TOOLTIP": "Ellipszis rajzolása ({0}). Tartsa lenyomva a Shift billentyűt kör rajzolásához.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Kattintson és húzza az egeret az ellipszis rajzolásához. Tartsa lenyomva a Shift billentyűt a kör rajzolásához.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Kattintson és húzza az egeret egy kör rajzolásához.",
+  "ERASER_TOOL_TOOLTIP": "Törli a színt a pixelből. ({0})",
+  "ERASER_TOOL_ACTION_DISPLAY": "Kattintson és húzza az egérrel a törléshez.",
+  "FLOOD_FILL_TOOL_TOOLTIP": "Színnel tölti ki a területet. ({0})",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Kattintson a terület kiszínezéséhez. Tartsa lenyomva a Ctrl billentyűt az összes réteg figyelembevételéhez. Engedje fel a Ctrl billentyűt csak az aktuális rétegek figyelembevételéhez.",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Kattintson a terület kiszínezéséhez. Engedje fel a Ctrl billentyűt csak az aktuális rétegek figyelembevételéhez.",
+  "LASSO_TOOL_TOOLTIP": "Lasszó. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Kattintson és húzza az egérrel a kívánt pixelek kijelöléséhez. Tartsa lenyomva a Shift billentyűt a meglévő kijelöléshez adáshoz. Tartsa lenyomva a Ctrl billentyűt a kijelölésből való kivonáshoz.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Kattintson és húzza az egéret, hogy a lasszón belüli pixeleket hozzáadja a kijelöléshez.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Kattintson és húzza az egéret, hogy kivonja a kijelölésből a lasszón belüli pixeleket.",
+  "LINE_TOOL_TOOLTIP": "Vonalat rajzol a vászonra ({0}). Tartsa lenyomva a Shift billentyűt a vonal igazításhoz.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Kattintson és húzza az egeret a vonal rajzolásához. Tartsa lenyomva a Shift billentyűt a vonal igazításhoz.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Kattintson és húzza az egeret egy igazított vonal rajzolásához.",
+  "MAGIC_WAND_TOOL_TOOLTIP": "Varázspálca ({0}). Kiönti a kijelölést",
+  "MAGIC_WAND_ACTION_DISPLAY": "Kattintson a kijelölés kiöntéséhez.",
+  "PEN_TOOL": "Toll",
+  "BRIGHTNESS_TOOL": "Fényerő",
+  "COLOR_PICKER_TOOL": "Színválasztó",
+  "ELLIPSE_TOOL": "Ellipszis",
+  "ERASER_TOOL": "Radír",
+  "FLOOD_FILL_TOOL": "Kitöltés",
+  "LASSO_TOOL": "Lasszó",
+  "LINE_TOOL": "Vonal",
+  "MAGIC_WAND_TOOL": "Varázspálca",
+  "MOVE_TOOL": "Mozgatás",
+  "MOVE_VIEWPORT_TOOL": "Nézetablak mozgatása",
+  "RECTANGLE_TOOL": "Téglalap",
+  "ROTATE_VIEWPORT_TOOL": "Nézetablak elforgatása",
+  "SELECT_TOOL_NAME": "Kijelölés",
+  "ZOOM_TOOL": "Nagyítás",
+  "SHAPE_LABEL": "Alakzat",
+  "MODE_LABEL": "Mód",
+  "SCOPE_LABEL": "Hatósugár",
+  "FILL_SHAPE_LABEL": "Alakzat kitöltése",
+  "FILL_COLOR_LABEL": "Szín kitöltése",
+  "TOOL_SIZE_LABEL": "Eszközméret",
+  "STRENGTH_LABEL": "Erősség",
+  "NEW": "Új",
+  "ADD": "Hozzáadás",
+  "SUBTRACT": "Kivonás",
+  "INTERSECT": "Metszet",
+  "RECTANGLE": "Téglalap",
+  "CIRCLE": "Kör",
+  "ABOUT": "Névjegy",
+  "MINIMIZE": "Kis méret",
+  "RESTORE": "Visszaállítás",
+  "MAXIMIZE": "Teljes képernyő",
+  "CLOSE": "Bezárás",
+  "EXPORT_SIZE_HINT": "Ha meg szeretné osztani a képet, próbálja ki a {0}%-ot a legjobb tisztaság érdekében",
+  "CREATE": "Létrehozás",
+  "BASE_LAYER_NAME": "Alapréteg",
+  "ENABLE_MASK": "Maszk engedélyezése",
+  "SELECTED_AREA_EMPTY": "A kiválasztott terület üres",
+  "NOTHING_TO_COPY": "Semmi másolnivaló",
+  "REFERENCE_LAYER_PATH": "Referenciaréteg útvonala",
+  "FLIP": "Tükrözés",
+  "ROTATION": "Forgatás",
+  "ROT_IMG_90_D": "Kép elforgatása 90°-kal",
+  "ROT_IMG_180_D": "Kép elforgatása 180°-kal",
+  "ROT_IMG_-90_D": "Kép elforgatása -90°-kal",
+  "ROT_LAYERS_90_D": "Kijelölt rétegek elforgatása 90°-kal",
+  "ROT_LAYERS_180_D": "Kijelölt rétegek elforgatása 180°-kal",
+  "ROT_LAYERS_-90_D": "Kijelölt rétegek elforgatása -90°-kal",
+  "UNNAMED_PALETTE": "Névtelen paletta",
+  "CLICK_SELECT_PRIMARY": "Kattintson a főszín kiválasztásához.",
+  "PEN_MODE": "Toll mód",
+  "VIEW": "Nézet",
+  "HORIZONTAL_LINE_SYMMETRY": "Vízszintes vonalszimmetria",
+  "VERTICAL_LINE_SYMMETRY": "Függőleges vonalszimmetria",
+  "COLOR_PICKER_TITLE": "Színválasztó",
+  "COLOR_SLIDERS_TITLE": "Szín csúszkák",
+  "PALETTE_TITLE": "Paletta",
+  "SWATCHES_TITLE": "Minták",
+  "LAYERS_TITLE": "Rétegek",
+  "NAVIGATION_TITLE": "Navigáció",
+  "NORMAL_BLEND_MODE": "Normál",
+  "DARKEN_BLEND_MODE": "Sötétítés",
+  "MULTIPLY_BLEND_MODE": "Szorzás",
+  "COLOR_BURN_BLEND_MODE": "Színtüzelés",
+  "LIGHTEN_BLEND_MODE": "Világosítás",
+  "SCREEN_BLEND_MODE": "Képernyő",
+  "COLOR_DODGE_BLEND_MODE": "Szín kioltás",
+  "OVERLAY_BLEND_MODE": "Átfedés",
+  "SOFT_LIGHT_BLEND_MODE": "Lágy fény",
+  "HARD_LIGHT_BLEND_MODE": "Kemény fény",
+  "DIFFERENCE_BLEND_MODE": "Különbség",
+  "EXCLUSION_BLEND_MODE": "Kizárás",
+  "HUE_BLEND_MODE": "Színárnyalat",
+  "SATURATION_BLEND_MODE": "Telítettség",
+  "LUMINOSITY_BLEND_MODE": "Fényesség",
+  "COLOR_BLEND_MODE": "Szín",
+  "NOT_SUPPORTED_BLEND_MODE": "Nem támogatott",
+  "RESTART": "Újraindítás",
+  "SORT_BY": "Rendezés",
+  "NAME": "Név",
+  "COLORS": "Színek",
+  "DEFAULT": "Alapértelmezett",
+  "ALPHABETICAL": "Betűrendes",
+  "COLOR_COUNT": "Színszám",
+  "ANY": "Bármelyik",
+  "MAX": "Max",
+  "MIN": "Min",
+  "EXACT": "Exact",
+  "ASCENDING": "Növekvő",
+  "DESCENDING": "Csökkenő",
+  "NAME_IS_TOO_LONG": "A név túl hosszú",
+  "STOP_IT_TEXT1": "Ennyi elég. Tedd már rendbe a fájlneveidet!",
+  "STOP_IT_TEXT2": "Abbahagynád a nevek másolását, kérlek?",
+  "REPLACER_TOOLTIP": "Kattintson a jobb gombbal a paletta színére, és válassza a 'Csere' lehetőséget, vagy húzza ide.",
+  "CLICK_TO_CHOOSE_COLOR": "Kattintson a szín kiválasztásához",
+  "REPLACE_COLOR": "Szín cseréje",
+  "PALETTE_COLOR_TOOLTIP": "Kattintson a főszín kiválasztásához. Húzza és ejtse egy másik paletta színre a cseréhez.",
+  "ADD_FROM_SWATCHES": "Hozzáadás a mintákból",
+  "ADD_COLOR_TO_PALETTE": "Szín hozzáadása a palettához",
+  "USE_IN_CURRENT_IMAGE": "Használja az aktuális képen",
+  "ADD_TO_FAVORITES": "Hozzáadás a kedvencekhez",
+  "BROWSE_PALETTES": "Paletták böngészése",
+  "LOAD_PALETTE": "Paletta betöltése",
+  "SAVE_PALETTE": "Paletta mentése",
+  "FAVORITES": "Kedvencek",
+  "ADD_FROM_CURRENT_PALETTE": "Hozzáadás az aktuális palettáról",
+  "OPEN_PALETTES_DIR_TOOLTIP": "Paletták mappa megnyitása a fájlkezelőben",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "Paletták böngészése a Lospec oldalon",
+  "IMPORT_FROM_FILE_TOOLTIP": "Importálás fájlból",
+  "TOP_LEFT": "Bal felső",
+  "TOP_CENTER": "Felső közép",
+  "TOP_RIGHT": "Jobb felső",
+  "MIDDLE_LEFT": "Bal közép",
+  "MIDDLE_CENTER": "Közép",
+  "MIDDLE_RIGHT": "Jobb közép",
+  "BOTTOM_LEFT": "Balra lent",
+  "BOTTOM_CENTER": "Alsó közép",
+  "BOTTOM_RIGHT": "Jobbra lent",
+  "CLIP_TO_BELOW": "Illesztés az alábbi rétegre",
+  "MOVE_UPWARDS": "Mozgatás felfelé",
+  "MOVE_DOWNWARDS": "Mozgatás lefelé",
+  "MERGE_SELECTED": "Kijelölt rétegek egyesítése",
+  "LOCK_TRANSPARENCY": "Átlátszóság zárolása",
+  "COULD_NOT_LOAD_PALETTE": "Nem sikerült lekérni a palettákat",
+  "NO_PALETTES_FOUND": "Nem találtunk palettákat.",
+  "LOSPEC_LINK_TEXT": "Úgy hallottam, hogy itt találsz néhányat: lospec.com/palette-list",
+  "PALETTE_BROWSER": "Paletta böngésző",
+  "DELETE_PALETTE_CONFIRMATION": "Biztosan törölni szeretné ezt a palettát? Ez nem visszavonható.",
+  "SHORTCUTS_IMPORTED": "A(z) {0} gyorsbillentyűi sikeresen importálva lettek.",
+  "SHORTCUT_PROVIDER_DETECTED": "Az észleltük, hogy van telepítve a(z) {0}. Szeretné importálni az abból származó gyorsbillentyűket?",
+  "IMPORT_FROM_INSTALLATION": "Importálás telepítésből",
+  "IMPORT_INSTALLATION_OPTION1": "Importálás telepítésből",
+  "IMPORT_INSTALLATION_OPTION2": "Alapértelmezett értékek használata",
+  "IMPORT_FROM_TEMPLATE": "Importálás sablonból",
+  "SHORTCUTS_IMPORTED_SUCCESS": "A gyorsbillentyűk sikeresen importálva lettek.",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "Biztos, hogy vissza akarja állítani az összes gyorsbillenytű alapértelmezett értékét?",
+  "SUCCESS": "Siker",
+  "WARNING": "Figyelmeztetés",
+  "ERROR_IMPORTING_IMAGE": "Hiba történt a kép importálása során.",
+  "SHORTCUTS_CORRUPTED_TITLE": "Sérült gyorsbillentyű fájl",
+  "SHORTCUTS_CORRUPTED": "A gyorsbillentyű fájl megsérült, visszaállítás az alapértelmezett értékre.",
+  "FAILED_DOWNLOAD_PALETTE": "Nem sikerült letölteni a palettát",
+  "FILE_INCORRECT_FORMAT": "A fájl nem megfelelő formátumú volt",
+  "INVALID_FILE": "Érvénytelen fájl",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "A gyorsbillentyű fájl helytelen formátumban van.",
+  "UNSUPPORTED_FILE_FORMAT": "Ez a fájlformátum nem támogatott",
+  "ALREADY_ASSIGNED": "Már hozzárendelve",
+  "REPLACE": "Felülírás",
+  "SWAP": "Felcserélés",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "Ez a parancsikon már a '{0}'-hoz van rendelve.\nA meglévő parancsikont szeretné felülírni, vagy felcserélni a kettőt?",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "Ez a gyorsbillentyű már hozzá van rendelve '{0}'-hoz. \nSzeretné lecserélni a meglévő gyorsbillentyűt?",
+  "UNSAVED_CHANGES": "Nem mentett módosítások",
+  "DOCUMENT_MODIFIED_SAVE": "A dokumentum módosítva lett. Szeretné menteni a változtatásokat?",
+  "SESSION_UNSAVED_DATA": "{0} nem mentett adatokkal rendelkezik. Biztos benne, hogy folytatni szeretné?",
+  "PROJECT_MAINTAINERS": "Projektkarbantartók",
+  "OTHER_AWESOME_CONTRIBUTORS": "És más fantasztikus közreműködők",
+  "HELP": "Súgó",
+  "STOP_IT_TEXT3": "Nem, tényleg, hagyd abba.",
+  "STOP_IT_TEXT4": "Nincs jobb dolgod?",
+  "LINEAR_DODGE_BLEND_MODE": "Lineáris világosítás (Hozzáadás)",
+  "PRESS_ANY_KEY": "Nyomjon meg bármilyen billentyűt",
+  "NONE_SHORTCUT": "Nincs hozzárendelve",
+  "REFERENCE": "Referencia",
+  "PUT_REFERENCE_LAYER_ABOVE": "Helyezze a referencia réteget az előtte lévő réteg fölé",
+  "PUT_REFERENCE_LAYER_BELOW": "Helyezze a referencia réteget az alatta lévő réteg alá",
+  "TOGGLE_VERTICAL_SYMMETRY": "Függőleges szimmetria kapcsolása",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "Vízszintes szimmetria kapcsolása",
+  "RESET_VIEWPORT": "Nézetablak visszaállítása",
+  "VIEWPORT_SETTINGS": "Nézetablak beállítások",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Kattintson és tartsa lenyomva az egeret a pixelek mozgatásához a kijelölt rétegekben.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Tartsa lenyomva az egeret az összes réteg mozgatásához.",
+  "CTRL_KEY": "Ctrl",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "Átnevezés",
+  "PIXEL_UNIT": "px",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "Lokalizációs hibakeresési ablak megnyitása",
+  "FORCE_OTHER_FLOW_DIRECTION": "Kényszerített másik irányú folyás",
+  "API_KEY": "API kulcs",
+  "LOCALIZATION_VIEW_TYPE": "Nyelvi nézet típusa",
+  "LOAD_LANGUAGE_FROM_FILE": "Nyelvi beállítások betöltése fájlból",
+  "LOG_IN": "Bejelentkezés",
+  "SYNC": "Szinkronizálás",
+  "NOT_LOGGED_IN": "Nincs bejelentkezve",
+  "POE_EDITOR_ERROR": "POEditor hiba: {0} {1}",
+  "HTTP_ERROR_MESSAGE": "HTTP-hiba: {0} {1}",
+  "LOGGED_IN": "Bejelentkezett",
+  "SYNCED_SUCCESSFULLY": "Sikeresen szinkronizálva",
+  "EXCEPTION_ERROR": "HIba: {0}",
+  "DROP_PALETTE": "Húzza ide a palettát",
+  "SECURITY_ERROR": "Biztonsági hiba",
+  "SECURITY_ERROR_MSG": "Nincs jogosultsága a megadott helyre írni.",
+  "IO_ERROR": "IO hiba",
+  "IO_ERROR_MSG": "Hiba a lemezre írás közben.",
+  "FAILED_ASSOCIATE_PIXI": "Nem sikerült társítani a .pixi fájlt a PixiEditorral.",
+  "COULD_NOT_SAVE_PALETTE": "Hiba történt a paletta mentése közben.",
+  "NO_COLORS_TO_SAVE": "Nincsenek menthető színek.",
+  "ALL_LAYERS": "Minden réteg",
+  "SINGLE_LAYER": "Egyetlen réteg",
+  "CHOOSE": "Választás",
+  "REMOVE": "Eltávolítás",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "A fájl nem \".aseprite-keys\" fájl",
+  "FILE_HAS_INVALID_SHORTCUT": "A fájl érvénytelen gyorsbillentyűt tartalmaz",
+  "FILE_EXTENSION_NOT_SUPPORTED": "A '{0}' fájltípus nem támogatott",
+  "ERROR_READING_FILE": "Hiba a fájl olvasása közben",
+  "DISCARD_PALETTE": "Paletta elvetése",
+  "DISCARD_PALETTE_CONFIRMATION": "Biztos benne, hogy el akarja vetni az aktuális palettát? Ezt nem lehet visszavonni.",
+  "IMPORT_AS_NEW_LAYER": "Importálás új rétegként",
+  "PASTE_AS_PRIMARY_COLOR": "Beillesztés elsődleges színként",
+  "IMPORT_AS_NEW_FILE": "Importálás új fájlként",
+  "IMPORT_PALETTE_FILE": "Palettafájl importálása",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "Színek importálása a palettába",
+  "IMPORT_SINGLE_PALETTE_COLOR": "Szín importálása a palettába",
+  "IMPORT_AS_REFERENCE_LAYER": "Importálás referenciarétegként",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "A szín kiválasztásához kattintson jobb egérgombbal, a szín vágólapra másolásához Shift + jobb egérgombbal kattintson.",
+  "OPEN_FILE_FROM_CLIPBOARD": "Megnyitás a vágólapról",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Megnyitás a vágólapról",
+  "OPEN_LOCALIZATION_DATA": "Do you want to open the LocalizationData.json?\nThe updated date has been put in the clipboard.\nNote that changes wont be applied until a restart",
+  "DOWNLOADING_LANGUAGE_FAILED": "Downloading language failed.\nAPI Key might have been overused.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Localization data path not found",
+  "APPLY": "Apply",
+  "UPDATE_SOURCE": "Update source",
+  "COPY_TO_CLIPBOARD": "Copy to clipboard",
+  "LANGUAGE_FILE_NOT_FOUND": "Language file not found.\nLooking for {0}",
+  "PROJECT_ROOT_NOT_FOUND": "PixiEditor Project root not found.\nLooking for PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Localization folder not found.\nLooking for /Data/Localization",
+  "SELECT_A_LANGUAGE": "Select a language",
+  "DONE": "Done",
+  "SOURCE_UNSET_OR_MISSING": "Source missing/unset",
+  "SOURCE_NEWER": "Source newer",
+  "SOURCE_UP_TO_DATE": "Source is up to date",
+  "SOURCE_OLDER": "Cloud newer",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
+  "SHORTCUTS_TITLE": "Shortcuts",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+}

+ 564 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/pl.json

@@ -0,0 +1,564 @@
+{
+  "RECENT_FILES": "Ostatnie pliki",
+  "OPEN_FILE": "Otwórz plik",
+  "NEW_FILE": "Nowy",
+  "RECENT_EMPTY_TEXT": "Ale tu pusto",
+  "LANGUAGE": "Język",
+  "GENERAL": "Ogólne",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "Skróty klawiszowe",
+  "MISC": "Inne",
+  "SHOW_STARTUP_WINDOW": "Otwórz okno powitalne na starcie",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "Pokaż podgląd obrazu w pasku zadań",
+  "RECENT_FILE_LENGTH": "Ilość ostatnich plików",
+  "RECENT_FILE_LENGTH_TOOLTIP": "Ile plików jest wyświetlanych w menu Plik -> Ostatnie. Domyślnie 8",
+  "DEFAULT_NEW_SIZE": "Domyslny rozmiar nowego obrazu",
+  "WIDTH": "Szerokość",
+  "HEIGHT": "Wysokość",
+  "TOOLS": "Narzędzia",
+  "ENABLE_SHARED_TOOLBAR": "Włącz wspólny pasek narzędzi",
+  "AUTOMATIC_UPDATES": "Automatyczne aktualizacje",
+  "CHECK_FOR_UPDATES": "Sprawdzaj aktualizacje na starcie",
+  "UPDATE_STREAM": "Kanał aktualizacji",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "Kanały aktualizacji mogą być tylko ustawione w wersji samodzielnej (pobranej z https://pixieditor.net).\nSteam i Microsoft Store zajmuje się aktualizacjami osobno.",
+  "DEBUG": "Debugowanie",
+  "ENABLE_DEBUG_MODE": "Włącz tryb debugowania",
+  "OPEN_CRASH_REPORTS_DIR": "Otwórz folder z raportami o awariach",
+  "DISCORD_RICH_PRESENCE": "Rich Presence",
+  "ENABLED": "Włączony",
+  "SHOW_IMAGE_NAME": "Pokaż nazwę obrazu",
+  "SHOW_IMAGE_SIZE": "Pokaż wielkość obrazu",
+  "SHOW_LAYER_COUNT": "Pokaż ilość warstw",
+  "FILE": "Plik",
+  "RECENT": "Ostatnie",
+  "OPEN": "Otwórz",
+  "SAVE_PIXI": "Zapisz (.pixi)",
+  "SAVE_AS_PIXI": "Zapisz jako... (.pixi)",
+  "EXPORT_IMG": "Eksportuj (.png, .jpg, itp.)",
+  "EDIT": "Edytuj",
+  "EXIT": "Wyjdź",
+  "PERCENTAGE": "Procentowo",
+  "ABSOLUTE": "Absolutnie",
+  "PRESERVE_ASPECT_RATIO": "Zachowaj proporcje",
+  "ANCHOR_POINT": "Punkt zaczepienia",
+  "RESIZE_IMAGE": "Zmień rozmiar obrazu",
+  "RESIZE": "Zmień rozmiar",
+  "DOCUMENTATION": "Dokumentacja",
+  "WEBSITE": "Strona internetowa",
+  "OPEN_WEBSITE": "Otwórz stronę internetową",
+  "REPOSITORY": "Repozytorium",
+  "OPEN_REPOSITORY": "Otwórz repozytorium",
+  "LICENSE": "Licencja",
+  "OPEN_LICENSE": "Otwórz licencję",
+  "THIRD_PARTY_LICENSES": "Licencje stron trzecich",
+  "OPEN_THIRD_PARTY_LICENSES": "Otwórz licencje stron trzecich",
+  "APPLY_TRANSFORM": "Zastosuj transformację",
+  "INCREASE_TOOL_SIZE": "Zwiększ rozmiar narzędzia",
+  "DECREASE_TOOL_SIZE": "Zmniejsz rozmiar narzędzia",
+  "TO_INSTALL_UPDATE": "aby zainstalować aktualizacje {0}",
+  "DOWNLOADING_UPDATE": "Pobieranie aktualizacji...",
+  "UPDATE_READY": "Aktualizacja jest gotowa do instalacji. Czy chcesz ją zainstalować teraz?",
+  "NEW_UPDATE": "Nowa aktualizacja",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Nie można zaaktualizować bez uprawnien administratora. Włącz PixiEditor jako administrator.",
+  "INSUFFICIENT_PERMISSIONS": "Niewystarczające uprawnienia",
+  "UPDATE_CHECK_FAILED": "Sprawdzanie aktualizacji nie powiodło się",
+  "COULD_NOT_CHECK_FOR_UPDATES": "Nie udało się sprawdzić aktualizacji",
+  "VERSION": "Wersja {0}",
+  "OPEN_TEMP_DIR": "Otwórz folder temp",
+  "OPEN_LOCAL_APPDATA_DIR": "Otwórz folder Local AppData",
+  "OPEN_ROAMING_APPDATA_DIR": "Otwórz folder Roaming AppData",
+  "OPEN_INSTALLATION_DIR": "Otwórz folder instalacji",
+  "DUMP_ALL_COMMANDS": "Wypisz wszystkie komendy",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Wypisz wszystkie komendy do pliku",
+  "CRASH": "Crash",
+  "CRASH_APP": "Zcrashuj aplikację",
+  "DELETE_USR_PREFS": "Usuń preferencje użytkownika (Roaming AppData)",
+  "DELETE_SHORTCUT_FILE": "Usuń plik skrótów klawiszowych (Roaming AppData)",
+  "DELETE_EDITOR_DATA": "Usuń dane edytora (Local AppData)",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "Stwórz szablon skrótów klawiszowych",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Stwórz szablon JSON skrótów klawiszowych",
+  "VALIDATE_SHORTCUT_MAP": "Sprawdź poprawność mapy skrótów",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Sprawdza poprawność mapy skrótów",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "Puste klucze: {0}\nNieznane komendy: {1}",
+  "RESULT": "Wynik",
+  "CLEAR_RECENT_DOCUMENTS": "Wyczyść ostatnie dokumenty",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Wyczyść ostatnio otwarte dokumenty",
+  "OPEN_CMD_DEBUG_WINDOW": "Otwórz okno do debugowania komend",
+  "PATH_DOES_NOT_EXIST": "{0} nie istnieje.",
+  "LOCATION_DOES_NOT_EXIST": "Lokalizacja nie istnieje.",
+  "FILE_NOT_FOUND": "Plik nie znaleziony.",
+  "ARE_YOU_SURE": "Jesteś pewien?",
+  "ARE_YOU_SURE_PATH_FULL_PATH": "Czy na pewno chcesz usunąć {0}?\nDane zostaną utracone dla wszystkich instalacji.\n(Pełna ścieżka: {1})",
+  "FAILED_TO_OPEN_FILE": "Nie udało się otworzyć pliku",
+  "OLD_FILE_FORMAT": "Stary format pliku",
+  "OLD_FILE_FORMAT_DESCRIPTION": "Ten plik .pixi używa starego formatu, który nie jest już wspierany i nie można go otworzyć.",
+  "NOTHING_FOUND": "Nic nie znaleziono",
+  "EXPORT": "Eksportuj",
+  "EXPORT_IMAGE": "Eksportuj obraz",
+  "IMPORT": "Importuj",
+  "SHORTCUT_TEMPLATES": "Szablony",
+  "RESET_ALL": "Resetuj wszystko",
+  "LAYER": "Warstwa",
+  "LAYER_DELETE_SELECTED": "Usuń aktywną warstwę/folder",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Usuń aktywną warstwę lub folder",
+  "LAYER_DELETE_ALL_SELECTED": "Usuń wszystkie zaznaczone warstwy/foldery",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Usuń wszystkie zaznaczone warstwy i/lub foldery",
+  "DELETE_SELECTED_PIXELS": "Usuń zaznaczone piksele",
+  "NEW_FOLDER": "Nowy folder",
+  "CREATE_NEW_FOLDER": "Stwórz nowy folder",
+  "NEW_LAYER": "Nowa warstwa",
+  "CREATE_NEW_LAYER": "Stwórz nową warstwę",
+  "NEW_IMAGE": "Nowy obraz",
+  "CREATE_NEW_IMAGE": "Stwórz nowy obraz",
+  "SAVE": "Zapisz",
+  "SAVE_AS": "Zapisz jako...",
+  "IMAGE": "Obraz",
+  "SAVE_IMAGE": "Zapisz obraz",
+  "SAVE_IMAGE_AS": "Zapisz obraz jako",
+  "DUPLICATE": "Duplikuj",
+  "DUPLICATE_SELECTED_LAYER": "Duplikuj zaznaczoną warstwę",
+  "CREATE_MASK": "Stwórz maskę",
+  "DELETE_MASK": "Usuń maskę",
+  "TOGGLE_MASK": "Przełącz maskę",
+  "APPLY_MASK": "Zastosuj maskę",
+  "TOGGLE_VISIBILITY": "Przełącz widoczność",
+  "MOVE_MEMBER_UP": "Przesuń obiekt wyżej",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "Przesuń zaznaczoną warstwę lub folder wyżej",
+  "MOVE_MEMBER_DOWN": "Przesuń obiekt niżej",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Przesuń zaznaczoną warstwę lub folder niżej",
+  "MERGE_ALL_SELECTED_LAYERS": "Scal wszystkie warstwy",
+  "MERGE_WITH_ABOVE": "Scal zaznaczoną warstwę z obiektem wyżej",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "Scal zaznaczoną warstwę z warstwą wyżej",
+  "MERGE_WITH_BELOW": "Scal zaznaczoną warstwę z obiektem niżej",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "Scal zaznaczoną warstwę z warstwą niżej",
+  "ADD_REFERENCE_LAYER": "Dodaj warstwę referencyjną",
+  "DELETE_REFERENCE_LAYER": "Usuń warstwę referencyjną",
+  "TRANSFORM_REFERENCE_LAYER": "Modyfikuj warstwę referencyjną",
+  "TOGGLE_REFERENCE_LAYER_POS": "Przełącz pozycję warstwy referencyjnej",
+  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Przełącz warstwę referencyjną pomiędzy górą a dołem",
+  "RESET_REFERENCE_LAYER_POS": "Resetuj pozycję warstwy referencyjnej",
+  "CLIP_CANVAS": "Dopasuj płótno do zawartości",
+  "FLIP_IMG_VERTICALLY": "Przerzuć obraz w pionie",
+  "FLIP_IMG_HORIZONTALLY": "Przerzuć obraz w poziomie",
+  "FLIP_LAYERS_VERTICALLY": "Przerzuć zaznaczone warstwy w pionie",
+  "FLIP_LAYERS_HORIZONTALLY": "Przerzuć zaznaczone warstwy w poziomie",
+  "ROT_IMG_90": "Obróć obraz 90 stopni",
+  "ROT_IMG_180": "Obróć obraz 180 stopni",
+  "ROT_IMG_-90": "Obróć obraz -90 stopni",
+  "ROT_LAYERS_90": "Obróć zaznaczone warstwy 90 stopni",
+  "ROT_LAYERS_180": "Obróć zaznaczone warstwy 180 stopni",
+  "ROT_LAYERS_-90": "Obróć zaznaczone warstwy -90 stopni",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "Przełącz oś symetrii w pionie",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "Przełącz oś symetrii w poziomie",
+  "DELETE_PIXELS": "Usuń piksele",
+  "DELETE_PIXELS_DESCRIPTIVE": "Usuń zaznaczone piksele",
+  "RESIZE_DOCUMENT": "Zmień rozmiar dokumentu",
+  "RESIZE_CANVAS": "Zmien rozmiar płótna",
+  "CENTER_CONTENT": "Wyśrodkuj zawartość",
+  "CUT": "Wytnij",
+  "CUT_DESCRIPTIVE": "Wytnij zaznaczony obszar/warstwę",
+  "PASTE": "Wklej",
+  "PASTE_DESCRIPTIVE": "Wklej zawartość schowka",
+  "PASTE_AS_NEW_LAYER": "Wklej jako nowa warstwa",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Wklej ze schowka jako nowa warstwa",
+  "PASTE_REFERENCE_LAYER": "Wklej warstwę referencyjną",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Wklej zawartość schowka jako warstwa referencyjna",
+  "PASTE_COLOR": "Wklej kolor",
+  "PASTE_COLOR_DESCRIPTIVE": "Wklej kolor ze schowka",
+  "PASTE_COLOR_SECONDARY": "Wklej kolor jako drugorzędny",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Wklej kolor ze schowka jako drugorzędny",
+  "CLIPBOARD": "Schowek",
+  "COPY": "Kopiuj",
+  "COPY_DESCRIPTIVE": "Kopiuj do schowka",
+  "COPY_COLOR_HEX": "Kopiuj pierwszorzędny kolor (HEX)",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "Kopiuj pierwszorzędny kolor jako kod HEX",
+  "COPY_COLOR_RGB": "Kopiuj pierwszorzędny kolor (RGB)",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "Kopiuj pierwszorzędny kolor jako kod RGB",
+  "COPY_COLOR_SECONDARY_HEX": "Kopiuj drugorzędny kolor (HEX)",
+  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Kopiuj drugorzędny kolor jako kod HEX",
+  "COPY_COLOR_SECONDARY_RGB": "Kopiuj drugorzędny kolor (RGB)",
+  "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "Kopiuj drugorzędny kolor jako kod RGB",
+  "PALETTE_COLORS": "Paleta Kolorów",
+  "REPLACE_SECONDARY_BY_PRIMARY": "Zastąp drugorzędny kolor pierwszorzędnym",
+  "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "Zastąp drugorzędny kolor pierwszorzędnym",
+  "REPLACE_PRIMARY_BY_SECONDARY": "Zastąp pierwszorzędny kolor drugorzędnym",
+  "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Zastąp pierwszorzędny kolor drugorzędnym",
+  "OPEN_PALETTE_BROWSER": "Otwórz przeglądarkę palet",
+  "OVERWRITE_PALETTE_CONSENT": "Paleta '{0}' już istnieje, czy chcesz ją nadpisać?",
+  "PALETTE_EXISTS": "Paleta już istnieje",
+  "REPLACE_PALETTE_CONSENT": "Zastąpić aktywną paletę zaznaczoną?",
+  "REPLACE_PALETTE": "Zastąp aktywną paletę",
+  "SELECT_COLOR_1": "Wybierz kolor 1",
+  "SELECT_COLOR_2": "Wybierz kolor 2",
+  "SELECT_COLOR_3": "Wybierz kolor 3",
+  "SELECT_COLOR_4": "Wybierz kolor 4",
+  "SELECT_COLOR_5": "Wybierz kolor 5",
+  "SELECT_COLOR_6": "Wybierz kolor 6",
+  "SELECT_COLOR_7": "Wybierz kolor 7",
+  "SELECT_COLOR_8": "Wybierz kolor 8",
+  "SELECT_COLOR_9": "Wybierz kolor 9",
+  "SELECT_COLOR_10": "Wybierz kolor 10",
+  "SELECT_TOOL": "Zaznacz narzędzie {0}",
+  "SELECT_COLOR_1_DESCRIPTIVE": "Zaznacz pierwszy kolor w palecie",
+  "SELECT_COLOR_2_DESCRIPTIVE": "Zaznacz drugi kolor w palecie",
+  "SELECT_COLOR_3_DESCRIPTIVE": "Zaznacz trzeci kolor w palecie",
+  "SELECT_COLOR_4_DESCRIPTIVE": "Zaznacz czwarty kolor w palecie",
+  "SELECT_COLOR_5_DESCRIPTIVE": "Zaznacz piąty kolor w palecie",
+  "SELECT_COLOR_6_DESCRIPTIVE": "Zaznacz szósty kolor w palecie",
+  "SELECT_COLOR_7_DESCRIPTIVE": "Zaznacz siódmy kolor w palecie",
+  "SELECT_COLOR_8_DESCRIPTIVE": "Zaznacz ósmy kolor w palecie",
+  "SELECT_COLOR_9_DESCRIPTIVE": "Zaznacz dziewiąty kolor w palecie",
+  "SELECT_COLOR_10_DESCRIPTIVE": "Zaznacz dziesiąty kolor w palecie",
+  "SWAP_COLORS": "Zamień kolory",
+  "SWAP_COLORS_DESCRIPTIVE": "Zamień pierwszorzędny kolor z drugorzędnym",
+  "SEARCH": "Szukaj",
+  "COMMAND_SEARCH": "Wyszukiwanie komend",
+  "OPEN_COMMAND_SEARCH": "Otwórz okno wyszukiwania komend",
+  "SELECT": "Zaznacz",
+  "DESELECT": "Odznacz",
+  "INVERT": "Odwróć",
+  "SELECTION": "Zaznaczenie",
+  "SELECT_ALL": "Zaznacz wszystko",
+  "SELECT_ALL_DESCRIPTIVE": "Zaznacz wszystko",
+  "CLEAR_SELECTION": "Wyczyść zaznaczenie",
+  "INVERT_SELECTION": "Odwróć zaznaczenie",
+  "INVERT_SELECTION_DESCRIPTIVE": "Odwróć zaznaczony obszar",
+  "TRANSFORM_SELECTED_AREA": "Transformuj zaznaczony obszar",
+  "NUDGE_SELECTED_LEFT": "Pstryknij zaznaczony obiekt w lewo",
+  "NUDGE_SELECTED_RIGHT": "Pstryknij zaznaczony obiekt w prawo",
+  "NUDGE_SELECTED_UP": "Pstryknij zaznaczony obiekt w górę",
+  "NUDGE_SELECTED_DOWN": "Pstryknij zaznaczony obiekt w dół",
+  "MASK_FROM_SELECTION": "Nowa maska z zaznaczenia",
+  "MASK_FROM_SELECTION_DESCRIPTIVE": "Zrób nową maskę z zaznaczenia",
+  "ADD_SELECTION_TO_MASK": "Dodaj zaznaczenie do maski",
+  "SUBTRACT_SELECTION_FROM_MASK": "Odejmij zaznaczenie z maski",
+  "INTERSECT_SELECTION_MASK": "Wykonaj intersekcję zaznaczenia z maską",
+  "SELECTION_TO_MASK": "Zaznaczenie do maski",
+  "TO_NEW_MASK": "do nowej maski",
+  "ADD_TO_MASK": "dodaj do maski",
+  "SUBTRACT_FROM_MASK": "odejmij z maski",
+  "INTERSECT_WITH_MASK": "wykonaj intersekcję z maską",
+  "STYLUS": "Rysik",
+  "TOGGLE_PEN_MODE": "Przełącz tryb długopisu",
+  "UNDO": "Cofnij",
+  "UNDO_DESCRIPTIVE": "Cofnij ostatnią akcję",
+  "REDO": "Ponów",
+  "REDO_DESCRIPTIVE": "Ponów ostatnią akcję",
+  "WINDOWS": "Okna",
+  "TOGGLE_GRIDLINES": "Przełącz linie siatki",
+  "ZOOM_IN": "Przybliż",
+  "ZOOM_OUT": "Oddal",
+  "NEW_WINDOW_FOR_IMG": "Nowe okno dla aktywnego obrazu",
+  "CENTER_ACTIVE_VIEWPORT": "Wyśrodkuj aktywny widok",
+  "FLIP_VIEWPORT_HORIZONTALLY": "Przerzuć widok w poziomie",
+  "FLIP_VIEWPORT_VERTICALLY": "Przerzuć widok w pionie",
+  "SETTINGS": "Ustawienia",
+  "OPEN_SETTINGS": "Otwórz ustawienia",
+  "OPEN_SETTINGS_DESCRIPTIVE": "Otwórz okno ustawień",
+  "OPEN_STARTUP_WINDOW": "Otwórz okno startowe",
+  "OPEN_SHORTCUT_WINDOW": "Otwórz okno ze skrótami klawiszowymi",
+  "OPEN_ABOUT_WINDOW": "Otwórz okno informacji",
+  "OPEN_NAVIGATION_WINDOW": "Otwórz okno nawigacji",
+  "ERROR": "Błąd",
+  "INTERNAL_ERROR": "Wewnętrzny błąd",
+  "ERROR_SAVE_LOCATION": "Nie udało się zapisać pliku do wskazanej lokalizacji",
+  "ERROR_WHILE_SAVING": "Wystąpił wewnętrzny błąd podczas zapisu. Spróbuj ponownie.",
+  "UNKNOWN_ERROR_SAVING": "Wystąpił błąd poczas zapisu.",
+  "FAILED_ASSOCIATE_LOSPEC": "Nie udało się powiązać protokołu palet serwisu Lospec.",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "Dotacja",
+  "YES": "Tak",
+  "NO": "Nie",
+  "CANCEL": "Anuluj",
+  "UNNAMED": "Bez nazwy",
+  "OPEN_COMMAND_DEBUG_WINDOW": "Otwórz okno debugowania komend",
+  "DELETE": "Usuń",
+  "USER_PREFS": "Preferencje użytkownika (Roaming)",
+  "SHORTCUT_FILE": "Plik skrótów klawiszowych (Roaming)",
+  "EDITOR_DATA": "Dane edytora (Local)",
+  "MOVE_VIEWPORT_TOOLTIP": "Przesuwa widok. ({0})",
+  "MOVE_VIEWPORT_ACTION_DISPLAY": "Kliknij i porusz myszką, aby przesunąć widok",
+  "MOVE_TOOL_TOOLTIP": "Przesuwa zaznaczone piksele ({0}). Przytrzymaj Ctrl aby ruszyć wszystkimi warstwami.",
+  "MOVE_TOOL_ACTION_DISPLAY": "Przytrzymaj myszkę, aby poruszyć zaznaczone piksele. Przytrzymaj Ctrl aby ruszyć wszystkimi warstwami.",
+  "PEN_TOOL_TOOLTIP": "Pióro. ({0})",
+  "PEN_TOOL_ACTION_DISPLAY": "Kliknij i porusz aby rysować.",
+  "PIXEL_PERFECT_SETTING": "Pixel perfect",
+  "RECTANGLE_TOOL_TOOLTIP": "Tworzy prostokąt na płótnie ({0}). Przytrzymaj Shift, żeby narysować kwadrat.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "Tworzy prostokąt na płótnie. Przytrzymaj Shift, żeby narysować kwadrat.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Kliknij i porusz aby narysować kwadrat.",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "Zachowaj oryginalny obraz",
+  "ROTATE_VIEWPORT_TOOLTIP": "Obraca widok. ({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "Kliknij i porusz aby obrócić widok",
+  "SELECT_TOOL_TOOLTIP": "Zaznacza obszar. ({0})",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Kliknij i porusz aby zaznaczyć obszar. Przytrzymaj Shift aby dodać do istniejącego zaznaczenia. Przytrzymaj Ctrl aby usunąć z niego.",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Kliknij i porusz aby dodać do aktywnego zaznaczenia.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Kliknij i porusz myszką aby usunąć z aktywnego zaznaczenia.",
+  "ZOOM_TOOL_TOOLTIP": "Przybliża lub oddala widok ({0}). Kliknij aby przybliżyć, przytrzymaj ctrl i kliknij aby oddalić.",
+  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Kliknij i porusz myszką, aby zmienić oddalenie. Kliknij aby przybliżyć, przytrzymaj ctrl i kliknij aby oddalić.",
+  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Kliknij i porusz myszką aby zmienić oddalenie. Kliknij aby oddalić, puść ctrl i kliknij aby przybliżyć.",
+  "BRIGHTNESS_TOOL_TOOLTIP": "Rozjaśnia lub przyciemnia piksele ({0}). Przytrzymaj Ctrl aby przyciemniać.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Rysuj po pikselach aby je rozjaśnić. Przytrzymaj Ctrl aby przyciemnić.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Rysuj po pikselach aby je przyciemnić. Puść Ctrl aby rozjaśnić.",
+  "COLOR_PICKER_TOOLTIP": "Pobiera kolor z płótna i ustawia go jako pierwszorzędny. ({0})",
+  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Kliknij aby pobrać kolor. Przytrzymaj Ctrl aby ukryć płótno. Przytrzymaj Shift aby ukryć warstwę referencyjną.",
+  "ELLIPSE_TOOL_TOOLTIP": "Rysuje elipsę na płótnie ({0}). Przytrzymaj Shift aby narysować koło.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Kliknij i porusz myszką aby narysować elipsę. Przytrzymaj Shift aby narysować koło.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Kliknij i porusz myszką aby narysować koło.",
+  "ERASER_TOOL_TOOLTIP": "Wymazuje piksele z płótna. ({0})",
+  "ERASER_TOOL_ACTION_DISPLAY": "Kliknij i porusz myszką aby zmazywać.",
+  "FLOOD_FILL_TOOL_TOOLTIP": "Zapełnia obszar kolorem. ({0})",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Kliknij na obszar, aby go zapełnić. Przytrzymaj Ctrl aby zapełniać z uwzględnieniem wszystkich warstw.",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Kliknij na obszar aby go zapełnić. Puść Ctrl żeby aby zapełniać tylko z uwzględnieniem aktywnej warstwy.",
+  "LASSO_TOOL_TOOLTIP": "Lasso. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Kliknij i porusz myszką aby zaznaczyć piksele wewnątrz lassa. Przytrzymaj Shift aby dodać do istniejącego zaznaczenia. Przytrzymaj Ctrl aby usunąć z niego.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Kliknij i porusz myszką aby dodać piksele wewnątrz lassa do zaznaczenia.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Kliknij i porusz myszką, aby usunąć piksele wewnątrz lassa z aktywnego zaznaczenia.",
+  "LINE_TOOL_TOOLTIP": "Rysuje linie na płótnie ({0}). Przytrzymaj Shift aby rysować równe linie.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Kliknij i porusz myszką aby narysować linie. Przytrzymaj Shify aby rysować równe linie.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Kliknij i porusz myszką aby rysować równe linie.",
+  "MAGIC_WAND_TOOL_TOOLTIP": "Magiczna Różdżka ({0}). Zapełnia obszar zaznaczeniem",
+  "MAGIC_WAND_ACTION_DISPLAY": "Kliknij aby stworzyć zaznaczenie z obszaru.",
+  "PEN_TOOL": "Pióro",
+  "BRIGHTNESS_TOOL": "Rozświetlenie",
+  "COLOR_PICKER_TOOL": "Próbnik Kolorów",
+  "ELLIPSE_TOOL": "Elipsa",
+  "ERASER_TOOL": "Gumka",
+  "FLOOD_FILL_TOOL": "Wiadro",
+  "LASSO_TOOL": "Lasso",
+  "LINE_TOOL": "Linia",
+  "MAGIC_WAND_TOOL": "Magiczna Różdżka",
+  "MOVE_TOOL": "Przesuwanie",
+  "MOVE_VIEWPORT_TOOL": "Przesuwanie widoku",
+  "RECTANGLE_TOOL": "Prostokąt",
+  "ROTATE_VIEWPORT_TOOL": "Obracanie widoku",
+  "SELECT_TOOL_NAME": "Zaznaczenie",
+  "ZOOM_TOOL": "Powiększenie",
+  "SHAPE_LABEL": "Kształt",
+  "MODE_LABEL": "Tryb",
+  "SCOPE_LABEL": "Zakres",
+  "FILL_SHAPE_LABEL": "Zapełnij kształt",
+  "FILL_COLOR_LABEL": "Kolor zapełnienia",
+  "TOOL_SIZE_LABEL": "Wielkość narzędzia",
+  "STRENGTH_LABEL": "Siła",
+  "NEW": "Nowy",
+  "ADD": "Dodaj",
+  "SUBTRACT": "Odejmij",
+  "INTERSECT": "Intersekcja",
+  "RECTANGLE": "Prostokąt",
+  "CIRCLE": "Koło",
+  "ABOUT": "O nas",
+  "MINIMIZE": "Minimializuj",
+  "RESTORE": "Przywróć",
+  "MAXIMIZE": "Maksymalizuj",
+  "CLOSE": "Zamknij",
+  "EXPORT_SIZE_HINT": "Jeżeli chcesz udostępnić obraz, spróbuj {0}% dla najlepszej przejrzystości",
+  "CREATE": "Stwórz",
+  "BASE_LAYER_NAME": "Podstawowa warstwa",
+  "ENABLE_MASK": "Włącz maskę",
+  "SELECTED_AREA_EMPTY": "Zaznaczony obszar jest pusty",
+  "NOTHING_TO_COPY": "Nie ma nic do skopiowania",
+  "REFERENCE_LAYER_PATH": "Ścieżka warstwy referencyjnej",
+  "FLIP": "Przerzuć",
+  "ROTATION": "Obrót",
+  "ROT_IMG_90_D": "Obróć obraz 90°",
+  "ROT_IMG_180_D": "Obróć obraz 180°",
+  "ROT_IMG_-90_D": "Obróć obraz -90°",
+  "ROT_LAYERS_90_D": "Obróć zaznaczone warstwy 90°",
+  "ROT_LAYERS_180_D": "Obróć zaznaczone warstwy 180°",
+  "ROT_LAYERS_-90_D": "Obróć zaznaczone warstwy -90°",
+  "UNNAMED_PALETTE": "Paleta bez nazwy",
+  "CLICK_SELECT_PRIMARY": "Kilknij aby ustawić jako kolor główny.",
+  "PEN_MODE": "Tryb pióra",
+  "VIEW": "Widok",
+  "HORIZONTAL_LINE_SYMMETRY": "Pozioma oś symetrii",
+  "VERTICAL_LINE_SYMMETRY": "Pionowa oś symetrii",
+  "COLOR_PICKER_TITLE": "Próbnik Kolorów",
+  "COLOR_SLIDERS_TITLE": "Suwaki Kolorów",
+  "PALETTE_TITLE": "Paleta Kolorów",
+  "SWATCHES_TITLE": "Swatche",
+  "LAYERS_TITLE": "Warstwy",
+  "NAVIGATION_TITLE": "Nawigacja",
+  "NORMAL_BLEND_MODE": "Normalny",
+  "DARKEN_BLEND_MODE": "Przyciemnianie",
+  "MULTIPLY_BLEND_MODE": "Mnożenie",
+  "COLOR_BURN_BLEND_MODE": "Wypalenie koloru",
+  "LIGHTEN_BLEND_MODE": "Rozjaśnianie",
+  "SCREEN_BLEND_MODE": "Przesiewanie",
+  "COLOR_DODGE_BLEND_MODE": "Unikanie",
+  "OVERLAY_BLEND_MODE": "Narzuta",
+  "SOFT_LIGHT_BLEND_MODE": "Miękkie światło",
+  "HARD_LIGHT_BLEND_MODE": "Twarde światło",
+  "DIFFERENCE_BLEND_MODE": "Różnica",
+  "EXCLUSION_BLEND_MODE": "Wykluczenie",
+  "HUE_BLEND_MODE": "Odcień",
+  "SATURATION_BLEND_MODE": "Nasycenie",
+  "LUMINOSITY_BLEND_MODE": "Jasność",
+  "COLOR_BLEND_MODE": "Kolor",
+  "NOT_SUPPORTED_BLEND_MODE": "Nie wspierany",
+  "RESTART": "Restartuj",
+  "SORT_BY": "Sortuj po",
+  "NAME": "Nazwa",
+  "COLORS": "Kolory",
+  "DEFAULT": "Domyślnie",
+  "ALPHABETICAL": "Alfabetycznie",
+  "COLOR_COUNT": "Ilość kolorów",
+  "ANY": "Obojętnie",
+  "MAX": "Maksymalnie",
+  "MIN": "Minimalnie",
+  "EXACT": "Dokładnie",
+  "ASCENDING": "Rosnąco",
+  "DESCENDING": "Malejąco",
+  "NAME_IS_TOO_LONG": "Nazwa jest za długa",
+  "STOP_IT_TEXT1": "Wystarczy. Posprzątaj nazwy swoich plików.",
+  "STOP_IT_TEXT2": "Czy możesz proszę przestać kopiować te nazwy?",
+  "REPLACER_TOOLTIP": "Kliknij prawym przyciskiem myszy na kolor i wybierz 'Zamień' lub przeciągnij go tutaj.",
+  "CLICK_TO_CHOOSE_COLOR": "Kliknij aby wybrać kolor",
+  "REPLACE_COLOR": "Zastąp kolor",
+  "PALETTE_COLOR_TOOLTIP": "Kliknij aby ustawić jako główny kolor. Przeciągnij i upuść na inny kolor z palety, aby zamienić je miejscami.",
+  "ADD_FROM_SWATCHES": "Dodaj ze swatchy",
+  "ADD_COLOR_TO_PALETTE": "Dodaj kolor do palety",
+  "USE_IN_CURRENT_IMAGE": "Użyj w aktywnym obrazie",
+  "ADD_TO_FAVORITES": "Dodaj do ulubionych",
+  "BROWSE_PALETTES": "Przeglądaj palety",
+  "LOAD_PALETTE": "Załaduj paletę",
+  "SAVE_PALETTE": "Zapisz paletę",
+  "FAVORITES": "Ulubione",
+  "ADD_FROM_CURRENT_PALETTE": "Dodaj z aktywnej palety",
+  "OPEN_PALETTES_DIR_TOOLTIP": "Otwórz folder z paletami w explorerze",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "Przeglądaj palety w serwisie Lospec",
+  "IMPORT_FROM_FILE_TOOLTIP": "Importuj z pliku",
+  "TOP_LEFT": "Lewy górny",
+  "TOP_CENTER": "Środkowy górny",
+  "TOP_RIGHT": "Prawy górny",
+  "MIDDLE_LEFT": "Lewy środkowy",
+  "MIDDLE_CENTER": "Środek",
+  "MIDDLE_RIGHT": "Prawy środkowy",
+  "BOTTOM_LEFT": "Lewy dolny",
+  "BOTTOM_CENTER": "Środkowy dolny",
+  "BOTTOM_RIGHT": "Prawy dolny",
+  "CLIP_TO_BELOW": "Dopasuj do warstwy niżej",
+  "MOVE_UPWARDS": "Przesuń w górę",
+  "MOVE_DOWNWARDS": "Przesuń w dół",
+  "MERGE_SELECTED": "Scal zaznaczone",
+  "LOCK_TRANSPARENCY": "Zablokuj przeźroczystość",
+  "COULD_NOT_LOAD_PALETTE": "Nie udało się pobrać palet kolorów",
+  "NO_PALETTES_FOUND": "Nie znaleziono żadnych palet.",
+  "LOSPEC_LINK_TEXT": "Słyszałem, że trochę możesz znaleźć tutaj: lospec.com/palette-list",
+  "PALETTE_BROWSER": "Przeglądarka Palet",
+  "DELETE_PALETTE_CONFIRMATION": "Czy jesteś pewien, że chcesz usunąć tę paletę? Tej akcji nie można cofnąć.",
+  "SHORTCUTS_IMPORTED": "Skróty klawiszowe z {0} zostały zaimportowane poprawnie.",
+  "SHORTCUT_PROVIDER_DETECTED": "Zauważyliśmy, że masz zainstalowane {0}. Czy chcesz zaimportować skróty z tego programu?",
+  "IMPORT_FROM_INSTALLATION": "Importuj z instalacji",
+  "IMPORT_INSTALLATION_OPTION1": "Importuj z instalacji",
+  "IMPORT_INSTALLATION_OPTION2": "Użyj domyślnych",
+  "IMPORT_FROM_TEMPLATE": "Importuj z szablonu",
+  "SHORTCUTS_IMPORTED_SUCCESS": "Skróty klawiszowe zostały zaimportowane poprawnie.",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "Czy na pewno chcesz zresetować skróty klawiszowe do ich domyślnych wartości?",
+  "SUCCESS": "Sukces",
+  "WARNING": "Ostrzeżenie",
+  "ERROR_IMPORTING_IMAGE": "Wystąpił błąd podczas importowania obrazu.",
+  "SHORTCUTS_CORRUPTED_TITLE": "Popsuty plik ze skrótami klawiszowymi",
+  "SHORTCUTS_CORRUPTED": "Plik skrótów klawiszowych jest popsuty, zresetowano do domyślnych wartości.",
+  "FAILED_DOWNLOAD_PALETTE": "Nie udało się pobrać palety",
+  "FILE_INCORRECT_FORMAT": "Plik nie jest w poprawnym formacie",
+  "INVALID_FILE": "Nieprawidłowy plik",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "Plik ze skrótami klawiszowymi jest w niepoprawnym formacie",
+  "UNSUPPORTED_FILE_FORMAT": "Ten format plików nie jest wspierany",
+  "ALREADY_ASSIGNED": "Już przypisano",
+  "REPLACE": "Zastąp",
+  "SWAP": "Zamień",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "Ten skrót został już przypisany do '{0}'\nChcesz go zastąpić czy je zamienić?",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "Ten skrót jest już przypisany do '{0}' \nCzy chcesz go zastąpić?",
+  "UNSAVED_CHANGES": "Niezapisane zmiany.",
+  "DOCUMENT_MODIFIED_SAVE": "Ten dokument został zmodyfikowany. Czy chcesz go zapisać?",
+  "SESSION_UNSAVED_DATA": "{0} ma niezapisane zmiany. Jesteś pewien?",
+  "PROJECT_MAINTAINERS": "Opiekunowie Projektu",
+  "OTHER_AWESOME_CONTRIBUTORS": "I inni świetni współtwórcy",
+  "HELP": "Pomoc",
+  "STOP_IT_TEXT3": "Nie no, serio, przestań.",
+  "STOP_IT_TEXT4": "Nie masz nic lepszego do roboty?",
+  "LINEAR_DODGE_BLEND_MODE": "Liniowe unikanie (Dodatnie)",
+  "PRESS_ANY_KEY": "Wciśnij klawisz",
+  "NONE_SHORTCUT": "Brak",
+  "REFERENCE": "Referencja",
+  "PUT_REFERENCE_LAYER_ABOVE": "Daj warstwę referencyjną do góry",
+  "PUT_REFERENCE_LAYER_BELOW": "Daj warstwę referencyjną w dół",
+  "TOGGLE_VERTICAL_SYMMETRY": "Przełącz pionową oś symetrii",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "Przełącz poziomą oś symetrii",
+  "RESET_VIEWPORT": "Resetuj widok",
+  "VIEWPORT_SETTINGS": "Ustawienia widoku",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Kliknij i przytrzymaj myszkę, aby poruszyć piksele w zaznaczonej warstwie.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Przytrzymaj myszkę aby poruszyć wszystkie warstwy.",
+  "CTRL_KEY": "Ctrl",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "Zmień nazwę",
+  "PIXEL_UNIT": "px",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "Otwórz okno debugowania lokalizacji",
+  "FORCE_OTHER_FLOW_DIRECTION": "Odwróć kierunek interfejsu",
+  "API_KEY": "Klucz API",
+  "LOCALIZATION_VIEW_TYPE": "Typ wyświetlania lokalizacji",
+  "LOAD_LANGUAGE_FROM_FILE": "Załaduj język z pliku",
+  "LOG_IN": "Zaloguj",
+  "SYNC": "Synchronizuj",
+  "NOT_LOGGED_IN": "Nie zalogowano",
+  "POE_EDITOR_ERROR": "Błąd POEditora: {0} {1}",
+  "HTTP_ERROR_MESSAGE": "Błąd HTTP: {0} {1}",
+  "LOGGED_IN": "Zalogowano",
+  "SYNCED_SUCCESSFULLY": "Zsynchronizowano poprawnie",
+  "EXCEPTION_ERROR": "Błąd: {0}",
+  "DROP_PALETTE": "Upuść paletę tutaj",
+  "SECURITY_ERROR": "Błąd bezpieczeństwa",
+  "SECURITY_ERROR_MSG": "Brak uprawnień do zapisu w tej lokalizacji.",
+  "IO_ERROR": "Błąd I/O",
+  "IO_ERROR_MSG": "Błąd podczas zapisu na dysku.",
+  "FAILED_ASSOCIATE_PIXI": "Nie udało się powiązać pliku .pixi z PixiEditorem.",
+  "COULD_NOT_SAVE_PALETTE": "Wysąpił błąd poczas zapisu palety kolorów.",
+  "NO_COLORS_TO_SAVE": "Brak kolorów do zapisu.",
+  "ALL_LAYERS": "Wszystkie warstwy",
+  "SINGLE_LAYER": "Pojedyńcza warstwa",
+  "CHOOSE": "Wybierz",
+  "REMOVE": "Usuń",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "Plik nie jest typu \".aseprite-keys\"",
+  "FILE_HAS_INVALID_SHORTCUT": "Ten plik zawiera niewłaściwe skróty klawiszowe",
+  "FILE_EXTENSION_NOT_SUPPORTED": "Plik '{0}' nie jest wspierany",
+  "ERROR_READING_FILE": "Błąd podczas czytania pliku",
+  "DISCARD_PALETTE": "Odrzuć paletę",
+  "DISCARD_PALETTE_CONFIRMATION": "Czy na pewno chcesz odrzucić aktywną paletę? Nie można tego cofnąć.",
+  "IMPORT_AS_NEW_LAYER": "Importuj jako nowa warstwa",
+  "PASTE_AS_PRIMARY_COLOR": "Wklej jako kolor podstawowy",
+  "IMPORT_AS_NEW_FILE": "Importuj jako nowy plik",
+  "IMPORT_PALETTE_FILE": "Importuj paletę kolorów",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "Importuj kolory do palety",
+  "IMPORT_SINGLE_PALETTE_COLOR": "Importuj kolor do palety",
+  "IMPORT_AS_REFERENCE_LAYER": "Importuj jako warstwa referencyjna",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "Kilknij prawy przycisk myszy aby pobrać kolor, kliknij z Shiftem aby skopiować kolor do schowka",
+  "OPEN_FILE_FROM_CLIPBOARD": "Otwórz ze schowka",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Otwórz ze schowka",
+  "OPEN_LOCALIZATION_DATA": "Czy chcesz otworzyć plik LocalizationData.json? \nZaktualizowane dane zostały skopiowane do schowka. Zmiany zostaną zaaplikowane dopiero po restarcie aplikacji",
+  "DOWNLOADING_LANGUAGE_FAILED": "Nie udało się pobrać języka. \nMożliwe że klucz API został użyty zbyt wiele razy.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Ścieżka z danymi lokalizacji nie została odnaleziona",
+  "APPLY": "Zastosuj",
+  "UPDATE_SOURCE": "Zaktualizuj źródło",
+  "COPY_TO_CLIPBOARD": "Kopiuj do schowka",
+  "LANGUAGE_FILE_NOT_FOUND": "Język nie znaleziony.\nSzukanie {0}",
+  "PROJECT_ROOT_NOT_FOUND": "Źródło projektu PixiEditor nie zostało odnalezione.\nSzukanie PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Folder z danymi lokalizacji nie został odnaleziony.\nSzukanie /Data/Localization",
+  "SELECT_A_LANGUAGE": "Wybierz język",
+  "DONE": "Zrobione",
+  "SOURCE_UNSET_OR_MISSING": "Brakujące/Nie ustawione źródło",
+  "SOURCE_NEWER": "Źródło jest nowsze",
+  "SOURCE_UP_TO_DATE": "Źródło jest aktualne",
+  "SOURCE_OLDER": "Chmura jest nowsza",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Kliknij aby pobrać kolory z warstwy referencyjnej.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Kliknij aby pobrać kolory z płótna.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Okno debugowania lokalizacji",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Okno debugowania komend",
+  "SHORTCUTS_TITLE": "Skróty klawiszowe",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Przeciągnij uchwyty aby skalować transformację. Przytrzymaj Ctrl i przeciągnij aby przemieścić uchwyt swobodnie. Przytrzymaj Shify aby skalować proporcjonalnie. Przytrzymaj Alt i przeciągnij boczny uchwyt aby ściąć. Porusz zewnętrzne uchwyty aby obracać.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Przeciągnij uchwyty aby skalować transformację. Przytrzymaj Shify aby zrobić to proporcjonalnie. Przytrzymaj Alt i przeciągnij aby ściąć. Przeciągnij zewnętrzne uchwyty aby obracać.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Przeciągnij uchwyty aby skalować transformację. Przytrzymaj Shify aby skalować proporcjonalnie. Przeciągnij zewnętrzne uchwyty aby obracać.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Przeciągnij uchwyty aby skalować transformację. Przytrzymaj Shift aby skalować proporcjonalnie."
+}

+ 564 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/pt-br.json

@@ -0,0 +1,564 @@
+{
+  "RECENT_FILES": "Arquivos Recentes",
+  "OPEN_FILE": "Abrir Arquivo",
+  "NEW_FILE": "Novo",
+  "RECENT_EMPTY_TEXT": "Sem arquivos recentes",
+  "LANGUAGE": "Linguagem",
+  "GENERAL": "Geral",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "Atalhos de Teclado",
+  "MISC": "Diversos",
+  "SHOW_STARTUP_WINDOW": "Mostrar janela de inicialização",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "Mostrar prévia da imagem na barra de tarefas",
+  "RECENT_FILE_LENGTH": "Número de arquivos recentes exibidos",
+  "RECENT_FILE_LENGTH_TOOLTIP": "Quantos documentos são exibidos em Arquivo > Recentes. Padrão: 8",
+  "DEFAULT_NEW_SIZE": "Novo tamanho padrão de arquivo",
+  "WIDTH": "Largura",
+  "HEIGHT": "Altura",
+  "TOOLS": "Ferramentas",
+  "ENABLE_SHARED_TOOLBAR": "Habilitar barra de ferramentas compartilhada",
+  "AUTOMATIC_UPDATES": "Atualizações Automáticas",
+  "CHECK_FOR_UPDATES": "Verificar as atualizações na inicialização",
+  "UPDATE_STREAM": "Atualizar stream",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "Os canais de atualização só podem ser alterados na versão standalone (baixada de https://pixieditor.net).\nAs versões do Steam e da Microsoft Store tratam as atualizações de forma separada.",
+  "DEBUG": "Depurar",
+  "ENABLE_DEBUG_MODE": "Habilitar o modo de depuração",
+  "OPEN_CRASH_REPORTS_DIR": "Abrir o diretório de relatórios de falhas",
+  "DISCORD_RICH_PRESENCE": "Estado de Presença",
+  "ENABLED": "Habilitado",
+  "SHOW_IMAGE_NAME": "Mostrar o nome da imagem",
+  "SHOW_IMAGE_SIZE": "Mostrar o tamanho da imagem",
+  "SHOW_LAYER_COUNT": "Mostrar a contagem de camadas",
+  "FILE": "Arquivo",
+  "RECENT": "Recente",
+  "OPEN": "Abrir",
+  "SAVE_PIXI": "Salvar (.pixi)",
+  "SAVE_AS_PIXI": "Salvar como... (.pixi)",
+  "EXPORT_IMG": "Exportar (.png, .jpg, etc.)",
+  "EDIT": "Editar",
+  "EXIT": "Sair",
+  "PERCENTAGE": "Porcentagem",
+  "ABSOLUTE": "Absoluto",
+  "PRESERVE_ASPECT_RATIO": "Preservar a relação de aspecto",
+  "ANCHOR_POINT": "Ponto de ancoragem",
+  "RESIZE_IMAGE": "Redimensionar imagem",
+  "RESIZE": "Redimensionar",
+  "DOCUMENTATION": "Documentação",
+  "WEBSITE": "Website",
+  "OPEN_WEBSITE": "Abrir website",
+  "REPOSITORY": "Repositório",
+  "OPEN_REPOSITORY": "Abrir repositório",
+  "LICENSE": "Licença",
+  "OPEN_LICENSE": "Abrir licença",
+  "THIRD_PARTY_LICENSES": "Licenças de terceiros",
+  "OPEN_THIRD_PARTY_LICENSES": "Abrir licenças de terceiros",
+  "APPLY_TRANSFORM": "Aplicar a transformação",
+  "INCREASE_TOOL_SIZE": "Aumentar o tamanho da ferramenta",
+  "DECREASE_TOOL_SIZE": "Diminuir o tamanho da ferramenta",
+  "TO_INSTALL_UPDATE": "para instalar a atualização {0}",
+  "DOWNLOADING_UPDATE": "Download da atualização...",
+  "UPDATE_READY": "A atualização está pronta para ser instalada. Deseja instalá-la agora?",
+  "NEW_UPDATE": "Nova atualização",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Não foi possível atualizar sem privilégios de administrador. Execute o PixiEditor como administrador.",
+  "INSUFFICIENT_PERMISSIONS": "Permissões insuficientes",
+  "UPDATE_CHECK_FAILED": "Falha na verificação da atualização",
+  "COULD_NOT_CHECK_FOR_UPDATES": "Não foi possível verificar se há uma atualização disponível.",
+  "VERSION": "Versão {0}",
+  "OPEN_TEMP_DIR": "Abrir o diretório temporário",
+  "OPEN_LOCAL_APPDATA_DIR": "Abra o diretório local AppData",
+  "OPEN_ROAMING_APPDATA_DIR": "Abrir o diretório AppData do Roaming",
+  "OPEN_INSTALLATION_DIR": "Abrir o diretório de instalação",
+  "DUMP_ALL_COMMANDS": "Exportar o arquivo de despejo de todos os comandos",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Exportar o arquivo de despejo de todos os comandos para txt",
+  "CRASH": "Falha",
+  "CRASH_APP": "Falha no aplicativo",
+  "DELETE_USR_PREFS": "Excluir as preferências do usuário (Roaming AppData)",
+  "DELETE_SHORTCUT_FILE": "Excluir arquivo de atalho (Roaming AppData)",
+  "DELETE_EDITOR_DATA": "Excluir dados do editor (Local AppData)",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "Gerar modelo de associações de teclas de atalho",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Gerar modelo json de associações de teclas de atalho",
+  "VALIDATE_SHORTCUT_MAP": "Validar mapa de atalhos",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Valida o mapa de atalhos",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "Chaves vazias: {0}\nComandos desconhecidos: {1}",
+  "RESULT": "Resultado",
+  "CLEAR_RECENT_DOCUMENTS": "Limpar documentos recentes",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Limpar os documentos abertos recentemente",
+  "OPEN_CMD_DEBUG_WINDOW": "Abrir a janela de depuração de comandos",
+  "PATH_DOES_NOT_EXIST": "{0} não existe.",
+  "LOCATION_DOES_NOT_EXIST": "A localização não existe.",
+  "FILE_NOT_FOUND": "Arquivo não encontrado.",
+  "ARE_YOU_SURE": "Você tem certeza?",
+  "ARE_YOU_SURE_PATH_FULL_PATH": "Tem certeza de que deseja excluir {0}?\nEsses dados serão perdidos em todas as instalações.\n(Caminho completo: {1})",
+  "FAILED_TO_OPEN_FILE": "Falha ao abrir o arquivo",
+  "OLD_FILE_FORMAT": "Formato de arquivo antigo",
+  "OLD_FILE_FORMAT_DESCRIPTION": "Esse arquivo .pixi usa o formato antigo,\n que não é mais suportado e não pode ser aberto.",
+  "NOTHING_FOUND": "Nada encontrado",
+  "EXPORT": "Exportar",
+  "EXPORT_IMAGE": "Exportar imagem",
+  "IMPORT": "Importar",
+  "SHORTCUT_TEMPLATES": "Modelos de atalho",
+  "RESET_ALL": "Redefinir tudo",
+  "LAYER": "Camada",
+  "LAYER_DELETE_SELECTED": "Excluir a camada/pasta ativa",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Excluir camada ou pasta ativa",
+  "LAYER_DELETE_ALL_SELECTED": "Excluir todas as camadas/pastas selecionadas",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Excluir todas as camadas e/ou pastas selecionadas",
+  "DELETE_SELECTED_PIXELS": "Excluir pixels selecionados",
+  "NEW_FOLDER": "Nova pasta",
+  "CREATE_NEW_FOLDER": "Criar nova pasta",
+  "NEW_LAYER": "Nova camada",
+  "CREATE_NEW_LAYER": "Criar uma nova camada",
+  "NEW_IMAGE": "Nova imagem",
+  "CREATE_NEW_IMAGE": "Criar uma nova imagem",
+  "SAVE": "Salvar",
+  "SAVE_AS": "Salvar como...",
+  "IMAGE": "Imagem",
+  "SAVE_IMAGE": "Salvar a imagem",
+  "SAVE_IMAGE_AS": "Salvar a imagem como nova",
+  "DUPLICATE": "Duplicar",
+  "DUPLICATE_SELECTED_LAYER": "Duplicar camada selecionada",
+  "CREATE_MASK": "Criar máscara",
+  "DELETE_MASK": "Deletar máscara",
+  "TOGGLE_MASK": "Alternar a visibilidade da máscara",
+  "APPLY_MASK": "Aplicar máscara",
+  "TOGGLE_VISIBILITY": "Alternar a visibilidade",
+  "MOVE_MEMBER_UP": "Mova a barra para cima",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "Mover para cima a camada ou pasta selecionada",
+  "MOVE_MEMBER_DOWN": "Mova a barra para baixo",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Mover a camada ou pasta selecionada para baixo",
+  "MERGE_ALL_SELECTED_LAYERS": "Mesclar todas as camadas selecionadas",
+  "MERGE_WITH_ABOVE": "Mesclar a camada com a camada acima",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "Mesclar a camada selecionada com a camada acima",
+  "MERGE_WITH_BELOW": "Mesclar a camada com a camada abaixo",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "Mesclar a camada selecionada com a camada abaixo",
+  "ADD_REFERENCE_LAYER": "Adicionar camada de referência",
+  "DELETE_REFERENCE_LAYER": "Deletar camada de referência",
+  "TRANSFORM_REFERENCE_LAYER": "Transformar a camada de referência",
+  "TOGGLE_REFERENCE_LAYER_POS": "Alternar posição da camada de referência",
+  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Alternar a camada de referência entre a mais alta ou a mais baixa",
+  "RESET_REFERENCE_LAYER_POS": "Redefinir posição da camada de referência",
+  "CLIP_CANVAS": "Cortar tela",
+  "FLIP_IMG_VERTICALLY": "Virar a imagem verticalmente",
+  "FLIP_IMG_HORIZONTALLY": "Virar a imagem horizontalmente",
+  "FLIP_LAYERS_VERTICALLY": "Virar Camadas Selecionadas Verticalmente",
+  "FLIP_LAYERS_HORIZONTALLY": "Virar Camadas Selecionadas Horizontalmente",
+  "ROT_IMG_90": "Girar imagem 90 graus",
+  "ROT_IMG_180": "Girar imagem 180 graus",
+  "ROT_IMG_-90": "Girar imagem -90 graus",
+  "ROT_LAYERS_90": "Girar imagens selecionadas 90 graus",
+  "ROT_LAYERS_180": "Girar imagens selecionadas 180 graus",
+  "ROT_LAYERS_-90": "Girar imagens selecionadas -90 graus",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "Alternar a visibilidade de simetria vertical",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "Alternar a visibilidade de simetria horizontal",
+  "DELETE_PIXELS": "Deletar pixels",
+  "DELETE_PIXELS_DESCRIPTIVE": "Deletar pixels selecionados",
+  "RESIZE_DOCUMENT": "Redimensionar documento",
+  "RESIZE_CANVAS": "Redimensionar tela",
+  "CENTER_CONTENT": "Centralizar conteúdo",
+  "CUT": "Cortar",
+  "CUT_DESCRIPTIVE": "Cortar área/camadas selecionadas",
+  "PASTE": "Colar",
+  "PASTE_DESCRIPTIVE": "Colar área/camadas selecionadas",
+  "PASTE_AS_NEW_LAYER": "Colar como nova camada",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Colar da área de transferência como nova camada",
+  "PASTE_REFERENCE_LAYER": "Colar para a camada de referência",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Colar o conteúdo da área de transferência como camada de referência",
+  "PASTE_COLOR": "Colar Cor",
+  "PASTE_COLOR_DESCRIPTIVE": "Colar cor da área de transferência",
+  "PASTE_COLOR_SECONDARY": "Colar cor secundária",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Colar a cor da área de transferência como cor secundária",
+  "CLIPBOARD": "Área de transferência",
+  "COPY": "Copiar",
+  "COPY_DESCRIPTIVE": "Copiar para a área de transferência",
+  "COPY_COLOR_HEX": "Copiar cor primária (HEX)",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "Copiar a cor primária como código HEX",
+  "COPY_COLOR_RGB": "Copiar cor primária (RGB)",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "Copiar a cor primária como código RGB",
+  "COPY_COLOR_SECONDARY_HEX": "Copiar cor secundária (HEX)",
+  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Copiar a cor secundária como código HEX",
+  "COPY_COLOR_SECONDARY_RGB": "Copiar cor secundária (RGB)",
+  "COPY_COLOR_SECONDARY_RGB_DESCRIPTIVE": "Copiar a cor secundária como código RGB",
+  "PALETTE_COLORS": "Cores da paleta",
+  "REPLACE_SECONDARY_BY_PRIMARY": "Substituir a cor secundária pela primária",
+  "REPLACE_SECONDARY_BY_PRIMARY_DESCRIPTIVE": "Substitua a cor secundária pela cor primária",
+  "REPLACE_PRIMARY_BY_SECONDARY": "Substitua a cor primária pela secundária",
+  "REPLACE_PRIMARY_BY_SECONDARY_DESCRIPTIVE": "Substitua a cor primária pela cor secundária",
+  "OPEN_PALETTE_BROWSER": "Abrir o navegador da paleta",
+  "OVERWRITE_PALETTE_CONSENT": "A paleta '{0}' já existe, você deseja substituí-la?",
+  "PALETTE_EXISTS": "A paleta já existe",
+  "REPLACE_PALETTE_CONSENT": "Substituir a paleta atual pela selecionada?",
+  "REPLACE_PALETTE": "Substituir a paleta atual",
+  "SELECT_COLOR_1": "Selecione a cor 1",
+  "SELECT_COLOR_2": "Selecione a cor 2",
+  "SELECT_COLOR_3": "Selecione a cor 3",
+  "SELECT_COLOR_4": "Selecione a cor 4",
+  "SELECT_COLOR_5": "Selecione a cor 5",
+  "SELECT_COLOR_6": "Selecione a cor 6",
+  "SELECT_COLOR_7": "Selecione a cor 7",
+  "SELECT_COLOR_8": "Selecione a cor 8",
+  "SELECT_COLOR_9": "Selecione a cor 9",
+  "SELECT_COLOR_10": "Selecione a cor 10",
+  "SELECT_TOOL": "Selecionar {0} Ferramenta",
+  "SELECT_COLOR_1_DESCRIPTIVE": "Selecione a primeira cor na paleta",
+  "SELECT_COLOR_2_DESCRIPTIVE": "Selecione a segunda cor na paleta",
+  "SELECT_COLOR_3_DESCRIPTIVE": "Selecione a terceira cor na paleta",
+  "SELECT_COLOR_4_DESCRIPTIVE": "Selecione a quarta cor na paleta",
+  "SELECT_COLOR_5_DESCRIPTIVE": "Selecione a quinta cor na paleta",
+  "SELECT_COLOR_6_DESCRIPTIVE": "Selecione a sexta cor na paleta",
+  "SELECT_COLOR_7_DESCRIPTIVE": "Selecione a sétima cor na paleta",
+  "SELECT_COLOR_8_DESCRIPTIVE": "Selecione a oitava cor na paleta",
+  "SELECT_COLOR_9_DESCRIPTIVE": "Selecione a nona cor na paleta",
+  "SELECT_COLOR_10_DESCRIPTIVE": "Selecione a décima cor na paleta",
+  "SWAP_COLORS": "Trocar cores",
+  "SWAP_COLORS_DESCRIPTIVE": "Trocar cores primárias e secundárias",
+  "SEARCH": "Pesquisar",
+  "COMMAND_SEARCH": "Pesquisa de comandos",
+  "OPEN_COMMAND_SEARCH": "Abrir a janela de pesquisa de comandos",
+  "SELECT": "Selecionar",
+  "DESELECT": "Desselecionar",
+  "INVERT": "Inverter",
+  "SELECTION": "Seleção",
+  "SELECT_ALL": "Selecionar tudo",
+  "SELECT_ALL_DESCRIPTIVE": "Selecione tudo",
+  "CLEAR_SELECTION": "Limpar seleção",
+  "INVERT_SELECTION": "Inverter seleção",
+  "INVERT_SELECTION_DESCRIPTIVE": "Inverter a seleção",
+  "TRANSFORM_SELECTED_AREA": "Transformar área selecionada",
+  "NUDGE_SELECTED_LEFT": "Deslocar o objeto selecionado para a esquerda",
+  "NUDGE_SELECTED_RIGHT": "Deslocar o objeto selecionado para a direita",
+  "NUDGE_SELECTED_UP": "Deslocar o objeto selecionado para acima",
+  "NUDGE_SELECTED_DOWN": "Deslocar o objeto selecionado para abaixo",
+  "MASK_FROM_SELECTION": "Nova máscara a partir da seleção",
+  "MASK_FROM_SELECTION_DESCRIPTIVE": "Seleção para nova máscara",
+  "ADD_SELECTION_TO_MASK": "Adicionar seleção à máscara",
+  "SUBTRACT_SELECTION_FROM_MASK": "Subtrair a seleção da máscara",
+  "INTERSECT_SELECTION_MASK": "Seleção de interseção com máscara",
+  "SELECTION_TO_MASK": "Seleção para máscara",
+  "TO_NEW_MASK": "Para a nova máscara",
+  "ADD_TO_MASK": "Adicionar à máscara",
+  "SUBTRACT_FROM_MASK": "Subtrair da máscara",
+  "INTERSECT_WITH_MASK": "Interseção com máscara",
+  "STYLUS": "Caneta",
+  "TOGGLE_PEN_MODE": "Alternar o modo de caneta",
+  "UNDO": "Desfazer",
+  "UNDO_DESCRIPTIVE": "Desfazer a última ação",
+  "REDO": "Refazer",
+  "REDO_DESCRIPTIVE": "Refazer a última ação",
+  "WINDOWS": "Janelas",
+  "TOGGLE_GRIDLINES": "Alternar linhas guia",
+  "ZOOM_IN": "Aumentar o zoom",
+  "ZOOM_OUT": "Diminuir o zoom",
+  "NEW_WINDOW_FOR_IMG": "Nova janela para a imagem atual",
+  "CENTER_ACTIVE_VIEWPORT": "Centralizar a janela de exibição ativa",
+  "FLIP_VIEWPORT_HORIZONTALLY": "Inverter a janela de exibição horizontalmente",
+  "FLIP_VIEWPORT_VERTICALLY": "Inverter a janela de visualização verticalmente",
+  "SETTINGS": "Configurações",
+  "OPEN_SETTINGS": "Abrir configurações",
+  "OPEN_SETTINGS_DESCRIPTIVE": "Abrir a janela de configurações",
+  "OPEN_STARTUP_WINDOW": "Abrir a janela de inicialização",
+  "OPEN_SHORTCUT_WINDOW": "Abrir a janela de atalhos",
+  "OPEN_ABOUT_WINDOW": "Abrir a janela sobre",
+  "OPEN_NAVIGATION_WINDOW": "Abrir a janela de navegação",
+  "ERROR": "Erro",
+  "INTERNAL_ERROR": "Erro interno",
+  "ERROR_SAVE_LOCATION": "Não foi possível salvar o arquivo no local especificado",
+  "ERROR_WHILE_SAVING": "Ocorreu um erro interno ao salvar. Tente novamente.",
+  "UNKNOWN_ERROR_SAVING": "Ocorreu um erro ao salvar.",
+  "FAILED_ASSOCIATE_LOSPEC": "Falha ao associar o protocolo da paleta Lospec.",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "Doação",
+  "YES": "Sim",
+  "NO": "Não",
+  "CANCEL": "Cancelar",
+  "UNNAMED": "Sem nome",
+  "OPEN_COMMAND_DEBUG_WINDOW": "Abrir a janela de depuração de comandos",
+  "DELETE": "Deletar",
+  "USER_PREFS": "Preferências do usuário (Roaming)",
+  "SHORTCUT_FILE": "Arquivo de atalho (Roaming)",
+  "EDITOR_DATA": "Dados do editor (Local)",
+  "MOVE_VIEWPORT_TOOLTIP": "Move a janela de visualização. ({0})",
+  "MOVE_VIEWPORT_ACTION_DISPLAY": "Clique e mova para deslocar a janela de visualização",
+  "MOVE_TOOL_TOOLTIP": "Move os pixels selecionados ({0}). Mantenha pressionada a tecla Ctrl para mover todas as camadas.",
+  "MOVE_TOOL_ACTION_DISPLAY": "Mantenha o mouse pressionado para mover os pixels selecionados. Mantenha pressionada a tecla Ctrl para mover todas as camadas.",
+  "PEN_TOOL_TOOLTIP": "Caneta. ({0})",
+  "PEN_TOOL_ACTION_DISPLAY": "Clique e movimente para desenhar.",
+  "PIXEL_PERFECT_SETTING": "Pixel perfeito",
+  "RECTANGLE_TOOL_TOOLTIP": "Desenha um retângulo na tela ({0}). Mantenha pressionada a tecla Shift para desenhar um quadrado.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_DEFAULT": "Clique e mova para desenhar um retângulo. Mantenha pressionada a tecla Shift para desenhar um quadrado.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Clique e movimente para desenhar um quadrado.",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "Manter imagem original",
+  "ROTATE_VIEWPORT_TOOLTIP": "Gira a janela de visualização. ({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "Clique e mova para girar a janela de visualização",
+  "SELECT_TOOL_TOOLTIP": "Seleciona a área. ({0})",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Clique e mova para selecionar uma área. Mantenha pressionada a tecla Shift para adicionar à seleção existente. Mantenha pressionada a tecla Ctrl para subtraí-la.",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Clique e mova para adicionar à seleção atual.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Clique e mova para subtrair da seleção atual.",
+  "ZOOM_TOOL_TOOLTIP": "Amplia a janela de visualização ({0}). Clique para aumentar o zoom, mantenha pressionada a tecla Alt e clique para diminuir o zoom.",
+  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Clique e mova para dar zoom. Clique para aumentar o zoom, mantenha pressionada a tecla Ctrl e clique para diminuir o zoom.",
+  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Clique e mova para dar zoom. Clique para diminuir o zoom, solte a tecla Ctrl e clique para aumentar o zoom.",
+  "BRIGHTNESS_TOOL_TOOLTIP": "Torna os pixels mais claros ou mais escuros ({0}). Mantenha pressionada a tecla Ctrl para tornar os pixels mais escuros.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Desenhe nos pixels para torná-los mais brilhantes. Mantenha pressionada a tecla Ctrl para escurecer.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Desenhe nos pixels para torná-los mais escuros. Solte a tecla Ctrl para clarear.",
+  "COLOR_PICKER_TOOLTIP": "Seleciona a cor primária da tela. ({0})",
+  "COLOR_PICKER_ACTION_DISPLAY_DEFAULT": "Clique para escolher as cores. Mantenha pressionada a tecla Ctrl para ocultar a tela. Mantenha pressionada a tecla Shift para ocultar a camada de referência",
+  "ELLIPSE_TOOL_TOOLTIP": "Desenha uma elipse na tela ({0}). Mantenha pressionada a tecla Shift para desenhar um círculo.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_DEFAULT": "Clique e mova o mouse para desenhar uma elipse. Mantenha pressionada a tecla Shift para desenhar um círculo.",
+  "ELLIPSE_TOOL_ACTION_DISPLAY_SHIFT": "Clique e mova o mouse para desenhar um círculo.",
+  "ERASER_TOOL_TOOLTIP": "Apaga a cor do pixel. ({0})",
+  "ERASER_TOOL_ACTION_DISPLAY": "Clique e movimente para apagar.",
+  "FLOOD_FILL_TOOL_TOOLTIP": "Preenche a área com cor. ({0})",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_DEFAULT": "Pressione em uma área para preenchê-la. Mantenha pressionada a tecla Ctrl para considerar todas as camadas.",
+  "FLOOD_FILL_TOOL_ACTION_DISPLAY_CTRL": "Pressione em uma área para preenchê-la. Solte a tecla Ctrl para considerar apenas as camadas atuais.",
+  "LASSO_TOOL_TOOLTIP": "Laço. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Clique e mova para selecionar pixels dentro do laço. Mantenha pressionada a tecla Shift para adicionar à seleção existente. Mantenha pressionada a tecla Ctrl para subtraí-la.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Clique e mova para adicionar pixels dentro do laço à seleção.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Clique e mova para subtrair da seleção os pixels dentro do laço.",
+  "LINE_TOOL_TOOLTIP": "Desenha uma linha na tela ({0}). Mantenha pressionada a tecla Shift para ativar o encaixe.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Clique e mova para desenhar uma linha. Mantenha pressionada a tecla Shift para ativar o encaixe.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Clique e mova o mouse para desenhar uma linha com o encaixe ativado.",
+  "MAGIC_WAND_TOOL_TOOLTIP": "Varinha mágica ({0}). Ferramenta de seleção contígua",
+  "MAGIC_WAND_ACTION_DISPLAY": "Clique para preencher a seleção.",
+  "PEN_TOOL": "Caneta",
+  "BRIGHTNESS_TOOL": "Brilho",
+  "COLOR_PICKER_TOOL": "Seletor de cores",
+  "ELLIPSE_TOOL": "Elipse",
+  "ERASER_TOOL": "Borracha",
+  "FLOOD_FILL_TOOL": "Preenchimento",
+  "LASSO_TOOL": "Laço",
+  "LINE_TOOL": "Linha",
+  "MAGIC_WAND_TOOL": "Varinha mágica",
+  "MOVE_TOOL": "Mover",
+  "MOVE_VIEWPORT_TOOL": "Mover a tela",
+  "RECTANGLE_TOOL": "Retângulo",
+  "ROTATE_VIEWPORT_TOOL": "Girar a tela",
+  "SELECT_TOOL_NAME": "Selecionar",
+  "ZOOM_TOOL": "Zoom",
+  "SHAPE_LABEL": "Forma",
+  "MODE_LABEL": "Modo",
+  "SCOPE_LABEL": "Referência",
+  "FILL_SHAPE_LABEL": "Preencher forma",
+  "FILL_COLOR_LABEL": "Cor de preenchimento",
+  "TOOL_SIZE_LABEL": "Tamanho da ferramenta",
+  "STRENGTH_LABEL": "Força",
+  "NEW": "novo",
+  "ADD": "Adicionar",
+  "SUBTRACT": "Subtrair",
+  "INTERSECT": "Intersectar",
+  "RECTANGLE": "Retângulo",
+  "CIRCLE": "Círculo",
+  "ABOUT": "Sobre",
+  "MINIMIZE": "Minimizar",
+  "RESTORE": "Restaurar",
+  "MAXIMIZE": "Maximizar",
+  "CLOSE": "Fechar",
+  "EXPORT_SIZE_HINT": "Se quiser compartilhar a imagem, tente {0}% para obter a melhor nitidez",
+  "CREATE": "Criar",
+  "BASE_LAYER_NAME": "Camada base",
+  "ENABLE_MASK": "Habilitar máscara",
+  "SELECTED_AREA_EMPTY": "A área selecionada está vazia",
+  "NOTHING_TO_COPY": "Não há nada para copiar",
+  "REFERENCE_LAYER_PATH": "Caminho de camada de referência",
+  "FLIP": "Virar",
+  "ROTATION": "Girar",
+  "ROT_IMG_90_D": "Girar a imagem 90°",
+  "ROT_IMG_180_D": "Girar a imagem 180°",
+  "ROT_IMG_-90_D": "Girar a imagem -90°",
+  "ROT_LAYERS_90_D": "Girar a imagem selecionada a 90°",
+  "ROT_LAYERS_180_D": "Girar a imagem selecionada a 180°",
+  "ROT_LAYERS_-90_D": "Girar a imagem selecionada a -90°",
+  "UNNAMED_PALETTE": "Paleta sem nome",
+  "CLICK_SELECT_PRIMARY": "Clique para selecionar a cor principal.",
+  "PEN_MODE": "Modo caneta",
+  "VIEW": "Exibir",
+  "HORIZONTAL_LINE_SYMMETRY": "Simetria de linha horizontal",
+  "VERTICAL_LINE_SYMMETRY": "Simetria de linha vertical",
+  "COLOR_PICKER_TITLE": "Seletor de cor",
+  "COLOR_SLIDERS_TITLE": "Controle deslizante de cores",
+  "PALETTE_TITLE": "Paleta",
+  "SWATCHES_TITLE": "Amostras",
+  "LAYERS_TITLE": "Camadas",
+  "NAVIGATION_TITLE": "Navegador",
+  "NORMAL_BLEND_MODE": "Normal",
+  "DARKEN_BLEND_MODE": "Escurecer",
+  "MULTIPLY_BLEND_MODE": "Multiplicar",
+  "COLOR_BURN_BLEND_MODE": "Queimar",
+  "LIGHTEN_BLEND_MODE": "Clarear",
+  "SCREEN_BLEND_MODE": "Tela",
+  "COLOR_DODGE_BLEND_MODE": "Subexposição",
+  "OVERLAY_BLEND_MODE": "Sobreposição",
+  "SOFT_LIGHT_BLEND_MODE": "Luz suave",
+  "HARD_LIGHT_BLEND_MODE": "Luz forte",
+  "DIFFERENCE_BLEND_MODE": "Diferença",
+  "EXCLUSION_BLEND_MODE": "Exclusão",
+  "HUE_BLEND_MODE": "Matiz",
+  "SATURATION_BLEND_MODE": "Saturação",
+  "LUMINOSITY_BLEND_MODE": "Luminosidade",
+  "COLOR_BLEND_MODE": "Cor",
+  "NOT_SUPPORTED_BLEND_MODE": "Não suportado",
+  "RESTART": "Reiniciar",
+  "SORT_BY": "Ordenar por",
+  "NAME": "Nome",
+  "COLORS": "Cores",
+  "DEFAULT": "Padrão",
+  "ALPHABETICAL": "Alfabético",
+  "COLOR_COUNT": "Contagem de cores",
+  "ANY": "Qualquer",
+  "MAX": "Máx",
+  "MIN": "Min",
+  "EXACT": "Exato",
+  "ASCENDING": "Crescente",
+  "DESCENDING": "Decrescente",
+  "NAME_IS_TOO_LONG": "O nome é muito longo",
+  "STOP_IT_TEXT1": "É o bastante. Arrume seus nomes de arquivo.",
+  "STOP_IT_TEXT2": "Você pode parar de copiar esses nomes, por favor?",
+  "REPLACER_TOOLTIP": "Clique com o botão direito na cor da paleta e escolha 'Substituir' ou solte-a aqui.",
+  "CLICK_TO_CHOOSE_COLOR": "Clique para escolher a cor",
+  "REPLACE_COLOR": "Substituir cor",
+  "PALETTE_COLOR_TOOLTIP": "Clique para selecionar como cor principal. Arraste e solte em outra cor da paleta para trocá-los.",
+  "ADD_FROM_SWATCHES": "Adicionar de amostras",
+  "ADD_COLOR_TO_PALETTE": "Adicionar cor à paleta",
+  "USE_IN_CURRENT_IMAGE": "Usar na imagem atual",
+  "ADD_TO_FAVORITES": "Adicionar aos favoritos",
+  "BROWSE_PALETTES": "Procurar paletas",
+  "LOAD_PALETTE": "Carregar paleta",
+  "SAVE_PALETTE": "Salvar paleta",
+  "FAVORITES": "Favoritos",
+  "ADD_FROM_CURRENT_PALETTE": "Adicionar da paleta atual",
+  "OPEN_PALETTES_DIR_TOOLTIP": "Abrir o diretório de paletas no Explorer",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "Procure paletas na Lospec",
+  "IMPORT_FROM_FILE_TOOLTIP": "Importar de um arquivo",
+  "TOP_LEFT": "Superior esquerdo",
+  "TOP_CENTER": "Centro superior",
+  "TOP_RIGHT": "Superior direito",
+  "MIDDLE_LEFT": "Meio à esquerda",
+  "MIDDLE_CENTER": "Centro médio",
+  "MIDDLE_RIGHT": "Meio à direita",
+  "BOTTOM_LEFT": "Inferior esquerdo",
+  "BOTTOM_CENTER": "Centro inferior",
+  "BOTTOM_RIGHT": "Inferior direito",
+  "CLIP_TO_BELOW": "Clipar para a camada abaixo",
+  "MOVE_UPWARDS": "Mover para acima",
+  "MOVE_DOWNWARDS": "Mover para abaixo",
+  "MERGE_SELECTED": "Mesclar selecionados",
+  "LOCK_TRANSPARENCY": "Bloquear transparência",
+  "COULD_NOT_LOAD_PALETTE": "Não foi possível obter paletas",
+  "NO_PALETTES_FOUND": "Nenhuma paleta encontrada.",
+  "LOSPEC_LINK_TEXT": "Ouvi dizer que você pode encontrar algumas aqui: lospec.com/palette-list",
+  "PALETTE_BROWSER": "Navegador de paleta",
+  "DELETE_PALETTE_CONFIRMATION": "Tem certeza de que deseja excluir essa paleta? Isso não pode ser desfeito.",
+  "SHORTCUTS_IMPORTED": "Os atalhos de {0} foram importados com êxito.",
+  "SHORTCUT_PROVIDER_DETECTED": "Detectamos que você tem o {0} instalado. Deseja importar atalhos dele?",
+  "IMPORT_FROM_INSTALLATION": "Importar a partir da instalação",
+  "IMPORT_INSTALLATION_OPTION1": "Importar da instalação",
+  "IMPORT_INSTALLATION_OPTION2": "Usar padrões",
+  "IMPORT_FROM_TEMPLATE": "Importar do modelo",
+  "SHORTCUTS_IMPORTED_SUCCESS": "Os atalhos foram importados com sucesso.",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "Tem certeza de que deseja redefinir todos os atalhos para o valor padrão?",
+  "SUCCESS": "Sucesso",
+  "WARNING": "Atenção",
+  "ERROR_IMPORTING_IMAGE": "Ocorreu um erro ao importar a imagem.",
+  "SHORTCUTS_CORRUPTED_TITLE": "Arquivo de atalhos corrompido",
+  "SHORTCUTS_CORRUPTED": "O arquivo de atalhos foi corrompido, sendo redefinido para o padrão.",
+  "FAILED_DOWNLOAD_PALETTE": "Falha no download da paleta",
+  "FILE_INCORRECT_FORMAT": "O arquivo não estava no formato correto",
+  "INVALID_FILE": "Arquivo inválido",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "O arquivo de atalhos não estava em um formato correto",
+  "UNSUPPORTED_FILE_FORMAT": "Este formato de arquivo não é suportado",
+  "ALREADY_ASSIGNED": "Já atribuído",
+  "REPLACE": "Substituir",
+  "SWAP": "Trocar",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "Esse atalho já está atribuído a '{0}'\nVocê deseja substituir o atalho existente ou trocar os dois?",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "Esse atalho já está atribuído a '{0}'\nDeseja substituir o atalho existente?",
+  "UNSAVED_CHANGES": "Alterações não salvas",
+  "DOCUMENT_MODIFIED_SAVE": "O documento foi modificado. Deseja salvar as alterações?",
+  "SESSION_UNSAVED_DATA": "{0} com dados não salvos. Tem certeza?",
+  "PROJECT_MAINTAINERS": "Mantenedores do Projeto",
+  "OTHER_AWESOME_CONTRIBUTORS": "E outros colaboradores incríveis",
+  "HELP": "Ajuda",
+  "STOP_IT_TEXT3": "Não, sério, pare com isso.",
+  "STOP_IT_TEXT4": "Não tem nada melhor para fazer?",
+  "LINEAR_DODGE_BLEND_MODE": "Subexposição linear (Adicionar)",
+  "PRESS_ANY_KEY": "Pressione qualquer tecla",
+  "NONE_SHORTCUT": "Nenhum",
+  "REFERENCE": "Referência",
+  "PUT_REFERENCE_LAYER_ABOVE": "Coloque a camada de referência acima",
+  "PUT_REFERENCE_LAYER_BELOW": "Coloque a camada de referência abaixo",
+  "TOGGLE_VERTICAL_SYMMETRY": "Alternar simetria vertical",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "Alternar simetria horizontal",
+  "RESET_VIEWPORT": "Redefinir a janela de exibição",
+  "VIEWPORT_SETTINGS": "Configurações de janela de visualização",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Clique e mantenha o mouse pressionado para mover os pixels nas camadas selecionadas.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Mantenha o mouse pressionado para mover todas as camadas.",
+  "CTRL_KEY": "Ctrl",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "Renomear",
+  "PIXEL_UNIT": "px",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "Abrir janela de depuração de localização",
+  "FORCE_OTHER_FLOW_DIRECTION": "Forçar outra direção de fluxo",
+  "API_KEY": "Chave API",
+  "LOCALIZATION_VIEW_TYPE": "Tipo de visualização da localização",
+  "LOAD_LANGUAGE_FROM_FILE": "Carregar idioma de um arquivo",
+  "LOG_IN": "Fazer login",
+  "SYNC": "Sincronizar",
+  "NOT_LOGGED_IN": "Não conectado",
+  "POE_EDITOR_ERROR": "POEditor Error: {0} {1}",
+  "HTTP_ERROR_MESSAGE": "HTTP Error: {0} {1}",
+  "LOGGED_IN": "Conectado",
+  "SYNCED_SUCCESSFULLY": "Sincronização bem-sucedida",
+  "EXCEPTION_ERROR": "Exceção: {0}",
+  "DROP_PALETTE": "Solte a paleta aqui",
+  "SECURITY_ERROR": "Erro de segurança",
+  "SECURITY_ERROR_MSG": "Sem permissão para gravação no local especificado.",
+  "IO_ERROR": "Erro de IO",
+  "IO_ERROR_MSG": "Erro ao gravar no disco.",
+  "FAILED_ASSOCIATE_PIXI": "Falha ao associar o arquivo .pixi ao PixiEditor.",
+  "COULD_NOT_SAVE_PALETTE": "Ocorreu um erro ao salvar a paleta.",
+  "NO_COLORS_TO_SAVE": "Não há cores para salvar.",
+  "ALL_LAYERS": "Todas as camadas",
+  "SINGLE_LAYER": "Camada única",
+  "CHOOSE": "Selecionar",
+  "REMOVE": "Remover",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "O arquivo não é um arquivo \".aseprite-keys\"",
+  "FILE_HAS_INVALID_SHORTCUT": "O arquivo contém um atalho inválido",
+  "FILE_EXTENSION_NOT_SUPPORTED": "O tipo de arquivo '{0}' não é compatível",
+  "ERROR_READING_FILE": "Erro ao ler o arquivo",
+  "DISCARD_PALETTE": "Descartar paleta",
+  "DISCARD_PALETTE_CONFIRMATION": "Tem certeza de que deseja descartar a paleta atual? Isso não pode ser desfeito.",
+  "IMPORT_AS_NEW_LAYER": "Importar como uma nova camada",
+  "PASTE_AS_PRIMARY_COLOR": "Colar como cor primária",
+  "IMPORT_AS_NEW_FILE": "Importar como novo arquivo",
+  "IMPORT_PALETTE_FILE": "Importar arquivo da paleta",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "Importar cores para a paleta",
+  "IMPORT_SINGLE_PALETTE_COLOR": "Importar cor para a paleta",
+  "IMPORT_AS_REFERENCE_LAYER": "Importar como camada de referência",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "Clique com o botão direito do mouse para escolher a cor, Shift e clique com o botão direito do mouse para copiar a cor para a área de transferência",
+  "OPEN_FILE_FROM_CLIPBOARD": "Abrir da área de transferência",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Abrir a partir da área de transferência",
+  "OPEN_LOCALIZATION_DATA": "Deseja abrir o LocalizationData.json? A data atualizada foi colocada na área de transferência.\nObserve que as alterações não serão aplicadas até a reinicialização",
+  "DOWNLOADING_LANGUAGE_FAILED": "O download do idioma falhou.\nA chave da API pode ter sido usada em excesso.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Caminho de dados de localização não encontrado",
+  "APPLY": "Aplicar",
+  "UPDATE_SOURCE": "Atualizar fonte",
+  "COPY_TO_CLIPBOARD": "Copiar para a área de transferência",
+  "LANGUAGE_FILE_NOT_FOUND": "Arquivo de idioma não encontrado.\nProcurando por {0}",
+  "PROJECT_ROOT_NOT_FOUND": "Raiz do projeto PixiEditor não encontrada.\nProcurando por PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Pasta de localização não encontrada.\nProcurando por /Data/Localization",
+  "SELECT_A_LANGUAGE": "Selecione um idioma",
+  "DONE": "Concluído",
+  "SOURCE_UNSET_OR_MISSING": "Fonte ausente/não definida",
+  "SOURCE_NEWER": "Fonte mais recente",
+  "SOURCE_UP_TO_DATE": "A fonte está atualizada",
+  "SOURCE_OLDER": "Mais recente na nuvem",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
+  "SHORTCUTS_TITLE": "Shortcuts",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+}

+ 564 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/ru.json

@@ -0,0 +1,564 @@
+{
+  "RECENT_FILES": "Недавние файлы",
+  "OPEN_FILE": "Открыть файл",
+  "NEW_FILE": "Новый",
+  "RECENT_EMPTY_TEXT": "Чего-то тут пустовато",
+  "LANGUAGE": "Язык",
+  "GENERAL": "Общие",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "Сочетания клавиш",
+  "MISC": "Разное",
+  "SHOW_STARTUP_WINDOW": "Показывать окно приветствия",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "Отображать редактируемую картинку на иконке на панели задач",
+  "RECENT_FILE_LENGTH": "Длина списка недавних файлов",
+  "RECENT_FILE_LENGTH_TOOLTIP": "Сколько файлов показывать в списке Файл > Недавние. По умолчанию - 8.",
+  "DEFAULT_NEW_SIZE": "Размер нового файла по умолчанию",
+  "WIDTH": "Ширина",
+  "HEIGHT": "Высота",
+  "TOOLS": "Инструменты",
+  "ENABLE_SHARED_TOOLBAR": "Использовать одни и те же настройки для всех инструментов",
+  "AUTOMATIC_UPDATES": "Автообновление",
+  "CHECK_FOR_UPDATES": "Проверять наличие обновлений при запуске",
+  "UPDATE_STREAM": "Поток обновлений",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "Потоки обновлений можно выбирать только в версии PixiEditor, скачанной с сайта https://pixieditor.net.\nВерсии из Steam и Microsoft Store обновляются сами через соответствующие площадки.",
+  "DEBUG": "Отладка",
+  "ENABLE_DEBUG_MODE": "Включить режим отладки",
+  "OPEN_CRASH_REPORTS_DIR": "Открыть папку с отчетами об ошибках",
+  "DISCORD_RICH_PRESENCE": "Rich Presence",
+  "ENABLED": "Включить",
+  "SHOW_IMAGE_NAME": "Показывать имя файла",
+  "SHOW_IMAGE_SIZE": "Показывать размер холста",
+  "SHOW_LAYER_COUNT": "Показывать кол-во слоев",
+  "FILE": "Файл",
+  "RECENT": "Недавнее",
+  "OPEN": "Открыть",
+  "SAVE_PIXI": "Сохранить (.pixi)",
+  "SAVE_AS_PIXI": "Сохранить как... (.pixi)",
+  "EXPORT_IMG": "Экспорт (.png, .jpg, и т.п.)",
+  "EDIT": "Редактирование",
+  "EXIT": "Выход",
+  "PERCENTAGE": "Процент",
+  "ABSOLUTE": "Абсолютный размер",
+  "PRESERVE_ASPECT_RATIO": "Сохранять пропорции",
+  "ANCHOR_POINT": "Расположение",
+  "RESIZE_IMAGE": "Размер изображения...",
+  "RESIZE": "Изменить размер",
+  "DOCUMENTATION": "Документация",
+  "WEBSITE": "Сайт",
+  "OPEN_WEBSITE": "Открыть сайт",
+  "REPOSITORY": "Репозиторий",
+  "OPEN_REPOSITORY": "Открыть репозиторий",
+  "LICENSE": "Лицензия",
+  "OPEN_LICENSE": "Открыть лицензию",
+  "THIRD_PARTY_LICENSES": "Лицензии третьих сторон",
+  "OPEN_THIRD_PARTY_LICENSES": "Открыть лицензии третьих сторон",
+  "APPLY_TRANSFORM": "Применить трансформирование",
+  "INCREASE_TOOL_SIZE": "Увеличить размер кисти",
+  "DECREASE_TOOL_SIZE": "Уменьшить размер кисти",
+  "TO_INSTALL_UPDATE": "для установки обновления {0}",
+  "DOWNLOADING_UPDATE": "Скачивается обновление...",
+  "UPDATE_READY": "Обновление готово к установке. Установить его сейчас?",
+  "NEW_UPDATE": "Обновление",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Для обновления нужны права администратора. Пожалуйста, запустите PixiEditor от имени администратора.",
+  "INSUFFICIENT_PERMISSIONS": "Недостаточно прав",
+  "UPDATE_CHECK_FAILED": "Проверка обновлений не удалась",
+  "COULD_NOT_CHECK_FOR_UPDATES": "Не удалось проверить наличие обновлений",
+  "VERSION": "Версия {0}",
+  "OPEN_TEMP_DIR": "Открыть папку Temp",
+  "OPEN_LOCAL_APPDATA_DIR": "Открыть папку Local AppData",
+  "OPEN_ROAMING_APPDATA_DIR": "Открыть папку Roaming AppData",
+  "OPEN_INSTALLATION_DIR": "Открыть папку установки",
+  "DUMP_ALL_COMMANDS": "Выгрузить команды",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Выгрузить все команды в файл",
+  "CRASH": "Крашнуть",
+  "CRASH_APP": "Крашнуть",
+  "DELETE_USR_PREFS": "Удалить файл с настройками пользователя (Roaming AppData)",
+  "DELETE_SHORTCUT_FILE": "Удалить файл с сочетаниями клавиш (Roaming AppData)",
+  "DELETE_EDITOR_DATA": "Удалить данные редактора (Local AppData)",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "Сгенерировать шаблон файла с сочетаниями клавиш",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Сгенерировать шаблон json-файла с сочетаниями клавиш",
+  "VALIDATE_SHORTCUT_MAP": "Проверить файл с сочетаниями клавиш",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Проверить файл с сочетаниями клавиш",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "Пустые ключи: {0}\nНеизвестные команды: {1}",
+  "RESULT": "Итог",
+  "CLEAR_RECENT_DOCUMENTS": "Очистить недавнее",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Очистить список недавно открытых файлов",
+  "OPEN_CMD_DEBUG_WINDOW": "Открыть окно для отладки команд",
+  "PATH_DOES_NOT_EXIST": "Папки или файла {0} не существует.",
+  "LOCATION_DOES_NOT_EXIST": "Неверный путь.",
+  "FILE_NOT_FOUND": "Файл не найден.",
+  "ARE_YOU_SURE": "Точно?",
+  "ARE_YOU_SURE_PATH_FULL_PATH": "Вы точно хотите удалить {0}? Данные будут стерты из всех установленных версий PixiEditor.\n(Полный путь: {1})",
+  "FAILED_TO_OPEN_FILE": "Не удалось открыть файл",
+  "OLD_FILE_FORMAT": "Файл устаревшего формата",
+  "OLD_FILE_FORMAT_DESCRIPTION": "Этот файл .pixi был создан в старой версии PixiEditor и имеет формат, который больше не поддерживается.",
+  "NOTHING_FOUND": "Ничего не найдено",
+  "EXPORT": "Экспорт",
+  "EXPORT_IMAGE": "Экспорт изображения",
+  "IMPORT": "Импорт",
+  "SHORTCUT_TEMPLATES": "Шаблоны сочетаний клавиш",
+  "RESET_ALL": "Сбросить",
+  "LAYER": "Слои",
+  "LAYER_DELETE_SELECTED": "Удалить активный слой/папку",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Удалить активный слой или папку",
+  "LAYER_DELETE_ALL_SELECTED": "Удалить все выбранные слои/папки",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Удалить все выбранные слои и/или папки",
+  "DELETE_SELECTED_PIXELS": "Очистить выделенную область",
+  "NEW_FOLDER": "Новая папка",
+  "CREATE_NEW_FOLDER": "Создать новую папку",
+  "NEW_LAYER": "Новый слой",
+  "CREATE_NEW_LAYER": "Создать новый слой",
+  "NEW_IMAGE": "Новый файл",
+  "CREATE_NEW_IMAGE": "Создать новый файл",
+  "SAVE": "Сохранить",
+  "SAVE_AS": "Сохранить как...",
+  "IMAGE": "Изображение",
+  "SAVE_IMAGE": "Сохранить файл",
+  "SAVE_IMAGE_AS": "Сохранить в новый файл",
+  "DUPLICATE": "Создать дубликат слоя",
+  "DUPLICATE_SELECTED_LAYER": "Дублировать выбранный слой",
+  "CREATE_MASK": "Создать маску",
+  "DELETE_MASK": "Удалить маску",
+  "TOGGLE_MASK": "Вкл/выкл маску",
+  "APPLY_MASK": "Применить маску",
+  "TOGGLE_VISIBILITY": "Вкл/выкл видимость слоя",
+  "MOVE_MEMBER_UP": "Переместить выше",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "Переместить выбранные слои или папки выше",
+  "MOVE_MEMBER_DOWN": "Переместить ниже",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Переместить выбранные слои или папки ниже",
+  "MERGE_ALL_SELECTED_LAYERS": "Объединить выбранные слои",
+  "MERGE_WITH_ABOVE": "Объединить со слоем выше",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "Объединить выбранный слой со слоем выше от него",
+  "MERGE_WITH_BELOW": "Объединить со слоем ниже",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "Объединить выбранный слой со слоем ниже от него",
+  "ADD_REFERENCE_LAYER": "Добавить референс",
+  "DELETE_REFERENCE_LAYER": "Удалить референс",
+  "TRANSFORM_REFERENCE_LAYER": "Трансформировать референс",
+  "TOGGLE_REFERENCE_LAYER_POS": "Изменить позицию референса",
+  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Переключение между двумя положениями референса: поверх рисунка и ниже рисунка",
+  "RESET_REFERENCE_LAYER_POS": "Сбросить положение референса",
+  "CLIP_CANVAS": "Обрезать прозрачные края",
+  "FLIP_IMG_VERTICALLY": "Отразить по вертикали",
+  "FLIP_IMG_HORIZONTALLY": "Отразить по горизонтали",
+  "FLIP_LAYERS_VERTICALLY": "Отразить выбранные слои по вертикали",
+  "FLIP_LAYERS_HORIZONTALLY": "Отразить выбранные слои по горизонтали",
+  "ROT_IMG_90": "Повернуть холст на 90 градусов",
+  "ROT_IMG_180": "Повернуть холст на 180 градусов",
+  "ROT_IMG_-90": "Повернуть холст на -90 градусов",
+  "ROT_LAYERS_90": "Повернуть выбранные слои на 90 градусов",
+  "ROT_LAYERS_180": "Повернуть выбранные слои на 180 градусов",
+  "ROT_LAYERS_-90": "Повернуть выбранные слои на -90 градусов",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "Вкл/выкл вертикальную ось симметрии",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "Вкл/выкл горизонтальную ось симметрии",
+  "DELETE_PIXELS": "Очистить",
+  "DELETE_PIXELS_DESCRIPTIVE": "Очистить выделенную область",
+  "RESIZE_DOCUMENT": "Изменить размер изображения",
+  "RESIZE_CANVAS": "Изменить размер холста",
+  "CENTER_CONTENT": "Выровнять содержимое по центру",
+  "CUT": "Вырезать",
+  "CUT_DESCRIPTIVE": "Вырезать выбранную область или слои",
+  "PASTE": "Вставить",
+  "PASTE_DESCRIPTIVE": "Вставить из буфера обмена",
+  "PASTE_AS_NEW_LAYER": "Вставить в новый слой",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Вставить изображение из буфера обмена в новый слой",
+  "PASTE_REFERENCE_LAYER": "Вставить референс",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Вставить изображение-референс из буфера обмена",
+  "PASTE_COLOR": "Вставить цвет",
+  "PASTE_COLOR_DESCRIPTIVE": "Вставить HEX-код цвета из буфера обмена",
+  "PASTE_COLOR_SECONDARY": "Вставить цвет как дополнительный",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Вставить HEX-код цвета из буфера обмена как дополнительный цвет",
+  "CLIPBOARD": "Буфер обмена",
+  "COPY": "Копировать",
+  "COPY_DESCRIPTIVE": "Копировать в буфер обмена",
+  "COPY_COLOR_HEX": "Копировать основной цвет (HEX-код)",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "Копировать HEX-код основного цвета",
+  "COPY_COLOR_RGB": "Копировать основной цвет (RBG)",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "Копировать RGB-код основного цвета",
+  "COPY_COLOR_SECONDARY_HEX": "Копировать дополнительный цвет (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": "Открыть библиотеку палитр",
+  "OVERWRITE_PALETTE_CONSENT": "Палитра с именем '{0}' уже существует, перезаписать?",
+  "PALETTE_EXISTS": "Такая палитра уже есть",
+  "REPLACE_PALETTE_CONSENT": "Заменить текущую палитру выбранной?",
+  "REPLACE_PALETTE": "Заменить палитру",
+  "SELECT_COLOR_1": "Выбрать цвет 1",
+  "SELECT_COLOR_2": "Выбрать цвет 2",
+  "SELECT_COLOR_3": "Выбрать цвет 3",
+  "SELECT_COLOR_4": "Выбрать цвет 4",
+  "SELECT_COLOR_5": "Выбрать цвет 5",
+  "SELECT_COLOR_6": "Выбрать цвет 6",
+  "SELECT_COLOR_7": "Выбрать цвет 7",
+  "SELECT_COLOR_8": "Выбрать цвет 8",
+  "SELECT_COLOR_9": "Выбрать цвет 9",
+  "SELECT_COLOR_10": "Выбрать цвет 10",
+  "SELECT_TOOL": "Выбрать инструмент \"{0}\"",
+  "SELECT_COLOR_1_DESCRIPTIVE": "Взять первый цвет из палитры",
+  "SELECT_COLOR_2_DESCRIPTIVE": "Взять второй цвет из палитры",
+  "SELECT_COLOR_3_DESCRIPTIVE": "Взять третий цвет из палитры",
+  "SELECT_COLOR_4_DESCRIPTIVE": "Взять четвертый цвет из палитры",
+  "SELECT_COLOR_5_DESCRIPTIVE": "Взять пятый цвет из палитры",
+  "SELECT_COLOR_6_DESCRIPTIVE": "Взять шестой цвет из палитры",
+  "SELECT_COLOR_7_DESCRIPTIVE": "Взять седьмой цвет из палитры",
+  "SELECT_COLOR_8_DESCRIPTIVE": "Взять восьмой цвет из палитры",
+  "SELECT_COLOR_9_DESCRIPTIVE": "Взять девятый цвет из палитры",
+  "SELECT_COLOR_10_DESCRIPTIVE": "Взять десятый цвет из палитры",
+  "SWAP_COLORS": "Поменять цвета местами",
+  "SWAP_COLORS_DESCRIPTIVE": "Меняет местами основной и дополнительный цвета",
+  "SEARCH": "Поиск",
+  "COMMAND_SEARCH": "Поиск действий",
+  "OPEN_COMMAND_SEARCH": "Открыть окно поиска действий",
+  "SELECT": "Выделение",
+  "DESELECT": "Снять выделение",
+  "INVERT": "Инвертировать выделение",
+  "SELECTION": "Выделение",
+  "SELECT_ALL": "Выделить всё",
+  "SELECT_ALL_DESCRIPTIVE": "Выделить весь холст",
+  "CLEAR_SELECTION": "Снять выделение",
+  "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_DESCRIPTIVE": "Создать маску из выделения",
+  "ADD_SELECTION_TO_MASK": "Добавить выделение к маске",
+  "SUBTRACT_SELECTION_FROM_MASK": "Вычесть выделение из маски",
+  "INTERSECT_SELECTION_MASK": "Пересечь выделение с маской",
+  "SELECTION_TO_MASK": "Выделение в маску...",
+  "TO_NEW_MASK": "создать маску",
+  "ADD_TO_MASK": "добавить к маске",
+  "SUBTRACT_FROM_MASK": "вычесть из маски",
+  "INTERSECT_WITH_MASK": "пересечь с маской",
+  "STYLUS": "Перо",
+  "TOGGLE_PEN_MODE": "Включить/выключить режим пера",
+  "UNDO": "Отменить",
+  "UNDO_DESCRIPTIVE": "Отменить последнее действие",
+  "REDO": "Вернуть",
+  "REDO_DESCRIPTIVE": "Вернуть последнее действие",
+  "WINDOWS": "Окна",
+  "TOGGLE_GRIDLINES": "Отобразить/скрыть сетку",
+  "ZOOM_IN": "Приблизить",
+  "ZOOM_OUT": "Отдалить",
+  "NEW_WINDOW_FOR_IMG": "Новое окно для данного изображения",
+  "CENTER_ACTIVE_VIEWPORT": "Центрировать область просмотра",
+  "FLIP_VIEWPORT_HORIZONTALLY": "Отразить область просмотра по горизонтали",
+  "FLIP_VIEWPORT_VERTICALLY": "Отразить область просмотра по вертикали",
+  "SETTINGS": "Настройки",
+  "OPEN_SETTINGS": "Открыть настройки",
+  "OPEN_SETTINGS_DESCRIPTIVE": "Открыть окно настроек",
+  "OPEN_STARTUP_WINDOW": "Открыть окно запуска",
+  "OPEN_SHORTCUT_WINDOW": "Открыть окно сочетаний клавиш",
+  "OPEN_ABOUT_WINDOW": "Открыть окно \"о программе\"",
+  "OPEN_NAVIGATION_WINDOW": "Открыть окно навигации",
+  "ERROR": "Ошибка",
+  "INTERNAL_ERROR": "Внутренняя ошибка",
+  "ERROR_SAVE_LOCATION": "Невозможно сохранить файл в выбранную папку",
+  "ERROR_WHILE_SAVING": "Произошла внутренняя ошибка при сохранении. Пожалуйста, попробуйте заново.",
+  "UNKNOWN_ERROR_SAVING": "Произошла ошибка при сохранении.",
+  "FAILED_ASSOCIATE_LOSPEC": "Не удалось связать протокол Lospec Palette.",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "Задонатить",
+  "YES": "Да",
+  "NO": "Нет",
+  "CANCEL": "Отмена",
+  "UNNAMED": "Безымянный",
+  "OPEN_COMMAND_DEBUG_WINDOW": "Открыть окно отладки команд",
+  "DELETE": "Удалить",
+  "USER_PREFS": "Предпочтения пользователя (Локальные)",
+  "SHORTCUT_FILE": "Сочетания клавиш (Локальные)",
+  "EDITOR_DATA": "Данные редактора (Локальные)",
+  "MOVE_VIEWPORT_TOOLTIP": "Передвигает область просмотра.",
+  "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_ACTION_DISPLAY_DEFAULT": "Нажмите и двигайте чтобы нарисовать прямоугольник. Удерживайте Shift чтобы нарисовать квадрат.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Нажмите и двигайте чтобы нарисовать квадрат.",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "Оставлять изначальное изображение",
+  "ROTATE_VIEWPORT_TOOLTIP": "Вращает область просмотра. ({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "Нажмите и двигайте чтобы повернуть область просмотра",
+  "SELECT_TOOL_TOOLTIP": "Выделяет область. ({0})",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Нажмите и двигайте чтобы выделить область. Удерживайте Shift чтобы добавить к выделенной области. Удерживайте Ctrl чтобы вычесть из выделенной области.",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Нажмите и двигайте чтобы добавить к выделенной области.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Нажмите и двигайте чтобы вычесть из выделенной области.",
+  "ZOOM_TOOL_TOOLTIP": "Изменяет масштаб области просмотра ({0}). Нажмите чтобы приблизить, удерживайте alt и нажмите чтобы отдалить.",
+  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Нажмите и двигайте чтобы изменить масштаб. Нажмите чтобы приблизить, удерживайте alt и нажмите чтобы отдалить.",
+  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Нажмите и двигайте изменить масштаб. Нажмите чтобы отдалить, отпустите ctrl и нажмите чтобы приблизить.",
+  "BRIGHTNESS_TOOL_TOOLTIP": "Делает пиксели более светлыми или тёмными ({0}). Удерживайте Ctrl для затемнения.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Рисуйте на пикселях чтобы сделать их ярче. Удерживайте Ctrl чтобы сделать их темнее.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Рисуйте на пикселях чтобы сделать их темнее. Отпустите Ctrl чтобы сделать их светлее.",
+  "COLOR_PICKER_TOOLTIP": "Берёт главный цвет с холста. ({0})",
+  "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 чтобы выбрать один слой.",
+  "LASSO_TOOL_TOOLTIP": "Лассо. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Нажмите и двигайте чтобы выделить пиксели внутри лассо. Удерживайте Shift чтобы добавить их в выделенной области. Удерживайте Ctrl чтобы убрать из выделенной области.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Нажмите и двигайте чтобы добавить пиксели внутри лассо к выделенной области.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Нажмите и двигайте чтобы убрать пиксели внутри лассо из выделенной области.",
+  "LINE_TOOL_TOOLTIP": "Рисует линии на холсте ({0}). Удерживайте Shift чтобы включить привязку.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Нажмите и двигайте чтобы нарисовать линию. Удерживайте Shift чтобы включить привязку.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Нажмите и двигайте мышь чтобы нарисовать линию с привязкой.",
+  "MAGIC_WAND_TOOL_TOOLTIP": "Волшебная палочка ({0}). Выделяет область.",
+  "MAGIC_WAND_ACTION_DISPLAY": "Нажмите чтобы выделить область.",
+  "PEN_TOOL": "Карандаш",
+  "BRIGHTNESS_TOOL": "Яркость",
+  "COLOR_PICKER_TOOL": "Пипетка",
+  "ELLIPSE_TOOL": "Эллипс",
+  "ERASER_TOOL": "Ластик",
+  "FLOOD_FILL_TOOL": "Заливка",
+  "LASSO_TOOL": "Лассо",
+  "LINE_TOOL": "Линия",
+  "MAGIC_WAND_TOOL": "Волшебная Палочка",
+  "MOVE_TOOL": "Передвинуть",
+  "MOVE_VIEWPORT_TOOL": "Передвинуть область просмотра",
+  "RECTANGLE_TOOL": "Прямоугольник",
+  "ROTATE_VIEWPORT_TOOL": "Повернуть область просмотра",
+  "SELECT_TOOL_NAME": "Выбрать",
+  "ZOOM_TOOL": "Масштаб",
+  "SHAPE_LABEL": "Форма",
+  "MODE_LABEL": "Режим",
+  "SCOPE_LABEL": "Выделение",
+  "FILL_SHAPE_LABEL": "Заливка",
+  "FILL_COLOR_LABEL": "Цвет заливки",
+  "TOOL_SIZE_LABEL": "Размер",
+  "STRENGTH_LABEL": "Сила",
+  "NEW": "Новое",
+  "ADD": "Добавить",
+  "SUBTRACT": "Убрать",
+  "INTERSECT": "Пересечение",
+  "RECTANGLE": "Прямоугольник",
+  "CIRCLE": "Круг",
+  "ABOUT": "О программе",
+  "MINIMIZE": "Свернуть",
+  "RESTORE": "Свернуть в окно",
+  "MAXIMIZE": "Развернуть",
+  "CLOSE": "Закрыть",
+  "EXPORT_SIZE_HINT": "Если хотите поделиться изображением, попробуйте {0}% для лучшего качества",
+  "CREATE": "Создать",
+  "BASE_LAYER_NAME": "Основной слой",
+  "ENABLE_MASK": "Включить маску",
+  "SELECTED_AREA_EMPTY": "Выбранная область пуста",
+  "NOTHING_TO_COPY": "Нечего копировать",
+  "REFERENCE_LAYER_PATH": "Путь к референс слою",
+  "FLIP": "Отразить",
+  "ROTATION": "Поворот",
+  "ROT_IMG_90_D": "Повернуть изображение на 90°",
+  "ROT_IMG_180_D": "Повернуть изображение на 180°",
+  "ROT_IMG_-90_D": "Повернуть изображение на -90°",
+  "ROT_LAYERS_90_D": "Повернуть выделенные слои на 90°",
+  "ROT_LAYERS_180_D": "Повернуть выделенные слои на 180°",
+  "ROT_LAYERS_-90_D": "Повернуть выделенные слои на -90°",
+  "UNNAMED_PALETTE": "Безымянная палитра",
+  "CLICK_SELECT_PRIMARY": "Нажмите чтобы выбрать как главный цвет.",
+  "PEN_MODE": "Режим пера",
+  "VIEW": "Просмотр",
+  "HORIZONTAL_LINE_SYMMETRY": "Горизонтальная ось симметрии",
+  "VERTICAL_LINE_SYMMETRY": "Вертикальная ось симметрии",
+  "COLOR_PICKER_TITLE": "Выбор цвета",
+  "COLOR_SLIDERS_TITLE": "Ползунки цвета",
+  "PALETTE_TITLE": "Палитра",
+  "SWATCHES_TITLE": "Образцы",
+  "LAYERS_TITLE": "Слои",
+  "NAVIGATION_TITLE": "Навигация",
+  "NORMAL_BLEND_MODE": "Нормальный",
+  "DARKEN_BLEND_MODE": "Затемнение",
+  "MULTIPLY_BLEND_MODE": "Умножение",
+  "COLOR_BURN_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": "Разница",
+  "EXCLUSION_BLEND_MODE": "Исключение",
+  "HUE_BLEND_MODE": "Цветовой тон",
+  "SATURATION_BLEND_MODE": "Насыщенность",
+  "LUMINOSITY_BLEND_MODE": "Яркость",
+  "COLOR_BLEND_MODE": "Цветность",
+  "NOT_SUPPORTED_BLEND_MODE": "Не поддерживается",
+  "RESTART": "Перезапустите",
+  "SORT_BY": "Сортировать по",
+  "NAME": "Название",
+  "COLORS": "Цвета",
+  "DEFAULT": "Умолчанию",
+  "ALPHABETICAL": "Алфавиту",
+  "COLOR_COUNT": "Количеству цветов",
+  "ANY": "Не важно",
+  "MAX": "Больше",
+  "MIN": "Меньше",
+  "EXACT": "Ровно",
+  "ASCENDING": "Возрастание",
+  "DESCENDING": "Убывание",
+  "NAME_IS_TOO_LONG": "Имя слишком длинное",
+  "STOP_IT_TEXT1": "Достаточно. Разберись со своими названиями палитр.",
+  "STOP_IT_TEXT2": "чел.",
+  "REPLACER_TOOLTIP": "Нажмите ПКМ на цвете в палитре и выберите 'Заметить' или перетащите его сюда.",
+  "CLICK_TO_CHOOSE_COLOR": "Нажмите чтобы выбрать цвет",
+  "REPLACE_COLOR": "Заменить цвет",
+  "PALETTE_COLOR_TOOLTIP": "Нажмите чтобы выбрать как главный цвет. перетащите на другой цвет палитры чтобы поменять их местами.",
+  "ADD_FROM_SWATCHES": "Добавить из образцов",
+  "ADD_COLOR_TO_PALETTE": "Добавить цвет к палитре",
+  "USE_IN_CURRENT_IMAGE": "Использовать в данном изображении",
+  "ADD_TO_FAVORITES": "Добавить в избранное",
+  "BROWSE_PALETTES": "Смотреть палитры",
+  "LOAD_PALETTE": "Загрузить палитру",
+  "SAVE_PALETTE": "Сохранить палитру",
+  "FAVORITES": "Избранное",
+  "ADD_FROM_CURRENT_PALETTE": "Добавить из текущей палитры",
+  "OPEN_PALETTES_DIR_TOOLTIP": "Открыть папку палитр",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "Открыть палитры на Lospec",
+  "IMPORT_FROM_FILE_TOOLTIP": "Импортировать из файла",
+  "TOP_LEFT": "Вверху слева",
+  "TOP_CENTER": "Вверху по центру",
+  "TOP_RIGHT": "Вверху справа",
+  "MIDDLE_LEFT": "Середина слева",
+  "MIDDLE_CENTER": "Середина по центру",
+  "MIDDLE_RIGHT": "Середина справа",
+  "BOTTOM_LEFT": "Снизу слева",
+  "BOTTOM_CENTER": "Снизу по центру",
+  "BOTTOM_RIGHT": "Снизу справа",
+  "CLIP_TO_BELOW": "Обтравочная маска",
+  "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": "Импортировать из шаблона",
+  "SHORTCUTS_IMPORTED_SUCCESS": "Сочетания клавиш были успешно импортированы.",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "Вы уверены что хотите сбросить все сочетания клавиш?",
+  "SUCCESS": "Успех",
+  "WARNING": "Внимание",
+  "ERROR_IMPORTING_IMAGE": "Произошла ошибка при импорте изображения.",
+  "SHORTCUTS_CORRUPTED_TITLE": "Повреждённый путь к сочетаниям клавиш",
+  "SHORTCUTS_CORRUPTED": "Не удалось загрузить сочетания клавиш из файла. Был произведен сброс к стандартным.",
+  "FAILED_DOWNLOAD_PALETTE": "Ошибка при скачивании палитры",
+  "FILE_INCORRECT_FORMAT": "Файл был в некорректном формате",
+  "INVALID_FILE": "Некорректный файл",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "Неправильный формат файла сочетаний клавиш",
+  "UNSUPPORTED_FILE_FORMAT": "Этот тип файла не поддерживается",
+  "ALREADY_ASSIGNED": "Уже присвоен",
+  "REPLACE": "Заменить",
+  "SWAP": "Поменять местами",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "Это сочетание клавиш уже присвоен к '{0}'\nХотите заменить существующее сочетание или поменять их местами?",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "Это сочетание клавиш уже присвоен к '{0}'\nХотите заменить существующее сочетание?",
+  "UNSAVED_CHANGES": "Несохранённые изменения",
+  "DOCUMENT_MODIFIED_SAVE": "Этот файл был изменён. Вы хотите сохранить изменения?",
+  "SESSION_UNSAVED_DATA": "В {0} есть несохранённые данные. Вы уверены?",
+  "PROJECT_MAINTAINERS": "Авторы проекта",
+  "OTHER_AWESOME_CONTRIBUTORS": "И другие участники проекта",
+  "HELP": "Помощь",
+  "STOP_IT_TEXT3": "НЕНАДО ДЯДЯ",
+  "STOP_IT_TEXT4": "sans undertale reference omg so cool",
+  "LINEAR_DODGE_BLEND_MODE": "Линейный осветлитель (добавить)",
+  "PRESS_ANY_KEY": "Нажмите любую клавишу",
+  "NONE_SHORTCUT": "Ничего",
+  "REFERENCE": "Референс",
+  "PUT_REFERENCE_LAYER_ABOVE": "Показать слой референса",
+  "PUT_REFERENCE_LAYER_BELOW": "Спрятать слой референса",
+  "TOGGLE_VERTICAL_SYMMETRY": "Переключить вертикальную ось симметрии",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "Переключить горизонтальную ось симметрии",
+  "RESET_VIEWPORT": "Сбросить область просмотра",
+  "VIEWPORT_SETTINGS": "Настройки области просмотра",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Нажмите и двигайте мышь чтобы двигать пиксели в выбранных слоях.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Удерживайте мышь чтобы подвинуть все слои.",
+  "CTRL_KEY": "Ctrl",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "Переименовать",
+  "PIXEL_UNIT": "пикс",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "Открыть окно отладки локализации",
+  "FORCE_OTHER_FLOW_DIRECTION": "Инвертировать направление письма",
+  "API_KEY": "Ключ API",
+  "LOCALIZATION_VIEW_TYPE": "Отображение локализации",
+  "LOAD_LANGUAGE_FROM_FILE": "Загрузить язык из файла",
+  "LOG_IN": "Войти",
+  "SYNC": "Синхронизировать",
+  "NOT_LOGGED_IN": "Не авторизован",
+  "POE_EDITOR_ERROR": "Ошибка POEditor: {0} {1}",
+  "HTTP_ERROR_MESSAGE": "Ошибка HTTP: {0} {1}",
+  "LOGGED_IN": "Авторизован",
+  "SYNCED_SUCCESSFULLY": "Успешная синхронизация",
+  "EXCEPTION_ERROR": "Исключение: {0}",
+  "DROP_PALETTE": "Перетащите палитру сюда",
+  "SECURITY_ERROR": "Ошибка безопасности",
+  "SECURITY_ERROR_MSG": "Отсутствуют права для записи в данной локации.",
+  "IO_ERROR": "Ошибка IO",
+  "IO_ERROR_MSG": "Ошибка записи на диск.",
+  "FAILED_ASSOCIATE_PIXI": "Не удалось связать расширение файлов .pixi с PixiEditor.",
+  "COULD_NOT_SAVE_PALETTE": "Произошла ошибка при сохранении палитры.",
+  "NO_COLORS_TO_SAVE": "Нет цветов для сохранения.",
+  "ALL_LAYERS": "Все слои",
+  "SINGLE_LAYER": "Один слой",
+  "CHOOSE": "Выбрать",
+  "REMOVE": "Убрать",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "Файл не в формате \".aseprite-keys\"",
+  "FILE_HAS_INVALID_SHORTCUT": "Файл содержит недействительные сочетания клавиш",
+  "FILE_EXTENSION_NOT_SUPPORTED": "Файлы типа '{0}' не поддерживаются",
+  "ERROR_READING_FILE": "Ошибка при чтении файла",
+  "DISCARD_PALETTE": "Очистить палитру",
+  "DISCARD_PALETTE_CONFIRMATION": "Вы уверены что вы хотите очистить палитру? Это действие необратимо.",
+  "IMPORT_AS_NEW_LAYER": "Импортировать как новый слой",
+  "PASTE_AS_PRIMARY_COLOR": "Вставить как главный цвет",
+  "IMPORT_AS_NEW_FILE": "Импортировать как новый файл",
+  "IMPORT_PALETTE_FILE": "Импортировать файл палитры",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "Импортировать цвета в палитру",
+  "IMPORT_SINGLE_PALETTE_COLOR": "Импортировать цвет в палитру",
+  "IMPORT_AS_REFERENCE_LAYER": "Импортировать как слой референса",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "ПКМ чтобы взять цвет, Shift + ПКМ чтобы скопировать цвет в буфер обмена",
+  "OPEN_FILE_FROM_CLIPBOARD": "Открыть из буфера обмена",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Открыть из буфера обмена",
+  "OPEN_LOCALIZATION_DATA": "Do you want to open the LocalizationData.json?\nThe updated date has been put in the clipboard.\nNote that changes wont be applied until a restart",
+  "DOWNLOADING_LANGUAGE_FAILED": "Downloading language failed.\nAPI Key might have been overused.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Localization data path not found",
+  "APPLY": "Apply",
+  "UPDATE_SOURCE": "Update source",
+  "COPY_TO_CLIPBOARD": "Copy to clipboard",
+  "LANGUAGE_FILE_NOT_FOUND": "Language file not found.\nLooking for {0}",
+  "PROJECT_ROOT_NOT_FOUND": "PixiEditor Project root not found.\nLooking for PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Localization folder not found.\nLooking for /Data/Localization",
+  "SELECT_A_LANGUAGE": "Select a language",
+  "DONE": "Done",
+  "SOURCE_UNSET_OR_MISSING": "Source missing/unset",
+  "SOURCE_NEWER": "Source newer",
+  "SOURCE_UP_TO_DATE": "Source is up to date",
+  "SOURCE_OLDER": "Cloud newer",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
+  "SHORTCUTS_TITLE": "Shortcuts",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+}

+ 564 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/uk.json

@@ -0,0 +1,564 @@
+{
+  "RECENT_FILES": "Недавні файли",
+  "OPEN_FILE": "Відкрити файл",
+  "NEW_FILE": "Новий",
+  "RECENT_EMPTY_TEXT": "Так багато порожнього місця",
+  "LANGUAGE": "Мова",
+  "GENERAL": "Головна",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "Прив'язки клавіш",
+  "MISC": "Різне",
+  "SHOW_STARTUP_WINDOW": "Показати вікно запуску",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "Показати попередній перегляд зображення на панелі завдань",
+  "RECENT_FILE_LENGTH": "Довжина списку останніх файлів",
+  "RECENT_FILE_LENGTH_TOOLTIP": "Скільки документів показано в розділі «Файл» > «Останні». Типове значення: 8",
+  "DEFAULT_NEW_SIZE": "Новий розмір файлу за замовчуванням",
+  "WIDTH": "Ширина",
+  "HEIGHT": "Висота",
+  "TOOLS": "Інструменти",
+  "ENABLE_SHARED_TOOLBAR": "Увімкнути спільну панель інструментів",
+  "AUTOMATIC_UPDATES": "Автооновлення",
+  "CHECK_FOR_UPDATES": "Перевіряти оновлення під час запуску",
+  "UPDATE_STREAM": "Канал оновлення",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "Канали оновлення можна змінити лише в автономній версії (що завантажена з https://pixieditor.net).\nВерсії для Steam і Microsoft Store оновлюються іншим чином.",
+  "DEBUG": "Налагодження",
+  "ENABLE_DEBUG_MODE": "Увімкнути режим налагодження",
+  "OPEN_CRASH_REPORTS_DIR": "Відкрити каталог звітів про збої",
+  "DISCORD_RICH_PRESENCE": "Rich Presence",
+  "ENABLED": "Увімкнено",
+  "SHOW_IMAGE_NAME": "Показати назву зображення",
+  "SHOW_IMAGE_SIZE": "Показати розмір зображення",
+  "SHOW_LAYER_COUNT": "Показати кількість шарів",
+  "FILE": "Файл",
+  "RECENT": "Останні",
+  "OPEN": "Відкрити",
+  "SAVE_PIXI": "Зберегти (.pixi)",
+  "SAVE_AS_PIXI": "Зберегти як... (.pixi)",
+  "EXPORT_IMG": "Експортувати (.png, .jpg, etc.)",
+  "EDIT": "Редагувати",
+  "EXIT": "Вийти",
+  "PERCENTAGE": "У відсотках",
+  "ABSOLUTE": "Абсолютне значення",
+  "PRESERVE_ASPECT_RATIO": "Зберегти співвідношення сторін",
+  "ANCHOR_POINT": "Точка прив’язки",
+  "RESIZE_IMAGE": "Змінити розмір зображення",
+  "RESIZE": "Змінити розмір",
+  "DOCUMENTATION": "Документація",
+  "WEBSITE": "Веб-сайт",
+  "OPEN_WEBSITE": "Відкрити веб-сайт",
+  "REPOSITORY": "Репозиторій",
+  "OPEN_REPOSITORY": "Відкрити репозиторій",
+  "LICENSE": "Ліцензія",
+  "OPEN_LICENSE": "Відкрити ліцензію",
+  "THIRD_PARTY_LICENSES": "Ліцензії третіх осіб",
+  "OPEN_THIRD_PARTY_LICENSES": "Відкрити ліцензії третіх осіб",
+  "APPLY_TRANSFORM": "Застосувати трансформацію",
+  "INCREASE_TOOL_SIZE": "Збільшити розмір інструменту",
+  "DECREASE_TOOL_SIZE": "Зменшити розмір інструменту",
+  "TO_INSTALL_UPDATE": "для встановлення оновлення {0}",
+  "DOWNLOADING_UPDATE": "Завантаження оновлення...",
+  "UPDATE_READY": "Оновлення готове до встановлення. Ви хочете встановити його зараз?",
+  "NEW_UPDATE": "Нове оновлення",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "Не вдалося оновити без прав адміністратора. Запустіть PixiEditor від імені адміністратора.",
+  "INSUFFICIENT_PERMISSIONS": "Недостатньо дозволів",
+  "UPDATE_CHECK_FAILED": "Не вдалося перевірити оновлення",
+  "COULD_NOT_CHECK_FOR_UPDATES": "Не вдалося перевірити, чи є доступне оновлення.",
+  "VERSION": "Версія {0}",
+  "OPEN_TEMP_DIR": "Відкрити тимчасовий каталог",
+  "OPEN_LOCAL_APPDATA_DIR": "Відкрити каталог Local AppData",
+  "OPEN_ROAMING_APPDATA_DIR": "Відкрити каталог Roaming AppData",
+  "OPEN_INSTALLATION_DIR": "Відкрити каталог встановлення",
+  "DUMP_ALL_COMMANDS": "Скинути всі команди",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "Скинути всі команди до текстового файлу",
+  "CRASH": "Збій",
+  "CRASH_APP": "Збій програми",
+  "DELETE_USR_PREFS": "Видалити налаштування користувача (Roaming AppData)",
+  "DELETE_SHORTCUT_FILE": "Видалити файл комбінацій клавіш (Roaming AppData)",
+  "DELETE_EDITOR_DATA": "Видалити дані редактора (Local AppData)",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "Створити шаблон прив'язки клавіш",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "Створити шаблон json прив’язки клавіш",
+  "VALIDATE_SHORTCUT_MAP": "Перевірити мару комбінацій клавіш",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "Перевірка мапи комбінацій клавіш",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "Порожні ключі: {0}\nНевідомі команди: {1}",
+  "RESULT": "Результат",
+  "CLEAR_RECENT_DOCUMENTS": "Очистити останні документи",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "Очистити нещодавно відкриті документи",
+  "OPEN_CMD_DEBUG_WINDOW": "Відкрити вікно команд налагодження",
+  "PATH_DOES_NOT_EXIST": "{0} не існує.",
+  "LOCATION_DOES_NOT_EXIST": "Розташування не існує.",
+  "FILE_NOT_FOUND": "Файл не знайдено.",
+  "ARE_YOU_SURE": "Ви впевнені?",
+  "ARE_YOU_SURE_PATH_FULL_PATH": "Ви впевнені, що хочете видалити {0}?\nЦі дані буде втрачено для всіх установок.\n(Повний шлях: {1})",
+  "FAILED_TO_OPEN_FILE": "Не вдалося відкрити файл",
+  "OLD_FILE_FORMAT": "Старий формат файлу",
+  "OLD_FILE_FORMAT_DESCRIPTION": "Цей файл .pixi використовує старий формат,\n  який більше не підтримується та не може бути відкритий.",
+  "NOTHING_FOUND": "Нічого не знайдено",
+  "EXPORT": "Експорт",
+  "EXPORT_IMAGE": "Експорт зображення",
+  "IMPORT": "Імпорт",
+  "SHORTCUT_TEMPLATES": "Шаблони комбінацій клавіш",
+  "RESET_ALL": "Скинути все",
+  "LAYER": "Шар",
+  "LAYER_DELETE_SELECTED": "Видалити активний шар/папку",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "Видалити активний шар або папку",
+  "LAYER_DELETE_ALL_SELECTED": "Видалити всі вибрані шари/папки",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "Видалити всі вибрані шари та/або папки",
+  "DELETE_SELECTED_PIXELS": "Видалити вибрані пікселі",
+  "NEW_FOLDER": "Нова папка",
+  "CREATE_NEW_FOLDER": "Створити нову папку",
+  "NEW_LAYER": "Новий шар",
+  "CREATE_NEW_LAYER": "Створити новий шар",
+  "NEW_IMAGE": "Нове зображення",
+  "CREATE_NEW_IMAGE": "Створити нове зображення",
+  "SAVE": "Зберегти",
+  "SAVE_AS": "Зберегти як...",
+  "IMAGE": "Зображення",
+  "SAVE_IMAGE": "Зберегти зображення",
+  "SAVE_IMAGE_AS": "Зберегти зображення як нове",
+  "DUPLICATE": "Дублікат",
+  "DUPLICATE_SELECTED_LAYER": "Дублювати виділений шар",
+  "CREATE_MASK": "Створити маску",
+  "DELETE_MASK": "Видалити маску",
+  "TOGGLE_MASK": "Перемкнути маску",
+  "APPLY_MASK": "Застосувати маску",
+  "TOGGLE_VISIBILITY": "Перемкнути видимість",
+  "MOVE_MEMBER_UP": "Перемістити вгору",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "Перемістити вибраний шар або папку вгору",
+  "MOVE_MEMBER_DOWN": "Перемістити вниз",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "Перемістити вибраний шар або папку вниз",
+  "MERGE_ALL_SELECTED_LAYERS": "Об’єднати всі виділені шари",
+  "MERGE_WITH_ABOVE": "Об’єднати вибраний шар із верхнім",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "Об’єднати вибраний шар із шаром над ним",
+  "MERGE_WITH_BELOW": "Об’єднати вибраний шар із нижнім",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "Об’єднати вибраний шар із шаром під ним",
+  "ADD_REFERENCE_LAYER": "Додати опорний шар",
+  "DELETE_REFERENCE_LAYER": "Видалити опорний шар",
+  "TRANSFORM_REFERENCE_LAYER": "Трансформувати опорний шар",
+  "TOGGLE_REFERENCE_LAYER_POS": "Перемкнути положення опорного шару",
+  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "Перемикання опорного шару між верхнім і нижнім",
+  "RESET_REFERENCE_LAYER_POS": "Скинути положення опорного шару",
+  "CLIP_CANVAS": "Обрізати полотно",
+  "FLIP_IMG_VERTICALLY": "Перевернути зображення по вертикалі",
+  "FLIP_IMG_HORIZONTALLY": "Перевернути зображення по горизонталі",
+  "FLIP_LAYERS_VERTICALLY": "Перевернути вибрані шари по вертикалі",
+  "FLIP_LAYERS_HORIZONTALLY": "Перевернути вибрані шари по горизонталі",
+  "ROT_IMG_90": "Повернути зображення на 90 градусів",
+  "ROT_IMG_180": "Повернути зображення на 180 градусів",
+  "ROT_IMG_-90": "Повернути зображення на -90 градусів",
+  "ROT_LAYERS_90": "Повернути виділені шари на 90 градусів",
+  "ROT_LAYERS_180": "Повернути виділені шари на 180 градусів",
+  "ROT_LAYERS_-90": "Повернути виділені шари на -90 градусів",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "Перемкнути вертикальну вісь симетрії",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "Перемкнути горизонтальну вісь симетрії",
+  "DELETE_PIXELS": "Видалити пікселі",
+  "DELETE_PIXELS_DESCRIPTIVE": "Видалити вибрані пікселі",
+  "RESIZE_DOCUMENT": "Змінити розмір документа",
+  "RESIZE_CANVAS": "Змінити розмір полотна",
+  "CENTER_CONTENT": "Центр вмісту",
+  "CUT": "Вирізати",
+  "CUT_DESCRIPTIVE": "Вирізати вибрану область/шари",
+  "PASTE": "Вставити",
+  "PASTE_DESCRIPTIVE": "Вставити вміст буфера обміну",
+  "PASTE_AS_NEW_LAYER": "Вставити як новий шар",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "Вставити з буфера обміну як новий шар",
+  "PASTE_REFERENCE_LAYER": "Вставити опорний шар",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "Вставити вміст буфера обміну як опорний шар",
+  "PASTE_COLOR": "Вставити колір",
+  "PASTE_COLOR_DESCRIPTIVE": "Вставити колір із буфера обміну",
+  "PASTE_COLOR_SECONDARY": "Вставте колір як додатковий",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "Вставити колір із буфера обміну як додатковий колір",
+  "CLIPBOARD": "Буфер обміну",
+  "COPY": "Копіювати",
+  "COPY_DESCRIPTIVE": "Копіювати в буфер обміну",
+  "COPY_COLOR_HEX": "Копіювати основний колір (HEX)",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "Скопіювати основний колір як шістнадцятковий код",
+  "COPY_COLOR_RGB": "Копіювати основний колір (RGB)",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "Копіювати основний колір як код RGB",
+  "COPY_COLOR_SECONDARY_HEX": "Копіювати додатковий колір (HEX)",
+  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "Скопіювати допоміжний колір як шістнадцятковий код",
+  "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": "Відкрити браузер палітри",
+  "OVERWRITE_PALETTE_CONSENT": "Палітра '{0}' уже існує, перезаписати її?",
+  "PALETTE_EXISTS": "Палітра вже існує",
+  "REPLACE_PALETTE_CONSENT": "Замінити поточну палітру вибраною?",
+  "REPLACE_PALETTE": "Замінити поточну палітру",
+  "SELECT_COLOR_1": "Виберіть колір 1",
+  "SELECT_COLOR_2": "Виберіть колір 2",
+  "SELECT_COLOR_3": "Виберіть колір 3",
+  "SELECT_COLOR_4": "Виберіть колір 4",
+  "SELECT_COLOR_5": "Виберіть колір 5",
+  "SELECT_COLOR_6": "Виберіть колір 6",
+  "SELECT_COLOR_7": "Виберіть колір 7",
+  "SELECT_COLOR_8": "Виберіть колір 8",
+  "SELECT_COLOR_9": "Виберіть колір 9",
+  "SELECT_COLOR_10": "Виберіть колір 10",
+  "SELECT_TOOL": "Виберіть інструмент {0}",
+  "SELECT_COLOR_1_DESCRIPTIVE": "Виберіть перший колір у палітрі",
+  "SELECT_COLOR_2_DESCRIPTIVE": "Виберіть другий колір у палітрі",
+  "SELECT_COLOR_3_DESCRIPTIVE": "Виберіть третій колір у палітрі",
+  "SELECT_COLOR_4_DESCRIPTIVE": "Виберіть четвертий колір у палітрі",
+  "SELECT_COLOR_5_DESCRIPTIVE": "Виберіть п'ятий колір у палітрі",
+  "SELECT_COLOR_6_DESCRIPTIVE": "Виберіть шостий колір на палітрі",
+  "SELECT_COLOR_7_DESCRIPTIVE": "Виберіть сьомий колір на палітрі",
+  "SELECT_COLOR_8_DESCRIPTIVE": "Виберіть восьмий колір на палітрі",
+  "SELECT_COLOR_9_DESCRIPTIVE": "Виберіть дев'ятий колір на палітрі",
+  "SELECT_COLOR_10_DESCRIPTIVE": "Виберіть десятий колір на палітрі",
+  "SWAP_COLORS": "Поміняти місцями кольори",
+  "SWAP_COLORS_DESCRIPTIVE": "Поміняти основний і додатковий кольори",
+  "SEARCH": "Пошук",
+  "COMMAND_SEARCH": "Пошук команди",
+  "OPEN_COMMAND_SEARCH": "Відкрити вікно пошуку команд",
+  "SELECT": "Обрати",
+  "DESELECT": "Зняти вибір",
+  "INVERT": "Інвертувати",
+  "SELECTION": "Вибране",
+  "SELECT_ALL": "Вибрати все",
+  "SELECT_ALL_DESCRIPTIVE": "Вибрати все",
+  "CLEAR_SELECTION": "Очистити вибір",
+  "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_DESCRIPTIVE": "Виділення до нової маски",
+  "ADD_SELECTION_TO_MASK": "Додати виділення до маски",
+  "SUBTRACT_SELECTION_FROM_MASK": "Відняти виділення від маски",
+  "INTERSECT_SELECTION_MASK": "Перетин виділення маскою",
+  "SELECTION_TO_MASK": "Виділення до маски",
+  "TO_NEW_MASK": "до нової маски",
+  "ADD_TO_MASK": "додати до маски",
+  "SUBTRACT_FROM_MASK": "відняти від маски",
+  "INTERSECT_WITH_MASK": "перетин з маскою",
+  "STYLUS": "Стилус",
+  "TOGGLE_PEN_MODE": "Перемикання режиму пера",
+  "UNDO": "Скасувати",
+  "UNDO_DESCRIPTIVE": "Скасувати останню дію",
+  "REDO": "Повторити",
+  "REDO_DESCRIPTIVE": "Повторити останню дію",
+  "WINDOWS": "Вікна",
+  "TOGGLE_GRIDLINES": "Перемкнути лінії сітки",
+  "ZOOM_IN": "Збільшити масштаб",
+  "ZOOM_OUT": "Зменшити масштаб",
+  "NEW_WINDOW_FOR_IMG": "Нове вікно для поточного зображення",
+  "CENTER_ACTIVE_VIEWPORT": "Центр активного вікна перегляду",
+  "FLIP_VIEWPORT_HORIZONTALLY": "Перевернути вікно перегляду горизонтально",
+  "FLIP_VIEWPORT_VERTICALLY": "Перевернути вікно перегляду вертикально",
+  "SETTINGS": "Налаштування",
+  "OPEN_SETTINGS": "Відкрити налаштування",
+  "OPEN_SETTINGS_DESCRIPTIVE": "Відкрити вікно налаштувань",
+  "OPEN_STARTUP_WINDOW": "Відкрити вікно запуску",
+  "OPEN_SHORTCUT_WINDOW": "Відкрити вікно комбінацій клавіш",
+  "OPEN_ABOUT_WINDOW": "Відкрийте вікно з інформацією",
+  "OPEN_NAVIGATION_WINDOW": "Відкрити вікно навігації",
+  "ERROR": "Помилка",
+  "INTERNAL_ERROR": "Внутрішня помилка",
+  "ERROR_SAVE_LOCATION": "Не вдалося зберегти файл у вказаному розташуванні",
+  "ERROR_WHILE_SAVING": "Під час збереження сталася внутрішня помилка. Будь ласка спробуйте ще раз.",
+  "UNKNOWN_ERROR_SAVING": "Під час збереження сталася помилка.",
+  "FAILED_ASSOCIATE_LOSPEC": "Не вдалося зв’язати протокол Lospec Palette.",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "Пожертвувати",
+  "YES": "Так",
+  "NO": "Ні",
+  "CANCEL": "Скасувати",
+  "UNNAMED": "Без_назви",
+  "OPEN_COMMAND_DEBUG_WINDOW": "Відкрити вікно команд налагодження",
+  "DELETE": "Видалити",
+  "USER_PREFS": "Налаштування користувача (Roaming)",
+  "SHORTCUT_FILE": "Файл комбінацій клавіш (Roaming)",
+  "EDITOR_DATA": "Дані редактора (Local)",
+  "MOVE_VIEWPORT_TOOLTIP": "Перемістити вікно перегляду. ({0})",
+  "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_ACTION_DISPLAY_DEFAULT": "Натисніть і перемістіть, щоб намалювати прямокутник. Утримуйте Shift, щоб намалювати квадрат.",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "Натисніть і перемістіть, щоб намалювати квадрат.",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "Зберегти оригінальне зображення",
+  "ROTATE_VIEWPORT_TOOLTIP": "Поворот вікна перегляду. ({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "Натисніть і перемістіть, щоб повернути вікно перегляду",
+  "SELECT_TOOL_TOOLTIP": "Вибирати область. ({0})",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "Натисніть і перемістіть, щоб вибрати область. Утримуйте Shift, щоб додати до наявного виділення. Утримуйте Ctrl, щоб відняти від нього.",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "Натисніть і перемістіть, щоб додати до поточного виділення.",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "Натисніть і перемістіть, щоб відняти з поточного виділення.",
+  "ZOOM_TOOL_TOOLTIP": "Масштабування області перегляду ({0}). Натисніть, щоб збільшити, утримуйте клавішу Alt і натисніть, щоб зменшити.",
+  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "Натисніть і перемістіть для збільшення. Клацніть, щоб збільшити, утримуйте ctrl і натисніть, щоб зменшити.",
+  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "Натисніть і перемістіть для збільшення. Клацніть, щоб зменшити, відпустіть ctrl і натисніть, щоб збільшити.",
+  "BRIGHTNESS_TOOL_TOOLTIP": "Робить пікселі яскравішими або темнішими ({0}). Утримуйте Ctrl, щоб зробити пікселі темнішими.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "Малюйте на пікселях, щоб зробити їх яскравішими. Утримуйте Ctrl, щоб затемнити.",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "Малюйте на пікселях, щоб зробити їх темнішими. Відпустіть Ctrl, щоб зробити яскравішими.",
+  "COLOR_PICKER_TOOLTIP": "Вибір основного кольору з полотна. ({0})",
+  "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, щоб розглянути лише поточні шари.",
+  "LASSO_TOOL_TOOLTIP": "Ласо. ({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "Натисніть і перемістіть, щоб вибрати пікселі всередині ласо. Утримуйте Shift, щоб додати до наявного виділення. Утримуйте Ctrl, щоб відняти від нього.",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "Натисніть і перемістіть, щоб додати до виділення пікселі всередині ласо.",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "Натисніть і перемістіть, щоб відняти пікселі всередині ласо з виділення.",
+  "LINE_TOOL_TOOLTIP": "Малювати лінію на полотні ({0}). Утримуйте Shift, щоб увімкнути прив’язку.",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "Натисніть і перемістіть, щоб намалювати лінію. Утримуйте Shift, щоб увімкнути прив’язку.",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "Клацніть і перемістіть мишу, щоб намалювати лінію з увімкненою прив’язкою.",
+  "MAGIC_WAND_TOOL_TOOLTIP": "Чарівна паличка ({0}).",
+  "MAGIC_WAND_ACTION_DISPLAY": "Натисніть, щоб залити виділення.",
+  "PEN_TOOL": "Перо",
+  "BRIGHTNESS_TOOL": "Яскравість",
+  "COLOR_PICKER_TOOL": "Палітра кольорів",
+  "ELLIPSE_TOOL": "Еліпс",
+  "ERASER_TOOL": "Гумка",
+  "FLOOD_FILL_TOOL": "Заливка",
+  "LASSO_TOOL": "Ласо",
+  "LINE_TOOL": "Лінія",
+  "MAGIC_WAND_TOOL": "Чарівна паличка",
+  "MOVE_TOOL": "Переміщення",
+  "MOVE_VIEWPORT_TOOL": "Переміщення вікна перегляду",
+  "RECTANGLE_TOOL": "Прямокутник",
+  "ROTATE_VIEWPORT_TOOL": "Обернути вікно перегляду",
+  "SELECT_TOOL_NAME": "Вибір",
+  "ZOOM_TOOL": "Масштабування",
+  "SHAPE_LABEL": "Форма",
+  "MODE_LABEL": "Режим",
+  "SCOPE_LABEL": "Область застосування",
+  "FILL_SHAPE_LABEL": "Залити форму",
+  "FILL_COLOR_LABEL": "Колір заливки",
+  "TOOL_SIZE_LABEL": "Розмір інструменту",
+  "STRENGTH_LABEL": "Сила",
+  "NEW": "Новий",
+  "ADD": "Додати",
+  "SUBTRACT": "Відняти",
+  "INTERSECT": "Перетин",
+  "RECTANGLE": "Прямокутник",
+  "CIRCLE": "Коло",
+  "ABOUT": "Про програму",
+  "MINIMIZE": "Згорнути",
+  "RESTORE": "Відновити",
+  "MAXIMIZE": "Розгорнути",
+  "CLOSE": "Закрити",
+  "EXPORT_SIZE_HINT": "Якщо ви хочете поділитися зображенням, спробуйте {0}% для найкращої чіткості",
+  "CREATE": "Створити",
+  "BASE_LAYER_NAME": "Базовий шар",
+  "ENABLE_MASK": "Увімкнути маску",
+  "SELECTED_AREA_EMPTY": "Вибрана область порожня",
+  "NOTHING_TO_COPY": "Копіювати нічого",
+  "REFERENCE_LAYER_PATH": "Шлях опорного шару",
+  "FLIP": "Перевернути",
+  "ROTATION": "Обертання",
+  "ROT_IMG_90_D": "Повернути зображення на 90°",
+  "ROT_IMG_180_D": "Повернути зображення на 180°",
+  "ROT_IMG_-90_D": "Повернути зображення на -90°",
+  "ROT_LAYERS_90_D": "Повернути виділені шари на 90°",
+  "ROT_LAYERS_180_D": "Повернути вибрані шари на 180°",
+  "ROT_LAYERS_-90_D": "Повернути виділені шари на -90°",
+  "UNNAMED_PALETTE": "Безіменна палітра",
+  "CLICK_SELECT_PRIMARY": "Натисніть, щоб вибрати основний колір.",
+  "PEN_MODE": "Режим пера",
+  "VIEW": "Переглянути",
+  "HORIZONTAL_LINE_SYMMETRY": "Симетрія горизонтальних ліній",
+  "VERTICAL_LINE_SYMMETRY": "Симетрія вертикальної лінії",
+  "COLOR_PICKER_TITLE": "Палітра кольорів",
+  "COLOR_SLIDERS_TITLE": "Кольорові повзунки",
+  "PALETTE_TITLE": "Палітра",
+  "SWATCHES_TITLE": "Зразки",
+  "LAYERS_TITLE": "Шари",
+  "NAVIGATION_TITLE": "Навігація",
+  "NORMAL_BLEND_MODE": "Нормальний",
+  "DARKEN_BLEND_MODE": "Затемнений",
+  "MULTIPLY_BLEND_MODE": "Помножити",
+  "COLOR_BURN_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": "Різниця",
+  "EXCLUSION_BLEND_MODE": "Виключення",
+  "HUE_BLEND_MODE": "Відтінок",
+  "SATURATION_BLEND_MODE": "Насиченість",
+  "LUMINOSITY_BLEND_MODE": "Освітленість",
+  "COLOR_BLEND_MODE": "Колір",
+  "NOT_SUPPORTED_BLEND_MODE": "Не підтримується",
+  "RESTART": "Перезапустити",
+  "SORT_BY": "Сортувати за",
+  "NAME": "Назвою",
+  "COLORS": "Кольори",
+  "DEFAULT": "За замовчуванням",
+  "ALPHABETICAL": "Алфавітом",
+  "COLOR_COUNT": "Кількістю кольорів",
+  "ANY": "Будь-яке",
+  "MAX": "Макс",
+  "MIN": "Мін",
+  "EXACT": "Точний",
+  "ASCENDING": "Висхідний",
+  "DESCENDING": "Спадний",
+  "NAME_IS_TOO_LONG": "Назва занадто довга",
+  "STOP_IT_TEXT1": "Цього достатньо. Приведіть у порядок свої імена файлів.",
+  "STOP_IT_TEXT2": "Чи можете ви припинити копіювати ці імена, будь ласка?",
+  "REPLACER_TOOLTIP": "Клацніть правою кнопкою миші колір палітри та виберіть 'Замінити' або перемістіть його сюди.",
+  "CLICK_TO_CHOOSE_COLOR": "Натисніть, щоб вибрати колір",
+  "REPLACE_COLOR": "Замінити колір",
+  "PALETTE_COLOR_TOOLTIP": "Натисніть, щоб вибрати основний колір. Перетягніть на інший колір палітри, щоб поміняти їх місцями.",
+  "ADD_FROM_SWATCHES": "Додати зі зразків",
+  "ADD_COLOR_TO_PALETTE": "Додати колір до палітри",
+  "USE_IN_CURRENT_IMAGE": "Використовувати в поточному зображенні",
+  "ADD_TO_FAVORITES": "Додайте до обраних",
+  "BROWSE_PALETTES": "Огляд палітр",
+  "LOAD_PALETTE": "Завантажити палітру",
+  "SAVE_PALETTE": "Зберегти палітру",
+  "FAVORITES": "Вибране",
+  "ADD_FROM_CURRENT_PALETTE": "Додати з поточної палітри",
+  "OPEN_PALETTES_DIR_TOOLTIP": "Відкрити каталог палітр у Провіднику",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "Огляд палітр на Lospec",
+  "IMPORT_FROM_FILE_TOOLTIP": "Імпортувати з файлу",
+  "TOP_LEFT": "Вгорі ліворуч",
+  "TOP_CENTER": "Вгорі центр",
+  "TOP_RIGHT": "Вгорі праворуч",
+  "MIDDLE_LEFT": "Середина Ліворуч",
+  "MIDDLE_CENTER": "Середина Центр",
+  "MIDDLE_RIGHT": "Середина праворуч",
+  "BOTTOM_LEFT": "Внизу зліва",
+  "BOTTOM_CENTER": "Внизу центр",
+  "BOTTOM_RIGHT": "Внизу праворуч",
+  "CLIP_TO_BELOW": "Обрізати до шару нижче",
+  "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": "Імпорт із шаблону",
+  "SHORTCUTS_IMPORTED_SUCCESS": "Комбінації клавіш успішно імпортовано.",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "Ви впевнені, що бажаєте скинути всі комбінації клавіш до стандартних значень?",
+  "SUCCESS": "Успіх",
+  "WARNING": "Увага",
+  "ERROR_IMPORTING_IMAGE": "Під час імпортування зображення сталася помилка.",
+  "SHORTCUTS_CORRUPTED_TITLE": "Пошкоджений файл комбінацій клавіш",
+  "SHORTCUTS_CORRUPTED": "Файл комбінацій клавіш пошкоджено, скидання до замовчування.",
+  "FAILED_DOWNLOAD_PALETTE": "Не вдалося завантажити палітру",
+  "FILE_INCORRECT_FORMAT": "Файл був у неправильному форматі",
+  "INVALID_FILE": "Неправильний файл",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "Файл комбінацій клавіш був у неправильному форматі",
+  "UNSUPPORTED_FILE_FORMAT": "Цей формат файлу не підтримується",
+  "ALREADY_ASSIGNED": "Вже призначено",
+  "REPLACE": "Замінити",
+  "SWAP": "Обмін",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "Цю комбінацію клавіш уже призначено для '{0}'\nБажаєте замінити наявну комбінацію чи поміняти їх місцями?",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "Цю комбінацію клавіш уже призначено для '{0}'\nБажаєте замінити існуючу комбінацію?",
+  "UNSAVED_CHANGES": "Незбережені зміни",
+  "DOCUMENT_MODIFIED_SAVE": "Документ змінено. Ви хочете зберегти зміни?",
+  "SESSION_UNSAVED_DATA": "{0} містить незбережені дані. Ви впевнені?",
+  "PROJECT_MAINTAINERS": "Супроводжувачі проекту",
+  "OTHER_AWESOME_CONTRIBUTORS": "Та інші чудові учасники",
+  "HELP": "Довідка",
+  "STOP_IT_TEXT3": "Ні, справді, перестаньте.",
+  "STOP_IT_TEXT4": "Невже у вас немає нічого кращого?",
+  "LINEAR_DODGE_BLEND_MODE": "Лінійне ухилення (Додати)",
+  "PRESS_ANY_KEY": "Натисніть будь-яку клавішу",
+  "NONE_SHORTCUT": "Нічого",
+  "REFERENCE": "Опорний",
+  "PUT_REFERENCE_LAYER_ABOVE": "Помістити опорний шар вище",
+  "PUT_REFERENCE_LAYER_BELOW": "Помістити опорний шар нижче",
+  "TOGGLE_VERTICAL_SYMMETRY": "Перемкнути вертикальну симетрію",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "Перемкнути горизонтальну симетрію",
+  "RESET_VIEWPORT": "Скинути вікно перегляду",
+  "VIEWPORT_SETTINGS": "Налаштування вікна перегляду",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "Натисніть і утримуйте мишу, щоб перемістити пікселі у вибраних шарах.",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "Утримуйте мишу, щоб перемістити всі шари.",
+  "CTRL_KEY": "Ctrl",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "Перейменувати",
+  "PIXEL_UNIT": "пікс",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "Відкрити вікно Налагодження локалізації",
+  "FORCE_OTHER_FLOW_DIRECTION": "Примусово змінити напрямок потоку",
+  "API_KEY": "Ключ API",
+  "LOCALIZATION_VIEW_TYPE": "Тип перегляду локалізації",
+  "LOAD_LANGUAGE_FROM_FILE": "Завантажити мову з файлу",
+  "LOG_IN": "Увійти",
+  "SYNC": "Синхр.",
+  "NOT_LOGGED_IN": "Не ввійшли в систему",
+  "POE_EDITOR_ERROR": "Помилка POEditor: {0} {1}",
+  "HTTP_ERROR_MESSAGE": "Помилка HTTP: {0} {1}",
+  "LOGGED_IN": "Вхід виконано",
+  "SYNCED_SUCCESSFULLY": "Успішно синхронізовано",
+  "EXCEPTION_ERROR": "Виключення: {0}",
+  "DROP_PALETTE": "Опустіть палітру сюди",
+  "SECURITY_ERROR": "Помилка безпеки",
+  "SECURITY_ERROR_MSG": "Немає прав на запис у вказане місце.",
+  "IO_ERROR": "Помилка вводу-виводу",
+  "IO_ERROR_MSG": "Помилка під час запису на диск.",
+  "FAILED_ASSOCIATE_PIXI": "Не вдалося пов’язати файл .pixi із PixiEditor.",
+  "COULD_NOT_SAVE_PALETTE": "Під час збереження палітри сталася помилка.",
+  "NO_COLORS_TO_SAVE": "Немає кольорів для збереження.",
+  "ALL_LAYERS": "Всі шари",
+  "SINGLE_LAYER": "Один шар",
+  "CHOOSE": "Обрати",
+  "REMOVE": "Видалити",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "Файл не є файлом \".aseprite-keys\"",
+  "FILE_HAS_INVALID_SHORTCUT": "Файл містить недійсні дані",
+  "FILE_EXTENSION_NOT_SUPPORTED": "Тип файлу '{0}' не підтримується",
+  "ERROR_READING_FILE": "Помилка під час читання файлу",
+  "DISCARD_PALETTE": "Видалити палітру",
+  "DISCARD_PALETTE_CONFIRMATION": "Ви впевнені, що бажаєте видалити поточну палітру? Це не може бути скасоване.",
+  "IMPORT_AS_NEW_LAYER": "Імпортувати як новий шар",
+  "PASTE_AS_PRIMARY_COLOR": "Вставити як основний колір",
+  "IMPORT_AS_NEW_FILE": "Імпортувати як новий файл",
+  "IMPORT_PALETTE_FILE": "Імпорт файлу палітри",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "Імпорт кольорів до палітри",
+  "IMPORT_SINGLE_PALETTE_COLOR": "Імпорт кольору до палітри",
+  "IMPORT_AS_REFERENCE_LAYER": "Імпортувати як опорний шар",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "Клацніть правою кнопкою миші, щоб вибрати колір, клацніть правою кнопкою миші, утримуючи Shift, щоб скопіювати колір до буфера обміну",
+  "OPEN_FILE_FROM_CLIPBOARD": "Відкрити з буфера обміну",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "Відкрити з буфера обміну",
+  "OPEN_LOCALIZATION_DATA": "Do you want to open the LocalizationData.json?\nThe updated date has been put in the clipboard.\nNote that changes wont be applied until a restart",
+  "DOWNLOADING_LANGUAGE_FAILED": "Помилка завантаження мови.\nМожливо, було зловживано ключем API.",
+  "LOCALIZATION_DATA_NOT_FOUND": "Шлях до даних локалізації не знайдено",
+  "APPLY": "Застосувати",
+  "UPDATE_SOURCE": "Джерело оновлення",
+  "COPY_TO_CLIPBOARD": "Копіювати в буфер обміну",
+  "LANGUAGE_FILE_NOT_FOUND": "Мовний файл не знайдено.\nОчікувалось {0}",
+  "PROJECT_ROOT_NOT_FOUND": "Кореневу папку проекту PixiEditor не знайдено.\nШукаємо PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "Папка локалізації не знайдена.\nОчікувалось за адресою /Data/Localization",
+  "SELECT_A_LANGUAGE": "Виберіть мову",
+  "DONE": "Готово",
+  "SOURCE_UNSET_OR_MISSING": "Джерело відсутнє/не встановлено",
+  "SOURCE_NEWER": "Джерело новіше",
+  "SOURCE_UP_TO_DATE": "Джерело актуальне",
+  "SOURCE_OLDER": "Хмара новіше",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
+  "SHORTCUTS_TITLE": "Shortcuts",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+}

+ 564 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/Languages/zh.json

@@ -0,0 +1,564 @@
+{
+  "RECENT_FILES": "最近",
+  "OPEN_FILE": "打开",
+  "NEW_FILE": "新建",
+  "RECENT_EMPTY_TEXT": "空空如也……",
+  "LANGUAGE": "语言",
+  "GENERAL": "基础设置",
+  "DISCORD": "Discord",
+  "KEY_BINDINGS": "按键绑定",
+  "MISC": "杂项",
+  "SHOW_STARTUP_WINDOW": "显示启动窗口",
+  "SHOW_IMAGE_PREVIEW_TASKBAR": "在工具栏显示图像预览",
+  "RECENT_FILE_LENGTH": "最近文件列表长度",
+  "RECENT_FILE_LENGTH_TOOLTIP": "文件>最近中的文件数量。默认值:8",
+  "DEFAULT_NEW_SIZE": "新文件默认大小",
+  "WIDTH": "宽度",
+  "HEIGHT": "高度",
+  "TOOLS": "工具",
+  "ENABLE_SHARED_TOOLBAR": "共享工具栏",
+  "AUTOMATIC_UPDATES": "自动更新",
+  "CHECK_FOR_UPDATES": "在启动时检查更新",
+  "UPDATE_STREAM": "更新渠道",
+  "UPDATE_CHANNEL_HELP_TOOLTIP": "更新渠道只能在独立版本中更改(下载于 https://pixieditor.net)。\nSteam 和微软商店版分开处理更新。",
+  "DEBUG": "调试",
+  "ENABLE_DEBUG_MODE": "开启调试模式",
+  "OPEN_CRASH_REPORTS_DIR": "开启崩溃报告文件夹",
+  "DISCORD_RICH_PRESENCE": "动态设定",
+  "ENABLED": "允许",
+  "SHOW_IMAGE_NAME": "显示图片名称",
+  "SHOW_IMAGE_SIZE": "显示图片大小",
+  "SHOW_LAYER_COUNT": "显示图层数量",
+  "FILE": "文件",
+  "RECENT": "最近",
+  "OPEN": "打开",
+  "SAVE_PIXI": "保存 (.pixi)",
+  "SAVE_AS_PIXI": "另存为... (.pixi)",
+  "EXPORT_IMG": "导出 (.png, .jpg, 等)",
+  "EDIT": "编辑",
+  "EXIT": "退出",
+  "PERCENTAGE": "百分比",
+  "ABSOLUTE": "绝对比例",
+  "PRESERVE_ASPECT_RATIO": "保持比例",
+  "ANCHOR_POINT": "锚点",
+  "RESIZE_IMAGE": "调整图片大小",
+  "RESIZE": "调整大小",
+  "DOCUMENTATION": "帮助文档",
+  "WEBSITE": "网站",
+  "OPEN_WEBSITE": "打开网站",
+  "REPOSITORY": "资料库",
+  "OPEN_REPOSITORY": "打开资料库",
+  "LICENSE": "许可",
+  "OPEN_LICENSE": "打开许可",
+  "THIRD_PARTY_LICENSES": "第三方许可",
+  "OPEN_THIRD_PARTY_LICENSES": "打开第三方许可",
+  "APPLY_TRANSFORM": "应用更改",
+  "INCREASE_TOOL_SIZE": "增加工具大小",
+  "DECREASE_TOOL_SIZE": "减少工具大小",
+  "TO_INSTALL_UPDATE": "以下载更新{0}",
+  "DOWNLOADING_UPDATE": "下载更新中……",
+  "UPDATE_READY": "有可用更新。是否现在开始下载?",
+  "NEW_UPDATE": "可用更新",
+  "COULD_NOT_UPDATE_WITHOUT_ADMIN": "需要管理员权限以更新。请使用管理员账号运行PixiEditor。",
+  "INSUFFICIENT_PERMISSIONS": "权限不足",
+  "UPDATE_CHECK_FAILED": "更新检查失败",
+  "COULD_NOT_CHECK_FOR_UPDATES": "无法检查可用更新。",
+  "VERSION": "版本{0}",
+  "OPEN_TEMP_DIR": "打开缓存文件夹",
+  "OPEN_LOCAL_APPDATA_DIR": "打开本地应用数据目录",
+  "OPEN_ROAMING_APPDATA_DIR": "打开漫游应用数据目录",
+  "OPEN_INSTALLATION_DIR": "打开安装目录",
+  "DUMP_ALL_COMMANDS": "转储所有命令",
+  "DUMP_ALL_COMMANDS_DESCRIPTIVE": "将所有命令转储于一个文本文档",
+  "CRASH": "崩溃",
+  "CRASH_APP": "崩溃此程序",
+  "DELETE_USR_PREFS": "删除用户设定(缓存程序资料)",
+  "DELETE_SHORTCUT_FILE": "删除捷径文件(漫游应用数据)",
+  "DELETE_EDITOR_DATA": "删除编辑器资料(本地应用数据)",
+  "GENERATE_KEY_BINDINGS_TEMPLATE": "生成按键绑定模版",
+  "GENERATE_KEY_BINDINGS_TEMPLATE_DESCRIPTIVE": "生成Json按键绑定模版",
+  "VALIDATE_SHORTCUT_MAP": "验证捷径图",
+  "VALIDATE_SHORTCUT_MAP_DESCRIPTIVE": "验证捷径图",
+  "VALIDATION_KEYS_NOTICE_DIALOG": "空键:{0}\n未知命令:{1}",
+  "RESULT": "结果",
+  "CLEAR_RECENT_DOCUMENTS": "清空最近文件",
+  "CLEAR_RECENTLY_OPENED_DOCUMENTS": "清空最近打开的文件",
+  "OPEN_CMD_DEBUG_WINDOW": "打开命令除错窗口",
+  "PATH_DOES_NOT_EXIST": "{0}不存在。",
+  "LOCATION_DOES_NOT_EXIST": "位置不存在。",
+  "FILE_NOT_FOUND": "无法找到文件。",
+  "ARE_YOU_SURE": "你确定吗?",
+  "ARE_YOU_SURE_PATH_FULL_PATH": "你确定要删除{0}吗?\n所有安装都将丢失此资料。\n(完整位置:{1})",
+  "FAILED_TO_OPEN_FILE": "无法打开文件",
+  "OLD_FILE_FORMAT": "旧文件格式",
+  "OLD_FILE_FORMAT_DESCRIPTION": "此 .pixi 文件使用了已被停止支持的旧文件格式。",
+  "NOTHING_FOUND": "无结果",
+  "EXPORT": "导出",
+  "EXPORT_IMAGE": "导出图片",
+  "IMPORT": "导入",
+  "SHORTCUT_TEMPLATES": "捷径模版",
+  "RESET_ALL": "重置所有捷径",
+  "LAYER": "图层",
+  "LAYER_DELETE_SELECTED": "删除当前图层/文件夹",
+  "LAYER_DELETE_SELECTED_DESCRIPTIVE": "删除当前图层或文件夹",
+  "LAYER_DELETE_ALL_SELECTED": "删除所有已选图层/文件夹",
+  "LAYER_DELETE_ALL_SELECTED_DESCRIPTIVE": "删除所有已选图层和/或文件夹",
+  "DELETE_SELECTED_PIXELS": "删除所选像素",
+  "NEW_FOLDER": "新文件夹",
+  "CREATE_NEW_FOLDER": "新建一个文件夹",
+  "NEW_LAYER": "新图层",
+  "CREATE_NEW_LAYER": "新建一个图层",
+  "NEW_IMAGE": "新图片",
+  "CREATE_NEW_IMAGE": "新建图片",
+  "SAVE": "保存",
+  "SAVE_AS": "另存为……",
+  "IMAGE": "图片",
+  "SAVE_IMAGE": "保存图片",
+  "SAVE_IMAGE_AS": "另存为新图片",
+  "DUPLICATE": "复制",
+  "DUPLICATE_SELECTED_LAYER": "复制当前图层",
+  "CREATE_MASK": "创建蒙版",
+  "DELETE_MASK": "删除蒙版",
+  "TOGGLE_MASK": "开/关蒙版",
+  "APPLY_MASK": "应用蒙版",
+  "TOGGLE_VISIBILITY": "切换可见性",
+  "MOVE_MEMBER_UP": "将成员上移",
+  "MOVE_MEMBER_UP_DESCRIPTIVE": "将已选图层或文件夹上移",
+  "MOVE_MEMBER_DOWN": "将成员下移",
+  "MOVE_MEMBER_DOWN_DESCRIPTIVE": "将已选图层或文件夹下移",
+  "MERGE_ALL_SELECTED_LAYERS": "合并所有已选图层",
+  "MERGE_WITH_ABOVE": "将已选图层和上方图层合并",
+  "MERGE_WITH_ABOVE_DESCRIPTIVE": "将选择的图层和其上方图层合并",
+  "MERGE_WITH_BELOW": "将已选图层和下方图层合并",
+  "MERGE_WITH_BELOW_DESCRIPTIVE": "将选择的图层和其下方图层合并",
+  "ADD_REFERENCE_LAYER": "增加参考图层",
+  "DELETE_REFERENCE_LAYER": "删除参考图层",
+  "TRANSFORM_REFERENCE_LAYER": "改变参考图层",
+  "TOGGLE_REFERENCE_LAYER_POS": "切换参考图层位置",
+  "TOGGLE_REFERENCE_LAYER_POS_DESCRIPTIVE": "在最上层和最下层之间切换参考图层",
+  "RESET_REFERENCE_LAYER_POS": "重置参考图层位置",
+  "CLIP_CANVAS": "裁剪画布",
+  "FLIP_IMG_VERTICALLY": "垂直翻转图片",
+  "FLIP_IMG_HORIZONTALLY": "水平翻转图片",
+  "FLIP_LAYERS_VERTICALLY": "垂直翻转已选图层",
+  "FLIP_LAYERS_HORIZONTALLY": "水平翻转已选图层",
+  "ROT_IMG_90": "将图片顺时针旋转90度",
+  "ROT_IMG_180": "将图片旋转180度",
+  "ROT_IMG_-90": "将图片逆时针旋转90度",
+  "ROT_LAYERS_90": "将已选图层顺时针旋转90度",
+  "ROT_LAYERS_180": "将已选图层旋转180度",
+  "ROT_LAYERS_-90": "将已选图层逆时针旋转90度",
+  "TOGGLE_VERT_SYMMETRY_AXIS": "开/关垂直对称轴",
+  "TOGGLE_HOR_SYMMETRY_AXIS": "开/关水平对称轴",
+  "DELETE_PIXELS": "删除像素",
+  "DELETE_PIXELS_DESCRIPTIVE": "删除已选像素",
+  "RESIZE_DOCUMENT": "更改文件大小",
+  "RESIZE_CANVAS": "更改画布大小",
+  "CENTER_CONTENT": "居中内容",
+  "CUT": "剪切",
+  "CUT_DESCRIPTIVE": "剪切选区/图层",
+  "PASTE": "粘贴",
+  "PASTE_DESCRIPTIVE": "粘贴剪贴簿内容",
+  "PASTE_AS_NEW_LAYER": "以新图层粘贴",
+  "PASTE_AS_NEW_LAYER_DESCRIPTIVE": "从剪贴薄粘贴至新图层",
+  "PASTE_REFERENCE_LAYER": "粘贴参考图层",
+  "PASTE_REFERENCE_LAYER_DESCRIPTIVE": "从剪贴薄粘贴至参考图层",
+  "PASTE_COLOR": "粘贴颜色",
+  "PASTE_COLOR_DESCRIPTIVE": "从剪贴薄粘贴颜色",
+  "PASTE_COLOR_SECONDARY": "粘贴颜色为次要",
+  "PASTE_COLOR_SECONDARY_DESCRIPTIVE": "从剪贴薄粘贴颜色为次要",
+  "CLIPBOARD": "剪贴薄",
+  "COPY": "复制",
+  "COPY_DESCRIPTIVE": "复制到剪贴薄",
+  "COPY_COLOR_HEX": "复制主要颜色(十六进制值)",
+  "COPY_COLOR_HEX_DESCRIPTIVE": "将主要颜色复制为十六进制值(Hex)",
+  "COPY_COLOR_RGB": "复制主要颜色(RGB)",
+  "COPY_COLOR_RGB_DESCRIPTIVE": "将主要颜色复制为RGB值(红绿蓝)",
+  "COPY_COLOR_SECONDARY_HEX": "复制次要颜色(十六进制值)",
+  "COPY_COLOR_SECONDARY_HEX_DESCRIPTIVE": "将次要颜色复制为十六进制值(Hex)",
+  "COPY_COLOR_SECONDARY_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": "浏览调色板",
+  "OVERWRITE_PALETTE_CONSENT": "色板“{0}”已经存在,是否替换?",
+  "PALETTE_EXISTS": "色板已经存在",
+  "REPLACE_PALETTE_CONSENT": "是否将目前色板替换为已选色板?",
+  "REPLACE_PALETTE": "替换目前色板",
+  "SELECT_COLOR_1": "选择颜色1",
+  "SELECT_COLOR_2": "选择颜色2",
+  "SELECT_COLOR_3": "选择颜色3",
+  "SELECT_COLOR_4": "选择颜色4",
+  "SELECT_COLOR_5": "选择颜色5",
+  "SELECT_COLOR_6": "选择颜色6",
+  "SELECT_COLOR_7": "选择颜色7",
+  "SELECT_COLOR_8": "选择颜色8",
+  "SELECT_COLOR_9": "选择颜色9",
+  "SELECT_COLOR_10": "选择颜色10",
+  "SELECT_TOOL": "选择{0}工具",
+  "SELECT_COLOR_1_DESCRIPTIVE": "选择色板中首项颜色",
+  "SELECT_COLOR_2_DESCRIPTIVE": "选择色板中第二项颜色",
+  "SELECT_COLOR_3_DESCRIPTIVE": "选择色板中第三项颜色",
+  "SELECT_COLOR_4_DESCRIPTIVE": "选择色板中第四项颜色",
+  "SELECT_COLOR_5_DESCRIPTIVE": "选择色板中第五项颜色",
+  "SELECT_COLOR_6_DESCRIPTIVE": "选择色板中第六项颜色",
+  "SELECT_COLOR_7_DESCRIPTIVE": "选择色板中第七项颜色",
+  "SELECT_COLOR_8_DESCRIPTIVE": "选择色板中第八项颜色",
+  "SELECT_COLOR_9_DESCRIPTIVE": "选择色板中第九项颜色",
+  "SELECT_COLOR_10_DESCRIPTIVE": "选择色板中第十项颜色",
+  "SWAP_COLORS": "交换颜色",
+  "SWAP_COLORS_DESCRIPTIVE": "交换首要和次要颜色",
+  "SEARCH": "搜索",
+  "COMMAND_SEARCH": "命令搜索",
+  "OPEN_COMMAND_SEARCH": "打开命令搜索窗口",
+  "SELECT": "选择",
+  "DESELECT": "取消选择",
+  "INVERT": "反色",
+  "SELECTION": "选区",
+  "SELECT_ALL": "全选",
+  "SELECT_ALL_DESCRIPTIVE": "全部选择",
+  "CLEAR_SELECTION": "清除选区",
+  "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_DESCRIPTIVE": "将选区转为新蒙版",
+  "ADD_SELECTION_TO_MASK": "将选区添加到蒙版",
+  "SUBTRACT_SELECTION_FROM_MASK": "從蒙版中減去選區",
+  "INTERSECT_SELECTION_MASK": "将选区与选区香蕉",
+  "SELECTION_TO_MASK": "选区转蒙版",
+  "TO_NEW_MASK": "至新蒙版",
+  "ADD_TO_MASK": "添加至蒙版",
+  "SUBTRACT_FROM_MASK": "从蒙版减去",
+  "INTERSECT_WITH_MASK": "与蒙版相交",
+  "STYLUS": "数位笔",
+  "TOGGLE_PEN_MODE": "开/关笔模式",
+  "UNDO": "撤销",
+  "UNDO_DESCRIPTIVE": "撤销上次更改",
+  "REDO": "重做",
+  "REDO_DESCRIPTIVE": "重做上次撤销",
+  "WINDOWS": "窗口",
+  "TOGGLE_GRIDLINES": "开/关网格线",
+  "ZOOM_IN": "放大",
+  "ZOOM_OUT": "缩小",
+  "NEW_WINDOW_FOR_IMG": "为当前图片创建新窗口",
+  "CENTER_ACTIVE_VIEWPORT": "居中视口",
+  "FLIP_VIEWPORT_HORIZONTALLY": "将视口水平翻转",
+  "FLIP_VIEWPORT_VERTICALLY": "将视口垂直翻转",
+  "SETTINGS": "设置",
+  "OPEN_SETTINGS": "打开设置",
+  "OPEN_SETTINGS_DESCRIPTIVE": "打开设置窗口",
+  "OPEN_STARTUP_WINDOW": "打开起始窗口",
+  "OPEN_SHORTCUT_WINDOW": "打开捷径窗口",
+  "OPEN_ABOUT_WINDOW": "打开关于窗口",
+  "OPEN_NAVIGATION_WINDOW": "打开导航窗口",
+  "ERROR": "错误",
+  "INTERNAL_ERROR": "内部错误",
+  "ERROR_SAVE_LOCATION": "无法将文件保存至指定位置",
+  "ERROR_WHILE_SAVING": "保存时发生了一个内部错误。请再试一次。",
+  "UNKNOWN_ERROR_SAVING": "保存时发生了一个错误。",
+  "FAILED_ASSOCIATE_LOSPEC": "无法连接至Lospec调色板",
+  "REDDIT": "Reddit",
+  "GITHUB": "GitHub",
+  "YOUTUBE": "YouTube",
+  "DONATE": "捐款",
+  "YES": "是",
+  "NO": "否",
+  "CANCEL": "取消",
+  "UNNAMED": "无标题",
+  "OPEN_COMMAND_DEBUG_WINDOW": "打开命令调试窗口",
+  "DELETE": "删除",
+  "USER_PREFS": "用户设定(漫游)",
+  "SHORTCUT_FILE": "快捷方式(漫游)",
+  "EDITOR_DATA": "编辑器资料(本地)",
+  "MOVE_VIEWPORT_TOOLTIP": "移动视口({0})。",
+  "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_ACTION_DISPLAY_DEFAULT": "点击并拖动鼠标以绘制长方形。拖动时按住Shift以绘制正方形。",
+  "RECTANGLE_TOOL_ACTION_DISPLAY_SHIFT": "点击并拖动以绘制正方形。",
+  "KEEP_ORIGINAL_IMAGE_SETTING": "保存原图",
+  "ROTATE_VIEWPORT_TOOLTIP": "旋转视口。({0})",
+  "ROTATE_VIEWPORT_ACTION_DISPLAY": "点击并拖动以旋转视口",
+  "SELECT_TOOL_TOOLTIP": "选择区域({0})。",
+  "SELECT_TOOL_ACTION_DISPLAY_DEFAULT": "点击并拖动鼠标以选择一个区域。按住Shift以将其加至已有选区。按住Ctrl以从选区中删除选择。",
+  "SELECT_TOOL_ACTION_DISPLAY_SHIFT": "点击并拖动以加至已有选区。",
+  "SELECT_TOOL_ACTION_DISPLAY_CTRL": "点击并拖动以从选区中删除选择。",
+  "ZOOM_TOOL_TOOLTIP": "缩放视图({0})。单击以放大,按住Alt后单击以缩小。",
+  "ZOOM_TOOL_ACTION_DISPLAY_DEFAULT": "点击并拖动以缩放视图。单击以放大,按住Ctrl后单击以缩小。",
+  "ZOOM_TOOL_ACTION_DISPLAY_CTRL": "点击并拖动以缩放视图。单击以缩小,松开Ctrl后单击以放大。",
+  "BRIGHTNESS_TOOL_TOOLTIP": "将像素变亮或变暗({0})。按住Ctrl以将像素变暗。",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_DEFAULT": "在像素上绘画以将其变亮。按住Ctrl以变暗。",
+  "BRIGHTNESS_TOOL_ACTION_DISPLAY_CTRL": "在像素上绘画以将其变暗。松开Ctrl以变亮。",
+  "COLOR_PICKER_TOOLTIP": "从画布中选取主要颜色。({0})",
+  "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以考虑所有图层。",
+  "LASSO_TOOL_TOOLTIP": "拉索。({0})",
+  "LASSO_TOOL_ACTION_DISPLAY_DEFAULT": "单击并拖动以选取拉索内的像素。按住Shift以将其加至已有选区。按住Ctrl以从选区中删除选择。",
+  "LASSO_TOOL_ACTION_DISPLAY_SHIFT": "单击并拖动以将其加至已有选区。",
+  "LASSO_TOOL_ACTION_DISPLAY_CTRL": "单击并拖动以从选区中删除选择。",
+  "LINE_TOOL_TOOLTIP": "在画布上画直线({0})。按住 Shift 以启动吸附功能。",
+  "LINE_TOOL_ACTION_DISPLAY_DEFAULT": "单击并拖动以画直线。按住Shift以启动吸附功能。",
+  "LINE_TOOL_ACTION_DISPLAY_SHIFT": "点击并拖动以在启用吸附功能时绘制直线。",
+  "MAGIC_WAND_TOOL_TOOLTIP": "魔法棒({0})。填满选区",
+  "MAGIC_WAND_ACTION_DISPLAY": "单击以填满选区。",
+  "PEN_TOOL": "笔",
+  "BRIGHTNESS_TOOL": "亮度",
+  "COLOR_PICKER_TOOL": "选色器",
+  "ELLIPSE_TOOL": "椭圆",
+  "ERASER_TOOL": "橡皮",
+  "FLOOD_FILL_TOOL": "填满",
+  "LASSO_TOOL": "拉索",
+  "LINE_TOOL": "直线",
+  "MAGIC_WAND_TOOL": "魔法棒",
+  "MOVE_TOOL": "移动",
+  "MOVE_VIEWPORT_TOOL": "移动视图",
+  "RECTANGLE_TOOL": "长方形",
+  "ROTATE_VIEWPORT_TOOL": "旋转视图",
+  "SELECT_TOOL_NAME": "选择",
+  "ZOOM_TOOL": "缩放",
+  "SHAPE_LABEL": "形状",
+  "MODE_LABEL": "模式",
+  "SCOPE_LABEL": "范围",
+  "FILL_SHAPE_LABEL": "填充形状",
+  "FILL_COLOR_LABEL": "填充颜色",
+  "TOOL_SIZE_LABEL": "工具大小",
+  "STRENGTH_LABEL": "强度",
+  "NEW": "新建",
+  "ADD": "添加",
+  "SUBTRACT": "删减",
+  "INTERSECT": "相交",
+  "RECTANGLE": "长方形",
+  "CIRCLE": "圆形",
+  "ABOUT": "关于",
+  "MINIMIZE": "最小化",
+  "RESTORE": "还原",
+  "MAXIMIZE": "最大化",
+  "CLOSE": "关闭",
+  "EXPORT_SIZE_HINT": "如果你想分享此图片,尝试{0}%以获得最佳清晰度",
+  "CREATE": "创建",
+  "BASE_LAYER_NAME": "基础图层",
+  "ENABLE_MASK": "开启蒙版",
+  "SELECTED_AREA_EMPTY": "所选区域为空",
+  "NOTHING_TO_COPY": "没有可复制的内容",
+  "REFERENCE_LAYER_PATH": "参考图层路径",
+  "FLIP": "反转",
+  "ROTATION": "旋转",
+  "ROT_IMG_90_D": "顺时针旋转图片90°",
+  "ROT_IMG_180_D": "旋转图片180°",
+  "ROT_IMG_-90_D": "逆时针旋转图片90°",
+  "ROT_LAYERS_90_D": "顺时针旋转已选图片90°",
+  "ROT_LAYERS_180_D": "旋转已选图片180°",
+  "ROT_LAYERS_-90_D": "逆时针旋转已选图片90°",
+  "UNNAMED_PALETTE": "未命名调色板",
+  "CLICK_SELECT_PRIMARY": "单击以将其设为主色",
+  "PEN_MODE": "画笔模式",
+  "VIEW": "视图",
+  "HORIZONTAL_LINE_SYMMETRY": "水平对称",
+  "VERTICAL_LINE_SYMMETRY": "垂直对称",
+  "COLOR_PICKER_TITLE": "颜色选取器",
+  "COLOR_SLIDERS_TITLE": "颜色滑块",
+  "PALETTE_TITLE": "色板",
+  "SWATCHES_TITLE": "颜色样品",
+  "LAYERS_TITLE": "图层",
+  "NAVIGATION_TITLE": "导航器",
+  "NORMAL_BLEND_MODE": "正常",
+  "DARKEN_BLEND_MODE": "变暗",
+  "MULTIPLY_BLEND_MODE": "叠加",
+  "COLOR_BURN_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": "差值",
+  "EXCLUSION_BLEND_MODE": "排除",
+  "HUE_BLEND_MODE": "色相保留",
+  "SATURATION_BLEND_MODE": "饱和",
+  "LUMINOSITY_BLEND_MODE": "光度",
+  "COLOR_BLEND_MODE": "颜色",
+  "NOT_SUPPORTED_BLEND_MODE": "不支持",
+  "RESTART": "重启",
+  "SORT_BY": "排序方式:",
+  "NAME": "名称",
+  "COLORS": "颜色",
+  "DEFAULT": "正常",
+  "ALPHABETICAL": "字母顺序",
+  "COLOR_COUNT": "颜色数量",
+  "ANY": "任何",
+  "MAX": "最多",
+  "MIN": "最少",
+  "EXACT": "精准",
+  "ASCENDING": "顺序",
+  "DESCENDING": "倒序",
+  "NAME_IS_TOO_LONG": "名称过长",
+  "STOP_IT_TEXT1": "够了!把文件命名好。",
+  "STOP_IT_TEXT2": "请别再复制这些文件名了好吗?!",
+  "REPLACER_TOOLTIP": "右键色板并选择代替或将其放置于此。",
+  "CLICK_TO_CHOOSE_COLOR": "单击以选择颜色",
+  "REPLACE_COLOR": "代替颜色",
+  "PALETTE_COLOR_TOOLTIP": "单击以选为主色。点击并将其拖动至另一个色板以将其互换。",
+  "ADD_FROM_SWATCHES": "从颜色样品中加入",
+  "ADD_COLOR_TO_PALETTE": "将颜色加至色板",
+  "USE_IN_CURRENT_IMAGE": "在当前图片中使用",
+  "ADD_TO_FAVORITES": "加至收藏夹",
+  "BROWSE_PALETTES": "浏览色板",
+  "LOAD_PALETTE": "导入色板",
+  "SAVE_PALETTE": "保存色板",
+  "FAVORITES": "收藏夹",
+  "ADD_FROM_CURRENT_PALETTE": "从当前调色板添加",
+  "OPEN_PALETTES_DIR_TOOLTIP": "在文件管理器中打开色板文件夹",
+  "BROWSE_ON_LOSPEC_TOOLTIP": "在Lospec中浏览色板",
+  "IMPORT_FROM_FILE_TOOLTIP": "从文件导入",
+  "TOP_LEFT": "左上角",
+  "TOP_CENTER": "上方",
+  "TOP_RIGHT": "右上角",
+  "MIDDLE_LEFT": "左方",
+  "MIDDLE_CENTER": "居中",
+  "MIDDLE_RIGHT": "右方",
+  "BOTTOM_LEFT": "左下角",
+  "BOTTOM_CENTER": "下方",
+  "BOTTOM_RIGHT": "右下角",
+  "CLIP_TO_BELOW": "裁剪至下方图层",
+  "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": "从模版导入",
+  "SHORTCUTS_IMPORTED_SUCCESS": "捷径已被成功导入。",
+  "WARNING_RESET_SHORTCUTS_DEFAULT": "你确认要将所有捷径重置为默认值吗?",
+  "SUCCESS": "成功",
+  "WARNING": "警告",
+  "ERROR_IMPORTING_IMAGE": "导入图片时出现了错误。",
+  "SHORTCUTS_CORRUPTED_TITLE": "损坏的捷径文件",
+  "SHORTCUTS_CORRUPTED": "捷径文件已损坏,将其重置为默认值。",
+  "FAILED_DOWNLOAD_PALETTE": "无法下载色板",
+  "FILE_INCORRECT_FORMAT": "文件格式不正确",
+  "INVALID_FILE": "无效文件",
+  "SHORTCUTS_FILE_INCORRECT_FORMAT": "捷径文件格式不正确",
+  "UNSUPPORTED_FILE_FORMAT": "不支持此文件格式",
+  "ALREADY_ASSIGNED": "已被分配",
+  "REPLACE": "代替",
+  "SWAP": "互换",
+  "SHORTCUT_ALREADY_ASSIGNED_SWAP": "此捷径已被分配至“{0}”\n是否将其代替或互换?",
+  "SHORTCUT_ALREADY_ASSIGNED_OVERWRITE": "此捷径已被分配至“{0}”\n是否将其代替?",
+  "UNSAVED_CHANGES": "未保存更改",
+  "DOCUMENT_MODIFIED_SAVE": "此文件已被更改。是否保存?",
+  "SESSION_UNSAVED_DATA": "{0}有未保存资料。你确定吗?",
+  "PROJECT_MAINTAINERS": "项目维护者",
+  "OTHER_AWESOME_CONTRIBUTORS": "和其他超棒的贡献者",
+  "HELP": "帮助",
+  "STOP_IT_TEXT3": "不,真的,别这样。",
+  "STOP_IT_TEXT4": "你就没有别的事情可做吗?!",
+  "LINEAR_DODGE_BLEND_MODE": "线性减淡(增加)",
+  "PRESS_ANY_KEY": "按任意键",
+  "NONE_SHORTCUT": "无",
+  "REFERENCE": "参考",
+  "PUT_REFERENCE_LAYER_ABOVE": "将参考图层上移一个图层",
+  "PUT_REFERENCE_LAYER_BELOW": "将参考图层下移一个图层",
+  "TOGGLE_VERTICAL_SYMMETRY": "开/关垂直对称",
+  "TOGGLE_HORIZONTAL_SYMMETRY": "开/关水平对称",
+  "RESET_VIEWPORT": "重置视图",
+  "VIEWPORT_SETTINGS": "视图设置",
+  "MOVE_TOOL_ACTION_DISPLAY_TRANSFORMING": "单击并拖动以移动已选图层中的像素。",
+  "MOVE_TOOL_ACTION_DISPLAY_CTRL": "拖动鼠标以移动所有图层。",
+  "CTRL_KEY": "Ctrl",
+  "SHIFT_KEY": "Shift",
+  "ALT_KEY": "Alt",
+  "RENAME": "重命名",
+  "PIXEL_UNIT": "像素",
+  "OPEN_LOCALIZATION_DEBUG_WINDOW": "打开本地化调试窗口",
+  "FORCE_OTHER_FLOW_DIRECTION": "强制其他流向",
+  "API_KEY": "API密码",
+  "LOCALIZATION_VIEW_TYPE": "本地化视图类型",
+  "LOAD_LANGUAGE_FROM_FILE": "从文件导入语言",
+  "LOG_IN": "登录",
+  "SYNC": "同步",
+  "NOT_LOGGED_IN": "未登录",
+  "POE_EDITOR_ERROR": "POEditor 错误:{0} {1}",
+  "HTTP_ERROR_MESSAGE": "HTTP 错误: {0} {1}",
+  "LOGGED_IN": "已登录",
+  "SYNCED_SUCCESSFULLY": "成功同步",
+  "EXCEPTION_ERROR": "异常:{0}",
+  "DROP_PALETTE": "将色板放在这里",
+  "SECURITY_ERROR": "安全错误",
+  "SECURITY_ERROR_MSG": "无权在指定位置写入",
+  "IO_ERROR": "文件读写错误",
+  "IO_ERROR_MSG": "写入磁盘时出错",
+  "FAILED_ASSOCIATE_PIXI": "无法将.pixi文件关联到PixiEditor。",
+  "COULD_NOT_SAVE_PALETTE": "保存色板时出错。",
+  "NO_COLORS_TO_SAVE": "无颜色可保存",
+  "ALL_LAYERS": "全部图层",
+  "SINGLE_LAYER": "单个图层",
+  "CHOOSE": "选择",
+  "REMOVE": "移除",
+  "FILE_FORMAT_NOT_ASEPRITE_KEYS": "非\".aseprite-keys\"文件",
+  "FILE_HAS_INVALID_SHORTCUT": "此文件含有无效捷径",
+  "FILE_EXTENSION_NOT_SUPPORTED": "不支持\"{0}\"类型文件",
+  "ERROR_READING_FILE": "读取文件时发生错误",
+  "DISCARD_PALETTE": "遗弃色板",
+  "DISCARD_PALETTE_CONFIRMATION": "你确定要遗弃目前色版吗?此操作无法被撤销。",
+  "IMPORT_AS_NEW_LAYER": "导入为新图层",
+  "PASTE_AS_PRIMARY_COLOR": "粘贴为主要颜色",
+  "IMPORT_AS_NEW_FILE": "导入为新文件",
+  "IMPORT_PALETTE_FILE": "导入色版文件",
+  "IMPORT_MULTIPLE_PALETTE_COLORS": "将多种颜色导入至色板",
+  "IMPORT_SINGLE_PALETTE_COLOR": "将一种颜色导入至色板",
+  "IMPORT_AS_REFERENCE_LAYER": "导入为参考图层",
+  "NAVIGATOR_PICK_ACTION_DISPLAY": "右键以选择颜色,按住Shift时右键以将其复制至剪贴薄",
+  "OPEN_FILE_FROM_CLIPBOARD": "从剪贴薄中打开",
+  "OPEN_FILE_FROM_CLIPBOARD_DESCRIPTIVE": "从剪贴薄中打开文件",
+  "OPEN_LOCALIZATION_DATA": "是否打开 LocalizationData.json?更新日期已被加入至剪贴板。\n注意更改只会在重启此程序后启用。",
+  "DOWNLOADING_LANGUAGE_FAILED": "无法下载语言。\nAPI密码可能被过度使用。",
+  "LOCALIZATION_DATA_NOT_FOUND": "无法找到本地化资料路径",
+  "APPLY": "应用",
+  "UPDATE_SOURCE": "更新来源",
+  "COPY_TO_CLIPBOARD": "复制到剪贴薄",
+  "LANGUAGE_FILE_NOT_FOUND": "无法找到语言文件。\n正在寻找{0}",
+  "PROJECT_ROOT_NOT_FOUND": "PixiEditor 项目根未找到。\n正在寻找 PixiEditor.csproj",
+  "LOCALIZATION_FOLDER_NOT_FOUND": "本地化文件未找到。\n正在寻找 /Data/Localization",
+  "SELECT_A_LANGUAGE": "选择语言",
+  "DONE": "完成",
+  "SOURCE_UNSET_OR_MISSING": "来源未找到/已丢失",
+  "SOURCE_NEWER": "来源更新",
+  "SOURCE_UP_TO_DATE": "来源已更新",
+  "SOURCE_OLDER": "云更新",
+  "COLOR_PICKER_ACTION_DISPLAY_REFERENCE_ONLY": "Click to pick colors from the reference layer.",
+  "COLOR_PICKER_ACTION_DISPLAY_CANVAS_ONLY": "Click to pick colors from the canvas.",
+  "LOCALIZATION_DEBUG_WINDOW_TITLE": "Localization Debug Window",
+  "COMMAND_DEBUG_WINDOW_TITLE": "Command Debug Window",
+  "SHORTCUTS_TITLE": "Shortcuts",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_PERSPECTIVE": "Drag handles to scale transform. Hold Ctrl and drag a handle to move the handle freely. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_SHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Hold Alt and drag a side handle to shear. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_ROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally. Drag outside handles to rotate.",
+  "TRANSFORM_ACTION_DISPLAY_SCALE_NOROTATE_NOSHEAR_NOPERSPECTIVE": "Drag handles to scale transform. Hold Shift to scale proportionally."
+}

+ 83 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/LocalizationData.json

@@ -0,0 +1,83 @@
+{
+  "$schema": "./LocalizationDataSchema.json",
+  "Languages": [
+    {
+      "name": "English",
+      "code": "en",
+      "localeFileName": "en.json",
+      "iconFileName": "en.png",
+      "lastUpdated": "2023-05-24 21:23:22"
+    },
+    {
+      "name": "Polski",
+      "code": "pl",
+      "localeFileName": "pl.json",
+      "iconFileName": "pl.png",
+      "lastUpdated": "2023-05-24 21:30:08"
+    },
+    {
+      "name": "Deutsch",
+      "code": "de",
+      "localeFileName": "de.json",
+      "iconFileName": "de.png",
+      "lastUpdated": "2023-05-09 16:10:00"
+    },
+    {
+      "name": "Español",
+      "code": "es",
+      "localeFileName": "es.json",
+      "iconFileName": "es.png",
+      "lastUpdated": "2023-05-17 18:46:19"
+    },
+    {
+      "name": "中文",
+      "code": "zh",
+      "localeFileName": "zh.json",
+      "iconFileName": "zh.png",
+      "lastUpdated": "2023-05-15 03:23:28"
+    },
+    {
+      "name": "Русский",
+      "code": "ru",
+      "localeFileName": "ru.json",
+      "iconFileName": "ru.png",
+      "lastUpdated": "2023-05-15 00:49:58"
+    },
+    {
+      "name": "Українська",
+      "code": "uk",
+      "localeFileName": "uk.json",
+      "iconFileName": "uk.png",
+      "lastUpdated": "2023-05-18 17:47:07"
+    },
+    {
+      "name": "عربي",
+      "code": "ar",
+      "localeFileName": "ar.json",
+      "iconFileName": "ar.png",
+      "rightToLeft": true,
+      "lastUpdated": "2023-05-20 11:59:21"
+    },
+    {
+      "name": "Čeština",
+      "code": "cs",
+      "localeFileName": "cs.json",
+      "iconFileName": "cs.png",
+      "lastUpdated": "2023-05-07 14:01:25"
+    },
+    {
+      "name": "Português (Brasil)",
+      "code": "pt-br",
+      "localeFileName": "pt-br.json",
+      "iconFileName": "pt-br.png",
+      "lastUpdated": "2023-05-15 09:13:45"
+    },
+    {
+      "name": "Magyar",
+      "code": "hu",
+      "localeFileName": "hu.json",
+      "iconFileName": "hu.png",
+      "lastUpdated": "2023-05-09 00:07:37"
+    }
+  ]
+}

+ 59 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/Localization/LocalizationDataSchema.json

@@ -0,0 +1,59 @@
+{
+  "type": "object",
+  "additionalProperties": false,
+  "properties": {
+    "Languages": {
+      "type": "array",
+      "items": {
+        "type": "object",
+        "properties": {
+          "name": {
+            "type": "string",
+            "description": "The localized name of the language"
+          },
+          "code": {
+            "type": "string",
+            "description": "The code associated with the language",
+            "minLength": 2
+          },
+          "localeFileName": {
+            "type": "string",
+            "description": "The name of the key-value json file found in Data/Localization/Languages. Must be prepended with extension unique name and : (e.g. pixieditor.sampleExtension:en.json)",
+            "pattern": ".*\\.json",
+            "format": "uri",
+            "default": ".json"
+          },
+          "iconFileName": {
+            "type": "string",
+            "description": "The name of the png icon for the language found in Images/LanguageFlags",
+            "pattern": ".*\\.png",
+            "format": "uri",
+            "default": ".png"
+          },
+          "rightToLeft": {
+            "type": "boolean",
+            "description": "Does the language use RTL Layout",
+            "default": true
+          },
+          "lastUpdated": {
+            "type": "string",
+            "description": "Date Time offset. Use format '07.05.2023 12:13:35 +00:00'",
+            "format": "date-time"
+          }
+        },
+        "required": [
+          "name",
+          "code",
+          "localeFileName",
+          "iconFileName"
+        ]
+      }
+    },
+    "$schema": {
+      "type": "string"
+    }
+  },
+  "required": [
+    "Languages"
+  ]
+}

+ 614 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Data/ShortcutActionMaps/AsepriteShortcutMap.json

@@ -0,0 +1,614 @@
+{
+    "Cut": {
+      "Command": "PixiEditor.Clipboard.Cut",
+      "DefaultShortcut": {
+        "key": "X",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "Paste": {
+      "Command": "PixiEditor.Clipboard.Paste",
+      "DefaultShortcut": {
+        "key": "V",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Clipboard.PasteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "Copy": {
+      "Command": "PixiEditor.Clipboard.Copy",
+      "DefaultShortcut": {
+        "key": "C",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.OpenPaletteBrowser",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "LoadPalette": {
+      "Command": "PixiEditor.Colors.ImportPalette",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.SelectFirstPaletteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.SelectSecondPaletteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.SelectThirdPaletteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.SelectFourthPaletteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.SelectFifthPaletteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.SelectSixthPaletteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.SelectSeventhPaletteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.SelectEighthPaletteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.SelectNinthPaletteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.SelectTenthPaletteColor",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "SwitchColors": {
+      "Command": "PixiEditor.Colors.Swap",
+      "DefaultShortcut": {
+        "key": "X",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Colors.RemoveSwatch",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "NewFile": {
+      "Command": "PixiEditor.File.New",
+      "DefaultShortcut": {
+        "key": "N",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "OpenFile": {
+      "Command": "PixiEditor.File.Open",
+      "DefaultShortcut": {
+        "key": "O",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "Recent": {
+      "Command": "PixiEditor.File.OpenRecent",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "SaveFile": {
+      "Command": "PixiEditor.File.Save",
+      "DefaultShortcut": {
+        "key": "S",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "SaveFileAs": {
+      "Command": "PixiEditor.File.SaveAsNew",
+      "DefaultShortcut": {
+        "key": "S",
+        "modifiers": ["Ctrl", "Shift"]
+      },
+      "Parameters": []
+    },
+    "SaveFileCopyAs": {
+      "Command": "PixiEditor.File.Export",
+      "DefaultShortcut": {
+        "key": "S",
+        "modifiers": ["Ctrl", "Alt", "Shift"]
+      },
+      "Parameters": []
+    },
+    "RemoveLayer": {
+      "Command": "PixiEditor.Layer.DeleteSelected",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Layer.DeleteAllSelected",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "NewLayer.group=true": {
+      "Command": "PixiEditor.Layer.NewFolder",
+      "DefaultShortcut": {
+        "key": "N",
+        "modifiers": ["Alt", "Shift"]
+      },
+      "Parameters": []
+    },
+    "NewLayer": {
+      "Command": "PixiEditor.Layer.NewLayer",
+      "DefaultShortcut": {
+        "key": "N",
+        "modifiers": ["Shift"]
+      },
+      "Parameters": []
+    },
+    "SetInkType.type=lock-alpha": {
+      "Command": "PixiEditor.Layer.ToggleLockTransparency",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "DuplicateLayer": {
+      "Command": "PixiEditor.Layer.DuplicateSelectedLayer",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Layer.CreateMask",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Layer.DeleteMask",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Layer.MoveSelectedMemberUpwards",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Layer.MoveSelectedMemberDownwards",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Layer.MergeSelected",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Layer.MergeWithAbove",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "MergeDownLayer": {
+      "Command": "PixiEditor.Layer.MergeWithBelow",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "Launch.path=/docs/.type=url": {
+      "Command": "PixiEditor.Links.OpenDocumentation",
+      "DefaultShortcut": {
+        "key": "B",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "MaskAll": {
+      "Command": "PixiEditor.Selection.SelectAll",
+      "DefaultShortcut": {
+        "key": "A",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "DeselectMask": {
+      "Command": "PixiEditor.Selection.Clear",
+      "DefaultShortcut": {
+        "key": "D",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Selection.TransformArea",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Stylus.TogglePenMode",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "ChangeBrush.change=increment-size": {
+      "Command": "PixiEditor.Tools.IncreaseSize",
+      "DefaultShortcut": {
+        "key": "+",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "ChangeBrush.change=decrement-size": {
+      "Command": "PixiEditor.Tools.DecreaseSize",
+      "DefaultShortcut": {
+        "key": "-",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "Redo": {
+      "Command": "PixiEditor.Undo.Redo",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "Undo": {
+      "Command": "PixiEditor.Undo.Undo",
+      "DefaultShortcut": {
+        "key": "Z",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Restart",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "ShowGrid": {
+      "Command": "PixiEditor.View.ToggleGrid",
+      "DefaultShortcut": {
+        "key": "'",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "Zoom.action=in": {
+      "Command": "PixiEditor.View.ZoomIn",
+      "DefaultShortcut": {
+        "key": "+",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "Zoom.action=out": {
+      "Command": "PixiEditor.View.Zoomout",
+      "DefaultShortcut": {
+        "key": "-",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Window.CreateNewViewport",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "Options": {
+      "Command": "PixiEditor.Window.OpenSettingsWindow",
+      "DefaultShortcut": {
+        "key": "K",
+        "modifiers": ["Ctrl"]
+      },
+      "Parameters": []
+    },
+    "Home": {
+      "Command": "PixiEditor.Window.OpenStartupWindow",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "KeyboardShortcuts": {
+      "Command": "PixiEditor.Window.OpenShortcutWindow",
+      "DefaultShortcut": {
+        "key": "F7",
+        "modifiers": [
+            "Ctrl",
+            "Alt",
+            "Shift"
+        ]
+      },
+      "Parameters": []
+    },
+    "About": {
+      "Command": "PixiEditor.Window.OpenAboutWindow",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "TogglePreview": {
+      "Command": "PixiEditor.Window.OpenNavigationWindow",
+      "DefaultShortcut": {
+        "key": "F7",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Document.ClipCanvas",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "SymmetryMode.orientation=vertical": {
+      "Command": "PixiEditor.Document.ToggleVerticalSymmetryAxis",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "SymmetryMode.orientation=horizontal": {
+      "Command": "PixiEditor.Document.ToggleHorizontalSymmetryAxis",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "Clear": {
+      "Command": "PixiEditor.Document.DeletePixels",
+      "DefaultShortcut": {
+        "key": "Delete",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "SpriteSize": {
+      "Command": "PixiEditor.Document.ResizeDocument",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "CanvasSize": {
+      "Command": "PixiEditor.Document.ResizeCanvas",
+      "DefaultShortcut": {
+        "key": "C",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "": {
+      "Command": "PixiEditor.Document.CenterContent",
+      "DefaultShortcut": {
+        "key": "None",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "eyedropper": {
+      "Command": "PixiEditor.Tools.Select.ColorPickerToolViewModel",
+      "DefaultShortcut": {
+        "key": "I",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "ellipse": {
+      "Command": "PixiEditor.Tools.Select.EllipseToolViewModel",
+      "DefaultShortcut": {
+        "key": "U",
+        "modifiers": [ "Shift" ]
+      },
+      "Parameters": []
+    },
+    "eraser": {
+      "Command": "PixiEditor.Tools.Select.EraserToolViewModel",
+      "DefaultShortcut": {
+        "key": "E",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "paint_bucket": {
+      "Command": "PixiEditor.Tools.Select.FloodFillToolViewModel",
+      "DefaultShortcut": {
+        "key": "G",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "lasso": {
+      "Command": "PixiEditor.Tools.Select.LassoToolViewModel",
+      "DefaultShortcut": {
+        "key": "Q",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "line": {
+      "Command": "PixiEditor.Tools.Select.LineToolViewModel",
+      "DefaultShortcut": {
+        "key": "L",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "magic_wand": {
+      "Command": "PixiEditor.Tools.Select.MagicWandToolViewModel",
+      "DefaultShortcut": {
+        "key": "W",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "move": {
+      "Command": "PixiEditor.Tools.Select.MoveToolViewModel",
+      "DefaultShortcut": {
+        "key": "V",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "hand": {
+      "Command": "PixiEditor.Tools.Select.MoveViewportToolViewModel",
+      "DefaultShortcut": {
+        "key": "H",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "pencil": {
+      "Command": "PixiEditor.Tools.Select.PenToolViewModel",
+      "DefaultShortcut": {
+        "key": "B",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "rectangle": {
+      "Command": "PixiEditor.Tools.Select.RectangleToolViewModel",
+      "DefaultShortcut": {
+        "key": "U",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "rectangular_marquee": {
+      "Command": "PixiEditor.Tools.Select.SelectToolViewModel",
+      "DefaultShortcut": {
+        "key": "M",
+        "modifiers": null
+      },
+      "Parameters": []
+    },
+    "zoom": {
+      "Command": "PixiEditor.Tools.Select.ZoomToolViewModel",
+      "DefaultShortcut": {
+        "key": "Z",
+        "modifiers": null
+      },
+      "Parameters": []
+    }
+  }

+ 23 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Exceptions/Exceptions/CorruptedFileException.cs

@@ -0,0 +1,23 @@
+using System;
+using System.Runtime.Serialization;
+using PixiEditor.Extensions.Common.Localization;
+
+namespace PixiEditor.Avalonia.Exceptions.Exceptions;
+
+[Serializable]
+internal class CorruptedFileException : RecoverableException
+{
+    public CorruptedFileException() : base("FAILED_TO_OPEN_FILE") { }
+
+    public CorruptedFileException(Exception innerException) : base("FAILED_TO_OPEN_FILE", innerException) { }
+
+    public CorruptedFileException(LocalizedString displayMessage) : base(displayMessage) { }
+
+    public CorruptedFileException(LocalizedString displayMessage, Exception innerException) : base(displayMessage, innerException) { }
+
+    public CorruptedFileException(LocalizedString displayMessage, string exceptionMessage) : base(displayMessage, exceptionMessage) { }
+
+    public CorruptedFileException(LocalizedString displayMessage, string exceptionMessage, Exception innerException) : base(displayMessage, exceptionMessage, innerException) { }
+
+    protected CorruptedFileException(SerializationInfo info, StreamingContext context) : base(info, context) { }
+}

+ 21 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Exceptions/Exceptions/InvalidFileTypeException.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Runtime.Serialization;
+using PixiEditor.Extensions.Common.Localization;
+
+namespace PixiEditor.Avalonia.Exceptions.Exceptions;
+
+internal class InvalidFileTypeException : RecoverableException
+{
+    public InvalidFileTypeException() { }
+
+    public InvalidFileTypeException(LocalizedString displayMessage) : base(displayMessage) { }
+
+    public InvalidFileTypeException(LocalizedString displayMessage, Exception innerException) : base(displayMessage, innerException) { }
+
+    public InvalidFileTypeException(LocalizedString displayMessage, string exceptionMessage) : base(displayMessage, exceptionMessage) { }
+
+    public InvalidFileTypeException(LocalizedString displayMessage, string exceptionMessage, Exception innerException) : base(displayMessage, exceptionMessage, innerException) { }
+
+    protected InvalidFileTypeException(SerializationInfo info, StreamingContext context) : base(info, context) { }
+
+}

+ 22 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Exceptions/Exceptions/MissingFileException.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Runtime.Serialization;
+using PixiEditor.Extensions.Common.Localization;
+
+namespace PixiEditor.Avalonia.Exceptions.Exceptions;
+
+internal class MissingFileException : RecoverableException
+{
+    public MissingFileException() : base("FILE_NOT_FOUND") { }
+
+    public MissingFileException(Exception innerException) : base("FILE_NOT_FOUND", innerException) { }
+
+    public MissingFileException(LocalizedString displayMessage) : base(displayMessage) { }
+
+    public MissingFileException(LocalizedString displayMessage, Exception innerException) : base(displayMessage, innerException) { }
+
+    public MissingFileException(LocalizedString displayMessage, string exceptionMessage) : base(displayMessage, exceptionMessage) { }
+
+    public MissingFileException(LocalizedString displayMessage, string exceptionMessage, Exception innerException) : base(displayMessage, exceptionMessage, innerException) { }
+
+    protected MissingFileException(SerializationInfo info, StreamingContext context) : base(info, context) { }
+}

+ 37 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Exceptions/Exceptions/RecoverableException.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Runtime.Serialization;
+using PixiEditor.Extensions.Common.Localization;
+
+namespace PixiEditor.Avalonia.Exceptions.Exceptions;
+
+public class RecoverableException : Exception
+{
+    public LocalizedString DisplayMessage { get; set; }
+
+    public RecoverableException() 
+    {
+        DisplayMessage = "INTERNAL_ERROR";
+    }
+
+    public RecoverableException(LocalizedString displayMessage) 
+    {
+        DisplayMessage = displayMessage;
+    }
+
+    public RecoverableException(LocalizedString displayMessage, Exception innerException) : base(null, innerException) 
+    {
+        DisplayMessage = displayMessage;
+    }
+
+    public RecoverableException(LocalizedString displayMessage, string exceptionMessage) : base(exceptionMessage)
+    {
+        DisplayMessage = displayMessage;
+    }
+
+    public RecoverableException(LocalizedString displayMessage, string exceptionMessage, Exception innerException) : base(exceptionMessage, innerException)
+    {
+        DisplayMessage = displayMessage;
+    }
+
+    protected RecoverableException(SerializationInfo info, StreamingContext context) : base(info, context) { }
+}

+ 146 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Helpers/CrashHelper.cs

@@ -0,0 +1,146 @@
+using System;
+using System.Globalization;
+using System.IO;
+using System.Net.Http;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+using ByteSizeLib;
+using Hardware.Info;
+using PixiEditor.Models.DataHolders;
+
+namespace PixiEditor.Helpers;
+
+internal class CrashHelper
+{
+    private readonly IHardwareInfo hwInfo;
+
+    public static void SaveCrashInfo(Exception exception)
+    {
+        try
+        {
+            //TODO: proper implementation of Mouse.OverrideCursor = Cursors.Wait;
+        }
+        catch (Exception e)
+        {
+            exception = new AggregateException(exception, e);
+        }
+        
+        var report = CrashReport.Generate(exception);
+        report.TrySave();
+        report.RestartToCrashReport();
+    }
+
+    public CrashHelper()
+    {
+        hwInfo = new HardwareInfo();
+    }
+
+    public void GetCPUInformation(StringBuilder builder)
+    {
+        builder.AppendLine("CPU:");
+        hwInfo.RefreshCPUList(false);
+
+        foreach (var processor in hwInfo.CpuList)
+        {
+            builder
+                .AppendLine($"  Name: {processor.Name}")
+                .AppendLine($"  Speed: {(processor.CurrentClockSpeed / 1000f).ToString("F2", CultureInfo.InvariantCulture)} GHz")
+                .AppendLine($"  Max Speed: {(processor.MaxClockSpeed / 1000f).ToString("F2", CultureInfo.InvariantCulture)} GHz")
+                .AppendLine();
+        }
+    }
+
+    public void GetGPUInformation(StringBuilder builder)
+    {
+        builder.AppendLine("GPU:");
+        hwInfo.RefreshVideoControllerList();
+
+        foreach (var gpu in hwInfo.VideoControllerList)
+        {
+            builder
+                .AppendLine($"  Name: {gpu.Name}")
+                .AppendLine($"  Driver: {gpu.DriverVersion}")
+                .AppendLine();
+        }
+    }
+
+    public void GetMemoryInformation(StringBuilder builder)
+    {
+        builder.AppendLine("Memory:");
+        hwInfo.RefreshMemoryStatus();
+
+        var memInfo = hwInfo.MemoryStatus;
+
+        builder
+            .AppendLine($"  Available: {new ByteSize(memInfo.AvailablePhysical).ToString("", CultureInfo.InvariantCulture)}")
+            .AppendLine($"  Total: {new ByteSize(memInfo.TotalPhysical).ToString("", CultureInfo.InvariantCulture)}");
+    }
+
+    public static void AddExceptionMessage(StringBuilder builder, Exception e)
+    {
+        builder
+            .AppendLine("\n-------Crash message-------")
+            .Append(e.GetType().ToString())
+            .Append(": ")
+            .AppendLine(e.Message);
+        {
+            var innerException = e.InnerException;
+            while (innerException != null)
+            {
+                builder
+                    .Append("\n-----Inner exception-----\n")
+                    .Append(innerException.GetType().ToString())
+                    .Append(": ")
+                    .Append(innerException.Message);
+                innerException = innerException.InnerException;
+            }
+        }
+
+        builder
+            .Append("\n\n-------Stack trace-------\n")
+            .Append(e.StackTrace);
+        {
+            var innerException = e.InnerException;
+            while (innerException != null)
+            {
+                builder
+                    .Append("\n-----Inner exception-----\n")
+                    .Append(innerException.StackTrace);
+                innerException = innerException.InnerException;
+            }
+        }
+    }
+
+    public static async Task SendExceptionInfoToWebhook(Exception e, [CallerFilePath] string filePath = "<unknown>", [CallerMemberName] string memberName = "<unknown>")
+    {
+        // TODO: Proper DebugBuild checking
+        /*if (DebugViewModel.IsDebugBuild)
+            return;*/
+        await SendReportTextToWebhook(CrashReport.Generate(e), $"{filePath}; Method {memberName}");
+    }
+
+    public static async Task SendReportTextToWebhook(CrashReport report, string catchLocation = null)
+    {
+        string reportText = report.ReportText;
+        if (catchLocation is not null)
+        {
+            reportText = $"The report was generated from an exception caught in {catchLocation}.\r\n{reportText}";
+        }
+
+        byte[] bytes = Encoding.UTF8.GetBytes(reportText);
+        string filename = Path.GetFileNameWithoutExtension(report.FilePath) + ".txt";
+
+        MultipartFormDataContent formData = new MultipartFormDataContent
+        {
+            { new ByteArrayContent(bytes, 0, bytes.Length), "crash-report", filename }
+        };
+        try
+        {
+            using HttpClient httpClient = new HttpClient();
+            string url = BuildConstants.CrashReportWebhookUrl;
+            await httpClient.PostAsync(url, formData);
+        }
+        catch { }
+    }
+}

+ 29 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Helpers/Extensions/DictionaryHelper.cs

@@ -0,0 +1,29 @@
+using System.Collections.Generic;
+
+namespace PixiEditor.Avalonia.Helpers.Extensions;
+
+internal static class DictionaryHelper
+{
+    public static void AddRangeOverride<TKey, TValue>(
+        this IDictionary<TKey, TValue> dict,
+        IDictionary<TKey, TValue> dictToAdd)
+    {
+        foreach (KeyValuePair<TKey, TValue> item in dictToAdd)
+        {
+            dict[item.Key] = item.Value;
+        }
+    }
+
+    public static void AddRangeNewOnly<TKey, TValue>(
+        this IDictionary<TKey, TValue> dict,
+        IDictionary<TKey, TValue> dictToAdd)
+    {
+        foreach (KeyValuePair<TKey, TValue> item in dictToAdd)
+        {
+            if (!dict.ContainsKey(item.Key))
+            {
+                dict.Add(item.Key, item.Value);
+            }
+        }
+    }
+}

+ 41 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Helpers/VersionHelpers.cs

@@ -0,0 +1,41 @@
+using System;
+using System.Diagnostics;
+using System.Reflection;
+using System.Text;
+
+namespace PixiEditor.Helpers;
+
+internal static class VersionHelpers
+{
+    public static Version GetCurrentAssemblyVersion() => Assembly.GetExecutingAssembly().GetName().Version;
+
+    public static string GetCurrentAssemblyVersion(Func<Version, string> toString) => toString(GetCurrentAssemblyVersion());
+
+    public static string GetCurrentAssemblyVersionString(bool moreSpecific = false)
+    {
+        StringBuilder builder = new(GetCurrentAssemblyVersion().ToString());
+
+#if DEVRELEASE
+        builder.Append(" Dev Build");
+        return builder.ToString();
+#elif MSIX_DEBUG
+        builder.Append(" MSIX Debug Build");
+        return builder.ToString();
+#elif DEBUG
+        builder.Append(" Debug Build");
+        return builder.ToString();
+#endif
+
+        if (!moreSpecific)
+            return builder.ToString();
+
+#if STEAM
+        builder.Append(" Steam Build");
+#elif MSIX
+        builder.Append(" MSIX Build");
+#elif RELEASE
+        builder.Append(" Release Build");
+#endif
+        return builder.ToString();
+    }
+}

+ 48 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/AppExtensions/ExtensionException.cs

@@ -0,0 +1,48 @@
+using PixiEditor.Avalonia.Exceptions.Exceptions;
+using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Models.Localization;
+
+namespace PixiEditor.Models.AppExtensions;
+
+public class ExtensionException : RecoverableException
+{
+    public ExtensionException(LocalizedString messageKey) : base(messageKey)
+    {
+    }
+}
+
+public class NoEntryAssemblyException : ExtensionException
+{
+    public NoEntryAssemblyException(string containingFolder) : base(new LocalizedString("ERROR_NO_ENTRY_ASSEMBLY", containingFolder))
+    {
+    }
+}
+
+public class NoClassEntryException : ExtensionException
+{
+    public NoClassEntryException(string assemblyPath) : base(new LocalizedString("ERROR_NO_CLASS_ENTRY", assemblyPath))
+    {
+    }
+}
+
+public class MissingMetadataException : ExtensionException
+{
+    public MissingMetadataException(string missingMetadataKey) : base(new LocalizedString("ERROR_MISSING_METADATA", missingMetadataKey))
+    {
+    }
+}
+
+public class ForbiddenUniqueNameExtension : ExtensionException
+{
+    public ForbiddenUniqueNameExtension() : base(new LocalizedString("ERROR_FORBIDDEN_UNIQUE_NAME"))
+    {
+    }
+}
+
+public class MissingAdditionalContentException : ExtensionException
+{
+    public MissingAdditionalContentException(string productLink) : base(new LocalizedString("ERROR_MISSING_ADDITIONAL_CONTENT", productLink))
+    {
+    }
+}
+

+ 236 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/AppExtensions/ExtensionLoader.cs

@@ -0,0 +1,236 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Threading.Tasks;
+using System.Windows;
+using Newtonsoft.Json;
+using PixiEditor.Extensions;
+using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Metadata;
+using PixiEditor.Helpers;
+using PixiEditor.Models.DataHolders;
+using PixiEditor.Models.IO;
+using PixiEditor.Platform;
+
+namespace PixiEditor.Models.AppExtensions;
+
+internal class ExtensionLoader
+{
+    private readonly Dictionary<string, OfficialExtensionData> _officialExtensionsKeys = new Dictionary<string, OfficialExtensionData>();
+    public List<Extension> LoadedExtensions { get; } = new();
+
+    public ExtensionLoader()
+    {
+        ValidateExtensionFolder();
+        _officialExtensionsKeys.Add("pixieditor.supporterpack", new OfficialExtensionData("supporter-pack.snk", AdditionalContentProduct.SupporterPack));
+    }
+
+    public void LoadExtensions()
+    {
+        var directories = Directory.GetDirectories(Paths.ExtensionsFullPath);
+        foreach (var directory in directories)
+        {
+            string packageJsonPath = Path.Combine(directory, "extension.json");
+            bool isExtension = File.Exists(packageJsonPath);
+            if (isExtension)
+            {
+                LoadExtension(packageJsonPath);
+            }
+        }
+    }
+
+    public void InitializeExtensions(ExtensionServices pixiEditorApi)
+    {
+        try
+        {
+            foreach (var extension in LoadedExtensions)
+            {
+                extension.Initialize(pixiEditorApi);
+            }
+        }
+        catch (Exception ex)
+        {
+            Task.Run(async () => await CrashHelper.SendExceptionInfoToWebhook(ex));
+        }
+    }
+
+    private void LoadExtension(string packageJsonPath)
+    {
+        string json = File.ReadAllText(packageJsonPath);
+        try
+        {
+            var metadata = JsonConvert.DeserializeObject<ExtensionMetadata>(json);
+            string directory = Path.GetDirectoryName(packageJsonPath);
+            Assembly entry = GetEntryAssembly(directory, out Type extensionType);
+            if (entry is null)
+            {
+                throw new NoEntryAssemblyException(directory);
+            }
+
+            if (!ValidateMetadata(metadata, entry))
+            {
+                return;
+            }
+
+            var extension = LoadExtensionEntry(entry, extensionType, metadata);
+            extension.Load();
+            LoadedExtensions.Add(extension);
+        }
+        catch (JsonException)
+        {
+            //MessageBox.Show(new LocalizedString("ERROR_INVALID_PACKAGE", packageJsonPath), "ERROR");
+        }
+        catch (ExtensionException ex)
+        {
+            //MessageBox.Show(ex.DisplayMessage, "ERROR");
+        }
+        catch (Exception ex)
+        {
+            //MessageBox.Show(new LocalizedString("ERROR_LOADING_PACKAGE", packageJsonPath), "ERROR");
+            Task.Run(async () => await CrashHelper.SendExceptionInfoToWebhook(ex));
+        }
+    }
+
+    private Assembly? GetEntryAssembly(string assemblyFolder, out Type extensionType)
+    {
+        string[] dlls = Directory.GetFiles(assemblyFolder, "*.dll");
+        Assembly? entryAssembly = GetEntryAssembly(dlls, out extensionType);
+
+        return entryAssembly;
+    }
+
+    private bool ValidateMetadata(ExtensionMetadata metadata, Assembly assembly)
+    {
+        if (string.IsNullOrEmpty(metadata.UniqueName))
+        {
+            throw new MissingMetadataException("Description");
+        }
+
+        string fixedUniqueName = metadata.UniqueName.ToLower().Trim();
+
+        if (fixedUniqueName.StartsWith("pixieditor".Trim(), StringComparison.OrdinalIgnoreCase))
+        {
+            if(!IsOfficialAssemblyLegit(fixedUniqueName, assembly))
+            {
+                throw new ForbiddenUniqueNameExtension();
+            }
+
+            if (!IsAdditionalContentInstalled(fixedUniqueName))
+            {
+                return false;
+            }
+        }
+        // TODO: Validate if unique name is unique
+
+        if (string.IsNullOrEmpty(metadata.DisplayName))
+        {
+            throw new MissingMetadataException("DisplayName");
+        }
+
+        if (string.IsNullOrEmpty(metadata.Version))
+        {
+            throw new MissingMetadataException("Version");
+        }
+
+        return true;
+    }
+
+    private bool IsAdditionalContentInstalled(string fixedUniqueName)
+    {
+        if (!_officialExtensionsKeys.ContainsKey(fixedUniqueName)) return false;
+        AdditionalContentProduct? product = _officialExtensionsKeys[fixedUniqueName].Product;
+
+        if (product == null) return true;
+
+        return IPlatform.Current.AdditionalContentProvider?.IsContentInstalled(product.Value) ?? false;
+    }
+
+    private bool IsOfficialAssemblyLegit(string metadataUniqueName, Assembly assembly)
+    {
+        if (assembly == null) return false; // All official extensions must have a valid assembly
+        if (!_officialExtensionsKeys.ContainsKey(metadataUniqueName)) return false;
+        bool wasVerified = false;
+        bool verified = StrongNameSignatureVerificationEx(assembly.Location, true, ref wasVerified);
+        if (!verified || !wasVerified) return false;
+
+        byte[]? assemblyPublicKey = assembly.GetName().GetPublicKey();
+        if (assemblyPublicKey == null) return false;
+
+        return PublicKeysMatch(assemblyPublicKey, _officialExtensionsKeys[metadataUniqueName].PublicKeyName);
+    }
+
+    private bool PublicKeysMatch(byte[] assemblyPublicKey, string pathToPublicKey)
+    {
+        Assembly currentAssembly = Assembly.GetExecutingAssembly();
+        using Stream? stream = currentAssembly.GetManifestResourceStream($"{currentAssembly.GetName().Name}.OfficialExtensions.{pathToPublicKey}");
+        if (stream == null) return false;
+
+        using MemoryStream memoryStream = new MemoryStream();
+        stream.CopyTo(memoryStream);
+        byte[] publicKey = memoryStream.ToArray();
+
+        return assemblyPublicKey.SequenceEqual(publicKey);
+    }
+
+    [DllImport("mscoree.dll", CharSet=CharSet.Unicode)]
+    static extern bool StrongNameSignatureVerificationEx(string wszFilePath, bool fForceVerification, ref bool pfWasVerified);
+
+    private Extension LoadExtensionEntry(Assembly entryAssembly, Type extensionType, ExtensionMetadata metadata)
+    {
+        var extension = (Extension)Activator.CreateInstance(extensionType);
+        if (extension is null)
+        {
+            throw new NoClassEntryException(entryAssembly.Location);
+        }
+
+        extension.ProvideMetadata(metadata);
+        return extension;
+    }
+
+    private Assembly? GetEntryAssembly(string[] dlls, out Type extensionType)
+    {
+        foreach (var dll in dlls)
+        {
+            try
+            {
+                var assembly = Assembly.LoadFrom(dll);
+                extensionType = assembly.GetTypes().FirstOrDefault(x => x.IsSubclassOf(typeof(Extension)));
+                if (extensionType is not null)
+                {
+                    return assembly;
+                }
+            }
+            catch
+            {
+                // ignored
+            }
+        }
+
+        extensionType = null;
+        return null;
+    }
+
+    private void ValidateExtensionFolder()
+    {
+        if (!Directory.Exists(Paths.ExtensionsFullPath))
+        {
+            Directory.CreateDirectory(Paths.ExtensionsFullPath);
+        }
+    }
+}
+
+internal struct OfficialExtensionData
+{
+    public string PublicKeyName { get; }
+    public AdditionalContentProduct? Product { get; }
+    public string? PurchaseLink { get; }
+
+    public OfficialExtensionData(string publicKeyName, AdditionalContentProduct product, string? purchaseLink = null)
+    {
+        PublicKeyName = publicKeyName;
+        Product = product;
+    }
+}

+ 75 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/AppExtensions/Services/PaletteProvider.cs

@@ -0,0 +1,75 @@
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Threading.Tasks;
+using PixiEditor.DrawingApi.Core.ColorsImpl;
+using PixiEditor.Extensions.Palettes;
+using PixiEditor.Extensions.Palettes.Parsers;
+using PixiEditor.Models.DataHolders;
+
+namespace PixiEditor.Models.AppExtensions.Services;
+
+internal sealed class PaletteProvider : IPaletteProvider
+{
+    public ObservableCollection<PaletteFileParser> AvailableParsers { get; set; }
+    public ObservableCollection<PaletteListDataSource> DataSources => dataSources;
+    private readonly ObservableCollection<PaletteListDataSource> dataSources;
+
+    public PaletteProvider()
+    {
+        dataSources = new ObservableCollection<PaletteListDataSource>();
+    }
+
+    public async Task<List<IPalette>> FetchPalettes(int startIndex, int items, FilteringSettings filtering)
+    {
+        List<IPalette> allPalettes = new();
+        foreach (PaletteListDataSource dataSource in dataSources)
+        {
+            var palettes = await dataSource.FetchPaletteList(startIndex, items, filtering);
+            allPalettes.AddRange(palettes);
+        }
+
+        return allPalettes;
+    }
+
+    public async Task<bool> AddPalette(IPalette palette, bool overwrite = false)
+    {
+        //TODO: Implement
+        /*LocalPalettesFetcher localPalettesFetcher = dataSources.OfType<LocalPalettesFetcher>().FirstOrDefault();
+        if(localPalettesFetcher == null)
+        {
+            return false;
+        }
+
+        if (LocalPalettesFetcher.PaletteExists(palette.Name))
+        {
+            if (overwrite)
+            {
+                await localPalettesFetcher.DeletePalette(palette.Name);
+            }
+            else
+            {
+                return false;
+            }
+        }
+
+
+        string finalName = LocalPalettesFetcher.GetNonExistingName(palette.Name, true);
+
+        await localPalettesFetcher.SavePalette(
+            finalName,
+            palette.Colors.ToArray());*/
+
+        return true;
+    }
+
+    public void RegisterDataSource(PaletteListDataSource dataSource)
+    {
+        if(dataSources.Contains(dataSource)) return;
+
+        dataSources.Add(dataSource);
+
+        dataSource.AvailableParsers = AvailableParsers.ToList();
+        dataSource.Initialize();
+    }
+}

+ 51 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/AppExtensions/Services/WindowProvider.cs

@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Markup;
+using PixiEditor.Extensions;
+using PixiEditor.Extensions.Windowing;
+
+namespace PixiEditor.Models.AppExtensions.Services;
+
+public class WindowProvider : IWindowProvider
+{
+    private Dictionary<string, Func<IPopupWindow>> _openHandlers = new();
+
+    public WindowProvider RegisterHandler(string id, Func<IPopupWindow> handler)
+    {
+        if (_openHandlers.ContainsKey(id))
+        {
+            _openHandlers[id] = handler;
+            throw new ArgumentException($"Window with id {id} already has a handler");
+        }
+
+        _openHandlers.Add(id, handler);
+        return this;
+    }
+
+    public PopupWindow CreatePopupWindow(string title, object body)
+    {
+        //TODO: Implement BasicPopup
+        //return new PopupWindow(new BasicPopup { Title = title, Body = body });
+
+        return null;
+    }
+
+    public PopupWindow OpenWindow(WindowType type)
+    {
+        return OpenWindow($"PixiEditor.{type}");
+    }
+
+    public PopupWindow OpenWindow(string windowId)
+    {
+        var handler = _openHandlers.FirstOrDefault(x => x.Key == windowId);
+        if (handler.Key != null)
+        {
+            return new PopupWindow(handler.Value());
+        }
+        else
+        {
+            throw new ArgumentException($"Window with id {windowId} does not exist");
+        }
+    }
+}

+ 13 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Constants.cs

@@ -0,0 +1,13 @@
+namespace PixiEditor.Models;
+
+internal class Constants
+{
+    public const int DefaultCanvasSize = 64;
+    public const int MaxPreviewWidth = 128;
+    public const int MaxPreviewHeight = 128;
+
+    public const int MaxCanvasSize = 9999;
+
+    public const string NativeExtensionNoDot = "pixi";
+    public const string NativeExtension = "." + NativeExtensionNoDot;
+}

+ 221 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/ExceptionHandling/CrashReport.cs

@@ -0,0 +1,221 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.IO.Compression;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using Newtonsoft.Json;
+using PixiEditor.Helpers;
+
+namespace PixiEditor.Models.DataHolders;
+
+#nullable enable
+internal class CrashReport : IDisposable
+{
+    public static CrashReport Generate(Exception exception)
+    {
+        StringBuilder builder = new();
+        DateTimeOffset currentTime = DateTimeOffset.Now;
+
+        builder
+            .AppendLine($"PixiEditor {VersionHelpers.GetCurrentAssemblyVersionString(moreSpecific: true)} x{IntPtr.Size * 8} crashed on {currentTime:yyyy.MM.dd} at {currentTime:HH:mm:ss} {currentTime:zzz}")
+            .AppendLine($"Report: {Guid.NewGuid()}\n")
+            .AppendLine("-----System Information----")
+            .AppendLine("General:")
+            .AppendLine($"  OS: {Environment.OSVersion.VersionString}")
+            .AppendLine();
+
+        CrashHelper helper = new();
+
+        try
+        {
+            helper.GetCPUInformation(builder);
+        }
+        catch (Exception cpuE)
+        {
+            builder.AppendLine($"Error ({cpuE.GetType().FullName}: {cpuE.Message}) while gathering CPU information, skipping...");
+        }
+
+        try
+        {
+            helper.GetGPUInformation(builder);
+        }
+        catch (Exception gpuE)
+        {
+            builder.AppendLine($"Error ({gpuE.GetType().FullName}: {gpuE.Message}) while gathering GPU information, skipping...");
+        }
+
+        try
+        {
+            helper.GetMemoryInformation(builder);
+        }
+        catch (Exception memE)
+        {
+            builder.AppendLine($"Error ({memE.GetType().FullName}: {memE.Message}) while gathering memory information, skipping...");
+        }
+
+        CrashHelper.AddExceptionMessage(builder, exception);
+
+        string filename = $"crash-{currentTime:yyyy-MM-dd_HH-mm-ss_fff}.zip";
+        string path = Path.Combine(
+            Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
+            "PixiEditor",
+            "crash_logs");
+        Directory.CreateDirectory(path);
+
+        CrashReport report = new();
+        report.FilePath = Path.Combine(path, filename);
+        report.ReportText = builder.ToString();
+
+        return report;
+    }
+
+    public static CrashReport Parse(string path)
+    {
+        CrashReport report = new();
+        report.FilePath = path;
+
+        report.ZipFile = System.IO.Compression.ZipFile.Open(path, ZipArchiveMode.Read);
+        report.ExtractReport();
+
+        return report;
+    }
+
+    public string FilePath { get; set; }
+
+    public string ReportText { get; set; }
+
+    private ZipArchive ZipFile { get; set; }
+
+    public int GetDocumentCount() => ZipFile.Entries.Where(x => x.FullName.EndsWith(".pixi")).Count();
+
+    public List<(string? originalPath, byte[] dotPixiBytes)> RecoverDocuments()
+    {
+        // Load .pixi files
+        Dictionary<string, byte[]> recoveredDocuments = new();
+        foreach (ZipArchiveEntry entry in ZipFile.Entries.Where(x => x.FullName.EndsWith(".pixi")))
+        {
+            using Stream stream = entry.Open();
+            using MemoryStream memStream = new();
+            stream.CopyTo(memStream);
+            recoveredDocuments.Add(entry.Name, memStream.ToArray());
+        }
+
+        ZipArchiveEntry? originalPathsEntry = ZipFile.Entries.Where(entry => entry.FullName == "DocumentInfo.json").FirstOrDefault();
+        if (originalPathsEntry is null)
+            return recoveredDocuments.Select<KeyValuePair<string, byte[]>, (string?, byte[])>(keyValue => (null, keyValue.Value)).ToList();
+
+        // Load original paths
+        Dictionary<string, string?> originalPaths;
+        {
+            using Stream stream = originalPathsEntry.Open();
+            using StreamReader reader = new(stream);
+            string json = reader.ReadToEnd();
+            originalPaths = JsonConvert.DeserializeObject<Dictionary<string, string?>>(json);
+        }
+
+        return (
+            from docKeyValue in recoveredDocuments
+            join pathKeyValue in originalPaths on docKeyValue.Key equals pathKeyValue.Key
+            select (pathKeyValue.Value, docKeyValue.Value)
+            ).ToList();
+    }
+
+    public void Dispose()
+    {
+        ZipFile.Dispose();
+    }
+
+    public void RestartToCrashReport()
+    {
+        Process process = new();
+
+        process.StartInfo = new()
+        {
+            FileName = Path.ChangeExtension(Assembly.GetExecutingAssembly().Location, "exe"),
+            Arguments = $"--crash \"{Path.GetFullPath(FilePath)}\""
+        };
+
+        process.Start();
+    }
+
+    public bool TrySave()
+    {
+        try
+        {
+            Save();
+            return true;
+        }
+        catch
+        {
+            return false;
+        }
+    }
+
+    public void Save()
+    {
+        using FileStream zipStream = new(FilePath, FileMode.Create, FileAccess.Write);
+        using ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create);
+
+        using (Stream reportStream = archive.CreateEntry("report.txt").Open())
+        {
+            reportStream.Write(Encoding.UTF8.GetBytes(ReportText));
+        }
+        //TODO: Implement
+
+        /*var vm = ViewModelMain.Current;
+        if (vm is null)
+            return;*/
+
+        // Write the documents into zip
+        int counter = 0;
+        Dictionary<string, string?> originalPaths = new();
+        //TODO: Implement
+        /*foreach (DocumentViewModel document in vm.DocumentManagerSubViewModel.Documents)
+        {
+            try
+            {
+                string fileName = string.IsNullOrWhiteSpace(document.FullFilePath) ? "Unsaved" : Path.GetFileNameWithoutExtension(document.FullFilePath);
+                string nameInZip = $"{fileName}-{document.OpenedUTC}-{counter}.pixi".Replace(':', '_');
+
+                byte[] serialized = PixiParser.Serialize(document.ToSerializable());
+
+                using Stream documentStream = archive.CreateEntry($"Documents/{nameInZip}").Open();
+                documentStream.Write(serialized);
+
+                originalPaths.Add(nameInZip, document.FullFilePath);
+            }
+            catch { }
+            counter++;
+        }*/
+
+        // Write their original paths into a separate file
+        {
+            using Stream jsonStream = archive.CreateEntry("DocumentInfo.json").Open();
+            using StreamWriter writer = new StreamWriter(jsonStream);
+
+            string originalPathsJson = JsonConvert.SerializeObject(originalPaths, Formatting.Indented);
+            writer.Write(originalPathsJson);
+        }
+    }
+
+    private void ExtractReport()
+    {
+        ZipArchiveEntry entry = ZipFile.GetEntry("report.txt");
+        using Stream stream = entry.Open();
+
+        byte[] encodedReport = new byte[entry.Length];
+        stream.Read(encodedReport);
+
+        ReportText = Encoding.UTF8.GetString(encodedReport);
+    }
+
+    internal class CrashReportUserMessage
+    {
+        public string Message { get; set; }
+
+        public string Mail { get; set; }
+    }
+}

+ 16 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/IO/Paths.cs

@@ -0,0 +1,16 @@
+using System;
+using System.IO;
+using System.Reflection;
+
+namespace PixiEditor.Models.IO;
+public static class Paths
+{
+    public static string DataResourceUri { get; } = $"avares://{typeof(Paths).Assembly.GetName().Name}/Data/";
+    public static string DataFullPath { get; } = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Data");
+
+    public static string ExtensionsFullPath { get; } = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Extensions");
+
+    public static string PathToPalettesFolder { get; } = Path.Join(
+        Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
+        "PixiEditor", "Palettes");
+}

+ 196 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Models/Localization/LocalizationProvider.cs

@@ -0,0 +1,196 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using Avalonia;
+using Avalonia.Platform;
+using Newtonsoft.Json;
+using PixiEditor.Avalonia.Helpers.Extensions;
+using PixiEditor.Extensions;
+using PixiEditor.Extensions.Common.Localization;
+using PixiEditor.Extensions.Common.UserPreferences;
+using PixiEditor.Models.AppExtensions;
+using PixiEditor.Models.IO;
+
+namespace PixiEditor.Models.Localization;
+
+internal class LocalizationProvider : ILocalizationProvider
+{
+    private Language debugLanguage;
+
+    public string LocalizationDataPath { get; } = Path.Combine(Paths.DataResourceUri, "Localization", "LocalizationData.json");
+
+    public LocalizationData LocalizationData { get; private set; }
+
+    public Language CurrentLanguage { get; set; }
+
+    public LanguageData SelectedLanguage { get; private set; }
+
+    public LanguageData FollowSystem { get; } = new() { Name = "Follow system", Code = "system" };
+
+    public event Action<Language> OnLanguageChanged;
+
+    public void ReloadLanguage() => OnLanguageChanged?.Invoke(CurrentLanguage);
+
+    public Language DefaultLanguage { get; private set; }
+
+    private ExtensionLoader extensionLoader;
+
+    public LocalizationProvider(ExtensionLoader extensionLoader)
+    {
+        this.extensionLoader = extensionLoader;
+        ILocalizationProvider.SetAsCurrent(this);
+    }
+
+    public void LoadData(string currentLanguageCode = null)
+    {
+        JsonSerializer serializer = new();
+        
+        if (!AssetLoader.Exists(new Uri(LocalizationDataPath)))
+        {
+            throw new FileNotFoundException("Localization data file not found.", LocalizationDataPath);
+        }
+        
+        using Stream stream = AssetLoader.Open(new Uri(LocalizationDataPath));
+        LocalizationData = serializer.Deserialize<LocalizationData>(new JsonTextReader(new StreamReader(stream)) { Culture = CultureInfo.InvariantCulture, DateTimeZoneHandling = DateTimeZoneHandling.Utc });
+
+        if (LocalizationData is null)
+        {
+            throw new InvalidDataException("Localization data is null.");
+        }
+
+        LoadExtensionLocalizationData(LocalizationData);
+
+        if (LocalizationData.Languages is null || LocalizationData.Languages.Count == 0)
+        {
+            throw new InvalidDataException("Localization data does not contain any languages.");
+        }
+
+        LocalizationData.Languages.Add(FollowSystem);
+        
+        DefaultLanguage = LoadLanguageInternal(LocalizationData.Languages[0]);
+
+        LoadLanguage(LocalizationData.Languages.FirstOrDefault(x => x.Code == currentLanguageCode, FollowSystem));
+    }
+
+    private void LoadExtensionLocalizationData(LocalizationData localizationData)
+    {
+        if(localizationData is null)
+        {
+            throw new InvalidDataException(nameof(localizationData));
+        }
+
+        if (extensionLoader?.LoadedExtensions is null)
+        {
+            return;
+        }
+
+        foreach (Extension extension in extensionLoader?.LoadedExtensions)
+        {
+            if (extension.Metadata.Localization is null)
+            {
+                continue;
+            }
+
+            localizationData.MergeWith(extension.Metadata.Localization.Languages, Path.GetDirectoryName(extension.Assembly.Location));
+        }
+    }
+
+    public void LoadLanguage(LanguageData languageData)
+    {
+        if (languageData is null)
+        {
+            throw new ArgumentNullException(nameof(languageData));
+        }
+        
+        if(languageData.Code == CurrentLanguage?.LanguageData.Code)
+        {
+            return;
+        }
+        
+        bool firstLoad = CurrentLanguage is null;
+        
+        SelectedLanguage = languageData;
+
+        if (languageData.Code == FollowSystem.Code)
+        {
+            string osLanguage = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;
+            languageData = LocalizationData.Languages.FirstOrDefault(x => x.Code == osLanguage, LocalizationData.Languages[0]);
+        }
+        
+        CurrentLanguage = LoadLanguageInternal(languageData);
+
+        if (!firstLoad)
+        {
+            OnLanguageChanged?.Invoke(CurrentLanguage);
+        }
+    }
+
+    public void LoadDebugKeys(Dictionary<string, string> languageKeys, bool rightToLeft)
+    {
+        debugLanguage = new Language(
+            new LanguageData
+        {
+            Code = "debug",
+            Name = "Debug"
+        }, languageKeys, rightToLeft);
+
+        CurrentLanguage = debugLanguage;
+        
+        OnLanguageChanged?.Invoke(debugLanguage);
+    }
+
+    private Language LoadLanguageInternal(LanguageData languageData)
+    {
+        string mainLocalePath = GetLocalePath(languageData);
+
+        if (!AssetLoader.Exists(new Uri(mainLocalePath)))
+        {
+            throw new FileNotFoundException("Locale file not found.", mainLocalePath);
+        }
+
+        Dictionary<string, string> locale = new Dictionary<string, string>();
+
+        languageData.AdditionalLocalePaths ??= new List<string>();
+        int localesCount = 1 + languageData.AdditionalLocalePaths.Count;
+
+        string[] allLocalePaths = new string[localesCount];
+        allLocalePaths[0] = mainLocalePath;
+        languageData.AdditionalLocalePaths.CopyTo(allLocalePaths, 1);
+
+        foreach (string localePath in allLocalePaths)
+        {
+            if (!AssetLoader.Exists(new Uri(localePath)) && !File.Exists(localePath))
+            {
+                continue;
+            }
+
+            locale.AddRangeOverride(ReadLocaleFile(localePath));
+        }
+
+        if (locale is null)
+        {
+            throw new InvalidDataException("Locale is null.");
+        }
+
+        return new(languageData, locale, languageData.RightToLeft);
+    }
+
+    private IDictionary<string, string> ReadLocaleFile(string localePath)
+    {
+        JsonSerializer serializer = new();
+        using Stream stream = AssetLoader.Open(new Uri(localePath));
+        return serializer.Deserialize<Dictionary<string, string>>(new JsonTextReader(new StreamReader(stream)));
+    }
+
+    private string GetLocalePath(LanguageData languageData)
+    {
+        if (languageData.CustomLocaleAssemblyPath is not null)
+        {
+            return Path.Combine(languageData.CustomLocaleAssemblyPath, languageData.LocaleFileName);
+        }
+
+        return Path.Combine(Paths.DataResourceUri, "Localization", "Languages", languageData.LocaleFileName);
+    }
+}

+ 8 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/PixiEditor.Avalonia.csproj

@@ -3,12 +3,13 @@
         <TargetFramework>net7.0</TargetFramework>
         <Nullable>enable</Nullable>
         <LangVersion>latest</LangVersion>
-        <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
     </PropertyGroup>
 
 
     <ItemGroup>
         <AvaloniaResource Include="Assets\**" />
+      <AvaloniaResource Include="Data\**" />
+      <AvaloniaResource Include="Data\Languages\**" />
     </ItemGroup>
 
     <ItemGroup>
@@ -18,6 +19,11 @@
         <PackageReference Include="Avalonia.ReactiveUI" Version="$(AvaloniaVersion)" />
         <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
         <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)" />
+        <PackageReference Include="ByteSize" Version="2.1.1" />
+        <PackageReference Include="Hardware.Info" Version="11.0.0" />
+        <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+        <PackageReference Include="PixiEditor.Parser" Version="3.3.0" />
+        <PackageReference Include="PixiEditor.Parser.Skia" Version="3.0.0" />
     </ItemGroup>
 
     <ItemGroup>
@@ -26,6 +32,7 @@
       <ProjectReference Include="..\..\PixiEditor.ChangeableDocument\PixiEditor.ChangeableDocument.csproj" />
       <ProjectReference Include="..\..\PixiEditor.DrawingApi.Core\PixiEditor.DrawingApi.Core.csproj" />
       <ProjectReference Include="..\..\PixiEditor.DrawingApi.Skia\PixiEditor.DrawingApi.Skia.csproj" />
+      <ProjectReference Include="..\..\PixiEditor.Extensions\PixiEditor.Extensions.csproj" />
       <ProjectReference Include="..\..\PixiEditor.Platform.MSStore\PixiEditor.Platform.MSStore.csproj" />
       <ProjectReference Include="..\..\PixiEditor.Platform.Standalone\PixiEditor.Platform.Standalone.csproj" />
       <ProjectReference Include="..\..\PixiEditor.Platform.Steam\PixiEditor.Platform.Steam.csproj" />

+ 14 - 1
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Views/MainView.axaml

@@ -3,6 +3,7 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:vm="clr-namespace:PixiEditor.Avalonia.ViewModels"
+             xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              x:Class="PixiEditor.Avalonia.Views.MainView"
              x:DataType="vm:MainViewModel">
@@ -12,5 +13,17 @@
     <vm:MainViewModel />
   </Design.DataContext>
 
-  <TextBlock Text="{Binding Greeting}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
+    <StackPanel Margin="10" HorizontalAlignment="Left">
+
+        <TextBlock Text="Text"/>
+        <TextBlock Text="h1" Classes="h1"/>
+        <TextBlock Text="h2" Classes="h2"/>
+        <TextBlock Text="h3" Classes="h3"/>
+        <TextBlock Text="h4" Classes="h4"/>
+
+        <TextBlock ui:Translator.Key="LANGUAGE" ui:Translator.TooltipKey="LANGUAGE"/>
+
+        <ProgressBar Width="100" Value="50"/>
+    </StackPanel>
+
 </UserControl>

+ 7 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/Views/MainWindow.axaml.cs

@@ -1,4 +1,8 @@
+using Avalonia;
 using Avalonia.Controls;
+using Avalonia.Platform;
+using PixiEditor.Models.Localization;
+using Splat;
 
 namespace PixiEditor.Avalonia.Views;
 
@@ -6,6 +10,9 @@ public partial class MainWindow : Window
 {
     public MainWindow()
     {
+        LocalizationProvider localizationProvider = new LocalizationProvider(null);
+        localizationProvider.LoadData(/*TODO: IPreferences.Current.GetPreference<string>("LanguageCode");*/);
+
         InitializeComponent();
     }
 }

+ 20 - 0
src/PixiEditor.Avalonia/PixiEditor.Avalonia/stylecop.json

@@ -0,0 +1,20 @@
+{
+  "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
+  "settings": {
+    "indentation": {
+      "indentationSize": 4
+    },
+    "maintainabilityRules": {
+      "topLevelTypes": [ "class", "interface", "enum", "struct" ]
+    },
+    "readabilityRules": {
+      "allowBuiltInTypeAliases": false
+    },
+    "documentationRules": {
+      "xmlHeader": false,
+      "documentInterfaces": false,
+      "documentExposedElements": false,
+      "documentInternalElements": false
+    }
+  }
+}

+ 2 - 2
src/PixiEditor.Extensions/Common/Localization/ILocalizationProvider.cs

@@ -2,7 +2,7 @@
 
 public interface ILocalizationProvider
 {
-    public static ILocalizationProvider Current { get; private set; }
+    public static ILocalizationProvider? Current { get; private set; }
     public string LocalizationDataPath { get; }
     public LocalizationData LocalizationData { get; }
     public Language CurrentLanguage { get; set; }
@@ -13,7 +13,7 @@ public interface ILocalizationProvider
     /// <summary>
     ///     Loads the localization data from the specified file.
     /// </summary>
-    public void LoadData();
+    public void LoadData(string currentLanguageCode = null);
     public void LoadLanguage(LanguageData languageData);
     public void LoadDebugKeys(Dictionary<string, string> languageKeys, bool rightToLeft);
     public void ReloadLanguage();

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

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

+ 2 - 2
src/PixiEditor.Extensions/PixiEditor.Extensions.csproj

@@ -1,10 +1,9 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
     <PropertyGroup>
-        <TargetFramework>net7.0-windows</TargetFramework>
+        <TargetFramework>net7.0</TargetFramework>
         <ImplicitUsings>enable</ImplicitUsings>
         <Nullable>enable</Nullable>
-      <UseWPF>true</UseWPF>
       <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
       <Version>0.0.3</Version>
       <Title>PixiEditor Extensions</Title>
@@ -14,6 +13,7 @@
     </PropertyGroup>
 
     <ItemGroup>
+      <PackageReference Include="Avalonia" Version="11.0.0-rc1.1" />
       <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
       <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="7.0.0" />
       <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />

+ 7 - 8
src/PixiEditor.Extensions/UI/ExternalProperty.cs

@@ -1,5 +1,4 @@
-using System.Windows;
-using System.Windows.Data;
+using Avalonia;
 using PixiEditor.Extensions.Common.Localization;
 
 namespace PixiEditor.Views;
@@ -8,16 +7,16 @@ public abstract class ExternalProperty
 {
     public Type PropertyType { get; set; }
 
-    public Action<DependencyObject, Binding>? SetTranslationBinding { get; set; }
-    public Action<DependencyObject, LocalizedString>? SetTranslation { get; set; }
+    public Action<AvaloniaObject, IObservable<string>>? SetTranslationBinding { get; set; }
+    public Action<AvaloniaObject, LocalizedString>? SetTranslation { get; set; }
 
-    public ExternalProperty(Type propertyType, Action<DependencyObject, Binding> setTranslationBinding)
+    public ExternalProperty(Type propertyType, Action<AvaloniaObject, IObservable<string>> setTranslationBinding)
     {
         PropertyType = propertyType;
         SetTranslationBinding = setTranslationBinding;
     }
 
-    public ExternalProperty(Type propertyType, Action<DependencyObject, LocalizedString> translationAction)
+    public ExternalProperty(Type propertyType, Action<AvaloniaObject, LocalizedString> translationAction)
     {
         PropertyType = propertyType;
         SetTranslation = translationAction;
@@ -26,11 +25,11 @@ public abstract class ExternalProperty
 
 public class ExternalProperty<T> : ExternalProperty
 {
-    public ExternalProperty(Action<DependencyObject, Binding> setTranslationBinding) : base(typeof(T), setTranslationBinding)
+    public ExternalProperty(Action<AvaloniaObject, IObservable<string>> setTranslationBinding) : base(typeof(T), setTranslationBinding)
     {
     }
 
-    public ExternalProperty(Action<DependencyObject, LocalizedString> translationAction) : base(typeof(T), translationAction)
+    public ExternalProperty(Action<AvaloniaObject, LocalizedString> translationAction) : base(typeof(T), translationAction)
     {
     }
 }

+ 4 - 4
src/PixiEditor.Extensions/UI/ICustomTranslatorElement.cs

@@ -1,10 +1,10 @@
-using System.Windows;
-using System.Windows.Data;
+using Avalonia;
+using Avalonia.Data;
 
 namespace PixiEditor.Views;
 
 public interface ICustomTranslatorElement
 {
-    public void SetTranslationBinding(DependencyProperty dependencyProperty, Binding binding);
-    public DependencyProperty GetDependencyProperty();
+    public void SetTranslationBinding(AvaloniaProperty dependencyProperty, IObservable<string> valueObservable);
+    public AvaloniaProperty GetDependencyProperty();
 }

+ 93 - 93
src/PixiEditor.Extensions/UI/Translator.cs

@@ -1,78 +1,83 @@
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Data;
-using System.Windows.Documents;
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Controls.Documents;
+using Avalonia.Controls.Primitives;
+using Avalonia.Data;
+using Avalonia.Data.Core;
+using Avalonia.Reactive;
 using PixiEditor.Extensions.Common.Localization;
 using PixiEditor.Extensions.Helpers;
 using PixiEditor.Views;
 
 namespace PixiEditor.Extensions.UI;
 
-public class Translator : UIElement
+public class Translator : Control
 {
-    public static List<ExternalProperty> ExternalProperties { get; } = new();
+    public static List<ExternalProperty> ExternalProperties { get; } = new List<ExternalProperty>();
 
-    public static readonly DependencyProperty KeyProperty = DependencyProperty.RegisterAttached(
-        "Key",
-        typeof(string),
-        typeof(Translator),
-        new FrameworkPropertyMetadata(default(string), FrameworkPropertyMetadataOptions.AffectsRender, KeyPropertyChangedCallback));
+    public static readonly AttachedProperty<string> KeyProperty =
+        AvaloniaProperty.RegisterAttached<Translator, Control, string>("Key");
 
-    public static readonly DependencyProperty LocalizedStringProperty = DependencyProperty.RegisterAttached(
-        "LocalizedString",
-        typeof(LocalizedString),
-        typeof(Translator),
-        new FrameworkPropertyMetadata(default(LocalizedString), FrameworkPropertyMetadataOptions.AffectsRender, LocalizedStringPropertyChangedCallback));
+    public static readonly AttachedProperty<LocalizedString> LocalizedStringProperty =
+        AvaloniaProperty.RegisterAttached<Translator, Control, LocalizedString>("LocalizedString");
 
-    public static readonly DependencyProperty EnumProperty = DependencyProperty.RegisterAttached(
-        "Enum",
-        typeof(object),
-        typeof(Translator),
-        new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender, EnumPropertyChangedCallback));
+    public static readonly AttachedProperty<object> EnumProperty =
+        AvaloniaProperty.RegisterAttached<Translator, Control, object>("Enum");
 
-    public static readonly DependencyProperty TooltipKeyProperty = DependencyProperty.RegisterAttached(
-        "TooltipKey", typeof(string), typeof(Translator), 
-        new FrameworkPropertyMetadata(default(string), FrameworkPropertyMetadataOptions.AffectsRender, TooltipKeyPropertyChangedCallback));
+    public static readonly AttachedProperty<string> TooltipKeyProperty =
+        AvaloniaProperty.RegisterAttached<Translator, Control, string>("TooltipKey");
 
-    public static readonly DependencyProperty ValueProperty = DependencyProperty.RegisterAttached(
-        "Value",
-        typeof(string),
-        typeof(Translator),
-        new FrameworkPropertyMetadata(default(string), FrameworkPropertyMetadataOptions.AffectsRender));
+    public static readonly AttachedProperty<string> ValueProperty =
+        AvaloniaProperty.RegisterAttached<Translator, Control, string>("Value");
 
-    public static readonly DependencyProperty TooltipLocalizedStringProperty = DependencyProperty.RegisterAttached(
-        "TooltipLocalizedString",
-        typeof(LocalizedString),
-        typeof(Translator),
-        new FrameworkPropertyMetadata(default(LocalizedString), FrameworkPropertyMetadataOptions.AffectsRender, TooltipLocalizedStringPropertyChangedCallback));
+    public static readonly AttachedProperty<LocalizedString> TooltipLocalizedStringProperty =
+        AvaloniaProperty.RegisterAttached<Translator, Control, LocalizedString>("TooltipLocalizedString");
 
-    private static void TooltipLocalizedStringPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
+    static Translator()
     {
-        d.SetValue(FrameworkElement.ToolTipProperty, GetTooltipLocalizedString(d).Value);
-        ILocalizationProvider.Current.OnLanguageChanged += (lang) => OnLanguageChangedTooltipString(d, lang);
+        IObserver<AvaloniaPropertyChangedEventArgs<string>> keyObserver = new AnonymousObserver<AvaloniaPropertyChangedEventArgs<string>>(KeyPropertyChanged);
+        KeyProperty.Changed.Subscribe(keyObserver);
+
+        IObserver<AvaloniaPropertyChangedEventArgs<LocalizedString>> localizedStringObserver = new AnonymousObserver<AvaloniaPropertyChangedEventArgs<LocalizedString>>(LocalizedStringPropertyChanged);
+        LocalizedStringProperty.Changed.Subscribe(localizedStringObserver);
+
+        IObserver<AvaloniaPropertyChangedEventArgs<object>> enumObserver = new AnonymousObserver<AvaloniaPropertyChangedEventArgs<object>>(EnumPropertyChanged);
+        EnumProperty.Changed.Subscribe(enumObserver);
+
+        IObserver<AvaloniaPropertyChangedEventArgs<string>> tooltipKeyObserver = new AnonymousObserver<AvaloniaPropertyChangedEventArgs<string>>(TooltipKeyPropertyChanged);
+        TooltipKeyProperty.Changed.Subscribe(tooltipKeyObserver);
+
+        IObserver<AvaloniaPropertyChangedEventArgs<LocalizedString>> tooltipLocalizedStringObserver = new AnonymousObserver<AvaloniaPropertyChangedEventArgs<LocalizedString>>(TooltipLocalizedStringPropertyChanged);
+        TooltipLocalizedStringProperty.Changed.Subscribe(tooltipLocalizedStringObserver);
+    }
+
+    private static void TooltipLocalizedStringPropertyChanged(AvaloniaPropertyChangedEventArgs<LocalizedString> e)
+    {
+        e.Sender.SetValue(ToolTip.TipProperty, GetTooltipLocalizedString(e.Sender).Value);
+        ILocalizationProvider.Current.OnLanguageChanged += (lang) => OnLanguageChangedTooltipString(e.Sender, lang);
     }
 
-    private static void OnLanguageChangedTooltipString(DependencyObject dependencyObject, Language lang)
+    private static void OnLanguageChangedTooltipString(AvaloniaObject dependencyObject, Language lang)
     {
         LocalizedString localizedString = GetTooltipLocalizedString(dependencyObject);
         LocalizedString newLocalizedString = new(localizedString.Key, localizedString.Parameters);
 
-        dependencyObject.SetValue(FrameworkElement.ToolTipProperty, newLocalizedString.Value);
+        dependencyObject.SetValue(ToolTip.TipProperty, newLocalizedString.Value);
     }
-    
-    private static void TooltipKeyPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
+
+    private static void TooltipKeyPropertyChanged(AvaloniaPropertyChangedEventArgs<string> e)
     {
-        d.SetValue(FrameworkElement.ToolTipProperty, new LocalizedString(GetTooltipKey(d)).Value);
+        e.Sender.SetValue(ToolTip.TipProperty, new LocalizedString(GetTooltipKey(e.Sender)).Value);
 
         if (ILocalizationProvider.Current == null)
         {
             return;
         }
-        
-        ILocalizationProvider.Current.OnLanguageChanged += (lang) => OnLanguageChangedTooltipKey(d, lang);
+
+        ILocalizationProvider.Current.OnLanguageChanged += (lang) => OnLanguageChangedTooltipKey(e.Sender, lang);
     }
 
-    private static void OnLanguageChangedKey(DependencyObject obj, Language newLanguage)
+    private static void OnLanguageChangedKey(AvaloniaObject obj, Language newLanguage)
     {
         string key = GetKey(obj);
         if (key != null)
@@ -81,106 +86,101 @@ public class Translator : UIElement
         }
     }
 
-    private static void OnLanguageChangedTooltipKey(DependencyObject element, Language lang)
+    private static void OnLanguageChangedTooltipKey(AvaloniaObject element, Language lang)
     {
         string tooltipKey = GetTooltipKey(element);
         if (tooltipKey != null)
         {
-            element.SetValue(FrameworkElement.ToolTipProperty, new LocalizedString(tooltipKey).Value);
+            element.SetValue(ToolTip.TipProperty, new LocalizedString(tooltipKey).Value);
         }
     }
 
-    public static void SetTooltipKey(DependencyObject element, string value)
+    public static void SetTooltipKey(AvaloniaObject element, string value)
     {
         element.SetValue(TooltipKeyProperty, value);
     }
 
-    public static string GetTooltipKey(DependencyObject element)
+    public static string GetTooltipKey(AvaloniaObject element)
     {
         return (string)element.GetValue(TooltipKeyProperty);
     }
 
-    private static void KeyPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
+    private static void KeyPropertyChanged(AvaloniaPropertyChangedEventArgs<string> e)
     {
-        if (e.NewValue is string key)
-        {
-            UpdateKey(d, key);
-            
-            if (ILocalizationProvider.Current == null)
-            {
-                return;
-            }
+        UpdateKey(e.Sender, e.NewValue.Value);
 
-            ILocalizationProvider.Current.OnLanguageChanged += (lang) => OnLanguageChangedKey(d, lang);
+        if (ILocalizationProvider.Current == null)
+        {
+            return;
         }
+
+        ILocalizationProvider.Current.OnLanguageChanged += (lang) => OnLanguageChangedKey(e.Sender, lang);
     }
 
-    private static void LocalizedStringPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
+    private static void LocalizedStringPropertyChanged(AvaloniaPropertyChangedEventArgs<LocalizedString> e)
     {
-        d.SetValue(KeyProperty, ((LocalizedString)e.NewValue).Key);
+        e.Sender.SetValue(KeyProperty, (e.NewValue.Value).Key);
     }
 
-    private static void EnumPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
+    private static void EnumPropertyChanged(AvaloniaPropertyChangedEventArgs<object> e)
     {
-        if (e.NewValue == null)
+        if (!e.NewValue.HasValue)
         {
-            d.SetValue(KeyProperty, null);
+            e.Sender.SetValue(KeyProperty, null);
             return;
         }
-        
-        d.SetValue(KeyProperty, EnumHelpers.GetDescription(e.NewValue));
+
+        e.Sender.SetValue(KeyProperty, EnumHelpers.GetDescription(e.NewValue));
     }
 
-    private static void UpdateKey(DependencyObject d, string key)
+    private static void UpdateKey(AvaloniaObject d, string key)
     {
         var parameters = GetLocalizedString(d).Parameters;
         LocalizedString localizedString = new(key, parameters);
-        Binding binding = new()
-        {
-            Path = new PropertyPath("(0)", ValueProperty),
-            RelativeSource = new RelativeSource(RelativeSourceMode.Self)
-        };
+
+        var valueObservable = d.GetObservable(ValueProperty);
 
         ExternalProperty externalProperty = ExternalProperties.FirstOrDefault(x => x.PropertyType.IsAssignableFrom(d.GetType()));
 
         if (d is ICustomTranslatorElement customTranslatorElement)
         {
-            customTranslatorElement.SetTranslationBinding(customTranslatorElement.GetDependencyProperty(), binding);
+            customTranslatorElement.SetTranslationBinding(customTranslatorElement.GetDependencyProperty(), valueObservable);
         }
         else if (externalProperty != null)
         {
             if (externalProperty.SetTranslationBinding != null)
             {
-                externalProperty.SetTranslationBinding(d, binding);
+                externalProperty.SetTranslationBinding(d, valueObservable);
             }
             else
             {
-                externalProperty.SetTranslation(d, localizedString);
+                externalProperty.SetTranslation?.Invoke(d, localizedString);
             }
         }
         else if (d is TextBox textBox)
         {
-            textBox.SetBinding(TextBox.TextProperty, binding);
+            textBox.Bind(TextBox.TextProperty, valueObservable);
         }
         else if (d is TextBlock textBlock)
         {
-            textBlock.SetBinding(TextBlock.TextProperty, binding);
+            //textBlock.Bind(TextBlock.TextProperty, binding);
+            textBlock.Bind(TextBlock.TextProperty, valueObservable);
         }
         else if (d is Run run)
         {
-            run.SetBinding(Run.TextProperty, binding);
+            run.Bind(Run.TextProperty, valueObservable);
         }
         else if (d is Window window)
         {
-            window.SetBinding(Window.TitleProperty, binding);
+            window.Bind(Window.TitleProperty, valueObservable);
         }
         else if (d is ContentControl contentControl)
         {
-            contentControl.SetBinding(ContentControl.ContentProperty, binding);
+            contentControl.Bind(ContentControl.ContentProperty, valueObservable);
         }
         else if (d is HeaderedItemsControl menuItem)
         {
-            menuItem.SetBinding(HeaderedItemsControl.HeaderProperty, binding);
+            menuItem.Bind(HeaderedItemsControl.HeaderProperty, valueObservable);
         }
 #if DEBUG
         else
@@ -192,42 +192,42 @@ public class Translator : UIElement
         d.SetValue(ValueProperty, localizedString.Value);
     }
 
-    public static void SetKey(DependencyObject element, string value)
+    public static void SetKey(Control element, string value)
     {
         element.SetValue(KeyProperty, value);
     }
 
-    public static string GetKey(DependencyObject element)
+    public static string GetKey(AvaloniaObject element)
     {
-        return (string)element.GetValue(KeyProperty);
+        return element.GetValue(KeyProperty);
     }
 
-    public static void SetLocalizedString(DependencyObject element, LocalizedString value)
+    public static void SetLocalizedString(Control element, LocalizedString value)
     {
         element.SetValue(LocalizedStringProperty, value);
     }
 
-    public static void SetEnum(DependencyObject element, object value)
+    public static void SetEnum(Control element, object value)
     {
         element.SetValue(EnumProperty, value);
     }
 
-    public static LocalizedString GetLocalizedString(DependencyObject element)
+    public static LocalizedString GetLocalizedString(AvaloniaObject element)
     {
-        return (LocalizedString)element.GetValue(LocalizedStringProperty);
+        return element.GetValue(LocalizedStringProperty);
     }
-    
-    public static string GetValue(DependencyObject element)
+
+    public static string GetValue(Control element)
     {
         return (string)element.GetValue(ValueProperty);
     }
 
-    public static LocalizedString GetTooltipLocalizedString(DependencyObject element)
+    public static LocalizedString GetTooltipLocalizedString(AvaloniaObject element)
     {
-        return (LocalizedString)element.GetValue(TooltipLocalizedStringProperty);
+        return element.GetValue(TooltipLocalizedStringProperty);
     }
 
-    public static void SetTooltipLocalizedString(UIElement element, LocalizedString value)
+    public static void SetTooltipLocalizedString(Control element, LocalizedString value)
     {
         element.SetValue(TooltipLocalizedStringProperty, value);
     }

+ 1 - 3
src/PixiEditor.Extensions/Windowing/IWindowProvider.cs

@@ -1,6 +1,4 @@
-using System.Windows.Controls;
-
-namespace PixiEditor.Extensions.Windowing;
+namespace PixiEditor.Extensions.Windowing;
 
 public interface IWindowProvider
 {

+ 7 - 2
src/PixiEditor.UI.Common/PixiEditor.UI.Common.csproj

@@ -17,11 +17,16 @@
     </ItemGroup>
 
     <ItemGroup>
-      <PackageReference Include="Avalonia" Version="11.0.0-preview7" />
-      <PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.0-preview7" />
+      <PackageReference Include="Avalonia" Version="11.0.0-rc1.1" />
+      <PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.0-rc1.1" />
+      <PackageReference Include="Avalonia.Xaml.Behaviors" Version="11.0.0-rc1.1" />
     </ItemGroup>
 
     <ItemGroup>
       <UpToDateCheckInput Remove="Animations\Processing.axaml" />
     </ItemGroup>
+
+    <ItemGroup>
+      <Folder Include="UIBehaviors\" />
+    </ItemGroup>
 </Project>