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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
112
在线时间
376 小时
注册时间
2015-1-26
帖子
203
1
发表于 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=日语

回复 支持 反对

使用道具 举报

Lv1.梦旅人

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



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



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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-14 01:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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