自动英文SLUG--BlogEngine的小插件

自动将中文标题翻译成英文后设置为slug.利用Google Language API,JSON数据处理用的JSON.NET.

 1using System;
 2using System.Data;
 3using System.Net;
 4using System.IO;
 5using System.Web;
 6using System.Text.RegularExpressions;
 7using BlogEngine.Core;
 8using BlogEngine.Core.Web.Controls;
 9using Newtonsoft.Json;
10
11/// <summary>
12/// Summary description for CnSlug
13/// </summary>

14[Extension("自动将中文标题转换为英文Slug""1.0""<a href=\"http://icyflash.blog.sohu.com\">Icyflash</a>")]
15public class CnSlug
16{
17    public CnSlug()
18    {
19        Post.Saving += new EventHandler<SavedEventArgs>(Post_Saving);
20    }

21
22    private void Post_Saving(object sender, SavedEventArgs e)
23    {
24        Post post = (Post)sender;
25        if (post.IsNew)
26        {
27            WebClient wb = new WebClient();
28            string url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=zh%7Cen&q=" + HttpUtility.UrlEncode(post.Title);
29            string jsonText = wb.DownloadString(url);
30            JsonSerializer serializer = new JsonSerializer();
31            JavaScriptObject jsObject = (JavaScriptObject)serializer.Deserialize(new JsonReader(new StringReader(jsonText)));
32            if (jsObject["responseStatus"].ToString() == "200")
33            {
34                JavaScriptObject jsObj = (JavaScriptObject)jsObject["responseData"];
35                post.Slug = Utils.RemoveIllegalCharacters(jsObj["translatedText"].ToString());
36            }

37        }

38    }

39}

40




posted @ 2008-04-12 20:11  Icyflash  阅读(988)  评论(5)    收藏  举报