swift中的动态本地化

时间:2016-04-15 05:14:32

标签: ios swift localization

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

"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。否则我无法进行定位。

所以请建议我,如何处理这个HTML标签。提前致谢

1 个答案:

答案 0 :(得分: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."