2017-11-30 3 views
0

Hi Ich habe ein imageView um einige Bilder anzuzeigen. Ich möchte für jede Sprache verschiedene Bilder zeigen. Wenn die Benutzer-Lokalisierung also Deutsch ist, erhält er andere Bilder als ein Benutzer mit der Lokalisierung Englisch.Bilder von ImageView nach Lokalisierung ändern

Dies ist mein Code. Wie kann ich mehrere imageArrays für jede Lokalisierung erstellen?

dank

override func viewDidLoad() { 

    super.viewDidLoad() 

    mainScrollView.frame = view.frame 


    imageArray = [#imageLiteral(resourceName: "help0"), #imageLiteral(resourceName: "help1"), #imageLiteral(resourceName: "help2"), #imageLiteral(resourceName: "help3"), #imageLiteral(resourceName: "help4")] 



    for i in 0..<imageArray.count{ 

     let imageView = UIImageView() 
     imageView.image = imageArray[i] 
     imageView.contentMode = .scaleAspectFit 
     let xPosition = self.view.frame.width * CGFloat(i) 

     imageView.frame = CGRect(x: xPosition , y: 0, width: self.mainScrollView.frame.width, height: self.mainScrollView.frame.height) 



     mainScrollView.contentSize.width = mainScrollView.frame.width * CGFloat(i + 1) 
     mainScrollView.addSubview(imageView) 

     self.view.sendSubview(toBack: mainScrollView) 

    } 
+1

Schöne Antwort hier: https://stackoverflow.com/questions/21310819/how-to-localize-the-images-in-images-xcassets – Norman

Antwort

0

Sie können es tun, wie diese durch die NSLocalizedString verwenden, so dass Sie erklären Sie Array wie folgt:

let help0 = UIImage(named: NSLocalizedString("help0", comment: "")) 
let help1 = UIImage(named: NSLocalizedString("help1", comment: "")) 
let help2 = UIImage(named: NSLocalizedString("help2", comment: "")) 
let help3 = UIImage(named: NSLocalizedString("help3", comment: "")) 
let help4 = UIImage(named: NSLocalizedString("help4", comment: "")) 

let imageArray = [help0, help1, help2, help3, help4] 

Dann fügen Sie Ihre Lokalisierungs langiages in Ihrem Beispiel ENG und GER und in diesen Dateien fügen Sie das Bild Sie verwenden möchten, wie diese (a guide wie Lokalisierung hinzugefügt werden):

Localization for English: 
"help0" = "help0Eng"; 
"help1" = "help1Eng"; 
etc... 

Localization for German: 
"help0" = "help0Ger"; 
"help1" = "help1Ger"; 
etc... 

Und Ihre help0Eng, help0Ger usw. ist der Name der Bilder in Ihrem Assets.xcassets. So passiert folgendes:

  1. NSLocalizedString ("help0" Kommentar: "") wird in der richtigen Datei für die ausgewählte Sprache
  2. Das Bild Name für help0 verwendet werden localzied werden
0

Locale hat das, was Sie suchen. Während der Entwicklung können Sie Locale.isoLanguageCodes verwenden, um ein Array aller möglichen Sprachencodes zu erhalten (jeder Code ist eine Zeichenfolge mit zwei oder drei Buchstaben). Verwenden Sie zur Laufzeit Locale.current.languageCode, um den Sprachcode für die aktuelle Sprache des Benutzers zurückzugeben.

func localizedImageArray() -> [UIImage] { 
    let currentLanguage = Locale.current.languageCode 
    let imageArray: [UIImage] 

    if currentLanguage == "ja" { 
     [#imageLiteral(resourceName: "help0_ja"), #imageLiteral(resourceName: "help1_ja"), #imageLiteral(resourceName: "help2_ja"), #imageLiteral(resourceName: "help3_ja"), #imageLiteral(resourceName: "help4_ja")] 
    } else if currentLanguage == "kr" { 
     [#imageLiteral(resourceName: "help0_kr"), #imageLiteral(resourceName: "help1_kr"), #imageLiteral(resourceName: "help2_kr"), #imageLiteral(resourceName: "help3_kr"), #imageLiteral(resourceName: "help4_kr")] 
    } else /* Default implementation */ { 
     [#imageLiteral(resourceName: "help0"), #imageLiteral(resourceName: "help1"), #imageLiteral(resourceName: "help2"), #imageLiteral(resourceName: "help3"), #imageLiteral(resourceName: "help4")] 
    } 

    return imageArray 
} 

In Ihrem viewDidLoad(), statt zu erklären imageArray = /* the part where you set the array with literals */, würden Sie erklären imageArray = localizedImageArray()

Bitte beachten sollte, dass Strings nicht:

Um dies zu implementieren, können Sie entlang der Linien eine Hilfsfunktion haben könnte mit dieser Methode lokalisiert werden. Verwenden Sie für lokalisierte Zeichenfolgen NSLocalizedString.

Verwandte Themen