2015-02-25 13 views
11

Chciałbym dodać obsługę wielu języków do struktury CocoaTouch.Jak korzystać z Localizable.strings przechowywanych w ramach CocoaTouch?

Problem: Plik Localizable.strings stworzyłem tylko przyzwyczaja przez NSLocalizedString kiedy to część głównej aplikacji i jej cel. Chciałbym przechowywać go wewnątrz Framework, aby zachować oddzielne elementy.

Jak mogę użyć Localizable.strings po umieszczeniu w strukturze CocoaTouch?

Odpowiedz

8

Zastosowanie:

NSLocalizedString("Good", tableName: nil, bundle: NSBundle(forClass: self), value: "", comment: "") 

lub można utworzyć func publicznego takiego:

class func POLocalized(key: String) -> String{ 
     let s = NSLocalizedString(key, tableName: nil, bundle: NSBundle(forClass: self.classForCoder()), value: "", comment: "") 
     return s 
    } 

przykład użycia:

let locString = POLocalized("key") 
+2

Nie używaj NSBundle (forClass: self) dla klas publicznych, ponieważ niektóre główne klasy wiązka może dziedziczyć klasy ramy i NSBundle (forClass: self) wskaże do głównej wiązki, a nie ramowej. –

+0

W tym przypadku możesz użyć NSBundle (identyfikator: "FRAMEWORK_ID") – pbeo

+0

Co oznacza parametr "value"? Obecne dokumenty Apple nie wyjaśniają ... –

4

Można to zrobić poprzez określenie identyfikator pakietu ramy w konstruktorze NSLocalizedString.

if let bundle: NSBundle = NSBundle(identifier: "com.mycompany.TheFramework") { 
    let string = NSLocalizedString("key", tableName: nil, bundle: bundle, value: "", comment: "") 
    print(string) 
} 
Powiązane problemy