qt creator源码全方面分析(2-6)
User Interface Text Guidelines
请遵循本节中的准则,以确保扩展与Qt Creator UI保持一致,并且可以轻松地将其本地化为其他语言。
编写UI文本时,请确保它:
- 与现有的Qt Creator用户界面条款一致
- 简明扼要
- 中性,描述性和事实正确
- 明确的
- 可翻译成不同的语言
语法和风格
所有UI文本必须为语法正确的英语,并使用标准形式的书面语言。不要使用方言。使用惯用语言,即英语特有的表达。如果可能,请以英语为母语的人进行评论。
用户界面文本应简洁明了且经济实惠。避免使用不必要的内容词和短语。但是,更重要的是使文本有用且易于理解。
避免以第二个人称称呼用户。使用中性语调或被动语态,但在必要时使用称呼。称呼用户时,请避免使用“请”一词。例外情况是一些版权文本和简短的命令式句子,否则听起来可能会粗鲁。例如,请稍候。
避免在菜单名称和项目中使用缩写。如果没有足够的空间可以完整拼写或连字,请根据英语缩写规则将文本缩写。
避免缩写。例如,使用cannot 而不是can't。
标点
避免在菜单名称和菜单项中使用标点符号或特殊字符。
使用标点符号如下:
- 在消息中使用句号。
- 切勿在菜单项名称的末尾使用句号(.)。
- 放置三个句号(...)在菜单项名称的末尾,这将打开一个需要用户操作的对话框。
- 使用感叹号(!),仅在需要用户特别注意或特别重要的文本中。
- 在变量值周围使用引号("")。 例如,关闭项目"qtcreator"。为了保持一致,请在用户可见的字符串中使用双引号突出显示或设置文件名,目录名,URL等。
- 不要使用前导,尾随或多个空格来对齐消息中的文本,因为翻译工具可能无法正确处理它们。
编写工具提示tooltips
工具提示包含有关图标,菜单项或其他UI元素的有用信息。当用户将鼠标指针放在UI元素上时,它们就会出现。您还可以向用户界面添加始终可见的描述性文本。
对于图标,可以将命令名用作工具提示。在这种情况下,请使用书本样式大写(book style capitalization),并且不要在工具提示后添加句点。

工具提示也可以包含完整的句子。尝试使它们尽可能短而简洁,同时仍使它们在语法上正确。就像对任何句子一样,使用句子样式大写(sentence style capitalization)和标点符号。

