i18n-js 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.