| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | 
							- <?php
 
- namespace common\modules\i18n;
 
- use common\modules\i18n\models\I18nMessage;
 
- use common\modules\i18n\models\I18nSourceMessage;
 
- use yii\base\BootstrapInterface;
 
- class Module extends \common\modules\Module implements BootstrapInterface
 
- {
 
-     public $controllerNamespace = 'common\modules\i18n\controllers';
 
-     public function bootstrap($app)
 
-     {
 
-         $app->set('i18n', [
 
-             'class' => 'yii\i18n\I18N',
 
-             'translations' => [
 
-                 '*'=> [
 
-                     'class' => 'yii\i18n\PhpMessageSource',
 
-                     'basePath'=>'@common/modules/i18n/messages',
 
-                     'fileMap'=>[
 
-                         'common'=>'common.php',
 
-                         'backend'=>'backend.php',
 
-                         'frontend'=>'frontend.php',
 
-                     ],
 
-                     'on missingTranslation' => [$this, 'missingTranslation']
 
-                 ],
 
-                 'app*' => [
 
-                     'class' => 'yii\i18n\PhpMessageSource',
 
-                     'basePath'=>'@common/modules/i18n/messages',
 
-                     'fileMap' => ['app' => $app->id . '.php'],
 
-                     'on missingTranslation' => [$this, 'missingTranslation']
 
-                 ],
 
-                 /*'*'=> [
 
-                     'class' => 'yii\i18n\DbMessageSource',
 
-                     'sourceMessageTable'=>'{{%i18n_source_message}}',
 
-                     'messageTable'=>'{{%i18n_message}}',
 
-                     'enableCaching' => YII_ENV_DEV,
 
-                     'cachingDuration' => 3600,
 
-                     'on missingTranslation' => ['\common\modules\i18n\Module', 'missingTranslation']
 
-                 ],*/
 
-             ],
 
-         ]);
 
-     }
 
-     /**
 
-      * @param \yii\i18n\MissingTranslationEvent $event
 
-      */
 
-     public function missingTranslation($event)
 
-     {
 
-         if (isset($this->params['is_auto_translate']) && $this->params['is_auto_translate']) {
 
-             //http://fanyi.baidu.com/v2transapi?from=zh&query=世界&to=en
 
-             // 当语言没命中的时候用百度翻译并保存到数据库
 
-             $model = I18nSourceMessage::find()->where(['category' => $event->category, 'message' => $event->message])->one();
 
-             if ($model == null) {
 
-                 $model = new I18nSourceMessage();
 
-                 $model->category = $event->category;
 
-                 $model->message = $event->message;
 
-                 $model->save();
 
-             }
 
-             $messageModel = I18nMessage::find()->where(['id' => $model->id, 'language' => $event->language])->one();
 
-             if ($messageModel == null) {
 
-                 $messageModel = new I18nMessage();
 
-                 $messageModel->language = $event->language;
 
-                 $messageModel->id = $model->id;
 
-                 $messageModel->translation = self::translate($event->message, 'en', self::parseLanguage($event->language));
 
-                 $messageModel->save();
 
-             }
 
-             $event->translatedMessage = $messageModel->translation;
 
-         }
 
-     }
 
-     public static function parseLanguage($language)
 
-     {
 
-         $languageMap = [
 
-             'zh-CN' => 'zh'
 
-         ];
 
-         return $languageMap[$language];
 
-     }
 
-     public static function translate($text, $from , $to)
 
-     {
 
-         $url = "http://fanyi.baidu.com/v2transapi";
 
-         $data = array (
 
-             'from' => $from,
 
-             'to' => $to,
 
-             'query' => $text
 
-         );
 
-         $data = http_build_query($data);
 
-         $ch = curl_init ();
 
-         curl_setopt ($ch, CURLOPT_URL, $url );
 
-         curl_setopt ($ch, CURLOPT_REFERER, "http://fanyi.baidu.com" );
 
-         curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:37.0) Gecko/20100101 Firefox/37.0' );
 
-         curl_setopt ($ch, CURLOPT_HEADER, 0 );
 
-         curl_setopt ($ch, CURLOPT_POST, 1 );
 
-         curl_setopt ($ch, CURLOPT_POSTFIELDS, $data );
 
-         curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1 );
 
-         curl_setopt ($ch, CURLOPT_TIMEOUT, 10 );
 
-         $result = curl_exec($ch);
 
-         curl_close($ch);
 
-         $result = json_decode($result, true);
 
-         if (!isset($result['trans_result']['data']['0']['dst'])){
 
-             return false;
 
-         }
 
-         return $result['trans_result']['data']['0']['dst'];
 
-     }
 
- }
 
 
  |