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

是否有推荐的方法(甚至更好,现有的工具)来进行“合并”?来自LocBaml / generate的输出和在resources.resx文件上运行resgen的输出(默认情况下由VS在构建时完成)。是否有人在那里解决同样的问题?

有帮助吗?

解决方案

您必须从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必须与输出文件位于同一文件夹中。您可以将其添加为后期构建任务。

其他提示

我更喜欢使用 codeplex 本地化我的WPF项目。

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

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

使用LocBaml本地化WPF

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top