高效可靠的多国语言开发

下载地址:http://sailingease.com/ssr 

 

SE String Resource 是一款辅助多国语言软件开发的实用工具,根本目的在于通过生成接口来约束不同语言资源的实现,使开发人员可以基于接口调用资源。

除此之外,提供方便开发人员使用的各种实用功能,如多项目并行编辑,资源导入,Excel 导入、导出等。

生成的代码,还是基于 resx 资源文件的,所以完全兼容 .NET 自有方式资源访问方式,保留 .NET 资源文件的所有优点。 

 

这个工具完全是我自己在日常工作中,“被逼”开发的,我在开发多语言项目时,考察了 .NET 的资源访问机制,在处理多区域资源时(多国语言),一是比较麻烦,二是不太可控,非常希望生成的资源文件和对应代码,能全部用一个接口来约束起来,这样我在使用时,就可以以 ILanguage.String 的方式来使用,另外,因为项目规模较大,资源量非常多时(我的切身情况,有数千条资源),我希望统一的管控这些资源,在 Visual Studio 中使用原生的方式用来开发大型项目感觉不是太靠普。

另外我的状况还有一点特殊,整个项目分了许多模块,分开开发,我希望把资源放到单独的类库中,并且是与模块对应的,一个模块一个资源类库(当然并在模块里也可以),这又涉及到我要在不同的模块中切换来切换去,编辑资源,最初我还能忍受,到了后来,因为这个问题导致我连解决方案都不想开了,非常影响效率和情绪。

于是我在工具中加了多个项目同时编辑的功能,类似于其它软件中“工作区”的概念,除了多种方式切换当前项目外,用一个Tab页显示不同项目的资源应该不错,生成代码时,也不要每次都输入目标代码的信息、路径,因为我希望我从 Visual Studio 切换到这个工具来的时候,马上能定位到我要编辑的资源,然后顺手生成代码,直接生成到 Visual Studio 解决方案的资源项目文件夹下面,覆盖现有资源(.resx文件和.designer.cs文件),我切回 Visual Studio 继续工作。

目前来看,基本达到了我的预期目标,呵呵。 

 

 主界面

 

下载地址:http://sailingease.com/ssr 

 

 

用接口约束多语言资源的实现
 在使用传统的 GetString 方式或其它等效方式时,对资源文本的访问存在不可控的风险,尤其是在较大型的软件工程或团队协作开发中,无法保证所有的资源文本获取都正确、可用。如拼写错误,多次修订资源文件后带来的混乱。 

根据我们的经验,使用传统资源文本获取方式,仅数百条资源字符串就可能带来灾难性的失控,无法维护,无法逐一检查,为项目增加额外的并且高昂的成本支出。

考虑以下问题:

开发人员在获取资源时,拼写错误。 
修订资源文件时,对原有资源文件标识进行了修改,而未能同步到程序的各处。 
修订资源文件时,误删原有资源条目,或删除误认为已不在使用中但确仍在某处需要的条目。 
无法得知某条资源文本的使用情况:是否在使用,是否在多处使用。 
增加语言资源时,难以保证各语种资源完全同步,尤其在是资源数量较大,修订次数较多时。

以上问题在项目参与人员越多时,越突出,您需要可靠,可控的方式保证项目的质量。

SE String Resource 正是为解决以上问题而生,也是 SE String Resource 的根本目的。

 

通过一个管理类(主类)访问语言资源
 在主类中,您可以通过 GetLanguages()方法获得所有可用的语言资源、Current 属性获取当前正在使用的资源。获取所有可用资源的方法是通过反射获取可用资源的,因此,主类只需生成一次即可,随后您可在此基础上扩展自己的功能,而不必重新生成主类代码。

对于资源的使用者,只需通过 Language.Current 属性,就可以访问到当前正在使用的语言资源,而不必关心具体的语言资源是哪一种,也不必关心语言资源是否可用,是否存在差异,更元需担心获取资源时会出现单词拼写错误。因为这些都是通过 ILanguage 接口进行的。

此外,GetString() 方法亦允许您通过字符串指定资源名,来获取资源内容,这在实现UI层语言资源绑定时,尤为有用。

 

资源行复制
 在 SE String Resource 中,资源行的复制粘贴操作并非简单的复制一行或多行数据,而是能够识别复制时所携带的区域性信息,如果粘贴目标上的区域信息与复制时的区域信息不同,则自动进行匹配。

例如,A项目包含“中文”、“英文”,B项目包含“英文”、“法文”,那么从A项目向B项目中复制资源行时,能够自动将A项目中的英文资源粘贴到B项目的英文资源中,中文资源则被忽略。哪怕两个项目只是区域信息的顺序不同,亦能自动匹配。

 

实时错误检查
 

SE String Resource 能够实时判断资源条目中存在的问题,如名称无效,名称冲突。

在错误列表中,只需双击错误条目,即能定位到错误行,方便您在处理较多的资源行时出现的问题。

借助专门设计的检查算法,即使数千条或更多资源条目,检查速度亦高效快速。

 

导出、导入 Excel
 

毫无疑问,导出导入Excel 可使您的本地化工作如履平地。

在非常传统的资源处理技术中,开发人员通常是将 INI格式,XML格式,甚至TXT格式的资源文件直接交于翻译人员进行翻译。使用这种方式,开发人员无法一一核对资源行的名称是否被误改,资源条目是否因操作失败而被误删。

在项目的迭代周期中,资源文件不断被修订,不断的交给翻译人员进行翻译(如版本升级时的新资源文件),在这个过程中,翻译人员还会利用过去的翻译成果,损坏资源条目的几率就成倍的增加。

而使用 Excel 表,除了方便本地化工作人员的工作之外,更重要的是在导入其翻译成果时,SE String Resource 将检查全部资源是否存在错误,同时,因为项目的资源使用是基于接口的,如果误删了资源条目,生成代码后,您的开发环境(如 Visual Studio),在编译代码时,将直接向您报告错误。

 

 


posted @ 2010-08-30 00:49  升讯威在线客服系统  阅读(5953)  评论(289编辑  收藏  举报