From 5be90400132661b9eeb258ed3d3dc3e0a4680082 Mon Sep 17 00:00:00 2001 From: Atria1234 Date: Thu, 9 Sep 2021 18:03:15 +0200 Subject: [PATCH 1/7] Blocked harbor area can now be shown on canvas (#323) --- AnnoDesigner.Core/Models/AnnoObject.cs | 14 + AnnoDesigner.Core/Models/GridDirection.cs | 10 + AnnoDesigner.Core/Models/IAppSettings.cs | 1 + AnnoDesigner/AnnoCanvas.xaml.cs | 31 + AnnoDesigner/Helper/CoordinateHelper.cs | 11 + AnnoDesigner/Localization/Localization.cs | 2099 ++++++++++-------- AnnoDesigner/MainWindow.xaml | 3 + AnnoDesigner/Models/AppSettings.cs | 6 + AnnoDesigner/Models/IAnnoCanvas.cs | 1 + AnnoDesigner/Models/ICoordinateHelper.cs | 3 + AnnoDesigner/Models/LayoutObject.cs | 29 + AnnoDesigner/Properties/Settings.Designer.cs | 14 +- AnnoDesigner/Properties/Settings.settings | 3 + AnnoDesigner/ViewModels/MainViewModel.cs | 16 + AnnoDesigner/app.config | 3 + 15 files changed, 1298 insertions(+), 946 deletions(-) create mode 100644 AnnoDesigner.Core/Models/GridDirection.cs diff --git a/AnnoDesigner.Core/Models/AnnoObject.cs b/AnnoDesigner.Core/Models/AnnoObject.cs index 5fd8c34e..5f0e2a24 100644 --- a/AnnoDesigner.Core/Models/AnnoObject.cs +++ b/AnnoDesigner.Core/Models/AnnoObject.cs @@ -41,6 +41,8 @@ public AnnoObject(AnnoObject obj) Road = obj.Road; // note: this is not really a copy, just a reference, but it is not supposed to change anyway //BuildCosts = obj.BuildCosts; + BlockedArea = obj.BlockedArea; + Direction = obj.Direction; } #endregion @@ -128,5 +130,17 @@ public AnnoObject(AnnoObject obj) //[DataMember] //public SerializableDictionary BuildCosts { get; set; } + + /// + /// Length of blocked area + /// + [DataMember(Order = 12)] + public double BlockedArea { get; set; } + + /// + /// Direction of blocked area + /// + [DataMember(Order = 13)] + public GridDirection Direction { get; set; } = GridDirection.Down; } } \ No newline at end of file diff --git a/AnnoDesigner.Core/Models/GridDirection.cs b/AnnoDesigner.Core/Models/GridDirection.cs new file mode 100644 index 00000000..0cc497f1 --- /dev/null +++ b/AnnoDesigner.Core/Models/GridDirection.cs @@ -0,0 +1,10 @@ +namespace AnnoDesigner.Core.Models +{ + public enum GridDirection + { + Up, + Right, + Down, + Left + } +} diff --git a/AnnoDesigner.Core/Models/IAppSettings.cs b/AnnoDesigner.Core/Models/IAppSettings.cs index 62e04e60..1ada9220 100644 --- a/AnnoDesigner.Core/Models/IAppSettings.cs +++ b/AnnoDesigner.Core/Models/IAppSettings.cs @@ -30,6 +30,7 @@ public interface IAppSettings bool ShowGrid { get; set; } bool ShowTrueInfluenceRange { get; set; } bool ShowInfluences { get; set; } + bool ShowHarborBlockedArea { get; set; } bool IsPavedStreet { get; set; } string TreeViewSearchText { get; set; } string PresetsTreeGameVersionFilter { get; set; } diff --git a/AnnoDesigner/AnnoCanvas.xaml.cs b/AnnoDesigner/AnnoCanvas.xaml.cs index f4168696..9f381370 100644 --- a/AnnoDesigner/AnnoCanvas.xaml.cs +++ b/AnnoDesigner/AnnoCanvas.xaml.cs @@ -212,6 +212,27 @@ public bool RenderTrueInfluenceRange } } + /// + /// Backing field of the RenderHarborBlockedArea property. + /// + private bool _renderHarborBlockedArea; + + /// + /// Gets or sets value indication whether the blocked harbor aread should be rendered. + /// + public bool RenderHarborBlockedArea + { + get { return _renderHarborBlockedArea; } + set + { + if (_renderHarborBlockedArea != value) + { + InvalidateVisual(); + } + _renderHarborBlockedArea = value; + } + } + /// /// Backing field of the CurrentObject property /// @@ -1080,6 +1101,14 @@ private void RenderObjectList(DrawingContext drawingContext, List var borderPen = obj.Borderless ? curLayoutObject.GetBorderlessPen(brush, _linePen.Thickness) : _linePen; drawingContext.DrawRectangle(brush, borderPen, objRect); + if (RenderHarborBlockedArea) + { + var objBlockedRect = curLayoutObject.CalculateReservedScreenRect(GridSize); + if (objBlockedRect.HasValue) + { + drawingContext.DrawRectangle(curLayoutObject.TransparentBrush, borderPen, objBlockedRect.Value); + } + } // draw object icon if it is at least 2x2 cells var iconRendered = false; @@ -1636,6 +1665,7 @@ private void Rotate(List objects) xPrime -= objects[i].Size.Width; objects[i].Position = new Point(xPrime, yPrime); + objects[i].Direction = _coordinateHelper.Rotate(CurrentObjects[i].Direction); } } @@ -2431,6 +2461,7 @@ private void ExecuteRotate(object param) if (CurrentObjects.Count == 1) { CurrentObjects[0].Size = _coordinateHelper.Rotate(CurrentObjects[0].Size); + CurrentObjects[0].Direction = _coordinateHelper.Rotate(CurrentObjects[0].Direction); } else if (CurrentObjects.Count > 1) { diff --git a/AnnoDesigner/Helper/CoordinateHelper.cs b/AnnoDesigner/Helper/CoordinateHelper.cs index 59bdea4e..38b7fa3d 100644 --- a/AnnoDesigner/Helper/CoordinateHelper.cs +++ b/AnnoDesigner/Helper/CoordinateHelper.cs @@ -4,6 +4,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows; +using AnnoDesigner.Core.Models; using AnnoDesigner.Models; namespace AnnoDesigner.Helper @@ -133,5 +134,15 @@ public Size Rotate(Size size) { return new Size(size.Height, size.Width); } + + /// + /// Rotates the given GridDirection object 90 degrees clockwise. + /// + /// + /// + public GridDirection Rotate(GridDirection direction) + { + return (GridDirection)((int)(direction + 1) % 4); + } } } diff --git a/AnnoDesigner/Localization/Localization.cs b/AnnoDesigner/Localization/Localization.cs index c3cc5f89..040a227d 100644 --- a/AnnoDesigner/Localization/Localization.cs +++ b/AnnoDesigner/Localization/Localization.cs @@ -54,960 +54,1169 @@ public static void Init(ICommons commons) //See the "Help" sheet for details on how to export the dictionary. TranslationsRaw = new Dictionary>() { + ["eng"] = new Dictionary() { - "eng", new Dictionary() { - { "File" , "File" }, - { "NewCanvas" , "New canvas" }, - { "Open" , "Open" }, - { "Save" , "Save" }, - { "SaveAs" , "Save as" }, - { "CopyLayoutToClipboard" , "Copy layout to clipboard as JSON" }, - { "LoadLayoutFromJson" , "Load layout from JSON" }, - { "Exit" , "Exit" }, - { "Extras" , "Extras" }, - { "Normalize" , "Normalize" }, - { "ResetZoom" , "Reset zoom" }, - { "RegisterFileExtension" , "Register file extension" }, - { "RegisterFileExtensionSuccessful" , "Registration of file extension was successful." }, - { "UnregisterFileExtension" , "Unregister file extension" }, - { "UnregisterFileExtensionSuccessful" , "Deregistration of file extension was successful." }, - { "Successful" , "Successful" }, - { "Export" , "Export" }, - { "ExportImage" , "Export image" }, - { "UseCurrentZoomOnExportedImage" , "Use current zoom on exported image" }, - { "RenderSelectionHighlightsOnExportedImage" , "Render selection highlights on exported image" }, - { "Language" , "Language" }, - { "ManageStats" , "Manage Stats" }, - { "ShowStats" , "Show stats" }, - { "BuildingCount" , "Building count" }, - { "Help" , "Help" }, - { "Version" , "Version" }, - { "FileVersion" , "File Version" }, - { "PresetsVersion" , "Presets Version" }, - { "ColorPresetsVersion" , "Color Presets Version" }, - { "TreeLocalizationVersion" , "Tree Localization Version" }, - { "CheckForUpdates" , "Check for updates" }, - { "VersionCheckErrorMessage" , $"Error checking version.{Environment.NewLine}More information can be found in the log." }, - { "VersionCheckErrorTitle" , "Version check failed." }, - { "EnableAutomaticUpdateCheck" , "Enable automatic update check on startup" }, - { "ContinueCheckingForUpdates" , $"Do you want to continue checking for a new version on startup?{Environment.NewLine}{Environment.NewLine}This option can be changed via Tools -> Preferences -> Update Settings." }, - { "ContinueCheckingForUpdatesTitle" , "Continue checking for updates?" }, - { "GoToProjectHomepage" , "Go to project homepage" }, - { "OpenWelcomePage" , "Open Welcome page" }, - { "AboutAnnoDesigner" , "About Anno Designer" }, - { "ShowGrid" , "Show Grid" }, - { "ShowLabels" , "Show Labels" }, - { "ShowIcons" , "Show Icons" }, - { "ShowTrueInfluenceRange" , "Show True Influence Range" }, - { "ShowInfluences" , "Show Influences" }, - { "BuildingSettings" , "Building Settings" }, - { "Size" , "Size" }, - { "Color" , "Color" }, - { "Label" , "Label" }, - { "Icon" , "Icon" }, - { "InfluenceType" , "Influence Type" }, - { "None" , "None" }, - { "Radius" , "Radius" }, - { "Range" , "Range" }, - { "Distance" , "Distance" }, - { "Both" , "Both" }, - { "PavedStreet" , "Paved Street" }, - { "PavedStreetWarningTitle" , "Paved Street Selection" }, - { "PavedStreetToolTip" , $"Checking this option will change the Influence Range for buildings, {Environment.NewLine}representing the increased range they receive when using paved streets.{Environment.NewLine}Use the 'Place Building' button to place an object." }, - { "Options" , "Options" }, - { "EnableLabel" , "Enable label" }, - { "Borderless" , "Borderless" }, - { "Road" , "Road" }, - { "PlaceBuilding" , "Place building" }, - { "Search" , "Filter" }, - { "SearchToolTip" , "ESC to clear search text" }, - { "SearchPlaceholder" , "Type the name of a building here" }, - { "TitleAbout" , "About" }, - { "BuildingLayoutDesigner" , "A building layout designer for Ubisofts Anno-series" }, - { "Credits" , "Credits" }, - { "OriginalApplicationBy" , "Original application by" }, - { "BuildingPresets" , "Building presets" }, - { "CombinedForAnnoVersions" , "Combined building presets for" }, - { "AdditionalChanges" , "Additional changes by contributors on Github" }, - { "ManyThanks" , "Many thanks to all the users who contributed to this project!" }, - { "VisitTheFandom" , "Be sure to visit the Fandom pages for Anno!" }, - { "OriginalHomepage" , "Original homepage" }, - { "ProjectHomepage" , "Project homepage" }, - { "GoToFandom" , "Go to Fandom" }, - { "Close" , "Close" }, - { "StatusBarControls" , "Mouse controls: left - place, select, move // right - stop placement, remove // both - move all // double click - copy // wheel - zoom // wheel-click - rotate." }, - { "StatusBarItemsOnClipboard" , "Items on clipboard" }, - { "StatNothingPlaced" , "Nothing placed" }, - { "StatBoundingBox" , "Bounding Box" }, - { "StatMinimumArea" , "Minimum Area" }, - { "StatSpaceEfficiency" , "Space Efficiency" }, - { "StatBuildings" , "Buildings" }, - { "StatBuildingsSelected" , "Buildings selected" }, - { "StatTiles" , "Tiles" }, - { "StatNameNotFound" , "Building name not found" }, - { "UnknownObject" , "Unknown object" }, - { "PresetsLoaded" , "Building presets loaded" }, - { "ExportImageSuccessful" , "Image was successfully exported." }, - { "ExportImageError" , "Something went wrong while exporting the image." }, - { "ApplyColorToSelection" , "Apply color" }, - { "ApplyColorToSelectionToolTip" , "Apply color to all buildings in current selection" }, - { "ApplyPredefinedColorToSelection" , "Apply predefined color" }, - { "ApplyPredefinedColorToSelectionToolTip" , "Apply predefined color (if found) to all buildings in current selection" }, - { "AvailableColors" , "Available Colors" }, - { "StandardColors" , "Predefined Colors" }, - { "RecentColors" , "Recent used colors" }, - { "Standard" , "Standard" }, - { "Advanced" , "Advanced" }, - { "UpdateAvailableHeader" , "Update available" }, - { "UpdateAvailablePresetMessage" , $"An updated version of the preset file is available.{Environment.NewLine}Do you want to download it and restart the application?" }, - { "AdminRightsRequired" , "Admin rights required" }, - { "UpdateRequiresAdminRightsMessage" , "To download the update the application needs write access. Please provide credentials." }, - { "Error" , "Error" }, - { "UpdateErrorPresetMessage" , "There was an error installing the update." }, - { "UpdateNoConnectionMessage" , "Could not establish a connection to the internet." }, - { "ColorsInLayout" , "Colors in Layout" }, - { "ColorsInLayoutToolTip" , "Double click color to select it" }, - { "LoadLayoutHeader" , "Load Layout" }, - { "LoadLayoutMessage" , "Please paste the JSON string below." }, - { "ClipboardContainsLayoutAsJson" , "Clipboard contains current layout as JSON." }, - { "OK" , "OK" }, - { "Cancel" , "Cancel" }, - { "SelectAll" , "Select all" }, - { "Tools" , "Tools" }, - { "Preferences" , "Preferences" }, - { "ResetAllConfirmationMessage" , "Are you sure you want to reset all hotkeys to their defaults?" }, - { "ResetAll" , "Reset All" }, - { "UpdateSettings" , "Update Settings" }, - { "ManageKeybindings" , "Manage Keybindings" }, - { "Edit" , "Edit" }, - { "Recording" , "Recording" }, - { "RecordANewAction" , "Record a new action" }, - { "Rotate" , "Rotate" }, - { "Copy" , "Copy" }, - { "Paste" , "Paste" }, - { "Delete" , "Delete" }, - { "Duplicate" , "Duplicate" }, - { "RotateAll" , "Rotate all" }, - { "DeleteObjectUnderCursor" , "Delete object under cursor" }, - { "Licenses" , "Licenses" }, - { "ViewLicenses" , "View open source licenses" }, - { "ExternalLinkConfirmationMessage" , "This will open a new tab in your default web browser. Continue?" }, - { "ExternalLinkMessageTitle" , "Opening an external link" }, - { "RecentFiles" , "Recent files" }, - { "UpdatePreferencesVersionInformation" , "Version Information" }, - { "UpdatePreferencesSettings" , "Settings" }, - { "UpdatePreferencesCheckPreRelease" , "Check for pre-releases" }, - { "UpdatePreferencesUpdates" , "Updates" }, - { "UpdatePreferencesDownloadPresetsAndRestart" , "Download Presets and restart application" }, - { "UpdatePreferencesNewAppUpdateAvailable" , "A new update is available! Please check the website for release notes." }, - { "UpdatePreferencesNoUpdates" , "This version is up to date." }, - { "UpdatePreferencesErrorCheckingUpdates" , "Error checking for updates." }, - { "UpdatePreferencesMoreInfoInLog" , "More information is found in the log." }, - { "UpdatePreferencesNewPresetsUpdateAvailable" , "A new update for the Presets is available!" }, - { "UpdatePreferencesBusyCheckUpdates" , "Checking for updates ..." }, - { "UpdatePreferencesBusyDownloadPresets" , "Downloading Presets ..." }, - { "NoIcon" , "No icon" }, - { "GeneralSettings" , "General Settings" }, - { "GeneralPreferencesUISettings" , "UI Settings" }, - { "GeneralPreferencesHideInfluenceOnSelection" , "Hide influence on selection" }, - { "GeneralPreferencesUseZoomToPoint" , "Use new zoom behaviour" }, - { "GeneralPreferencesGridLinesColor" , "Grid line color" }, - { "GeneralPreferencesObjectBorderLinesColor" , "Border color" }, - { "GeneralPreferencesZoomSensitivity" , "Zoom sensitivity" }, - { "GeneralPreferencesInvertScrollingDirection" , "Invert scrolling direction" }, - { "GeneralPreferencesInvertPanningDirection" , "Invert panning direction" }, - { "GeneralPreferencesShowScrollbars" , "Show scrollbars" }, - { "ColorTypeDefault" , "Default" }, - { "ColorTypeLight" , "Light" }, - { "ColorTypeCustom" , "Custom" }, - { "Warning" , "Warning" }, - { "FileNotFound" , "The file was not found." }, - { "Default" , "Default" }, - { "ItemsCopied" , "items copied" }, - { "ItemCopied" , "item copied" }, - { "LoadingPresetsFailed" , "Loading of the building presets failed." }, - { "LoadingIconNamesFailed" , "Loading of the icon names failed." }, - { "FileVersionUnsupportedMessage" , $"Try loading anyway?{Environment.NewLine}This is very likely to fail or result in strange things happening." }, - { "FileVersionUnsupportedTitle" , "File version unsupported" }, - { "IOErrorMessage" , "Something went wrong while saving/loading file." }, - { "AnotherInstanceIsAlreadyRunning" , "Another instance of the app is already running." }, - { "ErrorUpgradingSettings" , "The settings file has become corrupted. We must reset your settings." }, - { "FileVersionMismatchMessage" , $"Try loading anyway?{Environment.NewLine}This is very likely to fail or result in strange things happening." }, - { "FileVersionMismatchTItle" , "File version mismatch" }, - { "LayoutLoadingError" , "Something went wrong while loading the layout." }, - { "LayoutSavingError" , "Something went wrong while saving the layout." }, - { "InvalidBuildingConfiguration" , "Invalid building configuration." }, - { "MergeRoads" , "Merge roads" }, - { "LoadingTreeLocalizationFailed" , "Loading of the localization failed." }, - { "Undo" , "Undo" }, - { "Redo" , "Redo" }, - { "LayoutSettings" , "Layout Settings" }, - { "View" , "View" } - } + ["File"] = "File", + ["NewCanvas"] = "New canvas", + ["Open"] = "Open", + ["Save"] = "Save", + ["SaveAs"] = "Save as", + ["CopyLayoutToClipboard"] = "Copy layout to clipboard as JSON", + ["LoadLayoutFromJson"] = "Load layout from JSON", + ["Exit"] = "Exit", + ["Extras"] = "Extras", + ["Normalize"] = "Normalize", + ["ResetZoom"] = "Reset zoom", + ["RegisterFileExtension"] = "Register file extension", + ["RegisterFileExtensionSuccessful"] = "Registration of file extension was successful.", + ["UnregisterFileExtension"] = "Unregister file extension", + ["UnregisterFileExtensionSuccessful"] = "Deregistration of file extension was successful.", + ["Successful"] = "Successful", + ["Export"] = "Export", + ["ExportImage"] = "Export image", + ["UseCurrentZoomOnExportedImage"] = "Use current zoom on exported image", + ["RenderSelectionHighlightsOnExportedImage"] = "Render selection highlights on exported image", + ["Language"] = "Language", + ["ManageStats"] = "Manage Stats", + ["ShowStats"] = "Show stats", + ["BuildingCount"] = "Building count", + ["Help"] = "Help", + ["Version"] = "Version", + ["FileVersion"] = "File Version", + ["PresetsVersion"] = "Presets Version", + ["CheckForUpdates"] = "Check for updates", + ["VersionCheckErrorMessage"] = $"Error checking version.{Environment.NewLine}More information can be found in the log.", + ["VersionCheckErrorTitle"] = "Version check failed.", + ["EnableAutomaticUpdateCheck"] = "Enable automatic update check on startup", + ["ContinueCheckingForUpdates"] = $"Do you want to continue checking for a new version on startup?{Environment.NewLine}{Environment.NewLine}This option can be changed via Tools -> Preferences -> Update Settings.", + ["ContinueCheckingForUpdatesTitle"] = "Continue checking for updates?", + ["GoToProjectHomepage"] = "Go to project homepage", + ["OpenWelcomePage"] = "Open Welcome page", + ["AboutAnnoDesigner"] = "About Anno Designer", + ["ShowGrid"] = "Show Grid", + ["ShowLabels"] = "Show Labels", + ["ShowIcons"] = "Show Icons", + ["ShowTrueInfluenceRange"] = "Show True Influence Range", + ["ShowInfluences"] = "Show Influences", + ["BuildingSettings"] = "Building Settings", + ["Size"] = "Size", + ["Color"] = "Color", + ["Label"] = "Label", + ["Icon"] = "Icon", + ["InfluenceType"] = "Influence Type", + ["None"] = "None", + ["Radius"] = "Radius", + ["Range"] = "Range", + ["Distance"] = "Distance", + ["Both"] = "Both", + ["PavedStreet"] = "Paved Street", + ["PavedStreetWarningTitle"] = "Paved Street Selection", + ["PavedStreetToolTip"] = $"Checking this option will change the Influence Range for buildings, {Environment.NewLine}representing the increased range they receive when using paved streets.{Environment.NewLine}Use the 'Place Building' button to place an object.", + ["Options"] = "Options", + ["EnableLabel"] = "Enable label", + ["Borderless"] = "Borderless", + ["Road"] = "Road", + ["PlaceBuilding"] = "Place building", + ["Search"] = "Filter", + ["SearchToolTip"] = "ESC to clear search text", + ["SearchPlaceholder"] = "Type the name of a building here", + ["TitleAbout"] = "About", + ["BuildingLayoutDesigner"] = "A building layout designer for Ubisofts Anno-series", + ["Credits"] = "Credits", + ["OriginalApplicationBy"] = "Original application by", + ["BuildingPresets"] = "Building presets", + ["CombinedForAnnoVersions"] = "Combined building presets for", + ["AdditionalChanges"] = "Additional changes by contributors on Github", + ["ManyThanks"] = "Many thanks to all the users who contributed to this project!", + ["VisitTheFandom"] = "Be sure to visit the Fandom pages for Anno!", + ["OriginalHomepage"] = "Original homepage", + ["ProjectHomepage"] = "Project homepage", + ["GoToFandom"] = "Go to Fandom", + ["Close"] = "Close", + ["StatusBarControls"] = "Mouse controls: left - place, select, move // right - stop placement, remove // both - move all // double click - copy // wheel - zoom // wheel-click - rotate.", + ["StatusBarItemsOnClipboard"] = "Items on clipboard", + ["StatNothingPlaced"] = "Nothing placed", + ["StatBoundingBox"] = "Bounding Box", + ["StatMinimumArea"] = "Minimum Area", + ["StatSpaceEfficiency"] = "Space Efficiency", + ["StatBuildings"] = "Buildings", + ["StatBuildingsSelected"] = "Buildings selected", + ["StatTiles"] = "Tiles", + ["StatNameNotFound"] = "Building name not found", + ["UnknownObject"] = "Unknown object", + ["PresetsLoaded"] = "Building presets loaded", + ["ExportImageSuccessful"] = "Image was successfully exported.", + ["ExportImageError"] = "Something went wrong while exporting the image.", + ["ApplyColorToSelection"] = "Apply color", + ["ApplyColorToSelectionToolTip"] = "Apply color to all buildings in current selection", + ["ApplyPredefinedColorToSelection"] = "Apply predefined color", + ["ApplyPredefinedColorToSelectionToolTip"] = "Apply predefined color (if found) to all buildings in current selection", + ["AvailableColors"] = "Available Colors", + ["StandardColors"] = "Predefined Colors", + ["RecentColors"] = "Recent used colors", + ["Standard"] = "Standard", + ["Advanced"] = "Advanced", + ["UpdateAvailableHeader"] = "Update available", + ["UpdateAvailablePresetMessage"] = $"An updated version of the preset file is available.{Environment.NewLine}Do you want to download it and restart the application?", + ["AdminRightsRequired"] = "Admin rights required", + ["UpdateRequiresAdminRightsMessage"] = "To download the update the application needs write access. Please provide credentials.", + ["Error"] = "Error", + ["UpdateErrorPresetMessage"] = "There was an error installing the update.", + ["UpdateNoConnectionMessage"] = "Could not establish a connection to the internet.", + ["ColorsInLayout"] = "Colors in Layout", + ["ColorsInLayoutToolTip"] = "Double click color to select it", + ["LoadLayoutHeader"] = "Load Layout", + ["LoadLayoutMessage"] = "Please paste the JSON string below.", + ["ClipboardContainsLayoutAsJson"] = "Clipboard contains current layout as JSON.", + ["OK"] = "OK", + ["Cancel"] = "Cancel", + ["SelectAll"] = "Select all", + ["Tools"] = "Tools", + ["Preferences"] = "Preferences", + ["ResetAllConfirmationMessage"] = "Are you sure you want to reset all hotkeys to their defaults?", + ["ResetAll"] = "Reset All", + ["UpdateSettings"] = "Update Settings", + ["ManageKeybindings"] = "Manage Keybindings", + ["Edit"] = "Edit", + ["Recording"] = "Recording", + ["RecordANewAction"] = "Record a new action", + ["Rotate"] = "Rotate", + ["Copy"] = "Copy", + ["Paste"] = "Paste", + ["Delete"] = "Delete", + ["Duplicate"] = "Duplicate", + ["RotateAll"] = "Rotate all", + ["DeleteObjectUnderCursor"] = "Delete object under cursor", + ["Licenses"] = "Licenses", + ["ViewLicenses"] = "View open source licenses", + ["ExternalLinkConfirmationMessage"] = "This will open a new tab in your default web browser. Continue?", + ["ExternalLinkMessageTitle"] = "Opening an external link", + ["RecentFiles"] = "Recent files", + ["UpdatePreferencesVersionInformation"] = "Version Information", + ["UpdatePreferencesSettings"] = "Settings", + ["UpdatePreferencesCheckPreRelease"] = "Check for pre-releases", + ["UpdatePreferencesUpdates"] = "Updates", + ["UpdatePreferencesDownloadPresetsAndRestart"] = "Download Presets and restart application", + ["UpdatePreferencesNewAppUpdateAvailable"] = "A new update is available! Please check the website for release notes.", + ["UpdatePreferencesNoUpdates"] = "This version is up to date.", + ["UpdatePreferencesErrorCheckingUpdates"] = "Error checking for updates.", + ["UpdatePreferencesMoreInfoInLog"] = "More information is found in the log.", + ["UpdatePreferencesNewPresetsUpdateAvailable"] = "A new update for the Presets is available!", + ["UpdatePreferencesBusyCheckUpdates"] = "Checking for updates ...", + ["UpdatePreferencesBusyDownloadPresets"] = "Downloading Presets ...", + ["NoIcon"] = "No icon", + ["GeneralSettings"] = "General Settings", + ["GeneralPreferencesUISettings"] = "UI Settings", + ["GeneralPreferencesHideInfluenceOnSelection"] = "Hide influence on selection", + ["GeneralPreferencesUseZoomToPoint"] = "Use new zoom behaviour", + ["GeneralPreferencesGridLinesColor"] = "Grid line color", + ["GeneralPreferencesObjectBorderLinesColor"] = "Border color", + ["GeneralPreferencesZoomSensitivity"] = "Zoom sensitivity", + ["GeneralPreferencesInvertScrollingDirection"] = "Invert scrolling direction", + ["GeneralPreferencesInvertPanningDirection"] = "Invert panning direction", + ["GeneralPreferencesShowScrollbars"] = "Show scrollbars", + ["ColorTypeDefault"] = "Default", + ["ColorTypeLight"] = "Light", + ["ColorTypeCustom"] = "Custom", + ["Warning"] = "Warning", + ["FileNotFound"] = "The file was not found.", + ["Default"] = "Default", + ["ItemsCopied"] = "items copied", + ["ItemCopied"] = "item copied", + ["LoadingPresetsFailed"] = "Loading of the building presets failed.", + ["LoadingIconNamesFailed"] = "Loading of the icon names failed.", + ["FileVersionUnsupportedMessage"] = $"Try loading anyway?{Environment.NewLine}This is very likely to fail or result in strange things happening.", + ["FileVersionUnsupportedTitle"] = "File version unsupported", + ["IOErrorMessage"] = "Something went wrong while saving/loading file.", + ["AnotherInstanceIsAlreadyRunning"] = "Another instance of the app is already running.", + ["ErrorUpgradingSettings"] = "The settings file has become corrupted. We must reset your settings.", + ["FileVersionMismatchMessage"] = $"Try loading anyway?{Environment.NewLine}This is very likely to fail or result in strange things happening.", + ["FileVersionMismatchTItle"] = "File version mismatch", + ["LayoutLoadingError"] = "Something went wrong while loading the layout.", + ["LayoutSavingError"] = "Something went wrong while saving the layout.", + ["InvalidBuildingConfiguration"] = "Invalid building configuration.", + ["MergeRoads"] = "Merge roads", + ["LoadingTreeLocalizationFailed"] = "Loading of the localization failed.", + ["Undo"] = "Undo", + ["Redo"] = "Redo", + ["LayoutSettings"] = "Layout Settings", + ["View"] = "View", + ["SaveUnsavedChanges"] = "Save unsaved changes?", + ["UnsavedChanged"] = "There are unsaved changes", + ["UnsavedChangedBeforeCrash"] = "Program crashed but there are unsaved changes", + ["ColorPresetsVersion"] = "Color Presets Version", + ["TreeLocalizationVersion"] = "Tree Localization Version", + ["ShowHarborBlockedArea"] = "Show Harbor Areas" }, + ["ger"] = new Dictionary() { - "ger", new Dictionary() { - { "File" , "Datei" }, - { "NewCanvas" , "Neue Oberfläche" }, - { "Open" , "Öffnen" }, - { "Save" , "Speichern" }, - { "SaveAs" , "Speichern unter" }, - { "CopyLayoutToClipboard" , "Layout als JSON in die Zwischenablage kopieren" }, - { "LoadLayoutFromJson" , "Layout aus JSON laden" }, - { "Exit" , "Beenden" }, - { "Extras" , "Extras" }, - { "Normalize" , "Normalisieren" }, - { "ResetZoom" , "Zoom zurücksetzen" }, - { "RegisterFileExtension" , "Dateierweiterung registrieren" }, - { "RegisterFileExtensionSuccessful" , "Dateierweiterung wurde erfolgreich registriert." }, - { "UnregisterFileExtension" , "Dateierweiterung entfernen" }, - { "UnregisterFileExtensionSuccessful" , "Registrierung der Dateierweiterung wurde entfernt." }, - { "Successful" , "Erfolg" }, - { "Export" , "Exportieren" }, - { "ExportImage" , "Exportiere Bild / Speichere als Bild" }, - { "UseCurrentZoomOnExportedImage" , "Wende aktuellen Zomm auf exportiertes Bild an" }, - { "RenderSelectionHighlightsOnExportedImage" , "Exportiere Bild mit Selektionen" }, - { "Language" , "Sprache" }, - { "ManageStats" , "Statistiken verwalten" }, - { "ShowStats" , "Statistiken (an)zeigen" }, - { "BuildingCount" , "Anzahl der Gebäude" }, - { "Help" , "Hilfe" }, - { "Version" , "Version" }, - { "FileVersion" , "Dateiversion" }, - { "PresetsVersion" , "Vorlagenversion" }, - { "ColorPresetsVersion" , "Farbvorlagenversion" }, - { "TreeLocalizationVersion" , "Übersetzungsversion" }, - { "CheckForUpdates" , "Auf Updates prüfen" }, - { "VersionCheckErrorMessage" , $"Etwas ist bei der Updateprüfung schiefgegangen.{Environment.NewLine}Weitere Informationen finden Sie im Protokoll." }, - { "VersionCheckErrorTitle" , "Updateprüfung fehlgeschlagen." }, - { "EnableAutomaticUpdateCheck" , "Automatische Updateprüfung beim Start aktivieren" }, - { "ContinueCheckingForUpdates" , $"Möchten Sie beim Start weiterhin nach einer neuen Version suchen?{Environment.NewLine}{Environment.NewLine}Diese Option kann über Werkzeuge -> Einstellungen -> Updates geändert werden." }, - { "ContinueCheckingForUpdatesTitle" , "Weiter nach Aktualisierungen suchen?" }, - { "GoToProjectHomepage" , "Gehe zu Projekt Webseite" }, - { "OpenWelcomePage" , "Willkommensseite öffnen" }, - { "AboutAnnoDesigner" , "über Anno Designer" }, - { "ShowGrid" , "Raster/Gitter (an)zeigen" }, - { "ShowLabels" , "Bezeichnungen (an)zeigen" }, - { "ShowIcons" , "Symbol (an)zeigen" }, - { "ShowTrueInfluenceRange" , "Wahren Einflussbereich anzeigen" }, - { "ShowInfluences" , "Einflüsse anzeigen" }, - { "BuildingSettings" , "Gebäude Optionen" }, - { "Size" , "Größe" }, - { "Color" , "Farbe" }, - { "Label" , "Bezeichnung" }, - { "Icon" , "Zeichen/Icon" }, - { "InfluenceType" , "Einflusstyp" }, - { "None" , "Keine" }, - { "Radius" , "Radius" }, - { "Range" , "Bereich" }, - { "Distance" , "Entfernung" }, - { "Both" , "Beide" }, - { "PavedStreet" , "Gepflasterte Straße" }, - { "PavedStreetWarningTitle" , "Auswahl der gepflasterten Straße" }, - { "PavedStreetToolTip" , $"Wenn Sie diese Option aktivieren, wird der Einflussbereich für Gebäude geändert,{Environment.NewLine}die die erhöhte Reichweite darstellen, die sie bei der Nutzung gepflasterter Straßen erhalten.{Environment.NewLine}Verwenden Sie die Schaltfläche 'Gebäude platzieren', um ein Objekt zu platzieren." }, - { "Options" , "Optionen" }, - { "EnableLabel" , "Bezeichnung aktivieren" }, - { "Borderless" , "Randlos" }, - { "Road" , "Straße" }, - { "PlaceBuilding" , "Gebäude platzieren" }, - { "Search" , "Filtern" }, - { "SearchToolTip" , "ESC um Suchtext zu leeren" }, - { "SearchPlaceholder" , "Geben Sie hier den Namen eines Gebäudes ein" }, - { "TitleAbout" , "Über" }, - { "BuildingLayoutDesigner" , "Ein Gebäudelayout Designer für Ubisofts Anno Reihe" }, - { "Credits" , "Credits" }, - { "OriginalApplicationBy" , "Ursprüngliche Anwendung von" }, - { "BuildingPresets" , "Gebäudevorlagen" }, - { "CombinedForAnnoVersions" , "Zusammengefügte Gebäudevorlagen für" }, - { "AdditionalChanges" , "Weitere Änderungen von Beitragenden auf Github" }, - { "ManyThanks" , "Vielen Dank an alle, die an diesem Projekt mitgeholfen haben!" }, - { "VisitTheFandom" , "Besuche auch die Fandom Seiten von Anno!" }, - { "OriginalHomepage" , "Original Webseite" }, - { "ProjectHomepage" , "Projekt Webseite" }, - { "GoToFandom" , "Fandom Seite" }, - { "Close" , "Schließen" }, - { "StatusBarControls" , "Maussteuerung: Links - Platzieren, Auswählen, Verschieben // Rechts - Platzieren stoppen // Beide - Alle verschieben // Doppelklicken - Kopieren // Rad Zoom // Klickrad - Drehen" }, - { "StatusBarItemsOnClipboard" , "Elemente in der Zwischenablage" }, - { "StatNothingPlaced" , "Nichts platziert" }, - { "StatBoundingBox" , "Begrenzungsbox" }, - { "StatMinimumArea" , "Minimale Fläche" }, - { "StatSpaceEfficiency" , "Raumeffizienz" }, - { "StatBuildings" , "Gebäude" }, - { "StatBuildingsSelected" , "Ausgewählte Gebäude" }, - { "StatTiles" , "Kacheln" }, - { "StatNameNotFound" , "Gebäudename nicht gefunden" }, - { "UnknownObject" , "Unbekanntes Objekt" }, - { "PresetsLoaded" , "Gebäudevorlagen geladen" }, - { "ExportImageSuccessful" , "Das Bild wurde erfolgreich exportiert." }, - { "ExportImageError" , "Beim Exportieren des Bildes ging etwas schief." }, - { "ApplyColorToSelection" , "Farbe anwenden" }, - { "ApplyColorToSelectionToolTip" , "Farbe auf alle Gebäude in der aktuellen Auswahl anwenden" }, - { "ApplyPredefinedColorToSelection" , "Vordefinierte Farbe anwenden" }, - { "ApplyPredefinedColorToSelectionToolTip" , "Vordefinierte Farbe (falls gefunden) auf alle Gebäude in der aktuellen Auswahl anwenden." }, - { "AvailableColors" , "Verfügbare Farben" }, - { "StandardColors" , "Vordefinierte Farben" }, - { "RecentColors" , "Zuletzt verwendete Farben" }, - { "Standard" , "Standard" }, - { "Advanced" , "Erweitert" }, - { "UpdateAvailableHeader" , "Update verfügbar" }, - { "UpdateAvailablePresetMessage" , $"Eine aktualisierte Version der Vorlagen ist verfügbar.{Environment.NewLine}Möchten Sie sie herunterladen und die Anwendung neu starten?" }, - { "AdminRightsRequired" , "Admin-Rechte erforderlich" }, - { "UpdateRequiresAdminRightsMessage" , "Um das Update herunterzuladen, benötigt die Anwendung Schreibzugriff. Bitte geben Sie die Zugangsdaten an." }, - { "Error" , "Fehler" }, - { "UpdateErrorPresetMessage" , "Es gab einen Fehler bei der Installation des Updates." }, - { "UpdateNoConnectionMessage" , "Es konnte keine Verbindung zum Internet hergestellt werden." }, - { "ColorsInLayout" , "Farben im Layout" }, - { "ColorsInLayoutToolTip" , "Doppelklicken Sie auf die Farbe, um sie auszuwählen." }, - { "LoadLayoutHeader" , "Layout laden" }, - { "LoadLayoutMessage" , "Bitte fügen Sie die JSON-Zeichenkette unten ein." }, - { "ClipboardContainsLayoutAsJson" , "Die Zwischenablage enthält das aktuelle Layout als JSON." }, - { "OK" , "OK" }, - { "Cancel" , "Abbrechen" }, - { "SelectAll" , "Alle auswählen" }, - { "Tools" , "Werkzeuge" }, - { "Preferences" , "Einstellungen" }, - { "ResetAllConfirmationMessage" , "Sind Sie sicher, dass Sie alle Tastenkombinationen auf ihre Standardeinstellungen zurücksetzen möchten?" }, - { "ResetAll" , "Alle zurücksetzen" }, - { "UpdateSettings" , "Updates" }, - { "ManageKeybindings" , "Tastenkombinationen" }, - { "Edit" , "Bearbeiten" }, - { "Recording" , "Aufzeichnung" }, - { "RecordANewAction" , "Eine neue Aktion aufzeichnen" }, - { "Rotate" , "Drehen" }, - { "Copy" , "Kopieren" }, - { "Paste" , "Einfügen" }, - { "Delete" , "Löschen" }, - { "Duplicate" , "Duplikat" }, - { "RotateAll" , "Alle drehen" }, - { "DeleteObjectUnderCursor" , "Objekt unter Mauszeiger löschen" }, - { "Licenses" , "Lizenzen" }, - { "ViewLicenses" , "Open-Source-Lizenzen anzeigen" }, - { "ExternalLinkConfirmationMessage" , "Dadurch wird ein neuer Tab in Ihrem Standard-Webbrowser geöffnet. Fortfahren?" }, - { "ExternalLinkMessageTitle" , "Einen externen Link öffnen" }, - { "RecentFiles" , "Zuletzt geöffnete Dateien" }, - { "UpdatePreferencesVersionInformation" , "Versions-Informationen" }, - { "UpdatePreferencesSettings" , "Einstellungen" }, - { "UpdatePreferencesCheckPreRelease" , "Auf Vorabveröffentlichungen prüfen" }, - { "UpdatePreferencesUpdates" , "Updates" }, - { "UpdatePreferencesDownloadPresetsAndRestart" , "Vorlagen herunterladen und Anwendung neu starten" }, - { "UpdatePreferencesNewAppUpdateAvailable" , "Ein neues Update ist verfügbar! Bitte schauen Sie auf der Website nach Versionshinweisen." }, - { "UpdatePreferencesNoUpdates" , "Diese Version ist auf dem neuesten Stand." }, - { "UpdatePreferencesErrorCheckingUpdates" , "Fehler beim Prüfen auf Updates." }, - { "UpdatePreferencesMoreInfoInLog" , "Weitere Informationen finden Sie im Protokoll." }, - { "UpdatePreferencesNewPresetsUpdateAvailable" , "Ein neues Update für die Vorlagen ist verfügbar!" }, - { "UpdatePreferencesBusyCheckUpdates" , "Prüfe auf Updates ..." }, - { "UpdatePreferencesBusyDownloadPresets" , "Herunterladen von Vorlagen ..." }, - { "NoIcon" , "Kein Icon" }, - { "GeneralSettings" , "Allgemein" }, - { "GeneralPreferencesUISettings" , "Darstellung" }, - { "GeneralPreferencesHideInfluenceOnSelection" , "Verstecke Einflußbereich beim Selektieren" }, - { "GeneralPreferencesUseZoomToPoint" , "Verwende neues Zoomverhalten" }, - { "GeneralPreferencesGridLinesColor" , "Raster-/Gitterlinienfarbe" }, - { "GeneralPreferencesObjectBorderLinesColor" , "Randfarbe" }, - { "GeneralPreferencesZoomSensitivity" , "Zoom-Empfindlichkeit" }, - { "GeneralPreferencesInvertScrollingDirection" , "Scrollrichtung umkehren" }, - { "GeneralPreferencesInvertPanningDirection" , "Schwenkrichtung umkehren" }, - { "GeneralPreferencesShowScrollbars" , "Scrollbalken anzeigen" }, - { "ColorTypeDefault" , "Standard" }, - { "ColorTypeLight" , "Heller" }, - { "ColorTypeCustom" , "Benutzerdefiniert" }, - { "Warning" , "Warnung" }, - { "FileNotFound" , "Die Datei wurde nicht gefunden." }, - { "Default" , "Standard" }, - { "ItemsCopied" , "Elemente kopiert" }, - { "ItemCopied" , "Element kopiert" }, - { "LoadingPresetsFailed" , "Das Laden der Gebäudevorlagen ist fehlgeschlagen." }, - { "LoadingIconNamesFailed" , "Das Laden der Iconnamen ist fehlgeschlagen." }, - { "FileVersionUnsupportedMessage" , $"Versuchen Sie trotzdem zu laden?{Environment.NewLine}Dies wird sehr wahrscheinlich fehlschlagen oder dazu führen, dass seltsame Dinge passieren." }, - { "FileVersionUnsupportedTitle" , "Dateiversion nicht unterstützt" }, - { "IOErrorMessage" , "Etwas ist beim Speichern/Laden der Datei schiefgegangen." }, - { "AnotherInstanceIsAlreadyRunning" , "Eine andere Instanz der App läuft bereits." }, - { "ErrorUpgradingSettings" , "Die Einstellungsdatei ist beschädigt worden. Wir müssen Ihre Einstellungen zurücksetzen." }, - { "FileVersionMismatchMessage" , $"Versuchen Sie trotzdem zu laden?{Environment.NewLine}Dies wird sehr wahrscheinlich fehlschlagen oder dazu führen, dass seltsame Dinge passieren." }, - { "FileVersionMismatchTItle" , "Unstimmigkeit der Dateiversion" }, - { "LayoutLoadingError" , "Beim Laden des Layouts ging etwas schief." }, - { "LayoutSavingError" , "Beim Speichern des Layouts ist etwas schiefgegangen." }, - { "InvalidBuildingConfiguration" , "Ungültige Gebäudekonfiguration." }, - { "MergeRoads" , "Straßen zusammenführen" }, - { "LoadingTreeLocalizationFailed" , "Das Laden der Übersetzungen ist fehlgeschlagen." }, - { "Undo" , "Rückgängig" }, - { "Redo" , "Wiederherstellen" }, - { "LayoutSettings" , "Layout Optionen" }, - { "View" , "Ansicht" } - } + ["File"] = "Datei", + ["NewCanvas"] = "Neue Oberfläche", + ["Open"] = "Öffnen", + ["Save"] = "Speichern", + ["SaveAs"] = "Speichern unter", + ["CopyLayoutToClipboard"] = "Layout als JSON in die Zwischenablage kopieren", + ["LoadLayoutFromJson"] = "Layout aus JSON laden", + ["Exit"] = "Beenden", + ["Extras"] = "Extras", + ["Normalize"] = "Normalisieren", + ["ResetZoom"] = "Zoom zurücksetzen", + ["RegisterFileExtension"] = "Dateierweiterung registrieren", + ["RegisterFileExtensionSuccessful"] = "Dateierweiterung wurde erfolgreich registriert.", + ["UnregisterFileExtension"] = "Dateierweiterung entfernen", + ["UnregisterFileExtensionSuccessful"] = "Registrierung der Dateierweiterung wurde entfernt.", + ["Successful"] = "Erfolg", + ["Export"] = "Exportieren", + ["ExportImage"] = "Exportiere Bild / Speichere als Bild", + ["UseCurrentZoomOnExportedImage"] = "Wende aktuellen Zomm auf exportiertes Bild an", + ["RenderSelectionHighlightsOnExportedImage"] = "Exportiere Bild mit Selektionen", + ["Language"] = "Sprache", + ["ManageStats"] = "Statistiken verwalten", + ["ShowStats"] = "Statistiken (an)zeigen", + ["BuildingCount"] = "Anzahl der Gebäude", + ["Help"] = "Hilfe", + ["Version"] = "Version", + ["FileVersion"] = "Dateiversion", + ["PresetsVersion"] = "Vorlagenversion", + ["CheckForUpdates"] = "Auf Updates prüfen", + ["VersionCheckErrorMessage"] = $"Etwas ist bei der Updateprüfung schiefgegangen.{Environment.NewLine}Weitere Informationen finden Sie im Protokoll.", + ["VersionCheckErrorTitle"] = "Updateprüfung fehlgeschlagen.", + ["EnableAutomaticUpdateCheck"] = "Automatische Updateprüfung beim Start aktivieren", + ["ContinueCheckingForUpdates"] = $"Möchten Sie beim Start weiterhin nach einer neuen Version suchen?{Environment.NewLine}{Environment.NewLine}Diese Option kann über Werkzeuge -> Einstellungen -> Updates geändert werden.", + ["ContinueCheckingForUpdatesTitle"] = "Weiter nach Aktualisierungen suchen?", + ["GoToProjectHomepage"] = "Gehe zu Projekt Webseite", + ["OpenWelcomePage"] = "Willkommensseite öffnen", + ["AboutAnnoDesigner"] = "über Anno Designer", + ["ShowGrid"] = "Raster/Gitter (an)zeigen", + ["ShowLabels"] = "Bezeichnungen (an)zeigen", + ["ShowIcons"] = "Symbol (an)zeigen", + ["ShowTrueInfluenceRange"] = "Wahren Einflussbereich anzeigen", + ["ShowInfluences"] = "Einflüsse anzeigen", + ["BuildingSettings"] = "Gebäude Optionen", + ["Size"] = "Größe", + ["Color"] = "Farbe", + ["Label"] = "Bezeichnung", + ["Icon"] = "Zeichen/Icon", + ["InfluenceType"] = "Einflusstyp", + ["None"] = "Keine", + ["Radius"] = "Radius", + ["Range"] = "Bereich", + ["Distance"] = "Entfernung", + ["Both"] = "Beide", + ["PavedStreet"] = "Gepflasterte Straße", + ["PavedStreetWarningTitle"] = "Auswahl der gepflasterten Straße", + ["PavedStreetToolTip"] = $"Wenn Sie diese Option aktivieren, wird der Einflussbereich für Gebäude geändert,{Environment.NewLine}die die erhöhte Reichweite darstellen, die sie bei der Nutzung gepflasterter Straßen erhalten.{Environment.NewLine}Verwenden Sie die Schaltfläche 'Gebäude platzieren', um ein Objekt zu platzieren.", + ["Options"] = "Optionen", + ["EnableLabel"] = "Bezeichnung aktivieren", + ["Borderless"] = "Randlos", + ["Road"] = "Straße", + ["PlaceBuilding"] = "Gebäude platzieren", + ["Search"] = "Filtern", + ["SearchToolTip"] = "ESC um Suchtext zu leeren", + ["SearchPlaceholder"] = "Geben Sie hier den Namen eines Gebäudes ein", + ["TitleAbout"] = "Über", + ["BuildingLayoutDesigner"] = "Ein Gebäudelayout Designer für Ubisofts Anno Reihe", + ["Credits"] = "Credits", + ["OriginalApplicationBy"] = "Ursprüngliche Anwendung von", + ["BuildingPresets"] = "Gebäudevorlagen", + ["CombinedForAnnoVersions"] = "Zusammengefügte Gebäudevorlagen für", + ["AdditionalChanges"] = "Weitere Änderungen von Beitragenden auf Github", + ["ManyThanks"] = "Vielen Dank an alle, die an diesem Projekt mitgeholfen haben!", + ["VisitTheFandom"] = "Besuche auch die Fandom Seiten von Anno!", + ["OriginalHomepage"] = "Original Webseite", + ["ProjectHomepage"] = "Projekt Webseite", + ["GoToFandom"] = "Fandom Seite", + ["Close"] = "Schließen", + ["StatusBarControls"] = "Maussteuerung: Links - Platzieren, Auswählen, Verschieben // Rechts - Platzieren stoppen // Beide - Alle verschieben // Doppelklicken - Kopieren // Rad Zoom // Klickrad - Drehen", + ["StatusBarItemsOnClipboard"] = "Elemente in der Zwischenablage", + ["StatNothingPlaced"] = "Nichts platziert", + ["StatBoundingBox"] = "Begrenzungsbox", + ["StatMinimumArea"] = "Minimale Fläche", + ["StatSpaceEfficiency"] = "Raumeffizienz", + ["StatBuildings"] = "Gebäude", + ["StatBuildingsSelected"] = "Ausgewählte Gebäude", + ["StatTiles"] = "Kacheln", + ["StatNameNotFound"] = "Gebäudename nicht gefunden", + ["UnknownObject"] = "Unbekanntes Objekt", + ["PresetsLoaded"] = "Gebäudevorlagen geladen", + ["ExportImageSuccessful"] = "Das Bild wurde erfolgreich exportiert.", + ["ExportImageError"] = "Beim Exportieren des Bildes ging etwas schief.", + ["ApplyColorToSelection"] = "Farbe anwenden", + ["ApplyColorToSelectionToolTip"] = "Farbe auf alle Gebäude in der aktuellen Auswahl anwenden", + ["ApplyPredefinedColorToSelection"] = "Vordefinierte Farbe anwenden", + ["ApplyPredefinedColorToSelectionToolTip"] = "Vordefinierte Farbe (falls gefunden) auf alle Gebäude in der aktuellen Auswahl anwenden.", + ["AvailableColors"] = "Verfügbare Farben", + ["StandardColors"] = "Vordefinierte Farben", + ["RecentColors"] = "Zuletzt verwendete Farben", + ["Standard"] = "Standard", + ["Advanced"] = "Erweitert", + ["UpdateAvailableHeader"] = "Update verfügbar", + ["UpdateAvailablePresetMessage"] = $"Eine aktualisierte Version der Vorlagen ist verfügbar.{Environment.NewLine}Möchten Sie sie herunterladen und die Anwendung neu starten?", + ["AdminRightsRequired"] = "Admin-Rechte erforderlich", + ["UpdateRequiresAdminRightsMessage"] = "Um das Update herunterzuladen, benötigt die Anwendung Schreibzugriff. Bitte geben Sie die Zugangsdaten an.", + ["Error"] = "Fehler", + ["UpdateErrorPresetMessage"] = "Es gab einen Fehler bei der Installation des Updates.", + ["UpdateNoConnectionMessage"] = "Es konnte keine Verbindung zum Internet hergestellt werden.", + ["ColorsInLayout"] = "Farben im Layout", + ["ColorsInLayoutToolTip"] = "Doppelklicken Sie auf die Farbe, um sie auszuwählen.", + ["LoadLayoutHeader"] = "Layout laden", + ["LoadLayoutMessage"] = "Bitte fügen Sie die JSON-Zeichenkette unten ein.", + ["ClipboardContainsLayoutAsJson"] = "Die Zwischenablage enthält das aktuelle Layout als JSON.", + ["OK"] = "OK", + ["Cancel"] = "Abbrechen", + ["SelectAll"] = "Alle auswählen", + ["Tools"] = "Werkzeuge", + ["Preferences"] = "Einstellungen", + ["ResetAllConfirmationMessage"] = "Sind Sie sicher, dass Sie alle Tastenkombinationen auf ihre Standardeinstellungen zurücksetzen möchten?", + ["ResetAll"] = "Alle zurücksetzen", + ["UpdateSettings"] = "Updates", + ["ManageKeybindings"] = "Tastenkombinationen", + ["Edit"] = "Bearbeiten", + ["Recording"] = "Aufzeichnung", + ["RecordANewAction"] = "Eine neue Aktion aufzeichnen", + ["Rotate"] = "Drehen", + ["Copy"] = "Kopieren", + ["Paste"] = "Einfügen", + ["Delete"] = "Löschen", + ["Duplicate"] = "Duplikat", + ["RotateAll"] = "Alle drehen", + ["DeleteObjectUnderCursor"] = "Objekt unter Mauszeiger löschen", + ["Licenses"] = "Lizenzen", + ["ViewLicenses"] = "Open-Source-Lizenzen anzeigen", + ["ExternalLinkConfirmationMessage"] = "Dadurch wird ein neuer Tab in Ihrem Standard-Webbrowser geöffnet. Fortfahren?", + ["ExternalLinkMessageTitle"] = "Einen externen Link öffnen", + ["RecentFiles"] = "Zuletzt geöffnete Dateien", + ["UpdatePreferencesVersionInformation"] = "Versions-Informationen", + ["UpdatePreferencesSettings"] = "Einstellungen", + ["UpdatePreferencesCheckPreRelease"] = "Auf Vorabveröffentlichungen prüfen", + ["UpdatePreferencesUpdates"] = "Updates", + ["UpdatePreferencesDownloadPresetsAndRestart"] = "Vorlagen herunterladen und Anwendung neu starten", + ["UpdatePreferencesNewAppUpdateAvailable"] = "Ein neues Update ist verfügbar! Bitte schauen Sie auf der Website nach Versionshinweisen.", + ["UpdatePreferencesNoUpdates"] = "Diese Version ist auf dem neuesten Stand.", + ["UpdatePreferencesErrorCheckingUpdates"] = "Fehler beim Prüfen auf Updates.", + ["UpdatePreferencesMoreInfoInLog"] = "Weitere Informationen finden Sie im Protokoll.", + ["UpdatePreferencesNewPresetsUpdateAvailable"] = "Ein neues Update für die Vorlagen ist verfügbar!", + ["UpdatePreferencesBusyCheckUpdates"] = "Prüfe auf Updates ...", + ["UpdatePreferencesBusyDownloadPresets"] = "Herunterladen von Vorlagen ...", + ["NoIcon"] = "Kein Icon", + ["GeneralSettings"] = "Allgemein", + ["GeneralPreferencesUISettings"] = "Darstellung", + ["GeneralPreferencesHideInfluenceOnSelection"] = "Verstecke Einflußbereich beim Selektieren", + ["GeneralPreferencesUseZoomToPoint"] = "Verwende neues Zoomverhalten", + ["GeneralPreferencesGridLinesColor"] = "Raster-/Gitterlinienfarbe", + ["GeneralPreferencesObjectBorderLinesColor"] = "Randfarbe", + ["GeneralPreferencesZoomSensitivity"] = "Zoom-Empfindlichkeit", + ["GeneralPreferencesInvertScrollingDirection"] = "Scrollrichtung umkehren", + ["GeneralPreferencesInvertPanningDirection"] = "Schwenkrichtung umkehren", + ["GeneralPreferencesShowScrollbars"] = "Scrollbalken anzeigen", + ["ColorTypeDefault"] = "Standard", + ["ColorTypeLight"] = "Heller", + ["ColorTypeCustom"] = "Benutzerdefiniert", + ["Warning"] = "Warnung", + ["FileNotFound"] = "Die Datei wurde nicht gefunden.", + ["Default"] = "Standard", + ["ItemsCopied"] = "Elemente kopiert", + ["ItemCopied"] = "Element kopiert", + ["LoadingPresetsFailed"] = "Das Laden der Gebäudevorlagen ist fehlgeschlagen.", + ["LoadingIconNamesFailed"] = "Das Laden der Iconnamen ist fehlgeschlagen.", + ["FileVersionUnsupportedMessage"] = $"Versuchen Sie trotzdem zu laden?{Environment.NewLine}Dies wird sehr wahrscheinlich fehlschlagen oder dazu führen, dass seltsame Dinge passieren.", + ["FileVersionUnsupportedTitle"] = "Dateiversion nicht unterstützt", + ["IOErrorMessage"] = "Etwas ist beim Speichern/Laden der Datei schiefgegangen.", + ["AnotherInstanceIsAlreadyRunning"] = "Eine andere Instanz der App läuft bereits.", + ["ErrorUpgradingSettings"] = "Die Einstellungsdatei ist beschädigt worden. Wir müssen Ihre Einstellungen zurücksetzen.", + ["FileVersionMismatchMessage"] = $"Versuchen Sie trotzdem zu laden?{Environment.NewLine}Dies wird sehr wahrscheinlich fehlschlagen oder dazu führen, dass seltsame Dinge passieren.", + ["FileVersionMismatchTItle"] = "Unstimmigkeit der Dateiversion", + ["LayoutLoadingError"] = "Beim Laden des Layouts ging etwas schief.", + ["LayoutSavingError"] = "Beim Speichern des Layouts ist etwas schiefgegangen.", + ["InvalidBuildingConfiguration"] = "Ungültige Gebäudekonfiguration.", + ["MergeRoads"] = "Straßen zusammenführen", + ["LoadingTreeLocalizationFailed"] = "Das Laden der Übersetzungen ist fehlgeschlagen.", + ["Undo"] = "Rückgängig", + ["Redo"] = "Wiederherstellen", + ["LayoutSettings"] = "Layout Optionen", + ["View"] = "Ansicht", + ["SaveUnsavedChanges"] = "Änderungen speichern?", + ["UnsavedChanged"] = "Es gibt nicht gespeicherte Änderungen", + ["UnsavedChangedBeforeCrash"] = "Die Anwendung ist abgestürzt, aber es gibt nicht gespeicherte Änderungen.", + ["ColorPresetsVersion"] = "Farbvorlagenversion", + ["TreeLocalizationVersion"] = "Übersetzungsversion", + ["ShowHarborBlockedArea"] = "Hafengebiete anzeigen" }, + ["fra"] = new Dictionary() { - "fra", new Dictionary() { - { "File" , "Fichier" }, - { "NewCanvas" , "Nouveau projet" }, - { "Open" , "Ouvrir" }, - { "Save" , "Sauvegarder" }, - { "SaveAs" , "Sauvegarder sous" }, - { "CopyLayoutToClipboard" , "Copier la mise en page dans le presse-papiers en tant que JSON" }, - { "LoadLayoutFromJson" , "Charger l'agencement à partir de JSON" }, - { "Exit" , "Quitter" }, - { "Extras" , "Extras" }, - { "Normalize" , "Centrer" }, - { "ResetZoom" , "Rénitialiser le zoom" }, - { "RegisterFileExtension" , "Enregistrer l'extension du fichier" }, - { "RegisterFileExtensionSuccessful" , "L'enregistrement de l'extension du fichier est terminée" }, - { "UnregisterFileExtension" , "Supprimer l'extension du fichier" }, - { "UnregisterFileExtensionSuccessful" , "La suppresion de l'extension du fichier est terminée" }, - { "Successful" , "Réussi" }, - { "Export" , "Exporter" }, - { "ExportImage" , "Exporter une image" }, - { "UseCurrentZoomOnExportedImage" , "Utiliser le zom actuel sur l'image exportée" }, - { "RenderSelectionHighlightsOnExportedImage" , "Rendre la sélection en surbrillance sur l'image exportée" }, - { "Language" , "Langue" }, - { "ManageStats" , "Gérer les statistiques" }, - { "ShowStats" , "Montrer les statistiques" }, - { "BuildingCount" , "Nombre de bâtiment" }, - { "Help" , "Aide" }, - { "Version" , "Version" }, - { "FileVersion" , "Version du fichier" }, - { "PresetsVersion" , "Version du préréglage" }, - { "ColorPresetsVersion" , "Version des préréglages de couleur" }, - { "TreeLocalizationVersion" , "Version de la localisation de l'arbre" }, - { "CheckForUpdates" , "Vérifiez les mises à jour" }, - { "VersionCheckErrorMessage" , $"Quelque chose s'est mal passé lors de la vérification de la version d'erreur.{Environment.NewLine}Plus d'informations peuvent être trouvées dans le journal. exportation de l'image." }, - { "VersionCheckErrorTitle" , "La vérification de la version a échoué." }, - { "EnableAutomaticUpdateCheck" , "Activer les mises à jour automatique au démarrage" }, - { "ContinueCheckingForUpdates" , $"Vous souhaitez continuer à vérifier si une nouvelle version est disponible au démarrage?{Environment.NewLine}{Environment.NewLine} Cette option peut être modifiée via Outils -> Préférences -> Mise à jour des paramètres." }, - { "ContinueCheckingForUpdatesTitle" , "Continuer à vérifier les mises à jour ?" }, - { "GoToProjectHomepage" , "Visiter le site internet du projet" }, - { "OpenWelcomePage" , "Ouvrir la page d'accueil" }, - { "AboutAnnoDesigner" , "À propos d'Anno Designer" }, - { "ShowGrid" , "Montrez le quadrillage" }, - { "ShowLabels" , "Montrez les étiquettes" }, - { "ShowIcons" , "Montrez les icônes" }, - { "ShowTrueInfluenceRange" , "Montrer l'étendue de l'influence réelle" }, - { "ShowInfluences" , "Montrez vos influences" }, - { "BuildingSettings" , "Paramètres de construction" }, - { "Size" , "Grandeur" }, - { "Color" , "Couleur" }, - { "Label" , "Étiquette" }, - { "Icon" , "Icône" }, - { "InfluenceType" , "Type d'influence" }, - { "None" , "Aucun" }, - { "Radius" , "Rayon" }, - { "Range" , "Zone de détection" }, - { "Distance" , "Distance" }, - { "Both" , "Tous les deux" }, - { "PavedStreet" , "Rue pavée" }, - { "PavedStreetWarningTitle" , "Sélection de rues pavées" }, - { "PavedStreetToolTip" , $"Si vous cochez cette option, la plage d'influence des bâtiments sera modifiée, {Environment.NewLine}ce qui représente la portée accrue qu'ils reçoivent lorsqu'ils utilisent des rues pavées.{Environment.NewLine}Utilisez le bouton 'Placer le bâtiment' pour placer l'objet." }, - { "Options" , "Options" }, - { "EnableLabel" , "Activer les étiquettes" }, - { "Borderless" , "Sans bordure" }, - { "Road" , "Routes" }, - { "PlaceBuilding" , "Placer le bâtiment" }, - { "Search" , "Filtrez" }, - { "SearchToolTip" , "ESC pour effacer la recherche" }, - { "SearchPlaceholder" , "Tapez le nom d'un bâtiment ici" }, - { "TitleAbout" , "À propos" }, - { "BuildingLayoutDesigner" , "Un planificateur de carte pour la série Anno d'Ubisofts" }, - { "Credits" , "Crédits" }, - { "OriginalApplicationBy" , "Application originale par" }, - { "BuildingPresets" , "prédisposition des bâtiments" }, - { "CombinedForAnnoVersions" , "Combiner les prédispositions des bâtiments pour" }, - { "AdditionalChanges" , "Changements supplémentaires par les contributeurs sur Github" }, - { "ManyThanks" , "Un énorme merci à tous les utilisateurs qui ont contribués au projet!" }, - { "VisitTheFandom" , "Assurez-vous de visiter la page de Fandom pour Anno!" }, - { "OriginalHomepage" , "Page originale" }, - { "ProjectHomepage" , "Page du projet" }, - { "GoToFandom" , "Site internet de Fandom" }, - { "Close" , "Fermer" }, - { "StatusBarControls" , "Contrôles de la souris: gauche - placer, sélectionner, déplacer // droit – arrêter le déplacement, retirer // les deux – tout déplacer // double clic - copier // molette - zoom // clic de la molette - rotation." }, - { "StatusBarItemsOnClipboard" , "Éléments dans le presse-papier" }, - { "StatNothingPlaced" , "Rien n'est placé" }, - { "StatBoundingBox" , "Zone de délimitation" }, - { "StatMinimumArea" , "Surface minimale" }, - { "StatSpaceEfficiency" , "Utilisation de l'espace" }, - { "StatBuildings" , "Bâtiments" }, - { "StatBuildingsSelected" , "Bâtiment sélectionné" }, - { "StatTiles" , "Carrelage" }, - { "StatNameNotFound" , "Nom du bâtiment introuvable" }, - { "UnknownObject" , "Object inconnu" }, - { "PresetsLoaded" , "Préréglage du bâtiment importé" }, - { "ExportImageSuccessful" , "L'image a été exportée correctement." }, - { "ExportImageError" , "Quelque chose s'est mal passé lors de l'exportation de l'image." }, - { "ApplyColorToSelection" , "Appliquer la couleur" }, - { "ApplyColorToSelectionToolTip" , "Appliquer la couleur à tous les bâtiments de la sélection courante" }, - { "ApplyPredefinedColorToSelection" , "Appliquer la couleur prédéfinie" }, - { "ApplyPredefinedColorToSelectionToolTip" , "Appliquer la couleur prédéfinie (si trouvée) à tous les bâtiments de la sélection courante" }, - { "AvailableColors" , "Couleurs disponibles" }, - { "StandardColors" , "Couleurs prédéfinies" }, - { "RecentColors" , "Couleurs utilisées récemment" }, - { "Standard" , "Standard" }, - { "Advanced" , "Avancé" }, - { "UpdateAvailableHeader" , "Mise à jour disponible" }, - { "UpdateAvailablePresetMessage" , $"Une version mise à jour des préréglages est disponible.{Environment.NewLine}Voulez-vous le télécharger et redémarrer l'application?" }, - { "AdminRightsRequired" , "Droits d'administration requis" }, - { "UpdateRequiresAdminRightsMessage" , "Pour télécharger la mise à jour, l'application a besoin d'un accès en écriture. Veuillez fournir vos justificatifs d'identité." }, - { "Error" , "Erreur" }, - { "UpdateErrorPresetMessage" , "Il y a eu une erreur lors de l'installation de la mise à jour." }, - { "UpdateNoConnectionMessage" , "Impossible d'établir une connexion à Internet." }, - { "ColorsInLayout" , "Couleurs dans la mise en page" }, - { "ColorsInLayoutToolTip" , "Double-cliquez sur la couleur pour la sélectionner" }, - { "LoadLayoutHeader" , "Disposition de la charge" }, - { "LoadLayoutMessage" , "Veuillez coller la chaîne JSON ci-dessous." }, - { "ClipboardContainsLayoutAsJson" , "Le presse-papiers contient la mise en page actuelle en tant que JSON." }, - { "OK" , "OK" }, - { "Cancel" , "Annuler" }, - { "SelectAll" , "Sélectionner tout" }, - { "Tools" , "Outils" }, - { "Preferences" , "Préférences" }, - { "ResetAllConfirmationMessage" , "Êtes-vous sûr de vouloir réinitialiser toutes les touches de raccourci à leurs paramètres par défaut ?" }, - { "ResetAll" , "Réinitialiser tout" }, - { "UpdateSettings" , "Mise à jour des paramètres" }, - { "ManageKeybindings" , "Gérer les porte-clés" }, - { "Edit" , "Edit" }, - { "Recording" , "Enregistrement" }, - { "RecordANewAction" , "Enregistrer une nouvelle action" }, - { "Rotate" , "Faire tourner" }, - { "Copy" , "Copie" }, - { "Paste" , "Coller" }, - { "Delete" , "Supprimer" }, - { "Duplicate" , "Dupliquer" }, - { "RotateAll" , "Faire pivoter tout" }, - { "DeleteObjectUnderCursor" , "Supprimer l'objet sous le curseur" }, - { "Licenses" , "Licences" }, - { "ViewLicenses" , "Voir les licences open source" }, - { "ExternalLinkConfirmationMessage" , "Cela ouvrira un nouvel onglet dans votre navigateur web par défaut. Continuer ?" }, - { "ExternalLinkMessageTitle" , "Ouverture d'un lien externe" }, - { "RecentFiles" , "Fichiers récents" }, - { "UpdatePreferencesVersionInformation" , "Informations sur les versions" }, - { "UpdatePreferencesSettings" , "Paramètres" }, - { "UpdatePreferencesCheckPreRelease" , "Vérifier les pré-livraisons" }, - { "UpdatePreferencesUpdates" , "Mises à jour" }, - { "UpdatePreferencesDownloadPresetsAndRestart" , "Télécharger les préréglages et relancer l'application" }, - { "UpdatePreferencesNewAppUpdateAvailable" , "Une nouvelle mise à jour est disponible ! Veuillez consulter le site web pour les notes de mise à jour." }, - { "UpdatePreferencesNoUpdates" , "Cette version est à jour." }, - { "UpdatePreferencesErrorCheckingUpdates" , "Vérification d'erreurs pour les mises à jour." }, - { "UpdatePreferencesMoreInfoInLog" , "Vous trouverez plus d'informations dans le journal de bord." }, - { "UpdatePreferencesNewPresetsUpdateAvailable" , "Une nouvelle mise à jour des présélections est disponible!" }, - { "UpdatePreferencesBusyCheckUpdates" , "Vérifier les mises à jour ..." }, - { "UpdatePreferencesBusyDownloadPresets" , "Téléchargement des préréglages ..." }, - { "NoIcon" , "Pas d'icône" }, - { "GeneralSettings" , "Paramètres généraux" }, - { "GeneralPreferencesUISettings" , "Paramètres de l'interface utilisateur" }, - { "GeneralPreferencesHideInfluenceOnSelection" , "Cacher l'influence sur la sélection" }, - { "GeneralPreferencesUseZoomToPoint" , "Utiliser un nouveau comportement de zoom" }, - { "GeneralPreferencesGridLinesColor" , "Couleur des lignes de la grille" }, - { "GeneralPreferencesObjectBorderLinesColor" , "Couleur de la bordure" }, - { "GeneralPreferencesZoomSensitivity" , "Sensibilité du zoom" }, - { "GeneralPreferencesInvertScrollingDirection" , "Inverser le sens de défilement" }, - { "GeneralPreferencesInvertPanningDirection" , "Inverser le sens de rotation" }, - { "GeneralPreferencesShowScrollbars" , "Afficher les barres de défilement" }, - { "ColorTypeDefault" , "Défaut" }, - { "ColorTypeLight" , "Lumière" }, - { "ColorTypeCustom" , "Personnalisation" }, - { "Warning" , "Avertissement" }, - { "FileNotFound" , "Le fichier n'a pas été retrouvé." }, - { "Default" , "Défaut" }, - { "ItemsCopied" , "éléments copiés" }, - { "ItemCopied" , "élément copié" }, - { "LoadingPresetsFailed" , "Le chargement des présélections du bâtiment a échoué." }, - { "LoadingIconNamesFailed" , "Le chargement des noms d'icônes a échoué." }, - { "FileVersionUnsupportedMessage" , $"Essayez de charger quand même?{Environment.NewLine}Il est très probable que cela échoue ou que des choses étranges se produisent." }, - { "FileVersionUnsupportedTitle" , "Version du fichier non prise en charge" }, - { "IOErrorMessage" , "Quelque chose s'est mal passé pendant l'enregistrement et le chargement du fichier." }, - { "AnotherInstanceIsAlreadyRunning" , "Une autre instance de l'application est déjà en cours d'exécution." }, - { "ErrorUpgradingSettings" , "Le fichier de configuration est corrompu. Nous devons réinitialiser vos paramètres." }, - { "FileVersionMismatchMessage" , $"Essayez quand même de charger?{Environment.NewLine}Il est très probable que cela échoue ou que des choses étranges se produisent." }, - { "FileVersionMismatchTItle" , "Mauvaise concordance des versions des fichiers" }, - { "LayoutLoadingError" , "Quelque chose s'est mal passé lors du chargement de la mise en page." }, - { "LayoutSavingError" , "Quelque chose s'est mal passé lors de la sauvegarde de la mise en page." }, - { "InvalidBuildingConfiguratin" , "Configuration du bâtiment incorrecte." }, - { "MergeRoads" , "Fusionner les routes" }, - { "LoadingTreeLocalizationFailed" , "Le chargement de la localisation a échoué." }, - { "Undo" , "Annuler" }, - { "Redo" , "Refaire" }, - { "LayoutSettings" , "Paramètres de mise en page" }, - { "View" , "Voir" } - } + ["File"] = "Fichier", + ["NewCanvas"] = "Nouveau projet", + ["Open"] = "Ouvrir", + ["Save"] = "Sauvegarder", + ["SaveAs"] = "Sauvegarder sous", + ["CopyLayoutToClipboard"] = "Copier la mise en page dans le presse-papiers en tant que JSON", + ["LoadLayoutFromJson"] = "Charger l'agencement à partir de JSON", + ["Exit"] = "Quitter", + ["Extras"] = "Extras", + ["Normalize"] = "Centrer", + ["ResetZoom"] = "Rénitialiser le zoom", + ["RegisterFileExtension"] = "Enregistrer l'extension du fichier", + ["RegisterFileExtensionSuccessful"] = "L'enregistrement de l'extension du fichier est terminée", + ["UnregisterFileExtension"] = "Supprimer l'extension du fichier", + ["UnregisterFileExtensionSuccessful"] = "La suppresion de l'extension du fichier est terminée", + ["Successful"] = "Réussi", + ["Export"] = "Exporter", + ["ExportImage"] = "Exporter une image", + ["UseCurrentZoomOnExportedImage"] = "Utiliser le zom actuel sur l'image exportée", + ["RenderSelectionHighlightsOnExportedImage"] = "Rendre la sélection en surbrillance sur l'image exportée", + ["Language"] = "Langue", + ["ManageStats"] = "Gérer les statistiques", + ["ShowStats"] = "Montrer les statistiques", + ["BuildingCount"] = "Nombre de bâtiment", + ["Help"] = "Aide", + ["Version"] = "Version", + ["FileVersion"] = "Version du fichier", + ["PresetsVersion"] = "Version du préréglage", + ["CheckForUpdates"] = "Vérifiez les mises à jour", + ["VersionCheckErrorMessage"] = $"Quelque chose s'est mal passé lors de la vérification de la version d'erreur.{Environment.NewLine}Plus d'informations peuvent être trouvées dans le journal. exportation de l'image.", + ["VersionCheckErrorTitle"] = "La vérification de la version a échoué.", + ["EnableAutomaticUpdateCheck"] = "Activer les mises à jour automatique au démarrage", + ["ContinueCheckingForUpdates"] = $"Vous souhaitez continuer à vérifier si une nouvelle version est disponible au démarrage?{Environment.NewLine}{Environment.NewLine} Cette option peut être modifiée via Outils -> Préférences -> Mise à jour des paramètres.", + ["ContinueCheckingForUpdatesTitle"] = "Continuer à vérifier les mises à jour ?", + ["GoToProjectHomepage"] = "Visiter le site internet du projet", + ["OpenWelcomePage"] = "Ouvrir la page d'accueil", + ["AboutAnnoDesigner"] = "À propos d'Anno Designer", + ["ShowGrid"] = "Montrez le quadrillage", + ["ShowLabels"] = "Montrez les étiquettes", + ["ShowIcons"] = "Montrez les icônes", + ["ShowTrueInfluenceRange"] = "Montrer l'étendue de l'influence réelle", + ["ShowInfluences"] = "Montrez vos influences", + ["BuildingSettings"] = "Paramètres de construction", + ["Size"] = "Grandeur", + ["Color"] = "Couleur", + ["Label"] = "Étiquette", + ["Icon"] = "Icône", + ["InfluenceType"] = "Type d'influence", + ["None"] = "Aucun", + ["Radius"] = "Rayon", + ["Range"] = "Zone de détection", + ["Distance"] = "Distance", + ["Both"] = "Tous les deux", + ["PavedStreet"] = "Rue pavée", + ["PavedStreetWarningTitle"] = "Sélection de rues pavées", + ["PavedStreetToolTip"] = $"Si vous cochez cette option, la plage d'influence des bâtiments sera modifiée, {Environment.NewLine}ce qui représente la portée accrue qu'ils reçoivent lorsqu'ils utilisent des rues pavées.{Environment.NewLine}Utilisez le bouton 'Placer le bâtiment' pour placer l'objet.", + ["Options"] = "Options", + ["EnableLabel"] = "Activer les étiquettes", + ["Borderless"] = "Sans bordure", + ["Road"] = "Routes", + ["PlaceBuilding"] = "Placer le bâtiment", + ["Search"] = "Filtrez", + ["SearchToolTip"] = "ESC pour effacer la recherche", + ["SearchPlaceholder"] = "Tapez le nom d'un bâtiment ici", + ["TitleAbout"] = "À propos", + ["BuildingLayoutDesigner"] = "Un planificateur de carte pour la série Anno d'Ubisofts", + ["Credits"] = "Crédits", + ["OriginalApplicationBy"] = "Application originale par", + ["BuildingPresets"] = "prédisposition des bâtiments", + ["CombinedForAnnoVersions"] = "Combiner les prédispositions des bâtiments pour", + ["AdditionalChanges"] = "Changements supplémentaires par les contributeurs sur Github", + ["ManyThanks"] = "Un énorme merci à tous les utilisateurs qui ont contribués au projet!", + ["VisitTheFandom"] = "Assurez-vous de visiter la page de Fandom pour Anno!", + ["OriginalHomepage"] = "Page originale", + ["ProjectHomepage"] = "Page du projet", + ["GoToFandom"] = "Site internet de Fandom", + ["Close"] = "Fermer", + ["StatusBarControls"] = "Contrôles de la souris: gauche - placer, sélectionner, déplacer // droit – arrêter le déplacement, retirer // les deux – tout déplacer // double clic - copier // molette - zoom // clic de la molette - rotation.", + ["StatusBarItemsOnClipboard"] = "Éléments dans le presse-papier", + ["StatNothingPlaced"] = "Rien n'est placé", + ["StatBoundingBox"] = "Zone de délimitation", + ["StatMinimumArea"] = "Surface minimale", + ["StatSpaceEfficiency"] = "Utilisation de l'espace", + ["StatBuildings"] = "Bâtiments", + ["StatBuildingsSelected"] = "Bâtiment sélectionné", + ["StatTiles"] = "Carrelage", + ["StatNameNotFound"] = "Nom du bâtiment introuvable", + ["UnknownObject"] = "Object inconnu", + ["PresetsLoaded"] = "Préréglage du bâtiment importé", + ["ExportImageSuccessful"] = "L'image a été exportée correctement.", + ["ExportImageError"] = "Quelque chose s'est mal passé lors de l'exportation de l'image.", + ["ApplyColorToSelection"] = "Appliquer la couleur", + ["ApplyColorToSelectionToolTip"] = "Appliquer la couleur à tous les bâtiments de la sélection courante", + ["ApplyPredefinedColorToSelection"] = "Appliquer la couleur prédéfinie", + ["ApplyPredefinedColorToSelectionToolTip"] = "Appliquer la couleur prédéfinie (si trouvée) à tous les bâtiments de la sélection courante", + ["AvailableColors"] = "Couleurs disponibles", + ["StandardColors"] = "Couleurs prédéfinies", + ["RecentColors"] = "Couleurs utilisées récemment", + ["Standard"] = "Standard", + ["Advanced"] = "Avancé", + ["UpdateAvailableHeader"] = "Mise à jour disponible", + ["UpdateAvailablePresetMessage"] = $"Une version mise à jour des préréglages est disponible.{Environment.NewLine}Voulez-vous le télécharger et redémarrer l'application?", + ["AdminRightsRequired"] = "Droits d'administration requis", + ["UpdateRequiresAdminRightsMessage"] = "Pour télécharger la mise à jour, l'application a besoin d'un accès en écriture. Veuillez fournir vos justificatifs d'identité.", + ["Error"] = "Erreur", + ["UpdateErrorPresetMessage"] = "Il y a eu une erreur lors de l'installation de la mise à jour.", + ["UpdateNoConnectionMessage"] = "Impossible d'établir une connexion à Internet.", + ["ColorsInLayout"] = "Couleurs dans la mise en page", + ["ColorsInLayoutToolTip"] = "Double-cliquez sur la couleur pour la sélectionner", + ["LoadLayoutHeader"] = "Disposition de la charge", + ["LoadLayoutMessage"] = "Veuillez coller la chaîne JSON ci-dessous.", + ["ClipboardContainsLayoutAsJson"] = "Le presse-papiers contient la mise en page actuelle en tant que JSON.", + ["OK"] = "OK", + ["Cancel"] = "Annuler", + ["SelectAll"] = "Sélectionner tout", + ["Tools"] = "Outils", + ["Preferences"] = "Préférences", + ["ResetAllConfirmationMessage"] = "Êtes-vous sûr de vouloir réinitialiser toutes les touches de raccourci à leurs paramètres par défaut ?", + ["ResetAll"] = "Réinitialiser tout", + ["UpdateSettings"] = "Mise à jour des paramètres", + ["ManageKeybindings"] = "Gérer les porte-clés", + ["Edit"] = "Edit", + ["Recording"] = "Enregistrement", + ["RecordANewAction"] = "Enregistrer une nouvelle action", + ["Rotate"] = "Faire tourner", + ["Copy"] = "Copie", + ["Paste"] = "Coller", + ["Delete"] = "Supprimer", + ["Duplicate"] = "Dupliquer", + ["RotateAll"] = "Faire pivoter tout", + ["DeleteObjectUnderCursor"] = "Supprimer l'objet sous le curseur", + ["Licenses"] = "Licences", + ["ViewLicenses"] = "Voir les licences open source", + ["ExternalLinkConfirmationMessage"] = "Cela ouvrira un nouvel onglet dans votre navigateur web par défaut. Continuer ?", + ["ExternalLinkMessageTitle"] = "Ouverture d'un lien externe", + ["RecentFiles"] = "Fichiers récents", + ["UpdatePreferencesVersionInformation"] = "Informations sur les versions", + ["UpdatePreferencesSettings"] = "Paramètres", + ["UpdatePreferencesCheckPreRelease"] = "Vérifier les pré-livraisons", + ["UpdatePreferencesUpdates"] = "Mises à jour", + ["UpdatePreferencesDownloadPresetsAndRestart"] = "Télécharger les préréglages et relancer l'application", + ["UpdatePreferencesNewAppUpdateAvailable"] = "Une nouvelle mise à jour est disponible ! Veuillez consulter le site web pour les notes de mise à jour.", + ["UpdatePreferencesNoUpdates"] = "Cette version est à jour.", + ["UpdatePreferencesErrorCheckingUpdates"] = "Vérification d'erreurs pour les mises à jour.", + ["UpdatePreferencesMoreInfoInLog"] = "Vous trouverez plus d'informations dans le journal de bord.", + ["UpdatePreferencesNewPresetsUpdateAvailable"] = "Une nouvelle mise à jour des présélections est disponible!", + ["UpdatePreferencesBusyCheckUpdates"] = "Vérifier les mises à jour ...", + ["UpdatePreferencesBusyDownloadPresets"] = "Téléchargement des préréglages ...", + ["NoIcon"] = "Pas d'icône", + ["GeneralSettings"] = "Paramètres généraux", + ["GeneralPreferencesUISettings"] = "Paramètres de l'interface utilisateur", + ["GeneralPreferencesHideInfluenceOnSelection"] = "Cacher l'influence sur la sélection", + ["GeneralPreferencesUseZoomToPoint"] = "Utiliser un nouveau comportement de zoom", + ["GeneralPreferencesGridLinesColor"] = "Couleur des lignes de la grille", + ["GeneralPreferencesObjectBorderLinesColor"] = "Couleur de la bordure", + ["GeneralPreferencesZoomSensitivity"] = "Sensibilité du zoom", + ["GeneralPreferencesInvertScrollingDirection"] = "Inverser le sens de défilement", + ["GeneralPreferencesInvertPanningDirection"] = "Inverser le sens de rotation", + ["GeneralPreferencesShowScrollbars"] = "Afficher les barres de défilement", + ["ColorTypeDefault"] = "Défaut", + ["ColorTypeLight"] = "Lumière", + ["ColorTypeCustom"] = "Personnalisation", + ["Warning"] = "Avertissement", + ["FileNotFound"] = "Le fichier n'a pas été retrouvé.", + ["Default"] = "Défaut", + ["ItemsCopied"] = "éléments copiés", + ["ItemCopied"] = "élément copié", + ["LoadingPresetsFailed"] = "Le chargement des présélections du bâtiment a échoué.", + ["LoadingIconNamesFailed"] = "Le chargement des noms d'icônes a échoué.", + ["FileVersionUnsupportedMessage"] = $"Essayez de charger quand même?{Environment.NewLine}Il est très probable que cela échoue ou que des choses étranges se produisent.", + ["FileVersionUnsupportedTitle"] = "Version du fichier non prise en charge", + ["IOErrorMessage"] = "Quelque chose s'est mal passé pendant l'enregistrement et le chargement du fichier.", + ["AnotherInstanceIsAlreadyRunning"] = "Une autre instance de l'application est déjà en cours d'exécution.", + ["ErrorUpgradingSettings"] = "Le fichier de configuration est corrompu. Nous devons réinitialiser vos paramètres.", + ["FileVersionMismatchMessage"] = $"Essayez quand même de charger?{Environment.NewLine}Il est très probable que cela échoue ou que des choses étranges se produisent.", + ["FileVersionMismatchTItle"] = "Mauvaise concordance des versions des fichiers", + ["LayoutLoadingError"] = "Quelque chose s'est mal passé lors du chargement de la mise en page.", + ["LayoutSavingError"] = "Quelque chose s'est mal passé lors de la sauvegarde de la mise en page.", + ["InvalidBuildingConfiguration"] = "Configuration du bâtiment incorrecte.", + ["MergeRoads"] = "Fusionner les routes", + ["LoadingTreeLocalizationFailed"] = "Le chargement de la localisation a échoué.", + ["Undo"] = "Annuler", + ["Redo"] = "Refaire", + ["LayoutSettings"] = "Paramètres de mise en page", + ["View"] = "Voir", + ["SaveUnsavedChanges"] = "Sauvegarder les modifications non sauvegardées ?", + ["UnsavedChanged"] = "Il y a des changements non sauvés", + ["UnsavedChangedBeforeCrash"] = "Le programme a planté mais il y a des modifications non sauvegardées.", + ["ColorPresetsVersion"] = "Version des préréglages de couleur", + ["TreeLocalizationVersion"] = "Version de la localisation de l'arbre", + ["ShowHarborBlockedArea"] = "Afficher les zones portuaires" }, + ["esp"] = new Dictionary() { - "pol", new Dictionary() { - { "File" , "Plik" }, - { "NewCanvas" , "Nowy projekt" }, - { "Open" , "Otwórz" }, - { "Save" , "Zapisz" }, - { "SaveAs" , "Zapisz jako" }, - { "CopyLayoutToClipboard" , "Skopiuj układ do schowka jako JSON." }, - { "LoadLayoutFromJson" , "Układ obciążenia od JSON" }, - { "Exit" , "Zamknij" }, - { "Extras" , "Dodatki" }, - { "Normalize" , "Znormalizuj" }, - { "ResetZoom" , "Resetuj powiększenie" }, - { "RegisterFileExtension" , "Zarejestruj rozszerzenie pliku" }, - { "RegisterFileExtensionSuccessful" , "Rejestracja rozszerzenia pliku zakończyła się sukcesem." }, - { "UnregisterFileExtension" , "Wyrejestruj rozszerzenie pliku" }, - { "UnregisterFileExtensionSuccessful" , "Wyrejestrowanie rozszerzenia pliku zakończyło się sukcesem." }, - { "Successful" , "Udało się." }, - { "Export" , "Eksportuj" }, - { "ExportImage" , "Eksportuj obraz" }, - { "UseCurrentZoomOnExportedImage" , "Użyj obecnego powiększenia na eksportowanym obrazie" }, - { "RenderSelectionHighlightsOnExportedImage" , "Pokaż podświetlenie wybranych elementów na eksportowanym obrazie" }, - { "Language" , "Język" }, - { "ManageStats" , "Zarządzanie statystyki" }, - { "ShowStats" , "Pokaż statystyki" }, - { "BuildingCount" , "Licznik budynków" }, - { "Help" , "Pomoc" }, - { "Version" , "Wersja" }, - { "FileVersion" , "Wersja pliku" }, - { "PresetsVersion" , "Presety-wersja" }, - { "ColorPresetsVersion" , "Presety kolorów Wersja" }, - { "TreeLocalizationVersion" , "Wersja lokalizacji drzewa" }, - { "CheckForUpdates" , "Sprawdź aktualizacje" }, - { "VersionCheckErrorMessage" , $"Coś poszło nie tak podczas sprawdzania wersji Error.{Environment.NewLine}Więcej informacji można znaleźć w dzienniku. eksportowanie obrazu." }, - { "VersionCheckErrorTitle" , "Kontrola wersji nie powiodła się." }, - { "EnableAutomaticUpdateCheck" , "Włączyć automatyczne sprawdzanie aktualizacji przy uruchamianiu" }, - { "ContinueCheckingForUpdates" , $"Czy chcesz kontynuować sprawdzanie nowej wersji przy starcie systemu?{Environment.NewLine}{Environment.NewLine}Opcja ta może zostać zmieniona poprzez Narzędzia -> Preferencje -> Ustawienia aktualizacji." }, - { "ContinueCheckingForUpdatesTitle" , "Kontynuować sprawdzanie pod kątem aktualizacji?" }, - { "GoToProjectHomepage" , "Przejdź do strony projektu" }, - { "OpenWelcomePage" , "Otwórz stronę powitalną" }, - { "AboutAnnoDesigner" , "O Anno Designerze" }, - { "ShowGrid" , "Pokaż siatkę" }, - { "ShowLabels" , "Pokaż etykiety" }, - { "ShowIcons" , "Pokaż ikony" }, - { "ShowTrueInfluenceRange" , "Pokaż prawdziwy zakres wpływu" }, - { "ShowInfluences" , "Pokaż wpływy" }, - { "BuildingSettings" , "Ustawienia budynku" }, - { "Size" , "Wymiary" }, - { "Color" , "Kolor" }, - { "Label" , "Podpis" }, - { "Icon" , "Ikona" }, - { "InfluenceType" , "Rodzaj wpływu Typ" }, - { "None" , "Nie ma" }, - { "Radius" , "Promień" }, - { "Range" , "Zasięg" }, - { "Distance" , "Odległość" }, - { "Both" , "Obydwoje" }, - { "PavedStreet" , "Droga Brukowana" }, - { "PavedStreetWarningTitle" , "Wybór Drogi Brukowanej" }, - { "PavedStreetToolTip" , $"Zaznaczenie tej opcji spowoduje zmianę zakresu wpływu dla budynków, {Environment.NewLine}reprezentujący zwiększony zasięg, jaki otrzymują, gdy używając brukowanych ulic.{Environment.NewLine}Użyj przycisku 'Postaw budynek', aby umieścić obiekt." }, - { "Options" , "Opcje" }, - { "EnableLabel" , "Pokaż etykietę" }, - { "Borderless" , "Bez obramowania" }, - { "Road" , "Droga / Ulica" }, - { "PlaceBuilding" , "Postaw budynek" }, - { "Search" , "Filtr" }, - { "SearchToolTip" , "ESC aby wyczyścić tekst do przeszukiwania" }, - { "SearchPlaceholder" , "Wpisz tutaj nazwę budynku" }, - { "TitleAbout" , "Na temat / O" }, - { "BuildingLayoutDesigner" , "Program do planowania zabudowy w serii Anno Ubisoftu" }, - { "Credits" , "Autorzy" }, - { "OriginalApplicationBy" , "Oryginalna aplikacja napisana przez" }, - { "BuildingPresets" , "Presety dla budynków" }, - { "CombinedForAnnoVersions" , "Połączone presety budynków dla" }, - { "AdditionalChanges" , "Dodatkowe zmiany wprowadzone przez płatników w sprawie Github" }, - { "ManyThanks" , "Dziękujemy wszystkim użytkownikom, którzy wsparli ten projekt!" }, - { "VisitTheFandom" , "Odwiedź fanowskie strony o Anno!" }, - { "OriginalHomepage" , "Oryginalna strona" }, - { "ProjectHomepage" , "Strona projektu" }, - { "GoToFandom" , "Przejdź do strony Fandom" }, - { "Close" , "Zamknij" }, - { "StatusBarControls" , "Sterowanie myszą: w lewo - miejsce, zaznacz, przesuń // zatrzymanie w prawo, usuń // oba - przenieś wszystko // podwójne kliknięcie - kopiuj // kółko - powiększ // kółko - obracaj." }, - { "StatusBarItemsOnClipboard" , "pozycje w schowku" }, - { "StatNothingPlaced" , "Nic nie postawiono" }, - { "StatBoundingBox" , "Ramka Ograniczająca" }, - { "StatMinimumArea" , "Minimalna Powierzchnia" }, - { "StatSpaceEfficiency" , "Wykorzystanie Przestrzeni" }, - { "StatBuildings" , "Budynki" }, - { "StatBuildingsSelected" , "Wybrane Budynki" }, - { "StatTiles" , "Płytki" }, - { "StatNameNotFound" , "Nie znaleziono nazwy budynku" }, - { "UnknownObject" , "Obiekt nieznany" }, - { "PresetsLoaded" , "Presety budynków załadowano" }, - { "ExportImageSuccessful" , "Obraz został pomyślnie wyeksportowany." }, - { "ExportImageError" , "Coś poszło nie tak podczas eksportu obrazu." }, - { "ApplyColorToSelection" , "Zastosuj kolor" }, - { "ApplyColorToSelectionToolTip" , "Zastosowanie koloru do wszystkich budynków w bieżącym wyborze" }, - { "ApplyPredefinedColorToSelection" , "Zastosuj predefiniowany kolor" }, - { "ApplyPredefinedColorToSelectionToolTip" , "Zastosuj predefiniowany kolor (jeśli został znaleziony) do wszystkich budynków w bieżącym wyborze." }, - { "AvailableColors" , "Dostępne kolory" }, - { "StandardColors" , "Predefiniowane kolory" }, - { "RecentColors" , "Ostatnio używane kolory" }, - { "Standard" , "Standard" }, - { "Advanced" , "Zaawansowane" }, - { "UpdateAvailableHeader" , "Dostępna aktualizacja" }, - { "UpdateAvailablePresetMessage" , $"Dostępna jest zaktualizowana wersja presetów.{Environment.NewLine}Chcesz ją pobrać i zrestartować aplikację?" }, - { "AdminRightsRequired" , "Wymagane prawa administratora" }, - { "UpdateRequiresAdminRightsMessage" , "Aby pobrać aktualizację, aplikacja musi mieć dostęp do zapisu. Proszę podać dane uwierzytelniające." }, - { "Error" , "Błąd" }, - { "UpdateErrorPresetMessage" , "Wystąpił błąd podczas instalacji aktualizacji." }, - { "UpdateNoConnectionMessage" , "Nie udało się nawiązać połączenia z Internetem." }, - { "ColorsInLayout" , "Kolory w układzie" }, - { "ColorsInLayoutToolTip" , "Podwójne kliknięcie na kolor, aby go wybrać" }, - { "LoadLayoutHeader" , "Układ obciążenia" }, - { "LoadLayoutMessage" , "Proszę wkleić poniższy ciąg JSON." }, - { "ClipboardContainsLayoutAsJson" , "Schowek zawiera aktualny układ jako JSON." }, - { "OK" , "OK" }, - { "Cancel" , "Odwołaj" }, - { "SelectAll" , "Wybierz wszystkie" }, - { "Tools" , "Narzędzia" }, - { "Preferences" , "Preferencje" }, - { "ResetAllConfirmationMessage" , "Czy na pewno chcesz zresetować wszystkie klawisze funkcyjne do ich domyślnych ustawień?" }, - { "ResetAll" , "Zresetuj wszystko" }, - { "UpdateSettings" , "Ustawienia aktualizacji" }, - { "ManageKeybindings" , "Zarządzanie klawiaturami" }, - { "Edit" , "Edycja" }, - { "Recording" , "Nagranie" }, - { "RecordANewAction" , "Zapisać nową akcję" }, - { "Rotate" , "Obróć" }, - { "Copy" , "Kopia" }, - { "Paste" , "Pasta" }, - { "Delete" , "Skreślić" }, - { "Duplicate" , "Duplikat" }, - { "RotateAll" , "Obróć wszystko" }, - { "DeleteObjectUnderCursor" , "Usuń obiekt pod kursorem" }, - { "Licenses" , "Licencje" }, - { "ViewLicenses" , "Oglądaj licencje open source" }, - { "ExternalLinkConfirmationMessage" , "Spowoduje to otwarcie nowej karty w Twojej domyślnej przeglądarce internetowej. Kontynuować?" }, - { "ExternalLinkMessageTitle" , "Otwarcie połączenia zewnętrznego" }, - { "RecentFiles" , "Ostatnie akta" }, - { "UpdatePreferencesVersionInformation" , "Informacja o wersji" }, - { "UpdatePreferencesSettings" , "Ustawienia" }, - { "UpdatePreferencesCheckPreRelease" , "Sprawdź, czy nie występują luzy wstępne" }, - { "UpdatePreferencesUpdates" , "Aktualizacje" }, - { "UpdatePreferencesDownloadPresetsAndRestart" , "Pobieranie ustawień wstępnych i ponowne uruchamianie aplikacji" }, - { "UpdatePreferencesNewAppUpdateAvailable" , "Nowa aktualizacja jest już dostępna! Prosimy o zapoznanie się z uwagami dotyczącymi wydania aktualizacji na stronie internetowej." }, - { "UpdatePreferencesNoUpdates" , "Ta wersja jest aktualna." }, - { "UpdatePreferencesErrorCheckingUpdates" , "Sprawdzanie błędów w poszukiwaniu aktualizacji." }, - { "UpdatePreferencesMoreInfoInLog" , "Więcej informacji znajduje się w dzienniku." }, - { "UpdatePreferencesNewPresetsUpdateAvailable" , "Dostępna jest nowa aktualizacja ustawień wstępnych!" }, - { "UpdatePreferencesBusyCheckUpdates" , "Sprawdzanie aktualizacji ..." }, - { "UpdatePreferencesBusyDownloadPresets" , "Pobieranie zaprogramowanych ustawień..." }, - { "NoIcon" , "Nie ma Ikony" }, - { "GeneralSettings" , "Ustawienia ogólne" }, - { "GeneralPreferencesUISettings" , "Ustawienia UI" }, - { "GeneralPreferencesHideInfluenceOnSelection" , "Ukrycie wpływu na selekcję" }, - { "GeneralPreferencesUseZoomToPoint" , "Wykorzystaj nowe zachowanie zoomu" }, - { "GeneralPreferencesGridLinesColor" , "Kolor linii siatki" }, - { "GeneralPreferencesObjectBorderLinesColor" , "Kolor granicy" }, - { "GeneralPreferencesZoomSensitivity" , "Wrażliwość na zoom" }, - { "GeneralPreferencesInvertScrollingDirection" , "Odwrócenie kierunku przewijania" }, - { "GeneralPreferencesInvertPanningDirection" , "Odwrócenie kierunku przesuwania" }, - { "GeneralPreferencesShowScrollbars" , "Pokaż scrollbary" }, - { "ColorTypeDefault" , "Domyślnie" }, - { "ColorTypeLight" , "Światło" }, - { "ColorTypeCustom" , "Niestandardowy" }, - { "Warning" , "Ostrzeżenie" }, - { "FileNotFound" , "Plik nie został znaleziony." }, - { "Default" , "Domyślnie" }, - { "ItemsCopied" , "skopiowane elementy" }, - { "ItemCopied" , "skopiowany przedmiot" }, - { "LoadingPresetsFailed" , "Załadowanie ustawień budynku nie powiodło się." }, - { "LoadingIconNamesFailed" , "Wczytywanie nazw ikon nie powiodło się." }, - { "FileVersionUnsupportedMessage" , $"Spróbujesz załadować?{Environment.NewLine}Jest bardzo prawdopodobne, że to się nie uda lub doprowadzi do dziwnych rzeczy." }, - { "FileVersionUnsupportedTitle" , "Wersja pliku nieobsługiwana" }, - { "IOErrorMessage" , "Coś poszło nie tak podczas zapisywania/ładowania pliku." }, - { "AnotherInstanceIsAlreadyRunning" , "Inny przykład aplikacji jest już uruchomiony." }, - { "ErrorUpgradingSettings" , "Plik z ustawieniami został uszkodzony. Musimy zresetować Twoje ustawienia." }, - { "FileVersionMismatchMessage" , $"Próbujesz załadować aplikację?{Environment.NewLine}Jest bardzo prawdopodobne, że to się nie uda lub doprowadzi do dziwnych rzeczy." }, - { "FileVersionMismatchTItle" , "Niedopasowanie wersji pliku" }, - { "LayoutLoadingError" , "Coś poszło nie tak podczas ładowania układu." }, - { "LayoutSavingError" , "Coś poszło nie tak podczas zapisywania układu." }, - { "InvalidBuildingConfiguration" , "Nieprawidłowa konfiguracja budynku." }, - { "MergeRoads" , "Scal drogi" }, - { "LoadingTreeLocalizationFailed" , "Ładowanie lokalizacji nie powiodło się." }, - { "Undo" , "Undo" }, - { "Redo" , "Redo" }, - { "LayoutSettings" , "Ustawienia układu" }, - { "View" , "Zobacz" } - } + ["File"] = "Archivo", + ["NewCanvas"] = "Nuevo proyecto", + ["Open"] = "Abrir", + ["Save"] = "Guardar", + ["SaveAs"] = "Guardar como", + ["CopyLayoutToClipboard"] = "Copiar diseño al portapapeles como JSON", + ["LoadLayoutFromJson"] = "Cargar diseño desde JSON", + ["Exit"] = "Salir", + ["Extras"] = "Extras", + ["Normalize"] = "Normalizar", + ["ResetZoom"] = "Restablecer zoom", + ["RegisterFileExtension"] = "Registrar extensión de archivo", + ["RegisterFileExtensionSuccessful"] = "El registro de la extensión del archivo se ha realizado correctamente.", + ["UnregisterFileExtension"] = "Eliminar extensión de archivo", + ["UnregisterFileExtensionSuccessful"] = "Se ha eliminado el registro de la extensión de archivo correctamente.", + ["Successful"] = "Éxito", + ["Export"] = "Exportar", + ["ExportImage"] = "Exportar como imagen", + ["UseCurrentZoomOnExportedImage"] = "Utilizar el zoom actual en la imagen exportada", + ["RenderSelectionHighlightsOnExportedImage"] = "Renderizar la selección en la imagen exportada", + ["Language"] = "Idioma", + ["ManageStats"] = "Gestionar estadísticas", + ["ShowStats"] = "Mostrar estadísticas", + ["BuildingCount"] = "Número de edificios", + ["Help"] = "Ayuda", + ["Version"] = "Versión", + ["FileVersion"] = "Versión del archivo", + ["PresetsVersion"] = "Versión de las plantillas", + ["CheckForUpdates"] = "Comprobar actualizaciones", + ["VersionCheckErrorMessage"] = $"Error al comprobar la versión.{Environment.NewLine}Puedes encontrar más información en el registro.", + ["VersionCheckErrorTitle"] = "La comprobación de la versión ha fallado.", + ["EnableAutomaticUpdateCheck"] = "Activar actualizaciones automáticas al inicio", + ["ContinueCheckingForUpdates"] = $"¿Quieres seguir buscando nuevas versiones al inicio?{Environment.NewLine}{Environment.NewLine}Esta opción se puede cambiar en Herramientas -> Preferencias -> Configuración de actualizaciones.", + ["ContinueCheckingForUpdatesTitle"] = "¿Seguir comprobando si hay actualizaciones?", + ["GoToProjectHomepage"] = "Ir a la página del proyecto", + ["OpenWelcomePage"] = "Abrir la página de bienvenida", + ["AboutAnnoDesigner"] = "Acerca de Anno Designer", + ["ShowGrid"] = "Mostrar cuadrícula", + ["ShowLabels"] = "Mostrar etiquetas", + ["ShowIcons"] = "Mostrar iconos", + ["ShowTrueInfluenceRange"] = "Mostrar alcance de la influencia real", + ["ShowInfluences"] = "Mostrar influencias", + ["BuildingSettings"] = "Opciones de construcción", + ["Size"] = "Tamaño", + ["Color"] = "Color", + ["Label"] = "Etiqueta", + ["Icon"] = "Icono", + ["InfluenceType"] = "Tipo de influencia", + ["None"] = "Ninguno", + ["Radius"] = "Radio", + ["Range"] = "Zona de detección", + ["Distance"] = "Distancia", + ["Both"] = "Ambos", + ["PavedStreet"] = "Calle pavimentada", + ["PavedStreetWarningTitle"] = "Selección de calles pavimentadas", + ["PavedStreetToolTip"] = $"Marcando esta opción se cambiará el alcance de influencia de los edificios,{Environment.NewLine}representando el mayor alcance que reciben al utilizar calles pavimentadas.{Environment.NewLine}Usa el botón \"Colocar edificio\" para colocar un objeto.", + ["Options"] = "Opciones", + ["EnableLabel"] = "Activar etiquetas", + ["Borderless"] = "Sin bordes", + ["Road"] = "Rutas", + ["PlaceBuilding"] = "Colocación de edificios", + ["Search"] = "Filtro", + ["SearchToolTip"] = "ESC para borrar el texto de búsqueda", + ["SearchPlaceholder"] = "Escribe aquí el nombre de un edificio", + ["TitleAbout"] = "Acerca de", + ["BuildingLayoutDesigner"] = "Un diseñador de edificios para la serie Anno de Ubisoft", + ["Credits"] = "Créditos", + ["OriginalApplicationBy"] = "Aplicación original de", + ["BuildingPresets"] = "Plantillas de edificios", + ["CombinedForAnnoVersions"] = "Combinación de plantillas de edificios para", + ["AdditionalChanges"] = "Cambios adicionales de los colaboradores en Github", + ["ManyThanks"] = "Muchas gracias a todos los usuarios que han contribuido a este proyecto.", + ["VisitTheFandom"] = "¡No dejes de visitar las páginas de Fandom de Anno!", + ["OriginalHomepage"] = "Página web original", + ["ProjectHomepage"] = "Página del proyecto", + ["GoToFandom"] = "Ir a Fandom", + ["Close"] = "Cerrar", + ["StatusBarControls"] = "Controles del ratón: izquierdo - colocar, seleccionar, mover // derecho - dejar de colocar, eliminar // ambos - mover todo // doble clic - copiar // rueda - zoom // clic-rueda - rotar.", + ["StatusBarItemsOnClipboard"] = "Elementos en el portapapeles", + ["StatNothingPlaced"] = "No se ha colocado nada", + ["StatBoundingBox"] = "Zona de delimitación", + ["StatMinimumArea"] = "Superficie mínima", + ["StatSpaceEfficiency"] = "Uso del espacio", + ["StatBuildings"] = "Edificios", + ["StatBuildingsSelected"] = "Edificio seleccionado", + ["StatTiles"] = "Baldosas", + ["StatNameNotFound"] = "No se ha encontrado el nombre del edificio", + ["UnknownObject"] = "Objeto desconocido", + ["PresetsLoaded"] = "Plantillas de edificio cargadas", + ["ExportImageSuccessful"] = "La imagen se ha exportado correctamente.", + ["ExportImageError"] = "Algo salió mal al exportar la imagen.", + ["ApplyColorToSelection"] = "Aplicar color", + ["ApplyColorToSelectionToolTip"] = "Aplicar el color a todos los edificios de la selección actual", + ["ApplyPredefinedColorToSelection"] = "Aplicar color predefinido", + ["ApplyPredefinedColorToSelectionToolTip"] = "Aplicar el color predefinido (si existe) a todos los edificios de la selección actual", + ["AvailableColors"] = "Colores disponibles", + ["StandardColors"] = "Colores predefinidos", + ["RecentColors"] = "Colores utilizados recientemente", + ["Standard"] = "Estándar", + ["Advanced"] = "Avanzado", + ["UpdateAvailableHeader"] = "Actualización disponible", + ["UpdateAvailablePresetMessage"] = $"Hay una versión actualizada del archivo de plantillas.{Environment.NewLine}¿Quieres descargarlo y reiniciar la aplicación?", + ["AdminRightsRequired"] = "Se requieren derechos de administrador", + ["UpdateRequiresAdminRightsMessage"] = "Para descargar la actualización, la aplicación necesita acceso de escritura. Por favor, proporciona tus credenciales.", + ["Error"] = "Error", + ["UpdateErrorPresetMessage"] = "Hubo un error al instalar la actualización.", + ["UpdateNoConnectionMessage"] = "No se ha podido establecer la conexión a Internet.", + ["ColorsInLayout"] = "Colores en el diseño", + ["ColorsInLayoutToolTip"] = "Doble clic en el color para seleccionarlo", + ["LoadLayoutHeader"] = "Cargar plantilla", + ["LoadLayoutMessage"] = "Pega la cadena JSON a continuación.", + ["ClipboardContainsLayoutAsJson"] = "El portapapeles contiene el diseño actual como JSON.", + ["OK"] = "OK", + ["Cancel"] = "Cancelar", + ["SelectAll"] = "Seleccionar todo", + ["Tools"] = "Herramientas", + ["Preferences"] = "Preferencias", + ["ResetAllConfirmationMessage"] = "¿Estás seguro de que quieres restablecer todas las teclas de acceso rápido a sus valores predeterminados?", + ["ResetAll"] = "Restablecer todo", + ["UpdateSettings"] = "Actualizar ajustes", + ["ManageKeybindings"] = "Gestionar las combinaciones de teclas", + ["Edit"] = "Editar", + ["Recording"] = "Registrando", + ["RecordANewAction"] = "Registar nueva acción", + ["Rotate"] = "Rotar", + ["Copy"] = "Copiar", + ["Paste"] = "Pegar", + ["Delete"] = "Eliminar", + ["Duplicate"] = "Duplicar", + ["RotateAll"] = "Rotar todo", + ["DeleteObjectUnderCursor"] = "Eliminar objetos bajo el cursor", + ["Licenses"] = "Licencias", + ["ViewLicenses"] = "Ver las licencias de código abierto", + ["ExternalLinkConfirmationMessage"] = "Esto abrirá una nueva pestaña en el navegador por defecto. ¿Continuar?", + ["ExternalLinkMessageTitle"] = "Abrir un enlace externo", + ["RecentFiles"] = "Archivos recientes", + ["UpdatePreferencesVersionInformation"] = "Información sobre la versión", + ["UpdatePreferencesSettings"] = "Ajustes", + ["UpdatePreferencesCheckPreRelease"] = "Comprobar si hay versiones preliminares", + ["UpdatePreferencesUpdates"] = "Actualizaciones", + ["UpdatePreferencesDownloadPresetsAndRestart"] = "Descargar plantillas y reiniciar la aplicación", + ["UpdatePreferencesNewAppUpdateAvailable"] = "¡Nueva actualización disponible! Echa un vistazo a la web para ver notas sobre la versión.", + ["UpdatePreferencesNoUpdates"] = "Esta versión está actualizada.", + ["UpdatePreferencesErrorCheckingUpdates"] = "Error al comprobar las actualizaciones.", + ["UpdatePreferencesMoreInfoInLog"] = "Se puede encontrar más información en el registro.", + ["UpdatePreferencesNewPresetsUpdateAvailable"] = "¡Hay disponible una nueva actualización de las plantillas!", + ["UpdatePreferencesBusyCheckUpdates"] = "Comprobando actualizaciones ...", + ["UpdatePreferencesBusyDownloadPresets"] = "Descargando plantillas ...", + ["NoIcon"] = "Sin icono", + ["GeneralSettings"] = "Ajustes generales", + ["GeneralPreferencesUISettings"] = "Ajustes de interfaz", + ["GeneralPreferencesHideInfluenceOnSelection"] = "Ocultar influencia en la selección", + ["GeneralPreferencesUseZoomToPoint"] = "Usar nuevo comportamiento del zoom", + ["GeneralPreferencesGridLinesColor"] = "Color de la cuadrícula", + ["GeneralPreferencesObjectBorderLinesColor"] = "Color del borde", + ["GeneralPreferencesZoomSensitivity"] = "Sensibilidad del zoom", + ["GeneralPreferencesInvertScrollingDirection"] = "Invertir dirección de desplazamiento", + ["GeneralPreferencesInvertPanningDirection"] = "Invertir el sentido de giro", + ["GeneralPreferencesShowScrollbars"] = "Mostrar barras de desplazamiento", + ["ColorTypeDefault"] = "Por defecto", + ["ColorTypeLight"] = "Luz", + ["ColorTypeCustom"] = "Personalizado", + ["Warning"] = "Advertencia", + ["FileNotFound"] = "No se ha encontrado el archivo.", + ["Default"] = "Por defecto", + ["ItemsCopied"] = "elementos copiados", + ["ItemCopied"] = "elemento copiado", + ["LoadingPresetsFailed"] = "La carga de las plantillas de los edificios ha fallado.", + ["LoadingIconNamesFailed"] = "La carga de los nombres de los iconos ha fallado.", + ["FileVersionUnsupportedMessage"] = $"¿Intentar cargar de todos modos?{Environment.NewLine}Es muy probable que esto falle o que ocurran cosas extrañas.", + ["FileVersionUnsupportedTitle"] = "Versión de archivo no admitida", + ["IOErrorMessage"] = "Algo salió mal al guardar/cargar el archivo.", + ["AnotherInstanceIsAlreadyRunning"] = "Ya se está ejecutando otra instancia de la aplicación.", + ["ErrorUpgradingSettings"] = "El archivo de configuración se ha corrompido. Es necesario restablecer la configuración.", + ["FileVersionMismatchMessage"] = $"¿Intentar cargar de todos modos?{Environment.NewLine}Es muy probable que esto falle o que ocurran cosas extrañas.", + ["FileVersionMismatchTItle"] = "Error en la versión del archivo", + ["LayoutLoadingError"] = "Algo ha ido mal al cargar el diseño.", + ["LayoutSavingError"] = "Algo salió mal al guardar el diseño.", + ["InvalidBuildingConfiguration"] = "Configuración del edificio no válida.", + ["MergeRoads"] = "Fusionar carreteras", + ["LoadingTreeLocalizationFailed"] = "La carga de la localización ha fallado.", + ["Undo"] = "Deshacer", + ["Redo"] = "Rehacer", + ["LayoutSettings"] = "Configuración del diseño", + ["View"] = "Ver", + ["SaveUnsavedChanges"] = "¿Guardar los cambios no guardados?", + ["UnsavedChanged"] = "Hay cambios no guardados", + ["UnsavedChangedBeforeCrash"] = "El programa se ha interrumpido pero hay cambios no guardados", + ["ColorPresetsVersion"] = "Versión de preajustes de color", + ["TreeLocalizationVersion"] = "Versión de localización del árbol", + ["ShowHarborBlockedArea"] = "Mostrar zonas portuarias" }, + ["pol"] = new Dictionary() { - "rus", new Dictionary() { - { "File" , "Файл" }, - { "NewCanvas" , "Новый файл" }, - { "Open" , "Открыть" }, - { "Save" , "Сохранить" }, - { "SaveAs" , "Сохранить как" }, - { "CopyLayoutToClipboard" , "Скопировать макет в буфер обмена как JSON" }, - { "LoadLayoutFromJson" , "Схема загрузки от JSON" }, - { "Exit" , "Выход" }, - { "Extras" , "Дополнительно" }, - { "Normalize" , "Нормализация" }, - { "ResetZoom" , "Сбросить масштаб" }, - { "RegisterFileExtension" , "Зарегистрировать расширение файла" }, - { "RegisterFileExtensionSuccessful" , "Регистрация расширения файла прошла успешно." }, - { "UnregisterFileExtension" , "Отмена регистрации расширения файла" }, - { "UnregisterFileExtensionSuccessful" , "Отмена регистрации продления файлов прошла успешно." }, - { "Successful" , "Успешный" }, - { "Export" , "Экспорт" }, - { "ExportImage" , "Экспортировать изображение" }, - { "UseCurrentZoomOnExportedImage" , "Использовать текущее масштабирование экспортируемого изображения" }, - { "RenderSelectionHighlightsOnExportedImage" , "Выделение выделенного фрагмента на экспортируемом изображении" }, - { "Language" , "язык" }, - { "ManageStats" , "Управление статистикой" }, - { "ShowStats" , "Показывать параметры" }, - { "BuildingCount" , "Строительный граф" }, - { "Help" , "Помощь" }, - { "Version" , "Версия" }, - { "FileVersion" , "Версия файла" }, - { "PresetsVersion" , "Версия пресета" }, - { "ColorPresetsVersion" , "Версия предустановок цвета" }, - { "TreeLocalizationVersion" , "Версия локализации деревьев" }, - { "CheckForUpdates" , "Проверить наличие обновлений" }, - { "VersionCheckErrorMessage" , $"Версия для проверки ошибок.{Environment.NewLine}Дополнительную информацию можно найти в журнале." }, - { "VersionCheckErrorTitle" , "Проверка версии не прошла." }, - { "EnableAutomaticUpdateCheck" , "Включить автоматическую проверку обновлений при запуске" }, - { "ContinueCheckingForUpdates" , $"Хотите продолжить проверку новой версии при старте?{Environment.NewLine}{Environment.NewLine}Эту опцию можно изменить через Инструменты -> Параметры -> Обновить настройки." }, - { "ContinueCheckingForUpdatesTitle" , "Продолжать проверку обновлений?" }, - { "GoToProjectHomepage" , "Перейти на главную страницу" }, - { "OpenWelcomePage" , "Открыть страницу приветствия" }, - { "AboutAnnoDesigner" , "О Anno Дизайнер" }, - { "ShowGrid" , "Показать сетку" }, - { "ShowLabels" , "Показывать название" }, - { "ShowIcons" , "Показывать значок" }, - { "ShowTrueInfluenceRange" , "Показать истинный диапазон влияния" }, - { "ShowInfluences" , "Показать влияние" }, - { "BuildingSettings" , "Параметры здания" }, - { "Size" , "Размер" }, - { "Color" , "Цвет" }, - { "Label" , "Название" }, - { "Icon" , "Значок" }, - { "InfluenceType" , "Тип влияния" }, - { "None" , "Нет" }, - { "Radius" , "Радиус" }, - { "Range" , "Диапазон" }, - { "Distance" , "Расстояние" }, - { "Both" , "Оба" }, - { "PavedStreet" , "Павед Стрит" }, - { "PavedStreetWarningTitle" , "Выбор улицы Павед Стрит" }, - { "PavedStreetToolTip" , $"Установив этот флажок, можно изменить диапазон влияния для зданий,{Environment.NewLine}представляет собой увеличенную дальность, которую они получают при использовании мощеных улиц.{Environment.NewLine}Используйте кнопку 'Выбрать здание', чтобы поместить объект." }, - { "Options" , "Параметры" }, - { "EnableLabel" , "Показывать название" }, - { "Borderless" , "Без полей" }, - { "Road" , "Дорогa" }, - { "PlaceBuilding" , "Выбрать здание" }, - { "Search" , "Фильтр" }, - { "SearchToolTip" , "ESC чтобы очистить текст поиска" }, - { "SearchPlaceholder" , "Введите здесь название здания" }, - { "TitleAbout" , "О программе" }, - { "BuildingLayoutDesigner" , "Конструктор макета здания для Ubisofts Anno-серии" }, - { "Credits" , "Авторы" }, - { "OriginalApplicationBy" , "Оригинальное приложение" }, - { "BuildingPresets" , "Строительные пресеты" }, - { "CombinedForAnnoVersions" , "Комбинированные строительные пресеты для" }, - { "AdditionalChanges" , "Дополнительные изменения по вкладчикам на Github" }, - { "ManyThanks" , "Большое спасибо всем пользователям, которые внесли свой вклад в этот проект!" }, - { "VisitTheFandom" , "Обязательно посетите страницы Фэндома для Anno!" }, - { "OriginalHomepage" , "Оригинальная домашняя страница" }, - { "ProjectHomepage" , "Домашняя страница проекта" }, - { "GoToFandom" , "Перейти к Фэндом" }, - { "Close" , "Закрыть" }, - { "StatusBarControls" , "Управление мышью: влево - разместить, выбрать, переместить // вправо - прекратить размещение, удалить // оба - переместить все // двойной щелчок - копировать // колесо - масштабировать // колесико щелкнуть - повернуть." }, - { "StatusBarItemsOnClipboard" , "элементы в буфере обмена" }, - { "StatNothingPlaced" , "Ничего не размещено" }, - { "StatBoundingBox" , "Ограничительная рамка" }, - { "StatMinimumArea" , "Минимальная площадь" }, - { "StatSpaceEfficiency" , "Космическая эффективность" }, - { "StatBuildings" , "Здания" }, - { "StatBuildingsSelected" , "Выбранные здания" }, - { "StatTiles" , "Плитка" }, - { "StatNameNotFound" , "Название здания не найдено" }, - { "UnknownObject" , "Неизвестный объект" }, - { "PresetsLoaded" , "Загружаются пресеты зданий" }, - { "ExportImageSuccessful" , "Изображение было успешно экспортировано." }, - { "ExportImageError" , "Что-то пошло не так при экспорте изображения." }, - { "ApplyColorToSelection" , "Применить цвет" }, - { "ApplyColorToSelectionToolTip" , "Применить цвет ко всем зданиям в текущем выборе" }, - { "ApplyPredefinedColorToSelection" , "Применить предопределенный цвет" }, - { "ApplyPredefinedColorToSelectionToolTip" , "Применить предопределенный цвет (если он найден) ко всем зданиям в текущем выборе." }, - { "AvailableColors" , "Доступные цвета" }, - { "StandardColors" , "Предварительно определенные цвета" }, - { "RecentColors" , "Последние использованные цвета" }, - { "Standard" , "Стандарт" }, - { "Advanced" , "Расширенный" }, - { "UpdateAvailableHeader" , "Обновление доступно" }, - { "UpdateAvailablePresetMessage" , $"Доступна обновленная версия предустановок.{Environment.NewLine}Вы хотите скачать его и перезапустить приложение?" }, - { "AdminRightsRequired" , "Требуемые права администратора" }, - { "UpdateRequiresAdminRightsMessage" , "Для загрузки обновления приложению необходим доступ на запись. Пожалуйста, предоставьте полномочия." }, - { "Error" , "Ошибка" }, - { "UpdateErrorPresetMessage" , "Произошла ошибка при установке обновления." }, - { "UpdateNoConnectionMessage" , "Не смог установить соединение с интернетом." }, - { "ColorsInLayout" , "Цвета в макетах" }, - { "ColorsInLayoutToolTip" , "Дважды щелкните по цвету, чтобы выбрать его." }, - { "LoadLayoutHeader" , "Загрузить макет" }, - { "LoadLayoutMessage" , "Пожалуйста, вставьте JSON строку ниже." }, - { "ClipboardContainsLayoutAsJson" , "Буфер обмена содержит текущую верстку в виде JSON." }, - { "OK" , "OK" }, - { "Cancel" , "Отмена" }, - { "SelectAll" , "Выберите все" }, - { "Tools" , "Инструменты" }, - { "Preferences" , "Предпочтения" }, - { "ResetAllConfirmationMessage" , "Вы уверены, что хотите сбросить все горячие клавиши в их настройки по умолчанию?" }, - { "ResetAll" , "Сбросить все" }, - { "UpdateSettings" , "Обновление Настройки" }, - { "ManageKeybindings" , "Управление привязками к ключам" }, - { "Edit" , "Редактирование" }, - { "Recording" , "Запись" }, - { "RecordANewAction" , "Записать новое действие" }, - { "Rotate" , "Повернуть" }, - { "Copy" , "Скопировать" }, - { "Paste" , "Вставить" }, - { "Delete" , "Удалить" }, - { "Duplicate" , "Дублировать" }, - { "RotateAll" , "Повернуть все" }, - { "DeleteObjectUnderCursor" , "Удалить объект под курсором" }, - { "Licenses" , "Лицензии" }, - { "ViewLicenses" , "Просмотреть лицензии с открытым исходным кодом" }, - { "ExternalLinkConfirmationMessage" , "При этом откроется новая вкладка в вашем веб-браузере по умолчанию. Продолжить?" }, - { "ExternalLinkMessageTitle" , "Открытие внешней ссылки" }, - { "RecentFiles" , "Последние Файлы" }, - { "UpdatePreferencesVersionInformation" , "Информация о версии" }, - { "UpdatePreferencesSettings" , "Настройки" }, - { "UpdatePreferencesCheckPreRelease" , "Проверка на наличие предпродаж" }, - { "UpdatePreferencesUpdates" , "Обновления" }, - { "UpdatePreferencesDownloadPresetsAndRestart" , "Скачать Предустановки и перезапустить приложение" }, - { "UpdatePreferencesNewAppUpdateAvailable" , "Доступно новое Обновление! Пожалуйста, ознакомьтесь с примечаниями к обновлению на сайте." }, - { "UpdatePreferencesNoUpdates" , "Эта версия обновлена." }, - { "UpdatePreferencesErrorCheckingUpdates" , "Проверка на ошибки при обновлении." }, - { "UpdatePreferencesMoreInfoInLog" , "Более подробная информация находится в журнале." }, - { "UpdatePreferencesNewPresetsUpdateAvailable" , "Доступно новое Обновление для пресетов!" }, - { "UpdatePreferencesBusyCheckUpdates" , "Проверка обновлений ..." }, - { "UpdatePreferencesBusyDownloadPresets" , "Загрузка предустановок ..." }, - { "NoIcon" , "Иконки нет" }, - { "GeneralSettings" , "Общие настройки" }, - { "GeneralPreferencesUISettings" , "Настройки пользовательского интерфейса" }, - { "GeneralPreferencesHideInfluenceOnSelection" , "Скрыть влияние на выбор" }, - { "GeneralPreferencesUseZoomToPoint" , "Использовать новое поведение масштабирования" }, - { "GeneralPreferencesGridLinesColor" , "Цвет линии сетки" }, - { "GeneralPreferencesObjectBorderLinesColor" , "Цвет границы" }, - { "GeneralPreferencesZoomSensitivity" , "Чувствительность к увеличению" }, - { "GeneralPreferencesInvertScrollingDirection" , "Инвертировать направление прокрутки" }, - { "GeneralPreferencesInvertPanningDirection" , "Инвертировать направление панорамирования" }, - { "GeneralPreferencesShowScrollbars" , "Показать полосы прокрутки" }, - { "ColorTypeDefault" , "По умолчанию" }, - { "ColorTypeLight" , "Свет" }, - { "ColorTypeCustom" , "Пользовательский" }, - { "Warning" , "Предупреждение" }, - { "FileNotFound" , "Файл не был найден." }, - { "Default" , "По умолчанию" }, - { "ItemsCopied" , "списанные предметы" }, - { "ItemCopied" , "скопированный элемент" }, - { "LoadingPresetsFailed" , "Загрузка строительных предустановок не удалась." }, - { "LoadingIconNamesFailed" , "Загрузка имен иконок не удалась." }, - { "FileVersionUnsupportedMessage" , $"Попробуешь загрузить?{Environment.NewLine}Это очень вероятно приведет к неудаче или к странным вещам." }, - { "FileVersionUnsupportedTitle" , "Версия файла не поддерживается" }, - { "IOErrorMessage" , "Что-то пошло не так при сохранении/загрузке файла." }, - { "AnotherInstanceIsAlreadyRunning" , "Другой экземпляр приложения уже запущен." }, - { "ErrorUpgradingSettings" , "Файл настроек поврежден. Мы должны сбросить ваши настройки." }, - { "FileVersionMismatchMessage" , $"Попробуйте загрузить?{Environment.NewLine}Скорее всего, это приведет к ошибке или странным вещам." }, - { "FileVersionMismatchTItle" , "Несоответствие версии файла" }, - { "LayoutLoadingError" , "Что-то пошло не так во время загрузки макета." }, - { "LayoutSavingError" , "Что-то пошло не так во время сохранения макета." }, - { "InvalidBuildingConfiguration" , "Неверная конфигурация здания." }, - { "MergeRoads" , "Oбъединить дороги" }, - { "LoadingTreeLocalizationFailed" , "Загрузка локализации не удалась." }, - { "Undo" , "Отменить" }, - { "Redo" , "Redo" }, - { "LayoutSettings" , "Настройки макета" }, - { "View" , "Посмотреть" } - } + ["File"] = "Plik", + ["NewCanvas"] = "Nowy projekt", + ["Open"] = "Otwórz", + ["Save"] = "Zapisz", + ["SaveAs"] = "Zapisz jako", + ["CopyLayoutToClipboard"] = "Skopiuj układ do schowka jako JSON.", + ["LoadLayoutFromJson"] = "Układ obciążenia od JSON", + ["Exit"] = "Zamknij", + ["Extras"] = "Dodatki", + ["Normalize"] = "Znormalizuj", + ["ResetZoom"] = "Resetuj powiększenie", + ["RegisterFileExtension"] = "Zarejestruj rozszerzenie pliku", + ["RegisterFileExtensionSuccessful"] = "Rejestracja rozszerzenia pliku zakończyła się sukcesem.", + ["UnregisterFileExtension"] = "Wyrejestruj rozszerzenie pliku", + ["UnregisterFileExtensionSuccessful"] = "Wyrejestrowanie rozszerzenia pliku zakończyło się sukcesem.", + ["Successful"] = "Udało się.", + ["Export"] = "Eksportuj", + ["ExportImage"] = "Eksportuj obraz", + ["UseCurrentZoomOnExportedImage"] = "Użyj obecnego powiększenia na eksportowanym obrazie", + ["RenderSelectionHighlightsOnExportedImage"] = "Pokaż podświetlenie wybranych elementów na eksportowanym obrazie", + ["Language"] = "Język", + ["ManageStats"] = "Zarządzanie statystyki", + ["ShowStats"] = "Pokaż statystyki", + ["BuildingCount"] = "Licznik budynków", + ["Help"] = "Pomoc", + ["Version"] = "Wersja", + ["FileVersion"] = "Wersja pliku", + ["PresetsVersion"] = "Presety-wersja", + ["CheckForUpdates"] = "Sprawdź aktualizacje", + ["VersionCheckErrorMessage"] = $"Coś poszło nie tak podczas sprawdzania wersji Error.{Environment.NewLine}Więcej informacji można znaleźć w dzienniku. eksportowanie obrazu.", + ["VersionCheckErrorTitle"] = "Kontrola wersji nie powiodła się.", + ["EnableAutomaticUpdateCheck"] = "Włączyć automatyczne sprawdzanie aktualizacji przy uruchamianiu", + ["ContinueCheckingForUpdates"] = $"Czy chcesz kontynuować sprawdzanie nowej wersji przy starcie systemu?{Environment.NewLine}{Environment.NewLine}Opcja ta może zostać zmieniona poprzez Narzędzia -> Preferencje -> Ustawienia aktualizacji.", + ["ContinueCheckingForUpdatesTitle"] = "Kontynuować sprawdzanie pod kątem aktualizacji?", + ["GoToProjectHomepage"] = "Przejdź do strony projektu", + ["OpenWelcomePage"] = "Otwórz stronę powitalną", + ["AboutAnnoDesigner"] = "O Anno Designerze", + ["ShowGrid"] = "Pokaż siatkę", + ["ShowLabels"] = "Pokaż etykiety", + ["ShowIcons"] = "Pokaż ikony", + ["ShowTrueInfluenceRange"] = "Pokaż prawdziwy zakres wpływu", + ["ShowInfluences"] = "Pokaż wpływy", + ["BuildingSettings"] = "Ustawienia budynku", + ["Size"] = "Wymiary", + ["Color"] = "Kolor", + ["Label"] = "Podpis", + ["Icon"] = "Ikona", + ["InfluenceType"] = "Rodzaj wpływu Typ", + ["None"] = "Nie ma", + ["Radius"] = "Promień", + ["Range"] = "Zasięg", + ["Distance"] = "Odległość", + ["Both"] = "Obydwoje", + ["PavedStreet"] = "Droga Brukowana", + ["PavedStreetWarningTitle"] = "Wybór Drogi Brukowanej", + ["PavedStreetToolTip"] = $"Zaznaczenie tej opcji spowoduje zmianę zakresu wpływu dla budynków, {Environment.NewLine}reprezentujący zwiększony zasięg, jaki otrzymują, gdy używając brukowanych ulic.{Environment.NewLine}Użyj przycisku 'Postaw budynek', aby umieścić obiekt.", + ["Options"] = "Opcje", + ["EnableLabel"] = "Pokaż etykietę", + ["Borderless"] = "Bez obramowania", + ["Road"] = "Droga / Ulica", + ["PlaceBuilding"] = "Postaw budynek", + ["Search"] = "Filtr", + ["SearchToolTip"] = "ESC aby wyczyścić tekst do przeszukiwania", + ["SearchPlaceholder"] = "Wpisz tutaj nazwę budynku", + ["TitleAbout"] = "Na temat / O", + ["BuildingLayoutDesigner"] = "Program do planowania zabudowy w serii Anno Ubisoftu", + ["Credits"] = "Autorzy", + ["OriginalApplicationBy"] = "Oryginalna aplikacja napisana przez", + ["BuildingPresets"] = "Presety dla budynków", + ["CombinedForAnnoVersions"] = "Połączone presety budynków dla", + ["AdditionalChanges"] = "Dodatkowe zmiany wprowadzone przez płatników w sprawie Github", + ["ManyThanks"] = "Dziękujemy wszystkim użytkownikom, którzy wsparli ten projekt!", + ["VisitTheFandom"] = "Odwiedź fanowskie strony o Anno!", + ["OriginalHomepage"] = "Oryginalna strona", + ["ProjectHomepage"] = "Strona projektu", + ["GoToFandom"] = "Przejdź do strony Fandom", + ["Close"] = "Zamknij", + ["StatusBarControls"] = "Sterowanie myszą: w lewo - miejsce, zaznacz, przesuń // zatrzymanie w prawo, usuń // oba - przenieś wszystko // podwójne kliknięcie - kopiuj // kółko - powiększ // kółko - obracaj.", + ["StatusBarItemsOnClipboard"] = "pozycje w schowku", + ["StatNothingPlaced"] = "Nic nie postawiono", + ["StatBoundingBox"] = "Ramka Ograniczająca", + ["StatMinimumArea"] = "Minimalna Powierzchnia", + ["StatSpaceEfficiency"] = "Wykorzystanie Przestrzeni", + ["StatBuildings"] = "Budynki", + ["StatBuildingsSelected"] = "Wybrane Budynki", + ["StatTiles"] = "Płytki", + ["StatNameNotFound"] = "Nie znaleziono nazwy budynku", + ["UnknownObject"] = "Obiekt nieznany", + ["PresetsLoaded"] = "Presety budynków załadowano", + ["ExportImageSuccessful"] = "Obraz został pomyślnie wyeksportowany.", + ["ExportImageError"] = "Coś poszło nie tak podczas eksportu obrazu.", + ["ApplyColorToSelection"] = "Zastosuj kolor", + ["ApplyColorToSelectionToolTip"] = "Zastosowanie koloru do wszystkich budynków w bieżącym wyborze", + ["ApplyPredefinedColorToSelection"] = "Zastosuj predefiniowany kolor", + ["ApplyPredefinedColorToSelectionToolTip"] = "Zastosuj predefiniowany kolor (jeśli został znaleziony) do wszystkich budynków w bieżącym wyborze.", + ["AvailableColors"] = "Dostępne kolory", + ["StandardColors"] = "Predefiniowane kolory", + ["RecentColors"] = "Ostatnio używane kolory", + ["Standard"] = "Standard", + ["Advanced"] = "Zaawansowane", + ["UpdateAvailableHeader"] = "Dostępna aktualizacja", + ["UpdateAvailablePresetMessage"] = $"Dostępna jest zaktualizowana wersja presetów.{Environment.NewLine}Chcesz ją pobrać i zrestartować aplikację?", + ["AdminRightsRequired"] = "Wymagane prawa administratora", + ["UpdateRequiresAdminRightsMessage"] = "Aby pobrać aktualizację, aplikacja musi mieć dostęp do zapisu. Proszę podać dane uwierzytelniające.", + ["Error"] = "Błąd", + ["UpdateErrorPresetMessage"] = "Wystąpił błąd podczas instalacji aktualizacji.", + ["UpdateNoConnectionMessage"] = "Nie udało się nawiązać połączenia z Internetem.", + ["ColorsInLayout"] = "Kolory w układzie", + ["ColorsInLayoutToolTip"] = "Podwójne kliknięcie na kolor, aby go wybrać", + ["LoadLayoutHeader"] = "Układ obciążenia", + ["LoadLayoutMessage"] = "Proszę wkleić poniższy ciąg JSON.", + ["ClipboardContainsLayoutAsJson"] = "Schowek zawiera aktualny układ jako JSON.", + ["OK"] = "OK", + ["Cancel"] = "Odwołaj", + ["SelectAll"] = "Wybierz wszystkie", + ["Tools"] = "Narzędzia", + ["Preferences"] = "Preferencje", + ["ResetAllConfirmationMessage"] = "Czy na pewno chcesz zresetować wszystkie klawisze funkcyjne do ich domyślnych ustawień?", + ["ResetAll"] = "Zresetuj wszystko", + ["UpdateSettings"] = "Ustawienia aktualizacji", + ["ManageKeybindings"] = "Zarządzanie klawiaturami", + ["Edit"] = "Edycja", + ["Recording"] = "Nagranie", + ["RecordANewAction"] = "Zapisać nową akcję", + ["Rotate"] = "Obróć", + ["Copy"] = "Kopia", + ["Paste"] = "Pasta", + ["Delete"] = "Skreślić", + ["Duplicate"] = "Duplikat", + ["RotateAll"] = "Obróć wszystko", + ["DeleteObjectUnderCursor"] = "Usuń obiekt pod kursorem", + ["Licenses"] = "Licencje", + ["ViewLicenses"] = "Oglądaj licencje open source", + ["ExternalLinkConfirmationMessage"] = "Spowoduje to otwarcie nowej karty w Twojej domyślnej przeglądarce internetowej. Kontynuować?", + ["ExternalLinkMessageTitle"] = "Otwarcie połączenia zewnętrznego", + ["RecentFiles"] = "Ostatnie akta", + ["UpdatePreferencesVersionInformation"] = "Informacja o wersji", + ["UpdatePreferencesSettings"] = "Ustawienia", + ["UpdatePreferencesCheckPreRelease"] = "Sprawdź, czy nie występują luzy wstępne", + ["UpdatePreferencesUpdates"] = "Aktualizacje", + ["UpdatePreferencesDownloadPresetsAndRestart"] = "Pobieranie ustawień wstępnych i ponowne uruchamianie aplikacji", + ["UpdatePreferencesNewAppUpdateAvailable"] = "Nowa aktualizacja jest już dostępna! Prosimy o zapoznanie się z uwagami dotyczącymi wydania aktualizacji na stronie internetowej.", + ["UpdatePreferencesNoUpdates"] = "Ta wersja jest aktualna.", + ["UpdatePreferencesErrorCheckingUpdates"] = "Sprawdzanie błędów w poszukiwaniu aktualizacji.", + ["UpdatePreferencesMoreInfoInLog"] = "Więcej informacji znajduje się w dzienniku.", + ["UpdatePreferencesNewPresetsUpdateAvailable"] = "Dostępna jest nowa aktualizacja ustawień wstępnych!", + ["UpdatePreferencesBusyCheckUpdates"] = "Sprawdzanie aktualizacji ...", + ["UpdatePreferencesBusyDownloadPresets"] = "Pobieranie zaprogramowanych ustawień...", + ["NoIcon"] = "Nie ma Ikony", + ["GeneralSettings"] = "Ustawienia ogólne", + ["GeneralPreferencesUISettings"] = "Ustawienia UI", + ["GeneralPreferencesHideInfluenceOnSelection"] = "Ukrycie wpływu na selekcję", + ["GeneralPreferencesUseZoomToPoint"] = "Wykorzystaj nowe zachowanie zoomu", + ["GeneralPreferencesGridLinesColor"] = "Kolor linii siatki", + ["GeneralPreferencesObjectBorderLinesColor"] = "Kolor granicy", + ["GeneralPreferencesZoomSensitivity"] = "Wrażliwość na zoom", + ["GeneralPreferencesInvertScrollingDirection"] = "Odwrócenie kierunku przewijania", + ["GeneralPreferencesInvertPanningDirection"] = "Odwrócenie kierunku przesuwania", + ["GeneralPreferencesShowScrollbars"] = "Pokaż scrollbary", + ["ColorTypeDefault"] = "Domyślnie", + ["ColorTypeLight"] = "Światło", + ["ColorTypeCustom"] = "Niestandardowy", + ["Warning"] = "Ostrzeżenie", + ["FileNotFound"] = "Plik nie został znaleziony.", + ["Default"] = "Domyślnie", + ["ItemsCopied"] = "skopiowane elementy", + ["ItemCopied"] = "skopiowany przedmiot", + ["LoadingPresetsFailed"] = "Załadowanie ustawień budynku nie powiodło się.", + ["LoadingIconNamesFailed"] = "Wczytywanie nazw ikon nie powiodło się.", + ["FileVersionUnsupportedMessage"] = $"Spróbujesz załadować?{Environment.NewLine}Jest bardzo prawdopodobne, że to się nie uda lub doprowadzi do dziwnych rzeczy.", + ["FileVersionUnsupportedTitle"] = "Wersja pliku nieobsługiwana", + ["IOErrorMessage"] = "Coś poszło nie tak podczas zapisywania/ładowania pliku.", + ["AnotherInstanceIsAlreadyRunning"] = "Inny przykład aplikacji jest już uruchomiony.", + ["ErrorUpgradingSettings"] = "Plik z ustawieniami został uszkodzony. Musimy zresetować Twoje ustawienia.", + ["FileVersionMismatchMessage"] = $"Próbujesz załadować aplikację?{Environment.NewLine}Jest bardzo prawdopodobne, że to się nie uda lub doprowadzi do dziwnych rzeczy.", + ["FileVersionMismatchTItle"] = "Niedopasowanie wersji pliku", + ["LayoutLoadingError"] = "Coś poszło nie tak podczas ładowania układu.", + ["LayoutSavingError"] = "Coś poszło nie tak podczas zapisywania układu.", + ["InvalidBuildingConfiguration"] = "Nieprawidłowa konfiguracja budynku.", + ["MergeRoads"] = "Scal drogi", + ["LoadingTreeLocalizationFailed"] = "Ładowanie lokalizacji nie powiodło się.", + ["Undo"] = "Undo", + ["Redo"] = "Redo", + ["LayoutSettings"] = "Ustawienia układu", + ["View"] = "Zobacz", + ["SaveUnsavedChanges"] = "Zapisać niezapisane zmiany?", + ["UnsavedChanged"] = "Istnieją niezbawione zmiany", + ["UnsavedChangedBeforeCrash"] = "Program zawiesił się, ale są niezapisane zmiany", + ["ColorPresetsVersion"] = "Presety kolorów Wersja", + ["TreeLocalizationVersion"] = "Wersja lokalizacji drzewa", + ["ShowHarborBlockedArea"] = "Pokaż obszary portowe" + }, + ["rus"] = new Dictionary() + { + ["File"] = "Файл", + ["NewCanvas"] = "Новый файл", + ["Open"] = "Открыть", + ["Save"] = "Сохранить", + ["SaveAs"] = "Сохранить как", + ["CopyLayoutToClipboard"] = "Скопировать макет в буфер обмена как JSON", + ["LoadLayoutFromJson"] = "Схема загрузки от JSON", + ["Exit"] = "Выход", + ["Extras"] = "Дополнительно", + ["Normalize"] = "Нормализация", + ["ResetZoom"] = "Сбросить масштаб", + ["RegisterFileExtension"] = "Зарегистрировать расширение файла", + ["RegisterFileExtensionSuccessful"] = "Регистрация расширения файла прошла успешно.", + ["UnregisterFileExtension"] = "Отмена регистрации расширения файла", + ["UnregisterFileExtensionSuccessful"] = "Отмена регистрации продления файлов прошла успешно.", + ["Successful"] = "Успешный", + ["Export"] = "Экспорт", + ["ExportImage"] = "Экспортировать изображение", + ["UseCurrentZoomOnExportedImage"] = "Использовать текущее масштабирование экспортируемого изображения", + ["RenderSelectionHighlightsOnExportedImage"] = "Выделение выделенного фрагмента на экспортируемом изображении", + ["Language"] = "язык", + ["ManageStats"] = "Управление статистикой", + ["ShowStats"] = "Показывать параметры", + ["BuildingCount"] = "Строительный граф", + ["Help"] = "Помощь", + ["Version"] = "Версия", + ["FileVersion"] = "Версия файла", + ["PresetsVersion"] = "Версия пресета", + ["CheckForUpdates"] = "Проверить наличие обновлений", + ["VersionCheckErrorMessage"] = $"Версия для проверки ошибок.{Environment.NewLine}Дополнительную информацию можно найти в журнале.", + ["VersionCheckErrorTitle"] = "Проверка версии не прошла.", + ["EnableAutomaticUpdateCheck"] = "Включить автоматическую проверку обновлений при запуске", + ["ContinueCheckingForUpdates"] = $"Хотите продолжить проверку новой версии при старте?{Environment.NewLine}{Environment.NewLine}Эту опцию можно изменить через Инструменты -> Параметры -> Обновить настройки.", + ["ContinueCheckingForUpdatesTitle"] = "Продолжать проверку обновлений?", + ["GoToProjectHomepage"] = "Перейти на главную страницу", + ["OpenWelcomePage"] = "Открыть страницу приветствия", + ["AboutAnnoDesigner"] = "О Anno Дизайнер", + ["ShowGrid"] = "Показать сетку", + ["ShowLabels"] = "Показывать название", + ["ShowIcons"] = "Показывать значок", + ["ShowTrueInfluenceRange"] = "Показать истинный диапазон влияния", + ["ShowInfluences"] = "Показать влияние", + ["BuildingSettings"] = "Параметры здания", + ["Size"] = "Размер", + ["Color"] = "Цвет", + ["Label"] = "Название", + ["Icon"] = "Значок", + ["InfluenceType"] = "Тип влияния", + ["None"] = "Нет", + ["Radius"] = "Радиус", + ["Range"] = "Диапазон", + ["Distance"] = "Расстояние", + ["Both"] = "Оба", + ["PavedStreet"] = "Павед Стрит", + ["PavedStreetWarningTitle"] = "Выбор улицы Павед Стрит", + ["PavedStreetToolTip"] = $"Установив этот флажок, можно изменить диапазон влияния для зданий,{Environment.NewLine}представляет собой увеличенную дальность, которую они получают при использовании мощеных улиц.{Environment.NewLine}Используйте кнопку 'Выбрать здание', чтобы поместить объект.", + ["Options"] = "Параметры", + ["EnableLabel"] = "Показывать название", + ["Borderless"] = "Без полей", + ["Road"] = "Дорогa", + ["PlaceBuilding"] = "Выбрать здание", + ["Search"] = "Фильтр", + ["SearchToolTip"] = "ESC чтобы очистить текст поиска", + ["SearchPlaceholder"] = "Введите здесь название здания", + ["TitleAbout"] = "О программе", + ["BuildingLayoutDesigner"] = "Конструктор макета здания для Ubisofts Anno-серии", + ["Credits"] = "Авторы", + ["OriginalApplicationBy"] = "Оригинальное приложение", + ["BuildingPresets"] = "Строительные пресеты", + ["CombinedForAnnoVersions"] = "Комбинированные строительные пресеты для", + ["AdditionalChanges"] = "Дополнительные изменения по вкладчикам на Github", + ["ManyThanks"] = "Большое спасибо всем пользователям, которые внесли свой вклад в этот проект!", + ["VisitTheFandom"] = "Обязательно посетите страницы Фэндома для Anno!", + ["OriginalHomepage"] = "Оригинальная домашняя страница", + ["ProjectHomepage"] = "Домашняя страница проекта", + ["GoToFandom"] = "Перейти к Фэндом", + ["Close"] = "Закрыть", + ["StatusBarControls"] = "Управление мышью: влево - разместить, выбрать, переместить // вправо - прекратить размещение, удалить // оба - переместить все // двойной щелчок - копировать // колесо - масштабировать // колесико щелкнуть - повернуть.", + ["StatusBarItemsOnClipboard"] = "элементы в буфере обмена", + ["StatNothingPlaced"] = "Ничего не размещено", + ["StatBoundingBox"] = "Ограничительная рамка", + ["StatMinimumArea"] = "Минимальная площадь", + ["StatSpaceEfficiency"] = "Космическая эффективность", + ["StatBuildings"] = "Здания", + ["StatBuildingsSelected"] = "Выбранные здания", + ["StatTiles"] = "Плитка", + ["StatNameNotFound"] = "Название здания не найдено", + ["UnknownObject"] = "Неизвестный объект", + ["PresetsLoaded"] = "Загружаются пресеты зданий", + ["ExportImageSuccessful"] = "Изображение было успешно экспортировано.", + ["ExportImageError"] = "Что-то пошло не так при экспорте изображения.", + ["ApplyColorToSelection"] = "Применить цвет", + ["ApplyColorToSelectionToolTip"] = "Применить цвет ко всем зданиям в текущем выборе", + ["ApplyPredefinedColorToSelection"] = "Применить предопределенный цвет", + ["ApplyPredefinedColorToSelectionToolTip"] = "Применить предопределенный цвет (если он найден) ко всем зданиям в текущем выборе.", + ["AvailableColors"] = "Доступные цвета", + ["StandardColors"] = "Предварительно определенные цвета", + ["RecentColors"] = "Последние использованные цвета", + ["Standard"] = "Стандарт", + ["Advanced"] = "Расширенный", + ["UpdateAvailableHeader"] = "Обновление доступно", + ["UpdateAvailablePresetMessage"] = $"Доступна обновленная версия предустановок.{Environment.NewLine}Вы хотите скачать его и перезапустить приложение?", + ["AdminRightsRequired"] = "Требуемые права администратора", + ["UpdateRequiresAdminRightsMessage"] = "Для загрузки обновления приложению необходим доступ на запись. Пожалуйста, предоставьте полномочия.", + ["Error"] = "Ошибка", + ["UpdateErrorPresetMessage"] = "Произошла ошибка при установке обновления.", + ["UpdateNoConnectionMessage"] = "Не смог установить соединение с интернетом.", + ["ColorsInLayout"] = "Цвета в макетах", + ["ColorsInLayoutToolTip"] = "Дважды щелкните по цвету, чтобы выбрать его.", + ["LoadLayoutHeader"] = "Загрузить макет", + ["LoadLayoutMessage"] = "Пожалуйста, вставьте JSON строку ниже.", + ["ClipboardContainsLayoutAsJson"] = "Буфер обмена содержит текущую верстку в виде JSON.", + ["OK"] = "OK", + ["Cancel"] = "Отмена", + ["SelectAll"] = "Выберите все", + ["Tools"] = "Инструменты", + ["Preferences"] = "Предпочтения", + ["ResetAllConfirmationMessage"] = "Вы уверены, что хотите сбросить все горячие клавиши в их настройки по умолчанию?", + ["ResetAll"] = "Сбросить все", + ["UpdateSettings"] = "Обновление Настройки", + ["ManageKeybindings"] = "Управление привязками к ключам", + ["Edit"] = "Редактирование", + ["Recording"] = "Запись", + ["RecordANewAction"] = "Записать новое действие", + ["Rotate"] = "Повернуть", + ["Copy"] = "Скопировать", + ["Paste"] = "Вставить", + ["Delete"] = "Удалить", + ["Duplicate"] = "Дублировать", + ["RotateAll"] = "Повернуть все", + ["DeleteObjectUnderCursor"] = "Удалить объект под курсором", + ["Licenses"] = "Лицензии", + ["ViewLicenses"] = "Просмотреть лицензии с открытым исходным кодом", + ["ExternalLinkConfirmationMessage"] = "При этом откроется новая вкладка в вашем веб-браузере по умолчанию. Продолжить?", + ["ExternalLinkMessageTitle"] = "Открытие внешней ссылки", + ["RecentFiles"] = "Последние Файлы", + ["UpdatePreferencesVersionInformation"] = "Информация о версии", + ["UpdatePreferencesSettings"] = "Настройки", + ["UpdatePreferencesCheckPreRelease"] = "Проверка на наличие предпродаж", + ["UpdatePreferencesUpdates"] = "Обновления", + ["UpdatePreferencesDownloadPresetsAndRestart"] = "Скачать Предустановки и перезапустить приложение", + ["UpdatePreferencesNewAppUpdateAvailable"] = "Доступно новое Обновление! Пожалуйста, ознакомьтесь с примечаниями к обновлению на сайте.", + ["UpdatePreferencesNoUpdates"] = "Эта версия обновлена.", + ["UpdatePreferencesErrorCheckingUpdates"] = "Проверка на ошибки при обновлении.", + ["UpdatePreferencesMoreInfoInLog"] = "Более подробная информация находится в журнале.", + ["UpdatePreferencesNewPresetsUpdateAvailable"] = "Доступно новое Обновление для пресетов!", + ["UpdatePreferencesBusyCheckUpdates"] = "Проверка обновлений ...", + ["UpdatePreferencesBusyDownloadPresets"] = "Загрузка предустановок ...", + ["NoIcon"] = "Иконки нет", + ["GeneralSettings"] = "Общие настройки", + ["GeneralPreferencesUISettings"] = "Настройки пользовательского интерфейса", + ["GeneralPreferencesHideInfluenceOnSelection"] = "Скрыть влияние на выбор", + ["GeneralPreferencesUseZoomToPoint"] = "Использовать новое поведение масштабирования", + ["GeneralPreferencesGridLinesColor"] = "Цвет линии сетки", + ["GeneralPreferencesObjectBorderLinesColor"] = "Цвет границы", + ["GeneralPreferencesZoomSensitivity"] = "Чувствительность к увеличению", + ["GeneralPreferencesInvertScrollingDirection"] = "Инвертировать направление прокрутки", + ["GeneralPreferencesInvertPanningDirection"] = "Инвертировать направление панорамирования", + ["GeneralPreferencesShowScrollbars"] = "Показать полосы прокрутки", + ["ColorTypeDefault"] = "По умолчанию", + ["ColorTypeLight"] = "Свет", + ["ColorTypeCustom"] = "Пользовательский", + ["Warning"] = "Предупреждение", + ["FileNotFound"] = "Файл не был найден.", + ["Default"] = "По умолчанию", + ["ItemsCopied"] = "списанные предметы", + ["ItemCopied"] = "скопированный элемент", + ["LoadingPresetsFailed"] = "Загрузка строительных предустановок не удалась.", + ["LoadingIconNamesFailed"] = "Загрузка имен иконок не удалась.", + ["FileVersionUnsupportedMessage"] = $"Попробуешь загрузить?{Environment.NewLine}Это очень вероятно приведет к неудаче или к странным вещам.", + ["FileVersionUnsupportedTitle"] = "Версия файла не поддерживается", + ["IOErrorMessage"] = "Что-то пошло не так при сохранении/загрузке файла.", + ["AnotherInstanceIsAlreadyRunning"] = "Другой экземпляр приложения уже запущен.", + ["ErrorUpgradingSettings"] = "Файл настроек поврежден. Мы должны сбросить ваши настройки.", + ["FileVersionMismatchMessage"] = $"Попробуйте загрузить?{Environment.NewLine}Скорее всего, это приведет к ошибке или странным вещам.", + ["FileVersionMismatchTItle"] = "Несоответствие версии файла", + ["LayoutLoadingError"] = "Что-то пошло не так во время загрузки макета.", + ["LayoutSavingError"] = "Что-то пошло не так во время сохранения макета.", + ["InvalidBuildingConfiguration"] = "Неверная конфигурация здания.", + ["MergeRoads"] = "Oбъединить дороги", + ["LoadingTreeLocalizationFailed"] = "Загрузка локализации не удалась.", + ["Undo"] = "Отменить", + ["Redo"] = "Redo", + ["LayoutSettings"] = "Настройки макета", + ["View"] = "Посмотреть", + ["SaveUnsavedChanges"] = "Сохранить несохраненные изменения?", + ["UnsavedChanged"] = "Есть неспасенные изменения", + ["UnsavedChangedBeforeCrash"] = "Программа аварийно завершена, но есть несохраненные изменения", + ["ColorPresetsVersion"] = "Версия предустановок цвета", + ["TreeLocalizationVersion"] = "Версия локализации деревьев", + ["ShowHarborBlockedArea"] = "Показать районы гавани" }, }; diff --git a/AnnoDesigner/MainWindow.xaml b/AnnoDesigner/MainWindow.xaml index 2a7f87fb..2af8ff71 100644 --- a/AnnoDesigner/MainWindow.xaml +++ b/AnnoDesigner/MainWindow.xaml @@ -179,6 +179,9 @@ + Settings.Default.ShowInfluences = value; } + public bool ShowHarborBlockedArea + { + get => Settings.Default.ShowHarborBlockedArea; + set => Settings.Default.ShowHarborBlockedArea = value; + } + public bool IsPavedStreet { get => Settings.Default.IsPavedStreet; diff --git a/AnnoDesigner/Models/IAnnoCanvas.cs b/AnnoDesigner/Models/IAnnoCanvas.cs index fd531cea..a196e493 100644 --- a/AnnoDesigner/Models/IAnnoCanvas.cs +++ b/AnnoDesigner/Models/IAnnoCanvas.cs @@ -32,6 +32,7 @@ public interface IAnnoCanvas : IHotkeySource bool RenderGrid { get; set; } bool RenderInfluences { get; set; } bool RenderTrueInfluenceRange { get; set; } + bool RenderHarborBlockedArea { get; set; } bool RenderLabel { get; set; } bool RenderIcon { get; set; } diff --git a/AnnoDesigner/Models/ICoordinateHelper.cs b/AnnoDesigner/Models/ICoordinateHelper.cs index 9cd37aa3..418735f0 100644 --- a/AnnoDesigner/Models/ICoordinateHelper.cs +++ b/AnnoDesigner/Models/ICoordinateHelper.cs @@ -1,4 +1,5 @@ using System.Windows; +using AnnoDesigner.Core.Models; namespace AnnoDesigner.Models { @@ -14,6 +15,8 @@ public interface ICoordinateHelper Size Rotate(Size size); + GridDirection Rotate(GridDirection direction); + double RoundScreenToGrid(double screenLength, int gridStep); Point RoundScreenToGrid(Point screenPoint, int gridStep); diff --git a/AnnoDesigner/Models/LayoutObject.cs b/AnnoDesigner/Models/LayoutObject.cs index f3c3c46d..1c9a2fd7 100644 --- a/AnnoDesigner/Models/LayoutObject.cs +++ b/AnnoDesigner/Models/LayoutObject.cs @@ -167,6 +167,14 @@ public Point Position } } + public double BlockedArea => WrappedAnnoObject.BlockedArea; + + public GridDirection Direction + { + get => WrappedAnnoObject.Direction; + set => WrappedAnnoObject.Direction = value; + } + /// /// Generates the rect to which the given object is rendered. /// @@ -194,6 +202,27 @@ private Rect ScreenRect } } + public Rect? CalculateReservedScreenRect(int gridSize) + { + if (BlockedArea > 0) + { + var blockedAreaScreenLength = _coordinateHelper.GridToScreen(BlockedArea, gridSize); + + switch (Direction) + { + case GridDirection.Up: + return new Rect(ScreenRect.TopLeft.X, ScreenRect.TopLeft.Y - blockedAreaScreenLength, ScreenRect.Width, blockedAreaScreenLength); + case GridDirection.Right: + return new Rect(ScreenRect.TopRight, new Size(blockedAreaScreenLength, ScreenRect.Height)); + case GridDirection.Down: + return new Rect(ScreenRect.BottomLeft, new Size(ScreenRect.Width, blockedAreaScreenLength)); + case GridDirection.Left: + return new Rect(ScreenRect.TopLeft.X - blockedAreaScreenLength, ScreenRect.TopLeft.Y, blockedAreaScreenLength, ScreenRect.Height); + } + } + return null; + } + /// /// Gets the rect which is used for collision detection for the given object. /// Prevents undesired collisions which occur when using GetObjectScreenRect(). diff --git a/AnnoDesigner/Properties/Settings.Designer.cs b/AnnoDesigner/Properties/Settings.Designer.cs index 989fdf35..789ea4f2 100644 --- a/AnnoDesigner/Properties/Settings.Designer.cs +++ b/AnnoDesigner/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace AnnoDesigner.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -499,5 +499,17 @@ public bool ShowScrollbars { this["ShowScrollbars"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool ShowHarborBlockedArea { + get { + return ((bool)(this["ShowHarborBlockedArea"])); + } + set { + this["ShowHarborBlockedArea"] = value; + } + } } } diff --git a/AnnoDesigner/Properties/Settings.settings b/AnnoDesigner/Properties/Settings.settings index 370fb173..bd98f763 100644 --- a/AnnoDesigner/Properties/Settings.settings +++ b/AnnoDesigner/Properties/Settings.settings @@ -122,5 +122,8 @@ True + + False + \ No newline at end of file diff --git a/AnnoDesigner/ViewModels/MainViewModel.cs b/AnnoDesigner/ViewModels/MainViewModel.cs index e9ac0021..d6a45517 100644 --- a/AnnoDesigner/ViewModels/MainViewModel.cs +++ b/AnnoDesigner/ViewModels/MainViewModel.cs @@ -64,6 +64,7 @@ public class MainViewModel : Notify private bool _canvasShowLabels; private bool _canvasShowTrueInfluenceRange; private bool _canvasShowInfluences; + private bool _canvasShowHarborBlockedArea; private bool _useCurrentZoomOnExportedImageValue; private bool _renderSelectionHighlightsOnExportedImageValue; private bool _isLanguageChange; @@ -673,6 +674,7 @@ public void LoadSettings() CanvasShowLabels = _appSettings.ShowLabels; CanvasShowTrueInfluenceRange = _appSettings.ShowTrueInfluenceRange; CanvasShowInfluences = _appSettings.ShowInfluences; + CanvasShowHarborBlockedArea = _appSettings.ShowHarborBlockedArea; BuildingSettingsViewModel.IsPavedStreet = _appSettings.IsPavedStreet; @@ -693,6 +695,7 @@ public void SaveSettings() _appSettings.ShowLabels = CanvasShowLabels; _appSettings.ShowTrueInfluenceRange = CanvasShowTrueInfluenceRange; _appSettings.ShowInfluences = CanvasShowInfluences; + _appSettings.ShowHarborBlockedArea = CanvasShowHarborBlockedArea; _appSettings.StatsShowStats = StatisticsViewModel.IsVisible; _appSettings.StatsShowBuildingCount = StatisticsViewModel.ShowStatisticsBuildingCount; @@ -969,6 +972,19 @@ public bool CanvasShowInfluences } } + public bool CanvasShowHarborBlockedArea + { + get { return _canvasShowHarborBlockedArea; } + set + { + UpdateProperty(ref _canvasShowHarborBlockedArea, value); + if (AnnoCanvas != null) + { + AnnoCanvas.RenderHarborBlockedArea = _canvasShowHarborBlockedArea; + } + } + } + public bool UseCurrentZoomOnExportedImageValue { get { return _useCurrentZoomOnExportedImageValue; } diff --git a/AnnoDesigner/app.config b/AnnoDesigner/app.config index db2afb5a..eb8a3a57 100644 --- a/AnnoDesigner/app.config +++ b/AnnoDesigner/app.config @@ -132,6 +132,9 @@ True + + False + From 3615aa160cfed68890f8ee5df3b2fd5adc069ffe Mon Sep 17 00:00:00 2001 From: Atria1234 Date: Fri, 10 Sep 2021 15:17:45 +0200 Subject: [PATCH 2/7] AnnoObject's BlockedArea and Direction is now loaded from presets when placing down a new building --- AnnoDesigner.Core/Presets/Models/BuildingInfo.cs | 12 ++++++++++++ AnnoDesigner.Core/Presets/Models/IBuildingInfo.cs | 2 ++ AnnoDesigner/BuildingInfoExtensions.cs | 4 +++- AnnoDesigner/ViewModels/MainViewModel.cs | 3 +++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/AnnoDesigner.Core/Presets/Models/BuildingInfo.cs b/AnnoDesigner.Core/Presets/Models/BuildingInfo.cs index 37d13b15..a2570efd 100644 --- a/AnnoDesigner.Core/Presets/Models/BuildingInfo.cs +++ b/AnnoDesigner.Core/Presets/Models/BuildingInfo.cs @@ -82,6 +82,18 @@ public class BuildingInfo : IBuildingInfo [DataMember(Order = 10)] public bool Borderless { get; set; } + /// + /// Length of blocked area + /// + [DataMember(Order = 11)] + public double BlockedArea { get; set; } + + /// + /// Direction of blocked area + /// + [DataMember(Order = 12)] + public GridDirection Direction { get; set; } = GridDirection.Down; + /// /// The localized names of this building. /// diff --git a/AnnoDesigner.Core/Presets/Models/IBuildingInfo.cs b/AnnoDesigner.Core/Presets/Models/IBuildingInfo.cs index d7b1fbca..c96c0e36 100644 --- a/AnnoDesigner.Core/Presets/Models/IBuildingInfo.cs +++ b/AnnoDesigner.Core/Presets/Models/IBuildingInfo.cs @@ -16,5 +16,7 @@ public interface IBuildingInfo bool Borderless { get; set; } bool Road { get; set; } SerializableDictionary Localization { get; set; } + double BlockedArea { get; set; } + GridDirection Direction { get; set; } } } \ No newline at end of file diff --git a/AnnoDesigner/BuildingInfoExtensions.cs b/AnnoDesigner/BuildingInfoExtensions.cs index e9f987f2..46b61272 100644 --- a/AnnoDesigner/BuildingInfoExtensions.cs +++ b/AnnoDesigner/BuildingInfoExtensions.cs @@ -29,8 +29,10 @@ public static AnnoObject ToAnnoObject(this IBuildingInfo buildingInfo, string se Size = buildingInfo.BuildBlocker == null ? new Size() : new Size(buildingInfo.BuildBlocker["x"], buildingInfo.BuildBlocker["z"]), Template = buildingInfo.Template, Road = buildingInfo.Road, - Borderless = buildingInfo.Borderless + Borderless = buildingInfo.Borderless, //BuildCosts = BuildCost + BlockedArea = buildingInfo.BlockedArea, + Direction = buildingInfo.Direction }; } diff --git a/AnnoDesigner/ViewModels/MainViewModel.cs b/AnnoDesigner/ViewModels/MainViewModel.cs index d6a45517..61066569 100644 --- a/AnnoDesigner/ViewModels/MainViewModel.cs +++ b/AnnoDesigner/ViewModels/MainViewModel.cs @@ -386,6 +386,9 @@ private void ApplyCurrentObject() var buildingInfo = AnnoCanvas.BuildingPresets.Buildings.FirstOrDefault(_ => _.IconFileName?.Equals(objIconFileName, StringComparison.OrdinalIgnoreCase) ?? false); if (buildingInfo != null) { + obj.BlockedArea = buildingInfo.BlockedArea; + obj.Direction = buildingInfo.Direction; + // Check X and Z Sizes of the Building Info, if one or both not right, the Object will be Unknown //Building could be in rotated form - so 5x4 should be equivalent to checking for 4x5 if ((obj.Size.Width == buildingInfo.BuildBlocker["x"] && obj.Size.Height == buildingInfo.BuildBlocker["z"]) From a328faf22bd58639d24d0bcc638d165d16eba89c Mon Sep 17 00:00:00 2001 From: Atria1234 Date: Sat, 11 Sep 2021 12:39:40 +0200 Subject: [PATCH 3/7] Unit tests for rotate direction --- Tests/AnnoDesigner.Tests/CoordinateHelperTests.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Tests/AnnoDesigner.Tests/CoordinateHelperTests.cs b/Tests/AnnoDesigner.Tests/CoordinateHelperTests.cs index 332154f2..90207502 100644 --- a/Tests/AnnoDesigner.Tests/CoordinateHelperTests.cs +++ b/Tests/AnnoDesigner.Tests/CoordinateHelperTests.cs @@ -6,6 +6,7 @@ using Xunit; using System.Windows; using AnnoDesigner.Helper; +using AnnoDesigner.Core.Models; namespace AnnoDesigner.Tests { @@ -32,6 +33,20 @@ public void Rotate_ShouldReturnCorrectResult(double width, double height) Assert.Equal(expectedSize, result); } + [Theory] + [InlineData(GridDirection.Up, GridDirection.Right)] + [InlineData(GridDirection.Right, GridDirection.Down)] + [InlineData(GridDirection.Down, GridDirection.Left)] + [InlineData(GridDirection.Left, GridDirection.Up)] + public void RotateDirection_ShouldReturnCorrectResult(GridDirection before, GridDirection expected) + { + // Arrange/ Act + var result = new CoordinateHelper().Rotate(before); + + // Assert + Assert.Equal(expected, result); + } + #endregion #region GetCenterPoint tests From a5244503ce1cd922968f5e0e147e423a1166706d Mon Sep 17 00:00:00 2001 From: Atria1234 Date: Sat, 11 Sep 2021 13:32:27 +0200 Subject: [PATCH 4/7] Added BlockedAreaWidth property, modified brush used for rendering blocked areas to be more transparent --- AnnoDesigner.Core/Models/AnnoObject.cs | 13 ++- .../Presets/Models/BuildingInfo.cs | 10 ++- .../Presets/Models/IBuildingInfo.cs | 3 +- AnnoDesigner/AnnoCanvas.xaml.cs | 2 +- AnnoDesigner/BuildingInfoExtensions.cs | 3 +- AnnoDesigner/Models/LayoutObject.cs | 79 +++++++++++++++++-- AnnoDesigner/ViewModels/MainViewModel.cs | 3 +- 7 files changed, 97 insertions(+), 16 deletions(-) diff --git a/AnnoDesigner.Core/Models/AnnoObject.cs b/AnnoDesigner.Core/Models/AnnoObject.cs index 5f0e2a24..bd735881 100644 --- a/AnnoDesigner.Core/Models/AnnoObject.cs +++ b/AnnoDesigner.Core/Models/AnnoObject.cs @@ -41,7 +41,8 @@ public AnnoObject(AnnoObject obj) Road = obj.Road; // note: this is not really a copy, just a reference, but it is not supposed to change anyway //BuildCosts = obj.BuildCosts; - BlockedArea = obj.BlockedArea; + BlockedAreaLength = obj.BlockedAreaLength; + BlockedAreaWidth = obj.BlockedAreaWidth; Direction = obj.Direction; } @@ -135,12 +136,18 @@ public AnnoObject(AnnoObject obj) /// Length of blocked area /// [DataMember(Order = 12)] - public double BlockedArea { get; set; } + public double BlockedAreaLength { get; set; } /// - /// Direction of blocked area + /// Width of blocked area /// [DataMember(Order = 13)] + public double BlockedAreaWidth { get; set; } + + /// + /// Direction of blocked area + /// + [DataMember(Order = 14)] public GridDirection Direction { get; set; } = GridDirection.Down; } } \ No newline at end of file diff --git a/AnnoDesigner.Core/Presets/Models/BuildingInfo.cs b/AnnoDesigner.Core/Presets/Models/BuildingInfo.cs index a2570efd..43e22339 100644 --- a/AnnoDesigner.Core/Presets/Models/BuildingInfo.cs +++ b/AnnoDesigner.Core/Presets/Models/BuildingInfo.cs @@ -86,12 +86,18 @@ public class BuildingInfo : IBuildingInfo /// Length of blocked area /// [DataMember(Order = 11)] - public double BlockedArea { get; set; } + public double BlockedAreaLength { get; set; } /// - /// Direction of blocked area + /// Length of blocked area /// [DataMember(Order = 12)] + public double BlockedAreaWidth { get; set; } + + /// + /// Direction of blocked area + /// + [DataMember(Order = 13)] public GridDirection Direction { get; set; } = GridDirection.Down; /// diff --git a/AnnoDesigner.Core/Presets/Models/IBuildingInfo.cs b/AnnoDesigner.Core/Presets/Models/IBuildingInfo.cs index c96c0e36..2fdbba33 100644 --- a/AnnoDesigner.Core/Presets/Models/IBuildingInfo.cs +++ b/AnnoDesigner.Core/Presets/Models/IBuildingInfo.cs @@ -16,7 +16,8 @@ public interface IBuildingInfo bool Borderless { get; set; } bool Road { get; set; } SerializableDictionary Localization { get; set; } - double BlockedArea { get; set; } + double BlockedAreaLength { get; set; } + double BlockedAreaWidth { get; set; } GridDirection Direction { get; set; } } } \ No newline at end of file diff --git a/AnnoDesigner/AnnoCanvas.xaml.cs b/AnnoDesigner/AnnoCanvas.xaml.cs index a9aeead0..497b61a0 100644 --- a/AnnoDesigner/AnnoCanvas.xaml.cs +++ b/AnnoDesigner/AnnoCanvas.xaml.cs @@ -1105,7 +1105,7 @@ private void RenderObjectList(DrawingContext drawingContext, List var objBlockedRect = curLayoutObject.CalculateReservedScreenRect(GridSize); if (objBlockedRect.HasValue) { - drawingContext.DrawRectangle(curLayoutObject.TransparentBrush, borderPen, objBlockedRect.Value); + drawingContext.DrawRectangle(curLayoutObject.BlockedAreaBrush, borderPen, objBlockedRect.Value); } } diff --git a/AnnoDesigner/BuildingInfoExtensions.cs b/AnnoDesigner/BuildingInfoExtensions.cs index 46b61272..26d375db 100644 --- a/AnnoDesigner/BuildingInfoExtensions.cs +++ b/AnnoDesigner/BuildingInfoExtensions.cs @@ -31,7 +31,8 @@ public static AnnoObject ToAnnoObject(this IBuildingInfo buildingInfo, string se Road = buildingInfo.Road, Borderless = buildingInfo.Borderless, //BuildCosts = BuildCost - BlockedArea = buildingInfo.BlockedArea, + BlockedAreaLength = buildingInfo.BlockedAreaLength, + BlockedAreaWidth = buildingInfo.BlockedAreaWidth, Direction = buildingInfo.Direction }; } diff --git a/AnnoDesigner/Models/LayoutObject.cs b/AnnoDesigner/Models/LayoutObject.cs index 6db800b0..3c78f007 100644 --- a/AnnoDesigner/Models/LayoutObject.cs +++ b/AnnoDesigner/Models/LayoutObject.cs @@ -27,6 +27,8 @@ public class LayoutObject : IBounded private SolidColorBrush _transparentBrush; private Color? _renderColor; private SolidColorBrush _renderBrush; + private Color? _blockedAreaColor; + private SolidColorBrush _blockedAreaBrush; private Pen _borderlessPen; private int _gridSizeScreenRect; private Point _position; @@ -129,6 +131,35 @@ public SolidColorBrush RenderBrush } } + public Color BlockedAreaColor + { + get + { + if (_blockedAreaColor == null) + { + var tmp = WrappedAnnoObject.Color.MediaColor; + tmp.A = 60; + + _blockedAreaColor = tmp; + } + + return _blockedAreaColor.Value; + } + } + + public SolidColorBrush BlockedAreaBrush + { + get + { + if (_blockedAreaBrush == null) + { + _blockedAreaBrush = _brushCache.GetSolidBrush(BlockedAreaColor); + } + + return _blockedAreaBrush; + } + } + public Pen GetBorderlessPen(Brush brush, double thickness) { if (_borderlessPen == null || _borderlessPen.Thickness != thickness || _borderlessPen.Brush != brush) @@ -167,7 +198,26 @@ public Point Position } } - public double BlockedArea => WrappedAnnoObject.BlockedArea; + public double BlockedAreaLength => WrappedAnnoObject.BlockedAreaLength; + + public double BlockedAreaWidth + { + get + { + if (WrappedAnnoObject.BlockedAreaWidth > 0) + { + return WrappedAnnoObject.BlockedAreaWidth; + } + switch (Direction) + { + case GridDirection.Up: + case GridDirection.Down: return Size.Width - 0.5; + case GridDirection.Right: + case GridDirection.Left: return Size.Width - 0.5; + } + return 0; + } + } public GridDirection Direction { @@ -204,20 +254,35 @@ private Rect ScreenRect public Rect? CalculateReservedScreenRect(int gridSize) { - if (BlockedArea > 0) + if (BlockedAreaLength > 0) { - var blockedAreaScreenLength = _coordinateHelper.GridToScreen(BlockedArea, gridSize); + var blockedAreaScreenWidth = _coordinateHelper.GridToScreen(BlockedAreaWidth, gridSize); + var blockedAreaScreenLength = _coordinateHelper.GridToScreen(BlockedAreaLength, gridSize); switch (Direction) { case GridDirection.Up: - return new Rect(ScreenRect.TopLeft.X, ScreenRect.TopLeft.Y - blockedAreaScreenLength, ScreenRect.Width, blockedAreaScreenLength); + return new Rect( + ScreenRect.Left + (ScreenRect.Width - blockedAreaScreenWidth) / 2, + ScreenRect.Top - blockedAreaScreenLength, + blockedAreaScreenWidth, + blockedAreaScreenLength); case GridDirection.Right: - return new Rect(ScreenRect.TopRight, new Size(blockedAreaScreenLength, ScreenRect.Height)); + return new Rect( + ScreenRect.Right, + ScreenRect.Top + (ScreenRect.Height - blockedAreaScreenWidth) / 2, + blockedAreaScreenLength, + blockedAreaScreenWidth); case GridDirection.Down: - return new Rect(ScreenRect.BottomLeft, new Size(ScreenRect.Width, blockedAreaScreenLength)); + return new Rect(ScreenRect.Left + (ScreenRect.Width - blockedAreaScreenWidth) / 2, + ScreenRect.Bottom, + blockedAreaScreenWidth, + blockedAreaScreenLength); case GridDirection.Left: - return new Rect(ScreenRect.TopLeft.X - blockedAreaScreenLength, ScreenRect.TopLeft.Y, blockedAreaScreenLength, ScreenRect.Height); + return new Rect(ScreenRect.TopLeft.X - blockedAreaScreenLength, + ScreenRect.TopLeft.Y + (ScreenRect.Height - blockedAreaScreenWidth) / 2, + blockedAreaScreenLength, + blockedAreaScreenWidth); } } return null; diff --git a/AnnoDesigner/ViewModels/MainViewModel.cs b/AnnoDesigner/ViewModels/MainViewModel.cs index 1d7eed57..94d94deb 100644 --- a/AnnoDesigner/ViewModels/MainViewModel.cs +++ b/AnnoDesigner/ViewModels/MainViewModel.cs @@ -389,7 +389,8 @@ private void ApplyCurrentObject() var buildingInfo = AnnoCanvas.BuildingPresets.Buildings.FirstOrDefault(_ => _.IconFileName?.Equals(objIconFileName, StringComparison.OrdinalIgnoreCase) ?? false); if (buildingInfo != null) { - obj.BlockedArea = buildingInfo.BlockedArea; + obj.BlockedAreaLength = buildingInfo.BlockedAreaLength; + obj.BlockedAreaWidth = buildingInfo.BlockedAreaWidth; obj.Direction = buildingInfo.Direction; // Check X and Z Sizes of the Building Info, if one or both not right, the Object will be Unknown From 744d8a1e4f7b95f41cea434ec848aac5c39cb813 Mon Sep 17 00:00:00 2001 From: Atria1234 Date: Sat, 11 Sep 2021 13:37:27 +0200 Subject: [PATCH 5/7] Fixed copy paste error --- AnnoDesigner/Models/LayoutObject.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AnnoDesigner/Models/LayoutObject.cs b/AnnoDesigner/Models/LayoutObject.cs index 3c78f007..84531816 100644 --- a/AnnoDesigner/Models/LayoutObject.cs +++ b/AnnoDesigner/Models/LayoutObject.cs @@ -213,7 +213,7 @@ public double BlockedAreaWidth case GridDirection.Up: case GridDirection.Down: return Size.Width - 0.5; case GridDirection.Right: - case GridDirection.Left: return Size.Width - 0.5; + case GridDirection.Left: return Size.Height - 0.5; } return 0; } From 6ec3c5cee9c03f68d2a2952839161cf97e31258a Mon Sep 17 00:00:00 2001 From: Atria1234 Date: Mon, 13 Sep 2021 15:02:54 +0200 Subject: [PATCH 6/7] Added caching for BlockedAreaScreenRect --- AnnoDesigner/AnnoCanvas.xaml.cs | 2 +- AnnoDesigner/Models/LayoutObject.cs | 76 ++++++++++++++++++----------- 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/AnnoDesigner/AnnoCanvas.xaml.cs b/AnnoDesigner/AnnoCanvas.xaml.cs index 497b61a0..43f478c6 100644 --- a/AnnoDesigner/AnnoCanvas.xaml.cs +++ b/AnnoDesigner/AnnoCanvas.xaml.cs @@ -1102,7 +1102,7 @@ private void RenderObjectList(DrawingContext drawingContext, List drawingContext.DrawRectangle(brush, borderPen, objRect); if (RenderHarborBlockedArea) { - var objBlockedRect = curLayoutObject.CalculateReservedScreenRect(GridSize); + var objBlockedRect = curLayoutObject.CalculateBlockedScreenRect(GridSize); if (objBlockedRect.HasValue) { drawingContext.DrawRectangle(curLayoutObject.BlockedAreaBrush, borderPen, objBlockedRect.Value); diff --git a/AnnoDesigner/Models/LayoutObject.cs b/AnnoDesigner/Models/LayoutObject.cs index 84531816..c85ff836 100644 --- a/AnnoDesigner/Models/LayoutObject.cs +++ b/AnnoDesigner/Models/LayoutObject.cs @@ -33,6 +33,7 @@ public class LayoutObject : IBounded private int _gridSizeScreenRect; private Point _position; private Rect _screenRect; + private Rect? _blockedAreaScreenRect; private Rect _collisionRect; private Size _collisionSize; private string _iconNameWithoutExtension; @@ -246,46 +247,65 @@ private Rect ScreenRect if (_screenRect == default) { _screenRect = new Rect(_coordinateHelper.GridToScreen(Position, _gridSizeScreenRect), _coordinateHelper.GridToScreen(Size, _gridSizeScreenRect)); + _blockedAreaScreenRect = null; } return _screenRect; } } - public Rect? CalculateReservedScreenRect(int gridSize) + public Rect? CalculateBlockedScreenRect(int gridSize) { - if (BlockedAreaLength > 0) + if (_gridSizeScreenRect != gridSize) { - var blockedAreaScreenWidth = _coordinateHelper.GridToScreen(BlockedAreaWidth, gridSize); - var blockedAreaScreenLength = _coordinateHelper.GridToScreen(BlockedAreaLength, gridSize); + _gridSizeScreenRect = gridSize; + _blockedAreaScreenRect = null; + } - switch (Direction) + return BlockedAreaScreenRect; + } + + private Rect? BlockedAreaScreenRect + { + get + { + if (_blockedAreaScreenRect == null) { - case GridDirection.Up: - return new Rect( - ScreenRect.Left + (ScreenRect.Width - blockedAreaScreenWidth) / 2, - ScreenRect.Top - blockedAreaScreenLength, - blockedAreaScreenWidth, - blockedAreaScreenLength); - case GridDirection.Right: - return new Rect( - ScreenRect.Right, - ScreenRect.Top + (ScreenRect.Height - blockedAreaScreenWidth) / 2, - blockedAreaScreenLength, - blockedAreaScreenWidth); - case GridDirection.Down: - return new Rect(ScreenRect.Left + (ScreenRect.Width - blockedAreaScreenWidth) / 2, - ScreenRect.Bottom, - blockedAreaScreenWidth, - blockedAreaScreenLength); - case GridDirection.Left: - return new Rect(ScreenRect.TopLeft.X - blockedAreaScreenLength, - ScreenRect.TopLeft.Y + (ScreenRect.Height - blockedAreaScreenWidth) / 2, - blockedAreaScreenLength, - blockedAreaScreenWidth); + if (BlockedAreaLength > 0) + { + var blockedAreaScreenWidth = _coordinateHelper.GridToScreen(BlockedAreaWidth, _gridSizeScreenRect); + var blockedAreaScreenLength = _coordinateHelper.GridToScreen(BlockedAreaLength, _gridSizeScreenRect); + + switch (Direction) + { + case GridDirection.Up: + return _blockedAreaScreenRect = new Rect( + ScreenRect.Left + (ScreenRect.Width - blockedAreaScreenWidth) / 2, + ScreenRect.Top - blockedAreaScreenLength, + blockedAreaScreenWidth, + blockedAreaScreenLength); + case GridDirection.Right: + return _blockedAreaScreenRect = new Rect( + ScreenRect.Right, + ScreenRect.Top + (ScreenRect.Height - blockedAreaScreenWidth) / 2, + blockedAreaScreenLength, + blockedAreaScreenWidth); + case GridDirection.Down: + return _blockedAreaScreenRect = new Rect(ScreenRect.Left + (ScreenRect.Width - blockedAreaScreenWidth) / 2, + ScreenRect.Bottom, + blockedAreaScreenWidth, + blockedAreaScreenLength); + case GridDirection.Left: + return _blockedAreaScreenRect = new Rect(ScreenRect.TopLeft.X - blockedAreaScreenLength, + ScreenRect.TopLeft.Y + (ScreenRect.Height - blockedAreaScreenWidth) / 2, + blockedAreaScreenLength, + blockedAreaScreenWidth); + } + } } + + return _blockedAreaScreenRect; } - return null; } /// From b164b64dc56dee4f7631502580c3f4030d05d532 Mon Sep 17 00:00:00 2001 From: FroggieFrog Date: Tue, 14 Sep 2021 09:52:39 +0200 Subject: [PATCH 7/7] minor memory improvement --- AnnoDesigner/Helper/RoadSearchHelper.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/AnnoDesigner/Helper/RoadSearchHelper.cs b/AnnoDesigner/Helper/RoadSearchHelper.cs index 625c5fa3..61c65739 100644 --- a/AnnoDesigner/Helper/RoadSearchHelper.cs +++ b/AnnoDesigner/Helper/RoadSearchHelper.cs @@ -33,9 +33,10 @@ public static Moved2DArray PrepareGridDictionary(IEnumerable new AnnoObject[countY]) - .ToArray(); + .ToArrayWithCapacity(countX); Parallel.ForEach(placedObjects, placedObject => {