vue3.0处理返回值json中英文字段cn/en,实现前端语言切换

由于vue3中移除了filter,鼓励使用函数方法或者计算属性来处理原filter所做的事情,所以今天我们的目标是使用方法来处理所传的lang参数,从而实现语言切换。这里后端会一次性传给前端的name中包含cn和en字段,前端来做对应的转化处理。

在src根目录新建一个utils文件夹,新建index.js,这里我们编写lang方法,用于处理如下含有中英文的json:(目标为name字段,其下的cn和en)

{
    "data": {
        "content": [
            {
                "name": {
                    "cn": "品质",
                    "en": "Quality"
                },
                "url": "/src/assets/1.png"
            },
            {
                "name": {
                    "cn": "款式",
                    "en": "Style"
                },
                "url": "/src/assets/2.png"
            },
            {
                "name": {
                    "cn": "价格",
                    "en": "Price"
                },
                "url": "/src/assets/3.png"
            }
        ]
    }
}

index.js

let utils = {
    lang(value, lang, placeholder) {
        if (value && value[lang] && value[lang].length > 0) {
            return value[lang]
        } else if (value) {
            let others = Object.keys(value).filter(attr => attr != lang)
            if (others && others.length > 0 && value[others[0]] && value[others[0]].length > 0) {
                return value[others[0]]
            } else {
                return placeholder || ''
            }
        }
    }
}

export default utils

然后就是调用了:

import utils from '@/utils/index'
...

const { data: res } = await axios.$get(`xxxxxx`)
//这里使用了i18n,你也可以换成自己的初始lang字段,如'cn'
//作为示例数组下标挂0,正常使用应该需要循环传index过来
utils.lang(res.content[0].name, $i18n.locale)

所得结果如下:(这里在控制台中直接模拟)

 

 这样我们就完成了对name字段进行语言切换显示的处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值