lit 0.2.4 → 0.2.5
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 +7 -0
- data/README.md +17 -0
- data/Rakefile +1 -4
- data/app/controllers/lit/api/v1/base_controller.rb +5 -5
- data/app/controllers/lit/api/v1/locales_controller.rb +2 -2
- data/app/controllers/lit/api/v1/localization_keys_controller.rb +2 -3
- data/app/controllers/lit/api/v1/localizations_controller.rb +2 -2
- data/app/controllers/lit/application_controller.rb +12 -11
- data/app/controllers/lit/dashboard_controller.rb +1 -1
- data/app/controllers/lit/incomming_localizations_controller.rb +13 -6
- data/app/controllers/lit/locales_controller.rb +5 -5
- data/app/controllers/lit/localization_keys_controller.rb +57 -57
- data/app/controllers/lit/localizations_controller.rb +16 -15
- data/app/controllers/lit/sources_controller.rb +13 -12
- data/app/helpers/lit/application_helper.rb +0 -1
- data/app/helpers/lit/localizations_helper.rb +1 -1
- data/app/models/lit/incomming_localization.rb +29 -26
- data/app/models/lit/locale.rb +21 -11
- data/app/models/lit/localization.rb +27 -26
- data/app/models/lit/localization_key.rb +19 -20
- data/app/models/lit/localization_version.rb +1 -1
- data/app/models/lit/source.rb +51 -47
- data/app/views/lit/incomming_localizations/accept.js.erb +2 -0
- data/app/views/lit/incomming_localizations/destroy.js.erb +1 -0
- data/app/views/lit/incomming_localizations/index.html.erb +5 -5
- data/app/views/lit/localization_keys/index.html.erb +1 -1
- data/app/views/lit/localizations/_form.html.erb +1 -1
- data/app/views/lit/localizations/_previous_versions_rows.html.erb +2 -2
- data/app/views/lit/sources/index.html.erb +4 -1
- data/lib/generators/lit/install_generator.rb +16 -16
- data/lib/lit.rb +13 -8
- data/lib/lit/adapters/hash_storage.rb +1 -1
- data/lib/lit/adapters/redis_storage.rb +30 -22
- data/lib/lit/cache.rb +128 -125
- data/lib/lit/engine.rb +1 -2
- data/lib/lit/i18n_backend.rb +59 -12
- data/lib/lit/loader.rb +1 -2
- data/lib/lit/railtie.rb +5 -5
- data/lib/lit/version.rb +1 -1
- data/lib/tasks/lit_tasks.rake +3 -3
- metadata +38 -32
data/lib/lit/engine.rb
CHANGED
data/lib/lit/i18n_backend.rb
CHANGED
@@ -8,10 +8,11 @@ module Lit
|
|
8
8
|
|
9
9
|
def initialize(cache)
|
10
10
|
@cache = cache
|
11
|
+
@available_locales_cache = nil
|
11
12
|
end
|
12
13
|
|
13
14
|
def translate(locale, key, options = {})
|
14
|
-
content = super(locale, key, options.merge(:fallback
|
15
|
+
content = super(locale, key, options.merge(fallback: Lit.fallback))
|
15
16
|
if Lit.all_translations_are_html_safe && content.respond_to?(:html_safe)
|
16
17
|
content.html_safe
|
17
18
|
else
|
@@ -20,12 +21,18 @@ module Lit
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def available_locales
|
24
|
+
return @available_locales_cache unless @available_locales_cache.nil?
|
23
25
|
locales = ::Rails.configuration.i18n.available_locales
|
24
|
-
if locales
|
25
|
-
locales
|
26
|
+
if locales && !locales.empty?
|
27
|
+
@available_locales_cache = locales.map(&:to_sym)
|
26
28
|
else
|
27
|
-
Lit::Locale.ordered.visible.map{|l| l.locale.to_sym }
|
29
|
+
@available_locales_cache = Lit::Locale.ordered.visible.map { |l| l.locale.to_sym }
|
28
30
|
end
|
31
|
+
@available_locales_cache
|
32
|
+
end
|
33
|
+
|
34
|
+
def reset_available_locales_cache
|
35
|
+
@available_locales_cache = nil
|
29
36
|
end
|
30
37
|
|
31
38
|
# Stores the given translations.
|
@@ -34,16 +41,14 @@ module Lit
|
|
34
41
|
# @param [Hash] data nested key-value pairs to be added as blurbs
|
35
42
|
def store_translations(locale, data, options = {})
|
36
43
|
super
|
37
|
-
|
38
|
-
if !locales || locales.map(&:to_s).include?(locale.to_s)
|
39
|
-
store_item(locale, data)
|
40
|
-
end
|
44
|
+
store_item(locale, data) if store_items? && valid_locale?(locale)
|
41
45
|
end
|
42
46
|
|
43
|
-
|
44
47
|
private
|
45
48
|
|
46
49
|
def lookup(locale, key, scope = [], options = {})
|
50
|
+
init_translations unless initialized?
|
51
|
+
|
47
52
|
parts = I18n.normalize_keys(locale, key, scope, options[:separator])
|
48
53
|
key_with_locale = parts.join('.')
|
49
54
|
|
@@ -51,7 +56,7 @@ module Lit
|
|
51
56
|
content = @cache[key_with_locale] || super
|
52
57
|
return content if parts.size <= 1
|
53
58
|
|
54
|
-
|
59
|
+
if should_cache?(key_with_locale)
|
55
60
|
new_content = @cache.init_key_with_value(key_with_locale, content)
|
56
61
|
content = new_content if content.nil? # Content can change when Lit.humanize is true for example
|
57
62
|
|
@@ -90,10 +95,52 @@ module Lit
|
|
90
95
|
end
|
91
96
|
end
|
92
97
|
|
93
|
-
def
|
98
|
+
def load_translations_to_cache
|
99
|
+
(@translations || {}).each do |locale, data|
|
100
|
+
store_item(locale, data) if valid_locale?(locale)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def init_translations
|
105
|
+
# Load all translations from *.yml, *.rb files to @translations variable.
|
106
|
+
# We don't want to store translations in lit cache just yet. We'll do it
|
107
|
+
# with `load_translations_to_cache` when all translations form yml (rb)
|
108
|
+
# files will be loaded.
|
109
|
+
without_store_items { load_translations }
|
110
|
+
# load translations from database to cache
|
94
111
|
@cache.load_all_translations
|
95
|
-
|
112
|
+
# load translations from @translations to cache
|
113
|
+
load_translations_to_cache
|
114
|
+
@initialized = true
|
115
|
+
end
|
116
|
+
|
117
|
+
def without_store_items
|
118
|
+
@store_items = false
|
119
|
+
yield
|
120
|
+
ensure
|
121
|
+
@store_items = true
|
122
|
+
end
|
123
|
+
|
124
|
+
def store_items?
|
125
|
+
@store_items.nil? || @store_items
|
126
|
+
end
|
127
|
+
|
128
|
+
def valid_locale?(locale)
|
129
|
+
locales = ::Rails.configuration.i18n.available_locales
|
130
|
+
!locales || locales.map(&:to_s).include?(locale.to_s)
|
96
131
|
end
|
97
132
|
|
133
|
+
def is_ignored_key(key_without_locale)
|
134
|
+
Lit.ignored_keys.any?{ |k| key_without_locale.start_with?(k) }
|
135
|
+
end
|
136
|
+
|
137
|
+
def should_cache?(key_with_locale)
|
138
|
+
return false if @cache.has_key?(key_with_locale)
|
139
|
+
|
140
|
+
_, key_without_locale = ::Lit::Cache.split_key(key_with_locale)
|
141
|
+
return false if is_ignored_key(key_without_locale)
|
142
|
+
|
143
|
+
true
|
144
|
+
end
|
98
145
|
end
|
99
146
|
end
|
data/lib/lit/loader.rb
CHANGED
@@ -8,10 +8,9 @@ module Lit
|
|
8
8
|
attr_accessor :logger
|
9
9
|
def initialize
|
10
10
|
self.logger ||= Logger.new($stdout)
|
11
|
-
self.logger.info
|
11
|
+
self.logger.info 'initializing Lit'
|
12
12
|
self.cache ||= Cache.new
|
13
13
|
I18n.backend = I18nBackend.new(self.cache)
|
14
14
|
end
|
15
|
-
|
16
15
|
end
|
17
16
|
end
|
data/lib/lit/railtie.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
module Lit
|
2
2
|
class Railtie < ::Rails::Railtie
|
3
3
|
## INITIALIZE IN config/initialize if you want to use redis!!!
|
4
|
-
initializer :initialize_lit_rails, :
|
5
|
-
#Lit::Rails.initialize
|
4
|
+
initializer :initialize_lit_rails, after: :before_initialize do
|
5
|
+
# Lit::Rails.initialize
|
6
6
|
end
|
7
7
|
|
8
|
-
#rake_tasks do
|
9
|
-
|
10
|
-
#end
|
8
|
+
# rake_tasks do
|
9
|
+
# load "tasks/lit_tasks.rake"
|
10
|
+
# end
|
11
11
|
end
|
12
12
|
end
|
data/lib/lit/version.rb
CHANGED
data/lib/tasks/lit_tasks.rake
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
namespace :lit do
|
2
|
-
desc
|
3
|
-
task :
|
2
|
+
desc 'Exports translated strings from lit to config/locales/lit.yml file.'
|
3
|
+
task export: :environment do
|
4
4
|
if yml = Lit.init.cache.export
|
5
|
-
PATH =
|
5
|
+
PATH = 'config/locales/lit.yml'
|
6
6
|
File.new("#{Rails.root}/#{PATH}", 'w').write(yml)
|
7
7
|
puts "Successfully exported #{PATH}."
|
8
8
|
end
|
metadata
CHANGED
@@ -1,89 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.5
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Maciej Litwiniuk
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-11-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 3.1.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.1.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: i18n
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.7.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.7.0
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: jquery-rails
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
|
-
- -
|
45
|
+
- - ">="
|
36
46
|
- !ruby/object:Gem::Version
|
37
47
|
version: '0'
|
38
48
|
type: :runtime
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
|
-
- -
|
52
|
+
- - ">="
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: '0'
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: pg
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - ">="
|
52
60
|
- !ruby/object:Gem::Version
|
53
61
|
version: '0'
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - ">="
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: '0'
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
70
|
name: devise
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
|
-
- -
|
73
|
+
- - ">="
|
68
74
|
- !ruby/object:Gem::Version
|
69
75
|
version: '0'
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
|
-
- -
|
80
|
+
- - ">="
|
76
81
|
- !ruby/object:Gem::Version
|
77
82
|
version: '0'
|
78
|
-
description:
|
79
|
-
|
80
|
-
|
83
|
+
description: 'Translate your apps with pleasure (sort of...) and for free. It''s simple
|
84
|
+
i18n web interface, build on top of twitter bootstrap, that one may find helpful
|
85
|
+
in translating app by non-technicals. '
|
81
86
|
email:
|
82
87
|
- maciej@litwiniuk.net
|
83
88
|
executables: []
|
84
89
|
extensions: []
|
85
90
|
extra_rdoc_files: []
|
86
91
|
files:
|
92
|
+
- MIT-LICENSE
|
93
|
+
- README.md
|
94
|
+
- Rakefile
|
87
95
|
- app/assets/images/lit/famfamfam_flags/ad.png
|
88
96
|
- app/assets/images/lit/famfamfam_flags/ae.png
|
89
97
|
- app/assets/images/lit/famfamfam_flags/af.png
|
@@ -375,6 +383,8 @@ files:
|
|
375
383
|
- app/views/layouts/lit/_navigation.html.erb
|
376
384
|
- app/views/layouts/lit/application.html.erb
|
377
385
|
- app/views/lit/dashboard/index.html.erb
|
386
|
+
- app/views/lit/incomming_localizations/accept.js.erb
|
387
|
+
- app/views/lit/incomming_localizations/destroy.js.erb
|
378
388
|
- app/views/lit/incomming_localizations/index.html.erb
|
379
389
|
- app/views/lit/locales/_hide_link.html.erb
|
380
390
|
- app/views/lit/locales/hide.js.erb
|
@@ -404,6 +414,7 @@ files:
|
|
404
414
|
- db/migrate/20130924151910_create_lit_incomming_localizations.rb
|
405
415
|
- lib/generators/lit/install/templates/initializer.rb
|
406
416
|
- lib/generators/lit/install_generator.rb
|
417
|
+
- lib/lit.rb
|
407
418
|
- lib/lit/adapters/hash_storage.rb
|
408
419
|
- lib/lit/adapters/redis_storage.rb
|
409
420
|
- lib/lit/cache.rb
|
@@ -413,34 +424,29 @@ files:
|
|
413
424
|
- lib/lit/rails.rb
|
414
425
|
- lib/lit/railtie.rb
|
415
426
|
- lib/lit/version.rb
|
416
|
-
- lib/lit.rb
|
417
427
|
- lib/tasks/lit_tasks.rake
|
418
|
-
- MIT-LICENSE
|
419
|
-
- Rakefile
|
420
|
-
- README.md
|
421
428
|
homepage: https://github.com/prograils/lit
|
422
429
|
licenses:
|
423
430
|
- MIT
|
431
|
+
metadata: {}
|
424
432
|
post_install_message:
|
425
433
|
rdoc_options: []
|
426
434
|
require_paths:
|
427
435
|
- lib
|
428
436
|
required_ruby_version: !ruby/object:Gem::Requirement
|
429
|
-
none: false
|
430
437
|
requirements:
|
431
|
-
- -
|
438
|
+
- - ">="
|
432
439
|
- !ruby/object:Gem::Version
|
433
440
|
version: '0'
|
434
441
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
435
|
-
none: false
|
436
442
|
requirements:
|
437
|
-
- -
|
443
|
+
- - ">="
|
438
444
|
- !ruby/object:Gem::Version
|
439
445
|
version: '0'
|
440
446
|
requirements: []
|
441
447
|
rubyforge_project:
|
442
|
-
rubygems_version:
|
448
|
+
rubygems_version: 2.4.5.1
|
443
449
|
signing_key:
|
444
|
-
specification_version:
|
450
|
+
specification_version: 4
|
445
451
|
summary: Database powered i18n backend with web gui
|
446
452
|
test_files: []
|