Skip to content

Commit

Permalink
Merge pull request #899 from hundred/master
Browse files Browse the repository at this point in the history
add pluralization based on locale setup for any language
  • Loading branch information
yuki24 committed Jul 17, 2017
2 parents 762e0d3 + 28f0c70 commit 2d22392
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 1 deletion.
2 changes: 1 addition & 1 deletion kaminari-core/lib/kaminari/helpers/helper_methods.rb
Expand Up @@ -99,7 +99,7 @@ def link_to_next_page(scope, name, **options)
# #-> 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
Expand Down
88 changes: 88 additions & 0 deletions kaminari-core/test/helpers/action_view_extension_test.rb
Expand Up @@ -5,6 +5,8 @@
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
Expand Down Expand Up @@ -266,6 +268,92 @@ def to_s
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
Expand Down

0 comments on commit 2d22392

Please sign in to comment.