Sailsjs req.setLocale在控制器之外

时间:2017-08-06 13:39:48

标签: node.js cron sails.js locale

我想在cronjob调度程序中将语言环境设置为默认语言之外的其他语言。 https://github.com/ghaiklor/sails-hook-cron

cronjob调度程序代码如下所示:

// ['seconds', 'minutes', 'hours', 'dayOfMonth', 'month', 'dayOfWeek']
module.exports.cron = {
  job: {
    schedule: '0 0 12 * * *',
    onTick: function() {
      SomeService.sendSms()
    },
    timezone: 'Asia/Jerusalem'
  }
}

但我无法设置区域设置,因为它不是控制器而是服务,我无法全局访问req.setLocale。

1 个答案:

答案 0 :(得分:4)

这取决于您使用的Sails版本。

对于Sails v0.12.x,动态指定语言环境的唯一方法是使用字典作为sails.__的参数:

sails.__({ phrase: 'Welcome', locale: 'fr' })

将为您Bienvenue提供默认的Sails应用。

此语法在Sails 1.0中不可用,但您可以使用sails.hooks.i18n.setLocale()更改当前区域设置:

var curLocale = sails.hooks.i18n.getLocale();
sails.hooks.i18n.setLocale('fr');
sails.__('Welcome');
sails.hooks.i18n.setLocale(curLocale);

将再次为您Bienvenue提供默认的Sails应用,同时确保之后将语言环境设置回默认值。这样,您就不会意外更改__的所有后续调用的区域设置。