我目前正在使用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()。仍然像以前一样。
translationResult.getTranslations()
返回List<Translation>
,所以它是你应该迭代的Translation
列表。例如,为了获得第一个翻译,您应该使用:
translationResult.getTranslations().get(0)
,返回Translation
,然后使用getTranslation()
以获取翻译文本。
例如,第一语言的翻译应该可以通过以下方式获得:
translationResult.getTranslations().get(0).getTranslation()
请注意,对于您的具体示例,只是说您想要从“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 !