gettext_i18n_rails 1.0.2 → 1.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b639edb5db08cc33d5d8e91ea03aa2bb4b05f7b
4
- data.tar.gz: 0bdd9275776ba4458410db76f8cd588ab67da765
3
+ metadata.gz: 623301d35d7171c487fa85ccd3c38e908ec9353e
4
+ data.tar.gz: 0fdb42391b384319f2e97cec0c8915468222d425
5
5
  SHA512:
6
- metadata.gz: 45eb5bd57c4597d22fd44233211d244b32bd9a168ef495b1cf3482a11f5ae6f0a21baae09f4919ae561242f70a9add71bf1ea3fc9449fd902ec2150d6da54691
7
- data.tar.gz: e79b893ecbadeeeb8fafdadded2aef8c4c7e3ced9e38694e0189d6bf105dc199adeb32c4f5e9f32c3a3b2844f78a588ee88a16c21fd99d8be3cc400dbd26da8a
6
+ metadata.gz: 53771e1602ea5452e617cbaa54cebeb2bbddace5b7ddb9a270f43eedc16adc8973c22f408b8c5e977e6d54a7f4846755a58d24688fd923b40c85a290c949c2ed
7
+ data.tar.gz: d7d88f58653a25ba059d81bd1077e1b55995eaf1d7efeec46891d820ed4542c89e4eaa9025bb1415d40098e0589b6bf836bafd582aee66fcaaff9c2ddcbafd63
data/MIT-LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (C) 2013 Michael Grosser <michael@grosser.it>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,3 +1,3 @@
1
1
  module GettextI18nRails
2
- Version = VERSION = '1.0.2'
2
+ Version = VERSION = '1.0.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gettext_i18n_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-17 00:00:00.000000000 Z
11
+ date: 2013-11-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fast_gettext
@@ -30,23 +30,7 @@ executables: []
30
30
  extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
- - .gitignore
34
- - .travis.yml
35
- - Appraisals
36
- - Gemfile
37
- - Gemfile.lock
38
- - Rakefile
39
- - Readme.md
40
- - gemfiles/rails23.gemfile
41
- - gemfiles/rails23.gemfile.lock
42
- - gemfiles/rails30.gemfile
43
- - gemfiles/rails30.gemfile.lock
44
- - gemfiles/rails31.gemfile
45
- - gemfiles/rails31.gemfile.lock
46
- - gemfiles/rails32.gemfile
47
- - gemfiles/rails32.gemfile.lock
48
- - gettext_i18n_rails.gemspec
49
- - init.rb
33
+ - MIT-LICENSE.txt
50
34
  - lib/gettext_i18n_rails.rb
51
35
  - lib/gettext_i18n_rails/action_controller.rb
52
36
  - lib/gettext_i18n_rails/active_model.rb
@@ -67,16 +51,6 @@ files:
67
51
  - lib/gettext_i18n_rails/tasks.rb
68
52
  - lib/gettext_i18n_rails/version.rb
69
53
  - lib/tasks/gettext_rails_i18n.rake
70
- - spec/gettext_i18n_rails/action_controller_spec.rb
71
- - spec/gettext_i18n_rails/active_model/name_spec.rb
72
- - spec/gettext_i18n_rails/active_record_spec.rb
73
- - spec/gettext_i18n_rails/backend_spec.rb
74
- - spec/gettext_i18n_rails/haml_parser_spec.rb
75
- - spec/gettext_i18n_rails/model_attributes_finder_spec.rb
76
- - spec/gettext_i18n_rails/slim_parser_spec.rb
77
- - spec/gettext_i18n_rails/string_interpolate_fix_spec.rb
78
- - spec/gettext_i18n_rails_spec.rb
79
- - spec/spec_helper.rb
80
54
  homepage: http://github.com/grosser/gettext_i18n_rails
81
55
  licenses:
82
56
  - MIT
