我是靠谱客的博主 诚心蓝天,最近开发中收集的这篇文章主要介绍[ruby on rails]多国语言切换、使用i18n翻译、本地时区设置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、多国语言切换
在 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翻译、本地时区设置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部