iphone - 如何创建格式化的本地化字符串?

标签 iphone string-formatting

我有一个本地化字符串,需要使用一些变量。然而,在本地化中,变量的顺序可以根据语言的不同而变化,这一点很重要。

所以这不是一个好主意:

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/

相关文章:

java - 使 String.format ("%s", arg) 显示与 "null"不同的空值参数

iphone - 将 UITextField 格式化为价格 (XXX,XXX.XX)

iphone - C/C++/Obj-C 实时算法从人声输入中确定音符(不是音高)

IPhone 应用程序和 iPad 视网膜图标

javascript - 在 Javascript 中检测特定的 iPhone/iPod touch 型号

java - 验证字符串是否与格式字符串匹配

iphone - 如何在不使用重新加载的情况下隐藏 UITableViewCell 中的重新排序控件?

iphone - SKPaymentQueue addTransactionObserver 在应用内购买后启动时要求输入 App Store 密码

c# - 格式化字符串 % 而不将该值乘以 100

clojure - cl 格式没有小数位(lisp 格式)