autopub release:

This commit is contained in:
wxzhang 2023-01-29 20:31:24 +08:00
parent bb9ae21c83
commit 144136632f
10 changed files with 258 additions and 236 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@voerkai18n/babel",
"version": "1.0.44",
"version": "1.0.45",
"description": "Babel插件实现自动导入t函数和自动文本映射",
"main": "index.js",
"homepage": "https://gitee.com/zhangfisher/voerka-i18n",
@ -17,5 +17,5 @@
"dependencies": {
"@voerkai18n/utils": "workspace:latest"
},
"lastPublish": "2023-01-29T17:40:23+08:00"
"lastPublish": "2023-01-29T20:31:03+08:00"
}

View File

@ -1,58 +1,63 @@
module.exports = {
"1": "支持的语言\t: {}",
"2": "默认语言\t: {}",
"3": "激活语言\t: {}",
"4": "名称空间\t: {}",
"5": " - 更新格式化器:{}",
"6": " - 访问入口文件: {}",
"7": "加载多语言配置文件<{}>失败: {} ",
"8": "目标文件夹<{}>不存在",
"9": "扫描提取范围:",
"10": "工程项目所在目录",
"11": "初始化项目国际化配置",
"12": "输出调试信息",
"13": "重新生成当前项目的语言配置",
"14": "支持的语言列表",
"15": "工程目录:{}",
"16": "扫描并提取所有待翻译的字符串到<languages/translates>文件夹中",
"17": "支持的语言",
"18": "默认语言",
"19": "激活语言",
"20": "翻译名称空间",
"21": "排除要扫描的文件夹,多个用逗号分隔",
"22": "本次提取内容与已存在内容的数据合并策略,默认取值sync=同步,overwrite=覆盖,merge=合并",
"23": "要扫描的文件类型",
"24": "语言配置文件<{}>已存在,将优先使用此配置文件中参数来提取文本",
"25": "编译指定项目的语言包",
"26": "输出模块类型,取值auto,esm,cjs",
"27": "语言包文件夹<{}>不存在",
"28": "语言配置文件{}文件已存在,跳过创建。\n使用{}可以重新覆盖创建",
"29": "生成语言配置文件:{}",
"30": "拟支持的语言:{}",
"31": "初始化成功,下一步:",
"32": " - 编辑{}确定拟支持的语言种类等参数",
"33": " - 运行<{}>扫描提取要翻译的文本",
"34": " - 运行<{}>编译语言包",
"35": "创建语言包文件夹: {}",
"36": "模块类型\t: {}",
"37": "编译结果输出至:{}",
"38": "读取语言文件{}失败:{}",
"39": " - 语言包文件: {}",
"40": " - idMap文件: {}",
"41": " - 格式化器:{}",
"42": " - 共合成{}条文本",
"43": " - 运行时: {}",
"44": "自动安装默认语言",
"45": "不嵌入运行时源码",
"46": " - 安装运行时: {}",
"47": " - 更新运行时:{}",
"48": "调用在线翻译服务商的API翻译译指定项目的语言包,如使用百度云翻译服务",
"49": "API密钥",
"50": "API ID",
"51": "翻译速度限制,即每秒可调用的API次数",
"52": "在线翻译服务提供者名称或翻译脚本文件",
"53": "将多个文本合并提交的最大包字节数",
"54": "正在翻译文件:{}",
"55": "需要指定翻译脚本或者appkey和appid",
"56": " - 翻译 -> {}"
"1": " - 更新格式化器:{}",
"2": " - 访问入口文件: {}",
"3": "加载多语言配置文件<{}>失败: {} ",
"4": "目标文件夹<{}>不存在",
"5": "扫描提取范围:",
"6": "工程项目所在目录",
"7": "初始化项目国际化配置",
"8": "输出调试信息",
"9": "重新生成当前项目的语言配置",
"10": "支持的语言列表",
"11": "工程目录:{}",
"12": "扫描并提取所有待翻译的字符串到<languages/translates>文件夹中",
"13": "支持的语言",
"14": "默认语言",
"15": "激活语言",
"16": "翻译名称空间",
"17": "排除要扫描的文件夹,多个用逗号分隔",
"18": "本次提取内容与已存在内容的数据合并策略,默认取值sync=同步,overwrite=覆盖,merge=合并",
"19": "要扫描的文件类型",
"20": "语言配置文件<{}>已存在,将优先使用此配置文件中参数来提取文本",
"21": "编译指定项目的语言包",
"22": "输出模块类型,取值auto,esm,cjs",
"23": "语言包文件夹<{}>不存在",
"24": "生成语言配置文件:{}",
"25": "拟支持的语言:{}",
"26": "初始化成功,下一步:",
"27": " - 编辑{}确定拟支持的语言种类等参数",
"28": " - 运行<{}>扫描提取要翻译的文本",
"29": " - 运行<{}>编译语言包",
"30": "创建语言包文件夹: {}",
"31": "编译结果输出至:{}",
"32": "读取语言文件{}失败:{}",
"33": " - 语言包文件: {}",
"34": " - idMap文件: {}",
"35": " - 格式化器:{}",
"36": " - 共合成{}条文本",
"37": "调用在线翻译服务商的API翻译译指定项目的语言包,如使用百度云翻译服务",
"38": "API密钥",
"39": "API ID",
"40": "翻译速度限制,即每秒可调用的API次数",
"41": "在线翻译服务提供者名称或翻译脚本文件",
"42": "将多个文本合并提交的最大包字节数",
"43": "正在翻译文件:{}",
"44": "需要指定翻译脚本或者appkey和appid",
"45": " - 翻译 -> {}",
"46": "更新@voerkai18n/runtime运行时",
"47": "Updated:{}",
"48": "已经是最新的",
"49": "更新@voerkai18n/runtime失败,请手动更新!",
"50": "支持的语言\\t: {}",
"51": "默认语言\\t: {}",
"52": "激活语言\\t: {}",
"53": "名称空间\\t: {}",
"54": "模块类型\\t: {}",
"55": "TypeScript\\t: {}",
"56": "输出typescript代码",
"57": "备份原始文件",
"58": "翻译模式取值auto=仅翻译未翻译的,full=全部翻译",
"59": "语言配置文件{}文件已存在,跳过创建。\\n使用{}可以重新覆盖创建",
"60": "安装运行时依赖@voerkai18n/runtime",
"61": "已安装运行时:{}"
}

