From 6fb6ce3f5006998d1e347dbaf993e994e564c26b Mon Sep 17 00:00:00 2001 From: Le Tan Date: Thu, 23 Aug 2018 20:25:58 +0800 Subject: [PATCH] refine Chinese translations --- changes.md | 9 + src/resources/markdown_template.js | 4 +- src/translations/vnote_zh_CN.qm | Bin 134245 -> 135769 bytes src/translations/vnote_zh_CN.ts | 381 +++++++++++++++++++---------- src/vmdeditor.cpp | 30 +-- src/vmdeditor.h | 6 +- 6 files changed, 276 insertions(+), 154 deletions(-) diff --git a/changes.md b/changes.md index 8b5cf9b6..7f16c8b3 100644 --- a/changes.md +++ b/changes.md @@ -1,4 +1,13 @@ # Changes History +## v1.22 +- Editor + - Support parsting HTML as converted Markdown text; + - Improve performance of in-place preview; + - Be aware of links, images, and in-place preview in edit mode (visit or copy); + - Support exporting and copying PlantUML and Graphviz diagram in edit mode; +- Support middle click to close a tab; +- Support searching files via multiple tags, such as "vnote && markdown"; + ## v1.21 - Improve performance of editor (now could process 10K lines); - Support `vnote` highlight in edit mode; diff --git a/src/resources/markdown_template.js b/src/resources/markdown_template.js index 128df2c1..61125877 100644 --- a/src/resources/markdown_template.js +++ b/src/resources/markdown_template.js @@ -1405,8 +1405,8 @@ var handleGraphvizResult = function(id, timeStamp, format, result) { var setPreviewEnabled = function(enabled) { var hint = '
' + - '

Live Preview for Diagrams

' + - '

Place the cursor on the definition of a diagram to preview.

' + + '

Live Preview for Graphs

' + + '

Place the cursor on the definition of a graph to preview.

