# 5.10 多語言
MSF通過插件支持多語言(i18n),國際化(I18N)是指在設計軟件時,
使它可以無需做大的改變就能夠適應不同的語言和地區的需要。對于 Web 應用程序,
這有著特別重要的意義,因為潛在的用戶可能會在全球范圍內。
MSF 提供的國際化功能支持全方位信息翻譯, 視圖翻譯,日期和數字格式化。
## 區域和語言
區域設置是一組參數以定義用戶希望能在他們的用戶界面所看到用戶的語言,國家和任何特殊的偏好。
它通常是由語言 ID 和區域 ID 組成。 例如,ID “en-US” 代表英語和美國的語言環境。
為了保持一致性, 在 MSF 應用程序中使用的所有區域 ID 應該規范化為 `ll-CC`。
例如 zh_CN(簡體中文)、en_US(美國英語)、zh_TW(繁體中文) ...
## 項目支持配置
```php
$config['params']['i18n'] = [
'demo' => [ // 消息類別名稱
'sourceLanguage' => 'en_us', //源語言
'basePath' => ROOT_PATH . '/languages', //翻譯語言配置文件路徑
'fileMap' => [
'common' => 'common.php', //翻譯配置文件
'error' => 'error.php', //隨意自定義即可
...
]
],
...
];
```
## 翻譯語言文件示例
```php
// languages/zh_CN/common.php
return [
'sayHi' => '你好,{name}' // {name}為變量占位符
];
// languages/zh_CN/error.php
return [
'200' => '正常'
];
// languages/en_US/common.php
return [
'sayHi' => 'Hello,{name}'
];
// languages/en_US/error.php
return [
'200' => 'Ok'
];
```
## 在業務中使用
首先需要在業務中初始化I18N:
```php
I18N::getInstance(getInstance()->config->get('params.i18n', []));
// params.i18n 就是上面的配置段,可以自定義,但是要和上面的配置名對應好。
// 這行最好在自己的AppServer里初始化或者在業務控制器基類里的構造方法初始化。
```
```php
public function actionI18n()
{
// 這行最好在自己的AppServer里初始化或者在業務控制器基類里的構造方法初始化,這里只作為演示方便
I18N::getInstance(getInstance()->config->get('params.i18n', []));
$sayHi = [
'zh_cn' => I18N::t('demo.common', 'sayHi', ['name' => '品果微服務框架'], 'zh_CN'),
'en_us' => I18N::t('demo.common', 'sayHi', ['name' => 'msf'], 'en_US'),
];
$this->outputJson(['data' => $sayHi, 'status' => 200, 'msg' => I18N::t('demo.error', 200, [], 'zh_CN')]);
}
```
- 0 文檔說明
- 1 為什么研發新框架
- 1.1 傳統php-fpm工作模式的問題
- 1.2 壓測數據對比
- 1.3 小結
- 2 微服務框架研發概覽
- 2.1 通信框架技術選型
- 2.2 swoole
- 2.3 協程原理
- 2.4 異步、并發
- 2.5 小結
- 3 框架運行環境
- 3.1 環境變量
- 3.2 運行代碼
- 3.3 docker
- 3.4 小結
- 4 框架結構
- 4.1 結構概述
- 4.2 控制器
- 4.3 模型
- 4.4 視圖
- 4.5 同步任務
- 4.6 配置
- 4.7 路由
- 4.8 小結
- 5 框架組件
- 5.1 協程
- 5.2 類的加載
- 5.3 異步Http Client
- 5.4 請求上下文
- 5.5 連接池
- 5.6 對象池
- 5.7 RPC
- 5.8 公共庫
- 5.9 RESTful
- 5.10 多語言
- 5.11 雜項
- 5.12 小結
- 6 常見問題
- 7 附錄