i18n-js 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- i18n-js (1.0.1)
4
+ i18n-js (1.0.2)
5
5
  i18n
6
6
 
7
7
  GEM
@@ -3,7 +3,7 @@ module SimplesIdeias
3
3
  module Version
4
4
  MAJOR = 1
5
5
  MINOR = 0
6
- PATCH = 1
6
+ PATCH = 2
7
7
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
8
8
  end
9
9
  end
@@ -13,6 +13,12 @@ I18n.locale = null;
13
13
  // Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`.
14
14
  I18n.PLACEHOLDER = /(?:\{\{|%\{)(.*?)(?:\}\}?)/gm;
15
15
 
16
+ I18n.isValidNode = function(obj, node) {
17
+ // local undefined variable in case another library corrupts window.undefined
18
+ var undef;
19
+ return obj[node] !== null && obj[node] !== undef;
20
+ }
21
+
16
22
  I18n.lookup = function(scope, options) {
17
23
  var translations = this.prepareOptions(I18n.translations);
18
24
  var messages = translations[I18n.currentLocale()];
@@ -41,7 +47,7 @@ I18n.lookup = function(scope, options) {
41
47
  }
42
48
  }
43
49
 
44
- if (!messages && options.defaultValue !== null && options.defaultValue !== undefined) {
50
+ if (!messages && this.isValidNode(options, "defaultValue")) {
45
51
  messages = options.defaultValue;
46
52
  }
47
53
 
@@ -67,7 +73,7 @@ I18n.prepareOptions = function() {
67
73
  }
68
74
 
69
75
  for (var key in opts) {
70
- if (options[key] === undefined || options[key] === null) {
76
+ if (!this.isValidNode(options, key)) {
71
77
  options[key] = opts[key];
72
78
  }
73
79
  }
@@ -91,7 +97,7 @@ I18n.interpolate = function(message, options) {
91
97
 
92
98
  value = options[name];
93
99
 
94
- if (options[name] === null || options[name] === undefined) {
100
+ if (!this.isValidNode(options, name)) {
95
101
  value = "[missing " + placeholder + " value]";
96
102
  }
97
103
 
@@ -369,13 +375,16 @@ I18n.pluralize = function(count, scope, options) {
369
375
 
370
376
  switch(Math.abs(count)) {
371
377
  case 0:
372
- message = translation.zero || translation.none || translation.other || this.missingTranslation(scope, "zero");
378
+ message = this.isValidNode(translation, "zero") ? translation.zero :
379
+ this.isValidNode(translation, "none") ? translation.none :
380
+ this.isValidNode(translation, "other") ? translation.other :
381
+ this.missingTranslation(scope, "zero");
373
382
  break;
374
383
  case 1:
375
- message = translation.one || this.missingTranslation(scope, "one");
384
+ message = this.isValidNode(translation, "one") ? translation.one : this.missingTranslation(scope, "one");
376
385
  break;
377
386
  default:
378
- message = translation.other || this.missingTranslation(scope, "other");
387
+ message = this.isValidNode(translation, "other") ? translation.other : this.missingTranslation(scope, "other");
379
388
  }
380
389
 
381
390
  return this.interpolate(message, options);
@@ -216,6 +216,12 @@ describe("I18n.js", function(){
216
216
  expect(actual).toBeEqualTo("You have no new messages (5 unread)");
217
217
  });
218
218
 
219
+ specify("pluralize should allow empty strings", function(){
220
+ I18n.translations["en"]["inbox"]["zero"] = "";
221
+
222
+ expect(I18n.p(0, "inbox")).toBeEqualTo("");
223
+ });
224
+
219
225
  specify("numbers with default settings", function(){
220
226
  expect(I18n.toNumber(1)).toBeEqualTo("1.000");
221
227
  expect(I18n.toNumber(12)).toBeEqualTo("12.000");
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: i18n-js
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.1
5
+ version: 1.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Nando Vieira
@@ -10,8 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-11 00:00:00 -03:00
14
- default_executable:
13
+ date: 2011-04-13 00:00:00 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: i18n
@@ -111,7 +110,6 @@ files:
111
110
  - spec/resources/no_scope.yml
112
111
  - spec/resources/simple_scope.yml
113
112
  - spec/spec_helper.rb
114
- has_rdoc: true
115
113
  homepage: http://rubygems.org/gems/i18n-js
116
114
  licenses: []
117
115
 
@@ -135,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
133
  requirements: []
136
134
 
137
135
  rubyforge_project:
138
- rubygems_version: 1.6.0
136
+ rubygems_version: 1.7.2
139
137
  signing_key:
140
138
  specification_version: 3
141
139
  summary: It's a small library to provide the Rails I18n translations on the Javascript.