新手问题 好初级的问题,rails 国际化用哪个

as181920 · 2013年04月09日 · 最后由 as181920 回复于 2013年04月14日 · 4489 次阅读

才正经弄国际化,惭愧。想问 http://localhost:3001/?locale=ja http://localhost:3001/ja/ 这两个方式,一个靠请求参数(default_url_options),一个靠路由(scope "/:locale")用哪个好,目前没看出来差别和各自优缺点。还是根据个人审美?

坐等答案,免得做了好久再改哈

#1 楼 @Los why:)个人喜好?

#2 楼 @as181920 不是个人喜好

君不欲细讲,吾便不可多问。

#4 楼 @as181920 手头上有工作,哪有时间细讲。。

我喜欢用/?locale=ja 这个

http://guides.rubyonrails.org/routing.html http://guides.rubyonrails.org/i18n.html 看看 rails 的 routing 和 i18n,当然你要 /?locale=ja 这个也行,但 rails 中一般习惯不是这样做

#7 楼 @robin 我要的是优缺点对比,实现都不是问题。

好吧,guide 上的我都熟悉。

要明白一个问题,至少同一方向问三个为什么

我想知道最后的那个为什么的结果。比如实际用 route 来实现在哪些时候可以定制一些方便的功能,或者哪个方便日后项目和其它非 rails 工程集成时可以更顺利等等。习惯背后也有原因或理念。

还可以根据用户浏览器的默认语言

直接根据浏览器语言,设定 locale,然后用户强制选择语言时,建议用 ?locale=ja,然后保存到 session,之后的请求就不带这个参数了。

这是一个好问题,我个人比较喜欢用 @kgen 的这种方案

默认根据浏览器语言来显示,参数用来强制修改

如果是在 URL 中带了 /ja/ 这样的东西,感觉对规划路由和做 SEO 都不太友好,带参数就更加难看了,保存到 session 中是比较常见的做法吧。

这完全是客户的需求问题嘛

好像每个做 locale 的都会遇到这个问题,我是这样做的,在 user model 添加一个 locale 属性,用户可以在设置界面进行修改,如果为空的话,就读取他的浏览器设置一个默认值,贴代码:

class ApplicationController < ActionController::Base
  before_filter :set_locale

  private
  def set_locale
    I18n.locale =  cookies[:locale] || setup_locale
  end

  def setup_locale
    if user_signed_in?
      current_user.update_attribute(:locale, guess_browser_language) if current_user.locale.blank?
      return cookies[:locale] = current_user.locale
    else
      return cookies[:locale] = guess_browser_language
    end
  end

  def guess_browser_language
    request.accept_language.split(/,/).each{|language|
      if language =~ /zh-cn/i
        return 'zh-cn'
      else
        return I18n.default_locale
      end
    } unless request.accept_language.blank?
    return I18n.default_locale
  end
end

#19 楼 @quakewang ,这个方法感觉很好。其实最喜欢直接给代码看滴,就是不好意思明说哈。Thx。

在做的时候特地跑 twitter 和 facebook 去看了下,都不在 url 里面。当然各有好处。 手上这个工程有些特殊原因用/ja 更好,以后普通应用感觉还是放数据库和客户端挺好。

新手提问!(github 页面的问题/octopress) 苦于一周才能发帖,问题自己实在不会解决,借宝贴一用。 今天在 rake setup_github_pages 的时候,提示 invalid byte sequence in UTF-8 Alt text here 因为实在对 ruby 一窍不通,只是勉强做了一个页面,麻烦求助一下大家,谢谢!

#21 楼 @sz8709 问题已解决。昨天添加了两个环境变量,删掉就好了。

呃,刚看到,解决就好:)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号