title: How to set language other than English as the development language and Base localization?
body: <p>When an Xcode project of iOS app is newly created, in the project (not target) setting we can see that it has <code>Use Base internationalization</code> enabled by default, and there are 2 files localized for the <code>Development Language</code> which is <code>English</code> by default (one for <code>Main.storyboard</code> and one for <code>LaunchScreen.storyboard</code>, both of which reside in the <code>Base.lproj</code> directory).  See below the screenshot:</p>
  
  <p><a href="https://i.stack.imgur.com/2ZedI.png" rel="noreferrer"><img src="https://i.stack.imgur.com/2ZedI.png" alt="Xcode default project localization setting"></a></p>
  
  <p>(For simplicity, I will only mention <code>Main.storyboard</code> from now on.)</p>
  
  <p>And in the localization section of <code>Main.storyboard</code>'s right-side panel, we can see that the <code>Base</code> localization is checked by default and there is also an <code>English</code> localization which is unchecked by default.  See below the screenshot:</p>
  
  <p><a href="https://i.stack.imgur.com/VMJnM.png" rel="noreferrer"><img src="https://i.stack.imgur.com/VMJnM.png" alt="storyboard default localization setting"></a></p>
  
  <p>And in the target's <code>Info.plist</code>, there is a key named <code>Localization native development region</code> (i.e. <code>CFBundleDevelopmentRegion</code>), and its default value is <code>en</code>.  See below the screen shot:</p>
  
  <p><a href="https://i.stack.imgur.com/XWRQk.png" rel="noreferrer"><img src="https://i.stack.imgur.com/XWRQk.png" alt="Localization native development region"></a></p>
  
  <p>If I understand it correctly, with these default settings, developer can just write English in the <code>Base</code> localization of <code>Main.storyboard</code> and leave the <code>English</code> localization as unchecked.  If the app needs to adapt to some other language, developer can add a localization in the project localization setting, and select <code>Main.storyboard</code> in the popped up dialog.  See below the screenshot:</p>
  
  <p><a href="https://i.stack.imgur.com/5iuBS.png" rel="noreferrer"><img src="https://i.stack.imgur.com/5iuBS.png" alt="add localization"></a></p>
  
  <p>Take <code>Chinese (Simplified)</code> as an example, this will result in a newly created directory <code>zh-Hans.lproj</code> with a <code>Main.strings</code> file inside it.  (For simplicity, I will refer to it as <code>Chinese</code> instead of <code>Chinese (Simplified)</code>.)  Developer just needs to translate the English strings inside this file into Chinese (the newly created <code>Main.strings</code> in the <code>zh-Hans.lproj</code> directory by default has all the English texts duplicated from the <code>Main.storyboard</code> in <code>Base.lproj</code>).  With these settings, the <code>Language</code> field in the description of this app on AppStore will list English (from the <code>Base</code> localization, because English is the <code>development language</code>) and Chinese (from the <code>Chinese</code> localization).  On end-user's device, if the system language is English/Chinese (or English/Chinese is among the preferred language), the app will use the corresponding language resource (for English, use the <code>Base</code> localization; for Chinese, use the <code>Chinese</code> localization).  For all other language preference, English will act as the fallback language because <code>CFBundleDevelopmentRegion</code> is <code>en</code>, so <code>Base</code> localization is used.</p>
  
  <p>So my first question will be, is the above understanding correct?  To summarize, with the <code>development language</code> being English, we don't need to enable <code>English</code> localization for storyboard files.  Just use the <code>Base</code> localization and directly write English in the storyboard files.  We only need to add localization for languages other than English.  (Actually it seems troublesome if we enable the <code>English</code> localization.  If <code>English</code> localization is enabled, then we need to maintain both the texts in <code>Base.lproj/Main.storyboard</code> and <code>en.lproj/Main.strings</code>.)</p>
  
  <p>If the above understanding is correct, my second question will be, how to achieve internationalization in a reverse way?  That is to say, if I would like to use <code>Chinese</code> as the <code>development language</code> and write Chinese in the <code>Base</code> localization, and only add localization for languages other than <code>Chinese</code>, is it possible and how to do that in Xcode?  I can't find a way to change the <code>development language</code> in the project setting in order to claim that the <code>Base</code> localization in the project is <code>Chinese</code> rather than <code>English</code>.</p>