i18n-js 3.9.2 → 4.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +4 -0
  3. data/.github/FUNDING.yml +1 -1
  4. data/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
  5. data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  6. data/.github/PULL_REQUEST_TEMPLATE.md +38 -0
  7. data/.github/dependabot.yml +15 -0
  8. data/.github/workflows/ruby-tests.yml +61 -0
  9. data/.gitignore +11 -7
  10. data/.rubocop.yml +12 -0
  11. data/CHANGELOG.md +12 -571
  12. data/CODE_OF_CONDUCT.md +74 -0
  13. data/CONTRIBUTING.md +79 -0
  14. data/Gemfile +3 -0
  15. data/LICENSE.md +20 -0
  16. data/README.md +86 -1043
  17. data/Rakefile +10 -20
  18. data/exe/i18n +5 -0
  19. data/i18n-js.gemspec +47 -29
  20. data/lib/guard/i18n-js/templates/Guardfile +10 -0
  21. data/lib/guard/i18n-js/version.rb +13 -0
  22. data/lib/guard/i18n-js.rb +78 -0
  23. data/lib/i18n-js/cli/command.rb +43 -0
  24. data/lib/i18n-js/cli/export_command.rb +108 -0
  25. data/lib/i18n-js/cli/init_command.rb +50 -0
  26. data/lib/i18n-js/cli/ui.rb +30 -0
  27. data/lib/i18n-js/cli/version_command.rb +18 -0
  28. data/lib/i18n-js/cli.rb +47 -0
  29. data/lib/i18n-js/listen.rb +80 -0
  30. data/lib/i18n-js/schema.rb +92 -0
  31. data/lib/i18n-js/version.rb +5 -0
  32. data/lib/i18n-js.rb +66 -1
  33. metadata +125 -201
  34. data/.editorconfig +0 -24
  35. data/.github/workflows/tests.yaml +0 -106
  36. data/.npmignore +0 -27
  37. data/Appraisals +0 -52
  38. data/app/assets/javascripts/i18n/filtered.js.erb +0 -23
  39. data/app/assets/javascripts/i18n/shims.js +0 -240
  40. data/app/assets/javascripts/i18n/translations.js +0 -3
  41. data/app/assets/javascripts/i18n.js +0 -1095
  42. data/gemfiles/i18n_0_6.gemfile +0 -7
  43. data/gemfiles/i18n_0_7.gemfile +0 -7
  44. data/gemfiles/i18n_0_8.gemfile +0 -7
  45. data/gemfiles/i18n_0_9.gemfile +0 -7
  46. data/gemfiles/i18n_1_0.gemfile +0 -7
  47. data/gemfiles/i18n_1_1.gemfile +0 -7
  48. data/gemfiles/i18n_1_10.gemfile +0 -7
  49. data/gemfiles/i18n_1_2.gemfile +0 -7
  50. data/gemfiles/i18n_1_3.gemfile +0 -7
  51. data/gemfiles/i18n_1_4.gemfile +0 -7
  52. data/gemfiles/i18n_1_5.gemfile +0 -7
  53. data/gemfiles/i18n_1_6.gemfile +0 -7
  54. data/gemfiles/i18n_1_7.gemfile +0 -7
  55. data/gemfiles/i18n_1_8.gemfile +0 -7
  56. data/gemfiles/i18n_1_9.gemfile +0 -7
  57. data/i18njs.png +0 -0
  58. data/lib/i18n/js/dependencies.rb +0 -67
  59. data/lib/i18n/js/engine.rb +0 -87
  60. data/lib/i18n/js/fallback_locales.rb +0 -70
  61. data/lib/i18n/js/formatters/base.rb +0 -25
  62. data/lib/i18n/js/formatters/js.rb +0 -39
  63. data/lib/i18n/js/formatters/json.rb +0 -13
  64. data/lib/i18n/js/middleware.rb +0 -82
  65. data/lib/i18n/js/private/config_store.rb +0 -31
  66. data/lib/i18n/js/private/hash_with_symbol_keys.rb +0 -36
  67. data/lib/i18n/js/segment.rb +0 -81
  68. data/lib/i18n/js/utils.rb +0 -91
  69. data/lib/i18n/js/version.rb +0 -7
  70. data/lib/i18n/js.rb +0 -274
  71. data/lib/rails/generators/i18n/js/config/config_generator.rb +0 -19
  72. data/lib/rails/generators/i18n/js/config/templates/i18n-js.yml +0 -27
  73. data/lib/tasks/export.rake +0 -8
  74. data/package.json +0 -25
  75. data/spec/fixtures/custom_path.yml +0 -5
  76. data/spec/fixtures/default.yml +0 -5
  77. data/spec/fixtures/erb.yml +0 -5
  78. data/spec/fixtures/except_condition.yml +0 -7
  79. data/spec/fixtures/js_available_locales_custom.yml +0 -1
  80. data/spec/fixtures/js_export_dir_custom.yml +0 -7
  81. data/spec/fixtures/js_export_dir_none.yml +0 -6
  82. data/spec/fixtures/js_extend_parent.yml +0 -6
  83. data/spec/fixtures/js_extend_segment.yml +0 -6
  84. data/spec/fixtures/js_file_per_locale.yml +0 -7
  85. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_default_locale_symbol.yml +0 -4
  86. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_hash.yml +0 -6
  87. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_locale.yml +0 -4
  88. data/spec/fixtures/js_file_per_locale_with_fallbacks_as_locale_without_fallback_translations.yml +0 -4
  89. data/spec/fixtures/js_file_per_locale_with_fallbacks_enabled.yml +0 -4
  90. data/spec/fixtures/js_file_per_locale_without_fallbacks.yml +0 -4
  91. data/spec/fixtures/js_file_with_namespace_prefix_and_pretty_print.yml +0 -9
  92. data/spec/fixtures/js_sort_translation_keys_false.yml +0 -6
  93. data/spec/fixtures/js_sort_translation_keys_true.yml +0 -6
  94. data/spec/fixtures/json_only.yml +0 -18
  95. data/spec/fixtures/locales.yml +0 -133
  96. data/spec/fixtures/merge_plurals.yml +0 -6
  97. data/spec/fixtures/merge_plurals_with_no_overrides.yml +0 -4
  98. data/spec/fixtures/merge_plurals_with_partial_overrides.yml +0 -4
  99. data/spec/fixtures/millions.yml +0 -4
  100. data/spec/fixtures/multiple_conditions.yml +0 -7
  101. data/spec/fixtures/multiple_conditions_per_locale.yml +0 -7
  102. data/spec/fixtures/multiple_files.yml +0 -7
  103. data/spec/fixtures/no_config.yml +0 -2
  104. data/spec/fixtures/no_scope.yml +0 -4
  105. data/spec/fixtures/simple_scope.yml +0 -5
  106. data/spec/js/currency.spec.js +0 -62
  107. data/spec/js/current_locale.spec.js +0 -19
  108. data/spec/js/dates.spec.js +0 -276
  109. data/spec/js/defaults.spec.js +0 -31
  110. data/spec/js/extend.spec.js +0 -110
  111. data/spec/js/interpolation.spec.js +0 -124
  112. data/spec/js/jasmine/MIT.LICENSE +0 -20
  113. data/spec/js/jasmine/jasmine-html.js +0 -190
  114. data/spec/js/jasmine/jasmine.css +0 -166
  115. data/spec/js/jasmine/jasmine.js +0 -2476
  116. data/spec/js/jasmine/jasmine_favicon.png +0 -0
  117. data/spec/js/json_parsable.spec.js +0 -14
  118. data/spec/js/locales.spec.js +0 -31
  119. data/spec/js/localization.spec.js +0 -78
  120. data/spec/js/numbers.spec.js +0 -174
  121. data/spec/js/placeholder.spec.js +0 -24
  122. data/spec/js/pluralization.spec.js +0 -228
  123. data/spec/js/prepare_options.spec.js +0 -41
  124. data/spec/js/require.js +0 -2083
  125. data/spec/js/specs.html +0 -49
  126. data/spec/js/specs_requirejs.html +0 -72
  127. data/spec/js/translate.spec.js +0 -304
  128. data/spec/js/translations.js +0 -188
  129. data/spec/js/utility_functions.spec.js +0 -20
  130. data/spec/ruby/i18n/js/fallback_locales_spec.rb +0 -84
  131. data/spec/ruby/i18n/js/segment_spec.rb +0 -286
  132. data/spec/ruby/i18n/js/utils_spec.rb +0 -138
  133. data/spec/ruby/i18n/js_spec.rb +0 -797
  134. data/spec/spec_helper.rb +0 -80
  135. data/yarn.lock +0 -138
