phrase 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +0 -2
- data/.travis.yml +1 -0
- data/lib/phrase.rb +1 -0
- data/lib/phrase/api/client.rb +11 -2
- data/lib/phrase/delegate.rb +6 -2
- data/lib/phrase/formats.rb +151 -0
- data/lib/phrase/formats/csv.rb +19 -0
- data/lib/phrase/{tool/formats → formats}/custom.rb +3 -1
- data/lib/phrase/formats/gettext.rb +27 -0
- data/lib/phrase/formats/gettext_template.rb +19 -0
- data/lib/phrase/formats/ini.rb +19 -0
- data/lib/phrase/formats/json.rb +19 -0
- data/lib/phrase/formats/plist.rb +19 -0
- data/lib/phrase/formats/properties.rb +19 -0
- data/lib/phrase/formats/properties_xml.rb +19 -0
- data/lib/phrase/formats/qt_phrase_book.rb +19 -0
- data/lib/phrase/formats/qt_translation_source.rb +19 -0
- data/lib/phrase/formats/resx.rb +19 -0
- data/lib/phrase/formats/resx_windowsphone.rb +19 -0
- data/lib/phrase/formats/simple_json.rb +19 -0
- data/lib/phrase/formats/strings.rb +39 -0
- data/lib/phrase/formats/tmx.rb +19 -0
- data/lib/phrase/formats/xliff.rb +19 -0
- data/lib/phrase/formats/xml.rb +49 -0
- data/lib/phrase/formats/yaml.rb +19 -0
- data/lib/phrase/formats/yaml_symfony.rb +19 -0
- data/lib/phrase/hash_flattener.rb +15 -14
- data/lib/phrase/tool.rb +1 -1
- data/lib/phrase/tool/commands/pull.rb +4 -4
- data/lib/phrase/tool/commands/push.rb +14 -6
- data/lib/phrase/tool/options.rb +2 -1
- data/lib/phrase/tool/options_factory.rb +5 -1
- data/lib/phrase/version.rb +1 -1
- metadata +43 -38
- data/lib/phrase/tool/formats.rb +0 -87
- data/lib/phrase/tool/formats/base.rb +0 -37
- data/lib/phrase/tool/formats/gettext.rb +0 -19
- data/lib/phrase/tool/formats/gettext_pot.rb +0 -11
- data/lib/phrase/tool/formats/ini.rb +0 -11
- data/lib/phrase/tool/formats/json.rb +0 -11
- data/lib/phrase/tool/formats/plist.rb +0 -11
- data/lib/phrase/tool/formats/properties.rb +0 -11
- data/lib/phrase/tool/formats/qt_phrase_book.rb +0 -11
- data/lib/phrase/tool/formats/qt_translation_source.rb +0 -11
- data/lib/phrase/tool/formats/resx.rb +0 -11
- data/lib/phrase/tool/formats/strings.rb +0 -31
- data/lib/phrase/tool/formats/xliff.rb +0 -11
- data/lib/phrase/tool/formats/xml.rb +0 -41
- data/lib/phrase/tool/formats/yaml.rb +0 -11
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module Phrase
|
4
|
+
module Formats
|
5
|
+
class Resx < Phrase::Formats::Base
|
6
|
+
def self.filename_for_locale(locale)
|
7
|
+
"phrase.#{locale.name}.resx"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.locale_aware?
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.extensions
|
15
|
+
[:resx]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module Phrase
|
4
|
+
module Formats
|
5
|
+
class ResxWindowsphone < Phrase::Formats::Base
|
6
|
+
def self.filename_for_locale(locale)
|
7
|
+
"phrase.#{locale.name}.resx"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.locale_aware?
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.extensions
|
15
|
+
[:resx]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module Phrase
|
4
|
+
module Formats
|
5
|
+
class SimpleJson < Phrase::Formats::Base
|
6
|
+
def self.filename_for_locale(locale)
|
7
|
+
"phrase.#{locale.name}.json"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.locale_aware?
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.extensions
|
15
|
+
[:json]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module Phrase
|
4
|
+
module Formats
|
5
|
+
class Strings < Phrase::Formats::Base
|
6
|
+
def self.directory_for_locale(locale)
|
7
|
+
name = locale.code || locale.name
|
8
|
+
"#{formatted(name)}.lproj"
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.filename_for_locale(locale)
|
12
|
+
"Localizable.strings"
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.target_directory
|
16
|
+
"./"
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.extract_locale_name_from_file_path(file_path)
|
20
|
+
file_path.scan(/\/([a-zA-Z\-_]*).lproj\//i).first.try(:first)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.locale_aware?
|
24
|
+
true
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.formatted(name)
|
28
|
+
return name unless name.include?("-")
|
29
|
+
parts = name.split("-")
|
30
|
+
"#{parts.first}_#{parts.last.upcase}"
|
31
|
+
end
|
32
|
+
private_class_method :formatted
|
33
|
+
|
34
|
+
def self.extensions
|
35
|
+
[:strings]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module Phrase
|
4
|
+
module Formats
|
5
|
+
class Tmx < Phrase::Formats::Base
|
6
|
+
def self.filename_for_locale(locale)
|
7
|
+
"phrase.#{locale.name}.tmx"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.locale_aware?
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.extensions
|
15
|
+
[:tmx]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module Phrase
|
4
|
+
module Formats
|
5
|
+
class Xliff < Phrase::Formats::Base
|
6
|
+
def self.filename_for_locale(locale)
|
7
|
+
"phrase.#{locale.name}.xlf"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.locale_aware?
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.extensions
|
15
|
+
[:xlf]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module Phrase
|
4
|
+
module Formats
|
5
|
+
class Xml < Phrase::Formats::Base
|
6
|
+
def self.directory_for_locale(locale)
|
7
|
+
if locale.default?
|
8
|
+
"values"
|
9
|
+
else
|
10
|
+
name = locale.code || locale.name
|
11
|
+
"values-#{formatted(name)}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.filename_for_locale(locale)
|
16
|
+
"strings.xml"
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.target_directory
|
20
|
+
"res/"
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.extract_locale_name_from_file_path(file_path)
|
24
|
+
return default_locale_name if file_path.scan(/\/values\/strings.xml/i).first
|
25
|
+
locale_part = file_path.scan(/\/values-([a-zA-Z\-_]*)\/strings.xml/i).first.try(:first)
|
26
|
+
if locale_part and locale_part.include?("-r")
|
27
|
+
"#{locale_part.split("-r").first}-#{locale_part.split("-r").last}"
|
28
|
+
else
|
29
|
+
locale_part
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.locale_aware?
|
34
|
+
true
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.formatted(name)
|
38
|
+
return name unless name.include?("-")
|
39
|
+
parts = name.split("-")
|
40
|
+
"#{parts.first}-r#{parts.last.upcase}"
|
41
|
+
end
|
42
|
+
private_class_method :formatted
|
43
|
+
|
44
|
+
def self.extensions
|
45
|
+
[:xml]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module Phrase
|
4
|
+
module Formats
|
5
|
+
class Yaml < Phrase::Formats::Base
|
6
|
+
def self.filename_for_locale(locale)
|
7
|
+
"phrase.#{locale.name}.yml"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.locale_aware?
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.extensions
|
15
|
+
[:yml]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
module Phrase
|
4
|
+
module Formats
|
5
|
+
class YamlSymfony < Phrase::Formats::Base
|
6
|
+
def self.filename_for_locale(locale)
|
7
|
+
"phrase.#{locale.name}.yml"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.locale_aware?
|
11
|
+
false
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.extensions
|
15
|
+
[:yml]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,20 +1,21 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
|
-
module Phrase
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
module Phrase
|
4
|
+
module HashFlattener
|
5
|
+
FLATTEN_SEPARATOR = "."
|
6
|
+
SEPARATOR_ESCAPE_CHAR = "\001"
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
def self.escape_default_separator(key)
|
9
|
+
key.to_s.tr(FLATTEN_SEPARATOR, SEPARATOR_ESCAPE_CHAR)
|
10
|
+
end
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
def self.flatten(hash, escape, previous_key=nil, &block)
|
13
|
+
hash.each_pair do |key, value|
|
14
|
+
key = escape_default_separator(key) if escape
|
15
|
+
current_key = [previous_key, key].compact.join(FLATTEN_SEPARATOR).to_sym
|
16
|
+
yield current_key, value
|
17
|
+
flatten(value, escape, current_key, &block) if value.is_a?(Hash)
|
18
|
+
end
|
18
19
|
end
|
19
20
|
end
|
20
|
-
end
|
21
|
+
end
|
data/lib/phrase/tool.rb
CHANGED
@@ -7,7 +7,7 @@ require 'phrase'
|
|
7
7
|
class Phrase::Tool
|
8
8
|
autoload :Config, 'phrase/tool/config'
|
9
9
|
autoload :Options, 'phrase/tool/options'
|
10
|
-
autoload :Formats, 'phrase/
|
10
|
+
autoload :Formats, 'phrase/formats'
|
11
11
|
autoload :Commands, 'phrase/tool/commands'
|
12
12
|
autoload :TagValidator, 'phrase/tool/tag_validator'
|
13
13
|
autoload :EncodingDetector, 'phrase/tool/encoding_detector'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
3
|
class Phrase::Tool::Commands::Pull < Phrase::Tool::Commands::Base
|
4
|
-
ALLOWED_DOWNLOAD_FORMATS =
|
4
|
+
ALLOWED_DOWNLOAD_FORMATS = Phrase::Formats::SUPPORTED_FORMATS.keys.map(&:to_s)
|
5
5
|
DEFAULT_DOWNLOAD_FORMAT = "yml"
|
6
6
|
|
7
7
|
def initialize(options, args)
|
@@ -13,7 +13,7 @@ class Phrase::Tool::Commands::Pull < Phrase::Tool::Commands::Base
|
|
13
13
|
# TODO: remove DEFAULT_DOWNLOAD_FORMAT when phrase app has been updated
|
14
14
|
@format = @options.get(:format) || config.format || DEFAULT_DOWNLOAD_FORMAT
|
15
15
|
@target = @options.get(:target)
|
16
|
-
@target ||= Phrase::
|
16
|
+
@target ||= Phrase::Formats.target_directory(@format) if format_valid?(@format)
|
17
17
|
end
|
18
18
|
|
19
19
|
def execute!
|
@@ -36,8 +36,8 @@ private
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def store_content_in_locale_file(locale, content)
|
39
|
-
directory = Phrase::
|
40
|
-
filename = Phrase::
|
39
|
+
directory = Phrase::Formats.directory_for_locale_in_format(locale, @format)
|
40
|
+
filename = Phrase::Formats.filename_for_locale_in_format(locale, @format)
|
41
41
|
path = File.join(base_directory, directory)
|
42
42
|
target = File.join(path, filename)
|
43
43
|
begin
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
|
3
3
|
class Phrase::Tool::Commands::Push < Phrase::Tool::Commands::Base
|
4
|
-
ALLOWED_FILE_TYPES = %w(yml po pot xml strings json resx ts qph ini plist properties xlf)
|
5
4
|
FORMATS_CONTAINING_LOCALE = %q(po yml qph ts xlf)
|
6
5
|
RAILS_DEFAULT_FOLDER = "./config/locales/"
|
7
6
|
|
@@ -11,6 +10,7 @@ class Phrase::Tool::Commands::Push < Phrase::Tool::Commands::Base
|
|
11
10
|
|
12
11
|
@file_names = @args[1..-1]
|
13
12
|
@locale = @options.get(:locale)
|
13
|
+
@format = @options.get(:format)
|
14
14
|
@tags = @options.get(:tags)
|
15
15
|
@recursive = @options.get(:recursive)
|
16
16
|
end
|
@@ -80,7 +80,7 @@ private
|
|
80
80
|
locale = Phrase::Tool::Locale.find_default_locale.try(:name)
|
81
81
|
end
|
82
82
|
locale = @locale if @locale
|
83
|
-
api_client.upload(file, file_content(file), @tags, locale)
|
83
|
+
api_client.upload(file, file_content(file), @tags, locale, @format)
|
84
84
|
print_message "OK".green
|
85
85
|
rescue Exception => e
|
86
86
|
print_error "Failed"
|
@@ -98,7 +98,7 @@ private
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def force_use_of_default_locale?(file_path)
|
101
|
-
not Phrase::
|
101
|
+
not Phrase::Formats.file_format_exposes_locale?(file_path)
|
102
102
|
end
|
103
103
|
|
104
104
|
def utf16_to_utf8(string)
|
@@ -111,7 +111,7 @@ private
|
|
111
111
|
|
112
112
|
def file_valid?(filepath)
|
113
113
|
extension = filepath.split('.').last
|
114
|
-
|
114
|
+
allowed_file_extensions.include?(extension)
|
115
115
|
end
|
116
116
|
|
117
117
|
def file_exists?(file)
|
@@ -127,6 +127,14 @@ private
|
|
127
127
|
end
|
128
128
|
|
129
129
|
def detect_locale_name_from_file_path(file_path)
|
130
|
-
Phrase::
|
130
|
+
Phrase::Formats.detect_locale_name_from_file_path(file_path)
|
131
131
|
end
|
132
|
-
|
132
|
+
|
133
|
+
def allowed_file_extensions
|
134
|
+
extensions = []
|
135
|
+
Phrase::Formats::SUPPORTED_FORMATS.each do |format, handler|
|
136
|
+
extensions = extensions | handler.send(:extensions)
|
137
|
+
end
|
138
|
+
extensions.uniq.map(&:to_s)
|
139
|
+
end
|
140
|
+
end
|
data/lib/phrase/tool/options.rb
CHANGED
@@ -50,11 +50,15 @@ class OptionsFactory
|
|
50
50
|
opts.on("--locale=en", String, "Locale of the translations your file contain (required for formats that do not include the name of the locale in the file content)") do |locale|
|
51
51
|
set[:locale] = locale
|
52
52
|
end
|
53
|
+
|
54
|
+
opts.on("--format=yml", String, "See documentation for list of allowed formats") do |format|
|
55
|
+
set[:format] = format
|
56
|
+
end
|
53
57
|
end
|
54
58
|
private_class_method :push
|
55
59
|
|
56
60
|
def self.pull(opts, set)
|
57
|
-
opts.on("--format=yml", String, "See documentation for list of allowed
|
61
|
+
opts.on("--format=yml", String, "See documentation for list of allowed formats") do |format|
|
58
62
|
set[:format] = format
|
59
63
|
end
|
60
64
|
|
data/lib/phrase/version.rb
CHANGED
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.4.
|
4
|
+
version: 0.4.2
|
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: 2013-
|
12
|
+
date: 2013-06-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colorize
|
16
|
-
requirement: &
|
16
|
+
requirement: &70112547553080 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70112547553080
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: json
|
27
|
-
requirement: &
|
27
|
+
requirement: &70112547552620 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70112547552620
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &70112547552200 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70112547552200
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70112547551780 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70112547551780
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: i18n
|
60
|
-
requirement: &
|
60
|
+
requirement: &70112547551360 !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: *70112547551360
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: webmock
|
71
|
-
requirement: &
|
71
|
+
requirement: &70112547550940 !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: *70112547550940
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: vcr
|
82
|
-
requirement: &
|
82
|
+
requirement: &70112547550520 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70112547550520
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: timecop
|
93
|
-
requirement: &
|
93
|
+
requirement: &70112547550100 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70112547550100
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: genspec
|
104
|
-
requirement: &
|
104
|
+
requirement: &70112547549680 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70112547549680
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: rails
|
115
|
-
requirement: &
|
115
|
+
requirement: &70112547549260 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,7 +120,7 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70112547549260
|
124
124
|
description: phrase allows you to edit translations in-place on the page itself. More
|
125
125
|
information at phraseapp.com
|
126
126
|
email:
|
@@ -164,6 +164,27 @@ files:
|
|
164
164
|
- lib/phrase/delegate/fast_gettext.rb
|
165
165
|
- lib/phrase/delegate/i18n.rb
|
166
166
|
- lib/phrase/engine.rb
|
167
|
+
- lib/phrase/formats.rb
|
168
|
+
- lib/phrase/formats/csv.rb
|
169
|
+
- lib/phrase/formats/custom.rb
|
170
|
+
- lib/phrase/formats/gettext.rb
|
171
|
+
- lib/phrase/formats/gettext_template.rb
|
172
|
+
- lib/phrase/formats/ini.rb
|
173
|
+
- lib/phrase/formats/json.rb
|
174
|
+
- lib/phrase/formats/plist.rb
|
175
|
+
- lib/phrase/formats/properties.rb
|
176
|
+
- lib/phrase/formats/properties_xml.rb
|
177
|
+
- lib/phrase/formats/qt_phrase_book.rb
|
178
|
+
- lib/phrase/formats/qt_translation_source.rb
|
179
|
+
- lib/phrase/formats/resx.rb
|
180
|
+
- lib/phrase/formats/resx_windowsphone.rb
|
181
|
+
- lib/phrase/formats/simple_json.rb
|
182
|
+
- lib/phrase/formats/strings.rb
|
183
|
+
- lib/phrase/formats/tmx.rb
|
184
|
+
- lib/phrase/formats/xliff.rb
|
185
|
+
- lib/phrase/formats/xml.rb
|
186
|
+
- lib/phrase/formats/yaml.rb
|
187
|
+
- lib/phrase/formats/yaml_symfony.rb
|
167
188
|
- lib/phrase/hash_flattener.rb
|
168
189
|
- lib/phrase/tool.rb
|
169
190
|
- lib/phrase/tool/commands.rb
|
@@ -175,22 +196,6 @@ files:
|
|
175
196
|
- lib/phrase/tool/commands/show_version.rb
|
176
197
|
- lib/phrase/tool/config.rb
|
177
198
|
- lib/phrase/tool/encoding_detector.rb
|
178
|
-
- lib/phrase/tool/formats.rb
|
179
|
-
- lib/phrase/tool/formats/base.rb
|
180
|
-
- lib/phrase/tool/formats/custom.rb
|
181
|
-
- lib/phrase/tool/formats/gettext.rb
|
182
|
-
- lib/phrase/tool/formats/gettext_pot.rb
|
183
|
-
- lib/phrase/tool/formats/ini.rb
|
184
|
-
- lib/phrase/tool/formats/json.rb
|
185
|
-
- lib/phrase/tool/formats/plist.rb
|
186
|
-
- lib/phrase/tool/formats/properties.rb
|
187
|
-
- lib/phrase/tool/formats/qt_phrase_book.rb
|
188
|
-
- lib/phrase/tool/formats/qt_translation_source.rb
|
189
|
-
- lib/phrase/tool/formats/resx.rb
|
190
|
-
- lib/phrase/tool/formats/strings.rb
|
191
|
-
- lib/phrase/tool/formats/xliff.rb
|
192
|
-
- lib/phrase/tool/formats/xml.rb
|
193
|
-
- lib/phrase/tool/formats/yaml.rb
|
194
199
|
- lib/phrase/tool/locale.rb
|
195
200
|
- lib/phrase/tool/options.rb
|
196
201
|
- lib/phrase/tool/options_factory.rb
|