
很长一段时间以来,我都在等待有人能翻译我喜欢的那些模组,但一直没能如愿。所以我决定自己动手,开始学习翻译。当时也没有现成的翻译教程,于是我便自己编写了一份。这里面包含的全是我的个人经验,以及我从网上搜集到的各类相关内容。特别感谢MrHimera,他是游戏完整本地化模组的创作者之一,也是在翻译学习初期主动联系并帮助解决问题的人。奇怪的是,至今仍没有人为此款优秀游戏创建这样的指南。现在你将能够自行翻译模组了!翻译需要准备什么?总体而言,目前的翻译流程并不是很复杂。为什么呢? 这都是因为我们可以使用神经网络、便捷的文本编辑器以及其他用户的经验。简单来说,我们需要: 代码文本编辑器(如Notepad++或其他任何代码文本编辑器) 神经网络(下面会推荐我常用的) 翻译工具 辅助工具 代码编辑器 我使用Notepad++,因为用它工作对我来说很方便。它可以: - 同时打开多个代码标签页,并在它们之间快速切换 - 同时选中并替换多个代码单词/行 - 安装扩展(我使用Markdown【代码着色】来方便使用) 你可以使用任何其他的,但我认为这个是最棒的。 神经网络 正是神经网络使得翻译过程得到极致优化。它们帮我节省了大量时间。通常我会直接输入提示词,要求将模组中的文本替换为俄语。我使用的是Mistral(Model Large 2)。这个神经网络是免费的,而且相当智能。不过它有请求次数限制,但这个限制很难达到。

还可以使用Perplexity Labs(可在其中选择任何模型)。

引用自2025年1月6日的补充内容:可以试试DuckDuckGo的AI工具。它是免费工具中比较好的选择。可以无限使用ChatGPT的演示版(非常智能)。只是在进行一些查询后需要创建新对话,因为可能会开始卡顿。不过说实话,我没有尝试过用它来翻译。我只在工作中使用它。或者如果你们有其他选择,也可以使用其他工具。ChatGPT也可以用,但它的限制非常讨厌。 翻译工具 这可是经典工具。如果没有神经网络,人们就只能用它了。我更常使用谷歌翻译,因为它相当方便且准确。神经网络的翻译往往不太通顺,所以有些个别单词/短语还是得手动翻译。真没办法。额外工具 有时需要使用命令提示符(win + r -> 输入"cmd"并按Enter),或者直接在Windows搜索栏中输入"命令提示符"。这将允许我们解压缩《星界边境》使用的.pack文件。 此外,如果认为可行,您还可以以其他方式优化翻译。 如果一切准备就绪,就可以开始翻译了。准备翻译 下载翻译用的模组 首先需要下载你想要翻译的模组。以GyroJets为例 订阅该模组并查看其ID(位于网址末尾)

GyroJets 的 ID 是 3143833333。复制此 ID 并进入游戏文件夹,你需要找到创意工坊内容。很可能你的情况和我一样,只是磁盘不同。

剩下的就是通过搜索找到已下载的模组文件夹。

文件夹内会有一个content文件,其中包含了模组内容。将其复制到桌面,然后进入下一步。 准备解压 桌面上的文件目前处于压缩状态,我们无法查看其内容。要进行解压,需要使用《星界边境》的系统文件和命令提示符。在游戏文件夹:D:SteamLibrarysteamappscommonStarboundwin32(或您的其他路径)中有两个这样的文件: asset_packer asset_unpacker(我们需要的) 我们只需要Unpacker(但如果特别想的话也可以打包文件)。 可以将其复制到方便的位置,但我还是留在原地。现在需要知道这个解包文件的路径。这很容易做到,查看对象属性(右键->“属性”)即可。
我的路径是这样的: D: SteamLibrary steamapps common Starbound win32 asset_unpacker.exe 复制该路径并保存到某个地方,以便之后查找。 还需要知道桌面上模组文件的路径。同样通过“属性”查看。我提取出的content文件路径是这样的: C: Users FoxDe Desktop contents.pak 现在我们需要指定解压文件的保存位置。为了方便,我会保存在桌面上,不过你们也可以选择其他任何位置。我的路径: C: Users FoxDe Desktop unpacked.pak 还需要说明的是,上述路径末尾的【unpacked.pak】是最终得到的解压文件名称。你可以随意命名,也可以像我这样命名(之后可以重命名)。 解压步骤: 打开命令提示符(我在上面已经说明操作方法),并按以下方式输入所有路径: 【D: SteamLibrary steamapps common Starbound win32 asset_unpacker.exe】【C: Users FoxDe Desktop contents.pak】【C: Users FoxDe Desktop unpacked.pak】 即将每个路径用引号括起来并连续书写,中间用空格分隔: 【Unpacker的路径】 【content文件(待翻译模组)的路径】 【保存位置的路径及保存文件的名称(在我的示例中为unpacked.pak)】 整体格式如下:

