2016-03-02 47 views
0

我的問題表情符碼是同時本地化字符串包括不工作

NSLocalizedStringFromTableInBundle(@"Sample Text", @"Localizable", [Globals GetLocalizebundle], @"")

正在完善,我從文件本地化的字符串,但

NSLocalizedStringFromTableInBundle(@"Sample Text \U0001F431", @"Localizable", [Globals GetLocalizebundle], @"") 

不能得到本地化的包文本。

任何幫助表示讚賞。

+1

你讀過http://stackoverflow.com/a/23454538/909655關於如何在字符串文件中包含unicode字符?特別是關於0xFFFF以上的代碼點。 – Mats

回答

0

不要使用關鍵翻譯文本,在localized.string文件中使用類似

"sample_text_emoji" = "Sample Text \U0001F431"; 

然後用

NSLocalizedStringFromTableInBundle(@"sample_text_emoji", @"Localizable", [Globals GetLocalizebundle], @"") 

Documentation明確指出這是一個關鍵,所以用它作爲一個關鍵,而不是一個文本

NSString *NSLocalizedStringFromTableInBundle(NSString *key, NSString *tableName, NSBundle *bundle, NSString *comment) 
+1

它確實不起作用。你測試過你的解決方案嗎?因爲它不是提供的關鍵。它是關於來自localized.string文件的值。我已經在localized.string文件中測試過'sample_text_emoji「=」Sample Text \ U0001F431「',但屏幕上的結果是」Sample Text F431「 – icould

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]; 

其中base Localized.string包括"Sample Text" = "Sample Text";

的方法是讓本地化的自包文本,然後添加表情符號的Unicode字符串。然後將其轉換爲NSNonLossyASCIIString。如果您對每種語言使用相同的表情符號,此方法正在工作。