語系 - 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.phpzh-TW.php 中寫:

SingleMVC::$lang['zh-TW'] = [
    'OK' => '確認',
    'Cancel' => '取消',
    'Menu' => [
        'sign-in' => '登入',
        'sign-out' => '登出',
    ],
];

這樣就可以建立語系的資料。


載入與使用語系

在下列三個情況會載入語系:

路由讀入會最優先執行,若沒有則視 lang_load 或 lang 何者較早執行。語系讀入後,即無法再次載入其他語系。語系載入後,將會定義 LANG 為載入的名稱。


使用時,呼叫 lang 取得指定索引的值,以上方範例為例:

// 取得單一文字
$okText = lang('OK');

// 取得陣列
$menuText = lang('Menu');

// 取得指定索引序列的文字
$signInText = lang(['Menu', 'sign-in']);

若指定的索引不存在,則會傳回 {MISSING} 文字。


語系最常在視圖中被使用,另外搭配 VROOTLANG 顯示特定語系的資源:

<html>
<head>
    <title><?=lang('title')?></title>
</head>
<body>
<img alt="" src="<?=VROOT?>/asstes/images/<?=LANG?>/logo.png" />
</body>
</html>


若你是從控制器過來,可繼續往下看 REST 處理 POST 等方法的請求;若你是從視圖過來,那可以繼續看模組

⚠️ **GitHub.com Fallback** ⚠️