使用 SDLX 处理 *.properties 文件

来源:互联网 发布:java内部类什么意思 编辑:程序博客网 时间:2024/05/16 14:20

使用 SDLX 处理 *.properties 文件

前言

根据我们现在处理 properties 文件的方法,在将 properties 转换成 .htm 格式的文件,或是在使用 Trados 清理翻译好的 .properties.htm 格式的文件时,总会带出很多转义的实体, ( 例如:表 1) ,这为我们的工程工作造成了很大的麻烦,也增加了 properties 文件出错的机率。为此我们希望使用一种新的方法,可以直接处理 properties 文件, SDL Trados 2006 Freelance (SDLX) 的发布给我们带来了希望,本文将对此工具处理 *.properties 文件的可行性作一番探索,并与我们目前使用的方法进行比较。

表 1 :需要通替的实体

“

”

–
–

-

—

<

<  

&gt;

>  

&amp;

&

&quot;

"

详见, Checklist_all_files.xls

认识 properties 文件

java.util
Class Properties

java.lang.Object extended byjava.util.Dictionary extended byjava.util.Hashtable extended byjava.util.Properties

All Implemented Interfaces:

Cloneable , Map , Serializable

Direct Known Subclasses:

Provider

public class Properties

extends Hashtable

The Properties class represents a persistent set of properties. The Properties can be saved to a stream or loaded from a stream. Each key and its corresponding value in the property list is a string .

A property list can contain another property list as its "defaults"; this second property list is searched if the property key is not found in the original property list.

Because Properties inherits from Hashtable , the put and putAll methods can be applied to a Properties object. Their use is strongly discouraged as they allow the caller to insert entries whose keys or values are not Strings . The setProperty method should be used instead. If the store or save method is called on a "compromised" Properties object that contains a non- String key or value, the call will fail.

When saving properties to a stream or loading them from a stream, the ISO 8859-1 character encoding is used. For characters that cannot be directly represented in this encoding, Unicode escapes are used; however, only a single 'u' character is allowed in an escape sequence. The native2ascii tool can be used to convert property files to and from other character encodings.

•  *.properites 文件中的属性列表中每个键及其对应值都是一个字符串。

•  在调用这些流形式的字符串时,使用的编码是 ISO 8859-1 ,对于不能使用这种编码显示的字符,将使用 Unicode 转义方法表示。

•  可以使用 native2ascii 工具将这些 Unicode 字符转换为其他编码。

流程:

 

 

关于 SDLX TM :

  根据现有 NetBeans 版本,生成一个 TM 库 :

使用新工具存在一个最大的问题就是如何利用现有的 TM 资源,下面将介绍生成 netbeans5.5 UI 的 SDLX 使用的 TM 库的方法。我没有直接从现有的 TRADOS 库进行转换,而是使用最终的中英单语文件进行对照生成,这样做的好处是,文件是最终产品中提取出来的,经过校对和客户的认可,正确率高;二是可以剔除现有 TADDOS 库存在的问题。

所需软件:

•  SDL Trados 2006 Freelance ( 自动翻译工具,基于 TM 库对文件执行分析、翻译、编辑、还原等动作 )

•  NetBeans5.5 ( 用于 Java 开发的 IDE ,除了 IDE 核心外,只安装了 Visual Web Pack)

•  UniRed ( 用于查看 Unicode </uXXXX> 格式的 properties 文件 )

 

•  提取文件
找到 NetBeans5.5 的安装目录下所有的 *.jar 文件,解压,使用 BeyondCompare 查看所有的 *.properties 文件。这些文件大概分为两类,一类是用于资源映射,一类是用于本地化的字符串,后者具有规律的后缀,用于中文 NetBeans 的文件后缀为 *_zh_CN.properties ,并放在相应的源英文文件所在目录的 zh_CN 文件夹下。它们大多具有相同的名称,所以最好保持文件的目录结构。
下图是一个提取的中文 Properties 文件:


