8

Ich erstelle eine Anwendung für iOS, die sowohl in englischer als auch in französischer Sprache verfügbar sein wird. Ich habe einige Tutorials zur Internationalisierung gelesen und verstehe, wie es funktioniert und was ich tun muss.iOS Lokalisierte Version einer Zeichenfolge für eine bestimmte Sprache abrufen

Das Problem, das ich habe, ist, gibt es einen speziellen Fall, in dem ich französische Zeichenfolgen für einen englischen Benutzer laden möchte.

Ich verstehe, dass es möglich ist, die Sprache für die gesamte Anwendung festzulegen, aber dass die Anwendung neu gestartet werden muss, bevor es wirksam wird. Ich möchte das vermeiden und stattdessen in der Lage sein, französische oder englische Saiten nach Bedarf zu laden.

Ist es möglich, Zeichenfolgen aus einer .strings-Datei für eine bestimmte Sprache programmgesteuert zu laden?

+0

Related: [Link] (http://Stackoverflow.com/q/13816451/335858). – dasblinkenlight

+0

@dasblinkenlight Sieht nach einer guten Lösung aus, danke. – raydowe

Antwort

6

Ja, es ist möglich, aber es ist nicht so einfach zu erreichen.

Ich habe gerade den Fall, wo ich ein und denselben Namen (für alle Sprachen) eines ViewController für GAI (Google Analytics für iOS) senden sollte.

Voraussetzungen:

1) Ich verwende die NSBundle Erweiterung von hier https://stackoverflow.com/a/20257557/3883492 - vielleicht ist es eine gute Idee, da erste nachzuschlagen. (Es ist ziemlich Genie ehrlich zu sein)

2) Ich verwende swift 2

Dies ist ein ziemlich einfaches Code-Beispiel meiner Idee zu illustrieren:

func getFrenchString(forKey key: String) -> String { 
    if let currentLanguage = (NSUserDefaults.standardUserDefaults().arrayForKey(AppleLanguages)?.first as? String) { 
     if currentLanguage == "fr" { 
      return NSLocalizedString(key, comment: "") 
     } 
     else { 
      //the application is not currently on `fr` 
      //change application to `fr` 
      NSBundle.setLanguage("fr") 

      //get the localized string on `fr` 
      let frString = NSLocalizedString(key, comment: "") 

      //return the application to the old language 
      NSBundle.setLanguage(currentLanguage) 

      return frString 
     } 
    } 

    return "" 
} 

Auch sollten Sie „fr haben. lproj "Ordner mit lokalisierter Zeichenfolge in Ihrem Projekt.

Verwandte Themen