npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

auto-translation-i18n

v0.0.2

Published

一键分析项目中的 i18n 多语言 key 自动翻译到所需语言并生成对应 json 文件

Downloads

17

Readme

auto-translation-i18n

一键分析项目中的 i18n 多语言 key 自动翻译到所需语言并生成对应 json 文件

1.安装

npm i auto-translation-i18n

2.使用

在项目根目录下创建 autotranslation.config.ts 或者 autotranslation.config.js

// autotranslation.config.ts
import { Lang } from 'auto-translation-i18n/types'
import { defineConfig } from 'auto-translation-i18n/utils'

export default defineConfig({
  // 需要分析的源代码文件
  entrys: [
    'app.ts', // 导入单个文件
    'components/*', // 导入 components 目录下所有文件(非递归)
    'pages/**/*',// 递归导入 pages 目录下所有文件
  ],
  // 分析完成后输出 json 文件的路径
  output: 'public/locales/zh',
  // 翻译配置
  translateConfig: {
    // 代理配置,采用 Google 翻译,国内必须代理
    proxy: {
      ip: '127.0.0.1',
      port: 7890,
    },
    // 源代码文件中文案使用的语言
    fromLang: Lang['zh-CN'],
    // 翻译输出配置,可同时翻译多种语言
    to: [
      {
        // 目标语言
        targetLang: Lang.en,
        // 翻译完成后输出 json 文件的路径
        outPath: 'public/locales/en',
      },
      {
        targetLang: Lang.id,
        outPath: 'public/locales/id',
      },
    ],
  },
})

在 package.json 中添加 script 命令

"scripts": {
  "translation": "autotranslation"
},

在终端执行 npm run translation 即可。

3.注意事项

1.项目源代码中文案调用后面的参数不能换行

// ❌ 错误示例
const App = () => {
  const { t } = useTranslation('common');
  return (
    <p>{ t('你好 {{name}}', {
      name: '世界'
    }) }</p>
  );
}
// ✅ 正确示例
const App = () => {
  const { t } = useTranslation('common');
  return (
    <p>{ t('你好 {{name}}', { name: '世界' }) }</p>
  );
}

2.文案模块命名若不同则禁止在内部嵌套子组件

// ❌ 错误示例
const App = () => {
  const { t } = useTranslation('namespace1');
  const Component = () => {
    const { t } = useTranslation('namespace2');
    return (
      <p>{ t('你好') }</p>
    );
  }
  return (
    <div>
      <Component />
      <p>{ t('世界') }</p>
    </div>
  );
}
// ✅ 正确示例
const Component = () => {
  const { t } = useTranslation('namespace2');
  return (
    <p>{ t('你好') }</p>
  );
}
const App = () => {
  const { t } = useTranslation('namespace1');
  return (
    <div>
      <Component />
      <p>{ t('世界') }</p>
    </div>
  );
}

3.禁止重命名文案调用函数名

// ❌ 错误示例
const App = () => {
  const { t: getText } = useTranslation('common');
  return (
    <p>{ getText('你好') }</p>
  );
}
// ✅ 正确示例
const App = () => {
  const { t } = useTranslation('common');
  return (
    <p>{ t('你好') }</p>
  );
}

4.禁止传递文案调用函数

// ❌ 错误示例
const Component = (props) => {
  return (
    <p>{ props.t('你好') }</p>
  );
}
const App = () => {
  const { t } = useTranslation('common');
  return (
    <Component t={t} />
  );
}
// ✅ 正确示例
const Component = () => {
  const { t } = useTranslation('common');
  return (
    <p>{ t('你好') }</p>
  );
}
const App = () => {
  return (
    <Component />
  );
}

4.帮助

语言简称汇总,也可在 auto-translation-i18n/types 中查看 Lang

  • 中文:zh-CN
  • 中文(繁体):zh-TW
  • 英语:en
  • 越南语:vi
  • 阿尔巴尼亚语:sq
  • 阿拉伯语:ar
  • 阿塞拜疆语:az
  • 爱尔兰语:ga
  • 爱沙尼亚语:et
  • 白俄罗斯语:be
  • 保加利亚语:bg
  • 冰岛语:is
  • 波兰语:pl
  • 波斯语:fa
  • 布尔文(南非荷兰语):af
  • 丹麦语:da
  • 德语:de
  • 俄语:ru
  • 法语:fr
  • 菲律宾语:tl
  • 芬兰语:fi
  • 格鲁吉亚语:ka
  • 海地克里奥尔语:ht
  • 韩语:ko
  • 荷兰语:nl
  • 加利西亚语:gl
  • 加泰罗尼亚语:ca
  • 捷克语:cs
  • 克罗地亚语:hr
  • 拉脱维亚语:lv
  • 立陶宛语:lt
  • 罗马尼亚语:ro
  • 马耳他语:mt
  • 马来语:ms
  • 马其顿语:mk
  • 挪威语:no
  • 葡萄牙语:pt
  • 日语:ja
  • 瑞典语:sv
  • 塞尔维亚语:sr
  • 斯洛伐克语:sk
  • 斯洛文尼亚语:sl
  • 斯瓦希里语:sw
  • 泰语:th
  • 土耳其语:tr
  • 威尔士语:cy
  • 乌克兰语:uk
  • 西班牙的巴斯克语:eu
  • 西班牙语:es
  • 希伯来语:iw
  • 希腊语:el
  • 匈牙利语:hu
  • 亚美尼亚语:hy
  • 意大利语:it
  • 意第绪语:yi
  • 印地语:hi
  • 印度乌尔都语:ur
  • 印尼语:id