VSCode使用‘用户代码片段’快速国际化

231 阅读1分钟

代码国际化是个非常枯燥繁琐的重复性工作,你需要创建多个语言文件,把中文复制进去,给中文取个名称,再把名称复制代码里中文的位置,按照不同的格式写完整。

其中有大量重复代码,比如 {{}},this.$t,还有国际化模块对应的名称main.,drawer.之类的,需要复制来复制去。

而设置用户代码片段可以简化复制黏贴这个步骤,减少国际化30%的时间。

这里以vscode为例,点击设置 ——> 选择用户代码片段——>新建全局代码片段——>输入文件名,会得到一个 .code-snippets的文件。

微信图片_20210610162923.png

微信图片_20210610165526.png

将下面的代码复制进去,body中的passenger 可以根据国际化模块名修改。

{
  "vue-i18n-mall": { 
    "scope""vue-html",
    "prefix""vt",
    "body""\$t('passenger.$1')",
    "description""vue i18n mall"
  },
  "vue-i18n-mall-close": {
    "scope""vue-html",
    "prefix""vtc",
    "body""{{\$t('passenger.$1')}}",
    "description""vue i18n mall"
  },
  "vue-i18n-mall-js": {
    "scope""javascript, typescript",
    "prefix""vt",
    "body""this.\$t('passenger.$1')",
    "description""vue i18n mall"
  },
  "vue-i18n-mall-external": {
    "scope""javascript, typescript",
    "prefix""vte",
    "body""i18n.t('passenger.$1')",
    "description""vue i18n mall"
  }
}

vue-i18n-mall是代码片段对应的名称,可随意设置,触发代码片段的时候会展示匹配到的代码片段名称。

微信图片_20210610165957.png

scope是代码片段生效的范围。因为创建的是全局代码片段,需要设置scope。目前我知道的scope有vue-html,javascript,,typescript,html,css。编辑器里已有一些默认的对应语言代码片段,可以直接使用,不需要加scope。

prefix是触发代码片段的字符,可随意设置。

body对应代码片段内容,可以是字符串,也可以为数组。

body中的 $1 代表输入prefix回车后光标出现的位置。比如按照上面的代码,光标会出现在 passenger. 之后。也有$2 $3 ...... ,表示使用tab键后光标的位置。

description对应代码片段描述。

在代码中表现为 微信图片_20210610171308.png

微信图片_20210610203517.png

微信图片_20210610203605.png

好了,现在大家可以愉快地进行国际化了。

当然,代码片段还能在其它地方提升开发效率。

比如输入log,会得到 console.log(); 。这个是vscode自带的片段,不需要我们设置。

比如在vue.json中写入下面的代码,新建vue文件时,直接输入vue就能得到一个基础vue模板。

{
    "Print to console": {
        "prefix": "vue",
        "body": [
            "<template>",
            "  <div>",
            "    $1",            // 光标位置
            "  </div>",
            "<\/template>",
            "",                  // 表示空行
            "<script>",
            "export default {",
            "  components: {},",
            "",
            "  props: {},",
            "",
            "  data () {",
            "    return {$2}",
            "  },",
            "",
            "  computed: {},",
            "",
            "  watch: {},",
            "",
            "  created () {},",
            "",
            "  mounted () {},\n",
            "  methods: {}",
            "}",
            "<\/script> ",
            "",
            "<style lang=\"scss\" scoped>", // 双引号需要加上转义符\,其它符号其实不用加
            "",
            "<\/style>",
        ],
        "description": "Vue"
    }
}

微信图片_20210610210035.png

如果你想删除代码片段文件,只需要去指定的文件夹删除就行了。

微信图片_20210610210233.png