2013-02-27 34 views
0

嗯,我不像我想的那麼聰明。用幾行代碼拼搏整天。本地化給了奇怪的行爲,請諮詢

char latChar = (actLat > 0) ? 'N' : 'S'; 
NSString *latString = [NSString stringWithFormat:@"%c" , latChar];  
NSString *latStringLocal = [NSString stringWithFormat:NSLocalizedString(@"%c",nil), latString]; 

在第一行中:至極字符是正確的。緯度> 0度是N,< 0這是一個S.這是有效的。 在第二行我將字符轉換爲字符串。工作也OK。 在第三行中,它出錯了。在運行應用程序時,會顯示所有符號和普通字符。每秒鐘都有一個新的。 最後一部分是可以理解的,因爲locationmanager是不斷更新的。

但爲什麼這些字符?我在這裏做什麼錯了?看到兩個localizable.strings文件

en.lproj

​​

nl.proj

"N" = "N"; 
"S" = "Z"; 
"W" = "W"; 
"E" = "O"; 

這個應用程序顯示名工作正常,所以.strings文件中發現連接 「讀」。 請指教。先謝謝你。

回答

-1
NSString *latStringLocal = NSLocalizedString((actLat > 0) ? @"N" : @"Y", @""); 
+0

感謝您的回覆,將您的答案放在我的代碼中,它編譯正確。但是它顯示了荷蘭設備中的英文字符。有什麼建議麼? – A3O 2013-02-27 16:46:44

+0

足夠愚蠢的是,荷蘭筆尖加載正確,並顯示本地化的應用程序顯示名稱。所以,我不知道該怎麼想。 – A3O 2013-02-27 16:54:20

+0

任何其他文本是可本地化的?你可以在標準組件中看到荷蘭語嗎? – iiFreeman 2013-02-27 16:54:30

0

我不知道你用NSLocalizedString()做什麼;第一個參數應該是@"N",@"S"而不是@"%c"

+0

@ trojanfoe感謝您的回覆。我想展示本地經緯度的特徵。所以我試着把一個佔位符放入並讀取一個變量的值(在這種情況下是latChar)。 – A3O 2013-02-27 16:45:22

+0

我愚蠢,我把我的密鑰放在InfoPlist.strings文件中而不是Localized.strings文件中。謝謝您的回覆。 – A3O 2013-02-28 09:40:18

0

我會寫這樣的:

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] - 都應該可以工作。

+0

我愚蠢的是,我把我的密鑰放在InfoPlist.strings文件中而不是Localized.strings文件中。謝謝您的回覆。 – A3O 2013-02-28 09:39:49

+0

很高興我能幫忙:) – kat 2013-02-28 16:17:21