iOS(以及 Mac OS .. 和 NextStep)都使用相同的基本技巧来本地化文件:可本地化的资产被放置在一个以文件对应的语言变体命名的后缀为 .lproj 的文件夹中。例如,如果您的开发系统设置为英语,则此文件夹称为 en.lproj。其他语言和本地化变体遵循相同的形式:es.lproj(西班牙语)、zh-Hant.lproj(繁体中文)、zh-Hans(简体中文)、en-GB(英式英语)等。注意变体使用' -' 并不是 '_'!。
XCode 试图通过隐藏这些文件位于 .lproj 文件夹中的事实来提供帮助。某些文件是在 en.lproj 中自然为您创建的,例如 Info-plist.strings 和 Localizable.strings。通常,要为您的项目添加新的本地化,您可以选择有问题的文件,在文件检查器中查看其信息,找到本地化部分,点击加号,然后选择一种语言,然后文件将被复制进入适当的 .lproj 文件夹。这在大多数情况下适用于单个文件。但是,经过多次试验,我发现以相同的方式添加文件夹不起作用,XCode 会感到困惑。我喜欢将大量资产放在一个文件夹中,而不是单独添加它们,这样我可以更轻松地找到它们!这是我为您的项目添加本地化文件夹的技术:
- 在 en.lproj 中创建文件夹以开始
- 使用项目导航器(“添加文件”)将文件夹添加到构建中。确保选择“为任何添加的文件夹创建文件夹引用”,最重要的是,不要选中“将项目复制到目标组的文件夹”。
- 如果您还没有其他 .lproj 文件夹,您可以通过本地化 Info-plist.strings 来制作它们,如上所述。
- 将文件夹从 en.lproj 复制到彼此的 .lproj 文件夹
- 通过项目导航器添加每个文件夹。
我发现其他方法,例如选择文件夹并在文件检查器中使用本地化系统,往往会将新文件夹放在层次结构的错误部分,只复制一些文件夹内容,并且通常会造成严重破坏。并且“复制到...文件夹”按钮尤其具有误导性。
即使在执行了这些步骤之后,您也可能需要通过转到目标的构建阶段选项卡并单击“验证设置”来清理构建脚本。让它为你清理列表,以防有骗子。您可能还想在 Info.plist 中添加本地化键,我认为这会提示 iOS 或 MacOS 这些 .lproj 文件可用。
所以 - 这不是一个真正的问题,而是 StackOverflow 社区需要阅读的答案。如果我能再把它简化一点,我会提交一份雷达报告。我真正想要的是让 XCode 停止在其界面中隐藏文件位于 .lproj 中的事实。