我的理解是,在WPF中推荐的本地化方法是使用LocBaml工具将可本地化的项目提取到例如一个csv文件,将项目翻译成所需的语言,然后从此csv文件重新生成一个新的卫星程序集。但是,从我的实验来看,这似乎与从resources.resx文件生成附属程序集冲突,因为它们都没有将资源合并到单个资源文件中,而只是覆盖了任何现有的附属程序集。
是否有推荐的方法(或更完善的现有工具)用于LocBaml/generate的输出与resource.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必须与您的输出文件位于同一文件夹中。您可以将其添加为后期构建任务。