Vue3.0添加全局自定义音译指令 / 前端实现中文名称自动翻译成英文名称

1.定义全局指令transliteration.js

import { transliterate as tr, slugify } from 'transliteration'  
export default {
  mounted(el) {
    const nameEl =  el.querySelector('.nameEl>input') //中文文本框
    const codeEl =  el.querySelector('.codeEl>input') //英文文本框
    let isFirstInput = true
    nameEl.addEventListener('keyup', () => {
      const isEmpty = !codeEl.value 
      //仅当code值为空时,才进行自动翻译。如果code值已填写,不翻译
      if (isEmpty || !isFirstInput) {
          isFirstInput = false
          codeEl.value = slugify(nameEl.value, { separator: '_' }) //翻译后的英文字符串
          //自定义事件:触发被翻译字段的视图刷新
          const inputEvt = document.createEvent("HTMLEvents")
          inputEvt.initEvent('input',false,false)
          codeEl.dispatchEvent(inputEvt)
      }
    })
  }
}

 注意点:

1、在引入transliteration之前需要先安装插件: npm install transliteration --save

2、音译插件使用方法参考https://github.com/dzcpy/transliteration

2.在main.js中注册指令

//引入自定义指令
import transliteration from '@/directive/transliteration'

const app: ReturnType<typeof createApp> = createApp(App) //相当于Vue
app.directive('transliteration',transliteration) //注册自定义指令

//下面的是路由以及store等的注册
initElement(app)
app.config.globalProperties.$ELEMENT = {'size': 'small'}
app
  .use(router)
  .use(store, key)
  .mount('#app')

 

3.在页面组件中使用v-transliteration

 

posted @ 2021-07-30 16:37  敏秀  阅读(647)  评论(0编辑  收藏  举报