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. 

例如说:我得到的回应是早上好。我需要翻译并在 textview 中显示为法语的 Bonjour。

4

2 回答 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;      
}
于 2014-10-31T11:05:53.770 回答
1

语言之间的文本翻译可以使用 Firebase ML 套件翻译器 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) {

            }
     });
于 2019-09-05T15:37:08.597 回答