data/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- .idea
2
- pkg/*.gem
data/.travis.yml DELETED
@@ -1,14 +0,0 @@
1
- bundler_args: ""
2
- script: "bundle exec rake spec"
3
- gemfile:
4
- - gemfiles/rails23.gemfile
5
- - gemfiles/rails30.gemfile
6
- - gemfiles/rails31.gemfile
7
- - gemfiles/rails32.gemfile
8
- matrix:
9
- exclude:
10
- - rvm: 2.0
11
- gemfile: gemfiles/rails23.gemfile
12
- rvm:
13
- - 1.9.3
14
- - 2.0.0
data/Appraisals DELETED
@@ -1,6 +0,0 @@
1
- ['2.3', '3.0', '3.1', '3.2'].each do |version|
2
- appraise "rails#{version.sub(".", "")}" do
3
- gem "rails", "~>#{version}.0"
4
- gem "haml", "~> 3.0" if version == "2.3"
5
- end
6
- end
data/Gemfile DELETED
@@ -1,13 +0,0 @@
1
- source 'http://rubygems.org'
2
- gemspec
3
-
4
- gem 'appraisal'
5
- gem 'bump'
6
- gem 'gettext', '>= 3.0.2'
7
- gem 'haml'
8
- gem 'rails'
9
- gem 'rake'
10
- gem 'ruby_parser', '>= 3'
11
- gem 'rspec'
12
- gem 'slim'
13
- gem 'sqlite3'
data/Gemfile.lock DELETED
@@ -1,125 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- gettext_i18n_rails (1.0.2)
5
- fast_gettext (>= 0.4.8)
6
-
7
- GEM
8
- remote: http://rubygems.org/
9
- specs:
10
- actionmailer (4.0.0)
11
- actionpack (= 4.0.0)
12
- mail (~> 2.5.3)
13
- actionpack (4.0.0)
14
- activesupport (= 4.0.0)
15
- builder (~> 3.1.0)
16
- erubis (~> 2.7.0)
17
- rack (~> 1.5.2)
18
- rack-test (~> 0.6.2)
19
- activemodel (4.0.0)
20
- activesupport (= 4.0.0)
21
- builder (~> 3.1.0)
22
- activerecord (4.0.0)
23
- activemodel (= 4.0.0)
24
- activerecord-deprecated_finders (~> 1.0.2)
25
- activesupport (= 4.0.0)
26
- arel (~> 4.0.0)
27
- activerecord-deprecated_finders (1.0.3)
28
- activesupport (4.0.0)
29
- i18n (~> 0.6, >= 0.6.4)
30
- minitest (~> 4.2)
31
- multi_json (~> 1.3)
32
- thread_safe (~> 0.1)
33
- tzinfo (~> 0.3.37)
34
- appraisal (0.5.2)
35
- bundler
36
- rake
37
- arel (4.0.0)
38
- atomic (1.1.12)
39
- builder (3.1.4)
40
- bump (0.4.2)
41
- diff-lcs (1.2.4)
42
- erubis (2.7.0)
43
- fast_gettext (0.8.0)
44
- gettext (3.0.2)
45
- locale (>= 2.0.5)
46
- text
47
- haml (4.0.3)
48
- tilt
49
- hike (1.2.3)
50
- i18n (0.6.4)
51
- locale (2.0.9)
52
- mail (2.5.4)
53
- mime-types (~> 1.16)
54
- treetop (~> 1.4.8)
55
- mime-types (1.23)
56
- minitest (4.7.5)
57
- multi_json (1.7.8)
58
- polyglot (0.3.3)
59
- rack (1.5.2)
60
- rack-test (0.6.2)
61
- rack (>= 1.0)
62
- rails (4.0.0)
63
- actionmailer (= 4.0.0)
64
- actionpack (= 4.0.0)
65
- activerecord (= 4.0.0)
66
- activesupport (= 4.0.0)
67
- bundler (>= 1.3.0, < 2.0)
68
- railties (= 4.0.0)
69
- sprockets-rails (~> 2.0.0)
70
- railties (4.0.0)
71
- actionpack (= 4.0.0)
72
- activesupport (= 4.0.0)
73
- rake (>= 0.8.7)
74
- thor (>= 0.18.1, < 2.0)
75
- rake (10.1.0)
76
- rspec (2.14.1)
77
- rspec-core (~> 2.14.0)
78
- rspec-expectations (~> 2.14.0)
79
- rspec-mocks (~> 2.14.0)
80
- rspec-core (2.14.4)
81
- rspec-expectations (2.14.0)
82
- diff-lcs (>= 1.1.3, < 2.0)
83
- rspec-mocks (2.14.2)
84
- ruby_parser (3.2.2)
85
- sexp_processor (~> 4.1)
86
- sexp_processor (4.2.1)
87
- slim (2.0.1)
88
- temple (~> 0.6.6)
89
- tilt (>= 1.3.3, < 2.1)
90
- sprockets (2.10.0)
91
- hike (~> 1.2)
92
- multi_json (~> 1.0)
93
- rack (~> 1.0)
94
- tilt (~> 1.1, != 1.3.0)
95
- sprockets-rails (2.0.0)
96
- actionpack (>= 3.0)
97
- activesupport (>= 3.0)
98
- sprockets (~> 2.8)
99
- sqlite3 (1.3.7)
100
- temple (0.6.6)
101
- text (1.2.3)
102
- thor (0.18.1)
103
- thread_safe (0.1.2)
104
- atomic
105
- tilt (1.4.1)
106
- treetop (1.4.14)
107
- polyglot
108
- polyglot (>= 0.3.1)
109
- tzinfo (0.3.37)
110
-
111
- PLATFORMS
112
- ruby
113
-
114
- DEPENDENCIES
115
- appraisal
116
- bump
117
- gettext (>= 3.0.2)
118
- gettext_i18n_rails!
119
- haml
120
- rails
121
- rake
122
- rspec
123
- ruby_parser (>= 3)
124
- slim
125
- sqlite3
data/Rakefile DELETED
@@ -1,12 +0,0 @@
1
- require 'bundler/setup'
2
- require 'bundler/gem_tasks'
3
- require 'appraisal'
4
- require 'bump/tasks'
5
-
6
- task :spec do
7
- sh "rspec spec"
8
- end
9
-
10
- task :default do
11
- sh "rake appraisal:install && rake appraisal spec"
12
- end
data/Readme.md DELETED
@@ -1,313 +0,0 @@
1
- [FastGettext](http://github.com/grosser/fast_gettext) / Rails integration.
2
-
3
- Translate via FastGettext, use any other I18n backend as extension/fallback.
4
-
5
- Rails does: `I18n.t('syntax.with.lots.of.dots')` with nested yml files
6
- We do: `_('Just translate my damn text!')` with simple, flat mo/po/yml files or directly from db
7
- To use I18n calls add a `syntax.with.lots.of.dots` translation.
8
-
9
- [See it working in the example application.](https://github.com/grosser/gettext_i18n_rails_example)
10
-
11
- Setup
12
- =====
13
- ### Installation
14
-
15
- #### Rails 3
16
-
17
- ##### As plugin:
18
-
19
- rails plugin install git://github.com/grosser/gettext_i18n_rails.git
20
-
21
- # Gemfile
22
- gem 'fast_gettext', '>=0.4.8'
23
-
24
- ##### As gem:
25
-
26
- # Gemfile
27
- gem 'gettext_i18n_rails'
28
-
29
- ##### Optional:
30
- Add `gettext` if you want to find translations or build .mo files<br/>
31
- Add `ruby_parser` if you want to find translations inside haml/slim files
32
-
33
- # Gemfile
34
- gem 'gettext', '>=3.0.2', :require => false, :group => :development
35
- gem 'ruby_parser', :require => false, :group => :development
36
-
37
- ###### Add first language:
38
- Add the first language using:
39
-
40
- rake gettext:add_language[XX]
41
-
42
- or
43
-
44
- LANGUAGE=[XX] rake gettext:add_languange
45
-
46
- where XX is the [ISO 639-1](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) 2-letter code for the language you want to create.
47
-
48
- This will also create the `locale` directory (where the translations are being stored) and run `gettext:find` to find any strings marked for translation.
49
-
50
- You can, of course, add more languages using the same command.
51
-
52
- #### Rails 2
53
-
54
- ##### As plugin:
55
-
56
- script/plugin install git://github.com/grosser/gettext_i18n_rails.git
57
- sudo gem install fast_gettext
58
-
59
- # config/environment.rb
60
- config.gem "fast_gettext", :version => '>=0.4.8'
61
-
62
- ##### As gem:
63
-
64
- gem install gettext_i18n_rails
65
-
66
- # config/environment.rb
67
- config.gem 'gettext_i18n_rails'
68
-
69
- #Rakefile
70
- begin
71
- require "gettext_i18n_rails/tasks"
72
- rescue LoadError
73
- puts "gettext_i18n_rails is not installed, you probably should run 'rake gems:install' or 'bundle install'."
74
- end
75
-
76
- ##### Optional:
77
- If you want to find translations or build .mo files
78
- # config/environments/development.rb
79
- config.gem "gettext", :version => '>=1.9.3', :lib => false
80
-
81
- ### Locales & initialisation
82
- Copy default locales with dates/sentence-connectors/AR-errors you want from e.g.
83
- [rails i18n](http://github.com/svenfuchs/rails-i18n/tree/master/rails/locale/) into 'config/locales'
84
-
85
- To initialize:
86
-
87
- # config/initializers/fast_gettext.rb
88
- FastGettext.add_text_domain 'app', :path => 'locale', :type => :po
89
- FastGettext.default_available_locales = ['en','de'] #all you want to allow
90
- FastGettext.default_text_domain = 'app'
91
-
92
- And in your application:
93
-
94
- # app/controllers/application_controller.rb
95
- class ApplicationController < ...
96
- before_filter :set_gettext_locale
97
-
98
- Translating
99
- ===========
100
- Performance is almost the same for all backends since translations are cached after first use.
101
-
102
- ### Option A: .po files
103
-
104
- FastGettext.add_text_domain 'app', :path => 'locale', :type => :po
105
-
106
- - use some _('translations')
107
- - run `rake gettext:find`, to let GetText find all translations used
108
- - (optional) run `rake gettext:store_model_attributes`, to parse the database for columns that can be translated
109
- - if this is your first translation: `cp locale/app.pot locale/de/app.po` for every locale you want to use
110
- - translate messages in 'locale/de/app.po' (leave msgstr blank and msgstr == msgid)
111
-
112
- New translations will be marked "fuzzy", search for this and remove it, so that they will be used.
113
- Obsolete translations are marked with ~#, they usually can be removed since they are no longer needed
114
-
115
- #### Unfound translations with rake gettext:find
116
- Dynamic translations like `_("x"+"u")` cannot be fond. You have 4 options:
117
-
118
- - add `N_('xu')` somewhere else in the code, so the parser sees it
119
- - add `N_('xu')` in a totally separate file like `locale/unfound_translations.rb`, so the parser sees it
120
- - use the [gettext_test_log rails plugin ](http://github.com/grosser/gettext_test_log) to find all translations that where used while testing
121
- - add a Logger to a translation Chain, so every unfound translations is logged ([example]((http://github.com/grosser/fast_gettext)))
122
-
123
- ### Option B: Traditional .po/.mo files
124
-
125
- FastGettext.add_text_domain 'app', :path => 'locale'
126
-
127
- - follow Option A
128
- - run `rake gettext:pack` to write binary GetText .mo files
129
-
130
- ### Option C: Database
131
- Most scalable method, all translators can work simultaneously and online.
132
-
133
- Easiest to use with the [translation database Rails engine](http://github.com/grosser/translation_db_engine).
134
- Translations can be edited under `/translation_keys`
135
-
136
- FastGettext::TranslationRepository::Db.require_models
137
- FastGettext.add_text_domain 'app', :type => :db, :model => TranslationKey
138
-
139
- I18n
140
- ====
141
- I18n.locale <==> FastGettext.locale.to_sym
142
- I18n.locale = :de <==> FastGettext.locale = 'de'
143
-
144
- Any call to I18n that matches a gettext key will be translated through FastGettext.
145
-
146
- Namespaces
147
- ==========
148
- Car|Model means Model in namespace Car.
149
- You do not have to translate this into english "Model", if you use the
150
- namespace-aware translation
151
- s_('Car|Model') == 'Model' #when no translation was found
152
-
153
- XSS / html_safe
154
- ===============
155
- If you trust your translators and all your usages of % on translations:<br/>
156
- # config/environment.rb
157
- GettextI18nRails.translations_are_html_safe = true
158
-
159
- String % vs html_safe is buggy (can be used for XSS on 1.8 and is always non-safe in 1.9)<br/>
160
- My recommended fix is: `require 'gettext_i18n_rails/string_interpolate_fix'`
161
-
162
- - safe stays safe (escape added strings)
163
- - unsafe stays unsafe (do not escape added strings)
164
-
165
- ActiveRecord - error messages
166
- =============================
167
- ActiveRecord error messages are translated through Rails::I18n, but
168
- model names and model attributes are translated through FastGettext.
169
- Therefore a validation error on a BigCar's wheels_size needs `_('big car')` and `_('BigCar|Wheels size')`
170
- to display localized.
171
-
172
- The model/attribute translations can be found through `rake gettext:store_model_attributes`,
173
- (which ignores some commonly untranslated columns like id,type,xxx_count,...).
174
-
175
- Error messages can be translated through FastGettext, if the ':message' is a translation-id or the matching Rails I18n key is translated.
176
-
177
- ####Option A:
178
- Define a translation for "I need my rating!" and use it as message.
179
- validates_inclusion_of :rating, :in=>1..5, :message=>N_('I need my rating!')
180
-
181
- ####Option B:
182
- validates_inclusion_of :rating, :in=>1..5
183
- Make a translation for the I18n key: `activerecord.errors.models.rating.attributes.rating.inclusion`
184
-
185
- ####Option C:
186
- Add a translation to each config/locales/*.yml files
187
- en:
188
- activerecord:
189
- errors:
190
- models:
191
- rating:
192
- attributes:
193
- rating:
194
- inclusion: " -- please choose!"
195
- The [rails I18n guide](http://guides.rubyonrails.org/i18n.html) can help with Option B and C.
196
-
197
- Plurals
198
- =======
199
- FastGettext supports pluralization
200
- n_('Apple','Apples',3) == 'Apples'
201
-
202
- Abnormal plurals like e.g. Polish that has 4 different can also be addressed, see [FastGettext Readme](http://github.com/grosser/fast_gettext)
203
-
204
- Customizing list of translatable files
205
- ======================================
206
- When you run
207
-
208
- rake gettext:find
209
-
210
- by default the following files are going to be scanned for translations: {app,lib,config,locale}/**/*.{rb,erb,haml,slim}. If
211
- you want to specify a different list, you can redefine files_to_translate in the gettext namespace in a file like
212
- lib/tasks/gettext.rake:
213
-
214
- namespace :gettext do
215
- def files_to_translate
216
- Dir.glob("{app,lib,config,locale}/**/*.{rb,erb,haml,slim,rhtml}")
217
- end
218
- end
219
-
220
- Customizing text domains setup task
221
- ===================================
222
-
223
- By default a single application text domain is created (named `app` or if you load the environment the value of `FastGettext.text_domain` is being used).
224
-
225
- If you want to have multiple text domains or change the definition of the text domains in any way, you can do so by overriding the `:setup` task in a file like lib/tasks/gettext.rake:
226
-
227
- # Remove the provided gettext setup task
228
- Rake::Task["gettext:setup"].clear
229
-
230
- namespace :gettext do
231
- task :setup => [:environment] do
232
- domains = Application.config.gettext["domains"]
233
-
234
- domains.each do |domain, options|
235
- files = Dir.glob(options["paths"])
236
-
237
- GetText::Tools::Task.define do |task|
238
- task.package_name = options["name"]
239
- task.package_version = "1.0.0"
240
- task.domain = options["name"]
241
- task.po_base_directory = locale_path
242
- task.mo_base_directory = locale_path
243
- task.files = files
244
- task.enable_description = false
245
- task.msgmerge_options = gettext_msgmerge_options
246
- task.xgettext_options = gettext_xgettext_options
247
- end
248
- end
249
- end
250
- end
251
-
252
- Changing msgmerge and xgettext options
253
- ======================================
254
-
255
- The default options for parsing and create `.po` files are:
256
-
257
- --sort-by-msgid --no-location --no-wrap
258
-
259
- These options sort the translations by the msgid (original / source string), don't add location information in the po file and don't wrap long message lines into several lines.
260
-
261
- If you want to override them you can put the following into an initializer like config/initializers/gettext.rb:
262
-
263
- Rails.application.config.gettext_i18n_rails.msgmerge = %w[--no-location]
264
- Rails.application.config.gettext_i18n_rails.xgettext = %w[--no-location]
265
-
266
- or
267
-
268
- Rails.application.config.gettext_i18n_rails.default_options = %w[--no-location]
269
-
270
- to override both.
271
-
272
- You can see the available options by running `rgettext -h` and `rxgettext -h`.
273
-
274
- Using your translations from javascript
275
- =======================================
276
-
277
- If want to use your .PO files on client side javascript you should have a look at the [GettextI18nRailsJs](https://github.com/nubis/gettext_i18n_rails_js) extension.
278
-
279
- [Contributors](http://github.com/grosser/gettext_i18n_rails/contributors)
280
- ======
281
- - [ruby gettext extractor](http://github.com/retoo/ruby_gettext_extractor/tree/master) from [retoo](http://github.com/retoo)
282
- - [Paul McMahon](http://github.com/pwim)
283
- - [Duncan Mac-Vicar P](http://duncan.mac-vicar.com/blog)
284
- - [Ramihajamalala Hery](http://my.rails-royce.org)
285
- - [J. Pablo Fernández](http://pupeno.com)
286
- - [Anh Hai Trinh](http://blog.onideas.ws)
287
- - [ed0h](http://github.com/ed0h)
288
- - [Nikos Dimitrakopoulos](http://blog.nikosd.com)
289
- - [Ben Tucker](http://btucker.net/)
290
- - [Kamil Śliwak](https://github.com/cameel)
291
- - [Paul McMahon](https://github.com/pwim)
292
- - [Rainux Luo](https://github.com/rainux)
293
- - [Lucas Hills](https://github.com/2potatocakes)
294
- - [Ladislav Slezák](https://github.com/lslezak)
295
- - [Greg Weber](https://github.com/gregwebs)
296
- - [Sean Kirby](https://github.com/sskirby)
297
- - [Julien Letessier](https://github.com/mezis)
298
- - [Seb Bacon](https://github.com/sebbacon)
299
- - [Ramón Cahenzli](https://github.com/psy-q)
300
- - [rustygeldmacher](https://github.com/rustygeldmacher)
301
- - [Jeroen Knoops](https://github.com/JeroenKnoops)
302
- - [Ivan Necas](https://github.com/iNecas)
303
- - [Andrey Chernih](https://github.com/AndreyChernyh)
304
- - [Imre Farkas](https://github.com/ifarkas)
305
- - [Trong Tran](https://github.com/trongrg)
306
- - [Dmitri Dolguikh](https://github.com/witlessbird)
307
- - [Joe Ferris](https://github.com/jferris)
308
-
309
- [Michael Grosser](http://grosser.it)<br/>
310
- grosser.michael@gmail.com<br/>
311
- License: MIT<br/>
312
- [![Build Status](https://travis-ci.org/grosser/gettext_i18n_rails.png)](https://travis-ci.org/grosser/gettext_i18n_rails)
313
-