언어 파일과 다국어
모듈·스킨·레이아웃의 문구를 다국어로 제공하는 방법입니다.
언어 파일: lang/ko.php
모듈의 lang/ 폴더에 언어 코드별 PHP 파일을 둡니다 (ko.php, en.php, ja.php ...).
<?php
$lang->mymodule = '내 모듈';
$lang->msg_title_required = '제목을 입력해 주세요.';
// 배열 형식도 가능
$lang->status_names = [
'open' => '진행중',
'closed' => '마감',
];형식 주의: $lang->키 = '값'; 의 단순 나열이어야 합니다. 함수 정의나 복잡한 로직을 넣지 마세요. 코어가 이 파일을 파싱·캐시합니다.
코드에서 쓰기
// 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')- 현재 모듈의 언어 파일은 자동 로드됩니다. 다른 모듈 것을 쓰려면
모듈명.키로 지정하거나Context::loadLang('modules/모듈명/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($값) 을 거치면 현재 언어로 치환됩니다.
<h2>{{ Context::replaceUserLang($module_info->board_title) }}</h2>권장 사항
- 템플릿에 문구를 하드코딩하지 말고 언어 키를 쓰세요. 한국어 전용으로 시작해도
ko.php하나만 두면 나중에 언어 추가가 파일 추가로 끝납니다. - 언어 파일에 없는 키를 참조하면 키 이름이 그대로 노출됩니다. 템플릿에서는
{{ $lang->키 ?? '기본 문구' }}로 방어할 수 있습니다. - Zittme 코어는 12개 언어를 지원합니다. 배포용 자료라면 최소 ko·en 두 벌을 권장합니다.