Windows Phone 10 UWP 应用中的区域格式和语言
Regional format and language in Windows Phone 10 UWP app
我正在开发本地化的 Windows (Phone) 10 UWP 应用程序。
我实现了对 2 种语言的支持:en-US 和 nl-NL(荷兰-荷兰)。这工作正常:当用户在 phone 设置中选择英语时,应用程序以英语启动,当用户在 phone 设置中选择荷兰语时,应用程序以荷兰语启动。
为了让它工作,我必须在 package.appxmanifest 中进行一些更改,因为我的语言资源位于不同的 DLL 中:
<Resources>
<Resource Language="nl-NL"/>
<Resource Language="en-US"/>
</Resources>
但是我找不到任何方法从用户那里获取日期、时间和数字格式的区域格式。
当用户选择英语作为语言但选择荷兰语(荷兰)作为区域格式时,我的应用程序以两者开头
System.Globalization.CultureInfo.CurrentUICulture 和 System.Globalization.CultureInfo.CurrentCulture 设置为 "en-US",其中 System.Globalization.CultureInfo.CurrentCulture 应为 "nl-NL"。
我一直在搜索所有文档,但找不到检索 phone 区域格式的方法(Windows.System.UserProfile.GlobalizationPreferences.HomeGeographicRegion 除外,后者有所不同)。
有没有办法检索 phone 区域格式?
我只知道下面提到的黑客here
var systemLanguage = GlobalizationPreferences.Languages.First();
var regionInfo = new RegionInfo(systemLanguage);
var dtf = new DateTimeFormatter("longdate", new[] { regionInfo.TwoLetterISORegionName });
var regionInfoName = dtf.ResolvedLanguage;
var regionFormatCultureInfo = new CultureInfo(regionInfoName);
Peter Meinl 的答案有效,但有点令人困惑,因为您不需要 RegionInfo。
Pedro Lamas 仅使用 "US".
描述了使用 DateTimeFormatter 的 ResolvedLanguage 的黑客攻击
DateTimeFormatter dtf = new DateTimeFormatter("longdate", new[] { "US" });
string regionInfoName = dtf.ResolvedLanguage;
CultureInfo regionFormatCultureInfo = new CultureInfo(regionInfoName);
DateTimeFormatter 的 ResolvedLanguage 属性 将包含 phone 的区域格式 ID,在本例中为 "nl-NL"。
请注意,您确实需要在 DateTimeFormatter 的构造函数中使用一种语言,仅 new DateTimeFormatter("longdate") 或 DateTimeFormatter.LongDate 将不起作用。
我正在开发本地化的 Windows (Phone) 10 UWP 应用程序。
我实现了对 2 种语言的支持:en-US 和 nl-NL(荷兰-荷兰)。这工作正常:当用户在 phone 设置中选择英语时,应用程序以英语启动,当用户在 phone 设置中选择荷兰语时,应用程序以荷兰语启动。
为了让它工作,我必须在 package.appxmanifest 中进行一些更改,因为我的语言资源位于不同的 DLL 中:
<Resources>
<Resource Language="nl-NL"/>
<Resource Language="en-US"/>
</Resources>
但是我找不到任何方法从用户那里获取日期、时间和数字格式的区域格式。
当用户选择英语作为语言但选择荷兰语(荷兰)作为区域格式时,我的应用程序以两者开头 System.Globalization.CultureInfo.CurrentUICulture 和 System.Globalization.CultureInfo.CurrentCulture 设置为 "en-US",其中 System.Globalization.CultureInfo.CurrentCulture 应为 "nl-NL"。
我一直在搜索所有文档,但找不到检索 phone 区域格式的方法(Windows.System.UserProfile.GlobalizationPreferences.HomeGeographicRegion 除外,后者有所不同)。
有没有办法检索 phone 区域格式?
我只知道下面提到的黑客here
var systemLanguage = GlobalizationPreferences.Languages.First();
var regionInfo = new RegionInfo(systemLanguage);
var dtf = new DateTimeFormatter("longdate", new[] { regionInfo.TwoLetterISORegionName });
var regionInfoName = dtf.ResolvedLanguage;
var regionFormatCultureInfo = new CultureInfo(regionInfoName);
Peter Meinl 的答案有效,但有点令人困惑,因为您不需要 RegionInfo。
Pedro Lamas 仅使用 "US".
描述了使用 DateTimeFormatter 的 ResolvedLanguage 的黑客攻击 DateTimeFormatter dtf = new DateTimeFormatter("longdate", new[] { "US" });
string regionInfoName = dtf.ResolvedLanguage;
CultureInfo regionFormatCultureInfo = new CultureInfo(regionInfoName);
DateTimeFormatter 的 ResolvedLanguage 属性 将包含 phone 的区域格式 ID,在本例中为 "nl-NL"。
请注意,您确实需要在 DateTimeFormatter 的构造函数中使用一种语言,仅 new DateTimeFormatter("longdate") 或 DateTimeFormatter.LongDate 将不起作用。