设为首页收藏本站rss

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย

南京金友网 做南京人的网上家园  - 南京金友网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

查看: 446|回复: 0
收起左侧

素材发布资源下载插件导航里面加上多国语言切换导航按钮

[复制链接]
累计签到:95 天
连续签到:15 天

933

主题

98

回帖

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
14855

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2023-11-14 12:09:22 | 显示全部楼层 |阅读模式 IP:- 中国江苏南京

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
Theme Box的素材发布资源下载插件比较封闭,以贰先生的全站多国语言翻译插件为例,想要在Theme Box的素材发布资源下载插件里面穿透实现全站多国语言自动翻译在Theme Box的插件页面是无法穿透实现效果的,
下面实现如图添加导航并实现全站多国语言翻译:

在Theme Box的素材发布资源下载插件导航里面加上多国语言切换导航按钮并实现多种展现效果的方式 ... ... .. ...

在Theme Box的素材发布资源下载插件导航里面加上多国语言切换导航按钮并实现多种展现效果的方式 ... ... .. ...

游客,如果您要查看本帖隐藏内容请回复

查找:
  1. </body>
复制代码
也就是在 </body> 之前,
在其上行添加:
  1. <script src="source/plugin/domi_translate/template/translate.js" type="text/javascript"></script>
  2. <script>
  3.    
  4.     // 将css代码添加到style标签中
  5.     var style = document.createElement('style');
  6.     style.innerHTML = "#translate {display: inline-block;background: #333!important;padding: 8px;position: fixed;left: 0;border-radius: 0 25px 25px 0; bottom: 10px;}.translateSelectLanguage {border-radius: 0 25px 25px 0;background: #333!important;color: #fff;border: none;font-weight: 600;text-align: center;}";
  7.     document.head.appendChild(style);
  8.     translate.setUseVersion2(); //设置使用v2.x 版本
  9.     translate.language.setLocal("chinese_simplified"); //设置本地语种(当前网页的语种)。如果不设置,默认自动识别当前网页显示文字的语种。 可填写如 'english'、'chinese_simplified' 等,具体参见文档下方关于此的说明。
  10.     translate.selectLanguageTag.languages = "chinese_traditional,english,chinese_simplified,korean,german,japanese,russian,arabic,turkish,portuguese,thai,french"; //每个语种之间用英文,分割。比如这里设置的是支持英语、简体中文、韩语 的切换。根据后端翻译服务不同,支持的语言也不同。具体支持哪些,可通过 http://api.translate.zvo.cn/doc/language.json.html 获取 (如果您私有部署的,将请求域名换为您自己私有部署的域名)
  11.     // 如果1的值为1,那么就执行translate.setAutoDiscriminateLocalLanguage(),否则就不执行
  12.     if ("1" == 1) {
  13.         translate.setAutoDiscriminateLocalLanguage();        //设置用户第一次用时,自动识别其所在国家的语种进行切换
  14.     }
  15. if ("" != "") {
  16.     var tags = "".split(",");
  17.     for (var i = 0; i < tags.length; i++) {
  18.         translate.ignore.tag.push(tags[i].trim());
  19.     }
  20. }
  21. if ("" != "") {
  22.     var ids = "".split(",");
  23.     for (var i = 0; i < ids.length; i++) {
  24.         translate.ignore.id.push(ids[i].trim());
  25.     }
  26. }
  27. if ("" != "") {
  28.     var classes = "".split(",");
  29.     for (var i = 0; i < classes.length; i++) {
  30.         translate.ignore.class.push(classes[i].trim());
  31.     }
  32. }
  33.     const urlParams = new URLSearchParams(window.location.search);
  34.     const subdomain = window.location.hostname.split('.')[0];
  35.     const lang = urlParams.get('lang');
  36.     const subdir = window.location.pathname.split('/')[1];
  37.     const supportedLanguages = {
  38.         'en': 'english',
  39.         'zh': 'chinese_simplified',
  40.         'cht': 'chinese_traditional',
  41.         'ko': 'korean',
  42.         'de': 'german',
  43.         'ja': 'japanese',
  44.         'ru': 'russian',
  45.         'ar': 'arabic',
  46.         'tr': 'turkish',
  47.         'pt': 'portuguese',
  48.         'th': 'thai',
  49.         'fr': 'french'
  50.     };
  51.     const languages = supportedLanguages[subdomain] || supportedLanguages[lang] || supportedLanguages[subdir];
  52.     if (languages) {
  53.         translate.changeLanguage(languages);
  54.     }
  55.     translate.nomenclature.append('chinese_simplified','korean',`
  56. apple=apple
  57. Safari=Safari
  58. 简体中文=chinese
  59. 极简蓝=bluely
  60. `);
  61. translate.nomenclature.append('chinese_simplified','english',`
  62. 简体中文=chinese
  63. 极简蓝=bluely
  64. `);
  65.     translate.listener.start();
  66.     translate.execute();//进行翻译
  67.     translate.listener.renderTaskFinish = function (task) {
  68.         console.log('已翻译完成');
  69.     }
  70. </script>
