zoukankan      html  css  js  c++  java
  • uniapp国际化中的中英文切换按钮实现

    原博客地址:https://www.cnblogs.com/yoona-lin/p/13705543.html

    现在通过页面的按钮进行中英文切换

    如图:

    实现:

     1 // main.js// 国际化模块
     2 import VueI18n from 'vue-i18n' 
     3 Vue.use(VueI18n)
     4 
     5 
     6 if (!uni.getStorageSync('lang')) {
     7     // 设置默认语言
     8     uni.getSystemInfo({
     9         success: (res) => {
    10             uni.setStorageSync('lang', (res.language.indexOf('zh') != -1) ? 'zh_CN' : 'en')
    11         }
    12     })
    13 }
    14 const i18n = new VueI18n({
    15     locale: uni.getStorageSync('lang') || 'zh_CN', // 默认使用中文
    16     messages: {
    17         'en': require('utils/lang/en.js'), // 英文语言包
    18         'zh_CN': require('utils/lang/zh.js')  // 中文简体语言包
    19     }
    20 })
    21 
    22 // 导出国际化
    23 export default i18n
    24 
    25 Vue.prototype._i18n = i18n
    26 
    27 Vue.prototype.$i18nMsg = function(){
    28     return i18n.messages[i18n.locale]
    29 }
    30 
    31 App.mpType = 'app';
    32 
    33 const app = new Vue({
    34     i18n,  // 国际化
    35     ...App
    36 });
    View Code

     

    changeLang.vue

     1 <template>
     2     <view class="change-con" @tap="showLangAn" :animation="animation">
     3         <view class="gary-arrow">
     4             <image src="/static/icons/white-arr.png" :animation="animationArrow"></image>
     5         </view>
     6         <view class="lang-con" @tap="changeLang">
     7             {{changeLangLabel}}
     8         </view>
     9     </view>
    10 </template>
    11 
    12 <script>
    13     export default {
    14         data() {
    15             return {
    16                 showLang: false,
    17                 animation: '',
    18                 animationArrow: '',
    19                 changeLangLabel: 'En', // 当前语言
    20             };
    21         },
    22 
    23         components: {},
    24         props: {},
    25         
    26         // 挂载数据之前先获取与判断本地语言类型
    27         beforeMount() {
    28             uni.getStorageSync("lang").indexOf('zh') != -1 ? this.changeLangLabel = 'En' : this.changeLangLabel = '中文'
    29         },
    30         methods: {
    31             changeLang() {
    32                 if (uni.getStorageSync("lang").indexOf('zh') != -1) {
    33                     this._i18n.locale = 'en';
    34                     this.changeLangLabel = '中文'
    35                     uni.setStorageSync('lang', 'en')
    36                 } else {
    37                     this._i18n.locale = 'zh_CN';
    38                     this.changeLangLabel = 'En'
    39                     uni.setStorageSync('lang', 'zh_CN')
    40                 }
    41                 // uni.reLaunch({
    42                 // 针对单页面的点击切换按钮,响应到整个项目
    43                 //     url: '/pages/storeLogin/storeLogin',
    44                 //     success: function(e) {
    45                 //         var page = getCurrentPages().pop(); //跳转页面成功之后
    46                 //         if (!page) return;
    47                 //         console.log(page)
    48                 //         page.onLoad(); //如果页面存在,则重新刷新页面 
    49                 //     }
    50                 // })
    51             },
    52             showLangAn() {
    53                 this.showLang = !this.showLang
    54                 var animation = uni.createAnimation({
    55                     duration: 600,
    56                     timingFunction: 'ease',
    57                 })
    58                 var animationArrow = uni.createAnimation({
    59                     duration: 400,
    60                     timingFunction: 'ease',
    61                 })
    62                 this.animation = animation
    63                 this.animationArrow = animationArrow
    64                 if (this.showLang) {
    65                     animation.translate(-45).step()
    66                     animationArrow.rotate(180).step()
    67                 } else {
    68                     animation.translate(0).step()
    69                     animationArrow.rotate(0).step()
    70                 }
    71             }
    72         }
    73     };
    74 </script>
    75 <style>
    76     @import "./changeLang.css";
    77 </style>
    View Code

    changeLang.css

     1 .change-con {
     2     width: 200rpx;
     3     height: 80rpx;
     4     border-radius: 40rpx 0 0 40rpx;
     5     position: fixed;
     6     bottom: 20%;
     7     right: -120rpx;
     8     display: flex;
     9     /* box-shadow: 2rpx 2rpx 10rpx 0 #aaa; */
    10 }
    11 .gary-arrow {
    12     border-radius: 40rpx 0 0 40rpx;
    13     width: 90rpx;
    14     height: 100%;
    15     background-color: #859e5c;
    16     display: flex;
    17     align-items: center;
    18     box-shadow: 2rpx 2rpx 10rpx 0 #aaa;
    19 }
    20 .gary-arrow image {
    21     width: 18rpx;
    22     height: 24rpx;
    23     margin-left: 40rpx;
    24 }
    25 .lang-con {
    26     width: 80rpx;
    27     font-size: 28rpx;
    28     background-color: #98b369;
    29     display: flex;
    30     align-items: center;
    31     justify-content: center;
    32     color: #FFFFFF;
    33 }
    View Code

     调用:

  • 相关阅读:
    Node
    HTTP权威指南
    一些乱七八糟的思考积累
    有限状态机
    奇怪问题引用到其它文件夹项目文件方法
    dijkstra+堆优化
    高精度
    BUAA 1301 最短路
    阿里云服务器ECS(Centos8)下安装和配置python3.8
    Cheat Sheet
  • 原文地址:https://www.cnblogs.com/luyj00436/p/15095876.html
Copyright © 2011-2022 走看看