我有一个本地化字符串,需要使用一些变量。然而,在本地化中,变量的顺序可以根据语言的不同而变化,这一点很重要。
所以这不是一个好主意:
NSString *text = NSLocalizedString(@"My birthday is at %@ %@ in %@", nil);
在某些语言中,某些单词出现在其他单词之前,而在其他语言中则相反。我目前缺乏一个好的例子。
如何在格式化字符串中提供 NAMED 变量?有没有什么方法可以做到这一点,而不需要一些沉重的自制字符串替换?即使是一些编号变量,例如 {%@1}、{%@2} 等也足够了......有解决方案吗?
最佳答案
这就是为什么 NSLocalizedString
采用两个参数。使用第二个参数包含描述变量的 native 语言含义的注释。然后,翻译人员可以使用 $
+ 数字结构对它们重新排序。请参阅 Apple 的 Notes for Localizers .
但是,您不能跳过一种语言的参数。例如,如果您有 3 个英语参数和 4 个法语参数,并且不需要第三个英语参数,则无法采用 %1$@ %2$@ 和 %4$@
等格式。您只能跳过最后一个。
关于iphone - 如何创建格式化的本地化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841553/