什么时候使用Base.lproj?

Luc*_*uke 12 xcode ios swift

我想了解Base.lproj,但我还没有理解它.如果我在XCode 6 beta 4中使用视图控制器和Swift + Storyboard创建一个新的简单项目,我会得到一个包含storyboard文件的开箱即用的Base.lproj文件夹.

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

如果我将Localization native development regionInfo.plist中的密钥更改de为德语,并且我dede.lproj文件夹中没有Localizable.strings文件,Base.lproj如果在那里找到Localizable.strings文件,它似乎会回退.但是,如果我在de.lproj文件夹中添加Localizable.strings文件但不添加属性(键+值),则应用程序在运行时会失败.好像Base.lproj没有被搜查过.

我不明白使用哪种语言Base以及何时使用?它只适用于Storyboard文件吗?

Sha*_*anK 2

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

你的初步结论是正确的:

  1. 仅当您在 localized.strings 中不支持该语言时才使用 Base
  2. 当设备/应用程序使用该语言时,将使用特定语言的 localized.strings 文件夹
  3. 如果您不提供对某种语言中特定文件/字符串键的支持,并且您有该语言的文件夹,它将引发运行时警告

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

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