翻译中的占位符及其处理方法

Updated April 12, 2017
Place holders save the day - Smartcat blog
Smartcat covers all your language needs with AI translation, AI content generation and AI human workflows.

我记得第一次参与软件本地化项目的情景。 当时被分配使用复杂的软件本地化工具翻译某工业计算机系统的用户界面。虽然技术内容不成问题,但界面翻译对我而言是全新领域,这项任务最终成了真正的挑战。

事实上,这些文本的风格对我来说并不陌生。作为一个对IT略懂一二的人,我对软件中常用的"计算机语言"非常熟悉(不过在聊天机器人和语音界面的影响下,我的看法后来发生了巨大变化)。 真正令人困惑的是这些怪异的符号:{0}%d%setup%$stop$。我完全不明白它们代表什么,也不确定符号间的文字是否需要翻译,因此很快便犯下大量错误。 换行符\n更是彻底摧毁了我的自信。我从未见过这种标记,更糟的是它们常与其他单词合并显示。 更荒唐的是文本用德语书写,导致\nein究竟是"nein"还是"\n"+"ein"根本无从分辨。项目经理被我连珠炮似的提问轰炸后,肯定后悔把任务交给这种笨蛋。说不定还在推特上发过牢骚。

紧急项目中,发现翻译文件里的占位符竟凭空消失了。#项目经理烦恼 #开始恐慌

— Lau Velázquez (@geekylau) 2013年10月9日

将占位符 $DepartureTime$ 翻译为 $HeureDépart$ 的翻译者只是坚持了自己的原则罢了。

— Olivier Oswald (@ooswald) 2011 年 7 月 27 日

将占位符 $Departure Time$ 译为 $HeureDépart$ 的译者们保持了一致性。

当译者决定更改引号样式时,游戏里一半的变量就消失了。

— Vojtěch Schubert (@falagor)2016年1月12日

多年后,初次体验的记忆仍会让我嘴角上扬。毋庸置疑,我总会花时间向译者们讲解变量的工作原理。而避免错误、为自己和团队节省时间的终极方法,就是使用正则表达式。它们能将变量转化为不可编辑且易于追踪的对象。在不同软件中,这些对象被冠以不同的名称。 在Smartcat,我们称之为占位符。若您好奇正则表达式为何物——它与闲聊毫无关联,而是用于匹配和处理字符组合的模式。学习正则表达式无需编程技能。只需点击浏览由山形欧洲本地化专家Thomas Vackier制作的这套简明演示文稿,您就能轻松掌握regex(即"正则表达式")的精髓。

神秘符号

举个简短的例子,我们来看看The Proclaimers乐队歌曲《I’m Gonna Be (500 miles)》中的几句歌词:

但我会走五百英里 我还会再走五百英里 只为成为那个跋涉千里的男人 在你家门前跪倒在地

假设我们希望歌词能随听众所在位置动态变化。为此需要引入变量:

但我要走 %$1 英里 我还要再走 %$2 英里 只为成为那个跋涉 {spelled-number} 英里 在你 {location} 倒下的男人

此处潜藏哪些风险? 关键字符可能被删除或滥用。%$1s中的数字必须遵循序列模式,且"拼写数字"与"地点"不可翻译。遗憾的是,并非所有人都知晓这些要求。

"何不直接雇佣专业译者,省去这些新手犯的错?"或许有人会问。无论实际原因为何,值得铭记的是:无人天生精通本地化,但凡经历过初学者的挣扎,在过程中积累宝贵经验者,皆可成为行家。

新手防弹指南:如何拯救世界

那么如何避免灾难发生并节省编辑时间?让我们用正则表达式描述变量:

  • 连续数字变量: %\$\ds

  • 大括号括起的变量:\{.+?\}

我个人发现这份速查表对编写正则表达式非常实用,而regex101.com是值得推荐的在线测试工具。 现在将包含变量的文件上传至Smartcat,界面将显示如下内容:

这些变量以紫色单元形式显示,显然无法翻译,可通过键盘快捷键安全地从源文本转移到目标语言中。下载后,这些元素在翻译文档中将保持完整。占位符的使用不仅限于本地化项目。 试想一份包含数千项的大型空气泵规格表。每项产品都分配了订单代码,且代码格式高度相似,极易导致输入错误。

此处稍有差池,后果便可能不堪设想。仓库发货时可能出现差错,安装过程也可能问题频出。客户将蒙受损失,更糟的是:错误数据可能引发技术故障,进而导致环境灾难。占位符无需翻译,只需安全转换为目标语言即可,何必在此浪费时间? 让我们用这个优雅的正则表达式[A-Z]{2}\d{4}\-\d{4}匹配所有订单代码,并将其神奇地转化为不可编辑元素:

这真是让我们的翻译流程(包括编辑环节)变得更轻松、更高效的好方法!

目前,占位符默认仅支持常见的本地化文件格式。若您希望在其他文档类型中使用,请随时告知我们。

我已联系同事们,询问他们使用占位符的体验。

费奥多尔·别兹鲁科夫,Logrus IT执行董事(基辅办公室)

“在文档格式中使用占位符和标签是我们常见的工作场景。当客户发送包含HTML或XML标记的Excel文件时,它们堪称救星。得益于Smartcat对占位符和正则表达式的支持,处理此类资源变得更加轻松便捷。”

玛丽娜·伊林尼赫,Bookmate本地化经理

“我们在应用程序的用户界面中大量使用变量和格式化功能。通过用占位符替换标签和变量,我们能够执行自动一致性检查,并保护重要数据的安全,例如价格、订阅日期和链接。”

lexiQA首席执行官扬尼斯·埃万杰洛乌分享了他复杂的心情:

扬尼斯·埃万杰洛,lexiQA首席执行官

“译者在处理占位符、标记和标签内的文本时常出现一个普遍问题:转义字符也经常被忽略。 多数人并未意识到这些并非可译词汇单元。项目经理同样对此一无所知。然而此类疏忽可能引发严重错误。有位译者曾向我提及,他处理过包含HTML格式的文本,竟将<p style="border: 1px solid red;"></p> 译为 <π στυλ="περίγραμμα: 1 πίξελ συμπαγές κόκκινο;"></π>。他辩称:或许使用该代码的开发者并不懂英语。项目经理未予修正,因为她认为译者的逻辑...合情合理!

随后,游戏本地化专家罗尔夫·克利舍夫斯基补充道:

游戏翻译人员经常要处理这类问题:

当然,与此相关的问题也层出不穷。

这里的问题在于某些目的地名称需要冠词。比如"the Bahamas"(巴哈马群岛)但"Barbados"(巴巴多斯)则不需要。德语中"Switzerland"(瑞士)要译作"die Schweiz"。遇到这类情况,我们通常会拒绝项目。通常我会建议客户更换文本引擎,因为我不愿交付劣质译文。 开发者常会质疑:"这问题真有那么严重吗?"诚然,游戏本身仍可运行。那么如何处理这类问题?告知客户并说明缘由。若对方无法或拒绝修复引擎,而你又需要这笔收入,那就接下任务——但务必确保不署名。»

💌

订阅我们的新闻

电子邮件 *