我删除了Xcode中的本地化,然后我无法添加任何本地化

时间:2012-09-27 14:32:58

标签: ios xcode localization

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

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

如何添加本地化?

6 个答案:

答案 0 :(得分:47)

添加本地化

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

创建一个空语言文件夹

例如:

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

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

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

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

没有复选框

如果添加的文件(如故事板)旁边没有复选框,表示该语言本地化的一部分,则可能需要通过另一种语言对其进行四舍五入。为此,请在项目中添加新语言。它应该提示您将现有的本地化文件复制到新语言。然后删除损坏的本地化并重新添加。

我的例子

作为一个具体示例,我将nb.lproj目录中的storyboard添加到项目中。挪威语Bokmål出现在项目中,但故事板检查器中语言的复选框不允许我添加它。我在项目中创建了nb_NO,它促使我复制了故事板。然后故事板检查了该复选框。我删除了'nb'本地化并重新添加了它。现在一切都是我想要的方式。

答案 1 :(得分:4)

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

你需要在finder中找到* .xcodeproj文件并将其打开为容器(ctrl +点击它,你会在上下文菜单中看到它)

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

现在它的任务是将缺少的语言添加到此文件中,并完成它。(U可以在其他项目中使用本地化进行尝试。)

您需要添加段落。在此文件中搜索此/* 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文件,或其他可本地化的文件...),如果在procject中没有任何内容,只需将一些Localizable.string文件添加到项目,重新打开(或刷新)这个project.pbxpro,找到这个Localizable.string你应该找到这样的东西:

275490591611B0BE008EA1CD /* Localizable.strings in Resources */

这就是你需要在本地化段落

中替换的内容

您还需要在路径参数和sourceTree上进行正确的设置。这两个在xcode中的fileinspector中是可读的。

“sourceTree”参数是位置 - 主要是它与组的相对性sourceTree = "<group>";

路径是从组到文件的相对路径(如果您不知道,尝试在不同的项目中创建一些本地化文件,并查看project.pbxpro,这一切都有效)

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

答案 2 :(得分:3)

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

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

    • /en.lproj/InfoPlist.strings

    • /en.lproj/Localizable.strings

  2. 在Xcode中,打开项目并选择文件&gt;将文件添加到ProjectName以添加最近创建的en.lproj目录。

  3. 之后,您将在“本地化”列表中看到英语。

答案 3 :(得分:1)

这是一个古老的话题,但是在遇到这个问题,然后尝试解决方案(并且不能完全正常工作)之后,我想我会详细介绍DID的工作原理。

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

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

这很有效,并且在Info下也出现了英语作为开发语言的列表。

希望这可以帮助遇到同样问题的人!

答案 4 :(得分:1)

我已经采用了@ user2070775回复的类似方法。

当您删除StoryboardLaunchscreen以便以编程方式使用您自己的创建或代码时Firstyl,在本地化时,您可能会在空屏幕后得到类似内容。

enter image description here

然后首先你应该知道语言代码,例如使用法语本地化 fr

使用Project Navigator中的项目文件夹,您必须添加New Group -> {LANGUAGE_CODE}.lproj。然后你应该添加New File -> Strings File -> Localizable.strings。在@ user2070775答案中,还添加了InfoPlist.strings文件,所以我现在也添加了。

在Localizable.strings文件中,您可以为字符串添加<KEY> = <VALUE>对以进行本地化。

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

  

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

到目前为止,以下项目方案,必须得到你的结果。

enter image description here

enter image description here此外,当您查看Project -> Info -> Localizations时,必须添加French等语言,如下图所示。

测试

基本上,您可以获得“{3}}

所做的事情的结果。”

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

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

答案 5 :(得分:0)

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