vue3中使用i18n配置

vue项目里多语言工具一直用的vue-i18n。

以前用的 vue2,也没啥大问题,就是配置好之后用t(“你的属性名”)就行,现在用vue3其实本来也没太大变化。

但是配置完之后,在html中用$t()没有问题,显示文案什么的一切正常。而在ts中使用$t()方法报错,后来才发现是我没有设置全局的$t()方法。

记录一下在vue3中使用vue-i18n的方法:

安装vue-18n
配置
应用
挂载全局方法$t以方便在ts中使用(本次记录的重点)
由于1.2.3.好多人写过了,我就简单的写一下,本次记录的重点是4,因为我发现网上好多博客都只写了$t在html中的使用,但是大都没提到在ts中也可能用到。

1.安装

1
npm install vue-i18n@next 或 yarn add vue-i18n@next
2.在 src 目录下新建 lang 并新建 index.ts 文件

 
import App from '@/App.vue'
import { createApp } from 'vue'
import { createI18n } from 'vue-i18n'
import enLocale from './en/index';
import zhLocale from './zh/index';
 
const messages = {
    zh: zhLocale,
    cn: zhLocale,
    en: enLocale,
    us: enLocale,
     
}
 
const localLang = navigator.language.split('-')[0];
const storageLang = window.localStorage.getItem('locale')?.split('"')[1].split('"')[0].toLocaleLowerCase() || 'en';
const c = (storageLang.toLocaleLowerCase() !== 'zh' && storageLang.toLocaleLowerCase() !== 'en') ? 'en' : storageLang;
 
const i18n = createI18n({
    globalInjection: true, //全局生效$t
    locale: c || localLang || 'en',
    messages,
    legacy: false,
})
 
const app = createApp(App)
app.use(i18n)


上图中两个语言包的index.ts中的内容自己根据语言需要写:

 
export default {
    nNation: 'Country/Region',
    pleaseInput: 'Account',
 
}
在ts中使用全局方法$t

 
import { getCurrentInstance } from "vue";
const { appContext : { config: { globalProperties } } } = getCurrentInstance();  // 这里可以根据需要写个hook
console.log(globalProperties.$t('pleaseSelectNation'))
在html中的使用就比较正常了:

1
<span>{{ $t("nation") }}</span>
其实本文算是新手记录一下对于globalProperties的使用,希望对您有所帮助。

总结

到此这篇关于vue3使用vue-i18n(ts中使用$t, vue3不用this)的文章就介绍到这了,更多相关vue3使用vue-i18n内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

### Vue3 移动端项目的国际化设置与使用 对于在 Vue3 移动端项目中实现国际化的配置使用,`vue-i18n` 是一个广泛采用的选择。以下是详细的说明: #### 安装 `vue-i18n` 为了开始,在项目中安装最新版本的 `vue-i18n` 插件,适用于 Vue 3 的版本。 ```bash npm install vue-i18n@next ``` #### 初始化 i18n 实例 创建一个新的文件来初始化 `vue-i18n` 实例,通常命名为 `i18n.js` 或者类似的名称。 ```javascript // src/i18n.js import { createI18n } from &#39;vue-i18n&#39;; const messages = { en: { message: { hello: &#39;hello world&#39; } }, zh: { message: { hello: &#39;你好,世界&#39; } } }; const i18n = createI18n({ locale: &#39;en&#39;, // 设置默认语言环境 fallbackLocale: &#39;zh&#39;, messages, // 设定多语言消息集合 }); export default i18n; ``` #### 配置 Vue 应用程序 接着修改应用程序入口文件以引入并应用这个实例化对象。 ```javascript // main.js import { createApp } from &#39;vue&#39;; import App from &#39;./App.vue&#39;; import i18n from &#39;./i18n&#39;; // 导入上面定义好的 i18n 对象 createApp(App).use(i18n).mount(&#39;#app&#39;); ``` #### 使用翻译功能 现在可以在组件内部通过 `$t()` 方法访问到这些已注册的消息键值对来进行页面内容的语言切换显示[^1]。 ```html <template> <div id="app"> <p>{{ $t(&#39;message.hello&#39;) }}</p> <!-- 显示对应语言下的问候语 --> </div> </template> <script> export default {}; </script> ``` 此外,如果考虑移动端UI框架的支持情况,可以结合像 Vant 这样的移动UI库一起工作,它提供了丰富的样式和交互效果,非常适合构建高质量的应用界面[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值