translate.js中英文切换

文章描述了一个使用PHPCMS开发的网站项目,涉及到中英文切换功能,使用了translate.js插件进行翻译。作者分享了部分代码片段,提到存在导航栏文字溢出和延迟加载解决策略。
摘要由CSDN通过智能技术生成

        这次工作要写几个幽默的官网,还需要加中英文切换,用的框架是phpcms(技术栈都快比我弟老了),随便找了翻译插件:translate.js,

        下面是代码是抄了别人的再改了一些,从某段开始我自己也忘记是啥用途了,建议根据情况复制,中间往下似乎是无用代码,就做了个点击切换class或者切换图片这种操作,原帖找不到了,只剩这个我自己胡改剩下的代码。

        请品鉴小史山

// const langCN = {
// }
// const langEN = {
// }

$(function () {
    var defaultLang = sessionStorage.getItem('defaultLang') || 'en'
    console.log('我执行了翻译js')
    function langChange(defaultLang) {
        //
        //
        translate.setAutoDiscriminateLocalLanguage();//检测用户所在国家切换,首次使用
        translate.ignore.class.push('ignore-translate');//翻译忽略指定class   注意,这行要放到 translate.execute(); 上面
        translate.selectLanguageTag.show = false; //隐藏默认显示底部的select的选择语言
        translate.images.add({//添加指定的翻译路径,替换为_english
            // "/uploads/a.jpg":"https://www.zvo.cn/a_english.jpg", //前是检索的路径,后是要替换为的图片网址,注意要用绝对路径的
            // "/uploads/b.jpg":"https://www.zvo.cn/b_english.jpg",
            "http://test.luhuan.com/statics/images/otherpage/tosearch.jpg":"http://test.luhuan.com/statics/images/otherpage/tosearch_english.jpg"
        });
        if(defaultLang != 'cn'){
            var elements = document.querySelectorAll('[data-english]');
            elements.forEach(function(element) {
                console.log('你真运行了?')
                var customValue = element.getAttribute('data-english');
                element.innerHTML = customValue;
            });
        }

        translate.execute();
        //
        //

        console.log('有没有转换')
        let language = defaultLang == 'cn' ? langCN : langEN
        if( defaultLang == 'cn'){
            console.log('中文')

            // 隐藏 id 为 englishHeader 的元素
            $('#englishHeader').hide();
            // 显示 id 为 cnHeader 的元素
            $('#cnHeader').show();


            $('.iscn').addClass('active');
            $('.isen').removeClass('active');//改变中英文的蓝色
            translate.language.setDefaultTo('chinese');//切换默认显示中英文的效果
        }else{
            console.log('英文')
            // var myImage = document.getElementById("topImg");
            // if(myImage){
            //   var imagePath = myImage.src;
            //   var newImagePath = imagePath.replace(".jpg", "_EN.jpg");//修改top图的中英文
            //   myImage.src = newImagePath;
            // }

            // 隐藏 id 为 cnHeader 的元素
            $('#cnHeader').hide();
            // 显示 id 为 englishHeader 的元素
            $('#englishHeader').show();


            $('.isen').addClass('active');
            $('.iscn').removeClass('active');
            translate.language.setDefaultTo('english');//默认语言转英文

            const banner = document.querySelector('.otherpage_banner');//获取banner,有的话替换banner图为en后缀
            if(banner){
                const img = banner.querySelector('img');
                const src = img.src;
                console.log('有newImagePath吗')
                console.log(src)
                console.log(newImagePath)
                var newImagePath = src.replace(".jpg", "_EN.jpg")
                img.src=newImagePath
            }


        }


        let domList = document.querySelectorAll('[lang]')
        $(domList).each(function (i) {
            if ($(this).val() != null && $(this).val() != '') {
                $(this).val(language[$(this).attr('lang')])
            }
            if ($(this).html() != null && $(this).html() != '') {
                $(this).html(language[$(this).attr('lang')])
            }
            if ($(this).attr('placeholder') != null && $(this).attr('placeholder') != '') {
                $(this).attr('placeholder', language[$(this).attr('lang')])
            }
        })

    }
    langChange(defaultLang)
    $('.iscn').click(function () {
        $('.isen').removeClass('active');
        $('.iscn').addClass('active');

        defaultLang = 'cn'
        langChange(defaultLang)
        sessionStorage.setItem('defaultLang', defaultLang)
    })
    $('.isen').click(function () {
        $('.iscn').removeClass('active');
        $('.isen').addClass('active');

        defaultLang = 'en'
        langChange(defaultLang)
        sessionStorage.setItem('defaultLang', defaultLang)
    })




})

插件挺厉害,就是翻译的时候。导航栏文字会溢出,固定宽高的按钮最多三个汉字,翻译完直接掉出去了,这里懒得动脑,可以用js做自定义属性替换

<span data-english="Product Launch">前端在data-english写要翻译的英文</span>

<script>
        if(defaultLang != 'cn'){
            var elements = document.querySelectorAll('[data-english]');
            elements.forEach(function(element) {
                console.log('这段是jquery?获取标签data-english的值,替换里面的字为要改的英文')
                var customValue = element.getAttribute('data-english');
                element.innerHTML = customValue;
            });
        }
</script>

插件切换中英文时,可能从中文闪一下再变英文,懒得动脑问下ai,不想动脑的话用下面的可以解决,本质上就是等,拖半秒已经转化完了,这时候看就是英文了,

<style>body{display: none}</style>
<script>
    window.onload=function (){
        //放到body或者哪都行
        document.body.style.display='block'
    }
</script>

写的多少有些史山,有更好的代码欢迎评论区指教,

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vue Translate.js 是一个用于在 Vue.js 项目中实现多语言翻译的插件。它提供了一种简单而灵活的方式来管理和切换应用程序的不同语言版本。 使用 Vue Translate.js,你可以将应用程序中的文本提取为翻译键,并在需要时动态加载对应的翻译文本。这使得应用程序的国际化变得更加方便和可维护。 下面是一个简单的示例,演示如何在 Vue.js 中使用 Vue Translate.js: 1. 首先,安装 Vue Translate.js 插件: ```bash npm install vue-translate-js ``` 2. 在你的 Vue.js 项目中引入和使用 Vue Translate.js: ```javascript import Vue from 'vue'; import VueTranslate from 'vue-translate-js'; Vue.use(VueTranslate, { defaultLanguage: 'en', // 默认语言 translations: { en: { greeting: 'Hello!', message: 'Welcome to my app.' }, zh: { greeting: '你好!', message: '欢迎来到我的应用。' } } }); new Vue({ el: '#app', data() { return { currentLanguage: 'en' }; }, methods: { changeLanguage(language) { this.currentLanguage = language; } } }); ``` 3. 在你的模板中使用翻译文本: ```html <div id="app"> <p>{{ $t('greeting') }}</p> <p>{{ $t('message') }}</p> <button @click="changeLanguage('en')">English</button> <button @click="changeLanguage('zh')">中文</button> </div> ``` 在这个示例中,`$t` 是 Vue Translate.js 提供的全局过滤器,用于获取翻译文本。`currentLanguage` 数据属性用于切换语言,并且通过点击按钮来改变。 当你切换语言时,翻译插件会自动加载对应语言的翻译文本,并更新模板中的文本内容。 这只是 Vue Translate.js 的一个简单示例,实际上它提供了更多功能,比如动态添加翻译、多语言日期和数字格式化等。你可以查阅官方文档以了解更多信息和使用方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值