iOS:Localizable.strings不';行不通

iOS:Localizable.strings不';行不通,ios,xcode,localization,Ios,Xcode,Localization,这已经困扰了好几天了 我在我的项目中设置了阿拉伯语本地化,并将设备语言设置为阿拉伯语 当我从Xcode运行我的应用程序,并将RunScheme选项设置为使用阿拉伯语本地化时,本地化工作正常 当我在没有Xcode的情况下运行应用程序时,应用程序使用英语 我读过类似问题的答案,但迄今为止没有一个对我有用 我正在使用NSLocalizableString(@“login”,“@”)从本地化.strings文件加载字符串。只要我将RunScheme本地化选项设置为Arabic,这就可以正常工作 我尝试

这已经困扰了好几天了

我在我的项目中设置了阿拉伯语本地化,并将设备语言设置为阿拉伯语

当我从Xcode运行我的应用程序,并将RunScheme选项设置为使用阿拉伯语本地化时,本地化工作正常

当我在没有Xcode的情况下运行应用程序时,应用程序使用英语

我读过类似问题的答案,但迄今为止没有一个对我有用

  • 我正在使用
    NSLocalizableString(@“login”,“@”)
    本地化.strings
    文件加载字符串。只要我将RunScheme本地化选项设置为Arabic,这就可以正常工作

  • 我尝试卸载应用程序,清理项目,然后重新安装。现在,应用程序使用Localizabe.strings键名而不是阿拉伯语值

  • Localizable.strings文件命名正确,并列在“复制捆绑资源”下

  • Localizable.strings是完美的格式化程序。我已经用plutil验证了这一点

我还能错过什么

例如:

-(void) viewDidLoad
{
    [super viewDidLoad];

    // ...

    [self setupLocalization];
}

-(void) setupLocalization
{
    self.mailAddress.placeholder = NSLocalizedString(@"email_address", @"");
    self.password.placeholder = NSLocalizedString(@"password", @"");
}

您正在调用
NSLocalizedString(:,comment:)
将字符串转换为本地化字符串吗


如果您不这样做,这就是它不起作用的原因。

我发现了问题所在:

AppDelegate
应用程序:didFinishLoadingWithOptions:
包含此代码片段

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@[@"en"] forKey:@"AppleLanguages"];
[defaults synchronize];
其中
NSLocalizedString()
返回英文值


这个项目是外包的,我不知道片段就在那里

您可以向我们展示用于从文件中收集可本地化字符串的代码吗?在实际设备上运行应用程序时,请检查日志中的
[NSLocale currentLocale]
。语言环境可以用国家定义,阿拉伯语有很多组合
语言-国家
(检查)。这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-@Draken,如果OP没有调用NSLocalizedString,那么这就是问题的原因。我没有用这些术语来表达我的答案,但这可能是问题的原因和解决方案,因此我将其作为答案发布。它确实在评论队列中弹出,而且答案的措辞非常糟糕,看起来像是评论而不是答案。只是为了将来要记住的事情