已完成研究,现在撰写文章
桌面应用【免费下载链接】QOwnNotesQOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration.项目地址https://gitcode.com/gh_mirrors/qo/QOwnNotes点击查看免费下载output_articleQOwnNotes 翻译贡献指南通过 Crowdin 参与本地化与校对QOwnNotes 是一款纯文本笔记与待办事项管理软件支持 Markdown 语法与 Nextcloud / ownCloud 集成其界面与文档的本地化工作全部依托 Crowdin 平台协作完成。本文面向希望帮助 QOwnNotes 走向更多语言的开发者与翻译志愿者完整讲解参与翻译、担任校对者的流程与注意事项并深入剖析仓库中翻译文件的生成管线与加载机制帮助读者既能在 Crowdin 上高效贡献也能理解这些翻译最终如何进入软件界面。一、QOwnNotes 的翻译工作流概览QOwnNotes 的翻译体系是一条“Crowdin 协作翻译 → 仓库同步 → 运行时加载”的完整链路志愿者在Crowdin平台上翻译或校对字符串项目维护者通过 Crowdin CLI 将翻译下载回仓库落地为src/languages下的 Qt Linguist.ts翻译文件构建系统qmake / CMake把.ts编译为.qm并随安装包分发程序启动时根据用户选择的语言interfaceLanguage设置加载对应翻译。重要提醒请勿直接编辑仓库中的翻译文件。src/languages 目录下的所有.ts文件都是由 Crowdin 自动生成的手动改动会在下一次同步时被覆盖。src/languages/README.md 中同样明确注明这些文件全部经由 Crowdin 自动生成想帮忙翻译请走 Crowdin 渠道。二、加入 Crowdin开始翻译 QOwnNotesCrowdin是面向移动应用、Web、桌面软件及相关素材的流行本地化管理平台。QOwnNotes 的翻译项目名为qownnotes仓库根目录的 crowdin.yaml 中project_identifier: qownnotes、project_id: 158883即对应这一云端项目。参与方式注册 Crowdin 账号加入 qownnotes 项目即可开始翻译已有语言可以直接补充新翻译无需等待审批新增语言如果想翻译成一个全新的语言需要先给项目所有者发消息可在 Crowdin 项目内留言或通过项目的问题跟踪渠道提出待项目方在 Crowdin 中为新语言启用文件后即可开始。从仓库现状看翻译覆盖度已经相当可观src/languages 目前共存有 70 个.ts文件除英文源文件QOwnNotes_en.ts外还包括简体中文QOwnNotes_zh_CN.ts、繁体中文QOwnNotes_zh_TW.ts、德语、法语、日语、俄语、西班牙语、阿拉伯语等数十个语种。如果你想翻译的语言不在其中就属于“新增语言”场景需要联系项目所有者开通。三、担任校对者Proofreading如果某门已经翻译的语言尚未经过校对而你恰好是该语言的优秀母语者可以申请成为校对者帮助提升 QOwnNotes 翻译的一致性与可靠度先查看你的语言是否已在翻译列表中通过 Crowdin 联系项目所有者申请该语言的校对权限获得权限后即可在校对模式下逐条审阅、批准或修正翻译。校对者能做的核心动作是**批准approve**翻译只有被批准的翻译才会被视为“已确认”为后续翻译提供更稳定的参考基准。这也是 Crowdin 协作模型中质量把关的关键环节。四、翻译质量总则准确性、精确性与上下文在 Crowdin 上翻译时需要同时把握三条原则准确性Accuracy在保证目标语言流畅自然的前提下尽量做到最大程度的本地化准确不要机械直译精确性Precision译文必须精确对应原文不能省略或添加字符串中的任何部分上下文Context如果对某个字符串的语境不确定且你恰好懂另一门语言可以切换界面语言参考其他译者对该片段的处理方式也可以在页面右侧留言向其他译者请求澄清。这些原则之所以重要是因为 QOwnNotes 的界面字符串往往出现在按钮、菜单、提示框等不同场景脱离上下文的翻译很容易造成歧义。五、关键术语必须保持全站一致高频关键术语key terms必须在所有出现位置使用完全相同的译法。文档给出的示例是note 必须始终翻译成同一个词。具体做法若某术语如德语的trashed notes译作gelöschte Dateien已被采用则所有出现处都应沿用该表达除非语法上确实必须使用变体否则保持简单一致在 Crowdin 中搜索该术语的全部出现位置逐一核对译文是否相同如果发现不一致且你了解更优译法可以提出建议翻译并对更准确/正确的译文投赞成或反对票尽可能把所有出现处本地化得完全一致例如Note这个核心词应当始终只有一种译法。一致性直接关系到软件的可用性同一概念在不同菜单中出现多个译名会让用户产生困惑。六、复数形式的处理Qt 的字符串体系中同一句文案常因复数规则拆分为多个条目单数、复数等。翻译时应在对应的复数块plural block中分别填写各自的翻译不要把所有形式塞进同一个条目也不要漏填某个复数形式。尤其要注意目标语言与英文复数规则的差异如俄语、波兰语等有复杂的复数分类需按平台给出的复数分类逐一处理。七、变量占位符%1、%2的处理QOwnNotes 的界面字符串大量使用%1、%2这类位置占位符运行时会被实际值如文件名、行号、数量替换。处理规则%1等变量前后不能插入空格必须保持原样书写否则运行时会出现错误的断词或多余空格在从右向左书写的语言RTL如阿拉伯语、希伯来语中既可以沿用原文中的变量顺序也可以按目标语言的阅读习惯重新编排变量顺序写进译文——只要保证每个变量都被正确使用、不丢失即可切勿删减或重复占位符否则运行时会显示未替换的原始占位符或缺失内容。仓库中的真实用例可参见 src/languages/QOwnNotes_zh_CN.ts例如aiComplete相关字符串在简体中文里保留了%1占位符并放入 HTML 链接正是“变量原样保留”的典型体现。八、访问键Access Keys用标记快捷键字母在 Qt 应用中菜单或按钮文本中后面的字母会被用作键盘访问键mnemonic。翻译时在希望作为快捷键的字母前加上可以沿用原文选择的字母也可以根据目标语言选择更合适的字母比如英文用File其他语言可以换成该语言单词中的对应字母注意同一界面层级内避免访问键冲突并确保位置不破坏词意。九、自定义容器标记: :: tip、::: warning、::: info不要翻译在 QOwnNotes 的文档类字符串中::: tip、::: warning、::: info这类前缀是VuePress 自定义容器custom containers的标记符用于渲染带样式的提示/警告/信息框。翻译时必须原样保留这些标记标记本身:::与容器类型名tip/warning/info不能翻译标记后的提示文本可以正常翻译不要给:::与容器类型之间增加或删除空格。仓库侧的佐证很直观scripts/download_translations.sh 中内置了大量“Crowdin 翻译修复”逻辑其中第一条就是修复:::tip这类缺失空格的写法s/^:::([a-zA-Z])/\:\:\: \1/g并纠正诸如::: Tip、::: Warnung、::: Trinkgeld等被误翻译成德语或意大利语的容器类型——可见维护者需要反复清理此类翻译事故翻译时务必保持标记原样。十、文档中其他不应翻译的内容针对文档类文件以下内容不翻译代码与链接、标签代码片段、URL 链接、HTML 标签一律保留原样且不要在标签内部或前后添加空格部分机器翻译会误加空格遇到时必须删除日期与时间文档中的日期时间字段留空不译引用referencesQOwnNotes 在大量翻译语言中都附带引用条目这类内容直接跳过即可。十一、仓库侧的翻译管线从 Crowdin 到发布理解了志愿者端的操作后再看仓库如何把 Crowdin 的翻译变成随软件分发的语言包能更清楚地认识到“为什么不许直接改文件”。1. Crowdin 配置谁与谁对应crowdin.yaml 定义了云端项目与仓库文件的映射关系核心规则如下project_identifier: qownnotes project_id: 158883 # API token 通过 ~/.crowdin.yaml 提供 #api_token: XXXX preserve_hierarchy: true files: - source: /src/languages/QOwnNotes_en.ts translation: /src/languages/QOwnNotes_%locale_with_underscore%.ts - source: /webpage/src/index.md translation: /webpage/src/%two_letters_code%/%original_file_name% - source: /webpage/src/contributing/*.md translation: /webpage/src/%two_letters_code%/contributing/%original_file_name% # ... 其余文档目录同理要点解读源文件是QOwnNotes_en.ts英文翻译文件按QOwnNotes_locale.ts命名规则生成例如简体中文对应QOwnNotes_zh_CN.ts网页文档webpage/src 下的 index、contributing、editor、faq、getting-started、installation、scripting 各目录按语言代码分目录存放例如德语译文落在webpage/src/de/preserve_hierarchy: true表示云端保持与仓库相同的目录层级。2. 同步脚本下载与清洗scripts/download_translations.sh 是“Crowdin → 仓库”方向的同步脚本它做的事情很有代表性crowdin download拉取全部翻译把带地区后缀的文件重命名为仓库约定名如QOwnNotes_de_DE.ts→QOwnNotes_de.ts该脚本内维护了一张几十个语言的映射清单删除各翻译文件中的location标签块它们体积大且每次都会变动移除翻译文件的每行前导空格以节省仓库空间清理未完成翻译的占位文件脚本中被注释掉的rm逻辑即是此用途实际执行以当前仓库为准运行fixCrowdinTranslationProblems批量修复 Crowdin 常见的翻译损坏包括自定义容器标记、a锚点标签、code代码标签、数字占位标签、gt;/lt;转义等问题的还原。反向“仓库 → Crowdin”的流程则涉及两件事更新源字符串时在 src 目录下运行 Qt 的lupdate -verbose QOwnNotes.pro见 scripts/update-translations.sh用 src/QOwnNotes.pro 中TRANSLATIONS列出的全部语言文件重新提取界面字符串上传新源文件时执行crowdin upload。3. 新增语言的自动化脚本如果你申请的新语言获得了批准项目方会使用 scripts/add_translation.py 把新语言接入构建链路。该脚本会自动完成以下文件的修改crowdin.yaml新增 locale 映射scripts/download_translations.sh新增文件重命名与清理规则src/CMakeLists.txt把languages/QOwnNotes_lang.ts加入翻译源列表当前列表见 src/CMakeLists.txtsrc/QOwnNotes.pro把新.ts加入TRANSLATIONS供lupdate提取与后续编译src/debian/qownnotes.install让 Debian 打包时安装对应的.qm文件CHANGELOG.md追加“新增 XX 语言翻译”的更新日志条目。脚本输出的提示语也值得留意新语言添加后还需在设置界面settings dialog中登记该语言供用户在interfaceLanguage选项里选择。4. 运行时如何加载翻译翻译最终生效于程序启动阶段。src/main.cpp 的loadTranslations()函数会根据用户的语言设置构建 locale并依次尝试从十余个路径加载两类翻译Qt 框架自带的qt_locale翻译应用自身的QOwnNotes_locale翻译包括源码目录、安装目录下的languages/、translations/、share/qt5|qt6/translations/等位置。locale 的来源src/main.cpp是interfaceLanguage设置若该设置为空则回退到系统语言环境QLocale::system()。这也解释了为什么%1变量、访问键等约定必须严格遵守——它们是 Qt 运行时替换与交互机制的一部分任何错位都会直接影响用户体验。十二、结语翻译与校对是一件有趣的事参与 QOwnNotes 的翻译你会接触到这款软件的“语言层”学到不少新术语同时获得大量关于项目内部的宝贵信息。准备好帮助你母语的翻译校对了就通过 Crowdin 联系项目所有者Patrizio申请校对权限或提出任何疑问。翻译不仅是文字转换更是对软件质量的一份贡献——一个术语统一、复数正确、变量无误、文档标记完好的语言包能让全球用户在 QOwnNotes 中获得更可靠、更顺手的体验。欢迎加入 qownnotes 的 Crowdin 项目一起把 QOwnNotes 带到更多语言中去。 /output_article赞分享桌面应用【免费下载链接】QOwnNotesQOwnNotes is a plain-text file notepad and todo-list manager with Markdown support and Nextcloud / ownCloud integration.项目地址https://gitcode.com/gh_mirrors/qo/QOwnNotes点击查看免费下载相关推荐已完成研究现在撰写文章已完成研究现在撰写文章 我已完整阅读关联文档 helm/dendrite/README.md https://link.gitcode.com/i/7f670后端即时通讯已完成资料研究现在撰写文章已完成资料研究现在撰写文章 我已完整阅读 scalable_shampoo/README.md https://link.gitcode.com/i/55c2人工智能深度学习NLP计算机视觉强化学习已完成源码调研信息充分现在撰写文章已完成源码调研信息充分现在撰写文章 我已完成对该文档及 curl 仓库中 Expect: 100 continue 相关实现lib/http.c 状态机、CLI网络通信上一篇HyperDbg调试器指南下一篇终极指南如何在 JetBrains IDE 中完美配置 Dracula 暗色主题创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

