Skip to content

vue项目使用,翻译的语种限制在英文,日本等几种之内,不知是否使用问题 #54

@viastronger

Description

@viastronger

背景:
我们产品本身是简体中文语言,但是某些页面的部分内容会显示国外网站的信息(这些信息语种不固定,什么都有可能),需要将这些信息翻译成简体中文

使用:

onMounted(()=>{
  const el = document.querySelect('className')
  translate.setDocuments([el])
  translate.listener.start()
  nextTick(()=>{
     translate.execute()
     setTimeout(()=>{
        translate.execute()
     }, 500)
  })
})

// 等接口获取了内容,dom渲染之后调用的方法
const changeLanguage = () => {
    translate.changeLanguage('chinese_simplified')
}

效果:

  1. 如果这些原文信息是英文,日文这种的能成功翻译,但如果是匈牙利语,就会翻译失败
  2. 可是假如我直接调用 translate.request.translateText方法,传入正确的from,to参数是能翻译成功的,也就是说不是翻译能力有问题,而是changeLanguage方法有问题(个人猜测)
  3. 看了控制台请求,发现这个changeLanguage方法请求translate.json接口时,传的from:english ,可是明明是匈牙利语,所以个人认为是from参数导致的问题
  4. 查看源码里面的方法,发现getCharLanguage方法只判断了russian,english,romance,等几种语言,所以导致from参数只能判断这几种语言,如果是其他语言就会失败了
  5. 而且我在使用setLocal设置本地语言时,发现也没有作用
  6. 不管我是使用script引入的js还是用npm安装的 i18n-jsautotranslate都有这个问题

请问我改怎么做才能实现需要的需求
页面整体是简体中文,部分内容需要翻译成简体中文,而且需要翻译的原文语种不固定,有可能是任何一种语言

目前我是自己通过修改了源码里面的getCharLanguage方法,强行获取setLocal方法设置的语种,来修改from参数才能实现的
但是这样使用有个问题,就是每次进入这个页面我都得先调用setLocal方法先设置原文语种,然后再执行 changeLanguage方法

或者建议修改changeLanguage方法,添加一个from参数,现在我的理解是这个方法只有to参数
如果是我使用有问题,麻烦指导一下修改,谢谢

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions