ios - Xcode 本地化 : Base concept without redundancy

标签 ios swift xcode macos localization

我对 Xcode 中本地化的实现有点困惑。我知道通过创建适当的 XY.Iproj 文件夹并向其中插入 .strings 和 Localizable.strings 文件,我可以提供任意多种语言。这一切都通过 Xcode 自动发生。

不幸的是,我在理解基本概念时遇到了问题。据我所知,到目前为止,开发语言将在那里使用。就我而言,这是英语,所以我应该直接用英语在 Storyboard和 XIB 文件中编写文本吗?例如,设置页面的标题(标签)内容为“设置”?

但是为什么我还有翻译成英文的 .strings 文件?这将是多余的,因为我已经直接在 Base 文件中输入了英文文本,并且 .strings 文件再次包含相同的文本。

或者 Storyboard 和 XIB 文件是否应该仅将“settings_page_headline”之类的标识符作为标签内容?但这是无稽之谈,因为这些标签没有任何用处......

或者,如果我已经在 Storyboard和 XIB 文件中插入了英文内容,我可以完全删除英文翻译的 .strings 吗?

希望您能给我一点启发。当然我已经阅读了Apple的文档,那里我的理解问题没有讨论到我需要理解的程度。

Main.storyboard(基础)和Main.strings(英语)包含相同的内容:

Main.storyboard and Main.strings (English) contain the same content

Main.storyboard(基础)的内容: Content of the Main.storyboard (Base)

Main.strings 的内容(英文):

"tos-eB-aJc.title" = "Send Feedback";
"S56-oM-eis.title" = "Rate this App";

最佳答案

摘自苹果文档: Xcode 在您的项目文件夹中创建一个 Base.lproj 文件夹,并向其中添加您选择的资源文件。 Xcode 为开发语言创建一个语言文件夹,但仅将需要翻译的资源添加到该文件夹​​中。例如,如果您选择英语作为开发语言,Xcode 会将资源文件插入 Base.lproj 项目文件夹中,而不是 en.lproj 文件夹中,因为该资源已经是英语的。 链接:InternationalizingYourUserInterface

据我了解,这样做是为了优化本地化文件的导入。您也无法本地化某些 .xib 。如果您想了解本地化文件的加载方式、逻辑和顺序,请阅读 Apple 的此文档:LocalizingYourApp

关于ios - Xcode 本地化 : Base concept without redundancy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60188996/

相关文章:

ios - Xcode 不会建议、自动完成或连接

ios - 从另一个 View Controller 导航栏加载 View Controller 的 UIWebView 中的请求 url

ios - TesseractOCR BAD_ACCESS

ios - 将 UIGestureRecognizer 添加到自定义 drawRect 或 UIBezierPath

ios - UISwipeGestureRecognizer 抛出无法识别的选择器发送错误

ios - AVSpeechSynthesizer 只工作一次

ios - 在 Vimeo 上,如果您的视频不是直播,使用 "HTTP Live Streaming"视频文件链接是否有意义?

ios - 如何在字典数组中的内部数组上应用过滤器?

ios - 如何弹出初始 View Controller

ios - AppDelegate 中的本地通知问题