I18工具
======================
[自动添加I18组件] 
	给编辑器中有中文的Label添加i18组件
	命令:node run.js AddI18Label
	
[导入多语言资源]
	将美术多语言资源自动导入到项目中
	命令:node run.js ImportTexture
	
[转换图片格式]
	将多语言目录的图片资源从texture转换成spriteFrame
	命令:node run.js Texture2Sprite "D:/Test/assets/EN/"
	
[查找cc.RichText使用]
	查找项目中的cc.RichText
	命令:node run.js FindRichTxt "D:/Test/assets/"
	
[查找I18Key使用]
	查找项目中I18Key的使用情况
	命令:node run.js FindI18Key "D:/Test/assets/" "etxt405"

[删除组件]
	删除项目文件中的组件
	命令:node .\run.js DeleteCmpt "D:/Test/assets/" "20b3fmaQTtGwKBF6ApDmo38"

[检查文本]
	检查两个文本key差异和通配符差异
	命令:node .\run.js CheckTxt "D:/Test/assets/resources/CN/txt.json" "D:/Test/assets/EN/txt.json"

[添加I18Pre]
	添加I18预加载组件
	命令:node .\run.js AddI18Pre "D:/Test/assets/" "D:/Test/assets/resources/CN/"

[更改资源引用]
	命令:node .\run.js ChangeBundle "D:/Test/assets/" "D:/Test/assets/resources/CN/" "D:/Test/assets/EN/"


配置run.js
======================
	_artPath			美术资源绝对路径
	_projectAssetsPath	项目assets绝对路径
	_defaultLanguageDir	默认语言目录,相对路径
	_languageDir		目标语言目录
	_allLanguageDir		项目中所有语言目录(排除默认语言)
	_i18CmptType		I18组件的type(项目中具体值)
	_i18PrelaodType		项目中I18Pre组件的type(项目中具体值)


注意事项
======================
[自动添加I18组件]
	仅对中文生效
	会更新Label上的string内容
	也会根据使用情况调整key
	因为涉及到其他语言,仅在第一次运行
	
[导入多语言资源]
	运行前项目先备份
	多语言资源名字要和默认语言资源名字一致
	执行后打开creator刷新保存项目
		注意检查场景文件和预制体修改日志
		----------modify scene and prefab in project----------
		
	可能存在多语言美术资源,但项目中没有
		这种情况未处理,注意检查输出
		----------no deal art res----------
		
	所有资源名要唯一
		目前工具不支持 同名文件
		
[转换图片格式]
	[导入多语言资源]后不可立即执行[转换图片格式]
	[导入多语言资源]执行后,需要打开Creator生成meta,然后可执行此功能

[删除组件]
	运行前项目先备份
	运行后打开Creator 根据修改日志打开对应的文件进行保存
		修改日志
		--------modify file list--------

[添加I18Pre]
	运行前项目先备份
	运行后打开Creator保存
		修改日志
		-------modify file list-------

[更改资源引用]
	运行前项目先备份
	默认bundle可以是一个文件夹,也可以是一个bundle
	默认bundle和目标bundle的资源名字要相同
	默认bundle和目标bundle的资源要一一对应,目标bundle资源不可少于默认bundle
	更改中文Label内容

	替换的资源后,Sprite的SizeMode会改为RAW
	游戏运行时,I18Cmpt相关脚本更改spriteFrame时会改为TRIMMED

	本工具运行后,记得更改I18Mgr的默认语言
	

执行过程
======================
[自动添加I18组件]
	1 读取txt文本
	2 修改编辑器中带中文的Label
		如果有i18组件,则检查i18上key对应的文本内容,并更新Label上的string
		如果没有i18组件,则自动添加
		如果txt没有对应文本,则自动生成 key:文本 key自增
		将文本的key记录到i18组件上	
	3 写出txt文本
		如果旧的 key:文本 没用使用过,则不会被保存

[导入多语言资源]
	1 读取美术多语言资源,得到文件列表
	2 通过1得到列表,找到项目中对应的文件uuid
	3 修改项目中使用到多语言资源的场景和prefab
		如果没有i18组件,则自动添加
		将资源路径记录到i18组件
	4 移动文件
		将美术资源放入到项目中多语言目录
		将项目中的资源移动到默认语言目录

[转换图片格式]
	1 读取多语言目录
	2 查找.png.meta 修改类型

[删除组件]
	1 找到所有的scene和prefab文件
	2 找到文件中的对应的组件
	3 根据组件找到对应的节点,把组件从节点的组件列表上移除

[添加I18Pre]
	1 找到所有的scene和prefab文件
	2 找到CN所有资源的url
	3 查找scene和prefab中使用到CN资源的uuid
		如果i18Cmpt已经使用,则排除
	4 给scene和prefab的第一个Node添加I18Pre组件

[更改资源引用]
	1 读取默认bundle里的资源UUID
	2 读取目标bundle里的资源UUID
	3 读取项目中对默认bundle里资源的引用
	4 将项目中对默认bundle里的资源引用指向目标bundle的资源
	5 将Label/RichTxt的内容重新指向目标bundle的文本(仅对中文生效)
	6 更改默认bundle和目标bundle的bundle属性
	7 交换默认bundle和目标bundle的位置


环境
======================
node v22.14.0
creator 3.8.4