i18n

I18N国际多语言,允许让您的项目支持多种语言

组件要求

  • easyswoole/component: ^2.2

安装方法

composer require easyswoole/i18n

仓库地址

easyswoole/i18n

基本使用

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');
//使用
$ret = I18N::getInstance()->translate(Dictionary::HELLO);
var_dump($ret);//你好
$ret = I18N::getInstance()->translate(Dictionary::GOOD_MORNING);
var_dump($ret);//GOOD_MORNING
$ret = I18N::getInstance()->sprintf('%s ! 欢迎到 %s !!!!',Dictionary::HELLO,Dictionary::HOME);
var_dump($ret);//"你好 ! 欢迎到 主页 !!!!
//setLanguage 仅仅会影响当前协程的语言
$ret = I18N::getInstance()->setLanguage('En')->translate(Dictionary::GOOD_MORNING);
var_dump($ret);//Hi,good morning

提示

  • 可以在Easyswoole的初始化事件中做好语言包的注册和默认语言的注册。
  • 可以在全局的onRequest,根据header或者是其他参数,调用setLanguage方法修改当次请求的语言