diff --git a/src/translations/vnote_zh_CN.qm b/src/translations/vnote_zh_CN.qm index 20ca9cbd..d3d28eaa 100644 Binary files a/src/translations/vnote_zh_CN.qm and b/src/translations/vnote_zh_CN.qm differ diff --git a/src/translations/vnote_zh_CN.ts b/src/translations/vnote_zh_CN.ts index c38c2aa7..b5bb342a 100644 --- a/src/translations/vnote_zh_CN.ts +++ b/src/translations/vnote_zh_CN.ts @@ -10,8 +10,8 @@ - - + + Insert Link 插入链接 @@ -73,19 +73,19 @@ 请重新打开当前打开页面以生效。 - - + + Illegal name. Please try again: 非法名字。请重试: - - + + Name already exists. Please try again: 名字已存在。请重试: - + Set base font point size %1 当前字体大小为 %1 @@ -2398,52 +2398,61 @@ If absolute path is used, VNote will not manage those images.(empty to use globa 在VNote中的最近修改时间 - Tags of this note separated by , - 该笔记的标签,由逗号,分隔 + 该笔记的标签,由逗号,分隔 - + + Add tags to a note at the right bottom status bar when it is opened + 打开笔记后在状态栏右下角添加标签 + + + + Tags of this note separated by , (%1) + 该笔记的标签,由逗号,分隔 (%1) + + + Note &name: 笔记名 (&N): - + File path: 文件路径: - + Attachment folder: 附件文件夹: - + Created time: 创建时间: - + Modified time: 修改时间: - + Tags: 标签: - + <span style="%1">WARNING</span>: Name (case-insensitive) <span style="%2">%3</span> already exists. Please choose another name. <span style="%1">警告</span>:已存在该名字(不区分大小写) <span style="%2">%3</span>。请选择另一个名字。 - + <span style="%1">WARNING</span>: Name <span style="%2">%3</span> contains illegal characters (after magic word evaluation). <span style="%1">警告</span>:名字 <span style="%2">%3</span> 包含非法字符(解析幻词之后)。 - + <span style="%1">WARNING</span>: Changing type of the note is not supported. Please use the same suffix as the old one. <span style="%1">警告</span>:不支持修改笔记的类型。请使用原来的后缀名。 @@ -3046,139 +3055,387 @@ Modified Time: %3 VGeneralTab - + Choose the language of VNote interface 选择VNote界面语言 - - + + System 默认 - + Path of file to quick access 快速访问文件路径 - + Set the path of a file to quick access (absolute or relative to configuration folder) 设置一个文件路径以快速访问(绝对路径或者相对于配置文件夹的相对路径) - + Select File To Quick Access 选择文件以快速访问 - + Choose the keyboard layout mapping to use in shortcuts 选择在快捷键中使用的键盘布局映射 - + Choose the OpenGL implementation to load (restart VNote to make it work) 选择需要加载的OpenGL实现(重启VNote生效) - + Edit 编辑 - + Language: 语言: - + Startup pages: 启动页面: - + Quick access: 快速访问: - + Keyboard layout mapping: 键盘布局映射: - + OpenGL: OpenGL: - + Restore tabs or open specific notes on startup 在启动时恢复标签页或打开指定笔记 - - + + None - + Continue where you left off 继续上次退出时的页面 - + Open specific pages 打开指定页面 - + Absolute path of the notes to open on startup (one note per line) 需要在启动时打开的笔记的绝对路径(一行一个笔记) - + DesktopOpenGL DesktopOpenGL - + OpenGLES OpenGLES - + SoftwareOpenGL SoftwareOpenGL - - + + Browse 浏览文件 - + Select files to add as startup pages 选择文件添加为启动页面 - + Select Files As Startup Pages 选择文件作为启动页面 - + System tray 系统托盘 - + Minimized to the system tray after closing VNote (not supported in macOS) 关闭VNote后最小化到系统托盘(不支持macOS) + + VGiteeImageHosting + + + + + + + + + + + + + Gitee Image Hosting + Gitee图床 + + + + + Please configure the Gitee image hosting first! + 请先配置Gitee图床! + + + + Uploading images to Gitee... + 正在上传图片到Gitee ... + + + + Abort + 终止 + + + + Uploading Images To Gitee + 正在上传图片到Gitee + + + + + Unsupported type: + 不支持的类型: + + + + No local images to upload: %1 + 没有需要上传的本地图片: %1 + + + + Authentication failed: + 验证失败: + + + + + +Please check your Gitee Image Hosting parameters! + + +请检查Gitee图床参数! + + + + Network error: + 网络错误: + + + + + +Please check your network! + + +请检查网络! + + + + Uploading image: %1 + 正在上传图片: %1 + + + + The picture does not exist in this path: + 图片不存在: + + + + JSON decode error. Please contact the developer. + JSON解析错误。请联系开发者。 + + + + Gitee status code != 201. Please contact the developer. + Gitee返回代码不是201。请联系开发者。 + + + + Uploading + 正在上传 + + + + + +Network error: + + +网络错误: + + + + + +Please check the network or image size + + +请检查网络或图片尺寸 + + + + Copied contents with new image links + 已复制替换新图片链接的内容 + + + + VGithubImageHosting + + + + Please configure the GitHub image hosting first! + 请先配置GitHub图床! + + + + + + + + + + + + + + GitHub Image Hosting + GitHub图床 + + + + Bad credentials! + 凭证无效! + + + + Please check your GitHub Image Hosting parameters! + 请检查GitHub图床参数! + + + + Uploading images to GitHub... + 正在上传图片到GitHub ... + + + + Abort + 终止 + + + + Uploading Images To Github + 正在上传图片到GitHub + + + + + Unsupported type: + 不支持的类型: + + + + No local images to upload: %1 + 没有需要上传的本地图片: %1 + + + + Network error: + 网络错误: + + + + + +Please check your network! + + +请检查网络! + + + + Uploading image: %1 + 正在上传图片: %1 + + + + The picture does not exist in this path: + 图片不存在: + + + + JSON decode error. Please contact the developer. + JSON解析错误。请联系开发者。 + + + + GitHub status code != 201. Please contact the developer. + GitHub返回代码不是201。请联系开发者。 + + + + Uploading + 正在上传 + + + + + +Network error: + + +网络错误: + + + + + +Please check the network or image size + + +请检查网络或图片尺寸 + + + + Copied contents with new image links + 已复制替换新图片链接的内容 + + VHelpUE @@ -3436,6 +3693,128 @@ Modified Time: %3 保存笔记时,写入文件失败。请稍后再试。 + + VImageHostingTab + + + GitHub + GitHub + + + + Gitee + Gitee + + + + WeChat + 微信 + + + + Tencent Cloud + 腾讯云 + + + + GitHub personal access token + GitHub个人访问令牌 + + + + Name of GitHub repository for image hosting + GitHub图床仓库名字 + + + + User name of GitHub + GitHub用户名 + + + + + + + Keep image scale(such as '=100x') + 保留图片缩放(如 '=100x') + + + + + + + Copy the new content instead of replacing + 复制而非替换新内容 + + + + + Personal access token: + 个人访问令牌: + + + + + Repo name: + 仓库名: + + + + + User name: + 用户名: + + + + Gitee personal access token + Gitee个人访问令牌 + + + + Name of Gitee repository for image hosting + Gitee图床仓库名字 + + + + User name of Gitee + Gitee用户名 + + + + AppId: + + + + + AppSecret: + + + + + markdown2WechatToolUrl: + + + + + Tencent access domain name + + + + + Access domain name: + + + + + SecretId: + + + + + SecretKey: + + + VInsertImageDialog @@ -3669,12 +4048,12 @@ Modified Time: %3 VLookTab - + Icon size in pixel of tool bar (restart VNote to make it work) 工具栏图标像素大小(重启VNote生效) - + Tool bar icon size: 工具栏图标大小: @@ -5144,239 +5523,239 @@ Modified Time: %3 VMarkdownTab - + Default mode to open a file 文件默认打开模式 - + Read Mode 阅读模式 - + Edit Mode 编辑模式 - + Location of MathJax JavaScript and its configuration (restart VNote to make it work in in-place preview) MathJax JavaScript脚本的位置和配置(重启VNote使其在原地预览中生效) - + Need to prepend "file://" to local path 本地路径需要在前面添加“file://” - + Enable PlantUML support in Markdown 启用PlantUML渲染图表 - + Online Service 在线服务 - + Local JAR 本地JAR - + Server address for online PlantUML PlantUML在线服务器地址 - + Location to the PlantUML JAR executable for local PlantUML PlantUML本地JAR可执行文件位置 - - + + Test 测试 - + Test PlantUML JAR configuration 测试PlantUML JAR配置 - - + + Warning 警告 - + The JAR file specified does not exist. 指定的JAR文件不存在。 - + Please input the right absolute file path to the JAR file. 请输入正确的JAR文件的绝对文件路径。 - + Please specify the absolute file path to the JAR file. 请输入JAR文件的绝对文件路径。 - + It should be something like "/path/to/plantuml.jar". 应该是类似于“/path/to/plantuml.jar”。 - - + + Information 信息 - - + + Test %1. 测试 %1。 - - + + succeeded 成功 - - + + failed 失败 - + Graphviz Graphviz - + Enable Graphviz for drawing graph 启用Graphviz渲染图表 - + Empty to detect automatically 自动检测 - + Location to the GraphViz dot executable Graphviz dot可执行文件位置 - + Test Graphviz executable configuration 测试Graphviz可执行文件配置 - + MathJax configuration: MathJax配置: - + PlantUML: PlantUML: - + PlantUML server: PlantUML服务器: - + PlantUML JAR: PlantUML JAR: - + Graphviz executable: Graphviz可执行文件: - + Enable auto sequence for all headings (in the form like 1.2.3.4.) 自动为所有标题添加序列(类似于1.2.3.4.) - - + + Disabled 关闭 - + Enabled 启用 - + Enabled for internal notes only 仅对内部笔记启用 - + Base level to start heading sequence 标题序列起始级别 - + 1 1 - + 2 2 - + 3 3 - + 4 4 - + 5 5 - + 6 6 - + Specify the screen column in fenced code block which will be highlighted 指定编辑模式下代码块中的高亮列 - + Color column: 高亮列: - + Open mode: 打开模式: - + Heading sequence: 标题序列: @@ -5488,53 +5867,53 @@ Modified Time: %3 放弃对当前笔记的更改并退出编辑模式 - + 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 作为文本插入 @@ -5554,241 +5933,270 @@ Modified Time: %3 打开或关闭图表实时预览面板 - - - - + + + + Warning 警告 - + Fail to move unsaved inserted image %1 to %2. 移动未保存的插入图片 %1 到 %2 失败。 - + Please check it manually to avoid image loss. 请手动检查以免丢失图片。 - + Inserting parsed Markdown text 正在插入解析的Markdown文本 - + 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 将剪切版中的文本作为块引用粘贴 - + Paste Parsed &Markdown Text 粘贴解析的Markdown文本 (&M) - + Parse HTML to Markdown text and paste 解析HTML为Markdown文本并粘贴 - + 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 - + Insert As Relative Image Link 作为相对图片链接插入 - + Insert As Link 作为链接插入 - + Insert As Relative Link 作为相对链接插入 - + Attach And Insert Link 添加附件并插入链接 - + Insert File Content 插入文本内容 - + Fail to add attachment %1 for note <span style="%2">%3</span>. 为笔记 <span style="%2">%3</span> 添加附件 %1 失败。 - + 1 file added as attachment 1个文件添加为附件 - + Fetching images to local folder... 正在获取图片到本地文件夹... - + Abort 终止 - + Fetching Images To Local Folder 正在获取图片到本地文件夹 - + Fetching image: %1 获取图片: %1 - + Link To Attachment 链接到附件 + + + &Upload Image To + 上传图片 (&U) + + + + &GitHub + &GitHub + + + + G&itee + G&itee + + + + &Wechat + 微信 (&W) + + + + &Tencent + 腾讯云 (&T) + VMdTab - + + + + + Information 注意 - + Note <span style="%1">%2</span> has been modified. 笔记 <span style="%1">%2</span> 已经被更改。 - + Do you want to save your changes? 是否保存更改? - - - + + + Warning 警告 @@ -5803,126 +6211,134 @@ Modified Time: %3 请检查文件 %1 是否存在。 - + Could not modify a read-only note <span style="%1">%2</span>. 无法修改只读笔记 <span style="%1">%2</span>。 - + Please save your changes to other notes manually. 请手动保存更改到其他笔记。 - - + + Fail to save note. 保存笔记失败。 - + File <span style="%1">%2</span> being written has been removed. 将要写入的文件 <span style="%1">%2</span> 已经被移除。 - + Fail to write to disk when saving a note. Please try it again. 保存笔记时,写入文件失败。请稍后再试。 - + 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 + + + + + + Please save changes to file before uploading images. + 请在上传图片前先保存更改到文件。 + VMetaWordManager @@ -6082,7 +6498,7 @@ Modified Time: %3 VMiscTab - + Highlight matches of a full-text search in page 在页面内高亮全文搜索的匹配 @@ -6330,53 +6746,53 @@ Modified Time: %3 VNoteManagementTab - + Notes 笔记 - + External Files 外部文件 - - + + Custom image folder 自定义图片文件夹 - + Set the global name of the image folder to hold images of notes (restart VNote to make it work) 全局设置图片文件夹的名字以保存笔记的图片(重启VNote生效) - + Custom attachment folder 自定义附件文件夹 - + Set the global name of the attachment folder to hold attachments of notes (restart VNote to make it work) 全局设置附件文件夹的名字以保存笔记的附件(重启VNote生效) - + Name of the attachment folder 附件文件夹的名字 - + Single click to open a note in current tab 单击在当前标签页打开笔记 - + Single click a note in the notes list to open it in current tab, double click to open it in a new tab 在笔记列表中单击一个笔记在当前标签页打开,双击在新标签页中打开 - + Set the path of the global image folder to hold images of external files (restart VNote to make it work). You could use both absolute or relative path here. If absolute path is used, VNote will not manage those images, so you need to clean up unused images manually. @@ -6385,8 +6801,8 @@ those images, so you need to clean up unused images manually. 这些图片,需要由用户手动清理不再使用的图片。 - - + + Name of the image folder 图片文件夹的名字 @@ -6466,156 +6882,181 @@ those images, so you need to clean up unused images manually. VNotebookSelector - + &Delete 删除 (&D) - + Delete current notebook 删除当前笔记本 - + View and edit current notebook's information 查看并编辑当前笔记本的信息 - + &Open Notebook Location 打开笔记本所在位置 (&O) - + * When a non-empty folder is chosen, VNote will create a notebook based on the folders and files in it recursively. * 如果选定一个非空的文件夹,VNote会递归地基于该文件夹下的文件夹和文件来创建一个笔记本。 - + Successfully build notebook recursively (%1). 成功递归构建笔记本 (%1)。 - + Fail to build notebook recursively. 递归构建笔记本失败。 - + + &Sort + 排序 (&S) + + + + Sort notebooks + 排序笔记本 + + + &Recycle Bin 回收站 (&R) - + Open the recycle bin of this notebook 打开该笔记本的回收站 - + &Empty Recycle Bin 清空回收站 (&E) - + Empty the recycle bin of this notebook 清空该笔记本的回收站 - + Are you sure to empty recycle bin of notebook <span style="%1">%2</span>? 确认清空笔记本 <span style="%1">%2</span> 的回收站? - + <span style="%1">WARNING</span>: VNote will delete all the files in directory <span style="%2">%3</span>.<br>It may be UNRECOVERABLE! <span style="%1">警告</span>:VNote会删除目录 <span style="%2">%3</span> 中的所有文件。<br>该操作可能是不可恢复的! - + Successfully emptied recycle bin of notebook <span style="%1">%2</span>! 成功清空笔记本 <span style="%1">%2</span> 的回收站! - + Fail to empty recycle bin of notebook <span style="%1">%2</span>! 清空笔记本 <span style="%1">%2</span> 的回收站失败! - - + + Sort Notebooks + 排序笔记本 + + + + Sort notebooks in the configuration file. + 对笔记本在配置文件中进行排序。 + + + + Name + 名字 + + + + Information 注意 - + Explore the root folder of this notebook in operating system 在操作系统中浏览包含该笔记本的根文件夹 - + &Info (Rename) 信息 (重命名)(&I) - + Create or import a notebook 新建或导入一个笔记本 - + View and edit notebooks 查看并编辑笔记本 - + * The root folder should be used EXCLUSIVELY by VNote and it is recommended to be EMPTY. * 根目录应该给VNote单独使用,并且推荐使用空文件夹。 - + * A previously created notebook could be imported into VNote by choosing its root folder. * 选择一个此前创建的笔记本的根目录可以将该笔记本导入VNote。 - - - + + + Warning 警告 - + Fail to create notebook <span style="%1">%2</span> in <span style="%1">%3</span>. 在 <span style="%1">%3</span> 中新建笔记本 <span style="%1">%2</span> 失败。 - + Delete Notebook 删除笔记本 - + Fail to delete the root folder of notebook <span style="%1">%2</span> from disk. You may open the folder and check it manually. 无法从磁盘中删除笔记本 <span style="%1">%2</span> 的根目录。 请打开该目录并手动检查。 - - + + Add Notebook 添加笔记本 - + Please type the name of the notebook and choose a folder as the Root Folder of the notebook. 请输入笔记本的名字并选择一个文件夹作为笔记本的根目录。 - + Delete Notebook Folder From Disk 从磁盘中删除笔记本根目录 - + Notebook Information 笔记本信息 @@ -6680,32 +7121,32 @@ If absolute path is used, VNote will not manage those images.(empty to use globa VReadEditTab - + Read Mode (For Markdown Only) 阅读模式(仅Markdown笔记有效) - + Edit Mode 编辑模式 - + Custom Web zoom factor 自定义页面缩放倍数 - + Set the zoom factor of the Web page when reading 设置阅读模式下页面的缩放倍数 - + Flash current heading 闪烁当前标题 - + Flash current heading on change 当前标题发生改变时闪烁 @@ -6714,7 +7155,7 @@ If absolute path is used, VNote will not manage those images.(empty to use globa 交换文件 - + Automatically save changes to a swap file for backup 自动将更改保存到交换文件中以备份 @@ -6727,72 +7168,72 @@ If absolute path is used, VNote will not manage those images.(empty to use globa 编辑时自动保存笔记 - + Swap file (Recommended) 交换文件 (推荐) - + Auto save (Buggy) 自动保存 (不稳定) - + Automatically save the note when editing (may DELETE images on save) 编辑时自动保存笔记 (可能会在保存的时候删除图片) - + Choose the key mode in editor 选择编辑器的按键模式 - + Normal 普通 - + Vim Vim - + Smart input method in Vim mode Vim模式智能输入法 - + Disable input method when leaving Insert mode in Vim mode Vim模式中,退出插入模式时禁用输入法 - + Custom editor font 自定义编辑器字体 - + Set the font of editor to override style configuration 设置编辑器的字体以覆盖样式的配置 - + Set the zoom delta of the editor font 设置编辑器字体的缩放大小 - + Key mode: 按键模式: - + Editor zoom delta: 编辑器缩放大小: - + It's recommended to enable "Swap file" or "Auto save", not both 推荐启用“交换文件”或“自动保存”,但不推荐两者都启用 @@ -7289,58 +7730,63 @@ If absolute path is used, VNote will not manage those images.(empty to use globa 杂项 - - - - + + Image Hosting + 图床 + + + + + + Warning 警告 - + Are you sure to reset VNote? 确认重置VNote? - + All configurations (except notebooks information) will be reset to default values. It is UNRECOVERABLE! 所有的配置(除了笔记本信息)都会被重置为默认值。该操作是不可恢复的! - - + + Information 注意 - - + + Please restart VNote to make it work. 请重新启动VNote以便重置生效。 - - + + Any change to VNote before restart will be lost! 在重新启动前,所有对VNote的更改都会丢失! - + Are you sure to reset the layout of VNote? 确认重置VNote的布局? - + The view and layout mode will be reset. It is UNRECOVERABLE! 视图和布局会被重置。该操作是不可恢复的! - + Fail to load configuration. 读取配置失败。 - + Fail to save configuration. Please try it again. 保存配置失败。请稍后再试。 @@ -7804,6 +8250,90 @@ If absolute path is used, VNote will not manage those images.(empty to use globa 标签“%1” 已移除 + + VTencentImageHosting + + + Abort + 终止 + + + + + + + + + + + Tencent Cloud Image Hosting + 腾讯云图床 + + + + Please configure the Tencent Cloud image hosting first! + 请先配置腾讯云图床! + + + + Uploading images to Tencent Cloud... + 正在上传图片到腾讯云 ... + + + + Uploading Images To Tencent Cloud + 正在上传图片到腾讯云 + + + + + Unsupported type: + 不支持的类型: + + + + No local images to upload: %1 + 没有需要上传的本地图片: %1 + + + + Uploading image: %1 + 正在上传图片: %1 + + + + The picture does not exist in this path: + 图片不存在: + + + + + +Network error: HostNotFoundError + + +网络错误: 无法找到主机 + + + + + +Please check your network + + +请检查网络 + + + + Uploading + 正在上传 + + + + Copied contents with new image links + 已复制替换新图片链接的内容 + + VTipsDialog @@ -8127,6 +8657,164 @@ Latest Version: v%2 双向 + + VWechatImageHosting + + + + + + + + + + + + + + + + Wechat Image Hosting + 微信图床 + + + + Please configure the Wechat image hosting first! + 请先配置微信图床! + + + + Abort + 终止 + + + + + Unsupported type: + 不支持的类型: + + + + No local images to upload: %1 + 没有需要上传的本地图片: %1 + + + + Your ip address was set to the Clipboard! + IP地址已经复制到剪切板! + + + + +Please add the IP address: + +请添加IP地址: + + + + Please check your Wechat Image Hosting parameters! + + 请检查微信图床参数! + + + + + The size of the picture is more than 1M! Wechat API does not support! + 图片大小超过1M! 微信API不支持! + + + upload failed! Please contact the developer. + 上传错误!请联系开发者。 + + + + Uploading images to Wechat... + 正在上传图片到微信 ... + + + + Uploading Images To Wechat + 正在上传图片到微信 + + + + to the Wechat ip whitelist! + 到微信IP白名单! + + + + + JSON decode error. Please contact the developer. + JSON解析错误。请联系开发者。 + + + + Network error: + 网络错误: + + + + + +Please check your network! + + +请检查网络! + + + + Uploading image: %1 + 正在上传图片: %1 + + + + The picture does not exist in this path: + 图片不存在: + + + + Upload failed! Please contact the developer. + 上传错误!请联系开发者。 + + + + Uploading + 正在上传 + + + + + +Network error: + + +网络错误: + + + + + +Please check the network or image size + + +请检查网络或图片尺寸 + + + + Copied contents with new image links + 已复制替换新图片链接的内容 + + + + Contents with new image links are copied. + 包含新图片链接的内容已经复制。 + + + + Do you want to open the link of Markdown2Wechat tool? + 是否打开Markdown转微信工具链接? + + VWordCountPanel diff --git a/src/vimagehosting.cpp b/src/vimagehosting.cpp index de3bf6c3..07194cfa 100644 --- a/src/vimagehosting.cpp +++ b/src/vimagehosting.cpp @@ -24,7 +24,7 @@ void VGithubImageHosting::handleUploadImageToGithubRequested() { qDebug() << "Please configure the GitHub image hosting first!"; QMessageBox::warning(nullptr, - tr("Github Image Hosting"), + tr("GitHub Image Hosting"), tr("Please configure the GitHub image hosting first!")); return; } @@ -60,8 +60,8 @@ void VGithubImageHosting::githubImageBedAuthFinished() { qDebug() << "Authentication failed"; QApplication::restoreOverrideCursor(); // Recovery pointer - QMessageBox::warning(nullptr, tr("Github Image Hosting"), tr("Bad credentials!! ") + - tr("Please check your Github Image Hosting parameters !!")); + QMessageBox::warning(nullptr, tr("GitHub Image Hosting"), tr("Bad credentials! ") + + tr("Please check your GitHub Image Hosting parameters!")); return; } else @@ -76,7 +76,7 @@ void VGithubImageHosting::githubImageBedAuthFinished() QApplication::restoreOverrideCursor(); // Recovery pointer if(images.size() > 0) { - proDlg = new QProgressDialog(tr("Uploading images to github..."), + proDlg = new QProgressDialog(tr("Uploading images to GitHub..."), tr("Abort"), 0, images.size(), @@ -103,7 +103,7 @@ void VGithubImageHosting::githubImageBedAuthFinished() QFileInfo fileInfo(images[i].m_path.toLocal8Bit()); QString fileSuffix = fileInfo.suffix(); QString info = tr("Unsupported type: ") + fileSuffix; - QMessageBox::warning(nullptr, tr("Github Image Hosting"), info); + QMessageBox::warning(nullptr, tr("GitHub Image Hosting"), info); return; } } @@ -113,7 +113,7 @@ void VGithubImageHosting::githubImageBedAuthFinished() { qDebug() << m_file->getName() << " No local images to upload"; QString info = tr("No local images to upload: %1").arg(m_file->getName()); - QMessageBox::information(nullptr, tr("Github Image Hosting"), info); + QMessageBox::information(nullptr, tr("GitHub Image Hosting"), info); } } break; @@ -123,7 +123,7 @@ void VGithubImageHosting::githubImageBedAuthFinished() QApplication::restoreOverrideCursor(); // Recovery pointer qDebug() << "Network error: " << reply->errorString() << " error " << reply->error(); QString info = tr("Network error: ") + reply->errorString() + tr("\n\nPlease check your network!"); - QMessageBox::warning(nullptr, tr("Github Image Hosting"), info); + QMessageBox::warning(nullptr, tr("GitHub Image Hosting"), info); } } } @@ -158,7 +158,7 @@ void VGithubImageHosting::githubImageBedUploadManager() g_config->getGithubUserName().isEmpty()) { qDebug() << "Please configure the GitHub image hosting first!"; - QMessageBox::warning(nullptr, tr("Github Image Hosting"), tr("Please configure the GitHub image hosting first!")); + QMessageBox::warning(nullptr, tr("GitHub Image Hosting"), tr("Please configure the GitHub image hosting first!")); imageUrlMap.clear(); return; } @@ -181,7 +181,7 @@ void VGithubImageHosting::githubImageBedUploadImage(const QString &p_username, { qDebug() << "The picture does not exist in this path: " << p_imagePath.toLocal8Bit(); QString info = tr("The picture does not exist in this path: ") + p_imagePath.toLocal8Bit(); - QMessageBox::warning(nullptr, tr("Github Image Hosting"), info); + QMessageBox::warning(nullptr, tr("GitHub Image Hosting"), info); imageUrlMap.clear(); if(imageUploaded) { @@ -207,7 +207,7 @@ void VGithubImageHosting::githubImageBedUploadImage(const QString &p_username, { qDebug() << "Unsupported type..."; QString info = tr("Unsupported type: ") + fileSuffix; - QMessageBox::warning(nullptr, tr("Github Image Hosting"), info); + QMessageBox::warning(nullptr, tr("GitHub Image Hosting"), info); imageUrlMap.clear(); if(imageUploaded) { @@ -281,7 +281,7 @@ void VGithubImageHosting::githubImageBedUploadFinished() if (value.isString()) { downloadUrl = value.toString(); - qDebug() << "json decode: download_url : " << downloadUrl; + qDebug() << "JSON decode: download_url : " << downloadUrl; imageUploaded = true; // On behalf of successfully uploaded images proDlg->setValue(uploadImageCount); } @@ -324,13 +324,13 @@ void VGithubImageHosting::githubImageBedUploadFinished() delete proDlg; imageUrlMap.clear(); qDebug() << "Resolution failure!"; - qDebug() << "Resolution failure's json: " << bytes; + qDebug() << "Resolution failure's JSON: " << bytes; if(imageUploaded) { githubImageBedReplaceLink(newFileContent, m_file->fetchPath()); } - QString info = tr("Json decode error, Please contact the developer~"); - QMessageBox::warning(nullptr, tr("Github Image Hosting"), info); + QString info = tr("JSON decode error. Please contact the developer."); + QMessageBox::warning(nullptr, tr("GitHub Image Hosting"), info); } } else @@ -343,8 +343,8 @@ void VGithubImageHosting::githubImageBedUploadFinished() { githubImageBedReplaceLink(newFileContent, m_file->fetchPath()); } - QString info = tr("github status code != 201, Please contact the developer~"); - QMessageBox::warning(nullptr, tr("Github Image Hosting"), info); + QString info = tr("GitHub status code != 201. Please contact the developer."); + QMessageBox::warning(nullptr, tr("GitHub Image Hosting"), info); } break; } @@ -367,7 +367,7 @@ void VGithubImageHosting::githubImageBedUploadFinished() tr(" \n\nNetwork error: ") + reply->errorString() + tr("\n\nPlease check the network or image size"); - QMessageBox::warning(nullptr, tr("Github Image Hosting"), info); + QMessageBox::warning(nullptr, tr("GitHub Image Hosting"), info); } } } @@ -490,7 +490,7 @@ void VGiteeImageHosting::giteeImageBedAuthFinished() QApplication::restoreOverrideCursor(); // Recovery pointer if(images.size() > 0) { - proDlg = new QProgressDialog(tr("Uploading images to gitee..."), + proDlg = new QProgressDialog(tr("Uploading images to Gitee..."), tr("Abort"), 0, images.size(), @@ -540,7 +540,7 @@ void VGiteeImageHosting::giteeImageBedAuthFinished() qDebug() << "Authentication failed: " << reply->errorString() << " error " << reply->error(); QString info = tr("Authentication failed: ") + reply->errorString() + - tr("\n\nPlease check your Gitee Image Hosting parameters !!"); + tr("\n\nPlease check your Gitee Image Hosting parameters!"); QMessageBox::warning(nullptr, tr("Gitee Image Hosting"), info); } else @@ -754,7 +754,7 @@ void VGiteeImageHosting::giteeImageBedUploadFinished() { giteeImageBedReplaceLink(newFileContent, m_file->fetchPath()); } - QString info = tr("Json decode error, Please contact the developer~"); + QString info = tr("JSON decode error. Please contact the developer."); QMessageBox::warning(nullptr, tr("Gitee Image Hosting"), info); } }else{ @@ -766,7 +766,7 @@ void VGiteeImageHosting::giteeImageBedUploadFinished() { giteeImageBedReplaceLink(newFileContent, m_file->fetchPath()); } - QString info = tr("gitee status code != 201, Please contact the developer~"); + QString info = tr("Gitee status code != 201. Please contact the developer."); QMessageBox::warning(nullptr, tr("Gitee Image Hosting"), info); } break; @@ -857,7 +857,7 @@ VWechatImageHosting::VWechatImageHosting(VFile *p_file, QObject *p_parent) void VWechatImageHosting::handleUploadImageToWechatRequested() { - qDebug() << "Start processing image upload request to wechat"; + qDebug() << "Start processing image upload request to Wechat"; QString appid = g_config->getWechatAppid(); QString secret = g_config->getWechatSecret(); if(appid.isEmpty() || secret.isEmpty()) @@ -921,13 +921,13 @@ void VWechatImageHosting::wechatImageBedAuthFinished() QApplication::restoreOverrideCursor(); // Recovery pointer if(images.size() > 0) { - proDlg = new QProgressDialog(tr("Uploading images to wechat..."), + proDlg = new QProgressDialog(tr("Uploading images to Wechat..."), tr("Abort"), 0, images.size(), nullptr); proDlg->setWindowModality(Qt::WindowModal); - proDlg->setWindowTitle(tr("Uploading Images To wechat")); + proDlg->setWindowTitle(tr("Uploading Images To Wechat")); proDlg->setMinimumDuration(1); uploadImageCount = images.size(); uploadImageCountIndex = uploadImageCount; @@ -976,13 +976,13 @@ void VWechatImageHosting::wechatImageBedAuthFinished() tr("Your ip address was set to the Clipboard!") + tr("\nPlease add the IP address: ") + ip + - tr(" to the wechat ip whitelist!")); + tr(" to the Wechat ip whitelist!")); } else { QMessageBox::warning(nullptr, tr("Wechat Image Hosting"), - tr("Please check your Wechat Image Hosting parameters !!\n") + + tr("Please check your Wechat Image Hosting parameters!\n") + string); } return; @@ -995,7 +995,7 @@ void VWechatImageHosting::wechatImageBedAuthFinished() imageUrlMap.clear(); qDebug() << "Resolution failure!"; qDebug() << "Resolution failure's json: " << bytes; - QString info = tr("Json decode error, Please contact the developer~"); + QString info = tr("JSON decode error. Please contact the developer."); QMessageBox::warning(nullptr, tr("Wechat Image Hosting"), info); } @@ -1076,7 +1076,7 @@ void VWechatImageHosting::wechatImageBedUploadImage(const QString p_imagePath, c delete proDlg; imageUrlMap.clear(); qDebug() << "The size of the picture is more than 1M"; - QString info = tr("The size of the picture is more than 1M! Wechat API does not support!!"); + QString info = tr("The size of the picture is more than 1M! Wechat API does not support!"); QMessageBox::warning(nullptr, tr("Wechat Image Hosting"), info); return; } @@ -1167,7 +1167,7 @@ void VWechatImageHosting::wechatImageBedUploadFinished() qDebug() << "Upload failure: "; QString error = bytes; qDebug() << bytes; - QString info = tr("upload failed! Please contact the developer~"); + QString info = tr("Upload failed! Please contact the developer."); QMessageBox::warning(nullptr, tr("Wechat Image Hosting"), info); } } @@ -1178,7 +1178,7 @@ void VWechatImageHosting::wechatImageBedUploadFinished() imageUrlMap.clear(); qDebug() << "Resolution failure!"; qDebug() << "Resolution failure's json: " << bytes; - QString info = tr("Json decode error, Please contact the developer~"); + QString info = tr("JSON decode error. Please contact the developer."); QMessageBox::warning(nullptr, tr("Wechat Image Hosting"), info); } @@ -1224,7 +1224,7 @@ void VWechatImageHosting::wechatImageBedReplaceLink(QString &p_fileContent, cons result = QMessageBox::question(nullptr, tr("Wechat Image Hosting"), tr("Contents with new image links are copied. ") + - tr("Do you want to open the tool link of mark down to wechat?"), + tr("Do you want to open the link of Markdown2Wechat tool?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); if(result == QMessageBox::Yes) @@ -1253,16 +1253,16 @@ VTencentImageHosting::VTencentImageHosting(VFile *p_file, QObject *p_parent) void VTencentImageHosting::handleUploadImageToTencentRequested() { - qDebug() << "Start processing the image upload request to Tencent"; + qDebug() << "Start processing the image upload request to Tencent Cloud"; if(g_config->getTencentAccessDomainName().isEmpty() || g_config->getTencentSecretId().isEmpty() || g_config->getTencentSecretKey().isEmpty()) { - qDebug() << "Please configure the Tencent image hosting first!"; + qDebug() << "Please configure the Tencent Cloud image hosting first!"; QMessageBox::warning(nullptr, - tr("Tencent Image Hosting"), - tr("Please configure the Tencent image hosting first!")); + tr("Tencent Cloud Image Hosting"), + tr("Please configure the Tencent Cloud image hosting first!")); return; } @@ -1278,13 +1278,13 @@ void VTencentImageHosting::findAndStartUploadImage() QVector images = VUtils::fetchImagesFromMarkdownFile(m_file,ImageLink::LocalRelativeInternal); if(images.size() > 0) { - proDlg = new QProgressDialog(tr("Uploading images to tencent..."), + proDlg = new QProgressDialog(tr("Uploading images to Tencent Cloud..."), tr("Abort"), 0, images.size(), nullptr); proDlg->setWindowModality(Qt::WindowModal); - proDlg->setWindowTitle(tr("Uploading Images To Tencent")); + proDlg->setWindowTitle(tr("Uploading Images To Tencent Cloud")); proDlg->setMinimumDuration(1); uploadImageCount = images.size(); @@ -1303,7 +1303,7 @@ void VTencentImageHosting::findAndStartUploadImage() QFileInfo fileInfo(images[i].m_path.toLocal8Bit()); QString fileSuffix = fileInfo.suffix(); QString info = tr("Unsupported type: ") + fileSuffix; - QMessageBox::warning(nullptr, tr("Tencent Image Hosting"), info); + QMessageBox::warning(nullptr, tr("Tencent Cloud Image Hosting"), info); return; } } @@ -1313,7 +1313,7 @@ void VTencentImageHosting::findAndStartUploadImage() { qDebug() << m_file->getName() << " No images to upload"; QString info = tr("No local images to upload: %1").arg(m_file->getName()); - QMessageBox::information(nullptr, tr("Tencent Image Hosting"), info); + QMessageBox::information(nullptr, tr("Tencent Cloud Image Hosting"), info); } } @@ -1361,7 +1361,7 @@ void VTencentImageHosting::tencentImageBedUploadImage(const QString &p_imagePath { qDebug() << "The picture does not exist in this path: " << p_imagePath.toLocal8Bit(); QString info = tr("The picture does not exist in this path: ") + p_imagePath.toLocal8Bit(); - QMessageBox::warning(nullptr, tr("Tencent Image Hosting"), info); + QMessageBox::warning(nullptr, tr("Tencent Cloud Image Hosting"), info); imageUrlMap.clear(); if(imageUploaded) { @@ -1379,7 +1379,7 @@ void VTencentImageHosting::tencentImageBedUploadImage(const QString &p_imagePath { qDebug() << "Unsupported type..."; QString info = tr("Unsupported type: ") + fileSuffix; - QMessageBox::warning(nullptr, tr("Tencent Image Hosting"), info); + QMessageBox::warning(nullptr, tr("Tencent Cloud Image Hosting"), info); imageUrlMap.clear(); if(imageUploaded) { @@ -1452,7 +1452,7 @@ void VTencentImageHosting::tencentImageBedUploadFinished() { tencentImageBedReplaceLink(newFileContent, m_file->fetchPath()); } - QMessageBox::warning(nullptr, tr("Tencent Image Hosting"), replyContent); + QMessageBox::warning(nullptr, tr("Tencent Cloud Image Hosting"), replyContent); } else { @@ -1487,7 +1487,7 @@ void VTencentImageHosting::tencentImageBedUploadFinished() { QString info = tr(" \n\nNetwork error: HostNotFoundError") + tr("\n\nPlease check your network"); - QMessageBox::warning(nullptr, tr("Tencent Image Hosting"), info); + QMessageBox::warning(nullptr, tr("Tencent Cloud Image Hosting"), info); } else { @@ -1516,7 +1516,7 @@ void VTencentImageHosting::tencentImageBedUploadFinished() errorCode + "\n\n" + errorMessage; - QMessageBox::warning(nullptr, tr("Tencent Image Hosting"), info); + QMessageBox::warning(nullptr, tr("Tencent Cloud Image Hosting"), info); } } } diff --git a/src/vmdeditor.cpp b/src/vmdeditor.cpp index 985daded..b741fb60 100644 --- a/src/vmdeditor.cpp +++ b/src/vmdeditor.cpp @@ -2290,7 +2290,7 @@ void VMdEditor::initImageHostingMenu(QMenu *p_menu) uploadImageMenu->addAction(uploadImageToGithub); // Upload the image to Gitee image hosting. - QAction *uploadImageToGitee = new QAction(tr("&Gitee"), uploadImageMenu); + QAction *uploadImageToGitee = new QAction(tr("G&itee"), uploadImageMenu); connect(uploadImageToGitee, &QAction::triggered, this, &VMdEditor::requestUploadImageToGitee); uploadImageMenu->addAction(uploadImageToGitee);