根据我们现在处理 properties 文件的方法,在将 properties 转换成 .htm 格式的文件,或是在使用 Trados 清理翻译好的 .properties.htm 格式的文件时,总会带出很多转义的实体, ( 例如:表 1) ,这为我们的工程工作造成了很大的麻烦,也增加了 properties 文件出错的机率。为此我们希望使用一种新的方法,可以直接处理 properties 文件, SDL Trados 2006 Freelance (SDLX) 的发布给我们带来了希望,本文将对此工具处理 *.properties 文件的可行性作一番探索,并与我们目前使用的方法进行比较。
表 1 :需要通替的实体 |
|
“ |
“ |
” |
” |
– |
- |
— |
— |
< |
< |
> |
> |
& |
& |
" |
" |
java.util
Class Properties
All Implemented Interfaces:
Cloneable , Map , Serializable
Direct Known Subclasses:
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 字符转换为其他编码。
使用新工具存在一个最大的问题就是如何利用现有的 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
将几千个 properties 文件入库以后,用得到的 TM 库翻译 nb_en 中 properties 文件的结果:
log.xls ,具体的翻译方法是使用 SDLX Apply 模块。
log.xls 的部分结果:
• 从整体结果来看,大多数文件都能得到 100% 的翻译,图中的黄色部分是没有匹配上的部分,这是因为库中没有相应的翻译单元造成的,根据已翻译的内容还是有一小部分 fuzz match 上了 ( 例如: C165-C169) 。
• 从单个文件的匹配结果来看,如果一个文件曾经入库,那么它可以得到极好的翻译效果, SDLX 不会对 properties 文件中的符号进行转换或修改 ( 例如将 < 表示成 <: 将不间断空格表示成 等等 )
• 缺点:翻译几百个文件比较费时。
创建项目的好处是可以对文件统一管理,批量操作。
使用 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 向导可以对 ITD 文件应用一个或者多个 TM 库进行预翻译,同时可以设置文件的语言、 encoding 、生成报告等等。 ( 相当于 TRADOS WorkBench 的 Tools --> Translate 功能 ) 。
如果有对自动翻译不满意的地方,可以使用 SDLX Eidt 模块对文件进行编辑。下图是进行编辑时的工作区:
在编辑时可以对文件实时预览:
从上图可以看出,除了文件名外,使用 SLDX 处理的 properties 文件不用经过其他的工程处理,就已经符合 properties 文件的标准了。
而我们目前使用的方法,还需要将翻译好的 *.properites.htm 使用 javatool0922.exe 进行转换,再通替实体等字符,再使用 native2ascii -reverse 命令才能达到 SDLX 的预览效果。
点击“预览”按钮时,会在源文件处生成相应的 properties 文件,为便于查看文件的具体内容,达到“预览”的效果,也可以使用 UniRed 打开这个文件:
将文件还原为 properties 格式。 ( 相当于 TRADOS WorkBench 的 Tools --> clean up 功能 ) ,而且文件内容直接显示为 unicode 字符。
SDLX 会将行尾单独出现的 \ 作为转义字符,例如下图中,行尾的 \ 就被转义掉了:
这种情况是否可以忽略?
如果不行,可以使用 BeyondCompare 检查并更正。