Stable Diffusion系列(七):实现SD webui的全盘汉化

发布于:2024-05-22 ⋅ 阅读:(187) ⋅ 点赞:(0)

插件下载

SD webui中用于汉化的插件统一叫localization(本地化),使用时需要安装这两个插件,一个用于开启本地化支持,一个用于中文本地化

插件安装完成后,进入\extensions\stable-diffusion-webui-localization-zh_CN\localizations这个路径下,可以看到一个名为zh_CN.json的文件,打开之后如下图所示,每一行的第一部分是英文原文,第二部分是要翻译成的中文,插件会自动完成替换
在这里插入图片描述
但是在实际的界面中,仍然有很多东西没有更新,原来这已经是几个月前的文件了,跟不上进度了
在这里插入图片描述

文件合并

于是我又搜了搜其他的本地化插件,发现还有其他的简体字插件zh-Hans(Stable).json和繁体字插件zh_Hans.json可用,并且日期比较新。
所以现在目录下就有一下三个JSON文件,且从质量上来说,zh_CN.json>zh-Hans(Stable)>zh_Hans.json
在这里插入图片描述
因此,按照优先级zh_CN.json>zh-Hans(Stable)>zh_Hans.json的顺序,完成JSON文件的合并,代码如下所示。注意要完成繁体到简体的转换。
这是我给ChatGPT的问题:

我有zh_CN.json、zh-Hans(Stable)、zh_Hans.json这三个用来翻译英文到中文的文件,它们包含的内容(英文原文:中文翻译)是部分重叠的,并且翻译质量逐个递减。现在我要你写一段python代码,将这三个文件按顺序两两合并成一个文件,保存为merge.json。注意zh_Hans.json中翻译的结果是繁体中文,你需要转换成简体字。

下面是回答的代码

# pip install opencc-python-reimplemented
import json
from opencc import OpenCC
# 初始化繁体转简体的转换器
cc = OpenCC('t2s')

# 读取 JSON 文件内容
def read_json(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        return json.load(file)
# 合并两个字典,第二个字典的内容会覆盖第一个字典的内容
def merge_dicts(dict1, dict2):
    merged = dict1.copy()
    merged.update(dict2)
    return merged
# 读取三个 JSON 文件
zh_CN = read_json('zh_CN.json')
zh_Hans_Stable = read_json('zh-Hans (Stable).json')
zh_Hans = read_json('zh_Hans.json')

# 将繁体中文转换为简体中文
zh_Hans_simplified = {key: cc.convert(value) for key, value in zh_Hans.items()}

# 按顺序合并字典
merged = merge_dicts(zh_Hans_Stable, zh_Hans_simplified)
merged = merge_dicts(merged, zh_CN)

# 保存合并后的结果到 merge.json
with open('merge.json', 'w', encoding='utf-8') as file:
    json.dump(merged, file, ensure_ascii=False, indent=4)

print('Merge completed and saved to merge.json')

插件启用

进入设置里的用户界面
在这里插入图片描述
重启之后
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到