' + '
'; if (enabled) { diff --git a/src/translations/vnote_zh_CN.qm b/src/translations/vnote_zh_CN.qm index 8b0517e8ba14ffc62b14526a0fdadbd843828795..c945f440aff7c5235e066d5dbbb6e41fb7706ec3 100644 GIT binary patch delta 7363 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 delta 6239 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 t6eKM;oWu-P&R(;8c~F3H(9abi|F所有幻词: - + Insert Link 插入链接 - + Found no match 没有找到匹配项 - + Found %1 %2 找到 %1 %2 - + matches 处匹配 - + match 处匹配 - + Replace %1 %2 替换了 %1 %2 - + occurences 处匹配 - + occurence 处匹配 @@ -69,29 +69,29 @@ 这里插入图片 - + Information 信息 - + Please re-open current opened tabs to make it work. 请重新打开当前打开页面以生效。 - - + + Illegal name. Please try again: 非法名字。请重试: - - + + Name already exists. Please try again: 名字已存在。请重试: - + Set base font point size %1 当前字体大小为 %1 @@ -1217,192 +1217,192 @@ VEditWindow - + Locate To Folder 定位所在文件夹 - + Locate the folder of current note 定位到当前笔记所在的文件夹 - + Move One Split Left 左移一个分割窗口 - + Move current tab to the split on the left 将当前标签页往左移动一个分割窗口 - + Move One Split Right 右移一个分割窗口 - + Move current tab to the split on the right 将当前标签页往右移动一个分割窗口 - + Close Tab 关闭标签页 - + Close current note tab 关闭当前标签页 - + Close Other Tabs 关闭其他标签页 - + Close all other note tabs 关闭其他所有标签页 - + Close All Tabs 关闭所有标签页 - + Close all the note tabs 关闭所有标签页 - + Maximize Split 最大化分割 - + Maximize current split window 最大化当前分割窗口 - + Distribute Splits 分布分割 - + Distribute all the split windows evenly 均等分布所有分割窗口 - + Close Tabs To The Right 关闭右侧标签页 - + Close all the note tabs to the right of current tab 关闭当前标签页右侧所有标签页 - + Note Info 笔记信息 - + View and edit information of the note 查看并编辑笔记的信息 - + Add To Cart 添加到小推车 - + Explore the folder containing this note in operating system 在操作系统中浏览包含该笔记的文件夹 - + Add this note to Cart for further processing 将该笔记添加到小推车以进一步处理 - + 1 note added to Cart 1个笔记添加到小推车 - + Open Note Location 打开笔记所在位置 - + Reload From Disk 从磁盘中重新加载 - + Reload the content of this note from disk 从磁盘中重新加载该笔记的内容 - + &Recycle Bin 回收站 (&R) - + Open the recycle bin of this note 打开该笔记的回收站 - + Opened Notes List 已打开笔记列表 - + Remove Split 移除分割 - + Pin To History 钉到历史中 - + Pin this note to History 将该笔记钉到历史中 - + 1 note pinned to History 1个笔记被钉到历史中 - + Split 分割 - + Split current window vertically 垂直分割当前窗口 - + Remove current split window 移除当前分割窗口 - + Menu 菜单 @@ -3306,17 +3306,17 @@ Modified Time: %3 VListUE - + List and search history 列出和搜索历史 - + Invalid ID %1 无效的ID %1 - + History 历史 @@ -5012,122 +5012,235 @@ Modified Time: %3 VMdEditor - + &Save Changes And Read 保存更改并阅读 (&S) - + Save changes and exit edit mode 保存对当前笔记的更改并退出编辑模式 - + &Discard Changes And Read 放弃更改并阅读 (&D) - + Discard changes and exit edit mode 放弃对当前笔记的更改并退出编辑模式 - Live Preview for Diagrams - 图表实时预览 + 图表实时预览 - Toggle live preview panel for diagrams - 打开或关闭图表实时预览面板 + 打开或关闭图表实时预览面板 - + Following images seems not to be used in this note anymore. Please confirm the deletion of these images. 下列图片似乎已经不再在该笔记中被使用。请确认是否删除这些图片。 - + Deleted files could be found in the recycle bin of this note.<br>Click "Cancel" to leave them untouched. 被删除的文件可以在该笔记的回收站中找回。<br>点击“取消”以终止操作。 - + Confirm Cleaning Up Unused Images 确认清理未被使用的图片 - - + + + Insert From Clipboard 粘贴选项 - + Insert From URL 从URL中插入 - + Insert From Image Data 从图片数据中插入 - - + + Insert As Image Link 作为图片链接插入 - + + Insert As Image 作为图片插入 - + + Insert As Text 作为文本插入 - + + Live Preview For Graphs + 图表实时预览 + + + + Toggle live preview panel for graphs + 打开或关闭图表实时预览面板 + + + + Parse And Insert Markdown Text + 解析并插入Markdown文本 + + + + + Warning 警告 - + Fail to move unsaved inserted image %1 to %2. 移动未保存的插入图片 %1 到 %2 失败。 - + Please check it manually to avoid image loss. 请手动检查以免丢失图片。 - + + Parsed Markdown text inserted + 解析的Markdown文本已插入 + + + Copy HTML As 复制HTML为 - + Copy selected content as HTML using rules specified by target %1 使用目标 %1 指定的规则将所选内容复制为HTML - + Paste As Block &Quote 粘贴为块引用 (&Q) - + Paste text from clipboard as block quote 将剪切版中的文本作为块引用粘贴 - + Insert Image Link 插入图片链接 + + + View Image + 查看图片 + + + + Copy Image URL + 复制图片URL + + + + Copy Image Path + 复制图片路径 + + + + Copy Image + 复制图片 + + + + View Link + 访问链接 + + + + Copy Link URL + 复制链接URL + + + + Copy Link Path + 复制链接路径 + + + + Copy In-Place Preview + 复制原地预览 + + + + Copy Graph + 复制图表 + + + + PNG + PNG格式 + + + + Export graph as PNG to a temporary file and copy + 将图表以PNG格式导出到一个临时文件并复制 + + + + SVG + SVG格式 + + + + Export graph as SVG to a temporary file and copy + 将图表以SVG格式导出到一个临时文件并复制 + + + + Fail to open a temporary file for export. + 无法打开一个临时文件并导出。 + + + + Exporting graph + 正在导出图表 + + + + Fail to export graph. + 导出图表失败。 + + + + Graph exported and copied + 图表已导出并复制 + + + + Fail to read exported image: %1 + 无法读取导出的图片: %1 + VMdTab @@ -5180,97 +5293,97 @@ Modified Time: %3 保存笔记时,写入文件失败。请稍后再试。 - + Snippet applied 片段已应用 - + Snippet %1 is not applicable 片段 %1 不适用 - + Snippets are not applicable 无法应用片段 - + No available snippets defined with shortcuts 当前没有定义带有快捷键的片段可用 - + Backup File Found 发现备份文件 - + Found backup file <span style="%1">%2</span> when opening note <span style="%1">%3</span>. 打开笔记 <span style="%1">%3</span> 时发现备份文件 <span style="%1">%2</span>。 - + VNote may crash while editing this note before.<br/>Please choose to recover from the backup file or delete it.<br/><br/>Note file last modified: <span style="%1">%2</span><br/>Backup file last modified: <span style="%1">%3</span> VNote此前编辑该笔记时可能意外退出。<br/>请选择从该备份文件恢复或者删除该备份文件。<br/><br/>笔记文件上次修改时间: <span style="%1">%2</span><br/>备份文件上次修改时间: <span style="%1">%3</span> - + Recover From Backup File 从备份文件恢复 - + Discard Backup File 放弃备份文件 - + Cancel 取消 - + Quit 退出 - + Not an editor command: %1 不是一个编辑器命令:%1 - + Page saved to %1 页面保存为 %1 - + Fail to save page to %1 保存页面为 %1 失败 - + Single HTML (*.html) 仅HTML (*.html) - + Complete HTML (*.html) 完整HTML (*.html) - + MIME HTML (*.mht) MIME HTML (*.mht) - + Save Page 保存页面 - + Saving page to %1 正在保存页面为 %1 @@ -6123,64 +6236,64 @@ If absolute path is used, VNote will not manage those images.(empty to use globa VSearchResultTree - + &Open 打开 (&O) - + Open selected notes 打开选定笔记 - + &Locate To Folder 定位所在文件夹 (&L) - + Locate the folder of current note 定位到当前笔记所在的文件夹 - + Add To Cart 添加到小推车 - + Add selected notes to Cart for further processing 将所选笔记添加到小推车以进一步处理 - + Pin To History 钉到历史中 - + Pin selected notes to History 将选定笔记钉到历史中 - + %1 %2 added to Cart %1个%2添加到小推车 - - + + notes 笔记 - - + + note 笔记 - + %1 %2 pinned to History %1个%2被钉到历史中 @@ -6188,87 +6301,87 @@ If absolute path is used, VNote will not manage those images.(empty to use globa VSearchUE - + List and search all the notebooks 列出和搜索全部笔记本 - + Search the name of folders/notes in all the notebooks 在全部笔记本中搜索文件夹或笔记的名字 - + Search the content of notes in all the notebooks 在全部笔记本中搜索笔记的内容 - + Search the tags of notes in all the notebooks 在全部笔记本中搜索笔记的标签 - + Search the name of folders/notes in current notebook 在当前笔记本中搜索文件夹或笔记的名字 - + Search the content of notes in current notebook 在当前笔记本中搜索笔记的内容 - + Search the tags of notes in current notebook 在当前笔记本中搜索笔记的标签 - + Search the name of folders/notes in current folder 在当前文件夹中搜索文件夹或笔记的名字 - + Search the content of notes in current folder 在当前文件夹中搜索笔记的内容 - + Search the tags of notes in current folder 在当前文件夹中搜索笔记的标签 - + List and search the name of opened notes in buffer 列出和搜索缓冲区中已打开笔记的名字 - + Search the content of opened notes in buffer 搜索缓冲区中已打开笔记的内容 - + Search the outline of opened notes in buffer 搜索缓冲区中已打开笔记的大纲 - + Search the path of folders/notes in all the notebooks 在全部笔记本中搜索文件夹或笔记的路径 - + Search the path of folders/notes in current notebook 在当前笔记本中搜索文件夹或笔记的路径 - + Search the content of notes in Explorer root directory 在浏览器根目录中搜索笔记的内容 - + Invalid ID %1 无效的ID %1 @@ -7115,7 +7228,7 @@ If absolute path is used, VNote will not manage those images.(empty to use globa VUniversalEntry - + Universal Entry, reach anything by typing 通用入口,触手可达 diff --git a/src/vmdeditor.cpp b/src/vmdeditor.cpp index 22bcf446..41200042 100644 --- a/src/vmdeditor.cpp +++ b/src/vmdeditor.cpp @@ -327,8 +327,8 @@ void VMdEditor::contextMenuEvent(QContextMenuEvent *p_event) emit m_object->discardAndRead(); }); - QAction *toggleLivePreviewAct = new QAction(tr("Live Preview for Diagrams"), menu.data()); - toggleLivePreviewAct->setToolTip(tr("Toggle live preview panel for diagrams")); + QAction *toggleLivePreviewAct = new QAction(tr("Live Preview For Graphs"), menu.data()); + toggleLivePreviewAct->setToolTip(tr("Toggle live preview panel for graphs")); connect(toggleLivePreviewAct, &QAction::triggered, this, [this]() { m_editTab->toggleLivePreview(); @@ -825,7 +825,7 @@ void VMdEditor::insertFromMimeData(const QMimeData *p_source) // Handle HTML. VSelectDialog dialog(tr("Insert From Clipboard"), this); - dialog.addSelection(tr("Insert Converted Markdown Text"), 0); + dialog.addSelection(tr("Parse And Insert Markdown Text"), 0); dialog.addSelection(tr("Insert As Text"), 1); if (p_source->hasImage()) { dialog.addSelection(tr("Insert As Image"), 2); @@ -1240,7 +1240,7 @@ void VMdEditor::htmlToTextFinished(int p_id, int p_timeStamp, const QString &p_t QTextCursor cursor = textCursor(); cursor.insertText(p_text); setTextCursor(cursor); - emit m_object->statusMessage(tr("Converted Markdown text inverted")); + emit m_object->statusMessage(tr("Parsed Markdown text inserted")); } } @@ -1710,22 +1710,22 @@ bool VMdEditor::initExportAndCopyMenu(QAction *p_before, return false; } - QMenu *subMenu = new QMenu(tr("Copy Diagram"), p_menu); + QMenu *subMenu = new QMenu(tr("Copy Graph"), p_menu); subMenu->setToolTipsVisible(true); QAction *pngAct = new QAction(tr("PNG"), subMenu); - pngAct->setToolTip(tr("Export diagram as PNG to a temporary file and copy")); + pngAct->setToolTip(tr("Export graph as PNG to a temporary file and copy")); connect(pngAct, &QAction::triggered, this, [this, lang = cb.m_lang, text = cb.m_text]() { - exportDiagramAndCopy(lang, text, "png"); + exportGraphAndCopy(lang, text, "png"); }); subMenu->addAction(pngAct); QAction *svgAct = new QAction(tr("SVG"), subMenu); - svgAct->setToolTip(tr("Export diagram as SVG to a temporary file and copy")); + svgAct->setToolTip(tr("Export graph as SVG to a temporary file and copy")); connect(svgAct, &QAction::triggered, this, [this, lang = cb.m_lang, text = cb.m_text]() { - exportDiagramAndCopy(lang, text, "svg"); + exportGraphAndCopy(lang, text, "svg"); }); subMenu->addAction(svgAct); @@ -1733,9 +1733,9 @@ bool VMdEditor::initExportAndCopyMenu(QAction *p_before, return true; } -void VMdEditor::exportDiagramAndCopy(const QString &p_lang, - const QString &p_text, - const QString &p_format) +void VMdEditor::exportGraphAndCopy(const QString &p_lang, + const QString &p_text, + const QString &p_format) { m_exportTempFile.reset(new QTemporaryFile(QDir::tempPath() + QDir::separator() @@ -1752,7 +1752,7 @@ void VMdEditor::exportDiagramAndCopy(const QString &p_lang, return; } - emit m_object->statusMessage(tr("Exporting diagram")); + emit m_object->statusMessage(tr("Exporting graph")); QString filePath(m_exportTempFile->fileName()); QByteArray out; @@ -1767,7 +1767,7 @@ void VMdEditor::exportDiagramAndCopy(const QString &p_lang, if (out.isEmpty() || m_exportTempFile->write(out) == -1) { VUtils::showMessage(QMessageBox::Warning, tr("Warning"), - tr("Fail to export diagram."), + tr("Fail to export graph."), "", QMessageBox::Ok, QMessageBox::Ok, @@ -1782,7 +1782,7 @@ void VMdEditor::exportDiagramAndCopy(const QString &p_lang, img, filePath, QClipboard::Clipboard); - emit m_object->statusMessage(tr("Diagram exported and copied")); + emit m_object->statusMessage(tr("Graph exported and copied")); } else { emit m_object->statusMessage(tr("Fail to read exported image: %1").arg(filePath)); } diff --git a/src/vmdeditor.h b/src/vmdeditor.h index 9235d19f..96299da5 100644 --- a/src/vmdeditor.h +++ b/src/vmdeditor.h @@ -297,9 +297,9 @@ private: void setFontAndPaletteByStyleSheet(const QFont &p_font, const QPalette &p_palette); - void exportDiagramAndCopy(const QString &p_lang, - const QString &p_text, - const QString &p_format); + void exportGraphAndCopy(const QString &p_lang, + const QString &p_text, + const QString &p_format); PegMarkdownHighlighter *m_pegHighlighter;