i18n_csv 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +15 -0
- data/app/assets/javascripts/i18n_csv/frontend_translation.js.erb +19 -0
- data/lib/i18n_csv/i18n_csv.rb +46 -46
- data/lib/i18n_csv/railtie.rb +8 -5
- data/lib/i18n_csv/version.rb +1 -1
- data/lib/i18n_csv.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8130fdb7daca841d2d863e861a0811500fb43cf1
|
4
|
+
data.tar.gz: 0026398ed693ae1ebac7ae36b7979c96ab6aca6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d85831f7f8f4253c2d6db208207fc058109d51d1a1ec226b8d7c9795c9ac1e3e0fa966a8f52cc03592e4b03f1e3778af57cf16bf9c408542cd92d2300276cf7f
|
7
|
+
data.tar.gz: 27f35615069b065a95bc22f7c91aa68657e12fe775926af560f950784555bed98f5febf710899f963ce21f4f13130f968cc0506a38f83eeb802220a5361f5e60
|
data/README.md
CHANGED
@@ -47,6 +47,21 @@ Here are some examples:
|
|
47
47
|
irb(main):004:0> I18n.t 'hello, world!'
|
48
48
|
=> "хеллоу ворлд =3"
|
49
49
|
|
50
|
+
## Frontend translations
|
51
|
+
|
52
|
+
Version `0.1.2` includes javascript translation support.
|
53
|
+
|
54
|
+
To use it, just add this line to your `app/assets/javascripts/application.js` file:
|
55
|
+
|
56
|
+
//= require i18n_csv/frontend_translation
|
57
|
+
|
58
|
+
And you are ready to use the `window.t(key, [locale]);` function on your frontend!
|
59
|
+
|
60
|
+
For example of above locale files, imagine you have this line in one of your javascript files:
|
61
|
+
|
62
|
+
alert(t('hello'));
|
63
|
+
|
64
|
+
You shall see then `привіт` in your alert window!
|
50
65
|
|
51
66
|
## Contributing
|
52
67
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<% locales = I18n.backend.get_translations %>
|
2
|
+
|
3
|
+
window.t = function(key, locale) {
|
4
|
+
var translations = {};
|
5
|
+
|
6
|
+
<% locales.each do |locale, translations| %>
|
7
|
+
translations[<%= locale.to_s.inspect %>] = {};
|
8
|
+
|
9
|
+
<% translations.each do |key, value| %>
|
10
|
+
translations[<%= locale.to_s.inspect %>][<%= key.inspect %>] = <%= value.inspect %>;
|
11
|
+
<% end %>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
locale = locale || <%= I18n.locale.to_s.inspect || 'en' %>;
|
15
|
+
|
16
|
+
var result = (translations[locale] && translations[locale][key]) || key;
|
17
|
+
|
18
|
+
return result;
|
19
|
+
};
|
data/lib/i18n_csv/i18n_csv.rb
CHANGED
@@ -1,56 +1,56 @@
|
|
1
1
|
require 'csv'
|
2
2
|
|
3
3
|
module I18n
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
4
|
+
module Backend
|
5
|
+
module CSV18n
|
6
|
+
def get_translations
|
7
|
+
tmp_translations = translations()
|
8
|
+
|
9
|
+
def yaml_to_key_string(hash, prefix = nil)
|
10
|
+
prefix = prefix.to_s
|
11
|
+
|
12
|
+
if hash.is_a? Hash then
|
13
|
+
hash.collect do |k, v|
|
14
|
+
k = k.to_s
|
15
|
+
|
16
|
+
yaml_to_key_string(v, (prefix.blank? ? k : prefix + '.' + k)).flatten(1)
|
17
|
+
end
|
18
|
+
elsif hash.is_a? Array
|
19
|
+
[ prefix, [ hash.reject { |e| e.blank? } ] ]
|
20
|
+
else
|
21
|
+
[ prefix, hash ]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
reload!
|
26
|
+
|
27
|
+
tmp = tmp_translations.collect do |locale, values|
|
28
|
+
[locale, Hash[*yaml_to_key_string(values).flatten(1)]]
|
29
|
+
end
|
30
|
+
|
31
|
+
Hash[[*tmp]]
|
17
32
|
end
|
18
|
-
elsif hash.is_a? Array
|
19
|
-
[ prefix, [ hash.reject { |e| e.blank? } ] ]
|
20
|
-
else
|
21
|
-
[ prefix, hash ]
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
reload!
|
26
|
-
|
27
|
-
tmp = tmp_translations.collect do |locale, values|
|
28
|
-
[locale, Hash[*yaml_to_key_string(values).flatten(1)]]
|
29
|
-
end
|
30
|
-
|
31
|
-
Hash[[*tmp]]
|
32
|
-
end
|
33
|
-
|
34
|
-
protected
|
35
33
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
34
|
+
protected
|
35
|
+
|
36
|
+
def load_csv(filename)
|
37
|
+
begin
|
38
|
+
lines = CSV.read(filename)
|
39
|
+
locale = ::File.basename(filename, '.csv').to_sym
|
40
|
+
{ locale => Hash[ lines.map { |l| l if l.size == 2 } ] }
|
41
|
+
rescue Exception => e
|
42
|
+
Rails.logger.error "I18n CSV error: #{e.message} :: #{e.backtrace}"
|
43
|
+
nil
|
44
|
+
end
|
45
|
+
end
|
44
46
|
end
|
45
|
-
end
|
46
47
|
end
|
47
|
-
end
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
49
|
+
class MissingTranslation
|
50
|
+
module Base
|
51
|
+
def html_message
|
52
|
+
key
|
53
|
+
end
|
54
|
+
end
|
54
55
|
end
|
55
|
-
end
|
56
56
|
end
|
data/lib/i18n_csv/railtie.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
require 'i18n_csv/i18n_csv'
|
2
2
|
|
3
3
|
module I18n_CSV
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
initializer "i18n_csv.configure_rails_initialization" do
|
6
|
+
I18n::Backend::Simple.include(I18n::Backend::CSV18n)
|
7
|
+
I18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.csv')]
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
class I18nCSV_Engine < ::Rails::Engine
|
8
12
|
end
|
9
|
-
end
|
10
13
|
end
|
data/lib/i18n_csv/version.rb
CHANGED
data/lib/i18n_csv.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n_csv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artem Shoobovych
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -70,6 +70,7 @@ files:
|
|
70
70
|
- LICENSE.txt
|
71
71
|
- README.md
|
72
72
|
- Rakefile
|
73
|
+
- app/assets/javascripts/i18n_csv/frontend_translation.js.erb
|
73
74
|
- i18n_csv.gemspec
|
74
75
|
- lib/i18n_csv.rb
|
75
76
|
- lib/i18n_csv/i18n_csv.rb
|