Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12813
  • 博文数量: 4
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-25 13:42
文章分类
文章存档

2013年(3)

2012年(1)

我的朋友
最近访客

分类: Python/Ruby

2013-06-24 14:21:56

一、概述
    Rails 已经完成了资源国际化的内部实现,我们只需要在配置文件中开启 I18n,并写相应语种的资源文件就可以了。

二、例子演示
    1、开启I18n
         创建一个配置文件,用于存放本地化的信息( RailsProject> config/initializers/i18n.rb),文件内容如下:

         I18n.default_locale = 'zh'
         LOCALES_DIRECTORY = "#{RAILS_ROOT}/config/locales/"

         LANGUAGES = {
              'English' => 'en',
              'Chinese' => 'zh'
          }
   
         参数解释:
              I18n.default_locale 指定默认的本地语言
              LOCALES_DIRECTORY 指定存放多国语言文件的目录
              LANGUAGES 存储所支持语种

      2、在layout文件中加入一个下拉框,给用于提供语种选择(RailsProject> app/views/layouts/base.rhtml ),添加代码如下
          <% form_tag '', :method => 'GET', do %>
            <%= select_tag 'locale', options_for_select(LANGUAGES, I18n.locale),
                 :on
change => 'this.form.submit()' %>
             <%= submit_tag 'submit' %>
           <% end %>

    注解:LANGUAGES 就是刚在配置文件中声明的LANGUAGES

        3、创建一个前置过滤器,用于设定本地化语言(RailsProject> app/controllers/application.rb),代码如下
        class ApplicationController < ActionController::Base
  layout "base"
  before_filter :set_locale
  ...........
  protected
  def set_locale
    session[:locale] = params[:locale] if params[:locale]
    I18n.locale = session[:locale] || I18n.default_locale
    locale_path = "#{LOCALES_DIRECTORY}#{I18n.locale}.yml"
    unless I18n.load_path.include? locale_path
       I18n.load_path << locale_path
       I18n.backend.send(:init_translations)
    end
  rescue Exception => err
    logger.error err
    flash.now[:notice] = "#{I18n.locale} translation not available"
    I18n.load_path -= [locale_path]
    I18n.locale = session[:locale] = I18n.default_locale
  end
end

4、用I18n.translate方法(简写I18n.t,甚至t),将页面中写死的字符串替换掉(RailsProject> app/views/layouts/base.rhtml),代码如下
                                "" >


  <%= I18n.t 'base.title' %>

  
  ............



   5、在存放多国语言目录下加入各种语种文件
        RailsProject> config/locales/zh.yml  代码如下
        zh:
           base:
              title: "演示Rails的国际化支持"
    
       RailsProject> config/locales/en.yml 代码如下
       en:
          base:
              title: "Show Rails internationalization support"

至此,重启服务器,你就可以看到双语网站了。
本文转自:
阅读(553) | 评论(0) | 转发(0) |
0

上一篇:linux rm 命令

下一篇:工作站与PC的区别

给主人留下些什么吧!~~