phrase 0.2.0.beta.2 → 0.2.0.beta.3
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/Gemfile +1 -0
- data/Gemfile.lock +1 -0
- data/lib/phrase/api/client.rb +10 -5
- data/lib/phrase/backend/base.rb +5 -4
- data/lib/phrase/delegate.rb +49 -5
- data/phrase.gemspec +2 -1
- metadata +18 -2
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/lib/phrase/api/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
|
+
require 'addressable/uri'
|
3
4
|
require 'net/http'
|
4
5
|
require 'net/https'
|
5
6
|
require 'phrase'
|
@@ -37,6 +38,11 @@ class Phrase::Api::Client
|
|
37
38
|
keys
|
38
39
|
end
|
39
40
|
|
41
|
+
def find_keys_by_name(key_names=[])
|
42
|
+
result = JSON.parse(perform_api_request("/translation_keys", :get, {:key_names => key_names}))
|
43
|
+
result
|
44
|
+
end
|
45
|
+
|
40
46
|
def create_locale(name)
|
41
47
|
raise "You must specify a name" if name.nil? or name.blank?
|
42
48
|
|
@@ -128,11 +134,10 @@ private
|
|
128
134
|
end
|
129
135
|
|
130
136
|
def get_request(endpoint, params={})
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
request = Net::HTTP::Get.new("#{api_path_for(endpoint)}#{query_string}")
|
137
|
+
params.merge!('auth_token' => @auth_token)
|
138
|
+
uri = Addressable::URI.new
|
139
|
+
uri.query_values = params
|
140
|
+
request = Net::HTTP::Get.new("#{api_path_for(endpoint)}?#{uri.query}")
|
136
141
|
request
|
137
142
|
end
|
138
143
|
|
data/lib/phrase/backend/base.rb
CHANGED
@@ -7,16 +7,17 @@ module Phrase::Backend::Base
|
|
7
7
|
def translate(*args)
|
8
8
|
if Phrase.enabled?
|
9
9
|
key = lookup_normalized_key(*args)
|
10
|
-
phrase_delegate_for(key[:key])
|
10
|
+
phrase_delegate_for(key[:key], *args)
|
11
11
|
else
|
12
12
|
I18n.translate_without_phrase(*args)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
16
|
protected
|
17
|
-
def phrase_delegate_for(key=nil)
|
18
|
-
return nil unless key.
|
19
|
-
|
17
|
+
def phrase_delegate_for(key=nil, *args)
|
18
|
+
return nil unless key.present?
|
19
|
+
options = args[1].nil? ? {} : args[1]
|
20
|
+
Phrase::Delegate.new(key, options)
|
20
21
|
end
|
21
22
|
|
22
23
|
def lookup_normalized_key(*args)
|
data/lib/phrase/delegate.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
require 'phrase/api'
|
2
2
|
|
3
3
|
class Phrase::Delegate
|
4
|
-
attr_accessor :key, :api_client
|
4
|
+
attr_accessor :key, :display_key, :options, :api_client, :fallback_keys
|
5
5
|
|
6
|
-
def initialize(key)
|
7
|
-
@key = key
|
6
|
+
def initialize(key, options={})
|
7
|
+
@display_key = @key = key
|
8
|
+
@options = options
|
9
|
+
@fallback_keys = []
|
10
|
+
|
11
|
+
extract_fallback_keys
|
12
|
+
identify_key_to_display if @fallback_keys.any?
|
8
13
|
end
|
9
14
|
|
10
15
|
def to_s
|
@@ -12,7 +17,7 @@ class Phrase::Delegate
|
|
12
17
|
end
|
13
18
|
|
14
19
|
def method_missing(*args, &block)
|
15
|
-
if @key.respond_to?(args.first)
|
20
|
+
if @key.respond_to?(args.first)
|
16
21
|
to_s.send(*args)
|
17
22
|
else
|
18
23
|
data = translation_or_subkeys
|
@@ -28,8 +33,47 @@ class Phrase::Delegate
|
|
28
33
|
end
|
29
34
|
|
30
35
|
private
|
36
|
+
def identify_key_to_display
|
37
|
+
key_names = [@key] | @fallback_keys
|
38
|
+
available_key_names = find_keys_from_service(key_names).map { |key| key["name"] }
|
39
|
+
@display_key = @key
|
40
|
+
key_names.each do |item|
|
41
|
+
if available_key_names.include?(item)
|
42
|
+
@display_key = item
|
43
|
+
break
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def find_keys_from_service(key_names)
|
49
|
+
api_client.find_keys_by_name(key_names)
|
50
|
+
end
|
51
|
+
|
52
|
+
def extract_fallback_keys
|
53
|
+
fallback_items = []
|
54
|
+
if @options.has_key?(:default)
|
55
|
+
if @options[:default].kind_of?(Array)
|
56
|
+
fallback_items = @options[:default]
|
57
|
+
else
|
58
|
+
fallback_items << @options[:default]
|
59
|
+
end
|
60
|
+
end
|
61
|
+
fallback_items.each do |item|
|
62
|
+
process_fallback_item(item)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def process_fallback_item(item)
|
67
|
+
if item.kind_of?(Symbol)
|
68
|
+
@fallback_keys << item.to_s
|
69
|
+
if @key == "helpers.label.#{item.to_s}" # http://apidock.com/rails/v3.1.0/ActionView/Helpers/FormHelper/label
|
70
|
+
@fallback_keys << "activerecord.attributes.#{item.to_s}"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
31
75
|
def decorated_key_name
|
32
|
-
"#{Phrase.prefix}phrase_#{@
|
76
|
+
"#{Phrase.prefix}phrase_#{@display_key}#{Phrase.suffix}"
|
33
77
|
end
|
34
78
|
|
35
79
|
def translation_or_subkeys
|
data/phrase.gemspec
CHANGED
@@ -4,7 +4,7 @@ $:.unshift lib unless $:.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "phrase"
|
7
|
-
s.version = "0.2.0.beta.
|
7
|
+
s.version = "0.2.0.beta.3"
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Dynport GmbH"]
|
10
10
|
s.email = ["info@phraseapp.com"]
|
@@ -18,4 +18,5 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = %w(phrase)
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
s.add_dependency('activesupport', '~> 3.0')
|
21
|
+
s.add_dependency('addressable', '~> 2.2.8')
|
21
22
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phrase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.0.beta.
|
4
|
+
version: 0.2.0.beta.3
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '3.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: addressable
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 2.2.8
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.2.8
|
30
46
|
description: phrase allows you to edit translations inline, on the page itself. More
|
31
47
|
information at phraseapp.com
|
32
48
|
email:
|