`
hax
  • 浏览: 961420 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

谈literal译名之选择

阅读更多
literal这个词很讨厌,现有的译法众多,但都问题多多,而且没有一种占据绝对优势。如文字量、直接量、常量、常值、字面量、字面值、实字等等,也有直接译作“文本”,或者保留英文不译,或者通过采取基本等价的意译来规避的。

对于译名我有一个观点,若是一个术语有多个译名,并长期无法有一个译名占据优势,其实就暗示这些译名很可能都存在问题。literal不幸也是如此。

首先literal不是constant,所以不好用“常量”来翻译——虽然乍一看它很像“常量”。尽管如此,还是有一种看法,认为literal和常量、变量的差别只是赋值的时机,前者是在编译时,而后者是在运行时。根据这种看法,就有若干种“XX量”的译法,典型的如“字面量”、“直接量”。

然而这种看法值得质疑。问题不在于何时赋值,而是literal根本没有赋值的概念。因为赋值(还有变量、常量)是语义上的概念,而literal完全不是语义层面的东西。

所以literal不太好译作“xx量”。“XX量”除了变量、常量外,就是如标量(scalar)或向量(vector),都是指具有某种计算性质,也是语义层面的概念。而literal没有这种含义。

也有人将其译作“xx值”,例如常值或字面值。这比“XX量”要好,但是literal其实也不是值,而是值的符号表达——也就是literal始终是文法层面的概念。

这从各种语言规范里可以看出来。

Java的语言规范,literal是在lexical一章。也就是,它和Token、Line Terminators还有Comments是一个层面的。

Python的语言规范,literal是在Lexical analysis一章中,与它并列的是Line Structure、Identifiers and keywords以及Operators等。

再如ECMAScript规范,literal也是在lexical conversions一章中的。

我们看看和literal并列的,其实都是文法中的某种符号或token,譬如标识符、运算符、分隔符、关键字、分隔符、空白符、终止符……乃至Unicode字符序列。因此,翻作“XX量”或“XX值”都是文不对题的。

其实我本来考虑过是否可翻成“值符”或“常值符”的。类似的,台湾除了“常值”的译法最为常见外,还存在一些译法,如“实字”和“定字”(葉秉哲译法),其与“值符”的译法有相通处。但考虑再三,我觉得引入这样的新译法可能过于突兀,而且也存在一个问题——“值”通常会让人觉得是数值——string literal若作“字符串值符”或许还容易理解的,function literal作“函数值符”就晦涩了,所以还是退而求其次,我倾向于选用已有的译法“文本”和稍作改造的“源文本”。

在目前我正在翻译的一书中,对literal就采取了这一译法。

其中对于soap的document/literal-style是这样处理的:

引用
文档/文本式(document/literal-style)的SOAP绑定提供的响应更简单。


然后加译注如下:

引用
所谓SOAP绑定,是指服务如何转换为SOAP消息协议。wsdlsoap:binding元素上的style属性定义了绑定的风格,可以是RPC(远程过程调用)风格的,也可以是文档(document)风格的。wsdlsoap:body元素上的use属性定义了soap主体(body)的使用方式,主体中的数据可以经过编码(encoded),也可以直接使用文本(literal)。采用文档风格并且直接使用文本的,就是所谓文档/文本式(document/literal)。而清单2.14则采用了RPC/编码式(RPC/encoded)。


对于之后的function literal,是这样处理的:

引用
比如可以在运行时创建新的函数,可以通过不带函数名的源文本(literal) 直接创建出无名的函数对象……


然后加译注:

引用
源文本(literal),是指程序源代码中用来表示固定的值的符号序列。例如在大多数语言中,引号包围的字符序列即为字符串源文本(string literal),表示一个特定的字符串值。


总的来说,我是把literal译作“文本”的,在编程语言语境下是译作“源文本”即“源代码中的文本”之意。“源代码中的文本”基本是literal的直译。这个译法的主要问题是,当然不是所有源代码中的文本都是literal。然而其英文原词本来也不可能包含这个意思,所以直译无法包括此意也是正常的。

文本一译,还与text存在冲突。但是把literal理解为text,总好过理解为var/const。而且使用“源文本”的译法,就不存在直接冲突了。虽然大家可能把“源文本”对应到“source text”上,但这至少比其它译法都接近literal的实际意思,因为literal以及其他文法符号,不过就是source text分解后的具体成份。所以string literal用“字符串源文本”来翻译,大家想到的如果是“source text of the string”,那就恰好没错了。

2
0
分享到:
评论
12 楼 FrankHB1989 2012-04-16  
http://hax.iteye.com/blog/160003
congdepeng 写道
《C语言核心技术》Peter Prinz, Tony Crawford著 一书里面提到 “Literal is a token! ”

正式的C倒是没有literal的概念。
ISO C++11
2.14
1 There are several kinds of literals.21
...
21) The term “literal” generally designates, in this International Standard, those tokens that are called “constants” in ISO C.
翻C++11出来只是因为它是正式的……其实早就有了……
ISO C++98
2.13
1 There are several kinds of literals.21)
21) The term “literal” generally designates, in this International Standard, those tokens that are called “constants” in ISO C.
杯具在于C的constant概念。偏偏ISO C的constant也就是preprocessing-token之一,和后来其它语言所说的constant的概念有点不一样……
于是断言“literal不是constant”至少不够不严谨,可以是错的。
所以“字面量”还算是个差强人意的翻译,按语源上比其它的更容易接受。
PS.注意ISO C++中string literal在ISO C还是string literal。因为C语言中【它不保证是constant】。
喵的,回复还得特地让我注册,还特地得等一天……居然要求强口令……
11 楼 congdepeng 2010-06-29  
《C语言核心技术》Peter Prinz, Tony Crawford著 一书里面提到 “Literal is a token! ”
10 楼 s79 2009-11-29  
“文本表示”?
9 楼 hax 2009-09-24  
@Tin
字面 是literal的一般释义。如“从字面上说”,但中文里几乎不用“字面”作为名词,这大概也是为什么被加上一个“量”的原因,也就是你说的“舒服”问题。

但是中文有中文的特殊,就是许多词是组合而成,从而类比既有概念。比如考虑“火车”这个词,最早出现时,没见过“火车”的人,就理解为与“马车”类似,只是马车以马拉动,火车以火驱动。

而到技术领域,一个尚不了解“字面量”的人,在第一次读到“字面量”时,自然会与熟知的其他“量”做类比。这一点,可能许多已经了解literal,从而把“字面量”仅仅当做一个译名的人并不能体会。对于他们来说,已经建立了literal的观念,所要做的只是进行词汇与概念的映射。这时,先入为主就成了最重要的考量因素。

但是如果是还没有建立概念的人,其对概念的最初模糊认识,其实很大程度来源于名词本身。

从这点来说,术语翻译与做交互设计倒是有相通处,就是要对用户心理保持敏感。不是所有用户都会感知到这样的细节,绝大多数用户即使有所感觉,也不能理性认识到,他之所以做出某种反应或倾向于如何理解,是基于怎样一种原因。
8 楼 Tin 2009-09-24  
我觉得“源文本”不如“字面量”看起来自然呢。字面这个名词我觉得和literal这个词的本意非常接近,加个量的后缀让它读起来更舒服,量不一定非要牵扯到如何使用它的问题上吧?
7 楼 sunxing007 2009-09-24  
捧场。
6 楼 jiangur 2009-01-23  
译"文本字"更贴切些,中文"字"有符号意思。
5 楼 hax 2008-12-20  
“帖字”和“碑帖符”何解?
4 楼 feixingfei 2008-12-19  
或者“碑帖符”
3 楼 feixingfei 2008-12-19  
应译作 “帖字”
2 楼 hax 2008-01-29  
译注主要是用来解释技术方面的问题,或补充一些背景资料的。像译名选取方面的问题,或可作为附录。这个我会跟出版社商量,是否可加一个附录做些译名处理的说明,也减少被读者无谓扔砖,呵呵。
1 楼 sorphi 2008-01-29  
既然literal这么的只可意会不可言表,那能否在第一次出现的时候,用一段专门的译注来解释literal以及你为何采用某种译法?比如这个Blog里面的解释就比较详细了。

"源文",怎么样?不过,貌似也很唐突...

相关推荐

    Literal控件的使用

    "Literal控件的使用" Literal控件是ASP.NET Web应用程序中的一种常用的服务器控件,用于在Web页面中显示静态文本或动态生成的内容。在本文中,我们将对Literal控件的使用进行详细的介绍,包括其基本概念、使用场景...

    Literal(2.0)

    "Literal(2.0)"是一个关于ASP.NET 2.0框架中Literal控件的实例教程。Literal控件在Web开发中扮演着重要角色,尤其在处理静态文本或HTML时非常实用。下面我们将深入探讨Literal控件的核心概念、功能以及如何在C#编程...

    天轰穿系列教程之-40HiddenField、LinkButton、Literal

    天轰穿系列教程之-40HiddenField、LinkButton、Literal天轰穿系列教程之-40HiddenField、LinkButton、Literal天轰穿系列教程之-40HiddenField、LinkButton、Literal天轰穿系列教程之-40HiddenField、LinkButton、...

    div+Literal控件的定位

    在网页设计中,"div+Literal控件"的定位是一个重要的技术环节,它涉及到前端布局和用户交互体验。本文将详细解析如何通过div元素和Literal控件实现精确定位选项卡,以及处理滚动条出现时的内容展示问题。 首先,`...

    axis1.4 + document/literal 实例

    在这个“axis1.4 + document/literal 实例”中,我们将深入探讨Axis 1.4框架下的document/literal绑定模式。 首先,让我们理解什么是Axis 1.4。Axis 1.4是Axis的一个早期版本,它提供了一套工具和服务,使得开发者...

    css-literal-loader, 将CSS标记的模板文本解析为CSS文件.zip

    css-literal-loader, 将CSS标记的模板文本解析为CSS文件 css-literal-loader用于提取和处理其他文件中定义的css的web pack加载器和babel插件。"inline CSS",它只适用于 CSS 。PostCSS 。LESS 。tlb或者任何它的他...

    001-glib-gdate-suppress-string-format-literal-warning.patch

    001-glib-gdate-suppress-string-format-literal-warning.patch 001-glib-gdate-suppress-string-format-literal-warning.patch 001-glib-gdate-suppress-string-format-literal-warning.patch

    AXIS2 RCP/literal样式,两种MESSAGE定义方式SOAP的payload

    在literal样式下,SOAP消息的payload通常直接按照WSDL(Web Service Description Language)中的定义进行序列化。 在literal样式中,有两种定义SOAP payload的方式:一种是直接在代码中硬编码XML字符串,另一种是...

    ASP.NET中Literal控件的使用方法 <font color=red>原创</font>

    如果需要纯文本输出,避免额外的HTML结构,Literal是更好的选择。 总的来说,Literal控件适用于需要直接输出HTML代码或者大量文本的场合,而Label控件则适合于需要格式化文本和应用样式的情况。根据具体需求选择...

    lab_06_literal_pool_

    《Literal Pool:深入理解与应用》 在计算机科学领域,特别是编程语言和系统设计中,"Literal Pool"(常量池)是一个至关重要的概念。它主要用于存储程序中的各种静态数据,如字符串字面量、数字、符号引用等,旨在...

    ASP.NET中Literal与Label控件的区别

    Literal 控件表示用于向页面添加内容的几个选项之一。对于静态内容,无需使用容器,可以将标记作为 HTML 直接添加到页面中。但是,如果要动态添加内容,则必须将内容添加到容器中。典型的容器有 Label 控件、Literal...

    thinkphp使用literal防止模板标签被解析的方法

    在ThinkPHP中可以使用literal标签来防止模板标签被解析,例如: 复制代码 代码如下:&lt;literal&gt; ”$name&gt; value1 ”$name&gt;value2 &lt;else&gt; value3 &lt;/literal&gt; 上面的if标签被literal标签包含,因此if标签里面的内容并...

    前端开源库-json-literal

    标题中的“前端开源库-json-literal”指的是一个前端开发领域中的开源库,它与JSON(JavaScript Object Notation)处理有关,特别是与JSON的文字表示形式有深入的关联。JSON是一种轻量级的数据交换格式,广泛应用于...

    ASP.NET中Literal控件的使用方法 原创

    可以将 Literal 控件用作网页上其他内容的容器。Literal 控件最常用于向网页中动态添加内容。简单的讲,就是可以把 HTML 代码写到 Literal 控件上,直接呈现出来。 一、常见Literal属性 属性 描述 Text 指定 ...

    Python库 | ae_literal-0.2.31.tar.gz

    "Python库 | ae_literal-0.2.31.tar.gz" 是一个针对Python开发者的资源,主要用于后端开发。这个压缩包包含的是Python的一个库,名为ae_literal,版本号为0.2.31。在Python的世界里,库是开发者常用的工具,它们提供...

    Python中函数eval和ast.literal_eval的区别详解

    ### Python中函数eval和ast.literal_eval的区别详解 ...在实际开发过程中,根据具体情况选择合适的函数是非常重要的。希望本文的内容对大家的学习和工作有所帮助。如果有任何疑问,请随时留言交流。

    invalid slice literal(解决方案).md

    invalid slice literal(解决方案).md

    invalid field literal(解决方案).md

    invalid field literal(解决方案).md

    invalid struct literal(解决方案).md

    invalid struct literal(解决方案).md

Global site tag (gtag.js) - Google Analytics