iOS Facebook SDK本地化
我正在尝试更改FBLoginView
button中的文本,但到目前为止我还没有运气。 我试着从FacebookSDK
阅读README并看看互联网。 我在项目本地化添加了2种语言部分,它创build了2个文件在每种语言的支持文件,但我试图改变那里的README (改变string值)的示例内容中的string,但即使我改变了英文文件,我总是得到默认loginstring。 然后,我尝试添加一些Bundle设置,并在那里更改一些文件,但没有运气。 有人能告诉我怎样才能实现改变Facebook的string一步一步? 谢谢
更新:
这里描述的方法不再适用于最新的Facebook SDK。 所以请参考@Erik van der Neut或@Ted给出的答案,并使用SDK附带的包FacebookSDKStrings.bundle进行string覆盖。
我发现到目前为止本地化/更改Facebookstring的唯一方法是在其常见问题解答中描述: https : //developers.facebook.com/docs/ios/troubleshooting/
我所做的就是从Facebook SDK附带的Scrumptious示例项目中复制文件FacebookSDKOverrides.bundle
。 这基本上只是一个包含(可以包含)不同的本地化文件夹的包。 如果要添加德语string, de.lproj
在该包内创build一个de.lproj
文件夹。 这个文件夹应该包含一个文件Localizable.strings
。
您可以在文件FacebookSDKResources.bundle.README
find所有可覆盖string的列表。 你可以在FacebookSDK文件夹中find它:
FacebookSDK.framework/Resources/
或者在这里: https : //github.com/facebook/facebook-ios-sdk/blob/master/src/FacebookSDKResources.bundle.README
例如,要添加loginbutton文本的德语翻译,必须将以下内容添加到de.lproj中的Localizable.strings文件中:
"FBLV:LogInButton" = "Einloggen";
作为最后一步,你必须确保Facebook知道这个包。 因此,您可以将以下内容添加到Info.plist中:
<key>FacebookBundleName</key> <string>FacebookSDKOverrides</string>
或者,如果您想要,也可以在代码中指定:
[FBSettings setResourceBundleName:@"FacebookSDKOverrides"];
这工作对我来说,虽然我想使用我的主包进行覆盖,只是在我的正常的应用程序翻译中指定它们。 这对连接到翻译工具会更方便,因为您不需要翻译每种语言的多个文件。
截至Facebook SDK 4.9
如果您已经下载了Facebook SDK ,那么名为“ FacebookSDKStrings.bundle ”
- 将FacebookSDKStrings.bundle添加到您的项目
- 确保您启用基本内部化 ,如苹果文档中所述。
作为Flo所接受的答案的更新:
对于最新的Facebook SDK,Facebook消息(及其识别密钥)已经完全改变。 例如,“FBLV:LogInButton”键在最新的Fb SDK中不再有效。
因此,我的Facebookstring不再被本地化,直到我意识到这一点,并用https://github.com/facebook/facebook-ios-sdk中的最新FacebookSDKStrings.bundle
(v4.2)replace了我所有的Facebook信息 – – 我只是删除了我的原始FacebookSDKOverrides.bundle
并包含了我的项目中的整个包FacebookSDKStrings.bundle
(包括其中的资源子文件夹),更新了我的项目.plist文件指向它,并与所有的Facebookstring再次本地化。
例如,默认的“login”button标签的消息如下所示:
/* The long label for the FBSDKLoginButton when the user is currently logged out */ "LoginButton.LogInLong" = "Log in with Facebook";
幸运的是,Facebook的GitHub页面现在已经包含了很多语言的这些消息的翻译(在我的情况下,这意味着我不再需要运行这些翻译过去了)。