查看: 3202|回复: 7

[有事请教] 如何给游戏增加切换语言的选项?

[复制链接]
梦石
0
星屑
421
在线时间
32 小时
注册时间
2020-6-4
回帖
35
发表于 2024-4-4 12:39:42 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
制作了一些个人向的游戏,希望能增加多语言支持,我找到了这个 https://dk-plugins.ru/mv/system/localization/

但是要修改创建{name}之类的,挺麻烦

我将使用SExtract提取MV游戏的一些文本到
  1. json {Original Text: ""}
复制代码
格式,能使用GalTransl或AiNiee翻译成俄文、英文等语言

然后通过SExtract注入到new文件夹生成一些新的译文.json,把译文.json移到en_data、ru_data文件夹

看了DLsite有些官中游戏特意创建了data_cn文件夹





看了插件目录,一个个都不认识:


请问有哪些插件能支持切换语言,至少能切en_data、ru_data文件夹的?

梦石
0
星屑
100
在线时间
1022 小时
注册时间
2021-3-24
回帖
544

MZ评测员

发表于 2024-4-4 14:36:22 | 显示全部楼层
路径data_xx
xx是一个变量控制
切换后重新读一下目录
大概就这样
全家活光光~
回复

使用道具 举报

梦石
0
星屑
1333
在线时间
471 小时
注册时间
2012-4-8
回帖
314
发表于 2024-4-4 17:01:02 | 显示全部楼层
方法一(2L说的):切换数据目录
好处是处理方便,坏处是数据冗余

option window 做多一个窗口设置变量,datamanager 读取对应目录数据
  1. DataManager.loadDataFile = function(name, src) {
  2.     var xhr = new XMLHttpRequest();
  3.     var url = 'data/' + src;
  4.     xhr.open('GET', url);
  5.     xhr.overrideMimeType('application/json');
  6.     xhr.onload = function() {
  7.         if (xhr.status < 400) {
  8.             window[name] = JSON.parse(xhr.responseText);
  9.             DataManager.onLoad(window[name]);
  10.         }
  11.     };
  12.     xhr.onerror = this._mapLoader || function() {
  13.         DataManager._errorUrl = DataManager._errorUrl || url;
  14.     };
  15.     window[name] = null;
  16.     xhr.send();
  17. };
复制代码


方法二:所有显示文本的地方,通过方法读取对应翻译文本
好处是数据量小,坏处是处理麻烦,需要项目建立前期就要有规划,和熟悉引擎

所以一般来说,方法一就是最好的
pokemon 和 digimon 正在路上
回复

使用道具 举报

梦石
0
星屑
7989
在线时间
1319 小时
注册时间
2006-7-18
回帖
459
发表于 2024-4-4 19:07:36 | 显示全部楼层
回复

使用道具 举报

梦石
0
星屑
1333
在线时间
471 小时
注册时间
2012-4-8
回帖
314
发表于 2024-4-4 19:30:38 | 显示全部楼层
雷影 发表于 2024-4-4 19:07
https://www.bilibili.com/video/BV1Qv4y1B7dt/?spm_id_from=333.337.search-card.all.click&vd_source=0f7 ...

哦哦,这个就是楼主说的找到的那个
pokemon 和 digimon 正在路上
回复

使用道具 举报

梦石
0
星屑
421
在线时间
32 小时
注册时间
2020-6-4
回帖
35
 楼主| 发表于 2024-4-6 16:16:06 | 显示全部楼层
本帖最后由 allrobot 于 2024-4-7 17:49 编辑


不知道为啥对话框加上{}没法翻译,还有带脚本的选项也无法翻译,例如{厕所(穿越)if(v[86]>0)}无法翻译成toilet(Cross),最新的插件无法应用到目前的mv版本,只能用你提供的bilibili旧版本的插件才会显示切换多语言按钮

编辑,是我搞错了,下的是MZ版本的DKTools 1.3.6,所以无法正常工作
回复

使用道具 举报

梦石
0
星屑
421
在线时间
32 小时
注册时间
2020-6-4
回帖
35
 楼主| 发表于 2024-4-6 16:23:48 | 显示全部楼层
本帖最后由 allrobot 于 2024-4-7 17:51 编辑
505681468 发表于 2024-4-4 17:01
方法一(2L说的):切换数据目录
好处是处理方便,坏处是数据冗余


方法二应该是那脚本了,不知道怎么弄,{xx\nxxx}文本没有正确翻译,实际测试中,一行文本则一个{},不能包含\n,两个{}之间算是换行了

https://github.com/allrobot/Tran ... 取T++的CSV为JSON
写了转换用的脚本,顾名思义,如果Translator++汉化差不多了(可以使用AiNiee进行AI翻译),测试中一切正常没出BUG,接下来T++导出为CSV文件,使用转换脚本生成locales所需的zh.json和满屏{原文xxx}

但个人显然不会去用它,插件似乎没法让{厕所(穿越)if(v【86】>0)}里面的变量正常工作,原文需要更改成{厕所(穿越)},才会显示成toilet(Cross),{「xxx\nxxx」}必须写成{「xxx}{xxx」}翻译才会生效

写起来太麻烦

方法一看不明白,说的是js/rpg_windows.js文件吗,是要我创建一个按钮,如二楼所言创建按钮切换data读取的目录数据?我研究研究

js很少用到,并不是很懂你给的js代码(编辑,论坛无法识别表情符号,给转换成????)
回复

使用道具 举报

梦石
0
星屑
1333
在线时间
471 小时
注册时间
2012-4-8
回帖
314
发表于 2024-4-6 20:00:30 | 显示全部楼层
allrobot 发表于 2024-4-6 16:23
方法二应该是那脚本了,不知道怎么弄,{xx\nxxx}文本没有正确翻译

方法一看不明白,说的是js/rpg_window ...

类似于这样


KSystem_Data_Reload.rar (1.89 KB, 下载次数: 9)
pokemon 和 digimon 正在路上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部