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

Project1

 找回密码
 注册会员
搜索
楼主: LanceRPG
打印 上一主题 下一主题

[交流讨论] 制作多国语言的游戏,哪里找插件? 找了N天没结果

[复制链接]

Lv1.梦旅人

梦石
0
星屑
112
在线时间
376 小时
注册时间
2015-1-26
帖子
203
11
发表于 2017-6-10 22:27:43 | 只看该作者
本帖最后由 raketenfaust02 于 2017-6-10 22:31 编辑

  1. Window_ChoiceList.prototype.textWidthEx = function(text) {
  2.         text = languageControl(text);       //多语种对应  
  3.     return this.drawTextEx(text, 0, this.contents.height);
  4. };

  5. Window_Command.prototype.addCommand = function(name, symbol, enabled, ext) {
  6.     if (enabled === undefined) {
  7.         enabled = true;
  8.     }
  9.     if (ext === undefined) {
  10.         ext = null;
  11.     }
  12.     text = languageControl(name);       //多语种检测
  13.     this._list.push({ name: text, symbol: symbol, enabled: enabled, ext: ext});
  14. };

  15. Bitmap.prototype.drawText = function(text, x, y, maxWidth, lineHeight, align) {
  16.     // Note: Firefox has a bug with textBaseline: Bug 737852
  17.     //       So we use 'alphabetic' here.
  18.     if (text !== undefined) {
  19.         var tx = x;
  20.         var ty = y + lineHeight - (lineHeight - this.fontSize * 0.7) / 2;
  21.         var context = this._context;
  22.         var alpha = context.globalAlpha;
  23.         maxWidth = maxWidth || 0xffffffff;
  24.         text = languageControl(text);                //多语种检测
  25.         if (align === 'center') {
  26.             tx += maxWidth / 2;
  27.         }
  28.         if (align === 'right') {
  29.             tx += maxWidth;
  30.         }
  31.         context.save();
  32.         context.font = this._makeFontNameText();
  33.         context.textAlign = align;
  34.         context.textBaseline = 'alphabetic';
  35.         context.globalAlpha = 1;
  36.         this._drawTextOutline(text, tx, ty, maxWidth);
  37.         context.globalAlpha = alpha;
  38.         this._drawTextBody(text, tx, ty, maxWidth);
  39.         context.restore();
  40.         this._setDirty();
  41.     }
  42. };

  43. Game_Message.prototype.add = function(text) {
  44.         text = languageControl(text);                //多语种检测
  45.     this._texts.push(text);
  46. };


  47. //检测语种
  48. languageControl = function(text){
  49.     language = $gameVariables.value(1);      //用游戏变量1决定当前语言
  50.     string = text;

  51.         switch(language)
  52.         {
  53.                 //1号语言
  54.                 case 1:
  55.                 Table = StringTable_EN;
  56.                   break;
  57.                 //2号语言
  58.                 case 2:
  59.                 Table = StringTable_CNS;
  60.                   break;
  61.                   //3号语言
  62.                 case 3:
  63.                 Table = StringTable_JP;
  64.                   break;
  65.                   //如需扩展更多语言在此处添加case
  66.                 //case 4:
  67.                 //Table = StringTable_CNT;
  68.                   //break;

  69.                   //默认语言
  70.                 default:
  71.                 Table = StringTable_EN               
  72.         }
  73.                 if (Table[string] != null){                        //未找到语言包时直接显示原有字符串
  74.                         text = Table[string];
  75.         }
  76.         return text;
  77. };


  78. //翻译文件索引

  79. StringTable_EN = {
  80. "NEW GAME" :  "New Game",
  81. "LOAD GAME" :  "Load Game",
  82. "EXIT GAME" :  "Exit Game",
  83. "Continue"  :  "Continue",
  84. "Options"  :  "Options",
  85. "Status" : "Status",
  86. "Item" : "Item",
  87. "Skill" : "Skill",
  88. "Equip" : "Equip",
  89. "Save" : "Save",
  90. "Formation" : "Formation",
  91. "Game End" : "Game End",
  92. "TEST" : "English",
  93. "当前语言设定为" : "Current language is set to English.",
  94. "Language00" : "English",
  95. "Language01" : "简体中文",
  96. "Language02" : "日本語",
  97. "是" : "YES",
  98. "否" : "NO",
  99. };

  100. StringTable_CNS = {
  101. "NEW GAME" :  "新游戏",
  102. "LOAD GAME" :  "读取进度",
  103. "EXIT GAME" :  "退出游戏",
  104. "Continue"  :  "继续游戏",
  105. "Options"  :  "系统",
  106. "Status" : "状态",
  107. "Item" : "道具",
  108. "Skill" : "技能",
  109. "Equip" : "装备",
  110. "Save" : "存档",
  111. "Formation" : "队形",
  112. "Game End" : "结束",
  113. "TEST" : "简体中文",
  114. "当前语言设定为" : "当前语言设定为简体中文。",
  115. "Language00" : "English",
  116. "Language01" : "简体中文",
  117. "Language02" : "日本語",
  118. "是" : "是",
  119. "否" : "否",
  120. };

  121. StringTable_JP = {
  122. "NEW GAME" :  "はじめから",
  123. "LOAD GAME" :  "つづきから",
  124. "EXIT GAME" :  "終了",
  125. "Options"  :  "オプション",
  126. "Status" : "ステータス",
  127. "Item" : "アイテム",
  128. "Skill" : "スキル",
  129. "Equip" : "装備",
  130. "Save" : "セーフ",
  131. "Formation" : "編成",
  132. "Game End" : "終了",
  133. "TEST" : "日本語",
  134. "T" : "エラー",
  135. "当前语言设定为" : "現在の言語を日本語に設定されています。",
  136. "Language00" : "English",
  137. "Language01" : "简体中文",
  138. "Language02" : "日本語",
  139. "是" : "はい",
  140. "否" : "いいえ",
  141. };