最终你的桌面上会出现一个名为“unpacked”的文件。只需将其重命名为类似“GyroJets 原版”的名称即可。 两种翻译方法 我可以告诉你两种能够翻译模组的方法: 使用他人翻译进行翻译 独立翻译 下面我将分别介绍这两种方法。 使用他人本地化文件进行翻译 我不鼓励抄袭,但为何不使用现成的其他语言翻译文件呢?因此我翻译过很多模组,可以说这让流程快了很多,但还是得费些功夫。 很多模组已经被翻译成中文、西班牙语等很棒的语言。只需将翻译切换为俄语,就可以使用它们。 比如,我们来下载模组及其中文翻译。作为示例,我将以《Project Redemption》及其中文本地化【新】救赎计划简中补丁为例。按照上述指南下载这两个模组,解压后会得到两个文件夹:

现在我们来看一下原版和翻译版文件夹中的文件:

可以看到,翻译文件夹中并未包含原始文件夹中的所有内容。这些文件夹之所以不存在,是因为其中的文件不包含玩家在游戏中可见的文本字符串(它们是纯技术文件)。这是该方法的一大优势,因为无需在所有文件中逐一查找并筛选需要翻译的文件,同时也降低了操作失误导致模组或游戏损坏的风险。你可能会想:“既然可以直接从中文翻译,为什么还需要原文呢?”这是个好问题,但那样做结果会像“聋子的耳朵——摆设”。先从英文翻译成中文,再从中文翻译成俄语,所有含义都会丢失,最终成果质量会很差。因此,我们需要用记事本++打开一个原文文件和一个翻译文件。比如,我会打开这样的文件:

一开始看起来一切都挺吓人的,但实际上比看起来要简单。

我们有原始行: "shortdescription" : "Frying Pan ^yellow;^reset;" 翻译文件本质上通过以下结构替换此行: [ { "op": "replace",(替换操作) "value": "平底锅 ^yellow;^reset;",(将要替换成的内容) "path": "/upgradeParameters/shortdescription"(替换路径) } ] 请注意替换路径。它能精确确定要替换的内容和位置 我们在做什么?我们只是将原文中的句子进行翻译,然后把它插入到翻译文件中,替换掉中文文本。也就是说,“Frying Pan”被翻译为“平底锅”,所以我们就在文件中这样写。

你可能注意到,文本行中还存在不需要翻译的内容:^yellow;^reset;。这是为文本添加样式的技术元素,目的是让文本在游戏中呈现不同的显示效果。在这个例子中,文本会显示为黄色。简而言之,不要翻译这些内容就没问题。 好了!我们已经翻译完一个文件,但实际上这样的文件数量非常多,独自完成所有工作需要一天甚至一周的时间(如果你是受虐狂的话,可能会更久)。我最初说的是可以辅助翻译的神经网络。如果锅文件里只有一行内容,那么在同样的对话或代码文件中可能需要翻译300多行内容。这种时候就可以使用神经网络。现在我来介绍具体操作方法。 翻译对话的工作方式如下:

对于每一行对话,都需要准备类似的结构,就像那个平底锅的例子一样(稍后我会解释如何手动翻译)。你们可能已经注意到,这样的句子数量非常多,会花费不少时间。这时就需要用到神经网络了。在Mistral中,我们使用这样的提示来进行翻译: 我有一段要翻译成中文的文本: [ { "op": "replace", "value": "蓝姆 n n蓝姆——它因其花蜜的颜色和粘稠度而得名——从远处看,并不像花,更像是一丛高大却已凋谢的芦苇。"无法识别或无法翻译,已删除。从远处看,它们在外观上并不像花朵,更像是高大、枯萎且颜色异常的绿色芦苇。之后神经网络会同意,您可以按以下格式向其发送任何翻译内容: 翻译至其他语言的代码:"此处为代码" 俄语翻译:"在此处连续插入翻译后的字符串" 具体格式如下: 1. 包含其他语言版本的消息部分:

2. 消息的部分内容需要翻译:

3. 结果:

相当简单,对吧? 只需替换其他语言的本地化文件中的代码即可。 重要! 注意行数。如果本地化文件有300行,那么替换后也必须是300行。否则可能会导致某些内容丢失、消失,甚至出现故障。 问题在于聊天框有字符数量限制,因此在进行5-6次大的替换后,神经网络会停止工作,只能翻译文件的一部分内容。在这种情况下,只需创建新的聊天,重新“训练”替换功能,然后处理文件的其余部分。 现在,用这种方式翻译第三方本地化中的所有文件,然后进入检查和发布阶段。 独立翻译 简而言之:原理与处理他人本地化文件相同,只是需要自己创建所有带有替换功能的文件,使用以下替换结构: { "op": "replace", "path": "路径", (例如,"/augment/displayName") "value": "翻译" (例如:"护盾模块 I") }, 不要忘记在末尾添加逗号,如果后面还有替换内容的话 请记住,只需要翻译需要翻译的内容。通常是对话和各种文本(最常见于文件夹:dialogs、npc、codex、quests),物品名称(常见于items、food、weapons、armors、plants、objects) 稍后我会补充这部分内容。 发布 实际上,无论你如何发布都可以,因为不这样做就无法进行检查。但发布时权限受限。 如果您已完成此步骤,那么您应该有一个仅包含翻译文件的文件夹!如果文件夹中存在_metadata和/或_previewimage文件,请将其删除(如果您以他人的本地化文件为基础,这些文件肯定存在)。 启动Mod上传工具。 在Steam库中选择《星界边境》,点击“开始游戏”并选择MUT。

如果游戏直接启动,说明你选择了默认的游戏启动方式,因此需要在游戏启动设置中进行调整。之后你会看到一个窗口:

现在我们来分别了解每个字段: Name——您的模组的简短名称(我已经不记得在哪里使用了),可以参考示例来填写; Title——模组在Steam上的标题(玩家将通过该名称搜索到它); Author——填写所有参与模组制作的作者昵称; Version——根据您的意愿填写版本号,之后可以更新模组并更改版本号; Description——模组描述,简要说明您制作的内容; Preview image——制作一张方形的模组头像。模组并进行加载(文件大小应尽可能小,因为它将计入模组的总大小);分类 – 选择与您的模组相关的类别(在我们的示例中,仅选择用户界面)。填写完成后,整体效果如下:

填写完成后即可发布。点击【上传至Steam】,获取您的模组标识符。该标识符将显示在MUT的左下角(Mod ID - 截图示例)。 您的模组已在Steam上线! 但这还没有结束。 现在打开模组文件夹,此时文件夹中会出现_metadata和/或_previewimage文件。使用代码编辑器打开第一个文件,并进行一些修改:

添加一行priority并设置任意数字,但不能是1(我通常设为11)。这个属性可以用于设置模组加载顺序,确保你的翻译会在原模组之后加载。保存文件并进行模组检查。 还可以使用includes属性,该属性可以指定哪些模组需要在你的模组之前加载。不过我每次添加这个属性时总会出问题,所以你们可以自己研究一下这个问题。 检查 翻译已上传,但不确定是否能正常运行。 在此之前,我建议取消订阅《星界边境》的所有模组,只保留与翻译相关的模组(原模组的补充内容也请保留)。当然,完整的游戏翻译模组也要保留。 现在我们来下载我们的翻译。进入您的模组页面(可以通过创意工坊,选择“我的发布”,或通过个人资料“内容”菜单中的创意工坊作品等方式),然后只需订阅该模组。 接下来只需启动游戏。之后有两种情况: 1) 游戏成功启动,一切正常。 2) 游戏在启动过程中崩溃(通常会出现错误提示并将您返回到桌面)。 第一种情况(无论如何您都需要达成此情况): 检查您的翻译。我使用了修改器来获取模组中的物品,以测试一切是否正常。应该会是这样的:

这里一切都很棒,文本显示得非常自然。 但这里的情况就不太好了:

如你所见,文本出现了重叠的情况。原因是原版内容是按照特定的字符数量设计的,因此在翻译时,你的文本可能会比原版更宽或更窄。 因此,我建议在翻译时保持相同的字符数量(或者至少从视觉上估算物品描述或名称的长度)。 第二种情况——游戏崩溃 要解决问题,需要查看《星界边境》的日志。这是一个记录游戏中所有事件的文件。包括启动了哪些文件、进行了哪些进程等。也可以在这里查看错误信息。 日志文件位于以下路径:D(您的磁盘):SteamLibrarysteamappscommonStarboundstorage 那里会有多个文件,但我们需要的是没有前缀的那个。

我们打开并开始查看。我们只关注带有【Error】标签的消息。例如,来看看我在第一次翻译时遇到的错误。当时游戏能启动到标题画面,然后就崩溃了。我查看日志后发现了以下内容:

系统在读取路径时出现问题:/npcs/stationshipcrewmate.npctype。我找到了这个文件并检查了可能的问题。发现有个地方漏了分号或斜杠(具体记不清了)。我修正后游戏就能启动了。之后我也是这样解决错误的。 总结 如果你的翻译运行良好,那就太棒了!现在只需在Steam上切换您的模组页面可见性,社区就能看到它了。 但在此之前,我建议您做一些美化工作: 添加优质的描述; 制作几张游戏内翻译的截图; 设计一个精美的预览图(模组头像);
2026-02-17 22:00:09 发布在
星界边境
说点好听的...
收藏
0
0
