C# 如何从WPF应用程序代码导出字符串以实现国际化?

C# 如何从WPF应用程序代码导出字符串以实现国际化?,c#,wpf,localization,internationalization,C#,Wpf,Localization,Internationalization,我正在尝试修改现有的C应用程序以实现国际化。WPF的过程有一些缺陷,并且看起来相当透明,因为我可以继续正常开发并不时运行msbuild,并检查是否一切正常。然而,在浏览示例项目时,我意识到它不会覆盖代码中定义的字符串。在我的例子中,它们中的大多数都用于日志记录,可以或多或少地用正则表达式导出。这似乎有点危险,而且如果我尝试用正则表达式提取C源代码,我也不确定中心是否能坚持。我想我可以将每个字符串包装在翻译函数中,该函数将在参考资料中执行查找 我不知道如何从那里开始。我将有一组字符串可以转储到re

我正在尝试修改现有的C应用程序以实现国际化。WPF的过程有一些缺陷,并且看起来相当透明,因为我可以继续正常开发并不时运行msbuild,并检查是否一切正常。然而,在浏览示例项目时,我意识到它不会覆盖代码中定义的字符串。在我的例子中,它们中的大多数都用于日志记录,可以或多或少地用正则表达式导出。这似乎有点危险,而且如果我尝试用正则表达式提取C源代码,我也不确定中心是否能坚持。我想我可以将每个字符串包装在翻译函数中,该函数将在参考资料中执行查找

我不知道如何从那里开始。我将有一组字符串可以转储到resx文件中,另一组字符串是从baml文件中提取的,并以另一种方式国际化。因为我希望每种方法都会带来各自的并发症,如果可能的话,我宁愿只处理其中一半的并发症


有没有办法让两种方法都适用于这两种情况?老实说,我更喜欢第二个,因为它对我来说更有意义,但我想我可以使用大量UID,并且只使用其中的5%-10%。

我为世界上最繁忙的国际机场之一1号或3号开发多语言值机柜台,具体取决于您如何定义它,根据我的经验,WPF应用程序中最好的解决方案是。首先,您可以使用常规语言作为密钥,这意味着您的所有XAML都可以用开发人员最方便的语言编写。其次,您可以这样做,这有助于保持您的XAML整洁。第三,很容易编写实用程序来提取XAML扩展,并将它们整理成Excel电子表格(例如为翻译人员编写的电子表格),然后将翻译本身合并回应用程序中。最后,翻译表本身可以在运行时轻松切换,允许您动态更改语言

将所有这些放在一起,您的所有XAML看起来如下所示:

<TextBlock Text="{Translate 'Text to be translated appears here'}" />

当然,只需精确地控制翻译标记扩展的使用位置,就可以轻松控制哪些文本通过翻译引擎,哪些文本不通过翻译引擎。

谢谢。我会按照这些思路去做。我只是不完全明白它是怎么工作的。不知何故,编译器发现resx文件名中的de表示一个CultureInfo并神奇地生成了一个相应的文件夹,然后在运行时,ResourceManager检查CurrentUICulture并神奇地指出非默认语言de有一个文件夹并加载资源dll?