在单个附属程序集中组合LocBaml和Resources

时间:2008-11-10 15:20:18

标签: wpf localization resources resgen

我的理解是,推荐的WPF本地化方法是使用LocBaml工具将可本地化的项目提取到例如:一个csv文件,将项目翻译成所需的语言,并从这个csv文件重新生成一个新的卫星组件。然而,根据我的实验,这似乎与从resources.resx文件生成附属程序集相冲突,因为它们既没有将资源组合到单个资源文件中,也只是覆盖任何现有的附属程序集。

是否有一种推荐的方法(甚至更好,一种现有工具)用于对来自LocBaml / generate的输出进行“合并”以及在resources.resx文件上运行resgen的输出(默认情况下由VS执行)编译)。是否有人在那里解决同样的问题?

3 个答案:

答案 0 :(得分:3)

您必须从LocBaml手动执行此生成.resources,然后使用Assembly链接器合并Resx和BAML资源。

这个过程看起来像这样:

LocBaml.exe /generate ..\obj\WpfLocalization.g.en-US.resources 
            /trans:Res\de.csv /out:de /culture:de

REM Combine resource files w/ Assembly Linker
al /template:WpfLocalization.exe 
   /embed:de\WpfLocalization.g.de.resources 
   /embed:..\..\obj\WpfLocalization.Properties.Resources.de.resources   
   /culture:de  /out:de\WpfLocalization.resources.dll

(批处理文件中一行上的所有内容)。

您可以将上述内容放在为您的项目定制的批处理文件中。请记住,LocBaml必须与输出文件位于同一文件夹中。您可以将其添加为后期构建任务。

答案 1 :(得分:1)

我更喜欢使用您在WPF Localization Extension上找到的codeplex项目来本地化我的WPF项目。

它允许您使用与WinForms相同的方法,并且比LocBaml更容易使用。

答案 2 :(得分:0)

用Google搜索了一下,发现这个页面描述了一些使用LocBaml的方法,它描述了如何将resources.resx和locbaml生成的资源合并到一个文件中的非常详细的描述(使用al.exe)。

Localizing WPF using LocBaml

该页面介绍了使用LocBaml的三种方法,我正在寻找方法3中的最后一步。顺便说一下,该文章中有很多好东西