View File

@ -1,58 +1,63 @@
module.exports = {
"1": "Supported languages\t: {}",
"2": "Default language\t: {}",
"3": "Active language\t\t: {}",
"4": "Namespaces\t\t: {}",
"5": " - Update formatters:{}",
"6": " - Entry of language: {}",
"7": "Failed to load multilingual configuration file <{}>: {}",
"8": "The destination folder < {} > does not exist",
"9": "Scan for",
"10": "Project directory",
"11": "Initialize project i18n configuration",
"12": "Output debug information",
"13": "Regenerate the language configuration of the current project",
"14": "Supported languages",
"15": "Folder of project{}",
"16": "Scan and extract all strings to be translated into the <languages/translations> folder",
"17": "Supported languages",
"18": "Default language",
"19": "Active language",
"20": "Namespaces",
"21": "Exclude folders to scan, multiple separated by commas",
"22": " strategy of messages merge,with value of sync(default),overwrite,merge",
"23": "Type of file to scan",
"24": "The language configuration file <{}> already exists. It will be used preferentially to extract messages",
"25": "Compiles the language messages for project",
"26": "Output module type, values auto, esm, cjs",
"27": "The language messages folder <{}> does not exist",
"28": "Language configuration {} file already exists, skipping creation\n use {} to overwrite the creation",
"29": "Generate language configuration: {}",
"30": "Languages to be supported{}",
"31": "Initialization succeeded, next step",
"32": " - Edit language parameters in {}",
"33": " - Run <{}> scan to extract the messages to be translated",
"34": " - Run <{}> compile language messages",
"35": "Create <languages> folder: {}",
"36": "Type of module\t\t: {}",
"37": "Compile to{}",
"38": "Error while read language file{}: {}",
"39": " - Language file: {}",
"40": " - idMap file: {}",
"41": " - Formatters: {}",
"42": " - Total{} messages",
"43": " - Runtime: {}",
"44": "Auto install default language",
"45": "Not inline runtime source",
"46": " - Install runtime: {}",
"47": " - Update runtime{}",
"48": "Call the API translation language package of the online translation service provider, eg:baidu translation service",
"49": "API密钥",
"50": "API ID",
"51": "Translation speed limit. API calls per second",
"52": "在线翻译服务提供者名称或翻译脚本文件",
"53": "将多个文本合并提交的最大包字节数",
"54": "正在翻译文件:{}",
"55": "需要指定翻译脚本或者appkey和appid",
"56": " - 翻译 -> {}"
"1": " - Update formatters:{}",
"2": " - Entry of language: {}",
"3": "Failed to load multilingual configuration file <{}>: {}",
"4": "The destination folder < {} > does not exist",
"5": "Scan for",
"6": "Project directory",
"7": "Initialize project i18n configuration",
"8": "Output debug information",
"9": "Regenerate the language configuration of the current project",
"10": "Supported languages",
"11": "Folder of project{}",
"12": "Scan and extract all strings to be translated into the <languages/translations> folder",
"13": "Supported languages",
"14": "Default language",
"15": "Active language",
"16": "Namespaces",
"17": "Exclude folders to scan, multiple separated by commas",
"18": " strategy of messages merge,with value of sync(default),overwrite,merge",
"19": "Type of file to scan",
"20": "The language configuration file <{}> already exists. It will be used preferentially to extract messages",
"21": "Compiles the language messages for project",
"22": "Output module type, values auto, esm, cjs",
"23": "The language messages folder <{}> does not exist",
"24": "Generate language configuration: {}",
"25": "Languages to be supported{}",
"26": "Initialization succeeded, next step",
"27": " - Edit language parameters in {}",
"28": " - Run <{}> scan to extract the messages to be translated",
"29": " - Run <{}> compile language messages",
"30": "Create <languages> folder: {}",
"31": "Compile to{}",
"32": "Error while read language file{}: {}",
"33": " - Language file: {}",
"34": " - idMap file: {}",
"35": " - Formatters: {}",
"36": " - Total{} messages",
"37": "Call the API translation language package of the online translation service provider, eg:baidu translation service",
"38": "API密钥",
"39": "API ID",
"40": "Translation speed limit. API calls per second",
"41": "在线翻译服务提供者名称或翻译脚本文件",
"42": "将多个文本合并提交的最大包字节数",
"43": "正在翻译文件:{}",
"44": "需要指定翻译脚本或者appkey和appid",
"45": " - 翻译 -> {}",
"46": "更新@voerkai18n/runtime运行时",
"47": "Updated:{}",
"48": "已经是最新的",
"49": "更新@voerkai18n/runtime失败,请手动更新!",
"50": "支持的语言\\t: {}",
"51": "默认语言\\t: {}",
"52": "激活语言\\t: {}",
"53": "名称空间\\t: {}",
"54": "模块类型\\t: {}",
"55": "TypeScript\\t: {}",
"56": "输出typescript代码",
"57": "备份原始文件",
"58": "翻译模式取值auto=仅翻译未翻译的,full=全部翻译",
"59": "语言配置文件{}文件已存在,跳过创建。\\n使用{}可以重新覆盖创建",
"60": "安装运行时依赖@voerkai18n/runtime",
"61": "已安装运行时:{}"
}

