i18n_structure 0.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.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in i18n_structure.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Wojciech Krysiak
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,132 @@
1
+ # I18nStructure
2
+
3
+ ## Put in order your locale files
4
+
5
+ This gem adds support of nice and nifty structure of locale files to your Rails app.
6
+ Gem divides translations into two groups:
7
+
8
+ - global namespaced translations: they could be repeated among different pages for different resources: for example **send** or **confirm**
9
+ - resource (activerecord) namespaced translations: specyfic for resource, for example **send request**, **add storey**. They are stored in files named after resource (**article.yml**) inside **config/locales/LOCALE_NAME/ar** folder
10
+
11
+ **Supported locale structure:** for example polish translations
12
+
13
+ ```yaml
14
+ pl:
15
+ labels: #/config/locales/pl/labels.yml
16
+ send: Wyślij
17
+ attributes: #/config/locales/pl/attributes.yml
18
+ name: Nazwa
19
+ collections: #/config/locales/pl/collections.yml
20
+ yes_no:
21
+ - - Tak
22
+ - true
23
+ - - Nie
24
+ - false
25
+ tooltips: #/config/locales/pl/tooltips.yml
26
+ name: Nazwa jest to .. #Some tooltip for name
27
+ activerecord:
28
+ attributes:
29
+ order: #/config/locales/pl/ar/order.yml
30
+ name: Nazwa zamówienia
31
+ order_type: Rodzaj zamówienia
32
+ order_type_collection: #collections are in attributes namespace
33
+ - - Odrzucone
34
+ - rejected
35
+ - - Zaakceptowane
36
+ - accepted
37
+ tooltips: #/config/locales/pl/ar/order.yml
38
+ order:
39
+ name: Tooltip
40
+ labels: #/config/locales/pl/ar/order.yml
41
+ order:
42
+ create_header: Stwórz zamówienie
43
+ ```
44
+
45
+ ## ...and use new i18n methods and helpers
46
+
47
+ I18nStructure gem also adds some usefull methods to I18n module and viwes:
48
+
49
+ ```rails
50
+ translate_label(key, model=nil, options={}) #alias tl()
51
+ translate_tooltip(key, model=nil, options={}) #alias tt()
52
+ translate_attribute(key, model=nil, options={}) #alias ta()
53
+ translate_collection(key, model=nil, options={}) #alias tc()
54
+
55
+ # and corresponding methods which tests presence of given translation:
56
+ translate_label?(key, model=nil, options={}) #alias tl?()
57
+ ...
58
+
59
+ ```
60
+
61
+ **Usage example for working with :labels**
62
+
63
+ ```ruby
64
+ # translate_label(key, model=nil, options={}), alias: tl
65
+ tl(:send) # returns Wyślij
66
+ tl(:create_order, :order) #returns "Stwórz zamówienie"
67
+ tl(:create_order, @order) #works the same
68
+ tl(:create_order, Order) #also the same
69
+ tl(:create_order, OrderDecorator) #the same again /using Draper gem
70
+ ```
71
+
72
+ **and with :collections**
73
+ ```ruby
74
+ # translate_collection(key, model=nil, options={}), alias: tc
75
+
76
+ # example for global translation:
77
+ tc(:yes_no) # returns [["Tak", true],["Nie", false]]
78
+
79
+ # example for resource translation
80
+ tc(:order_type, :order) #returns [["odrzucone", "rejected"], ["zaakceptowane", "accepted"]]
81
+ ```
82
+
83
+ **IMPORTANT** - in collections you **don't** have to use ..._collection suffix. Because of this you can iterate through attributes and view selectboxes without extra key operation:
84
+
85
+ ```rails
86
+ # haml and simple_form example
87
+ [attr1, attr2, attr3].each do |t|
88
+ f.input t, collection: tc(t, :model), :label => ta(t, :model)
89
+ end
90
+
91
+ ```
92
+
93
+
94
+ ## Installation
95
+
96
+ Add this line to your application's Gemfile:
97
+
98
+ gem 'i18n_structure'
99
+
100
+ And then execute:
101
+
102
+ $ bundle
103
+
104
+ Or install it yourself as:
105
+
106
+ $ gem install i18n_structure
107
+
108
+
109
+ ## Generator
110
+
111
+ You can generate all necessary locale files by using generator
112
+
113
+ $ rails g i18nstructure pl #for polish translations
114
+
115
+ Generator also adds:
116
+
117
+ $ config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
118
+
119
+ in your application.rb
120
+
121
+
122
+ ## Contributing
123
+
124
+ 1. Fork it
125
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
126
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
127
+ 4. Push to the branch (`git push origin my-new-feature`)
128
+ 5. Create new Pull Request
129
+
130
+ ## License
131
+
132
+ MIT
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'i18n_structure/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "i18n_structure"
8
+ spec.version = I18nStructure::VERSION
9
+ spec.authors = ["Wojciech Krysiak"]
10
+ spec.email = ["wojciech.g.krysiak@gmail.com"]
11
+ spec.description = %q{Create structure for I18n locale files}
12
+ spec.summary = %q{Create structure for I18n locale files}
13
+ spec.homepage = "https://github.com/KMPgroup/i18n-structure"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency 'rails', '>= 3.0.0'
22
+ spec.add_development_dependency "bundler", "~> 1.3"
23
+ spec.add_development_dependency "rake"
24
+ spec.add_development_dependency 'rails'
25
+ spec.add_development_dependency 'draper'
26
+ spec.add_development_dependency 'rspec'
27
+ end
data/lib/.DS_Store ADDED
Binary file
@@ -0,0 +1,14 @@
1
+ Description:
2
+ Generates translations for all models and default global translations
3
+
4
+ Example:
5
+ % rails g i18nstructure (pl, en ....)
6
+
7
+ This will create:
8
+ config/locales/locale/en/labels.yml
9
+ config/locales/locale/en/collections.yml
10
+ config/locales/locale/en/attributes.yml
11
+ config/locales/locale/en/tooltips.yml
12
+ config/locales/locale/en/ar/user.yml (for model user if you have it in your db)
13
+ config/locales/locale/en/ar/order.yml (for model order if you have it in your db)
14
+ etc....
@@ -0,0 +1,64 @@
1
+ # require 'generators/i18n_translation/lib/yaml'
2
+ require 'rails/generators'
3
+ require 'i18n'
4
+ require 'yaml'
5
+
6
+ class I18nStructureGenerator < Rails::Generators::NamedBase
7
+ source_root File.expand_path("../templates", __FILE__)
8
+ argument :locale_name, :type => :string, :default => "pl"
9
+
10
+ def main
11
+ unless locale_name =~ /^[a-zA-Z]{2}([-_][a-zA-Z]+)?$/
12
+ log 'ERROR: Wrong locale format. Please give locale in XX or XX-XX format.'
13
+ exit
14
+ end
15
+ log "create i18n structure for locale: #{locale_name}"
16
+
17
+ create_folders_for_locale(locale_name)
18
+ copy_initializer_file(locale_name)
19
+ create_ar_locales(locale_name)
20
+ update_locale_lookup_path
21
+ end
22
+
23
+
24
+ private
25
+ def update_locale_lookup_path
26
+ application "config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]"
27
+ end
28
+
29
+ def create_folders_for_locale(locale)
30
+ empty_directory "config/locales/#{locale}"
31
+ empty_directory "config/locales/#{locale}/ar"
32
+ end
33
+
34
+ def copy_initializer_file(locale)
35
+ empty_directory "config/locales/#{locale}"
36
+ %w{attributes.yml collections.yml labels.yml tooltips.yml}.each do |fn|
37
+ url = "config/locales/#{locale}/#{fn}"
38
+ copy_file fn, url
39
+
40
+ h = YAML::load_file(url)
41
+ h[locale_name] = h.delete("locale_name")
42
+ File.open(url, 'w') {|f| f.write h.to_yaml }
43
+ end
44
+ end
45
+
46
+ def create_ar_locales(locale_name)
47
+ table_names = ActiveRecord::Base.connection.tables.reject{|name| name == "schema_migrations"}
48
+ ar_path = "config/locales/#{locale_name}/ar"
49
+ empty_directory ar_path if table_names.any?
50
+ table_names.each do |table_name|
51
+ file_url = ar_path+"/#{table_name}.yml"
52
+ copy_file "ar.yml", file_url
53
+ h = YAML::load_file(file_url)
54
+ h[locale_name] = h.delete("locale_name")
55
+ h[locale_name]["activerecord"]["errors"]["models"][table_name.singularize] = h[locale_name]["activerecord"]["errors"]["models"].delete("model_name")
56
+ ["labels", "tooltips", "attributes"].each do |r|
57
+ h[locale_name]["activerecord"][r][table_name.singularize] = h[locale_name]["activerecord"][r].delete("model_name")
58
+ end
59
+
60
+
61
+ File.open(file_url, 'w') {|f| f.write h.to_yaml }
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,29 @@
1
+ locale_name:
2
+ activerecord:
3
+ errors:
4
+ models:
5
+ model_name:
6
+ attributes:
7
+ name:
8
+ some_errors_for_ar: You have error for this field
9
+ labels:
10
+ model_name:
11
+ example_field_with_versions:
12
+ one: one version
13
+ few: fev version
14
+ many: many version
15
+ other: other version
16
+ other_normal_field: This is first header
17
+ tooltips:
18
+ model_name:
19
+ id: Example Tooltip for id
20
+ attributes:
21
+ model_name:
22
+ example_category: My awesome category
23
+ example_category_collection:
24
+ -
25
+ - only right
26
+ - right
27
+ -
28
+ - only wrong
29
+ - wrong
@@ -0,0 +1,4 @@
1
+ locale_name:
2
+ attributes:
3
+ name: Default name
4
+ version: System version
@@ -0,0 +1,9 @@
1
+ locale_name:
2
+ collections:
3
+ your_first_collection:
4
+ -
5
+ - First collection value
6
+ - first_collection_value
7
+ -
8
+ - Second collection value
9
+ - second_collection_value
@@ -0,0 +1,3 @@
1
+ locale_name:
2
+ labels:
3
+ your_first_label: Your first translated label
@@ -0,0 +1,4 @@
1
+ locale_name:
2
+ tooltips:
3
+ name: tooltip for name
4
+ version: tooltip for version
Binary file
@@ -0,0 +1,54 @@
1
+ I18n.extend( Module.new{
2
+ [:labels, :tooltips, :attributes].each do |kind|
3
+ define_method("translate_#{kind.to_s.singularize}") do |*args|
4
+ translate_element(kind, *args)
5
+ end
6
+ alias_method "t#{kind.to_s[0]}", "translate_#{kind.to_s.singularize}"
7
+
8
+ define_method("translate_#{kind.to_s.singularize}_exist?") do |*args|
9
+ translate_element_exist?(kind, *args)
10
+ end
11
+ alias_method "t#{kind.to_s[0]}?", "translate_#{kind.to_s.singularize}_exist?"
12
+ end
13
+
14
+ # collections are handled different than other elements
15
+ def translate_collection(key, model=nil, options={})
16
+ if model
17
+ translate_attribute(key.to_s+"_collection", model, options)
18
+ else
19
+ I18n.t(key, :scope => [:collections])
20
+ end
21
+ end
22
+ alias_method :tc, :translate_collection
23
+
24
+ private
25
+ # change passed object to key used in localization
26
+ def to_mode_name(model)
27
+ if defined?(ActiveRecord) && model.kind_of?(ActiveRecord)
28
+ model.class.model_name.singular
29
+ elsif defined?(Draper) && model.kind_of?(Draper::Decorator)
30
+ model.source.class.model_name.singular
31
+ elsif model.is_a?(Class)
32
+ model.model_name.singular
33
+ else
34
+ model
35
+ end
36
+ end
37
+
38
+ #transleates element of specyfic kind (label, attribute)
39
+ def translate_element(element_kind, key, model=nil, options={})
40
+ if model
41
+ translate(key, {:scope => [:activerecord, element_kind, to_mode_name(model)]}.merge(options))
42
+ else
43
+ translate(key, {:scope => [element_kind]}.merge(options))
44
+ end
45
+ end
46
+
47
+ def translate_element_exist?(element_kind, key, model=nil, options={})
48
+ if model
49
+ return translate(key, :scope => [:activerecord, element_kind, to_mode_name(model)], :default => "").present?
50
+ else
51
+ return translate(key, :scope => [element_kind], :default => "").present?
52
+ end
53
+ end
54
+ })
@@ -0,0 +1,15 @@
1
+ module I18nStructure
2
+ module LocaleHelper
3
+ [:labels, :tooltips, :attributes, :collections].each do |kind|
4
+ define_method("translate_#{kind.to_s.singularize}") do |*args|
5
+ I18n.send("translate_#{kind.to_s.singularize}", *args)
6
+ end
7
+ alias_method "t#{kind.to_s[0]}", "translate_#{kind.to_s.singularize}"
8
+
9
+ define_method("translate_#{kind.to_s.singularize}_exist?") do |*args|
10
+ I18n.send("translate_#{kind.to_s.singularize}_exist?", *args)
11
+ end
12
+ alias_method "t#{kind.to_s[0]}?", "translate_#{kind.to_s.singularize}_exist?"
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,3 @@
1
+ module I18nStructure
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,9 @@
1
+ require "i18n_structure/version"
2
+ require "i18n_structure/i18n_extension"
3
+ require "i18n_structure/locale_helper"
4
+
5
+ ActionView::Base.send :include, I18nStructure::LocaleHelper
6
+
7
+ module I18nStructure
8
+
9
+ end
@@ -0,0 +1,40 @@
1
+ require "spec_helper"
2
+ require "i18n_structure/i18n_extension"
3
+ require 'active_record'
4
+ require 'draper'
5
+
6
+ I18n.config.load_path += Dir[
7
+ File.join(File.dirname(__FILE__), 'locales', "*.yml").to_s
8
+ ]
9
+
10
+ describe I18n do
11
+ describe ".translate_attribute" do
12
+ it "translates attr in model" do
13
+ expect(I18n.translate_attribute(:foo, :bar)).to eq "foobar"
14
+ end
15
+
16
+ it "translates with alias without model" do
17
+ expect(I18n.ta(:foo)).to eq "foobar_global"
18
+ end
19
+ end
20
+
21
+ describe ".translate_collection" do
22
+ it "translate collection in mode" do
23
+ expect(I18n.translate_collection(:foo, :bar).size).to eq 2
24
+ end
25
+
26
+ it "translate collection withoud model (global collection)" do
27
+ expect(I18n.translate_collection(:foo_collection).first).to eq ["element1_key", "element1_value"]
28
+ end
29
+ end
30
+
31
+ describe ".translate_label_exist?" do
32
+ it "checks unexisting label" do
33
+ expect(I18n.tl?(:some_dummmy_unexisted_key, :also_dummy_model)).to be_false
34
+ end
35
+
36
+ it "checks existing label" do
37
+ expect(I18n.translate_label_exist?(:exist_label)).to be_true
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,7 @@
1
+ describe I18nStructureGenerator do
2
+ subject { I18nStructureGenerator.new(['pl']) }
3
+
4
+ it "should description" do
5
+
6
+ end
7
+ end
@@ -0,0 +1,21 @@
1
+ en:
2
+ activerecord:
3
+ attributes:
4
+ bar:
5
+ foo: foobar
6
+ foo_collection:
7
+ -
8
+ - first_name
9
+ - first_value
10
+ -
11
+ - second_name
12
+ - secong_value
13
+ collections:
14
+ foo_collection:
15
+ -
16
+ - element1_key
17
+ - element1_value
18
+ attributes:
19
+ foo: foobar_global
20
+ labels:
21
+ exist_label: it exist!
@@ -0,0 +1,8 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'rails'
5
+
6
+ RSpec.configure do |config|
7
+ # some (optional) config here
8
+ end
metadata ADDED
@@ -0,0 +1,170 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: i18n_structure
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Wojciech Krysiak
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-12-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.3'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.3'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rails
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: draper
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rspec
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ description: Create structure for I18n locale files
111
+ email:
112
+ - wojciech.g.krysiak@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - .gitignore
118
+ - .rspec
119
+ - Gemfile
120
+ - LICENSE.txt
121
+ - README.md
122
+ - Rakefile
123
+ - i18n_structure.gemspec
124
+ - lib/.DS_Store
125
+ - lib/generators/i18n_structure/USAGE
126
+ - lib/generators/i18n_structure/i18n_structure_generator.rb
127
+ - lib/generators/i18n_structure/templates/ar.yml
128
+ - lib/generators/i18n_structure/templates/attributes.yml
129
+ - lib/generators/i18n_structure/templates/collections.yml
130
+ - lib/generators/i18n_structure/templates/labels.yml
131
+ - lib/generators/i18n_structure/templates/tooltips.yml
132
+ - lib/i18n_structure.rb
133
+ - lib/i18n_structure/.DS_Store
134
+ - lib/i18n_structure/i18n_extension.rb
135
+ - lib/i18n_structure/locale_helper.rb
136
+ - lib/i18n_structure/version.rb
137
+ - spec/i18n_extension_spec.rb
138
+ - spec/i18n_structure_generator.rb
139
+ - spec/locales/en.yml
140
+ - spec/spec_helper.rb
141
+ homepage: https://github.com/KMPgroup/i18n-structure
142
+ licenses:
143
+ - MIT
144
+ post_install_message:
145
+ rdoc_options: []
146
+ require_paths:
147
+ - lib
148
+ required_ruby_version: !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ required_rubygems_version: !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ requirements: []
161
+ rubyforge_project:
162
+ rubygems_version: 1.8.24
163
+ signing_key:
164
+ specification_version: 3
165
+ summary: Create structure for I18n locale files
166
+ test_files:
167
+ - spec/i18n_extension_spec.rb
168
+ - spec/i18n_structure_generator.rb
169
+ - spec/locales/en.yml
170
+ - spec/spec_helper.rb