我在ClojureScript项目中使用react-select
但是有一个我想要翻译的硬编码字符串(请参阅here):
function promptTextCreator (label) {
return `Create option "${label}"`;
}
我会发送PR来使这个字符串可配置,但在此期间我有一个问题。
如果我从JS控制台检查我的应用程序,我可以输入:
> window.deps["react-select"]["Creatable"].promptTextCreator
打印
ƒ c(e){return'Create option "'+e+'"'}
现在在我的cljs项目中我尝试了这个:
(set! (.-promptTextCreator Creatable) #(str "TESTING " % "!"))
有趣的是,我可以看到应用程序中的更改:
> window.deps["react-select"]["Creatable"].promptTextCreator
现在打印
ƒ (p1__44104_SHARP_){
return [cljs.core.str("TESTING "),cljs.core.str(p1__44104_SHARP_),cljs.core.str("!")].join('');
}
问题:我的应用仍会显示旧的未更改的字符串。我还尝试用以下命名命名新函数:
(set! (.-promptTextCreator Creatable) (fn c [e] (str "TESTING " e "!")))
和
> window.deps["react-select"]["Creatable"].promptTextCreator
现在打印:
ƒ club$views$c(e){
return [cljs.core.str("TESTING "),cljs.core.str(e),cljs.core.str("!")].join('');
}
但没有运气:旧的未翻译字符串显示在应用程序中。
有什么想法吗?
答案 0 :(得分:0)
promptTextCreator
是一个属性,您可以传入自定义函数。为什么需要猴子补丁?