我的问题是
@GET
@Path("/listAll")
public Response getAllAvailableImages(@Context ServletContext context)
工作正常,我从文件中获取本地化字符串,但
NSLocalizedStringFromTableInBundle(@"Sample Text", @"Localizable", [Globals GetLocalizebundle], @"")
无法从包中获取本地化文本。
任何帮助表示感谢。
答案 0 :(得分:1)
我通过用“ surrogates”替换整个unicode代码来解决此问题。
例如?的代码为"1F601"
,它的代名词为D83D
和DE01
。因此,?应该被本地化为"\UD83D\UDE01"
答案 1 :(得分:0)
请勿使用翻译文本作为密钥,请使用
之类的内容"sample_text_emoji" = "Sample Text \U0001F431";
在您的localized.string文件中然后使用
NSLocalizedStringFromTableInBundle(@"sample_text_emoji", @"Localizable", [Globals GetLocalizebundle], @"")
Documentation明确指出这是一个关键,因此请将其用作关键字,而不是文本
NSString *NSLocalizedStringFromTableInBundle(NSString *key, NSString *tableName, NSBundle *bundle, NSString *comment)
答案 2 :(得分:0)
实际上,下面解决了我的问题,但我仍然不相信这是一个合适的解决方案。无论如何,这里的代码解析了NSLocalizedStringFromTableInBundle
的表情符号字符:
NSString *str = NSLocalizedStringFromTableInBundle(@"Sample Text", @"Localizable", [Globals GetLocalizebundle], @"");
NSString *stringWithEmoji = [str stringByAppendingString:@" \U0001F431"];
NSData *data = [stringWithEmoji dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *valueUnicode = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSData *dataa = [valueUnicode dataUsingEncoding:NSUTF8StringEncoding];
NSString *valueEmoji = [[NSString alloc] initWithData:dataa encoding:NSNonLossyASCIIStringEncoding];
其中baseized.string包含"Sample Text" = "Sample Text";
该方法是从bundle获取本地化文本,然后将emoji Unicode添加到字符串。然后将其转换为NSNonLossyASCIIString
。如果您对每种语言使用相同的表情符号,则此方法有效。