`
peryt
  • 浏览: 52503 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论
  • waiting: 既然都指定了dataType为'script'那就不必特别在b ...
    jQuery

I18n,自动使你的网站具有多种语言

阅读更多
国际化(i18n)是rails2.2引入的新的特征,这一节我们演示如何使用他使你的网站自动具有多种语言。

当用户注册的时候,我们想使他们可以选择使用哪种语言,在此,我们让他们可以选择english 还是 wookieespeak。

我们使用Restful Authentication plugin来作为我们的用户管理模块。然后,在他的注册页面,我们添加一个field到User模型,叫做language,而且有一个dropdown field让用户可以选择他们喜欢的语言。

具体步骤如下:
ruby script/plugin install git://github.com/technoweenie/restful-authentication.git
ruby script/generate authenticated user sessions
第一步是安装插件,
第二步是生成文件,user是model的名称,这一步也会创建两个controller, 一个users,一个sessions。

搞定,现在我们可以打开注册页面了,
http://127.0.0.1:3000/signup    (为什么有这个route呢,自己去看config/routes.rb把)

我们需要给我们的user模型增加一个字段叫做lang,然后往user的new view中增加一个select box,让用户注册新用户的时候,可以选择语言。

首先在后台,ruby script/generate migration add_lang_col, 添加一个migration, 然后编辑这个migration:
  def self.up
    add_column :users, :lang, :string
  end
  def self.down
    remove_column :users, :lang
  end

然后在后台运行, rake db:migration, 在数据库中的users表中添加这个字段。

然后就要编辑new.html.erb, 添加如下代码:
<p><%= f.label :lang, "Language" %>
<%= f.select :lang, [['English', 'en'], ['Wookieespeak', 'wk']] %></p>

搞定,现在刷新我们的http://127.0.0.1:3000/signup, 就可以看到selectbox了。



2. 下面我们将要具体实现多语言的内部逻辑了
首先如果你使用的rails2.2 以上的版本,去config目录下面找locales文件夹,我们的网站要支持的各种语言的文件都将放在这里。每一种语言的文本都会存储在一个ymal文件中,现在已经有了一个en.ymal文件范本了。

要支持多种语言,我们首先要复制我们要翻译的语言到en.yml 文件。
en:
  welcome:
    title: "Welcome"
    paragraph: "Thank you for visiting our store."
  products:
    title: "Products"
    releaser: "Released"

下面就要创建wk版本yaml文件了:
  welcome:
    title: "Wyah"
    paragraph: "Wyaaaa, ruh, ruh, huwaa, muaa."
  products:
    title: "Mauhwaa"
    released: "Ruhha"




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics