如何显示带参数的HTML本地化字符串?

时间:2013-07-08 20:25:17

标签: html5 ios6 localization nslocalizedstring

我有一个需要本地化的HTML字符串;唯一的问题是它有参数,如:

    NSString *htmlString = [NSString stringWithFormat:NSLocalizedString(@"<html><head>"
                        "<style type=\"text/css\"> body {font-family: \"Verdana\"; font-size: 12;} </style></head>"
                        "<body><h2>%@ %@</h2><p>email: %@<p>phone: %@<p>services: %@<p><img src=\"%@\"/>"  
                        "</body></html>",nil),
                        client.aClientFirstName,
                        client.aClientLastName,
                        client.aClientEMail,
                        client.aClientPrimaryPhone,
                        appt.aServices,
                        fileURL];

问题是“密钥”从不包含相同的数据,因此永远不会匹配。使用'en'时可以正常工作(因为当它找不到匹配项时默认为它),但是当它在UIPopover中显示时,所有其他语言都会失败。问题是:有没有办法对此进行编码,因此无论“客户”信息是什么,它都能正确显示每个本地化?

1 个答案:

答案 0 :(得分:1)

在Localizable.strings文件中,您应该创建一个单独的固定密钥,并将html模板作为包含参数占位符的值,例如:

"HTML_STRING" = "<html><head><style type=\"text/css\"> body {font-family: \"Verdana\"; font-size: 12;} </style></head><body><h2>%@ %@</h2><p>email: %@<p>phone: %@<p>services: %@<p><img src=\"%@\"/></body></html>";

然后在代码中使用密钥,例如:

NSString *htmlString = [NSString stringWithFormat:NSLocalizedString(@"HTML_STRING",nil),
                    client.aClientFirstName,
                    client.aClientLastName,
                    client.aClientEMail,
                    client.aClientPrimaryPhone,
                    appt.aServices,
                    fileURL];

这里你的htmlString变量将为你提供包含参数的字符串的本地化版本。