Ir al contenido
Docs

Guía para desarrolladores

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.key o cárgalos con Context::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.