It seams base localization does not work on iOS7?
I have an app (its available on the app store) that has localisations for Dutch, Chinese and a base localization = English. This looks like this in xcode 6:
The plist file contains the "Localization native development region" key:
Problem:
When the app runs on on iPhone iOS7 configured for English, it
uses the Dutch localization ?! I would expect that iOS uses the base
localization since its configured as English?
I do not have a "development language" entry in the Localizations
section of Xcode, I have seen this in some posts, what is the meaning of this "development language"? And could this be a possible cause or something?
I can solve the problem by adding an localization language "English" (which then seams to become the development language, I have tested this) but this would simply be a duplicate of my "base" language. Surely this is not the way to go?
I know there are many topics on localizations already but I have read them all (I believe) and cannot find a clear answer.
1.Localization native development language states the preferred language to be use if the iOS language and your app languages doesn't match, so I'm thinking about a storyboard that has been localized in english and a strings file in english, to make your app use english language.
2.Development language is not the same of the first point, is the base language, by default is set to english and it doesn't seems to exist a clear way to change that (I've filed a radar to Apple about it asking for xcode to show a menu at the beginning of each project). To change it you need to do it manually, but appstore will always show english as language
3.This is the solution, when iOS doesn't find a suitable localization it iterates through an array of laguages until it finds an existing one, if you add an english localization you could solve the problem.
Appstore reads directories in your app bundle
Related
I have added Chinese (Simplified) localization to my app, while English is set as Development language. Both iOS app and Watch App, as well as Watch Extension have necessary localization files set up:
iOS:
Watch App:
Watch Extension:
All three Info.plist files have
<key>CFBundleDevelopmentRegion</key>
<string>en_US</string>
as suggested in this post.
When I run the app on iPhone, everything works well in both English and Chinese system languages. Also, if I set a third language for system (e.g. Russian), iOS app gracefully falls back to base English (suggesting it's closest in preferred languages list).
Watch app also works ok in cases when Watch language is set either to English or Chinese. But should I set third language for the Watch - it falls back to Chinese, not English.
What am I missing here?
You need to add Localizable.strings (Base) file in Watch Extention. Please check the forum post.
https://forums.developer.apple.com/thread/86889
I have committed some kinda mistake in uploading an iOS app, which makes my app show the languages as English and German on AppStore.
The scenario is that I have set the "Localization native development region" key in (info.plist of target) to Germany, while my app is actually an English app(for all territories). But I am not confirmed that changing this key to US, can change the Appstore language of the app to only to English.
Besides this, I have also set the language in Localizations in the( info of Project) to:
1. English - Development Language
2. German
What changes should I do in the settings so that on releasing the app it will show the languages on App Store as only English?
After doing an experiment with uploading an application to app store, I came to know that for the languages of the application we need some settings changes in the info.plist of the project(remember not the target).
For eg. For Multilingual(English and German both) apps. It should
show only these two languages in the App Store. Otherwise the user might get irritated after downloading the app when he see the content is in single language.
Just go in the localization as shown in screenshot above and click on + to add
a language and - to remove the language.
Also this localisation language setting creates a folder named "de.Iproj" or "en.Iproj" for respective languages. That folder must also be removed from the build if the corresponding language localization does not exist
I have developed an app which should be in Norwegian language only. The app does not use localisation, since it should appear in one language only (Norwegian). However, I have set "Localisation native development region" to "no" in the Info.plist file. I also use base localisation.
The app launches and behaves correctly in Norwegian language for any device language and regional setting. So far, so good.
The problem arises on the app-store, where the app language states English and not Norwegian as I would expect. I have created the iTunes Connect record for Norwegian only, and I believe the problem is related to information iTunes Connect extracts from the app-image it self. However, I cannot figure out which setting in Xcode that needs to be altered in order to reflect Norwegian on the app-store. I use Xcode 7.2.
Any clue on how to solve this issue would be very much appreciated.
I finally managed to get this working by:
Use the latest version (7.3.1) of Xcode
Add InfoPlist.strings and Localizable.strings to the project
Add Base and Norwegian Localisation to the project
Localize InfoPlist.strings and Localizable.strings to Norwegian
Localise Storyboard/XIB files to Base and Norwegian
Make sure all other localisations are removed from the project and delete the belonging files and folders. Only Base and Norwegian should be left
Set "Localisation native development region" to "nb-NO" in info.plist
Add "CFBundleDisplayName" = "Your App" to InfoPlist.strings
This should also apply to any other language for single language apps.
What you need to do is the following:
Go to iTunes Connect
Select your app
Choose a new build
Tap on the language (Where the arrow points)
Select a new language
When you have added the new language you are able to delete the english.
Good morning,
I have an iOS app with English and Hebrew localizations and a device set on English.
I need to build the app with Hebrew only for this version (so the app will launch in Hebrew).
I tried to delete en.lproj and remove the references in Xcode, but the app just uses the base localization in the storyboard and the string I use as a parameter in NSLocalizedString, instead of the Hebrew files.
I've also tried to change the development language to Hebrew: How do I change the Development language in Xcode before internationalizing my app?
but that didn't help.
When setting NSUserDefaults-AppleLanguages key in main() it works but not on the first launch.
I would love to use a different implementation for NSLocalizedString so I could manage the localizations myself, but the problem is that English is written from left to right and Hebrew is from right to left, so updating the strings is not enough.
Do you have any idea how can I force the app to launch for every device in the localization that I choose?
Thanks!
I think that I found what was the problem, I left a single image localized in English.
It seems that when there is anything localized to a language, it adds the language to a list of supported languages. Because the device is in English and the app "supports" it, English will be used.
If anyone knows a way to modify this list of supported languages without deleting files, and making it work from the first launch, and maybe even having a different list for each target, please let me know!
I know this is an already asked question, but no one of the answers helped me.
I'm writing an iOS app localized in italian and english.
I've already done two storyboards and two Localizable.strings file for the texts.
Now, if I set the english language on the phone, the app picks the english files, if I set the italian language on the phone the app picks the italian files.
But if I set french language(or spanish, or german), the app picks the italian files, which is wrong, how can I set english as the default language?
An iOS device keeps track of which languages you have set the locale to. If the currently selected locale is unsupported in an app, then the device will use the last user-selected language you used that is supported by the application.
So for example, imagine you had changed your device to English, then Italian, then Spanish. The app would first try and provide a Spanish localization. If one wasn't available, it would attempt Italian. If that wasn't available, then it would finally use English.
If you view the list of languages in the device's Settings, you'll see that they're ordered by 'last used'. I'm not aware of any way to alter this (seemingly intentional) feature.