【问题标题】:iOS Facebook SDK localizationiOS Facebook SDK 本地化
【发布时间】:2014-03-18 10:38:04
【问题描述】:

我正在尝试更改 FBLoginView 按钮中的文本,但到目前为止我还没有运气。我尝试从 FacebookSDK 阅读 README 并查看互联网。我在项目本地化部分添加了 2 种语言,它在每种语言的支持文件中创建了 2 个文件,但我尝试用 README 的示例内容更改其中的字符串(更改字符串值),但即使我更改了英语文件我总是得到默认的登录字符串。 然后我尝试添加一些 Bundle 设置并更改其中的一些文件,但也没有运气。有人可以告诉我如何逐步实现更改 facebook 字符串吗?谢谢

【问题讨论】:

    标签: ios facebook localization


    【解决方案1】:

    更新:

    此处描述的方法不再适用于最新的 Facebook SDK。所以请参考@Erik van der Neut 或@Ted 给出的答案,并使用SDK 附带的捆绑包FacebookSDKStrings.bundle 进行字符串覆盖。


    到目前为止,我发现本地化/更改 Facebook 字符串的唯一方法在他们的常见问题解答中描述:https://developers.facebook.com/docs/ios/troubleshooting/

    我所做的是从 Facebook SDK 附带的 Scrumptious 示例项目中复制文件 FacebookSDKOverrides.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:

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

    或者,如果您愿意,也可以在代码中指定:

    [FBSettings setResourceBundleName:@"FacebookSDKOverrides"];
    

    这对我有用,尽管我想使用我的主包进行覆盖,并在我的正常应用程序翻译中指定它们。这对于连接到翻译工具会更方便,因为您不需要为每种语言翻译多个文件。

    【讨论】:

    • 对于最新的 Fb SDK,Fb 消息密钥完全不同。有关详细信息,请参阅我刚刚发布的另一个答案。
    【解决方案2】:

    Facebook SDK 4.9

    如果您已下载Facebook SDK,则有一个名为“FacebookSDKStrings.bundle”的包

    1. FacebookSDKStrings.bundle 添加到您的项目中
    2. 确保您按照 Apple 文档中的说明enable Base Internalization

    【讨论】:

    【解决方案3】:

    作为对来自 Flo 的已接受答案的更新:

    对于最新的 Facebook SDK,Facebook 消息集(及其识别密钥)已完全改变。例如,“FBLV:LogInButton”键在最新的 Fb SDK 中不再有效。

    因此,我的 Facebook 字符串不再本地化,直到我意识到这一点并将我所有的 Facebook 消息替换为来自 https://github.com/facebook/facebook-ios-sdk 的最新 FacebookSDKStrings.bundle (v4.2) - 我只是删除了我原来的 FacebookSDKOverrides.bundle并将整个捆绑包 FacebookSDKStrings.bundle 原样包含在我的项目中(包括其中的 Resources 子文件夹),更新了我的项目 .plist 文件以指向它,并且所有 Facebook 字符串都再次本地化。

    例如,默认登录按钮标签的消息现在如下所示:

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

    幸运的是,Facebook 的 GitHub 页面现在已经包含了许多语言的这些消息的翻译(在我的情况下,这意味着我不再需要通过我的翻译运行这些消息)。

    【讨论】:

    • updated my project .plist files to point to it 是什么意思?
    【解决方案4】:

    我刚刚将“FacebookSDK.strings”中的所有字符串从您想要的语言文件夹(如 fr.lproj)复制到我的项目 Localizable.strings(法语)...这种方式对我有用...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多