如何在安卓设备上将文本从一种语言翻译成另一种语言?

4

我有一个从json中解析出来并显示结果的响应。是否可以将其转换为其他语言,如法语、印地语、德语?

当我搜索时,我了解到谷歌在2011年停止了免费版本并开始收费。是否有任何免费版本将响应文本转换为其他语言?

代码片段如下:

  TextView text; // created an id.

  JSONObject jsono=new JSONObject(data);
  JSONArray jarray = jsono.getJSONArray("posts");
  for (int i = 0; i < jarray.length(); i++) {
   JSONObject object = jarray.getJSONObject(i);
  String name= object.getString("name");
  text.setText(name);// how to convert this to other language. 

比如说:我收到的响应是“Good morning”,我需要将其翻译并在TextView中显示为法语的“Bonjour”。


检查使用Google翻译API。我从未在我的代码中使用过它。我认为它可能会对你有所帮助。 - Amrut
但是它被提及为价格。@Amrut - Shark
2个回答

4

这里有一篇详细的博客文章,介绍如何在Android应用程序中使用不同的翻译服务。源代码可以在github上找到,并提供了使用MyMemory服务进行翻译的示例。

/** Translate a given text between a source and a destination language */
public String translate(String text) {      
    String translated = null;
    try {
        String query = URLEncoder.encode(text, "UTF-8");
        String langpair = URLEncoder.encode(srcLanguage.getLanguage()+"|"+dstLanguage.getLanguage(), "UTF-8");
        String url = "http://mymemory.translated.net/api/get?q="+query+"&langpair="+langpair;
        HttpClient hc = new DefaultHttpClient();                 
        HttpGet hg = new HttpGet(url);
        HttpResponse hr = hc.execute(hg);
        if(hr.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {                
            JSONObject response = new JSONObject(EntityUtils.toString(hr.getEntity()));
            translated = response.getJSONObject("responseData").getString("translatedText");                
        }
    } catch (Exception e) {
        e.printStackTrace();
    }       
    return translated;      
}

我该怎么下载这个? - AA Shakil
1
@AAShakil 下载什么? - bachr
如何下载.db格式的翻译包。 - AA Shakil
{"responseData":{"translatedText":"指定了无效的语言对。示例:LANGPAIR=EN|IT,使用2个字母的ISO或RFC3066,如ZH-CN。几乎支持所有语言,但有些可能没有内容。"},"quotaFinished":null,"responseDetails":"指定了无效的语言对。示例:LANGPAIR=EN|IT,使用2个字母的ISO或RFC3066,如ZH-CN。几乎支持所有语言,但有些可能没有内容。","responseStatus":"403","responderId":null,"exception_code":null,"matches":""} - Sunil Chaudhary

1
使用Firebase ML Kit翻译器API可以进行语言之间的文本翻译。API的输入是要翻译的文本以及源语言和目标语言。如果设备上没有可用的源语言和目标语言模型,则API会下载它们并执行翻译。您可以在此处找到完整的Android示例。https://www.zoftino.com/android-translate-text-example
FirebaseTranslatorOptions options =
        new FirebaseTranslatorOptions.Builder()
                .setSourceLanguage(FirebaseTranslateLanguage.ES)
                .setTargetLanguage(FirebaseTranslateLanguage.EN)
                .build();
FirebaseTranslator Translator =
        FirebaseNaturalLanguage.getInstance().getTranslator(options);

translator.translate(inputText)
      .addOnSuccessListener(
          new OnSuccessListener<String>() {
            @Override
            public void onSuccess(@NonNull String translatedText) {

            }
          })
      .addOnFailureListener(
          new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {

            }
     });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接