Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何处理本地化swift中的特殊情况_Ios_Swift_Localization - Fatal编程技术网

Ios 如何处理本地化swift中的特殊情况

Ios 如何处理本地化swift中的特殊情况,ios,swift,localization,Ios,Swift,Localization,我创建了一个Localizable.strings文件,翻译工作正常。但有一种特殊情况,英语中有一个单词表示单数和复数,比如“series”。但在德语中有两个不同的词:一个系列是“Serie”,另外两个系列是“Serien”。我如何处理此类异常 感谢Martin,我是如何做到的,我的本地化名称如下:series=“series”和“Serie”以及series_pural=“series”和“Serien”。然后系统只是在后面寻找一个_复数,如果它存在,那么它会显示它(如果你告诉它你正在本地化的

我创建了一个Localizable.strings文件,翻译工作正常。但有一种特殊情况,英语中有一个单词表示单数和复数,比如“series”。但在德语中有两个不同的词:一个系列是“Serie”,另外两个系列是“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代码中,这些是必需的