CWDG论坛-专业魔兽插件's Archiver

hoye 发表于 2007-9-29 23:36

关于XML文件中字符串的汉化,如何保留原英文字符?

如果需要汉化的字符串都在 XML 文件中,如何保留原英文字符串?
我想所汉化的字符只出现简体中文客户端上,而不影响插件在其它语言客户端的使用。

<Layers>
  <Layer level="ARTWORK">
   <FontString inherits="GameFontNormal" name="$parent_CurrentFont" text="3D Model Window Setting" justifyH="LEFT">
    <Anchors><Anchor point="TOP">
     <Offset><AbsDimension x="0" y="-20"/></Offset>
    </Anchor></Anchors>
   </FontString>
  </Layer>
</Layers>

如上面的 text="3D Model Window Setting"。还有相同的 name="$parent_CurrentFont" 不知道怎么区分 。

<Layers>
  <Layer level="ARTWORK">
   <FontString inherits="GameFontNormal" name="$parent_CurrentFont" text="Copy TO/FROM Target Model Setting" justifyH="LEFT">
    <Anchors><Anchor point="TOP">
     <Offset><AbsDimension x="0" y="-20"/></Offset>
    </Anchor></Anchors>
   </FontString>
  </Layer>
</Layers>

condywl 发表于 2007-9-30 02:48

text="3D模型设定" <--显示的文本名
name="$parent_CurrentFont" <--是框体层名  不能修改

这个你可以通过 载入插件时察看 需要汉化的字段 查找即可

记住请用UTF-8格式保存

SilverFox 发表于 2007-9-30 09:53

一般的做法是将这个字符串使用变量名代替。

[quote]<FontString inherits="GameFontNormal" name="$parent_CurrentFont" text=[color=Red]WINDOW_SETTING[/color] justifyH="LEFT">[/quote]

然后在localization.lua(本地化文件)添加如下内容。

[quote]WINDOW_SETTING = "3D Model Window Setting"

if( GetLocale() == "zhCN" ) then

  WINDOW_SETTING = "3D模型设定"

end[/quote]

这个LUA文件必须是在XML里已加载的那种,否则会报nil。(即XML文件里必须有<Script file="localization.lua"/>类似的代码)

hoye 发表于 2007-9-30 09:54

楼上的说的我知道,可是我要问的是
“如何保留原英文字符串?”
要的是提供多语种支持。

===================================
晕,回晚了,我回的是2楼。

SilverFox 发表于 2007-9-30 09:56

[quote]原帖由 [i]hoye[/i] 于 2007-9-30 09:54 发表 [url=http://bbs.cwowaddon.com/redirect.php?goto=findpost&pid=20794&ptid=1966][img]http://bbs.cwowaddon.com/images/common/back.gif[/img][/url]
楼上的说的我知道,可是我要问的是
“如何保留原英文字符串?”
要的是提供多语种支持。 [/quote]

提供了啊,这样在zhCN的客户端里就是显示中文,在非zhCN的客户端显示英文,不看有IF判断么。

hoye 发表于 2007-9-30 10:05

刚去看了这个 [url=http://wiki.cwowaddon.com/%E5%A6%82%E4%BD%95%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%8F%92%E4%BB%B6][color=blue]如何本地化插件 译者:流润之风[/color][/url] ,
尝试用变量代替,就是把 text="3D Model Window Setting" 改成 text="3D_MODEL_WINDOW_SETTING",
然后新建本地化文件 localization.lua,在TOC中加载,
if ( GetLocale() == "zhCN" ) then

    3D_MODEL_WINDOW_SETTING = "3D 模型窗口设置";
   
end

可是还是报错,难道是我变量用错,不用这样用的???
===================================================
晕,又忘了变量名不能以数字开头

hoye 发表于 2007-9-30 10:08

[quote]原帖由 [i]SilverFox[/i] 于 2007-9-30 09:53 发表 [url=http://bbs.cwowaddon.com/redirect.php?goto=findpost&pid=20793&ptid=1966][img]http://bbs.cwowaddon.com/images/common/back.gif[/img][/url]
一般的做法是将这个字符串使用变量名代替。



然后在localization.lua(本地化文件)添加如下内容。



这个LUA文件必须是在XML里已加载的那种,否则会报nil。(即XML文件里必须有类似的代码) ... [/quote]

谢谢,终于知道是怎么回事了,去试试看。

hoye 发表于 2007-9-30 10:22

测试成功,没有报错,显示中文翻译,谢谢 SilverFox 。
以前没注意这个,看别人的代码也有疑惑,他们为什么在这在加载,可是没有深究。
之前总是以为在 TOC中 加载本地化文件和在 XML 加载没什么不一样啊!

不知道能不能解释一下为什么这个,有什么不同?

现在只是知道在 TOC中 加载和在 XML 加载不一样,会报错,必须要 在XML 中加载。
不知道我理解有没有错误?

SilverFox 发表于 2007-9-30 11:41

我只阐述下自己的理解,若有错误之处请指正。

其实从TOC加载LUA,或从XML加载LUA本质上没有多大区别,都是将函数及变量加载到内存中。

它们的具体区别在于XML只能使用在其内<Script file="xxoo.lua"/>这样标签注明的LUA文件的函数和变量。

TOC加载文件列表,只是提供了一个加载入口,所以在这里需要注意加载顺序。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.