2

基本问题是以下行:

[NSString stringWithFormat:@"باقي للشراء %d", 3];

返回格式为“3 arabic_text ”的字符串。

当我写一行时:

[NSString stringWithFormat:@"%d باقي للشراء "];

再次返回一个格式为“3 arabic text ”的字符串。

当我写一个创建这样的字符串时:

NSString *digitThree = @"3";
NSString *expressionString = [NSString stringWithFormat:@"باقي للشراء %@", digitThree];

expressionString的值变成了“3 个阿拉伯文本”形式的字符串。

但是当我写这样的代码时:

NSString *someChar = @"d";
NSString *expressionString = [NSString stringWithFormat:@"باقي للشراء %@", someChar];

expressionString的值变成了一个形式为“ arabic text d”的字符串。

这种行为可能与阿拉伯字母中接受数字的事实有关,但拉丁字母字符不接受。

我正在使用 iOS7 本地化复数功能(本地化属性列表文件部分 [此处][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 days</key>
    <dict>
        <key>NSStringLocalizedFormatKey</key>
        <string>%1$#@num_days@</string>
        <key>num_days</key>
        <dict>
            <key>NSStringFormatSpecTypeKey</key>
            <string>NSStringPluralRuleType</string>

            <key>NSStringFormatValueTypeKey</key>
            <string>d</string>

            <key>one</key>
            <string>يوم %d</string>

            <key>other</key>
            <string>أيام %d</string>
        </dict>
    </dict>




</dict>
</plist>

从我这样使用的代码中:

[NSString localizedStringWithFormat:NSLocalizedString(@"%d days", @"'%d' denotes the number of days. The expression would, for example, evaluate to: '4 days'"), 1])

但我永远无法得到这个返回“阿拉伯文本1”的调用,它总是返回“1阿拉伯文本”。

编辑:

谢谢你,霍拉克斯。

起初,您的答案似乎没什么用。但现在我明白了。我对几件事感到困惑。

1) 在调试期间使用 NSLog() 并打印 NSString 值。似乎以这种方式打印带有阿拉伯语内容的 NSString 值会以与将它们作为 UILabel 内容放置时的显示方式相反的方向打印它们。

2)当文本涉及阿拉伯字符与数字结合时,UILabel 将内容包装成多行的方式。具体来说,就我而言,我有:

“1234567890128兑换码”,被包装成:

"123456789012

阿拉伯文字8"

4

1 回答 1

1

一般来说,在Localizable.string文件中,您可以播放实际的翻译,例如:

例如英语

"%d day" = "Expiration: %d days";

然后用其他语言

"%d day" = "<expiration in days>: %d"

键是相同的,但值可以将格式化程序保存在不同的位置。


此外,阿拉伯语的方向是RTL,与屏幕上的英语相反LTR,因此您可能需要考虑这一事实并将其计入您的语言文件中,例如:

<key>other</key>
<string>%d أيام</string>
于 2014-07-16T10:48:29.413 回答