There are a great number of tutorials that tell you how to write multilingual apps for the iPhone. I haven't found one though that deals with my particular problem...
There must be a way how an iPhone app can enforce a certain default language if the user runs the iPhone with neither of the languages supported by the app?
Here in Switzerland we speak German, French and Italian (in different parts of the country). German can be considered the "default" language because its share is nearly 65%. Hence, any national retailer has his product descriptions in these three languages. We built an iApp that supports these three languages.
So far so good...as long as users have selected either of the three languages in their iPhone settings everything works as expected. For users that use the iPhone in English, that seems to be a significant number, this goes wrong because the application is displayed in French instead of German (the assumed default language).
Why? Because French by default is higher up in the list of available languages in the iPhone settings than German. The workaround for users is to switch the iPhone from English to German and back. The iPhone places German second in the list of available languages.
How should the app best deal with that? Ahh, of course we could support English for UI elements but our customer's product descriptions simply aren't available in English. Hence, this isn't really an option.
You can let user choose which language to use in app and set it like this:
NSArray *lang = [NSArray arrayWithObjects:#"de", nil];
[[NSUserDefaults standardUserDefaults] setObject:lang forKey:#"AppleLanguages"];
I came up with the same problem some time ago. My way of solving it was to set all the localizable elements programmatically and not rely on the iOS localization at all. I implemented my own language manager that handles localized strings (read from a custom resource file) and tries to choose the best language for the current device (using the rules provided in a custom preference file). Of course, if the current preferred language of the device is available among the localizations, it has the highest priority. I also leave an opportunity to change the language in settings.
Related
I want to add local languages for the description of my app, and so I made a new version just so I could Localize the description. However, I did not change any of my app to be location-dependent (It's just english, and it's a rather simple resistance-color code calculator app without much text, and operates on the basis of color-codedness.) Will my app be rejected for failing to truly "localize", per se? Is this a stringent guideline or is it okay to just change the app store description language?
I don't know if Apple will reject you on that basis or not. But doing something like that could anger your customers, and I wouldn't blame them. I would suggest that you either localize everything, including the content, or localize nothing. Misleading your customers is not the path to long-term success.
Your app should not be rejected. I've done this. My app is mostly numbers which is universal. I've translated descriptions to 6 languages and the app is in the app store just fine.
Don't mislead your users. Your users are your greatest allies or enemies, depending on your attitude. If you don't respect them, they won't like you.
If you want to make a localization, create a support for multilinguality and you can add languages later on. Also, in my opinion your users should be able to choose the language they want to use your app in. As a default you can choose the language of the region. However, it's rude to localize by location and not letting the users to change their language. If you show respect towards your users you will have greater chance of success.
I would like to have an app which simple opens different websites for different languages. So the main purpose of the app is simple to redirect to an web app. My questions:
does Apple allow such apps (in the Appstore of course) ?
how can it be achived to be listed in the different istores (by country, according to the language)
how to I open different websites for different languages?
Thank You!
Apple does allow Apps that just contain UIWebView pointing to a website.
Use NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
to find the Country code
Using a simple condition, set the URL relavent to the country code.
1) Yes, it is allowed, though discouraged and highly annoying. I immediately uninstall apps that do this.
2) You'll have to setup localization for your app for each language you would like to represent
3) You simply setup a web site, and write it in the language you would like on the site. Localization will save time here, too.
Although this might draw some traffic to your sites, it is not a good business model and you should probably try to make your app do something of benefit for the user. If your app is useful, you will get more than enough traffic to your sites through gentle prodding or in-app announcements of some kind.
How to display languages like hindi, sanskrit, etc in iPhone devices? These languages are not available in iPhone 3.0, so how to display them.
One of the problems and also one of the plus points of the Iphone platform is the control that Apple exerts in ensuring that only it's desired ways of doing things are acceptable.
So if it is not supported then the only only way to do this would be to use some form of graphic library with the characters and possibly that you'd have write it yourself.
in iphone sdk 3.0 they have given option of international keyboards.user can choose the keyboard that he want. but how can we localize our application.
for e.g if user have chosen a French language keyboard we should interact with him in french. like alerts and other things should get display in french language.
how can we do this programatically?Is their any option by which we can convert string from english to user's chosen language?
kindly help me
Have a look at the Internationalization Programming Topics on the iPhone Dev Center.
In iOS 4.2 and later, you can use the UITextInputMode class to determine the primary language currently being used for text input.
[UITextInputMode currentInputMode].primaryLanguage will give you an NSString representing the BCP 47 language code such as “es”, “en-US”, or “fr-CA”.
You can register for the UITextInputCurrentInputModeDidChangeNotification to be alerted when the current input mode changes.
As Thomas Müller said, Internationalization Programming Topics is a good place to start.
You might also be interested in the "Getting Your Apps Ready for China and other Hot New Markets" WWDC session.
There is no documented way to know when keyboard changes, nor a documented way to get the current keyboard mode.
With undocumented APIs, you can listen to the UIKeyboardCurrentInputModeDidChangeNotification local notification.
The current input mode can be found from the com.apple.Preferences preferences, using
return CFPreferencesCopyAppValue(CFSTR("KeyboardLastUsed"),
CFSTR("/var/mobile/Library/Preferences/com.apple.Preferences"));
(Note: to test on simulator you need to replace /var/mobile/ by /Users/<user-name>/Library/Application Support/iPhone Simulator/<sdk-version>/.)
I just saw an iphone application that enhances the built in "messages" application to send emotions. What this application does is that it extends the functionality of the Keyboard that appears in notes or messages application, and user can send emotion icons as messages. This application doesn't work when the emotions are sent to other mobile devices (it works only with iPhone), but that's not important. What i'm wondering is, how they did that (extended the built in keyboard)? Do we have API's that let you extend the functionality like this?
Best Regards.
They are part of the font set. called Emoji icons.
Apple's latest iPhone OS update
brought cute little "Emoji" icons for
Asian markets
To use them you need to use the (font) character code for each letter / emoji. I don't know what they are, but a quick google returns, abide a lot of spam, some codes worth trying. A quick script could be made to incrementally loop through each character code, thus finding them all.
A quick google: