追記: 2016/12/15
この記事はFacebook iOS SDK バージョン3.5.3をもとに書かれており、現在では古い情報になっています。
今日時点でのFacebook iOS SDK最新版では、FacebookログインボタンはUIButtonのサブクラスとなっており、テキストの変更は容易になっています。(@mono0926 さんのコメントを参照)
最新版のSDKをご利用の場合は、公式ドキュメントを参照してください。
https://developers.facebook.com/docs/reference/ios/current/class/FBSDKLoginButton/
ドキュメントを見つけられなくてハマッてしまったのでメモ。さっさとSDK付属のサンプルアプリを見ればよかった。。
やりたいのは単純に↓みたいにボタンのテキストを日本語にしたいだけ。
Podfile
platform :ios, '6.1'
pod 'Facebook-iOS-SDK'
で
pod install
した後に、 Info.plist に FacebookAppID を追加。
で、
//
// ViewController.h
// FBSample
//
# import <UIKit/UIKit.h>
# import <FacebookSDK/FacebookSDK.h>
@interface ViewController : UIViewController <FBLoginViewDelegate>
@end
//
// ViewController.m
// FBSample
//
# import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
FBLoginView *loginBtn = [[FBLoginView alloc] initWithFrame:CGRectMake(
self.view.frame.size.width / 2 - 154,
self.view.frame.size.height / 2 - 22,
308,
44)
];
loginBtn.readPermissions = @[@"basic_info"];
loginBtn.delegate = self;
[self.view addSubview:loginBtn];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
@end
のように FBLoginView を追加すると、シングルサインオンボタン(SSOボタン)が表示される。英語テキストで。
英語テキストの方がかっこいいのでまったくもってこのままでいいんだけど、まー仕事だとそうもいかないので、これを日本語テキストに変更する。
[loginBtn.label setText:@"Facebookログイン"];
とかできてもよさそうなのに、そんなメソッドは用意されていなくて、 Settings Bundleを追加してそこで上書かないといけない。
Facebookのサンプルアプリ Scrumptiousから FacebookSDKOverrides.bundle をコピーして Info.plist を編集。
FacebookBundleName に FacebookSDKOverrides を設定する。
コンソールで
cp -r FacebookSDKOverrides.bundle/en.lproj FacebookSDKOverrides.bundle/ja.lproj
あとは FacebookSDKOverrides.bundle/ja.lproj/Localizable.strings を以下のように編集すれば晴れて日本語化される。
/* FBLoginView (aka FBLV) */
"FBLV:LogOutButton" = "ログアウト";
"FBLV:LogInButton" = "Facebookでログイン";
"FBLV:LoggedInAs" = "%@ でログイン中";
"FBLV:LoggedInUsingFacebook" = "Facebookでログインしました";
"FBLV:LogOutAction" = "ログアウト";
"FBLV:CancelAction" = "キャンセル";
Localizations の追加もお忘れなく。