xlocalize 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 61201771f44ad4a128294e0ff843d41f532ba3e8
4
- data.tar.gz: 2a454a61c22769540216deccd8997aadcf037639
3
+ metadata.gz: ae37aab6a0d88d19503863c88fba6781572be6e0
4
+ data.tar.gz: 7bad4314a85fc60fba671d3d112927e1c0903804
5
5
  SHA512:
6
- metadata.gz: ee6f7f181d6bf06a2c93b1b6d010501213dfb2f2b4678a014437404220a37cb344484bd6f15e072dc31625fbd3e8448e3e632a1010158f3c34dc05e287e086d2
7
- data.tar.gz: f553da3f3b20f336a1289b8b3202fed0d31949e4405ca343066a6153a1512c96df62d649639abb91e03b445cc51326ae641ff99ca31fcc877ccc6cacf098dd5c
6
+ metadata.gz: d5697b57687f2229fbcfd7e03c735cd61de0afd61f8d5602e79560a5bad1b6e90564dd8f2123d89ed7e9c4c287fe67206628508593617f08208310802a4b511e
7
+ data.tar.gz: 70537aa2952e423b8bb8073f422b93a12d4441876bbc84bde3e20e82ca3142738a86cc85da45f9c50475ca85c32ef43ab59d14372740a118bf85061bf7b858c1
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [v0.5.0](https://github.com/viktorasl/xlocalize/releases/tag/0.5.0)
2
+
3
+ * [cb03ba3](https://github.com/viktorasl/xlocalize/commit/cb03ba3a91c3b4218fd880b50c7b9f2fff113573) Translations import revamp
4
+ * [bb768a4](https://github.com/viktorasl/xlocalize/commit/bb768a45111519d6797bc38c1a31aed87499d6c9) Not overriding translations on export to WebtranslateIt
5
+
1
6
  ## [v0.4.1](https://github.com/viktorasl/xlocalize/releases/tag/0.4.1)
2
7
 
3
8
  * [5be2948](https://github.com/viktorasl/xlocalize/commit/5be2948bbe5a4c1867a9780f122778f2dcd3b1a4) Unescapes xliff files on export
@@ -1,9 +1,11 @@
1
1
  require 'xlocalize/webtranslateit'
2
2
  require 'xlocalize/xliff'
3
3
  require 'xlocalize/helper'
4
+ require 'xlocalize/importer'
4
5
  require 'colorize'
5
6
  require 'nokogiri'
6
7
  require 'yaml'
8
+ require 'apfel'
7
9
 
8
10
  module Xlocalize
9
11
  class Executor
@@ -137,35 +139,30 @@ module Xlocalize
137
139
  return name
138
140
  end
139
141
 
140
- def import_xliff(locale, allows_missing_files)
141
- fname = "#{locale}.xliff"
142
+ def import_xliff(fname)
142
143
  puts "Importing translations from #{fname}" if $VERBOSE
143
144
  Nokogiri::XML(File.open(fname)).xpath("//xmlns:file").each do |node|
144
- tr_fname = localized_filename(node["original"], locale)
145
- if !File.exist?(tr_fname)
146
- err = "Missing #{tr_fname} file"
147
- raise err if !allows_missing_files
148
- puts err.yellow if $VERBOSE
149
- next
150
- end
151
- File.open(tr_fname, "w") do |file|
152
- (node > "body > trans-unit").each do |trans_unit|
153
- key = trans_unit["id"]
154
- target = (trans_unit > "target").text
155
- note = (trans_unit > "note").text
156
- note = "(No Commment)" if note.length <= 0
157
-
158
- file.write "/* #{note} */\n"
159
- file.write "\"#{key}\" = #{target.inspect};\n\n"
160
- end
161
- end
145
+ tr_fname = node["original"]
146
+ source_lang = node["source-language"]
147
+ target_lang = node["target-language"]
148
+
149
+ localized_src_fname = localized_filename(tr_fname, source_lang)
150
+ next if !File.exist?(localized_src_fname)
151
+
152
+ translations_hash = Apfel.parse(localized_src_fname).to_hash
153
+ importer = Importer.new
154
+ importer.translate_from_node(translations_hash, node)
155
+
156
+ f_content = importer.strings_content_from_translations_hash(translations_hash)
157
+ target_fname = localized_filename(tr_fname, target_lang)
158
+ File.open(target_fname, 'w') { |f| f.write(f_content) }
162
159
  end
163
160
  end
164
161
 
165
162
  def import_plurals_if_needed(locale)
166
163
  plurals_fname = "#{locale}_plurals.yaml"
167
164
  return if !File.exist?(plurals_fname)
168
- puts "Importing translations from #{plurals_fname}"
165
+ puts "Importing translations from #{plurals_fname}" if $VERBOSE
169
166
  plurals_yml = YAML.load_file(plurals_fname)
170
167
  plurals_yml[locale].each do |original_fname, trans_units|
171
168
  content = ''
@@ -205,7 +202,7 @@ module Xlocalize
205
202
  def import(locales, allows_missing_files=false)
206
203
  puts 'Importing translations' if $VERBOSE
207
204
  locales.each do |locale|
208
- import_xliff(locale, allows_missing_files)
205
+ import_xliff("#{locale}.xliff")
209
206
  import_plurals_if_needed(locale)
210
207
  puts "Done #{locale}".green if $VERBOSE
211
208
  end
@@ -0,0 +1,27 @@
1
+
2
+ module Xlocalize
3
+ class Importer
4
+
5
+ def strings_content_from_translations_hash(translations_hash)
6
+ result = StringIO.new
7
+ translations_hash.each do |key, translations|
8
+ translations.each do |target, note|
9
+ result << "/* #{note} */\n" if note.length > 0
10
+ result << "\"#{key}\" = #{target.inspect};\n\n"
11
+ end
12
+ end
13
+ return result.string
14
+ end
15
+
16
+ def translate_from_node(translations, node)
17
+ (node > "body > trans-unit").each do |trans_unit|
18
+ key = trans_unit["id"]
19
+ target = (trans_unit > "target").text
20
+ note = (trans_unit > "note").text
21
+ if translations.key?(key)
22
+ translations[key] = { target => note }
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,4 +1,4 @@
1
1
  module Xlocalize
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.0"
3
3
  DESCRIPTION = "Xcode localizations import/export helper tool"
4
4
  end
@@ -40,18 +40,18 @@ module Xlocalize
40
40
  return resp
41
41
  end
42
42
 
43
- def master_file_for_locale_request(file_id, file, override)
43
+ def master_file_for_locale_request(file_id, file)
44
44
  # /api/projects/:project_token/files/:master_project_file_id/locales/:locale_code [PUT]
45
45
  return Net::HTTP::Put::Multipart.new("/api/projects/#{@key}/files/#{file_id}/locales/#{@source_locale}", {
46
46
  "file" => UploadIO.new(file, "text/plain", file.path),
47
- "merge" => !override,
47
+ "merge" => true,
48
48
  "ignore_missing" => true,
49
49
  "label" => "",
50
50
  "low_priority" => false
51
51
  })
52
52
  end
53
53
 
54
- def push_master_plurals(plurals_file, override = true)
54
+ def push_master_plurals(plurals_file)
55
55
  if @plurals_file_id.nil?
56
56
  if $VERBOSE
57
57
  $stderr.puts 'Creating plurals file'
@@ -66,16 +66,16 @@ module Xlocalize
66
66
  if $VERBOSE
67
67
  $stderr.puts 'Updating plurals file'
68
68
  end
69
- send_request(master_file_for_locale_request(@plurals_file_id, plurals_file, override))
69
+ send_request(master_file_for_locale_request(@plurals_file_id, plurals_file))
70
70
  end
71
71
  end
72
72
 
73
- def push_master(file, plurals_file, override = true)
73
+ def push_master(file, plurals_file)
74
74
  if $VERBOSE
75
75
  $stderr.puts 'Updating xliff file'
76
76
  end
77
- send_request(master_file_for_locale_request(@xliff_file_id, file, override))
78
- push_master_plurals(plurals_file, override) if not plurals_file.nil?
77
+ send_request(master_file_for_locale_request(@xliff_file_id, file))
78
+ push_master_plurals(plurals_file) if not plurals_file.nil?
79
79
  end
80
80
 
81
81
  def pull(locale)
data/xlocalize.gemspec CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_runtime_dependency 'colorize', '~> 0.8'
25
25
  spec.add_runtime_dependency 'multipart-post', '~> 2.0'
26
26
  spec.add_runtime_dependency 'plist', '~> 3.2'
27
+ spec.add_runtime_dependency 'apfel'
27
28
 
28
29
  spec.add_development_dependency 'bundler', '~> 1.10'
29
30
  spec.add_development_dependency 'rspec', '~> 3.5'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlocalize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Viktoras Laukevičius
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-06 00:00:00.000000000 Z
11
+ date: 2018-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: apfel
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -161,6 +175,7 @@ files:
161
175
  - lib/xlocalize.rb
162
176
  - lib/xlocalize/executor.rb
163
177
  - lib/xlocalize/helper.rb
178
+ - lib/xlocalize/importer.rb
164
179
  - lib/xlocalize/version.rb
165
180
  - lib/xlocalize/webtranslateit.rb
166
181
  - lib/xlocalize/xliff.rb