2012-03-21 12 views
3

App.xaml.csのWindows Metroアプリケーションでデフォルトの起動言語を設定しようとしましたが、実行する場所が見つかりません。通常、C#でThread.CurrentCultureを使用してこれを設定しますが、スレッドの名前空間を見つけることができません。私がここで紛失しているものは何ですか?Windows 8 Metro App(XAML) - デフォルトの起動言語を設定するにはどうすればよいですか?

+0

以下のアップデートを参照してください... – chrisva

答えて

0

プロジェクトアセンブリで設定しようとする可能性があります。プロジェクトを右クリックし、 "Assembly Information ..."をクリックして、あなたの中立文化を選択してください。

+1

UDPATE:実際に試しましたが、Metro Appが正しいリソースファイルを見つけられませんでした。私は実際には、次のコードを使用してapp.xaml.csに文化を設定することができたことを確認しました: // OS英語でもデフォルトの起動言語としてNorwegianを設定します。 System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new CultureInfo( "no"); System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo( "no"); – chrisva

+1

更新:Windows 8 OSが英語版でインストールされているため、まだ英語のリソースファイルが読み込まれています。私は、このクイックスタートで説明されているリソースを定義しています。http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh771181.aspxしかし運はありません。私はまた、ユーザーが実行時に言語を変更できるようにしたい。 – chrisva

+1

ランタイム中に正しい言語リソースを読み込むために、C#Metro Appで言語を変更する方法はありますか? – chrisva

0

デフォルトのスレッドカルチャをCultureInfo.DefaultThreadCurrentCultureプロパティを使用して設定できます。以下に示すようにたぶんApp.xaml.csでそれを設定

0

Windows.Globalization.ApplicationPreferences.PreferredLanguage = "no"; 

を助けるどこに「ノー」ノルウェー語用BCP47言語タグです。

更新:Windowsの8 SDKサンプル「アプリケーションのリソースとローカリゼーション」

ことが可能であるによると、ランタイム

でメトロアプリの言語の変更、そのアプリケーションの実行中に、言語、スケール、コントラストなどの設定が変わることがあります。これらのイベントを処理するには、イベントリスナーを登録して、変更をリッスンして対応する必要があります。これは、状態を記憶し、ページをリフレッシュすることによって、または特定のリソースを再描画することによって行うことができる。

今私の言語変更選択イベントで私が好きは、preferredlanguageを設定しています:

Windows.Globalization.ApplicationPreferences.PreferredLanguage = "en"; 
this.Frame.Navigate(this.GetType()); 

と私は行方不明になってきた重要なことはアプリケーションのOnLaunchedイベントに以下のコードです:

ResourceManager.Current.DefaultContext.QualifierValues.MapChanged += async (s, m) => 
{ 
    if (m.Key == "Language") 
    { 
     // react to language change 
    } 
}; 

このイベントの登録は、ページのコンストラクタやページのイベント(SDKサンプルのように)には配置しませんでした。これは複数回登録されている可能性があるからです。 このイベントは、言語の変更が実行時に有効になるように、どこかに登録する必要があります。私は(CPに)あなたが探しているものだと思い

0

は、あなたのマニフェストは、あなたが実際にサポートするすべての言語の一覧を表示する必要があることWindows.Globalization.ApplicationPreferences.PreferredLanguage.

注意です。プロジェクト内のマニフェストにx-generateが含まれている場合、VSは自動的に言語を設定します。

4

これはWindows8 CPで素晴らしい作品:

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "de"; 
var resourceLoader = new ResourceLoader(); 
0

開きますPackage.appxmanifest 変更資源のコードビューに:

<Resources> 
    <Resource Language="x-generate" /> 
    </Resources> 
1

それは私がここにオプションがあり、必要に応じてまだある場合:

Package.appxmanifestにデフォルトのApp言語を設定してみてください。 VSでマニフェストを開き、適切なボックスにデフォルト言語を設定します(アプリケーションUI - >デフォルト言語)。

希望します。

関連する問題