語系 - kouji6309/SingleMVC GitHub Wiki
SingleMVC 提供了多語系功能,可用路由以 http://example.com/{lang}/{class}/{method}
方式,或是用 lang_load 函數讀入。lang
可用任意文字,但建議使用 IETF語言標籤 作為命名方式。
建立資料分成兩種結構,一個是單一檔案,另一個是分離檔案,兩者差異是分離檔案須將每個語系依名稱命名放在 SOURCE_DIR/lang
下面,例如美式英文與繁體中文等等:
source
└ lang
├ en-US.php
├ zh-TW.php
└ ...
而建立語系的方式兩者相同,以繁體中文為例,直接在 index.php
或 zh-TW.php
中寫:
SingleMVC::$lang['zh-TW'] = [
'OK' => '確認',
'Cancel' => '取消',
'Menu' => [
'sign-in' => '登入',
'sign-out' => '登出',
],
];
這樣就可以建立語系的資料。
在下列三個情況會載入語系:
- 路由中有語系名稱
- 以 lang_load 讀入指定語系
- 初次使用 lang 自動讀入 SingleMVC::$config->lang 的設定
路由讀入會最優先執行,若沒有則視 lang_load 或 lang 何者較早執行。語系讀入後,即無法再次載入其他語系。語系載入後,將會定義 LANG 為載入的名稱。
使用時,呼叫 lang 取得指定索引的值,以上方範例為例:
// 取得單一文字
$okText = lang('OK');
// 取得陣列
$menuText = lang('Menu');
// 取得指定索引序列的文字
$signInText = lang(['Menu', 'sign-in']);
若指定的索引不存在,則會傳回 {MISSING}
文字。
語系最常在視圖中被使用,另外搭配 VROOT 與 LANG 顯示特定語系的資源:
<html>
<head>
<title><?=lang('title')?></title>
</head>
<body>
<img alt="" src="<?=VROOT?>/asstes/images/<?=LANG?>/logo.png" />
</body>
</html>