【问题标题】:I deleted the Localizations in Xcode, then I cannot add any Localizations back我删除了 Xcode 中的本地化,然后我无法添加任何本地化
【发布时间】:2012-09-27 14:32:58
【问题描述】:

我错误地从项目信息中删除了项目的本地化。故事板和相关语言均已删除。

我从以前的文件中取回了故事板,但是当我想添加新的本地化时,弹出一个窗口并要求我“选择文件和参考语言以创建英语本地化”并且有根本没有资源文件。

如何添加本地化?

【问题讨论】:

  • 您找到解决方案了吗?我今天遇到了完全相同的问题,不得不使用 git 来救我:)
  • @LasseChristiansen-sw_lasse 检查我的答案。
  • 我遇到了一些问题,希望对您有所帮助:stackoverflow.com/questions/25948181/…

标签: ios xcode localization


【解决方案1】:

添加本地化

当您删除本地化时,有时您会遇到无法在 Xcode 中添加回任何本地化的情况。转到命令行并在项目中的某处创建一个带有 lproj 扩展名的 ISO 639-1 two-letter language abbreviation 文件夹。

创建一个空的语言文件夹

例如:

${SRCROOT}/Resources/Translations/nb.lproj

${SRCROOT}/Resources/Translations/en.lproj

将语言文件重新添加到项目中

在文件夹中创建一个名为Localizable.strings 的空文件并将此文件添加到您的项目中。不要添加.lproj 文件夹,只添加内容。然后,当您返回项目文件时,您将在本地化下看到该语言。现在,当您添加此内容时,您应该会在项目中看到本地化。

没有复选框

如果添加的文件(如情节提要)旁边没有复选框,表明这是该语言本地化的一部分,您可能需要通过另一种语言来回传输它们。为此,请在项目中添加一种新语言。它应该提示您将现有的本地化文件复制到新语言。然后删除损坏的本地化并重新添加。

我的例子

作为一个具体的例子,我将 nb.lproj 目录中的故事板添加到项目中。挪威语 Bokmål 出现在项目中,但情节提要检查器中的语言复选框不允许我添加它。我在项目中创建了 nb_NO,它提示我复制故事板。然后故事板选中了该复选框。我删除了“nb”本地化并重新添加了它。现在一切都如我所愿。

【讨论】:

  • 完美运行!为什么这不是公认的答案?啊,这是你自己的答案。无论如何不要忘记标记为已接受;)
  • 你是个天才。
【解决方案2】:

我不得不解决同样的问题,并找到了一个解决方案:

您需要在查找器中找到您的 *.xcodeproj 文件并将其作为容器打开(ctrl+单击它,您将在上下文菜单中看到它)

在这里你可以看到 project.pbxproj 文件,在 Xcode 中打开它。它的大(但仍然可读的文件)。 (在开始之前,最好在保存点复制一些副本)

现在的任务是将缺少的语言添加到此文件中,并且已完成。(您可以在其他具有本地化的项目上尝试)。

您需要添加一个段落。在这个文件中搜索这个/* End PBXSourcesBuildPhase section */(它的段落就在缺少本地化段落之前的段落)并在之后添加类似这样的内容:

/* Begin PBXVariantGroup section */
        27548D921611B0BE008EA1CD /* Localizable.strings */ = {
            isa = PBXVariantGroup;
            children = (
                27548D941611B0BE008EA1CD /* en */,
            );
            name = Localizable.strings;
            path = ../Code;
            sourceTree = "<group>";
        };
/* End PBXVariantGroup section */

您必须先进行一些更改。查看长号27548D921611B0BE008EA1CD,它的本地化文件ID(或一些xib文件,或其他可本地化文件......),如果您在项目中没有,只需在项目中添加一些Localizable.string文件,重新打开(或刷新)这个 project.pbxpro,然后找到这个 Localizable.string 你应该会找到类似这样的内容:

275490591611B0BE008EA1CD /* Localizable.strings in Resources */

这就是您需要在本地化段落中替换的内容

您还需要对路径参数和 sourceTree 进行正确设置。这两个在 xcode 的文件检查器中是可读的。

“sourceTree”参数是位置 - 主要是相对于组,所以sourceTree = "&lt;group&gt;";

