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

sor*_*rke 5 wpf resources localization resgen

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

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

Ric*_*ahl 3

您必须手动执行此操作,从 LocBaml 生成 .resources,然后使用程序集链接器合并 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
Run Code Online (Sandbox Code Playgroud)

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

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