iOS Facebook SDK 本地化

4
我试图改变FBLoginView按钮中的文本,但迄今为止没有成功。我尝试阅读来自FacebookSDKREADME并在互联网上搜索。我在项目本地化部分添加了两种语言,它会为每种语言创建两个支持文件,但我尝试使用README的示例内容(更改字符串值)更改那里的字符串,但即使我更改英文文件,我仍然得到默认的登录字符串。 然后我尝试添加一些Bundle设置和更改其中的一些文件,但仍然没有运气。有人能告诉我如何逐步实现更改facebook字符串吗?谢谢
4个回答

13

更新:

本文介绍的方法已经不适用于最新的Facebook SDK。请参考@Erik van der Neut或@Ted提供的答案,并使用随SDK一起发布的bundleFacebookSDKStrings.bundle进行字符串覆盖。


到目前为止,我找到的唯一本地化/更改Facebook字符串的方法在他们的FAQ中有描述:https://developers.facebook.com/docs/ios/troubleshooting/

我的做法是从Facebook SDK附带的Scrumptious示例项目中复制 FacebookSDKOverrides.bundle 文件。它基本上只是一个包含(可以包含)不同本地化文件夹的软件包。如果您想添加德语字符串,则应在bundle中创建一个名为de.lproj的文件夹。此文件夹应包含一个名为Localizable.strings的文件。

您可以在文件FacebookSDKResources.bundle.README中找到所有可重写字符串的列表。您可以在FacebookSDK文件夹中找到它:

FacebookSDK.framework/Resources/

或者在这里:https://github.com/facebook/facebook-ios-sdk/blob/master/src/FacebookSDKResources.bundle.README

例如,要添加登录按钮文本的德语翻译,您需要将以下内容添加到de.lproj文件夹中的Localizable.strings文件中:

"FBLV:LogInButton" = "Einloggen";
作为最后一步,你需要确保Facebook知道这个捆绑包的存在。因此,你可以将以下内容添加到你的Info.plist文件中:

作为最后一步,您需要确保 Facebook 知道该捆绑包的存在。因此,您可以将以下内容添加到 Info.plist 文件中:

<key>FacebookBundleName</key>
<string>FacebookSDKOverrides</string> 

如果您希望的话,您也可以在代码中指定这个:

[FBSettings setResourceBundleName:@"FacebookSDKOverrides"];

这对我起了作用,尽管我想使用我的主包进行覆盖,并仅在我的普通应用翻译中指定它们。这对于连接翻译工具更方便,因为您不需要为每种语言翻译多个文件。


对于最新的Fb SDK,Fb消息键完全不同。详情请参见我刚刚发布的另一个答案。 - Erik van der Neut

4

1
请确保您正在使用SDK的最新版本。我在“继续使用Facebook”按钮的本地化方面遇到了问题。这个问题已经在4.24.0版本中得到了修复,您可以在此处查看:https://developers.facebook.com/docs/ios/change-log-4x#4_24_0 - ghashi

3
作为对Flo在此处接受的答案的更新:
对于最新的Facebook SDK,Facebook消息集(及其识别键)已完全更改。例如,在最新的Fb SDK中,“FBLV:LogInButton”键不再有效。
因此,我的Facebook字符串不再被本地化,直到我意识到这一点,并用https://github.com/facebook/facebook-ios-sdk中最新的FacebookSDKStrings.bundle(v4.2)替换了所有的Facebook消息 - 我只是删除了原始的FacebookSDKOverrides.bundle并将整个bundle FacebookSDKStrings.bundle包括其中的资源子文件夹放入我的项目中,更新了我的项目.plist文件指向它,这样所有的Facebook字符串就再次被本地化了。
例如,默认登录按钮标签的消息现在看起来像这样:
/* The long label for the FBSDKLoginButton when the user is currently logged out */
"LoginButton.LogInLong" = "Log in with Facebook";

幸运的是,Facebook的GitHub页面已经包含了这些消息的许多语言的翻译(在我的情况下,这意味着我不再需要将这些消息传递给我的翻译人员)。

你所说的“更新我的项目.plist文件指向它”,是什么意思? - Okan Kocyigit

0

我只是从你想要的语言文件夹(如fr.lproj)中复制了“FacebookSDK.strings”中的所有字符串到我的项目Localizable.strings(法语)中...这种方法对我有效...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接