我正在尝试使用变量作为使用i18next进行本地化的键。虽然会返回正确的字符串,但是插值无效。
我尝试使用变量和原始字符串来查看问题的根源。我确信它来自i18n.t()
中变量的使用。
return newChannel.guild.channels.get(config.defaultChannel).send(i18n.t(message.content, message.options));
message
值由函数返回。这是一个片段:
else if (newChannel.name !== oldChannel.name) {
return message = {
content: i18n.t('events:channel.update.name.text'),
options: { oldChannel: `**#${oldChannel.name}**`, newChannel: newChannel, interpolation: { escapeValue: false }}
};
}
这是json中的字符串:
"update": {
"name": {
"text": "The text channel {{oldChannel}} is now called {{newChannel}}."
}
}
它输出:The text channel is now called .
答案 0 :(得分:0)
此代码段看起来不正确:
else if (newChannel.name !== oldChannel.name) {
return message = {
content: i18n.t('events:channel.update.name.text'),
options: { oldChannel: `**#${oldChannel.name}**`, newChannel: newChannel, interpolation: { escapeValue: false }}
};
}
应该更像是
else if (newChannel.name !== oldChannel.name) {
return message = {
content: i18n.t('events:channel.update.name.text'),
options: { oldChannel: oldChannel.name, newChannel: newChannel.name, interpolation: { escapeValue: false }}
};
}
请注意两个变量的更改。您能解释一下您试图在映射中做些什么,使您感到需要使用ES6进行字符串插值,而不是仅使用库本身支持的插值吗?