【发布时间】:2016-04-25 05:45:18
【问题描述】:
我必须解决gettext 的限制来识别 ES6 模板字符串,并且我考虑将模板字符串的“非插值”作为编译步骤,以便在其中只有“正常”字符串代码。
基本上我想要实现的就是改造这个
const adjective = 'wonderful'
const something = `Look, I am a ${adjective} string`
console.log(something)
> "Look, I am a wonderful string"
进入这个
const adjective = 'wonderful'
const something = 'Look, I am a ${adjective} string'
console.log(something)
> "Look, I am a ${adjective} string"
实现此目的的一种残酷方式是使用sed,但它肯定不是更优雅(而且可能还容易出错)
sed "s/\`/'/g" FILENAME
有什么更好更简洁的想法吗?
【问题讨论】:
-
不,您不能在不丢失“智能”属性(包括字符串扩展)的情况下“简化”模板字符串。请注意
(`A ${b=alert()}`)将执行alert(),而'A ${b=alert()}'不会发生这种情况 -
我知道。我不需要
gettext的聪明才智,因为它不够聪明,无法理解模板字符串。 (我已经澄清了更多我的问题) -
你是问字符串插值,还是需要模板标签?
-
你试过像 babel 这样的转译器吗?
-
转译器不是一个可行的选择,因为翻译字符串被包装在一个也会被转换的函数中。例如。
t('translate me')变成function(par, 0)('translate me'),gettext不理解
标签: javascript localization ecmascript-6 gettext template-strings