Merge pull request #899 from hundred/master
add pluralization based on locale setup for any language
This commit is contained in:
commit
2d22392756
|
@ -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
|
||||
|
|
|
@ -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} - %{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 - 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} - %{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 - 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
|
||||
|
|
Loading…
Reference in New Issue