Add Alt + Wheel Zoom Shortcut & Fix Localization for Panning & Update zh-CN locale (#1067)

* Add a new shortcut( Alt + wheels ) for zoom in/out

* update zh-CN locale

* Fix a ext-panning problem cound not fit locale

* Style for passing linter
This commit is contained in:
Qscy
2025-09-12 01:48:42 +08:00
committed by GitHub
parent 1dc44cb378
commit 03355487ee
11 changed files with 136 additions and 102 deletions

View File

@@ -362,6 +362,16 @@ class EditorStartup {
} }
}) })
// Add a new shortcut for zoom in/out : Alt + Wheels
this.workarea.addEventListener('wheel', (e) => {
if (e.altKey) {
e.preventDefault()
this.svgCanvas.setZoom(e.deltaY > 0 ? this.svgCanvas.getZoom() * 0.9 : this.svgCanvas.getZoom() * 1.1, true)
this.updateCanvas(true)
$id('zoom').value = (this.svgCanvas.getZoom() * 100).toFixed(1)
}
})
document.addEventListener('keyup', (e) => { document.addEventListener('keyup', (e) => {
if (e.target.nodeName !== 'BODY') return if (e.target.nodeName !== 'BODY') return
if (e.code.toLowerCase() === 'space') { if (e.code.toLowerCase() === 'space') {

View File

@@ -0,0 +1,15 @@
/**
* @file
* @module
* @author Qscy qscy2011@sina.com
* @LastEditors Qscy qscy2011@sina.com
*/
export default {
name: '图层视图',
buttons: [
{
title: '打开/关闭 图层视图',
key: 'Ctrl+Shift+L'
}
]
}

View File

@@ -39,7 +39,7 @@ export default {
return { return {
name: svgEditor.i18next.t(`${name}:name`), name: svgEditor.i18next.t(`${name}:name`),
callback () { callback () {
const btitle = `${name} [Space / mouse wheel + drag]` const btitle = `${svgEditor.i18next.t(`${name}:buttons.0.title`)} ${svgEditor.i18next.t(`${name}:buttons.0.key`)}`
// Add the button and its handler(s) // Add the button and its handler(s)
const buttonTemplate = document.createElement('template') const buttonTemplate = document.createElement('template')
buttonTemplate.innerHTML = ` buttonTemplate.innerHTML = `

View File

@@ -2,7 +2,8 @@ export default {
name: 'Extension Panning', name: 'Extension Panning',
buttons: [ buttons: [
{ {
title: 'Panning' title: 'Panning',
key: '[Space / mouse wheel + drag]'
} }
] ]
} }

View File

@@ -2,7 +2,8 @@ export default {
name: 'Panorering av tillägg', name: 'Panorering av tillägg',
buttons: [ buttons: [
{ {
title: 'Panorering' title: 'Panorering',
key: '[Blanksteg / mushjul + dra]'
} }
] ]
} }

View File

@@ -2,7 +2,8 @@ export default {
name: 'Kaydırma Aracı ', name: 'Kaydırma Aracı ',
buttons: [ buttons: [
{ {
title: 'Kaydırma' title: 'Kaydırma',
key: '[Boşluk / fare tekerleği + sürükle]'
} }
] ]
} }

View File

@@ -2,7 +2,8 @@ export default {
name: 'Розширення: Малювання', name: 'Розширення: Малювання',
buttons: [ buttons: [
{ {
title: 'Малювання' title: 'Малювання',
key: '[Пробіл / колесо миші + перетягування]'
} }
] ]
} }

View File

@@ -2,7 +2,8 @@ export default {
name: '移动', name: '移动',
buttons: [ buttons: [
{ {
title: '移动' title: '移动工具',
key: '[空格 / 按下滚轮拖动]'
} }
] ]
} }

View File

@@ -1,6 +1,6 @@
export default { export default {
name: '星形', name: '星形',
title: 'Polygone/Star Tool', title: '多边形/星形工具',
buttons: [ buttons: [
{ {
title: '星形工具' title: '星形工具'

View File

@@ -20,14 +20,14 @@ export default {
toggle_stroke_tools: '显示/隐藏更式边线工具', toggle_stroke_tools: '显示/隐藏更式边线工具',
palette_info: '点击更改填充颜色按住Shift键单击更改线条颜色', palette_info: '点击更改填充颜色按住Shift键单击更改线条颜色',
zoom_level: '更改缩放级别', zoom_level: '更改缩放级别',
panel_action: 'Click to open side panel', panel_action: '点击打开侧边栏',
quality: 'Quality:', quality: '质量:',
pathNodeTooltip: 'Drag node to move it. Double-click node to change segment type', pathNodeTooltip: '拖动节点可移动位置,双击节点可切换线段类型',
pathCtrlPtTooltip: 'Drag control point to adjust curve properties', pathCtrlPtTooltip: '拖动控制点以调整曲线形态',
pick_stroke_paint_opacity: 'Pick a Stroke Paint and Opacity', pick_stroke_paint_opacity: '请选择描边颜色和不透明度',
pick_fill_paint_opacity: 'Pick a Fill Paint and Opacity', pick_fill_paint_opacity: '请选择填充颜色和不透明度',
group_identify_label: 'Group identification label', group_identify_label: '分组标识标签',
export_type_label: 'Select an image type for export:' export_type_label: '选择导出格式:'
}, },
properties: { properties: {
id: '元素ID', id: '元素ID',
@@ -73,19 +73,19 @@ export default {
font_family: '更改字体样式', font_family: '更改字体样式',
font_size: '更改字体大小', font_size: '更改字体大小',
bold: '粗体', bold: '粗体',
text_decoration_underline: 'Underline', text_decoration_underline: '下划线',
text_decoration_linethrough: 'Line-Through', text_decoration_linethrough: '删除线',
text_decoration_overline: 'Overline', text_decoration_overline: '上划线',
italic: '斜体', italic: '斜体',
text_anchor_start: 'Align the text in start', text_anchor_start: '左侧对齐',
text_anchor_middle: 'Align the text in middle', text_anchor_middle: '居中对齐',
text_anchor_end: 'Align the text in end', text_anchor_end: '右侧对齐',
text_letter_spacing: 'Change the letter spacing', text_letter_spacing: '改变字母间距',
text_word_spacing: 'Change the word spacing', text_word_spacing: '改变文本间距',
text_length: 'Lets you specify the width of the space into which the text will draw', text_length: '允许你指定文本将绘制到的区域宽度',
text_length_adjust: 'Length adjust', text_length_adjust: '调整长度',
text_length_adjust_spacing: 'Spacing', text_length_adjust_spacing: '间距',
text_length_adjust_spacing_and_glyphs: 'Spacing & Glyphs', text_length_adjust_spacing_and_glyphs: '间距和字形',
class: 'Element class', class: 'Element class',
serif: 'Serif', serif: 'Serif',
sans_serif: 'Sans-serif', sans_serif: 'Sans-serif',
@@ -95,12 +95,12 @@ export default {
courier: 'Courier', courier: 'Courier',
helvetica: 'Helvetica', helvetica: 'Helvetica',
times: 'times', times: 'times',
prefs_and_content: 'Store preferences and SVG content locally', prefs_and_content: '将偏好设置和 SVG 内容本地保存',
prefs_only: 'Only store preferences locally', prefs_only: '仅本地保存偏好设置',
no_prefs_or_content: 'Do not store my preferences or SVG content locally', no_prefs_or_content: '不在本地保存我的偏好设置或 SVG 内容',
jgraduate_pad: 'Pad', jgraduate_pad: '填充间距',
jgraduate_reflect: 'Reflect', jgraduate_reflect: '镜像',
jgraduate_repeat: 'Repeat' jgraduate_repeat: '重复'
}, },
tools: { tools: {
main_menu: '主菜单', main_menu: '主菜单',
@@ -175,11 +175,12 @@ export default {
move_up: '向上移动', move_up: '向上移动',
move_down: '向下移动', move_down: '向下移动',
move_back: '移至底部', move_back: '移至底部',
tool_unlink_use: 'Break link to reference element (make unique)', tool_unlink_use: '断开元素连接',
ellipse_circle_tool: 'Ellipse/Circle Tool', ellipse_circle_tool: '椭圆/圆形工具',
square_rect_tool: 'Square/Rect Tool', square_rect_tool: '矩形工具',
remember_this_choice: 'Remember this choice?', remember_this_choice: '记住我的选择',
remember_this_choice_title: 'If you choose to opt out of storage while remembering this choice, the URL will change so as to avoid asking again.' remember_this_choice_title:
'如果你允许了本地存储并记住本次选择,页面将会刷新并且不再显示该提示'
}, },
layers: { layers: {
layer: '图层', layer: '图层',
@@ -215,59 +216,59 @@ export default {
snapping_onoff: '吸附开/关', snapping_onoff: '吸附开/关',
snapping_stepsize: '吸附步长:', snapping_stepsize: '吸附步长:',
grid_color: '网格颜色', grid_color: '网格颜色',
done: 'Done', done: '完成',
change_xxx_color: 'Change xxx color', change_xxx_color: '改变 xxx 颜色',
pick_paint_opavity: 'Pick a {{newValue}} Paint and Opacity', pick_paint_opavity: '请选择 {{newValue}} 颜色和不透明度',
open_color_picker: 'Click To Open Color Picker', open_color_picker: '点击打开取色器',
jpicker_title: 'Drag Markers To Pick A Color', jpicker_title: '拖动标记选择颜色',
jpicker_new_color: 'new', jpicker_new_color: '',
jpicker_current_color: 'current', jpicker_current_color: '当前',
jpicker_tooltip_colors_new_color: 'New Color - Press “OK” To Commit', jpicker_tooltip_colors_new_color: '新颜色 — 点击“确定”应用此颜色',
jpicker_tooltip_colors_current_color: 'Click To Revert To Original Color', jpicker_tooltip_colors_current_color: '点击恢复为原始颜色',
jpicker_tooltip_buttons_ok: 'Commit To This Color Selection', jpicker_tooltip_buttons_ok: '确认并应用此颜色选择',
jpicker_tooltip_buttons_cancel: 'Cancel And Revert To Original Color', jpicker_tooltip_buttons_cancel: '取消并恢复为原始颜色',
jpicker_tooltip_hue_radio: 'Set To “Hue” Color Mode', jpicker_tooltip_hue_radio: '切换为“色相”颜色模式',
jpicker_tooltip_hue_textbox: 'Enter A “Hue” Value (0-360°)', jpicker_tooltip_hue_textbox: '输入“色相”值0360°',
jpicker_tooltip_saturation_radio: 'Set To “Saturation” Color Mode', jpicker_tooltip_saturation_radio: '切换为“饱和度”颜色模式',
jpicker_tooltip_saturation_textbox: 'Enter A “Saturation” Value (0-100%)', jpicker_tooltip_saturation_textbox: '输入“饱和度”值0100%',
jpicker_tooltip_value_radio: 'Set To “Value” Color Mode', jpicker_tooltip_value_radio: '切换为“明度”颜色模式',
jpicker_tooltip_value_textbox: 'Enter A “Value” Value (0-100%)', jpicker_tooltip_value_textbox: '输入“明度”值0100%',
jpicker_tooltip_red_radio: 'Set To “Red” Color Mode', jpicker_tooltip_red_radio: '切换为“红色”颜色模式',
jpicker_tooltip_red_textbox: 'Enter A “Red” Value (0-255)', jpicker_tooltip_red_textbox: '输入“红色”值0255',
jpicker_tooltip_green_radio: 'Set To “Green” Color Mode', jpicker_tooltip_green_radio: '切换为“绿色”颜色模式',
jpicker_tooltip_green_textbox: 'Enter A “Green” Value (0-255)', jpicker_tooltip_green_textbox: '输入“绿色”值0255',
jpicker_tooltip_blue_radio: 'Set To “Blue” Color Mode', jpicker_tooltip_blue_radio: '切换为“蓝色”颜色模式',
jpicker_tooltip_blue_textbox: 'Enter A “Blue” Value (0-255)', jpicker_tooltip_blue_textbox: '输入“蓝色”值0255',
jpicker_tooltip_alpha_radio: 'Set To “Alpha” Color Mode', jpicker_tooltip_alpha_radio: '切换为“透明度”颜色模式',
jpicker_tooltip_alpha_textbox: 'Enter A “Alpha” Value (0-100)', jpicker_tooltip_alpha_textbox: '输入“透明度”值0100',
jpicker_tooltip_hex_textbox: 'Enter A “Hex” Color Value (#000000-#ffffff)', jpicker_tooltip_hex_textbox: '输入“十六进制”颜色值(#000000#ffffff',
jpicker_tooltip_hex_alpha: 'Enter A “Alpha” Value (#00-#ff)', jpicker_tooltip_hex_alpha: '输入“Alpha”值#00#ff',
jgraduate_solid_color: 'Solid Color', jgraduate_solid_color: '纯色',
jgraduate_linear_gradient: 'Linear Gradient', jgraduate_linear_gradient: '线性渐变',
jgraduate_radial_gradient: 'Radial Gradient', jgraduate_radial_gradient: '径向渐变',
jgraduate_begin_point: 'Begin Point', jgraduate_begin_point: '起始点',
jgraduate_enter_starting_x: 'Enter starting x value between 0.0 and 1.0', jgraduate_enter_starting_x: '请输入起始 X 值(0.0 1.0 之间)',
jgraduate_enter_starting_y: 'Enter starting y value between 0.0 and 1.0', jgraduate_enter_starting_y: '请输入起始 Y 值(0.0 1.0 之间)',
jgraduate_end_point: 'End Point', jgraduate_end_point: '结束点',
jgraduate_enter_ending_x: 'Enter ending x value between 0.0 and 1.0', jgraduate_enter_ending_x: '请输入结束 X 值(0.0 1.0 之间)',
jgraduate_enter_ending_y: 'Enter ending y value between 0.0 and 1.0', jgraduate_enter_ending_y: '请输入结束 Y 值(0.0 1.0 之间)',
jgraduate_center_point: 'Center Point', jgraduate_center_point: '中心点',
jgraduate_enter_value_x: 'Enter x value between 0.0 and 1.0', jgraduate_enter_value_x: '请输入 X 值(0.0 1.0 之间)',
jgraduate_enter_value_y: 'Enter y value between 0.0 and 1.0', jgraduate_enter_value_y: '请输入 Y 值(0.0 1.0 之间)',
jgraduate_focal_point: 'Focal Point', jgraduate_focal_point: '焦点',
jgraduate_match_center: 'Match center:', jgraduate_match_center: '匹配中心:',
jgraduate_enter_focal_x: 'Enter x value between 0.0 and 1.0', jgraduate_enter_focal_x: '请输入焦点 X 值(0.0 1.0 之间)',
jgraduate_enter_focal_y: 'Enter y value between 0.0 and 1.0', jgraduate_enter_focal_y: '请输入焦点 Y 值(0.0 1.0 之间)',
jgraduate_spread_method: 'Spread method', jgraduate_spread_method: '扩散方式',
jgraduate_radius: 'Radius:', jgraduate_radius: '半径:',
jgraduate_set_radius: 'Click to set radius', jgraduate_set_radius: '点击设置半径',
jgraduate_ellip: 'Ellip:', jgraduate_ellip: '椭圆率:',
jgraduate_set_ellip: 'Click to set Ellip', jgraduate_set_ellip: '点击设置椭圆率',
jgraduate_angle: 'Angle:', jgraduate_angle: '角度:',
jgraduate_set_angle: 'Click to set Angle', jgraduate_set_angle: '点击设置角度',
jgraduate_deg: 'deg:', jgraduate_deg: '度:',
jgraduate_opac: 'Opac:', jgraduate_opac: '不透明度:',
jgraduate_set_opac: 'Click to set Opac' jgraduate_set_opac: '点击设置不透明度'
}, },
notification: { notification: {
invalidAttrValGiven: '无效的参数', invalidAttrValGiven: '无效的参数',
@@ -276,28 +277,31 @@ export default {
enterUniqueLayerName: '请输入一个唯一的图层名称', enterUniqueLayerName: '请输入一个唯一的图层名称',
enterNewLayerName: '请输入新的图层名称', enterNewLayerName: '请输入新的图层名称',
layerHasThatName: '图层已经采用了该名称', layerHasThatName: '图层已经采用了该名称',
QmoveElemsToLayer: "您确定移动所选元素到图层'%s'吗?", QmoveElemsToLayer: '您确定移动所选元素到图层\'%s\'吗?',
QwantToClear: '您希望清除当前绘制的所有图形吗?\n该操作将无法撤消!', QwantToClear: '您希望清除当前绘制的所有图形吗?\n该操作将无法撤消!',
QwantToOpen: '您希望打开一个新文档吗?\n该操作将无法撤消!', QwantToOpen: '您希望打开一个新文档吗?\n该操作将无法撤消!',
QerrorsRevertToSource: 'SVG文件解析错误.\n是否还原到最初的SVG文件?', QerrorsRevertToSource: 'SVG文件解析错误.\n是否还原到最初的SVG文件?',
QignoreSourceChanges: '忽略对SVG文件所作的更改么?', QignoreSourceChanges: '忽略对SVG文件所作的更改么?',
featNotSupported: '不支持该功能', featNotSupported: '不支持该功能',
enterNewImgURL: '请输入新图像的URLL', enterNewImgURL: '请输入新图像的URLL',
defsFailOnSave: '注意: 由于您所使用的浏览器存在缺陷, 该图像无法正确显示 (不支持渐变或相关元素). 修复该缺陷后可正确显示.', defsFailOnSave:
'注意: 由于您所使用的浏览器存在缺陷, 该图像无法正确显示 (不支持渐变或相关元素). 修复该缺陷后可正确显示.',
loadingImage: '正在加载图像, 请稍候...', loadingImage: '正在加载图像, 请稍候...',
saveFromBrowser: "Select 'Save As...' in your browser (possibly via file menu or right-click context-menu) to save this image as a {{type}} file.", saveFromBrowser: '在浏览器中右键点击“另存为” ,可将图像保存为{{type}}文件',
noteTheseIssues: '同时注意以下几点: ', noteTheseIssues: '同时注意以下几点: ',
unsavedChanges: '存在未保存的修改.', unsavedChanges: '存在未保存的修改.',
enterNewLinkURL: '输入新建链接的URL地址', enterNewLinkURL: '输入新建链接的URL地址',
errorLoadingSVG: '错误: 无法加载SVG数据', errorLoadingSVG: '错误: 无法加载SVG数据',
URLLoadFail: '无法从URL中加载', URLLoadFail: '无法从URL中加载',
retrieving: '检索 \'%s\'...', retrieving: '检索 \'%s\'...',
popupWindowBlocked: 'Popup window may be blocked by browser', popupWindowBlocked: '弹出窗口可能被浏览器阻止',
exportNoBlur: 'Blurred elements will appear as un-blurred', exportNoBlur: '模糊的元素将显示为未模糊状态',
exportNoforeignObject: 'foreignObject elements will not appear', exportNoforeignObject: 'foreignObject 元素将不会显示',
exportNoDashArray: 'Strokes will appear filled', exportNoDashArray: '描边将显示为填充效果',
exportNoText: 'Text may not appear as expected', exportNoText: '文字显示可能与预期不符',
editorPreferencesMsg: 'By default and where supported, SVG-Edit can store your editor preferences and SVG content locally on your machine so you do not need to add these back each time you load SVG-Edit. If, for privacy reasons, you do not wish to store this information on your machine, you can change away from the default option below.', editorPreferencesMsg:
source_dialog_note: 'Copy the contents of this box into a text editor, then save the file with a .svg extension.' '默认情况下只要您的设备支持SVG-Edit 会将您的编辑偏好设置和 SVG 内容本地保存在您的电脑上,这样您每次重新打开 SVG-Edit 时,就无需再费力重新设置或导入内容了。但如果您出于隐私考虑,不希望这些信息留在您的设备上,只需在下方切换选项,轻松关闭这一默认功能即可!',
source_dialog_note:
'将此框中的内容复制到文本编辑器中,然后以 .svg 为扩展名保存该文件。'
} }
} }

View File

@@ -1,6 +1,6 @@
<div id="tools_left"> <div id="tools_left">
<se-button id="tool_select" title="tools.mode_select" src="select.svg"></se-button> <se-button id="tool_select" title="tools.mode_select" src="select.svg"></se-button>
<se-button id="tool_zoom" title="tools.mode_zoom" src="zoom.svg" shortcut="Z"></se-button> <se-button id="tool_zoom" title="tools.mode_zoom" src="zoom.svg" shortcut="Z / Alt + wheels"></se-button>
<se-button id="tool_fhpath" title="tools.mode_fhpath" src="pencil.svg" shortcut="Q"></se-button> <se-button id="tool_fhpath" title="tools.mode_fhpath" src="pencil.svg" shortcut="Q"></se-button>
<se-button id="tool_line" title="tools.mode_line" src="pen.svg" shortcut="L"></se-button> <se-button id="tool_line" title="tools.mode_line" src="pen.svg" shortcut="L"></se-button>
<se-button id="tool_path" title="tools.mode_path" src="path.svg" shortcut="P"></se-button> <se-button id="tool_path" title="tools.mode_path" src="path.svg" shortcut="P"></se-button>