reactjs / zh-hans.react.dev

React documentation website in Simplified Chinese

Home Page:https://zh-hans.react.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于 Escape Hatch 翻译的讨论

Huxpro opened this issue · comments

目前,escape hatch 的翻译是「应急方案」,在 #611
曾进行过一定讨论:

@shezhangzhang:

escape hatches 为什么翻译成“应急方案”呢?感觉这个翻译很呆板和不人性化。我注意到繁体中文版本的翻译是:”逃脫出口“。感觉比应急方案更雅一些。应急方案有点像AI翻译,会有点无聊,然后它也没那么“急”...
像 Effect 就是一种 “逃脱出口”,它让你可以 “跳出/逃出” react 和外部状态同步,比如网络之类的。也不算一种应急的东西。表达了一种 escape 逃脱的感觉

@BetterZxx:

翻译成应急方案确实有些问题,是否可翻译成-逃离方案/方法。
useEffect 中也存在这个词:https://react.dev/reference/react/useEffect#wrapping-effects-in-custom-hooks

@Huxpro:

@shezhangzhang 这种本来就是个英文比喻的词确实比较难翻译,我同意「应急」不是特别适合,而「逃脱出口」又可能过于接近一个比喻了,类似 @BetterZxx,我觉得「逃脱方案」可能还不错,甚至是「“逃脱”方案」(永远都打上引号表示一种比喻)
除了现在对内使用的词汇表之外,如果可以在文档里加一个对外的术语解释可能会对用户更加友好一些。可以详细去解释:

在技术圈子中,"Escape Hatch" 一般用于指代,某些框架或系统在使用的过程中,为了能够支持高度个性化的需求场景,提供的一些"最后的手段"或者"逃生口"。这些逃生口可以让开发者绕过系统中某些默认行为,以便于他们能够更好的定制和扩展系统。
在 React 和其他一些框架的官方文档中,"Escape hatch" 一般用于指代一些高度个性化的参数或者 API,这些 API 的使用允许开发者更改组件的默认属性,以及更改React或其他框架的一些内部行为,或者在特殊情况下规避某些限制或者 bug。例如,React 官方文档中的 "Escape Hatch Props" 就是指提供在组件中使用的一些逃生口属性,这些属性在通常情况下不应该被频繁使用,但在某些特殊场景下被发现是非常有用的。
-- chatGPT

@awxiaoxian2020:

我在这里想的是,是否需要翻译成“逃脱”,“逃”感觉是一种面对糟糕情形的动作

@earthaYan:

翻译为 绕过方案 会不会更适合

@zhenmang:

翻译为 脱离束缚 也比较贴切。提到的文中两处可做如下翻译:
原文中 Effects are an “escape hatch”: 可译为 Effect是一种脱离束缚的手段。
原文中 you’ll learn the escape hatches 可译为 你将学习脱离束缚的方法。
整体上都是为了表达脱离react范式的束缚,灵活的处理【某些场景下因响应式带来的问题】。

考虑@zhenmang 的说法,我们采用“解脱出口”或“跳脱出口”怎么样?

Background

首先,我们明确一下 Escape Hatch 的英文含义:

From my convo with ChatGPT:

Me: What is the most essential part of this metaphor that we should respect during a translation, and what are the non-essential parts that we can ignore?
ChatGPT: The essential part of this metaphor is the idea of stepping outside the usual bounds or scope. It emphasizes a departure from the normal flow or context (React, in this case) to achieve certain tasks. The non-essential part could be the literal imagery of an escape hatch or stepping outside, which might not translate directly or carry the same connotation in Chinese. The translation should aim to preserve the essence of moving beyond usual boundaries while fitting the contextual and linguistic nuances of the target language.

Takeaway:保留 "stepping outside of usual" 的含义,比如 逃脱、逃生、逃逸、跳出、跳脱、脱离、摆脱……、但是保留比喻的完整性和画面感并不重要