View File

@ -1,58 +1,63 @@
module.exports = {
"支持的语言\t: {}": 1,
"默认语言\t: {}": 2,
"激活语言\t: {}": 3,
"名称空间\t: {}": 4,
" - 更新格式化器:{}": 5,
" - 访问入口文件: {}": 6,
"加载多语言配置文件<{}>失败: {} ": 7,
"目标文件夹<{}>不存在": 8,
"扫描提取范围:": 9,
"工程项目所在目录": 10,
"初始化项目国际化配置": 11,
"输出调试信息": 12,
"重新生成当前项目的语言配置": 13,
"支持的语言列表": 14,
"工程目录:{}": 15,
"扫描并提取所有待翻译的字符串到<languages/translates>文件夹中": 16,
"支持的语言": 17,
"默认语言": 18,
"激活语言": 19,
"翻译名称空间": 20,
"排除要扫描的文件夹,多个用逗号分隔": 21,
"本次提取内容与已存在内容的数据合并策略,默认取值sync=同步,overwrite=覆盖,merge=合并": 22,
"要扫描的文件类型": 23,
"语言配置文件<{}>已存在,将优先使用此配置文件中参数来提取文本": 24,
"编译指定项目的语言包": 25,
"输出模块类型,取值auto,esm,cjs": 26,
"语言包文件夹<{}>不存在": 27,
"语言配置文件{}文件已存在,跳过创建。\n使用{}可以重新覆盖创建": 28,
"生成语言配置文件:{}": 29,
"拟支持的语言:{}": 30,
"初始化成功,下一步:": 31,
" - 编辑{}确定拟支持的语言种类等参数": 32,
" - 运行<{}>扫描提取要翻译的文本": 33,
" - 运行<{}>编译语言包": 34,
"创建语言包文件夹: {}": 35,
"模块类型\t: {}": 36,
"编译结果输出至:{}": 37,
"读取语言文件{}失败:{}": 38,
" - 语言包文件: {}": 39,
" - idMap文件: {}": 40,
" - 格式化器:{}": 41,
" - 共合成{}条文本": 42,
" - 运行时: {}": 43,
"自动安装默认语言": 44,
"不嵌入运行时源码": 45,
" - 安装运行时: {}": 46,
" - 更新运行时:{}": 47,
"调用在线翻译服务商的API翻译译指定项目的语言包,如使用百度云翻译服务": 48,
"API密钥": 49,
"API ID": 50,
"翻译速度限制,即每秒可调用的API次数": 51,
"在线翻译服务提供者名称或翻译脚本文件": 52,
"将多个文本合并提交的最大包字节数": 53,
"正在翻译文件:{}": 54,
"需要指定翻译脚本或者appkey和appid": 55,
" - 翻译 -> {}": 56
" - 更新格式化器:{}": 1,
" - 访问入口文件: {}": 2,
"加载多语言配置文件<{}>失败: {} ": 3,
"目标文件夹<{}>不存在": 4,
"扫描提取范围:": 5,
"工程项目所在目录": 6,
"初始化项目国际化配置": 7,
"输出调试信息": 8,
"重新生成当前项目的语言配置": 9,
"支持的语言列表": 10,
"工程目录:{}": 11,
"扫描并提取所有待翻译的字符串到<languages/translates>文件夹中": 12,
"支持的语言": 13,
"默认语言": 14,
"激活语言": 15,
"翻译名称空间": 16,
"排除要扫描的文件夹,多个用逗号分隔": 17,
"本次提取内容与已存在内容的数据合并策略,默认取值sync=同步,overwrite=覆盖,merge=合并": 18,
"要扫描的文件类型": 19,
"语言配置文件<{}>已存在,将优先使用此配置文件中参数来提取文本": 20,
"编译指定项目的语言包": 21,
"输出模块类型,取值auto,esm,cjs": 22,
"语言包文件夹<{}>不存在": 23,
"生成语言配置文件:{}": 24,
"拟支持的语言:{}": 25,
"初始化成功,下一步:": 26,
" - 编辑{}确定拟支持的语言种类等参数": 27,
" - 运行<{}>扫描提取要翻译的文本": 28,
" - 运行<{}>编译语言包": 29,
"创建语言包文件夹: {}": 30,
"编译结果输出至:{}": 31,
"读取语言文件{}失败:{}": 32,
" - 语言包文件: {}": 33,
" - idMap文件: {}": 34,
" - 格式化器:{}": 35,
" - 共合成{}条文本": 36,
"调用在线翻译服务商的API翻译译指定项目的语言包,如使用百度云翻译服务": 37,
"API密钥": 38,
"API ID": 39,
"翻译速度限制,即每秒可调用的API次数": 40,
"在线翻译服务提供者名称或翻译脚本文件": 41,
"将多个文本合并提交的最大包字节数": 42,
"正在翻译文件:{}": 43,
"需要指定翻译脚本或者appkey和appid": 44,
" - 翻译 -> {}": 45,
"更新@voerkai18n/runtime运行时": 46,
"Updated:{}": 47,
"已经是最新的": 48,
"更新@voerkai18n/runtime失败,请手动更新!": 49,
"支持的语言\\t: {}": 50,
"默认语言\\t: {}": 51,
"激活语言\\t: {}": 52,
"名称空间\\t: {}": 53,
"模块类型\\t: {}": 54,
"TypeScript\\t: {}": 55,
"输出typescript代码": 56,
"备份原始文件": 57,
"翻译模式取值auto=仅翻译未翻译的,full=全部翻译": 58,
"语言配置文件{}文件已存在,跳过创建。\\n使用{}可以重新覆盖创建": 59,
"安装运行时依赖@voerkai18n/runtime": 60,
"已安装运行时:{}": 61
}

