2016-08-27 114 views
1

我想这个字符串中迅速使用plurar stringdict为iOS如何迅速IOS

  • 停留在1%$ @
  • 入住%转化规律的字符串占位符添加到翻译复数.stringdict 1 $ @

使用一个简单的复数没有占位符的作品,感谢this question 但是当我添加一个字符串的占位符访问时,我得到一个崩溃。

定期复数使用下面的XML工作

<dict> 
<key>NSStringLocalizedFormatKey</key> 
<string>%#@[email protected]</string> 
<key>format</key> 
<dict> 
    <key>NSStringFormatSpecTypeKey</key> 
    <string>NSStringPluralRuleType</string> 
    <key>NSStringFormatValueTypeKey</key> 
    <string>li</string> 
    <key>one</key> 
    <string>Sleeps at your place</string> 
    <key>other</key> 
    <string>Sleep at your place</string> 
</dict> 
</dict> 

并使用该SWIFT代码来引用上面的多不串占位符:

let format = NSLocalizedString("key_to_plural_above", comment: "") 
let label = String.localizedStringWithFormat(format, kidsIds.count) 

问题是当我给翻译添加一个字符串占位符当我尝试读取它时,我得到一个崩溃。下面的xml是由一个翻译工具(lokalise)生成的,所以我认为它是正确的。

<dict> 
<key>NSStringLocalizedFormatKey</key> 
<string>%#@[email protected]</string> 
<key>format</key> 
<dict> 
    <key>NSStringFormatSpecTypeKey</key> 
    <string>NSStringPluralRuleType</string> 
    <key>NSStringFormatValueTypeKey</key> 
    <string>li</string> 
    <key>one</key> 
    <string>Sleeps at %[email protected]</string> 
    <key>other</key> 
    <string>Sleep at %[email protected]</string> 
</dict> 

使用此SWIFT代码来获得上述复数,我得到一个未知的碰撞没有任何堆栈跟踪:

let format = NSLocalizedString("key_to_plural_above", comment: "") 
let label = String.localizedStringWithFormat(format, kidsIds.count, "Name") 

回答

2

位置参数为基础的一个n$,所以在

let label = String.localizedStringWithFormat(format, kidsIds.count, "Name") 

"Name"是第二个参数,您可以用%[email protected]来引用它:

<key>NSStringLocalizedFormatKey</key> 
<string>%#@[email protected]</string> 
<key>format</key> 
<dict> 
    <key>NSStringFormatSpecTypeKey</key> 
    <string>NSStringPluralRuleType</string> 
    <key>NSStringFormatValueTypeKey</key> 
    <string>li</string> 
    <key>one</key> 
    <string>Sleeps at %[email protected]</string> 
    <key>other</key> 
    <string>Sleep at %[email protected]</string> 
</dict> 

在你的代码,%[email protected]指的是第一个参数kidsIds.count。 这不是导致崩溃的字符串。

或者,把它放到NSStringLocalizedFormatKey:

<key>NSStringLocalizedFormatKey</key> 
<string>%#@[email protected] at %@</string> 
<key>format</key> 
<dict> 
    <key>NSStringFormatSpecTypeKey</key> 
    <string>NSStringPluralRuleType</string> 
    <key>NSStringFormatValueTypeKey</key> 
    <string>li</string> 
    <key>one</key> 
    <string>Sleeps</string> 
    <key>other</key> 
    <string>Sleep</string> 
</dict> 
+0

谢谢!在Android上,复数不算作安置者,因此混乱。这个解决方案将导致Android代码作为第一个占位符传递null ..不理想,但工作! –