Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

讨论并征集关于 attribute 和 property 的译法 #895

Closed
Jinjiang opened this issue Apr 8, 2019 · 24 comments
Closed

讨论并征集关于 attribute 和 property 的译法 #895

Jinjiang opened this issue Apr 8, 2019 · 24 comments

Comments

@Jinjiang
Copy link
Member

Jinjiang commented Apr 8, 2019

背景:该问题源自 #893 同时也包括之前讨论过的 #646 #544 等,这里不一一列举。

目前我们对 vue 中文的翻译须知统一整理到了 wiki 页面:https://github.com/vuejs/cn.vuejs.org/wiki 这其中就包括了翻译术语约定,长期以来争议最大的,几乎也是唯一有争议的,就是 attribute 和 property 的翻译问题。由于长期无法讨论出一个可以照顾到各方面因素同时让所有人满意的结论,所以我们决定暂时,或者说其实是长时间通过:

  • attribute -> “特性”和
  • property -> “属性”

来加以区分,并且尽可能利用各种机会来解释和宣导这个决定避免阅读障碍或误会,以及我们为什么不得已这样决定。

在近期 #893 的讨论以及和团队成员内部的一些讨论中,产生了新的想法,故把这个想法整理至此,希望引入更多的观点和讨论。

简单的说就是:直接不翻译了,保留 attribute 和 property 的英文原词,可被理解同时可避免一切误会。

...我个人逐渐倾向于不翻译,因为 attribute 和 property 这两个单词确实在技术文章和书籍里普遍出现了,首先选择不翻译对理解来说不会产生太大障碍;其次选择不翻译肯定是没有二义性的,这点我也绝对认同;第三,从阅读理解是否通顺的角度,我个人平时的沟通习惯其实这里很早就是中英文混着说了,觉得沟通对象普遍可以接受;第四,请相信我自己也一直不爽这两个翻译,只是无奈没有找到更好的译法。

综上所述,我个人倾向于把“特性”和“属性”在做术语的场合全部恢复为英文的“attribute”和“property” (且在中文翻译中全部以单数形式出现,和 prop 等译法一样)。

不过这个改动量非同小可,所以我晚些时候会单开一个 issue,并说明这件事情的来龙去脉,如果一段时间没有个人觉得明显更好的异议,才会真正执行。

如上所述,考虑到改动量的问题,这次更改我希望比较谨慎一些。如果无法达成共识,我不得不保守地继续保留“属性”和“特性”的译法,如果大家有明显的民意,同时团队内部也综合考虑觉得合适并达成共识,我们再做修改也不迟。

其它被讨论或被提出过的译法及个人观点:

  1. 统一翻译为“属性”:优点是符合直觉,如果不同时出现且存在足够的语境是不会搞错的,缺点是存在二义性,遇到语境不充分或两者同时出现的时候需要特殊情况特殊处理并引入特殊讨论;
  2. property -> “属性”、attribute -> “HTML 属性”:优点是可以区分,缺点是存在认知成本,单独提到“属性”的时候还是可能会产生困惑,“HTML 属性”更像是对“attribute”的进一步解释而不是翻译,这种解释不存在权威性和唯一性,所以也很容易被别的解释方式所挑战;
  3. property -> “属性”、attribute -> “特性”:优点是可以严格被区分开且社区有一定认同度,也是现在我们选择的译法,缺点是“特性”的译法不符合直觉,存在认知成本和较大的宣导成本;
  4. 当然最后一种“译”法就是不译:property -> “property”、attribute -> “attribute”:优点是绝对不会有二义性,也符合直觉,也不存在二次解读,缺点是中英混杂,对于不熟悉这两个英文单词的读者来说可能会影响整体阅读体验。

这里非常诚恳的欢迎并接受大家的指正和意见。

谢谢

@scoolor
Copy link

scoolor commented Apr 8, 2019

不翻译是最直观明确的

@JaysonZou
Copy link

赞成直接使用英文原词 :p

@vinciarts
Copy link

vinciarts commented Apr 8, 2019

对第 4 点不太同意。

相比中英混杂,歧义带来的「影响阅读体验」要大得多。而且我觉得目前这两个中文词没有明显的区分(虽然对英文来说 property 和 attribute 也差不多),与其让读者花心力去记住「属性」和「特性」的区别,不如直接记住这两个英文单词更省事。所以不翻译更好。

而且不光是这两个词,我建议大部分有特殊涵义的专有名词,都不要翻译。

@airyland
Copy link
Contributor

airyland commented Apr 8, 2019

赞同使用英文,并且觉得其实不影响阅读体验。中文文档中使用英文名字或者表达是十分常见的,比如 Nginx, Ajax, https, md5, SSL 这类词,即使有,理解过一次也应该没阅读障碍了。

