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"