Keys in info.plist for localizations - iphone

Just wanted to know what are the keys in info plist which affects localization of iOS app.
Or which keys we needs to consider when develop localized application.
I have read documentation for,
1) CFBundleLocalizations
2) CFBundleDevelopmentRegion.
Regarding 1. for which functionality this key is for.
Regrading 2. As per apple doc if we set this key, and if our app has not language bundle which user has selected in user preferences then os will load default bundle which is set in front of this key in info.plist. I have tested this and this is not working for my code. Instead it loads the bundles according to the first available bundle in user preference languages.
Apart from above two keys is there any key which I need to consider while localization.

Related

Info.plist does not change fields in Targets/MyApp/Info

i'am having a strange problem. When i modify the Info.plist for example if i add a new field i can see it, but when i go to App/Targets(MyApp)/Info i son't see any changes. Plus i'am localizing my app with different languages (English, German, Italian) so i have a localized version of Info.plist with the Base and other languages too. In build settings the Info.plist is linked correctly to App/Info.plist where the file is, plus i don't know if it could be useful but i made the project with Ionic capacitor 3.
So if i want to see a change for example the app name, i have to modify the info in App/Targets while if i modify the Info.plist in App folder nothing changes.

Do I need to set metadata in app when publish app to app store

I'am in phase of setting my app for my first app submit to app store.
I saw this:
Before you submit your application, it is a good idea to have your
application’s metadata at hand. This includes (1) your application’s
name, (2) the version number, (3) the primary (and an optional
secondary) category, (4) a concise description, (5) keywords, and (6)
a support URL.
My question is do I need to set this metadata somewhere in my xcode project and where?
Well the Meta data is all the data including (1) your application’s name, (2) the version number, (3) the primary (and an optional secondary) category, (4) a concise description, (5) keywords, and (6) a support URL etc which you should know for uploading an app to the Apple Store. You will have to use this information while uploading.
Supplying information to the App store can be done once you have collected all the data.
I think you should go through this tutorial on how to submit an App to the Apple store.
EDIT :
The Metadata has nothing to do with the xcode project or the .plist file whatsoever. You DONT have to do anything with it. This information you have to enter in the website of the Apple store when they ask for it .

How do I localize my app's name in the App Store

I'd like to change the name of my app on the App Store for some of the localizations I handle.
I've already seen That I can change the name of the app on the springboard using CFBundleDisplayName and that works pretty well.
But there is nothing about the localization on the App Store.
Is CFBundleDisplayName doing the job ? Is there something else to do ?
Have you looked into iTunes Connect? I know that the description can be localized there (under Manage apps -> App -> Version -> Manage Localizations). I'm not entirely sure if it can be done though, as the names in the App Store have to be unique and therefore I imagine that are bound to a certain app ID.
To localize the App Name you can do this like any other file. First click on the AppName-Info.plist file then open up the Identity Inspector (Left Pane Column), under the document tag is a Localization section. You can just click the add button to add the different languages that you want (say, first English, then Italian). Than you just have to individual change each of the names in the AppName-Info.plist (English) and AppName-Info.plist (Italian) files.

What determinates the options in property list of a .plist file?

When I try to add an item to an existing iPhone Info.plist, the options in the list is not iPhone-relevant (e.g. "Application is visible in Classic" which seems to be some desktop OS stuff).
How can I get back the proper list of choices for iPhone? Thanks!
p.s. I found this when editing the avTouch sample project's Info.plist file.
This might not be an exhaustive list of all iPhone-relevant entries, but maybe a good start:
Recommended Keys for iPhone Applications and the Bundle Programming Guide's section on iPhone plist keys.
Not sure if you can limit the choice in xcode's plist editor to only include iPhone-related keys.

What's the difference between "bundle display name" and "bundle name" in cocoa application's info plist

Here is a good question:
Bundle Name, Executable Name, Product Name...anything else?
but I just wonder about the difference between "bundle display name" and "bundle name" in cocoa application's info plist.
I don't think any of the other answers concisely answers the question.
CFBundleDisplayName - displayed: below icon. According to docs, should be localized, but only if the app itself is localized, otherwise there will be some kind of penalty (if this is true in reality I cannot say)
CFBundleName - displayed: I have no idea. Docs suggest that it will be used in lists thus recommended max 16 characters, but for instance the Settings→General→Usage list of apps uses CFBundleDisplayName really. To date I have never figured out where exactly this one is used.
Oh, this is for iOS apps, can't speak for other OSes.
thanks for Wevah's answer. here is the descriptions for people who confused with this two constants.
CFBundleDisplayName
CFBundleDisplayName (String - iOS, Mac OS X) specifies the display name of the bundle. If you support localized names for your bundle, include this key in both your information property list file and in the InfoPlist.strings files of your language subdirectories. If you localize this key, you should also include a localized version of the CFBundleName key.
If you do not intend to localize your bundle, do not include this key in your Info.plist file. Inclusion of this key does not affect the display of the bundle name but does incur a performance penalty to search for localized versions of this key.
Before displaying a localized name for your bundle, the Finder compares the value of this key against the actual name of your bundle in the file system. If the two names match, the Finder proceeds to display the localized name from the appropriate InfoPlist.strings file of your bundle. If the names do not match, the Finder displays the file-system name.
For more information about display names in Mac OS X, see File System Overview.
CFBundleName
CFBundleName (String - iOS, Mac OS X) identifies the short name of the bundle. This name should be less than 16 characters long and be suitable for displaying in the menu bar and the application’s Info window. You can include this key in the InfoPlist.strings file of an appropriate .lproj subdirectory to provide localized values for it. If you localize this key, you should also include the key CFBundleDisplayName.
According to Apple,
Bundle display name :
The app name displayed on the iPhone home screen comes from the
CFBundleDisplayName (or "Bundle display name" as the human-readable
string in Xcode) entry of your iOS app’s Info.plist
Similarly, the app name you see in your WatchKit app's launch screen
and notifications comes from the CFBundleDisplayName of your WatchKit
app's Info.plist
Bundle name:
The Apple Watch app on the iPhone currently uses the bundle name (not
the bundle display name) of your iOS app, which is specified by the
CFBundleName (or "Bundle name") entry of its Info.plist
You can see other related screenshots and reach more info at Apple Developer page by clicking here.
From my experience:
CFBundleDisplayName is used in the grid of apps on iOS devices
CFBundleName is used in the list of apps stored in iTunes library
Only if Bundle Display Name (CFBundleDisplayName) is not specified, value of Bundle Name (CFBundleName) will be used to displayed under App Icon.
Please note that CFBundleDisplayName is localizable, and it should be used to set the App name shown in iOS Springboard menu & Mac OS X Applications / Mission Control.
In short, don't touch CFBundleName and leave its value as default, i.e. ${PRODUCT_NAME}.
Note that the bundle name is also used as prefix for HTTP user-agent.
CFBundleName is also used in system popups like approving web authentication services.