Ios 如何处理本地化swift中的特殊情况
我创建了一个Localizable.strings文件,翻译工作正常。但有一种特殊情况,英语中有一个单词表示单数和复数,比如“series”。但在德语中有两个不同的词:一个系列是“Serie”,另外两个系列是“Serien”。我如何处理此类异常Ios 如何处理本地化swift中的特殊情况,ios,swift,localization,Ios,Swift,Localization,我创建了一个Localizable.strings文件,翻译工作正常。但有一种特殊情况,英语中有一个单词表示单数和复数,比如“series”。但在德语中有两个不同的词:一个系列是“Serie”,另外两个系列是“Serien”。我如何处理此类异常 感谢Martin,我是如何做到的,我的本地化名称如下:series=“series”和“Serie”以及series_pural=“series”和“Serien”。然后系统只是在后面寻找一个_复数,如果它存在,那么它会显示它(如果你告诉它你正在本地化的
感谢Martin,我是如何做到的,我的本地化名称如下:series=“series”和“Serie”以及series_pural=“series”和“Serien”。然后系统只是在后面寻找一个_复数,如果它存在,那么它会显示它(如果你告诉它你正在本地化的是一个复数单词)。另一种方法是你根据具体情况处理一个词是否是复数 我的本地化名称如下:series=“series”和“Serie”以及series_pural=“series”和“Serien”。然后系统只是在后面寻找一个_复数,如果它存在,那么它会显示它(如果你告诉它你正在本地化的是一个复数单词)。另一种方法是你根据具体情况处理一个词是否是复数 有很多方法可以做到这一点。但我更喜欢使用苹果公司介绍的方法,它非常简单明了 使用
NSLocalizedString
检查您案例中的金额
例如:
let toast: String
if days == 1 {
toast = NSLocalizedString("Serie.one", comment: "")
}
else {
toast = String(format: NSLocalizedString("Serien.other", comment: ""), days)
}
Localizable.strings包含以下信息:
Serie.one = "Serie";
Serien.other = "Serien %d ";
有很多方法可以做到这一点。但我更喜欢使用苹果公司介绍的方法,它非常简单明了 使用
NSLocalizedString
检查您案例中的金额
例如:
let toast: String
if days == 1 {
toast = NSLocalizedString("Serie.one", comment: "")
}
else {
toast = String(format: NSLocalizedString("Serien.other", comment: ""), days)
}
Localizable.strings包含以下信息:
Serie.one = "Serie";
Serien.other = "Serien %d ";
这正是
在里面
是给你的
所以除了“Localizable.strings”文件之外,您还必须提供
一个带有
该语言的复数规则。就你而言:
可本地化。字符串:
"%ld series" = "%ld Serien";
<plist version="1.0">
<dict>
<key>%ld series</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@series@</string>
<key>series</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld Serie</string>
<key>other</key>
<string>%ld Serien</string>
</dict>
</dict>
</dict>
</plist>
可本地化。字符串信息:
"%ld series" = "%ld Serien";
<plist version="1.0">
<dict>
<key>%ld series</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@series@</string>
<key>series</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld Serie</string>
<key>other</key>
<string>%ld Serien</string>
</dict>
</dict>
</dict>
</plist>
输出:
1 Serie
2 Serien
3 Serien
1级
2丝氨酸
3系列
即使添加了更多具有其他复数规则的语言,也不会有任何更改
在Swift代码中是必需的。这正是
在里面
是给你的
所以除了“Localizable.strings”文件之外,您还必须提供
一个带有
该语言的复数规则。就你而言:
可本地化。字符串:
"%ld series" = "%ld Serien";
<plist version="1.0">
<dict>
<key>%ld series</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@series@</string>
<key>series</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld Serie</string>
<key>other</key>
<string>%ld Serien</string>
</dict>
</dict>
</dict>
</plist>
可本地化。字符串信息:
"%ld series" = "%ld Serien";
<plist version="1.0">
<dict>
<key>%ld series</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@series@</string>
<key>series</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>%ld Serie</string>
<key>other</key>
<string>%ld Serien</string>
</dict>
</dict>
</dict>
</plist>
输出:
1 Serie
2 Serien
3 Serien
1级
2丝氨酸
3系列
即使添加了更多具有其他复数规则的语言,也不会有任何更改
在Swift代码中,这些是必需的