`
shangjava
  • 浏览: 1236260 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Rails 消息资源的国际化(I18n)

阅读更多
一、概述
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),代码如下
<!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"

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

相关推荐

    i18n:轻量级库,可在Javascript上提供I18n翻译

    百济I18n 这是一个小库,可以在JavaScript上提供Rails I18n的翻译。 从借来的特征: 多元化日期/时间本地化号码本地化语言环境回退资产管道支持还有更多! :)用法安装通过NPM npm install baiji-i18n 运行npm ...

    Struts2和Rails的国际化实现

    Rails是基于Ruby的Web框架,它提供了非常简洁的国际化(i18n)API。以下是如何在Rails中实现国际化: 1. **创建翻译文件**:在`config/locales`目录下,为每种语言创建一个对应的YAML文件,例如`en.yml`(英语)和`...

    rails国际化

    在Rails中,国际化主要依赖于`i18n`库,该库提供了一套灵活的API来管理和处理翻译文本。Rails的国际化工作流程包括以下几个步骤: 1. **配置**:首先,在`config/application.rb`或`config/environments/...

    i18n_routing:用于Rails 2.3.x和Rails的I18n路由模块。轻松转换您的路由!

    I18nRouting I18n_routing是Ruby on Rails的插件,可让您轻松地通过版本2.2以后的Rails中包含的I18n api转换路线。 所有必需的信息都可以在Wiki上找到: 如有疑问,请使用i18_routing谷歌论坛: 适用于Rails 2.3、...

    Ruby-Localer自动检测丢失的I18n翻译工具

    Ruby-Localer是一款专为Ruby开发设计的自动化工具,用于检测和管理应用程序中的I18n(国际化)翻译。在软件开发中,I18n是确保应用能在不同语言环境中正常运行的关键步骤,它允许开发者将文本从源代码中分离出来,...

    friendly-locale:Xamarin和.NET的简单跨平台国际化。 本地化类似于Ruby On Rails-http:guides.rubyonrails.orgi18n.html(测试版)

    Rails-i18n是Ruby on Rails框架的一个插件,它提供了一套完整的国际化的解决方案,包括YAML格式的翻译资源和一套强大的API。友好-locale项目试图模仿这种模式,为.NET开发者提供类似的体验。`LocalizationC#`可能是...

    Rails osdc

    3. **国际化和本地化**: Rails支持国际化(i18n)和本地化(l10n),允许开发者轻松地为不同的语言和地区定制应用程序。这通常涉及到对字符串资源进行管理,以及日期和时间格式的调整。 ### 结论 通过上述知识点的学习...

    gitlab-i18n-patch, Unofficial Japanese translation for GitLab Community Edition..zip

    "gitlab-i18n-patch" 是针对 GitLab 社区版的一个非官方的日语翻译补丁,旨在为日本用户提供更友好的本地化体验。 在开源世界中,多语言支持是至关重要的,因为这能够吸引全球范围内的用户和贡献者。GitLab-i18n-...

    好用的rails 2.0 Api 文档

    国际化(i18n)** Rails 2.0提供i18n模块,支持多语言应用。通过配置文件,可以方便地切换和管理不同语言的文本。 综上所述,Rails 2.0 API文档包含了Rails框架的各个重要组件和概念,对于学习和使用Rails 2.0的...

    Ruby on Rails 指南 v5.0.1 中文版

    - **为Rails I18n作贡献**:鼓励社区成员为Rails的国际化功能贡献力量。 - **资源**:列出相关的资源链接。 - **作者**:列出指南的作者和贡献者。 #### ActionMailer基础 - **简介**:介绍ActionMailer模块的作用...

    Rails API 文档

    10. **国际化(I18n)** Rails 2.0引入了强大的国际化支持,使得应用可以轻松地适应多种语言环境。 通过阅读和查阅Rails 2.0 API文档,开发者不仅可以深入理解Rails框架的工作原理,还能学习如何有效地利用其特性来...

    Rails API

    15. **国际化(I18n)**:Rails内置的国际化支持,帮助开发者创建多语言应用。 通过阅读和研究Ruby on Rails API文档,开发者可以深入了解Rails的工作原理,学习如何有效地利用其特性来构建高性能、可维护的Web应用...

    the rails way

    - **I18n Support**:增强了国际化支持,使得应用可以更容易地适应不同的语言和文化需求。 ### 《The Rails Way》内容概述 《The Rails Way》这本书深入探讨了Rails的各个方面,从基础到高级主题都有覆盖,适合...

    rails-1.1.0

    7. **国际化与本地化支持**:Rails 1.1.0开始支持i18n(国际化)和l10n(本地化),使应用能够轻松适应多种语言和文化环境。 8. **插件支持**:Rails 1.1.0加强了插件机制,使得开发者可以通过安装第三方插件扩展...

    rails22新添功能.pdf

    Rails 2.2引入了一个强大的国际化系统(i18n)。这使得开发者能够轻松地为应用程序添加多语言支持,从而满足全球用户的需求。i18n支持允许开发者轻松创建多语言界面,无需编写额外的复杂代码即可实现动态切换语言环境...

    Beginning Rails 4

    本章介绍了 Rails 的国际化(I18n)支持。 - **多语言支持**:如何为不同的语言和地区提供翻译。 - **日期和时间格式化**:根据不同地区的习惯调整日期和时间的显示方式。 #### 第13章:部署 Rails 应用 当应用...

    ruby on rails 实践

    涉及的内容包括资源文件的管理(Assets Management)、缓存及其服务、异步任务处理、邮件发送服务以及国际化(I18n)等。最后,本章还包括了生产环境的部署步骤,以及一些常用的Ruby Gems(扩展库)。 为了方便读者...

    ruby英文版软化为中文版

    5. **第三方库支持**:除了I18n,还有一些第三方库如`lokalise-rails`,它们提供了更强大的国际化功能,包括自动化翻译更新和多语言管理。 6. **错误和日志的中文化**:Ruby的错误信息默认是英文的,若要使其显示...

Global site tag (gtag.js) - Google Analytics