Coder Social home page Coder Social logo

kiwi's Introduction

🐤 Kiwi-国际化全流程解决方案

中文 | English

如何使用

yarn global add kiwi-clis && yarn add kiwi-intl

VS Code 插件搜索 kiwi linter 安装

功能演示

  • 一键提取中文文案 提取文案

  • 检测代码中含有中文文案 中文文案检测

  • 搜索对应文案 文案搜索

使用文档及 API

可以到对应子目录中查看:

kiwi-intl: 📝 文档链接

kiwi-cli: 📝 文档链接

kiwi-linter: 📝 文档链接

Change Log

kiwi-cli: 📝 点击此处查看

kiwi-linter: 📝 点击此处查看

为什么使用 kiwi?

目前有很多成熟的库可以帮助前端去做对应的国际化方案,比较知名的有 react-intl 以及 I18N-loader。这些库都可以很好的解决代码中多种语言切换的问题,但是也存在如下没有解决的问题:

  • 文案使用国际化 Key 代替后,难以搜索,文案不直观
  • 代码中的中文提取困难
  • 无法知道项目中是不是还有未提取的中文文案

而且这些国际化库并没有解决下列问题:

  • 国际化涉及到多个相关人员,与各个业务方有交流众多。比如导出翻译文案给翻译团队

而在国际化过程中,在还没有拿到对应语言文案的时候,相关文案的长度也给 UI 上的调整也给前端增加了很多难度

  • 不认识对应语言,或者不知道对应语言的显示长度,UI 上不知道如何处理 而 kiwi 就是为了解决上述的问题而创造的。

Kiwi 解决了哪些问题

kiwi 不仅仅一个软件国际化的代码库,而是国际化从设计到发布的整个流程的一整套解决方案。

kiwi

kiwi 整体基于 kiwi-intl 国际化框架,实现与框架无关的语言切换功能。

在开发过程中,使用 kiwi linter 实现中文文案的批量自动提取,同时针对替换后的文案变量,在 VS Code 中显示对应的中文文案。当然你也可以全局搜索中文文案,跳转到对应的代码,很好的解决了国际化过程中由于中文文案缺失造成的开发体验问题。

在翻译过程中,可以使用 kiwi 命令行自动提取未送翻词汇,整理成 Excel 方便与翻译同学协作。针对翻译同学还没有返回翻译文案的期间,可以使用 kiwi 内置的支持 google 以及 多种翻译平台的自动翻译脚本,先临时翻译成对应语言,节省文案调整时间。

国际化文案翻译完成后,可以使用 kiwi 的命令行工具,一键导入到项目文件内。

kiwi 还提供了对应 TSLint 的插件,使用 TSLint 在开发过程中实时提醒未抽离文案,以及在代码提交的时候,拦截未国际化的代码提交。

谁在使用

  • 阿里巴巴

为什么叫 kiwi?

kiwi 是一种不会飞翔的鸟类🐤,但它善于奔跑,时速可达 10 英里,它的鼻孔长在喙部的最尖端,具有奇特的嗅觉功能,可以找到距地面 7 英寸土层下的小虫。kiwi 这个项目也能帮你找到项目国际化过程中的小虫。

钉钉用户群

License

MIT

kiwi's People

Contributors

aotemj avatar bigbigbo avatar byeval avatar camsong avatar charliecheung2 avatar chenglie33 avatar cuiyueshuai avatar dayuy avatar doubledream avatar flonny avatar huqingliang avatar linhuiw avatar linningmii avatar perkinj avatar simonwong avatar snys98 avatar xiaohuoni avatar zongwenjian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kiwi's Issues

Extension keeps complain "command not found"

Extension keeps complain "command not found" for every command.
插件持续报错, 每个命令都无法正常使用.
image

environment:
相关环境:
image

Am I missing some configuration or some what?
使用kiwi是不是需要一些其他的额外配置呢?

Please contact me if you need further infomation.
如果需要其他信息, 请联系我.

Thanks!😄

能否配置部分文本不进行提取?

问题:在提取的过程中发现诸如"【】","中文逗号,"," 接中文的"也一并被提取出来了,导致了一些问题。
image
image
image
image

期望:能否配置部分文本不进行提取?

更新vscode后插件无法启用

更新vscode版本至最新版本后插件无法正常启动

image

插件版本信息:
Name: kiwi-linter
Id: undefinedvs.vscode-i18n-linter
Description: A VSCode extension to identify and extract string literals for js(x)/ts(x) files
Version: 1.4.1
Publisher: undefinedvs
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=undefinedvs.vscode-i18n-linter

