我有一个从网上抓取的Nations
列表,这是以英文返回的。我将每个Nation
保存在这样的列表中:
List<Nation> Nations { get; set; } = new List<Nation>();
其中Nation
有此实现:
public Nation
{
public string Name { get; set; }
public string Link { get; set; }
}
属性Name
包含Nation
的英文名称,所以基本上我会得到类似的内容:
England
Italy
France
...
我正在寻找一种方法来翻译当前文化中列表Nations
的每个项目的名称,因此假设当前的软件语言是意大利语:
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("it");
我怎样才能用意大利语翻译所有国家?
我没有在.NET
框架中找到任何允许这样做的方法,如:
//Get the current language of the app
var language = Thread.CurrentThread.CurrentCulture;
//Iterate through all items of the list and change the language
foreach(var nation in nations)
{
nation.Name = GetTranslatedName(nation.Name);
}
有什么建议吗?想法?
感谢。
答案 0 :(得分:0)
我认为.NET中没有本机支持。 我建议使用this third-party API:
答案 1 :(得分:0)
您可以尝试使用Google翻译:
将语言对传递为en|it
public string GoogleTranslateText(string textToTranslate, string languagePair)
{
string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", textToTranslate, languagePair);
WebClient webClient = new WebClient();
webClient.Encoding = System.Text.Encoding.UTF8;
string translatedText = webClient.DownloadString(url);
translatedText = translatedText.Substring(translatedText.IndexOf("<span title=\"") + "<span title=\"".Length);
translatedText = translatedText.Substring(translatedText.IndexOf(">") + 1);
translatedText = translatedText.Substring(0, translatedText.IndexOf("</span>"));
return translatedText.Trim();
}