【发布时间】:2015-05-28 17:11:13
【问题描述】:
我有这个:
I18N =
detectLngQS: "lang"
resGetPath: "locales/__lng__/__ns__.json"
ns: { namespaces: ['ns.common', 'ns.layout', 'ns.forms', 'ns.msg'], defaultNs: 'ns.common'}
ignoreRoutes: ["images/", "public/", "css/"]
extension:".json"
debug: false
在我的 node-express 应用程序中,我的语言环境如下:
☺ tree -L 2 locales ruby-2.0.0-p195 master 02bd09a ✗""
locales
├── README.md
├── cs-CZ
│ ├── ns.common.json
│ ├── ns.forms.json
│ ├── ns.layout.json
│ └── ns.msg.json
├── dev
│ ├── ns.common.json
│ ├── ns.forms.json
│ ├── ns.layout.json
│ └── ns.msg.json
├── en-UK
│ ├── ns.common.json
│ ├── ns.layout.json
│ └── ns.msg.json
├── fr-FR
│ ├── ns.common.json
│ ├── ns.forms.json
│ ├── ns.layout.json
│ └── ns.msg.json
└── sk-SK
├── ns.common.json
├── ns.forms.json
├── ns.layout.json
└── ns.msg.json
我在控制台中不断收到ENOENT 消息,例如:
currentLng set to: fr-FR
loaded file: locales/fr-FR/ns.common.json
loaded file: locales/fr-FR/ns.layout.json
loaded file: locales/fr-FR/ns.forms.json
loaded file: locales/fr-FR/ns.msg.json
[ { [Error: ENOENT, open 'locales/fr/ns.common.json'] errno: 34, code: 'ENOENT', path: 'locales/fr/ns.common.json' },
{ [Error: ENOENT, open 'locales/fr/ns.layout.json'] errno: 34, code: 'ENOENT', path: 'locales/fr/ns.layout.json' },
{ [Error: ENOENT, open 'locales/fr/ns.forms.json'] errno: 34, code: 'ENOENT', path: 'locales/fr/ns.forms.json' },
{ [Error: ENOENT, open 'locales/fr/ns.msg.json'] errno: 34, code: 'ENOENT', path: 'locales/fr/ns.msg.json' } ]
我错过了什么?
另外,在某些情况下,我只想使用备用文件,例如 en-UK,我没有 ns.forms.json 文件所以我得到
locales en-UK
loaded file: locales/en-UK/ns.common.json
loaded file: locales/en-UK/ns.layout.json
loaded file: locales/en-UK/ns.msg.json
[ { [Error: ENOENT, open 'locales/en/ns.common.json'] errno: 34, code: 'ENOENT', path: 'locales/en/ns.common.json' },
{ [Error: ENOENT, open 'locales/en/ns.layout.json'] errno: 34, code: 'ENOENT', path: 'locales/en/ns.layout.json' },
{ [Error: ENOENT, open 'locales/en-UK/ns.forms.json']
errno: 34,
code: 'ENOENT',
path: 'locales/en-UK/ns.forms.json' },
解决这个问题的正确方法是什么?
任何建议都非常感谢
【问题讨论】:
-
ENOENT 表示它没有找到文件(实体)。例如,您似乎在
locales/en-UK/ns.forms.json没有文件。问题是,当语言是fr-Fr时,为什么它会在/fr/中查找?尝试的简单解决方法是将fr-Fr目录重命名为fr。不是一个实际的答案,因为我只是在试一试。 -
github.com/jamuhl/i18next/blob/… -- 尝试打破该行并查看它试图解析的 url。
标签: node.js express coffeescript i18next