@cjjlovedsn
Copy link

赞成不翻译

@itchina110
Copy link

支持不翻译。

@zongzi531
Copy link

我也赞成不翻译,如果说都翻译成属性的话,在全中文的情况下很难去理解是 attribute 还是 property 。同理,特性也是,需要在特定位置标注。

@hjlld
Copy link

hjlld commented Apr 8, 2019

之前在翻译 WebGL 相关资料时也碰到过类似问题(attribute 是顶点着色器中使用的一种变量类型),提供一些思路参考:

从词源来看:

  • attribute 来自于拉丁 tribuere ,原意是“给予、分配”,所以 attribute 的构词结构意指“把……分配给……”、“使……归属于……”,也就是说 attribute 作为“属性”这个词来解释的时候,更偏向于把原本不属于这个东西的某个属性,指派给这个东西。

  • property的另一个意思是“不动产”、“财产”,所以很容易理解,即 property 作为“属性”这个词来解释的时候,更偏向于这个东西本身与生俱来的属性。

  • 中文“特性”的更好翻译,或者对应于英文单词应该是 feature,所以“特性”一词不应该用于处理 attributeproperty 的翻译中。

从计算机文献翻译角度:

在 WebGL 中 attribute 是一个储存修饰符和保留关键字,是会出现在代码中的,所以一般会直接写英文原文,如解释代码 attribute vec3 aVertexPosition; 时,中文会写成:

声明了一个类型为 vec3attribute 变量 aVertexPosition

相应的,在 HTML / JS 翻译中,attribute 在对应 Element.attributes 和相关接口(如:element.getAttribute(attributename))时,应当暴露出 attribute 英文原词,以便让读者能够理解对应关系。

相应的,property 如果需要翻译成中文,更好的选择也许是“成员”、“原生属性”。

微信截图_20190408115658

@mrzzcn
Copy link

mrzzcn commented Apr 8, 2019

参考:https://developer.mozilla.org/zh-CN/docs/Glossary/Attribute
attribute -> 标签属性
property -> 属性

@SilentDepth
Copy link
Contributor

支持第4个方案,也就是「不译」。

个人认为「这两个英文单词产生阅读理解障碍」是个很小概率的事件,而且即使发生也不会产生明显的影响。更何况在必须使用英文书写和调用各种 API 的情况下,这两个单词很可能会经常遇到,即使开发者/读者对这两个单词没有具体的理解,也不妨碍他们形成独到且可用于开发实践的「印象」,此时这两个单词本身是什么含义已经不重要了(毕竟就是一个名词)。相比之下,歧义带来的负面影响要大得多。

如果要做得更完善一些,为这两个单词添加个脚注,补充一些概念上的知识,就足够了。

@Galen-Yip
Copy link

attribute: 标签属性
property: 原生属性

@asself
Copy link

asself commented Apr 8, 2019

个人觉得保留原英文,attribute和property。如果真的要照顾小白用户,可以对这两个词进行必要的解释,至于形式,可以在两单词上给个链接

@yyydao
Copy link

yyydao commented Apr 8, 2019

赞成不翻译,以前翻译其他文章时候,往往对这两个词比较纠结。
对这类常见单词,不翻译其实更准确也不影响理解。

@Hawkeyes0
Copy link

赞成1
会看中文版的基本上英语阅读都有困难,更不会区分attribute和property的微妙区别,而至于用哪个单词感觉上他们也很随便。
比如html、xml里的属性用attribute,文件属性用attribute(系统、只读等)
比如类的属性用property,但是在DOM里又可以用attributes成员访问
至于说这两个单词要不要区别地翻译,是不是应该让那些老外明确什么语境用哪个词才对?

@Justineo
Copy link
Member

Justineo commented Apr 8, 2019

这里给不了解的同学们稍作科普。按我的理解,这些术语大致是这样的关系:

HTML 元素上都允许定义 attribute,可以是任意字符串值。

<div title="Hi">Hello</div>

title 就是一个 attribute,值为字符串 'Hi'。DOM 接口也允许通过 JS 来操作:

elem.getAttribute('title') // 'Hi'

在对应的 IDL(用来连接 DOM 和编程语言的接口描述规范)中,很多 attribute 都有一个 IDL attribute 对应,值的类型不仅限于字符串。为了区分,前一种就被称为 content attribute。

比如 HTMLElementIDL 描述中:

interface HTMLElement : Element {
  // metadata attributes
  [CEReactions] attribute DOMString title;
  [CEReactions] attribute DOMString lang;
  [CEReactions] attribute boolean translate;
  [CEReactions] attribute DOMString dir;

