iOS - Hanling 复数名词本地化与 .stringsdict - 不工作
iOS - Hanling plural noun localization with .stringsdict - not working
我正在尝试实施复数规则本地化。即,当参数为 1 时,我期望 "One file...",当参数为 2 时,我期望“2 个文件...”。
我关注了Apple guidelines。但我总是得到复数的结果,即使是 1,即“1 个文件...”。
我创建了一个 Localizable.stringsdict 文件,其中包含以下内容(与苹果指南完全一样)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>%d messages in your inbox</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@messages@ in your inbox</string>
<key>messages</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>one</key>
<string>One message is</string>
<key>other</key>
<string>%d messages are</string>
</dict>
</dict>
</dict>
</plist>
这就是我在代码中使用此键的方式
NSLog(@"%@", [NSString localizedStringWithFormat:NSLocalizedString(@"%d messages in your inbox", @"Message shown for remaining files"), 1]);
调试时,我注意到 Localization.stringsdict
文件被忽略了。当我重新创建它时,一切都开始正常工作。我猜原始文件是用错误的类型创建的:正确的类型应该是 Property List
.
我已经按照您的建议发送了 pull request。
这只是文件名 Localizable.stringsdict
后面跟着一个空格...删除文件名中的空格,一切都会正常进行。无需重新创建文件。
根据initial commit that the author gave,
您可以看到文件名 LocalizationTest/en.lproj/Localizable.stringsdict
后跟一个空格...这就是它损坏的原因。重命名它,一切都会好起来的。
我正在尝试实施复数规则本地化。即,当参数为 1 时,我期望 "One file...",当参数为 2 时,我期望“2 个文件...”。
我关注了Apple guidelines。但我总是得到复数的结果,即使是 1,即“1 个文件...”。
我创建了一个 Localizable.stringsdict 文件,其中包含以下内容(与苹果指南完全一样)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>%d messages in your inbox</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@messages@ in your inbox</string>
<key>messages</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>d</string>
<key>one</key>
<string>One message is</string>
<key>other</key>
<string>%d messages are</string>
</dict>
</dict>
</dict>
</plist>
这就是我在代码中使用此键的方式
NSLog(@"%@", [NSString localizedStringWithFormat:NSLocalizedString(@"%d messages in your inbox", @"Message shown for remaining files"), 1]);
调试时,我注意到 Localization.stringsdict
文件被忽略了。当我重新创建它时,一切都开始正常工作。我猜原始文件是用错误的类型创建的:正确的类型应该是 Property List
.
我已经按照您的建议发送了 pull request。
这只是文件名 Localizable.stringsdict
后面跟着一个空格...删除文件名中的空格,一切都会正常进行。无需重新创建文件。
根据initial commit that the author gave,
您可以看到文件名 LocalizationTest/en.lproj/Localizable.stringsdict
后跟一个空格...这就是它损坏的原因。重命名它,一切都会好起来的。