一点儿饥荒 l18n 更新脚本。
- TypeScript 61.7%
- Lua 29.5%
- PowerShell 5.3%
- Shell 3.5%
| mediawiki/Module | ||
| .gitignore | ||
| mkpo.ts | ||
| README.md | ||
| unzipDstScripts_example.ps1 | ||
| unzipDstScripts_example.sh | ||
| uploadPo.ts | ||
dst Wiki scripts
一点儿饥荒 l18n 更新脚本。
依赖
deno,用于解析 po,分块儿保存为 lua,和上传到 wiki。理论上你把 Deno api 去掉 build 一下 ts 然后拿 node 跑也行。
bash & unzip,解压饥荒 script zip 得到 l18n。
任何有 /tmp/ 的文件系统,用来放解压出来的文件。
饥荒和饥荒联机版的游戏。
一个能更改目标 wiki 的模块的账号(有些 wiki 限制了需要管理员因此你可能需要申请管理员权限)
使用方法
先将 unzipDstScripts_example.sh 复制到 unzipDstScripts.sh,打开,将里面的饥荒目录改成你自己的游戏路径(steam - 库 - 右键游戏 - 管理 - 浏览本地文件)
- 对于 Windows 用户请将上一行文字的
.sh当成.ps1 - 对于 mac/Android/BSD 等 Unix 用户(
饥荒哪里有Android版本啊喂!)可以考虑加上 env FORCE_LINUX 然后赌一下能不能成功。
然后跑一下 mkpo.ts
之后去 wiki 的 Special:机器人密码 创建一个机器人(饥荒现在有一堆 wiki,先确认你要传哪个 wiki),赋予
大量操作(机器人)访问权限 编辑存在的页面 创建、编辑和移动页面 三个权限;
以环境变量 USERNAME=<用户名> PASSWORD=<密码> 跑一下 uploadPo.ts
限速
你可能会撞限速,报错会输出并且停止当前上传。
此时你只需等一会儿重新继续执行 uploadPo.ts 即可(当然你也可以考虑写个while true)
文件结构
mediawikiModulel18n.lua- 处理模板调用的模块,uploadPo.ts并不会更新此文件。l18nIndex.lua- 用于标记每个 chunk 开头的第一个条目的 msgctxt 是什么,从而在查询 msgctxt 的时候可以找到要查哪个 chunk。
tmpModule- 存放区块文件,在 mediawiki 上这是和 Module 合并的。我不会说是因为文件太多,我的 idea index 那些 lua 导致我 cpu 拉满所以我才不得已开一个新的例外文件夹的。
mkpo.ts- 会调用unzipDstScripts.sh来解压源码。unzipDstScripts_example.sh- 给你读的模板,用处是调用 shell 解压游戏语言文件。请将其复制到unzipDstScripts.sh然后再编辑。unzipDstScripts_example.ps1- 同上。请将其复制到unzipDstScripts.ps1然后再编辑。uploadPo.ts- 先上传区块,再上传l18nIndex.lua,这样传到一半旧的区块还在,就不会遇到模块炸裂的情况。断点续传的原理是传一个删一个多么简单粗暴的方法。
todo
写一个 clean.ts 搜索 mediawiki 上的所有的 chunk,列出时间戳,删掉旧的 chunk 只保留最新两个,节约资源。
处理遇到 rate limit 的情况,自动重试。
测试 windows 分支(但是我没有 windows 设备)