我错误地从项目的信息中删除了项目的本地化。故事板和相关语言都被删除了。
我从之前的文件中找回了故事板,但是当我想添加新的本地化时,会弹出一个窗口并要求我“选择文件和参考语言以创建英语本地化”并且根本没有资源文件。
如何添加本地化?
答案 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中,执行以下操作:
使用命令行,在项目目录之外的某处创建以下目录/文件结构:
/en.lproj/InfoPlist.strings
/en.lproj/Localizable.strings
在Xcode中,打开项目并选择文件&gt;将文件添加到ProjectName以添加最近创建的en.lproj目录。
答案 3 :(得分:1)
这是一个古老的话题,但是在遇到这个问题,然后尝试解决方案(并且不能完全正常工作)之后,我想我会详细介绍DID的工作原理。
与原始海报一样,我不小心删除了我的所有本地化,并且在Xcode中没有明显的追索权 - 在Info下的项目设置中,它只是说“这个项目尚未本地化”,而且我点击下面的加号按钮,显示了一个空白的资源文件列表。
我关注了@ Cameron的指南,但发现带有Localizable.strings文件的语言文件夹已存在于Finder中,但未被Xcode承认。我无法决定如何继续,但我碰巧看到一个关于向Xcode添加文件的无关评论,所以我尝试添加现有的en.lproj文件夹及其Localizable.strings文件。
这很有效,并且在Info下也出现了英语作为开发语言的列表。
希望这可以帮助遇到同样问题的人!
答案 4 :(得分:1)
我已经采用了@ user2070775回复的类似方法。
当您删除Storyboard
和Launchscreen
以便以编程方式使用您自己的创建或代码时Firstyl,在本地化时,您可能会在空屏幕后得到类似内容。
然后首先你应该知道语言代码,例如使用法语本地化 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 给出了这种情况的错误。
到目前为止,以下项目方案,必须得到你的结果。
此外,当您查看Project -> Info -> Localizations
时,必须添加French
等语言,如下图所示。
基本上,您可以获得“{3}}
所做的事情的结果。”可以从模拟器设置剩余部分。您必须更改模拟器语言,对于此答案,正确的是法语。
转到Settings -> General -> Language & Region -> French
并再次运行该项目。
答案 5 :(得分:0)
只需在finder中创建一个文件夹“Base.lproj”并粘贴要在其中进行本地化的Xib,然后将此文件夹添加到项目中。现在,您可以毫无问题地添加其他语言。