Featured image of post 纪元1800布局设计软件AnnoDesigner汉化方法

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

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

找到语言相关配置文件

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

image-20250915092918129

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

image-20250915092855932

image-20250915092941593

提取并翻译

用AI写了个脚本

 1import json
 2import pandas as pd
 3
 4# 读取JSON文件
 5with open('presets.json', 'r', encoding='utf-8') as f:
 6    data = json.load(f)
 7
 8# 准备存储提取的数据
 9extracted_data = []
10
11# 遍历所有建筑
12for building in data['Buildings']:
13    if 'Localization' in building and building['Localization'].get('eng'):
14        item = {
15            'Header': building.get('Header', ''),
16            'Faction': building.get('Faction', ''),
17            'Group': building.get('Group', ''),
18            'Identifier': building.get('Identifier', ''),
19            'IconFileName': building.get('IconFileName', ''),
20            'English_Name': building['Localization'].get('eng', '')
21        }
22        extracted_data.append(item)
23
24# 创建DataFrame并保存为CSV
25df = pd.DataFrame(extracted_data)
26df.to_csv('building_icons.csv', index=False, encoding='utf-8-sig')
27
28# 打印预览
29print("已提取数据并保存到 building_icons.csv")
30print("\n数据预览:")
31print(df.head())

这是提取另一个文件的

 1import json
 2import csv
 3
 4def extract_english_translations():
 5    # 读取翻译文件
 6    with open('treeLocalization.json', 'r', encoding='utf-8') as f:
 7        data = json.load(f)
 8    
 9    # 查找英文语言部分
10    translations = []
11    for lang in data['languages']:
12        if lang['languageCode'] == 'eng':
13            translations = lang['translations']
14            break
15    
16    # 保存为CSV格式
17    with open('english_translations.csv', 'w', encoding='utf-8', newline='') as f:
18        writer = csv.writer(f)
19        # 写入表头
20        writer.writerow(['Key', 'English'])
21        # 写入翻译数据
22        for item in translations:
23            writer.writerow([item['key'], item['value']])
24    
25    print(f'提取了 {len(translations)} 个英文翻译到 english_translations.csv')
26    return translations
27
28if __name__ == '__main__':
29    extract_english_translations()

尝试替换

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

image-20250915093150868

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

image-20250915093045519

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

 1import json
 2import pandas as pd
 3
 4def update_presets():
 5    # 读取建筑翻译映射 
 6    df = pd.read_csv('building_icons.csv')
 7    translations = dict(zip(df['English_Name'], df['Chinese_Name']))
 8    
 9    # 读取 presets.json
10    with open('presets.json', 'r', encoding='utf-8') as f:
11        data = json.load(f)
12    
13    # 遍历并更新每个建筑的本地化
14    updated = 0
15    for building in data['Buildings']:
16        if 'Localization' in building:
17            # 根据英文名查找中文翻译
18            eng_name = building['Localization'].get('eng')
19            if eng_name and eng_name in translations:
20                # 添加中文翻译
21                building['Localization']['zh'] = translations[eng_name]
22                updated += 1
23    
24    # 保存更新后的文件
25    with open('presets.json', 'w', encoding='utf-8') as f:
26        json.dump(data, f, ensure_ascii=False, indent=2)
27    
28    print(f"Successfully updated {updated} Chinese names in presets.json")
29
30if __name__ == "__main__":
31    try:
32        update_presets()
33    except Exception as e:
34        print(f"Error saving file: {str(e)}")
 1import json
 2import pandas as pd
 3
 4def create_chinese_translations():
 5    # 读取CSV文件
 6    df = pd.read_csv('english_translations.csv')
 7    
 8    # 创建中文翻译数据结构
 9    chinese_lang = {
10        "languageCode": "zh",
11        "language": "简体中文",
12        "translations": []
13    }
14    
15    # 遍历CSV中的每一行,生成翻译条目
16    for _, row in df.iterrows():
17        if pd.notna(row['Chinese']): # 只添加有中文翻译的条目
18            translation = {
19                "key": row['Key'],
20                "value": row['Chinese']
21            }
22            chinese_lang['translations'].append(translation)
23    
24    # 读取原始treeLocalization.json
25    with open('treeLocalization.json', 'r', encoding='utf-8') as f:
26        tree_data = json.load(f)
27    
28    # 添加中文语言到languages列表
29    tree_data['languages'].append(chinese_lang)
30    
31    # 保存更新后的文件
32    with open('treeLocalization.json', 'w', encoding='utf-8') as f:
33        json.dump(tree_data, f, ensure_ascii=False, indent=4)
34    
35    print(f'已添加 {len(chinese_lang["translations"])} 条中文翻译')
36
37if __name__ == '__main__':
38    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户电力银行中央布局

Licensed under CC BY-NC-SA 4.0