l10n 0.0.3 → 0.0.4
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/lib/l10n.rb +24 -22
- data/lib/l10n/column_translation.rb +10 -2
- data/lib/l10n/i18n_extensions.rb +27 -17
- data/lib/l10n/request.rb +27 -0
- data/lib/l10n/version.rb +3 -0
- metadata +18 -17
- data/VERSION +0 -1
data/lib/l10n.rb
CHANGED
@@ -1,38 +1,40 @@
|
|
1
1
|
require 'i18n'
|
2
2
|
require 'action_view'
|
3
|
+
require 'action_dispatch'
|
3
4
|
require 'active_support'
|
4
5
|
|
6
|
+
require 'l10n/version'
|
5
7
|
require 'l10n/core_extensions'
|
6
8
|
require 'l10n/i18n_extensions'
|
7
9
|
require 'l10n/numeric_column_conversions'
|
8
10
|
require 'l10n/column_translation'
|
9
11
|
require 'l10n/forms'
|
10
|
-
|
12
|
+
require 'l10n/request'
|
11
13
|
|
12
14
|
module L10n
|
13
15
|
@number_helper = Object.new.tap { |obj| obj.extend ActionView::Helpers::NumberHelper }
|
14
16
|
|
15
17
|
class << self
|
16
18
|
|
17
|
-
def default?
|
18
|
-
|
19
|
-
end
|
19
|
+
#def default?
|
20
|
+
# language_code == default_language_code
|
21
|
+
#end
|
20
22
|
|
21
|
-
def language_code
|
22
|
-
|
23
|
-
end
|
23
|
+
#def language_code
|
24
|
+
# normalize_language_code(locale) if locale
|
25
|
+
#end
|
24
26
|
|
25
|
-
def default_language_code
|
26
|
-
|
27
|
-
end
|
27
|
+
#def default_language_code
|
28
|
+
# normalize_language_code(default_locale) if default_locale
|
29
|
+
#end
|
28
30
|
|
29
31
|
#def avaliable_locales
|
30
32
|
#
|
31
33
|
#end
|
32
34
|
|
33
|
-
def available_language_codes
|
34
|
-
|
35
|
-
end
|
35
|
+
#def available_language_codes
|
36
|
+
# i18n_available_locales.map { |i18n_locale| normalize_language_code(i18n_locale) }.uniq
|
37
|
+
#end
|
36
38
|
|
37
39
|
def number_with_precision(number, options = {})
|
38
40
|
#options.symbolize_keys!
|
@@ -45,17 +47,17 @@ module L10n
|
|
45
47
|
|
46
48
|
private
|
47
49
|
|
48
|
-
def normalize_language_code(code)
|
49
|
-
|
50
|
-
end
|
50
|
+
#def normalize_language_code(code)
|
51
|
+
# code.to_s[0..1].downcase
|
52
|
+
#end
|
51
53
|
|
52
|
-
def i18n_available_locales
|
53
|
-
|
54
|
-
end
|
54
|
+
#def i18n_available_locales
|
55
|
+
# I18n.available_locales
|
56
|
+
#end
|
55
57
|
|
56
|
-
def i18n_current_language
|
57
|
-
|
58
|
-
end
|
58
|
+
#def i18n_current_language
|
59
|
+
#
|
60
|
+
#end
|
59
61
|
|
60
62
|
end
|
61
63
|
|
@@ -36,15 +36,23 @@ module L10n
|
|
36
36
|
end
|
37
37
|
define_method "#{attr_name}_translations" do
|
38
38
|
translations = { I18n.default_language_code => read_attribute(attr_name) }
|
39
|
-
|
39
|
+
I18n.translation_language_codes.each do |language_code|
|
40
40
|
translations[language_code] = read_attribute("#{attr_name}_#{language_code}")
|
41
41
|
end
|
42
42
|
translations
|
43
43
|
end
|
44
44
|
define_method "#{attr_name}_translations=" do |translations|
|
45
|
+
translations = translations.dup
|
46
|
+
if all = translations.delete(:all)
|
47
|
+
send("#{attr_name}=", all)
|
48
|
+
I18n.translation_language_codes.each do |language_code|
|
49
|
+
method_name = "#{attr_name}_#{language_code}="
|
50
|
+
send(method_name, all) if respond_to?(method_name)
|
51
|
+
end
|
52
|
+
end
|
45
53
|
translations.each do |language_code, value|
|
46
54
|
method_name = "#{attr_name}_#{language_code}="
|
47
|
-
send(
|
55
|
+
send(method_name, value) if respond_to?(method_name)
|
48
56
|
end
|
49
57
|
end
|
50
58
|
end
|
data/lib/l10n/i18n_extensions.rb
CHANGED
@@ -3,6 +3,7 @@ module L10n
|
|
3
3
|
|
4
4
|
def self.included(base)
|
5
5
|
base.extend ClassMethods
|
6
|
+
base.mattr_accessor :preferred_locale
|
6
7
|
end
|
7
8
|
|
8
9
|
module ClassMethods
|
@@ -10,18 +11,19 @@ module L10n
|
|
10
11
|
def default?
|
11
12
|
language_code == default_language_code
|
12
13
|
end
|
13
|
-
|
14
|
+
|
14
15
|
def language_code
|
15
16
|
normalize_language_code(locale) if locale
|
16
17
|
end
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
19
|
+
## deprecated
|
20
|
+
#def country_code
|
21
|
+
# if locale.to_s.match(/\w\w-\w\w/)
|
22
|
+
# locale.to_s[-2..-1]
|
23
|
+
# else
|
24
|
+
# normalize_locale_code(locale)[-2..-1]
|
25
|
+
# end
|
26
|
+
#end
|
25
27
|
|
26
28
|
def default_language_code
|
27
29
|
normalize_language_code(default_locale) if default_locale
|
@@ -30,13 +32,19 @@ module L10n
|
|
30
32
|
def available_language_codes
|
31
33
|
available_locales.map { |locale| normalize_language_code(locale) }.uniq
|
32
34
|
end
|
33
|
-
|
34
|
-
def
|
35
|
-
[
|
35
|
+
|
36
|
+
def translation_language_codes
|
37
|
+
I18n.available_language_codes - [I18n.default_language_code]
|
38
|
+
end
|
39
|
+
|
40
|
+
def available(locale)
|
41
|
+
return nil if locale.blank?
|
42
|
+
locale = normalize_locale_code(locale)
|
43
|
+
available_locales.include?(locale) ? locale : nil
|
36
44
|
end
|
37
45
|
|
38
|
-
def
|
39
|
-
:
|
46
|
+
def available?(locale)
|
47
|
+
available(locale) ? true : false
|
40
48
|
end
|
41
49
|
|
42
50
|
def as(tmp_locale)
|
@@ -54,11 +62,11 @@ module L10n
|
|
54
62
|
end
|
55
63
|
|
56
64
|
def as_each
|
57
|
-
|
65
|
+
available_language_codes.inject({}) { |hash, code| hash[code] = I18n.as(code) { yield(code) }; hash }
|
58
66
|
end
|
59
67
|
|
60
68
|
def translations(key)
|
61
|
-
|
69
|
+
available_language_codes.inject({}) { |hash, code| hash[code] = I18n.as(code) { I18n.t(key) }; hash }
|
62
70
|
end
|
63
71
|
|
64
72
|
def translation_suffix
|
@@ -66,11 +74,13 @@ module L10n
|
|
66
74
|
end
|
67
75
|
|
68
76
|
private
|
69
|
-
|
77
|
+
|
78
|
+
# ISO 639-1 two-letter language code
|
70
79
|
def normalize_language_code(code)
|
71
80
|
code.to_s[0..1].downcase.to_sym
|
72
81
|
end
|
73
82
|
|
83
|
+
# deprecated
|
74
84
|
def normalize_locale_code(code)
|
75
85
|
normalize_language_code(code)
|
76
86
|
end
|
@@ -80,4 +90,4 @@ module L10n
|
|
80
90
|
end
|
81
91
|
end
|
82
92
|
|
83
|
-
I18n.
|
93
|
+
I18n.send :include, L10n::I18nExtensions
|
data/lib/l10n/request.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
module L10n
|
2
|
+
module Request
|
3
|
+
|
4
|
+
def accept_locales
|
5
|
+
return [] if env['HTTP_ACCEPT_LANGUAGE'].blank?
|
6
|
+
locale_groups = env['HTTP_ACCEPT_LANGUAGE'].split(',')
|
7
|
+
preferred_locales = []
|
8
|
+
for locale_group in locale_groups
|
9
|
+
locale = locale_group.split(';')
|
10
|
+
language_code, params = locale[0].to_s.strip, locale[1]
|
11
|
+
if /\A[A-z]{2}(-[A-z]{2})?\z/.match(language_code)
|
12
|
+
if params
|
13
|
+
name, value = params.split('=')
|
14
|
+
q = (name == 'q' and value.to_f > 0 ? value.to_f : 1.0)
|
15
|
+
else
|
16
|
+
q = 1.0
|
17
|
+
end
|
18
|
+
preferred_locales << [language_code, q]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
preferred_locales.sort { |a, b| b.last <=> a.last }.map(&:first)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
ActionDispatch::Request.class_eval { include L10n::Request }
|
data/lib/l10n/version.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: l10n
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: i18n
|
16
|
-
requirement: &
|
16
|
+
requirement: &2151917000 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0.5'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2151917000
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activerecord
|
27
|
-
requirement: &
|
27
|
+
requirement: &2151916280 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.0.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2151916280
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activesupport
|
38
|
-
requirement: &
|
38
|
+
requirement: &2151915440 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 3.0.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2151915440
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: actionpack
|
49
|
-
requirement: &
|
49
|
+
requirement: &2151914740 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 3.0.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2151914740
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: sqlite3
|
60
|
-
requirement: &
|
60
|
+
requirement: &2151914220 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2151914220
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: simplecov
|
71
|
-
requirement: &
|
71
|
+
requirement: &2151913500 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2151913500
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rake
|
82
|
-
requirement: &
|
82
|
+
requirement: &2151912880 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: 0.8.7
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2151912880
|
91
91
|
description: I18n that roarrrs
|
92
92
|
email: mtgrosser@gmx.net
|
93
93
|
executables: []
|
@@ -105,9 +105,10 @@ files:
|
|
105
105
|
- lib/l10n/forms.rb
|
106
106
|
- lib/l10n/i18n_extensions.rb
|
107
107
|
- lib/l10n/numeric_column_conversions.rb
|
108
|
+
- lib/l10n/request.rb
|
109
|
+
- lib/l10n/version.rb
|
108
110
|
- lib/l10n.rb
|
109
111
|
- MIT-LICENSE
|
110
|
-
- VERSION
|
111
112
|
- README.md
|
112
113
|
- Rakefile
|
113
114
|
homepage: http://rubygems.org/gems/l10n
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.0.3
|