Sailsjs req.setLocale 外部控制器

Sailsjs req.setLocale outside controller

我想在 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。

这取决于您使用的 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 应用程序,同时确保之后将语言环境设置回默认值。这样您就不会意外更改 __.

所有后续调用的语言环境