首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不丢失换行符的情况下翻译文本?

如何在不丢失换行符的情况下翻译文本?
EN

Stack Overflow用户
提问于 2020-05-23 15:18:04
回答 1查看 365关注 0票数 2

我正在使用Firebase ML Kit Translate将一些文本从日语翻译成英语。

我只是使用他们的文档中的示例代码:

代码语言:javascript
复制
func translate (input: String) {

      print(input)
      translator.translate(input) { translatedText, error in
      guard error == nil, let translatedText = translatedText else { return }

      self.output = translatedText
      print(self.output)

      return
    }

当我输入日语文本时,我注意到所有换行符都被忽略了,而英文翻译是在一个文本块中。是否有启用换行符的设置,或者这是一个bug?

EN

回答 1

Stack Overflow用户

发布于 2020-06-09 17:55:20

这是底层翻译引擎的已知行为,它会剔除任何非语言内容。

例如,如果我要将句子"I saw \n the dog“(中间有一个换行符)翻译成德语,则纯句子的德语版本是"Ich habe den Hund gesehen",谓语在句子的末尾,宾语在中间。

如果文本沿着句子被分成多个段落(或其他块),您可以分别翻译每个段落,然后再次连接它们:

代码语言:javascript
复制
List<Task<String>> tasks = new ArrayList<>();
for (String paragraph : text.split("\n\n")) {
    tasks.add(translator.translate(paragraph));
}
Task<String> resultTask = Tasks.whenAll(tasks).onSuccessTask(aVoid -> {
    List<String> results = new ArrayList<>();
    for (Task<String> task : tasks) {
        results.add(task.getResult);
    }
    return Tasks.forResult(String.join("\n\n", results));
});

或者在Swift中:

代码语言:javascript
复制
let paragraphs = text.components(separatedBy: "\n\n")
var results = [String]()
for paragraph in paragraphs {
  translator.translate(paragraph) { result, error in
    guard let unwrappedResult = result else {
      // Handle error
      return
    }
    results.append(unwrappedResult)
    if (results.count == paragraphs.count) {
      let result = results.joined(separator: "\n\n")
      // Handle result
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61968723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档