一点儿饥荒 l18n 更新脚本。
  • TypeScript 61.7%
  • Lua 29.5%
  • PowerShell 5.3%
  • Shell 3.5%
Find a file
2025-05-16 17:33:52 +08:00
mediawiki/Module init 2025-04-26 10:10:52 +08:00
.gitignore init 2025-04-26 10:10:52 +08:00
mkpo.ts add ps1 script, hope it work 2025-05-16 17:33:52 +08:00
README.md add ps1 script, hope it work 2025-05-16 17:33:52 +08:00
unzipDstScripts_example.ps1 add ps1 script, hope it work 2025-05-16 17:33:52 +08:00
unzipDstScripts_example.sh init 2025-04-26 10:10:52 +08:00
uploadPo.ts init 2025-04-26 10:10:52 +08:00

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

文件结构

  • mediawiki
    • Module
      • l18n.lua - 处理模板调用的模块,uploadPo.ts 并不会更新此文件。
      • l18nIndex.lua - 用于标记每个 chunk 开头的第一个条目的 msgctxt 是什么,从而在查询 msgctxt 的时候可以找到要查哪个 chunk。
    • tmp
      • Module - 存放区块文件,在 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 设备)