我的Base Internationalization故事板是否必须与所有未本地化的语言和字符串的后备语言相对应?

时间:2013-08-07 22:39:02

标签: ios xcode localization internationalization uistoryboard

我查看了苹果开发者的一些国际化文档和视频,但我从未找到过该问题的明确答案。在Apple的教程中,我看到Base.lprojen.lproj旁边的zh.lproj文件夹 - 示例翻译(本地化)是从英文到中文。但他们告诉我有一个文件en.lproj/myStoryboard.strings,这令人困惑。我无法看到为故事板创建英语本地化的重点(已经是英文版)。

  1. 所以我的问题是用户是否会看到Base.lproj/myStoryboard.storyboard中的字符串?
  2. 如果系统在我的捆绑包中找不到用户的首选语言文件夹,那么该文件中的字符串是否必须是向用户显示的默认字符串?
  3. 我可以明确说“永远不要使用Base.lproj/myStoryboard.storyboard,总是回到en.lproj/myStoryboard.strings”吗?
  4. 换句话说:
    假设我希望我的应用在用户的语言不可用时以英语显示,但我的Base.lproj/myStoryboard.storyboard是瑞典语。我是否 将基本故事板本地化为sv.lproj/myStoryboard.strings并将Base故事板中的所有字符串翻译为英语以实现此目的?

2 个答案:

答案 0 :(得分:3)

就我而言,XCode 5没有创建en.lproj/myStoryboard.strings,只有Base.lproj文件夹中的原始故事板。也许这是一个旧的XCode问题?

尝试删除该文件,看看您的应用是否与Base.lproj一起使用默认的英文字符串。

您的Info.plist文件应该有一个条目Localization native development region,它指向要在首选语言中不存在所需字符串的情况下使用的lproj文件夹。

我不确定这一点,但我认为您必须使用en,而Base.lproj的用户界面会自动回退到Base.lproj

这对你有什么帮助吗?

答案 1 :(得分:3)

  
      
  1. 所以我的问题是用户是否会在Base.lproj / myStoryboard.storyboard中看到字符串?
  2.   

默认情况下,将这些字符串用于开发区域本地化,通常是英语。如果有一个匹配的英文字符串文件,它将取代故事板中的字符串。这通常是多余的,因此通常不会使用。如果你真的想要以相同的方式处理所有语言,你可以这样做。

  

如果系统在我的捆绑包中找不到用户的首选语言文件夹,那么该文件中的字符串是否必须是向用户显示的默认字符串?

这些是无关的概念。嵌入在故事板中的字符串等同于en.lproj中的字符串。之后,语言回退与没有Base.lproj的情况相同。

  

我可以明确说“永远不要使用Base.lproj / myStoryboard.storyboard,总是依赖于en.lproj / myStoryboard.strings”吗?

如果你有en.lproj / myStoryboard.strings,并且english是开发语言,他们将总是取代Base.lproj / myStoryboard.storyboard中嵌入的英文字符串。包括英语不是首选语言,但最终被选为后备语言。