From https://wiki.c2.com/?EscapeHatch

Aliases: EscapeMechanisms, EscapeHatchMechanism
Problem: You are being restricted by your current tool set.
Solution: Pop the EscapeHatch and go somewhere else. You can generally return from wherever it is you go.

Takeaway:它应该是提供了一种机制、方法、方案,且原来的环境是受限、不好、需要出去的(且一般还能回去)

Vue 社区参考

Vue 社区并没有对其达成共识。原官网的多次 escape hatche 分别被翻译为:

明确不建议的:

  • 「应急……」—— 不好,因为整个含义中没有 "emergency" 的概念
  • 「……出口、舱口」—— 不好,因为在这个比喻中,「出口」的这个意向比不重要
  • 「绕过方案」—— 这个在 Vue 翻译中给了 workaround (n.)

可商议:

  • 「逃脱/逃生方案」—— “逃” 已经有负面含义了,“逃脱” 的负面感觉更重。”逃生“ 的 ”生“ 稍微带来一丝正面
  • 「脱离束缚的手段」—— 有点长,但是有翻出 “stepping out"、"being restricted"、“mechansim" 三个含义,不失是一个好的选项,可以看看是否可以精简

感谢 @Huxpro 给出的参考,让我意识到 escape hatch 是计算机科学中的术语,并不是 React 文档作者自己采用这一说法的。
鉴于

Aliases: EscapeMechanisms, EscapeHatchMechanism

Hatch 不保留“出口”的意思我是认可的,可以考虑“方案”和“机制”。
目前就是需要为 escape 找一个更加中性的翻译。
个人认为,还是可以使用跳脱解脱这样的词语。

ChatGPT 给我了一些新启发

Me: Let’s say you can coin a term in Chinese to describe "a mechanism of stepping out from the current restricted system to go somewhere else externally for the solution”. Give me a list of options.

ChatGPT:

  • 跨限解决机制
  • 外逸解决方案
  • 脱限解决机制
  • 解围解决方案
  • 跨界解决机制
  • 外链解决方案
  • 脱壳解决机制
  • 跨域解决方案

「解围机制」?

我个人觉得“脱壳机制”也是可以考虑的。
因为英文本就有比喻意义,我们使用“脱壳”这一比喻义的词语,能够让人意识到这是一个“术语”。
不仅没有“逃”的贬义,也保留了

原来的环境是受限、不好、需要出去的(且一般还能回去)

的特点。不过这是基于我们精细的讨论得出的,不一定在第一印象上会被认为这是好的翻译。

@awxiaoxian2020 「脱壳」的缺点在于它已经被占了:https://baike.baidu.com/item/%E8%84%B1%E5%A3%B3/9482636

我的倾向是除非含义很接近,不然不要重名(不如用/造新词)。

我知道的 "escape" 在计算机和编程中的用法:

  • escape, escape sequence, escape char - 转义
  • escape analysis - 逃逸分析

这里面,「逃逸机制」勉强是可以接受的。

@awxiaoxian2020

我个人觉得“脱壳机制”也是可以考虑的。

@Huxpro

「解围机制」?

等下,不如结合一下:「脱围机制」!?

「脱围」是中文中已经有的词,同时包含了「逃脱」和「限制」的含义,感觉很不错

@Huxpro 既然“逃逸”是计算机科学中已有的术语,而且实际上它在自然科学中广泛应用,已经消除了“逃”的贬义意味,所以我觉得可以考虑“逃逸机制”的说法。当然“脱围机制”我也是可以接受的。只不过我觉得沿用已有说法是一个比较好的想法。

@Huxpro 既然“逃逸”是计算机科学中已有的术语,而且实际上它在自然科学中广泛应用,已经消除了“逃”的贬义意味,所以我觉得可以考虑“逃逸机制”的说法。当然“脱围机制”我也是可以接受的。只不过我觉得沿用已有说法是一个比较好的想法。

