07/09/2018, 18:11

Một số mẹo trong rails I18n

Cách gọi I18n en: my: messages: hello: "Hello" t( 'my.messages.hello' ) # Hello t( :hello , scope: 'my.messages' ) # Hello t( :hello , scope: [ :my , :messages ]) # Hello # dùng default nếu muốn trả về một giá trị mặc định khi không có khai báo trong file ...

Cách gọi I18n

en:
  my:
    messages:
      hello: "Hello"
t('my.messages.hello') # Hello
t(:hello, scope: 'my.messages') # Hello
t(:hello, scope: [:my, :messages]) # Hello
# dùng default nếu muốn trả về một giá trị mặc định khi không có khai báo trong file translate 'missing traslation"
t('my.messages.abc', default: "Default value") # Default value
# gọi từ trong file view 'books/index translation sẽ tự động lấy theo file khai báo sau"
t('.title')
en:
  books:
    index:
      title: "Title"

Chuyển params vào I18n

en:
  my:
    messages:
      hello: "Hello %{name}"
t('my.messages.hello', name: "A")

Pluralize

Rails có cung cấp cách rất đơn giản để hiển thị số ít và số nhiều

book:
  one: 'one book'
  other: '%{count} books'
t(:book, count: 1)  // one book
t(:book, count: 2)  // 2 books

Active Record

Đổi tên model

en:
  activerecord:
    models:
      user: "Test"
      child:
        one: "Child1"
        other: "Children2"
User.model_name.human // Test
Child.model_name.human(count: 2) // Children2

Đổi tên attributes

en:
  activerecord:
    attributes:
      user:
        name: "Test"
        email: "Email"
User.human_attribute_for :name   // Test

Đổi form label and submit button

form_for @user do |f|
  f.label :name
  f.submit
end
helpers:
  label:  
    user:
      name: "Your body text"
  submit:
    // đặt tên label chung cho tất cả các form
    create: "Create a %{model}"
    update: "Confirm changes to %{model}"
    // đặt tên riêng từng form một
    user:
      create: "Publish article"
      update: "Update article"
0