FBSDKLikeControl title text not changing respect to device locale FBSDK ios
Asked Answered
P

2

9

I have implemented the FBSDKLikeControl in my project and my expectations is 'like' and 'liked' text change to respected device locale(ar-AE). But locale is not changed as expected, it simply show the English text not arabic text for 'like' and 'liked'.

self.buttonFBLike = [[FBSDKLikeControl alloc] init];
self.buttonFBLike.center=self.view.center;
self.buttonFBLike.likeControlStyle=FBSDKLikeControlStyleBoxCount;
[self.view addSubview:self.buttonFBLike]
// Share url like @"https://www.facebook.com/FacebookDevelopers"
[self.buttonFBLike setObjectID:shareURL];
self.buttonFBLike.enabled=YES;
[self.buttonFBLike isTouchInside];

can any one suggest how can I set the locale for FBLikeButton programatically

Pannikin answered 30/8, 2016 at 13:59 Comment(1)
can you show your codeLimiter
D
1

Your coding part is correct,Added optional FacebookSDKStrings.bundle to provide localized strings for international apps, so you need to include the FacebookSDKStrings.bundle to your project and it works as expected for me,

The following are in FacebookSDKStrings.bundle en.lproj(FacebookSDK.string), so once you add this bundle it will automatically changes the locale based on the device language for share and like button

 /* The format string for device login instructions */
"DeviceLogin.LogInPrompt" = "Visit %@ on your smartphone or computer and enter the above code.";

/* The title of the label to dismiss the alert when presenting user facing error messages */
"ErrorRecovery.Alert.OK" = "OK";

/* The title of the label to decline attempting error recovery */
"ErrorRecovery.Cancel" = "Cancel";

/* The fallback message to display to recover invalidated tokens */
"ErrorRecovery.Login.Suggestion" = "Please log into this app again to reconnect your Facebook account.";

/* The title of the label to start attempting error recovery */
"ErrorRecovery.OK" = "OK";

/* The fallback message to display to retry transient errors */
"ErrorRecovery.Transient.Suggestion" = "The server is temporarily busy, please try again.";

/* The label for the FBSDKLikeButton when the object is not currently liked. */
"LikeButton.Like" = "Like";

/* The label for the FBSDKLikeButton when the object is currently liked. */
"LikeButton.Liked" = "Liked";

/* The label for the FBSDKLoginButton action sheet to cancel logging out */
"LoginButton.CancelLogout" = "Cancel";

/* The label for the FBSDKLoginButton action sheet to confirm logging out */
"LoginButton.ConfirmLogOut" = "Log Out";

/* The fallback string for the FBSDKLoginButton label when the user name is not available yet */
"LoginButton.LoggedIn" = "Logged in using Facebook";

/* The format string for the FBSDKLoginButton label when the user is logged in */
"LoginButton.LoggedInAs" = "Logged in as %@";

/* The short label for the FBSDKLoginButton when the user is currently logged out */
"LoginButton.LogIn" = "Log in";

/* The long label for the FBSDKLoginButton when the user is currently logged out */
"LoginButton.LogInLong" = "Log in with Facebook";

/* The label for the FBSDKLoginButton when the user is currently logged in */
"LoginButton.LogOut" = "Log out";

/* The user facing error message when the app slider has been disabled and login fails. */
"LoginError.SystemAccount.Disabled" = "Access has not been granted to the Facebook account. Verify device settings.";

/* The user facing error message when the Accounts framework encounters a network error. */
"LoginError.SystemAccount.Network" = "Unable to connect to Facebook. Check your network connection and try again.";

/* The user facing error message when the device Facebook account password is incorrect and login fails. */
"LoginError.SystemAccount.PasswordChange" = "Your Facebook password has changed. To confirm your password, open Settings > Facebook and tap your name.";

/* The user facing error message when the device Facebook account is unavailable and login fails. */
"LoginError.SystemAccount.Unavailable" = "The Facebook account has not been configured on the device.";

/* The user facing error message when the Facebook account signed in to the Accounts framework becomes unconfirmed. */
"LoginError.SystemAccount.UnconfirmedUser" = "Your account is not confirmed. Please log in to www.facebook.com and follow the instructions given.";

/* The user facing error message when the Facebook account signed in to the Accounts framework has been checkpointed. */
"LoginError.SystemAccount.UserCheckpointed" = "You cannot log in to apps at this time. Please log in to www.facebook.com and follow the instructions given.";

/* The message of the FBSDKLoginTooltipView */
"LoginTooltip.Message" = "New! You're in control - choose what info you want to share with apps.";

/* Title of the web dialog that prompts the user to log in to Facebook. */
"LoginWeb.LogInTitle" = "Log In";

/* The label for FBSDKSendButton */
"SendButton.Send" = "Send";

/* The label for FBSDKShareButton */
"ShareButton.Share" = "Share";

Refer: Facebook change log for more details

Stack overflow link have more info

Decencies answered 11/10, 2016 at 9:53 Comment(1)
Yes you are right @balakrishnan Mac, Change log clearly mentioned its optional, so we need to add this to project bundle, whether the app using international local, now its working as expected,thanks à lotPannikin
N
2

Here are some indications on how to implement your own translation :

iOS Facebook SDK localization

After searching here : https://developers.facebook.com/docs/internationalization#locales

You can find the Facebook XML file containing locale information (https://www.facebook.com/translations/FacebookLocales.xml)

It turns out that they use ar_AR only for arabic, and not ar_AE, that might be the reason.

Nissie answered 8/9, 2016 at 14:3 Comment(3)
Your stack overflow Link in last Line have this answer, but i thougt its FBSDK localization link and I skiped it previosly thanks a lotPannikin
yes you are right @manobala, I am also have same thought its FB developer page link, if I noticed before i could edited this answer or just post change log link, good work yann kaiser, keep it up :)Decencies
can suggest how can I set the locale for FBLikeButton programaticallyPannikin
D
1

Your coding part is correct,Added optional FacebookSDKStrings.bundle to provide localized strings for international apps, so you need to include the FacebookSDKStrings.bundle to your project and it works as expected for me,

The following are in FacebookSDKStrings.bundle en.lproj(FacebookSDK.string), so once you add this bundle it will automatically changes the locale based on the device language for share and like button

 /* The format string for device login instructions */
"DeviceLogin.LogInPrompt" = "Visit %@ on your smartphone or computer and enter the above code.";

/* The title of the label to dismiss the alert when presenting user facing error messages */
"ErrorRecovery.Alert.OK" = "OK";

/* The title of the label to decline attempting error recovery */
"ErrorRecovery.Cancel" = "Cancel";

/* The fallback message to display to recover invalidated tokens */
"ErrorRecovery.Login.Suggestion" = "Please log into this app again to reconnect your Facebook account.";

/* The title of the label to start attempting error recovery */
"ErrorRecovery.OK" = "OK";

/* The fallback message to display to retry transient errors */
"ErrorRecovery.Transient.Suggestion" = "The server is temporarily busy, please try again.";

/* The label for the FBSDKLikeButton when the object is not currently liked. */
"LikeButton.Like" = "Like";

/* The label for the FBSDKLikeButton when the object is currently liked. */
"LikeButton.Liked" = "Liked";

/* The label for the FBSDKLoginButton action sheet to cancel logging out */
"LoginButton.CancelLogout" = "Cancel";

/* The label for the FBSDKLoginButton action sheet to confirm logging out */
"LoginButton.ConfirmLogOut" = "Log Out";

/* The fallback string for the FBSDKLoginButton label when the user name is not available yet */
"LoginButton.LoggedIn" = "Logged in using Facebook";

/* The format string for the FBSDKLoginButton label when the user is logged in */
"LoginButton.LoggedInAs" = "Logged in as %@";

/* The short label for the FBSDKLoginButton when the user is currently logged out */
"LoginButton.LogIn" = "Log in";

/* The long label for the FBSDKLoginButton when the user is currently logged out */
"LoginButton.LogInLong" = "Log in with Facebook";

/* The label for the FBSDKLoginButton when the user is currently logged in */
"LoginButton.LogOut" = "Log out";

/* The user facing error message when the app slider has been disabled and login fails. */
"LoginError.SystemAccount.Disabled" = "Access has not been granted to the Facebook account. Verify device settings.";

/* The user facing error message when the Accounts framework encounters a network error. */
"LoginError.SystemAccount.Network" = "Unable to connect to Facebook. Check your network connection and try again.";

/* The user facing error message when the device Facebook account password is incorrect and login fails. */
"LoginError.SystemAccount.PasswordChange" = "Your Facebook password has changed. To confirm your password, open Settings > Facebook and tap your name.";

/* The user facing error message when the device Facebook account is unavailable and login fails. */
"LoginError.SystemAccount.Unavailable" = "The Facebook account has not been configured on the device.";

/* The user facing error message when the Facebook account signed in to the Accounts framework becomes unconfirmed. */
"LoginError.SystemAccount.UnconfirmedUser" = "Your account is not confirmed. Please log in to www.facebook.com and follow the instructions given.";

/* The user facing error message when the Facebook account signed in to the Accounts framework has been checkpointed. */
"LoginError.SystemAccount.UserCheckpointed" = "You cannot log in to apps at this time. Please log in to www.facebook.com and follow the instructions given.";

/* The message of the FBSDKLoginTooltipView */
"LoginTooltip.Message" = "New! You're in control - choose what info you want to share with apps.";

/* Title of the web dialog that prompts the user to log in to Facebook. */
"LoginWeb.LogInTitle" = "Log In";

/* The label for FBSDKSendButton */
"SendButton.Send" = "Send";

/* The label for FBSDKShareButton */
"ShareButton.Share" = "Share";

Refer: Facebook change log for more details

Stack overflow link have more info

Decencies answered 11/10, 2016 at 9:53 Comment(1)
Yes you are right @balakrishnan Mac, Change log clearly mentioned its optional, so we need to add this to project bundle, whether the app using international local, now its working as expected,thanks à lotPannikin

© 2022 - 2024 — McMap. All rights reserved.