0

我正在使用 Microsoft 翻译 ( http://msdn.microsoft.com/en-us/library/ff512422.aspx )。具体来说,该TranslateArray()方法基本上需要一个文本字符串数组来翻译,结果是一个包含翻译文本的数组。

生成的翻译带有一种TranslateArrayResponse[]. 我的代码看起来像这样(为清楚起见缩短了)

string[] sourceTranslate = new string[3] {"My name is Peter", "Her name is Suzan", "We have fun"};
....
TranslateArrayResponse[] result = client.TranslateArray("", sourceTranslate, "en", "de", options);

client.TranslateArray()方法的挑战在于它只允许每个请求为 10,000 个字符,并且最多为 2000 个项目编号。我的sourceTranslate(一个 resx 文件)很容易包含超过 10,000 个字符,因此为了解决这个问题,我将请求拆分以适应这些边界。

我的问题是如何将值复制result到 string[] 或类似的 - 我需要稍后使用result(即将结果保存回新的 resx 文件)?

显然,像这样的东西是result += ...行不通的。

4

1 回答 1

1

有多种方法可以做到这一点。

一个简单的方法是在遍历值数组的同​​时逐步创建一个新字符串TranslateArrayResponse- 根据文档,它们每个都有一个TranslatedText类型的属性string

StringBuilder sb = new StringBuilder();
foreach (var tar in result) {
    sb.Append(tar.TranslatedText);
}
string resultString = sb.ToString();

另一种解决方案是使用 LINQSelect方法从每个项目中提取翻译文本,然后使用该string.Join方法连接字符串的结果枚举:

string resultString = string.Join("", result.Select(r => r.TranslatedText));
于 2013-11-29T20:54:09.013 回答