Day 27 -- Rails 实作 Rails-i18n语言选项在Bootstrap4 导览列

第一步当然是先安装 rails-18n gem

接着建立导览列可以在以下连结复制贴上即可:https://getbootstrap.com/docs/4.3/components/navbar/

如果用Rails 6的框架的话,参考以下连结文章:Introducing jQuery in Rails 6

安装成功的话,就会看到以下画面并且可以点选Dropdown内的Action
https://ithelp.ithome.com.tw/upload/images/20201012/20120868WcXpMHHYvR.png
接者在 config/application.rb 里面可设定 locale

config.i18n.default_locale = "zh-TW"

https://ithelp.ithome.com.tw/upload/images/20201012/20120868I009LWqwVL.png
接着在 application_controller.rb 里设定以下四个 methods:

before_action :set_locale
around_action :switch_locale

# 设定语系
def set_locale
  I18n.locale = params[:locale] || I18n.default_locale
end

# 语系切换
def switch_locale(&action)
  locale = params[:locale] || I18n.default_locale
  I18n.with_locale(locale, &action)
end

#使用者选择语系後可持续在其他页面使用该语系
def default_url_options(options = {})
  { :locale => I18n.locale }.merge options
end

# 从子网域取得locale code
def extract_locale_from_tld
  parsed_locale = request.subdomains.first
  I18n.available_locales.map(&:to_s).include?(parsed_locale) ?      
  parsed_locale : nil
end

在 navbar 的程序码里 修改为如下图
https://ithelp.ithome.com.tw/upload/images/20201012/20120868qBzmx2fIpc.png
下一步再把 index 的页面文字部分修改一下
https://ithelp.ithome.com.tw/upload/images/20201012/20120868z2B2fS7m1u.png
最後在config/locales 建立 zh-TW.yml 及 en.yml 及设定相对应的翻译文字
https://ithelp.ithome.com.tw/upload/images/20201012/20120868bHSCv7vevE.png
https://ithelp.ithome.com.tw/upload/images/20201012/20120868SNSW0yppKx.png
完成後大约是这样(简易版),可选择中文或是English版本
https://ithelp.ithome.com.tw/upload/images/20201012/20120868x1QYRBEOj7.png
https://ithelp.ithome.com.tw/upload/images/20201012/201208688EO7GDAa8F.png

参考资料:

Ruby on Rails 实战圣经 i18n
Rails Internationalization (I18n) API - Ruby on Rails Guides
JuanitoFatas/Guides


<<:  JS AJAX基础实作(2) DAY27

>>:  今年我想陪着 30 天之 27

JWT实作(二)(Day6)

要利用帐号密码验证使用者,首先我们必须要有使用者(废话? 在 stockapi资料库里面新增一个表单...

[NestJS 带你飞!] DAY01 - 简介

近年来,前後端都可以看到 JavaScript 的踪影,Node.js 的诞生让 JavaScrip...

[Lesson3] BMI

今天要来做一个计算BMI的简易App! activity_main.xml: 使用LinearLay...

部署 Google App Script 专案(2) & Line Bot 简单回应讯息

昨天我们让 Reply Message 成功从 Read Mail 读取到验证码,今天要进一步让 R...

#30 下一步:TypeScript & Deno

我们在过去 29 篇说了很多 JavaScript 的东西,也用 Node.js 写了一些东西。 现...