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.keyhoặc nạp bằngContext::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.phpthì 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.