国际化--vue3 +ts 结合vue-i18n插件的使用

  • Vue I18n 是 Vue.js 的国际化插件。它可以轻松地将一些本地化功能集成到您的 Vue.js 应用程序中。

  • 安装v-uei18n插件:

    pnpm install vue-i18n@9
    
  • 进行全局注册与api配置:

创建-locale文件夹-->放入index.ts文件

在locale文件夹中创建 en-US.ts文件/zh-CN.ts文件

以上两个文件为中英语言数据放置处

import test from '@/views/locale/en-US'
export default {
  'menu.dashboard': 'Dashboard',
  'menu.server.dashboard': 'Dashboard-Server',
  'menu.server.workplace': 'Workplace-Server',
  'menu.server.monitor': 'Monitor-Server',
  'menu.list': 'List',
  'menu.result': 'Result',
  'menu.exception': 'Exception',
  'menu.form': 'Form',
  'menu.profile': 'Profile',
  'menu.visualization': 'Data Visualization',
  'menu.user': 'User Center',
  'menu.arcoWebsite': 'Arco Design',
  'menu.faq': 'FAQ',
  'navbar.docs': 'Docs',
  'navbar.action.locale': 'Switch to English',
  // ...localeSettings,
  ...test
};
​

在index.ts中设置配置项:

//1.引入createI18n 创建vue-I18n实例 创建api实例 并完成在应用中的注册
import { createI18n } from 'vue-i18n';
​
import en from './en-US';
import cn from './zh-CN';
​
//2、以下用于在页面切换语言--设置语言环境
export const LOCALE_OPTIONS = [
  { label: '中文', value: 'zh-CN' },
  { label: 'English', value: 'en-US' },
];
​
const defaultLocale = localStorage.getItem('arco-locale') || 'zh-CN';
​
const i18n = createI18n({
  locale: defaultLocale,//本地化的Vue应用程序的语言  //defaultLocale 为获取本地偏好语言(从浏览器本地存储中)或者是中文
  fallbackLocale: 'en-US',//回退语言 如果在翻译 API 中指定的关键资源在 的语言中找不到,则要回退到的语言
  legacy: false,
  allowComposition: true,//是否允许组合式
  globalInjection: true, // 全局模式,可以直接使用 $t  默认值为true
  messages: { //要使用翻译 API 翻译的区域设置消息。
    'en-US': en,
    'zh-CN': cn,
  },
    
});
​
export default i18n;
​

在main.js文件中添加配置:

import vue_i18n from './locale'
// import vue_i18n from './locale/index'
// 以上两语句的作用是一样的  包管理器会自动识别目录/或页面中导出的模块
​
app.use(vue_i18n)

  • 使用方法:

    ​
    ​
    <div>{{$t('menu.home')}}</div>//常使用
    // 未配置全局
    <div>{{t('menu.home')}}</div>
    ​
    <script lang="ts" setup>
    ​
    // 使用后者时需要引入 t
    import { useI18n } from 'vue-i18n'
    //const { t } = useI18n()
    </script>

    复制代码

  b、ts 中使用()//暂时不适用 切换语言未实现

​



<script lang="ts" setup>
​
import i18n from '@/locales/index'
​
const t = i18n.global.t
const menuHome = { name: t('menus.home') }
​
{{menuHome.name}}//html中使用项
</script>
​
  • 切换语言配置:

    const { locale } = useI18n()
    // 设置当前语言环境的对象
    const state = reactive({
      curLanguage: 'zh-CN',
    })
    ​
    const changeLanguage = () => {
        console.log('asd')
      state.curLanguage =( state.curLanguage === 'zh-CN' ? 'en-US' : 'zh-CN')
      locale.value = state.curLanguage
        //主要使用语句
    }
    ​
    <template>
     <div>{{ $t('test.lan') }}</div>
    <button @click="changeLanguage()"></button>
    </template>
    ​

    学后提问:

    在某一界面单独使用locale.value进行语言切换 --引起整个项目语言的切换? 效果?

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue-i18n-next是Vue3版本的国际化插件,用于支持多语言的开发。你可以通过以下步骤来使用它: 第一步是下载Vue-i18n-next插件。你可以使用npm或yarn来进行下载。使用npm的命令是:npm install vue-i18n@next,而使用yarn的命令是:yarn add vue-i18n@next。 第二步是安装@intlify/vue-i18n-loader插件,这个插件用于自定义块的Vue-i18n加载程序,可以用于i18n资源的预编译。你可以使用npm或yarn来进行安装。使用npm的命令是:npm i --save-dev @intlify/vue-i18n-loader@next,而使用yarn的命令是:yarn add -D @intlify/vue-i18n-loader@next。 第三步是创建语言文件夹并在其中创建js或ts文件。在你的项目的src目录下创建一个名为language的文件夹,并在其中创建你的语言文件,可以使用js或ts格式。 通过以上步骤,你就可以开始在Vue3项目中使用Vue-i18n-next进行国际化开发了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3多语言插件 vue-i18n使用](https://blog.csdn.net/qq_42859450/article/details/126103422)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue-i18n-loader:用于自定义块的vue-i18n-loader](https://download.csdn.net/download/weixin_42131628/15097221)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vue3中多语言切换vue-i18n@next](https://blog.csdn.net/m0_59818968/article/details/119381340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值