>L20N 在我的 ReactJS 项目中设置,我在ready
事件触发后在context
上调用getSync
(所以事情应该很好)。 但是,我得到的不是我预期的字符串,包括其他实体值和变量扩展,而是原始实体字符串。
我得到的字符串如下所示:
{{$user.name}} - {{appName}}
但是,当然,我期待这样的事情:
Ben Taylor - My Cool App
我试图在这个 plunker 中重现问题。 不幸的是,它工作正常! 运行它时,警报框将显示预期的 L20N 扩展字符串。
什么可能导致实体值返回原始? 我有一个有效的context
并且检查器中没有错误,因此看起来一切都配置良好。 我想知道是否与我正在做的其他事情有一些相互作用,正在破坏 L20N。 任何想法表示赞赏!
无法包含我正在开发的应用程序,但不用说它有更多的活动部件。 它是一个基于此模板的 React 应用程序。
如果您的.l20n
文件中存在某种错误(以前称为 .lol
的扩展名),则 getSync
调用将返回原始字符串值。 就我而言,错误是引用 L20n 字典中的键。
如果您有像{ user: { type: "Awesome" } }
这样的context
数据,则以下内容不起作用,并且为 useTheShout
调用 getSync
将返回未处理的字符串值(包括文本{{shout}}
):
<shout[$user.type] {
"Awesome": "HEY AWESOME USER!",
"Loser": "i can't be bothered to shout at you loser..."
}>
<useTheShout "I'm gonna shout the following: {{shout}}">
从字典键名称中删除引号将使此操作完成,如下所示:
<shout[$user.type] {
Awesome: "HEY AWESOME USER!",
Loser: "i can't be bothered to shout at you loser..."
}>
<useTheShout "I'm gonna shout the following: {{shout}}">
更新:可以通过使用 error
和warning
事件发射器进行日志记录来避免痛苦。