Fog*_*ter 13 objective-c nsstring stringwithformat nslocalizedstring ios
请注意
我不是在问NSLocalizedString()宏.我问的是NSString班级功能+ (instancetype)localizedStringWithFormat:(NSString *)format, ....
这是两件不同的事情.
题
我正在尝试使用NSString类方法,localizedStringWithFormat但我无法弄清楚我应该如何使用它.
无论我尝试什么,我似乎都没有使用Xcode 6在翻译文件中出现这些词export for localization.我在这里尝试了前两种变化,但没有.
文档中的示例显示......
NSString *myString = [NSString localizedStringWithFormat:@"%@: %f", @"Cost", 1234.56];
Run Code Online (Sandbox Code Playgroud)
这是否意味着我必须将翻译的单词与数字分开?即我不能只使用......
NSString *myString = [NSString localizedStringWithFormat:@"Cost: %f", 1234.56];
Run Code Online (Sandbox Code Playgroud)
如果我可以使用这个翻译的短语是什么,翻译会是什么?
如果没有,那么为什么要使用它呢?为什么不用...
NSString *myString = [NSString stringWithFormat:@"%@: %f", NSLocalizedString(@"Cost"), 1234.56];
Run Code Online (Sandbox Code Playgroud)
最后一个有什么不同?
无论哪种方式,有人可以告诉我如何获得翻译的实际单词.
更新
好吧,目前我正在使用一个愚蠢的工作,似乎是在滥用一切lol.
如果我做...
NSString *myString = [NSString stringWithFormat:@"%@: %f", NSLocalizedString(@"Cost"), 1234.56];
Run Code Online (Sandbox Code Playgroud)
然后它翻译了"成本"这个词,但没有使用正确的数字区域设置.
如果我用...
NSString *myString = [NSString localizedStringWithFormat:@"%@: %f", @"Cost", 1234.56];
// or
NSString *myString = [NSString localizedStringWithFormat:@"Cost: %f", 1234.56];
Run Code Online (Sandbox Code Playgroud)
然后Xcode"导出本地化"完全忽略它,并且根本没有任何关于"成本"的内容被添加到翻译文件中,因此没有任何内容被翻译.
所以,我已经使用了......
[NSString localizedStringWithFormat:@"%@: %f", NSLocalizedString(@"Cost", @"Cost context stuff..."), 1234.56];
Run Code Online (Sandbox Code Playgroud)
这会为翻译文件添加"成本"并将数字转换为正确的区域设置,但似乎我在这里使用了大量冗余内容.
当你想到NSLocalizedStrings时 - 想想关键/价值.您可以使用键来玩一些技巧,就像第二个例子一样:
@"Cost: %f"
Run Code Online (Sandbox Code Playgroud)
这是一个关键 - 值可能看起来像@"SomeOtherWord:%f", - %f仍然是一个格式字符串的一部分后来使用.
你给出的最后一个例子:
NSString *myString = [NSString stringWithFormat:@"%@: %f", NSLocalizedString(@"Cost"), 1234.56];
Run Code Online (Sandbox Code Playgroud)
允许您通过重置字符串来单独删除单词"Cost"的翻译,这可能没问题 - 但可能不足以有效地传达您在所有语言中的含义.也许有一种你不会标记的语言:价值,然后只是翻译"成本"并不能让你获得良好的本地化.
NSLocalizedString可以帮助解决大多数情况,但是本地化很难并且充满了特殊情况,因此您的代码也可能有特殊情况 - 只需尽量保持与其他逻辑隔离.
编辑:解决实际问题的演变:
localizedStringWithFormat:
Run Code Online (Sandbox Code Playgroud)
将更改格式说明符的替换方式.
来自Apple的NSString文档:
讨论
此方法等效于使用initWithFormat:locale:并将当前语言环境作为locale参数传递.
| 归档时间: |
|
| 查看次数: |
7349 次 |
| 最近记录: |