复制代码


自家用语言包插件,用游戏变量1(可以在代码里改成其他ID)控制当前语言。
默认1=英语,2=简体中文,3=日语

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
853
在线时间
190 小时
注册时间
2016-1-20
帖子
186

开拓者

12
 楼主| 发表于 2017-6-11 03:17:24 | 只看该作者
raketenfaust02 发表于 2017-6-10 22:27
自家用语言包插件,用游戏变量1(可以在代码里改成其他ID)控制当前语言。
默认1=英语,2=简体中文,3=日 ...

首先,感谢你的回复。!
然后, 这个脚本只有155行?
虽然我不懂脚本,但这看上去过于简单了, 如果是你自己写的,为什么连署名都没有。
你测试过它的功能么? 使用和安装方法呢
一个有很多问题的家伙, 衣服标签上写着“新手”两个字。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
853
在线时间
190 小时
注册时间
2016-1-20
帖子
186

开拓者

13
 楼主| 发表于 2017-6-11 04:50:20 | 只看该作者
本帖最后由 LanceRPG 于 2017-6-11 04:51 编辑

Chimaki_Language 出错(黄字 Type Error)的问题, 我找到了。
原始作者的demo运行正常, 原始作者没有输入日语, 但是 繁体 简体 和英文 看上去都正常。

然后问题来了 , 我想编辑4中语言的文本, 于是打开了存储多种语言包的数据文件, 也就是原始作者的demo里的data文件夹下的TextContent.csv 。
发现是乱码,

我试着修改 10001 那行4种语言的文本, 并测试发现如下情况:

请看这幅图,  虽然在我的操作系统里,编辑那个TextContent.csv文件时 , 能看到4国语言文字, 但是 MV 运行后, 除了英文,其他3中语言都是乱码。
(我是用Excel 打开 这个TextContent.csv的), 左上角 “绶ㄨ櫉”   应该是原作者 “编号” 的意思。