设计模式中编写工具提示
在Qt Designer中,将纯文本用作工具提示。要获得更多格式,请在富文本编辑器的源选项卡中,编写简短的规范HTML:<html><head/><body><b>Note:</b> text.
Qt Designer具有简化富文本格式的功能(默认情况下处于启用状态),但仍然应通过查看源选项卡进行验证。
编写消息
检查消息是否简洁明了且经济合理。 但是,更重要的是消息是有用的并且易于理解。
尽量减少使用许多新的和不同的句子结构。 重用在类似情况下使用的句子结构。 例如:
- 无法将日志作为所选消息类型发送。文字太长。
- 无法接收图像。
- 无法插入图片。 文字长度上限为120个字符。
- 图片名称已被使用。
- 文件夹名称已被使用。
UI文本大写
使用两种样式,书名和句子样式(book title and sentence style):
示例 Example of Book Title Capitalization
示例 Example of sentence style capitalization
使用书本样式大写
使用书本样式大写时,大写所有单词,除少于五个字母的介词(例如,是'with'而不是'Without'),连词(例如,and, or, but)和冠词(a, an, the )。 但是,请始终将大写第一个和最后一个的上述单词。
将书本样式大写用于:
- 标题(窗口,对话框,组框,选项卡,列表视图列等)
- 功能(菜单项,按钮)
- 可选择项目(组合框项目,列表框项目,树形列表项目等)
检查书本样式大写
您可以使用\doc\titlecase文件夹中的to-title-case.js脚本来检查UI文本或文档中标题的书籍样式大写:
- 在浏览器中打开to-title-case.html。
- 在字段中输入用户界面文本。
- 单击转换。
带有建议的书本样式大写的UI文本显示在右侧的字段中。
使用句子样式大写
当使用句子样式大写时,除专有名称外,仅大写第一个字母。
将句子样式大写用于:
- 标签
- 工具提示
- 描述性文本
- 其他非头或标题文字
准备本地化
Qt Creator已本地化为多种语言。一致性和简洁性使UI文本更易于翻译。
标记UI文本进行翻译
确保呈现给用户的文本字符串易于翻译。用户界面文本字符串包含在tr()调用中,并在翻译过程中从源代码中提取。因此,翻译器可能不知道消息的源代码上下文。
您可以添加注释,使之在Qt Linguist( //:)中可见,以阐明上下文。例如:
//: Contact book "Add person" button label
return tr("Add");
如果该类不是Q_OBJECT,请使用QCoreApplication::translate("class context", "message")或考虑使用Q_DECLARE_TR_FUNCTIONS。不要使用QObject::tr(),这会造成混淆,因为消息在Qt Linguist中按类上下文分组显示,而与QObject绑定的消息没有类上下文。
传递给tr().arg()的文件和目录名称,使用QDir::toNativeSeparators()。
不要使用跨越整个字符串的标记,因为这会使翻译人员感到困惑。例如,不采用:
tr("<html><head/><body><span>UI Text</span></body></html>")
采用
QLatin1String("<html><head/><body><span>") + tr("UI Text") + QLatin1String("/span></body></html>")
语言或书写系统的特征
为了使扩展本地化,请考虑语言和书写系统对实现的影响。
不好意思,这一小节我也看的不知所云,大家感兴趣直接看原文吧,sry
| 语言或书写系统的特征 | 对实现的影响 |
|---|---|
| 字序 | 不同的语言具有不同的字序规则。 不要使用运行时串联。 请使用完整的短语和"%1"格式。 例如,使用: tr("Foo failed: %1").arg(message) 代替 tr("Foo failed: ") + message |
| 单数,复数,对偶形式 | 某些语言没有复数形式(例如,中文和日语),而另一些语言具有双重形式。 在布局设计中为文本扩展留出空间。 一些语言需要更多空间来表示多个或双重性以传达所需的信息。 例如使用 tr("%n files found", 0, number) 代替 tr("%1 files found").arg(number) |
| 性别 | 有些语言具有性别(女性,男性,中性),而有些则没有(例如芬兰语)或没有广泛使用(例如英语)。 不要重复使用文本字符串。 由于基本单词的性别,同一术语可能无法在其他情况下使用。 文章在某些语言中具有语法性别,而且在英语中句子不如容易被构造。 避免以下类型的构造: tr("%1 failed").arg(someCondition ? "the operation" : "opening a file") |
Qt Creator通用条款
本节总结了用于常见Qt Creator UI组件的术语。 它还描述了命名不同类型的UI组件的约定。
始终检查您打算使用的术语在UI中是否没有其他含义。如果已经存在合适的术语,请使用它。 例如,将查找Find用于搜索,将新建New用于创建新对象的向导。
有关如何添加UI组件的更多信息,请参见Common Extension Tasks。
| UI文本 | 使用 | 约定 |
|---|---|---|
| 上下文菜单 | 当用户右键单击屏幕时打开。 内容取决于上下文。 | 您可以添加与特定上下文相关的菜单项。 请遵循命名菜单项的约定。 |
| 对话框 | 用户界面元素通常包含许多选择,或允许用户向应用程序提供输入。 当用户选择菜单项或按钮时打开。 | 使用菜单项或按钮名称作为对话框名称。 您也可以将菜单项或按钮名称与对话框中管理的对象名称结合在一起。例如,文档选项中的添加按钮将打开添加文档对话框。 |
| 定位器 | 使您不仅可以浏览文件,还可以浏览定位过滤器(locator filter)得到的任何条目。 | 您可以添加定位过滤器。 检查过滤器是否尚未使用,并为其指定描述性名称。 |
| 菜单 | 包含代表命令或选项的菜单项,并在逻辑上进行分组和显示。 菜单也可以包含子菜单。 | 您可以创建新菜单。 使用与现有菜单名称一致的简短但描述性的名称。 使用无歧义的名称。 |
| 菜单项 | 表示供用户选择的命令或选项。 | 您可以将新条目添加到菜单。 使用与现有菜单名称一致的简短但描述性的名称。 使用无歧义的名称。 |
| 消息框 | 以状态信息,警告或错误消息的形式向用户提供反馈的对话框。
来自Qt Creator的输出应该显示在输出面板中。 |
使用事件作为标题,并在消息框中提供解决方案。 |
| 模式 | 模式对应于全屏幕控件,专门用于任务。 | 例如,您可以为新型编辑器添加模式。 使用描述性但简短的模式名称。 它们必须适合于模式选择器。 |
| 输出面板 | 任务面板中显示的面板,显示Qt Creator的输出。 | 对输出面板使用描述性名称。 |
| 侧边栏 | 在编辑和调试模式下可用的视图,可用于浏览项目,文件和书签,以及查看类层次结构。 | 您可以将视图添加到侧边栏菜单。 使用描述性名称。 |
| 视图 | 屏幕上为用户显示信息,以及为用户提供管理信息功能的区域。 调试模式下可用,用于与在调试器控制下运行的程序进行交互。 | 对视图使用描述性名称。 |
原创造福大家,共享改变世界
献出一片爱心,温暖作者心灵

qt creator源码全方面分析(2-6)的更多相关文章
- qt creator源码全方面分析(3-3)
目录 qtcreatordata.pri 定义stripStaticBase替换函数 设置自定义编译和安装 QMAKE_EXTRA_COMPILERS Adding Compilers 示例1 示例2 ...
- qt creator源码全方面分析(3-5)
目录 qtcreatorlibrary.pri 使用实例 上半部 下半部 结果 qtcreatorlibrary.pri 上一章节,我们介绍了src.pro,这里乘此机会,把src目录下的所有项目文件 ...
- qt creator源码全方面分析(0)
本人主攻C++和Qt. 上两天刚研究完Qt install framework(IFW)应用程序安装框架. google没发现有正儿八经的官方文档的翻译,我就进行了翻译哈!! 系列文章具体见:http ...
- qt creator源码全方面分析(4-0)
Qt系统 Qt Creator源码是在Qt对象和框架基础下写的,因此,阅读Qt Creator源码,你首先对Qt得有一定的了解. Qt Core Qt Core特征: The Meta-Object ...
- qt creator源码全方面分析(4-2)
目录 global头文件 global.h xx.h global头文件 插件的本质就是动态链接库,对于库,需要导出符号,供用户导入使用.在qt creator的源码中,存在固定的导入导出模式. gl ...
- qt creator源码全方面分析(4-5)
目录 Qt中的字符串 QLatinString 详细介绍 源码 小结 QStringLiteral(str) 详细介绍 源码 小结 Qt中的字符串 Qt中处理字符串最常用的肯定是QString,但是在 ...
- qt creator源码全方面分析(4-6)
目录 Qt插件基础 Qt插件基础 我们知道Qt Creator源码是基于插件架构的,那么我们先来介绍下插件基础知识. 相关内容如下: How to Create Qt Plugins [ - Defi ...
- qt creator源码全方面分析(3-2)
目录 qtcreator.pri 判断重复包含 定义版本信息 VERSION 定义IDE名称 启用C++14 CONFIG 自定义函数 Replace Functions Test Functions ...
- qt creator源码全方面分析(2-7)
目录 Completing Code 补全代码片段 编辑代码片段 添加和编辑片段 删除片段 重置片段 补全Nim代码 Completing Code 在编写代码时,Qt Creator建议使用属性,I ...
- qt creator源码全方面分析(2-10-1)
目录 Getting and Building Qt Creator 获取Qt 获取和构建Qt Creator Getting and Building Qt Creator 待办事项:应该对此进行扩 ...
随机推荐
- 「CH2501」 矩阵距离 解题报告
CH2501 矩阵距离 描述 给定一个N行M列的01矩阵 A,\(A[i][j]\) 与 \(A[k][l]\) 之间的曼哈顿距离定义为: \(dist(A[i][j],A[k][l])=|i-k|+ ...
- Spark学习笔记(一)——基础概述
本篇笔记主要说一下Spark到底是个什么东西,了解一下它的基本组成部分,了解一下基本的概念,为之后的学习做铺垫.过于细节的东西并不深究.在实际的操作过程中,才能够更加深刻的理解其内涵. 1.什么是Sp ...
- git submodule 管理子项目
使用场景 拆分项目,当项目越来越大之后,我们希望 子模块 可以单独管理,并由 专门 的人去维护,这个时候只可以使用 git submodule 去完成. 常用命令 git clone <repo ...
- Java8 新特性(一)- Lambda 表达式
2014年3月18日发布了JavaSE 8 不追求技术的新,追求技术的稳定 本质:Lambda 表达式是一个匿名函数 作用:简化代码,增强代码的表达力 Lambda 语法格式 // 格式1:无参无返回 ...
- Java ArrayList类的简单介绍
ArrayList类的说明: ArrayList类是List接口的实现类,java.util.ArrayList集合数据存储的结构是数组结构. 特点: 元素增删慢,查找快.(由于日常开发中使用最多的功 ...
- 1、Vue 实战-入门篇
先决条件:需要 Node.js . npm 基础. 如果没有基础看先看下面简单的两点介绍. 1.npm 命令介绍. 1.所有命令 -h 可以查看.也可以从官网查 docs,结果如下. --help ...
- 用ModelAndView返回视图结果返回的是对应RequestMapping拼接的路径
今天,遇到一个贼坑的问题,就是我明明可以将逻辑视图名视图存入ModelAndView,结果返回的页面信息是RequestMapping拼接的视图解析路径,最后经过检查多遍代码,发现原来是ModelAn ...
- minikube 设置CPU和内存
安装minikube之后,第一次sudo minikube start 时,设置参数--cpus int --memory int . 如果需要更改设置,需要将缓存文件$HOME/.minikube ...
- java 运行和编译
一.编译->运行 1.编译 javac 文件名.java 生成 文件名.class 2.运行 java 文件名 注意:正在运行的是 文件名.class 因此:修改源文件后,要先编译,再运行 ...
- Elasticsearch如何修改Mapping结构并实现业务零停机
Elasticsearch 版本:6.4.0 一.疑问 在项目中后期,如果想调整索引的 Mapping 结构,比如将 ik_smart 修改为 ik_max_word 或者 增加分片数量 等,但 El ...