论坛风格切换切换到宽版
  • 2581阅读
  • 2回复

[求助]关于PASSOLO中XML分析器设置分析规则的问题 [复制链接]

上一主题 下一主题
离线Dreamby
 

发帖
265
金钱
340
威望
34
只看楼主 倒序阅读 0 发表于: 2014-11-17
最近汉化一个程序,发现其XML文件使用类似如下的格式
<Translations>
    <ItemGroup Value="ItemGroup1">
        <Item Value="Menu1">
            <Done Value="True"/>
            <Text Value="原文"/>
            <Translation Value="译文"/>
        </Item>
        <Item Value="Menu2">
            <Done Value="True"/>
            <Text Value="原文"/>
            <Translation Value="译文"/>
        </Item>
    </ItemGroup>
    <ItemGroup Value="ItemGroup2">
        <Item Value="Menu1">
            <Done Value="True"/>
            <Text Value="原文"/>
            <Translation Value="译文"/>
        </Item>
        <Item Value="Menu2">
            <Done Value="True"/>
            <Text Value="原文"/>
            <Translation Value="译文"/>
        </Item>
...
    </ItemGroup>
<Translations>
就是类似这样的格式其中“原文”是英文,“译文”是翻译后的内容。
简单的说,就是根元素是Translations,然后包含多个用属性Value区分的ItemGroup分组,然后每个分组下面又若干个以Value区分的Item,Item中嵌套着Done、Text和Translation三个元素,Done是翻译状态,可以不用理会,Text的Value属性是源文,译文写入同一Item嵌套内的Translation元素的Value属性。而且英文源文件开始是没有Translation元素的,只有翻译后的文件才有该元素。
反复读了Passolo的帮助文件中关于XML的内容N遍,虽然能够把翻译的内容提取出来,但是无法保证唯一性,也无法生成相应的翻译文件。所以在这里希望有经验的大大指点一下。
我的思路是数据元素的 ID 由 ItemGroup 的Value加上Item的Value组成,以保证ID的唯一,方便以后升级翻译,但是无法实现。
我的“XML 数据元素”设置如下:
元素名称:ItemGroup/Item/Text/attribute::Value
ID 属性:parent::*/Value
勾选了“翻译元素”,并填入Translations/attribute::Value
当然上面的设置结果是失败的。ID只能提取到Item的Value值作为Id,未满足预期。也无法生成目标文件。
大大们如果有更好的办法实现的话,能够告知一二。还有指点一下翻译后的内容写入Translation 的Value属性,应该如何实现。
离线wanfu

发帖
2711
金钱
11950
威望
1195
只看该作者 1 发表于: 2014-11-17
要用 PSL 处理这个 XML 文件,首先要添加原文中没有的 <Translation Value="原文"/> 行,这个可以用 INI 文件转换宏(汉化新世纪中有下载)来处理。然后自己编一个文本文件解析器规则(这个不用我教了吧,太容易了),单独提取  <Translation Value="原文"/>  行中的原文,然后翻译原文为译文,生成即可。不要用 XML 解析器,它无法单独提取出原文,这样会给使用字典或其他已翻译字串进行翻译带来麻烦。





离线lucaslzx

发帖
24
金钱
190
威望
19
只看该作者 2 发表于: 2014-11-24
用trados定义xml功能容易些