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

I18N 組件

I18N 國際多語言,允許讓您的項(xiàng)目支持多種語言

組件要求

  • easyswoole/component: ^2.2

安裝方法

composer require easyswoole/i18n

倉庫地址

easyswoole/i18n

基本使用

在 swoole 中單獨(dú)使用

<?php

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

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

// 定義一個(gè)詞典。const 值請(qǐng)務(wù)必于 const 變量名一致,這樣是避免用戶手敲詞條名稱出錯(cuò)
class Dictionary extends AbstractDictionary
{
    const HELLO = 'HELLO';
    const GOOD_MORNING = 'GOOD_MORNING';
    const HOME = 'HOME';

}

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

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

// 注冊(cè)語言包
I18N::getInstance()->addLanguage(new Chinese(), 'Cn');
I18N::getInstance()->addLanguage(new English(), 'En');
// 設(shè)置默認(rèn)語言包
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 僅僅會(huì)影響當(dāng)前協(xié)程的語言
    $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/ (示例訪問請(qǐng)求地址) 即可看到如下結(jié)果:["你好","GOOD_MORNING","你好 ! 歡迎到 主頁 !!!!","Hi,good morning"]

在 EasySwoole 中使用

1. 定義語言包

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

內(nèi)容如下:

<?php

namespace App\Languages;

use EasySwoole\I18N\AbstractDictionary;

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

namespace App\Languages;

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

namespace App\Languages;

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

2. 注冊(cè)語言包和注冊(cè)默認(rèn)語言

在項(xiàng)目根目錄的 EasySwooleEvent.phpinitialize 事件函數(shù)中進(jìn)行注冊(cè)。

調(diào)用示例代碼如下:

<?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');

        // 注冊(cè)語言包
        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 參數(shù)
            $lang = $request->getHeader('language');
            if (empty($lang)) {
                $lang = 'Cn';
            }
            // 設(shè)置默認(rèn)語言包
            I18N::getInstance()->setDefaultLanguage($lang);
            return true;
        });
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }
}

3. 在控制器中進(jìn)行調(diào)用

<?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 僅僅會(huì)影響當(dāng)前協(xié)程的語言
        $ret = I18N::getInstance()->setLanguage('En')->translate(Dictionary::GOOD_MORNING);
        $rets[] = $ret;
        var_dump($ret); // Hi,good morning

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

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

提示

  • 可以在 EasySwooleinitialize 初始化事件 中做好語言包的注冊(cè)和默認(rèn)語言的注冊(cè)。
  • 可以在全局的 onRequest 事件,根據(jù) header 或者是其他參數(shù),調(diào)用 setLanguage 方法修改當(dāng)次請(qǐng)求的語言
亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    狠狠久久综合婷婷不卡| 91视频在线免费观看| 欧美日韩精品久久| 久久一区国产| 亚洲乱码视频| 欧美日韩国产高清| 午夜精品视频在线观看一区二区| 欧美一级爽aaaaa大片| 久久精品人人| 一区二区三区四区五区精品视频| 欧美精品久久久| 国产亚洲欧美另类一区二区三区| 99精品国产福利在线观看免费| 污视频在线免费观看一区二区三区| 91九色对白| 久久性天堂网| 久久久精品五月天| 91久久爱成人| 成人av片网址| 官网99热精品| 国产三级精品在线不卡| 高清视频在线观看一区| 久久综合九色| 国产久一道中文一区| 国产一级特黄a大片99| 国产欧美亚洲日本| 久久一区二区三区欧美亚洲| 久久99精品久久久久久久青青日本| 91麻豆精品秘密入口| 99国产高清| 精品国产乱码久久久久| 久久综合久久综合这里只有精品| av日韩中文字幕| 精品国产免费人成电影在线观...| 北条麻妃高清一区| 精品国产一区二区三区四区vr| 成人三级在线| 玖玖玖精品中文字幕| 特级西西444www大精品视频| 欧美~级网站不卡| 亚洲小说欧美另类婷婷| 国产精品日本欧美一区二区三区| 国产一区二区三区久久| 91免费看网站| 久久久综合香蕉尹人综合网| 欧美一级日本a级v片| 欧美另类视频在线| 国产亚洲一区在线| 国产精品国产三级欧美二区| 麻豆91av| 亚洲精品1234| 国产精品对白刺激久久久| 日本午夜精品一区二区| 黄色精品免费| 99久久久久国产精品免费| 欧美日韩精品一区| 狠狠综合久久av一区二区老牛| 在线亚洲免费| 久久综合毛片| 亚洲第一在线| 国产亚洲精品自在久久| 欧美99久久| 99精彩视频| 伊人久久99| 91福利视频导航| 在线观看日韩片| 91精品国产99久久久久久红楼 | 在线电影看在线一区二区三区| 亚洲精品日韩在线观看| 激情婷婷久久| 久久精品午夜一区二区福利| 午夜国产精品视频免费体验区| 伊人精品视频| 日本在线成人一区二区| 99热这里只有成人精品国产| 免费看污久久久| 国产伦精品一区二区三区视频黑人| 成人三级视频在线观看一区二区| 色999日韩自偷自拍美女| 亚洲欧美日韩精品在线| 亚洲精品中字| 国产一区二区三区高清| 亚洲免费久久| 亚洲在线色站| 黑人另类av| 久久国产福利| 亚洲丰满在线| 亚洲一区美女| 国产精品亚洲综合| 欧美一区二区三区久久精品茉莉花| 免费在线日韩av| 亚洲天堂久久| 日本一区免费看| 国产91一区二区三区| 亚洲九九精品| 欧美网站在线| 亚洲精品二区| 你懂的视频在线一区二区| 久久久久久久久久码影片| 欧美婷婷在线| 欧美淫片网站| 性欧美精品一区二区三区在线播放| 久久久蜜桃一区二区人| 国产三区精品| 日韩亚洲欧美精品| 亚洲成人直播| 亚洲电影av| 亚洲成人自拍视频| 黄色日韩在线| 狠狠色噜噜狠狠狠狠色吗综合| 日韩久久在线| 青青草原成人| 精品欧美国产| 精品一区二区三区日本| 国产一区二区不卡视频| 国产精品美女诱惑| 国产伦精品一区二区三区四区视频| 亚洲日本黄色| 一本色道久久综合| 国产私拍一区| 欧美亚洲一区| 久久久久久久久久久一区| 97人摸人人澡人人人超一碰| 免费日韩一区二区| 老鸭窝亚洲一区二区三区| 亚洲自啪免费| 99久久精品久久久久久ai换脸| 久久精品女人天堂| 国产精品一区二区三区免费观看| 51国产成人精品午夜福中文下载 | 国产亚洲欧美另类一区二区三区| 欧美日韩亚洲一区三区| 欧美日韩三区| 在线视频欧美一区| 老妇喷水一区二区三区| 国产精品一区二区三区在线观| 麻豆久久精品| 精品福利影视| 中文字幕中文字幕99| 一区在线观看| 麻豆成人在线播放| 精品国产乱码久久久久久郑州公司| 国产精品免费一区二区三区| 欧美国产一二三区| 欧美日韩日本网| 西西裸体人体做爰大胆久久久| 六月婷婷一区| 欧美一区二区三区四区在线观看地址 | 亚洲国产免费看| 香蕉精品999视频一区二区 | 亚洲一区成人| 国内不卡一区二区三区| 亚洲高清资源综合久久精品| 狠久久av成人天堂| 99久久99久久| 一区二区三区四区视频在线| 亚洲精品日韩在线观看| 国产精品一区二区三区四区五区| 久久av一区二区三区亚洲| 中文字幕欧美日韩一区二区三区| 极品中文字幕一区| 国产精品一级久久久| 色综合电影网| 欧美亚洲三级| 在线国产伦理一区| 免费日韩av片| 一区二区三区在线观看www| 美女日韩在线中文字幕| 日韩欧美亚洲区| 亚洲欧美日韩综合国产aⅴ| 日本一区二区三区www| 国产精品一区二区三区四区五区 | 91精品国产一区二区三区动漫| 国内不卡一区二区三区| 亚洲国产精品第一区二区| 国产亚洲精品自在久久| 影音先锋国产精品| 欧美日韩电影一区二区三区| 亚洲免费激情| 中文字幕一区二区三区四区五区 | 欧美黄色一区| 国外成人在线视频网站| 国产日韩欧美一区| 色视频一区二区三区| 久久午夜av| 亚洲看片免费| 欧美在线三区| 久久久久久久久久久久久久一区| 激情亚洲成人| 一区二区三区国产福利| 国语精品免费视频| 噜噜噜91成人网| 亚洲国产激情| 欧美日韩视频在线一区二区观看视频 | 日本日本精品二区免费| 91成人免费视频| 在线综合欧美| 伊人久久大香线蕉综合热线| 亚洲黄色成人久久久| http;//www.99re视频|