0.0.11 • Published 2 months ago

i18n-auto-react v0.0.11

Weekly downloads
-
License
ISC
Repository
github
Last release
2 months ago

i18n-auto-react

  • 基于 百度翻译API服务 的自动翻译工具
  • 只需要书写中文,即可自动翻译成其他语言

安装

npm install i18n-auto-react
# or
yarn add i18n-auto-react
# or
pnpm install i18n-auto-react

使用

1. 前提准备

  1. 使用前请去百度翻译开放平台申请 通用文本翻译服务
  2. 执行 npx i18n init 初始化配置 i18n.config.js
  3. 配置 server.appidserver.key (百度翻译服务的密钥)

2. 生成语言包

  1. 执行 npx i18n translate 扫描文件中的中文并翻译成语言包
  2. 执行 npx i18n genExport 生成语言包导出文件

3. 添加插件

webpack 项目

module.exports = {
  module: {
    rules: [
      {
        enforce: "pre",
        test: /\.(js|jsx|ts|tsx)$/,
        loader: 'i18n-auto-react/webpack',
      },
      // ...other loader
    ]
  }
}

vite 项目

// vite.config.js
import { i18nAutoPlugin } from 'i18n-auto-react/vite'

export default defineConfig({
  plugins: [
    // ...other plugin
    i18nAutoPlugin()
  ]
})

效果展示

  • 插件的作用是把文件中的中文自动替换为翻译函数调用
  • 带有注释的 (aa, bb),或者本来就有翻译函数包裹 (cc) 的会忽略翻译

转换前

import React from 'react'
import { i18n as _i18n } from 'i18n-auto-react'

let world = '世界'
// i18n-disable-next
let aa = '我是被忽略翻译的中文'
let bb = '我也是被忽略翻译的中文' // i18n-disable
let cc = _i18n('我也也是被忽略翻译的中文')

export default function App() {
  return (
    <div>
      <h3 title="花飘万家雪">你好{world}</h3>
      <h3>{aa + bb + cc}</h3>
    </div>
  )
}

转换后

import React from 'react';
// 如当前页面有需要翻译的中文时,会自动引入
import { i18n as _i18n } from "i18n-auto-react";

let world = _i18n("c086b3008aca0efa8f2ded065d6afb50");
// i18n-disable-next
let aa = '我是被忽略翻译的中文';
let bb = '我也是被忽略翻译的中文'; // i18n-disable
let cc = _i18n('我也也是被忽略翻译的中文')

export default function App() {
  return (
    <div>
      <h3 title={_i18n("29fd4016d2b8d06be750109579b7301e")}>
        {_i18n("7eca689f0d3389d9dea66ae112e5cfd7")}{world}
      </h3>
      <h3>{aa + bb + cc}</h3>
    </div>
  )
}

4. 切换语言

import React from 'react'
import { changeLanguage, currentLanguage } from 'i18n-auto-react'

export default function App() {
  return (
    <div>
      <button
        onClick={() => {
          // 获取当前语言
          let currLng = currentLanguage()
          // 切换语言
          changeLanguage(currLng == 'zh' ? 'en' : 'zh')
        }}
      >
        切换语言
      </button>
    </div>
  )
}
0.0.11

2 months ago

0.0.10

9 months ago

0.0.9

9 months ago

0.0.8

10 months ago

0.0.5

10 months ago

0.0.7

10 months ago

0.0.6

10 months ago

0.0.3

10 months ago

0.0.2

10 months ago