نمایش نتایج 1 تا 4 از 4

نام تاپیک: استفاده از API ترجمه گوگل

  1. #1

    Post استفاده از API ترجمه گوگل

    منبع این مقاله: وبلاگ استاد نصیری

    مطابق Ajax API ترجمه گوگل، براي ترجمه يك متن بايد محتويات آدرس زير را تحليل كرد:

    http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q={0}&langpair={1}|{2}كه در آن پارامتر اول، متن مورد نظر، پارامترهاي 1 و 2 زبان‌هاي مبدا و مقصد مي‌باشند. براي دريافت اطلاعات، ذكر ارجاع دهنده الزامي است (referrer)، اما ذكر كليد API گوگل اختياري مي‌باشد (كه هر فرد مي‌تواند كليد خاص خود را از گوگل دريافت كند).
    بنابراين براي استفاده از آن تنها كافي است اين URL را تشكيل داده و سپس محتويات خروجي آن‌را آناليز كرد. فرمت نهايي دريافت شده از نوع JSON است. براي مثال اگر hello world! را به اين سرويس ارسال نمائيم،‌ خروجي نهايي JSON‌ دريافت شده به صورت زير خواهد بود:
    //{\"responseData\": {\"translatedText\":\"سلام جهان!\"}, \"responseDetails\": null, \"responseStatus\": 200}

    در كتابخانه‌ي System.Web.Extensions.dll دات نت فريم ورك سه و نيم، كلاس JavaScriptSerializer براي اين منظور پيش بيني شده است. تنها كافي است به متد Deserialize آن، متن JSON دريافتي را پاس كنيم:
          GoogleAjaxResponse result =
    new JavaScriptSerializer().Deserialize<GoogleAjaxRespo nse>(jsonGoogleAjaxResponse);

    براي اينكه عمليات نگاشت اطلاعات متني JSON به كلاس‌هاي دات نتي ما با موفقيت صورت گيرد، مي‌توان خروجي JSON گوگل را به شكل زير نمايش داد:
    //ResponseData.cs file
    public class ResponseData
    {
    public string translatedText { get; set; }
    }

    //GoogleAjaxResponse.cs file
    using System.Net;

    /// <summary>
    /// كلاسي جهت نگاشت اطلاعات جي سون دريافتي به آن
    /// </summary>
    public class GoogleAjaxResponse
    {
    public ResponseData responseData { get; set; }
    public object responseDetails { get; set; }
    public HttpStatusCode responseStatus { get; set; }
    }

    با اين توضيحات، كلاس نهايي ترجمه گوگل ما به شكل زير خواهد بود:
    using System;
    using System.Globalization;
    using System.IO;
    using System.Net;
    using System.Web;
    using System.Web.Script.Serialization;

    //{\"responseData\": {\"translatedText\":\"سلام جهان!\"}, \"responseDetails\": null, \"responseStatus\": 200}

    public class CGoogleTranslator
    {
    #region Fields (1)

    /// <summary>
    /// ارجاع دهنده
    /// </summary>
    private readonly string _referrer;

    #endregion Fields

    #region Constructors (1)

    /// <summary>
    /// مطابق مستندات نياز به يك ارجاع دهنده اجباري مي‌باشد
    /// </summary>
    /// <param name="referrer"></param>
    public CGoogleTranslator(string referrer)
    {
    _referrer = referrer;
    }

    #endregion Constructors

    #region Properties (2)

    /// <summary>
    /// ترجمه از زبان
    /// </summary>
    public CultureInfo FromLanguage { get; set; }

    /// <summary>
    /// ترجمه به زبان
    /// </summary>
    public CultureInfo ToLanguage { get; set; }

    #endregion Properties

    #region Methods (2)

    // Public Methods (1)

    /// <summary>
    /// ترجمه متن با استفاده از موتور ترجمه گوگل
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    public string TranslateText(string data)
    {
    //ساخت و انكدينگ آدرس مورد نظر
    string url =
    string.Format(
    "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q={0}&langpair={1}|{2}",
    HttpUtility.UrlEncode(data), //needs a ref. to System.Web.dll
    FromLanguage.TwoLetterISOLanguageName,
    ToLanguage.TwoLetterISOLanguageName
    );

    //دريافت اطلاعات جي سون از گوگل
    string jsonGoogleAjaxResponse = fetchWebPage(url);

    //needs a ref. to System.Web.Extensions.dll
    //نگاشت اطلاعات جي سون دريافت شده به كلاس مرتبط
    GoogleAjaxResponse result =
    new JavaScriptSerializer().Deserialize<GoogleAjaxRespo nse>(jsonGoogleAjaxResponse);

    if (result != null && result.responseData != null && result.responseStatus == HttpStatusCode.OK)
    {
    return result.responseData.translatedText;
    }
    return string.Empty;
    }
    // Private Methods (1)

    /// <summary>
    /// دريافت محتويات جي سون بازگشتي از گوگل
    /// </summary>
    /// <param name="url"></param>
    /// <returns></returns>
    string fetchWebPage(string url)
    {
    try
    {
    var uri = new Uri(url);
    if (uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps)
    {
    var request = WebRequest.Create(uri) as HttpWebRequest;
    if (request != null)
    {
    request.Method = WebRequestMethods.Http.Get;
    request.Referer = _referrer;
    request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; ; rv:1.8.0.7) Gecko/20060917 Firefox/1.9.0.1";
    request.AllowAutoRedirect = true;
    request.Timeout = 1000 * 300;
    request.KeepAlive = false;
    request.ReadWriteTimeout = 1000 * 300;
    request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

    using (var response = request.GetResponse() as HttpWebResponse)
    {
    if (response != null)
    {
    using (var reader = new StreamReader(response.GetResponseStream()))
    {
    return reader.ReadToEnd().Trim();
    }
    }
    }
    }
    }
    return string.Empty;
    }
    catch (Exception ex)
    {
    Console.WriteLine(String.Format("fetchWebPage: {0} >> {1}", ex.Message, url), true);
    return string.Empty;
    }
    }

    #endregion Methods
    }

    مثالي در مورد نحوه‌ي استفاده از آن براي ترجمه يك متن از انگليسي به فارسي:
    string res = new CGoogleTranslator("http://vahidnasiri.blogspot.com/")
    {
    FromLanguage = CultureInfo.GetCultureInfo("en-US"),
    ToLanguage = CultureInfo.GetCultureInfo("fa-IR")
    }.TranslateText("Hello world!");
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  2. #2

    نقل قول: استفاده از API ترجمه گوگل

    با سلام.
    من این کد رو امتحان کردم.
    GoogleAjaxResponse رو not found میده (خط 73) کسی میتونه راهنمائی کنه؟

  3. #3
    کاربر تازه وارد آواتار bamdadd
    تاریخ عضویت
    اردیبهشت 1386
    پست
    94

    نقل قول: استفاده از API ترجمه گوگل

    ببخشید دوستان ولی این پست چه ربطی به گوگل وب تولکیت داره ؟

  4. #4
    کاربر دائمی آواتار fakhravari
    تاریخ عضویت
    دی 1388
    محل زندگی
    بوشهر
    سن
    29
    پست
    7,858

    نقل قول: استفاده از API ترجمه گوگل

    fa be en
    چطوری؟


برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •