Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I change the Development language in Xcode before internationalizing my app?

I'm taking over an app that was written entirely in French. Strings are hardcoded in French in the code, and all the messages in the storyboard are in French. But the initial development region in Info.plist was left to English. So I changed CFBundleDevelopmentRegion to fr so that it matches the real language that was used. But XCode keeps telling me that my Development language is English:

XCode 6.3.2 project Info tab

How can I correct that? The goal is to be able to activate Base Internationalization and have it use French as the Base language instead of English.

like image 239
Sebastien Avatar asked Jun 07 '15 15:06

Sebastien


3 Answers

The following procedure worked for me, but it includes manually editing project.pbxproj file:

  1. Quit XCode
  2. Open the project.pbxproj file with your favorite text editor
  3. Update the following section (near developmentRegion):

OLD:

    developmentRegion = English;
    hasScannedForEncodings = 0;
    knownRegions = (
        en,
        Base,
    );

NEW:

developmentRegion = fr;
            hasScannedForEncodings = 0;
            knownRegions = (
                fr,
                Base,
            );

I've created a GitHub repository with a sample project that was initially created with English as default Development Language, and then updated by the procedure above to use French as Development Language.

Project ScreenShot

like image 78
Vladimir Kofman Avatar answered Oct 17 '22 04:10

Vladimir Kofman


I might have figured it out.

I have built an app in Swedish, but the development language is set to English.

I edited MyProject.xcodeproj/project.pbxproj manually. There are two lines like this:

91C8245918BDFA6100A9972F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };

and this section:

developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
        en,
        Base,
);

Changing all "en" to "sv" like this:

91C8245918BDFA6100A9972F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = "<group>"; };

and

developmentRegion = Swedish;
hasScannedForEncodings = 0;
knownRegions = (
        sv,
        Base,
);

and moving the file MyProject/en.lproj/InfoPlist.strings to MyProject/sv.lproj/InfoPlist.strings seems to have fixed it. Now the "Development Language" shows up as Swedish, and I can add an English translation.

After adding the translation, the storyboard has an expand-triangle where the base language is the existing Swedish version, and the translation is a strings-file in english.

The storyboard have an English translation. Yay.

like image 35
geon Avatar answered Oct 17 '22 03:10

geon


I wanted to develop the project in my own "developer" language by using placeholders instead of real texts in example "WLAN_NOT_AVAILABLE" inside of NSLocalizedString which later on will be translated in different languages including english, off course. I do not like when I must write whole sentences right in the code.

I did just open *.pbxproj file inside of *.xcodeproj folder and changed the following line to:

developmentRegion = Base;

After that English was no more set as development language and I was able to treat it as any one else. This gives you as developer the possibility to write short text placeholders and delegate the correct spelling to another in your team.

like image 4
Simon Avatar answered Oct 17 '22 05:10

Simon