Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Base.lproj何时使用?_Ios_Xcode_Swift - Fatal编程技术网

Ios Base.lproj何时使用?

Ios Base.lproj何时使用?,ios,xcode,swift,Ios,Xcode,Swift,我正在努力理解Base.lproj,但我仍然不理解它。如果我在XCode 6 beta 4中创建一个带有视图控制器和Swift+情节提要的新简单项目,我会从包含情节提要文件的框中取出一个Base.lproj文件夹 然后我在我的视图控制器中添加一个simpelNSLocalizedString(…),用于测试目的。这需要一个可本地化的.strings文件。当我创建一个时,我应该将其添加到Base.lproj中,还是应该将其添加到特定的语言文件夹中 如果我将Info.plist中的Localizat

我正在努力理解Base.lproj,但我仍然不理解它。如果我在XCode 6 beta 4中创建一个带有视图控制器和Swift+情节提要的新简单项目,我会从包含情节提要文件的框中取出一个Base.lproj文件夹

然后我在我的视图控制器中添加一个simpel
NSLocalizedString(…)
,用于测试目的。这需要一个可本地化的.strings文件。当我创建一个时,我应该将其添加到Base.lproj中,还是应该将其添加到特定的语言文件夹中

如果我将Info.plist中的
Localization native development region
键更改为
de
(德语)并且
de.lproj
文件夹中的
de
没有Localizable.strings文件,那么如果在那里找到Localizable.strings文件,它似乎会退回到
Base.lproj
。但是,如果我在
de.lproj
文件夹中添加可本地化的.strings文件,但不添加属性(key+value),则应用程序在运行时会失败。似乎未搜索到
Base.lproj


我不明白是哪种语言
Base
以及何时使用?是否仅用于情节提要文件?

我的印象是,base.lproj用于当前语言/本地化文件没有属性键的情况。例如,如果我有Main_Title=“Title Text”;在base.lproj中,而在en.lproj中不存在当前语言为英语时,我假设iOS会在base.lproj中找到它,但事实并非如此

你的初步结论是正确的:

  • Base仅在localizable.strings中不支持该语言时使用
  • 当设备/应用程序使用特定语言localizable.strings文件夹时,将使用该文件夹
  • 如果您不支持某一语言中的特定文件/字符串键,并且您有该语言的文件夹,它将抛出运行时警告

  • 对于故事板文件和XIB,如果您只有包含视图的base.lproj文件夹,不管您支持多少种语言,它都不会失败(这也是我正在做的)

    需要记住的一点是,某些本地化与英语(例如芬兰语、日语、克林贡语(最后一种是tier 4语言))非常不同,因此您的LaunchScreen、Main和所有其他故事板或XIB可能需要重新排列以适应它们。例如,希伯来语和阿拉伯语通常需要从右到左进行镜像,而芬兰语的单词非常长,可能会占据更多的空间,并改变利润的布局。那种事。这就是为什么lproj文件中可以包含的不仅仅是字符串。