2016-04-29 14 views
2

私は、ローカライズされたWindows(Phone)10 UWPアプリケーションで作業しています。Windows Phone 10の地域フォーマットと言語UWPアプリケーション

私はen-USとnl-NL(オランダ語 - オランダ語)の2つの言語のサポートを実装しています。これはうまくいきます:ユーザーが電話設定で英語を選択すると、アプリは英語で起動し、ユーザーが電話設定でオランダ語を選択すると、アプリはオランダ語で開始します。

私は私の言語リソースが別のDLLであるため、package.appxmanifestでいくつかの変更をしなければならなかった。この作業を取得するには、次の

<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"である必要があります。

私はすべてのドキュメントを検索していますが、電話地域のフォーマットを取得する方法が見つかりません(Windows.System.UserProfile.GlobalizationPreferences.HomeGeographicRegionは別のものです)。

電話の地域の形式を取得する方法はありますか?

+0

http://stackoverflow.com/questions/13851854/how-to-find-the-default-dateformat-of-a-culture –

+0

@RahulJha、コメントを追加する前に私の質問をお読みください。あなたが参照しているスレッドは、Windows Phoneのユーザー設定については何も教えていません。 –

答えて

2

ピーター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プロパティは、この場合、「NL-NL」で、携帯電話の地域フォーマットIDが含まれます。

DateTimeFormatterのコンストラクタに言語が必要であることに気付いたら、新しいDateTimeFormatter( "longdate")またはDateTimeFormatter.LongDateは機能しません。

2

は、私が唯一、以下のハックは言及知っ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); 
関連する問題