「逃逸」?为什么这个词消除了「逃」的贬义意味……「车祸逃逸」这类表达在现实中不是经常描述「逃跑」这类负面意思吗……感觉这个词不合适吧。
而且虽然这个词确实在 CS 某些地方作为专门的术语,但是覆盖面也并不算很广、含义与此处的含义也并不一致,感觉还是不要用这个词汇。

为什么这个词消除了「逃」的贬义意味……

@Yucohny 如免疫学中的 病毒逃逸 和天文学中的 逃逸速度 等。

@awxiaoxian2020

我个人觉得“脱壳机制”也是可以考虑的。

@Huxpro

「解围机制」?

等下,不如结合一下:「脱围机制」!?

「脱围」是中文中已经有的词,同时包含了「逃脱」和「限制」的含义,感觉很不错

「脱围机制」我觉得不错。

我们要不就暂定为“脱围机制”?

@knitting-wool-ball 提出直接翻译为“备用方案”,对此我个人表示赞同。

这实际上打破了我们特别是@Huxpro 所作的一些思考:

它应该是提供了一种机制、方法、方案,且原来的环境是受限、不好、需要出去的(且一般还能回去)

虽然这有些遗憾,但是我觉得还是可以考虑的。

image

我们可以看出,这个 escape hatch 下面同样是一些 普通 的 API,甚至在 Vue 的设计中有些 API 十分常用。这些 API 并没有使 React 遭到破坏,只是从 React 的设计哲学角度上,不推荐经常使用。

无论是我们采用的“应急方案”还是“脱围机制”都有一种将 React 定义为有限制的框架。但实际上这种“限制”不是技术上的限制,只是不予推荐而已。

“备用方案”能很好地作为侧边栏的标题和前面的标题并列,作为阅读者看到这个词不会对此感到奇怪,也知道何时应该展开这个标题去阅读这些具体的方案,即“看完了上面的部分我感觉还不能满足我的需求,我就看看备用方案吧”。而 escape hatch 本身的“不推荐”已经在文章第一段指出,我觉得足矣。

@knitting-wool-ball 提出直接翻译为“备用方案”,对此我个人表示赞同。

备用方案和 fallback 本身就很容易有歧义

无论是我们采用的“应急方案”还是“脱围机制”都有一种将 React 定义为有限制的框架。但实际上这种“限制”不是技术上的限制,只是不予推荐而已。

Escape hatch 是计算机/编程领域的常见术语。Core team 采用该术语本身就是想用该术语的意思。尝试用自己对 React 的理解来解释该术语本来就是本末倒置的。

So, let's move back to 脱围机制.

脱围这个词语我有一点疑问是:中文里面好像没有这个词语?我在现代汉语词典中没有找到这个词语。我不清楚,大家查查这个词,咱不能自己造词吧哈哈哈哈哈哈哈

脱围这个词语我有一点疑问是:中文里面好像没有这个词语?我在现代汉语词典中没有找到这个词语。我不清楚,大家查查这个词,咱不能自己造词吧哈哈哈哈哈哈哈

@shezhangzhang

  • 我当时想到这个词的时候以为它是个常见中文表达。查了一下发现「脱围」好像确实不是……所以你更倾向「解围」吗?
  • 我觉得「不能造词」并不是个硬性原则,大量技术词汇是现造的。更多的应该是考虑是不是真的没有合适的词了所以「非要」造(is it necessary to coin a new term)

总之,任何有建设性的讨论和新的词汇推荐都欢迎!

我的意见是其实也不用卡那么死。卡太死感觉语言的延伸感不大了。
我是觉得 突围机制解围机制 都可以,相比于 逃脱出口逃生方案 翻译上更“自由”。突围,解围都不合适的话,用一下脱围这个词语也可以,**人都能看懂!
个人倾向于「Escape Hatch 翻译成:突围机制」
例子:
Effects are an escape hatch from the React paradigm.
Effects 是 React 范式中的一种突围机制。