【问题标题】:How to translate text from one language to another language android?如何将文本从一种语言翻译成另一种语言 android?
【发布时间】:2014-12-27 15:06:51
【问题描述】:

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

当我浏览时,我知道 google 于 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。

【问题讨论】:

  • 使用谷歌翻译 API 检查。我从未在我的代码中使用过它。我认为它可能会对您有所帮助。
  • 但它与价格一样。 @Amrut

标签: android google-translate machine-translation


【解决方案1】:

Firebase ML 套件不再通过 firebase 提供。 按照此文档进行翻译:

https://developers.google.com/ml-kit/language/translation/android

【讨论】:

    【解决方案2】:

    语言之间的文本翻译可以使用 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) {
    
                }
         });
    

    【讨论】:

      【解决方案3】:

      这里有一个详细的blog post@关于在 Android 应用上使用不同的翻译服务。源代码在github,并附有使用MyMemory service进行翻译的样例。

      /** 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;      
      }
      

      【讨论】:

      • 如何下载?
      • @AAShakil 下载什么?
      • 如何下载.db格式的翻译包。
      • {"responseData":{"translatedText":"指定的语言对无效。示例:LANGPAIR=EN|IT 使用 2 个字母 ISO 或 RFC3066,如 ZH-CN。几乎支持所有语言,但有些可能支持NO CONTENT"},"quotaFinished":null,"responseDetails":"指定的语言对无效。示例:LANGPAIR=EN|IT 使用 2 个字母 ISO 或 RFC3066,如 ZH-CN。几乎支持所有语言,但有些可能没有内容" ,"responseStatus":"403","re​​sponderId":null,"exception_code":null,"matches":""}