如果把这个 “绶ㄨ櫉”  , 改成我们操作系统里的  “编号”  两个字,  就出现那个 黄字 “Type  Error” 了。

总之,这似乎跟Excel 或者CSV格式的 字符编码有关,  我不太懂这种编码,但刚搜了一下, 大概有 unicode Big5 Ansi , UTF-8 等等等等好多种。
顺便提一下,   原作者的 TextContent.csv 这个存储语言包的CSV格式, 用 文本文档打开后能看到正常显示的汉字, 这时另存为 Ansi 编码后, 再用excel打开能看到正常显示的语言, 但这个文件放入游戏文件夹里,运行 MV 一定会出错,  原理同上, “编号” 俩字会出现问题。      
总之...........是 CSV格式的字符编码问题, 我还需要请教原作者如何使用。

点评

notepad++大法好(逃  发表于 2017-6-11 08:16
一个有很多问题的家伙, 衣服标签上写着“新手”两个字。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5039
在线时间
1780 小时
注册时间
2012-7-3
帖子
1799

开拓者

14
发表于 2017-6-11 09:30:38 | 只看该作者
我只是steam blog的搬运工……

青睐之光今日结束,Steam Direct 将于6月13日启动
6月7日        - ALDEN
在这篇文章中,我们将针对关闭 Steam 青睐之光而转至 Steam Direct 进行探讨。

如果您尚未阅读我们最近发布的一系列文章,不妨花一些时间读一读。这些文章涉及我们的理念、针对不良份子所采取的措施, 以及Steam 鉴赏家系统即将推出的改进。这些文章介绍了 Steam 商店的设计方式上微妙但重要的变化,以及这些设计所针对的人群。

回顾青睐之光
Steam 青睐之光项目启动于2012年8月30日。当时我们意识到我们不能预测到玩家会对哪些游戏真正感兴趣。在那之前,Valve 有一个小组一直在手工挑选游戏,邀请它们加入 Steam 平台。几乎每天,我们都会听到玩家埋怨为何不能在 Steam 上买到这个或那个非常出色的新游戏。这种情况出现得越多,我们就越是对我们自己的品味没有信心,质疑我们是不是精准地代表了使用 Steam 的每个人的品味。我们因此推出了青睐之光,通过让 Steam 用户投票,来帮助我们的团队弄清玩家最想要玩的是哪些游戏。几乎是立竿见影,我们看到种类多到难以置信的游戏在青睐之光上提交并获得投票。这很清楚地告诉我们,Steam 玩家的品味与兴趣之千差万别,远远超过了我们过去的想象。

热门游戏的涌现贯穿青睐之光的始终,不断让我们惊讶不已。仅在第一年,我们就目睹了War For The Overworld、Evoland、Rogue Legacy、Verdun 等游戏通过青睐之光腾空出世,一鸣惊人。我们发现事后再理解为何有些游戏会火很容易,但是要我们在事前进行预测,却完全做不到像我们自以为的那样精确。在最初的几年里,还有一些游戏类型异军突起,我们之前认为这些类型极度小众,比如视觉小说。不论你对视觉小说是爱是恨(你可以在这里自定义你的偏好!),它们都在 Steam 聚集了大量的拥趸。即便是在今天,我们还能看到出人意料的大热游戏出身自青睐之光,比如最近发布的 Dead Cells 与 Blackwake。

现在,自青睐之光推出,已经五年过去了,我们在青睐之光上有超过 9 千万次投票。近 1 千万玩家在 Steam 青睐之光上参加了投票,但是有逾 6 千3 百万玩家玩过至少一款通过青睐之光登陆 Steam 的游戏。这些玩家总计在青睐之光游戏里玩了 35 亿小时。其中的一些游戏,如The Forest、7 Days to Die、Stardew Valley 等,成功跻身于 Steam 史上最畅销的一百款游戏之列。

有了这些成功、数以千计的小众游戏、以及其他的一切,我们意识到接下来,一个直接并可预测的提交流程将能最好地服务于玩家的不同兴趣。所以,我们在开始转至 Steam Direct 之时,感谢大家,投票并热爱青睐之光的游戏。

青睐之光的退出
下文中提到的关于青睐之光和 Steam Direct 的信息与游戏开发者最为相关,在文中讨论了转换过程的具体细节。

现在,我们不再接受通过 Steam 青睐之光提交的新游戏或软件,同时投票机制也已禁用。一周之后,我们将于6月13日正式启动 Steam Direct。

在接下来的一周中,Valve 的一个团队将对青睐之光中还未受青睐的那些产品进行评审,并挑选出最后一批通过青睐之光的产品。我们的目标是在剩余的产品中甄选出尽可能多的抱有信心的产品。由于投票者数据不足或是投票者对该游戏的一些顾虑,会有一些产品无法受青睐。那些最终未受青睐的产品,如果符合我们基本的合法性和适当性要求,它们仍有机会登上 Steam 的 Steam Direct。

如果你的游戏在青睐之光中还未受青睐,请耐心等待,我们正在评审待定的 3,400 份提交。如果你已支付了青睐之光提交费,但还未有机会提交任何作品,或你的提交最终未能受青睐,你可以在 Steam 客服站点提出关于你的提交费的退款请求。

Steam Direct 详情
Steam Direct 的目标是为全球广大的开发者提供一个可理解和可预测的途径,便于他们把游戏带入 Steam。考虑到这一点,我们尽量做到流程的简单化和有效化。新的游戏开发者将仅需要填写一些电子文件,包括输入银行和税务信息以及通过快速的身份验证过程。在完成了这些文件之后,开发者需要为每个他们希望在 Steam 上发布的游戏支付 100 美元的可补偿费用。在该游戏的销售额达到 1,000 美元后的当期付款时,此费用将退还给开发者。

正如我们在过去的一年中所做的一样,在正式发布前会有短暂的调整过程,我们的评测团队将安装每个游戏来检查它是否正确配置,与商店页面上的描述一致,并且不包含恶意内容。

此外,我们以前从未合作过的全新开发者需要在支付应用费后等待30天,才能够在 Steam 上发布他们的第一款游戏。这让我们有时间审阅开发者的信息,并确认我们知道对方是谁。开发者还需要在发布前的几周内创建一个“即将发布”页面,这有助于让更多的人关注即将发布的产品,并让玩家有机会指出我们的团队可能未能发觉的错漏。

Steam Direct 一周后即将推出,6月13日,敬请期待。
Project Ktr进行中:
   
------------------
SRPG开发之六-天气与地形互动
→→围观
→→→去Lofter围观
------------------
离经叛道的扯淡者/伪独立游戏爱好者/Decade Studio(?)/造轮子真TM开心呀
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
268 小时
注册时间
2010-12-22
帖子
21
15
发表于 2017-6-11 16:05:42 | 只看该作者
本帖最后由 mitori10feet 于 2017-6-11 16:15 编辑

你們好, 我是Chimaki_Language.js 的作者, 很抱歉plugin沒有寫得很好, 但我這邊提供使用上的建議資訊

1. 使用雲端文件進行編輯, 下載成 utf-8 + csv 格式的話都可以正常使用 + 顯示 (不知道百度硬盤是否有提供類似服務)

2. 使用exl 開啟舊csv 會造成亂嗎問題 => 這邊主要還是 因為轉碼出現問題才會出現亂碼 (目前尚未解決)

總結 :
目前因為自己的技術力還不足, 所以沒辦法解決使用exl 編輯上亂碼跟錯誤, 因此建議使用雲端表格服務並且另存成 utf-8 格式,

這樣可以確保正常使用 , 感謝各位的討論

目前手邊沒有window 系統可以測試exl相關問題, 但會在近期確認看看是否有辦法解決, 讓使用者在使用上更方便

点评

其实我还有些小发现,WPS office能打开你的CSV文件,不是乱码,显示多语种。 但是,我手机自带的WPS编辑保存后放MV里能用, 可是电脑版WPS不行,会出错  发表于 2017-6-12 00:44
我在找百度有没有“云表格”功能, 毕竟我的翻译还是百度方便些, 总之这个强大的脚本可用了,这太棒了。 非常感谢。  发表于 2017-6-12 00:38
Hi , 我刚试了google云存储的 云表格, 没有编码的设置,但是下载下来的CSV确实能用, 而且逗号和换行我都测试过了,非常完美。 谢谢你解释逗号...  发表于 2017-6-12 00:33
ex : 今天, 天氣好 => 存成csv時他會變成 "今天,天氣好", 但不會影響在遊戲中的顯示  发表于 2017-6-12 00:16
我這邊會再嘗試看看, 畢竟用exl 編輯是真的比較方便, 關於 逗號部分, 其實轉成csv時他會自動有 "" 包住 所以不會有問題  发表于 2017-6-12 00:16
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
112
在线时间
376 小时
注册时间
2015-1-26
帖子
203
16
发表于 2017-6-11 18:57:59 | 只看该作者
本帖最后由 raketenfaust02 于 2017-6-11 19:11 编辑
LanceRPG 发表于 2017-6-11 03:17
首先,感谢你的回复。!
然后, 这个脚本只有155行?
虽然我不懂脚本,但这看上去过于简单了, 如果是 ...



没注释没说明没扩展功能当然短了。
自己做个修改1号变量控制语言包,默认1=英语;2=中文;3=日语。就这么点功能,在DrawText里插一个新函数的事你还想要多少行……



这段代码就是我自写自用的,根本没想过公开发布,要署名干啥。你要是不放心就算了
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
506
在线时间
111 小时
注册时间
2016-12-14
帖子
38
17
发表于 2017-8-8 22:15:46 | 只看该作者
mitori10feet 发表于 2017-6-11 16:05
你們好, 我是Chimaki_Language.js 的作者, 很抱歉plugin沒有寫得很好, 但我這邊提供使用上的建議資訊

1.  ...

Chimaki_Language.js的作者大人你好,您的Chimaki_Language.js是否能够应用于系统菜单中,其他地方运行良好而系统菜单中看起来不是很理想
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
268 小时
注册时间
2010-12-22
帖子
21
18
发表于 2017-8-17 14:11:08 | 只看该作者
HUISIHEXING 发表于 2017-8-8 22:15
Chimaki_Language.js的作者大人你好,您的Chimaki_Language.js是否能够应用于系统菜单中,其他地方运行良 ...

這是預計要新增的對應功能, 不過最近在忙著趕遊戲進度orz
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
506
在线时间
111 小时
注册时间
2016-12-14
帖子
38
19
发表于 2017-8-24 16:07:45 | 只看该作者
mitori10feet 发表于 2017-8-17 14:11
這是預計要新增的對應功能, 不過最近在忙著趕遊戲進度orz

它是一个非常棒的插件,希望您能完善它,不管多久我都会等的
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
3
星屑
1709
在线时间
99 小时
注册时间
2016-1-25
帖子
86
20
发表于 2017-10-9 09:31:00 | 只看该作者
昨天也想弄多国语言试试看,找到了这一篇里提到的js,不过Chimaki那个只针对文本,但是物品栏就会露馅啊。11楼应该是菜单方面的设置,但是我放进去不知道为何木有生效……嗯……
不过csv对直接做文本编辑很不亲切啊(因为我直接sublime打开,倒是没有遇到编码问题),有木有可能弄出json那种?
日常唠嗑lof:http://daceice.lofter.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-28 17:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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