Chuyển đến nội dung
Tài liệu

Hướng dẫn cho nhà phát triển

Tệp ngôn ngữ và đa ngôn ngữ

Cách cung cấp văn bản của mô-đun, skin, layout bằng nhiều ngôn ngữ.

Tệp ngôn ngữ: lang/ko.php

Đặt các tệp PHP theo mã ngôn ngữ trong thư mục lang/ của mô-đun (ko.php, en.php, ja.php ...).

<?php

$lang->mymodule = '내 모듈';
$lang->msg_title_required = '제목을 입력해 주세요.';

// 배열 형식도 가능
$lang->status_names = [
	'open' => '진행중',
	'closed' => '마감',
];

Lưu ý định dạng: tệp phải chỉ là danh sách đơn giản dạng $lang->key = 'value';. Đừng đưa định nghĩa hàm hay logic phức tạp vào. Lõi sẽ phân tích và lưu đệm tệp này.

Dùng trong mã

// 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')
  • Tệp ngôn ngữ của mô-đun hiện tại được tự động nạp. Để dùng của mô-đun khác, chỉ định bằng module_name.key hoặc nạp bằng Context::loadLang('modules/module_name/lang').
  • Skin và layout cũng có thể có thư mục lang/ riêng, và nạp trong template bằng @load('../lang/').

Đa ngôn ngữ trong siêu dữ liệu XML

Tên và mô tả trong info.xml, skin.xml được ghi theo từng ngôn ngữ bằng thuộc tính 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>

Giá trị phù hợp với cài đặt ngôn ngữ của người dùng sẽ được hiển thị, nếu không có thì thay bằng ngôn ngữ mặc định.

Đa ngôn ngữ cho dữ liệu người dùng nhập

Văn bản do quản trị viên nhập (tên bảng tin, v.v.) có thể nhận giá trị theo từng ngôn ngữ qua widget nhập đa ngôn ngữ. Khi xuất, các giá trị này đi qua Context::replaceUserLang($value) sẽ được thay bằng ngôn ngữ hiện tại.

<h2>{{ Context::replaceUserLang($module_info->board_title) }}</h2>

Khuyến nghị

  • Đừng viết cứng văn bản trong template mà hãy dùng khóa ngôn ngữ. Dù bắt đầu chỉ với tiếng Hàn, chỉ cần có một tệp ko.php thì sau này thêm ngôn ngữ chỉ là thêm tệp.
  • Nếu tham chiếu khóa không có trong tệp ngôn ngữ, tên khóa sẽ bị hiển thị nguyên văn. Trong template, bạn có thể phòng tránh bằng {{ $lang->key ?? 'default text' }}.
  • Lõi Zittme hỗ trợ 12 ngôn ngữ. Với tài nguyên để phân phối, khuyến nghị tối thiểu hai bộ ko và en.