vue3前端国际化

定义

i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。

用法

1.安装插件

安装时需要指定版本号

npm i vue-i18n@8.22.2

2.全局挂载i18n

// main.ts
import i18n from '../components/lang';

app.use(i18n);

3.在组件的.vue文件中导入i18n

// ./common/src/index.vue
import { useI18n } from 'vue-i18n'

const { t } = useI18n();

4.修改项目结构

cn里面存储中文对应的.ts文件,en里面存储英文对应的.ts文件

例如:

./lang/cn/common.ts

/lang/en/common.ts

修改en-US.ts

import common from './en/common';
export default {
    ...common,
};

修改zh-US.ts 

import common from './en/common';
export default {
    ...common,
};

修改./lang/index.ts 

import { createI18n } from 'vue-i18n'
import cn from './zh-CN'
import en from './en-US'
const message = { 'zh-cn':cn, 'en':en }

/**
 *获取当前系统使用语言字符串
 *@returns zh-cnen ..
 */
export const getLanguage =()=>
// 本地缓存获取
  let language = localstorage.getItem('language');
  console.log(language+"language")
  if(language){
    return language,
  }
  // 浏览器使用语言
  language = navigator.language.toLowerCase()
  const locales =0bject.keys(messages);
  console.log(locales+"locales"
  console.log(locales+"messages")
  for(const locale of locales){
    if(language.indexof(locale)>-1){
      return locale;
    }
  }
  return 'zh-cn';
};
const 118n = createI18n({
  locale:getLanguage(),
  messages: messages
});

export default i18n;

5.在vue文件中使用

<div class="test">{{ t('common.ok') }}</div>

错误:

在props中使用前端国际化报错

解决办法:在src的同级目录下创建一个props.ts文件,将vue文件中定义的props写入props.ts文件,将新建的props.ts文件导入到vue文件中

// props.ts

// 注意这里引入i18n的方式
import i18n from'../../lang/index';
const { t } = i18n.global as any;
export const basicProps = {

};
// index.vue
import { basicProps } from './props'

const props = defineProps(basicProps)

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Vue3中进行前端国际化(i18n)的配置可以使用vue-i18n@next这个工具。首先,你需要安装这个工具,可以使用命令npm install vue-i18n@next或者yarn add vue-i18n@next进行安装。\[2\]\[3\]然后,在你的main.js文件中,你需要进行以下修改:引入VueI18n并通过Vue.use()安装vue-i18n,创建一个i18n实例对象,并配置需要翻译的语言环境和对应的配置文件路径。最后,将i18n注入到Vue实例中。\[1\]\[3\]这样就完成了i18n的配置。在Vue组件中,你可以使用t("你的属性名")来进行翻译。 #### 引用[.reference_title] - *1* [vue-i18n国际化](https://blog.csdn.net/lovebosom/article/details/130320347)[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^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue3和ts使用i18n实现国际化与动态切换语言](https://blog.csdn.net/weixin_44786530/article/details/131112750)[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^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Vue3+ts 配置i18n国际化,解决i18n警告](https://blog.csdn.net/qq_43331318/article/details/125363838)[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^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值