我的基础国际化故事板是否必须对应所有未本地化语言和字符串的回退语言?

10

我查看了苹果开发者文档和视频,但是没有找到明确的答案。在苹果的教程中,我看到了 Base.lproj 文件夹和 en.lprojzh.lproj 并排存在 -- 这个示例翻译(本地化)是从英文到中文。但他们告诉我有个文件 en.lproj/myStoryboard.strings,这令人困惑。我看不出为故事板(已经是英语的)创建英语本地化的意义所在。

  1. 那么我的问题是用户会在 Base.lproj/myStoryboard.storyboard 中看到字符串吗?
  2. 该文件中的字符串是否必须是默认字符串,如果系统无法在我的包中找到用户首选语言文件夹,则显示给用户?
  3. 我能明确地说“永远不要使用 Base.lproj/myStoryboard.storyboard,而应该始终回退到 en.lproj/myStoryboard.strings”吗?

换句话说:
假设我希望我的应用程序在用户的语言不可用时显示为英语,但我的 Base.lproj/myStoryboard.storyboard 是瑞典语。那么我是否必须将基础故事板本地化为 sv.lproj/myStoryboard.strings 并将基础故事板中的所有字符串翻译成英语才能实现这一点?


你能否提供一个指导包括“en.lproj/myStoryboard.strings”的教程链接? - Jon Hess
我相信这就是让我感到困惑的那个链接:https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/chapters/InternationalizeYourApp/InternationalizeYourApp/InternationalizeYourApp.html - Andreas
我可能在那里误解了一些东西,那是2个月前的事了。也许只是Base.lproj和en.lproj文件夹看起来有些多余。 - Andreas
1
另外,对于另一种语言的字符串文件的默认实例也是如此,它将以英文文本作为值的起点。你应该替换那些文本,但可能会让人困惑的是它们最初是用英语编写的。 - Jon Hess
是的,那可能就是它了。但我不明白为什么需要同时有一个基础文件夹和一个英文文件夹... - Andreas
1
en文件夹通常会填充本地化内容,这些内容不来自故事板。例如,在代码中定义的用户呈现字符串。 - Jon Hess
2个回答

3
在我的情况下,XCode 5 没有创建 en.lproj/myStoryboard.strings,只有原始的 storyboard 在 Base.lproj 文件夹中。也许这是一个旧的 XCode 问题?
尝试移除该文件,看看你的应用是否可以使用默认的英文字符串和 Base.lproj
你的 Info.plist 文件应该有一个条目 Localization native development region,它指向 lproj 文件夹,以便在首选语言中不存在所需的字符串时使用。
我不确定这一点,但我认为你必须使用 en 和 UI,并且带有 Base.lproj 的 UI 会自动回退到 Base.lproj
这对你有帮助吗?

我在Xcode中探索本地化时遇到了很多麻烦,以至于我选择只是阅读有关该主题的内容而不尝试在Xcode中进行任何操作 :) (第一次我做我的storyboard就被扔进了垃圾桶,我得到了无法删除的重复本地化等问题)。plist属性听起来就像我正在寻找的东西,我会深入研究它。 - Andreas

3
我的问题是用户是否会在Base.lproj/myStoryboard.storyboard中看到这些字符串?
默认情况下,使用这些字符串进行开发区域本地化,通常为英语。如果有匹配的英语字符串文件,则会取代storyboard中的字符串。这通常是多余的,因此通常不使用。如果您真的希望所有语言都被处理得相同,可以这样做。
那个文件中的字符串是否必须是系统在我的包中找不到用户首选语言文件夹时向用户显示的默认字符串?
这些概念无关。嵌入在storyboard中的字符串等效于在en.lproj中拥有字符串。之后,语言回退与没有Base.lproj时相同。
我能明确表示“永远不要使用Base.lproj/myStoryboard.storyboard,总是退回到en.lproj/myStoryboard.strings”吗?
如果您有en.lproj/myStoryboard.strings,并且英语是开发语言,则它们将始终取代嵌入在Base.lproj/myStoryboard.storyboard中的字符串,即使英语不是首选语言,但最终被选择为回退语言也是如此。

请问您能澄清一下“在开发中使用英语”的意思吗? - Andreas
我记不得在任何地方看到过“开发语言”作为选项,但是我从未寻找过。我猜这与Kof提到的“本地化本地开发区域”选项相同。考虑到Kof的答案,“开发语言”似乎与回退语言一样无关,就像基本国际化一样。在我的情况下,我的开发语言是瑞典语,但首选的回退语言仍然是英语。令人困惑! - Andreas
在我的情况下,开发语言是英语,但有趣的是 en.lproj/myStoryboard.strings 没有取代 storyboard 中的字符串。@Andreas,你找到解决方案了吗? - Okan Kocyigit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接