# vve-i18n-zh-wrap-cli
[](https://travis-ci.org/vue-viewer-editor/vve-i18n-cli)
把vue和js中的中文包裹一层国际化函数,配合[vve-i18n-cli](README.md)可以直接生成国际化资源文件
## 例子
vue文件
```vue
```
vue文件转换后
```vue
```
js文件
```js
const OPTIONS = [
{ label: '希望', value: 1 },
{ label: '爱情', value: 2 },
]
```
js文件转换后
```js
import { i18n } from '@/i18n'
const OPTIONS = [
{ label: i18n.t('希望'), value: 1 },
{ label: i18n.t('爱情'), value: 2 },
]
```
## 安装
使用npm安装:
```
$ npm install vve-i18n-cli
```
## 使用
在package.json添加
```json
"scripts": {
"i18n-zh-wrap": "vve-i18n-zh-wrap-cli"
}
```
然后 `npm run i18n-zh-wrap`
## 参数
### 命令行指定参数
```javascript
program
.version(require('../../package.json').version)
.option("--cwd ", "工作目录")
.option("--root-dir ", "国际文本所在的根目录")
.option(
"--config ",
"配置文件的路径,没有配置,默认路径是在${cwd}/vve-i18n-cli.config.js"
)
.option("--disable-config-file", "是否取配置文件")
.option(
"--i18n-file-rules ",
"匹配含有国际化文本的文件规则",
commaSeparatedList
)
.option(
"--ignore-i18n-file-rules ",
"不匹配含有国际化文本的文件规则",
commaSeparatedList
)
.option(
"--ignore-pre-geg ",
"被忽略的前缀,是个数组",
commaSeparatedList
)
.option(
"--ignore-text ",
"被忽略的文本,是个数组",
commaSeparatedList
)
.option(
"--ignore-attr ",
"被忽略的属性,该属性的value值如果是中文,则不会被包裹,是个数组",
commaSeparatedList
)
.option(
"--disabledRules ",
"如果满足匹配的内容,就忽略包裹",
commaSeparatedList
)
.option("--i18n-import-for-js - ", "js相关文件需要引入的国际化文件")
.option("--js-i18n-func-name
- ", "js相关文件需要使用国际化方法")
.option("--vue-i18n-func-name
- ", "vue相关文件需要使用的国际化方法")
.option("--vue-i18n-func-name-prefix
- ", "vue相关文件需要使用的国际化方法前缀")
.parse(process.argv);
```
### 配置文件指定参数
默认配置文件在${cwd}/vve-i18n-cli.config.js,样例内容如下所示
```javascript
module.exports = {
zhWrap: {
rootDir: 'src',
i18nFileRules: ["**/*.+(vue|js)"],
}
}
```
### 默认值
```javascript
const config = {
// 工作目录
cwd: ".",
// 根目录,国际文本所在的根目录
rootDir: "src",
// 配置文件的路径,没有配置,默认路径是在${cwd}/vve-i18n-cli.config.js
config: undefined,
// 是否取配置文件
disableConfigFile: false,
// 匹配含有国际化文本的文件规则
i18nFileRules: ["**/*.+(vue|js)"],
// 不匹配含有国际化文本的文件规则
ignoreI18nFileRules: [],
// 被忽略的前缀
ignorePreReg: [
/t\s*\([\s\n]*$/,
/tl\s*\([\s\n]*$/,
/console\.(?:log|error|warn|info|debug)\s*\(\s*$/,
new RegExp("//.*"),
],
// 被忽略的文本
ignoreText: [
/t\(/,
/tl\(/,
],
// 被忽略的属性,该属性的value值如果是中文,则不会被包裹
ignoreAttr: [],
// 如果满足匹配的内容,就忽略包裹
disableRules: [
// 单行禁用,使用:在当前行添加 // vve-i18n-zh-wrap-disable-line
/(.*\/\/(?:[^\S\r\n]*|.*[^\S\r\n]+)vve-i18n-zh-wrap-disable-line(?:[^\S\r\n]*|[^\S\r\n]+.*))/g,
// 下一行禁用,使用:在上一行添加 // vve-i18n-zh-wrap-disable-next-line
/\/\/(?:[^\S\r\n]*|.*[^\S\r\n]+)vve-i18n-zh-wrap-disable-next-line(?:[^\S\r\n]*|[^\S\r\n]+.*)\n(.+)/g,
// 代码块禁用,使用:在需要的地方包括
/\/\*\s*vve-i18n-zh-wrap-disable\s*\*\/([\s\S]*?)(?:(?:\/\*\s*vve-i18n-zh-wrap-enable\s*\*\/)|$)/g
],
// js相关文件需要引入的国际化文件
i18nImportForJs: "import i18n from '@/i18n'",
// js相关文件需要使用国际化方法
jsI18nFuncName: 'i18n.t',
// vue相关文件需要使用的国际化方法
vueI18nFuncName: '$t',
// vue相关文件需要使用的国际化方法前缀
vueI18nFuncNamePrefix: 'this.',
};
```
### 开发
- node >= 8
```
npm i // 安装依赖
npm test // 测试
npm run release // 发布
git push --follow-tags origin master && npm publish // npm 发布
```
## 捐赠
如果你觉得它有用,你可以给我买一杯奶茶。