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

Project1

 找回密码
 注册会员
搜索

[求脚本] 针对英文的一次性自动换行脚本

查看数: 6772 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-3-20 12:06

正文摘要:

近期游戏准备上架在制作英文版本. 采用了用RPGMAKER Trans工具进行"文本导出→翻译→再导入"的方式翻译, 但发现了一个问题, 英文文本翻译出来后, 译文的每一行总是比原文要长的. 这就导致了翻译后的版本总会有一些 ...

回复

龙夫三拳tan 发表于 2019-5-10 12:59:24
张咚咚 发表于 2019-5-10 09:53
把17行换成
next if !str.is_a?(String) or str.length

好的~
试了下, 替换后 49行 就会报错:
undefined method 'code' for nil:NilClass

我晚些试着新开个工程导入文本再测试下是什么导致的问题
张咚咚 发表于 2019-5-10 09:53:18
本帖最后由 张咚咚 于 2019-5-10 09:54 编辑
龙夫三拳tan 发表于 2019-5-9 06:49
抱歉隔这么久后回来挖坟, 最近翻译文本才完成了, 不过导入文本后再执行该脚本发现会报 ...


把17行换成
next if !str.is_a?(String) or str.length <= 30
试试
龙夫三拳tan 发表于 2019-5-9 06:49:19
张咚咚 发表于 2019-3-20 12:06
刚刚那个只是对"末尾单词会隔开"问题进行修复。。
太长换行执行下面这个试试。

抱歉隔这么久后回来挖坟, 最近翻译文本才完成了, 不过导入文本后再执行该脚本发现会报错:
17行发生了NoMethod Error, undefined method 'length' for 1:Fixnum

似乎在某种情况下,list.parameters[0]的值会变成1. 但暂时不知道该如何排除该问题, 请问大佬有什么头绪么
龙夫三拳tan 发表于 2019-3-21 07:39:36
张咚咚 发表于 2019-3-20 22:26
刚刚那个只是对"末尾单词会隔开"问题进行修复。。
太长换行执行下面这个试试。

感谢!!顺利运作了!
ppspssss 发表于 2019-3-20 22:05:00
我覺得中文字好像占用3個字节,那样要把文字化為字节集,計算字节數量 (別打我,是错的)
龙夫三拳tan 发表于 2019-3-20 21:29:18
张咚咚 发表于 2019-3-20 18:56
备份工程后试一下


似乎不行...成功插入运行了, "修改完毕"的提示也出来了, 然后关掉工程再进去点开事件看发现
依旧还是超过了长度限制.
龙夫三拳tan 发表于 2019-3-20 21:15:37
张咚咚 发表于 2019-3-20 18:56
备份工程后试一下

感谢!我先去测试一下!
龙夫三拳tan 发表于 2019-3-20 21:14:55
guoxiaomi 发表于 2019-3-20 12:31
第一次听说RPGMAKER Trans工具,看介绍好像异常的好用呢……
似乎只要把 patch 里的 txt 文件中的输入的英 ...

是的, 很好用, 可是现在问题就是在翻译后的换行, 默认的话需要人为检查长度是否超过然后手动回车换行, 但文本量大了后就会有点麻烦了.
张咚咚 发表于 2019-3-20 18:56:04
备份工程后试一下

  1. $data_mapinfos = load_data("Data/MapInfos.rxdata")

  2. for id in $data_mapinfos.keys
  3.   map = load_data(sprintf("Data/Map%03d.rxdata", id))
  4.   for e in map.events.values # 遍历事件
  5.     next if e.nil?
  6.    
  7.     for p in e.pages # 遍历事件页
  8.       next if p.nil?
  9.       
  10.       p.list.each_with_index do |list, index| # 遍历事件内容
  11.         next if list.nil? or (list.code != 101 and list.code != 401)
  12.         
  13.         $arr = [] if list.code == 101
  14.         
  15.         $arr += list.parameters
  16.         
  17.         if list.code == 401 and p.list[index+1].nil? or p.list[index+1].code != 401
  18.           f = "\r\n"
  19.           arr = $arr.join(f).gsub(/ ([A-Za-z]+)#{f}([A-Za-z])/){|s| "#{f}#{$1}#{$2}" }.split(f)
  20.           arr.reverse.each_with_index{|s, i| p.list[index-i].parameters = [s] }
  21.           # p arr
  22.         end
  23.         
  24.       end
  25.     end
  26.   end
  27.   save_data(map, sprintf("Data/Map%03d.rxdata", id))
  28. end

  29. print "修改完毕, 重启工程查看"
  30. exit
复制代码
guoxiaomi 发表于 2019-3-20 12:31:58
第一次听说RPGMAKER Trans工具,看介绍好像异常的好用呢……
似乎只要把 patch 里的 txt 文件中的输入的英文翻译进行换行就好了?
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-7-17 16:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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