0

我有一个需要本地化的 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 中时,所有其他语言都会失败。问题是:有没有办法对此进行编码,所以无论“客户”信息是什么,它都会为每个本地化正确显示?

4

1 回答 1

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 变量将为您提供包含参数的字符串的本地化版本。

于 2013-07-09T14:53:10.750 回答