2017-08-06 76 views
1

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

的调度的cronjob代码看起来像这样:

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

,但我不能设置语言环境,因为它不是一个控制器,而是一种服务,我不能够访问全球req.setLocale。

回答

2

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

对于帆影v0.12.x,动态地指定一个区域,唯一的办法是通过使用字典作为参数sails.__

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

会给你Bienvenue带有默认帆应用。

这句法不帆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与默认帆的应用程序,同时确保区域设置回之后默认为默认值。这样,您不会意外更改所有后续调用__的语言环境。