`

I18n实现多语言包

阅读更多
转自:http://yangzb.iteye.com/blog/598150

localization 插件介绍

在 Rails 2.2 版本之前,Rails 应用程序都是采用localization插件实现应用程序的本地化,支持多语言。localization有点类似于gettext,使用很简单的方法就可以为你的应用实现多语言支持,进而实现应用的本地化。Rails 2.2 之后,Rails 引进了 I18n 模块,因此不需额外安装插件就支持多语言。
安装

这个插件的安装方式与其他的Rails插件安装没啥太大区别,只需要在Rails项目目录中按照如下命令安装即可:
RAILS_ROOT> ruby script\plugin install localization


使用

当localization插件安装完成之后,Rails项目启动之后将自动载入他,我们需要在Rails项目目录中建立一个lang目录用来存放语言包。

推荐的做法是在lang目录下建立的语言包的文件名应该与语言名能够对应起来,例如我们要建立一个中文语言包,我们就需要在RAILS_ROOT/lang/目录下建立一个名为zh_CN.rb的文件。内容如下:

Localization.define('zh_CN') do |l|
l.store 'Hello world', '你好,世界'  
end


然后在application.rb文件中加入如下内容,定义需要使用的语言名:
Localization.lang = 'zh_CN'


再打开一个模板文件,在其中输入如下内容:
<title><%= _("Hello world") %></title>


启动Rails项目,浏览这个页面,你就会在标题栏看到中文的标题


一、Rails I18n(国际化)
   Rails在 2.2 版本以后已经把 I18n 模块引入了 Rails 框架,以前的多语言支持大都采用 localization 插件完成的。在 Rails 2.2 版本后,我们只需要在配置文件中开启 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),:onchange => '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),代码如下 :
        
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html>
<head>
  <title><%= I18n.t 'base.title' %></title>
</head>
<body> 
  ............
</body>
</html>


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

至此,重启服务器,你就可以看到双语网站了。
分享到:
评论

相关推荐

    vue项目中基于i18n的多语言的中文提取与写入的工具.zip

    这个压缩包“vue项目中基于i18n的多语言的中文提取与写入的工具.zip”似乎包含了一个名为“i18n-collect-cli-master”的项目,它可能是一个命令行工具,用于帮助Vue项目自动收集和管理中文翻译。 Vue-i18n 工作原理...

    js使用i18n实现页面国际化的方法

    总结以上内容,要实现一个页面的国际化,首先需要确定一个国际化策略,选择合适的库(如jQuery.i18n.properties),准备多语言的资源文件,然后在页面加载时根据用户的语言偏好动态加载对应的资源文件,并替换页面中...

    Vue或UniApp 前端语言国际化 i18n lang.js包

    本篇将详细介绍Vue和UniApp中的i18n实现,以及lang.js包的相关内容。 首先,Vue.js的国际化插件名为`vue-i18n`,它是一个为Vue.js应用程序提供多语言支持的库。`vue-i18n.js`是这个插件的核心文件,包含了处理语言...

    h5国际化demo[i18n实现]

    总的来说,这个H5国际化demo通过i18n技术实现了多语言支持,不仅适用于H5浏览器,还考虑了非H5环境的兼容性。开发者可以借鉴这个示例来构建自己的多语言网站或应用,提高用户体验,扩大服务范围,覆盖全球用户。通过...

    使用vue 国际化i18n 实现多实现语言切换功能

    特别是对于前端框架Vue.js,它已经具有支持国际化插件的能力,本文将重点介绍如何使用Vue的国际化库vue-i18n来实现多语言切换功能。 首先,我们需要创建一个名为i18n的文件夹,在此文件夹内创建三个主要文件:en.js...

    Java i18n的简单实现

    Java i18n(Internationalization,国际化)是Java平台提供的一种强大的支持多语言环境的机制。这个技术使得软件能够根据用户的地区和语言习惯进行本地化显示。在Java中,i18n通常通过资源包(Resource Bundle)来...

    JS i18n实现,支持带参数的功能

    JavaScript(简称JS)i18n(国际化)实现是指在Web应用中,为了支持不同地区的用户,使用JS进行多语言切换的技术。i18n这个术语来源于“internationalization”,其中的18代表字母数,n代表最后两个字母。在本文中,...

    优雅集成i18n实现国际化信息返回.zip

    优雅集成i18n实现国际化信息返回是SpringBoot框架中一个重要的功能,它使得应用程序能够支持多语言环境,为全球用户提供更加友好的交互体验。在SpringBoot中,i18n(Internationalization)通常通过资源文件来实现,...

    i18n国际化插件

    总的来说,这个i18n国际化插件结合了Eclipse的易用性,Tomcat的稳定性和JavaScript的交互性,为开发者提供了一个强大的工具,帮助他们快速构建支持多语言的Web应用。通过深入研究提供的Demo和文档,我们可以学习到...

    基于jQuery.i18n.properties插件实现前端页面国际化demo

    前端页面的国际化(i18n)是现代Web应用中不可或缺的一个特性,它允许网站内容根据不同地区的语言习惯进行展示。...通过正确配置资源文件和调用API,可以轻松实现多语言支持,提升用户体验,拓宽应用的全球市场。

    黑群晖安装arpl-i18n

    而arpl-i18n(Automatic Region and Package Localization)则是为了实现系统的多语言支持和国际化,让非英文用户也能方便地使用黑群晖。 首先,我们需要理解J6413这个标签。这通常代表黑群晖的一个硬件平台,可能...

    利用vue-i18n实现多语言切换效果的方法

    在进行国际化多语言切换的开发过程中,Vue.js作为一款流行的前端框架,提供了一个名为vue-i18n的插件,使得实现多语言切换变得便捷和高效。vue-i18n插件的核心功能是让开发者能够为Vue应用添加多语言支持,并轻松地...

    jquery.i18n.properties-1.0.9.js

    总结,jQuery.i18n.properties-1.0.9.js是实现Web应用国际化的关键工具,它简化了.properties文件的处理,使得开发者能轻松实现多语言支持。通过合理利用这个插件,我们可以构建出适应全球用户的高质量Web应用。

    i18n.dll + i18n.west.dll

    为了实现多语言的PDF文档,iTextSharp需要借助i18n.dll等国际化组件来处理不同语言的文本排版和显示问题。 在实际应用中,开发者可能需要结合i18n.dll和i18n.west.dll文件,在iTextSharp库的基础上进行编程,以实现...

    struts2-i18n实现国际化例子

    **Struts2-i18n实现步骤** 1. **创建资源包**: 首先,你需要创建一个或多个资源包文件,例如`messages.properties`(默认英文)和`messages_zh_CN.properties`(简体中文)。在这些文件中,定义键值对,如`greeting...

    国际化-i18n

    国际化(i18n)是软件开发中的一个重要概念,它指的是使软件能够适应不同语言和地区的过程。这个术语“i18n”是由“internationalization”这个单词的首字母和中间的18个字母组成的,意在简洁地表示这个复杂的主题。在...

    jquery.i18n.properties.zip

    通过合理的配置和使用,开发者可以轻松实现多语言支持,提升用户体验,让网站和应用更好地走向世界。在实际项目中,结合其他前端框架如Angular或React,以及后台服务的支持,可以构建出更为强大的国际化解决方案。

    (三)Struts2国际化(i18n) :简单语言包的实现

    在Struts2中,国际化(i18n)是处理多语言环境的重要特性,使得同一个应用可以适应不同地区用户的需求。本篇文章将深入探讨如何在Struts2中实现简单语言包的国际化。 首先,我们需要了解什么是i18n。这里的数字"18...

    jquery-i18n-properties.zip

    《jQuery i18n Properties:实现前端国际化的关键组件》 在现代Web开发中,随着全球化需求的日益增强,网站和应用程序需要支持多种语言,以便更好地服务于全球用户。jQuery i18n Properties 就是这样一个关键工具,...

    基于i18n国际化微服务统一处理错误码

    通过结合SpringBoot框架和i18n(国际化)技术,我们可以实现错误信息的多语言支持,让错误信息能够适应不同的用户群体。 首先,让我们来深入理解SpringBoot。SpringBoot是Spring框架的一个子项目,它简化了创建独立...

Global site tag (gtag.js) - Google Analytics