路径是从组到文件的相对路径(如果您不知道,请尝试在不同的项目中制作一些本地化文件并查看 project.pbxpro,所有这些都是什么工作)

在此之后您可以保存 project.pbxpro,您应该会在 xcode 信息部分中看到“en”本地化,您可以添加更多本地化和所有其他本地化内容。

【讨论】:

  • 试过这个,但它损坏了我的 pbxproj。即使从 git 恢复后,列表仍然是空的。有什么想法吗?
  • @Ninja 我的解决方案无需修改项目文件即可完成工作。
  • 在 Xcode 中创建一个测试项目。然后转到该项目的 finder 文件夹,并复制 en.lproj 文件夹。将其粘贴到您的项目文件夹中。并从 Xcode 添加“InfoPlist.strings”。现在,当您添加本地化时,您将能够选择此文件。
【解决方案3】:

在 xcode 6 中,执行以下操作:

  1. 使用命令行,在项目目录之外的某处创建以下目录/文件结构:

    • /en.lproj/InfoPlist.strings

    • /en.lproj/Localizable.strings

  2. 在 Xcode 中,打开您的项目并选择 File>Add Files to ProjectName 以添加最近创建的 en.lproj 目录。

  3. 之后,您会在 Localizations 列表中看到英语。

【讨论】:

    【解决方案4】:

    这是一个老话题,但是在遇到这个问题之后,然后尝试了解决方案(并且让它无法正常工作),我想我会详细说明 DID 的工作原理。

    像原始海报一样,我不小心删除了所有本地化,并且在 Xcode 中没有明显的追索权——在 Info 下的项目设置中,它只是说“这个项目尚未本地化”,当我点击加号时按钮下方,会显示一个空白的资源文件列表。

    我遵循@Cameron 的指南,但发现带有 Localizable.strings 文件的语言文件夹已经存在于 Finder 中,但 Xcode 并未确认。我无法决定如何继续,但我碰巧看到一条关于将文件添加到 Xcode 的无关评论,所以我尝试添加现有的 en.lproj 文件夹及其 Localizable.strings 文件。

    这行得通,并且作为开发语言的英语列表也出现在 Info 下。

    希望这会对遇到同样问题的人有所帮助!

    【讨论】:

    • 这是我回答的部分内容:)
    【解决方案5】:

    只需在 finder 中创建一个文件夹“Base.lproj”,然后将要本地化的 Xib 粘贴到其中,然后将此文件夹添加到您的项目中。现在您可以毫无问题地添加其他语言。

    【讨论】:

      【解决方案6】:

      我遵循了@user2070775 回复的类似方法。

      Firstyl 当您删除 StoryboardLaunchscreen 以以编程方式使用您自己的创建或代码时,在本地化中您可能会在以下空白屏幕中看到类似的情况。

      那么首先你应该知道语言代码例如使用法语本地化它的fr

      对于项目导航器中的项目文件夹,您必须添加New Group -&gt; {LANGUAGE_CODE}.lproj。然后你应该添加New File -&gt; Strings File -&gt; Localizable.strings。在@user2070775 答案中,还添加了InfoPlist.strings 文件,所以我现在也添加了。

      在 Localizable.strings 文件中,您可以将 &lt;KEY&gt; = &lt;VALUE&gt; 对添加到本地化字符串。

      我们的配对现在是"this-is-key" = "and-this-is-value-for-spesific-language-on-localizable-string";

      提示:在键值对中,当我没有放分号时,XCode 在这种情况下会出错。

      到现在为止,下面的项目方案,一定是你的成果。

      另外,当您查看Project -&gt; Info -&gt; Localizations 时,必须添加French 或其他语言,如下图所示。

      测试

      基本上你可以得到你做了什么的结果

      其余部分可以从模拟器中设置。您必须更改模拟器语言,此答案正确的是法语。

      转到Settings -&gt; General -&gt; Language &amp; Region -&gt; French 并再次运行该项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-20
        • 1970-01-01
        • 1970-01-01
        • 2016-09-11
        • 2013-10-07
        • 1970-01-01
        • 2011-06-29
        • 2012-07-26
        相关资源
        最近更新 更多