Merge pull request #899 from hundred/master

add pluralization based on locale setup for any language
This commit is contained in:
Yuki Nishijima 2017-07-18 02:22:40 +09:00 committed by GitHub
commit 2d22392756
2 changed files with 89 additions and 1 deletions

View File

@ -99,7 +99,7 @@ module Kaminari
# #-> Displaying items 6 - 10 of 26 in total
def page_entries_info(collection, entry_name: nil)
entry_name = if entry_name
entry_name.pluralize(collection.size)
entry_name.pluralize(collection.size, I18n.locale)
else
collection.entry_name(count: collection.size).downcase
end

View File

@ -5,6 +5,8 @@ if defined?(::Rails::Railtie) && defined?(::ActionView)
class ActionViewExtensionTest < ActionView::TestCase
setup do
self.output_buffer = ::ActionView::OutputBuffer.new
I18n.available_locales = [:en, :de, :fr]
I18n.locale = :en
end
teardown do
User.delete_all
@ -266,6 +268,92 @@ if defined?(::Rails::Railtie) && defined?(::ActionView)
I18n.backend.reload!
end
end
sub_test_case 'with any other locale' do
teardown do
I18n.backend.reload!
end
sub_test_case ':de' do
setup do
I18n.locale = :de
I18n.backend.store_translations(:de,
helpers: {
page_entries_info: {
one_page: {
display_entries: {
one: "Displaying <b>1</b> %{entry_name}",
other: "Displaying <b>all %{count}</b> %{entry_name}"
}
},
more_pages: {
display_entries: "Displaying %{entry_name} <b>%{first}&nbsp;-&nbsp;%{last}</b> of <b>%{total}</b> in total"
}
}
}
)
end
test 'with default entry name' do
users = User.page(1).per(50)
assert_equal 'Displaying <b>all 50</b> Benutzer', view.page_entries_info(users, entry_name: 'Benutzer')
end
test 'the last page with default entry name' do
User.max_pages 4
users = User.page(4).per(10)
assert_equal 'Displaying Benutzer <b>31&nbsp;-&nbsp;40</b> of <b>50</b> in total', view.page_entries_info(users, entry_name: 'Benutzer')
end
end
end
sub_test_case ':fr' do
setup do
I18n.locale = :fr
ActiveSupport::Inflector.inflections(:fr) do |inflect|
inflect.plural(/$/, 's')
inflect.singular(/s$/, '')
end
I18n.backend.store_translations(:fr,
helpers: {
page_entries_info: {
one_page: {
display_entries: {
one: "Displaying <b>1</b> %{entry_name}",
other: "Displaying <b>all %{count}</b> %{entry_name}"
}
},
more_pages: {
display_entries: "Displaying %{entry_name} <b>%{first}&nbsp;-&nbsp;%{last}</b> of <b>%{total}</b> in total"
}
}
}
)
end
sub_test_case 'having 1 entry' do
setup do
User.delete_all
User.create! name: 'user1'
end
test 'with default entry name' do
users = User.page(1).per(25)
assert_equal 'Displaying <b>1</b> utilisateur', view.page_entries_info(users, entry_name: 'utilisateur')
end
end
test 'having multiple entries with default entry name' do
users = User.page(1).per(50)
assert_equal 'Displaying <b>all 50</b> utilisateurs', view.page_entries_info(users, entry_name: 'utilisateur')
end
test 'the last page with default entry name' do
User.max_pages 4
users = User.page(4).per(10)
assert_equal 'Displaying utilisateurs <b>31&nbsp;-&nbsp;40</b> of <b>50</b> in total', view.page_entries_info(users, entry_name: 'utilisateur')
end
end
end
sub_test_case 'on a model with namespace' do