0

嗯,我没有我想的那么聪明。一整天都在为几行代码苦苦挣扎。

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 转换为字符串。也可以。在第三行中,一切都出错了。运行应用程序时,会显示所有类型的符号和普通字符。每一秒都是一个新的。最后一部分是可以理解的,因为 locationmanager 会不断更新。

但为什么是那些字符?我在这里做错了什么?查看两个 localizable.strings 文件

en.lproj

"N" = "N";
"S" = "S";
"W" = "W"; 
"E" = "E";

项目

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

应用程序显示名称工作正常,因此可以在“读取”中找到 .strings 文件。请指教。先感谢您。

4

3 回答 3

0

我不知道你在做什么NSLocalizedString();第一个论点应该是@"N"@"S"而不是@"%c"

于 2013-02-27T16:34:31.330 回答
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]- 一切都应该工作。

于 2013-02-27T23:52:54.643 回答
-1
NSString *latStringLocal =  NSLocalizedString((actLat > 0) ? @"N" : @"Y", @"");
于 2013-02-27T16:34:21.600 回答