1

L20N是在我的 ReactJS 项目中设置的,我在它的事件触发后调用getSync它(context 所以ready事情应该很好)。但是,我得到的不是我预期的包含其他实体值和变量扩展的字符串,而是原始实体字符串。

我得到的字符串如下所示:

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

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

Ben Taylor - My Cool App

我试图在这个 plunker 中重现问题。不幸的是,它工作正常!当您运行它时,警报框会显示预期的 L20N 扩展字符串。

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

我无法包含我正在开发的应用程序,但不用说它有更多的移动部件。它是一个基于此模板的 React 应用程序。

4

1 回答 1

2

如果您的文件中存在某种错误.l20n(以前称为 的扩展名.lol),则getSync调用将返回原始字符串值。在我的情况下,错误是引用L20n 字典中的键。

如果您有context类似的数据,{ user: { type: "Awesome" } }则以下内容不起作用,并且调用getSyncuseTheShout返回未处理的字符串值(包括 text {{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 事件发射器记录来避免痛苦。

于 2015-01-02T22:09:26.940 回答