Số 10, Ngõ 12, Khuất Duy Tiến, Nhân Chính, Thanh Xuân, TP Hà Nội
096 803 1388

Đa ngôn ngữ trong Ruby on rails

ruby

Đa ngôn ngữ hay Quốc tế hóa trong tiếng Anh gọi là Internationalization, vì bắt đầu bằng I, 18 chữ cái, và kết thúc bằng n nên hay được gọi tắt là I18n. Một điều chú ý ở đây là Rails hỗ trợ l18n từ phiên bản 2.2 trở lên, vì vậy hãy kiểm tra version rails của bạn và chắc chắn là nó có thể sử dụng kĩ thuật này nhé!

Sau đây, mình sẽ giới thiệu với các bạn những bước để có thể tạo ra 1 trang web đơn giản nhất sử dụng 2 ngôn ngữ là tiếng Anh và tiếng Việt

Bước 1: tạo project

Console
$rails new article
$cd article
$bin/rails generate controller article index
$rails s

Ở đây, mình đã tạo 1 controller có tên là article. Vào app/views/article/index và tạo view

<h1>List of book</h1>
<li>Children<li>
<li>Fairy Tales</li>
<li>Romance</li>
<li>Horror</li>
<li>Comedy</li>
</ul>

Rồi vào trình duyệt gõ “localhost:3000/article/index”, kết qủa sẽ là:
en

Bước 2: Vào file config/locales/em.yml và chèn thêm

en:
  children: “Children”
  fairy_tales: “Fairy Tales”
  romance: “Romance”
  horror: “Horror”
  comedy: “Comedy”
  title: “List of book”

Đồng thời tạo thêm file config/locales/vi.yml với nội dung

vi:
  children: “Thiếu nhi”
  fairy_tales: “Cổ tích”
  romance: “Lãng mạn”
  horror: “Kinh dị”
  comedy: “Hài hước”
  title: “Danh mục sách”

Lưu ý rằng các tên các biến phải giống nhau ở cả 2 file đấy nhé, còn phần trong ngoặc kép chính là bản dịch tương ứng với các biến ở tiếng Anh( en:) và tiếng Việt( vi:)

Bước 3: Sửa đoạn code ban đầu ở app/views/articles/index thành:

<h1><%=t(:title)%></h1>
<ul>
<li><%=t(:children)%></li>
<li><%=t(:fairy_tales)%></li>
<li><%=t(:romance)%></li>
<li><%=t(:horror)%></li>
<li><%=t(:comedy)%></li>
</ul>

Bước 4: Vào file controller của bạn( ví dụ như application_controller.rb)  và thêm :

before_action :set_locale
def set_locale
 I18n.locale = params[:locale] || I18n.default_locale
end

rồi đến file application.rb

class Application < Rails::Application
  config.i18n.load_path += Dir[Rails.root.join(‘lib’, ‘locale’, ‘*.{rb,yml}’)]
  config.i18n.default_locale = :vi
end

Ở đây, mình đang dùng ngôn ngữ mặc định ban đầu là tiếng Việt( :vi), tuy nhiên, bạn hoàn toàn có thể chuyển sang tiếng Anh bằng cách thêm “?locale=en”  ở đường dẫn trên trình duyệt nhé.

F5 lại nào, nếu như ra view như vậy thì bạn đã đúng rồi đấy!list_view1

Chúc các bạn thành công và có những trải nghiệm mới với đa ngôn ngữ trong Ruby on rails nhé.

 

 — THUYNT —

Để lại phản hồi