更可爱的paru
至少最开始是这么想的,还是说说我干了什么和怎么用吧
额,先说一下我不会写rust
所有文本的 "可爱化" 最开始由 chatgpt3.5 完成,后续对大部分字符串进行了修改,虽然我写的也不是很可爱就是了
不过项目的重点是:为了处理这么多文本,我写了几个脚本用来处理和替换字符 (/script):
- string-process.sh:
- 删除空行
- 扔掉注释和源字符,筛选出真正需要处理的翻译后的字符串
- exchange.sh:
- 生成对最终 .po 文件的 sed 替换规则
- 用处理后的字符替换 .po 中的源字符串
- mkmo.sh(来源于paru仓库):
- 生成.mo二进制文件,可以不用管,install.sh会调用它的
因为要将文件交给gpt处理,所以这里把源 .po
文件的注释与源字符串过滤掉只留下翻译后的字符串,这样能省下将近3/4的行数也没什么特别大的影响
写入文件(备用)后带上提示词 逐段/全部 交给gpt处理
尽量不要处理 help 的信息,对使用者好一点
最终的替换由 sed 和对应的写在文件里的规则实现
这里创建的规则是由,前后两个精简字符串文件的行数确定的
源翻译文件的第一行,转换成风格化后文件的第一行
所以绝对不能出现行数错误或相同行的意思不符
储存库已经干了这些活了,如果只是想装上试试不需要看这些,直接跳到安装就行
呐,如果要从头处理的话需要:
# 生成仅关键信息字符串,并写入一个文件
string-process.sh fetch-key-info xxx.po > ./string-source
风格化处理后写入另一个文件像: string-out
如果输出的文件行数和源文件不符或者中间某行的意思错位了,就只能人眼二叉树咯
不过如果有空行倒是可以用这个:
string-process.sh remove-blank-line ./string-out
从gpt复制或多或少都会有点吧
#!/bin/bash
...
# 语言
Lang=zh_CN
exchange.sh make-sed-rules
# 打印
exchange.sh exchange
# 或者直接输出到当前目录 (script/xxx.po):
exchange.sh exchange-to-file
将写着正确地区码(zh_CN.po)的文件放入 储存库/po/
运行 install.sh
调用paru生成.mo
二进制文件的脚本(的复制品),源paru:/script/mkmo
这会在 储存库根目录 下生成locale
文件夹,这里面包含了需要被放进 系统目录 的翻译文件
但在那之前,脚本会把/usr/share/locale
下的所有 paru.mp
复制到储存库的/backup
作为备份,不然的话你也可以重新安装paru
来恢复啦
最后将储存库/locale
写入/usr/share/
,这一步需要 root
权限
刚才说到了,安装前会备份所有paru的本地化文件,脚本也能快速的用他们恢复翻译文件
以root
权限运行 install.sh restore
即可恢复(如果翻译正常了就不要再运行这个了)
- 为什么不 完全fork一个paru呢
因为paru储存库
不是paru软件包
,还要考虑PKGBUILD
文件的问题,懒得折腾了。但用 PKGBUILD 实现大概会更好些吧 - 这可爱吗
重在学习,可不可爱什么的还是得看提示词嘛,我还是写不出来灵魂,格式对了就行,咕咕 - 哈,你改我pacman管得东西,小心下次更新就给你改过去嗷(凶)
那就再装一遍嘛,再说你看v2
和上一个版本之间隔了多久,还有难道你会一直用这种东西吗,工具就是工具,玩归玩,回显看不懂了难受的是自己。 - 这个逻辑是不是能用在所有用
gettext
弄本地化的项目里
大概率可以吧... - 为什么不弄pacman,既常用文本量又超大(相对)
系统软件搞坏了不好折腾,所以就没想这回事
po/
与 po-s/
以及 script/mkmo.sh
中的内容受 paru 本身的许可证影响,在 GNU General Public License v3.0 下发布。
其余在 /
下,但并不包括 script/mkmo.sh
的文件在 MIT License 下发布。