复制代码
上面的操作是 在 Theme Box的素材发布资源下载插件 里面引入 全站多国语言翻译插件 的必须jQuery库文件。

然后是在导航里面添加一个导航菜单,需要实现的功能:
1. 导航下拉多级层联菜单;
2. 鼠标滑动自动展开,而不是需要点击选择;
3. 菜单是 通过传参访问对应语言,而不是默认js切换的方式,以实现 多国语言 多次收录页面的效果。

下面是修改文件操作,Theme Box的素材发布资源下载插件 的导航菜单文件路径是在:/source/plugin/one_market/template/default/common/header.php

首先我们需要 引入Bootstrap和jQuery库,以实现我们添加的导航菜单的联动效果,这里引入的 是为了避免可能与 Theme Box的素材发布资源下载插件 本身JQ的冲突 而导致菜单效果不生效:

查找:
  1. <!--{template one_market:default/common/header_common}-->
复制代码
在其上行添加:
  1. <!-- 引入Bootstrap和jQuery库 -->
  2. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  3. <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
复制代码
然后还是这个文件,我们操作添加菜单的步骤:
查找:
  1. </ul>
复制代码
在其上行添加:
  1. <!-- 下拉菜单代码 -->
  2. <li class="nav-item dropdown">
  3.     <a class="nav-link dropdown-toggle" href="#" id="languageDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" title="Choose your language">
  4.         <img src="source/plugin/domi_translate/template/icons/en.png" class="vm" width="18" alt="Choose your language">
  5.           English
  6.     </a>
  7.     <div class="dropdown-menu" aria-labelledby="languageDropdown">
  8.         <a class="dropdown-item" href="?lang=en"><img src="source/plugin/domi_translate/template/icons/en.png " width="14" height="14"> English</a>
  9.         <a class="dropdown-item" href="?lang=ja"><img src="source/plugin/domi_translate/template/icons/ja.png" width="14" height="14"> 日本語</a>
  10.         <a class="dropdown-item" href="?lang=de"><img src="source/plugin/domi_translate/template/icons/de.png" width="14" height="14"> Deutsch</a>
  11.         <a class="dropdown-item" href="?lang=ko"><img src="source/plugin/domi_translate/template/icons/ko.png" width="14" height="14"> 한국 사람</a>
  12.         <a class="dropdown-item" href="?lang=ar"><img src="source/plugin/domi_translate/template/icons/ar.png" width="14" height="14"> بالعربية</a>
  13.         <a class="dropdown-item" href="?lang=tr"><img src="source/plugin/domi_translate/template/icons/tr.png" width="14" height="14"> TÜRKÇE</a>
  14.         <a class="dropdown-item" href="?lang=pt"><img src="source/plugin/domi_translate/template/icons/pt.png" width="14" height="14"> português</a>
  15.         <a class="dropdown-item" href="?lang=th"><img src="source/plugin/domi_translate/template/icons/th.png" width="14" height="14"> คนไทย</a>
  16.     </div>
  17. </li>
  18. <li class="nav-item dropdown">
  19.     <a class="nav-link dropdown-toggle" href="#" id="languageDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" title="切换到简体中文">
  20.         <img src="source/plugin/domi_translate/template/icons/zh.png" class="vm" width="18" alt="切换到简体中文">
  21.           简体中文
  22.     </a>
  23.     <div class="dropdown-menu" aria-labelledby="languageDropdown">
  24.         <a class="dropdown-item" href="?lang=zh"><img src="source/plugin/domi_translate/template/icons/zh.png" width="14" height="14"> 简体中文</a>
  25.         <a class="dropdown-item" href="?lang=cht"><img src="source/plugin/domi_translate/template/icons/cht.png" width="14" height="14"> 繁體中文</a>
  26.     </div>
  27. </li>
  28. <!-- CSS样式 -->
  29. <style>
  30.     .dropdown-menu {
  31.         display: none;
  32.     }
  33. </style>
  34. <!-- JS脚本 -->
  35. <script>
  36.     $(document).ready(function() {
  37.         $('.nav-item.dropdown').hover(function() {
  38.             $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn(500);
  39.         }, function() {
  40.             $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut(500);
  41.         });
  42.     });
  43. </script>
复制代码
然后保存,更新缓存后,就可以看到最上图的实现效果~
"小礼物走一走,来南京金友网支持我"
还没有人打赏,支持一下
走自己的路
您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

快速回复 返回顶部 返回列表