1.0.1-beta.1 • Published 19 days ago

@liutsing/babel-plugin-auto-i18n v1.0.1-beta.1

Weekly downloads
-
License
ISC
Repository
-
Last release
19 days ago

@liutsing/babel-plugin-auto-i18n

function

auto transform chinese string to t invoke expression

usage

in babel config file like .babelrc,

{
  "plugins": [["@liutsing/babel-plugin-auto-i18n"]]
}

access i18n in dom

const elements = document.querySelectorAll('[data-i18n]')
const i18nValues = Array.from(elements).map((el) => JSON.parse(el.getAttribute('data-i18n')))
const totalI18nKeys = Array.prototype.concat.apply([], i18nValues)
const uniqiqI18nKeys = [...new Set(totalI18nKeys)]
console.log(uniqiqI18nKeys)

TODO

1.0

  • 支持 jsxText 内的文本转换
  • 支持 stringLiteral 内的文本转换
  • 支持 templateElement 内的文本转换
  • Avoid unnecessary calls to the useTranslation function.
  • unnecessary import will be tree-shaking by webpack
    •   optimization: {
          sideEffects: false,
        }
  • 多个 plugins,含同样的节点遍历逻辑,测试访问顺序
  • i18n-ignore comments
  • 支持 templateLiteral 的文本,文本插槽功能 <<<<<<< HEAD
  • jsxText/jsxAttribute/jsxExpressionContainer 下的 stringLiteral 注入 data-i18n 属性
    • jsxText
    • jsxExpressionContainer
    • jsxAttribute
    • TemplateLiteral
      • TemplateElement
    • jsxAttribute 注入是否 react render 时会被保留 -> 组件框架或自定义组件处理
    • jsxAttribute 其他属性也需要加入到data-i18n属性上
  • jsxText
  • templateLiteral
  • 非 jsx 中的字符串绑定到根元素的 dom 上 -> 简化逻辑实现(平台手动维护辅助)
    • 注意条件判断下的场景

  • jsxText/jsxAttribute/jsxExpressionContainer 下的 stringLiteral 注入 data-i18n 属性,页面上的访问方式:
    • jsxText
    • jsxAttribute 注入是否 react render 时会被保留
    • jsxExpressionContainer
    • jsxAttribute 其他属性也需要加入到data-i18n属性上
    • jsx 其他的键绑定到根元素的 dom 上?

      i18n-1.1.beta

ideas

  • templateLiteral 不影响现有的手动处理的t('xx', {count;'xxx'}) 之类的
  • bench the performance of this plugin
  • support class component
  • support option source language
  • 删除冗余的导入
  • 其他节点的处理方式呢?
    • 比如 message.info('xx'), 函数改写再注入?
1.0.1-beta.1

19 days ago