diff --git a/Changelog.md b/Changelog.md index ef857c07e08ddff918b6e51828974c3028c10c14..7cbe5954bed907b5afec156d04da3e628c8f6005 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,8 @@ # 0.0.2.0pre +# 0.0.1.1 + +Fix syntax error in French Javascript pluralization rule. # 0.0.1.0 diff --git a/config/locales/cldr/plurals.rb b/config/locales/cldr/plurals.rb index 039afc521bbe530af5592f7e502ec6b0dc5f6441..01b566342083d7a2f6ec84ea65430acfd9656883 100644 --- a/config/locales/cldr/plurals.rb +++ b/config/locales/cldr/plurals.rb @@ -15,7 +15,7 @@ :eu => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other }, :js_rule => 'function (n) { return n == 1 ? "one" : "other" }' } } }, :fi => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other }, :js_rule => 'function (n) { return n == 1 ? "one" : "other" }' } } }, :fil => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other }, :js_rule => 'function (n) { return jQuery.inArray(n, [0, 1]) != -1 ? "one" : "other" }' } } }, - :fr => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n.between?(0, 2) && n != 2 ? :one : :other }, :js_rule => 'function (n) { return n.between?(0, 2) && n != 2 ? "one" : "other" }' } } }, + :fr => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n.between?(0, 2) && n != 2 ? :one : :other }, :js_rule => 'function (n) { return n >= 0 && n <= 2 && n != 2 ? "one" : "other" }' } } }, :ga => { :i18n => {:plural => { :keys => [:one, :two, :few, :many, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : [3, 4, 5, 6].include?(n) ? :few : [7, 8, 9, 10].include?(n) ? :many : :other }, :js_rule => 'function (n) { return n == 1 ? "one" : n == 2 ? "two" : jQuery.inArray(n, [3, 4, 5, 6]) != -1 ? "few" : jQuery.inArray(n, [7, 8, 9, 10]) != -1 ? "many" : "other" }' } } }, :gl => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other }, :js_rule => 'function (n) { return n == 1 ? "one" : "other" }' } } }, :he => { :i18n => {:plural => { :keys => [:one, :two, :many, :other], :rule => lambda { |n| n == 1 ? :one : n == 2 ? :two : n != 0 ? :many : :other }, :js_rule => 'function (n) { return n == 1 ? "one" : n == 2 ? "two" : n != 0 ? "many" : "other" }' } } }, @@ -49,4 +49,4 @@ :ur => { :i18n => {:plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other }, :js_rule => 'function (n) { return n == 1 ? "one" : "other" }' } } }, :vi => { :i18n => {:plural => { :keys => [:other], :rule => lambda { |n| :other }, :js_rule => 'function (n) { return "other" }' } } }, :zh => { :i18n => {:plural => { :keys => [:other], :rule => lambda { |n| :other }, :js_rule => 'function (n) { return "other" }' } } } -} \ No newline at end of file +} diff --git a/spec/locale_spec.rb b/spec/locale_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..0ba8c31cdb392800ceacc9fc48cc78abd1681a72 --- /dev/null +++ b/spec/locale_spec.rb @@ -0,0 +1,50 @@ +require 'spec_helper' + +describe 'locale files' do + describe "cldr/plurals.rb" do + AVAILABLE_LANGUAGE_CODES.each do |locale| + describe "#{locale} plural rules" do + it "defines the keys" do + I18n.with_locale locale do + expect { + I18n.t 'i18n.plural.keys' + }.to_not raise_error + end + end + + it "defines a valid pluralization function" do + I18n.with_locale locale do + expect { + rule = I18n.t 'i18n.plural.rule', resolve: false + rule.call(1) + }.to_not raise_error + end + end + + it "defines a valid javascript pluralization function" do + I18n.with_locale locale do + expect { + ExecJS.eval I18n.t('i18n.plural.js_rule') + }.to_not raise_error + end + end + end + end + end + + AVAILABLE_LANGUAGE_CODES.each do |locale| + ["diaspora/#{locale}.yml", + "devise/devise.#{locale}.yml", + "javascript/javascript.#{locale}.yml"].each do |file| + describe file do + it "has no syntax errors if it exists" do + file = Rails.root.join("config", "locales", file) + pending "Not yet available" unless File.exists? file + expect { + YAML.load_file file + }.to_not raise_error + end + end + end + end +end