Archivos de idioma y localización
Cómo ofrecer en varios idiomas los textos de módulos, skins y layouts.
Archivos de idioma: lang/ko.php
Coloca un archivo PHP por código de idioma en la carpeta lang/ del módulo (ko.php, en.php, ja.php ...).
<?php
$lang->mymodule = '내 모듈';
$lang->msg_title_required = '제목을 입력해 주세요.';
// 배열 형식도 가능
$lang->status_names = [
'open' => '진행중',
'closed' => '마감',
];Cuidado con el formato: debe ser una simple lista de $lang->key = 'value';. No pongas definiciones de funciones ni lógica compleja. El núcleo analiza y guarda en caché este archivo.
Usarlos en el código
// 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')- Los archivos de idioma del módulo actual se cargan automáticamente. Para usar los de otro módulo, indícalo como
modulename.keyo cárgalos conContext::loadLang('modules/modulename/lang'). - Los skins y layouts también pueden tener su propia carpeta
lang/, que se carga en la plantilla con@load('../lang/').
Metadatos XML multilingües
El nombre y la descripción en info.xml y skin.xml se escriben por idioma con el atributo 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>Se muestra el que coincide con el idioma del usuario y, si no existe, se usa el del idioma predeterminado.
Entradas del usuario en varios idiomas
Los textos que captura el administrador (como el nombre de un tablero) pueden recibir valores por idioma con el widget de entrada multilingüe. Al mostrarlos, si pasan por Context::replaceUserLang($value) se reemplazan por el idioma actual.
<h2>{{ Context::replaceUserLang($module_info->board_title) }}</h2>Recomendaciones
- No escribas textos fijos en las plantillas; usa claves de idioma. Aunque empieces solo en coreano con un único
ko.php, más adelante agregar un idioma será solo agregar un archivo. - Si haces referencia a una clave que no está en el archivo de idioma, se muestra tal cual el nombre de la clave. En las plantillas puedes protegerte con
{{ $lang->key ?? 'default text' }}. - El núcleo de Zittme admite 12 idiomas. Para recursos que vas a distribuir, recomendamos al menos dos versiones: ko y en.