Ios7 iOS 7多元化+;阿拉伯语

Ios7 iOS 7多元化+;阿拉伯语,ios7,string-formatting,arabic,pluralize,Ios7,String Formatting,Arabic,Pluralize,基本问题是以下几行: [NSString stringWithFormat:@"باقي للشراء %d", 3]; 返回格式为“3阿拉伯文”的字符串 当我写一行时: [NSString stringWithFormat:@"%d باقي للشراء "]; 再次返回格式为“3阿拉伯文本”的字符串 当我写一个字符串时,创建如下字符串: NSString *digitThree = @"3"; NSString *expressionString = [NSString stringW

基本问题是以下几行:

[NSString stringWithFormat:@"باقي للشراء %d", 3];
返回格式为“3阿拉伯文”的字符串

当我写一行时:

[NSString stringWithFormat:@"%d باقي للشراء "];
再次返回格式为“3阿拉伯文本”的字符串

当我写一个字符串时,创建如下字符串:

NSString *digitThree = @"3";
NSString *expressionString = [NSString stringWithFormat:@"باقي للشراء %@", digitThree];
NSString *someChar = @"d";
NSString *expressionString = [NSString stringWithFormat:@"باقي للشراء %@", someChar];
expressionString
的值变成一个具有“3阿拉伯文本”形式的字符串

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

NSString *digitThree = @"3";
NSString *expressionString = [NSString stringWithFormat:@"باقي للشراء %@", digitThree];
NSString *someChar = @"d";
NSString *expressionString = [NSString stringWithFormat:@"باقي للشراء %@", someChar];
expressionString
的值变成一个具有“阿拉伯语文本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>
但我无法让这个调用返回“阿拉伯文文本1”,它总是返回“1阿拉伯文文本”

编辑:

谢谢你,霍拉克斯

起初,你的回答似乎没有什么用处。但现在我明白了。 有几件事把我弄糊涂了

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

2) 当文本包含阿拉伯字符和数字组合时,UILabel将内容包装成多行的方式。具体而言,就我而言,我有:

“1234567890128赎回代码”,包装为:

“123456789012


阿拉伯语文本8“

通常,在
本地化.string
文件中,您可以播放实际的翻译,如:

e、 g.英文:

然后用另一种语言:

"%d day" = "<expiration in days>: %d"
<key>other</key>
<string>%d أيام</string>