簡體   English   中英

本地化會產生奇怪的行為,請咨詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM