2017-08-06 13 views
1

cronjobスケジューラで、ロケールをデフォルト以外の言語に設定したいとします。 https://github.com/ghaiklor/sails-hook-cronコントローラ外のSailsjs req.setLocale

cronジョブスケジューラのコードは以下のようになります。

// ['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を与えます後でデフォルトに戻します。このようにして、以後のすべての呼び出しでロケールを間違って変更することはありません。__

関連する問題