2016-07-20 14 views
0

Ich entwickle eine IOS-App mit Xamarin in Visual Studio. Ich versuche, meine Main.storyboard-Datei und die Standarddatei LaunchScreen.xib zu lokalisieren, aber ich kann es nicht funktionieren lassen.Xamarin iOS Storyboard-Lokalisierung

Ich habe die Dokumentation here und ich habe auch die Beispiel-App (die funktioniert gut) ausgeführt. Ich habe die Struktur des Projekts kopiert und viele Dateien überprüft, aber ich kann meine Strings nicht innerhalb der Storyboard- oder XIB-Dateien (LaunchScreen.xib) lokalisieren.

Das ist mein Info.plist:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDisplayName</key> 
    <string>MyApp</string> 
    <key>CFBundleIdentifier</key> 
    <string>it.company.myapp</string> 
    <key>CFBundleShortVersionString</key> 
    <string>1.0</string> 
    <key>CFBundleVersion</key> 
    <string>1.0</string> 
    <key>LSRequiresIPhoneOS</key> 
    <true/> 
    <key>MinimumOSVersion</key> 
    <string>9.0</string> 
    <key>UIDeviceFamily</key> 
    <array> 
     <integer>1</integer> 
     <integer>2</integer> 
    </array> 
    <key>UILaunchStoryboardName</key> 
    <string>LaunchScreen</string> 
    <key>UIMainStoryboardFile</key> 
    <string>Main</string> 
    <key>UIMainStoryboardFile~ipad</key> 
    <string>Main</string> 
    <key>UIRequiredDeviceCapabilities</key> 
    <array> 
     <string>armv7</string> 
    </array> 
    <key>UISupportedInterfaceOrientations</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
     <string>UIInterfaceOrientationLandscapeLeft</string> 
     <string>UIInterfaceOrientationLandscapeRight</string> 
    </array> 
    <key>UISupportedInterfaceOrientations~ipad</key> 
    <array> 
     <string>UIInterfaceOrientationPortrait</string> 
     <string>UIInterfaceOrientationLandscapeLeft</string> 
     <string>UIInterfaceOrientationLandscapeRight</string> 
    </array> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>it</string> 
    <key>CFBundleLocalizations</key> 
    <array> 
     <string>en</string> 
    </array> 
</dict> 
</plist> 

Und dies ist ein Screenshot von meiner Projektstruktur:

project_structure

ich, dass Storyboard Lokalisierung IDs wie „KID sein sollte gesehen haben -c2-rCX ". Dies gilt für meine LaunchScreen.xib-Datei, aber nicht für die Main.storyboard-Datei, die einfache numerische IDs wie "192", "193" usw. hat. Könnte das das Problem sein?

Was fehlt mir?

+0

ich verdoppeln würde diese Ids in Xcode Interface Builder überprüfen. Öffne das Storyboard in IB (Rechtsklick -> Öffnen mit -> Interface Builder). Wählen Sie 1 der Beschriftungen/Schaltflächen/etc aus und suchen Sie dann auf der Registerkarte "Identity Inspector" auf der rechten Seite (das kleine Kästchen in der Mitte) die "Objekt-ID". Das ist die ID, die von Ihrer Main.strings-Datei verwendet wird. Diese Zahlen klingen falsch, aber ich weiß es nicht. – dylansturg

+0

@DylanS Ich habe auf Xcode IB überprüft. Die IDs sind jetzt die gleichen, aber, wenn ich eine andere ui-Komponente (ein Label, eine Schaltfläche ecc) hinzufüge, erzeugt IB eine korrekte ID wie "kId-c2-rCX". Visual Studio generiert simpel numerische ID auch mit einer frischen leeren Storyboard-Datei. Ist das ein Visual Studio Bug? – Androidian

+0

Ich habe versucht, meine Storyboard-Datei direkt von xcode IB zu erstellen (die korrekte IDs generieren), aber die Storyboard-Lokalisierung funktioniert immer noch nicht :( – Androidian

Antwort

0

Sie müssen einen Standardwert festlegen. Wenn Sie z. B. einen textField placeHolder lokalisieren möchten, wird als Hardcode ein Standardwert für den Platzhalter und die Lokalisierung verwendet.

+3

Hallo @Vincent - können Sie bitte ein Stück Code anhängen, um Ihren Vorschlag zu demonstrieren? – ymz

+0

Hier sehen Sie, dass der Platzhalter "Platzhalter" einen Standardwert erhält – Vincent

0

Ich weiß, das ist alte Frage, aber ich möchte meine Lösung für das Problem zu sagen.

Hier ist meine Lokalisierungsstruktur:

enter image description here

In meiner Lösung i Main.strings -Dateien zu gleichen Namen, dass mein Storyboard umbenannt haben.

Ändern Sie nun die Objektlokalisierungs-ID in Zeichenfolge. In meinem Projekt macht das das anders. Hier ist ein Bild, um zu zeigen, was ich meine.

enter image description here

Öffnen Sie Ihr Storyboard im Textmodus und diese ID-Nummern, um Text zu ersetzen.

Jetzt öffnen Sie Ihre Main.strings und geben Sie Ihren Artikel dort ein.

enter image description here

Weitere Informationen von: https://developer.xamarin.com/guides/ios/advanced_topics/localization_and_internationalization/