中文在线一区二区_欧美在线综合_久久久久久综合_欧美一区二区三区视频_国产免费看_国产福利精品一区

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)求的語言
主站蜘蛛池模板: 中文字幕在线永久在线视频 | 五月激情综合网 | 欧美黄色一级片免费看 | 91天堂网 | 日韩免费在线观看视频 | 国产h片在线观看 | 欧美高清成人 | 亚洲视频1 | 久久成人高清 | 成人av网站在线观看 | 成人aⅴ视频 | 黄毛片免费看 | 成人一区二区三区久久精品嫩草 | 久久精品国产清自在天天线 | 久综合网| 日韩欧美精品在线 | 亚洲一区二区三区四区在线 | 午夜精品美女久久久久av福利 | av在线入口 | 成人在线免费看视频 | 亚洲精品视频免费 | 免费观看黄色12片一级视频 | 久久精品99视频 | 午夜精品一区二区三区在线视频 | 色版视频在线观看 | 亚洲精品久久久久久久久久久久久 | 在线观看精品91福利 | 中文字幕一区二区三区四区 | 亚洲一区二区三区在线免费观看 | 久久久久国产精品午夜一区 | 国产精品自拍系列 | 日韩精品视频一区二区三区 | 欧美日韩精品一区二区在线观看 | 爱色影wwwcom| 曰韩av| 亚洲综合自拍 | 国产一区二区视频在线 | 久久久久99精品国产片 | 成人欧美一区二区三区在线播放 | 狠狠干五月天 | 欧美日韩亚洲国产精品 |