2017-06-03 78 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