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”,那就恰好没错了。
分享到:
相关推荐
"Literal控件的使用" Literal控件是ASP.NET Web应用程序中的一种常用的服务器控件,用于在Web页面中显示静态文本或动态生成的内容。在本文中,我们将对Literal控件的使用进行详细的介绍,包括其基本概念、使用场景...
"Literal(2.0)"是一个关于ASP.NET 2.0框架中Literal控件的实例教程。Literal控件在Web开发中扮演着重要角色,尤其在处理静态文本或HTML时非常实用。下面我们将深入探讨Literal控件的核心概念、功能以及如何在C#编程...
天轰穿系列教程之-40HiddenField、LinkButton、Literal天轰穿系列教程之-40HiddenField、LinkButton、Literal天轰穿系列教程之-40HiddenField、LinkButton、Literal天轰穿系列教程之-40HiddenField、LinkButton、...
在网页设计中,"div+Literal控件"的定位是一个重要的技术环节,它涉及到前端布局和用户交互体验。本文将详细解析如何通过div元素和Literal控件实现精确定位选项卡,以及处理滚动条出现时的内容展示问题。 首先,`...
在这个“axis1.4 + document/literal 实例”中,我们将深入探讨Axis 1.4框架下的document/literal绑定模式。 首先,让我们理解什么是Axis 1.4。Axis 1.4是Axis的一个早期版本,它提供了一套工具和服务,使得开发者...
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
在literal样式下,SOAP消息的payload通常直接按照WSDL(Web Service Description Language)中的定义进行序列化。 在literal样式中,有两种定义SOAP payload的方式:一种是直接在代码中硬编码XML字符串,另一种是...
如果需要纯文本输出,避免额外的HTML结构,Literal是更好的选择。 总的来说,Literal控件适用于需要直接输出HTML代码或者大量文本的场合,而Label控件则适合于需要格式化文本和应用样式的情况。根据具体需求选择...
《Literal Pool:深入理解与应用》 在计算机科学领域,特别是编程语言和系统设计中,"Literal Pool"(常量池)是一个至关重要的概念。它主要用于存储程序中的各种静态数据,如字符串字面量、数字、符号引用等,旨在...
Literal 控件表示用于向页面添加内容的几个选项之一。对于静态内容,无需使用容器,可以将标记作为 HTML 直接添加到页面中。但是,如果要动态添加内容,则必须将内容添加到容器中。典型的容器有 Label 控件、Literal...
在ThinkPHP中可以使用literal标签来防止模板标签被解析,例如: 复制代码 代码如下:<literal> ”$name> value1 ”$name>value2 <else> value3 </literal> 上面的if标签被literal标签包含,因此if标签里面的内容并...
标题中的“前端开源库-json-literal”指的是一个前端开发领域中的开源库,它与JSON(JavaScript Object Notation)处理有关,特别是与JSON的文字表示形式有深入的关联。JSON是一种轻量级的数据交换格式,广泛应用于...
可以将 Literal 控件用作网页上其他内容的容器。Literal 控件最常用于向网页中动态添加内容。简单的讲,就是可以把 HTML 代码写到 Literal 控件上,直接呈现出来。 一、常见Literal属性 属性 描述 Text 指定 ...
"Python库 | ae_literal-0.2.31.tar.gz" 是一个针对Python开发者的资源,主要用于后端开发。这个压缩包包含的是Python的一个库,名为ae_literal,版本号为0.2.31。在Python的世界里,库是开发者常用的工具,它们提供...
### Python中函数eval和ast.literal_eval的区别详解 ...在实际开发过程中,根据具体情况选择合适的函数是非常重要的。希望本文的内容对大家的学习和工作有所帮助。如果有任何疑问,请随时留言交流。
invalid slice literal(解决方案).md
invalid field literal(解决方案).md
invalid struct literal(解决方案).md