View File

@ -3,10 +3,12 @@
*/
const messageIds = require("./idMap")
const { translate,VoerkaI18nScope } = require("@voerkai18n/runtime")
const { translate,i18nScope } = require("@voerkai18n/runtime")
const defaultFormatters = require("@voerkai18n/runtime/formatters/zh.js")
const activeFormatters = defaultFormatters
const defaultMessages = require("./zh.js") // 默认语言包
const activeMessages = defaultMessages
// 语言配置文件
const scopeSettings = {

View File

@ -1,58 +1,63 @@
module.exports = {
"1": "支持的语言\t: {}",
"2": "默认语言\t: {}",
"3": "激活语言\t: {}",
"4": "名称空间\t: {}",
"5": " - 更新格式化器:{}",
"6": " - 访问入口文件: {}",
"7": "加载多语言配置文件<{}>失败: {} ",
"8": "目标文件夹<{}>不存在",
"9": "扫描提取范围:",
"10": "工程项目所在目录",
"11": "初始化项目国际化配置",
"12": "输出调试信息",
"13": "重新生成当前项目的语言配置",
"14": "支持的语言列表",
"15": "工程目录:{}",
"16": "扫描并提取所有待翻译的字符串到<languages/translates>文件夹中",
"17": "支持的语言",
"18": "默认语言",
"19": "激活语言",
"20": "翻译名称空间",
"21": "排除要扫描的文件夹,多个用逗号分隔",
"22": "本次提取内容与已存在内容的数据合并策略,默认取值sync=同步,overwrite=覆盖,merge=合并",
"23": "要扫描的文件类型",
"24": "语言配置文件<{}>已存在,将优先使用此配置文件中参数来提取文本",
"25": "编译指定项目的语言包",
"26": "输出模块类型,取值auto,esm,cjs",
"27": "语言包文件夹<{}>不存在",
"28": "语言配置文件{}文件已存在,跳过创建。\n使用{}可以重新覆盖创建",
"29": "生成语言配置文件:{}",
"30": "拟支持的语言:{}",
"31": "初始化成功,下一步:",
"32": " - 编辑{}确定拟支持的语言种类等参数",
"33": " - 运行<{}>扫描提取要翻译的文本",
"34": " - 运行<{}>编译语言包",
"35": "创建语言包文件夹: {}",
"36": "模块类型\t: {}",
"37": "编译结果输出至:{}",
"38": "读取语言文件{}失败:{}",
"39": " - 语言包文件: {}",
"40": " - idMap文件: {}",
"41": " - 格式化器:{}",
"42": " - 共合成{}条文本",
"43": " - 运行时: {}",
"44": "自动安装默认语言",
"45": "不嵌入运行时源码",
"46": " - 安装运行时: {}",
"47": " - 更新运行时:{}",
"48": "调用在线翻译服务商的API翻译译指定项目的语言包,如使用百度云翻译服务",
"49": "API密钥",
"50": "API ID",
"51": "翻译速度限制,即每秒可调用的API次数",
"52": "在线翻译服务提供者名称或翻译脚本文件",
"53": "将多个文本合并提交的最大包字节数",
"54": "正在翻译文件:{}",
"55": "需要指定翻译脚本或者appkey和appid",
"56": " - 翻译 -> {}"
"1": " - 更新格式化器:{}",
"2": " - 访问入口文件: {}",
"3": "加载多语言配置文件<{}>失败: {} ",
"4": "目标文件夹<{}>不存在",
"5": "扫描提取范围:",
"6": "工程项目所在目录",
"7": "初始化项目国际化配置",
"8": "输出调试信息",
"9": "重新生成当前项目的语言配置",
"10": "支持的语言列表",
"11": "工程目录:{}",
"12": "扫描并提取所有待翻译的字符串到<languages/translates>文件夹中",
"13": "支持的语言",
"14": "默认语言",
"15": "激活语言",
"16": "翻译名称空间",
"17": "排除要扫描的文件夹,多个用逗号分隔",
"18": "本次提取内容与已存在内容的数据合并策略,默认取值sync=同步,overwrite=覆盖,merge=合并",
"19": "要扫描的文件类型",
"20": "语言配置文件<{}>已存在,将优先使用此配置文件中参数来提取文本",
"21": "编译指定项目的语言包",
"22": "输出模块类型,取值auto,esm,cjs",
"23": "语言包文件夹<{}>不存在",
"24": "生成语言配置文件:{}",
"25": "拟支持的语言:{}",
"26": "初始化成功,下一步:",
"27": " - 编辑{}确定拟支持的语言种类等参数",
"28": " - 运行<{}>扫描提取要翻译的文本",
"29": " - 运行<{}>编译语言包",
"30": "创建语言包文件夹: {}",
"31": "编译结果输出至:{}",
"32": "读取语言文件{}失败:{}",
"33": " - 语言包文件: {}",
"34": " - idMap文件: {}",
"35": " - 格式化器:{}",
"36": " - 共合成{}条文本",
"37": "调用在线翻译服务商的API翻译译指定项目的语言包,如使用百度云翻译服务",
"38": "API密钥",
"39": "API ID",
"40": "翻译速度限制,即每秒可调用的API次数",
"41": "在线翻译服务提供者名称或翻译脚本文件",
"42": "将多个文本合并提交的最大包字节数",
"43": "正在翻译文件:{}",
"44": "需要指定翻译脚本或者appkey和appid",
"45": " - 翻译 -> {}",
"46": "更新@voerkai18n/runtime运行时",
"47": "Updated:{}",
"48": "已经是最新的",
"49": "更新@voerkai18n/runtime失败,请手动更新!",
"50": "支持的语言\\t: {}",
"51": "默认语言\\t: {}",
"52": "激活语言\\t: {}",
"53": "名称空间\\t: {}",
"54": "模块类型\\t: {}",
"55": "TypeScript\\t: {}",
"56": "输出typescript代码",
"57": "备份原始文件",
"58": "翻译模式取值auto=仅翻译未翻译的,full=全部翻译",
"59": "语言配置文件{}文件已存在,跳过创建。\\n使用{}可以重新覆盖创建",
"60": "安装运行时依赖@voerkai18n/runtime",
"61": "已安装运行时:{}"
}

View File

@ -1,6 +1,6 @@
{
"name": "@voerkai18n/cli",
"version": "1.0.59",
"version": "1.0.60",
"description": "命令行工具,用来初始化/提取/编译/自动翻译等工具链",
"main": "index.js",
"homepage": "https://gitee.com/zhangfisher/voerka-i18n",
@ -48,5 +48,5 @@
"through2": "^4.0.2",
"vinyl": "^2.2.1"
},
"lastPublish": "2023-01-29T17:40:18+08:00"
"lastPublish": "2023-01-29T20:30:55+08:00"
}

