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.
Related
I want to know whether it is possible to translate any android application in any language.
Like all application is in English language can it is possible or any API available to convert it into other language.
Let's say example like in setting menu we have Wi-fi,Bluetooth,Call Setting,about phone etc.are in english language. so with the help of any translator can we convert it into any language?
I already go through this link http://android-developers.blogspot.in/2013/03/native-rtl-support-in-android-42.html
To translate an application to another language you need a human translator, that is, a human being knowing what the application does, knowing the target language, knowing the rules of translation to the target language (*), and preferably knowing the language that the application was originally developed in.
(*) For example, Polish software always says "thou, do this!" because otherwise it would have to know who is reading the text: a man, a woman, several women, or several persons including at least one man. Your translator must follow common practice for the target language (for example, it would be wrong to re-phrase Polish to use nouns instead of verbs).
If you have a human translator, you can translate the application. First, make sure that no user-visible text is hard-coded, and no phrases are composed programmatically. Then, you just let the translator translate the resources. Resources for different languages will reside in different directories of your project. But the translator must know the context of each phrase, know what the application does before showing a message and what it will do after a menu item is chosen. If the translation is poor, a native speaker may get puzzled and will never choose the menu item that he/she is looking for.
There are companies specializing in app UI translation. They will want your money and you will not be able to evaluate the quality of their job by yourself, but probably this is the best you can do. (PS do not forget to ask them what happens if you change/add one or two messages.)
This might help:
Google translate api:
https://developers.google.com/api-client-library/java/apis/translate/v2
If I wanted to translate an entire app (with button names and labels, and long text), is it better to just make a different app? Or is there a translation api I can use?
The reason I ask is that I tried going to the Goolge Play store and searching it in a different language, and it basically didn't understand what I wanted. So is there a different Goolge Play interface for different languages? Or some setting which I need to turn on?
How does this generally work?
Thank you!
use all your strings from a file instead of hard coded way. the name of the file is strings.xml in values folder, and for another language what u need to do is to crate values-ru values-ch etc. folder and put your strings.xml inside the folder. and change the values. this was a fast approach to explain your solution. for expanded, detailed solution is here : http://developer.android.com/guide/topics/resources/localization.html
You don't want to make multiple versions of the application. In general this is accomplished by using a locale-specific dictionary for each translation you want to use, so instead of hard-coding strings in your application you would reference an element in the appropriate reference database instead, which is basically a list of all the strings you use in your application.
Here's some information I found specifically for Android development: http://developer.android.com/guide/topics/resources/localization.html
As for translating, natural language processing isn't far enough along yet to give good translations automatically, especially without context. You can try Google's translate API (https://developers.google.com/translate/) which uses some statistical methods, but even that will likely give you erroneous translations (I'm sure you've probably used Google or another service to translate something and out came something you could be pretty certain wasn't accurate). You might be able to use that as a first step to converting the application to different languages and, if your application is open source (or even if it isn't) ask for user input as to the accuracy of the various translations.
Hopefully that is helpful.
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!
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.
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.