快速去掉 Windows 与 Office 未激活水印:MAS 3.12 免费激活四步指南

快速去掉 Windows 与 Office 未激活水印:MAS 3.12 免费激活四步指南

快速去掉 Windows 与 Office 未激活水印:MAS 3.12 免费激活四步指南 【免费下载链接】Microsoft-Activation-Scripts Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced troubles…

2026/10/13 5:56:39 阅读更多 →
ZMK 电源管理行为实战:用 `ext_power` 控制外部电源(VCC)输出以节省电量

ZMK 电源管理行为实战:用 `ext_power` 控制外部电源(VCC)输出以节省电量

固件嵌入式智能硬件蓝牙 【免费下载链接】zmk ZMK Firmware Repository 项目地址: https://gitcode.com/gh_mirrors/zm/zmk 点击查看 免费下载 本文以 ZMK 固件仓库中的电源管理行为文档(docs/docs/keymaps/behaviors/power.md)为核心&#…

2026/10/13 5:55:39 阅读更多 →
G-Helper 上手指南:3 步装好,1 个进程管全华硕笔记本的性能、显卡与电池

G-Helper 上手指南:3 步装好,1 个进程管全华硕笔记本的性能、显卡与电池

G-Helper 上手指南:3 步装好,1 个进程管全华硕笔记本的性能、显卡与电池 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, P…

