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

问题描述 投票:2回答:2

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

[{
  "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,翻译后的文本作为翻译列表返回,但我不知道如何使其仅输出我输入的翻译。任何建议?

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

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

有和没有添加toString()。仍然像以前一样。

java ibm-cloud ibm-watson
2个回答
2
投票

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

translationResult.getTranslations().get(0)

,返回Translation,然后使用getTranslation()以获取翻译文本。

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

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

0
投票

请注意,对于您的具体示例,只是说您想要从“en”到“fr”将无效。您必须首先选择现有的翻译模型,如下所示

    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 !
© www.soinside.com 2019 - 2024. All rights reserved.