可能导致 L20N 无法处理实体变量和包含的内容



>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}}">

更新:可以通过使用 errorwarning事件发射器进行日志记录来避免痛苦。

最新更新