tolk 1.4.00 → 1.5.0
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 +5 -13
- data/app/controllers/tolk/locales_controller.rb +15 -2
- data/app/models/tolk/locale.rb +21 -16
- data/app/models/tolk/phrase.rb +0 -2
- data/app/models/tolk/translation.rb +1 -3
- data/lib/tasks/tolk_tasks.rake +5 -0
- data/lib/tolk/export.rb +7 -3
- data/lib/tolk/sync.rb +1 -1
- data/lib/tolk/version.rb +1 -1
- metadata +24 -37
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MzY0ZmU1ZGU4ZGRmYmZmMDQ0NDU5MzQ0MjMzMDI4YjE3NGM4OTE4OA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3c7fdf39ee1f10310cb7c34dfcabdc8e8018468e
|
4
|
+
data.tar.gz: 54d0cd52a00f4cb2af889e73a112c119dc2f57ad
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NWViYjMwYmY5MGFlYzk2ODlhYzkzYmU3OWRlOTkwM2EyOTNmMGFkM2QyYTg5
|
11
|
-
YTYzOTM1ZTE4ZWRkYjhkY2M4ZDlkMTUxNjgyNmY1OTkwZTBhNGI=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NTIzZjY4MGQyOGIyY2Y0ODgwM2VmNTZkZmM5NjhjYWQ0YjIzZjdjNDg1ZTZm
|
14
|
-
NGVjYTA3Zjg5M2UwOTJmNGQ0ZTNkZTViNTQxZTVhMjI5MTZlODNkMDU5YjU1
|
15
|
-
MWRjZTg5NGM3ZTU3OGViMDQzMzE1YjBkNmY3MGUxYzU5YjQ0ZDM=
|
6
|
+
metadata.gz: 5a0e9a6cb1d4aad16bbf424fe82e89caece0909d6a4e5a7b69ae034c221483e859d1f006604d0653ac869f1e8f33c0c9b25eaedf507abbdd919b36d25afdc9d8
|
7
|
+
data.tar.gz: 33462659545170ca060c92484a0760abfade2578eaaead46cec9b205ba8bbb7c16f459f594fa9a9569120f94d0f0e26ed4d27ca3d3d86b3bac1d96dea5bc8d1d
|
@@ -24,7 +24,7 @@ module Tolk
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def update
|
27
|
-
@locale.translations_attributes =
|
27
|
+
@locale.translations_attributes = translation_params
|
28
28
|
@locale.save
|
29
29
|
redirect_to request.referrer
|
30
30
|
end
|
@@ -39,7 +39,7 @@ module Tolk
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def create
|
42
|
-
Tolk::Locale.create!(
|
42
|
+
Tolk::Locale.create!(locale_params)
|
43
43
|
redirect_to :action => :index
|
44
44
|
end
|
45
45
|
|
@@ -71,5 +71,18 @@ module Tolk
|
|
71
71
|
def find_locale
|
72
72
|
@locale = Tolk::Locale.where('UPPER(name) = UPPER(?)', params[:id]).first!
|
73
73
|
end
|
74
|
+
|
75
|
+
def locale_params
|
76
|
+
params.require(:tolk_locale).permit(:name)
|
77
|
+
end
|
78
|
+
|
79
|
+
# TODO: whitelist incoming translation params
|
80
|
+
# translation permitted params: :phrase_id, :locale_id, :text, :primary_updated, :previous_text, :locale, :phrase
|
81
|
+
# test params: "translations"=>[{"id"=>"", "phrase_id"=>"8", "locale_id"=>"5", "text"=>"Dead men don't bite"}, {"id"=>"", "phrase_id"=>"7", "locale_id"=>"5", "text"=>""}]
|
82
|
+
def translation_params
|
83
|
+
params.require(:translations)
|
84
|
+
end
|
85
|
+
|
86
|
+
|
74
87
|
end
|
75
88
|
end
|
data/app/models/tolk/locale.rb
CHANGED
@@ -15,7 +15,6 @@ module Tolk
|
|
15
15
|
accepts_nested_attributes_for :translations, :reject_if => proc { |attributes| attributes['text'].blank? }
|
16
16
|
before_validation :remove_invalid_translations_from_target, :on => :update
|
17
17
|
|
18
|
-
attr_accessible :name
|
19
18
|
cattr_accessor :locales_config_path
|
20
19
|
self.locales_config_path = self._dump_path
|
21
20
|
|
@@ -51,10 +50,12 @@ module Tolk
|
|
51
50
|
all - [primary_locale]
|
52
51
|
end
|
53
52
|
|
54
|
-
def dump_all(
|
55
|
-
secondary_locales.each
|
56
|
-
|
57
|
-
|
53
|
+
def dump_all(*args)
|
54
|
+
secondary_locales.each { |locale| locale.dump(*args) }
|
55
|
+
end
|
56
|
+
|
57
|
+
def dump_yaml(name, *args)
|
58
|
+
find_by_name(name).dump(*args)
|
58
59
|
end
|
59
60
|
|
60
61
|
def special_key_or_prefix?(prefix, key)
|
@@ -69,6 +70,10 @@ module Tolk
|
|
69
70
|
end
|
70
71
|
end
|
71
72
|
|
73
|
+
def dump(to = self.locales_config_path, exporter = Tolk::Export)
|
74
|
+
exporter.dump(name: name, data: to_hash, destination: to)
|
75
|
+
end
|
76
|
+
|
72
77
|
def has_updated_translations?
|
73
78
|
translations.count(:conditions => {:'tolk_translations.primary_updated' => true}) > 0
|
74
79
|
end
|
@@ -123,8 +128,8 @@ module Tolk
|
|
123
128
|
|
124
129
|
phrases = Tolk::Phrase.all.order('tolk_phrases.key ASC')
|
125
130
|
|
126
|
-
found_translations_ids = Tolk::Locale.primary_locale.translations.
|
127
|
-
existing_ids = self.translations.
|
131
|
+
found_translations_ids = Tolk::Locale.primary_locale.translations.where(["tolk_translations.text LIKE ?", "%#{query}%"]).to_a.map(&:phrase_id).uniq
|
132
|
+
existing_ids = self.translations.select('tolk_translations.phrase_id').to_a.map(&:phrase_id).uniq
|
128
133
|
# phrases = phrases.scoped(:conditions => ['tolk_phrases.id NOT IN (?) AND tolk_phrases.id IN(?)', existing_ids, found_translations_ids]) if existing_ids.present?
|
129
134
|
phrases = phrases.where(['tolk_phrases.id NOT IN (?) AND tolk_phrases.id IN(?)', existing_ids, found_translations_ids]) if existing_ids.present?
|
130
135
|
result = phrases.paginate({:page => page}.merge(options))
|
@@ -133,13 +138,15 @@ module Tolk
|
|
133
138
|
end
|
134
139
|
|
135
140
|
def to_hash
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
+
data = translations.includes(:phrase).references(:phrases).order(phrases.arel_table[:key]).
|
142
|
+
each_with_object({}) do |translation, locale|
|
143
|
+
if translation.phrase.key.include?(".")
|
144
|
+
locale.deep_merge!(unsquish(translation.phrase.key, translation.value))
|
145
|
+
else
|
146
|
+
locale[translation.phrase.key] = translation.value
|
147
|
+
end
|
141
148
|
end
|
142
|
-
|
149
|
+
{ name => data }
|
143
150
|
end
|
144
151
|
|
145
152
|
def to_param
|
@@ -198,9 +205,7 @@ module Tolk
|
|
198
205
|
end
|
199
206
|
|
200
207
|
def find_phrases_with_translations(page, conditions = {})
|
201
|
-
result = Tolk::Phrase.paginate(:page => page
|
202
|
-
:conditions => { :'tolk_translations.locale_id' => self.id }.merge(conditions),
|
203
|
-
:joins => :translations, :order => 'tolk_phrases.key ASC')
|
208
|
+
result = Tolk::Phrase.where({ :'tolk_translations.locale_id' => self.id }.merge(conditions)).joins(:translations).order('tolk_phrases.key ASC').paginate(:page => page)
|
204
209
|
|
205
210
|
result.each do |phrase|
|
206
211
|
phrase.translation = phrase.translations.for(self)
|
data/app/models/tolk/phrase.rb
CHANGED
@@ -15,8 +15,6 @@ module Tolk
|
|
15
15
|
belongs_to :locale, :class_name => 'Tolk::Locale'
|
16
16
|
validates_presence_of :locale_id
|
17
17
|
|
18
|
-
attr_accessible :phrase_id, :locale_id, :text, :primary_updated, :previous_text, :locale, :phrase
|
19
|
-
|
20
18
|
before_save :set_primary_updated
|
21
19
|
|
22
20
|
before_save :set_previous_text
|
@@ -156,7 +154,7 @@ module Tolk
|
|
156
154
|
end
|
157
155
|
end
|
158
156
|
end
|
159
|
-
|
157
|
+
|
160
158
|
def validate_text_not_nil
|
161
159
|
return unless text.nil?
|
162
160
|
errors.add :text, :blank
|
data/lib/tasks/tolk_tasks.rake
CHANGED
@@ -24,6 +24,11 @@ namespace :tolk do
|
|
24
24
|
Tolk::Locale.dump_all
|
25
25
|
end
|
26
26
|
|
27
|
+
desc "Generate a single yml file for a specific locale"
|
28
|
+
task :dump_yaml, [:locale] => :environment do
|
29
|
+
Tolk::Locale.dump_yaml(locale)
|
30
|
+
end
|
31
|
+
|
27
32
|
desc "Imports data all non default locale yml files to Tolk"
|
28
33
|
task :import => :environment do
|
29
34
|
Rake::Task['tolk:sync'].invoke
|
data/lib/tolk/export.rb
CHANGED
@@ -10,7 +10,12 @@ module Tolk
|
|
10
10
|
|
11
11
|
def dump
|
12
12
|
File.open("#{destination}/#{name}.yml", "w+") do |file|
|
13
|
-
data.respond_to?(:ya2yaml)
|
13
|
+
yml = if data.respond_to?(:ya2yaml)
|
14
|
+
data.ya2yaml(:syck_compatible => true)
|
15
|
+
else
|
16
|
+
YAML.dump(data).force_encoding(file.external_encoding.name)
|
17
|
+
end
|
18
|
+
file.write(yml)
|
14
19
|
end
|
15
20
|
end
|
16
21
|
|
@@ -23,6 +28,5 @@ module Tolk
|
|
23
28
|
Tolk::Locale._dump_path
|
24
29
|
end
|
25
30
|
end
|
26
|
-
|
27
31
|
end
|
28
|
-
end
|
32
|
+
end
|
data/lib/tolk/sync.rb
CHANGED
@@ -53,7 +53,7 @@ module Tolk
|
|
53
53
|
|
54
54
|
if translation.changed? && !translation.new_record?
|
55
55
|
# Set the primary updated flag if the primary translation has changed and it is not a new record.
|
56
|
-
existing_phrase.translations.
|
56
|
+
existing_phrase.translations.where(Tolk::Translation.arel_table[:locale_id].not_eq(primary_locale.id)).update_all({ :primary_updated => true })
|
57
57
|
end
|
58
58
|
|
59
59
|
translation.primary = true
|
data/lib/tolk/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tolk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
@@ -12,48 +12,34 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2014-04-07 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: will_paginate
|
19
19
|
requirement: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- -
|
21
|
+
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: '0'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '0'
|
31
|
-
- !ruby/object:Gem::Dependency
|
32
|
-
name: protected_attributes
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
38
|
-
type: :runtime
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
requirements:
|
42
|
-
- - ! '>='
|
28
|
+
- - ">="
|
43
29
|
- !ruby/object:Gem::Version
|
44
30
|
version: '0'
|
45
31
|
- !ruby/object:Gem::Dependency
|
46
32
|
name: safe_yaml
|
47
33
|
requirement: !ruby/object:Gem::Requirement
|
48
34
|
requirements:
|
49
|
-
- - ~>
|
35
|
+
- - "~>"
|
50
36
|
- !ruby/object:Gem::Version
|
51
37
|
version: '0.8'
|
52
38
|
type: :runtime
|
53
39
|
prerelease: false
|
54
40
|
version_requirements: !ruby/object:Gem::Requirement
|
55
41
|
requirements:
|
56
|
-
- - ~>
|
42
|
+
- - "~>"
|
57
43
|
- !ruby/object:Gem::Version
|
58
44
|
version: '0.8'
|
59
45
|
description: Tolk is a web interface for doing i18n translations packaged as an engine
|
@@ -64,20 +50,6 @@ extensions: []
|
|
64
50
|
extra_rdoc_files: []
|
65
51
|
files:
|
66
52
|
- MIT-LICENSE
|
67
|
-
- config/routes.rb
|
68
|
-
- init.rb
|
69
|
-
- lib/generators/tolk/install_generator.rb
|
70
|
-
- lib/generators/tolk/templates/initializer.erb
|
71
|
-
- lib/generators/tolk/templates/migration.rb
|
72
|
-
- lib/generators/tolk/utils.rb
|
73
|
-
- lib/tasks/tolk_tasks.rake
|
74
|
-
- lib/tolk/config.rb
|
75
|
-
- lib/tolk/engine.rb
|
76
|
-
- lib/tolk/export.rb
|
77
|
-
- lib/tolk/import.rb
|
78
|
-
- lib/tolk/sync.rb
|
79
|
-
- lib/tolk/version.rb
|
80
|
-
- lib/tolk.rb
|
81
53
|
- app/assets/javascripts/tolk/actions.js
|
82
54
|
- app/assets/javascripts/tolk/application.js
|
83
55
|
- app/assets/javascripts/tolk/interpolations.js
|
@@ -101,6 +73,20 @@ files:
|
|
101
73
|
- app/views/tolk/locales/show.html.erb
|
102
74
|
- app/views/tolk/searches/_form.html.erb
|
103
75
|
- app/views/tolk/searches/show.html.erb
|
76
|
+
- config/routes.rb
|
77
|
+
- init.rb
|
78
|
+
- lib/generators/tolk/install_generator.rb
|
79
|
+
- lib/generators/tolk/templates/initializer.erb
|
80
|
+
- lib/generators/tolk/templates/migration.rb
|
81
|
+
- lib/generators/tolk/utils.rb
|
82
|
+
- lib/tasks/tolk_tasks.rake
|
83
|
+
- lib/tolk.rb
|
84
|
+
- lib/tolk/config.rb
|
85
|
+
- lib/tolk/engine.rb
|
86
|
+
- lib/tolk/export.rb
|
87
|
+
- lib/tolk/import.rb
|
88
|
+
- lib/tolk/sync.rb
|
89
|
+
- lib/tolk/version.rb
|
104
90
|
homepage: http://github.com/tolk/tolk
|
105
91
|
licenses:
|
106
92
|
- MIT
|
@@ -111,18 +97,19 @@ require_paths:
|
|
111
97
|
- lib
|
112
98
|
required_ruby_version: !ruby/object:Gem::Requirement
|
113
99
|
requirements:
|
114
|
-
- -
|
100
|
+
- - ">="
|
115
101
|
- !ruby/object:Gem::Version
|
116
102
|
version: '0'
|
117
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
104
|
requirements:
|
119
|
-
- -
|
105
|
+
- - ">="
|
120
106
|
- !ruby/object:Gem::Version
|
121
107
|
version: '0'
|
122
108
|
requirements: []
|
123
109
|
rubyforge_project:
|
124
|
-
rubygems_version: 2.
|
110
|
+
rubygems_version: 2.2.2
|
125
111
|
signing_key:
|
126
112
|
specification_version: 4
|
127
113
|
summary: Rails engine providing web interface for managing i18n yaml files
|
128
114
|
test_files: []
|
115
|
+
has_rdoc:
|