2016-04-15 84 views
0

我正在做动态本地化。我从服务器端获取所有本地化字符串。在响应的基础上,我创建了动态的localization.string文件。例如:swift中的动态本地化

"By Venue"="Par Lieu"; 
"Invitee Name"="Invité Nom"; 
"Email suffix:"="Email suffixe:"; 
"METRICS"="MESURES"; 
"MD - Moldova"="MD - Moldavie"; 
"Name:"="Nom:"; 
"Approval Manager"="Gestionnaire de Approbation"; 
"Last login on:"="Dernière connexion sur:"; 

但是在这个响应中也包含了一些HTML标记。例如:

"<b ljsid-1="">Note:</b> You can send this email manually once every 24 hours."="<b ljsid-1="">Remarque:</b> Vous pouvez envoyer cet e-mail manuellement une fois toutes les 24 heures."; 

如果我从动态创建的本地化文件中删除此标记,那么我能够做loclaization。否则我不能loclaization。

所以请建议我,如何处理这个HTML标签。在此先感谢

回答

0

要从HTML中获取文本,您可以在项目中使用Kanna。在下面的代码片段test.txt只是一个HTML字符串作为源文件。

override func viewDidLoad() { 
     super.viewDidLoad() 

     do { 
      let path = NSBundle.mainBundle().pathForResource("test", ofType: "txt") 
      let str = try String(contentsOfFile: path!, encoding: NSUTF8StringEncoding) 
      // Use Kanna framework to get HTML text 
      if let doc = HTML(html: str, encoding: NSUTF8StringEncoding) { 
       let text = doc.text 
       print(text) 

       let file = "/output.txt" 

       if let dirs : [String] = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) { 
        var path = dirs[0] //documents directory 
        path.appendContentsOf(file) 

        //writing 
        try text!.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding); 

        //reading 
        let text2 = try String(contentsOfFile: path, encoding: NSUTF8StringEncoding) 
        print(text2) 
       } 

      } 

     } 
     catch let error as NSError { 
      print(error.localizedDescription) 
     } 

    } 

的输出是:

Optional("\"Note: You can send this email manually once every 24 hours.\"=\"Remarque: Vous pouvez envoyer cet e-mail manuellement une fois toutes les 24 heures.\"") 
"Note: You can send this email manually once every 24 hours."="Remarque: Vous pouvez envoyer cet e-mail manuellement une fois toutes les 24 heures."