• Vue3轻量版国际化插件


    ️ vue-next-i18n

    Gzip Size

    Vue3轻量版国际化插件

    开始

    首先你需要先安装vue-next-i18n

    使用 npm

    npm install vue-next-i18n
    

    使用 yarn

    yarn add vue-next-i18n
    

    用法

    通过 app.use() 方法注册插件

    // 1. Ready translated locale messages
    // The structure of the locale message is the hierarchical object structure with each locale as the top property
    const messages = {
      en: {
        message: {
          hello: 'hello world'
        }
      },
      zhCHS: {
        message: {
          hello: '你好 世界'
        }
      },
      ja: {
        message: {
          hello: 'こんにちは、世界'
        }
      }
    }
    
    // 2. 初始化i18n实例
    import { createApp } from 'vue';
    import { createI18n } from 'vue-next-i18n';
    
    const i18n = createI18n({
      locale: 'zhCHS', // 设置多语言
      messages, // 多语言文件
      localeKeys:['zhCHS','zhCHT','en'] // 用于数组形象获取多语言时的顺序,默认顺序: ['zhCHS','zhCHT','en']
    })
    
    
    // 3. 创建Vue根实例
    const app = createApp({
      // set something options
      // ...
    })
    
    // 4. 注册i18n实例
    app.use(i18n)
    
    // 5. 挂载
    app.mount('#app')
    
    // OK了
    

    HTML

    <div id="app">
      <p>{{ $t("message.hello") }}</p>
    </div>
    
    
    
    <!-- Output the following: -->
    <div id="#app">
      <p>你好 世界</p>
    </div>
    

    Composition API

    import { useI18n } from 'vue-next-i18n'
    
    export default {
      setup() {
        const i18n = useI18n()
        const { currentLocale, changeLocale } = i18n
        return {
          currentLocale,
          changeLocale
        }
      }
    }
    

    例子

    基础

    const messages = {
      en: {
        message: {
          hello: 'hello world'
        }
      },
      zhCHS: {
        message: {
          hello: '你好 世界'
        }
      },
      ja: {
        message: {
          hello: 'こんにちは、世界'
        }
      }
    }
    
    <div id="app">
      <p>{{ $t("message.hello") }}</p>
    </div>
    

    支持传入函数

    const messages = {
      en: {
        message: {
          hello: (val) =>  `hello world ${val}`
        }
      },
      zhCHS: {
        message: {
          hello: (val) =>  `你好 世界 ${val}`
        }
      },
      ja: {
        message: {
          hello: (val) =>  `こんにちは、世界 ${val}`
        }
      }
    }
    
    <div id="app">
      <p>{{ $t("message.hello",'hahaha') }}</p>
    </div>
    

    使用数组形式

    The array order depends on the localeKeys, default value is ['zhCHS','zhCHT','en']

    // example localeKeys: ['zhCHS','en','ja']
    
    <div id="app">
      <p>{{ $t(['你好 世界','hello world','こんにちは、世界']) }}</p>
    </div>
    

    支持组件内i18n选项多语言配置

    export default {
      i18n:{
        en: {
          message: {
            hello: 'hello world'
          }
        },
        zhCHS: {
          message: {
            hello: '你好 世界'
          }
        },
        ja: {
          message: {
            hello: 'こんにちは、世界'
          }
        } 
      },
      setup(){
        // code...
      }
    }
    
    <div id="app">
      <p>{{ $t('message.hello') }}</p>
    </div>
    

    Changelog

    Details changes for each release are documented in the CHANGELOG.md.

    License

    MIT License © 2022 Aaron Lam

  • 相关阅读:
    iOS 方便的宏定义
    IOS 推送消息 php做推送服务端
    iOS 7 动画UIDynamicAnimator
    iOS 适配
    ios 实现简单的解析xml网页
    用 MPMoviePlayerController 实现简单的视频下载播放功能
    ios 自定义弹出对话框效果
    ios国外大神
    git学习
    ios 7UI适配方法
  • 原文地址:https://www.cnblogs.com/GeniusLyzh/p/15906882.html
Copyright © 2020-2023  润新知