Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Panda I18NNew to Visual Studio Code? Get it now.
Panda I18N

Panda I18N

cn-panda

|
325 installs
| (0) | Free
Panda 文案国际化插件,结合语言包
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Panda I18N

Panda I18N 的 'VS Code' 插件工具,让项目支持多语言,基于 AST 语法分析完成文案提取、命名和替换,高亮出字符串,并且自动生成相关依赖, 让一个应用在二十秒内具有多语言切换能力。整个改造过程几乎不需要任何的开发成本。

  • vscode 插件 ,自动识别文案
  • vscode 插件, 提取文案上传到 Panda 语言包,自动检索匹配文案、新增文案、自动生成 key
  • vscode 插件,文案替换 {$i18n.get({id:"welcome_rhnlna",dm:"欢迎使用"})
  • 配套 Panda 文案管理平台,标准化开发流程

如何使用

VS Code 插件搜索 Panda I18N 安装

安装成功后,command + shift + p 唤起命令行

命令-文案识别标识(当前文件): Panda:Search inside Current File for I18N(mcms) Strings(查找当前文件中的所有文案)

命令-文案上传语言包: Panda:Upload Strings to Panda Pack(上传文案到语言包)

命令-国际化文案: Panda:Format Strings to Support I18n(根据语言包格式化代码)

配置项

项目根目录下创建 panda.config.js

配置项参考: https://yuque.antfin-inc.com/ioc-doc/must-doc/qsgpqk

样例如下

module.exports = {
  extract: {
    name: 'gwms-aer',
    sourcePath: 'src',
    fileType: 'js',
    prettier: false,
    debug: false,
    strict: false, //是否为严格模式,非严格模式下,"查询","查询+" ,"查询:"等会被同一个词替换
    runtimeCheck: false, //文档更新时是否实时监测当前文档文案变化 ,从而找到匹配的文案
    include: (path) => {   // 需要匹配的文件路径  
     //  return path.includes('src/pages/outbound'); // 
    //   // return path.includes('src/components'); // 
    // },
    exclude: (path) => {  //需要排除的文件路径
      return path.includes('.scss'); // 不处理 widgets 下的文件
    },

    medusa: {  //这里不用填
      appName: '',
    },
    pack: {
      id: 12,
      version: 1,
      env: 'pre',
    },

    macro: {
      path: 'src/i18n',
      method: '$i18n.get({id:"$key$",dm:"$defaultMessage$"})',
      import: 'import $i18n from "@alife/panda-i18n"',
      keySplitter: '.',
      showComment: true, //一些特殊替换的场景下,显示出文案注释,如 "查询+", "查询-"替换时,会在文案盘增加注释
      placeholder: (variable) => {
        return `{${variable}}`;
      },
      keyGenerator: (copy, filePath, config) => {
        const convertToCamelCase = (str) => {
          // 去除中划线分隔符获取单词数组
          let strArr = str.split(' ');
          // 如果第一个为空,则去掉
          if (strArr[0] === '') {
            strArr.shift();
          }
          // 遍历第二个单词到最后一个单词,并转换单词首字母为大写
          for (let i = 1, len = strArr.length; i < len; i++) {
            // 如果不为空,则转成大写
            if (strArr[i] !== '') {
              strArr[i] = strArr[i][0].toUpperCase() + strArr[i].substring(1);
            }
          }
          return strArr.join('');
        };
        let selfKey = convertToCamelCase(copy['en-US']);
        console.log(selfKey, 'selfKey');
        return selfKey;
      },
      dependencies: ['@ali/global-locale', '@ali/global-string-format'],
    },
    babel: {
      allowImportExportEverywhere: true,
      decoratorsBeforeExport: true,
      plugins: [
        'asyncGenerators',
        'classProperties',
        'decorators-legacy',
        'doExpressions',
        'exportExtensions',
        'exportDefaultFrom',
        'typescript',
        'functionSent',
        'functionBind',
        'jsx',
        'tsx',
        'json',
        'objectRestSpread',
        'dynamicImport',
        'numericSeparator',
        'optionalChaining',
        'optionalCatchBinding',
      ],
    },

    isNeedUploadCopyToMedusa: true,
    sourceLang: 'zh-CN',   //源语言
  },
  import: {    
    type: 'json',
    path: 'src/i18n',
    medusa: {
      appName: '',
    },
  },
};

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft