i18n
I18N国际多语言,允许让您的项目支持多种语言
组件要求
- easyswoole/component: ^2.2
安装方法
composer require 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方法修改当次请求的语言