这已经困扰了好几天了。
我在我的项目中设置了阿拉伯语本地化,并将我的设备语言设置为阿拉伯语。
当我从Xcode运行我的应用程序,并将运行方案选项设置为使用阿拉伯语本地化时,本地化效果很好。
当我在没有Xcode的情况下运行该应用程序时,该应用程序使用英语。
我读过类似问题的答案,但到目前为止,没有一个对我有效。
-
我正在使用
NSLocalizableString(@"login",@"");
从Localizable.strings
文件加载字符串。只要我将Run scheme本地化选项设置为阿拉伯语,这就可以很好地工作。 -
我已尝试卸载该应用程序,清理项目,然后重新安装。现在,该应用程序使用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", @"");
}
我发现了问题所在:
AppDelegate
的application:didFinishLoadingWithOptions:
包含以下代码片段
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@[@"en"] forKey:@"AppleLanguages"];
[defaults synchronize];
这迫使CCD_ 5返回英文值。
这个项目是外包的,我不知道这个片段在那里。
是否调用NSLocalizedString(_:,comment:)
将字符串转换为本地化字符串?
如果你不这样做,那就是它不起作用的原因。