update init-command
This commit is contained in:
parent
fe8afcaff6
commit
5bc00d6e37
22
package.json
22
package.json
@ -14,28 +14,28 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.17.8",
|
"@babel/core": "^7.18.10",
|
||||||
"@babel/plugin-transform-runtime": "^7.17.0",
|
"@babel/plugin-transform-runtime": "^7.18.10",
|
||||||
"@babel/preset-env": "^7.16.11",
|
"@babel/preset-env": "^7.18.10",
|
||||||
"@rollup/plugin-babel": "^5.3.1",
|
"@rollup/plugin-babel": "^5.3.1",
|
||||||
"@rollup/plugin-commonjs": "^21.0.2",
|
"@rollup/plugin-commonjs": "^21.1.0",
|
||||||
"@vuepress/client": "^2.0.0-beta.49",
|
"@vuepress/client": "2.0.0-beta.49",
|
||||||
"autopub": "^1.0.2",
|
"autopub": "^1.0.2",
|
||||||
"commander": "^9.0.0",
|
"commander": "^9.4.0",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"dayjs": "^1.11.0",
|
"dayjs": "^1.11.4",
|
||||||
"deepmerge": "^4.2.2",
|
"deepmerge": "^4.2.2",
|
||||||
"dumi": "^1.1.47",
|
"dumi": "^1.1.47",
|
||||||
"enquirer": "^2.3.6",
|
"enquirer": "^2.3.6",
|
||||||
"fast-glob": "^3.2.11",
|
"fast-glob": "^3.2.11",
|
||||||
"fs-extra": "^10.1.0",
|
"fs-extra": "^10.1.0",
|
||||||
"gulp": "^4.0.2",
|
"gulp": "^4.0.2",
|
||||||
"inquirer": "^8.2.2",
|
"inquirer": "^8.2.4",
|
||||||
"jest": "^27.5.1",
|
"jest": "^27.5.1",
|
||||||
"logsets": "^1.0.20",
|
"logsets": "^1.0.20",
|
||||||
"pnpm": "^7.8.0",
|
"pnpm": "^7.9.0",
|
||||||
"prettier": "^2.2.1",
|
"prettier": "^2.7.1",
|
||||||
"rollup": "^2.70.1",
|
"rollup": "^2.77.2",
|
||||||
"rollup-plugin-clear": "^2.0.7",
|
"rollup-plugin-clear": "^2.0.7",
|
||||||
"semver": "^7.3.7",
|
"semver": "^7.3.7",
|
||||||
"shelljs": "^0.8.5",
|
"shelljs": "^0.8.5",
|
||||||
|
1
packages/apps/lib1/index.js
Normal file
1
packages/apps/lib1/index.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
console.log(t("这是一个测试"))
|
3
packages/apps/lib1/languages/en.js
Normal file
3
packages/apps/lib1/languages/en.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
"1": "这是一个测试"
|
||||||
|
}
|
113
packages/apps/lib1/languages/formatters/en.js
Normal file
113
packages/apps/lib1/languages/formatters/en.js
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
/**
|
||||||
|
|
||||||
|
格式化器用来对翻译文本内容中的插值变量进行处理
|
||||||
|
|
||||||
|
如何编写格式器请参阅官网!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// import { Formatter,FlexFormatter } from "./runtime"
|
||||||
|
export default {
|
||||||
|
// global : true, // 简单地设置为true,代表当前所有格式化器均注册到全局,false只在当前scope生效
|
||||||
|
// global : { // 仅将里面的格式化器注册到全局
|
||||||
|
// $config:{... }
|
||||||
|
// xxxx : value => { ... },
|
||||||
|
// xxxx : (value,$config) => { ... },
|
||||||
|
// xxxx : (value,...args,$config) => { ... },
|
||||||
|
// xxxx : Formatter(value,...args,$config) => { ... },
|
||||||
|
// xxxx : FlexFormatter(value,params,$config) => { ... },
|
||||||
|
//}, // 是否注册到全局,false只在当前scope生效
|
||||||
|
// 直接对内置格式化器进行配置,请参阅官网文档
|
||||||
|
// $config:{
|
||||||
|
// datetime : {
|
||||||
|
// units : ["Year","Quarter","Month","Week","Day","Hour","Minute","Second","Millisecond","Microsecond"],
|
||||||
|
// date :{
|
||||||
|
// long : 'YYYY/MM/DD HH:mm:ss',
|
||||||
|
// short : "YYYY/MM/DD",
|
||||||
|
// format : "local"
|
||||||
|
// },
|
||||||
|
// quarter : {
|
||||||
|
// long : ["First Quarter","Second Quarter","Third Quarter","Fourth Quarter"],
|
||||||
|
// short : ["Q1","Q2","Q3","Q4"],
|
||||||
|
// format : "short"
|
||||||
|
// },
|
||||||
|
// month:{
|
||||||
|
// long : ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
|
||||||
|
// short : ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"],
|
||||||
|
// format : "long" // 0-长名称,1-短名称,2-数字
|
||||||
|
// },
|
||||||
|
// weekday:{
|
||||||
|
// long : ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
||||||
|
// short : ["Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat"],
|
||||||
|
// format : "long", // 0-长名称,1-短名称,2-数字
|
||||||
|
// },
|
||||||
|
// time : {
|
||||||
|
// long : "HH:mm:ss",
|
||||||
|
// short : "HH:mm:ss",
|
||||||
|
// format : 'local'
|
||||||
|
// },
|
||||||
|
// timeSlots : {
|
||||||
|
// slots : [12],
|
||||||
|
// lowerCases : ["am","pm"],
|
||||||
|
// upperCases : ["AM","PM"]
|
||||||
|
// },
|
||||||
|
// relativeTime : {
|
||||||
|
// units : ["seconds","minutes","hours","days","weeks","months","years"],
|
||||||
|
// now : "Now",
|
||||||
|
// before : "{value} {unit} ago",
|
||||||
|
// after : "after {value} {unit}"
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// currency : {
|
||||||
|
// default : "{symbol}{value}{unit}",
|
||||||
|
// long : "{prefix} {symbol}{value}{unit}{suffix}",
|
||||||
|
// short : "{symbol}{value}{unit}",
|
||||||
|
// custom : "{prefix} {symbol}{value}{unit}{suffix}",
|
||||||
|
// format : "default",
|
||||||
|
// //--
|
||||||
|
// units : [""," thousands"," millions"," billions"," trillions"], //千,百万,十亿,万亿
|
||||||
|
// radix : 3, // 进制,即三位一进,中文是4位一进
|
||||||
|
// symbol : "$", // 符号
|
||||||
|
// prefix : "USD", // 前缀
|
||||||
|
// suffix : "", // 后缀
|
||||||
|
// division : 3, // ,分割位
|
||||||
|
// precision : 2, // 精度
|
||||||
|
|
||||||
|
// },
|
||||||
|
// number : {
|
||||||
|
// division : 3, // , 分割位,3代表每3位添加一个,
|
||||||
|
// precision : 0 // 精度,即保留小数点位置,0代表不限
|
||||||
|
// },
|
||||||
|
// empty:{
|
||||||
|
// //values : [], // 可选,定义空值,如果想让0,''也为空值,可以指定values=[0,'']
|
||||||
|
// escape : "", // 当空值时显示的备用值
|
||||||
|
// next : 'break' // 当空值时下一步的行为: break=中止;skip=跳过
|
||||||
|
// },
|
||||||
|
// error : {
|
||||||
|
// //当错误时显示的内容,支持的插值变量有message=错误信息,error=错误类名,也可以是一个返回上面内容的同步函数
|
||||||
|
// escape : null, // 默认当错误时显示空内容
|
||||||
|
// next : 'break' // 当出错时下一步的行为: break=中止;skip=忽略
|
||||||
|
// },
|
||||||
|
// fileSize:{
|
||||||
|
// brief : ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB","NB","DB"],
|
||||||
|
// whole : ["Bytes", "Kilobytes", "Megabytes", "Gigabytes", "TeraBytes", "PetaBytes", "ExaBytes", "ZetaBytes", "YottaBytes","DoggaBytes"],
|
||||||
|
// precision: 2 // 小数精度
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// 改变特定数据类型的默认格式化器
|
||||||
|
// $types:{
|
||||||
|
// Date : dateFormatter,
|
||||||
|
// Null : value =>"",
|
||||||
|
// Undefined: value =>"",
|
||||||
|
// Error : value => "ERROR",
|
||||||
|
// Boolean : value =>value ? "True":"False",
|
||||||
|
// Number : numberFormartter
|
||||||
|
// }
|
||||||
|
// 以下可以自定义编写格式化器
|
||||||
|
// xxxx : value => { ... },
|
||||||
|
// xxxx : (value,$config) => { ... },
|
||||||
|
// xxxx : (value,...args,$config) => { ... },
|
||||||
|
// xxxx : Formatter(value,...args,$config) => { ... },
|
||||||
|
// xxxx : FlexFormatter(value,params,$config) => { ... },
|
||||||
|
}
|
113
packages/apps/lib1/languages/formatters/zh.js
Normal file
113
packages/apps/lib1/languages/formatters/zh.js
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
/**
|
||||||
|
|
||||||
|
格式化器用来对翻译文本内容中的插值变量进行处理
|
||||||
|
|
||||||
|
如何编写格式器请参阅官网!
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// import { Formatter,FlexFormatter } from "./runtime"
|
||||||
|
export default {
|
||||||
|
// global : true, // 简单地设置为true,代表当前所有格式化器均注册到全局,false只在当前scope生效
|
||||||
|
// global : { // 仅将里面的格式化器注册到全局
|
||||||
|
// $config:{... }
|
||||||
|
// xxxx : value => { ... },
|
||||||
|
// xxxx : (value,$config) => { ... },
|
||||||
|
// xxxx : (value,...args,$config) => { ... },
|
||||||
|
// xxxx : Formatter(value,...args,$config) => { ... },
|
||||||
|
// xxxx : FlexFormatter(value,params,$config) => { ... },
|
||||||
|
//}, // 是否注册到全局,false只在当前scope生效
|
||||||
|
// 直接对内置格式化器进行配置,请参阅官网文档
|
||||||
|
// $config:{
|
||||||
|
// datetime : {
|
||||||
|
// units : ["Year","Quarter","Month","Week","Day","Hour","Minute","Second","Millisecond","Microsecond"],
|
||||||
|
// date :{
|
||||||
|
// long : 'YYYY/MM/DD HH:mm:ss',
|
||||||
|
// short : "YYYY/MM/DD",
|
||||||
|
// format : "local"
|
||||||
|
// },
|
||||||
|
// quarter : {
|
||||||
|
// long : ["First Quarter","Second Quarter","Third Quarter","Fourth Quarter"],
|
||||||
|
// short : ["Q1","Q2","Q3","Q4"],
|
||||||
|
// format : "short"
|
||||||
|
// },
|
||||||
|
// month:{
|
||||||
|
// long : ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
|
||||||
|
// short : ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"],
|
||||||
|
// format : "long" // 0-长名称,1-短名称,2-数字
|
||||||
|
// },
|
||||||
|
// weekday:{
|
||||||
|
// long : ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
||||||
|
// short : ["Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat"],
|
||||||
|
// format : "long", // 0-长名称,1-短名称,2-数字
|
||||||
|
// },
|
||||||
|
// time : {
|
||||||
|
// long : "HH:mm:ss",
|
||||||
|
// short : "HH:mm:ss",
|
||||||
|
// format : 'local'
|
||||||
|
// },
|
||||||
|
// timeSlots : {
|
||||||
|
// slots : [12],
|
||||||
|
// lowerCases : ["am","pm"],
|
||||||
|
// upperCases : ["AM","PM"]
|
||||||
|
// },
|
||||||
|
// relativeTime : {
|
||||||
|
// units : ["seconds","minutes","hours","days","weeks","months","years"],
|
||||||
|
// now : "Now",
|
||||||
|
// before : "{value} {unit} ago",
|
||||||
|
// after : "after {value} {unit}"
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// currency : {
|
||||||
|
// default : "{symbol}{value}{unit}",
|
||||||
|
// long : "{prefix} {symbol}{value}{unit}{suffix}",
|
||||||
|
// short : "{symbol}{value}{unit}",
|
||||||
|
// custom : "{prefix} {symbol}{value}{unit}{suffix}",
|
||||||
|
// format : "default",
|
||||||
|
// //--
|
||||||
|
// units : [""," thousands"," millions"," billions"," trillions"], //千,百万,十亿,万亿
|
||||||
|
// radix : 3, // 进制,即三位一进,中文是4位一进
|
||||||
|
// symbol : "$", // 符号
|
||||||
|
// prefix : "USD", // 前缀
|
||||||
|
// suffix : "", // 后缀
|
||||||
|
// division : 3, // ,分割位
|
||||||
|
// precision : 2, // 精度
|
||||||
|
|
||||||
|
// },
|
||||||
|
// number : {
|
||||||
|
// division : 3, // , 分割位,3代表每3位添加一个,
|
||||||
|
// precision : 0 // 精度,即保留小数点位置,0代表不限
|
||||||
|
// },
|
||||||
|
// empty:{
|
||||||
|
// //values : [], // 可选,定义空值,如果想让0,''也为空值,可以指定values=[0,'']
|
||||||
|
// escape : "", // 当空值时显示的备用值
|
||||||
|
// next : 'break' // 当空值时下一步的行为: break=中止;skip=跳过
|
||||||
|
// },
|
||||||
|
// error : {
|
||||||
|
// //当错误时显示的内容,支持的插值变量有message=错误信息,error=错误类名,也可以是一个返回上面内容的同步函数
|
||||||
|
// escape : null, // 默认当错误时显示空内容
|
||||||
|
// next : 'break' // 当出错时下一步的行为: break=中止;skip=忽略
|
||||||
|
// },
|
||||||
|
// fileSize:{
|
||||||
|
// brief : ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB","NB","DB"],
|
||||||
|
// whole : ["Bytes", "Kilobytes", "Megabytes", "Gigabytes", "TeraBytes", "PetaBytes", "ExaBytes", "ZetaBytes", "YottaBytes","DoggaBytes"],
|
||||||
|
// precision: 2 // 小数精度
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// 改变特定数据类型的默认格式化器
|
||||||
|
// $types:{
|
||||||
|
// Date : dateFormatter,
|
||||||
|
// Null : value =>"",
|
||||||
|
// Undefined: value =>"",
|
||||||
|
// Error : value => "ERROR",
|
||||||
|
// Boolean : value =>value ? "True":"False",
|
||||||
|
// Number : numberFormartter
|
||||||
|
// }
|
||||||
|
// 以下可以自定义编写格式化器
|
||||||
|
// xxxx : value => { ... },
|
||||||
|
// xxxx : (value,$config) => { ... },
|
||||||
|
// xxxx : (value,...args,$config) => { ... },
|
||||||
|
// xxxx : Formatter(value,...args,$config) => { ... },
|
||||||
|
// xxxx : FlexFormatter(value,params,$config) => { ... },
|
||||||
|
}
|
@ -1,7 +1,3 @@
|
|||||||
export default {
|
export default {
|
||||||
"a":1,
|
"这是一个测试": 1
|
||||||
"b":2,
|
}
|
||||||
"c{}{}":3,
|
|
||||||
"d{a}{b}":4,
|
|
||||||
"e":5
|
|
||||||
}
|
|
54
packages/apps/lib1/languages/index.js
Normal file
54
packages/apps/lib1/languages/index.js
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
|
||||||
|
import messageIds from "./idMap.js" // 语言ID映射文件
|
||||||
|
import runtime from "@voerkai18n/runtime"
|
||||||
|
const { translate,VoerkaI18nScope } = runtime
|
||||||
|
import defaultFormatters from "./formatters/zh"
|
||||||
|
const activeFormatters = defaultFormatters
|
||||||
|
import defaultMessages from "./zh.js"
|
||||||
|
const activeMessages = defaultMessages
|
||||||
|
|
||||||
|
|
||||||
|
// 语言配置文件
|
||||||
|
const scopeSettings = {
|
||||||
|
"languages": [
|
||||||
|
{
|
||||||
|
"name": "zh",
|
||||||
|
"title": "中文"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "en",
|
||||||
|
"title": "英语"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"defaultLanguage": "zh",
|
||||||
|
"activeLanguage": "zh",
|
||||||
|
"namespaces": {}
|
||||||
|
}
|
||||||
|
const formatters = {
|
||||||
|
'zh' : defaultFormatters,
|
||||||
|
'en' : ()=>import("./formatters/en.js")
|
||||||
|
}
|
||||||
|
// 语言包加载器
|
||||||
|
const loaders = {
|
||||||
|
"en" : ()=>import("./en.js")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 语言作用域
|
||||||
|
const scope = new VoerkaI18nScope({
|
||||||
|
...scopeSettings, // languages,defaultLanguage,activeLanguage,namespaces,formatters
|
||||||
|
id : "lib1", // 当前作用域的id,自动取当前工程的package.json的name
|
||||||
|
debug : false, // 是否在控制台输出高度信息
|
||||||
|
default : defaultMessages, // 默认语言包
|
||||||
|
messages : activeMessages, // 当前语言包
|
||||||
|
idMap : messageIds, // 消息id映射列表
|
||||||
|
formatters, // 扩展自定义格式化器
|
||||||
|
loaders // 语言包加载器
|
||||||
|
})
|
||||||
|
// 翻译函数
|
||||||
|
const scopedTtranslate = translate.bind(scope)
|
||||||
|
|
||||||
|
export {
|
||||||
|
scopedTtranslate as t,
|
||||||
|
scope as i18nScope
|
||||||
|
}
|
||||||
|
|
15
packages/apps/lib1/languages/settings.json
Normal file
15
packages/apps/lib1/languages/settings.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"languages": [
|
||||||
|
{
|
||||||
|
"name": "zh",
|
||||||
|
"title": "中文"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "en",
|
||||||
|
"title": "英语"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"defaultLanguage": "zh",
|
||||||
|
"activeLanguage": "zh",
|
||||||
|
"namespaces": {}
|
||||||
|
}
|
8
packages/apps/lib1/languages/translates/default.json
Normal file
8
packages/apps/lib1/languages/translates/default.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"这是一个测试": {
|
||||||
|
"en": "这是一个测试",
|
||||||
|
"$file": [
|
||||||
|
"index.js"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
3
packages/apps/lib1/languages/zh.js
Normal file
3
packages/apps/lib1/languages/zh.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
"1": "这是一个测试"
|
||||||
|
}
|
18
packages/apps/lib1/package.json
Normal file
18
packages/apps/lib1/package.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"name": "lib1",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"devDependencies": {
|
||||||
|
"@voerkai18n/cli": "workspace:^1.0.41"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@voerkai18n/runtime": "workspace:^1.1.10"
|
||||||
|
}
|
||||||
|
}
|
0
packages/apps/lib1/pnpm-lock.yaml
generated
Normal file
0
packages/apps/lib1/pnpm-lock.yaml
generated
Normal file
@ -25,7 +25,7 @@
|
|||||||
const glob = require("glob")
|
const glob = require("glob")
|
||||||
const createLogger = require("logsets")
|
const createLogger = require("logsets")
|
||||||
const path = require("path")
|
const path = require("path")
|
||||||
const { findModuleType,getCurrentPackageJson,installVoerkai18nRuntime,isInstallDependent,updateVoerkai18nRuntime} = require("@voerkai18n/utils")
|
const { findModuleType,getCurrentPackageJson} = require("@voerkai18n/utils")
|
||||||
const { t } = require("./i18nProxy")
|
const { t } = require("./i18nProxy")
|
||||||
const fs = require("fs-extra")
|
const fs = require("fs-extra")
|
||||||
const logger = createLogger()
|
const logger = createLogger()
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
const { Command } = require('commander');
|
const { Command } = require('commander');
|
||||||
const createLogger = require("logsets")
|
const createLogger = require("logsets")
|
||||||
const bannerPluin = require("logsets/plugins/banner")
|
|
||||||
|
|
||||||
const path = require("path")
|
const path = require("path")
|
||||||
const fs = require("fs-extra")
|
const fs = require("fs-extra")
|
||||||
@ -8,7 +7,6 @@ const logger = createLogger()
|
|||||||
const { i18nScope ,t } = require("./i18nProxy")
|
const { i18nScope ,t } = require("./i18nProxy")
|
||||||
const { getProjectSourceFolder,isTypeScriptProject } = require("@voerkai18n/utils");
|
const { getProjectSourceFolder,isTypeScriptProject } = require("@voerkai18n/utils");
|
||||||
|
|
||||||
logger.use(bannerPluin)
|
|
||||||
|
|
||||||
const program = new Command();
|
const program = new Command();
|
||||||
program
|
program
|
||||||
@ -30,6 +28,7 @@ program
|
|||||||
.argument('[location]', t('工程项目所在目录'))
|
.argument('[location]', t('工程项目所在目录'))
|
||||||
.description(t('初始化项目国际化配置'))
|
.description(t('初始化项目国际化配置'))
|
||||||
.option('-D, --debug', t('输出调试信息'))
|
.option('-D, --debug', t('输出调试信息'))
|
||||||
|
.option('-m, --moduleType [types]', t('输出模块类型,取值auto,esm,cjs'), 'esm')
|
||||||
.option('-r, --reset', t('重新生成当前项目的语言配置'))
|
.option('-r, --reset', t('重新生成当前项目的语言配置'))
|
||||||
.option('-lngs, --languages <languages...>', t('支持的语言列表'), ['zh','en'])
|
.option('-lngs, --languages <languages...>', t('支持的语言列表'), ['zh','en'])
|
||||||
.option('-d, --defaultLanguage <name>', t('默认语言'), 'zh')
|
.option('-d, --defaultLanguage <name>', t('默认语言'), 'zh')
|
||||||
@ -39,6 +38,7 @@ program
|
|||||||
await i18nScope.change(lang)
|
await i18nScope.change(lang)
|
||||||
})
|
})
|
||||||
.action((location,options) => {
|
.action((location,options) => {
|
||||||
|
options.isTypeScript = options.typescript==undefined ? isTypeScriptProject() : options.typescript
|
||||||
location = getProjectSourceFolder(location)
|
location = getProjectSourceFolder(location)
|
||||||
logger.log(t("工程目录:{}"),location)
|
logger.log(t("工程目录:{}"),location)
|
||||||
//
|
//
|
||||||
|
@ -10,6 +10,7 @@ const { t } = require("./i18nProxy")
|
|||||||
const createLogger = require("logsets")
|
const createLogger = require("logsets")
|
||||||
const logger = createLogger()
|
const logger = createLogger()
|
||||||
const { installPackage } = require("@voerkai18n/utils")
|
const { installPackage } = require("@voerkai18n/utils")
|
||||||
|
const artTemplate = require("art-template")
|
||||||
|
|
||||||
function getLanguageList(langs,defaultLanguage){
|
function getLanguageList(langs,defaultLanguage){
|
||||||
try{
|
try{
|
||||||
@ -38,16 +39,17 @@ function getLanguageList(langs,defaultLanguage){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module.exports = function(srcPath,{debug = true,languages=["zh","en"],defaultLanguage="zh",activeLanguage="zh",reset=false,installRuntime=true}={}){
|
module.exports = function(srcPath,{moduleType='cjs',isTypeScript,debug = true,languages=["zh","en"],defaultLanguage="zh",activeLanguage="zh",reset=false}={}){
|
||||||
|
let settings = {}
|
||||||
let tasks = logger.tasklist("初始化VoerkaI18n工程")
|
let tasks = logger.tasklist("初始化VoerkaI18n工程")
|
||||||
|
const langFolderName = "languages"
|
||||||
|
// 查找当前项目的语言包类型路径
|
||||||
|
const lngPath = path.join(srcPath,langFolderName)
|
||||||
|
|
||||||
// 语言文件夹名称
|
// 语言文件夹名称
|
||||||
try{
|
try{
|
||||||
tasks.add("创建语言包文件夹")
|
tasks.add("创建语言包文件夹")
|
||||||
const langPath = "languages"
|
|
||||||
// 查找当前项目的语言包类型路径
|
|
||||||
const lngPath = path.join(srcPath,langPath)
|
|
||||||
if(!fs.existsSync(lngPath)){
|
if(!fs.existsSync(lngPath)){
|
||||||
fs.mkdirSync(lngPath)
|
fs.mkdirSync(lngPath)
|
||||||
if(debug) logger.log(t("创建语言包文件夹: {}"),lngPath)
|
if(debug) logger.log(t("创建语言包文件夹: {}"),lngPath)
|
||||||
@ -63,9 +65,10 @@ module.exports = function(srcPath,{debug = true,languages=["zh","en"],defaultLan
|
|||||||
const settingsFile = path.join(lngPath,"settings.json")
|
const settingsFile = path.join(lngPath,"settings.json")
|
||||||
if(fs.existsSync(settingsFile) && !reset){
|
if(fs.existsSync(settingsFile) && !reset){
|
||||||
if(debug) logger.log(t("语言配置文件{}文件已存在,跳过创建。\n使用{}可以重新覆盖创建"),settingsFile,"-r")
|
if(debug) logger.log(t("语言配置文件{}文件已存在,跳过创建。\n使用{}可以重新覆盖创建"),settingsFile,"-r")
|
||||||
|
tasks.skip()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const settings = {
|
settings = {
|
||||||
languages:getLanguageList(languages,defaultLanguage),
|
languages:getLanguageList(languages,defaultLanguage),
|
||||||
defaultLanguage,
|
defaultLanguage,
|
||||||
activeLanguage,
|
activeLanguage,
|
||||||
@ -78,12 +81,26 @@ module.exports = function(srcPath,{debug = true,languages=["zh","en"],defaultLan
|
|||||||
tasks.error(e.message)
|
tasks.error(e.message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 生成一个语言初始化文件,该文件在执行extract/compile前提供访问t函数的能力
|
||||||
|
try{
|
||||||
|
tasks.add("初始化语言上下文")
|
||||||
|
const templateContext = {
|
||||||
|
moduleType
|
||||||
|
}
|
||||||
|
const entryContent = artTemplate(path.join(__dirname,"templates",`init-entry.${isTypeScript ? 'ts' : 'js'}`), templateContext )
|
||||||
|
fs.writeFileSync(path.join(lngPath,`index.${isTypeScript ? 'ts' : 'js'}`),entryContent)
|
||||||
|
tasks.complete()
|
||||||
|
}catch(e){
|
||||||
|
tasks.error(e.message)
|
||||||
|
}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
tasks.add(t("安装运行时依赖@voerkai18n/runtime"))
|
tasks.add(t("安装运行时依赖@voerkai18n/runtime"))
|
||||||
installPackage('@voerkai18n/runtime')
|
installPackage('@voerkai18n/runtime')
|
||||||
tasks.complete()
|
tasks.complete()
|
||||||
}catch(e){
|
}catch(e){
|
||||||
tasks.error(e.message)
|
tasks.error(e.message)
|
||||||
|
console.error(e.stack)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(debug) {
|
if(debug) {
|
||||||
|
@ -40,15 +40,12 @@
|
|||||||
"fs-extra": "^10.0.1",
|
"fs-extra": "^10.0.1",
|
||||||
"glob": "^7.2.0",
|
"glob": "^7.2.0",
|
||||||
"gulp": "^4.0.2",
|
"gulp": "^4.0.2",
|
||||||
"logsets": "^1.0.8",
|
"logsets": "^1.0.20",
|
||||||
"md5": "^2.3.0",
|
"md5": "^2.3.0",
|
||||||
"qs": "^6.10.3",
|
"qs": "^6.10.3",
|
||||||
"shelljs": "^0.8.5",
|
"shelljs": "^0.8.5",
|
||||||
"through2": "^4.0.2",
|
"through2": "^4.0.2",
|
||||||
"vinyl": "^2.2.1"
|
"vinyl": "^2.2.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
|
||||||
"@voerkai18n/autopublish": "workspace:^1.0.2"
|
|
||||||
},
|
|
||||||
"lastPublish": "2023-01-11T21:51:34+08:00"
|
"lastPublish": "2023-01-11T21:51:34+08:00"
|
||||||
}
|
}
|
35
packages/cli/templates/init-entry.js
Normal file
35
packages/cli/templates/init-entry.js
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/**
|
||||||
|
* 初始化入口
|
||||||
|
*
|
||||||
|
* 本文件仅供在执行voerkai18n extract&compile前提供t函数引用
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
{{if moduleType === "esm"}}
|
||||||
|
import runtime from "@voerkai18n/runtime"
|
||||||
|
const { translate,VoerkaI18nScope } = runtime
|
||||||
|
{{else}}
|
||||||
|
const { translate,i18nScope } = require("@voerkai18n/runtime")
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
|
||||||
|
// 语言作用域
|
||||||
|
const scope = new VoerkaI18nScope({
|
||||||
|
id : "{{scopeId}}", // 当前作用域的id,自动取当前工程的package.json的name
|
||||||
|
debug : false, // 是否在控制台输出高度信息
|
||||||
|
default : {}, // 默认语言包
|
||||||
|
messages : {}, // 当前语言包
|
||||||
|
idMap : {}, // 消息id映射列表
|
||||||
|
formatters, // 扩展自定义格式化器
|
||||||
|
loaders : {} // 语言包加载器
|
||||||
|
})
|
||||||
|
// 翻译函数
|
||||||
|
const scopedTtranslate = translate.bind(scope)
|
||||||
|
{{if moduleType === "esm"}}
|
||||||
|
export {
|
||||||
|
scopedTtranslate as t,
|
||||||
|
scope as i18nScope
|
||||||
|
}
|
||||||
|
{{else}}
|
||||||
|
module.exports.t = scopedTtranslate
|
||||||
|
module.exports.i18nScope = scope
|
||||||
|
{{/if}}
|
26
packages/cli/templates/init-entry.ts
Normal file
26
packages/cli/templates/init-entry.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* 初始化入口
|
||||||
|
*
|
||||||
|
* 本文件仅供在执行voerkai18n extract&compile前提供t函数引用
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
import runtime from "@voerkai18n/runtime"
|
||||||
|
const { translate,VoerkaI18nScope } = runtime
|
||||||
|
|
||||||
|
|
||||||
|
// 语言作用域
|
||||||
|
const scope = new VoerkaI18nScope({
|
||||||
|
id : "{{scopeId}}", // 当前作用域的id,自动取当前工程的package.json的name
|
||||||
|
debug : false, // 是否在控制台输出高度信息
|
||||||
|
default : {}, // 默认语言包
|
||||||
|
messages : {}, // 当前语言包
|
||||||
|
idMap : {}, // 消息id映射列表
|
||||||
|
formatters : {}, // 扩展自定义格式化器
|
||||||
|
loaders : {} // 语言包加载器
|
||||||
|
})
|
||||||
|
// 翻译函数
|
||||||
|
const scopedTtranslate = translate.bind(scope)
|
||||||
|
export {
|
||||||
|
scopedTtranslate as t,
|
||||||
|
scope as i18nScope
|
||||||
|
}
|
@ -30,9 +30,7 @@ const fs = require("fs-extra")
|
|||||||
const { glob } = require("glob")
|
const { glob } = require("glob")
|
||||||
const { default: axios } = require("axios")
|
const { default: axios } = require("axios")
|
||||||
const logger = createLogger()
|
const logger = createLogger()
|
||||||
const TaskListPlugin = require("logsets/plugins/tasklist")
|
|
||||||
const { deepMerge } = require("@voerkai18n/utils")
|
const { deepMerge } = require("@voerkai18n/utils")
|
||||||
logger.use(TaskListPlugin)
|
|
||||||
|
|
||||||
const delay = async (t) => new Promise(resolve=>setTimeout(resolve,t))
|
const delay = async (t) => new Promise(resolve=>setTimeout(resolve,t))
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@voerkai18n/runtime",
|
"name": "@voerkai18n/runtime",
|
||||||
"version": "1.1.10",
|
"version": "1.1.11",
|
||||||
"description": "核心运行时",
|
"description": "核心运行时",
|
||||||
"main": "./dist/index.cjs",
|
"main": "./dist/index.cjs",
|
||||||
"module": "./dist/index.esm.js",
|
"module": "./dist/index.esm.js",
|
||||||
@ -41,4 +41,4 @@
|
|||||||
"rollup-plugin-terser": "^7.0.2"
|
"rollup-plugin-terser": "^7.0.2"
|
||||||
},
|
},
|
||||||
"lastPublish": "2023-01-11T21:50:59+08:00"
|
"lastPublish": "2023-01-11T21:50:59+08:00"
|
||||||
}
|
}
|
||||||
|
@ -409,7 +409,7 @@ function deepMerge(toObj,formObj,options={}){
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getPackageTool(){
|
function getPackageTool(){
|
||||||
const projectFolder = getProjectRootFolder(srcPath || process.cwd())
|
const projectFolder = getProjectRootFolder(process.cwd())
|
||||||
if(fs.existsSync(path.join(projectFolder,"pnpm-lock.yaml"))){
|
if(fs.existsSync(path.join(projectFolder,"pnpm-lock.yaml"))){
|
||||||
return 'pnpm'
|
return 'pnpm'
|
||||||
}else if(fs.existsSync(path.join(projectFolder,"yarn.lock"))){
|
}else if(fs.existsSync(path.join(projectFolder,"yarn.lock"))){
|
||||||
|
48
pnpm-lock.yaml
generated
48
pnpm-lock.yaml
generated
@ -4,28 +4,28 @@ importers:
|
|||||||
|
|
||||||
.:
|
.:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@babel/core': ^7.17.8
|
'@babel/core': ^7.18.10
|
||||||
'@babel/plugin-transform-runtime': ^7.17.0
|
'@babel/plugin-transform-runtime': ^7.18.10
|
||||||
'@babel/preset-env': ^7.16.11
|
'@babel/preset-env': ^7.18.10
|
||||||
'@rollup/plugin-babel': ^5.3.1
|
'@rollup/plugin-babel': ^5.3.1
|
||||||
'@rollup/plugin-commonjs': ^21.0.2
|
'@rollup/plugin-commonjs': ^21.1.0
|
||||||
'@vuepress/client': ^2.0.0-beta.49
|
'@vuepress/client': 2.0.0-beta.49
|
||||||
autopub: ^1.0.2
|
autopub: ^1.0.2
|
||||||
commander: ^9.0.0
|
commander: ^9.4.0
|
||||||
cross-env: ^7.0.3
|
cross-env: ^7.0.3
|
||||||
dayjs: ^1.11.0
|
dayjs: ^1.11.4
|
||||||
deepmerge: ^4.2.2
|
deepmerge: ^4.2.2
|
||||||
dumi: ^1.1.47
|
dumi: ^1.1.47
|
||||||
enquirer: ^2.3.6
|
enquirer: ^2.3.6
|
||||||
fast-glob: ^3.2.11
|
fast-glob: ^3.2.11
|
||||||
fs-extra: ^10.1.0
|
fs-extra: ^10.1.0
|
||||||
gulp: ^4.0.2
|
gulp: ^4.0.2
|
||||||
inquirer: ^8.2.2
|
inquirer: ^8.2.4
|
||||||
jest: ^27.5.1
|
jest: ^27.5.1
|
||||||
logsets: ^1.0.20
|
logsets: ^1.0.20
|
||||||
pnpm: ^7.8.0
|
pnpm: ^7.9.0
|
||||||
prettier: ^2.2.1
|
prettier: ^2.7.1
|
||||||
rollup: ^2.70.1
|
rollup: ^2.77.2
|
||||||
rollup-plugin-clear: ^2.0.7
|
rollup-plugin-clear: ^2.0.7
|
||||||
semver: ^7.3.7
|
semver: ^7.3.7
|
||||||
shelljs: ^0.8.5
|
shelljs: ^0.8.5
|
||||||
@ -70,6 +70,15 @@ importers:
|
|||||||
'@voerkai18n/cli': link:../../cli
|
'@voerkai18n/cli': link:../../cli
|
||||||
'@voerkai18n/runtime': link:../../runtime
|
'@voerkai18n/runtime': link:../../runtime
|
||||||
|
|
||||||
|
packages/apps/lib1:
|
||||||
|
specifiers:
|
||||||
|
'@voerkai18n/cli': workspace:^1.0.41
|
||||||
|
'@voerkai18n/runtime': workspace:^1.1.10
|
||||||
|
dependencies:
|
||||||
|
'@voerkai18n/runtime': link:../../runtime
|
||||||
|
devDependencies:
|
||||||
|
'@voerkai18n/cli': link:../../cli
|
||||||
|
|
||||||
packages/apps/reactapp:
|
packages/apps/reactapp:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@babel/runtime-corejs3': ^7.20.7
|
'@babel/runtime-corejs3': ^7.20.7
|
||||||
@ -157,7 +166,6 @@ importers:
|
|||||||
specifiers:
|
specifiers:
|
||||||
'@babel/cli': ^7.17.6
|
'@babel/cli': ^7.17.6
|
||||||
'@babel/core': ^7.17.5
|
'@babel/core': ^7.17.5
|
||||||
'@voerkai18n/autopublish': workspace:^1.0.2
|
|
||||||
'@voerkai18n/runtime': workspace:^1.0.14
|
'@voerkai18n/runtime': workspace:^1.0.14
|
||||||
'@voerkai18n/utils': workspace:^1.0.6
|
'@voerkai18n/utils': workspace:^1.0.6
|
||||||
art-template: ^4.13.2
|
art-template: ^4.13.2
|
||||||
@ -168,7 +176,7 @@ importers:
|
|||||||
fs-extra: ^10.0.1
|
fs-extra: ^10.0.1
|
||||||
glob: ^7.2.0
|
glob: ^7.2.0
|
||||||
gulp: ^4.0.2
|
gulp: ^4.0.2
|
||||||
logsets: ^1.0.8
|
logsets: ^1.0.20
|
||||||
md5: ^2.3.0
|
md5: ^2.3.0
|
||||||
qs: ^6.10.3
|
qs: ^6.10.3
|
||||||
shelljs: ^0.8.5
|
shelljs: ^0.8.5
|
||||||
@ -187,14 +195,12 @@ importers:
|
|||||||
fs-extra: 10.1.0
|
fs-extra: 10.1.0
|
||||||
glob: 7.2.3
|
glob: 7.2.3
|
||||||
gulp: 4.0.2
|
gulp: 4.0.2
|
||||||
logsets: 1.0.12
|
logsets: 1.0.20
|
||||||
md5: 2.3.0
|
md5: 2.3.0
|
||||||
qs: 6.11.0
|
qs: 6.11.0
|
||||||
shelljs: 0.8.5
|
shelljs: 0.8.5
|
||||||
through2: 4.0.2
|
through2: 4.0.2
|
||||||
vinyl: 2.2.1
|
vinyl: 2.2.1
|
||||||
devDependencies:
|
|
||||||
'@voerkai18n/autopublish': link:../autopublish
|
|
||||||
|
|
||||||
packages/formatters:
|
packages/formatters:
|
||||||
specifiers:
|
specifiers:
|
||||||
@ -7786,15 +7792,6 @@ packages:
|
|||||||
is-unicode-supported: 0.1.0
|
is-unicode-supported: 0.1.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/logsets/1.0.12:
|
|
||||||
resolution: {integrity: sha512-0sIHPbyhHDKZll7j6XnTq91pe8QTBshapB2BDVD6lOqKuyitukK2Grt7iEbUF432kaBt+xDvYiU3DadaUyowog==}
|
|
||||||
dependencies:
|
|
||||||
'@babel/runtime-corejs3': 7.18.9
|
|
||||||
ansicolor: 1.1.100
|
|
||||||
core-js: 3.24.1
|
|
||||||
deepmerge: 4.2.2
|
|
||||||
dev: false
|
|
||||||
|
|
||||||
/logsets/1.0.20:
|
/logsets/1.0.20:
|
||||||
resolution: {integrity: sha512-2ch4+TSciSTFAkkIv9tL7xOMe0Tg+XYsR//EAcMW2227bWjscReAoz2GLkjIMJMACHVZIyXmKrohtiV9z6M1iQ==}
|
resolution: {integrity: sha512-2ch4+TSciSTFAkkIv9tL7xOMe0Tg+XYsR//EAcMW2227bWjscReAoz2GLkjIMJMACHVZIyXmKrohtiV9z6M1iQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -7802,7 +7799,6 @@ packages:
|
|||||||
ansicolor: 1.1.100
|
ansicolor: 1.1.100
|
||||||
core-js: 3.24.1
|
core-js: 3.24.1
|
||||||
deepmerge: 4.2.2
|
deepmerge: 4.2.2
|
||||||
dev: true
|
|
||||||
|
|
||||||
/longest-streak/2.0.4:
|
/longest-streak/2.0.4:
|
||||||
resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==}
|
resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user