V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lisongeee
V2EX  ›  分享创造

基于 AST 的前端中文迁移国际化代码提取替换工具

  •  
  •   lisongeee ·
    lisonge · 49 天前 · 1624 次点击
    这是一个创建于 49 天前的主题,其中的信息可能已经有所发展或是发生改变。

    源代码 -> https://github.com/lisonge/i18n-ast-convert

    leader 叫我写用来给公司项目快速迁移用的,个人感觉效果还不错,开源出来给大家参考参考

    基于 AST 的中文迁移国际化代码提取替换工具

    • 支持 js/ts/jsx/tsx/vue 文件
    表达式 提取模版 替换结果
    '苹果' 苹果 $t('key')
    a+'个苹果' {0}个苹果 $t('key', [a])
    `${a}个苹果和${b}个香蕉${c}` {0}个苹果和${1}个香蕉${2} $t('key', [a, b, c])
    a+'个苹果和'+b+'个香蕉'+c {0}个苹果和${1}个香蕉${2} $t('key', [a, b, c])
    <div title="苹果" /> 苹果 <div :title="$t('key')" />
    <div>{{a}}个苹果</div> {0}个苹果 <div>{{$t('key', [a])}}</div>

    以及它们互相连续和嵌套的情况

    img

    img

    img

    使用

    安装

    git clone https://github.com/lisonge/i18n-ast-convert.git
    cd i18n-ast-convert
    pnpm i
    

    运行

    pnpm start -d your-project-path
    

    这将自动转换该项目代码并生成 zh-CN.json 文件

    4 条回复    2025-07-02 10:36:18 +08:00
    shylockhg
        1
    shylockhg  
       49 天前
    哥们真胆大啊,公司项目开源了。
    snarkprayer
        2
    snarkprayer  
       48 天前
    能自动添加 useTranslation 吗?
    lisongeee
        3
    lisongeee  
    OP
       48 天前
    @snarkprayer #2

    这个只会在当前文件顶部添加一条导入语句,因为普通的 js 文件(非组件)在模块作用域 也有转换

    你说的这个要自定义判断特定作用域实现
    7gugu
        4
    7gugu  
       12 天前
    正想着做这么一个工具了,没想到立刻就有人做了,太棒了
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5851 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:05 · PVG 10:05 · LAX 19:05 · JFK 22:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.