View File

@ -1,6 +1,6 @@
{
"name": "@voerkai18n/utils",
"version": "1.0.32",
"version": "1.0.33",
"description": "公共工具库",
"main": "index.js",
"scripts": {
@ -14,5 +14,5 @@
"semver": "^7.3.7",
"shelljs": "^0.8.5"
},
"lastPublish": "2023-01-29T17:40:07+08:00"
"lastPublish": "2023-01-29T20:30:44+08:00"
}

View File

@ -1,6 +1,6 @@
{
"name": "@voerkai18n/vite",
"version": "1.0.33",
"version": "1.0.34",
"description": "Vite插件,提供自动插入翻译函数和文本映射等功能",
"homepage": "https://gitee.com/zhangfisher/voerka-i18n",
"repository": {
@ -18,7 +18,7 @@
"dependencies": {
"@voerkai18n/utils": "workspace:latest"
},
"lastPublish": "2023-01-29T17:40:29+08:00",
"lastPublish": "2023-01-29T20:31:14+08:00",
"devDependencies": {
"vite": "^4.0.4"
}

View File

@ -1,6 +1,6 @@
{
"name": "voerkai18n-loader",
"version": "1.0.13",
"version": "1.0.14",
"description": "voerkai18n loader for webpack",
"main": "loader.js",
"homepage": "https://gitee.com/zhangfisher/voerka-i18n",
@ -20,5 +20,5 @@
"dependencies": {
"@voerkai18n/utils": "workspace:^1.0.21"
},
"lastPublish": "2023-01-29T17:40:36+08:00"
"lastPublish": "2023-01-29T20:31:23+08:00"
}