Is there a way to apply the selected language in your iPad app?
Setting the langauge is not the problem, but applying it to the screens is difficult.
The project I've made is a master/detail storyboard app, so on both master and detail the choosen language should be applied. The languages are set via AppleLanguages.
===================EDIT, infos from APPLE============================================
In general, you should not change the iOS system language (via use of the AppleLanguages pref key) from within your application. This goes against the basic iOS user model for switching languages in the Settings app, and also uses a preference key that is not documented, meaning that at some point in the future, the key name could change, which would break your application.
If you want to switch languages in your application, you can do so via manually loading resource files in your bundle. You can use NSBundle:pathForResource:ofType:inDirectory:forLocalization: for this purpose, but keep in mind that your application would be responsible for all loading of localized data.
Regarding the exit(0) question, Apple DTS cannot comment on the app approval process. You should contact appreview#apple.com to get an answer for this question.
http://aggressive-mediocrity.blogspot.in/2010/03/custom-localization-system-for-your.html
This link may help you i guess. Thanks!
Related
I have an app on the Swedish App Store which I intend to adapt to some other markets. In this case, the most important part of the localization is to change some aspects of how the app works for different markets (countries), so this is not primarily about language adaptations.
Probably, I will not use the normal built-in mechanisms for localization. Instead I consider to build separate versions for different markets and release them as separate apps on App Store (with the same icon and similar names), with each one of them only available in one country.
My main arguments are,:
1) Since App Store supports fewer languages than iOS, there are several countries where Apple has defined the App Store language to be UK English (e.g. Denmark, Norway). Then I cannot create a good sales pitch in their own language, unless I release completely separate apps for these countries.
2) I think it will be faster for me to implement the localization, in this particular case, by inserting compiler directives in the source code and make different Xcode targets for different markets. (This may be caused by a not so smart architecture of the first version of my app, by nevertheless, this is the current state.)
NOW, MY QUESTION:
Are there any drawbacks of releasing separate apps for different markets, except the obvious one that there will be more administration? (e.g. less favourable for achieving good ranking on App Store, risk of rejection, etc...)
It is not possible to publish 2 apps with same name in the app store
Risk of Ban
App Store supports fewer languages than iOS Localization
iOS Localization is faster than creating multiple copies
Maintaining multiple copies, changes and updating all of them is a huge overhead
Less favourable for achieving good ranking on App Store
Risk of rejection
App Store Review Guidelines, one of them is that
developers should not "spam" the app store with multiple versions of
the same app with minor changes.
Apple are not a big fan of this approach generally. I heard somewhere that there was an unofficial limit of three copies of the same app for localisation reasons, but I don't know how concrete that is.
Would it not be possible to build this logic into the app? You can use the NSLocale to get the device locale (not just language, also country) at runtime, and then use runtime logic to switch out view controllers, nib files etc. If your app is not well structured, you could just branch at the MainWindow.nib level if necessary, and then have complete control to change any aspect of the app when it loads.
I think this is a better approach than releasing multiple app versions for the reasons you mention, as well as avoiding hassles getting your app approved. It doesn't solve the app store notes problem, but perhaps you can work around that another way, by focussing your marketing strategy on a web site or something external to the app store.
I'm whipping up a short specifications/requirements document for a small prototype iPhone app project. Describing the basic functionality and behavior is not an issue for me. But, since my mobile application and iPhone development knowledge is very weak, I'm not really sure what else should be in such a document regarding best practices and such.
Example: In my programming world (server side Java), when spec'ing a project for outsourcing, I state that the project must pass static bug analysis by FindBugs.
Example: I understand that there are API calls Apple does not want app developers invoking. These can be cause for having an app rejected from the app store. But I'm not sure how to say that we want Apple's guidelines respected. (I don't even know how to test for that.)
What should I include in a two-page requirements and specification document that is specific to iPhone app development?
These are some points you can mention
1. The application should be developed based on Apple's user interface guidelines
2. There should not be any private API call inside the project which makes the application rejected from apple
3. There should not be any memory leak or excess memory allocation issue during the application running state
4. The application should be supported in all iOS after [your option]. (It mainly depends on the features used in the application)
5. The application should be supported in iOS 4
6. The application should work properly on iPhone 4
Hope this helps
A private API wont be mentioned in any header file or in the documentation so one way to test for that would be to manually go through the source files and search for the functions used in the headers and documentation to see that they are there. It's really not feasable if the project grows but for a small app it could work :)
In addition to the things already mentioned here, I'd add a few more:
The app should work fast, no action should give the user the feeling, the device is doing something
Everything that takes a while should be run in background and even better, be cancelable
Make sure you use animation only where it makes sense but not too seldom. A smooth feeling is most important for users.
These things also imply that you try to minimize application startup time.
There are often tricks to work around performance issues. The feeling a users gets from your application is not how fast it is, but how fast if feels. In my opinion this is the single most critical requirement, besides obvious ones like no crashes etc..
What's the problem with using a private API?
Moreover, I would add that it will be tested on iPhone 3G, 3GS, iPod, 4, all with iOS4 and 3.
Is it possible to localize the app icon and Default.png files? Do I just drop them in the respective language folders or must I do something else?
As per my comment, there's an answer elsewhere, but you can read more in the Internationalizing Your Application section of the iPhone Application Programming Guide. There's an example of how to structure your language files in your app bundle, for example.
The correct answer is that it is not possible to localize the app icon.
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.”
https://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html
Apple docs update/change frequently. This is the correct link at this point in time. Also, I haven't actually tried localizing the app icon/default images, but Apple says it works so why not :-)
This same question appears numerous times on stackoverflow.
Can the app icon and default screen be localized in iPhone? Has anyone tried it?
In theory it should be possible as they're just image resources, but I found no explicit mention of this in the documentation, and I wouldn't like to have my app rejected or failing for this.
Official documentation quote:
"An iPhone application should be internationalized and have a language.lproj directory for each language it supports. In addition to providing localized versions of your application’s custom resources, you can also localize your application icon (Icon.png), default image (Default.png), and Settings icon (Icon-Settings.png) 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."
I'm trying to do the same, and I found this:
Until yesterday though I was never totally sure it was not possible. Then I spotted this thread in the Apple developer forums. There is a post by Bill Dudney, author of the excellent iPhone SDK Development book from Pragmatic Programmers and now an Apple employee. Bill confirms that localizing the application icon is not currently supported and suggests raising an enhancement request.
source:
http://useyourloaf.com/blog/2010/12/16/localizing-iphone-app-icon-is-not-supported.html
Cheers.
It seems like Info.plist file has an ability to declare different roles for the same application bundle through the UIRoleInfo key. SpringBoard can recognize these roles after installing an app and may display separate icons for each application role.
For instance, iPhone shows MobileSlideShow.app as 2 different programs: Photos and Camera.
Unfortunately, there is no official Apple documentation about the subject at the moment. Would anybody advise how to organize the same behavior in a custom app?
This feature is going to be used in the Enterprise product for ad hoc distribution.
This isn't a supported feature, so if you do this you might have a hard time getting your app through the approval process. I wouldn't recommend using it.
Have you tried it to see if it works? If it doesn't work, you could create a second app that does nothing but launch the first one, with a custom URL scheme. The first app can recognize when it is being launched with that URL. This is not ideal as you will see the second app launch & quit (though it should be really fast).