Javascript node.js i18n:使用_uuu还是导入?

Javascript node.js i18n:使用_uuu还是导入?,javascript,internationalization,i18n-node,Javascript,Internationalization,I18n Node,我不熟悉i18n,并且有一个使用它的现有存储库。我注意到在整个存储库中使用i18n的语法不同,我想知道最好的方法是什么 我对下面的结构和哪个语法选项最好感到困惑(我认为最好与语法一致,只使用1个选项)。也许有人能解释一下吗 在控制器中,我发现: var responses = require('../../locales/en.json'); let message = responses.authorisation.flashes['welcome']; return res.status(

我不熟悉
i18n
,并且有一个使用它的现有存储库。我注意到在整个存储库中使用i18n的语法不同,我想知道最好的方法是什么

我对下面的结构和哪个语法选项最好感到困惑(我认为最好与语法一致,只使用1个选项)。也许有人能解释一下吗

在控制器中,我发现:

var responses = require('../../locales/en.json');

let message = responses.authorisation.flashes['welcome'];
return res.status(200).json({
  success: true,
  message,
  token,
  user: userData
});
在中间件中,语法如下所示:

req.flash('error', req.__('organisation.not-found'));
app.js
中,我发现:

const flash = require('connect-flash');
const flashMiddleware = require('./middleware/flashMiddleware');

const i18n = require('i18n');
i18n.configure({
  locales: [
    'en', 'nl'
  ],
  register: global,
  directory: path.join(__dirname, 'locales'),
  defaultLocale: 'en',
  objectNotation: true,
  updateFiles: false
});
flashMiddleware.js
包含以下内容(我不确定这是做什么的):


您的第一个和最后一个代码块似乎根本没有使用
i18n
。相反,第一个代码块是为
en
加载JSON并直接使用它。现在还不清楚flash在用什么,我在代码中没有看到任何本地化的东西

中间件语法在
req
上使用
\uuuu
,似乎是在中间件中使用此库的标准方式


还有其他方法可以使用它,详见。

谢谢,我在OP中添加了app.js中的i18n代码。我认为这可以实现本地化(可能还没有完全设置为国际化,因为目前该网站只有1种语言)。这两种语法之间是否存在差异,例如在性能方面或其他方面?我的意思是,在控制器中也使用
\uuu
语法难道没有意义吗?(为了一致性)@Marty-我想是的,不仅仅是为了一致性。可能在某个时候,应用程序将使用多种语言(否则,为什么要使用本地化文件和
i18n
)。控制器代码采用英语,因此如果/当您使用多种语言时,您必须编辑控制器代码以匹配中间件代码。你想继续干什么就开始干什么…:-)(我意识到代码已经存在,所以“出发”并不准确,但是…)
const flashMiddleware = (req, res, next) => {
  res.locals.flashes = req.flash();

  next();
};

module.exports = flashMiddleware;