什么会导致 L20N 不处理实体变量和包含物?

What could cause L20N to not process the Entity variables and inclusions?

L20N 在我的 ReactJS 项目中设置,我在 context afterready 事件上调用 getSync已经解雇(所以一切都应该顺利进行)。但是,我得到的不是我预期的包含其他实体值和变量扩展的字符串,而是原始实体字符串。

我得到的字符串是这样的:

{{$user.name}} - {{appName}}

当然,我期待这样的事情:

Ben Taylor - My Cool App

我试过了recreate the problem in this plunker。不幸的是,它工作正常!当您运行它时,警告框会显示预期的 L20N 扩展字符串。

什么会导致实体值被原始返回? 我有一个有效的 context 并且在检查器中没有错误,所以看起来所有配置都很好.我想知道是否与我正在做的其他事情有一些互动会破坏 L20N。任何想法表示赞赏!

我无法包含我正在开发的应用程序,但不用说它有更多活动部件。它是一个基于 this template.

的 React 应用程序

如果您的 .l20n 文件(以前称为 .lol 的扩展名)中存在某种错误,则 getSync 调用将 return 原始字符串值.在我的例子中,错误是 quote L20n dictionary.

中的键

如果您有 context 数据,例如 { user: { type: "Awesome" } },则以下 不起作用 并且为 useTheShout 调用 getSync 将return未处理的字符串值(包括文本{{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}}">

更新:您可以通过使用 errorwarning event emitters.

进行日志记录来避免这种痛苦