autolang 0.2.0 → 0.3.0
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.
- checksums.yaml +7 -0
- data/bin/autolang +5 -3
- data/lib/autolang.rb +41 -12
- data/lib/autolang/version.rb +3 -0
- metadata +61 -74
- data/Gemfile +0 -11
- data/Gemfile.lock +0 -36
- data/Rakefile +0 -18
- data/Readme.md +0 -34
- data/VERSION +0 -1
- data/autolang.gemspec +0 -50
- data/spec/autolang_spec.rb +0 -98
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4340ee480a489883cce8353c75041bde4eb9dbfe
|
4
|
+
data.tar.gz: 1594ac6888144bc39839212367fb08162b2111c3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 93f570f0f7915e7e9c2150921972836a9ba5d34881bf55bfb0cbdddf1053ffecdcd83b60a6f0626ae06ecd11824ff9bd9c7055062756cc4d5feb7218e88769f6
|
7
|
+
data.tar.gz: 003b1b9df9caf4af64d9fcfe7b1a1f4aa88d14238801205aa86e40cc32feb10bdcc7b58fa447d433b1b7f07f462f4dd72c6684486047d0580acf5181f0dad04e
|
data/bin/autolang
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
require
|
2
|
+
require "rubygems" if RUBY_VERSION < "1.9"
|
3
3
|
require 'optparse'
|
4
4
|
|
5
|
-
$LOAD_PATH << File.
|
5
|
+
$LOAD_PATH << File.expand_path("../../lib", __FILE__)
|
6
6
|
require 'autolang'
|
7
|
+
require 'autolang/version'
|
7
8
|
|
8
9
|
OptionParser.new do |opts|
|
9
10
|
opts.banner = <<BANNER
|
@@ -11,6 +12,7 @@ OptionParser.new do |opts|
|
|
11
12
|
Usage:
|
12
13
|
autolang /path/to/app.pot <language-code>
|
13
14
|
autolang /path/to/app.pot es
|
15
|
+
autolang /path/to/app.json es
|
14
16
|
|
15
17
|
language-code are 2 letter ISO 639 codes
|
16
18
|
if you do not have a pot file, use gettext and updatepo first (google helps...)
|
@@ -22,7 +24,7 @@ BANNER
|
|
22
24
|
opts.on('-v', '--version','Show Version'){ puts Autolang::VERSION; exit}
|
23
25
|
end.parse!
|
24
26
|
|
25
|
-
if ARGV.size <
|
27
|
+
if ARGV.size < 3 or not File.exist?(ARGV[1])
|
26
28
|
puts "Usage instructions: autolang --help"
|
27
29
|
exit
|
28
30
|
end
|
data/lib/autolang.rb
CHANGED
@@ -1,16 +1,22 @@
|
|
1
|
-
require '
|
2
|
-
require 'rtranslate/language'
|
3
|
-
|
4
|
-
class Autolang
|
5
|
-
VERSION = File.read( File.join(File.dirname(__FILE__),'..','VERSION') ).strip
|
1
|
+
require 'easy_translate'
|
6
2
|
|
3
|
+
module Autolang
|
7
4
|
def self.extract_msgid(text)
|
8
5
|
return unless text =~ /^msgid/
|
9
6
|
return unless msgid = text.scan(/"(.+)"/)[0]
|
10
|
-
msgid.to_s.gsub(' | ','|')
|
7
|
+
msgid.first.to_s.gsub(' | ','|')
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.translate_into_new_language(key, file, language)
|
11
|
+
EasyTranslate.api_key = key
|
12
|
+
if file.end_with?(".json")
|
13
|
+
translate_json_into_new_file(file, language)
|
14
|
+
else
|
15
|
+
translate_gettext_into_new_file(file, language)
|
16
|
+
end
|
11
17
|
end
|
12
18
|
|
13
|
-
def self.
|
19
|
+
def self.translate_gettext_into_new_file(pot_file, language)
|
14
20
|
po_file = File.join(File.dirname(pot_file), language, "#{language}.po")
|
15
21
|
|
16
22
|
# create directory if it does not exist
|
@@ -24,10 +30,34 @@ class Autolang
|
|
24
30
|
unless FileTest.exist?(po_file)
|
25
31
|
puts "Generating new language file: #{po_file}"
|
26
32
|
`msginit -i #{pot_file} -o #{po_file} -l #{language} --no-translator`
|
33
|
+
unless $?.success?
|
34
|
+
raise "Error during initialization, make sure gettext is installed"
|
35
|
+
end
|
27
36
|
end
|
28
37
|
|
29
38
|
lines = translate_po_file_content(File.readlines(po_file), language)
|
30
|
-
File.open(po_file, "w+"){|f| f.write(lines*"\n") }
|
39
|
+
File.open(po_file, "w+") { |f| f.write(lines*"\n") }
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.translate_json_into_new_file(file, language)
|
43
|
+
require 'json'
|
44
|
+
out = File.join(File.dirname(file), "#{language}.json")
|
45
|
+
old = JSON.load(File.read(file))
|
46
|
+
new = translate_hash(old, language)
|
47
|
+
File.open(out, "w+") { |f| f.write(JSON.dump(new)) }
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.translate_hash(hash, language)
|
51
|
+
hash.inject({}) do |all, (k,v)|
|
52
|
+
all[k] = if v.is_a?(String)
|
53
|
+
translate(v, language)
|
54
|
+
elsif v.is_a?(Hash)
|
55
|
+
translate_hash(v, language)
|
56
|
+
else
|
57
|
+
v
|
58
|
+
end
|
59
|
+
all
|
60
|
+
end
|
31
61
|
end
|
32
62
|
|
33
63
|
def self.translate_po_file_content(lines, language)
|
@@ -42,7 +72,7 @@ class Autolang
|
|
42
72
|
puts msgstr
|
43
73
|
puts '-'*80
|
44
74
|
|
45
|
-
|
75
|
+
#replace translation
|
46
76
|
elsif line =~ /^msgstr/ and not msgstr.empty?
|
47
77
|
line = "msgstr \"#{msgstr}\""
|
48
78
|
end
|
@@ -53,8 +83,7 @@ class Autolang
|
|
53
83
|
|
54
84
|
def self.translate(text, language)
|
55
85
|
e = TranslationEscaper.new(text)
|
56
|
-
|
57
|
-
e.unescape @translator.translate(e.escaped, :from => 'ENGLISH', :to => language, :userip => '127.0.0.1')
|
86
|
+
e.unescape EasyTranslate.translate(e.escaped, :to => language, :format => 'html')
|
58
87
|
end
|
59
88
|
|
60
89
|
# protects text from evil translation robots
|
@@ -72,7 +101,7 @@ class Autolang
|
|
72
101
|
remove_placeholders(translation)
|
73
102
|
end
|
74
103
|
|
75
|
-
|
104
|
+
protected
|
76
105
|
|
77
106
|
def escape_text
|
78
107
|
@placeholders = []
|
metadata
CHANGED
@@ -1,103 +1,90 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: autolang
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 0
|
10
|
-
version: 0.2.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Chris Blackburn
|
14
8
|
- Michael Grosser
|
15
9
|
autorequire:
|
16
10
|
bindir: bin
|
17
11
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
none: false
|
25
|
-
requirements:
|
12
|
+
date: 2014-05-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: i18n
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
26
18
|
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: easy_translate
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
32
35
|
type: :runtime
|
33
|
-
requirement: *id001
|
34
|
-
name: i18n
|
35
36
|
prerelease: false
|
36
|
-
|
37
|
-
|
38
|
-
none: false
|
39
|
-
requirements:
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
40
39
|
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: json
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
46
49
|
type: :runtime
|
47
|
-
requirement: *id002
|
48
|
-
name: sishen-rtranslate
|
49
50
|
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
50
56
|
description:
|
51
57
|
email: michael@grosser.it
|
52
|
-
executables:
|
58
|
+
executables:
|
53
59
|
- autolang
|
54
60
|
extensions: []
|
55
|
-
|
56
61
|
extra_rdoc_files: []
|
57
|
-
|
58
|
-
files:
|
59
|
-
- Gemfile
|
60
|
-
- Gemfile.lock
|
61
|
-
- Rakefile
|
62
|
-
- Readme.md
|
63
|
-
- VERSION
|
64
|
-
- autolang.gemspec
|
62
|
+
files:
|
65
63
|
- bin/autolang
|
66
64
|
- lib/autolang.rb
|
67
|
-
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
65
|
+
- lib/autolang/version.rb
|
66
|
+
homepage: https://github.com/grosser/autolang
|
67
|
+
licenses:
|
68
|
+
- MIT
|
69
|
+
metadata: {}
|
72
70
|
post_install_message:
|
73
71
|
rdoc_options: []
|
74
|
-
|
75
|
-
require_paths:
|
72
|
+
require_paths:
|
76
73
|
- lib
|
77
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
-
|
79
|
-
requirements:
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
80
76
|
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
version: "0"
|
86
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
-
none: false
|
88
|
-
requirements:
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
89
81
|
- - ">="
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
|
92
|
-
segments:
|
93
|
-
- 0
|
94
|
-
version: "0"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
95
84
|
requirements: []
|
96
|
-
|
97
85
|
rubyforge_project:
|
98
|
-
rubygems_version:
|
86
|
+
rubygems_version: 2.2.2
|
99
87
|
signing_key:
|
100
|
-
specification_version:
|
88
|
+
specification_version: 4
|
101
89
|
summary: Kick-start new translation via google translate
|
102
|
-
test_files:
|
103
|
-
- spec/autolang_spec.rb
|
90
|
+
test_files: []
|
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
activesupport (3.0.4)
|
5
|
-
diff-lcs (1.1.2)
|
6
|
-
git (1.2.5)
|
7
|
-
i18n (0.5.0)
|
8
|
-
jeweler (1.5.2)
|
9
|
-
bundler (~> 1.0.0)
|
10
|
-
git (>= 1.2.5)
|
11
|
-
rake
|
12
|
-
json (1.5.1)
|
13
|
-
mocha (0.9.12)
|
14
|
-
rake (0.8.7)
|
15
|
-
rspec (2.5.0)
|
16
|
-
rspec-core (~> 2.5.0)
|
17
|
-
rspec-expectations (~> 2.5.0)
|
18
|
-
rspec-mocks (~> 2.5.0)
|
19
|
-
rspec-core (2.5.1)
|
20
|
-
rspec-expectations (2.5.0)
|
21
|
-
diff-lcs (~> 1.1.2)
|
22
|
-
rspec-mocks (2.5.0)
|
23
|
-
sishen-rtranslate (1.5)
|
24
|
-
activesupport (>= 2.2.0)
|
25
|
-
json (>= 1.1.3)
|
26
|
-
|
27
|
-
PLATFORMS
|
28
|
-
ruby
|
29
|
-
|
30
|
-
DEPENDENCIES
|
31
|
-
i18n
|
32
|
-
jeweler
|
33
|
-
mocha
|
34
|
-
rake
|
35
|
-
rspec
|
36
|
-
sishen-rtranslate
|
data/Rakefile
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
task :default do
|
2
|
-
sh "rspec spec"
|
3
|
-
end
|
4
|
-
|
5
|
-
begin
|
6
|
-
require 'jeweler'
|
7
|
-
Jeweler::Tasks.new do |gem|
|
8
|
-
gem.name = 'autolang'
|
9
|
-
gem.summary = "Kick-start new translation via google translate"
|
10
|
-
gem.email = "michael@grosser.it"
|
11
|
-
gem.homepage = "http://github.com/grosser/#{gem.name}"
|
12
|
-
gem.authors = ["Chris Blackburn", "Michael Grosser"]
|
13
|
-
end
|
14
|
-
|
15
|
-
Jeweler::GemcutterTasks.new
|
16
|
-
rescue LoadError
|
17
|
-
puts "Jeweler, or one of its dependencies, is not available. Install it with: gem install jeweler"
|
18
|
-
end
|
data/Readme.md
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
Autolang
|
2
|
-
========
|
3
|
-
|
4
|
-
- Kick-start your translation!
|
5
|
-
- Translate all your Gettext - msgids to another language using google-translate.
|
6
|
-
|
7
|
-
Usage
|
8
|
-
=====
|
9
|
-
|
10
|
-
gem install autolang
|
11
|
-
|
12
|
-
autolang /path/to/app.pot <language-code>
|
13
|
-
autolang /path/to/app.pot es
|
14
|
-
|
15
|
-
language-code are 2 letter [ISO 639](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) codes<br/>
|
16
|
-
if you have no .pot file, use gettext and updatepo first (google helps...)
|
17
|
-
|
18
|
-
Translation examples
|
19
|
-
====================
|
20
|
-
- Car|Engine -> Motor
|
21
|
-
- hello %{name} -> hallo %{name}
|
22
|
-
|
23
|
-
TODO
|
24
|
-
====
|
25
|
-
- Do not convert "& to "and", use something 'smarter'.
|
26
|
-
|
27
|
-
Authors
|
28
|
-
=======
|
29
|
-
Original by [Chris Blackburn](cbciweb.com) released under MIT license
|
30
|
-
|
31
|
-
Enhanced by
|
32
|
-
|
33
|
-
- [Michael Grosser](http://grosser.it)
|
34
|
-
- [Hans Engel](http://engel.uk.to/)
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.2.0
|
data/autolang.gemspec
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{autolang}
|
8
|
-
s.version = "0.2.0"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Chris Blackburn", "Michael Grosser"]
|
12
|
-
s.date = %q{2011-03-19}
|
13
|
-
s.default_executable = %q{autolang}
|
14
|
-
s.email = %q{michael@grosser.it}
|
15
|
-
s.executables = ["autolang"]
|
16
|
-
s.files = [
|
17
|
-
"Gemfile",
|
18
|
-
"Gemfile.lock",
|
19
|
-
"Rakefile",
|
20
|
-
"Readme.md",
|
21
|
-
"VERSION",
|
22
|
-
"autolang.gemspec",
|
23
|
-
"bin/autolang",
|
24
|
-
"lib/autolang.rb",
|
25
|
-
"spec/autolang_spec.rb"
|
26
|
-
]
|
27
|
-
s.homepage = %q{http://github.com/grosser/autolang}
|
28
|
-
s.require_paths = ["lib"]
|
29
|
-
s.rubygems_version = %q{1.4.2}
|
30
|
-
s.summary = %q{Kick-start new translation via google translate}
|
31
|
-
s.test_files = [
|
32
|
-
"spec/autolang_spec.rb"
|
33
|
-
]
|
34
|
-
|
35
|
-
if s.respond_to? :specification_version then
|
36
|
-
s.specification_version = 3
|
37
|
-
|
38
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
39
|
-
s.add_runtime_dependency(%q<i18n>, [">= 0"])
|
40
|
-
s.add_runtime_dependency(%q<sishen-rtranslate>, [">= 0"])
|
41
|
-
else
|
42
|
-
s.add_dependency(%q<i18n>, [">= 0"])
|
43
|
-
s.add_dependency(%q<sishen-rtranslate>, [">= 0"])
|
44
|
-
end
|
45
|
-
else
|
46
|
-
s.add_dependency(%q<i18n>, [">= 0"])
|
47
|
-
s.add_dependency(%q<sishen-rtranslate>, [">= 0"])
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
data/spec/autolang_spec.rb
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require 'rake'
|
4
|
-
require 'mocha'
|
5
|
-
$LOAD_PATH.unshift 'lib'
|
6
|
-
require 'autolang'
|
7
|
-
|
8
|
-
describe Autolang do
|
9
|
-
it "has a VERSION" do
|
10
|
-
Autolang::VERSION.should =~ /^\d+\.\d+\.\d+$/
|
11
|
-
end
|
12
|
-
|
13
|
-
describe :extract_msgid do
|
14
|
-
it "finds message in text" do
|
15
|
-
Autolang.extract_msgid('msgid "hello"').should == 'hello'
|
16
|
-
end
|
17
|
-
|
18
|
-
it "does not find empty message" do
|
19
|
-
Autolang.extract_msgid('msgid ""').should == nil
|
20
|
-
end
|
21
|
-
|
22
|
-
it "does not find non-existing message" do
|
23
|
-
Autolang.extract_msgid('msgstr "hello"').should == nil
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
describe :translate do
|
28
|
-
it "translates a word" do
|
29
|
-
Autolang.translate('hello', 'es').should == 'hola'
|
30
|
-
end
|
31
|
-
|
32
|
-
it "converts html entities" do
|
33
|
-
Autolang.translate('sales & tax', 'es').should == 'impuesto sobre ventas y'
|
34
|
-
end
|
35
|
-
|
36
|
-
it "converts html entities back" do
|
37
|
-
Autolang.translate('"&&&"', 'es').should == '"Andandand"'
|
38
|
-
end
|
39
|
-
|
40
|
-
it "translates with strange signs" do
|
41
|
-
Autolang.translate('production', 'es').should == 'producción'
|
42
|
-
end
|
43
|
-
|
44
|
-
it "translates with | " do
|
45
|
-
Autolang.translate('Auto|hello', 'es').should == 'hola'
|
46
|
-
end
|
47
|
-
|
48
|
-
it "translates with %{}" do
|
49
|
-
Autolang.translate('hello %{name}', 'es').should == 'hola %{name}'
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe Autolang::TranslationEscaper do
|
55
|
-
t = Autolang::TranslationEscaper
|
56
|
-
describe :escaped do
|
57
|
-
it "replaces piped subsections" do
|
58
|
-
e = t.new('Car|be gone')
|
59
|
-
e.escaped.should == 'be gone'
|
60
|
-
e.unescape('geh weg').should == 'geh weg'
|
61
|
-
end
|
62
|
-
|
63
|
-
it "does not replace regular pipes" do
|
64
|
-
e = t.new('Eat my pipe | fool')
|
65
|
-
e.escaped.should == 'Eat my pipe | fool'
|
66
|
-
e.unescape('Iss mein Rohr | idiot').should == 'Iss mein Rohr | idiot'
|
67
|
-
end
|
68
|
-
|
69
|
-
it "replaces %{something}" do
|
70
|
-
e = t.new('can i have a %{name}, please.')
|
71
|
-
e.escaped.should == 'can i have a PH0, please.'
|
72
|
-
e.unescape('kann ich bitte ein PH0 haben.').should == 'kann ich bitte ein %{name} haben.'
|
73
|
-
end
|
74
|
-
|
75
|
-
it "replaces at the end of sentences" do
|
76
|
-
e = t.new('hello %{name}')
|
77
|
-
e.unescape('hello PH0').should == 'hello %{name}'
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe 'translate pot file' do
|
83
|
-
delete = lambda{ `rm -rf spec/fixtures && mkdir spec/fixtures` }
|
84
|
-
|
85
|
-
before &delete
|
86
|
-
after &delete
|
87
|
-
|
88
|
-
before do
|
89
|
-
@pot = 'spec/fixtures/xxx.pot'
|
90
|
-
File.open(@pot, 'w'){|f| f.write(%Q{msgid "hello"\nmsgstr ""}) }
|
91
|
-
@po = 'spec/fixtures/de/de.po'
|
92
|
-
end
|
93
|
-
|
94
|
-
it "translates all msgids" do
|
95
|
-
`./bin/autolang #{@pot} de`
|
96
|
-
File.read(@po).should include(%Q{msgid "hello"\nmsgstr "hallo"})
|
97
|
-
end
|
98
|
-
end
|