l10n 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 866b98e1c6683bc7ec991e01d7d2d1ee67311906
4
- data.tar.gz: 3c5bb6f5e84a1d83839e35d470c9482fb764c9bb
3
+ metadata.gz: d7f3cc16fbc921b6681758f6c4ff7f3d2f783052
4
+ data.tar.gz: 617e2a3795ac781d6ba43c0d66288aa2f872afb8
5
5
  SHA512:
6
- metadata.gz: 3b955a86b74e926412306b7e03b7e81c93a781a7f866c0c92de4b1b46d005158e7b8700c572cc9b449fb49345f7dac135c20c2c3e0f44370de257e6a8ee8cbdb
7
- data.tar.gz: 71f8806d4025bfb63697d44a0e1b76cd8da2a9fccc2b61378135eb9d512a5cef886d7f13b6564e31307dde6958128009258679b71fc0671935c43d8ce780d8b2
6
+ metadata.gz: 701003456bee2225f62ac1951c5a2432303ec43b671f6fdf1f00fbab1b97783b84eff05ef0d9f21faf3892a8e867562b5c63e64bbe326a5c95b6bad9361dbe70
7
+ data.tar.gz: c19dc9321a710cc84dd2f0a5b087b8995c995e01aabb703d13fe9381431a68a2644eea6c64c144f97ba2c96e89de4453fb601fd972d3ef28cfc62b96febe2149
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # L10n - I18n that roarrrs
2
2
 
3
+ L10n provides some useful extensions for Rails I18n, including column translations, localization of numeric form fields and JavaScript translation support.
4
+
3
5
  ## Installation
4
6
 
5
7
  ```ruby
@@ -9,20 +11,20 @@ gem 'l10n'
9
11
 
10
12
  ## Setting up your app
11
13
 
12
- In your <language>.yml, make sure to have definitions for
14
+ In your `<locale>.yml`, make sure to have definitions for
13
15
 
16
+ ```yaml
14
17
  number:
15
18
  precision:
16
19
  format:
17
- separator: ","
18
20
  delimiter: "."
19
- precision: 2
20
-
21
- As there is currently a bug in Rails: https://github.com/rails/rails/issues/4420
21
+ ```
22
22
 
23
23
  ## Features
24
24
 
25
- ### ActiveRecord column translations
25
+ ### Active Record attribute translations
26
+
27
+ Translated attributes provide an `<attr>_t` suffix, which maps to the column determined by the current locale. There is no whatsoever "magic" remapping of actual attributes. The `<attr>_t` accessor is used exclusively for mapping to the column referred to by the current locale.
26
28
 
27
29
  ```ruby
28
30
  class Fruit < ActiveRecord::Base
@@ -40,8 +42,23 @@ I18n.as(:fr) { apple.name_t } => "Pomme"
40
42
  apple.name_translations => { en: "Apple", de: "Apfel", fr: "Pomme" }
41
43
  ```
42
44
 
43
- Translated columns also support validation:
45
+ The `<attr>_t` and `<attr>_translations` setters map to the current locale:
46
+ ```ruby
47
+ pear = Fruit.new
48
+ pear.name_translations = { en: 'Pear', de: 'Birne', fr: 'Poire' }
44
49
 
50
+ I18n.locale = :fr
51
+ pear.name => "Pear"
52
+ pear.name_t => "Poire"
53
+
54
+ I18n.locale = :en
55
+ pear.name => "Pear"
56
+ pear.name_t => "Pear"
57
+ pear.name_t = 'Williams Christ'
58
+ pear.name => "Williams Christ"
59
+ ```
60
+
61
+ Translated columns also support validation:
45
62
  ```ruby
46
63
  class Fruit < ActiveRecord::Base
47
64
  translates :name
@@ -55,6 +72,8 @@ end
55
72
 
56
73
  #### String and Symbol
57
74
 
75
+ Strings and symbols provide a `translate` method, aliased as `t` which maps to `I18n.t`.
76
+
58
77
  ```yaml
59
78
  # de.yml
60
79
  de:
@@ -76,19 +95,21 @@ I18n.locale = :de
76
95
  'hello'.t(name: 'Otto') => "Hallo Otto!"
77
96
  ```
78
97
 
79
- This also works with symbols.
80
-
81
98
  #### Formatting of numbers
82
99
 
