This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
# encoding: utf-8
|
||||
|
||||
module I18n
|
||||
module Tests
|
||||
module Localization
|
||||
module Date
|
||||
def setup
|
||||
super
|
||||
setup_date_translations
|
||||
@date = ::Date.new(2008, 3, 1)
|
||||
end
|
||||
|
||||
test "localize Date: given the short format it uses it" do
|
||||
assert_equal '01. Mär', I18n.l(@date, :format => :short, :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given the long format it uses it" do
|
||||
assert_equal '01. März 2008', I18n.l(@date, :format => :long, :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given the default format it uses it" do
|
||||
assert_equal '01.03.2008', I18n.l(@date, :format => :default, :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given a day name format it returns the correct day name" do
|
||||
assert_equal 'Samstag', I18n.l(@date, :format => '%A', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given a uppercased day name format it returns the correct day name in upcase" do
|
||||
assert_equal 'samstag'.upcase, I18n.l(@date, :format => '%^A', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given an abbreviated day name format it returns the correct abbreviated day name" do
|
||||
assert_equal 'Sa', I18n.l(@date, :format => '%a', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given an meridian indicator format it returns the correct meridian indicator" do
|
||||
assert_equal 'AM', I18n.l(@date, :format => '%p', :locale => :de)
|
||||
assert_equal 'am', I18n.l(@date, :format => '%P', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given an abbreviated and uppercased day name format it returns the correct abbreviated day name in upcase" do
|
||||
assert_equal 'sa'.upcase, I18n.l(@date, :format => '%^a', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given a month name format it returns the correct month name" do
|
||||
assert_equal 'März', I18n.l(@date, :format => '%B', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given a uppercased month name format it returns the correct month name in upcase" do
|
||||
assert_equal 'märz'.upcase, I18n.l(@date, :format => '%^B', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given an abbreviated month name format it returns the correct abbreviated month name" do
|
||||
assert_equal 'Mär', I18n.l(@date, :format => '%b', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given an abbreviated and uppercased month name format it returns the correct abbreviated month name in upcase" do
|
||||
assert_equal 'mär'.upcase, I18n.l(@date, :format => '%^b', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given a date format with the month name upcased it returns the correct value" do
|
||||
assert_equal '1. FEBRUAR 2008', I18n.l(::Date.new(2008, 2, 1), :format => "%-d. %^B %Y", :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Date: given missing translations it returns the correct error message" do
|
||||
assert_equal 'Translation missing: fr.date.abbr_month_names', I18n.l(@date, :format => '%b', :locale => :fr)
|
||||
end
|
||||
|
||||
test "localize Date: given an unknown format it does not fail" do
|
||||
assert_nothing_raised { I18n.l(@date, :format => '%x') }
|
||||
end
|
||||
|
||||
test "localize Date: does not modify the options hash" do
|
||||
options = { :format => '%b', :locale => :de }
|
||||
assert_equal 'Mär', I18n.l(@date, **options)
|
||||
assert_equal({ :format => '%b', :locale => :de }, options)
|
||||
assert_nothing_raised { I18n.l(@date, **options.freeze) }
|
||||
end
|
||||
|
||||
test "localize Date: given nil with default value it returns default" do
|
||||
assert_equal 'default', I18n.l(nil, :default => 'default')
|
||||
end
|
||||
|
||||
test "localize Date: given nil it raises I18n::ArgumentError" do
|
||||
assert_raises(I18n::ArgumentError) { I18n.l(nil) }
|
||||
end
|
||||
|
||||
test "localize Date: given a plain Object it raises I18n::ArgumentError" do
|
||||
assert_raises(I18n::ArgumentError) { I18n.l(Object.new) }
|
||||
end
|
||||
|
||||
test "localize Date: given a format is missing it raises I18n::MissingTranslationData" do
|
||||
assert_raises(I18n::MissingTranslationData) { I18n.l(@date, :format => :missing) }
|
||||
end
|
||||
|
||||
test "localize Date: it does not alter the format string" do
|
||||
assert_equal '01. Februar 2009', I18n.l(::Date.parse('2009-02-01'), :format => :long, :locale => :de)
|
||||
assert_equal '01. Oktober 2009', I18n.l(::Date.parse('2009-10-01'), :format => :long, :locale => :de)
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def setup_date_translations
|
||||
I18n.backend.store_translations :de, {
|
||||
:date => {
|
||||
:formats => {
|
||||
:default => "%d.%m.%Y",
|
||||
:short => "%d. %b",
|
||||
:long => "%d. %B %Y",
|
||||
},
|
||||
:day_names => %w(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag),
|
||||
:abbr_day_names => %w(So Mo Di Mi Do Fr Sa),
|
||||
:month_names => %w(Januar Februar März April Mai Juni Juli August September Oktober November Dezember).unshift(nil),
|
||||
:abbr_month_names => %w(Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez).unshift(nil)
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,103 @@
|
||||
# encoding: utf-8
|
||||
|
||||
module I18n
|
||||
module Tests
|
||||
module Localization
|
||||
module DateTime
|
||||
def setup
|
||||
super
|
||||
setup_datetime_translations
|
||||
@datetime = ::DateTime.new(2008, 3, 1, 6)
|
||||
@other_datetime = ::DateTime.new(2008, 3, 1, 18)
|
||||
end
|
||||
|
||||
test "localize DateTime: given the short format it uses it" do
|
||||
assert_equal '01. Mär 06:00', I18n.l(@datetime, :format => :short, :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given the long format it uses it" do
|
||||
assert_equal '01. März 2008 06:00', I18n.l(@datetime, :format => :long, :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given the default format it uses it" do
|
||||
assert_equal 'Sa, 01. Mär 2008 06:00:00 +0000', I18n.l(@datetime, :format => :default, :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given a day name format it returns the correct day name" do
|
||||
assert_equal 'Samstag', I18n.l(@datetime, :format => '%A', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given a uppercased day name format it returns the correct day name in upcase" do
|
||||
assert_equal 'samstag'.upcase, I18n.l(@datetime, :format => '%^A', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given an abbreviated day name format it returns the correct abbreviated day name" do
|
||||
assert_equal 'Sa', I18n.l(@datetime, :format => '%a', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given an abbreviated and uppercased day name format it returns the correct abbreviated day name in upcase" do
|
||||
assert_equal 'sa'.upcase, I18n.l(@datetime, :format => '%^a', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given a month name format it returns the correct month name" do
|
||||
assert_equal 'März', I18n.l(@datetime, :format => '%B', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given a uppercased month name format it returns the correct month name in upcase" do
|
||||
assert_equal 'märz'.upcase, I18n.l(@datetime, :format => '%^B', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given an abbreviated month name format it returns the correct abbreviated month name" do
|
||||
assert_equal 'Mär', I18n.l(@datetime, :format => '%b', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given an abbreviated and uppercased month name format it returns the correct abbreviated month name in upcase" do
|
||||
assert_equal 'mär'.upcase, I18n.l(@datetime, :format => '%^b', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given a date format with the month name upcased it returns the correct value" do
|
||||
assert_equal '1. FEBRUAR 2008', I18n.l(::DateTime.new(2008, 2, 1, 6), :format => "%-d. %^B %Y", :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given missing translations it returns the correct error message" do
|
||||
assert_equal 'Translation missing: fr.date.abbr_month_names', I18n.l(@datetime, :format => '%b', :locale => :fr)
|
||||
end
|
||||
|
||||
test "localize DateTime: given a meridian indicator format it returns the correct meridian indicator" do
|
||||
assert_equal 'AM', I18n.l(@datetime, :format => '%p', :locale => :de)
|
||||
assert_equal 'PM', I18n.l(@other_datetime, :format => '%p', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given a meridian indicator format it returns the correct meridian indicator in downcase" do
|
||||
assert_equal 'am', I18n.l(@datetime, :format => '%P', :locale => :de)
|
||||
assert_equal 'pm', I18n.l(@other_datetime, :format => '%P', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize DateTime: given an unknown format it does not fail" do
|
||||
assert_nothing_raised { I18n.l(@datetime, :format => '%x') }
|
||||
end
|
||||
|
||||
test "localize DateTime: given a format is missing it raises I18n::MissingTranslationData" do
|
||||
assert_raises(I18n::MissingTranslationData) { I18n.l(@datetime, :format => :missing) }
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def setup_datetime_translations
|
||||
# time translations might have been set up in Tests::Api::Localization::Time
|
||||
I18n.backend.store_translations :de, {
|
||||
:time => {
|
||||
:formats => {
|
||||
:default => "%a, %d. %b %Y %H:%M:%S %z",
|
||||
:short => "%d. %b %H:%M",
|
||||
:long => "%d. %B %Y %H:%M"
|
||||
},
|
||||
:am => 'am',
|
||||
:pm => 'pm'
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,118 @@
|
||||
# encoding: utf-8
|
||||
|
||||
module I18n
|
||||
module Tests
|
||||
module Localization
|
||||
module Procs
|
||||
test "localize: using day names from lambdas" do
|
||||
setup_time_proc_translations
|
||||
time = ::Time.utc(2008, 3, 1, 6, 0)
|
||||
assert_match(/Суббота/, I18n.l(time, :format => "%A, %d %B", :locale => :ru))
|
||||
assert_match(/суббота/, I18n.l(time, :format => "%d %B (%A)", :locale => :ru))
|
||||
end
|
||||
|
||||
test "localize: using month names from lambdas" do
|
||||
setup_time_proc_translations
|
||||
time = ::Time.utc(2008, 3, 1, 6, 0)
|
||||
assert_match(/марта/, I18n.l(time, :format => "%d %B %Y", :locale => :ru))
|
||||
assert_match(/Март /, I18n.l(time, :format => "%B %Y", :locale => :ru))
|
||||
end
|
||||
|
||||
test "localize: using abbreviated day names from lambdas" do
|
||||
setup_time_proc_translations
|
||||
time = ::Time.utc(2008, 3, 1, 6, 0)
|
||||
assert_match(/марта/, I18n.l(time, :format => "%d %b %Y", :locale => :ru))
|
||||
assert_match(/март /, I18n.l(time, :format => "%b %Y", :locale => :ru))
|
||||
end
|
||||
|
||||
test "localize Date: given a format that resolves to a Proc it calls the Proc with the object" do
|
||||
setup_time_proc_translations
|
||||
date = ::Date.new(2008, 3, 1)
|
||||
assert_equal '[Sat, 01 Mar 2008, {}]', I18n.l(date, :format => :proc, :locale => :ru)
|
||||
end
|
||||
|
||||
test "localize Date: given a format that resolves to a Proc it calls the Proc with the object and extra options" do
|
||||
setup_time_proc_translations
|
||||
date = ::Date.new(2008, 3, 1)
|
||||
assert_equal %|[Sat, 01 Mar 2008, #{{:foo=>"foo"}}]|, I18n.l(date, :format => :proc, :foo => 'foo', :locale => :ru)
|
||||
end
|
||||
|
||||
test "localize DateTime: given a format that resolves to a Proc it calls the Proc with the object" do
|
||||
setup_time_proc_translations
|
||||
datetime = ::DateTime.new(2008, 3, 1, 6)
|
||||
assert_equal '[Sat, 01 Mar 2008 06:00:00 +00:00, {}]', I18n.l(datetime, :format => :proc, :locale => :ru)
|
||||
end
|
||||
|
||||
test "localize DateTime: given a format that resolves to a Proc it calls the Proc with the object and extra options" do
|
||||
setup_time_proc_translations
|
||||
datetime = ::DateTime.new(2008, 3, 1, 6)
|
||||
assert_equal %|[Sat, 01 Mar 2008 06:00:00 +00:00, #{{:foo=>"foo"}}]|, I18n.l(datetime, :format => :proc, :foo => 'foo', :locale => :ru)
|
||||
end
|
||||
|
||||
test "localize Time: given a format that resolves to a Proc it calls the Proc with the object" do
|
||||
setup_time_proc_translations
|
||||
time = ::Time.utc(2008, 3, 1, 6, 0)
|
||||
assert_equal I18n::Tests::Localization::Procs.inspect_args([time], {}), I18n.l(time, :format => :proc, :locale => :ru)
|
||||
end
|
||||
|
||||
test "localize Time: given a format that resolves to a Proc it calls the Proc with the object and extra options" do
|
||||
setup_time_proc_translations
|
||||
time = ::Time.utc(2008, 3, 1, 6, 0)
|
||||
options = { :foo => 'foo' }
|
||||
assert_equal I18n::Tests::Localization::Procs.inspect_args([time], options), I18n.l(time, **options.merge(:format => :proc, :locale => :ru))
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def self.inspect_args(args, kwargs)
|
||||
args << kwargs
|
||||
args = args.map do |arg|
|
||||
case arg
|
||||
when ::Time, ::DateTime
|
||||
arg.strftime('%a, %d %b %Y %H:%M:%S %Z').sub('+0000', '+00:00')
|
||||
when ::Date
|
||||
arg.strftime('%a, %d %b %Y')
|
||||
when Hash
|
||||
arg.delete(:fallback_in_progress)
|
||||
arg.delete(:fallback_original_locale)
|
||||
arg.inspect
|
||||
else
|
||||
arg.inspect
|
||||
end
|
||||
end
|
||||
"[#{args.join(', ')}]"
|
||||
end
|
||||
|
||||
def setup_time_proc_translations
|
||||
I18n.backend.store_translations :ru, {
|
||||
:time => {
|
||||
:formats => {
|
||||
:proc => lambda { |*args, **kwargs| I18n::Tests::Localization::Procs.inspect_args(args, kwargs) }
|
||||
}
|
||||
},
|
||||
:date => {
|
||||
:formats => {
|
||||
:proc => lambda { |*args, **kwargs| I18n::Tests::Localization::Procs.inspect_args(args, kwargs) }
|
||||
},
|
||||
:'day_names' => lambda { |key, options|
|
||||
(options[:format] =~ /^%A/) ?
|
||||
%w(Воскресенье Понедельник Вторник Среда Четверг Пятница Суббота) :
|
||||
%w(воскресенье понедельник вторник среда четверг пятница суббота)
|
||||
},
|
||||
:'month_names' => lambda { |key, options|
|
||||
(options[:format] =~ /(%d|%e)(\s*)?(%B)/) ?
|
||||
%w(января февраля марта апреля мая июня июля августа сентября октября ноября декабря).unshift(nil) :
|
||||
%w(Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь).unshift(nil)
|
||||
},
|
||||
:'abbr_month_names' => lambda { |key, options|
|
||||
(options[:format] =~ /(%d|%e)(\s*)(%b)/) ?
|
||||
%w(янв. февр. марта апр. мая июня июля авг. сент. окт. нояб. дек.).unshift(nil) :
|
||||
%w(янв. февр. март апр. май июнь июль авг. сент. окт. нояб. дек.).unshift(nil)
|
||||
},
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,103 @@
|
||||
# encoding: utf-8
|
||||
|
||||
module I18n
|
||||
module Tests
|
||||
module Localization
|
||||
module Time
|
||||
def setup
|
||||
super
|
||||
setup_time_translations
|
||||
@time = ::Time.utc(2008, 3, 1, 6, 0)
|
||||
@other_time = ::Time.utc(2008, 3, 1, 18, 0)
|
||||
end
|
||||
|
||||
test "localize Time: given the short format it uses it" do
|
||||
assert_equal '01. Mär 06:00', I18n.l(@time, :format => :short, :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given the long format it uses it" do
|
||||
assert_equal '01. März 2008 06:00', I18n.l(@time, :format => :long, :locale => :de)
|
||||
end
|
||||
|
||||
# TODO Seems to break on Windows because ENV['TZ'] is ignored. What's a better way to do this?
|
||||
# def test_localize_given_the_default_format_it_uses_it
|
||||
# assert_equal 'Sa, 01. Mar 2008 06:00:00 +0000', I18n.l(@time, :format => :default, :locale => :de)
|
||||
# end
|
||||
|
||||
test "localize Time: given a day name format it returns the correct day name" do
|
||||
assert_equal 'Samstag', I18n.l(@time, :format => '%A', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given a uppercased day name format it returns the correct day name in upcase" do
|
||||
assert_equal 'samstag'.upcase, I18n.l(@time, :format => '%^A', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given an abbreviated day name format it returns the correct abbreviated day name" do
|
||||
assert_equal 'Sa', I18n.l(@time, :format => '%a', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given an abbreviated and uppercased day name format it returns the correct abbreviated day name in upcase" do
|
||||
assert_equal 'sa'.upcase, I18n.l(@time, :format => '%^a', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given a month name format it returns the correct month name" do
|
||||
assert_equal 'März', I18n.l(@time, :format => '%B', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given a uppercased month name format it returns the correct month name in upcase" do
|
||||
assert_equal 'märz'.upcase, I18n.l(@time, :format => '%^B', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given an abbreviated month name format it returns the correct abbreviated month name" do
|
||||
assert_equal 'Mär', I18n.l(@time, :format => '%b', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given an abbreviated and uppercased month name format it returns the correct abbreviated month name in upcase" do
|
||||
assert_equal 'mär'.upcase, I18n.l(@time, :format => '%^b', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given a date format with the month name upcased it returns the correct value" do
|
||||
assert_equal '1. FEBRUAR 2008', I18n.l(::Time.utc(2008, 2, 1, 6, 0), :format => "%-d. %^B %Y", :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given missing translations it returns the correct error message" do
|
||||
assert_equal 'Translation missing: fr.date.abbr_month_names', I18n.l(@time, :format => '%b', :locale => :fr)
|
||||
end
|
||||
|
||||
test "localize Time: given a meridian indicator format it returns the correct meridian indicator" do
|
||||
assert_equal 'AM', I18n.l(@time, :format => '%p', :locale => :de)
|
||||
assert_equal 'PM', I18n.l(@other_time, :format => '%p', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given a meridian indicator format it returns the correct meridian indicator in upcase" do
|
||||
assert_equal 'am', I18n.l(@time, :format => '%P', :locale => :de)
|
||||
assert_equal 'pm', I18n.l(@other_time, :format => '%P', :locale => :de)
|
||||
end
|
||||
|
||||
test "localize Time: given an unknown format it does not fail" do
|
||||
assert_nothing_raised { I18n.l(@time, :format => '%x') }
|
||||
end
|
||||
|
||||
test "localize Time: given a format is missing it raises I18n::MissingTranslationData" do
|
||||
assert_raises(I18n::MissingTranslationData) { I18n.l(@time, :format => :missing) }
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def setup_time_translations
|
||||
I18n.backend.store_translations :de, {
|
||||
:time => {
|
||||
:formats => {
|
||||
:default => "%a, %d. %b %Y %H:%M:%S %z",
|
||||
:short => "%d. %b %H:%M",
|
||||
:long => "%d. %B %Y %H:%M",
|
||||
},
|
||||
:am => 'am',
|
||||
:pm => 'pm'
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user