語言檔與多語系
說明以多語系提供模組・面板・版面文字的方法。
語言檔:lang/ko.php
在模組的 lang/ 資料夾中,依語言代碼放置 PHP 檔案(ko.php、en.php、ja.php ...)。
<?php
$lang->mymodule = '내 모듈';
$lang->msg_title_required = '제목을 입력해 주세요.';
// 배열 형식도 가능
$lang->status_names = [
'open' => '진행중',
'closed' => '마감',
];格式注意:必須是 $lang->key = 'value'; 的單純排列。請勿放入函式定義或複雜邏輯。核心會解析並快取這個檔案。
在程式碼中使用
// PHP
$message = lang('mymodule.msg_title_required'); // 모듈 지정
return new \BaseObject(-1, 'mymodule.msg_title_required'); // 오류 메시지로
// 템플릿 v2
{{ $lang->msg_title_required }}
@lang('mymodule.msg_title_required')- 目前模組的語言檔會自動載入。若要使用其他模組的,請以
module.key指定,或以Context::loadLang('modules/module/lang')載入。 - 面板・版面也可以有自己的
lang/資料夾,在範本中以@load('../lang/')載入。
XML 中繼資料的多語系
info.xml・skin.xml 的名稱・說明以 xml:lang 屬性依語言撰寫。
<title xml:lang="ko">내 모듈</title>
<title xml:lang="en">My Module</title>
<description xml:lang="ko">설명</description>
<description xml:lang="en">Description</description>會顯示符合使用者語言設定的內容,若沒有則以預設語言代替。
使用者輸入的多語系
管理員輸入的文字(討論區名稱等)可透過多語系輸入小工具接收各語言的值。這類值在輸出時經過 Context::replaceUserLang($value),就會替換為目前的語言。
<h2>{{ Context::replaceUserLang($module_info->board_title) }}</h2>建議事項
- 請不要在範本中寫死文字,改用語言鍵。即使一開始只有韓文,只要放一個
ko.php,日後新增語言只需新增檔案即可。 - 若參照語言檔中不存在的鍵,鍵名會直接顯示出來。在範本中可以用
{{ $lang->key ?? 'default text' }}防範。 - Zittme 核心支援 12 種語言。若是要發布的資源,建議至少準備 ko・en 兩套。