I am comfortable with localizing strings and images within the app. But I am having a lot of difficulty trying to localize the app icon for my supported languages (english and german).
Is this even possible? According to the Apple documentation, you can:
An iOS application should be internationalized and have a
language.lproj folder for each language it supports. In addition to
providing localized versions of your application’s custom resources,
you can also localize your application icons and launch images by
placing files with the same name in your language-specific project
directories. Even if you provide localized versions, however, you
should always include a default version of these files at the
top-level of your application bundle. The default version is used in
situations where a specific localization is not available. For more
information about localized resources, see “Localized Resources in
Bundles.”
I have tried to do this with no luck. There doesn't seem to be any helpful resources?
Other things I've tried:
Localized App Icons with Retina Display for iOS
https://iphonedevsdk.vanillaforums.com/forum/iphone-sdk-development/77660-i-have-problem-localizing-application-icon.html
Has anyone successfully achieved a localized app icon?
Since iOS 4.0, this simply doesn't seem to be possible anymore. As of 2015, the documentation has been updated and now only states that Launch Images can be localized (but does not mention App Icons anymore).
The fact that this isn't working has been confirmed by an an Apple employee on the devforums (login required) in 2010:
https://devforums.apple.com/message/330960
Bugreports have been submitted for several years, but nothing has changed. I suppose Apple wants you to use the same icon for your app all over the world – or create separate apps for specific markets.
Actually, there is a way to localize the AppIcon. By using the alternative App Icon. You can change the app icon at the run time.
if Locale.current.language.languageCode?.identifier == "en" {
UIApplication.shared.setAlternateIconName("AppIcon-en") { (error) in
print(error)
}
}
Related
I added support for multiple languages for a react native project using i18nJs. Since we are handling the localization manually, I added the language keys to CFBundleLocalizations. However, upon the release of the app, iTunes is not showing the languages specified in CFBundleLocalizations. It's showing only English.
Go to the Project > Info tab, under Localization add one entry for each language the app supports. This will create one folder for each, e.g. es.lproj, fr.lproj etc. In itunes the localization's will be recognized.
Update:
Change the content of localized files, to do the same follow this link here https://hackernoon.com/localize-an-application-name-in-react-native-c36c4b2be7c3
Since iOS 10.3 has been released, Apple added a new feature which allows us to change the app icon dynamically, by using setAlternateIconName(_:completionHandler:) method. So far, as mentioned in the method documentation, we have to mention the name(s) of the alternate app icon(s) in the project .plist file, assigned to CFBundlePrimaryIcon key.
Actually, when working with static icons (icons that have been added directly to the app main bundle) it works as expected without any problems:
My question is:
Is it possible -or is there a workaround- to set the alternate app icon dynamically (for instance: icons that have been downloaded from the web and saved in the app documents directory)?
I don't think its possible.
setAlternateIconName(_:completionHandler:) API looks for the icons inside app bundle and cannot be changed to fetch from sandbox.
Also, most probably Apple reviews the app icons you have bundled for avoiding use of same app icons or icons similar to Apple apps.
Refer: https://www.hackingwithswift.com/example-code/uikit/how-to-change-your-app-icon-dynamically-with-setalternateiconname
Since iOS 10.3 has been released, Apple added a new feature which allows us to change the app icon dynamically, by using setAlternateIconName(_:completionHandler:) method. So far, as mentioned in the method documentation, we have to mention the name(s) of the alternate app icon(s) in the project .plist file, assigned to CFBundlePrimaryIcon key.
Actually, when working with static icons (icons that have been added directly to the app main bundle) it works as expected without any problems:
My question is:
Is it possible -or is there a workaround- to set the alternate app icon dynamically (for instance: icons that have been downloaded from the web and saved in the app documents directory)?
I don't think its possible.
setAlternateIconName(_:completionHandler:) API looks for the icons inside app bundle and cannot be changed to fetch from sandbox.
Also, most probably Apple reviews the app icons you have bundled for avoiding use of same app icons or icons similar to Apple apps.
Refer: https://www.hackingwithswift.com/example-code/uikit/how-to-change-your-app-icon-dynamically-with-setalternateiconname
We just release an app based on Apple's ResearchKit. In the App Store, the listing indicates that the app supports many different languages, although we only specified two in the metadata in iTunesConnect.
This question, Change iOS App List of Supported Languages in App Store, seems to indicate that the extra languages could have been automatically detected because there are .lproj folders in a third-party framework that our app uses. ResearchKit does have many .lproj folders for localization.
Has anyone else with a ResearchKit app run into this? Is the only solution to pull these extra folders out of the ResearchKit framework?
You're correct. You'll need to remove the localizations for languages you don't support in your app.
What controls the languages shown as supported in an iPhone app's iTunes page (in the right side, below "Description", under "Languages")? From the iTunes Connect Developer's Guide it appears it's not something you choose during submission. I assume it's something in the bundle.
I used a technical support incident to ask this question of Apple directly. Here is the answer:
"The list of languages supported by the app, as shown in the iTunes store screenshot
you sent, is automatically determined by inspecting the submitted application bundle.
Typically, this comes from the .lproj folders in a bundle, as the process (and iOS)
use this to determine what languages the application can support. However, it is
also possible to provide your own localization support system in the application
without using .lproj folders (although this is typically much more work) -- in
this scenario, the list of supported languages is specified in the application's plist
file, via the CFBundleLocalizations key. See the following docs (and the guide linked
to in the docs) for more info on this:
http://developer.apple.com/library/ios/#documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html%23//apple_ref/doc/uid/TP40009249-109552-TPXREF111
"
You don’t have to specify anything in iTunes Connect. They seem to scan the contents of the bundle and look at the localization subdirectories: I’ve got en.lproj, nl.lproj, and de.lproj in my app and iTunes lists "English, Dutch and German" as supported languages.