android multi language approach - best practices - android

I am trying to determine the best approach on Android for supporting multiple languages. I understand how resource folders work, and how they get selected when the activity loads and/or has a configuration change. I also have seen a technique of creating a new locale, assigning it as the default, and broadcasting a config change. This works. But I get the impression from this thread (https://groups.google.com/forum/?fromgroups=#!topic/android-developers/_ZGOTHwzl-w) and the answers from the google framework team this way of doing things is not recommended / supported. So my questions are:
What is the recommended way to support multi languages on the fly without sending the user to the OS menus for language selection?
Same question for keyboard input.
Finally, I see on my Motorola Xoom when I ask the Locale class for supported languages an impressive list. For instance, ja-JP, which I've tested and seen allows me to display Japanese chars. However there is no SIP for this language on the device. Can I download new keyboards to my platform in these cases? It just seems odd to me that the platform would support displaying many more languages than it could input.

Just leave the system do the work.
A user with a language and a keyboard selected in settings will just expect the same conditions from your app.
As far as I knew, there's no better approach as the strings.xml in the different values folders.

Related

App Development Localization Using Custom Fonts

I'd like to localize an iOS and Android app for over 25 different languages using a custom font. The problem is no new fonts cover that type of ground. What's the current best practice for this problem in app development?
I've only come up with the following 2 solutions, however I'm unsure either are possible or a good idea.
1.) Hire a font designer to create a massive custom font across at least 3 different weights (regular, bold, italic). But that could be extremely costly considering the app license for some single-weight simplified Chinese fonts are 5k alone.
2.) Use a custom font that covers about 10 languages thanks to Latin characters (e.g. Proxima Nova) and then similar-looking fonts for unsupported languages.
It seems to me the current best practice is to use a custom font that covers a bulk of Latin-based languages and all unsupported languages fallback to the device fonts. But I've experienced problems there as well particularly with localizing dynamic third-party data from Facebook connect. If I'm in America and my friend in China has Chinese characters in their username a custom font outputs little square glyphs instead of falling back on the device's Chinese character set.
In any case both solutions add quite a bit of file size to the app which itself could be a deal-breaker. For solution 2 I've also considered using static images instead of embedding additional fonts, but that also presents a problem in localizing dynamic third-party data and creates a ton of work if the app should ever need updated.
Any suggestions would be greatly appreciated. Thanks.

Translation file support

This is not a coding problem, but more of a theoretical question. I know SO sticks to coding, but then I couldn't find any relevant answer to my question.
I'm developing an application (Android) regarding providing support for new languages and quickly adding translations for new features in existing languages. I wanted to know about some resources to study on it, learn about the various common options that needs to be implemented in the application.
Basically, my doubt is what are the different options in the application that must be implemented for providing support for new languages and quickly adding translations for new features in existing languages.
Please post any useful links to posts/blogs/scholastic articles/books/ or anything relevant.
Suppose a user has to convert a string from language X to language Y that may not be included in standard language packs. For this, translatable strings are used. Two mandatory options (in the App) will be:
A User Selects the string to be translated from language X.
Choose the language Y (from a pop-up) to which it has to be translated.
Like this, how many different options should I implement for a decent App.

App Localization for two versions of the same Language

Background:
We are trying to localize apps for FR-FR, FR-CA, ES-ES, and ES-MX. We've created the correct localizable.strings and strings.xml files for both android and ios, respectively. All four look like they are supported by both OS.
Issues:
We are having issues testing that these are correct. For instance, there is the option in either OS to select French, but not French Canadian. When we switch the language to French and the region to Canada in an iOS device, it only changes the keyboard.
Questions:
How do we test these languages?
Do these languages ship with the phones that are bought only in that region?
Note that for Android, the language-country attribute doesn't necessarily need to exist in a real combination for it to still work. For instance, if you create a localization for the German language in Canada, it will still work even though probably no one made a phone for that particular combination.
When confronted with an unknown combination, Android will just cascade up to the less precise German language attribute for language-related localizations (assuming German is even present on the phone/apk) and cascade up to the less precise geographical-only attribute of Canada (assuming Canada-related attributes are even present on the phone/apk).
Unfortunately, I don't know enough about iOS to give you specific advice on that part of the question.
How could you test for localizations? At Google I/O last year, there was a presentation on a new Eclipse localization tool for testing your layouts on many different locales at the same time.
As another testing strategy, that would also help with iOS, aside from asking distant family and friends living abroad, or asking your own existing customers (if you have any), you could go on http://fiverr.com/ and pay five US dollars to someone French-speaking in Quebec to do a quick test of your app on their phone and send you phone screenshots of your app running on their device.
Depending on your budget and the geographical location(s) you're targeting, there must be many other web sites/services that could help you crowdsource (or hire mechanical turks for) such a task.

Language change base on Drop down menu

My android app has a drop down List,From where user can change language like English, Javanese so on. when user change language then app language will be change. It is a simple app where has only one layout.Please any one help me
I wouldn't trust on-the-fly translation of your strings; even the best automatic translators can produce inaccurate output. Additionally, you add a fair amount of complexity, overhead, and dependency (e.g., having a network connection) by handling translation this way.
The problem of having a "multilangauge app" (as you called it) is well-known, and the process of solving it is called internationalization and localization . In general, when you're working with a framework or programming language, you can look for existing packages/libraries relating to this topic -- it's almost a given that others have spent significant time building a good mechanism(s) to facilitate this.
Android is no exception; it's been developed with localization support built-in. The Android Developer Documentation has a comprehensive guideon Localization that you should take a look at. You'll still need to translate your text somehow, but a lot of the "groundwork" of how you can serve up locale-specific messages to the user has already been laid out for you.
One last note -- the Android docs also provide a tutorial called " Hello, L10n", which walks you through the basics of creating a localized app. Hope this helps!

Android: Best way to add support for more languages

I have an application that was build with all the text in English. I would like to add more support for other languages, but am concerned about my users who don't necessarily care about the application now having support for Spanish or whatever new language I have added needing to update. Also, if I am correcting bad translations on a daily basis this would be really annoying to users.
One idea is to make calls to a web service that provides the content for there specific local, which would allow for easy changing if there are bad translations and what have you. The concern with this is of course the speed.
So is there a right way or a better way to add/change values in the localization without forcing people to update?
I understand your problem. And I have one question. Do you think that it will not be annoying for users if your application requests the external service every time when, for instance, new activity is opened?
To my point of view, you should add support of a language, test the correctness of your translation (for instance, you can ask a user from another country who use your application to check the translation) and only then update your app in the market. If all your string resources are in xml files it is not very difficult to support several languages.
So my proposal for you is at first extract all your string resources into strings.xml file (for default language folder), and then just make several values folders with additional language support.
Adding localization is usually (if you followed the good practices) a matter of upgrading a few XML files. So even if the users upgrade, it won't take long at all and they will probably not notice (if they use autoupdate) from the market.
Check this out for more details.

Categories

Resources