列表数组输出和 IBM 的 Watson Java SDK

List array output and IBM's Watson Java SDK

我目前正在使用 IBM 的 Watson 和他们的 Java SDK 使用 Maven 导入的翻译器,我目前很难弄清楚如何将翻译后的文本输出到文本框中.翻译结果返回给我:

[{
  "translation": "Hello, World !"
}]

我想我没有在我的代码中正确调用某些东西:

LanguageTranslation service = new LanguageTranslation();
service.setUsernameAndPassword("<username>", "<password>");
TranslationResult translationResult = service.translate(txt_input.getText(), "en", "fr");
txt_translation.setText(translationResult.getTranslations().toString());

我想我没有在我的代码中正确调用某些东西。根据the documentation,翻译文本returns作为翻译列表,但我不确定如何让它只输出我输入内容的翻译。有什么建议吗?

编辑:我仍在努力解决这个问题。我试过:

java.util.List<Translation> translationText = translationResult.getTranslations();
txt_translation.setText(translationText.toString());

添加和不添加 toString()。仍然像以前那样出现。

translationResult.getTranslations() returns List<Translation>,因此它是您应该迭代的 Translation 列表。例如,为了获得第一个翻译,您应该使用:

translationResult.getTranslations().get(0)

,其中 returns Translation,然后使用 getTranslation() 以获得翻译文本。

例如,第一语言的翻译应该可以通过以下方式访问:

translationResult.getTranslations().get(0).getTranslation()

请注意,对于您的具体示例,仅说您希望从 "en" 到 "fr" 是行不通的。你必须先 select 一个现有的翻译模型,就像这样

    LanguageTranslation service = new LanguageTranslation();
    service.setUsernameAndPassword("xxx", "xxx");
    //System.out.println(service.getModels()); // <<< get your model from here
    //TranslationResult translationResult = service.translate("Hello World!", "en", "fr"); //<< does not work OOTB
    TranslationResult translationResult = service.translate("Hello World!", "en-fr-conversational");
    System.out.println(translationResult.getTranslations().get(0).getTranslation());

所以你会

Bonjour monde !