0

在我的应用程序中,我翻译 TextView 的内容并将其呈现给用户。

我的问题是:第一个字符串的格式很好,换行符在翻译过程中变松了。

识别文本:图 1 翻译文本:图 2

我的问题是:如何以某种方式在与第一个 NSString 相同的位置附加相同数量的换行符,让它看起来像第一个字符串?

翻译:

[[MSBingTranslator sharedTranslator] initWithDelegate:self andTranslateText:txtView.text fromLan:detectedLanguage toLan:@"de"];

- (void) MSBingTranslator:(MSBingTranslator *)cls translatedText:(NSString *) text {
    txtView.text = text;
}

- (void) MSBingTranslator:(MSBingTranslator *)cls detectedLanguage:(NSString *)lan {
    detectedLanguage = lan;
}

- (void) MSBingTranslator:(MSBingTranslator *)cls failedWithError:(NSString *) error {
}

我正在使用https://github.com/moeseth/Bing-Translator进行翻译,这是一个围绕 Microsoft 必应翻译的 Objective-c 包装器。

4

1 回答 1

2

我不认为你真的能做到这一点,主要是因为当你翻译时,你经常会得到与开始时不同的字数。确定哪些单词/组与之前/之后字符串中的哪些单词匹配将非常困难(除非您一次翻译一个单词而不会翻译相同)。如果不是因为这个,您可以在翻译后的字符串上使用 componentsSeparatedByCharactersInSet 并通过旧数组查找空字符串以确定在新数组中添加新行的位置。

顺便说一句,您可以使用以下方法,而不是创建数组然后将其写入可变字符串:

NSMutableString *mString = [txtView.text mutableCopy];

(除非您将数组用于其他用途)

于 2012-04-22T15:41:46.750 回答