我正在使用Firebase ML Kit Translate将一些文本从日语翻译成英语。
我只是使用他们的文档中的示例代码:
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?
发布于 2020-06-09 17:55:20
这是底层翻译引擎的已知行为,它会剔除任何非语言内容。
例如,如果我要将句子"I saw \n the dog“(中间有一个换行符)翻译成德语,则纯句子的德语版本是"Ich habe den Hund gesehen",谓语在句子的末尾,宾语在中间。
如果文本沿着句子被分成多个段落(或其他块),您可以分别翻译每个段落,然后再次连接它们:
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中:
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
}
}
}https://stackoverflow.com/questions/61968723
复制相似问题