亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

I18N 組件

I18N 國際多語言,允許讓您的項目支持多種語言

組件要求

  • easyswoole/component: ^2.2

安裝方法

composer require easyswoole/i18n

倉庫地址

easyswoole/i18n

基本使用

在 swoole 中單獨使用

<?php

require_once __DIR__ . '/vendor/autoload.php';

use EasySwoole\I18N\AbstractDictionary;
use EasySwoole\I18N\I18N;

// 定義一個詞典。const 值請務必于 const 變量名一致,這樣是避免用戶手敲詞條名稱出錯
class Dictionary extends AbstractDictionary
{
    const HELLO = 'HELLO';
    const GOOD_MORNING = 'GOOD_MORNING';
    const HOME = 'HOME';

}

// 定義一個中文語言包
class Chinese extends Dictionary
{
    const HELLO = '你好';
    const HOME = '主頁';
}

// 定義一個英文語言包
class English extends Dictionary
{
    const HELLO = 'hello';
    const GOOD_MORNING = 'Hi,good morning';
    const HOME = 'home page';
}

// 注冊語言包
I18N::getInstance()->addLanguage(new Chinese(), 'Cn');
I18N::getInstance()->addLanguage(new English(), 'En');
// 設置默認語言包
I18N::getInstance()->setDefaultLanguage('Cn');

$http = new swoole_http_server('0.0.0.0', 9501);

$http->on('request', function (\Swoole\Http\Request $request, \Swoole\Http\Response $response) {
    // 使用
    $res = [];
    $ret = I18N::getInstance()->translate(Dictionary::HELLO);
    $res[] = $ret;
    var_dump($ret); // string(6) "你好"

    $ret = I18N::getInstance()->translate(Dictionary::GOOD_MORNING);
    $res[] = $ret;
    var_dump($ret); // string(12) "GOOD_MORNING"

    $ret = I18N::getInstance()->sprintf('%s ! 歡迎到 %s !!!!',Dictionary::HELLO,Dictionary::HOME);
    $res[] = $ret;
    var_dump($ret); // string(30) "你好 ! 歡迎到 主頁 !!!!"

    // setLanguage 僅僅會影響當前協程的語言
    $ret = I18N::getInstance()->setLanguage('En')->translate(Dictionary::GOOD_MORNING);
    $res[] = $ret;
    var_dump($ret); // string(15) "Hi,good morning"

    $response->header('Content-Type', 'text/html;charset=utf-8');
    $response->end(json_encode($res, JSON_UNESCAPED_UNICODE));
});

$http->start();

訪問 http://localhost:9501/ (示例訪問請求地址) 即可看到如下結果:["你好","GOOD_MORNING","你好 ! 歡迎到 主頁 !!!!","Hi,good morning"]

在 EasySwoole 中使用

1. 定義語言包

新增如下文件:App\Languages\Dictionary.phpApp\Languages\Chinese.phpApp\Languages\English.php

內容如下:

<?php

namespace App\Languages;

use EasySwoole\I18N\AbstractDictionary;

// 定義一個詞典。
// const 值請務必于 const 變量名一致,這樣是避免用戶手敲詞條名稱出錯
class Dictionary extends AbstractDictionary
{
    const HELLO = 'HELLO';
    const GOOD_MORNING = 'GOOD_MORNING';
    const HOME = 'HOME';
}
<?php

namespace App\Languages;

// 定義一個中文語言包
class Chinese extends Dictionary
{
    const HELLO = '你好';
    const GOOD_MORNING = '早上好';
    const HOME = '主頁';
}
<?php

namespace App\Languages;

// 定義一個英文語言包
class English extends Dictionary
{
    const HELLO = 'hello';
    const GOOD_MORNING = 'Hi,good morning';
    const HOME = 'home page';
}

2. 注冊語言包和注冊默認語言

在項目根目錄的 EasySwooleEvent.phpinitialize 事件函數中進行注冊。

調用示例代碼如下:

<?php

namespace EasySwoole\EasySwoole;