100
+ Calling `to_formatted_s` on `Numeric`s returns the number as a formatted string. The format is defined by the current locale and respects the decimal delimiters and separators defined in your `<locale>.yml`.
101
+
83
102
  ```ruby
84
103
  I18n.as('de') { 1234.5.to_formatted_s } => "1.234,50"
85
104
  I18n.as('en') { 1234.5.to_formatted_s } => "1,234.50"
86
105
  ```
87
106
 
88
- This also works with instances of BigDecimal.
107
+ This also works with `BigDecimal`s.
89
108
 
90
109
  #### Localization of decimal separator and delimiter for numbers
91
110
 
111
+ Localization converts decimal separators and delimiters between locales without re-formatting strings. `to_localized_s` can be called on any object.
112
+
92
113
  ```ruby
93
114
  I18n.as('de') { 1234.5.to_localized_s } => "1.234,5"
94
115
  I18n.as('en') { 1234.5.to_localized_s } => "1,234.5"
@@ -103,10 +124,12 @@ I18n.as(:en) { Numeric.localize('1,234.50') } => "1,234.50"
103
124
 
104
125
  ### Automatic localization of numeric values in Rails forms and models
105
126
 
127
+ The `amount_field` form helper automatically formats numbers in the current locale. Numeric columns automatically convert the localized strings into numbers, respecting decimal delimiters and separators.
128
+
106
129
  ```ruby
107
130
  # in your template
108
131
  <%= form_for @car do |f| %>
109
- <% f.amount_field :price, precision: 2 %>
132
+ <%= f.amount_field :price, precision: 2 %>
110
133
  <% end %>
111
134
 
112
135
  # in your controller, or elsewhere
@@ -121,7 +144,7 @@ I18n.locale = :en
121
144
 
122
145
  ### Accept-Language header parsing in ActionDispatch::Request
123
146
 
124
- The Accept-Language header will be parsed, and locales will be returned ordered by user preference.
147
+ The `Accept-Language` HTTP header will be parsed, and locales will be returned ordered by user preference. This comes in handy when setting the current locale in a `before_action`.
125
148
 
126
149
  ```ruby
127
150
  # in your controller
@@ -130,6 +153,15 @@ request.accept_locales => ["en-US", "en", "en-GB"]
130
153
 
131
154
  ### Javascript I18n, interpolation and pluralization
132
155
 
156
+ If you need I18n support in your javascripts, require the `i18n` javascript from your `application.js`:
157
+
158
+ ```javascript
159
+ /* application.js */
160
+ //= require i18n
161
+ ```
162
+
163
+ The JS `String` prototype is extended with a `t()` function, supporting translation, pluralization and interpolation:
164
+
133
165
  ```yaml
134
166
  # en.yml
135
167
  en:
@@ -150,5 +182,5 @@ en:
150
182
  // in any javascript
151
183
  "hello".t({ name: "JS" }) => "Hello JS!"
152
184
 
153
- "apple".t({ count: 4 }) => "5 apples"
185
+ "apple".t({ count: 5 }) => "5 apples"
154
186
  ```
@@ -7,11 +7,11 @@ module L10n
7
7
  preferred_locales = []
8
8
  for locale_group in locale_groups
9
9
  locale = locale_group.split(';')
10
- language_code, params = locale[0].to_s.strip, locale[1]
10
+ language_code, params = locale[0].to_s.strip, locale[1].to_s.strip
11
11
  if /\A[A-z]{2}(-[A-z]{2})?\z/.match(language_code)
12
- if params
12
+ if params.present?
13
13
  name, value = params.split('=')
14
- q = (name == 'q' and value.to_f > 0 ? value.to_f : 1.0)
14
+ q = (name == 'q' && value.to_f > 0 ? value.to_f : 1.0)
15
15
  else
16
16
  q = 1.0
17
17
  end
@@ -1,3 +1,3 @@
1
1
  module L10n
2
- VERSION = '1.1.0'
2
+ VERSION = '1.1.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: l10n
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthias Grosser
@@ -186,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
186
  version: '0'
187
187
  requirements: []
188
188
  rubyforge_project:
189
- rubygems_version: 2.2.2
189
+ rubygems_version: 2.5.1
190
190
  signing_key:
191
191
  specification_version: 4
192
192
  summary: I18n that roarrrs