  // user interaction
  [CEReactions] attribute boolean hidden;
  void click();
  [CEReactions] attribute DOMString accessKey;
  readonly attribute DOMString accessKeyLabel;
  [CEReactions] attribute boolean draggable;
  [CEReactions] attribute boolean spellcheck;
  [CEReactions] attribute DOMString autocapitalize;

  [CEReactions] attribute [TreatNullAs=EmptyString] DOMString innerText;
};

这里的 titlelang 等都属于 IDL attribute。有些 IDL attribute 被 HTML 规范规定需要与对应的 content attribute 保持同步,比如 stylestyleclassNameclass,浏览器会保证对不同类型的值进行同步,比如 elem.style.color = 'red' 以后,对应的 content attribute 会更新为 style="color: red;"

而常说的 property 指的是 JavaScript 对象的 property。DOM IDL 通过 JavaScript 侧的实现,最终这些 IDL attribute 就以 JS 中 DOM 元素对象的 property 的形式暴露给了开发者。

IDL 我们平时不会直接接触,所以最后分成了 attribute 和 property 两种说法。

@FishPlusOrange
Copy link
Contributor

个人觉得不翻译也是可以的,毕竟大部分人都认识这两个单词。

如果要翻译,感觉可以在后面跟上原词,如特性 (attribute)

Vue 中文官网上,一些词的翻译好像就是采用以上这种方式,从某种程度上来说,也算保持统一。

@SLin0218
Copy link
Contributor

SLin0218 commented Apr 9, 2019

支持保留英文, 这两个单词大部分程序员都认识, 使用频率也高, 无需翻译.

@renweibo
Copy link

这个问题挺好的,说一下个人的看法,欢迎一起讨论。

比较赞成不翻译这两个词,直接用英文,这两个词在英语里的区分也不是特别严格。这里提供一个讨论思路给大家,在不同的IT技术领域里,property和attribute含义的区分程度都不太相同,python里property和attribute区分的相对而言清晰一些,java里这个没有那么明确,web相关的技术里参与的人多,技术背景也大多不一样,想要统一成一个合适中文翻译,容易造成误解,还是保留原有英文更好一些,能减少误解,也便于传播和讨论。

至于中英文混杂,这个本身就不可避免,对于这些类型易混淆可以保留英文。

另外,还有一些技术规范或者讨论中对于这两个词的对比说明,也能反应大家对这两个概念的理解分歧,如果要映射到中文混淆可能更严重

@hq5544
Copy link

hq5544 commented Apr 10, 2019

单独从两个单词来看:

  • attribute 强调的是通过归类得出的一类特质,属于一个组成部分。比如:人类都有头发,虽然可以是各种颜色,但是每个人都有(或曾有过)。
  • property 强调所属关系,是资产。比如:某一个人有一只钢笔,这是所属于他的资产,但是并不是他的组成部分。

@Jinjiang
Copy link
Member Author

综合大家的留言和建议,还有一些聊天群、社交平台、邮件组的讨论 (这里不一一复述),我们最终决定不翻译 attribute 和 property 这两个词,保留英文。稍后我们会陆续更新所有中文文档中相应的部分,也欢迎大家提 PR 帮助我们。

谢谢大家

@sdcnljg
Copy link

sdcnljg commented Jun 19, 2019

建议:

  • attribute 翻译成:attribute属性
  • property 翻译成:property属性
    即保留英文原意,又可以看出是哪个词的翻译 @Jinjiang

@yangbo
Copy link

yangbo commented May 6, 2022

Attributes 和 Properties 的区别:

Attributes: additional information about an object. 【是对象属性的具体值,如:红色、宝马、汽油】
Properties: describing the characteristics of an object.【是对象属性的名称,如:颜色、品牌、燃料类型】

When each property of an object gets value, it is actually the concept of attributes. For instance a Car :
car properties:

  • Colour
  • Type of Car
  • Production Year
  • fuel type

car Attributes:

  • Colour is red
  • The type of Car is BMW
  • Production Year is 2020
  • fuel type is Petrol

信息来源:https://www.researchgate.net/post/What-are-the-differences-between-attribute-and-properties

@congfamin
Copy link

congfamin commented May 6, 2022 via email

@blackpuppy
Copy link

技术翻译最重要的是“信","达"和"雅"尚在其次。如果看翻译不能传达原意,看到”属性“和”特性“都无法判断原文是attributeproperty,而原文里两者是有明确区别的,那翻译就是二次创作了,跟传话越传越歪一样。技术文档的翻译,不是小说等艺术作品的翻译,应该尽量减少二次创作的成分,而更注重传达原意,所以建议保留原文attributeproperty

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests