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のBingTranslatorのObjective-cラッパーです。

4

1 に答える 1

2

主に、翻訳を行うと、最初とは異なる数の単語が得られることがよくあるため、これを実際に行うことができるとは思いません. どの単語/グループが前/後の文字列のどの単語と一致するかを判断することは、非常に困難です (一度に 1 つの単語を翻訳しても、同じものは翻訳されない場合を除きます)。そうでない場合は、変換された文字列に対して componentsSeparatedByCharactersInSet を使用し、古い配列を調べて空の文字列を探し、新しい配列のどこに新しい行を追加するかを決定できます。

ちなみに、配列を作成して可変文字列に書き込む代わりに、次のように使用できます。

NSMutableString *mString = [txtView.text mutableCopy];

(配列を他の目的で使用している場合を除く)

于 2012-04-22T15:41:46.750 に答える