diff --git a/lang/lang-en.js b/lang/lang-en.js deleted file mode 100644 index b3361d23..00000000 --- a/lang/lang-en.js +++ /dev/null @@ -1,511 +0,0 @@ -// Source translation file for FMG. This file is only used as a reference for tranlation. Version 0.01a -window.translation = { - titleFull: "Azgaar's Fantasy Map Generator", - titleName: "Azgaar's", - title: "Fantasy Map Generator", - version: "v. ", - loading: "Loading", - newMap: "New Map!", - layers: "Layers", - style: "Style", - options: "Options", - tools: "Tools", - about: "About", - tipOptionsTrigger: "Click to show options pane. Shortcut: Tab", - tipRegenerate: "Click to generate a new map. Shortcut: F2", - optionsDragTrigger: "Drag to move options pane", - optionsHide: "Click to hide options pane. Shortcut: Tab to close this or Esc to close all dialogs", - layersTab: "Click to change map layers", - styleTab: "Click to open style editor", - optionsTab: "Click to change generation and UI options", - toolsTab: "Click to open tools menu", - aboutTab: "Click to see Generator info" -}; - -return; -// list of tooltips from init DOM (dynamically added elements are not icluded) -const sourceDataForReference = { - optionsTrigger: "Click to show options pane. Shortcut: Tab", - NeedToAdd!: "Drag to move options pane", - optionsHide: "Click to hide options pane. Shortcut: Tab to close this or Esc to close all dialogs", - NeedToAdd!: "Select a map layers preset", - savePresetButton: "Click to save displayed layers as a new preset", - removePresetButton: "Click to remove current custom preset", - NeedToAdd!: "Click to toggle a layer, drag to raise or lower a layer. Ctrl + click to edit layer style", - toggleRulers: "Rulers: click to toggle, drag to move, click on label to delete. Ctrl + click to edit layer style. Shortcut: = (equal)", - toggleScaleBar: "Scale Bar: click to toggle. Ctrl + click to edit style. Shortcut: - (minus)", - viewStandard: "Standard view mode that allows to edit the map", - viewMesh: "Map presentation in 3D scene. Works best for heightmap. Cannot be used for editing", - viewGlobe: "Project map on globe. Cannot be used for editing", - NeedToAdd!: "Select a style preset", - addStyleButton: "Click to save current style as a new preset", - removeStyleButton: "Click to remove current custom style preset", - NeedToAdd!: "Select an element to edit its style", - styleIsOff: "The selected layer is not visible. See the buttons above to toggle it on", - NeedToAdd!: "Click and provide a URL to image to be set as a texture", - styleTextureShiftX: "Shift texture by x axis in pixels", - styleTextureShiftY: "Shift texture by y axis in pixels", - styleGridSizeFriendly: "Distance between two adjacent cells in map scale", - styleShiftX: "Shift by x axis in pixels", - styleShiftY: "Shift by y axis in pixels", - styleCompassShiftX: "Shift by x axis in pixels", - styleCompassShiftY: "Shift by y axis in pixels", - styleInputFont: "Provide a link to @font-face declaration or type Google font name", - styleFontAdd: "Add custom font from the web", - styleFontPlus: "Multiply font size by 1.1", - styleFontMinus: "Multiply font size by 0.9", - styleRadiusPlus: "Multiply radius by 1.1", - styleRadiusMinus: "Multiply radius by 1.1", - styleIconSizePlus: "Multiply size by 1.1", - styleIconSizeMinus: "Multiply size by 1.1", - NeedToAdd!: "Allow system to hide labels if their size in too small or too big on that scale", - NeedToAdd!: "Map generation settings. Generate a new map to apply the settings", - toggleFullscreen: "Toggle between screen size and initial canvas size", - optionsSeedGenerate: "Click to generate a map for this seed", - optionsMapHistory: "Show seed history to apply a previous seed", - optionsCopySeed: "Copy map seed as URL. It will produce the same map only if options are default or the same", - NeedToAdd!: "Regenerate map name", - NeedToAdd!: "Tool settings that don't affect maps. Changes are getting applied immediately", - NeedToAdd!: "Mimimal possible zoom level (should be > 0)", - zoomExtentMin: "Mimimal possible zoom level (should be > 0)", - NeedToAdd!: "Maximal possible zoom level (should be > 1)", - zoomExtentMax: "Maximal possible zoom level (should be > 1)", - zoomExtentDefault: "Restore default [1, 20] zoom extent", - configureWorld: "Click to open world configurator to setup map position on Globe and World climate", - optionsReset: "Click to restore default options (page will be reloaded)", - editHeightmapButton: "Click to open Heightmap customization menu. Shortcut: Shift + H", - editBiomesButton: "Click to open Biomes Editor. Shortcut: Shift + B", - editStatesButton: "Click to open States Editor. Shortcut: Shift + S", - editProvincesButton: "Click to open Provinces Editor. Shortcut: Shift + P", - editDiplomacyButton: "Click to open Diplomatical relationships Editor. Shortcut: Shift + D", - editCulturesButton: "Click to open Cultures Editor. Shortcut: Shift + C", - editNamesBaseButton: "Click to open Namesbase Editor. Shortcut: Shift + N", - editZonesButton: "Click to open Zones Editor. Shortcut: Shift + Z", - editReligions: "Click to open Religions Editor. Shortcut: Shift + R", - editUnitsButton: "Click to open Units Editor. Shortcut: Shift + Q", - editNotesButton: "Click to open Notes Editor. Shortcut: Shift + O", - overviewBurgsButton: "Click to open Burgs Overview. Shortcut: Shift + T", - overviewRiversButton: "Click to open Rivers Overview. Shortcut: Shift + V", - overviewMilitaryButton: "Click to open Military Forces Overview. Shortcut: Shift + M", - overviewCellsButton: "Click to open Cell details view. Shortcut: Shift + E", - regenerateStateLabels: "Click to update state labels placement based on current borders", - regenerateReliefIcons: "Click to regenerate all relief icons based on current cell biome and elevation", - regenerateRoutes: "Click to regenerate all routes", - regenerateRivers: "Click to regenerate all rivers (restore default state)", - regeneratePopulation: "Click to recalculate rural and urban population", - regenerateBurgs: "Click to regenerate all burgs and routes. States will remain as they are", - regenerateStates: "Click to select new capitals and regenerate states. Burgs will remain as they are", - regenerateProvinces: "Click to regenerate provinces. States will remain as they are", - regenerateReligions: "Click to regenerate religions", - regenerateMarkers: "Click to regenerate markers. Hold Ctrl and click to set markers number multiplier", - regenerateZones: "Click to regenerate zones. Hold Ctrl and click to set zones number multiplier", - addBurgTool: "Click on map to place a burg. Hold Shift to add multiple. Shortcut: Shift + 1", - addLabel: "Click on map to place label. Hold Shift to add multiple. Shortcut: Shift + 2", - addRiver: "Click on map to place a river. Hold Shift to add multiple. Shortcut: Shift + 3", - addRoute: "Click on map to place a route. Shortcut: Shift + 4", - addMarker: "Click on map to place a marker. Hold Shift to add multiple. Shortcut: Shift + 5", - paintBrushes: "Display brushes panel", - applyTemplate: "Open template editor", - convertImage: "Open Image Converter", - heightmapPreview: "Render heightmap data as a small monochrome image", - heightmap3DView: "Preview heightmap in 3D scene", - NeedToAdd!: "Click to see supporters names", - newMapButton: "Generate a new map based on options. Shortcut: F2", - saveButton: "Select format to save map", - loadButton: "Load fully functional map in a .map format", - zoomReset: "Reset map zoom. Shortcut: 0", - finalizeHeightmap: "Finalize the heightmap and exit the edit mode", - NeedToAdd!: "Length of Meridian. Almost half of the equator length", - meridianLength: "Length of Meridian in pixels", - meridianLengthFriendly: "Length of Meridian is friendly units (depends on user configuration)", - meridianLengthEarth: "Fantasy world Meridian length relative to real-world Earth (20k km)", - labelGroupShow: "Show the group selection", - labelGroupHide: "Hide the group selection", - labelGroupSelect: "Select a group for this label", - labelGroupInput: "Provide a name for the new group", - labelGroupNew: "Create new group for this label", - labelGroupRemove: "Remove the Group with all labels", - labelTextShow: "Show the edit label text section", - labelTextHide: "Hide the edit label text section", - labelText: "Type to change the label. Enter "|" to move to a new line", - labelTextRandom: "Generate random name", - labelEditStyle: "Edit label group style in Style Editor", - labelSizeShow: "Show the font size section", - labelSizeHide: "Hide the font size section", - labelStartOffset: "Set starting offset for the particular label", - labelRelativeSize: "Set relative size for the particular label", - labelAlign: "Turn text path into a straight line", - labelLegend: "Edit free text notes (legend) for this label", - labelRemoveSingle: "Remove the label. Shortcut: Delete", - riverNameShow: "Show river name section", - riverNameHide: "Hide the river name section", - riverName: "Change river proper name", - riverType: "Change river type name", - riverNameCulture: "Generate culture-specific name for the river", - riverNameRandom: "Generate random name for the river", - riverWidthShow: "Show river width and widening change section", - riverWidthHide: "Hide the river width and widening change section", - riverWidthInput: "Change river width", - riverIncrement: "Change river bed increment (widening speed)", - riverEditStyle: "Edit style for all rivers in Style Editor", - riverLength: "River length in selected units", - riverNew: "Create new river clicking on map", - riverLegend: "Edit free text notes (legend) for the river", - riverRemove: "Remove river. Shortcut: Delete", - routeGroupsShow: "Show the group selection", - routeGroupsHide: "Hide the group section", - routeGroup: "Select a group for this route", - routeGroupName: "Provide a name for the new group", - routeGroupAdd: "Create new group for this route", - routeGroupRemove: "Remove all routes of this group", - routeEditStyle: "Edit route group style in Style Editor", - routeLength: "Route length in selected units", - routeSplit: "Click on a control point to split the route", - routeLegend: "Edit free text notes (legend) for the route", - routeNew: "Create new route clicking on map", - routeRemove: "Remove route. Shortcut: Delete", - lakeGroupsShow: "Show the group selection", - lakeGroupsHide: "Hide the group section", - lakeGroup: "Select a group for this lake", - lakeGroupName: "Provide a name for the new group", - lakeGroupAdd: "Create new group for this lake", - lakeGroupRemove: "Remove the group", - lakeEditStyle: "Edit lake group style in Style Editor", - lakeArea: "Lake area in selected units", - lakeLegend: "Edit free text notes (legend) for the lake", - coastlineGroupsShow: "Show the group selection", - coastlineGroupsHide: "Hide the group section", - coastlineGroup: "Select a group for this coastline", - coastlineGroupName: "Provide a name for the new group", - coastlineGroupAdd: "Create new group for this coastline", - coastlineGroupRemove: "Remove the group", - coastlineEditStyle: "Edit coastline group style in Style Editor", - coastlineArea: "Lake area in selected units", - reliefIndividual: "Edit individual selected icon", - reliefBulkAdd: "Place icons in a bulk", - reliefBulkRemove: "Remove icons in a bulk", - reliefEditStyle: "Edit Relief Icons style in Style Editor", - reliefCopy: "Copy selected relief icon", - reliefMoveFront: "Move selected relief icon to front", - reliefMoveBack: "Move selected relief icon back", - reliefRemove: "Remove selected relief icon. Shortcut: Delete", - burgName: "Type to rename the burg", - burgNameReCulture: "Generate culture-specific name for the burg", - burgNameReRandom: "Generate random name for the burg", - burgPopulation: "Set burg population", - burgCapital: "Shows whether the burg is a state capital. Click to toggle", - burgPort: "Shows whether the burg is a port. Click to toggle", - burgCitadel: "Shows whether the burg has a citadel (castle). Click to toggle", - burgWalls: "Shows whether the burg is walled. Click to toggle", - burgPlaza: "Shows whether the burg is a trade center (has big marketplace). Click to toggle", - burgTemple: "Shows whether the burg is a religious center. Click to toggle", - burgShanty: "Shows whether the burg has a shanty town. Click to toggle", - burgGroupShow: "Show group change section", - burgGroupHide: "Hide group change section", - burgSelectGroup: "Select a group for this burg", - burgInputGroup: "Create new Group for the Burg", - burgAddGroup: "Create new group for the burg", - burgRemoveGroup: "Remove selected burg group", - burgStyleShow: "Show style edit section", - burgStyleHide: "Hide style edit section", - burgEditLabelStyle: "Edit label style for burg group in Style Editor", - burgEditIconStyle: "Edit icon style for burg group in Style Editor", - burgEditAnchorStyle: "Edit port icon (anchor) style for burg group in Style Editor", - burgSeeInMFCG: "Open burg in the Medieval Fantasy City Generator by Watabou. Ctrl + click to change the seed", - burgOpenCOA: "Open burg's COA. Ctrl + click to change the seed", - burgRelocate: "Relocate burg", - burglLegend: "Edit free text notes (legend) for this burg", - burgRemove: "Remove non-capital burg. Shortcut: Delete", - markerGroup: "Change marker type", - markerSelectGroup: "Select type for the selected marker", - markerInputGroup: "Create new type for selected marker", - markerAddGroup: "Create new markers type", - markerRemoveGroup: "Remove all markers of that type", - markerIcon: "Change marker icon and edit positioning", - NeedToAdd!: "Change marker icon size", - markerIconSize: "Change marker icon size", - NeedToAdd!: "Change marker horizontal shift", - markerIconShiftX: "Change icon horizontal shift", - NeedToAdd!: "Change marker vertical shift", - markerIconShiftY: "Change vertical shift", - NeedToAdd!: "Paste custom unicode symbol to use as icon", - markerIconCustom: "Paste custom unicode symbol to use as icon", - markerStyle: "Change marker size and colors", - NeedToAdd!: "Change marker base (pin) style", - markerSize: "Change marker size", - markerBaseStroke: "Change pin stroke color", - markerBaseFill: "Change pin fill color", - NeedToAdd!: "Change marker icon style", - markerIconStrokeWidth: "Change icon stroke width", - markerIconStroke: "Change icon stroke color. Ensure icon stroke width is non-zero", - markerIconFill: "Change icon fill color", - markerToggleBubble: "Toggle pin (bubble) display", - markerLegendButton: "Edit place legend (free text notes)", - markerAdd: "Add additional marker of that type", - markerRemove: "Remove the marker. Shortcut: Delete", - undo: "Undo the latest action (Ctrl + Z)", - redo: "Redo the action (Ctrl + Y)", - rescaleShow: "Show rescaler slider", - rescaleCondShow: "Rescaler: change height if condition is fulfilled", - smoothHeights: "Smooth all heights a bit", - disruptHeights: "Disrupt (randomize) heights a bit", - brushClear: "Set height for all cells to 0 (erase the map)", - rescaleHide: "Hide rescaler slider", - rescaler: "Change height for all cells", - rescaleCondHide: "Hide rescaler", - rescaleExecute: "Click to perform an operation", - templateHill: "Hill: small blob", - templatePit: "Pit: round depression", - templateRange: "Range: elongated elevation", - templateTrough: "Trough: elongated depression", - templateStrait: "Strait: centered vertical or horizontal depression", - templateAdd: "Add or subtract value from all heights in range", - templateMultiply: "Multiply all heights in range by factor", - templateSmooth: "Smooth the map replacing cell heights by an average values of its neighbors", - NeedToAdd!: "Click to skip the step", - NeedToAdd!: "Remove the step", - NeedToAdd!: "Drag to reorder", - NeedToAdd!: "Placement range percentage along Y axis (minY-maxY)", - NeedToAdd!: "Placement range percentage along X axis (minX-maxX)", - NeedToAdd!: "Blob maximum height, use hyphen to get a random number in range", - NeedToAdd!: "Blobs to add, use hyphen to get a random number in range", - templateRun: "Apply current template", - templateUndo: "Undo the latest action", - templateRedo: "Redo the action", - templateSave: "Download the template as a text file", - templateLoad: "Open previously downloaded template", - templateCA: "Find or share custom template on Cartography Assets portal", - templateTutorial: "Open Template Editor Tutorial", - convertImageLoad: "Load image to convert", - convertAutoLum: "Auto-assign colors based on liminosity (good to monochrome images)", - convertAutoHue: "Auto-assign colors based on hue (good to colored images)", - convertColorsButton: "Set number of colors", - convertComplete: "Complete the assignment. All unassigned colors will be considered as ocean", - NeedToAdd!: "Click to sort by biome name", - NeedToAdd!: "Click to sort by biome habitability", - NeedToAdd!: "Click to sort by biome cells number", - NeedToAdd!: "Click to sort by biome area", - NeedToAdd!: "Click to sort by biome population", - biomesEditorRefresh: "Refresh the Editor", - biomesEditStyle: "Edit biomes style in Style Editor", - biomesLegend: "Toggle Legend box", - biomesPercentage: "Toggle percentage / absolute values views", - biomesManually: "Manually re-assign biomes to not follow the default moisture/temperature pattern", - biomesManuallyApply: "Apply current assignment", - biomesManuallyCancel: "Cancel assignment", - biomesAdd: "Add a custom biome", - biomesRestore: "Restore the defaults and re-define biomes based on current moisture and temperature", - biomesRegenerateReliefIcons: "Regenerate relief icons based on current biomes and elevation", - biomesExport: "Save biomes-related data as a text file (.csv)", - NeedToAdd!: "Click to sort by state name", - NeedToAdd!: "Click to sort by state form name", - NeedToAdd!: "Click to sort by capital name", - NeedToAdd!: "Click to sort by state dominant culture", - NeedToAdd!: "Click to sort by state burgs count", - NeedToAdd!: "Click to sort by state area", - NeedToAdd!: "Click to sort by state population", - NeedToAdd!: "Click to sort by state type", - NeedToAdd!: "Click to sort by state expansion value", - NeedToAdd!: "Click to sort by state cells count", - statesEditorRefresh: "Refresh the Editor", - statesEditStyle: "Edit states style in Style Editor", - statesLegend: "Toggle Legend box", - statesPercentage: "Toggle percentage / absolute values views", - statesChart: "Show states bubble chart", - statesRegenerate: "Show the regeneration menu and more data", - statesRegenerateBack: "Hide the regeneration menu", - statesRandomize: "Randomize states Expansion value and re-calculate states and provinces", - statesRecalculate: "Recalculate states based on current values of growth-related attributes", - statesManually: "Manually re-assign states", - statesManuallyApply: "Apply assignment", - statesManuallyCancel: "Cancel assignment", - statesAdd: "Add a new state. Hold Shift to add multiple", - statesExport: "Save state-related data as a text file (.csv)", - NeedToAdd!: "State short name", - stateNameEditorShort: "Type to change the short name", - stateNameEditorShortCulture: "Generate culture-specific name", - stateNameEditorShortRandom: "Generate random name", - NeedToAdd!: "State form name", - stateNameEditorCustomForm: "Create custom state form name", - stateNameEditorAddForm: "Click to add custom state form name to the list", - NeedToAdd!: "State full name", - stateNameEditorFull: "Type to change the full name", - stateNameEditorFullRegenerate: "Click to re-generate full name", - NeedToAdd!: "Click to sort by province name", - NeedToAdd!: "Click to sort by province form name", - NeedToAdd!: "Click to sort by province capital", - NeedToAdd!: "Click to sort by province owner", - NeedToAdd!: "Click to sort by province area", - NeedToAdd!: "Click to sort by province population", - provincesEditorRefresh: "Refresh the Editor", - provincesEditStyle: "Edit provinces style in Style Editor", - provincesPercentage: "Toggle percentage / absolute values views", - provincesChart: "Show provinces chart", - provincesToggleLabels: "Toggle province labels", - provincesExport: "Save provinces-related data as a text file (.csv)", - provincesManually: "Manually re-assign provinces", - provincesManuallyApply: "Apply assignment", - provincesManuallyCancel: "Cancel assignment", - provincesAdd: "Add a new province. Hold Shift to add multiple", - provincesRemoveAll: "Remove all provinces. States will remain as they are", - NeedToAdd!: "Click to sort by state name", - NeedToAdd!: "Click to sort by diplomatical relations", - NeedToAdd!: "Ally means states formed a defensive pact and will protect each other in case of third party aggression", - NeedToAdd!: "State is friendly to anouther state when they share some common interests", - NeedToAdd!: "Neutral means states relations are neither positive nor negative", - NeedToAdd!: "Suspicion means shate has a cautious distrust of another state", - NeedToAdd!: "Enemies are states at war with each other", - NeedToAdd!: "Relations are unknown if states do not have enough information about each other", - NeedToAdd!: "Rivalry is a state of competing for dominance in the region", - NeedToAdd!: "Vassal is a state having obligation to its suzerain", - NeedToAdd!: "Suzerain is a state having some control over its vassals", - diplomacyEditorRefresh: "Refresh the Editor", - diplomacyEditStyle: "Edit states (including diplomacy view) style in Style Editor", - diplomacyRegenerate: "Regenerate diplomatical relations", - diplomacyHistory: "Show relations history", - diplomacyMatrix: "Show relations matrix", - diplomacyExport: "Save state relations matrix as a text file (.csv)", - NeedToAdd!: "Province short name", - provinceNameEditorShort: "Type to change the short name", - provinceNameEditorShortCulture: "Generate culture-specific name", - provinceNameEditorShortRandom: "Generate random name", - NeedToAdd!: "Province form name", - provinceNameEditorCustomForm: "Create custom province form name", - provinceNameEditorAddForm: "Click to add custom province form name to the list", - NeedToAdd!: "Province full name", - provinceNameEditorFull: "Type to change the full name", - provinceNameEditorFullRegenerate: "Click to re-generate full name", - NeedToAdd!: "Click to sort by culture name", - NeedToAdd!: "Click to sort by culture cells count", - NeedToAdd!: "Click to sort by expansionism", - NeedToAdd!: "Click to sort by type", - NeedToAdd!: "Click to sort by culture area", - NeedToAdd!: "Click to sort by culture population", - NeedToAdd!: "Click to sort by culture namesbase", - culturesEditorRefresh: "Refresh the Editor", - culturesEditStyle: "Edit cultures style in Style Editor", - culturesLegend: "Toggle Legend box", - culturesPercentage: "Toggle percentage / absolute values display mode", - culturesHeirarchy: "Show cultures hierarchy tree", - culturesManually: "Manually re-assign cultures", - culturesManuallyApply: "Apply assignment", - culturesManuallyCancel: "Cancel assignment", - culturesEditNamesBase: "Edit a database used for names generation", - culturesAdd: "Add a new culture. Hold Shift to add multiple", - culturesExport: "Download cultures-related data", - culturesRecalculate: "Recalculate cultures based on current values of growth-related attributes", - namesbaseSelect: "Select base to edit", - namesbaseTextarea: "Names data: a comma separated list of source names used for names generation", - namesbaseName: "Type to change a base name", - namesbaseMin: "Recommended minimum name length", - namesbaseMax: "Recommended maximum name length", - namesbaseDouble: "Populate with letters that can used twice in a row", - namesbaseMulti: "Multi-word names rate. 1 - allow all multi-word names, 0 - all names should spelled as a single word", - namesbaseExamples: "Examples. Click to re-generate", - namesbaseUpdateExamples: "Re-generate examples based on provided data", - namesbaseAdd: "Add new namesbase", - namesbaseDefault: "Restore default namesbase", - namesbaseDownload: "Download namesbase to PC", - namesbaseUpload: "Upload a namesbase from PC", - namesbaseCA: "Find or share custom namesbase on Cartography Assets portal", - NeedToAdd!: "Zone description", - NeedToAdd!: "Zone cells count", - NeedToAdd!: "Zone area", - NeedToAdd!: "Zone population", - zonesEditorRefresh: "Refresh the Editor", - zonesEditStyle: "Edit zones style in Style Editor", - zonesLegend: "Toggle Legend box", - zonesPercentage: "Toggle percentage / absolute values views", - zonesManually: "Re-assign zones", - zonesManuallyApply: "Apply assignment", - zonesManuallyCancel: "Cancel assignment", - zonesRemove: "Click to toggle the removal mode on brush dragging. Shortcut: ctrl", - zonesAdd: "Add a new zone layer", - zonesExport: "Download zones-related data", - notesSelect: "Select object", - notesName: "Type to change object name", - notesText: "Type object description", - notesFocus: "Focus on selected object", - notesDownload: "Download notes to PC", - notesUpload: "Upload notes from PC", - notesRemove: "Remove this note", - NeedToAdd!: "Click to sort by religion name", - NeedToAdd!: "Click to sort by religion type", - NeedToAdd!: "Click to sort by religion form", - NeedToAdd!: "Click to sort by supreme deity", - NeedToAdd!: "Click to sort by religion area", - NeedToAdd!: "Click to sort by number of believers (religion area population)", - religionsEditorRefresh: "Refresh the Editor", - religionsEditStyle: "Edit religions style in Style Editor", - religionsLegend: "Toggle Legend box", - religionsPercentage: "Toggle percentage / absolute values display mode", - religionsHeirarchy: "Show religions hierarchy tree", - religionsExtinct: "Show/hide extinct religions (religions without cells)", - religionsManually: "Manually re-assign religions", - religionsManuallyApply: "Apply assignment", - religionsManuallyCancel: "Cancel assignment", - religionsAdd: "Add a new religion. Hold Shift to add multiple", - religionsExport: "Download religions-related data", - addLinearRuler: "Click to place a linear measurer (ruler)", - addOpisometer: "Drag to measure a curve length (opisometer)", - addPlanimeter: "Drag to measure a polygon area (planimeter)", - removeRulers: "Remove all rulers from the map. Click on ruler label to remove a ruler separately", - unitsRestore: "Restore default units settings", - NeedToAdd!: "Click to sort by burg name", - NeedToAdd!: "Click to sort by province name", - NeedToAdd!: "Click to sort by state name", - NeedToAdd!: "Click to sort by culture name", - NeedToAdd!: "Click to sort by burg population", - NeedToAdd!: "Click to sort by burg type", - burgsOverviewRefresh: "Refresh the Editor", - burgsChart: "Show burgs bubble chart", - regenerateBurgNames: "Regenerate burg names based on assigned culture", - addNewBurg: "Add a new burg. Hold Shift to add multiple", - burgsExport: "Save burgs-related data as a text file (.csv)", - burgNamesImport: "Rename burgs in bulk", - burgsRemoveAll: "Remove all burgs except for capitals. To remove a capital remove its state first", - NeedToAdd!: "Click to sort by river name", - NeedToAdd!: "Click to sort by river type name", - NeedToAdd!: "Click to sort by river length", - NeedToAdd!: "Click to sort by river basin", - riversOverviewRefresh: "Refresh the Editor", - addNewRiver: "Add a new river. Hold Shift to add multiple", - riversBasinHighlight: "Toggle basin highlight mode", - riversExport: "Save rivers-related data as a text file (.csv)", - riversRemoveAll: "Remove all rivers", - NeedToAdd!: "State name. Click to sort", - militaryTotal: "Total military personnel (considering crew). Click to sort", - NeedToAdd!: "State population. Click to sort", - NeedToAdd!: "Military personnel rate (% of state population). Depends on war alert. Click to sort", - NeedToAdd!: "War Alert. Modifier to military forces number, depends of political situation. Click to sort", - militaryOverviewRefresh: "Refresh the Editor", - militaryOptionsButton: "Military options. Click to customize units", - militaryOverviewRecalculate: "Recalculate military forces based on current options", - militaryExport: "Save military-related data as a text file (.csv)", - militaryVisualize: "Show armies on the map", - NeedToAdd!: "Unit name. If name is changed for existing unit, old unit will be replaced", - NeedToAdd!: "Conscription percentage for rural population", - NeedToAdd!: "Conscription percentage for urban population", - NeedToAdd!: "Average number of people in crew", - NeedToAdd!: "Unit type to apply special rules on forces recalculation", - styleSaverName: "Enter style preset name", - styleSaverTip: "Shows whether there is already a preset with this name", - styleSaverJSON: "Style JSON is getting formed based the current settings, but can be entered manually", - styleSaverSave: "Save current JSON as a new style preset", - styleSaverDownload: "Download the style as a .json file (can be opened in any text editor)", - styleSaverLoad: "Open previously downloaded style file", - styleSaverCA: "Find or share custom style preset on Cartography Assets portal", - NeedToAdd!: "Equirectangular projection is used: distortion is maximum on poles. Use map with aspect ratio 2:1 for best result", - options3dUpdate: "Update the scene", - NeedToAdd!: "Configure world and map size and climate settings", - options3dSave: "Save screenshot of the 3d scene", - NeedToAdd!: "Download the map as fully-functional .map file to your machine", - NeedToAdd!: "Download the map as vector image (open in browser or Inkscape)", - NeedToAdd!: "Download visible part of the map as .png (lossless compressed)", - NeedToAdd!: "Download visible part of the map as .jpeg (lossy compressed) image", - NeedToAdd!: "Download map data in GeoJSON format", - NeedToAdd!: "Save fully-functional map to browser storage. Shortcut: F6", - NeedToAdd!: "Load .map file from local disk", - NeedToAdd!: "Load .map file from URL (server should allow CORS)", - NeedToAdd!: "Load map from browser storage (if saved before)" -}; diff --git a/lang/lang-ru.js b/lang/lang-ru.js deleted file mode 100644 index d6b32483..00000000 --- a/lang/lang-ru.js +++ /dev/null @@ -1,23 +0,0 @@ -// Файл перевода FMG на русский язык. Источник: lang-en.js. Версия 0.01a -window.translation = { - titleFull: "Генератор фэнтези карт", - titleName: " ", - title: "Генератор фэнтези карт", - version: "в. ", - loading: "ЗАГРУЗКА", - newMap: "Новая карта!", - layers: "Слои", - style: "Стиль", - options: "Опции", - tools: "Редактор", - about: "Справка", - tipOptionsTrigger: "Нажмите для открытия панели меню. Клавиша Tab", - tipRegenerate: "Нажмите, чтобы сгенерировать новую карту. Клавиша F2", - optionsDragTrigger: "Зажмите и тяните, чтобы переместить меню", - optionsHide: "Нажмите, чтобы скрыть меню. Клавиша: Tab (скрыть меню) Esc (скрыть меню и закрыть все окна)", - layersTab: "Нажмите, чтобы изменить слои карты, их видимость и порядок", - styleTab: "Нажмите, чтобы окрыть вкладку для работы над стилем", - optionsTab: "Нажмите, чтобы изменить настройки генерации карты и пользовательского интерейса", - toolsTab: "Нажмите, чтобы открыть вкладку инструментов", - aboutTab: "Нажмите, чтобы посмотреть информацию о Генераторе" -}; \ No newline at end of file diff --git a/libs/translate.js b/libs/translate.js deleted file mode 100644 index ca8878e4..00000000 --- a/libs/translate.js +++ /dev/null @@ -1,55 +0,0 @@ -// Translation module -"use strict"; - -void function() { - window.lang = "en"; // default language - - if (localStorage.getItem("lang")) window.lang = localStorage.getItem("lang"); - else { - const isSupported = ln => ["ru"].includes(ln); // list of supported languages with at least 50% support - const browserLang = navigator.language.split("-")[0]; - if (isSupported(browserLang)) window.lang = browserLang; - } - - selectLanguage.value = window.lang; - if (window.lang === "en") return; // no need to translate - initiateTranslation(); - - async function initiateTranslation() { - const loaded = await loadTranslation(); - if (!loaded) { - tip(`Cannot load ${window.lang} translation, check files in lang folder`, false, "error", 4000); - window.lang == "en"; // set to default value - return false; - } - - function loadTranslation() { - return new Promise(resolve => { - const script = document.createElement('script'); - script.src = `lang/lang-${window.lang}.js` - document.head.append(script); - script.onload = () => resolve(true); - script.onerror = () => resolve(false); - }); - } - - if (translation["titleFull"]) document.title = translation["titleFull"]; - - void function translateDOM() { - const tTags = Array.from(document.getElementsByTagName("t")); - tTags.forEach(t => { - const id = t.dataset.t; - const text = translation[id]; - if (!text) return; - t.innerHTML = text; - }); - }() - - } - -}() - -function translate(id, originalEn) { - const text = translation[id]; - return text ? text : originalEn; -} \ No newline at end of file diff --git a/modules/burgs-and-states.js b/modules/burgs-and-states.js index d3d75e97..56830bd6 100644 --- a/modules/burgs-and-states.js +++ b/modules/burgs-and-states.js @@ -924,11 +924,12 @@ const max = percentage == 100 ? 1000 : gauss(20, 5, 5, 100) * percentage ** .5; // max growth const forms = { - Monarchy:{County:11, Earldom:3, Shire:1, Landgrave:1, Margrave:1, Barony:1}, - Republic:{Province:6, Department:2, Governorate:2, District:1, Canton:1, Prefecture:1}, - Theocracy:{Parish:3, Deanery:1}, - Union:{Province:1, State:1, Canton:1, Republic:1, County:1, Council:1}, - Wild:{Territory:10, Land:5, Region:2, Tribe:1, Clan:1, Dependency:1, Area: 1} + Monarchy: {County:11, Earldom:3, Shire:1, Landgrave:1, Margrave:1, Barony:1}, + Republic: {Province:6, Department:2, Governorate:2, District:1, Canton:1, Prefecture:1}, + Theocracy: {Parish:3, Deanery:1}, + Union: {Province:1, State:1, Canton:1, Republic:1, County:1, Council:1}, + Anarchy: {Council:1, Commune:1, Community:1, Tribe:1}, + Wild: {Territory:10, Land:5, Region:2, Tribe:1, Clan:1, Dependency:1, Area: 1} } // generate provinces for a selected burgs @@ -952,7 +953,7 @@ const nameByBurg = P(.5); const name = nameByBurg ? stateBurgs[i].name : Names.getState(Names.getCultureShort(c), c); const formName = rw(form); - form[formName] += 5; + form[formName] += 10; const fullName = name + " " + formName; const color = getMixedColor(s.color); const kinship = nameByBurg ? .8 : .4; diff --git a/modules/coa-generator.js b/modules/coa-generator.js index 9c13378c..df1b3567 100644 --- a/modules/coa-generator.js +++ b/modules/coa-generator.js @@ -488,7 +488,7 @@ const getShield = function(culture, state) { const emblemShape = document.getElementById("emblemShape"); - const shapeGroup = emblemShape.selectedOptions[0].parentNode.label; + const shapeGroup = emblemShape.selectedOptions[0]?.parentNode.label || "Diversiform"; if (shapeGroup !== "Diversiform") return emblemShape.value; if (emblemShape.value === "state" && state && pack.states[state].coa) return pack.states[state].coa.shield; diff --git a/modules/save-and-load.js b/modules/save-and-load.js index 139d1a6c..9a620604 100644 --- a/modules/save-and-load.js +++ b/modules/save-and-load.js @@ -115,20 +115,20 @@ async function getMapURL(type, subtype) { const symbols = cloneEl.querySelectorAll("symbol"); for (let i=0; i < symbols.length; i++) { const id = symbols[i].id; - if (cloneEl.querySelector("use[href='#"+id+"']")) continue; + if (cloneEl.querySelector("use[*|href='#"+id+"']")) continue; symbols[i].remove(); } // add displayed emblems if (layerIsOn("toggleEmblems") && emblems.selectAll("use").size()) { - Array.from(cloneEl.getElementById("emblems").querySelectorAll("use")).forEach(el => { - const href = el.getAttribute("href"); + cloneEl.getElementById("emblems")?.querySelectorAll("use").forEach(el => { + const href = el.getAttribute("href") || el.getAttribute("xlink:href"); if (!href) return; const emblem = document.getElementById(href.slice(1)); if (emblem) cloneDefs.append(emblem.cloneNode(true)); }); } else { - cloneDefs.querySelector("#defs-emblems").remove(); + cloneDefs.querySelector("#defs-emblems")?.remove(); } // add ocean pattern @@ -141,9 +141,10 @@ async function getMapURL(type, subtype) { // add relief icons if (cloneEl.getElementById("terrain")) { const uniqueElements = new Set(); - const terrainElements = cloneEl.getElementById("terrain").childNodes; - for (let i=0; i < terrainElements.length; i++) { - uniqueElements.add(terrainElements[i].getAttribute("href")); + const terrainNodes = cloneEl.getElementById("terrain").childNodes; + for (let i=0; i < terrainNodes.length; i++) { + const href = terrainNodes[i].getAttribute("href") || terrainNodes[i].getAttribute("xlink:href"); + uniqueElements.add(href); } const defsRelief = svgDefs.getElementById("defs-relief"); diff --git a/modules/ui/layers.js b/modules/ui/layers.js index 32307eab..85d057ef 100644 --- a/modules/ui/layers.js +++ b/modules/ui/layers.js @@ -414,9 +414,16 @@ function togglePopulation(event) { } else { if (event && isCtrlClick(event)) {editStyle("population"); return;} turnButtonOff("togglePopulation"); - const hide = d3.transition().duration(1000).ease(d3.easeSinIn); - population.select("#rural").selectAll("line").transition(hide).attr("y2", d => d[1]).remove(); - population.select("#urban").selectAll("line").transition(hide).delay(1000).attr("y2", d => d[1]).remove(); + const isD3data = population.select("line").datum(); + if (!isD3data) { + // just remove + population.selectAll("line").remove(); + } else { + // remove with animation + const hide = d3.transition().duration(1000).ease(d3.easeSinIn); + population.select("#rural").selectAll("line").transition(hide).attr("y2", d => d[1]).remove(); + population.select("#urban").selectAll("line").transition(hide).delay(1000).attr("y2", d => d[1]).remove(); + } } }