#### MMLABEL ####
#### Áp dụng vào ngôn ngữ 2 lá cờ ANH - VIỆT $urls = $this->get_lang_urls($op, $currentlang);
$vn_url = $urls['vn'];
$en_url = $urls['en'];
#### Các Funtion
public function get_lang_urls($op, $currentlang) {
$current_url = $_SERVER['REQUEST_URI'];
$current_path = parse_url($current_url, PHP_URL_PATH);
$segments = explode('/', trim($current_path, '/'));
$slug_con = strtolower(end($segments));
// map chính từ data_superlink
$data_chill = data__superlink();
$super1 = explode("**", $data_chill['super1']);
$super2 = explode("**", $data_chill['super2']);
$map_main = array();
foreach ($super1 as $k => $v) {
$map_main[$v] = isset($super2[$k]) ? $super2[$k] : '';
}
// map phụ theo op và ngôn ngữ
switch ($op) {
case 'display_category':
$ch_title = $this->ShopCid__Title__lang($slug_con);
break;
case 'display_product':
$ch_title = $this->ShopPid__Title__lang($slug_con);
break;
case 'page_category':
$ch_title = $this->pageCatgory__Catidlink__lang($slug_con);
break;
case 'page_detail':
$ch_title = $this->pageDetail__Sidlink__lang($slug_con);
break;
default:
$ch_title = '';
break;
}
$map_sub = ($currentlang == "vietnamese" && $ch_title) ? array($slug_con => $ch_title) : ($ch_title ? array($ch_title => $slug_con) : array());
$links = $this->mobi__switch_language_url($current_url, $map_main, $map_sub);
return array(
'vn' => $links['vn'],
'en' => $links['en']
);
}
#### Function 2
public function ShopCid__Title__lang($cidlink){
global $db,$prefix,$site_live,$currentlang;
$langid = get_lang_id();
// Chuẩn hóa slug con
$cidlink = strtolower($cidlink);
$sql ="SELECT a.cid
FROM ".$prefix."_shop_categories a,
".$prefix."_shop_categories_lang b
WHERE a.cid=b.cid
AND LOWER(b.cid_link) = LOWER('".$cidlink."')
AND b.lang_id=$langid";
$rs = $db->sql_query($sql);
$row = $db->sql_fetchrow($rs);
if(!$row){
return ''; // Không tìm thấy → tránh báo lỗi
}
$cid = $row["cid"];
// Đổi: VN → EN hoặc EN → VN
if($langid==1){
return $this->cidlink__tienganh($cid,2);
}else{
return $this->cidlink__tienganh($cid,1);
}
}
public function ShopPid__Title__lang($pidlink){
global $db,$prefix,$site_live,$currentlang;
$langid = get_lang_id();
$sql ="select a.pid from ".$prefix."_shop a,".$prefix."_shop_lang b where a.pid=b.pid AND b.pid_link ='".$pidlink."' and b.lang_id=".$langid;
// echo $sql;
$rs = $db->sql_query($sql);
$data = array();
$row = $db->sql_fetchrow($rs);
$pid = $row["pid"];
if($langid==1){
return $this->pidlink__tienganh($pid,2);
}else{
return $this->pidlink__tienganh($pid,1);
}
}
public function pageCatgory__Catidlink__lang($catid_link){
global $db,$prefix,$site_live,$currentlang;
$langid = get_lang_id();
$sql ="select catid from ".$prefix."_stories_cat_lang where catid_link ='".$catid_link."' and lang_id=".$langid;
// echo $sql;
$rs = $db->sql_query($sql);
$data = array();
$row = $db->sql_fetchrow($rs);
$catid = $row["catid"];
if($langid==1){
return $this->catidlink__tienganh($catid,2);
}else{
return $this->catidlink__tienganh($catid,1);
}
}
public function pageDetail__Sidlink__lang($sid_link){
global $db,$prefix,$site_live,$currentlang;
$langid = get_lang_id();
$sql ="select sid from ".$prefix."_stories where sid_link ='".$sid_link."' and langid=".$langid;
// echo $sql;
$rs = $db->sql_query($sql);
$data = array();
$row = $db->sql_fetchrow($rs);
$sid = $row["sid"];
if($langid==1){
return $this->sidlink__tienganh($sid,2);
}else{
return $this->sidlink__tienganh($sid,1);
}
}
#### Function 3
public function cidlink__tienganh($cid,$langid){
global $db,$prefix,$site_live,$currentlang;
$sql ="select * from ".$prefix."_shop_categories_lang where cid ='".$cid."' and lang_id=$langid";
// echo $sql;
$rs = $db->sql_query($sql);
$data = array();
while($row = $db->sql_fetchrow($rs)){
$cid_link = $row["cid_link"];
return $cid_link;
}
}
public function pidlink__tienganh($pid,$langid){
global $db,$prefix,$site_live,$currentlang;
$sql ="select * from ".$prefix."_shop_lang where pid ='".$pid."' and lang_id=$langid";
// echo $sql;
$rs = $db->sql_query($sql);
$data = array();
while($row = $db->sql_fetchrow($rs)){
$pid_link = $row["pid_link"];
return $pid_link;
}
}
public function catidlink__tienganh($catid,$langid){
global $db,$prefix,$site_live,$currentlang;
$sql ="select * from ".$prefix."_stories_cat_lang where catid ='".$catid."' and lang_id=$langid";
// echo $sql;
$rs = $db->sql_query($sql);
$data = array();
while($row = $db->sql_fetchrow($rs)){
$catid_link = $row["catid_link"];
return $catid_link;
}
}
public function sidlink__tienganh($sid,$langid){
global $db,$prefix,$site_live,$currentlang;
$sql ="select * from ".$prefix."_stories where sid ='".$sid."' and langid=$langid";
// echo $sql;
$rs = $db->sql_query($sql);
$data = array();
while($row = $db->sql_fetchrow($rs)){
$sid_link = $row["sid_link"];
return $sid_link;
}
}
#### Note: code cơ bản ban đầu (code thuần), chưa đưa dữ liệu vào.
// $current_url = "/San-pham/nhan-decal-trong-nha";
// $map_main = array(
'San-pham' => 'Product'
);
// $map_sub = array(
'nhan-decal-trong-nha' => 'indoor-decals'
);
// $map_main = array(
// 'gioi-thieu' => 'about-us',
// 'tin-tuc-su-kien' => 'news-event',
// 'tin-tuc' => 'news',
// 'Tin-tuc' => 'News',
// 'lien-he' => 'contact-us',
// 'San-pham' => 'Product',
// 'san-pham' => 'product',
// 'trang-chu' => 'home-page',
// );
👉 Cách 2:
///////////////////////////////////////////////////////////////////////////////////////////////
KEIEIJUKU
function google_translate_web(){
?>
<!-- Ẩn widget gốc -->
<div id="google_translate_element" style="display:none;"></div>
<!-- Nút chọn ngôn ngữ -->
<!-- <div id="translateBox">
<button onclick="changeLang('vi')">🇻🇳 VI</button>
<button onclick="changeLang('en')">🇺🇸 EN</button>
<button onclick="changeLang('zh-CN')">🇨🇳 中文</button>
<button onclick="changeLang('ko')">🇰🇷 한국어</button>
<button onclick="changeLang('ja')">🇯🇵 日本語</button>
</div> -->
<style type="text/css">
#translateBox {
position: fixed;
top: 80px;
right: 30px;
z-index: 9999;
}
#translateBox button {
margin: 2px;
padding: 6px 10px;
border: none;
background: #eee;
cursor: pointer;
border-radius: 5px;
font-size: 13px;
}
#translateBox button:hover {
background: #ddd;
}
/* Ẩn thanh Google */
.goog-te-banner-frame.skiptranslate {
display: none !important;
}
.goog-te-banner-frame,
.goog-logo-link,
.goog-te-gadget {
display: none !important;
}
/* Ẩn toàn bộ Google Translate */
.skiptranslate {
display: none !important;
}
/* Fix lỗi bị đẩy trang xuống */
body {
top: 0 !important;
}
.languageTop .popup li a img {
width: 25px;
height: 18px;
border: 1px solid rgba(0, 0, 0, 0.1);
}
</style>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function () {
var langMap = {
"vi": "Tiếng Việt",
"en": "English",
"ja": "日本語",
"ko": "한국어",
"zh": "中文"
};
function getCookie(name) {
var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
if (match) return match[2];
return null;
}
var lang = 'vi';
// 👉 Ưu tiên Google Translate
var match = document.cookie.match(/googtrans=\/vi\/(.*?)($|;)/);
if (match) {
lang = match[1];
} else {
lang = getCookie('site_lang') || 'vi';
}
// 👉 chuẩn hóa
lang = lang.toLowerCase();
if (lang.indexOf('-') !== -1) {
lang = lang.split('-')[0];
}
var el = document.getElementById("selected-lang");
if (el && langMap[lang]) {
el.childNodes[0].nodeValue = langMap[lang] + " ";
}
});
</script>
<script>
window.__gt_inited = false;
// INIT GOOGLE
function googleTranslateElementInit() {
if (window.__gt_inited) return;
window.__gt_inited = true;
new google.translate.TranslateElement({
pageLanguage: 'vi',
includedLanguages: 'vi,en,ja,ko,zh-CN',
autoDisplay: false,
multilanguagePage: true
}, 'google_translate_element');
}
// ĐỔI NGÔN NGỮ
function changeLang(lang) {
// Xóa cookie cũ
document.cookie = "googtrans=; path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC;";
// googtrans (Google dùng)
document.cookie = "googtrans=/vi/" + lang + "; path=/; domain=" + location.hostname+ "; max-age=2592000";
// cookie riêng của bạn
document.cookie = "site_lang=" + lang + "; path=/; domain=" + location.hostname + "; max-age=2592000";
// Lưu lại
localStorage.setItem("lang", lang);
// Reload
setTimeout(function () {
location.reload();
}, 200);
}
// LẤY NGÔN NGỮ HIỆN TẠI
function getCurrentLang() {
var match = document.cookie.match(/googtrans=\/vi\/(.*?)($|;)/);
return match ? match[1] : 'vi';
}
// AUTO LOAD NGÔN NGỮ
window.addEventListener("load", function () {
var lang = localStorage.getItem("lang") || getCurrentLang();
if (lang && lang !== 'vi') {
document.cookie = "googtrans=/vi/" + lang + "; path=/; domain=" + location.hostname + "; max-age=2592000";
}
});
</script>
<script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
<?php
}
function languageTop__supplier(){
global $site_live, $currentlang, $ThemeSel,$op,$module_name;
$lang_num = 1; // mặc định VI
if (isset($_COOKIE['site_lang_num'])) {
$lang_num = intval($_COOKIE['site_lang_num']);
}
if (!in_array($lang_num, array(1,2,3,4,5))) {
$lang_num = 1;
}
$LANG = array(
1 => array(
'content' => '1',
'icon' => 'vi',
'ngonngu' => 'Tiếng Việt',
),
2 => array(
'content' => '2',
'icon' => 'en',
'ngonngu' => 'English',
),
3 => array(
'content' => '3',
'icon' => 'ja',
'ngonngu' => 'Japanese',
),
4 => array(
'content' => '4',
'icon' => 'ko',
'ngonngu' => 'Korean',
),
5 => array(
'content' => '5',
'icon' => 'zh-CN',
'ngonngu' => 'Chinese',
)
);
echo'<ul class="lang-switch language panel-items langList-options">';
echo '<li class="option-lang">
<a class="nail-link" href="javascript:void(0)" onclick="changeLang(\'vi\')" translate="no">
Tiếng Việt
</a>
</li>';
echo '<li class="option-lang">
<a class="nail-link" href="javascript:void(0)" onclick="changeLang(\'en\')" translate="no">
English
</a>
</li>';
echo'<li class="option-lang">
<a class="nail-link" href="javascript:void(0)" onclick="changeLang(\'zh-CN\')" translate="no">
Chinese
</a>
</li>
<li class="option-lang">
<a class="nail-link" href="javascript:void(0)" onclick="changeLang(\'ja\')" translate="no">
Japanese
</a>
</li>
<li class="option-lang">
<a class="nail-link" href="javascript:void(0)" onclick="changeLang(\'ko\')" translate="no">
Korean
</a>
</li>';
echo'</ul>';
echo'<div id="google_translate_element"></div>';
}
**** CSS
.rfq-form .title_wrap .langList .selected-lang {
line-height: 21px;
display: inline-block;
padding: 5px 10px;
border-radius: 3px;
}
.rfq-form .title_wrap .langList .langList-options {
display: none;
position: absolute;
right: -1px;
top: 100%;
background: #fff;
white-space: nowrap;
padding: 5px 0;
border: 1px solid #dae0e6;
border-radius: 3px;
box-shadow: 3px 3px 6px rgba(0, 0, 0, .15);
z-index: 99;
list-style: none;
}
.rfq-form .title_wrap .langList:hover .langList-options {
display: block;
}
.rfq-form .title_wrap .langList:hover .selected-lang {
color: #e64545;
}
.rfq-form .title_wrap .langList .langList-options::before {
content: "";
display: block;
position: absolute;
width: 7px;
height: 7px;
border-top: 1px solid #dae0e6;
border-left: 1px solid #dae0e6;
transform: rotate(45deg);
background: #fff;
top: -5px;
left: auto;
right: 13px;
}
.rfq-form .title_wrap .langList .langList-options a {
padding: 5px 10px;
font-size: 14px;
display: block;
color: #222;
}
.rfq-form .title_wrap .langList .langList-options a:hover {
background: #e6ecf2;
text-decoration: none;
}
.rfq-form .title_wrap .langList:hover .fa-icon {
transform: rotate(-180deg);
}
**** HTML
<div class="langList">
<span class="selected-lang" id="selected-lang">'.$LANG[$lang_num]['ngonngu'].'
<i class="fa fa-angle-down fa-icon" aria-hidden="true"></i></span>';
languageTop__supplier();
</div>
Không có nhận xét nào:
Đăng nhận xét