我在sql server中有一个表,它以英文存储一些文本(在nvarchar列中)。
我必须创建一个存储过程,我将传递一种语言(印地语,古吉拉特语,阿拉伯语)作为参数&它将返回从英语转换为该语言的数据。
我知道最好的方法是将数据存储在不同列中的那些语言中,但我不能这样做。想要依赖sql server。
是否有一些实用工具或功能可以帮助我实现这一目标。
寻找初学者或想法..
答案 0 :(得分:1)
Sql-Server无法从一种语言翻译成另一种语言,但您可以使用外部工具,请查看https://blogs.msdn.microsoft.com/samlester/2013/05/04/language-translation-in-sql-server-using-bing-translator-apis-sql-clr/
或者您可以为Google翻译器创建一个包装器:http://www.sqlservercentral.com/Forums/Topic819515-386-1.aspx
using System;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
public static class Translator {
/// <summary>
/// Translates the text.
/// </summary>
/// <param name="input">The input.</param>
/// <param name="languagePair">The language pair.</param>
/// <returns></returns>
public static void Main(string[] args)
{
TranslateText(args[1], args[2]);
}
/// <summary>
/// Translate Text using Google Translate
/// </summary>
/// <param name="input">The string you want translated</param>
/// <param name="languagePair">2 letter Language Pair, delimited by "|".
/// e.g. "en|da" language pair means to translate from English to Danish</param>
/// <param name="encoding">The encoding.</param>
/// <returns>Translated to String</returns>
public static string TranslateText(string input, string languagePair)
{
string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", input, languagePair);
string result = String.Empty;
using(WebClient webClient = new WebClient())
{
webClient.Encoding = System.Text.Encoding.UTF7;
result = webClient.DownloadString(url);
}
Match m = Regex.Match(result, "(?<=<div id=result_box dir=\"ltr\">)(.*?)(?=</div>)");
if (m.Success) result = m.Value;
return result;
}
}
但请注意,如果您每分钟请求的服务器数量过多,Google会立即阻止您。