论坛首页 编程语言技术论坛

用Google Translate帮你做URL优化

浏览 9986 次
精华帖 (9) :: 良好帖 (19) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-26   最后修改:2008-12-26
没发现acts_as_slugable有多大用处,给表增加一列记录url_slug?

既然用google翻译这样就可以了

<%=link_to article.title, {:action => 'show', :id => "#{article.id}-#{article.title}"},:class => "show" %>

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">

    google.load("language", "1");

    function initialize() {
      $(".show").each(function(){
        var link = $(this);
        google.language.translate(link.text(), "zh", "en", function(result) {
          if (!result.error) {
            var id = link.attr("href").split("-")[0];
            link.attr("href",id+"-"+slugify(result.translation));
          }
        });
      });
    }

   function slugify(str) {
     return str.toLowerCase().replace(/[^a-z0-9-_]+/g, '-').replace(/^-|-$/g, '');
   }
    google.setOnLoadCallback(initialize);

    </script>


把标题翻译过来就好了.
0 请登录后投票
   发表时间:2008-12-26  
pure 写道
没发现acts_as_slugable有多大用处,给表增加一列记录url_slug?

既然用google翻译这样就可以了

<%=link_to article.title, {:action => 'show', :id => "#{article.id}-#{article.title}"},:class => "show" %>

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">

    google.load("language", "1");

    function initialize() {
      $(".show").each(function(){
        var link = $(this);
        google.language.translate(link.text(), "zh", "en", function(result) {
          if (!result.error) {
            var id = link.attr("href").split("-")[0];
            link.attr("href",id+"-"+slugify(result.translation));
          }
        });
      });
    }

   function slugify(str) {
     return str.toLowerCase().replace(/[^a-z0-9-_]+/g, '-').replace(/^-|-$/g, '');
   }
    google.setOnLoadCallback(initialize);

    </script>


把标题翻译过来就好了.



看一下 http://www.iteye.com/news 页面,有多少个新闻的链接,如果用你这种做法,完全由客户端更改这些链接的地址,是多大的负担,而且根本没有 SEO 的作用了。
0 请登录后投票
   发表时间:2008-12-26  
hozaka 写道
pure 写道
没发现acts_as_slugable有多大用处,给表增加一列记录url_slug?

既然用google翻译这样就可以了

<%=link_to article.title, {:action => 'show', :id => "#{article.id}-#{article.title}"},:class => "show" %>

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">

    google.load("language", "1");

    function initialize() {
      $(".show").each(function(){
        var link = $(this);
        google.language.translate(link.text(), "zh", "en", function(result) {
          if (!result.error) {
            var id = link.attr("href").split("-")[0];
            link.attr("href",id+"-"+slugify(result.translation));
          }
        });
      });
    }

   function slugify(str) {
     return str.toLowerCase().replace(/[^a-z0-9-_]+/g, '-').replace(/^-|-$/g, '');
   }
    google.setOnLoadCallback(initialize);

    </script>


把标题翻译过来就好了.



看一下 http://www.iteye.com/news 页面,有多少个新闻的链接,如果用你这种做法,完全由客户端更改这些链接的地址,是多大的负担,而且根本没有 SEO 的作用了。

明白了,那这个址在新增/修改这条数据时就已经生成放在url_slug字段了是吧?

0 请登录后投票
   发表时间:2008-12-26  
To: pure
Quake Wang 写道
用ajax调用是因为这个优化url只是辅助作用,对于翻译结果不满意的,用户还能手工修改。
放到后台的话,确实可以更加自动化,但是也有了潜在的风险:创建数据的操作依赖于google所提供的服务(考虑到网络和GFW),还需要加上一些超时判断,比较麻烦。


Quack Wang 既然说了,对结果不满意可以修改,那么很明显就只能在new的时候使用
0 请登录后投票
   发表时间:2008-12-27  
hozaka 写道
To: pure
Quake Wang 写道
用ajax调用是因为这个优化url只是辅助作用,对于翻译结果不满意的,用户还能手工修改。
放到后台的话,确实可以更加自动化,但是也有了潜在的风险:创建数据的操作依赖于google所提供的服务(考虑到网络和GFW),还需要加上一些超时判断,比较麻烦。


Quack Wang 既然说了,对结果不满意可以修改,那么很明显就只能在new的时候使用

嗯~是的,多谢提醒!
0 请登录后投票
   发表时间:2008-12-27  
how about translate to pingyin?
0 请登录后投票
   发表时间:2009-01-04  
中文网站转拼音才是出路
0 请登录后投票
   发表时间:2009-01-07  
原来Javaeye也是这么弄的呀 哈哈 发个python 实现 用到了BeautifulSoup 直接去网页爪..

__all__ = ('source_languages', 'target_languages', 'translate')

import sys
import urllib
from google.appengine.api import urlfetch

from BeautifulSoup import BeautifulSoup

def translate(sl, tl, text):

    assert type(text) == type(u''), "Expects input to be unicode."

    # Do a POST to google

    # I suspect "ie" to be Input Encoding.
    # I have no idea what "hl" is.

    translated_page = urlfetch.fetch(
        url="http://translate.google.com/translate_t?" + urllib.urlencode({'sl': sl, 'tl': tl}),
        payload=urllib.urlencode({'hl': 'en',
                               'ie': 'UTF8',
                               'text': text.encode('utf-8'),
                               'sl': sl,
                               'tl': tl}),
        method=urlfetch.POST,
        headers={'Content-Type': 'application/x-www-form-urlencoded'}
    )

    if translated_page.status_code == 200:
        translated_soup = BeautifulSoup(translated_page.content)
        return translated_soup('div', id='result_box')[0].string
    else:
        return ""


0 请登录后投票
   发表时间:2009-01-09  
以前用过google的chartAPI,不过我们公司做的系统一向不参与外网的连接,所以无奈的退出google在线的API。
0 请登录后投票
   发表时间:2009-01-12  
我也觉得拼音比较好,如果是拼音+分词就比较实用了。毕竟中国人也被习惯去看一长串连续的拼音。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics