2016-05-09 5 views
5

Ich verwende Localize-Swift Bibliothek (Link), um meine Anwendung zu lokalisieren, und es funktioniert gut mit .strings-Dateien. Das Problem ist, dass ich eine Sprache lokalisieren muss, die von rechts nach links ist, und ich muss über das Interface Builder Storyboard lokalisieren, damit ich View-Controller im RTL-Format richtig aussehen lassen kann. Die Frage ist, wie setze ich das Storyboard in Echtzeit auf die vom Benutzer ausgewählte Sprache?Swift: Wie ändere ich die Sprache in der App?

zum Beispiel ich habe 2 Storyboard-Dateien:

1- ... /ProjectName/Base.lproj/Main.storyboard

2- ... /ProjectName/fa-IR.lproj/Main .storyboard

Wie wechsle ich zwischen ihnen in Echtzeit?

Ich weiß bereits, ich kann es in Schemas und Gerät Sprache ändern, aber ich möchte es in Echtzeit tun und ich möchte nicht die Benutzer ihr Gerät neu starten.

dank

+1

Ich hatte das gleiche Problem vor und ich postete die Lösung, die mit mir arbeitete: http://StackOverflow.com/A/37111734/1752899 –

Antwort

5

fand meine Antwort:

NSUserDefaults.standardUserDefaults().setObject(["language identifier"], forKey: "AppleLanguages") 
NSUserDefaults.standardUserDefaults().synchronize() 

leider die App neu starten Benutzer muss! Wenn jemand eine Lösung finden könnte, um die Anwendung nicht neu zu starten, bitte informieren Sie mich.

+1

überprüfen Sie meinen Kommentar in Ihren Fragen. Ich lokalisiere die App ohne Neustart –

+0

@HossamGhareeb. Wie können wir erreichen, ohne die App neu zu starten? bitte kannst du es mir sagen –

3

Sie können NSBundle+Language Dritter Klasse.

+0

Ihre Lösung ist so kurz, ich fand es früh, aber nicht versuchen. jetzt nach Tagen habe ich versucht und ich glücklich .. Ich habe das verwendet: https://github.com/maximbilan/ios_language_manager Es ist genau der gleiche Code (Kopie einfügen?!?!), aber mit Ergänzungen, keine Fehler, mit Beispielen für die Verwendung und eine laufende App 10 Minuten war es in meinem Projekt implementiert =] – Yitzchak

0

Vielleicht ist the RSMultiLanguage pod etwas Nützliches für Sie? Ich habe es in meinen Apps verwendet und es bietet die Möglichkeit, die Benutzersprache in der App zu ändern. Ich bin mir ziemlich sicher, dass Sie es je nach Benutzerstandort mit einer if-Schleife einstellen können. Auf diese Weise müssen Sie die App möglicherweise nicht neu starten.

RSMultiLanguage

Nutzungs

das Beispielprojekt, klonen den Repo auszuführen, und führen pod zuerst aus dem Beispiel-Verzeichnis installieren.

Installations

RSMultiLanguage ist durch CocoaPods verfügbar. Um es zu installieren, fügen Sie einfach die folgende Zeile in Ihre Podfile:

pod "RSMultiLanguage" 

Autor

Roy Ng, [email protected]

Lizenz

RSMultiLanguage verfügbar unter die MIT-Lizenz. Weitere Informationen finden Sie in der LIZENZDATEI.

1

denke ich KababChi Antwort richtig war. In den neueren Versionen von Swift NSUserDefaults wurde jedoch durch UserDefaults ersetzt. So würde der Code wie folgt aussehen:

UserDefaults.standard.set(languages[indexPath.row], forKey: "AppleLanguages") 
UserDefaults.standard.synchronize() 

App muss noch neu gestartet werden, um diese Änderungen zu übernehmen.

Verwandte Themen