Nic Foster
Nic Foster

Reputation: 2894

Missing languages on iOS simulator

When I run my application, my iPhone/iPad simulator only gives me 6 language choices (English, German, Japanese, Italian, Spanish, and Hungarian). After having Googled this it seems like there should be at least 18 language choices available.

I've reinstalled Xcode 4.3.1, and installed the iOS 5.1 simulator, and it has the same issues, same languages.

Does anyone know where these languages are defined, and why a simulator wouldn't have all available options? Google and the Apple Dev forums are of no help.

Here's a screenshot:

iOS Simulator

Update: I decided to install the slightly older 5.0 simulator (instead of 5.1), and whenever I'm using the 5.0 simulator it appears I have all of the languages. If I switch back to the 5.1 simulator I still only have the 6 languages shown in the above screenshot.

Upvotes: 8

Views: 2775

Answers (2)

Nic Foster
Nic Foster

Reputation: 2894

Based on information in the answer posted the user named idz, located in this same question, I was able to figure out how to fix this.

I was using 5.1, I had to install the previous version of my simulator (5.0), then locate the language directories from 5.0 and copy them into the proper location for 5.1, and then restart the iPhone Simulator. Here are some detailed steps:

  1. Locate the language .lproj directores for the 5.0 simulator. /Applications/Xcode-4.3.3.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/PrivateFrameworks/Preferences.framework/
  2. Within this folder you will see many folders with the .lproj extension, e.g. English.lproj. Copy all of the .lproj folders that you find here.
  3. Locate the folder with the .lproj directories for the 5.1 simulator. /Applications/Xcode-4.3.3.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/System/Library/PrivateFrameworks/Preferences.framework/
  4. Paste the folders you copied into this directory. I chose not to overwrite any existing folders when I did this.
  5. Restart your iPhone Simulator.
  6. Make sure your iPhone Simulator is set to 5.1. While the iPhone Simulator is selected, go to Hardware -> Version -> 5.1. Now when you go to choose the language for the simulator you should have all of the languages available that you copied over from the 5.0 folder.

Alternatively some have said that you might be able to fix this by simply uninstalling the Xcode SDK and reinstalling it, but I've found this way to be much faster.

I submitted a bug report to Apple for this, and after a week had no response. I've directed them to this page for the fix to the problem, but I'm still not sure how this happened in the first place.

Upvotes: 0

idz
idz

Reputation: 12988

I think something bad has happened to your simulator installation, not that Apple removed languages. If they were to cut down on the number of languages in the simulator to only 6 Magyar would be an odd choice (with only 12.5M or so speakers).

I also checked my Xcode 4.3.3/iPhone 5.1 simulator and I have what I assume the full complement of languages. Might be worth trying to reinstall your simulator!

The list of languages presented by the simulator in the Settings app can be found in

/Applications/Xcode-4.3.3.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/System/Library/PrivateFrameworks/Preferences.framework/GlobalPreferences.plist.

It's in binary format so you would need to copy it away to a temp directory and use plutil -convert xml1 <file_name> to convert it to something you can read. You could check and see if the languages are missing from this list.

For reference here's what mine looks like

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>AppleLanguages</key>
        <array>
                <string>en</string>
                <string>fr</string>
                <string>de</string>
                <string>ja</string>
                <string>nl</string>
                <string>it</string>
                <string>es</string>
                <string>pt</string>
                <string>pt-PT</string>
                <string>da</string>
                <string>fi</string>
                <string>nb</string>
                <string>sv</string>
                <string>ko</string>
                <string>zh-Hans</string>
                <string>zh-Hant</string>
                <string>ru</string>
                <string>pl</string>
                <string>tr</string>
                <string>uk</string>
                <string>ar</string>
                <string>hr</string>
                <string>cs</string>
                <string>el</string>
                <string>he</string>
                <string>ro</string>
                <string>sk</string>
                <string>th</string>
                <string>id</string>
                <string>ms</string>
                <string>en-GB</string>
                <string>ca</string>
                <string>hu</string>
                <string>vi</string>
        </array>
        <key>AppleLocale</key>
        <string>en_US</string>
</dict>
</plist>

Upvotes: 5

Related Questions