2026/10/13 5:55:39 阅读更多 →

最新新闻

FPGA入门必做:可逆计数器设计详解与上板调试

FPGA入门必做:可逆计数器设计详解与上板调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 6:41:49 阅读更多 →
外贸企业如何借助社交媒体拓展海外市场

外贸企业如何借助社交媒体拓展海外市场

一、行业现状:海外社交媒体成为外贸获客新渠道近年来,随着数字技术的发展和全球消费习惯的变化,海外社交媒体已不再仅仅是个人社交娱乐的平台,而是逐步成为外贸企业触达海外客户、展示品牌形象、获取商业询盘的重要渠道。Facebook…

2026/10/13 6:41:49 阅读更多 →
Modbus TCP设备通信代码

Modbus TCP设备通信代码

一、核心前置知识点:Modbus TCP协议帧格式(必考背诵)1.1 请求报文(Rx 读取请求帧)帧示例:00 01 00 00 00 06 01 03 00 00 00 04字节段含义说明00 01事务ID(Transaction ID)请求与响应必须一致,用…

2026/10/13 6:41:49 阅读更多 →
Apache Calcite 1.4.0-incubating 发布解析:RelBuilder 关系代数构建器 API 的诞生

Apache Calcite 1.4.0-incubating 发布解析:RelBuilder 关系代数构建器 API 的诞生

