From a5b84b9d0f913c3df7ce00ae126fe6b2ebe00496 Mon Sep 17 00:00:00 2001 From: acer Date: Mon, 12 Oct 2020 01:17:56 -0400 Subject: [PATCH 1/9] Rewrite menu from scratch to support mobile screen sizes and keyboard controls --- index.html | 6 +- src/css/menu.css | 347 +++++++-------- src/js/config-menu.js | 832 +++++++++++++++++++++++++++--------- src/js/core/base-gui.js | 43 +- src/js/core/gui/gui-menu.js | 374 +++++++++++++++- 5 files changed, 1161 insertions(+), 441 deletions(-) diff --git a/index.html b/index.html index 8ea2757..f37db63 100644 --- a/index.html +++ b/index.html @@ -84,9 +84,11 @@
- +
- + diff --git a/src/css/menu.css b/src/css/menu.css index 0cb9bad..64db173 100644 --- a/src/css/menu.css +++ b/src/css/menu.css @@ -1,222 +1,193 @@ -.mobile_menu{ - display:none; - position: absolute; - width:100%; - top: 0; +:root { + --menu-dropdown-background-color: #ffffff; + --menu-dropdown-border-color: #5680C1; + --menu-dropdown-text-color: #2d2b2b; + --menu-dropdown-text-muted-color: #aaaaaa; + --menu-dropdown-hover-background-color: #E4EBF8; + --menu-dropdown-hover-text-color: #2d2d2d; + --menu-dropdown-divider-color: #e5e5e5; } -.left_mobile_menu, .right_mobile_menu{ - position:absolute; - width:50px; - height:50px; - background: url("images/sprites.png") no-repeat 11px -86px; - filter: invert(1); - display:block; - top:0; - z-index:200; - border:0; - outline:0; - cursor: pointer; -} -.left_mobile_menu{left:0;} -.right_mobile_menu{right:0;} -.ddsmoothmenu{ - position:fixed; - top:0; - left:0; - width:100%; - font:12px Arial,sans-serif; - background: #2D2D2D; - background: var(--background-color-menu); - width: 100%; - padding-left:10px; - z-index:100; -} -.ddsmoothmenu ul{ - z-index:100; - margin: 0; +.sr_only { + position: absolute; + width: 1px; + height: 1px; padding: 0; - list-style-type: none; - height:30px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; } -.ddsmoothmenu ul li{ - position: relative; - display: inline-block; - float: left; - color: #2d2b2b; - height:100%; + +.main_menu { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 100; } -.ddsmoothmenu ul ul li a{ - width:100%; +.main_menu > ul.menu_bar { + display: flex; + flex-direction: row; + list-style: none; + padding: 0; + margin: 0; + height: 30px; + padding-left: 10px; + background: var(--background-color-menu); } -.ddsmoothmenu .rightarrowclass{ - display:none !important; +.main_menu > ul.menu_bar > li { + padding: 0; + overflow: hidden; + height: 100%; } -.ddsmoothmenu ul li a{ - display: inline-block; - color: #cccccc; +.main_menu > ul.menu_bar > li > a { + display: flex; + align-items: center; + font-size: 12px; color: var(--text-color-menu); text-decoration: none; - text-align:center; - padding: 7px 10px 8px 10px !important; + padding: 0 10px; + height: 100%; } -.ddsmoothmenu ul ul li a{ - padding-right: 25px !important; +.main_menu > ul.menu_bar > li > a::-moz-focus-inner { + border: 0; } -.ddsmoothmenu ul li a.selected{ - background-color: #FFFFFF !important; - color: #2d2b2b; +.main_menu > ul.menu_bar > li > a:focus { + outline: none; + box-shadow: 0 -3px var(--menu-dropdown-background-color) inset; } -.ddsmoothmenu ul li ul li a.selected{ - background-color:#E4EBF8 !important; +.main_menu > ul.menu_bar > li > a:hover { + background: var(--menu-dropdown-hover-background-color); + box-shadow: none; + color: var(--menu-dropdown-hover-text-color); } -.ddsmoothmenu ul li a:hover{ - background-color: #E4EBF8; - color: #2D2D2D; +.main_menu > ul.menu_bar > li > a[aria-expanded="true"] { + background: var(--menu-dropdown-background-color); + box-shadow: none; + color: var(--menu-dropdown-text-color); } -.ddsmoothmenu .hide_ul{ - position: absolute; - left: -3000px; - display: none; - visibility: hidden; - border:1px solid #5680C1; - border-top:0px; +.main_menu > ul.menu_bar > li > a > * { + pointer-events: none; } -.ddsmoothmenu ul li ul{ - position: absolute; - left: -3000px; - display: none; - visibility: hidden; - border:1px solid #5680C1; - border-top:0px; - margin-left: -1px; - height:auto; - min-width:140px; - width:auto !important; - top:30px !important; + +.main_menu > ul.menu_dropdown { + display: flex; + flex-direction: column; + position: fixed; + top: 0; + left: 0; + list-style: none; + padding: 0; + margin: 0; overflow-x: hidden; overflow-y: auto; - max-height: calc(100vh - 60px); + min-width: 150px; + box-shadow: 0 0 0 1px var(--menu-dropdown-border-color); + background: var(--menu-dropdown-background-color); } -.ddsmoothmenu ul li ul.expanded{ - overflow: visible; - max-height: none; +.main_menu > ul.menu_dropdown > li { + padding: 0; } -.ddsmoothmenu ul li ul li{ - display: list-item; - background: #ffffff; - float: none; - height:auto; - width:100%; -} -.ddsmoothmenu ul li ul li a{ - text-align:left; -} -.ddsmoothmenu ul li ul li ul{ - top: 0; - border-top:1px solid #5680C1; -} -.ddsmoothmenu ul li ul li a{ - padding-left: 5px; - padding-right:5px; +.main_menu > ul.menu_dropdown > li > hr { + background: none; + border: 1px solid var(--menu-dropdown-divider-color); + border-bottom: none; margin: 0; - color: #2D2D2D; - white-space: nowrap; } -.ddsmoothmenu ul li ul li ul{ - top:0 !important; +.main_menu > ul.menu_dropdown > li > a { + display: flex; + flex-direction: row; + align-items: center; + position: relative; + height: 30px; + padding: 0 10px; + font-size: 12px; + line-height: 30px; + text-decoration: none; + color: var(--menu-dropdown-text-color); } -.ddsmoothmenu .downarrowclass{ +.main_menu > ul.menu_dropdown > li > ::-moz-focus-inner { + border: 0; +} +.main_menu > ul.menu_dropdown > li > a:focus { + outline: none; + box-shadow: 0 0 0 2px var(--menu-dropdown-hover-background-color) inset; +} +.main_menu > ul.menu_dropdown > li > a:hover { + background: var(--menu-dropdown-hover-background-color); + box-shadow: none; + color: var(--menu-dropdown-hover-text-color); +} +.main_menu > ul.menu_dropdown > li > a[aria-expanded="true"] { + background: var(--menu-dropdown-hover-background-color); + box-shadow: none; + color: var(--menu-dropdown-hover-text-color); +} +.main_menu > ul.menu_dropdown > li > a[aria-haspopup="true"]::after { position: absolute; - top: 12px; - right: 7px; -} -.ddsmoothmenu .ddshadow{ - position: absolute; - left: 0; - top: 0; - width: 0; - height: 0; - background-color: #ccc; -} -.ddsmoothmenu .mid-line{ - background-color:#ff0000; - border-top:1px solid #e5e5e5; - font-size:0; - padding:0 8px 0 8px; -} -.ddsmoothmenu ul li ul li.more > a{ - position:relative; -} -.ddsmoothmenu ul li ul li.more > a:before{ - position: absolute; - content:">"; + content: ">"; right: 9px; width: 5px; - height: 14px; transform: scaleY(2); color: #808080; } -.ddsmoothmenu ul li ul li ul{ - left: calc(100% + 1px) !important; +.main_menu > ul.menu_dropdown > li > a[aria-haspopup="true"] > .name { + margin-right: 8px; } -.ddsmoothmenu .dots::after{ - content: " ..."; +.main_menu > ul.menu_dropdown > li > a[target="_blank"]::after { + content: ""; + width: 10px; + height: 10px; + margin-left: 5px; + background: url(images/sprites.png) no-repeat -700px 0; + opacity: 0.3; } -.ddsmoothmenu a[data-key]:after{ - position: absolute; - content: attr(data-key) " "; - color: #aaa; - font-size: 12px; - margin-left: 8px; - right:10px; +.main_menu > ul.menu_dropdown > li > a > * { + pointer-events: none; +} +.main_menu > ul.menu_dropdown > li > a > .name { + flex-grow: 1; + overflow: hidden; + white-space: nowrap; +} +.main_menu > ul.menu_dropdown > li > a > .shortcut { + flex-shrink: 1; + color: var(--menu-dropdown-text-muted-color); } -@media screen and (max-width:700px){ - .mobile_menu{ - display:block; - } - .left_mobile_menu{ - display:none; - } - .ddsmoothmenu{ - height:50px; - } - .ddsmoothmenu ul{ - width: calc(100% - 50px); - height:50px; - } - .ddsmoothmenu > ul > li > a{ - height:50px; - padding-top: 15px !important; - } - .ddsmoothmenu ul li ul{ - top:50px !important; - } - .ddsmoothmenu ul li ul li{ - height:auto; - } - .ddsmoothmenu ul li ul li a{ - height:30px; - } +.mobile_menu { + display: none; + position: absolute; + width: 100%; + top: 0; } -@media screen and (max-width:550px){ - .ddsmoothmenu{ - padding-left:0; - } - .ddsmoothmenu ul{ - width: calc(100% - 50px); - } - .ddsmoothmenu > ul > li{ - width: calc(100% / 7); - } - .ddsmoothmenu > ul > li > a{ - width:100%; - padding-left: 3px !important; - padding-right: 3px !important; - overflow: hidden; - } - .left_mobile_menu{ - display:block; - } +.left_mobile_menu, .right_mobile_menu { + position: absolute; + width: 50px; + height: 50px; + background: url("images/sprites.png") no-repeat 11px -86px; + filter: invert(1); + display: block; + top: 0; + z-index: 200; + border: 0; + outline: 0; + cursor: pointer; } +.left_mobile_menu { left:0; } +.right_mobile_menu { right:0; } + +@media screen and (max-width:700px) { + .mobile_menu { + display: block; + } + .left_mobile_menu { + display: none; + } + .main_menu > ul.menu_bar { + height: 50px; + padding-left: 0; + padding-right: 50px; + } +} \ No newline at end of file diff --git a/src/js/config-menu.js b/src/js/config-menu.js index 9203c22..48ac212 100644 --- a/src/js/config-menu.js +++ b/src/js/config-menu.js @@ -1,204 +1,630 @@ -var menu_template = ` - -`; +const menuDefinition = [ + { + name: 'File', + children: [ + { + name: 'New', + target: 'file/new.new' + }, + { + divider: true + }, + { + name: 'Open', + children: [ + { + name: 'Open File', + shortcut: 'Drag&Drop', + target: 'file/open.open_file' + }, + { + name: 'Open Directory', + target: 'file/open.open_dir' + }, + { + name: 'Open from Webcam', + target: 'file/open.open_webcam' + }, + { + name: 'Open URL', + target: 'file/open.open_url' + }, + { + name: 'Open Data URL', + target: 'file/open.open_data_url' + }, + { + name: 'Open Test Template', + target: 'file/open.open_template_test' + } + ] + }, + { + name: 'Search Images', + ellipsis: true, + target: 'file/search.search' + }, + { + divider: true + }, + { + name: 'Save As', + ellipsis: true, + shortcut: 'S', + target: 'file/save.save' + }, + { + name: 'Save As Data URL', + ellipsis: true, + target: 'file/save.save_data_url' + }, + { + name: 'Print', + ellipsis: true, + shortcut: 'Ctrl-P', + target: 'file/print.print' + }, + { + divider: true + }, + { + name: 'Quick Save', + shortcut: 'F9', + target: 'file/quicksave.quicksave' + }, + { + name: 'Quick Load', + shortcut: 'F10', + target: 'file/quickload.quickload' + } + ] + }, + { + name: 'Edit', + children: [ + { + name: 'Undo', + target: 'edit/undo.undo' + }, + { + divider: true + }, + { + name: 'Delete Selection', + shortcut: 'Del', + target: 'edit/selection.delete' + }, + { + name: 'Copy Selection', + target: 'layer/new.new_selection' + }, + { + name: 'Paste', + shortcut: 'Ctrl+V', + target: 'edit/paste.paste' + }, + { + divider: true + }, + { + name: 'Select All', + target: 'edit/selection.select_all' + } + ] + }, + { + name: 'Image', + children: [ + { + name: 'Information', + ellipsis: true, + target: 'image/information.information' + }, + { + name: 'Size', + ellipsis: true, + target: 'image/size.size' + }, + { + name: 'Trim', + ellipsis: true, + shortcut: 'T', + target: 'image/trim.trim' + }, + { + name: 'Zoom', + children: [ + { + name: 'Zoom In', + target: 'image/zoom.in' + }, + { + name: 'Zoom Out', + target: 'image/zoom.out' + }, + { + divider: true + }, + { + name: 'Original Size', + target: 'image/zoom.original' + }, + { + name: 'Fit Window', + target: 'image/zoom.auto' + } + ] + }, + { + divider: true + }, + { + name: 'Resize', + ellipsis: true, + target: 'image/resize.resize' + }, + { + name: 'Rotate', + ellipsis: true, + target: 'image/rotate.rotate' + }, + { + name: 'Flip', + children: [ + { + name: 'Vertical', + target: 'image/flip.vertical' + }, + { + name: 'Horizontal', + target: 'image/flip.horizontal' + } + ] + }, + { + name: 'Translate', + ellipsis: true, + target: 'image/translate.translate' + }, + { + name: 'Opacity', + ellipsis: true, + target: 'image/opacity.opacity' + }, + { + divider: true + }, + { + name: 'Color Correction', + ellipsis: true, + target: 'image/color_corrections.color_corrections' + }, + { + name: 'Auto Adjust Colors', + target: 'image/auto_adjust.auto_adjust' + }, + { + name: 'Decrease Color Depth', + target: 'image/decrease_colors.decrease_colors' + }, + { + name: 'Color Palette', + ellipsis: true, + target: 'image/palette.palette' + }, + { + name: 'Grid', + ellipsis: true, + shortcut: 'G', + target: 'image/grid.grid' + }, + { + divider: true + }, + { + name: 'Histogram', + ellipsis: true, + shortcut: 'H', + target: 'image/histogram.histogram' + } + ] + }, + { + name: 'Layers', + children: [ + { + name: 'New', + shortcut: 'N', + target: 'layer/new.new' + }, + { + name: 'New from Selection', + target: 'layer/new.new_selection' + }, + { + divider: true + }, + { + name: 'Duplicate', + target: 'layer/duplicate.duplicate' + }, + { + name: 'Show / Hide', + target: 'layer/visibility.toggle' + }, + { + name: 'Delete', + target: 'layer/delete.delete' + }, + { + name: 'Convert to Raster', + target: 'layer/raster.raster' + }, + { + divider: true + }, + { + name: 'Move', + children: [ + { + name: 'Up', + target: 'layer/move.up' + }, + { + name: 'Down', + target: 'layer/move.down' + } + ] + }, + { + name: 'Composition', + ellipsis: true, + target: 'layer/composition.composition' + }, + { + name: 'Rename', + ellipsis: true, + target: 'layer/rename.rename' + }, + { + name: 'Clear', + target: 'layer/clear.clear' + }, + { + divider: true + }, + { + name: 'Differences Down', + target: 'layer/differences.differences' + }, + { + name: 'Merge Down', + target: 'layer/merge.merge' + }, + { + name: 'Flatten Image', + target: 'layer/flatten.flatten' + } + ] + }, + { + name: 'Effects', + children: [ + { + name: 'CSS Filters', + children: [ + { + name: 'Gaussian Blur', + ellipsis: true, + target: 'effects/blur.blur' + }, + { + name: 'Brightness', + ellipsis: true, + target: 'effects/brightness.brightness' + }, + { + name: 'Contrast', + ellipsis: true, + target: 'effects/contrast.contrast' + }, + { + name: 'Grayscale', + ellipsis: true, + target: 'effects/grayscale.grayscale' + }, + { + name: 'Hue Rotate', + ellipsis: true, + target: 'effects/hue_rotate.hue_rotate' + }, + { + name: 'Negative', + ellipsis: true, + target: 'effects/negative.negative' + }, + { + name: 'Saturate', + ellipsis: true, + target: 'effects/saturate.saturate' + }, + { + name: 'Sepia', + ellipsis: true, + target: 'effects/sepia.sepia' + }, + { + name: 'Shadow', + ellipsis: true, + target: 'effects/shadow.shadow' + }, + ] + }, + { + name: 'Black and White', + ellipsis: true, + target: 'effects/black_and_white.black_and_white' + }, + { + name: 'Blueprint', + ellipsis: true, + target: 'effects/blueprint.blueprint' + }, + { + name: 'Box Blur', + ellipsis: true, + target: 'effects/box_blur.box_blur' + }, + { + name: 'Denoise', + ellipsis: true, + target: 'effects/denoise.denoise' + }, + { + name: 'Dither', + ellipsis: true, + target: 'effects/dither.dither' + }, + { + name: 'Dot Screen', + ellipsis: true, + target: 'effects/dot_screen.dot_screen' + }, + { + name: 'Edge', + ellipsis: true, + target: 'effects/edge.edge' + }, + { + name: 'Emboss', + ellipsis: true, + target: 'effects/emboss.emboss' + }, + { + name: 'Enrich', + ellipsis: true, + target: 'effects/enrich.enrich' + }, + { + name: 'Grains', + ellipsis: true, + target: 'effects/grains.grains' + }, + { + name: 'Heatmap', + ellipsis: true, + target: 'effects/heatmap.heatmap' + }, + { + name: 'Mosaic', + ellipsis: true, + target: 'effects/mosaic.mosaic' + }, + { + name: 'Night Vision', + ellipsis: true, + target: 'effects/night_vision.night_vision' + }, + { + name: 'Oil', + ellipsis: true, + target: 'effects/oil.oil' + }, + { + name: 'Pencil', + ellipsis: true, + target: 'effects/pencil.pencil' + }, + { + name: 'Sharpen', + ellipsis: true, + target: 'effects/sharpen.sharpen' + }, + { + name: 'Solarize', + ellipsis: true, + target: 'effects/solarize.solarize' + }, + { + name: 'Tilt Shift', + ellipsis: true, + target: 'effects/tilt_shift.tilt_shift' + }, + { + name: 'Vignette', + ellipsis: true, + target: 'effects/vignette.vignette' + }, + { + name: 'Vibrance', + ellipsis: true, + target: 'effects/vibrance.vibrance' + }, + { + name: 'Vintage', + ellipsis: true, + target: 'effects/vintage.vintage' + }, + { + name: 'Zoom Blur', + ellipsis: true, + target: 'effects/zoom_blur.zoom_blur' + } + ] + }, + { + name: 'Tools', + children: [ + { + name: 'Borders', + ellipsis: true, + target: 'tools/borders.borders' + }, + { + name: 'Sprites', + target: 'tools/sprites.sprites' + }, + { + name: 'Key-Points', + target: 'tools/keypoints.keypoints' + }, + { + name: 'Content Fill', + ellipsis: true, + target: 'tools/content_fill.content_fill' + }, + { + divider: true + }, + { + name: 'Color to Alpha', + ellipsis: true, + target: 'tools/color_to_alpha.color_to_alpha' + }, + { + name: 'Color Zoom', + ellipsis: true, + target: 'tools/color_zoom.color_zoom' + }, + { + name: 'Replace Color', + ellipsis: true, + target: 'tools/replace_color.replace_color' + }, + { + name: 'Restore Alpha', + ellipsis: true, + target: 'tools/restore_alpha.restore_alpha' + }, + { + name: 'External', + children: [ + { + name: 'TINYPNG - Compress PNG and JPEG', + href: 'https://tinypng.com' + }, + { + name: 'REMOVE.BG - Remove Image Background', + href: 'https://www.remove.bg' + }, + { + name: 'PNGTOSVG - Convert Image to SVG', + href: 'https://www.pngtosvg.com' + }, + { + name: 'SQUOOSH - Compress and Compare Images', + href: 'https://squoosh.app' + } + ] + }, + { + divider: true + }, + { + name: 'Settings', + ellipsis: true, + target: 'tools/settings.settings' + } + ] + }, + { + name: 'Help', + children: [ + { + name: 'Keyboard Shortcuts', + ellipsis: true, + target: 'help/shortcuts.shortcuts' + }, + { + name: 'Report Issues', + href: 'https://github.com/viliusle/miniPaint/issues' + }, + { + name: 'Language', + children: [ + { + name: 'English', + target: 'help/translate.translate.en' + }, + { + divider: true + }, + { + name: '简体中文', + target: 'help/translate.translate.zh' + }, + { + name: 'Español', + target: 'help/translate.translate.es' + }, + { + name: 'Français', + target: 'help/translate.translate.fr' + }, + { + name: 'Deutsch', + target: 'help/translate.translate.de' + }, + { + name: 'Italiano', + target: 'help/translate.translate.it' + }, + { + name: '日本語', + target: 'help/translate.translate.ja' + }, + { + name: '한국어', + target: 'help/translate.translate.ko' + }, + { + name: 'Lietuvių', + target: 'help/translate.translate.lt' + }, + { + name: 'Português', + target: 'help/translate.translate.pt' + }, + { + name: 'русский язык', + target: 'help/translate.translate.ru' + }, + { + name: 'Türkçe', + target: 'help/translate.translate.tr' + } + ] + }, + { + divider: true + }, + { + name: 'About', + target: 'help/about.about' + } + ] + } +]; -export default menu_template; \ No newline at end of file + +export default menuDefinition; \ No newline at end of file diff --git a/src/js/core/base-gui.js b/src/js/core/base-gui.js index f507d65..29b2a0f 100644 --- a/src/js/core/base-gui.js +++ b/src/js/core/base-gui.js @@ -124,34 +124,23 @@ class Base_gui_class { var _this = this; //menu events - var targets = document.querySelectorAll('#main_menu a'); - for (var i = 0; i < targets.length; i++) { - if (targets[i].dataset.target == undefined) - continue; - targets[i].addEventListener('click', function (event) { - var parts = this.dataset.target.split('.'); - var module = parts[0]; - var function_name = parts[1]; - var param = parts[2]; + this.GUI_menu.on('select_target', (target) => { + var parts = target.split('.'); + var module = parts[0]; + var function_name = parts[1]; + var param = parts[2]; - //close menu - var menu = document.querySelector('#main_menu .selected'); - if (menu != undefined) { - menu.click(); - } - - //call module - if (_this.modules[module] == undefined) { - alertify.error('Modules class not found: ' + module); - return; - } - if (_this.modules[module][function_name] == undefined) { - alertify.error('Module function not found. ' + module + '.' + function_name); - return; - } - _this.modules[module][function_name](param); - }); - } + //call module + if (this.modules[module] == undefined) { + alertify.error('Modules class not found: ' + module); + return; + } + if (this.modules[module][function_name] == undefined) { + alertify.error('Module function not found. ' + module + '.' + function_name); + return; + } + this.modules[module][function_name](param); + }); //registerToggleAbility var targets = document.querySelectorAll('.toggle'); diff --git a/src/js/core/gui/gui-menu.js b/src/js/core/gui/gui-menu.js index 3a353fa..beca954 100644 --- a/src/js/core/gui/gui-menu.js +++ b/src/js/core/gui/gui-menu.js @@ -4,37 +4,369 @@ */ import config from './../../config.js'; -import menu_template from './../../config-menu.js'; -import ddsmoothmenu from './../../libs/menu.js'; +import menuDefinition from './../../config-menu.js'; /** * class responsible for rendering main menu */ class GUI_menu_class { + constructor() { + this.eventSubscriptions = {}; + this.dropdownMaxHeightMargin = 15; + this.menuContainer = null; + this.menuBarNode = null; + this.lastFocusedMenuBarLink = 0; + this.dropdownStack = []; + } + render_main() { - document.getElementById('main_menu').innerHTML = menu_template; - ddsmoothmenu.init({ - mainmenuid: "main_menu", - method: 'toggle', //'hover' (default) or 'toggle' - contentsource: "markup", + this.menuContainer = document.getElementById('main_menu'); + + let menuTemplate = ''; + + this.menuContainer.innerHTML = menuTemplate; + this.menuBarNode = this.menuContainer.querySelector('[role="menubar"]'); + + this.menuContainer.addEventListener('click', (event) => { return this.on_click_menu(event); }, true); + this.menuContainer.addEventListener('keydown', (event) => { return this.on_key_down_menu(event); }, true); + this.menuBarNode.addEventListener('focus', (event) => { return this.on_focus_menu_bar(event); }); + this.menuBarNode.addEventListener('blur', (event) => { return this.on_blur_menu_bar(event); }); + this.menuBarNode.querySelectorAll('a').forEach((link) => { + link.addEventListener('focus', (event) => { return this.on_focus_menu_bar_link(event); }); + }); + document.body.addEventListener('mousedown', (event) => { return this.on_mouse_down_body(event); }, true); + document.body.addEventListener('touchstart', (event) => { return this.on_mouse_down_body(event); }, true); + window.addEventListener('resize', (event) => { return this.on_resize_window(event); }, true) + } + + on(eventName, callback) { + if (!this.eventSubscriptions[eventName]) { + this.eventSubscriptions[eventName] = []; + } + if (!this.eventSubscriptions[eventName].includes(callback)) { + this.eventSubscriptions[eventName].push(callback); + } + } + + emit(eventName, payload) { + if (this.eventSubscriptions[eventName]) { + for (let callback of this.eventSubscriptions[eventName]) { + callback(payload); + } + } + } + + generate_menu_bar_item_template(definition, index) { + return ` +
  • + +
  • + `.trim(); + } + + generate_menu_dropdown_item_template(definition, level, index) { + if (definition.divider) { + return ` +
  • +
    +
  • + `.trim(); + } else { + return ` +
  • + + ${ definition.name }${ definition.ellipsis ? ' ...' : '' } + ${ !!definition.shortcut ? ` + Shortcut Key: ${ definition.shortcut } + ` : `` } + +
  • + `.trim(); + } + } + + on_mouse_down_body(event) { + const target = event.touches ? event.touches[0].target : event.target; + + // Clicked outside of menu; close dropdowns. + if (target && !this.menuContainer.contains(target)) { + this.close_child_dropdowns(0); + } + } + + on_focus_menu_bar(event) { + if (document.activeElement === this.menuBarNode) { + let lastFocusedLink = this.menuBarNode.querySelector(`[data-index="${ this.lastFocusedMenuBarLink }"]`); + if (!lastFocusedLink) { + lastFocusedLink = this.menuBarNode.querySelector('a'); + } + lastFocusedLink.focus(); + } + } + + on_focus_menu_bar_link(event) { + this.lastFocusedMenuBarLink = parseInt(event.target.getAttribute('data-index'), 10) || 0; + } + + on_blur_menu_bar(event) { + // TODO + } + + on_key_down_menu(event) { + const key = event.key; + const activeElement = document.activeElement; + + if (activeElement && activeElement.tagName === 'A') { + const linkLevel = parseInt(activeElement.getAttribute('data-level'), 10) || 0; + const linkIndex = parseInt(activeElement.getAttribute('data-index'), 10) || 0; + const menuParent = activeElement.closest('ul'); + if (linkLevel === 0) { + if (['Right', 'ArrowRight'].includes(event.key)) { + let nextLink = menuParent.querySelector(`[data-index="${ linkIndex + 1 }"]`); + if (!nextLink) { + nextLink = menuParent.querySelector(`[data-index="0"]`); + } + nextLink.focus(); + } + else if (['Left', 'ArrowLeft'].includes(event.key)) { + let previousLink = menuParent.querySelector(`[data-index="${ linkIndex - 1 }"]`); + if (!previousLink) { + previousLink = menuParent.querySelector(`[data-index="${ menuParent.querySelectorAll('[data-index]').length - 1 }"]`); + } + previousLink.focus(); + } + else if (['Down', 'ArrowDown'].includes(event.key)) { + if (activeElement.getAttribute('aria-haspopup') === 'true') { + event.preventDefault(); + activeElement.click(); + } + } + else if ([' ', 'Enter'].includes(event.key)) { + event.preventDefault(); + activeElement.click(); + } + } else { + if (['Up', 'ArrowUp'].includes(event.key)) { + event.preventDefault(); + let previousLink = menuParent.querySelector(`[data-index="${ linkIndex - 1 }"]`); + if (!previousLink) { + previousLink = menuParent.querySelector(`[data-index="${ linkIndex - 2 }"]`); // Skip dividers + } + if (!previousLink) { + previousLink = menuParent.querySelector(`[data-index="${ this.dropdownStack[linkLevel - 1].children.length - 1 }"]`); + } + previousLink.focus(); + } + else if (['Down', 'ArrowDown'].includes(event.key)) { + event.preventDefault(); + let nextLink = menuParent.querySelector(`[data-index="${ linkIndex + 1 }"]`); + if (!nextLink) { + nextLink = menuParent.querySelector(`[data-index="${ linkIndex + 2 }"]`); // Skip dividers + } + if (!nextLink) { + nextLink = menuParent.querySelector(`[data-index="0"]`); + } + nextLink.focus(); + } + else if (['Right', 'ArrowRight'].includes(event.key)) { + const menuBarLinkIndex = parseInt(this.dropdownStack[0].opener.getAttribute('data-index'), 10) || 0; + let nextLink = this.menuBarNode.querySelector(`[data-index="${ menuBarLinkIndex + 1 }"]`); + if (!nextLink) { + nextLink = this.menuBarNode.querySelector(`[data-index="0"]`); + } + nextLink.click(); + } + else if (['Left', 'ArrowLeft'].includes(event.key)) { + const menuBarLinkIndex = parseInt(this.dropdownStack[0].opener.getAttribute('data-index'), 10) || 0; + let previousLink = this.menuBarNode.querySelector(`[data-index="${ menuBarLinkIndex - 1 }"]`); + if (!previousLink) { + previousLink = this.menuBarNode.querySelector(`[data-index="${ this.menuBarNode.querySelectorAll('[data-index]').length - 1 }"]`); + } + previousLink.click(); + } + else if ([' ', 'Enter'].includes(event.key)) { + event.preventDefault(); + activeElement.click(); + } + else if (['Esc', 'Escape'].includes(event.key)) { + const opener = this.dropdownStack[linkLevel - 1].opener; + opener.click(); + opener.focus(); + } + } + } + } + + on_click_menu(event) { + const target = event.target.closest('a'); + + // Any link in the menu is clicked. + if (target && target.tagName === 'A') { + const hasPopup = target.getAttribute('aria-haspopup') === 'true'; + if (hasPopup) { + this.toggle_dropdown(target, event.isTrusted); + } else { + this.trigger_link(target); + } + } else { + this.close_child_dropdowns(0); + } + } + + on_resize_window(event) { + if (this.dropdownStack.length > 0) { + this.position_dropdowns(); + } + } + + toggle_dropdown(opener, isTrusted) { + const linkLevel = parseInt(opener.getAttribute('data-level'), 10) || 0; + const linkIndex = parseInt(opener.getAttribute('data-index'), 10) || 0; + if (opener.getAttribute('aria-expanded') === 'true') { + this.close_child_dropdowns(linkLevel); + } else { + const parentList = opener.closest('ul'); + parentList.querySelectorAll('a').forEach((item) => { + item.setAttribute('aria-expanded', 'false'); + }); + opener.setAttribute('aria-expanded', true); + this.create_dropdown(opener, linkLevel, linkIndex, !isTrusted); + } + } + + trigger_link(link) { + const level = parseInt(link.getAttribute('data-level'), 10) || 0; + const index = parseInt(link.getAttribute('data-index'), 10) || 0; + + // Find link definition + let children = menuDefinition; + for (let i = 0; i < level; i++) { + const childIndex = this.dropdownStack[i] != null ? this.dropdownStack[i].index : index; + children = children[childIndex].children; + } + let definition = children[index]; + + // Close the dropdown + this.close_child_dropdowns(0); + + // Emit callback events for triggered links + if (definition.target) { + this.emit('select_target', definition.target); + } + else if (definition.href) { + this.emit('select_href', definition.href); + } + } + + close_child_dropdowns(level) { + for (let i = this.dropdownStack.length - 1; i >= 0; i--) { + if (i >= level) { + this.dropdownStack[i].element.parentNode.removeChild(this.dropdownStack[i].element); + this.dropdownStack[i].opener.setAttribute('aria-expanded', false); + } + } + this.dropdownStack = this.dropdownStack.slice(0, level); + } + + create_dropdown(opener, level, index, focusAfterCreation) { + this.close_child_dropdowns(level); + + // Find child list in the menu definition + let children = menuDefinition; + for (let i = 0; i <= level; i++) { + const childIndex = this.dropdownStack[i] != null ? this.dropdownStack[i].index : index; + children = children[childIndex].children; + } + + // Create the dropdown element, place it in DOM & position it + let dropdownElement = document.createElement('ul'); + dropdownElement.className = 'menu_dropdown'; + dropdownElement.role = 'menu'; + dropdownElement.setAttribute('aria-labelledby', 'main_menu_' + level + '_' + index); + let dropdownTemplate = ''; + for (let i = 0; i < children.length; i++) { + dropdownTemplate += this.generate_menu_dropdown_item_template(children[i], level + 1, i); + } + dropdownElement.innerHTML = dropdownTemplate; + + this.menuContainer.appendChild(dropdownElement); + + if (focusAfterCreation) { + dropdownElement.querySelector('a').focus(); + } + + this.dropdownStack.push({ + children, + opener, + index, + element: dropdownElement }); - // Additional logic for ddsmoothmenu library: - // Add CSS class to primary dropdown to identify when to toggle scrolling for mobile. - document.getElementById('main_menu').addEventListener('click', (e) => { - const target = e.target; - if (!target || !target.parentNode) return; - if (target.parentNode.classList.contains('more')) { - var parentList = target.closest('ul'); - var wasSelected = target.classList.contains('selected'); - setTimeout(() => { - parentList.classList.toggle('expanded', !wasSelected); - }, 1); - } else if (target.tagName === 'A' && target.matches('#main_menu > ul > li > a')) { - target.nextElementSibling.classList.remove('expanded'); + this.position_dropdowns(); + } + + position_dropdowns() { + const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0); + const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0); + + let topNavHeight = 0; + for (let level = 0; level < this.dropdownStack.length; level++) { + const dropdownElement = this.dropdownStack[level].element; + const openerRect = this.dropdownStack[level].opener.getBoundingClientRect(); + + topNavHeight = openerRect.height; + const dropdownMaxHeight = vh - topNavHeight - this.dropdownMaxHeightMargin; + dropdownElement.style.maxHeight = dropdownMaxHeight + 'px'; + const dropdownRect = dropdownElement.getBoundingClientRect(); + + if (level === 0) { + dropdownElement.style.top = (openerRect.y + openerRect.height) + 'px'; + + let left = openerRect.x; + if (left + dropdownRect.width > vw) { + left = openerRect.x + openerRect.width - dropdownRect.width; + } + if (left + dropdownRect.width > vw) { + left = vw - dropdownRect.width; + } + if (left < 0) { + left = 0; + } + dropdownElement.style.left = left + 'px'; + } else { + let top = openerRect.y; + if (top + dropdownRect.height > vh - this.dropdownMaxHeightMargin) { + top = vh - this.dropdownMaxHeightMargin - dropdownRect.height; + } + dropdownElement.style.top = top + 'px'; + + let left = openerRect.x + openerRect.width + 1; + if (left + dropdownRect.width > vw) { + left = openerRect.x - dropdownRect.width - 1; + } + if (left < 0) { + if (openerRect.x + (openerRect.width / 2) > vw / 2) { + left = 1; + } else { + left = vw - dropdownRect.width - 1; + if (left < 0) { + left = 1; + } + } + } + dropdownElement.style.left = left + 'px'; } - }, true); + } } } From fb91088a7e389c247f4ffcc47fb3bae3703b82b5 Mon Sep 17 00:00:00 2001 From: acer Date: Mon, 12 Oct 2020 01:23:24 -0400 Subject: [PATCH 2/9] Handle tab in dropdown item --- src/js/core/gui/gui-menu.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/js/core/gui/gui-menu.js b/src/js/core/gui/gui-menu.js index beca954..8a3309b 100644 --- a/src/js/core/gui/gui-menu.js +++ b/src/js/core/gui/gui-menu.js @@ -81,7 +81,7 @@ class GUI_menu_class { } else { return `
  • - @@ -203,6 +203,9 @@ class GUI_menu_class { opener.click(); opener.focus(); } + else if (event.key === 'Tab') { + this.close_child_dropdowns(0); + } } } } @@ -292,6 +295,7 @@ class GUI_menu_class { let dropdownElement = document.createElement('ul'); dropdownElement.className = 'menu_dropdown'; dropdownElement.role = 'menu'; + dropdownElement.tabIndex = 0; dropdownElement.setAttribute('aria-labelledby', 'main_menu_' + level + '_' + index); let dropdownTemplate = ''; for (let i = 0; i < children.length; i++) { From bedc3f579ad956c943eaaad91c0ce85fb37bc1fc Mon Sep 17 00:00:00 2001 From: acer Date: Mon, 12 Oct 2020 01:42:17 -0400 Subject: [PATCH 3/9] Add home/end key control --- src/js/core/gui/gui-menu.js | 48 +++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/src/js/core/gui/gui-menu.js b/src/js/core/gui/gui-menu.js index 8a3309b..eb5ac31 100644 --- a/src/js/core/gui/gui-menu.js +++ b/src/js/core/gui/gui-menu.js @@ -151,6 +151,12 @@ class GUI_menu_class { activeElement.click(); } } + else if (event.key === 'Home') { + menuParent.querySelector(`[data-index="0"]`).focus(); + } + else if (event.key === 'End') { + menuParent.querySelector(`[data-index="${ menuParent.querySelectorAll('[data-index]').length - 1 }"]`).focus(); + } else if ([' ', 'Enter'].includes(event.key)) { event.preventDefault(); activeElement.click(); @@ -179,20 +185,42 @@ class GUI_menu_class { nextLink.focus(); } else if (['Right', 'ArrowRight'].includes(event.key)) { - const menuBarLinkIndex = parseInt(this.dropdownStack[0].opener.getAttribute('data-index'), 10) || 0; - let nextLink = this.menuBarNode.querySelector(`[data-index="${ menuBarLinkIndex + 1 }"]`); - if (!nextLink) { - nextLink = this.menuBarNode.querySelector(`[data-index="0"]`); + if (activeElement.getAttribute('aria-haspopup') === 'true') { + activeElement.click(); + } + else if (this.dropdownStack.length > 1) { + const opener = this.dropdownStack[linkLevel - 1].opener; + opener.click(); + opener.focus(); + } + else { + const menuBarLinkIndex = parseInt(this.dropdownStack[0].opener.getAttribute('data-index'), 10) || 0; + let nextLink = this.menuBarNode.querySelector(`[data-index="${ menuBarLinkIndex + 1 }"]`); + if (!nextLink) { + nextLink = this.menuBarNode.querySelector(`[data-index="0"]`); + } + nextLink.click(); } - nextLink.click(); } else if (['Left', 'ArrowLeft'].includes(event.key)) { - const menuBarLinkIndex = parseInt(this.dropdownStack[0].opener.getAttribute('data-index'), 10) || 0; - let previousLink = this.menuBarNode.querySelector(`[data-index="${ menuBarLinkIndex - 1 }"]`); - if (!previousLink) { - previousLink = this.menuBarNode.querySelector(`[data-index="${ this.menuBarNode.querySelectorAll('[data-index]').length - 1 }"]`); + if (this.dropdownStack.length > 1) { + const opener = this.dropdownStack[linkLevel - 1].opener; + opener.click(); + opener.focus(); + } else { + const menuBarLinkIndex = parseInt(this.dropdownStack[0].opener.getAttribute('data-index'), 10) || 0; + let previousLink = this.menuBarNode.querySelector(`[data-index="${ menuBarLinkIndex - 1 }"]`); + if (!previousLink) { + previousLink = this.menuBarNode.querySelector(`[data-index="${ this.menuBarNode.querySelectorAll('[data-index]').length - 1 }"]`); + } + previousLink.click(); } - previousLink.click(); + } + else if (event.key === 'Home') { + menuParent.querySelector(`[data-index="0"]`).focus(); + } + else if (event.key === 'End') { + menuParent.querySelector(`[data-index="${ this.dropdownStack[linkLevel - 1].children.length - 1 }"]`).focus(); } else if ([' ', 'Enter'].includes(event.key)) { event.preventDefault(); From 0a00993580bdd45aa307ba3d2ab826f0c0a92949 Mon Sep 17 00:00:00 2001 From: acer Date: Mon, 12 Oct 2020 01:57:06 -0400 Subject: [PATCH 4/9] Remove remaining ddsmoothmenu references --- src/css/menu.css | 4 +- src/css/print.css | 2 +- src/js/libs/menu.js | 643 -------------------------------------------- 3 files changed, 2 insertions(+), 647 deletions(-) delete mode 100644 src/js/libs/menu.js diff --git a/src/css/menu.css b/src/css/menu.css index 6db330b..f5836ec 100644 --- a/src/css/menu.css +++ b/src/css/menu.css @@ -155,9 +155,7 @@ flex-shrink: 1; color: var(--menu-dropdown-text-muted-color); } -.ddsmoothmenu a.destructive { - background-color: rgba(0,0,0,0.08); -} + .mobile_menu { display: none; diff --git a/src/css/print.css b/src/css/print.css index 183fad1..18dad01 100644 --- a/src/css/print.css +++ b/src/css/print.css @@ -13,7 +13,7 @@ .sidebar_left, .sidebar_right, .submenu, - .ddsmoothmenu{ + .main_menu{ display: none; height: 0; width: 0; diff --git a/src/js/libs/menu.js b/src/js/libs/menu.js deleted file mode 100644 index d57287c..0000000 --- a/src/js/libs/menu.js +++ /dev/null @@ -1,643 +0,0 @@ -//http://www.dynamicdrive.com/dynamicindex1/ddsmoothmenu.htm -var ddsmoothmenu = { - arrowimages: { - down: ["rightarrowclass", "", 0], - right: ["rightarrowclass", "", 0] - }, - transition: { - overtime: 0, - outtime: 0 - }, //duration of slide in/out animation, in milliseconds - shadow: false, //enable shadow? - //showhidedelay:{showdelay:100,hidedelay:200}, //set delay in milliseconds before sub menus appear and disappear, respectively - showhidedelay: { - showdelay: 0, - hidedelay: 0 - }, - zindexvalue: 1e3, //set z-index value for menus - closeonnonmenuclick: true, - closeonmouseout: false, - overarrowre: /(?=\.(gif|jpg|jpeg|png|bmp))/i, - overarrowaddtofilename: "_over", - detecttouch: !!("ontouchstart" in window) || !!("ontouchstart" in document.documentElement) || !!window.ontouchstart || !!window.Touch && !!window.Touch.length || !!window.onmsgesturechange || window.DocumentTouch && window.document instanceof window.DocumentTouch, - detectwebkit: navigator.userAgent.toLowerCase().indexOf("applewebkit") > -1, - idevice: /ipad|iphone/i.test(navigator.userAgent), - detectie6: function() { - var e; - return (e = /MSIE (\d+)/.exec(navigator.userAgent)) && e[1] < 7 - }(), - detectie9: function() { - var e; - return (e = /MSIE (\d+)/.exec(navigator.userAgent)) && e[1] > 8 - }(), - ie9shadow: function() {}, - css3support: typeof document.documentElement.style.boxShadow === "string" || !document.all && document.querySelector, - prevobjs: [], - menus: null, - executelink: function(e, t, n) { - var r = t.length, - i = n.target; - while (--r > -1) { - if (t[r] === this) { - t.splice(r, 1); - if (i.href !== ddsmoothmenu.emptyhash && i.href && e(i).is("a") && !e(i).children("span." + ddsmoothmenu.arrowimages.down[0] + ", span." + ddsmoothmenu.arrowimages.right[0]).length) { - if (i.target && i.target !== "_self") { - window.open(i.href, i.target) - } else { - window.location.href = i.href - } - n.stopPropagation() - } - } - } - }, - repositionv: function(e, t, n, r, i, s, o) { - o = o || 0; - var u = 0, - a = r + i; - e.css({ - top: n, - display: "block" - }); - while (e.offset().top < i) { - e.css({ - top: ++n - }); - ++u - } - if (!u && t.offset().top + t.outerHeight() < a && e.data("height") + e.offset().top > a) { - e.css({ - top: i - t.parents("ul").last().offset().top - t.position().top - }) - } - s === "toggle" && e.css({ - display: "none" - }); - if (n !== o) { - e.addClass("repositionedv") - } - return [u, n] - }, - updateprev: function(e, t, n) { - var r = t.length, - i, s = n.parents().add(this); - while (--r > -1) { - if (s.index(i = t[r]) < 0) { - e(i).trigger("click", [1]); - t.splice(r, 1) - } - } - t.push(this) - }, - subulpreventemptyclose: function(e) { - var t = e.target; - if (t.href === ddsmoothmenu.emptyhash && $(t).parent("li").find("ul").length < 1) { - e.preventDefault(); - e.stopPropagation() - } - }, - getajaxmenu: function(e, t, n) { - var r = e("#" + t.contentsource[0]); - r.html("Loading Menu..."); - e.ajax({ - url: t.contentsource[1], - async: true, - error: function(e) { - r.html("Error fetching content. Server Response: " + e.responseText) - }, - success: function(i) { - r.html(i); - !!!n && ddsmoothmenu.buildmenu(e, t) - } - }) - }, - closeall: function(e) { - var t = ddsmoothmenu, - n; - if (!t.globaltrackopen) { - return - } - if (e.type === "mouseleave" || (e.type === "click" || e.type === "touchstart") && t.menus.index(e.target) < 0) { - n = t.prevobjs.length; - while (--n > -1) { - $(t.prevobjs[n]).trigger("click"); - t.prevobjs.splice(n, 1) - } - } - }, - emptyhash: $('').get(0).href, - buildmenu: function(e, t) { - var n = ddsmoothmenu; - n.globaltrackopen = n.closeonnonmenuclick || n.closeonmouseout; - var r = 0; - var i = n.globaltrackopen ? n.prevobjs : []; - var s = e("#" + t.mainmenuid).removeClass("ddsmoothmenu ddsmoothmenu-v").addClass(t.classname || "ddsmoothmenu"); - t.repositionv = t.repositionv !== false; - var o = s.find(">ul"); - var u = n.detecttouch ? "toggle" : t.method === "toggle" ? "toggle" : "hover"; - var a = o.find(">li>ul").parent(); - var f = t.orientation != "v" ? "down" : "right", - l = e(document.body); - o.click(function(e) { - e.target.href === n.emptyhash && e.preventDefault() - }); - if (u === "toggle") { - if (n.globaltrackopen) { - n.menus = n.menus ? n.menus.add(o.add(o.find("*"))) : o.add(o.find("*")) - } - if (n.closeonnonmenuclick) { - if (f === "down") { - s.click(function(e) { - e.stopPropagation() - }) - } - e(document).unbind("click.smoothmenu").bind("click.smoothmenu", n.closeall); - if (n.idevice) { - document.removeEventListener("touchstart", n.closeall, false); - document.addEventListener("touchstart", n.closeall, false) - } - } else if (t.closeonnonmenuclick) { - if (f === "down") { - s.click(function(e) { - e.stopPropagation() - }) - } - e(document).bind("click." + t.mainmenuid, function(e) { - o.find("li>a.selected").parent().trigger("click") - }); - if (n.idevice) { - document.addEventListener("touchstart", function(e) { - o.find("li>a.selected").parent().trigger("click") - }, false) - } - } - if (n.closeonmouseout) { - var c = f === "down" ? s : o; - c.bind("mouseleave.smoothmenu", n.closeall) - } else if (t.closeonmouseout) { - var c = f === "down" ? s : o; - c.bind("mouseleave.smoothmenu", function() { - o.find("li>a.selected").parent().trigger("click") - }) - } - if (!e('style[title="ddsmoothmenushadowsnone"]').length) { - e("head").append('') - } - var h; - e(window).bind("resize scroll", function() { - clearTimeout(h); - var t = o.find("li>a.selected").parent(), - n = e(".ddshadow").addClass("ddsmoothmenushadowsnone"); - t.eq(0).trigger("click"); - t.trigger("click"); - h = setTimeout(function() { - n.removeClass("ddsmoothmenushadowsnone") - }, 100) - }) - } - a.each(function() { - function p() { - a.removeClass("selected") - } - var s = e(this).css({ - zIndex: (t.zindexvalue || n.zindexvalue) + r-- - }); - var o = s.children("ul:eq(0)").css({ - display: "block" - }).data("timers", {}); - var a = s.children("a:eq(0)").css({ - paddingRight: n.arrowimages[f][2] - }).append(''); - var c = { - w: a.outerWidth(), - h: s.innerHeight(), - subulw: o.outerWidth(), - subulh: o.outerHeight() - }; - var h = f === "down" ? c.h : 0; - o.css({ - top: h - }); - u === "toggle" && o.click(n.subulpreventemptyclose); - s[u](function(r) { - if (!s.data("headers")) { - n.buildsubheaders(e, o.find(">li>ul").parent(), t, u, i); - s.data("headers", true).find(">ul").each(function(t, n) { - var r = e(n); - r.data("height", r.outerHeight()) - }).css({ - display: "none", - visibility: "visible" - }) - } - u === "toggle" && n.updateprev.call(this, e, i, s); - clearTimeout(o.data("timers").hidetimer); - a.addClass("selected"); - o.data("timers").showtimer = setTimeout(function() { - var r = f === "down" ? 0 : c.w; - var i = r, - p, d, v, m = 0; - r = s.offset().left + r + c.subulw > e(window).width() ? f === "down" ? -c.subulw + c.w : -c.w : r; - i = i !== r; - o.css({ - top: h - }).removeClass("repositionedv"); - if (t.repositionv && a.offset().top + h + o.data("height") > (v = e(window).height()) + (d = e(document).scrollTop())) { - p = (f === "down" ? 0 : a.outerHeight()) - o.data("height"); - m = n.repositionv(o, a, p, v, d, u, h)[0] - } - o.css({ - left: r, - width: c.subulw - }).stop(true, true).animate({ - height: "show", - opacity: "show" - }, n.transition.overtime, function() { - this.style.removeAttribute && this.style.removeAttribute("filter") - }); - if (i) { - o.addClass("repositioned") - } else { - o.removeClass("repositioned") - } - if (t.shadow) { - if (!s.data("$shadow")) { - s.data("$shadow", e("
    ").addClass("ddshadow toplevelshadow").prependTo(l).css({ - zIndex: s.css("zIndex") - })) - } - n.ie9shadow(s.data("$shadow")); - var g = o.offset(); - var y = g.left; - var b = g.top; - s.data("$shadow").css({ - overflow: "visible", - width: c.subulw, - left: y, - top: b - }).stop(true, true).animate({ - height: c.subulh - }, n.transition.overtime) - } - }, n.showhidedelay.showdelay) - }, function(t, r) { - var a = s.data("$shadow"); - if (u === "hover") { - p() - } else { - n.executelink.call(this, e, i, t) - } - clearTimeout(o.data("timers").showtimer); - o.data("timers").hidetimer = setTimeout(function() { - o.stop(true, true).animate({ - height: "hide", - opacity: "hide" - }, r || n.transition.outtime, function() { - u === "toggle" && p() - }); - if (a) { - if (!n.css3support && n.detectwebkit) { - a.children("div:eq(0)").css({ - opacity: 0 - }) - } - a.stop(true, true).animate({ - height: 0 - }, r || n.transition.outtime, function() { - if (u === "toggle") { - this.style.overflow = "hidden" - } - }) - } - }, n.showhidedelay.hidedelay) - }) - }) - }, - buildsubheaders: function(e, t, n, r, i) { - t.each(function() { - function l() { - a.removeClass("selected") - } - var t = ddsmoothmenu; - var s = e(this).css({ - zIndex: e(this).parent("ul").css("z-index") - }); - var o = s.children("ul:eq(0)").css({ - display: "block" - }).data("timers", {}), - u; - r === "toggle" && o.click(t.subulpreventemptyclose); - var a = s.children("a:eq(0)").append(''); - var f = { - w: a.outerWidth(), - subulw: o.outerWidth(), - subulh: o.outerHeight() - }; - o.css({ - top: 0 - }); - s[r](function(l) { - if (!s.data("headers")) { - t.buildsubheaders(e, o.find(">li>ul").parent(), n, r, i); - s.data("headers", true).find(">ul").each(function(t, n) { - var r = e(n); - r.data("height", r.height()) - }).css({ - display: "none", - visibility: "visible" - }) - } - r === "toggle" && t.updateprev.call(this, e, i, s); - clearTimeout(o.data("timers").hidetimer); - a.addClass("selected"); - o.data("timers").showtimer = setTimeout(function() { - var i = f.w; - var l = i, - c, h, p, d = 0; - i = s.offset().left + i + f.subulw > e(window).width() ? -f.w : i; - l = l !== i; - o.css({ - top: 0 - }).removeClass("repositionedv"); - if (n.repositionv && a.offset().top + o.data("height") > (p = e(window).height()) + (h = e(document).scrollTop())) { - c = a.outerHeight() - o.data("height"); - d = t.repositionv(o, a, c, p, h, r); - c = d[1]; - d = d[0] - } - o.css({ - left: i, - width: f.subulw - }).stop(true, true).animate({ - height: "show", - opacity: "show" - }, t.transition.overtime, function() { - this.style.removeAttribute && this.style.removeAttribute("filter") - }); - if (l) { - o.addClass("repositioned") - } else { - o.removeClass("repositioned") - } - if (n.shadow) { - if (!s.data("$shadow")) { - u = s.parents("li:eq(0)").data("$shadow"); - s.data("$shadow", e("
    ").addClass("ddshadow").prependTo(u).css({ - zIndex: u.css("z-index") - })) - } - var v = o.offset(); - var m = i; - var g = s.position().top - (c ? o.data("height") - a.outerHeight() - d : 0); - if (t.detectwebkit && !t.css3support) { - s.data("$shadow").css({ - opacity: 1 - }) - } - s.data("$shadow").css({ - overflow: "visible", - width: f.subulw, - left: m, - top: g - }).stop(true, true).animate({ - height: f.subulh - }, t.transition.overtime) - } - }, t.showhidedelay.showdelay) - }, function(n, u) { - var a = s.data("$shadow"); - if (r === "hover") { - l() - } else { - t.executelink.call(this, e, i, n) - } - clearTimeout(o.data("timers").showtimer); - o.data("timers").hidetimer = setTimeout(function() { - o.stop(true, true).animate({ - height: "hide", - opacity: "hide" - }, u || t.transition.outtime, function() { - r === "toggle" && l() - }); - if (a) { - if (!t.css3support && t.detectwebkit) { - a.children("div:eq(0)").css({ - opacity: 0 - }) - } - a.stop(true, true).animate({ - height: 0 - }, u || t.transition.outtime, function() { - if (r === "toggle") { - this.style.overflow = "hidden" - } - }) - } - }, t.showhidedelay.hidedelay) - }) - }) - }, - init: function(e) { - function o() { - if (s) { - return - } - if (typeof e.customtheme == "object" && e.customtheme.length == 2) { - var n = e.orientation == "v" ? t : t + ", " + t; - i.push([n, " ul li a {background:", e.customtheme[0], ";}\n", t, " ul li a:hover {background:", e.customtheme[1], ";}"].join("")) - } - i.push('\n\n"], - s = e.arrowswap ? 4 : 2; - if (e.arrowswap) { - n = ddsmoothmenu.arrowimages.right[1].replace(ddsmoothmenu.overarrowre, ddsmoothmenu.overarrowaddtofilename); - r = ddsmoothmenu.arrowimages.down[1].replace(ddsmoothmenu.overarrowre, ddsmoothmenu.overarrowaddtofilename); - jQuery(new Image).bind("load error", function(n) { - e.rightswap = n.type === "load"; - if (e.rightswap) { - i.push([t, " ul li a:hover .", ddsmoothmenu.arrowimages.right[0], ", ", t, " ul li a.selected .", ddsmoothmenu.arrowimages.right[0], " { background-image: url(", this.src, ");}"].join("")) - }--s; - o() - }).attr("src", n); - jQuery(new Image).bind("load error", function(n) { - e.downswap = n.type === "load"; - if (e.downswap) { - i.push([t, " ul li a:hover .", ddsmoothmenu.arrowimages.down[0], ", ", t, " ul li a.selected .", ddsmoothmenu.arrowimages.down[0], " { background-image: url(", this.src, ");}"].join("")) - }--s; - o() - }).attr("src", r) - } - jQuery(new Image).bind("load error", function(e) { - if (e.type === "load") { - i.push([t + " ul li a .", ddsmoothmenu.arrowimages.right[0], " { background: url(", this.src, ") no-repeat;width:", this.width, "px;height:", this.height, "px;}"].join("")) - }--s; - o() - }).attr("src", ddsmoothmenu.arrowimages.right[1]); - jQuery(new Image).bind("load error", function(e) { - if (e.type === "load") { - i.push([t + " ul li a .", ddsmoothmenu.arrowimages.down[0], " { background: url(", this.src, ") no-repeat;width:", this.width, "px;height:", this.height, "px;}"].join("")) - }--s; - o() - }).attr("src", ddsmoothmenu.arrowimages.down[1]); - e.shadow = this.detectie6 && (e.method === "hover" || e.orientation === "v") ? false : e.shadow || this.shadow; - jQuery(document).ready(function(t) { - if (e.shadow && ddsmoothmenu.css3support) { - t("body").addClass("ddcss3support") - } - if (typeof e.contentsource == "object") { - ddsmoothmenu.getajaxmenu(t, e) - } else { - ddsmoothmenu.buildmenu(t, e) - } - }) - } -}; -if (function(e) { - var t = false; - try { - e('').toggle(function() {}, function() { - t = true - }).trigger("click").trigger("click") - } catch (n) {} - return !t - }(jQuery)) { - (function() { - var e = jQuery.fn.toggle; - jQuery.extend(jQuery.fn, { - toggle: function(t, n) { - if (!jQuery.isFunction(t) || !jQuery.isFunction(n)) { - return e.apply(this, arguments) - } - var r = arguments, - i = t.guid || jQuery.guid++, - s = 0, - o = function(e) { - var n = (jQuery._data(this, "lastToggle" + t.guid) || 0) % s; - jQuery._data(this, "lastToggle" + t.guid, n + 1); - e.preventDefault(); - return r[n].apply(this, arguments) || false - }; - o.guid = i; - while (s < r.length) { - r[s++].guid = i - } - return this.click(o) - } - }) - })() -} -if (ddsmoothmenu.detectie9) { - (function(e) { - function t(e, t) { - return parseInt(e) + t + "px" - } - ddsmoothmenu.ie9shadow = function(n) { - var r = document.defaultView.getComputedStyle(n.get(0), null), - i = r.getPropertyValue("box-shadow").split(" "), - s = { - top: r.getPropertyValue("margin-top"), - left: r.getPropertyValue("margin-left") - }; - e("head").append(['\n\n"].join("\n")); - ddsmoothmenu.ie9shadow = function() {} - }; - var n = e.fn.height, - r = e.fn.width; - e.extend(e.fn, { - height: function() { - var e = this.get(0); - if (this.length < 1 || arguments.length || e === window || e === document) { - return n.apply(this, arguments) - } - return parseFloat(document.defaultView.getComputedStyle(e, null).getPropertyValue("height")) - }, - innerHeight: function() { - if (this.length < 1) { - return null - } - var e = this.height(), - t = this.get(0), - n = document.defaultView.getComputedStyle(t, null); - e += parseInt(n.getPropertyValue("padding-top")); - e += parseInt(n.getPropertyValue("padding-bottom")); - return e - }, - outerHeight: function(e) { - if (this.length < 1) { - return null - } - var t = this.innerHeight(), - n = this.get(0), - r = document.defaultView.getComputedStyle(n, null); - t += parseInt(r.getPropertyValue("border-top-width")); - t += parseInt(r.getPropertyValue("border-bottom-width")); - if (e) { - t += parseInt(r.getPropertyValue("margin-top")); - t += parseInt(r.getPropertyValue("margin-bottom")) - } - return t - }, - width: function() { - var e = this.get(0); - if (this.length < 1 || arguments.length || e === window || e === document) { - return r.apply(this, arguments) - } - return parseFloat(document.defaultView.getComputedStyle(e, null).getPropertyValue("width")) - }, - innerWidth: function() { - if (this.length < 1) { - return null - } - var e = this.width(), - t = this.get(0), - n = document.defaultView.getComputedStyle(t, null); - e += parseInt(n.getPropertyValue("padding-right")); - e += parseInt(n.getPropertyValue("padding-left")); - return e - }, - outerWidth: function(e) { - if (this.length < 1) { - return null - } - var t = this.innerWidth(), - n = this.get(0), - r = document.defaultView.getComputedStyle(n, null); - t += parseInt(r.getPropertyValue("border-right-width")); - t += parseInt(r.getPropertyValue("border-left-width")); - if (e) { - t += parseInt(r.getPropertyValue("margin-right")); - t += parseInt(r.getPropertyValue("margin-left")) - } - return t - } - }) - })(jQuery) -}; - -//ddsmoothmenu.init({ -// mainmenuid: "main_menu", -// method: 'toggle', //'hover' (default) or 'toggle' -// contentsource: "markup", -//}); - -export default ddsmoothmenu; \ No newline at end of file From 91657a924a4fdbff5bfa235b07ad971e9145b7b3 Mon Sep 17 00:00:00 2001 From: acer Date: Mon, 12 Oct 2020 02:27:50 -0400 Subject: [PATCH 5/9] Make translations work with new menu, update verbiage --- src/js/config-menu.js | 2 +- src/js/config.js | 2 +- src/js/core/gui/gui-menu.js | 11 +++++- src/js/languages/de.json | 46 +++++++++++------------ src/js/languages/empty.json | 46 +++++++++++------------ src/js/languages/es.json | 46 +++++++++++------------ src/js/languages/fr.json | 46 +++++++++++------------ src/js/languages/it.json | 46 +++++++++++------------ src/js/languages/ja.json | 46 +++++++++++------------ src/js/languages/ko.json | 46 +++++++++++------------ src/js/languages/lt.json | 46 +++++++++++------------ src/js/languages/pt.json | 46 +++++++++++------------ src/js/languages/ru.json | 46 +++++++++++------------ src/js/languages/tr.json | 46 +++++++++++------------ src/js/languages/zh.json | 46 +++++++++++------------ src/js/modules/help/shortcuts.js | 8 ++-- src/js/modules/help/translate.js | 4 +- src/js/modules/image/color_corrections.js | 2 +- src/js/modules/image/decrease_colors.js | 2 +- src/js/modules/image/rotate.js | 2 +- src/js/modules/tools/color_to_alpha.js | 2 +- src/js/modules/tools/content_fill.js | 2 +- src/js/modules/tools/restore_alpha.js | 2 +- 23 files changed, 299 insertions(+), 292 deletions(-) diff --git a/src/js/config-menu.js b/src/js/config-menu.js index 48ac212..22a2e4e 100644 --- a/src/js/config-menu.js +++ b/src/js/config-menu.js @@ -195,7 +195,7 @@ const menuDefinition = [ divider: true }, { - name: 'Color Correction', + name: 'Color Corrections', ellipsis: true, target: 'image/color_corrections.color_corrections' }, diff --git a/src/js/config.js b/src/js/config.js index 6551906..7930ee8 100644 --- a/src/js/config.js +++ b/src/js/config.js @@ -123,7 +123,7 @@ config.TOOLS = [ }, { name: 'media', - title: 'Search images', + title: 'Search Images', on_activate: 'on_activate', attributes: { size: 30, diff --git a/src/js/core/gui/gui-menu.js b/src/js/core/gui/gui-menu.js index eb5ac31..4e746d6 100644 --- a/src/js/core/gui/gui-menu.js +++ b/src/js/core/gui/gui-menu.js @@ -5,6 +5,7 @@ import config from './../../config.js'; import menuDefinition from './../../config-menu.js'; +import Help_translate_class from './../../modules/help/translate.js'; /** * class responsible for rendering main menu @@ -18,6 +19,8 @@ class GUI_menu_class { this.menuBarNode = null; this.lastFocusedMenuBarLink = 0; this.dropdownStack = []; + + this.Help_translate = new Help_translate_class(); } render_main() { @@ -66,7 +69,7 @@ class GUI_menu_class { return `
  • + href="javascript:void(0)" data-level="0" data-index="${ index }">${ definition.name }
  • `.trim(); } @@ -85,7 +88,7 @@ class GUI_menu_class { href="${ definition.href ? definition.href : 'javascript:void(0)' }" target="${ definition.href ? '_blank' : '_self' }" data-level="${ level }" data-index="${ index }"> - ${ definition.name }${ definition.ellipsis ? ' ...' : '' } + ${ definition.name }${ definition.ellipsis ? ' ...' : '' } ${ !!definition.shortcut ? ` Shortcut Key: ${ definition.shortcut } ` : `` } @@ -333,6 +336,10 @@ class GUI_menu_class { this.menuContainer.appendChild(dropdownElement); + if (config.LANG != 'en') { + this.Help_translate.translate(config.LANG, this.menuContainer); + } + if (focusAfterCreation) { dropdownElement.querySelector('a').focus(); } diff --git a/src/js/languages/de.json b/src/js/languages/de.json index 8544774..354c160 100644 --- a/src/js/languages/de.json +++ b/src/js/languages/de.json @@ -11,7 +11,7 @@ "Arial": "Arial", "Arrow": "Pfeil", "Author:": "Autor:", - "Auto adjust colors": "Automatische Farbeinstellung", + "Auto Adjust Colors": "Automatische Farbeinstellung", "Average:": "Durchschnitt:", "BMP - Windows Bitmap": "BMP - Windows-Bitmap", "Base": "Basis", @@ -33,7 +33,7 @@ "Brush": "Pinsel", "Bulge\/Pinch tool": "Ausbuchtung \/ Pinch-Werkzeug", "Burn": "Brennen", - "CSS filters": "CSS-Filter", + "CSS Filters": "CSS-Filter", "Can not animate 1 layer.": "1 Ebene kann nicht animiert werden.", "Can not find previous layer.": "Die vorherige Ebene kann nicht gefunden werden.", "Cancel": "Abbrechen", @@ -50,20 +50,20 @@ "Color #": "Farbe #", "Color Zoom": "Farbzoom", "Color alpha value can not be zero.": "Farb-Alpha-Wert kann nicht Null sein.", - "Color corrections": "Farbkorrekturen", - "Color palette": "Farbpalette", - "Color to alpha": "Farbe zu Alpha", + "Color Corrections": "Farbkorrekturen", + "Color Palette": "Farbpalette", + "Color to Alpha": "Farbe zu Alpha", "Color zoom": "Farbzoom", "Color:": "Farbe:", "Colors": "Farben", "Colors:": "Farben:", "Composition": "Zusammensetzung", "Composition:": "Zusammensetzung:", - "Content fill": "Inhalt ausfüllen", + "Content Fill": "Inhalt ausfüllen", "Contrast": "Kontrast", "Contrast:": "Kontrast:", - "Convert to raster": "In Raster konvertieren", - "Copy selection": "Auswahl kopieren", + "Convert to Raster": "In Raster konvertieren", + "Copy Selection": "Auswahl kopieren", "Copy:": "Kopieren:", "Courier": "Kurier", "Crop": "Zuschneiden", @@ -74,12 +74,12 @@ "Custom": "Individuell", "Data URL": "Daten-URL", "Data URL:": "Daten-URL:", - "Decrease color depth": "Farbtiefe verringern", + "Decrease Color Depth": "Farbtiefe verringern", "Default": "Standard", "Degree:": "Grad:", "Del": "Del", "Delete": "Löschen", - "Delete selection": "Auswahl löschen", + "Delete Selection": "Auswahl löschen", "Denoise": "Denoise", "Desaturate": "Entsättigen", "Description:": "Beschreibung:", @@ -119,7 +119,7 @@ "File size:": "Dateigröße:", "Fill": "Füllen", "Fit": "Passen", - "Fit window": "Fenster einpassen", + "Fit Window": "Fenster einpassen", "Flatten Image": "Zu einer Ebene vereinigen", "Flip": "Spiegeln", "FloydSteinberg-serpentine": "FloydSteinberg-Serpentin", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "JPG, WEBP Qualität:", "JSON - Full layers data": "JSON - Vollständige Ebenen-Daten", "Japanese": "Japanisch", - "Key-points": "Schlüsselpunkte", + "Key-Points": "Schlüsselpunkte", "Keyboard Shortcuts": "Tastatürkürzel", "Keyword:": "Stichwort:", "Korean": "Koreanisch", @@ -201,7 +201,7 @@ "Negative": "Negativ", "New": "Neu", "New file": "Neue Datei", - "New from selection": "Neu von Auswahl", + "New from Selection": "Neu von Auswahl", "New layer": "Neue Ebene", "New width can not be smaller then current width": "Die neue Breite darf nicht kleiner als die aktuelle Breite sein", "Normal": "Normal", @@ -219,7 +219,7 @@ "Open File": "Datei öffnen", "Open URL": "Öffne URL", "Open data URL": "Öffnen Sie die Daten-URL", - "Original size": "Originalgröße", + "Original Size": "Originalgröße", "PNG - Portable Network Graphics": "PNG - Portable Netzwerkgrafik", "Palette": "Palette", "Parameter #1:": "Parameter # 1:", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "Die vorherige Ebene muss ein Bild sein, wandeln Sie sie in ein Raster um, um dieses Werkzeug anzuwenden.", "Print": "Drucken", "Quality:": "Qualität:", - "Quick load": "Schnell laden", - "Quick save": "Schnellspeichern", + "Quick Load": "Schnell laden", + "Quick Save": "Schnellspeichern", "Radial": "Radial", "Radial gradient": "Radialer Verlauf", "Radius:": "Radius:", @@ -253,18 +253,18 @@ "Replace Color": "Farbe ersetzen", "Replace color": "Farbe ersetzen", "Replacement:": "Ersatz:", - "Report issues": "Probleme melden", + "Report Issues": "Probleme melden", "Resample - Hermite": "Resample - Hermite", "Reset": "Zurücksetzen", "Reset zoom level": "Zoomstufe zurücksetzen", "Resize": "Größe ändern", "Resized as background": "Größe als Hintergrund", "Resolution:": "Auflösung:", - "Restore alpha": "Alpha wiederherstellen", + "Restore Alpha": "Alpha wiederherstellen", "Right": "Recht", "Right angle:": "Rechter Winkel:", "Rotate": "Drehen", - "Rotate is not supported on this type of object. Convert to raster?": "Drehen wird bei diesem Objekttyp nicht unterstützt. In Raster konvertieren?", + "Rotate is not supported on this type of object. Convert to Raster?": "Drehen wird bei diesem Objekttyp nicht unterstützt. In Raster konvertieren?", "Rotate left": "Nach links drehen", "Rotate:": "Drehen:", "Russian": "Russisch", @@ -272,16 +272,16 @@ "Saturate": "Sättigen", "Saturation:": "Sättigung:", "Save": "Speichern", - "Save as": "Speichern als", - "Save as data URL": "Als Daten-URL speichern", + "Save As": "Speichern als", + "Save As Data URL": "Als Daten-URL speichern", "Save as type:": "Speichern unter:", "Save layers:": "Ebenen speichern:", "Save resolution:": "Auflösung speichern:", "Scroll down": "Runterscrollen", "Scroll up": "Hochscrollen", "Search": "Suche", - "Search images": "Bilder suchen", - "Select all": "Alles auswählen", + "Search Images": "Bilder suchen", + "Select All": "Alles auswählen", "Select object tool": "Wählen Sie das Objektwerkzeug aus", "Selected": "Ausgewählt", "Selection": "Auswahl", diff --git a/src/js/languages/empty.json b/src/js/languages/empty.json index 114b566..f43f3a6 100644 --- a/src/js/languages/empty.json +++ b/src/js/languages/empty.json @@ -11,7 +11,7 @@ "Arial": "", "Arrow": "", "Author:": "", - "Auto adjust colors": "", + "Auto Adjust Colors": "", "Average:": "", "BMP - Windows Bitmap": "", "Base": "", @@ -33,7 +33,7 @@ "Brush": "", "Bulge\/Pinch tool": "", "Burn": "", - "CSS filters": "", + "CSS Filters": "", "Can not animate 1 layer.": "", "Can not find previous layer.": "", "Cancel": "", @@ -50,20 +50,20 @@ "Color #": "", "Color Zoom": "", "Color alpha value can not be zero.": "", - "Color corrections": "", - "Color palette": "", - "Color to alpha": "", + "Color Corrections": "", + "Color Palette": "", + "Color to Alpha": "", "Color zoom": "", "Color:": "", "Colors": "", "Colors:": "", "Composition": "", "Composition:": "", - "Content fill": "", + "Content Fill": "", "Contrast": "", "Contrast:": "", - "Convert to raster": "", - "Copy selection": "", + "Convert to Raster": "", + "Copy Selection": "", "Copy:": "", "Courier": "", "Crop": "", @@ -74,12 +74,12 @@ "Custom": "", "Data URL": "", "Data URL:": "", - "Decrease color depth": "", + "Decrease Color Depth": "", "Default": "", "Degree:": "", "Del": "", "Delete": "", - "Delete selection": "", + "Delete Selection": "", "Denoise": "", "Desaturate": "", "Description:": "", @@ -119,7 +119,7 @@ "File size:": "", "Fill": "", "Fit": "", - "Fit window": "", + "Fit Window": "", "Flatten Image": "", "Flip": "", "FloydSteinberg-serpentine": "", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "", "JSON - Full layers data": "", "Japanese": "", - "Key-points": "", + "Key-Points": "", "Keyboard Shortcuts": "", "Keyword:": "", "Korean": "", @@ -201,7 +201,7 @@ "Negative": "", "New": "", "New file": "", - "New from selection": "", + "New from Selection": "", "New layer": "", "New width can not be smaller then current width": "", "Normal": "", @@ -219,7 +219,7 @@ "Open File": "", "Open URL": "", "Open data URL": "", - "Original size": "", + "Original Size": "", "PNG - Portable Network Graphics": "", "Palette": "", "Parameter #1:": "", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "", "Print": "", "Quality:": "", - "Quick load": "", - "Quick save": "", + "Quick Load": "", + "Quick Save": "", "Radial": "", "Radial gradient": "", "Radius:": "", @@ -253,18 +253,18 @@ "Replace Color": "", "Replace color": "", "Replacement:": "", - "Report issues": "", + "Report Issues": "", "Resample - Hermite": "", "Reset": "", "Reset zoom level": "", "Resize": "", "Resized as background": "", "Resolution:": "", - "Restore alpha": "", + "Restore Alpha": "", "Right": "", "Right angle:": "", "Rotate": "", - "Rotate is not supported on this type of object. Convert to raster?": "", + "Rotate is not supported on this type of object. Convert to Raster?": "", "Rotate left": "", "Rotate:": "", "Russian": "", @@ -272,16 +272,16 @@ "Saturate": "", "Saturation:": "", "Save": "", - "Save as": "", - "Save as data URL": "", + "Save As": "", + "Save As Data URL": "", "Save as type:": "", "Save layers:": "", "Save resolution:": "", "Scroll down": "", "Scroll up": "", "Search": "", - "Search images": "", - "Select all": "", + "Search Images": "", + "Select All": "", "Select object tool": "", "Selected": "", "Selection": "", diff --git a/src/js/languages/es.json b/src/js/languages/es.json index 03aa08b..4728d46 100644 --- a/src/js/languages/es.json +++ b/src/js/languages/es.json @@ -11,7 +11,7 @@ "Arial": "Arial", "Arrow": "Flecha", "Author:": "Autor:", - "Auto adjust colors": "Ajuste automático de colores", + "Auto Adjust Colors": "Ajuste automático de colores", "Average:": "Promedio:", "BMP - Windows Bitmap": "BMP - Mapa de bits de Windows", "Base": "Base", @@ -33,7 +33,7 @@ "Brush": "Cepillo", "Bulge\/Pinch tool": "Herramienta de abombamiento \/ pellizco", "Burn": "Quemar", - "CSS filters": "Filtros CSS", + "CSS Filters": "Filtros CSS", "Can not animate 1 layer.": "No se puede animar 1 capa.", "Can not find previous layer.": "No se puede encontrar la capa anterior.", "Cancel": "Cancelar", @@ -50,20 +50,20 @@ "Color #": "Color #", "Color Zoom": "Zoom de color", "Color alpha value can not be zero.": "El valor alfa del color no puede ser cero.", - "Color corrections": "Correcciones de color", - "Color palette": "Paleta de color", - "Color to alpha": "Color a alfa", + "Color Corrections": "Correcciones de color", + "Color Palette": "Paleta de color", + "Color to Alpha": "Color a alfa", "Color zoom": "Zoom a color", "Color:": "Color:", "Colors": "Colores", "Colors:": "Colores:", "Composition": "Composición", "Composition:": "Composición:", - "Content fill": "Relleno de contenido", + "Content Fill": "Relleno de contenido", "Contrast": "Contraste", "Contrast:": "Contraste:", - "Convert to raster": "Convertir a trama", - "Copy selection": "Copiar selección", + "Convert to Raster": "Convertir a trama", + "Copy Selection": "Copiar selección", "Copy:": "Dupdo:", "Courier": "mensajero", "Crop": "Cultivo", @@ -74,12 +74,12 @@ "Custom": "Personalizado", "Data URL": "URL de datos", "Data URL:": "URL de datos:", - "Decrease color depth": "Disminuir la profundidad de color", + "Decrease Color Depth": "Disminuir la profundidad de color", "Default": "Defecto", "Degree:": "La licenciatura:", "Del": "Del", "Delete": "Borrar", - "Delete selection": "Eliminar selección", + "Delete Selection": "Eliminar selección", "Denoise": "Denoise", "Desaturate": "Desaturar", "Description:": "Descripción:", @@ -119,7 +119,7 @@ "File size:": "Tamaño del archivo:", "Fill": "Llenar", "Fit": "Ajuste", - "Fit window": "Ajustar ventana", + "Fit Window": "Ajustar ventana", "Flatten Image": "Imagen aplanada", "Flip": "Dar la vuelta", "FloydSteinberg-serpentine": "FloydSteinberg-serpentina", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "JPG, calidad de WEBP:", "JSON - Full layers data": "JSON: datos de capas completas", "Japanese": "japonés", - "Key-points": "Puntos clave", + "Key-Points": "Puntos clave", "Keyboard Shortcuts": "Atajos de teclado", "Keyword:": "Palabra clave:", "Korean": "coreano", @@ -201,7 +201,7 @@ "Negative": "Negativo", "New": "Nuevo", "New file": "Archivo nuevo", - "New from selection": "Nuevo de la selección", + "New from Selection": "Nuevo de la selección", "New layer": "Nueva capa", "New width can not be smaller then current width": "El nuevo ancho no puede ser más pequeño que el ancho actual", "Normal": "Normal", @@ -219,7 +219,7 @@ "Open File": "Abrir documento", "Open URL": "URL abierta", "Open data URL": "URL de datos abiertos", - "Original size": "Tamaño original", + "Original Size": "Tamaño original", "PNG - Portable Network Graphics": "PNG - Gráficos de red portátiles", "Palette": "Paleta", "Parameter #1:": "Parámetro # 1:", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "La capa anterior debe ser una imagen, conviértala a raster para aplicar esta herramienta.", "Print": "Impresión", "Quality:": "Calidad:", - "Quick load": "Carga rápida", - "Quick save": "Guardado rápido", + "Quick Load": "Carga rápida", + "Quick Save": "Guardado rápido", "Radial": "Radial", "Radial gradient": "Gradiente radial", "Radius:": "Radio:", @@ -253,18 +253,18 @@ "Replace Color": "Reemplazar color", "Replace color": "Reemplazar color", "Replacement:": "Reemplazo:", - "Report issues": "Informar problemas", + "Report Issues": "Informar problemas", "Resample - Hermite": "Remuestreo - Hermite", "Reset": "Reiniciar", "Reset zoom level": "Restablecer nivel de zoom", "Resize": "Cambiar el tamaño", "Resized as background": "Redimensionado como fondo", "Resolution:": "Resolución:", - "Restore alpha": "Restaurar alfa", + "Restore Alpha": "Restaurar alfa", "Right": "Derecha", "Right angle:": "Ángulo recto:", "Rotate": "Girar", - "Rotate is not supported on this type of object. Convert to raster?": "Girar no es compatible con este tipo de objeto. Convertir a raster?", + "Rotate is not supported on this type of object. Convert to Raster?": "Girar no es compatible con este tipo de objeto. Convertir a raster?", "Rotate left": "Girar a la izquierda", "Rotate:": "Girar:", "Russian": "ruso", @@ -272,16 +272,16 @@ "Saturate": "Saturar", "Saturation:": "Saturación:", "Save": "Salvar", - "Save as": "Guardar como", - "Save as data URL": "Guardar como URL de datos", + "Save As": "Guardar como", + "Save As Data URL": "Guardar como URL de datos", "Save as type:": "Guardar como tipo:", "Save layers:": "Guardar capas:", "Save resolution:": "Guardar resolución:", "Scroll down": "Desplazarse hacia abajo", "Scroll up": "Desplazarse hacia arriba", "Search": "Buscar", - "Search images": "Buscar imágenes", - "Select all": "Seleccionar todo", + "Search Images": "Buscar imágenes", + "Select All": "Seleccionar todo", "Select object tool": "Seleccionar herramienta de objeto", "Selected": "Seleccionado", "Selection": "Selección", diff --git a/src/js/languages/fr.json b/src/js/languages/fr.json index 0301735..f6c2179 100644 --- a/src/js/languages/fr.json +++ b/src/js/languages/fr.json @@ -11,7 +11,7 @@ "Arial": "Arial", "Arrow": "Flèche", "Author:": "Auteur :", - "Auto adjust colors": "Ajuster automatiquement les couleurs", + "Auto Adjust Colors": "Ajuster automatiquement les couleurs", "Average:": "Moyenne :", "BMP - Windows Bitmap": "BMP - Windows Bitmap", "Base": "Base", @@ -33,7 +33,7 @@ "Brush": "Pinceau", "Bulge\/Pinch tool": "Déformer \/ Bosse", "Burn": "Brûler", - "CSS filters": "Filtres CSS", + "CSS Filters": "Filtres CSS", "Can not animate 1 layer.": "Impossible d'animer une couche.", "Can not find previous layer.": "Impossible de trouver la couche précédente.", "Cancel": "Annuler", @@ -50,20 +50,20 @@ "Color #": "Couleur #", "Color Zoom": "Eclat", "Color alpha value can not be zero.": "La valeur alpha de la couleur ne peut pas être nulle.", - "Color corrections": "Correction des couleurs", - "Color palette": "Palette de couleurs", - "Color to alpha": "Rendre transparent", + "Color Corrections": "Correction des couleurs", + "Color Palette": "Palette de couleurs", + "Color to Alpha": "Rendre transparent", "Color zoom": "Zoom couleur", "Color:": "Couleur :", "Colors": "Couleurs", "Colors:": "Couleurs :", "Composition": "Composition", "Composition:": "Composition :", - "Content fill": "Remplissage de contenu", + "Content Fill": "Remplissage de contenu", "Contrast": "Contraste", "Contrast:": "Contraste :", - "Convert to raster": "Convertir en raster", - "Copy selection": "Copier", + "Convert to Raster": "Convertir en raster", + "Copy Selection": "Copier", "Copy:": "Copie:", "Courier": "Courier", "Crop": "Rogner selon la sélection", @@ -74,12 +74,12 @@ "Custom": "Personnalisé", "Data URL": "URL de données", "Data URL:": "URL de données:", - "Decrease color depth": "Postériser", + "Decrease Color Depth": "Postériser", "Default": "Défaut", "Degree:": "Degré:", "Del": "Supp", "Delete": "Supprimer", - "Delete selection": "Effacer la sélection", + "Delete Selection": "Effacer la sélection", "Denoise": "Réduire le bruit", "Desaturate": "Désaturer", "Description:": "Description :", @@ -119,7 +119,7 @@ "File size:": "Taille du fichier :", "Fill": "Remplir", "Fit": "Fenêtre", - "Fit window": "Remplir la fenêtre", + "Fit Window": "Remplir la fenêtre", "Flatten Image": "Fusionner tous les calques", "Flip": "Retourner", "FloydSteinberg-serpentine": "FloydSteinberg-serpentine", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "JPG, qualité WEBP:", "JSON - Full layers data": "JSON - Données avec tous les calques", "Japanese": "Japonais", - "Key-points": "Points clés", + "Key-Points": "Points clés", "Keyboard Shortcuts": "Raccourcis clavier", "Keyword:": "Mot-clé:", "Korean": "Coréen", @@ -201,7 +201,7 @@ "Negative": "Négatif", "New": "Nouveau...", "New file": "Nouveau fichier", - "New from selection": "Nouveau à partir de la sélection", + "New from Selection": "Nouveau à partir de la sélection", "New layer": "Nouveau calque", "New width can not be smaller then current width": "La nouvelle largeur ne peut pas être plus petite que la largeur actuelle", "Normal": "Normal", @@ -219,7 +219,7 @@ "Open File": "Fichier ouvert", "Open URL": "Ouvrir depuis le Web", "Open data URL": "URL de données ouvertes", - "Original size": "Format original", + "Original Size": "Format original", "PNG - Portable Network Graphics": "PNG - Portable Network Graphics", "Palette": "Palette", "Parameter #1:": "Paramètre n ° 1:", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "La couche précédente doit être une image, la convertir en raster pour appliquer cet outil.", "Print": "Imprimer", "Quality:": "Qualité :", - "Quick load": "Chargement rapide", - "Quick save": "Sauvegarde rapide", + "Quick Load": "Chargement rapide", + "Quick Save": "Sauvegarde rapide", "Radial": "Radial", "Radial gradient": "Gradient radial", "Radius:": "Rayon :", @@ -253,18 +253,18 @@ "Replace Color": "Remplacer une couleur", "Replace color": "Remplacer une couleur", "Replacement:": "Remplacement :", - "Report issues": "Signaler un problème", + "Report Issues": "Signaler un problème", "Resample - Hermite": "Rééchantillonnage", "Reset": "Réinitialiser", "Reset zoom level": "Réinitialiser le niveau de zoom", "Resize": "Redimensionner", "Resized as background": "Redimensionné comme arrière-plan", "Resolution:": "Taille :", - "Restore alpha": "Restaurer le niveau alpha", + "Restore Alpha": "Restaurer le niveau alpha", "Right": "à droite", "Right angle:": "Angle droit:", "Rotate": "Faire pivoter", - "Rotate is not supported on this type of object. Convert to raster?": "La rotation n'est pas prise en charge sur ce type d'objet. Convertir en raster?", + "Rotate is not supported on this type of object. Convert to Raster?": "La rotation n'est pas prise en charge sur ce type d'objet. Convertir en raster?", "Rotate left": "Faire pivoter à gauche", "Rotate:": "Tourner:", "Russian": "Russe", @@ -272,16 +272,16 @@ "Saturate": "Saturer", "Saturation:": "Saturation :", "Save": "Enregistrer", - "Save as": "Enregistrer sous", - "Save as data URL": "Enregistrer comme URL de données", + "Save As": "Enregistrer sous", + "Save As Data URL": "Enregistrer comme URL de données", "Save as type:": "Enregistrer comme type :", "Save layers:": "Enregistrer les calques :", "Save resolution:": "Se souvenir de la taille :", "Scroll down": "Défiler vers le bas", "Scroll up": "Défiler", "Search": "Chercher", - "Search images": "Rechercher des images", - "Select all": "Sélectionner tout", + "Search Images": "Rechercher des images", + "Select All": "Sélectionner tout", "Select object tool": "Déplacer les pixels sélectionnés", "Selected": "Choisi", "Selection": "Sélection", diff --git a/src/js/languages/it.json b/src/js/languages/it.json index 7947dc3..9be7876 100644 --- a/src/js/languages/it.json +++ b/src/js/languages/it.json @@ -11,7 +11,7 @@ "Arial": "Arial", "Arrow": "Freccia", "Author:": "Autore:", - "Auto adjust colors": "Regola automaticamente i colori", + "Auto Adjust Colors": "Regola automaticamente i colori", "Average:": "Media:", "BMP - Windows Bitmap": "BMP - Bitmap di Windows", "Base": "Base", @@ -33,7 +33,7 @@ "Brush": "Spazzola", "Bulge\/Pinch tool": "Bulge \/ Pinch tool", "Burn": "Bruciare", - "CSS filters": "Filtri CSS", + "CSS Filters": "Filtri CSS", "Can not animate 1 layer.": "Impossibile animare 1 livello.", "Can not find previous layer.": "Impossibile trovare il livello precedente.", "Cancel": "Annulla", @@ -50,20 +50,20 @@ "Color #": "Colore #", "Color Zoom": "Zoom a colori", "Color alpha value can not be zero.": "Il valore alfa del colore non può essere zero.", - "Color corrections": "Correzioni di colore", - "Color palette": "Palette dei colori", - "Color to alpha": "Colore ad alfa", + "Color Corrections": "Correzioni di colore", + "Color Palette": "Palette dei colori", + "Color to Alpha": "Colore ad alfa", "Color zoom": "Zoom a colori", "Color:": "Colore:", "Colors": "Colori", "Colors:": "Colori:", "Composition": "Composizione", "Composition:": "Composizione:", - "Content fill": "Riempimento del contenuto", + "Content Fill": "Riempimento del contenuto", "Contrast": "Contrasto", "Contrast:": "Contrasto:", - "Convert to raster": "Converti in raster", - "Copy selection": "Copia selezione", + "Convert to Raster": "Converti in raster", + "Copy Selection": "Copia selezione", "Copy:": "Copia:", "Courier": "Corriere", "Crop": "raccolto", @@ -74,12 +74,12 @@ "Custom": "costume", "Data URL": "URL dei dati", "Data URL:": "URL dei dati:", - "Decrease color depth": "Diminuisci la profondità del colore", + "Decrease Color Depth": "Diminuisci la profondità del colore", "Default": "Predefinito", "Degree:": "Grado:", "Del": "del", "Delete": "Elimina", - "Delete selection": "Elimina selezione", + "Delete Selection": "Elimina selezione", "Denoise": "Denoise", "Desaturate": "Togli saturazione", "Description:": "Descrizione:", @@ -119,7 +119,7 @@ "File size:": "Dimensione del file:", "Fill": "Riempire", "Fit": "In forma", - "Fit window": "Finestra adatta", + "Fit Window": "Finestra adatta", "Flatten Image": "Immagine piatta", "Flip": "Flip", "FloydSteinberg-serpentine": "FloydSteinberg-serpentina", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "JPG, qualità WEBP:", "JSON - Full layers data": "JSON - Dati a strati completi", "Japanese": "giapponese", - "Key-points": "Punti chiave", + "Key-Points": "Punti chiave", "Keyboard Shortcuts": "Tasti rapidi", "Keyword:": "Parola chiave:", "Korean": "coreano", @@ -201,7 +201,7 @@ "Negative": "Negativo", "New": "Nuovo", "New file": "Nuovo file", - "New from selection": "Novità dalla selezione", + "New from Selection": "Novità dalla selezione", "New layer": "Nuovo strato", "New width can not be smaller then current width": "La nuova larghezza non può essere più piccola della larghezza attuale", "Normal": "Normale", @@ -219,7 +219,7 @@ "Open File": "Apri il file", "Open URL": "Apri URL", "Open data URL": "Apri l'URL dei dati", - "Original size": "Misura originale", + "Original Size": "Misura originale", "PNG - Portable Network Graphics": "PNG - Portable Network Graphics", "Palette": "Tavolozza", "Parameter #1:": "Parametro n. 1:", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "Il livello precedente deve essere un'immagine, convertirlo in raster per applicare questo strumento.", "Print": "Stampare", "Quality:": "Qualità:", - "Quick load": "Carico rapido", - "Quick save": "Salvataggio veloce", + "Quick Load": "Carico rapido", + "Quick Save": "Salvataggio veloce", "Radial": "Radiale", "Radial gradient": "Gradiente radiale", "Radius:": "Raggio:", @@ -253,18 +253,18 @@ "Replace Color": "Sostituisci colore", "Replace color": "Sostituisci colore", "Replacement:": "Sostituzione:", - "Report issues": "Segnala problemi", + "Report Issues": "Segnala problemi", "Resample - Hermite": "Ricampionare - Hermite", "Reset": "Reset", "Reset zoom level": "Reimposta il livello di zoom", "Resize": "Ridimensiona", "Resized as background": "Ridimensionato come sfondo", "Resolution:": "Risoluzione:", - "Restore alpha": "Ripristina alpha", + "Restore Alpha": "Ripristina alpha", "Right": "Destra", "Right angle:": "Angolo retto:", "Rotate": "Ruotare", - "Rotate is not supported on this type of object. Convert to raster?": "Ruota non è supportato su questo tipo di oggetto. Converti in raster?", + "Rotate is not supported on this type of object. Convert to Raster?": "Ruota non è supportato su questo tipo di oggetto. Converti in raster?", "Rotate left": "Gira a sinistra", "Rotate:": "Ruotare:", "Russian": "russo", @@ -272,16 +272,16 @@ "Saturate": "Saturare", "Saturation:": "Saturazione:", "Save": "Salvare", - "Save as": "Salva come", - "Save as data URL": "Salva come URL dei dati", + "Save As": "Salva come", + "Save As Data URL": "Salva come URL dei dati", "Save as type:": "Salva come tipo:", "Save layers:": "Salva livelli:", "Save resolution:": "Salva risoluzione:", "Scroll down": "Scorri verso il basso", "Scroll up": "Scorrere verso l'alto", "Search": "Ricerca", - "Search images": "Cerca immagini", - "Select all": "Seleziona tutto", + "Search Images": "Cerca immagini", + "Select All": "Seleziona tutto", "Select object tool": "Seleziona lo strumento oggetto", "Selected": "Selezionato", "Selection": "Selezione", diff --git a/src/js/languages/ja.json b/src/js/languages/ja.json index 1f163e8..29a7992 100644 --- a/src/js/languages/ja.json +++ b/src/js/languages/ja.json @@ -11,7 +11,7 @@ "Arial": "Arial", "Arrow": "矢印", "Author:": "著者:", - "Auto adjust colors": "色を自動調整する", + "Auto Adjust Colors": "色を自動調整する", "Average:": "平均:", "BMP - Windows Bitmap": "BMP - Windowsビットマップ", "Base": "ベース", @@ -33,7 +33,7 @@ "Brush": "みがきます", "Bulge\/Pinch tool": "バルジ\/ピンチツール", "Burn": "燃やす", - "CSS filters": "CSSフィルタ", + "CSS Filters": "CSSフィルタ", "Can not animate 1 layer.": "1つのレイヤーをアニメートできません。", "Can not find previous layer.": "以前のレイヤーが見つかりません。", "Cancel": "キャンセル", @@ -50,20 +50,20 @@ "Color #": "色 #", "Color Zoom": "カラーズーム", "Color alpha value can not be zero.": "色のアルファ値はゼロにすることはできません。", - "Color corrections": "色補正", - "Color palette": "カラーパレット", - "Color to alpha": "カラーからアルファ", + "Color Corrections": "色補正", + "Color Palette": "カラーパレット", + "Color to Alpha": "カラーからアルファ", "Color zoom": "カラーズーム", "Color:": "色:", "Colors": "色", "Colors:": "色:", "Composition": "組成", "Composition:": "組成:", - "Content fill": "コンテンツの埋め込み", + "Content Fill": "コンテンツの埋め込み", "Contrast": "コントラスト", "Contrast:": "コントラスト:", - "Convert to raster": "ラスタに変換する", - "Copy selection": "選択コピー", + "Convert to Raster": "ラスタに変換する", + "Copy Selection": "選択コピー", "Copy:": "コピー:", "Courier": "宅配便", "Crop": "作物", @@ -74,12 +74,12 @@ "Custom": "カスタム", "Data URL": "データURL", "Data URL:": "データURL:", - "Decrease color depth": "色深度を減らす", + "Decrease Color Depth": "色深度を減らす", "Default": "デフォルト", "Degree:": "度:", "Del": "デル", "Delete": "削除", - "Delete selection": "選択を削除する", + "Delete Selection": "選択を削除する", "Denoise": "デノアーズ", "Desaturate": "不飽和化する", "Description:": "説明:", @@ -119,7 +119,7 @@ "File size:": "ファイルサイズ:", "Fill": "塗りつぶす", "Fit": "フィット", - "Fit window": "ウィンドウに合わせる", + "Fit Window": "ウィンドウに合わせる", "Flatten Image": "画像を平ら", "Flip": "フリップ", "FloydSteinberg-serpentine": "FloydSteinberg-蛇紋文字", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "JPG、WEBP品質:", "JSON - Full layers data": "JSON - フルレイヤーデータ", "Japanese": "日本語", - "Key-points": "キーポイント", + "Key-Points": "キーポイント", "Keyboard Shortcuts": "キーボードショートカット", "Keyword:": "キーワード:", "Korean": "韓国語", @@ -201,7 +201,7 @@ "Negative": "負", "New": "新しい", "New file": "新しいファイル", - "New from selection": "新しい選択から", + "New from Selection": "新しい選択から", "New layer": "新しいレイヤー", "New width can not be smaller then current width": "新しい幅は現在の幅より小さくすることはできません", "Normal": "ノーマル", @@ -219,7 +219,7 @@ "Open File": "ファイルを開く", "Open URL": "URLを開く", "Open data URL": "公開データURL", - "Original size": "オリジナルサイズ", + "Original Size": "オリジナルサイズ", "PNG - Portable Network Graphics": "PNG - ポータブルネットワークグラフィックス", "Palette": "パレット", "Parameter #1:": "パラメータ#1:", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "前のレイヤーはイメージでなければならず、このツールを適用するにはラスターに変換する必要があります。", "Print": "印刷", "Quality:": "品質:", - "Quick load": "クイックロード", - "Quick save": "クイックセーブ", + "Quick Load": "クイックロード", + "Quick Save": "クイックセーブ", "Radial": "ラジアル", "Radial gradient": "放射グラジエント", "Radius:": "半径:", @@ -253,18 +253,18 @@ "Replace Color": "色を置き換える", "Replace color": "色を交換する", "Replacement:": "置換:", - "Report issues": "レポートの問題", + "Report Issues": "レポートの問題", "Resample - Hermite": "リサンプル - エルミート", "Reset": "リセット", "Reset zoom level": "ズームレベルのリセット", "Resize": "サイズを変更する", "Resized as background": "背景としてサイズ変更", "Resolution:": "解決:", - "Restore alpha": "アルファを復元する", + "Restore Alpha": "アルファを復元する", "Right": "右", "Right angle:": "直角:", "Rotate": "回転する", - "Rotate is not supported on this type of object. Convert to raster?": "このタイプのオブジェクトでは、回転はサポートされていません。ラスタに変換しますか?", + "Rotate is not supported on this type of object. Convert to Raster?": "このタイプのオブジェクトでは、回転はサポートされていません。ラスタに変換しますか?", "Rotate left": "左に回転", "Rotate:": "回転:", "Russian": "ロシア", @@ -272,16 +272,16 @@ "Saturate": "飽和", "Saturation:": "飽和:", "Save": "セーブ", - "Save as": "名前を付けて保存", - "Save as data URL": "データURLとして保存", + "Save As": "名前を付けて保存", + "Save As Data URL": "データURLとして保存", "Save as type:": "タイプとして保存:", "Save layers:": "レイヤーを保存:", "Save resolution:": "解像度を保存:", "Scroll down": "下へスクロール", "Scroll up": "スクロールアップする", "Search": "サーチ", - "Search images": "画像を検索する", - "Select all": "すべて選択", + "Search Images": "画像を検索する", + "Select All": "すべて選択", "Select object tool": "オブジェクトツールを選択", "Selected": "選択された", "Selection": "選択", diff --git a/src/js/languages/ko.json b/src/js/languages/ko.json index 0791bc4..29a8bd1 100644 --- a/src/js/languages/ko.json +++ b/src/js/languages/ko.json @@ -11,7 +11,7 @@ "Arial": "Arial", "Arrow": "화살", "Author:": "저자:", - "Auto adjust colors": "색상 자동 조정", + "Auto Adjust Colors": "색상 자동 조정", "Average:": "평균:", "BMP - Windows Bitmap": "BMP - Windows 비트 맵", "Base": "베이스", @@ -33,7 +33,7 @@ "Brush": "브러시", "Bulge\/Pinch tool": "벌지 \/ 핀치 도구", "Burn": "화상", - "CSS filters": "CSS 필터", + "CSS Filters": "CSS 필터", "Can not animate 1 layer.": "1 개의 레이어를 애니메이션으로 만들 수 없습니다.", "Can not find previous layer.": "이전 레이어를 찾을 수 없습니다.", "Cancel": "취소", @@ -50,20 +50,20 @@ "Color #": "색깔 #", "Color Zoom": "색상 확대 \/ 축소", "Color alpha value can not be zero.": "색상 알파 값은 0 일 수 없습니다.", - "Color corrections": "색상 보정", - "Color palette": "색상 팔레트", - "Color to alpha": "알파에서 색상으로", + "Color Corrections": "색상 보정", + "Color Palette": "색상 팔레트", + "Color to Alpha": "알파에서 색상으로", "Color zoom": "색상 확대 \/ 축소", "Color:": "색깔:", "Colors": "그림 물감", "Colors:": "그림 물감:", "Composition": "구성", "Composition:": "구성:", - "Content fill": "콘텐츠 채우기", + "Content Fill": "콘텐츠 채우기", "Contrast": "대조", "Contrast:": "대조:", - "Convert to raster": "래스터로 변환", - "Copy selection": "선택 항목 복사", + "Convert to Raster": "래스터로 변환", + "Copy Selection": "선택 항목 복사", "Copy:": "부:", "Courier": "급사", "Crop": "수확고", @@ -74,12 +74,12 @@ "Custom": "관습", "Data URL": "데이터 URL", "Data URL:": "데이터 URL :", - "Decrease color depth": "색상 심도 감소", + "Decrease Color Depth": "색상 심도 감소", "Default": "태만", "Degree:": "정도:", "Del": "델", "Delete": "지우다", - "Delete selection": "선택 항목 삭제", + "Delete Selection": "선택 항목 삭제", "Denoise": "데니스 이스", "Desaturate": "불포화", "Description:": "기술:", @@ -119,7 +119,7 @@ "File size:": "파일 크기 :", "Fill": "가득 따르다", "Fit": "적당한", - "Fit window": "창에 맞추기", + "Fit Window": "창에 맞추기", "Flatten Image": "납작한 이미지", "Flip": "튀기다", "FloydSteinberg-serpentine": "FloydSteinberg- 사문석", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "JPG, WEBP 품질 :", "JSON - Full layers data": "JSON - 전체 레이어 데이터", "Japanese": "일본어", - "Key-points": "키 포인트", + "Key-Points": "키 포인트", "Keyboard Shortcuts": "키보드 단축키", "Keyword:": "예어:", "Korean": "한국어", @@ -201,7 +201,7 @@ "Negative": "부정", "New": "새로운", "New file": "새로운 파일", - "New from selection": "선택 항목의 새로운 기능", + "New from Selection": "선택 항목의 새로운 기능", "New layer": "새 레이어", "New width can not be smaller then current width": "새 너비는 현재 너비보다 작을 수 없습니다.", "Normal": "표준", @@ -219,7 +219,7 @@ "Open File": "파일 열기", "Open URL": "URL 열기", "Open data URL": "공개 데이터 URL", - "Original size": "원본 크기", + "Original Size": "원본 크기", "PNG - Portable Network Graphics": "PNG - 휴대용 네트워크 그래픽", "Palette": "팔레트", "Parameter #1:": "매개 변수 # 1 :", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "이전 레이어는 이미지 여야하며이 도구를 적용하려면 래스터로 변환해야합니다.", "Print": "인쇄", "Quality:": "품질:", - "Quick load": "빠른로드", - "Quick save": "빠른 저장", + "Quick Load": "빠른로드", + "Quick Save": "빠른 저장", "Radial": "방사형", "Radial gradient": "방사형 그래디언트", "Radius:": "반지름:", @@ -253,18 +253,18 @@ "Replace Color": "색상 바꾸기", "Replace color": "색상 바꾸기", "Replacement:": "바꿔 놓음:", - "Report issues": "문제 신고", + "Report Issues": "문제 신고", "Resample - Hermite": "리 샘플 - Hermite", "Reset": "다시 놓기", "Reset zoom level": "확대 \/ 축소 레벨 재설정", "Resize": "크기 조정", "Resized as background": "배경으로 크기 조정", "Resolution:": "해결:", - "Restore alpha": "알파 복원", + "Restore Alpha": "알파 복원", "Right": "권리", "Right angle:": "직각:", "Rotate": "회전", - "Rotate is not supported on this type of object. Convert to raster?": "회전은이 유형의 객체에서 지원되지 않습니다. 래스터로 변환 하시겠습니까?", + "Rotate is not supported on this type of object. Convert to Raster?": "회전은이 유형의 객체에서 지원되지 않습니다. 래스터로 변환 하시겠습니까?", "Rotate left": "왼쪽으로 회전", "Rotate:": "회전 :", "Russian": "러시아인", @@ -272,16 +272,16 @@ "Saturate": "가득한", "Saturation:": "포화:", "Save": "구하다", - "Save as": "다른 이름으로 저장", - "Save as data URL": "데이터 URL로 저장", + "Save As": "다른 이름으로 저장", + "Save As Data URL": "데이터 URL로 저장", "Save as type:": "유형으로 저장 :", "Save layers:": "레이어 저장 :", "Save resolution:": "해상도 절약 :", "Scroll down": "아래로 스크롤", "Scroll up": "스크롤", "Search": "수색", - "Search images": "이미지 검색", - "Select all": "모두 선택", + "Search Images": "이미지 검색", + "Select All": "모두 선택", "Select object tool": "오브젝트 도구 선택", "Selected": "선택된", "Selection": "선택", diff --git a/src/js/languages/lt.json b/src/js/languages/lt.json index 3a2eb13..075c674 100644 --- a/src/js/languages/lt.json +++ b/src/js/languages/lt.json @@ -11,7 +11,7 @@ "Arial": "Arial", "Arrow": "Rodyklė", "Author:": "Autorius:", - "Auto adjust colors": "Sureguliuoti spalvas", + "Auto Adjust Colors": "Sureguliuoti spalvas", "Average:": "Vidurkis:", "BMP - Windows Bitmap": "BMP - Windows Bitmap", "Base": "Bazė", @@ -33,7 +33,7 @@ "Brush": "Šepetys", "Bulge\/Pinch tool": "Bumbulas\/Žiupsnelis", "Burn": "Deginti", - "CSS filters": "CSS filtrai", + "CSS Filters": "CSS filtrai", "Can not animate 1 layer.": "Negalima animuoti 1 sluoksniu.", "Can not find previous layer.": "Negaliu rasti ankstesnio sluoksnio.", "Cancel": "Atšaukti", @@ -50,20 +50,20 @@ "Color #": "Spalva #", "Color Zoom": "Spalvų mastelio keitimas", "Color alpha value can not be zero.": "Spalvų alfa vertė negali būti lygi nuliui.", - "Color corrections": "Spalvų korekcijos", - "Color palette": "Spalvų paletė", - "Color to alpha": "Spalva alfa", + "Color Corrections": "Spalvų korekcijos", + "Color Palette": "Spalvų paletė", + "Color to Alpha": "Spalva alfa", "Color zoom": "Spalvų priartinimas", "Color:": "Spalva:", "Colors": "Spalvos", "Colors:": "Spalvos:", "Composition": "Kompozicija", "Composition:": "Sudėtis:", - "Content fill": "Turinio užpildymas", + "Content Fill": "Turinio užpildymas", "Contrast": "Kontrastas", "Contrast:": "Kontrastas:", - "Convert to raster": "Konvertuoti į rastrą", - "Copy selection": "Kopijuoti pasirinkimą", + "Convert to Raster": "Konvertuoti į rastrą", + "Copy Selection": "Kopijuoti pasirinkimą", "Copy:": "Kopijuoti:", "Courier": "Courier", "Crop": "Iškirpti", @@ -74,12 +74,12 @@ "Custom": "Kitas", "Data URL": "Duomenų adresas", "Data URL:": "Duomenų adresas:", - "Decrease color depth": "Sumažinti spalvų gylį", + "Decrease Color Depth": "Sumažinti spalvų gylį", "Default": "Numatytas", "Degree:": "Laipsnis:", "Del": "Del", "Delete": "Ištrinti", - "Delete selection": "Ištrinti pasirinkimą", + "Delete Selection": "Ištrinti pasirinkimą", "Denoise": "Sumažinti triukšmą", "Desaturate": "Sumažinti ryškumą", "Description:": "Aprašymas:", @@ -119,7 +119,7 @@ "File size:": "Failo dydis:", "Fill": "Pildyti", "Fit": "Talpinti", - "Fit window": "Tinkamas langas", + "Fit Window": "Tinkamas langas", "Flatten Image": "Išlyginti vaizdą", "Flip": "Apversti", "FloydSteinberg-serpentine": "Floydsteinberg-serpentinas", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "Jpg, webp kokybės:", "JSON - Full layers data": "JSON - sluoksnių duomenys", "Japanese": "Japonų kalba", - "Key-points": "Pagrindiniai klausimai", + "Key-Points": "Pagrindiniai klausimai", "Keyboard Shortcuts": "Klaviatūros nuorodos", "Keyword:": "Raktinis žodis:", "Korean": "Korėjiečių kalba", @@ -201,7 +201,7 @@ "Negative": "Neigiamas", "New": "Naujas", "New file": "Naujas failas", - "New from selection": "Nauja iš pasirinkimo", + "New from Selection": "Nauja iš pasirinkimo", "New layer": "Nauja sluoksnis", "New width can not be smaller then current width": "Naujas plotis negali būti mažesnis nei dabartinis plotis", "Normal": "Normalus", @@ -219,7 +219,7 @@ "Open File": "Atidaryti failą", "Open URL": "Atidaryti url", "Open data URL": "Atidaryti duomenų url", - "Original size": "Originalus dydis", + "Original Size": "Originalus dydis", "PNG - Portable Network Graphics": "PNG - portable network graphics", "Palette": "Paletė", "Parameter #1:": "Parametras Nr. 1:", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "Ankstesnis sluoksnis turi būti vaizdas, konvertuoti jį į rastrą, kad būtų taikomas šis įrankis.", "Print": "Spausdinti", "Quality:": "Kokybė:", - "Quick load": "Greitas įkrovimas", - "Quick save": "Greitas išsaugojimas", + "Quick Load": "Greitas įkrovimas", + "Quick Save": "Greitas išsaugojimas", "Radial": "Radialinis", "Radial gradient": "Radialinis gradientas", "Radius:": "Spindulys:", @@ -253,18 +253,18 @@ "Replace Color": "Pakeiskite spalvą", "Replace color": "Pakeiskite spalvą", "Replacement:": "Pakeitimas:", - "Report issues": "Pranešti apie problemas", + "Report Issues": "Pranešti apie problemas", "Resample - Hermite": "Resample - hermite", "Reset": "Atstatyti", "Reset zoom level": "Atstatyti mastelį", "Resize": "Keisti dydį", "Resized as background": "Pakeista kaip fonas", "Resolution:": "Rezoliucija:", - "Restore alpha": "Atkurti alfa", + "Restore Alpha": "Atkurti alfa", "Right": "Teisingai", "Right angle:": "Dešinysis kampas:", "Rotate": "Sukti", - "Rotate is not supported on this type of object. Convert to raster?": "Šio tipo objektuose nepavyksta pakeisti rotacijos. konvertuoti į rastrą?", + "Rotate is not supported on this type of object. Convert to Raster?": "Šio tipo objektuose nepavyksta pakeisti rotacijos. konvertuoti į rastrą?", "Rotate left": "Pasukti į kairę", "Rotate:": "Pasukti:", "Russian": "Rusų kalba", @@ -272,16 +272,16 @@ "Saturate": "Saturate", "Saturation:": "Spalvingumas:", "Save": "Išsaugoti", - "Save as": "Išsaugoti kaip", - "Save as data URL": "Išsaugoti kaip duomenų URL", + "Save As": "Išsaugoti kaip", + "Save As Data URL": "Išsaugoti kaip duomenų URL", "Save as type:": "Išsaugoti kaip:", "Save layers:": "Išsaugoti sluoksnius:", "Save resolution:": "Išsaugoti rezoliuciją:", "Scroll down": "Slinkti žemyn", "Scroll up": "Slinkite aukštyn", "Search": "Paieška", - "Search images": "Ieškoti vaizdų", - "Select all": "Pasirinkti viską", + "Search Images": "Ieškoti vaizdų", + "Select All": "Pasirinkti viską", "Select object tool": "Pasirinkite objektas įrankis", "Selected": "Pasirinkti", "Selection": "Pasirinkimas", diff --git a/src/js/languages/pt.json b/src/js/languages/pt.json index 9649672..9095912 100644 --- a/src/js/languages/pt.json +++ b/src/js/languages/pt.json @@ -11,7 +11,7 @@ "Arial": "Arial", "Arrow": "Flecha", "Author:": "Autor:", - "Auto adjust colors": "Cores de ajuste automático", + "Auto Adjust Colors": "Cores de ajuste automático", "Average:": "Média:", "BMP - Windows Bitmap": "BMP - Bitmap do Windows", "Base": "Base", @@ -33,7 +33,7 @@ "Brush": "Escova", "Bulge\/Pinch tool": "Ferramenta Bulge \/ Pinch", "Burn": "Queimar", - "CSS filters": "Filtros CSS", + "CSS Filters": "Filtros CSS", "Can not animate 1 layer.": "Não é possível animar 1 camada.", "Can not find previous layer.": "Não é possível encontrar a camada anterior.", "Cancel": "Cancelar", @@ -50,20 +50,20 @@ "Color #": "Cor #", "Color Zoom": "Zoom de cor", "Color alpha value can not be zero.": "O valor alpha colorido não pode ser zero.", - "Color corrections": "Correções de cores", - "Color palette": "Paleta de cores", - "Color to alpha": "Cor para alfa", + "Color Corrections": "Correções de cores", + "Color Palette": "Paleta de cores", + "Color to Alpha": "Cor para alfa", "Color zoom": "Zoom de cor", "Color:": "Cor:", "Colors": "Cores", "Colors:": "Cores:", "Composition": "Composição", "Composition:": "Composição:", - "Content fill": "Preenchimento de conteúdo", + "Content Fill": "Preenchimento de conteúdo", "Contrast": "Contraste", "Contrast:": "Contraste:", - "Convert to raster": "Converter em raster", - "Copy selection": "Seleção de cópia", + "Convert to Raster": "Converter em raster", + "Copy Selection": "Seleção de cópia", "Copy:": "Cópia de:", "Courier": "Correio", "Crop": "Colheita", @@ -74,12 +74,12 @@ "Custom": "personalizadas", "Data URL": "URL de dados", "Data URL:": "URL de dados:", - "Decrease color depth": "Diminuir a profundidade de cor", + "Decrease Color Depth": "Diminuir a profundidade de cor", "Default": "Padrão", "Degree:": "Grau:", "Del": "Del", "Delete": "Excluir", - "Delete selection": "Eliminar seleção", + "Delete Selection": "Eliminar seleção", "Denoise": "Denoise", "Desaturate": "Desaturar", "Description:": "Descrição:", @@ -119,7 +119,7 @@ "File size:": "Tamanho do arquivo:", "Fill": "Preencher", "Fit": "Em forma", - "Fit window": "Janela de ajuste", + "Fit Window": "Janela de ajuste", "Flatten Image": "Achatar imagem", "Flip": "Giro", "FloydSteinberg-serpentine": "FloydSteinberg-serpentine", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "JPG, qualidade WEBP:", "JSON - Full layers data": "JSON - Dados de camadas completas", "Japanese": "japonês", - "Key-points": "Pontos chave", + "Key-Points": "Pontos chave", "Keyboard Shortcuts": "Atalhos do teclado", "Keyword:": "Palavra-chave:", "Korean": "coreano", @@ -201,7 +201,7 @@ "Negative": "Negativo", "New": "Novo", "New file": "Novo arquivo", - "New from selection": "Novo da seleção", + "New from Selection": "Novo da seleção", "New layer": "Nova camada", "New width can not be smaller then current width": "A nova largura não pode ser menor do que a largura atual", "Normal": "Normal", @@ -219,7 +219,7 @@ "Open File": "Abrir arquivo", "Open URL": "Url aberta", "Open data URL": "Abrir URL de dados", - "Original size": "Tamanho original", + "Original Size": "Tamanho original", "PNG - Portable Network Graphics": "PNG - Gráficos de rede portátil", "Palette": "Paleta", "Parameter #1:": "Parâmetro # 1:", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "A camada anterior deve ser imagem, convertê-la em raster para aplicar esta ferramenta.", "Print": "Impressão", "Quality:": "Qualidade:", - "Quick load": "Carga rápida", - "Quick save": "Salvamento rapido", + "Quick Load": "Carga rápida", + "Quick Save": "Salvamento rapido", "Radial": "Radial", "Radial gradient": "Gradiente radial", "Radius:": "Raio:", @@ -253,18 +253,18 @@ "Replace Color": "Substituir cor", "Replace color": "Substitua a cor", "Replacement:": "Substituição:", - "Report issues": "Relatar problemas", + "Report Issues": "Relatar problemas", "Resample - Hermite": "Resmplemento - Hermite", "Reset": "Restabelecer", "Reset zoom level": "Redefinir o nível de zoom", "Resize": "Redimensionar", "Resized as background": "Redimensionado como plano de fundo", "Resolution:": "Resolução:", - "Restore alpha": "Restaurar alfa", + "Restore Alpha": "Restaurar alfa", "Right": "Certo", "Right angle:": "Ângulo certo:", "Rotate": "Girar", - "Rotate is not supported on this type of object. Convert to raster?": "Rotate não é suportado neste tipo de objeto. Converter em raster?", + "Rotate is not supported on this type of object. Convert to Raster?": "Rotate não é suportado neste tipo de objeto. Converter em raster?", "Rotate left": "Vire à esquerda", "Rotate:": "Girar:", "Russian": "russo", @@ -272,16 +272,16 @@ "Saturate": "Saturar", "Saturation:": "Saturação:", "Save": "Salve ", - "Save as": "Salvar como", - "Save as data URL": "Salvar como URL de dados", + "Save As": "Salvar como", + "Save As Data URL": "Salvar como URL de dados", "Save as type:": "Salvar como tipo:", "Save layers:": "Salvar camadas:", "Save resolution:": "Salvar resolução:", "Scroll down": "Rolar para baixo", "Scroll up": "Deslize para cima", "Search": "Pesquisa", - "Search images": "Pesquisar imagens", - "Select all": "Selecionar tudo", + "Search Images": "Pesquisar imagens", + "Select All": "Selecionar tudo", "Select object tool": "Selecione a ferramenta de objeto", "Selected": "Selecionado", "Selection": "Seleção", diff --git a/src/js/languages/ru.json b/src/js/languages/ru.json index a7aa26a..4c3783d 100644 --- a/src/js/languages/ru.json +++ b/src/js/languages/ru.json @@ -11,7 +11,7 @@ "Arial": "Arial", "Arrow": "Стрела", "Author:": "Автор:", - "Auto adjust colors": "Автоматическая настройка цветов", + "Auto Adjust Colors": "Автоматическая настройка цветов", "Average:": "В среднем:", "BMP - Windows Bitmap": "BMP - битмап Windows", "Base": "База", @@ -33,7 +33,7 @@ "Brush": "Щетка", "Bulge\/Pinch tool": "Инструмент для выемки \/ зажима", "Burn": "жечь", - "CSS filters": "Фильтры CSS", + "CSS Filters": "Фильтры CSS", "Can not animate 1 layer.": "Невозможно оживить 1 слой.", "Can not find previous layer.": "Не удается найти предыдущий слой.", "Cancel": "Отмена", @@ -50,20 +50,20 @@ "Color #": "Цвет #", "Color Zoom": "Цветное увеличение", "Color alpha value can not be zero.": "Значение цветной альфа не может быть равно нулю.", - "Color corrections": "Коррекция цвета", - "Color palette": "Цветовая палитра", - "Color to alpha": "Цвет в альфа", + "Color Corrections": "Коррекция цвета", + "Color Palette": "Цветовая палитра", + "Color to Alpha": "Цвет в альфа", "Color zoom": "Цветное увеличение", "Color:": "Цвет:", "Colors": "Цвета", "Colors:": "Цвета:", "Composition": "Состав", "Composition:": "Состав:", - "Content fill": "Контент заполняется", + "Content Fill": "Контент заполняется", "Contrast": "контрастировать", "Contrast:": "Контраст:", - "Convert to raster": "Преобразовать в растровый", - "Copy selection": "Выбор копии", + "Convert to Raster": "Преобразовать в растровый", + "Copy Selection": "Выбор копии", "Copy:": "Копирование:", "Courier": "курьер", "Crop": "урожай", @@ -74,12 +74,12 @@ "Custom": "изготовленный на заказ", "Data URL": "URL-адрес данных", "Data URL:": "URL-адрес данных:", - "Decrease color depth": "Уменьшить глубину цвета", + "Decrease Color Depth": "Уменьшить глубину цвета", "Default": "По умолчанию", "Degree:": "Степень:", "Del": "Del", "Delete": "Удалить", - "Delete selection": "Удалить выделение", + "Delete Selection": "Удалить выделение", "Denoise": "Denoise", "Desaturate": "Обесцвечивание", "Description:": "Описание:", @@ -119,7 +119,7 @@ "File size:": "Размер файла:", "Fill": "заполнить", "Fit": "Поместиться", - "Fit window": "Окно для установки", + "Fit Window": "Окно для установки", "Flatten Image": "Свести изображение", "Flip": "кувырок", "FloydSteinberg-serpentine": "FloydSteinberg-змеевик", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "JPG, WEBP качество:", "JSON - Full layers data": "JSON - данные с полными слоями", "Japanese": "Японский", - "Key-points": "Ключевые пункты", + "Key-Points": "Ключевые пункты", "Keyboard Shortcuts": "Горячие клавиши", "Keyword:": "Ключевое слово:", "Korean": "Корейский", @@ -201,7 +201,7 @@ "Negative": "отрицательный", "New": "новый", "New file": "Новый файл", - "New from selection": "Новое от выбора", + "New from Selection": "Новое от выбора", "New layer": "Новый слой", "New width can not be smaller then current width": "Новая ширина не может быть меньше текущей ширины", "Normal": "Нормальный", @@ -219,7 +219,7 @@ "Open File": "Открыть файл", "Open URL": "Открыть URL-адрес", "Open data URL": "Открыть URL-адрес данных", - "Original size": "Оригинальный размер", + "Original Size": "Оригинальный размер", "PNG - Portable Network Graphics": "PNG - портативная сетевая графика", "Palette": "палитра", "Parameter #1:": "Параметр №1:", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "Предыдущий слой должен быть изображением, преобразовать его в растр, чтобы применить этот инструмент.", "Print": "Распечатать", "Quality:": "Качественный:", - "Quick load": "Быстрая нагрузка", - "Quick save": "Быстрое сохранение", + "Quick Load": "Быстрая нагрузка", + "Quick Save": "Быстрое сохранение", "Radial": "радиальный", "Radial gradient": "Радиальный градиент", "Radius:": "Радиус:", @@ -253,18 +253,18 @@ "Replace Color": "Заменить цвет", "Replace color": "Заменить цвет", "Replacement:": "Замена:", - "Report issues": "Проблемы с отчетами", + "Report Issues": "Проблемы с отчетами", "Resample - Hermite": "Resample - Эрмит", "Reset": "Сброс", "Reset zoom level": "Сбросить уровень масштабирования", "Resize": "Изменение размера", "Resized as background": "Изменилось в качестве фона", "Resolution:": "Разрешение:", - "Restore alpha": "Восстановить альфа", + "Restore Alpha": "Восстановить альфа", "Right": "Правильно", "Right angle:": "Прямой угол:", "Rotate": "Поворот", - "Rotate is not supported on this type of object. Convert to raster?": "Поворот на этом типе объекта не поддерживается. Конвертировать в растр?", + "Rotate is not supported on this type of object. Convert to Raster?": "Поворот на этом типе объекта не поддерживается. Конвертировать в растр?", "Rotate left": "Поверните влево", "Rotate:": "Поворот:", "Russian": "русский", @@ -272,16 +272,16 @@ "Saturate": "насыщать", "Saturation:": "Насыщенность:", "Save": "Сохранить", - "Save as": "Сохранить как", - "Save as data URL": "Сохранить как URL-адрес данных", + "Save As": "Сохранить как", + "Save As Data URL": "Сохранить как URL-адрес данных", "Save as type:": "Сохранить как тип:", "Save layers:": "Сохранить слои:", "Save resolution:": "Сохранить разрешение:", "Scroll down": "Прокрутить вниз", "Scroll up": "Прокрутка вверх", "Search": "Поиск", - "Search images": "Поиск изображений", - "Select all": "Выбрать все", + "Search Images": "Поиск изображений", + "Select All": "Выбрать все", "Select object tool": "Выберите инструмент объекта", "Selected": "выбранный", "Selection": "выбор", diff --git a/src/js/languages/tr.json b/src/js/languages/tr.json index 43c6910..2553003 100644 --- a/src/js/languages/tr.json +++ b/src/js/languages/tr.json @@ -11,7 +11,7 @@ "Arial": "Arial", "Arrow": "Ok", "Author:": "Yazar:", - "Auto adjust colors": "Renkleri otomatik ayarla", + "Auto Adjust Colors": "Renkleri otomatik ayarla", "Average:": "Ortalama:", "BMP - Windows Bitmap": "BMP - Windows Bitmap", "Base": "baz", @@ -33,7 +33,7 @@ "Brush": "Fırça", "Bulge\/Pinch tool": "Bulge \/ Sıkma aleti", "Burn": "Yanmak", - "CSS filters": "CSS filtreleri", + "CSS Filters": "CSS filtreleri", "Can not animate 1 layer.": "1 katmana canlandırma yapılamıyor.", "Can not find previous layer.": "Önceki katmanı bulamıyorum.", "Cancel": "İptal etmek", @@ -50,20 +50,20 @@ "Color #": "Renk #", "Color Zoom": "Renkli Zoom", "Color alpha value can not be zero.": "Renkli alfa değeri sıfır olamaz.", - "Color corrections": "Renk düzeltmeleri", - "Color palette": "Renk paleti", - "Color to alpha": "Alfanın renkleri", + "Color Corrections": "Renk düzeltmeleri", + "Color Palette": "Renk paleti", + "Color to Alpha": "Alfanın renkleri", "Color zoom": "Renkli yakınlaştırma", "Color:": "Renk:", "Colors": "Renkler", "Colors:": "Renkler:", "Composition": "bileştirme, kompozisyon", "Composition:": "Bileştirme, kompozisyon:", - "Content fill": "İçerik doldurma", + "Content Fill": "İçerik doldurma", "Contrast": "Kontrast", "Contrast:": "Kontrast:", - "Convert to raster": "Rastera dönüştürün", - "Copy selection": "Seçimi kopyala", + "Convert to Raster": "Rastera dönüştürün", + "Copy Selection": "Seçimi kopyala", "Copy:": "Kopya:", "Courier": "Kurye", "Crop": "ekin", @@ -74,12 +74,12 @@ "Custom": "görenek", "Data URL": "Veri URL'si", "Data URL:": "Veri URL'si:", - "Decrease color depth": "Renk derinliğini azalt", + "Decrease Color Depth": "Renk derinliğini azalt", "Default": "Varsayılan", "Degree:": "Derece:", "Del": "Del", "Delete": "silmek", - "Delete selection": "Seçimi sil", + "Delete Selection": "Seçimi sil", "Denoise": "Denoise", "Desaturate": "Desaturate", "Description:": "Açıklama:", @@ -119,7 +119,7 @@ "File size:": "Dosya boyutu:", "Fill": "doldurmak", "Fit": "Fit", - "Fit window": "Pencereye sığdır", + "Fit Window": "Pencereye sığdır", "Flatten Image": "Resmi Düzleştir", "Flip": "fiske", "FloydSteinberg-serpentine": "FloydSteinberg-serpantin", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "JPG, WEBP kalitesi:", "JSON - Full layers data": "JSON - Tam katmanlı veriler", "Japanese": "Japonca", - "Key-points": "Anahtar noktaları", + "Key-Points": "Anahtar noktaları", "Keyboard Shortcuts": "Klavye kısayolları", "Keyword:": "Anahtar kelime:", "Korean": "Koreli", @@ -201,7 +201,7 @@ "Negative": "Negatif", "New": "Yeni", "New file": "Yeni dosya", - "New from selection": "Seçimden yeni", + "New from Selection": "Seçimden yeni", "New layer": "Yeni katman", "New width can not be smaller then current width": "Yeni genişlik o andaki genişlikten daha küçük olamaz", "Normal": "Normal", @@ -219,7 +219,7 @@ "Open File": "Açık dosya", "Open URL": "Link aç", "Open data URL": "Açık veri URL'si", - "Original size": "Orijinal boyut", + "Original Size": "Orijinal boyut", "PNG - Portable Network Graphics": "PNG - Taşınabilir Ağ Grafikleri", "Palette": "palet", "Parameter #1:": "Parametre # 1:", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "Önceki katman resim olmalıdır, bu aracı uygulamak için raster haline getirin.", "Print": "baskı", "Quality:": "Kalite:", - "Quick load": "Hızlı yükleme", - "Quick save": "Hızlı kaydet", + "Quick Load": "Hızlı yükleme", + "Quick Save": "Hızlı kaydet", "Radial": "Radyal", "Radial gradient": "Radyal degrade", "Radius:": "radius:", @@ -253,18 +253,18 @@ "Replace Color": "Renk Değiştir", "Replace color": "Rengi değiştir", "Replacement:": "Değiştirme:", - "Report issues": "Sorunları bildir", + "Report Issues": "Sorunları bildir", "Resample - Hermite": "Resample - Hermite", "Reset": "Reset", "Reset zoom level": "Zum düzeyini sıfırla", "Resize": "yeniden boyutlandırma", "Resized as background": "Arka plan olarak yeniden boyutlandırıldı", "Resolution:": "Çözüm:", - "Restore alpha": "Alfa geri yükle", + "Restore Alpha": "Alfa geri yükle", "Right": "Sağ", "Right angle:": "Doğru açı:", "Rotate": "Döndürme", - "Rotate is not supported on this type of object. Convert to raster?": "Döndürme, bu tür nesne üzerinde desteklenmiyor. Rastere dönüştürün?", + "Rotate is not supported on this type of object. Convert to Raster?": "Döndürme, bu tür nesne üzerinde desteklenmiyor. Rastere dönüştürün?", "Rotate left": "Sola dön", "Rotate:": "Dönüşümlü:", "Russian": "Rusça", @@ -272,16 +272,16 @@ "Saturate": "bombalamak", "Saturation:": "Doyma:", "Save": "Kayıt etmek", - "Save as": "Farklı kaydet", - "Save as data URL": "Veri URL'si olarak kaydet", + "Save As": "Farklı kaydet", + "Save As Data URL": "Veri URL'si olarak kaydet", "Save as type:": "Türünü kaydet:", "Save layers:": "Katmanları kaydet:", "Save resolution:": "Çözünürlüğü kaydet:", "Scroll down": "Aşağı kaydır", "Scroll up": "Yukarı kaydırmak", "Search": "Arama", - "Search images": "Resimleri ara", - "Select all": "Hepsini seç", + "Search Images": "Resimleri ara", + "Select All": "Hepsini seç", "Select object tool": "Nesne aracını seçin", "Selected": "seçilmiş", "Selection": "seçim", diff --git a/src/js/languages/zh.json b/src/js/languages/zh.json index 76cdc11..6b9a649 100644 --- a/src/js/languages/zh.json +++ b/src/js/languages/zh.json @@ -11,7 +11,7 @@ "Arial": "宋体", "Arrow": "箭头", "Author:": "作者:", - "Auto adjust colors": "自动调整颜色", + "Auto Adjust Colors": "自动调整颜色", "Average:": "平均:", "BMP - Windows Bitmap": "BMP - Windows位图", "Base": "基础", @@ -33,7 +33,7 @@ "Brush": "刷", "Bulge\/Pinch tool": "凸出\/捏合工具", "Burn": "烧伤", - "CSS filters": "CSS过滤器", + "CSS Filters": "CSS过滤器", "Can not animate 1 layer.": "不能动画1层。", "Can not find previous layer.": "找不到以前的图层。", "Cancel": "取消", @@ -50,20 +50,20 @@ "Color #": "颜色#", "Color Zoom": "颜色缩放", "Color alpha value can not be zero.": "颜色alpha值不能为零。", - "Color corrections": "颜色更正", - "Color palette": "调色板", - "Color to alpha": "颜色到阿尔法", + "Color Corrections": "颜色更正", + "Color Palette": "调色板", + "Color to Alpha": "颜色到阿尔法", "Color zoom": "彩色变焦", "Color:": "颜色:", "Colors": "颜色", "Colors:": "颜色:", "Composition": "组成", "Composition:": "组成:", - "Content fill": "内容填写", + "Content Fill": "内容填写", "Contrast": "对比", "Contrast:": "对比:", - "Convert to raster": "转换为光栅", - "Copy selection": "复制选择", + "Convert to Raster": "转换为光栅", + "Copy Selection": "复制选择", "Copy:": "复制:", "Courier": "信使", "Crop": "作物", @@ -74,12 +74,12 @@ "Custom": "习惯", "Data URL": "数据网址", "Data URL:": "数据网址:", - "Decrease color depth": "减少颜色深度", + "Decrease Color Depth": "减少颜色深度", "Default": "默认", "Degree:": "度:", "Del": "德尔", "Delete": "删除", - "Delete selection": "删除选择", + "Delete Selection": "删除选择", "Denoise": "降噪", "Desaturate": "去色", "Description:": "描述:", @@ -119,7 +119,7 @@ "File size:": "文件大小:", "Fill": "填", "Fit": "适合", - "Fit window": "适合的窗口", + "Fit Window": "适合的窗口", "Flatten Image": "拼合图像", "Flip": "翻动", "FloydSteinberg-serpentine": "FloydSteinberg蛇形", @@ -167,7 +167,7 @@ "JPG, WEBP quality:": "JPG,WEBP质量:", "JSON - Full layers data": "JSON - 全层数据", "Japanese": "日本", - "Key-points": "关键点", + "Key-Points": "关键点", "Keyboard Shortcuts": "键盘快捷键", "Keyword:": "关键词:", "Korean": "朝鲜的", @@ -201,7 +201,7 @@ "Negative": "负", "New": "新", "New file": "新文件", - "New from selection": "新的选择", + "New from Selection": "新的选择", "New layer": "新的图层", "New width can not be smaller then current width": "新的宽度不能小于当前的宽度", "Normal": "正常", @@ -219,7 +219,7 @@ "Open File": "打开文件", "Open URL": "打开网址", "Open data URL": "打开数据网址", - "Original size": "原始尺寸", + "Original Size": "原始尺寸", "PNG - Portable Network Graphics": "PNG - 便携式网络图形", "Palette": "调色板", "Parameter #1:": "参数#1:", @@ -239,8 +239,8 @@ "Previous layer must be image, convert it to raster to apply this tool.": "上一层必须是图像,将其转换为栅格来应用此工具。", "Print": "打印", "Quality:": "质量:", - "Quick load": "快速加载", - "Quick save": "快速保存", + "Quick Load": "快速加载", + "Quick Save": "快速保存", "Radial": "径向", "Radial gradient": "径向渐变", "Radius:": "半径:", @@ -253,18 +253,18 @@ "Replace Color": "替换颜色", "Replace color": "替换颜色", "Replacement:": "替代:", - "Report issues": "报告问题", + "Report Issues": "报告问题", "Resample - Hermite": "重新取样 - Hermite", "Reset": "重启", "Reset zoom level": "重置缩放级别", "Resize": "调整", "Resized as background": "调整为背景", "Resolution:": "解析度:", - "Restore alpha": "恢复阿尔法", + "Restore Alpha": "恢复阿尔法", "Right": "对", "Right angle:": "直角:", "Rotate": "旋转", - "Rotate is not supported on this type of object. Convert to raster?": "这种类型的对象不支持旋转。转换为光栅?", + "Rotate is not supported on this type of object. Convert to Raster?": "这种类型的对象不支持旋转。转换为光栅?", "Rotate left": "向左旋转", "Rotate:": "旋转:", "Russian": "俄语", @@ -272,16 +272,16 @@ "Saturate": "饱和", "Saturation:": "饱和:", "Save": "保存", - "Save as": "另存为", - "Save as data URL": "另存为数据网址", + "Save As": "另存为", + "Save As Data URL": "另存为数据网址", "Save as type:": "另存为类型:", "Save layers:": "保存图层:", "Save resolution:": "保存分辨率:", "Scroll down": "向下滚动", "Scroll up": "向上滑动", "Search": "搜索", - "Search images": "搜索图片", - "Select all": "全选", + "Search Images": "搜索图片", + "Select All": "全选", "Select object tool": "选择对象工具", "Selected": "选", "Selection": "选择", diff --git a/src/js/modules/help/shortcuts.js b/src/js/modules/help/shortcuts.js index 8a2cb82..18d8e69 100644 --- a/src/js/modules/help/shortcuts.js +++ b/src/js/modules/help/shortcuts.js @@ -11,11 +11,11 @@ class Help_shortcuts_class { var settings = { title: 'Keyboard Shortcuts', params: [ - {title: "F9", value: 'Quick save'}, - {title: "F10", value: 'Quick load'}, + {title: "F9", value: 'Quick Save'}, + {title: "F10", value: 'Quick Load'}, {title: "S", value: 'Save'}, {title: "T", value: 'Trim'}, - {title: "F", value: 'Auto adjust colors'}, + {title: "F", value: 'Auto Adjust Colors'}, {title: "G", value: 'Grid on/off'}, {title: "L", value: 'Rotate left'}, {title: "N", value: 'New layer'}, @@ -23,7 +23,7 @@ class Help_shortcuts_class { {title: "Scroll up", value: 'Zoom in'}, {title: "Scroll down", value: 'Zoom out'}, {title: "CTRL + Z", value: 'Undo'}, - {title: "CTRL + A", value: 'Select all'}, + {title: "CTRL + A", value: 'Select All'}, {title: "CTRL + V", value: 'Paste'}, ], }; diff --git a/src/js/modules/help/translate.js b/src/js/modules/help/translate.js index 1f63bda..9fb497c 100644 --- a/src/js/modules/help/translate.js +++ b/src/js/modules/help/translate.js @@ -21,7 +21,7 @@ class Help_translate_class { } //change language - translate(lang_code) { + translate(lang_code, element) { if (lang_code == undefined) { lang_code = this.Helper.getCookie('language'); if (!lang_code) { @@ -38,7 +38,7 @@ class Help_translate_class { if (first[lang_code] != undefined || lang_code == 'en') { //translate - $('body').translate({lang: lang_code, t: this.translations}); + $(element || 'body').translate({lang: lang_code, t: this.translations}); config.LANG = lang_code; } else { diff --git a/src/js/modules/image/color_corrections.js b/src/js/modules/image/color_corrections.js index 264f342..3873b24 100644 --- a/src/js/modules/image/color_corrections.js +++ b/src/js/modules/image/color_corrections.js @@ -23,7 +23,7 @@ class Image_colorCorrections_class { } var settings = { - title: 'Color corrections', + title: 'Color Corrections', preview: true, on_change: function (params, canvas_preview, w, h) { var img = canvas_preview.getImageData(0, 0, w, h); diff --git a/src/js/modules/image/decrease_colors.js b/src/js/modules/image/decrease_colors.js index e54f010..ae7f90f 100644 --- a/src/js/modules/image/decrease_colors.js +++ b/src/js/modules/image/decrease_colors.js @@ -23,7 +23,7 @@ class Image_decreaseColors_class { } var settings = { - title: 'Decrease color depth', + title: 'Decrease Color Depth', preview: true, on_change: function (params, canvas_preview, w, h) { var img = canvas_preview.getImageData(0, 0, w, h); diff --git a/src/js/modules/image/rotate.js b/src/js/modules/image/rotate.js index 695fada..5b5e24d 100644 --- a/src/js/modules/image/rotate.js +++ b/src/js/modules/image/rotate.js @@ -42,7 +42,7 @@ class Image_rotate_class { var _this = this; if (config.layer.rotate === null) { - alertify.error('Rotate is not supported on this type of object. Convert to raster?'); + alertify.error('Rotate is not supported on this type of object. Convert to Raster?'); return; } diff --git a/src/js/modules/tools/color_to_alpha.js b/src/js/modules/tools/color_to_alpha.js index f92fdcb..6fc6f59 100644 --- a/src/js/modules/tools/color_to_alpha.js +++ b/src/js/modules/tools/color_to_alpha.js @@ -21,7 +21,7 @@ class Tools_colorToAlpha_class { } var settings = { - title: 'Color to alpha', + title: 'Color to Alpha', preview: true, on_change: function (params, canvas_preview, w, h) { var img = canvas_preview.getImageData(0, 0, w, h); diff --git a/src/js/modules/tools/content_fill.js b/src/js/modules/tools/content_fill.js index 9a56a0e..e886d56 100644 --- a/src/js/modules/tools/content_fill.js +++ b/src/js/modules/tools/content_fill.js @@ -22,7 +22,7 @@ class Tools_contentFill_class { } var settings = { - title: 'Content fill', + title: 'Content Fill', preview: true, on_change: function (params, canvas_preview, w, h, canvasElement) { canvas_preview.clearRect(0, 0, w, h); diff --git a/src/js/modules/tools/restore_alpha.js b/src/js/modules/tools/restore_alpha.js index 0746a43..19e327d 100644 --- a/src/js/modules/tools/restore_alpha.js +++ b/src/js/modules/tools/restore_alpha.js @@ -19,7 +19,7 @@ class Tools_restoreAlpha_class { } var settings = { - title: 'Restore alpha', + title: 'Restore Alpha', preview: true, on_change: function (params, canvas_preview, w, h) { var img = canvas_preview.getImageData(0, 0, w, h); From 4ac667b3366f6f66bba8223257cf37162887c01d Mon Sep 17 00:00:00 2001 From: acer Date: Mon, 12 Oct 2020 02:30:51 -0400 Subject: [PATCH 6/9] Remove tagged convert to raster verbiage --- src/js/languages/de.json | 2 +- src/js/languages/empty.json | 2 +- src/js/languages/es.json | 2 +- src/js/languages/fr.json | 2 +- src/js/languages/it.json | 2 +- src/js/languages/ja.json | 2 +- src/js/languages/ko.json | 2 +- src/js/languages/lt.json | 2 +- src/js/languages/pt.json | 2 +- src/js/languages/ru.json | 2 +- src/js/languages/tr.json | 2 +- src/js/languages/zh.json | 2 +- src/js/modules/image/rotate.js | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/js/languages/de.json b/src/js/languages/de.json index 354c160..cb2c87b 100644 --- a/src/js/languages/de.json +++ b/src/js/languages/de.json @@ -264,7 +264,7 @@ "Right": "Recht", "Right angle:": "Rechter Winkel:", "Rotate": "Drehen", - "Rotate is not supported on this type of object. Convert to Raster?": "Drehen wird bei diesem Objekttyp nicht unterstützt. In Raster konvertieren?", + "Rotate is not supported on this type of object. Convert to raster?": "Drehen wird bei diesem Objekttyp nicht unterstützt. In Raster konvertieren?", "Rotate left": "Nach links drehen", "Rotate:": "Drehen:", "Russian": "Russisch", diff --git a/src/js/languages/empty.json b/src/js/languages/empty.json index f43f3a6..889432b 100644 --- a/src/js/languages/empty.json +++ b/src/js/languages/empty.json @@ -264,7 +264,7 @@ "Right": "", "Right angle:": "", "Rotate": "", - "Rotate is not supported on this type of object. Convert to Raster?": "", + "Rotate is not supported on this type of object. Convert to raster?": "", "Rotate left": "", "Rotate:": "", "Russian": "", diff --git a/src/js/languages/es.json b/src/js/languages/es.json index 4728d46..4d66af2 100644 --- a/src/js/languages/es.json +++ b/src/js/languages/es.json @@ -264,7 +264,7 @@ "Right": "Derecha", "Right angle:": "Ángulo recto:", "Rotate": "Girar", - "Rotate is not supported on this type of object. Convert to Raster?": "Girar no es compatible con este tipo de objeto. Convertir a raster?", + "Rotate is not supported on this type of object. Convert to raster?": "Girar no es compatible con este tipo de objeto. Convertir a raster?", "Rotate left": "Girar a la izquierda", "Rotate:": "Girar:", "Russian": "ruso", diff --git a/src/js/languages/fr.json b/src/js/languages/fr.json index f6c2179..1e491b5 100644 --- a/src/js/languages/fr.json +++ b/src/js/languages/fr.json @@ -264,7 +264,7 @@ "Right": "à droite", "Right angle:": "Angle droit:", "Rotate": "Faire pivoter", - "Rotate is not supported on this type of object. Convert to Raster?": "La rotation n'est pas prise en charge sur ce type d'objet. Convertir en raster?", + "Rotate is not supported on this type of object. Convert to raster?": "La rotation n'est pas prise en charge sur ce type d'objet. Convertir en raster?", "Rotate left": "Faire pivoter à gauche", "Rotate:": "Tourner:", "Russian": "Russe", diff --git a/src/js/languages/it.json b/src/js/languages/it.json index 9be7876..0b3c681 100644 --- a/src/js/languages/it.json +++ b/src/js/languages/it.json @@ -264,7 +264,7 @@ "Right": "Destra", "Right angle:": "Angolo retto:", "Rotate": "Ruotare", - "Rotate is not supported on this type of object. Convert to Raster?": "Ruota non è supportato su questo tipo di oggetto. Converti in raster?", + "Rotate is not supported on this type of object. Convert to raster?": "Ruota non è supportato su questo tipo di oggetto. Converti in raster?", "Rotate left": "Gira a sinistra", "Rotate:": "Ruotare:", "Russian": "russo", diff --git a/src/js/languages/ja.json b/src/js/languages/ja.json index 29a7992..e249e5d 100644 --- a/src/js/languages/ja.json +++ b/src/js/languages/ja.json @@ -264,7 +264,7 @@ "Right": "右", "Right angle:": "直角:", "Rotate": "回転する", - "Rotate is not supported on this type of object. Convert to Raster?": "このタイプのオブジェクトでは、回転はサポートされていません。ラスタに変換しますか?", + "Rotate is not supported on this type of object. Convert to raster?": "このタイプのオブジェクトでは、回転はサポートされていません。ラスタに変換しますか?", "Rotate left": "左に回転", "Rotate:": "回転:", "Russian": "ロシア", diff --git a/src/js/languages/ko.json b/src/js/languages/ko.json index 29a8bd1..e254305 100644 --- a/src/js/languages/ko.json +++ b/src/js/languages/ko.json @@ -264,7 +264,7 @@ "Right": "권리", "Right angle:": "직각:", "Rotate": "회전", - "Rotate is not supported on this type of object. Convert to Raster?": "회전은이 유형의 객체에서 지원되지 않습니다. 래스터로 변환 하시겠습니까?", + "Rotate is not supported on this type of object. Convert to raster?": "회전은이 유형의 객체에서 지원되지 않습니다. 래스터로 변환 하시겠습니까?", "Rotate left": "왼쪽으로 회전", "Rotate:": "회전 :", "Russian": "러시아인", diff --git a/src/js/languages/lt.json b/src/js/languages/lt.json index 075c674..92ac417 100644 --- a/src/js/languages/lt.json +++ b/src/js/languages/lt.json @@ -264,7 +264,7 @@ "Right": "Teisingai", "Right angle:": "Dešinysis kampas:", "Rotate": "Sukti", - "Rotate is not supported on this type of object. Convert to Raster?": "Šio tipo objektuose nepavyksta pakeisti rotacijos. konvertuoti į rastrą?", + "Rotate is not supported on this type of object. Convert to raster?": "Šio tipo objektuose nepavyksta pakeisti rotacijos. konvertuoti į rastrą?", "Rotate left": "Pasukti į kairę", "Rotate:": "Pasukti:", "Russian": "Rusų kalba", diff --git a/src/js/languages/pt.json b/src/js/languages/pt.json index 9095912..7fe500c 100644 --- a/src/js/languages/pt.json +++ b/src/js/languages/pt.json @@ -264,7 +264,7 @@ "Right": "Certo", "Right angle:": "Ângulo certo:", "Rotate": "Girar", - "Rotate is not supported on this type of object. Convert to Raster?": "Rotate não é suportado neste tipo de objeto. Converter em raster?", + "Rotate is not supported on this type of object. Convert to raster?": "Rotate não é suportado neste tipo de objeto. Converter em raster?", "Rotate left": "Vire à esquerda", "Rotate:": "Girar:", "Russian": "russo", diff --git a/src/js/languages/ru.json b/src/js/languages/ru.json index 4c3783d..78dcf37 100644 --- a/src/js/languages/ru.json +++ b/src/js/languages/ru.json @@ -264,7 +264,7 @@ "Right": "Правильно", "Right angle:": "Прямой угол:", "Rotate": "Поворот", - "Rotate is not supported on this type of object. Convert to Raster?": "Поворот на этом типе объекта не поддерживается. Конвертировать в растр?", + "Rotate is not supported on this type of object. Convert to raster?": "Поворот на этом типе объекта не поддерживается. Конвертировать в растр?", "Rotate left": "Поверните влево", "Rotate:": "Поворот:", "Russian": "русский", diff --git a/src/js/languages/tr.json b/src/js/languages/tr.json index 2553003..856127d 100644 --- a/src/js/languages/tr.json +++ b/src/js/languages/tr.json @@ -264,7 +264,7 @@ "Right": "Sağ", "Right angle:": "Doğru açı:", "Rotate": "Döndürme", - "Rotate is not supported on this type of object. Convert to Raster?": "Döndürme, bu tür nesne üzerinde desteklenmiyor. Rastere dönüştürün?", + "Rotate is not supported on this type of object. Convert to raster?": "Döndürme, bu tür nesne üzerinde desteklenmiyor. Rastere dönüştürün?", "Rotate left": "Sola dön", "Rotate:": "Dönüşümlü:", "Russian": "Rusça", diff --git a/src/js/languages/zh.json b/src/js/languages/zh.json index 6b9a649..033a9d5 100644 --- a/src/js/languages/zh.json +++ b/src/js/languages/zh.json @@ -264,7 +264,7 @@ "Right": "对", "Right angle:": "直角:", "Rotate": "旋转", - "Rotate is not supported on this type of object. Convert to Raster?": "这种类型的对象不支持旋转。转换为光栅?", + "Rotate is not supported on this type of object. Convert to raster?": "这种类型的对象不支持旋转。转换为光栅?", "Rotate left": "向左旋转", "Rotate:": "旋转:", "Russian": "俄语", diff --git a/src/js/modules/image/rotate.js b/src/js/modules/image/rotate.js index 5b5e24d..695fada 100644 --- a/src/js/modules/image/rotate.js +++ b/src/js/modules/image/rotate.js @@ -42,7 +42,7 @@ class Image_rotate_class { var _this = this; if (config.layer.rotate === null) { - alertify.error('Rotate is not supported on this type of object. Convert to Raster?'); + alertify.error('Rotate is not supported on this type of object. Convert to raster?'); return; } From 0282138e58a45c562c8e2cc868658e3082636ad0 Mon Sep 17 00:00:00 2001 From: viliusle Date: Tue, 13 Oct 2020 23:28:18 +0300 Subject: [PATCH 7/9] updated browser support, removed IE11 --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 714c44f..06e565f 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,8 @@ or upload from computer (using menu or drag & drop). Nothing will be sent to any - Chrome - Firefox - Opera +- Edge - Safari -- Edge (missing few features) -- IE 11 (only basic support) ## Features From 6057c8a4371029768a95316bb7164f770924f679 Mon Sep 17 00:00:00 2001 From: viliusle Date: Tue, 13 Oct 2020 23:29:23 +0300 Subject: [PATCH 8/9] fixed ability to focus main menu --- index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index f37db63..d943967 100644 --- a/index.html +++ b/index.html @@ -30,6 +30,8 @@
    + + - From 2019fca31d8883855de9fffe08d0fdefd93fe213 Mon Sep 17 00:00:00 2001 From: viliusle Date: Tue, 13 Oct 2020 23:53:39 +0300 Subject: [PATCH 9/9] center canvas if it is much smaller than screen. --- src/css/layout.css | 3 +++ src/js/core/base-gui.js | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/css/layout.css b/src/css/layout.css index 1bc189a..8c8ef2d 100644 --- a/src/css/layout.css +++ b/src/css/layout.css @@ -531,6 +531,9 @@ body .sp-preview{ -ms-grid-column: 2; grid-area: main; overflow: hidden; + display: flex; + justify-content: center; + align-items: center; } .canvas_wrapper{ position:relative; diff --git a/src/js/core/base-gui.js b/src/js/core/base-gui.js index 29b2a0f..652d7d8 100644 --- a/src/js/core/base-gui.js +++ b/src/js/core/base-gui.js @@ -165,10 +165,9 @@ class Base_gui_class { window.addEventListener('resize', function (event) { //resize _this.prepare_canvas(); - _this.check_canvas_offset(); config.need_render = true; }, false); - _this.check_canvas_offset(); + this.check_canvas_offset(); } check_canvas_offset() { @@ -206,6 +205,8 @@ class Base_gui_class { //change wrapper dimensions document.getElementById('canvas_wrapper').style.width = w + 'px'; document.getElementById('canvas_wrapper').style.height = h + 'px'; + + this.check_canvas_offset(); } load_saved_changes() {