@@ -1,133 +0,0 @@
1
- en:
2
- number:
3
- human:
4
- decimal_units:
5
- units:
6
- million: Million
7
- format:
8
- separator: "."
9
- delimiter: ","
10
- precision: 3
11
- currency:
12
- format:
13
- format: "%u%n"
14
- unit: "$"
15
- separator: "."
16
- delimiter: ","
17
- precision: 2
18
- date:
19
- formats:
20
- default: "%Y-%m-%d"
21
- short: "%b %d"
22
- long: "%B %d, %Y"
23
- day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
24
- abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
25
- month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
26
- abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
27
- # order: [ :year, :month, :day ]
28
- time:
29
- formats:
30
- default: "%a, %d %b %Y %H:%M:%S %z"
31
- short: "%d %b %H:%M"
32
- long: "%B %d, %Y %H:%M"
33
- am: "am"
34
- pm: "pm"
35
- admin:
36
- show:
37
- title: "Show"
38
- note: "more details"
39
- edit:
40
- title: "Edit"
41
- foo: "Foo"
42
- fallback_test: "Success"
43
- null_test: "fallback for null"
44
- merge_plurals:
45
- one: Apple
46
- other: Apples
47
- merge_plurals_with_no_overrides:
48
- zero: "No Apple"
49
- one: Apple
50
- other: Apples
51
- merge_plurals_with_partial_overrides:
52
- one: Cat
53
- other: Cats
54
-
55
- es:
56
- number:
57
- human:
58
- decimal_units:
59
- units:
60
- million:
61
- one: millón
62
- other: millones
63
-
64
- ru:
65
- merge_plurals_with_no_overrides:
66
- one: кот
67
- few: кошек
68
- many: кошка
69
- other: кошек
70
-
71
- de:
72
- fallback_test: "Erfolg"
73
- null_test: ~
74
-
75
- fr:
76
- date:
77
- formats:
78
- default: "%d/%m/%Y"
79
- short: "%e %b"
80
- long: "%e %B %Y"
81
- long_ordinal: "%e %B %Y"
82
- only_day: "%e"
83
- day_names: [dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi]
84
- abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam]
85
- month_names: [~, janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre]
86
- abbr_month_names: [~, jan., fév., mar., avr., mai, juin, juil., août, sept., oct., nov., déc.]
87
- # order: [ :day, :month, :year ]
88
- time:
89
- formats:
90
- default: "%d %B %Y %H:%M"
91
- time: "%H:%M"
92
- short: "%d %b %H:%M"
93
- long: "%A %d %B %Y %H:%M:%S %Z"
94
- long_ordinal: "%A %d %B %Y %H:%M:%S %Z"
95
- only_second: "%S"
96
- am: 'am'
97
- pm: 'pm'
98
- number:
99
- format:
100
- precision: 3
101
- separator: ','
102
- delimiter: ' '
103
- currency:
104
- format:
105
- unit: '€'
106
- precision: 2
107
- format: '%n %u'
108
- admin:
109
- show:
110
- title: "Visualiser"
111
- note: "plus de détails"
112
- edit:
113
- title: "Editer"
114
- merge_plurals:
115
- zero: Pomme
116
- one: Pomme
117
- other: Pommes
118
-
119
- en-US:
120
- merge_plurals_with_no_overrides:
121
- zero:
122
- one:
123
- other:
124
- merge_plurals_with_partial_overrides:
125
- one: Cat
126
- few:
127
- many:
128
- other:
129
-
130
- ja:
131
- admin:
132
- show:
133
- title: "Ignore me"
@@ -1,6 +0,0 @@
1
- fallbacks: false
2
-
3
- translations:
4
- - file: "tmp/i18n-js/merge_plurals.js"
5
- only:
6
- - "*.merge_plurals"
@@ -1,4 +0,0 @@
1
- translations:
2
- - file: "tmp/i18n-js/merge_plurals_with_no_overrides.js"
3
- only:
4
- - "*.merge_plurals_with_no_overrides"
@@ -1,4 +0,0 @@
1
- translations:
2
- - file: "tmp/i18n-js/merge_plurals_with_partial_overrides.js"
3
- only:
4
- - "*.merge_plurals_with_partial_overrides"
@@ -1,4 +0,0 @@
1
- translations:
2
- - file: "tmp/i18n-js/millions.js"
3
- only:
4
- - "*.number.human.decimal_units.units"
@@ -1,7 +0,0 @@
1
- fallbacks: false
2
-
3
- translations:
4
- - file: "tmp/i18n-js/bitsnpieces.js"
5
- only:
6
- - "*.date.formats"
7
- - "*.number.currency"
@@ -1,7 +0,0 @@
1
- fallbacks: false
2
-
3
- translations:
4
- - file: "tmp/i18n-js/bits.%{locale}.js"
5
- only:
6
- - "*.date.formats.*"
7
- - "*.number.currency.*"
@@ -1,7 +0,0 @@
1
- fallbacks: false
2
-
3
- translations:
4
- - file: "tmp/i18n-js/all.js"
5
- only: "*"
6
- - file: "tmp/i18n-js/tudo.js"
7
- only: "*"
@@ -1,2 +0,0 @@
1
- #This file has no config
2
-
@@ -1,4 +0,0 @@
1
- fallbacks: false
2
-
3
- translations:
4
- - file: "tmp/i18n-js/no_scope.js"
@@ -1,5 +0,0 @@
1
- fallbacks: false
2
-
3
- translations:
4
- - file: "tmp/i18n-js/simple_scope.js"
5
- only: "*.date.formats"
@@ -1,62 +0,0 @@
1
- var I18n = require("../../app/assets/javascripts/i18n")
2
- , Translations = require("./translations")
3
- ;
4
-
5
- describe("Currency", function(){
6
- var actual, expected;
7
-
8
- beforeEach(function() {
9
- I18n.reset();
10
- I18n.translations = Translations();
11
- });
12
-
13
- it("formats currency with default settings", function(){
14
- expect(I18n.toCurrency(100.99)).toEqual("$100.99");
15
- expect(I18n.toCurrency(1000.99)).toEqual("$1,000.99");
16
- expect(I18n.toCurrency(-1000)).toEqual("-$1,000.00");
17
- });
18
-
19
- it("formats currency with custom settings", function(){
20
- I18n.translations.en.number = {
21
- currency: {
22
- format: {
23
- format: "%n %u",
24
- unit: "USD",
25
- delimiter: ".",
26
- separator: ",",
27
- precision: 2
28
- }
29
- }
30
- };
31
-
32
- expect(I18n.toCurrency(12)).toEqual("12,00 USD");
33
- expect(I18n.toCurrency(123)).toEqual("123,00 USD");
34
- expect(I18n.toCurrency(1234.56)).toEqual("1.234,56 USD");
35
- });
36
-
37
- it("formats currency with custom settings and partial overriding", function(){
38
- I18n.translations.en.number = {
39
- currency: {
40
- format: {
41
- format: "%n %u",
42
- unit: "USD",
43
- delimiter: ".",
44
- separator: ",",
45
- precision: 2
46
- }
47
- }
48
- };
49
-
50
- expect(I18n.toCurrency(12, {precision: 0})).toEqual("12 USD");
51
- expect(I18n.toCurrency(123, {unit: "bucks"})).toEqual("123,00 bucks");
52
- });
53
-
54
- it("formats currency with some custom options that should be merged with default options", function(){
55
- expect(I18n.toCurrency(1234, {precision: 0})).toEqual("$1,234");
56
- expect(I18n.toCurrency(1234, {unit: "º"})).toEqual("º1,234.00");
57
- expect(I18n.toCurrency(1234, {separator: "-"})).toEqual("$1,234-00");
58
- expect(I18n.toCurrency(1234, {delimiter: "-"})).toEqual("$1-234.00");
59
- expect(I18n.toCurrency(1234, {format: "%u %n"})).toEqual("$ 1,234.00");
60
- expect(I18n.toCurrency(-123, {sign_first: false})).toEqual("$-123.00");
61
- });
62
- });
@@ -1,19 +0,0 @@
1
- var I18n = require("../../app/assets/javascripts/i18n");
2
-
3
- describe("Current locale", function(){
4
- beforeEach(function(){
5
- I18n.reset();
6
- });
7
-
8
- it("returns I18n.locale", function(){
9
- I18n.locale = "pt-BR";
10
- expect(I18n.currentLocale()).toEqual("pt-BR");
11
- });
12
-
13
- it("returns I18n.defaultLocale", function(){
14
- I18n.locale = null;
15
- I18n.defaultLocale = "pt-BR";
16
-
17
- expect(I18n.currentLocale()).toEqual("pt-BR");
18
- });
19
- });
@@ -1,276 +0,0 @@
1
- var I18n = require("../../app/assets/javascripts/i18n")
2
- , Translations = require("./translations")
3
- ;
4
-
5
- describe("Dates", function(){
6
- var actual, expected;
7
-
8
- beforeEach(function() {
9
- I18n.reset();
10
- I18n.translations = Translations();
11
- });
12
-
13
- it("parses date", function(){
14
- expected = new Date(2009, 0, 24, 0, 0, 0);
15
- actual = I18n.parseDate("2009-01-24");
16
- expect(actual.toString()).toEqual(expected.toString());
17
-
18
- expected = new Date(2009, 0, 24, 0, 15, 0);
19
- actual = I18n.parseDate("2009-01-24 00:15:00");
20
- expect(actual.toString()).toEqual(expected.toString());
21
-
22
- expected = new Date(2009, 0, 24, 0, 0, 15);
23
- actual = I18n.parseDate("2009-01-24 00:00:15");
24
- expect(actual.toString()).toEqual(expected.toString());
25
-
26
- expected = new Date(2009, 0, 24, 15, 33, 44);
27
- actual = I18n.parseDate("2009-01-24 15:33:44");
28
- expect(actual.toString()).toEqual(expected.toString());
29
-
30
- expected = new Date(2009, 0, 24, 0, 0, 0);
31
- actual = I18n.parseDate(expected.getTime());
32
- expect(actual.toString()).toEqual(expected.toString());
33
-
34
- expected = new Date(2009, 0, 24, 0, 0, 0);
35
- actual = I18n.parseDate("01/24/2009");
36
- expect(actual.toString()).toEqual(expected.toString());
37
-
38
- expected = new Date(2009, 0, 24, 14, 33, 55);
39
- actual = I18n.parseDate(expected).toString();
40
- expect(actual).toEqual(expected.toString());
41
-
42
- expected = new Date(2009, 0, 24, 15, 33, 44);
43
- actual = I18n.parseDate("2009-01-24T15:33:44");
44
- expect(actual.toString()).toEqual(expected.toString());
45
-
46
- expected = new Date(Date.UTC(2011, 6, 20, 12, 51, 55));
47
- actual = I18n.parseDate("2011-07-20T12:51:55+0000");
48
- expect(actual.toString()).toEqual(expected.toString());
49
-
50
- expected = new Date(Date.UTC(2011, 6, 20, 12, 51, 55));
51
- actual = I18n.parseDate("2011-07-20T12:51:55+00:00");
52
- expect(actual.toString()).toEqual(expected.toString());
53
-
54
- expected = new Date(Date.UTC(2011, 6, 20, 13, 03, 39));
55
- actual = I18n.parseDate("Wed Jul 20 13:03:39 +0000 2011");
56
- expect(actual.toString()).toEqual(expected.toString());
57
-
58
- expected = new Date(Date.UTC(2009, 0, 24, 15, 33, 44));
59
- actual = I18n.parseDate("2009-01-24T15:33:44Z");
60
- expect(actual.toString()).toEqual(expected.toString());
61
-
62
- expected = new Date(Date.UTC(2009, 0, 24, 15, 34, 44, 200));
63
- actual = I18n.parseDate("2009-01-24T15:34:44.200Z");
64
- expect(actual.toString()).toEqual(expected.toString());
65
- expect(actual.getMilliseconds()).toEqual(expected.getMilliseconds())
66
-
67
- expected = new Date(Date.UTC(2009, 0, 24, 15, 34, 45, 200));
68
- actual = I18n.parseDate("2009-01-24T15:34:45.200+0000");
69
- expect(actual.toString()).toEqual(expected.toString());
70
- expect(actual.getMilliseconds()).toEqual(expected.getMilliseconds())
71
-
72
- expected = new Date(Date.UTC(2009, 0, 24, 15, 34, 46, 200));
73
- actual = I18n.parseDate("2009-01-24T15:34:46.200+00:00");
74
- expect(actual.toString()).toEqual(expected.toString());
75
- expect(actual.getMilliseconds()).toEqual(expected.getMilliseconds())
76
- });
77
-
78
- it("formats date", function(){
79
- I18n.locale = "pt-BR";
80
-
81
- // 2009-04-26 19:35:44 (Sunday)
82
- var date = new Date(2009, 3, 26, 19, 35, 44);
83
-
84
- // short week day
85
- expect(I18n.strftime(date, "%a")).toEqual("Dom");
86
-
87
- // full week day
88
- expect(I18n.strftime(date, "%A")).toEqual("Domingo");
89
-
90
- // short month
91
- expect(I18n.strftime(date, "%b")).toEqual("Abr");
92
-
93
- // full month
94
- expect(I18n.strftime(date, "%B")).toEqual("Abril");
95
-
96
- // day
97
- expect(I18n.strftime(date, "%d")).toEqual("26");
98
-
99
- // 24-hour
100
- expect(I18n.strftime(date, "%H")).toEqual("19");
101
-
102
- // 12-hour
103
- expect(I18n.strftime(date, "%I")).toEqual("07");
104
-
105
- // month
106
- expect(I18n.strftime(date, "%m")).toEqual("04");
107
-
108
- // minutes
109
- expect(I18n.strftime(date, "%M")).toEqual("35");
110
-
111
- // meridian
112
- expect(I18n.strftime(date, "%p")).toEqual("PM");
113
-
114
- // seconds
115
- expect(I18n.strftime(date, "%S")).toEqual("44");
116
-
117
- // week day
118
- expect(I18n.strftime(date, "%w")).toEqual("0");
119
-
120
- // short year
121
- expect(I18n.strftime(date, "%y")).toEqual("09");
122
-
123
- // full year
124
- expect(I18n.strftime(date, "%Y")).toEqual("2009");
125
- });
126
-
127
- it("formats date without padding", function(){
128
- I18n.locale = "pt-BR";
129
-
130
- // 2009-04-26 19:35:44 (Sunday)
131
- var date = new Date(2009, 3, 9, 7, 8, 9);
132
-
133
- // 24-hour without padding
134
- expect(I18n.strftime(date, "%-H")).toEqual("7");
135
- expect(I18n.strftime(date, "%k")).toEqual("7");
136
-
137
- // 12-hour without padding
138
- expect(I18n.strftime(date, "%-I")).toEqual("7");
139
- expect(I18n.strftime(date, "%l")).toEqual("7");
140
-
141
- // minutes without padding
142
- expect(I18n.strftime(date, "%-M")).toEqual("8");
143
-
144
- // seconds without padding
145
- expect(I18n.strftime(date, "%-S")).toEqual("9");
146
-
147
- // short year without padding
148
- expect(I18n.strftime(date, "%-y")).toEqual("9");
149
-
150
- // month without padding
151
- expect(I18n.strftime(date, "%-m")).toEqual("4");
152
-
153
- // day without padding
154
- expect(I18n.strftime(date, "%-d")).toEqual("9");
155
- expect(I18n.strftime(date, "%e")).toEqual("9");
156
- });
157
-
158
- it("formats date with padding", function(){
159
- I18n.locale = "pt-BR";
160
-
161
- // 2009-04-26 19:35:44 (Sunday)
162
- var date = new Date(2009, 3, 9, 7, 8, 9);
163
-
164
- // 24-hour
165
- expect(I18n.strftime(date, "%H")).toEqual("07");
166
-
167
- // 12-hour
168
- expect(I18n.strftime(date, "%I")).toEqual("07");
169
-
170
- // minutes
171
- expect(I18n.strftime(date, "%M")).toEqual("08");
172
-
173
- // seconds
174
- expect(I18n.strftime(date, "%S")).toEqual("09");
175
-
176
- // short year
177
- expect(I18n.strftime(date, "%y")).toEqual("09");
178
-
179
- // month
180
- expect(I18n.strftime(date, "%m")).toEqual("04");
181
-
182
- // day
183
- expect(I18n.strftime(date, "%d")).toEqual("09");
184
- });
185
-
186
- it("formats date with negative time zone", function(){
187
- I18n.locale = "pt-BR";
188
- var date = new Date(2009, 3, 26, 19, 35, 44);
189
-
190
- spyOn(date, "getTimezoneOffset").andReturn(345);
191
-
192
- expect(I18n.strftime(date, "%z")).toMatch(/^(\+|-)[\d]{4}$/);
193
- expect(I18n.strftime(date, "%Z")).toMatch(/^(\+|-)[\d]{4}$/);
194
- expect(I18n.strftime(date, "%z")).toEqual("-0545");
195
- expect(I18n.strftime(date, "%Z")).toEqual("-0545");
196
- });
197
-
198
- it("formats date with positive time zone", function(){
199
- I18n.locale = "pt-BR";
200
- var date = new Date(2009, 3, 26, 19, 35, 44);
201
-
202
- spyOn(date, "getTimezoneOffset").andReturn(-345);
203
-
204
- expect(I18n.strftime(date, "%z")).toMatch(/^(\+|-)[\d]{4}$/);
205
- expect(I18n.strftime(date, "%Z")).toMatch(/^(\+|-)[\d]{4}$/);
206
- expect(I18n.strftime(date, "%z")).toEqual("+0545");
207
- expect(I18n.strftime(date, "%Z")).toEqual("+0545");
208
- });
209
-
210
- it("formats date with custom meridian", function(){
211
- I18n.locale = "en-US";
212
- var date = new Date(2009, 3, 26, 19, 35, 44);
213
- expect(I18n.strftime(date, "%p")).toEqual("pm");
214
- expect(I18n.strftime(date, "%P")).toEqual("pm");
215
- });
216
-
217
- it("formats date with meridian boundaries", function(){
218
- I18n.locale = "en-US";
219
- var date = new Date(2009, 3, 26, 0, 35, 44);
220
- expect(I18n.strftime(date, "%p")).toEqual("am");
221
- expect(I18n.strftime(date, "%P")).toEqual("am");
222
-
223
- date = new Date(2009, 3, 26, 12, 35, 44);
224
- expect(I18n.strftime(date, "%p")).toEqual("pm");
225
- expect(I18n.strftime(date, "%P")).toEqual("pm");
226
- });
227
-
228
- it("formats date using 12-hours format", function(){
229
- I18n.locale = "pt-BR";
230
- var date = new Date(2009, 3, 26, 19, 35, 44);
231
- expect(I18n.strftime(date, "%I")).toEqual("07");
232
-
233
- date = new Date(2009, 3, 26, 12, 35, 44);
234
- expect(I18n.strftime(date, "%I")).toEqual("12");
235
-
236
- date = new Date(2009, 3, 26, 0, 35, 44);
237
- expect(I18n.strftime(date, "%I")).toEqual("12");
238
- });
239
-
240
- it("defaults to English", function() {
241
- I18n.locale = "wk";
242
-
243
- var date = new Date(2009, 3, 26, 19, 35, 44);
244
- expect(I18n.strftime(date, "%a")).toEqual("Sun");
245
- });
246
-
247
- it("applies locale fallback", function(){
248
- I18n.defaultLocale = "en-US";
249
- I18n.locale = "de";
250
-
251
- var date = new Date(2009, 3, 26, 19, 35, 44);
252
- expect(I18n.strftime(date, "%A")).toEqual("Sonntag");
253
-
254
- date = new Date(2009, 3, 26, 19, 35, 44);
255
- expect(I18n.strftime(date, "%a")).toEqual("Sun");
256
- });
257
-
258
- it("uses time as the meridian scope", function(){
259
- I18n.locale = "de";
260
-
261
- var date = new Date(2009, 3, 26, 19, 35, 44);
262
- expect(I18n.strftime(date, "%p")).toEqual("de:PM");
263
- expect(I18n.strftime(date, "%P")).toEqual("de:pm");
264
-
265
- date = new Date(2009, 3, 26, 7, 35, 44);
266
- expect(I18n.strftime(date, "%p")).toEqual("de:AM");
267
- expect(I18n.strftime(date, "%P")).toEqual("de:am");
268
- });
269
-
270
- it("fails to format invalid date", function(){
271
- var date = new Date('foo');
272
- expect(function() {
273
- I18n.strftime(date, "%a");
274
- }).toThrow('I18n.strftime() requires a valid date object, but received an invalid date.');
275
- });
276
- });
@@ -1,31 +0,0 @@
1
- var I18n = require("../../app/assets/javascripts/i18n");
2
-
3
- describe("Defaults", function(){
4
- beforeEach(function(){
5
- I18n.reset();
6
- });
7
-
8
- it("sets the default locale", function(){
9
- expect(I18n.defaultLocale).toEqual("en");
10
- });
11
-
12
- it("sets current locale", function(){
13
- expect(I18n.locale).toEqual("en");
14
- });
15
-
16
- it("sets default separator", function(){
17
- expect(I18n.defaultSeparator).toEqual(".");
18
- });
19
-
20
- it("sets fallback", function(){
21
- expect(I18n.fallbacks).toEqual(false);
22
- });
23
-
24
- it("set empty translation prefix", function(){
25
- expect(I18n.missingTranslationPrefix).toEqual('');
26
- });
27
-
28
- it("sets default missingBehaviour", function(){
29
- expect(I18n.missingBehaviour).toEqual('message');
30
- });
31
- });