개발자 가이드

언어 파일과 다국어

모듈·스킨·레이아웃의 문구를 다국어로 제공하는 방법입니다.

언어 파일: 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 두 벌을 권장합니다.