[英]Localizing gives strange behavior, please advice
嗯,我不像我以前想象的那樣聰明。 整天用幾行代碼掙扎。
char latChar = (actLat > 0) ? 'N' : 'S';
NSString *latString = [NSString stringWithFormat:@"%c" , latChar];
NSString *latStringLocal = [NSString stringWithFormat:NSLocalizedString(@"%c",nil), latString];
在第一行中:wich字符是正確的字符。 緯度> 0度為N,<0為S。這可行。 在第二行中,我將char轉換為字符串。 也可以。 第三行全部出錯。 運行該應用程序時,會顯示所有種類的符號和普通字符。 每秒都有一個新的。 最后一部分是可以理解的,因為位置管理器是不斷更新的。
但是為什么要這些字符? 我在這里做錯什么了嗎? 查看兩個localizable.strings文件
en.lproj
"N" = "N";
"S" = "S";
"W" = "W";
"E" = "E";
nl.proj
"N" = "N";
"S" = "Z";
"W" = "W";
"E" = "O";
應用程序的顯示名稱運行良好,因此可以在“讀取”中找到.strings文件。 請指教。 先感謝您。
我不知道你在用NSLocalizedString()
做些什么; 第一個參數應該是@"N"
, @"S"
而不是@"%c"
。
我會這樣寫:
NSString *latStringLocal = actLat > 0 ? NSLocalizedString(@"N", @"North abbreviation") : NSLocalizedString(@"S", @"South abbreviation");
然后重新生成英語字符串:
find . -name \*.m | xargs genstrings
en.lproj / Localizable.strings將包含:
/* North abbreviation */
"N" = "N";
/* South abbreviation */
"S" = "S";
…並且nl.lproj / Localizable.strings應該包含:
/* North abbreviation */
"N" = "N";
/* South abbreviation */
"S" = "Z";
請注意, genstrings實用程序不喜歡NSLocalizedString的變量參數(不會為其生成密鑰)。 但是在運行時-如果鍵存在於[NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil]
,則所有功能都應工作。
NSString *latStringLocal = NSLocalizedString((actLat > 0) ? @"N" : @"Y", @"");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.