2017-09-06 3 views
0

Ich möchte SharePlugin in meinem Xamarin.Forms Projekt verwenden, aber ich sehe nicht, wie die Lokalisierung zu verwalten. Ich habe Android und ein iPhone-Geräte, beide in Französisch konfiguriert.Xamarin.Forms: Wie wird die Lokalisierung des Share-Popups verwaltet?

Auf Android ist das Freigabe-Pop-up gut in Französisch angezeigt. Aber auf iOS wird das Freigabe-Pop-up in Englisch angezeigt.

habe ich versucht, Sprachen in Info.plist angeben:

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

Aber das änderte nichts.

Screenshot des Teile Dialog von SharePlugin: screenshot2

Wenn ich den Anteil Dialog von anderen Anwendungen verwenden, wie Safari oder Facebook, wird der Dialog auch in Französisch angezeigt.

Screenshot der "default" Teilen Dialog von Safari: screenshot1

Möchten Sie eine Erklärung?

[bearbeiten] Nachdem die Lösung wieder geöffnet haben, funktioniert dies gut. Ich denke, das ist, weil ich die außerhalb von Visual Studio bearbeitet habe: so wurde die Änderung wahrscheinlich nicht berücksichtigt.

+0

testen Sie mit einem iOS-Gerät oder den Simulator? – Jason

+0

Ich habe Tests auf echten Geräten, für iOS und Android –

Antwort

1

Um die richtige Sprache anzuzeigen, müssen wir das Betriebssystem auf jeder Plattform abfragen, um festzustellen, welche Sprache der Benutzer ausgewählt hat.

Wir sollten einen Abhängigkeitsdienst verwenden, um diese Informationen in der Xamarin.Forms App verfügbar zu machen und für jede Plattform zu implementieren.

Here ist offiziell einfach. Finden ILocalize.cs in PCL, Localize.cs in Xamarin.iOS, und kopieren Sie sie in den Ordner entspricht. (Vergessen Sie nicht den Namespace in der Klasse ändern)

-Code in App

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(); 
} 

Weitere Einzelheiten finden Sie in here.

Mein Test:

enter image description here

+0

Dank @Cole Xia. Ich habe 'ILocalize.cs' und' Localize.cs' kopiert. Ich habe auch die Zeilen 18-25 von 'App.cs' dupliziert. Aber ich bekomme beim Start eine Ausnahme. Habe ich etwas vergessen? –

+0

@Gold.strike was ist die Ausnahme info? –

+0

Es ist 'System.NullReferenceException: Objektreferenz nicht auf eine Instanz eines Objekts gesetzt. –

Verwandte Themen