跳到主要內容
文件

開發者指南

語言檔與多語系

說明以多語系提供模組・面板・版面文字的方法。

語言檔: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 兩套。