Changing the development language in Xcode
Asked Answered
E

6

101

I need to set Spanish as development language for an iOS app. I'm already using Xcode 6, and I changed the Localization native development region entry in app's Info.plist (CFBundleDevelopmentRegion) from "en" to "es". However, in Project > Info > Localizations, English remains set as Development Language.

As said in Information Property List Key Reference, CFBundleDevelopmentRegion specifies the default language. I need to set Spanish to the default language, what am I missing?

Thanks

Elizabethelizabethan answered 16/9, 2014 at 14:44 Comment(0)
P
127

Here's how you can do this:

  1. Add the language you want to be your Base language first. Uncheck all of the files that Xcode offers to localize for you.
  2. In the Info.plist, change the development region to the language that you want to be your base language. Note that the property is a bit misnamed, because its value should be a language code (with an optional country code), rather than a region or country code.
  3. Close your project in Xcode. In another code editor, open projectname.xcodeproj/project.pbxproj and search for developmentRegion. You should see a line like developmentRegion = English;. Change this to reference the same language you put in your Info.plist file.
  4. Reopen the project in Xcode. Go through all your localizable files and check the boxes next to English to generate the localizable resources. Note that for storyboards and xibs, Xcode might create a storyboard instead of a strings file. If that happens, just change the filetype to strings file.

Here's an example of the result for me using fr as the Base language:

Project info

File info

Pose answered 28/4, 2016 at 22:45 Comment(14)
Did you change the line to developmentRegion = francais, or developmentRegion = fr?Liftoff
fr is what you want to use herePose
Note that you might also need to add your language code to the knownRegions list (in the .pbxproj file) for it to show property under the project settings.Katlin
You shouldn't need to do that if you add the localization first, which is step 1 of the instructions in this answer.Pose
In addition to what @PatrickPijnappel pointed out, I can say that just adding your language code to the knownRegions list is enough to make it appear on the Localizations list, without the need for your first step, that (at least on Xcode 8.3.2) cannot be done without checking at least one file and so adding a maybe unwanted localization strings file to your project.Cogitable
use "ar" for arabicChromosome
Just to clarify. developmentRegion must be set at fr and not to francais. Reason: project.pbxproj's developmentRegion is passed to the target as export DEVELOPMENT_LANGUAGE=fr and this value is usually used as <key>CFBundleDevelopmentRegion</key<string>$(DEVELOPMENT_LANGUAGE)</string> in the Info.plist and CFBundleDevelopmentRegion documentation says it should be in ISO 639-1 or ISO 639-2 format developer.apple.com/documentation/bundleresources/…. So 'fr' is correct and 'francais' is not.Barbie
If I "uncheck all the files xcode offers to localize", the language does not get added...?Cyaneous
The plist already contains the macro $(DEVELOPMENT_LANGUAGE), so I guess I only need to change the xcode project file?Cyaneous
Yes, that's a change that was recently added to Xcode. Older projects would not have it.Pose
@Pose can we change developmentRegion by targets? I have a two targets on one I want en to be Base Region on the second target I want another language as the base. P.S. changing in Info.plist doesn't workInappreciative
in my case localization for "ru" didn't work and it was fixed only after adding "ru-RU"Rachitis
That sounds like some other configuration issue @KirillKarmazin. ru should absolutely work.Pose
@Inappreciative good question and i'm not sure if this is supported. If you are seeing unexpected behaviors, please file feedback through Feedback Assistant.Pose
F
97

For Xcode 9 through 13:

Close Xcode.

  1. Open your project.pbxproj in a text editor
  2. Look for developmentRegion and set its value (es for spanish, fr for french,...)
  3. Look for knownRegions and add the new language to the list

Open Xcode: Your project info should now show the language name with Development Language next to it.

Finnougric answered 8/5, 2018 at 11:32 Comment(6)
To find your project's .pbxproj file: https://mcmap.net/q/212321/-missing-project-pbxproj-file 😉Pizzeria
No need to close Xcode, apparently (at least in Xcode 11)Accommodating
How I can add couple of languages as app language in App Store? For example my already published app language is showing English only, but I want to add German as app language as wellFormidable
@Formidable that's something you can do on App Store connectFinnougric
Thanks for your answer @ahbou. But I could not find any place to do that. Can you please direct me?Formidable
@David, you need to add those languages to your project. Select the project in the file navigator, select it again in the document outline, and then go to the first tab to add more localizations.Pose
F
41

In your project's .xcodeproj file, search for the string developmentRegion. Supposedly, it says "English" right now. If you change it to "Spanish", Xcode 6 should recognize Spanish as your project's default localization language in the "Info" tab as long as you add "Spanish" to the list.

You can read more about this topic at http://eschatologist.net/blog/?p=224

Fondafondant answered 18/9, 2014 at 20:7 Comment(4)
Thanks. I've just done what you explain, and I've now Spanish language set as Development Target in Info > Localoizations. However, if I change the language of the device to a language I've not defined in Localizations (let's say French, since I only have defined English and Spanish localizations), I get the app still localized in English, and not Spanish as I expected...Elizabethelizabethan
The device probably is set to prefer English to Spanish regarding a language fallback. Here's some insight about how the app's bundle is searched for localized content: developer.apple.com/library/ios/documentation/CoreFoundation/…Fondafondant
If you want to change the default language and have your app already in the store, don't forget to change it also in iTunes Connect.Heading
@Arefly in Language & Region settings on the device, tap the Edit button in the upper right and reorder the list of languages so that English is below Spanish in the list of languages.Pose
A
3

open your target -> info -> change "Localization native development region" to your language

Adaxial answered 22/6, 2015 at 14:15 Comment(1)
this alone is not sufficient.Pose
T
2

Changing the default localization is now natively supported as of Xcode 14.3. It can be configured from the language menu in the project editor’s Info tab.

Thresathresh answered 17/2, 2023 at 21:1 Comment(0)
I
0

For someone that needs help like I did, I have two targets, one I want to be EN Base localization and second target I need to be another language. The option mention above: "change projectname.xcodeproj/project.pbxproj and search for developmentRegion and change ..." doesn't work for me because of targets.

What worked for me, Xcode 11.5, is that only I need to change the language code in the "Localization native development region" for that particular target and it works, no need to change anything in projectname.xcodeproj/project.pbxproj P.S. Here "Localization native development region" must go country code like fr_Fr or in my case hr for Croatian

Inappreciative answered 15/7, 2020 at 10:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.