autolang 0.1.0 → 0.1.1
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/VERSION +1 -1
- data/autolang.gemspec +1 -1
- data/lib/autolang.rb +44 -4
- data/lib/tasks/autolang.rake +1 -43
- data/spec/autolang_spec.rb +22 -0
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/autolang.gemspec
CHANGED
data/lib/autolang.rb
CHANGED
@@ -5,10 +5,50 @@ class Autolang
|
|
5
5
|
VERSION = File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip
|
6
6
|
|
7
7
|
def self.extract_msgid(text)
|
8
|
-
return
|
9
|
-
msgid = text.scan(/"(.+)"/)[0]
|
10
|
-
|
11
|
-
|
8
|
+
return unless text =~ /^msgid/
|
9
|
+
return unless msgid = text.scan(/"(.+)"/)[0]
|
10
|
+
msgid.to_s.gsub(' | ','|')
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.translate_into_new_language(pot_file, language)
|
14
|
+
po_file = File.join(File.dirname(pot_file), language, "#{language}.po")
|
15
|
+
|
16
|
+
# create directory if it does not exist
|
17
|
+
language_dir = File.dirname(po_file)
|
18
|
+
unless FileTest.exist?(language_dir)
|
19
|
+
puts "Creating new language directory: #{language_dir}"
|
20
|
+
Dir.mkdir(language_dir)
|
21
|
+
end
|
22
|
+
|
23
|
+
# generate po file if it does not exist
|
24
|
+
unless FileTest.exist?(po_file)
|
25
|
+
puts "Generating new language file: #{po_file}"
|
26
|
+
`msginit -i #{pot_file} -o #{po_file} -l #{language} --no-translator`
|
27
|
+
end
|
28
|
+
|
29
|
+
lines = translate_po_file_content(File.readlines(po_file))
|
30
|
+
File.open(po_file, "w+"){|f| f.write(lines*"\n") }
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.translate_po_file_content(lines)
|
34
|
+
msgstr = ""
|
35
|
+
puts "Translating..."
|
36
|
+
lines.map do |line|
|
37
|
+
#read string to translate
|
38
|
+
if msgid = extract_msgid(line)
|
39
|
+
msgstr = translate(msgid)
|
40
|
+
|
41
|
+
puts msgid
|
42
|
+
puts msgstr
|
43
|
+
puts '-'*80
|
44
|
+
|
45
|
+
#replace translation
|
46
|
+
elsif line =~ /^msgstr/ and not msgstr.empty?
|
47
|
+
line = "msgstr \"#{msgstr}\""
|
48
|
+
end
|
49
|
+
|
50
|
+
line.strip
|
51
|
+
end
|
12
52
|
end
|
13
53
|
|
14
54
|
def self.translate(text)
|
data/lib/tasks/autolang.rake
CHANGED
@@ -28,48 +28,6 @@ namespace :autolang do
|
|
28
28
|
exit
|
29
29
|
end
|
30
30
|
|
31
|
-
|
32
|
-
po_file = File.join(File.dirname(pot_file),ENV['L'],"#{ENV['L']}.po")
|
33
|
-
|
34
|
-
# If the directory doesn't exist created it
|
35
|
-
lang_dir = File.dirname(po_file)
|
36
|
-
if !FileTest.exist?(lang_dir)
|
37
|
-
puts "Creating new language directory: #{lang_dir}"
|
38
|
-
Dir.mkdir(lang_dir)
|
39
|
-
end
|
40
|
-
|
41
|
-
# copy the main po file if it doesn't exist
|
42
|
-
if !FileTest.exist?(po_file)
|
43
|
-
puts "Generating new language file: #{po_file}"
|
44
|
-
`msginit -i #{pot_file} -o #{po_file} -l #{ENV['L']}`
|
45
|
-
end
|
46
|
-
|
47
|
-
# translate existing po file
|
48
|
-
lines = []
|
49
|
-
msgid = ""
|
50
|
-
msgstr = ""
|
51
|
-
puts "Translating..."
|
52
|
-
File.foreach(po_file) do |line|
|
53
|
-
#read string to translate
|
54
|
-
if msgid = Autolang.extract_msgid(line)
|
55
|
-
puts msgid
|
56
|
-
puts msgstr = Autolang.translate(msgid)
|
57
|
-
puts '-'*80
|
58
|
-
|
59
|
-
#replace translation
|
60
|
-
elsif line =~ /^msgstr/
|
61
|
-
unless msgstr.empty?
|
62
|
-
line = "msgstr \"#{msgstr}\""
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
#output to po file
|
67
|
-
lines << line.strip
|
68
|
-
end
|
69
|
-
|
70
|
-
#write new translation file
|
71
|
-
File.open(po_file, "w+") do |file|
|
72
|
-
file.write(lines*"\n")
|
73
|
-
end
|
31
|
+
Autolang.translate_into_new_language(ENV['POT_FILE'], ENV['L'])
|
74
32
|
end
|
75
33
|
end
|
data/spec/autolang_spec.rb
CHANGED
@@ -5,6 +5,8 @@ require 'mocha'
|
|
5
5
|
$LOAD_PATH.unshift 'lib'
|
6
6
|
require 'autolang'
|
7
7
|
|
8
|
+
load 'lib/tasks/autolang.rake'
|
9
|
+
|
8
10
|
describe Autolang do
|
9
11
|
it "has a VERSION" do
|
10
12
|
Autolang::VERSION.should =~ /^\d+\.\d+\.\d+$/
|
@@ -82,3 +84,23 @@ describe Autolang::TranslationEscaper do
|
|
82
84
|
end
|
83
85
|
end
|
84
86
|
end
|
87
|
+
|
88
|
+
describe 'translate pot file' do
|
89
|
+
delete = lambda{ `rm -rf spec/fixtures && mkdir spec/fixtures` }
|
90
|
+
|
91
|
+
before &delete
|
92
|
+
after &delete
|
93
|
+
|
94
|
+
before do
|
95
|
+
pot = 'spec/fixtures/xxx.pot'
|
96
|
+
File.open(pot, 'w'){|f| f.write(%Q{msgid "hello"\nmsgstr ""}) }
|
97
|
+
ENV['POT_FILE'] = pot
|
98
|
+
ENV['L'] = 'de'
|
99
|
+
@po = 'spec/fixtures/de/de.po'
|
100
|
+
end
|
101
|
+
|
102
|
+
it "translates all msgids" do
|
103
|
+
Rake::Task['autolang:translate'].execute
|
104
|
+
File.read(@po).should include(%Q{msgid "hello"\nmsgstr "hallo"})
|
105
|
+
end
|
106
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autolang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chris Blackburn
|