TIP :如果想看看文件的具体内容,可以使用 native2ascii 命令对其进行转换,也可以使用 UniRed 编辑器直接查看上面的文件,效果如图:

•  使用 Align 对库

TM 库以 *.mdb 的格式存储。
新建一个库和一个对比文件,一次只能对比一对文件。

如果需要,或者文件比较琐碎,可以用 DOS 命令把中英文件分别写到一个文件中 (copy <filelist> all.properties) 。

在操作界面中对库:

具体操作参考: SDLX - Align Module.pdf

对 SDLX TM 库的评估

将几千个 properties 文件入库以后,用得到的 TM 库翻译 nb_en 中 properties 文件的结果:
log.xls ,具体的翻译方法是使用 SDLX Apply 模块。
log.xls 的部分结果:

•  从整体结果来看,大多数文件都能得到 100% 的翻译,图中的黄色部分是没有匹配上的部分,这是因为库中没有相应的翻译单元造成的,根据已翻译的内容还是有一小部分 fuzz match 上了 ( 例如: C165-C169) 。

•  从单个文件的匹配结果来看,如果一个文件曾经入库,那么它可以得到极好的翻译效果, SDLX 不会对 properties 文件中的符号进行转换或修改 ( 例如将 < 表示成 &lt: 将不间断空格表示成 &nbsp; 等等 )

•  缺点:翻译几百个文件比较费时。

具体操作

新建一个 SDLX 项目

创建项目的好处是可以对文件统一管理,批量操作。

使用 Project Wizard 创建项目。

根据向导导入要翻译的 properties 文件,向导会在源文件夹的根目录下创建 Chinese (PRC) 文件夹,其中是包含完整路径的 .itd 文件 (SDLX 的双语文件 ) 。 TRADOS 7.0 以上版本支持对 ITD 文件进行编辑,但 WorkBench 不支持此格式。 SDLX 是可以完全脱离 TRADOS 的 CAT 工具,但又可以与 TRADOS 很好地兼容,即可以使用 TRADOS 的 TM 库、 TagEditor 等功能。

 

分析文件

使用 Analysis 向导。 ( 相当于 TRADOS WorkBench 的 Tools --> Analysis 功能 )

根据向导的提示完成操作,

优点是可以生成良好格式的报告, .log/.csv 格式,如图:

 

使用 Apply 向导进行预翻译

使用 Apply 向导可以对 ITD 文件应用一个或者多个 TM 库进行预翻译,同时可以设置文件的语言、 encoding 、生成报告等等。 ( 相当于 TRADOS WorkBench 的 Tools --> Translate 功能 ) 。

 

编辑自动翻译的结果

如果有对自动翻译不满意的地方,可以使用 SDLX Eidt 模块对文件进行编辑。下图是进行编辑时的工作区:

 

在编辑时可以对文件实时预览:

从上图可以看出,除了文件名外,使用 SLDX 处理的 properties 文件不用经过其他的工程处理,就已经符合 properties 文件的标准了。
而我们目前使用的方法,还需要将翻译好的 *.properites.htm 使用 javatool0922.exe 进行转换,再通替实体等字符,再使用 native2ascii -reverse 命令才能达到 SDLX 的预览效果。

 

点击“预览”按钮时,会在源文件处生成相应的 properties 文件,为便于查看文件的具体内容,达到“预览”的效果,也可以使用 UniRed 打开这个文件:

 

再次使用 project wizard

将文件还原为 properties 格式。 ( 相当于 TRADOS WorkBench 的 Tools --> clean up 功能 ) ,而且文件内容直接显示为 unicode 字符。

 

使用 beyondcompare 、 CheckVendor 等工具进行检查。

 

存在的问题

SDLX 会将行尾单独出现的 / 作为转义字符,例如下图中,行尾的 / 就被转义掉了:

这种情况是否可以忽略?

如果不行,可以使用 BeyondCompare 检查并更正。

参考资料

Unicode Escapes

 

 

 

原创粉丝点击