环境相关信息
Version: 1.60.0 (system setup)
Commit: e7d7e9a9348e6a8cc8c03f877d39cb72e5dfb1ff
Date: 2021-09-01T10:41:52.311Z
Electron: 13.1.8
Chrome: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS: Windows_NT x64 10.0.19043

想咨询一个翻译的方案

我们的翻译组定了一个方案是:

词语后面跟后缀来代表不同的状态,比如

i18n.xxxx.sure_btn btn代表可以点击的按钮或链接,翻译组会根据这个翻译成 确定

i18n.xxxx.sure_msg msg代表文案类,无法点击的,可能会翻译成肯定

以上只是一个例子,因为大部分情况翻译都有可能是交给第三方去翻译,而第三方并不会逐个去看你们的页面,所以这些后缀就起了比较关键的作用。


但我认为这个方案并不成熟,特别是**语言博大精深,现在我们定义一个量词也需要后面加_msg,而且对于开发的心智负担会特别大

想咨询下阿里这边是否有比较好的方案或者规范

当然这个并不是这个项目的issues,如果觉得不合适可直接close

建议插件增加对vue项目的支持

对于vue文件,安装了kiwi linter后,vscode-i18n-linter.i18nFilesPattern属性增加对vue的匹配,可以提取中文到语言配置表中,但是会提示I18N不存在,以及vue相应的取值语法是{{}},现在自动生成的是{},导致取不出值

有哪些产品在使用 Kiwi?

本帖持续更新,大家产品中有使用 Kiwi 的麻烦留言,方便统计 Kiwi 的业务价值。
跟帖格式

产品名:
产品地址:

建议插件增加对window系统的支持

问题:window系统下的插件运行会出错,希望增加对window文件系统的支持~
例子: kiwi-linter/extension.ts

        /** 如果没有匹配到 Key */
        if (!(suggestion && suggestion.length)) {
          const names = currentFilename.split('/');
          const fileName = _.last(names);
          const fileKey = fileName
            .split('.')[0]
            .replace(new RegExp('-', 'g'), '_');
          const dir = names[names.length - 2].replace(
            new RegExp('-', 'g'),
            '_'
          );
          if (dir === fileKey) {
            suggestion = [dir];
          } else {
            suggestion = [dir, fileKey];
          }
        }

currentFilename.split('/') 这个不能分割window下的用\分割目录结构,会报错

vscode 安装了kiwi-linter怎么一键导出项目中的中文文案

vscode-i18n-linter.i18nFilesPattern设置"default": "/src//.+(vue|js|html|ts*)"
kiwi --init kiwi --export导出的是已经定义的变量跟文案
未自定义中文变量情况下,需要一键抽取项目中所有的中文生成文件,提供给翻译人员,目前有这样的功能吗?未看到有快捷键、命令

请问能否导出为json或者po格式

搭建了weblate翻译协作平台,可支持po,json,csv,yaml等格式,但是没有txt,选择了po格式也可以翻译txt的文件,但是下载下来就是po格式的文件了

Future

  1. 一键全部提取 - #18
  2. .kiwi/config 收敛配置。

es6模版字符串国际化处理提醒

比如const text = `你有${nums}条消息`在nums为1和不为1的时候翻译是不一致的,这种情况下翻译可能会不准确,希望针对这种情况增加提示,比如替换完成后生成一个kiwi-notice.txt文件,里面是收集到的是带变量模版字符串的位置,提示用户注意这里。

执行“kiwi --export”提示“Cannot find name 'exports'”

执行“kiwi --export”提示以下报错,请问是哪里出问题了,可以给一点提示吗?万分感谢!
TSError: ⨯ Unable to compile TypeScript: .kiwi/zh-CN/ChannelHeader.ts(2,23): error TS2304: Cannot find name \'exports\'. .kiwi/zh-CN/ChannelHeader.ts(3,1): error TS2304: Cannot find name 'exports'. at createTSError (C:\Users\Administrator\AppData\Local\Yarn\Data\global\node_modules\ts-node\src\index.ts:261:12) at getOutput (C:\Users\Administrator\AppData\Local\Yarn\Data\global\node_modules\ts-node\src\index.ts:367:40) at Object.compile (C:\Users\Administrator\AppData\Local\Yarn\Data\global\node_modules\ts-node\src\index.ts:558:11) at Module.m._compile (C:\Users\Administrator\AppData\Local\Yarn\Data\global\node_modules\ts-node\src\index.ts:439:43) at Module.m._compile (C:\Users\Administrator\AppData\Local\Yarn\Data\global\node_modules\ts-node\src\index.ts:439:23) at Module._extensions..js (module.js:663:10)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.