2016-06-19 18 views
1

Was ist ein moderner Ansatz zur Lokalisierung in UWP?Mvvmcross Lokalisierung in UWP

JsonLocalization-Plugin für UWP zog weder Json noch ResorseLoader-Plugins. Darüber hinaus wurden keine Bootstrap-Dateien installiert (nicht sicher, ob sie noch in UWP benötigt werden).

Basierend auf der Annahme, dass es ohne Bootstraping korrekt funktioniert und das Plugin bereits alle notwendigen Dinge enthält, habe ich ein Beispiel implementiert, wie es in Video angewiesen wurde und bekam "|| ViewHeader" statt lokalisierter String. Und json Inhalt ist offensichtlich so etwas wie

{ 
    "ViewHeader":"Test view header" 
} 

habe ich Haltepunkt NativeLanguageConverter.Convert und herausgefunden, dass value.TextProvider.ResourceLoader null ist. Ich habe all diese Plugins manuell hinzugefügt, aber Fehler ist der gleiche - scheint, dass sie nicht veröffentlicht sind, also muss ich sie Bootstrap.

Was soll ich in diesem Fall tun?

UPDATE: In der Tat ist das Problem über fehlenden Schopf aus dem Sumpf: https://github.com/MvvmCross/MvvmCross-Plugins/issues/113

Aber auch nach ihnen dem Hinzufügen, ich bin immer noch Zeichenfolge im Format bekommen "|% Assembly% |% ViewmodelName% |% KeyName%" statt von "% ValueName%". Im Debugger kann ich sehen, dass das Wörterbuch das richtige Schlüssel-Wert-Paar enthält, aber es gibt irgendwie keinen Wert zurück, sondern einen formatierten Schlüssel.

+1

Bootstrap-Dateien benötigt werden. Aber Sie müssen sie manuell erstellen. Das ist mir zumindest in Version 4 passiert. – xleon

Antwort

0

Nach mehreren Stunden hatte ich die Arbeitskombination herausgefunden.

Um das Problem zu beheben, muss ich eine andere LanguageBinders für verschiedene ViewModels erstellen.

public IMvxLanguageBinder FirstViewModelTextSource 
    { 
     get 
     { 
      return new MvxLanguageBinder(GeneralConstants.LocalizationGeneralNamespace, "FirstViewModel"); 
     } 
    } 

Und dann auf der Ansicht:

<TextBlock Text="{Binding FirstViewModelTextSource,Converter={StaticResource Language},ConverterParameter=ViewHeader,FallbackValue=ViewHeader,Mode=OneTime}" 
        Margin="10,0,10,50" TextWrapping="Wrap"/>