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
Related
I have a full-fledged working Flutter app. Now, I want it to support multiple languages, such as Spanish, Hindi, Urdu, etc. (primarily Indian Languages which are available in Google Translate).
I have searched about this, but all of them mention about "arb files" in which I believe, I have to manually write each and every translated string of the whole app.
I would like to build a package with a class (or just a method) which may require 2 parameters, string and the locale in which translation is required.
Kindly suggest me the best way to achieve it and how can I do it. A link to tutorial would be appreciated.
Flutters own step by step walkthrough to i18n is literally the first result that pops up when you put "Flutter localization" into Google.
https://docs.flutter.dev/development/accessibility-and-localization/internationalization
If for some reason you don't want .arb files, you can roll your own. But be prepared that you will find out along the way what is missing and ending up with a home-brewn solution that is worse than Flutters own to achieve the same thing.
There is no magic function to translate text. Even if you could translate on the fly with a translation service, translation services have become really good in recent years, but they (as any human you could hire) are only as good as the context they get. If they get only single words or half sentences, as is common in an app with headlines and buttons, the result will be horrible. As if you just put every single word into a dictionary. That is not translation. It will feel artificial and laughable.
So... give the existing packages a try. Start with Flutters. It might seem complicated, but it's complicated for a reason.
I am a android game publisher on Google play. I usually use Google translate to translate my store listing text into multi-language. I write the source text by hand and then use GG translate. When I meet something like English (US) - English(UK), Spanish(Spanish) - Spanish(US).... I know US Spanish is a little different form Spanish Spanish, but it's 90% similar so I accept the different. In google translate, it's have only Spanish, so I used that Spanish version for both Spanish(Spanish) - Spanish(US) in my store listing. It seem to be too time consuming. Can I just use Spanish (Spanish) in my store-listing and don't add translation for Spanish(US)? If a customer who using Spanish US, can he see my store listing text in Spanish? Say another way, does it necessary for add many translations for one language (Spanish/ Portuguese) but for many country (Spanish, US, Brazil,...)?
Translation is not necessary. But it makes your app user friendly. I think in your case it fine to simplify translation.
As a user I'm dislike applications which use low quality translations by Google Translate to my native language (Russian) and seams like not check result. It looks ugly. Correct English it's even better than bad translation.
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.
I have the patience to convert my strings.xml file and my HTML help files to other languages using Google Translation Toolkit.
However, the translations are not "100%" correct.
I speak German as well as English so used the Eng -> Ger translation for my strings.xml etc.
Some of the "gaffs" made by the translator were pretty bad.
So, is it better to have 1 language done well (ie English) or to also provide multi language support but for languages I have no idea about whatsoever.
I wanted to cover the "big boys" too such as Mandarin, Hindi, Japanese, Russian, etc but am worrying bad translations would make my app seem to be of a low quality.
Has anybody any experience and words of advice on the topic.
Many thanks.
Paul.
You should probably hire translator(s) which are very good at the English and target foreign language(s).
One of the most important things is that translator must understand usage, concepts and conventions of your application - know it and understand it. Otherwise, you will end up with grammatically correct but meaningless translations in context of your app - I can see this in a lot of cases since my native language is not English.
And, yes, your app will look "low quality" and "hostile" to SOME people if it has translations that are missing the point.
German and English belong to the same language family and Google has ample data for both. Any other language, especially those that are linguistically a lot more distant (Chinese, Japanese, Hindi), is translated even worse than German. I do not believe that native speakers of these languages can get ANY value out of a machine translation.
Using a machine translation shows your foreign customers exactly how much value you place on them: none.
Wow !.
It looks like a thumbs down then.
Like all things in life I suppose "compromise" is the winner.
My app basically has a single setup screen with about 15 strings and a few radio buttons, check boxes etc.
The games themselves are pretty obvious but underating the "gist" is better than no understanding at all.
I'll focus on getting the strings for the setup page "perfect" and add the HTML "help" screen translations with fingures crossed.
I am of the view that is one goes to a country one should at leasr learn some of the language. My experience is that the "natives" appreciate an "attempt to speak theor tongue" rather than simply assuming "they" should understand English. By the same philosophy, if the "main" points are translated well, I should at least earn a few more points for "having a go to respect their language and culture" by going through the translation process of "all supplied help text".
As I say, it is a tricky area to know what to do. If my app did take off I would not hesitate to have professional translations done but the initial outlay price for, say, 20 translations could well wipe out any return. In 2 months I'll be older and wiser (if only in expletives from people who are insulted by the translations).
I'd love to hear any other responses from people who have had the same dilemma and to know their real life "app" experiences in this area.
A genuine thankyou to those who have so far written..
Paul
If your app is targeted at people who know english (geeks, system administrators, other computer people) then you better use english only UI.
Other way, if you target "common" audience you have to decide what do you want - bigger "client base" or higher app rating (because no annoyed people will rate your app 1 star because of bad l10n).
I'm russian myself and I can tell you that for me badly localized app is much more annoying than english app. But people who does not know english (there are a lot of them) will never install english-only app.
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.