我有一个需要本地化的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中显示时,所有其他语言都会失败。问题是:有没有办法对此进行编码,因此无论“客户”信息是什么,它都能正确显示每个本地化?
答案 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变量将为你提供包含参数的字符串的本地化版本。