Yang小胖子
Yang小胖子
  • 发布:2024-02-05 17:42
  • 更新:2024-02-21 19:45
  • 阅读:434

国际化的使用问题

分类:uni-app

uniapp项目(vue3)
使用vue-i18n全局引入后(建项目是直接使用的官方提供的国际化模板)

在单独的js文件内如何使用,下面代码报错 因为是undefined,在vue文件中直接const {t} = useI18n() 就可以使用t了

import messages from '../locale/index.js'  
let i18nConfig = {  
    locale: uni.getLocale(),  
    messages  
}  
export function useGetI18n(guidToFind) {  
    let tt  
    onMounted(() => {  
        // const {  
        //  t  
        // } = useI18n(i18nConfig)  
        const {  
            t  
        } = useI18n()  
        tt = t  
    })  
    console.log('t---------', tt)  
    return tt('booking.spdq');  
}
2024-02-05 17:42 负责人:无 分享
已邀请:
JXWang

JXWang

在外部js中使用t方法可以用以下方法:

  1. 将main.js中的i18n暴露出来,在前边加个export即可
export const i18n = new VueI18n(i18nConfig)
  1. 其他外部js使用
import { i18n } from '../../main';  

export function test() {  
    console.log(i18n.t('index.detail'))  
}

也可以将i18n实例放在一个单独的js文件中创建,main.js中引入,这样更合理一些

  • Yang小胖子 (作者)

    谢谢, 参照你的方法 调用成功

    只是在使用的时候不能直接i18n.t('index.detail')这样使用 需要加一个 global i18n.global.t('index.detail')


    不过在微信小程序的使用时候碰到了新的问题

    app.js错误:

    Error: module 'pagesB/action/team/config.js' is not defined, require args is './pagesB/action/team/config.js'


    论坛也有很多人也有类似的问题 但是并没有好的解决方案

    2024-02-23 15:22

  • Yang小胖子 (作者)

    回复 Yang小胖子: 并且经过测试 这个问题是因为 import { i18n } from '../../main'; 导致的

    目前程序在H5跑没问题 APP没有测试

    2024-02-23 15:55

  • Yang小胖子 (作者)

    将i18n实例放在一个单独的js文件中使用,解决上面的微信引入问题

    2024-02-23 16:18

  • JXWang

    回复 Yang小胖子: 能解决就行,单独引入i18n是合理的

    2024-02-23 20:08

要回复问题请先登录注册