亚洲精品成人_精品成人一区_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>
    91高跟黑色丝袜呻吟在线观看| 乱一区二区三区在线播放| 亚洲欧美久久久久一区二区三区| 久久这里精品国产99丫e6| 农村寡妇一区二区三区| 亚洲五月六月| 亚洲免费高清| 久久久久久黄| 日本高清不卡一区二区三| 欧美激情亚洲| 成人高清在线观看| 亚洲精品高清视频| 国产免费成人| 麻豆91av| 伊人蜜桃色噜噜激情综合| 久久久成人网| 亚洲一卡二卡三卡| 久久精品官网| 在线观看成人一级片| 国产日韩欧美二区| 日韩一区不卡| 性色一区二区三区| 亚洲午夜精品久久久中文影院av | 亚洲一区高清| 国产美女诱惑一区二区| 欧美亚洲另类在线一区二区三区| 国产精品99一区二区| 粉嫩av免费一区二区三区| 欧美一区二区三区四区夜夜大片| 美女黄色成人网| 亚洲一区二区三区午夜| 99在线看视频| 黄色日韩在线| 天堂av一区二区| 懂色一区二区三区av片| 在线欧美日韩| 亚洲啪啪av| 久久精品日韩精品| 性久久久久久| 一本色道久久| 欧美一区二区三区在线播放| 国产98在线|日韩| 99re6热在线精品视频播放速度 | 51国偷自产一区二区三区的来源| 午夜精品福利一区二区| 老司机精品久久| 在线观看亚洲视频啊啊啊啊| 欧美性xxxx69| 久久精品国产理论片免费| **亚洲第一综合导航网站 | 韩国一区二区三区美女美女秀| 久久久久久九九| 国产精品9999久久久久仙踪林| 亚洲全部视频| 伊人激情综合| 国内一区二区在线视频观看| 图片区小说区区亚洲五月| 好吊色欧美一区二区三区视频| 免费在线观看成人av| 亚洲精品乱码| 激情婷婷欧美| 欧美激情一区二区三区在线视频| 亚洲成人一区二区三区| 蜜桃久久精品乱码一区二区| 国产精品久久亚洲| 老司机精品久久| 可以看av的网站久久看| 国产精品视频| 国产欧美综合一区二区三区| 一区二区视频欧美| 亚洲成色www久久网站| 欧美日产一区二区三区在线观看| 亚洲欧洲一二三| 欧美精品啪啪| 伊人影院久久| 麻豆精品传媒视频| 99中文字幕| 久久综合久久久| 日本一区二区不卡高清更新| 日韩尤物视频| 欧美日韩国产综合视频在线| 伊人色综合影院| 黄色在线一区| 影音先锋日韩资源| 亚洲欧美清纯在线制服| 久久精品日韩欧美| 国产伦精品一区二区三区四区免费| 国产精品v欧美精品v日韩| 韩国一区二区三区美女美女秀 | 国产99在线播放| 免费中文日韩| 亚洲一区3d动漫同人无遮挡 | 亚洲午夜精品久久久久久浪潮 | 99在线观看视频| 欧美精品七区| 亚洲一区综合| 葵司免费一区二区三区四区五区| 久久激情婷婷| 欧美国产二区| 欧美欧美全黄| 国产亚洲网站| 久久99久久99精品蜜柚传媒| 色姑娘综合av| 最新国产拍偷乱拍精品 | 日韩免费电影一区二区| 女主播福利一区| 一本不卡影院| 久久综合精品一区| 亚洲国产精品一区| 国产一区二区免费在线观看| 色噜噜狠狠一区二区三区| 国产精品一区二区三区不卡| 精品视频在线观看| 春色成人在线视频| 日韩一区不卡| 一本色道久久精品| 精品日本一区二区| 欧美性天天影院| 国产精品久久久对白| 色涩成人影视在线播放| 国产日韩亚洲| 香蕉久久夜色| 666精品在线| 欧美jjzz| 国模精品一区二区三区| 欧美先锋影音| 欧美日韩一区二区三区在线视频 | 美日韩免费视频| 亚洲国产欧美不卡在线观看| 日韩黄色影视| 久久一区免费| 午夜精彩国产免费不卡不顿大片| 99免费在线观看视频| 欧美一区二区三区在线免费观看| 成人永久免费| 亚洲另类自拍| 一道精品一区二区三区| 国产99视频精品免费视频36| 激情综合久久| 亚洲一区二区三区在线观看视频| 国产成人精品日本亚洲11 | 免费av在线一区二区| 国产欧美日韩一区二区三区| 午夜午夜精品一区二区三区文| 久热精品在线| 午夜影院日韩| 亚洲精一区二区三区| 综合久久国产| 亚洲免费在线精品一区| 久久99久久99精品蜜柚传媒| 1卡2卡3卡精品视频| 亚洲精品国产精品国自产观看| 亚洲一区二区精品在线| 欧美日韩一区在线播放| 国产亚洲欧美一区二区| 久久久久综合| 亚洲一区二区精品在线观看| 亚洲一级特黄| 亚洲国产精品久久久久久女王| 在线国产伦理一区| 亚洲欧洲一区二区在线观看| 日本a级片久久久| 欧美精品一区二区视频| 久久国产精品高清| 精品欧美一区二区在线观看视频| 国产激情一区二区三区在线观看| 久久亚洲高清| 豆国产97在线| 久久精品美女| 日产精品一线二线三线芒果| 久久综合狠狠综合久久综青草| 国产一区二区免费电影| 久久国产欧美精品| 欧美性色黄大片人与善| 欧美日韩精品久久| 亚洲精品无人区| 欧美一区综合| 欧美日韩系列| aa国产精品| 久久久久久穴| 国产伦精品一区二区三区| 国产精品乱子乱xxxx| 精品在线观看一区二区| 日韩欧美亚洲在线| 欧美 日韩 国产 一区| 欧美午夜在线| 国产一区二区三区免费不卡| 亚洲欧美日本日韩| 国产精品久久亚洲| 欧美一级二级三级| 亚洲欧美伊人| 国产日韩欧美一区二区三区在线观看 | 裸体丰满少妇做受久久99精品| 久久久久久黄| 欧美高清视频一区二区三区在线观看| 日韩国产精品一区二区三区| 欧美国产综合视频| 蜜桃视频一区| 欧美重口乱码一区二区| 欧美日本韩国一区二区三区|