后端数据库 【免费下载链接】calcite Apache Calcite 项目地址: https://gitcode.com/gh_mirrors/ca/calcite 点击查看 免费下载 2015 年 9 月 2 日,Apache Calcite(Incubating)发布 1.4.0-incubating 版本,这一版本在…

2026/10/13 6:41:49 阅读更多 →
Peekaboo 实时多目标认证协调器:双后台控制器与前台语义重叠的行为契约全解析

Peekaboo 实时多目标认证协调器:双后台控制器与前台语义重叠的行为契约全解析

GUI 自动化MCP 服务AI 应用 【免费下载链接】Peekaboo Peekaboo is a macOS CLI & optional MCP server that enables AI agents to capture screenshots of applications, or the entire system, with optional visual question answering through local or remote AI mod…

2026/10/13 6:41:49 阅读更多 →
链栈实验避坑指南:头歌数据结构实训全解析

链栈实验避坑指南:头歌数据结构实训全解析

简介:头歌数据结构链栈基本操作与应用学习资料包,面向正在学习数据结构与C实现的学生,以链栈这一动态栈结构为主线展开讲解。内容详细梳理链表节点定义、链栈结构体设计,以及初始化、销毁、清空、判空、求长、取栈顶、入栈、出栈、…

2026/10/13 6:40:49 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →