Đây là một phiên bản cũ của tài liệu!
Mục lục
NukeViet 5 sử dụng phần quản lý ngôn ngữ mới, khác với NukeViet 3 và 4. Lớp \NukeViet\Core\Language
được sử dụng để quản lý ngôn ngữ.
Sử dụng ngôn ngữ trong module và template
Giao diện Smarty
Nếu trong function chưa gọi global cần gọi global $nv_Lang
Trong php cần assign:
$tpl->assign('LANG', $nv_Lang);
Trong file tpl:
{$LANG->get('admin_logout_title')}
Nếu trong keylang có truyền tham số (%s, %d …) thì dùng
{$LANG->get('admin_logout_title', $para1, $para2 ...)}
Phương thức get sẽ tìm keylang theo thứ tự lang global, lang module, lang block. Nếu keylang không có sẽ xuất luôn keylang ra.
Nếu tìm riêng ở lang nhỏ hơn dùng
{$LANG->getModule('admin_logout_title')} {$LANG->getGlobal('admin_logout_title')} {$LANG->getBlock('admin_logout_title')}
Giao diện sử dụng Xtemplate
Xuất lang ra trong php
$tpl->assign('GLANG', \NukeViet\Core\Language::$lang_global); $tpl->assign('MLANG', \NukeViet\Core\Language::$lang_module); $tpl->assign('BLANG', \NukeViet\Core\Language::$lang_block);
Trong file tpl dùng như cũ {MLANG.lang_key}
Không cần gọi global biến $nv_Lang nếu dùng Xtemplate
Hướng dẫn ngôn ngữ ở cấp độ hệ thống
Khởi tạo lang
$nv_Lang = new \NukeViet\Core\Language();
Đọc ngôn ngữ global
$nv_Lang->loadGlobal($admin = false);
Nếu $admin = false thì đọc ở global.php nếu $admin = true đọc admin_global.php
Đọc ngôn ngữ module
$nv_Lang->loadModule($module_file, $admin = false, $modadmin = false);
Nếu $modadmin = true đọc ở includes/language/admin_xxx.php
Nếu $modadmin = false đọc ở modules/xxx/language/yyy.php tùy theo $admin mà đọc admin_vi.php hay vi.php
Đọc ngôn ngữ giao diện
$nv_Lang->loadTheme($global_config['module_theme'], $admin = false);
Nếu $admin = false đọc themes/xxx/language/vi.php ngược lại đọc admin_vi.php
Đọc ngôn ngữ install
$nv_Lang->loadInstall($lang);
Đọc file ngôn ngữ bất kỳ
$nv_Lang->loadBlock($filepath);
Ngôn ngữ tạm
Ví dụ khi giao diện quét các file admin.menu.php để lấy ra menu của admin thì cần phải load các ngôn ngữ của module vào. Khi đó dùng:
$nv_LangTmp = new \NukeViet\Core\Language(); $nv_LangTmp->loadModule($mod, $admin, $modadmin, $temp);
Giá trị $temp
đưa vào là true, khi đọc thì hệ thống không làm ảnh hưởng đến các giá trị:
\NukeViet\Core\Language::$lang_global; \NukeViet\Core\Language::$lang_module; \NukeViet\Core\Language::$lang_block;
Sau khi dùng xong unset($nv_LangTmp);
để giải phóng bộ nhớ