概述
一、多国语言切换
在 app/controllers/application_controller.rb 中加入:
before_action :set_locale
def set_locale
if params[:locale] && I18n.available_locales.include?( params[:locale].to_sym )
session[:locale] = params[:locale]
end
I18n.locale = session[:locale] || I18n.default_locale
end
在app/views/layouts/application.html.erb中添加:
<%= link_to "中文版", :controller => controller_name, :action => action_name, :locale => "zh-CN" %>
<%= link_to "English", :controller => controller_name, :action => action_name, :locale => "en" %>
二、使用i18n翻译
在application.rb中添加
class Application < Rails::Application
config.i18n.default_locale = "zh-CN"
end
在config/locales下新建zh-CN.yml
在其中加入需要翻译的,如果是model翻译就在activerecordattributes下添加Model名称和字段名称
zh-CN:
hello: 亲~ %{name}你好:
event_list: 活动列表
admin:
event_list: 活动列表管理
activerecord:
attributes:
event:
name: 名称
event:
status:
draft: 草稿
public: 公开
private: 私密
在view中使用
<%= t( 'hello', name:current_user.name ) %>
<%= t( 'admin.event_list' ) %>
<%= t( event.status, scope:'event.status' )
还有一些常用的gem
gem “rails-i18n”
gem “devise-i18n”
其实,翻译档档名叫 events.yml、zh-TW.yml、en.yml 什么都无所谓,重要的是 YAML 结构中第一层要对应locale的名称,也就是 zh-CN,Rails 会加载 config/locales 下所有的YAML词汇档案。
三、本地时区设置
在application.rb中添加
class Application < Rails::Application
config.time_zone = "Beijing"
end
这个是Time.now显示的时间设置为北京时间,数据库存的时间还是差8个小时,如果要把数据库时间也修改为本地则需要在application.rb中添加
config.active_record.default_timezone = :local
最后
以上就是诚心蓝天为你收集整理的[ruby on rails]多国语言切换、使用i18n翻译、本地时区设置的全部内容,希望文章能够帮你解决[ruby on rails]多国语言切换、使用i18n翻译、本地时区设置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复