设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 278|回复: 7
打印 上一主题 下一主题

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

[复制链接]

Lv2.观梦者

梦石
0
星屑
439
在线时间
31 小时
注册时间
2020-6-4
帖子
52
跳转到指定楼层
1
发表于 2024-4-4 12:39:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
制作了一些个人向的游戏,希望能增加多语言支持,我找到了这个 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文件夹的?

Lv3.寻梦者

梦石
0
星屑
4623
在线时间
639 小时
注册时间
2021-3-24
帖子
501
2
发表于 2024-4-4 14:36:22 | 只看该作者
路径data_xx
xx是一个变量控制
切换后重新读一下目录
大概就这样
摸了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
522
在线时间
272 小时
注册时间
2012-4-8
帖子
173
3
发表于 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 正在路上
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6405
在线时间
925 小时
注册时间
2006-7-18
帖子
505
4
发表于 2024-4-4 19:07:36 | 只看该作者
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
522
在线时间
272 小时
注册时间
2012-4-8
帖子
173
5
发表于 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 正在路上
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
439
在线时间
31 小时
注册时间
2020-6-4
帖子
52
6
 楼主| 发表于 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,所以无法正常工作
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
439
在线时间
31 小时
注册时间
2020-6-4
帖子
52
7
 楼主| 发表于 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代码(编辑,论坛无法识别表情符号,给转换成????)
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
522
在线时间
272 小时
注册时间
2012-4-8
帖子
173
8
发表于 2024-4-6 20:00:30 | 只看该作者
allrobot 发表于 2024-4-6 16:23
方法二应该是那脚本了,不知道怎么弄,{xx\nxxx}文本没有正确翻译

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

类似于这样


KSystem_Data_Reload.rar (1.89 KB, 下载次数: 5)
pokemon 和 digimon 正在路上
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-3 03:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表