2017-06-03 66 views
1

我有用戶可本地化的字符串,用於在故事板或源文件中使用的字符串。這些都是在文件中定義的,如Localizable.string(西班牙文),Localizable.string(德文)等。但我有一個要求,這些字符串可以不斷變化。這些字符串是作爲對REST API呼叫的響應而收到的。我的問題是我如何使用它。從iOS上的JSON運行時可本地化的字符串

當前的代碼let text = NSLocalizedString("Some string", comment: "")

NSLocalizedString查找Localizable.string文件。我如何讓NSLocalizedString從我的自定義字典/ Json中查找本地化的單詞?

+0

甲'與給定的格式'「鍵」 =「值」文件.strings';'是必需的,但文件的名稱可以是任意的。對於自定義名稱,使用方法'NSLocalizedString(_:tableName:bundle:value:comment:)' – vadian

+0

動態創建本地化字符串不可能直接在應用程序內部實現。您可能需要將語言和國家/地區傳遞到您要獲取本地化字符串的API(使用第三方得到在線翻譯,否則風險可能不會在翻譯時得到上下文正確含義) – mkumar

回答

0

試試這個

首先,你需要複製該文件目錄中的文件。

獲取本地化的標籤

let localisedString = self.getLocalizatioString(key: "your key", stringFileName: "test.strings") // 

功能

func getLocalizatioString(key : String?, stringFileName : String) -> String { 
      let doumentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString 
      let destinationPath = doumentDirectoryPath.appendingPathComponent(stringFileName) 
      let dict = NSDictionary.init(contentsOfFile: destinationPath) 
      return (dict?.object(forKey: key!) as? String)! 
     } 

輸出

enter image description here

在字符串文件enter image description here

+0

可以動態添加/刪除語言?例如,我可能永遠不會得到法語翻譯,但我不想有一個默認字段。我需要有多個翻譯,這將改變運行時間。 – Vinuta

+0

是的你可以做...你需要下載多個字符串文件到不同名稱的文檔目錄 – KKRocks

+0

我需要從我下載的JSON動態創建這個.strings文件。套件在這裏是必要的嗎? – Vinuta