phrase 0.4.1 → 0.4.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.
- 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
|