Công cụ thành viên

Công cụ trang web


programming5:thematic:language

Khác biệt

Đây là những khác biệt giữa hai phiên bản của trang.

Liên kết đến bản xem so sánh này

Phiên bản sau
Phiên bản trước
programming5:thematic:language [2018/05/14 11:44] – được tạo ra hoaquynhtim99programming5:thematic:language [2018/05/14 13:55] (hiện tại) – [Giao diện Smarty] hoaquynhtim99
Dòng 2: Dòng 2:
  
 ====== Sử dụng ngôn ngữ trong module và template ====== ====== 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:
 +
 +<code php>
 +$tpl->assign('LANG', $nv_Lang);
 +</code>
 +
 +Trong file tpl:
 +
 +<code smarty>
 +{$LANG->get('admin_logout_title')}
 +</code>
 +
 +Nếu trong keylang có truyền tham số (%s, %d ...) thì dùng
 +
 +<code smarty>
 +{$LANG->get('admin_logout_title', $para1, $para2 ...)}
 +</code>
 +
 +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
 +
 +<code smarty>
 +{$LANG->getModule('admin_logout_title')}
 +{$LANG->getGlobal('admin_logout_title')}
 +{$LANG->getBlock('admin_logout_title')}
 +</code>
 +
 +===== Giao diện sử dụng Xtemplate =====
 +
 +Xuất lang ra trong php
 +
 +
 +<code 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);
 +</code>
 +
 +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 ====== ====== Hướng dẫn ngôn ngữ ở cấp độ hệ thống ======
 +
 +**Khởi tạo lang**
 +
 +<code php>
 +$nv_Lang = new \NukeViet\Core\Language();
 +</code>
 +
 +**Đọc ngôn ngữ global**
 +
 +<code php>
 +$nv_Lang->loadGlobal($admin = false);
 +</code>
 +
 +Nếu $admin = false thì đọc ở global.php nếu $admin = true đọc admin_global.php
 +
 +**Đọc ngôn ngữ module**
 +
 +<code php>
 +$nv_Lang->loadModule($module_file, $admin = false, $modadmin = false);
 +</code>
 +
 +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**
 +
 +<code php>
 +$nv_Lang->loadTheme($global_config['module_theme'], $admin = false);
 +</code>
 +
 +Nếu $admin = false đọc themes/xxx/language/vi.php ngược lại đọc admin_vi.php
 +
 +**Đọc ngôn ngữ install**
 +
 +<code php>
 +$nv_Lang->loadInstall($lang);
 +</code>
 +
 +**Đọc file ngôn ngữ bất kỳ**
 +
 +<code php>
 +$nv_Lang->loadBlock($filepath);
 +</code>
 +
 +
 ===== Ngôn ngữ tạm ===== ===== 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:
 +
 +
 +<code php>
 +$nv_LangTmp = new \NukeViet\Core\Language();
 +$nv_LangTmp->loadModule($mod, $admin, $modadmin, $temp);
 +</code>
 +
 +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ị:
 +
 +
 +<code php>
 +\NukeViet\Core\Language::$lang_global;
 +\NukeViet\Core\Language::$lang_module;
 +\NukeViet\Core\Language::$lang_block;
 +</code>
 +
 +Sau khi dùng xong ''unset($nv_LangTmp);'' để giải phóng bộ nhớ
 ===== Đọc ngôn ngữ khác, không phải là NV_LANG_INTERFACE hiện tại ===== ===== Đọc ngôn ngữ khác, không phải là NV_LANG_INTERFACE hiện tại =====
 +
 +Để đọc ngôn ngữ khác cần chú ý đến hai phương thức:
 +
 +<code php>
 +$nv_Lang->setLang($lang);
 +$nv_Lang->changeLang($lang);
 +</code>
 +
 +Nếu dùng setLang hệ thống sẽ làm rỗng toàn bộ lang hiện tại bao gồm ngôn ngữ tạm và cả phần 
 +
 +<code php>
 +\NukeViet\Core\Language::$lang_global;
 +\NukeViet\Core\Language::$lang_module;
 +\NukeViet\Core\Language::$lang_block;
 +</code>
 +
 +Nếu dùng ''changeLang'' hệ thống chỉ làm rỗng ngôn ngữ tạm đã đọc để chuyển sang ngôn ngữ được change để đọc => Phần này dùng để thay đổi ngôn ngữ tạm cần đọc.
 +
 +Khi dùng ''changelang'' mà không truyền vào biến ''$lang'' thì hệ thống sẽ giữ nguyên lang hiện tại, chỉ làm rỗng dữ liệu đã đọc.
 ===== Thay đổi ngôn ngữ đã đọc vào ===== ===== Thay đổi ngôn ngữ đã đọc vào =====
 +
 +Áp dụng khi cần nạp ngôn ngữ từ một mảng cố định vào ngôn ngữ đã đọc. Cú pháp:
 +
 +<code php>
 +$nv_Lang->setGlobal($langkey, $langvalue);
 +$nv_Lang->setModule($langkey, $langvalue);
 +$nv_Lang->setBlock($langkey, $langvalue);
 +</code>
 +
 +Có hai cách sử dụng:
 +
 +  - Truyền cả $langkey và $langvalue dạng chuỗi.
 +  - Chỉ truyền $langkey dạng mảng, không truyền vào $langvalue.
  
  
programming5/thematic/language.1526273045.txt.gz · Sửa đổi lần cuối: 2018/05/14 11:44 bởi hoaquynhtim99