在 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),
:on
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),
:on
change => 'this.form.submit()' %>
<%= submit_tag 'submit' %>
<% end %>
注解:LANGUAGES 就是刚在配置文件中声明的LANGUAGES
3、创建一个前置过滤器,用于设定本地化语言(RailsProject> app/controllers/application.rb),代码如下 :
class ApplicationController < ActionController::Base
<%= 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" >
5、在存放多国语言目录下加入各种语种文件
RailsProject> config/locales/zh.yml 代码如下
zh:
base:
title: "演示Rails的国际化支持"
RailsProject> config/locales/en.yml 代码如下
en:
base:
title: "Show Rails internationalization support"
至此,重启服务器,你就可以看到双语网站了。
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>
<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"
至此,重启服务器,你就可以看到双语网站了。
相关推荐
在这个特定的场景中,我们关注的是Unity的一个重要插件——I2 Localization,用于实现游戏或应用的多语言本地化。这个插件可以帮助开发者轻松地管理不同语言版本的文本和资源,提升用户体验。 I2 Localization插件...
I2 Localization是一款专门针对Unity设计的多语言本地化插件,能够帮助开发者轻松实现游戏内容的国际化。 I2 Localization插件提供了强大的功能,包括文本管理和翻译工作流,支持多种格式的资源导入,以及动态切换...
"unity实现多语言插件"的标题表明我们将探讨如何在Unity中集成多语言支持,使游戏或应用能够适应不同地区的用户需求。 描述中提到的插件"I2 Localization 2.8.6 f2.unitypackage"是一个专门用于Unity的本地化解决...
Unity 语言本地化插件I2 Localization_v2.8.13 f2是专为Unity游戏开发者设计的一个强大工具,旨在帮助他们轻松实现游戏或应用的多语言支持。这款插件的强大之处在于它不仅限于处理文本,还支持声音和图片的本地化,...
Unity 使用L2Localization实现App切换多国语言 1.我提交的是整个Assets文件夹压缩包, 2.里面带有示例,和代码,开箱即用(我用unity2019 2020 2021都测试过可用) 3.支持 多平台
在开发软件时,为了满足全球用户的语言需求,创建支持多语言的程序版本是至关重要的。在Visual C++(简称VC)环境下,实现多语言程序版本主要涉及到资源文件、MFC框架、国际化和本地化策略等多个方面。下面我们将...
2、Codestyling Localization插件支持翻译的不论是主题还是插件等,都是在存在.po语言包的基础上进行的翻译,如果只包含主题前台的.po语言包,就不能翻译后台内容。如果php文件内的翻译,也是不能实现的。
在游戏开发或者软件工程中,资源本地化是必不可少的一个环节,尤其对于面向全球市场的项目来说,能够提供多语言支持是至关重要的。I2 Localization是一款专为Unity引擎设计的高效资源本地化插件,它极大地简化了这一...
在.NET框架中,开发Windows Forms(WinForm)应用程序时,我们常常需要实现多语言支持,以便用户可以根据他们的语言偏好来使用软件。VB.NET是.NET框架下的一种编程语言,完全支持多语言应用程序的开发。本篇文章将...
支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种语言支持各种...
通过以上方法,开发者可以借助“androidstudio自动生成国际语言的插件”高效地实现应用的多语言支持,提升应用的全球适用性。记住,良好的国际化设计不仅关乎语言,也包括适应不同文化的用户体验。
3. **实时更新**:该插件支持在运行时动态更新本地化内容,这意味着玩家可以即时看到翻译的更新,无需重新下载整个应用。 4. **数据存储**:I2 Localization 可以使用多种方式存储本地化数据,如 JSON、XML 或...
I2 Localization是一款针对Unity引擎的本地化插件,其最新版本v2.8.14 f1提供了强大的多语言支持,使得开发者能够更轻松地管理项目中的文本和资源,以适应不同地区的用户。这个unitypackage文件的低积分下载,为学习...
在ASP.NET MVC或ASP.NET Core中,可以使用Globalization和Localization特性来实现视图的多语言支持。例如,可以在视图模型上添加Display和DisplayName特性,指定不同语言下的显示文本: ```csharp public class ...
对wordpress来说,只要包含语言文件(.PO/MO)的主题或插件,理论上都可以翻译,像我们常见的很多优秀的国外主题,因为很少有中文版的,特别是一些新主题,为此,伤透了不少爱好wp主题的并且英文不是很好的国内同学...
"ASP.NET Web 页面元素多语言化实现分享" ...同时,我们还讨论了 ASP.NET MVC 的 Localization 和 ASP.NET Core MVC 项目实现多语言支持。页面元素多语言化是提高网站可读性和使用范围的重要一步。
"I2 Localization v2.8.6 f2"是针对Unity引擎精心设计的一款专业语言本地化插件,它为开发者提供了强大而灵活的工具,以实现多语言支持,让您的项目能够跨越语言障碍,触达更广泛的用户群体。 首先,了解"I2 ...
在开发Web应用时,提供多语言支持是必不可少的,尤其是对于全球用户基数庞大的项目。Angular,作为一款强大的前端框架,提供了完善的国际化(i18n)功能,使得开发者能够轻松地实现网站内容根据不同地区和语言的切换...
本篇文章将深入探讨WPF如何实现国际化和本地化,以及如何创建支持多语言的应用。 **一、WPF中的国际化和本地化概念** 1. **国际化(Internationalization)**:国际化是指设计和开发应用程序时考虑到全球市场的...
2. **动态加载与更新**:插件支持在运行时动态加载和切换语言,这使得开发者可以轻松地进行语言更新,而无需重新构建整个项目。 3. **多种数据格式支持**:I2 Localization支持JSON、XML、CSV等多种格式的翻译文件...