我有一个美国英语WPF应用程序,它没有语言本地化,但英语流利的用户希望它在设置为德语语言环境的PC上运行。因此,用英语显示所有内容并不是问题,但是当我的应用程序从XML文件中读取时,他们会看到解析失败。开发人员手动创建XML文件作为插件体系结构的一部分,并包含格式为1.23E + 05的数字。我用StreamReader和XmlSerializer.Deserialize()读取它们。序列化类中的大多数字段都声明为字符串,我稍后将它们解析为双精度字节。有没有办法支持这种使用模式?是否存在仅影响应用程序外部输入的解决方案(希望最小化所需的更改)?我认为我要求的是支持不同的语言环境而不完全支持本地化,如果这是有道理的。我可以使用影响数字/日期显示格式的语言环境,如果这种情况自动发生的话。我主要担心的是不要崩溃:)谢谢。
答案 0 :(得分:0)
您应该明确设置应用的文化
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
您也可以传递特定的文化,而不是InvariantCulture。数字格式等等与您当前的文化息息相关。
答案 1 :(得分:0)
post of Sebastien Lambla中描述了一个巧妙的技巧:
插入您的App.xaml.cs
文件
public partial class App : Application
{
static App()
{
FrameworkElement.LanguageProperty.OverrideMetadata(
typeof(FrameworkElement),
new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));
}
}
现在,您的应用程序默认为客户端计算机上的当前区域性,并且在运行时为。
VB.Net-Variant位于Application.xaml.vb
文件中
Class Application
Public Sub New()
FrameworkElement.LanguageProperty.OverrideMetadata(
GetType(FrameworkElement),
New FrameworkPropertyMetadata(Markup.XmlLanguage.GetLanguage(Globalization.CultureInfo.CurrentCulture.IetfLanguageTag)))
End Sub
End Class