首页 > 解决方案 > 以编程方式更改 Facebook 的语言 IOS

问题描述

事情就是这样:我有一个用于更改应用程序当前语言的按钮。这非常有效,但是我的社交按钮(例如 Google 和 Facebook)不会更改语言 ( GIDSignInButton, FBSDKLoginButton)。我猜他们在 AppDelegate 上获得了我设备的当前语言,但是,我不想搞乱重新启动应用程序或应用程序委托。

有什么推荐吗?我可以以编程方式重新启动 facebook 系统以再次获取该语言吗?

这是我的 setLanguage 方法:

+ (void)setLanguage:(NSString *)language
{
    //if language not supported we default to spanish
    if (language == nil || ![SMLocalizedString isLanguageSupported:language]){
        //defaults to spanish
        language = @"es";
    }

    //Sotres new language setting in user preferences

    [SMLocalizedString updateCurrentLanguage:language];

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        object_setClass([NSBundle mainBundle], [BundleEx class]);
    });



    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:language, nil] forKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    id value = language ? [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]] : nil;
    objc_setAssociatedObject([NSBundle mainBundle], &kBundleKey, value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

标签: iosobjective-cfacebookgoogle-signin

解决方案


推荐阅读