2017-09-06 7 views
0

私はXamarin.FormsプロジェクトにSharePluginを使用したいと思いますが、ローカライゼーションの管理方法はわかりません。私は両方ともフランス語で設定されたAndroidとiPhoneデバイスを持っています。Xamarin.Forms:共有ポップアップのローカリゼーションを管理する方法は?

Androidでは、共有ポップアップがフランス語でよく表示されます。 しかし、iOSでは、共有ポップアップが英語で表示されます。

<key>CFBundleDevelopmentRegion</key> 
    <string>fr</string> 
<key>CFBundleLocalizations</key> 
<array> 
    <string>fr</string> 
</array> 

をしかし、これは何も変更しませんでした:

私はInfo.plistで言語を指定しようとしました。 SharePluginから[共有]ダイアログの

スクリーンショット: screenshot2

私はSafariやFacebookなどの他のアプリからの共有]ダイアログを使用している場合は、ダイアログが良くフランス語で表示されます。サファリから"デフォルト" [共有]ダイアログ

スクリーンショット: screenshot1

あなたは説明を持っていますか?

[編集]解決策を再度開いた後、これはうまくいきます。 私はVisual Studioの外でinfo.plistを編集したためだと思います。変更はおそらく考慮されていませんでした。

+0

あなたは、iOSデバイスまたはシミュレータでテストしていますか? – Jason

+0

私は実際のデバイスで、iOSとAndroid用のテストを行った –

答えて

1

正しい言語を表示するには、各プラットフォームのオペレーティングシステムに問い合わせて、ユーザーが選択した言語を判断する必要があります。

依存サービスを使用して、その情報をXamarin.Formsアプリに公開し、プラットフォームごとに実装する必要があります。

Hereは公式の単純です。 PCLでILocalize.cs、Xamarin.iOSでLocalize.cs、検索フォルダに対応するにコピーします。(クラスの名前空間を変更忘れてはいけない)アプリケーション

コード

public App() 
{ 
    InitializeComponent(); 
    if (Device.OS == TargetPlatform.iOS || Device.OS == TargetPlatform.Android) 
    { 
     // determine the correct, supported .NET culture 
     var ci = DependencyService.Get<ILocalize>().GetCurrentCultureInfo(); 
     DependencyService.Get<ILocalize>().SetLocale(ci); // set the Thread for locale-aware methods 
    } 
    MainPage = new FormsApp.MainPage(); 
} 

もっと詳しくhereを参照してください。

私のテスト:

enter image description here

+0

ありがとう@Cole Xia。 'ILocalize.cs'と' Localize.cs'をコピーしました。私は 'App.cs'の行18-25も複製しました。しかし、私は起動時に例外が発生します。 私は何かを忘れましたか? –

+0

@ゴールド。例外情報は何ですか? –

+0

'System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 ' –

関連する問題