use App\Languages\Chinese;
use App\Languages\English;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
use EasySwoole\I18N\I18N;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        date_default_timezone_set('Asia/Shanghai');

        // 注冊語言包
        I18N::getInstance()->addLanguage(new Chinese(), 'Cn');
        I18N::getInstance()->addLanguage(new English(), 'En');

        \EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_GLOBAL_ON_REQUEST, function (Request $request, Response $response) {
            // 獲取 header 中 language 參數
            $lang = $request->getHeader('language');
            if (empty($lang)) {
                $lang = 'Cn';
            }
            // 設置默認語言包
            I18N::getInstance()->setDefaultLanguage($lang);
            return true;
        });
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }
}

3. 在控制器中進行調用

<?php

namespace App\HttpController;

use App\Languages\Dictionary;
use EasySwoole\Http\AbstractInterface\Controller;
use EasySwoole\I18N\I18N;

class Index extends Controller
{
    function index()
    {
        // 使用
        $rets = [];
        $ret = I18N::getInstance()->translate(Dictionary::HELLO);
        $rets[] = $ret;
        var_dump($ret); // 你好

        $ret = I18N::getInstance()->translate(Dictionary::GOOD_MORNING);
        $rets[] = $ret;
        var_dump($ret); // GOOD_MORNING

        $ret = I18N::getInstance()->sprintf('%s ! 歡迎到 %s !!!!', Dictionary::HELLO, Dictionary::HOME);
        $rets[] = $ret;
        var_dump($ret); // "你好 ! 歡迎到 主頁 !!!!

        // setLanguage 僅僅會影響當前協程的語言
        $ret = I18N::getInstance()->setLanguage('En')->translate(Dictionary::GOOD_MORNING);
        $rets[] = $ret;
        var_dump($ret); // Hi,good morning

        $this->writeJson(200, $rets, 'success!');
    }
}

運行結果:訪問 http://localhost:9501/(示例訪問地址) 即可看到如下結果:{"code":200,"result":["你好","早上好","你好 ! 歡迎到 主頁 !!!!","Hi,good morning"],"msg":"success!"}

提示

  • 可以在 EasySwooleinitialize 初始化事件 中做好語言包的注冊和默認語言的注冊。
  • 可以在全局的 onRequest 事件,根據 header 或者是其他參數,調用 setLanguage 方法修改當次請求的語言
亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    欧美另类视频在线| 国产伦精品一区二区三毛| 丁香五月网久久综合| 欧美极品一区| 9色精品在线| 欧美全黄视频| 欧美专区一二三| 久久精品综合| 伊人久久成人| 亚洲国产精品久久久久婷婷老年 | 亚洲一区欧美激情| 欧美二区视频| 久久久久久婷| 久久久久高清| 欧美日韩电影一区二区| 国产尤物91| 国产一区二区黄色| 亚洲永久一区二区三区在线| 视频一区三区| 亚洲一区二区精品在线观看| 国产区二精品视| 亚洲中字黄色| 亚洲一区二区三区精品在线观看 | 亚洲美女啪啪| 精品日产一区2区三区黄免费| 久久精品日产第一区二区三区精品版| 午夜精品视频| 久久久水蜜桃| 三区精品视频观看| 国产乱人伦精品一区二区| 好吊妞www.84com只有这里才有精品 | 自拍偷拍99| 欧美一区综合| 成人午夜电影在线播放| 欧美精品成人| 国内一区在线| av成人天堂| 中文字幕久久一区| 精品久久蜜桃| 国产一区二区三区的电影| 久久看片网站| 亚洲午夜在线| 久久精品观看| 午夜日韩av| 免费成人深夜夜行视频| 久久成人资源| 国产伦精品一区二区三区四区视频 | 国精产品一区二区| 中文亚洲字幕| 亚洲夜间福利| 欧美国产先锋| 日韩影视精品| 精品日产一区2区三区黄免费| 国产精品亚洲综合久久| 欧美日韩综合| 亚洲巨乳在线观看| 欧美日韩综合另类| 国产一级二级三级精品| 亚洲免费综合| 国产日韩精品久久| 一区在线电影| 很黄很黄激情成人| 一区二区精品免费视频| 宅男噜噜噜66一区二区 | 狠狠入ady亚洲精品| 亚洲精品永久www嫩草| 久久久一本精品99久久精品| 国产精品免费一区二区三区四区 | 成人做爰66片免费看网站| 国产一区成人| 一区二区高清| 国产日韩欧美高清免费| 在线视频精品一区| 99综合精品| 免费久久99精品国产自在现线| 亚洲每日在线| 国产视频一区三区| 亚洲一区免费| julia一区二区中文久久94| 欧美下载看逼逼| 欧美亚洲精品日韩| 久久精品二区| 亚洲v国产v在线观看| 性欧美精品一区二区三区在线播放 | 任我爽在线视频精品一| 欧洲精品在线一区| 亚洲精品一区二区三区樱花| 亚洲精品中文综合第一页| 一区二区三区四区国产| 欧美久久九九| 一区二区动漫 | www.久久草| 久久国产精品精品国产色婷婷| 国产三区精品| 视频一区不卡| 国内视频精品| 手机成人在线| 欧美+日本+国产+在线a∨观看| 亚洲精品国产精品国自产| 欧美阿v一级看视频| 在线观看成人av电影| 亚洲欧美日韩另类精品一区二区三区| 老色鬼久久亚洲一区二区| 国产伦精品一区二区三区四区免费| 精品国产电影| 中文精品视频一区二区在线观看| 亚洲图片在线| 久热精品在线| 欧美日韩国产精品一卡| 在线免费观看成人网| 亚洲日本黄色| 欧美成人一区二免费视频软件| 好吊视频一区二区三区四区| 夜夜爽99久久国产综合精品女不卡| 久久亚洲色图| 三区精品视频观看| 亚洲另类视频| 好吊色欧美一区二区三区| 制服国产精品| 亚洲女优在线| 色就是色欧美| 亚洲欧美日韩精品久久久| 久久99国产精品| 伊人久久大香线蕉av超碰演员| www.av一区视频| 欧美有码视频| 国产精品.com| 欧美色一级片| 国产精品裸体一区二区三区| 欧美在线播放| 国产精品一级久久久| 午夜亚洲福利| 国产日韩欧美二区| 亚洲一级影院| 欧美视频观看一区| 西西裸体人体做爰大胆久久久| 日韩久久精品一区二区三区| 日韩高清三级| 久久国产精品亚洲va麻豆| 日韩片电影在线免费观看| 99国产一区| 亚洲一二区在线| 国产精品有限公司| 欧美视频一区| 久久国产精品-国产精品| 一级成人国产| 在线视频91| 国产亚洲二区| 在线亚洲一区| 欧美日韩亚洲一区二区三区四区| 91九色视频在线观看| 九九九九九精品| 销魂美女一区二区三区视频在线| 亚洲在线视频一区二区| 国产欧美亚洲日本| 一区二区三区福利| 欧美激情视频一区二区三区在线播放 | 性欧美.com| 精品视频一区二区三区四区| 亚洲二区三区四区| 视频一区二区三区在线观看| 国产精品久久国产精品| 国产精品久久国产愉拍 | 亚洲一卡二卡| 欧洲av一区| 国内外成人免费视频| 国产欧美亚洲一区| 精品91久久久久| 欧美成人亚洲| 在线观看欧美一区| 日韩在线电影一区| 欧美日韩在线观看一区| 国产欧美一区二区在线播放| 欧美中文日韩| 亚洲欧美日韩国产| 国产日韩欧美综合精品| 激情久久综合| 欧美日韩系列| 亚洲欧美综合国产精品一区| 色噜噜色狠狠狠狠狠综合色一 | 国产精品v欧美精品v日韩精品| 国产欧美综合一区二区三区| 亚洲精品在线二区| 亚洲精品字幕| 亚洲最新在线| 国产精品日韩二区| 国产美女一区| 久久狠狠婷婷| 成人黄视频免费| 国产精品日韩一区二区三区 | 激情成人综合| 国产亚洲精品久久飘花| 亚洲在线网站| 97人人香蕉| 精品麻豆av| 日韩精品久久一区二区三区| 视频一区视频二区视频| 综合久久国产| 亚洲高清免费| 亚洲专区免费|