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 +17 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +132 -0
- data/Rakefile +1 -0
- data/i18n_structure.gemspec +27 -0
- data/lib/.DS_Store +0 -0
- data/lib/generators/i18n_structure/USAGE +14 -0
- data/lib/generators/i18n_structure/i18n_structure_generator.rb +64 -0
- data/lib/generators/i18n_structure/templates/ar.yml +29 -0
- data/lib/generators/i18n_structure/templates/attributes.yml +4 -0
- data/lib/generators/i18n_structure/templates/collections.yml +9 -0
- data/lib/generators/i18n_structure/templates/labels.yml +3 -0
- data/lib/generators/i18n_structure/templates/tooltips.yml +4 -0
- data/lib/i18n_structure/.DS_Store +0 -0
- data/lib/i18n_structure/i18n_extension.rb +54 -0
- data/lib/i18n_structure/locale_helper.rb +15 -0
- data/lib/i18n_structure/version.rb +3 -0
- data/lib/i18n_structure.rb +9 -0
- data/spec/i18n_extension_spec.rb +40 -0
- data/spec/i18n_structure_generator.rb +7 -0
- data/spec/locales/en.yml +21 -0
- data/spec/spec_helper.rb +8 -0
- metadata +170 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
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
|
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,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
|
data/spec/locales/en.yml
ADDED
@@ -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!
|
data/spec/spec_helper.rb
ADDED
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
|