Home
avatar

静静

纪元1800布局设计软件AnnoDesigner汉化方法

最近沉迷玩纪元1800,当总督各种规划城市,用到一个布局设计软件AnnoDesigner,可惜没有汉化看起来比较难受,所以尝试汉化翻译一下。汉化文件在文末,懒得看我啰嗦的直接跳文末下载替换就行。

找到语言相关配置文件

这个软件一开始只有这几个语言选项,没有中文

image-20250915092918129

从release下载的文件夹中发现json文件,疑似是语言的配置文件。

image-20250915092855932

image-20250915092941593

提取并翻译

用AI写了个脚本

import json
import pandas as pd

# 读取JSON文件
with open('presets.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 准备存储提取的数据
extracted_data = []

# 遍历所有建筑
for building in data['Buildings']:
    if 'Localization' in building and building['Localization'].get('eng'):
        item = {
            'Header': building.get('Header', ''),
            'Faction': building.get('Faction', ''),
            'Group': building.get('Group', ''),
            'Identifier': building.get('Identifier', ''),
            'IconFileName': building.get('IconFileName', ''),
            'English_Name': building['Localization'].get('eng', '')
        }
        extracted_data.append(item)

# 创建DataFrame并保存为CSV
df = pd.DataFrame(extracted_data)
df.to_csv('building_icons.csv', index=False, encoding='utf-8-sig')

# 打印预览
print("已提取数据并保存到 building_icons.csv")
print("\n数据预览:")
print(df.head())

这是提取另一个文件的

import json
import csv

def extract_english_translations():
    # 读取翻译文件
    with open('treeLocalization.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
    
    # 查找英文语言部分
    translations = []
    for lang in data['languages']:
        if lang['languageCode'] == 'eng':
            translations = lang['translations']
            break
    
    # 保存为CSV格式
    with open('english_translations.csv', 'w', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        # 写入表头
        writer.writerow(['Key', 'English'])
        # 写入翻译数据
        for item in translations:
            writer.writerow([item['key'], item['value']])
    
    print(f'提取了 {len(translations)} 个英文翻译到 english_translations.csv')
    return translations

if __name__ == '__main__':
    extract_english_translations()

尝试替换

一开始还尝试用AI翻译,后来实在是太多了,AI老是思考耽误时间,最后还是充了个有道会员翻译了一下,非常快速。

image-20250915093150868

用WPS表格打开csv文件比较好直接粘贴,粘贴后检查表格翻译是否对应,因为我只玩了1800,但是这个软件还包括其他的几个系列,所以我也不确定翻译是否正确,总之先用着机翻的吧。WPS保存后记得用VScode打开,重新用编码GB2312打开,再改为用UTF-8保存。

image-20250915093045519

然后又用AI写两个脚本,把汉化的内容模仿原来的json文件的形式补充回去。

import json
import pandas as pd

def update_presets():
    # 读取建筑翻译映射 
    df = pd.read_csv('building_icons.csv')
    translations = dict(zip(df['English_Name'], df['Chinese_Name']))
    
    # 读取 presets.json
    with open('presets.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
    
    # 遍历并更新每个建筑的本地化
    updated = 0
    for building in data['Buildings']:
        if 'Localization' in building:
            # 根据英文名查找中文翻译
            eng_name = building['Localization'].get('eng')
            if eng_name and eng_name in translations:
                # 添加中文翻译
                building['Localization']['zh'] = translations[eng_name]
                updated += 1
    
    # 保存更新后的文件
    with open('presets.json', 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=2)
    
    print(f"Successfully updated {updated} Chinese names in presets.json")

if __name__ == "__main__":
    try:
        update_presets()
    except Exception as e:
        print(f"Error saving file: {str(e)}")
import json
import pandas as pd

def create_chinese_translations():
    # 读取CSV文件
    df = pd.read_csv('english_translations.csv')
    
    # 创建中文翻译数据结构
    chinese_lang = {
        "languageCode": "zh",
        "language": "简体中文",
        "translations": []
    }
    
    # 遍历CSV中的每一行,生成翻译条目
    for _, row in df.iterrows():
        if pd.notna(row['Chinese']): # 只添加有中文翻译的条目
            translation = {
                "key": row['Key'],
                "value": row['Chinese']
            }
            chinese_lang['translations'].append(translation)
    
    # 读取原始treeLocalization.json
    with open('treeLocalization.json', 'r', encoding='utf-8') as f:
        tree_data = json.load(f)
    
    # 添加中文语言到languages列表
    tree_data['languages'].append(chinese_lang)
    
    # 保存更新后的文件
    with open('treeLocalization.json', 'w', encoding='utf-8') as f:
        json.dump(tree_data, f, ensure_ascii=False, indent=4)
    
    print(f'已添加 {len(chinese_lang["translations"])} 条中文翻译')

if __name__ == '__main__':
    create_chinese_translations()

发现语言选项已经编译到exe中

翻译好后打开发现还是没有中文选项,找了一下软件配置文件,似乎语言选择的键值没有写再配置文件中,那应该就是直接编码在exe中了。

image-20250915093252055

用IDA打开查了一下确实。

image-20250915092312346

翻了一下作者的源码,发现git仓库是有sln文件的,顺利的话clone下来,补充中文的语言选择选项,重新编译一下就行。

image-20250915092649763

安装一下编译必要的组件

image-20250915093351678

找到语言选项

image-20250915094517784

添加中文选项

image-20250915094615176

把中文的code改统一,按照作者这个语言文件风格的code方式应该是chs。

image-20250915094744726

image-20250915094810488

翻到了界面语言的翻译选项,顺手翻译一下

image-20250915095043526

image-20250915095437839

但是重新编译发现失败了

image-20250915095706618

在代码里看到作者给的一个连接

image-20250915095929042

好像已经有人贡献过中文翻译了,但是为什么不合并呢,怎么不发布中文版呢?

image-20250915100006388

最后看到一段生成语言code的代码,但是我在源码里面没找到再哪里改,这也许是失败的原因。

image-20250915100354711

英文变eeng,中文变英文

编译失败没事,还有一招头天换日。

image-20250915100823731

image-20250915100922240

最后分享一下我机翻的语言替换文件,下载好后直接丢文件夹下替换就行。只简单校对了一下机翻的内容,保证Anno1800的翻译基本能看,如果有错误的自行用记事本之类的软件打开json文件搜索修改就可。其他几个纪元的系列还没玩过,不知道机翻的含义对不对,如果不对就自己改一下吧,也欢迎在评论区分享你的汉化文件。

p

我用夸克网盘给你分享了「AnnoDesigner汉化」,点击链接或复制整段内容,打开「夸克APP」即可获取。
筷莱旻潆鱪麯麺夺郝
/~e25c38IeIg~:/
链接:https://pan.quark.cn/s/e8385005d590

这是我用软件画的住宅布局,我觉得用起来还不错

449户电力银行中央布局

Anno