论坛风格切换切换到宽版
  • 1798阅读
  • 8回复

关于passolo导出的xml目标文件问题 [复制链接]

上一主题 下一主题
离线fate123
 

发帖
16
金钱
130
威望
13
只看楼主 倒序阅读 0 发表于: 2016-05-02
刚学习用passolo汉化安卓软件,还不是很熟练,现在碰到一个小问题,希望老师指点一下(我用的是 Passolo合作版 2011 sp9 11.9.0.53)
我自己定义了一个xml解析规则,就是提取源xml文件中的android:text后的内容进行汉化
现在问题来了,
1、一些内容为@string/xxx 的字段也被提取出来了,但这种字段是不需要汉化的,我应该怎么设置才能在解析时不提取它们?又能提取到我想要的字段?(我想要的是以大写字母开头的单词这类)或者是即使提取出来后,在汉化阶段排除掉它们(我想到的是采用过滤,但一直未能设置成功)
2、另外就是保存为目标文件后,所有代码段原来是以" />结尾的("与/之间有一个空格),现在都变成"/>了(空格没有了),我想让代码保持原样,具体不知在哪里设置,请老师指点一下,谢谢你们了!
离线wanfu

发帖
2683
金钱
11680
威望
1168
只看该作者 1 发表于: 2016-05-03
请上传文件,以便帮助解析
离线fate123

发帖
16
金钱
130
威望
13
只看该作者 2 发表于: 2016-05-03
checkin_strip_layout.rar (1 K) 下载次数:1
离线wanfu

发帖
2683
金钱
11680
威望
1168
只看该作者 3 发表于: 2016-05-03
要达到你的要求,不能使用XML解析器,而是使用文本解析器,并自定义一个解析规则名(Android XML 文件)及其解析规则。下图的最右侧 <字串> 标签中显示的就是解析结果。


离线wanfu

发帖
2683
金钱
11680
威望
1168
只看该作者 4 发表于: 2016-05-03
要过滤掉上图中提取的大写字串,即@string/XXX中的XXX,可以使用下面的规则。
离线wanfu

发帖
2683
金钱
11680
威望
1168
只看该作者 5 发表于: 2016-05-03
上传一个正则表达式的帮助文件,请参阅其中的正则表达式部分。
script56.rar (1376 K) 下载次数:14


离线fate123

发帖
16
金钱
130
威望
13
只看该作者 6 发表于: 2016-05-03
非常感谢版主的热心解答!
第二条规则已经能完美解决提取现有字段的需求,不过我漏了提到部分以小写字母开头,且带有下划线的字符串,比如date_time、fill_parent等,能否在这个正则表达式中进一步过滤这些字符串(这些是变量名,也不需要汉化)。除此之外,尚有一些不规律的字符串也是不需要汉化的,不过如果过滤掉以上这些,剩下的工作量就没那么大了!一个正则表达式不可能完全解决全部问题。

另外,由于android app反编译后除了在xml文件中有部分需要汉化的字符串外,还有大量的字符串存在于smali文件中需要汉化,我也使用文本解析器自定义了一个解析规则,情况基本类似上述xml中的过滤规则。现在碰到一个新问题:
我想用手中现有的一个该软件低版本已汉化过的app反编译得到的资源文件,来校准现在该软件新版本的资源文件,在使用我自定义的smali解析规则提取已汉化过的smali文件的字符串时,由于这些smali文件已经汉化过且使用的是UTF-8无BOM编码格式保存的,在提取这些字符串时,提取出的汉化字符变成了乱码,但我找不到在哪里可用设置读取这些源文件时采用UTF-8格式来读取的设置,不知道是不能设置,还是可以设置而我没有找到?我只找到在目标语言的字符串列表设置中可以设置保存目标文件时保持目标文件与源文件的格式一致的设置。像这个问题,应该如何解决呢?

再次感谢老师指点!

(附:已汉化过的smali文件和待汉化的smali文件,提取的字符串是const-string v\d, "“内的字符串,解析规则与xml相同)
smali.rar (6 K) 下载次数:1
离线wanfu

发帖
2683
金钱
11680
威望
1168
只看该作者 7 发表于: 2016-05-03
第一个问题:
在这个案例中,你可以将 android:text="(?!@string/) 改为 android:text="(?!@string/|date_time|fill_parent) 或者 android:text="(?!@string/|[a-z0-9].+_.+/)  或者干脆为 android:text="(?![a-z0-9]*[@_].+) 来处理所有 XML 文件,还是请好好学习一下正则表达式,以便可以触类旁通地修改规则。

第二个问题:
Passolo并不支持在校准文件选项中设置字符编码,所以要想正确校准导入,可以先将要导入的目标文件保存为UTF-8有BOM的格式,然后再校准导入。


离线fate123

发帖
16
金钱
130
威望
13
只看该作者 8 发表于: 2016-05-03
嗯,谢谢老大再次出手指点!
因为正则以前从未接触过,确实该好好学学,谢谢你提供的资料。
第二个问题我晚上试试,