ready_for_i18n 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,57 @@
1
+ h1. ready_for_i18n
2
+
3
+ Ready_for_i18n is handy tool helping you in the first step of getting your local Rails project ready for I18N.
4
+
5
+ It will automatically extract hard-coded text from your ERB view file,
6
+ then choose a proper key and replace them with the I18n.translate method.
7
+
8
+ Currently three extractors are available:
9
+
10
+ |Extractor|From|To|
11
+ |HtmlTextExtractor|@<b>Hello</b>@|@<b><%=t(:text_hello)%></b>@|
12
+ |HtmlAttrExtractor|@<input type="submit" value="Back"/>@|@<input type="submit" value="<%=t(:label_back)"/>@|
13
+ |ErbHelperExtractor|@link_to('Login'...)@|@link_to (t(:login))@|
14
+
15
+
16
+ Introduction Blog at: "Get your application ready for I18N":http://zigzag.github.com/2009/12/17/get-your-local-rails-application-ready-for-i18n.html
17
+
18
+ h2. Installation:
19
+
20
+ bq. gem install ready_for_i18n
21
+
22
+ Hosed at "http://www.gemcutter.org/gems/ready_for_i18n":http://www.gemcutter.org/gems/ready_for_i18n
23
+
24
+ h2. Basic Command Line Usage:
25
+
26
+ bq. @ready_for_i18n <path_to_ERB_source_files> [target path]@
27
+
28
+ Your erb files in source path will be transformed(i18n_ready) and copy to target file path.
29
+ If the target path is missing, then ready_for_i18n will do a Dry run and only generate the locale file.
30
+
31
+ A locale file will be output to STDOUT, which you can redirect to file like
32
+
33
+ bq. @ready_for_i18n <path_to_ERB_source_files> [target path] > /temp/en.yml@
34
+
35
+ Using the following options:
36
+
37
+ |&nbsp;&nbsp;|@--locale [LOCALE]@|@Generating for the specified locale (default locale 'en')@|
38
+ |&nbsp;&nbsp;|@--ext [EXTENSION]@|@The file extension name of your views(default '.html.erb')@|
39
+
40
+ h2. Warning
41
+
42
+ * This tool is used based on the most "conventional" way of HTML and ERB. But I can not guarantee all the text will be extracted correctly. Create an issue in this github project page if you found some thing miss.
43
+ * Only tested when the local language is English. Other languages support is in the TODO list.
44
+
45
+ h2. Note on Patches/Pull Requests
46
+
47
+ * Fork the project.
48
+ * Make your feature addition or bug fix.
49
+ * Add tests for it. This is important so I don't break it in a
50
+ future version unintentionally.
51
+ * Commit, do not mess with rakefile, version, or history.
52
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
53
+ * Send me a pull request. Bonus points for topic branches.
54
+
55
+ h2. Copyright
56
+
57
+ Copyright (c) 2009 zigzag. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.7
1
+ 0.2.8
@@ -11,11 +11,13 @@ It will automatically extract hard-coded text from your ERB view file,
11
11
  then choose a proper key and replace them with the I18n.translate method.
12
12
 
13
13
  Basic Command Line Usage:
14
- ready_for_i18n <path to ERB source files> <target path>
15
-
16
- # Your erb files in source path will be transformed(i18n_ready)
17
- # and copy to target file path,together with a locale file 'en.yml'.
14
+ ready_for_i18n <path_to_ERB_source_files> [target path]
18
15
 
16
+ # Your erb files in source path will be transformed(i18n_ready) and copy to target file path.
17
+ # If the target path is missing, then ready_for_i18n will do a Dry run and only generate the locale file.
18
+ # A locale file will be output to STDOUT, which you can redirect to file like
19
+ # ready_for_i18n <path_to_ERB_source_files> [target path] > /temp/en.yml
20
+
19
21
  # using the following options:
20
22
 
21
23
  HELP
@@ -34,6 +36,10 @@ opts = OptionParser.new do |opts|
34
36
  opts.on("--ext [EXTENSION]", "The file extension name of your views(default '.html.erb')") do |extension|
35
37
  options['extension'] = extension unless extension.nil?
36
38
  end
39
+
40
+ opts.on("--dot","Generate a structured dictionary file and support `Lazy` Lookup of Rails > 2.3 ") do |dot|
41
+ options['dot'] = true
42
+ end
37
43
 
38
44
  end
39
45
 
@@ -2,7 +2,7 @@ module ReadyForI18N
2
2
  class ErbHelperExtractor
3
3
  LABEL_IN_HELPER_PATTERN = %w{label_tag link_to field_set_tag submit_tag button_to}.map{|h| /#{h}[\s\w_]*('|")([\w ]*)(\1)/ }
4
4
 
5
- include ReadyForI18N::BaseExtractor
5
+ include ReadyForI18N::ExtractorBase
6
6
 
7
7
  protected
8
8
  def values_in_line(line)
@@ -15,7 +15,7 @@ module ReadyForI18N
15
15
  s.strip[1..-2]
16
16
  end
17
17
  def replace_line(line,e)
18
- line.gsub!(e,"t(:#{to_key(e)})")
18
+ line.gsub!(e,t_method(e))
19
19
  end
20
20
  def key_prefix
21
21
  'label'
@@ -1,8 +1,14 @@
1
1
  require 'stringio'
2
2
 
3
3
  module ReadyForI18N
4
- module BaseExtractor
4
+ module ExtractorBase
5
5
  VALUE_PATTERN = /\w+/
6
+ def self.use_dot(on_off)
7
+ @use_dot = on_off
8
+ end
9
+ def self.use_dot?
10
+ @use_dot
11
+ end
6
12
  def extract(input)
7
13
  buffer = StringIO.new
8
14
  input.each do |line|
@@ -25,5 +31,9 @@ module ReadyForI18N
25
31
  def can_replace?(e)
26
32
  e.scan(VALUE_PATTERN).length > 0
27
33
  end
34
+ def t_method(val,wrap=false)
35
+ m = ExtractorBase.use_dot? ? "t('.#{to_key(val)}')" : "t(:#{to_key(val)})"
36
+ wrap ? "<%=#{m}%>" : m
37
+ end
28
38
  end
29
39
  end
@@ -22,5 +22,8 @@ module ReadyForI18N
22
22
  def key_prefix
23
23
  'label'
24
24
  end
25
+ def replace_line(line,e)
26
+ line.sub!(e,t_method(e,true))
27
+ end
25
28
  end
26
29
  end
@@ -1,10 +1,10 @@
1
1
  module ReadyForI18N
2
2
  class HtmlTextExtractor
3
3
  SKIP_TAGS = [[/<script/i,/<\/script>/i],[/<%/,/%>/],[/<style/i,/\/style>/i]]
4
- SKIP_INLINE_TAG = [/<%(.*?)%>/,/<(.*?)>/,/<%(.*)$/,/^(.*)%>/,/&nbsp;/,/&raquo;/]
4
+ SKIP_INLINE_TAG = [/<%(.*?)%>/,/<(.*?)>/,/<(.*)$/,/^(.*)>/,/&nbsp;/]
5
5
  SEPERATOR = '_@@@_'
6
6
 
7
- include ReadyForI18N::BaseExtractor
7
+ include ReadyForI18N::ExtractorBase
8
8
 
9
9
  protected
10
10
  def values_in_line(line)
@@ -28,7 +28,14 @@ module ReadyForI18N
28
28
  s.strip
29
29
  end
30
30
  def replace_line(line,e)
31
- line.gsub!(e,"<%=t(:#{to_key(e)})%>")
31
+ repeat = line.scan(e).size
32
+ replaced = t_method(e,true)
33
+ return line if repeat == 0
34
+ return line.sub!(e,replaced) if repeat == 1
35
+ if repeat > 1
36
+ line.gsub!(/>\s*#{e}\s*</,">#{replaced}<")
37
+ line.gsub!(/>\s*#{e}/,">#{replaced}")
38
+ end
32
39
  end
33
40
  def key_prefix
34
41
  'text'
@@ -1,6 +1,8 @@
1
1
  module ReadyForI18N
2
2
  class I18nGenerator
3
3
  EXTRACTORS = [ErbHelperExtractor,HtmlTextExtractor,HtmlAttrExtractor]
4
+ PATH_PATTERN = /\/views\/(.*)/
5
+
4
6
  def self.excute(opt)
5
7
  @src_path = opt['source']
6
8
  @target_path = opt['destination']
@@ -9,10 +11,14 @@ module ReadyForI18N
9
11
  end
10
12
  @locale = opt['locale']
11
13
  @ext = opt['extension'] || '.html.erb'
14
+
15
+ ReadyForI18N::ExtractorBase.use_dot(true) if opt['dot']
16
+
12
17
  dict = ReadyForI18N::LocaleDictionary.new(@locale)
13
18
  Dir.glob(File.join(@src_path,"**#{File::SEPARATOR}*#{@ext}")).each do |f|
19
+ path = f.match(PATH_PATTERN)[1].gsub(/#{@ext}$/,'').split '/' if opt['dot'] && f =~ PATH_PATTERN
14
20
  result = EXTRACTORS.inject(File.read(f)) do |buffer,extractor|
15
- extractor.new.extract(buffer){|k,v| dict[k] = v}
21
+ extractor.new.extract(buffer){|k,v| dict.push(k,v,path)}
16
22
  end
17
23
  write_target_file(f,result) if @target_path
18
24
  end
@@ -4,12 +4,28 @@ module ReadyForI18N
4
4
  @locale = locale || 'en'
5
5
  @hash = {}
6
6
  end
7
- def []=(key,value)
8
- @hash[key] = value
7
+ def push(key,value,path = nil)
8
+ h = @hash
9
+ path.each{|p| h[p] ||= {}; h = h[p] } if path
10
+ h[key] = value
9
11
  end
10
12
  def write_to(out)
11
13
  out.puts "#{@locale}:"
12
- @hash.keys.sort{|a,b|a.to_s<=>b.to_s}.each { |k| out.puts " #{k}: #{@hash[k].dump}" }
14
+ write_out_hash(out,@hash,1)
15
+ end
16
+
17
+ private
18
+ def write_out_hash(out,hash,intent)
19
+ hash.keys.sort{|a,b|a.to_s<=>b.to_s}.each do |k|
20
+ key_with_indent = "#{' '*intent}#{k}:"
21
+ val = hash[k]
22
+ if (val.is_a? Hash)
23
+ out.puts(key_with_indent)
24
+ write_out_hash(out, val, intent + 1)
25
+ else
26
+ out.puts("#{key_with_indent} #{val.dump}" )
27
+ end
28
+ end
13
29
  end
14
30
  end
15
31
  end
@@ -1,4 +1,4 @@
1
- require 'base_extractor'
1
+ require 'extractor_base'
2
2
  require 'html_text_extractor'
3
3
  require 'html_attr_extractor'
4
4
  require 'erb_helper_extractor'
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ready_for_i18n}
8
- s.version = "0.2.7"
8
+ s.version = "0.2.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["zigzag"]
12
- s.date = %q{2009-12-21}
12
+ s.date = %q{2009-12-25}
13
13
  s.default_executable = %q{ready_for_i18n}
14
14
  s.description = %q{ ready_for_i18n will help you extract visible hard-coded text from your ERB view files,
15
15
  then choose a proper key and replace them with the I18n.translate method like t(:login)
@@ -18,18 +18,18 @@ Gem::Specification.new do |s|
18
18
  s.executables = ["ready_for_i18n"]
19
19
  s.extra_rdoc_files = [
20
20
  "LICENSE",
21
- "README.rdoc"
21
+ "README.textile"
22
22
  ]
23
23
  s.files = [
24
24
  ".document",
25
25
  ".gitignore",
26
26
  "LICENSE",
27
- "README.rdoc",
27
+ "README.textile",
28
28
  "Rakefile",
29
29
  "VERSION",
30
30
  "bin/ready_for_i18n",
31
- "lib/base_extractor.rb",
32
31
  "lib/erb_helper_extractor.rb",
32
+ "lib/extractor_base.rb",
33
33
  "lib/html_attr_extractor.rb",
34
34
  "lib/html_text_extractor.rb",
35
35
  "lib/i18n_generator.rb",
@@ -42,8 +42,8 @@ Gem::Specification.new do |s|
42
42
  "test/output/en.yml",
43
43
  "test/output/label.html.erb",
44
44
  "test/output/text.html.erb",
45
- "test/test_base_extractor.rb",
46
45
  "test/test_erb_helper_extractor.rb",
46
+ "test/test_extractor_base.rb",
47
47
  "test/test_html_attr_extractor.rb",
48
48
  "test/test_html_text_extractor.rb",
49
49
  "test/test_locale_dictionary.rb"
@@ -55,8 +55,8 @@ Gem::Specification.new do |s|
55
55
  s.summary = %q{ready_for_i18n is a tool helping for the very first step of transfering your local Rails project to an i18n one.}
56
56
  s.test_files = [
57
57
  "test/helper.rb",
58
- "test/test_base_extractor.rb",
59
58
  "test/test_erb_helper_extractor.rb",
59
+ "test/test_extractor_base.rb",
60
60
  "test/test_html_attr_extractor.rb",
61
61
  "test/test_html_text_extractor.rb",
62
62
  "test/test_locale_dictionary.rb"
@@ -1,3 +1,6 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+
1
4
  <table width="100%">
2
5
  <tr>
3
6
  <td valign="top">
@@ -78,6 +81,8 @@
78
81
  </tr>
79
82
  </table>
80
83
 
84
+ <button id="select_right_all" onclick="SelectBox.move_all('from', 'to');return false;">select all &raquo;</button><br><br>
85
+
81
86
  <%= link_to "export",
82
87
  url_for(:controller => 'api/rules', :action => 'index', :language => @profile.language, :profile => @profile.name,
83
88
  :plugins => @plugins.join(','),
@@ -87,3 +92,4 @@
87
92
 
88
93
  <%= link_to_remote 'Add Event', {:url => { :controller => 'events', :action => "new", :rid => params['rid'] },
89
94
  :update => "event_form"}, {:class => 'action'} %>
95
+
@@ -1,3 +1,6 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+
1
4
  <table width="100%">
2
5
  <tr>
3
6
  <td valign="top">
@@ -78,6 +81,8 @@
78
81
  </tr>
79
82
  </table>
80
83
 
84
+ <button id="select_right_all" onclick="SelectBox.move_all('from', 'to');return false;">select all &raquo;</button><br><br>
85
+
81
86
  <%= link_to t(:label_export),
82
87
  url_for(:controller => 'api/rules', :action => 'index', :language => @profile.language, :profile => @profile.name,
83
88
  :plugins => @plugins.join(','),
@@ -87,3 +92,4 @@
87
92
 
88
93
  <%= link_to_remote t(:label_add_event), {:url => { :controller => 'events', :action => "new", :rid => params['rid'] },
89
94
  :update => "event_form"}, {:class => 'action'} %>
95
+
@@ -18,6 +18,7 @@ class TestErbHelperExtractor < Test::Unit::TestCase
18
18
  expected = %w{edit delete select export cancel add_event}
19
19
  expected.each do |e|
20
20
  assert(File.read(target).include?("t(:label_#{e})"), "should found t method with symbol")
21
+ assert(!File.read(target).include?("<%=t(:label_#{e})%>"), "should Not found t method wrapped.")
21
22
  end
22
23
  end
23
24
 
@@ -0,0 +1,40 @@
1
+ require 'helper'
2
+
3
+ class TestExtractorBase < Test::Unit::TestCase
4
+ should "find a proper key for a given text/label" do
5
+ c = Object.new
6
+ def c.key_prefix; nil;end
7
+ def c.to_value(s); s ;end
8
+ c.extend ReadyForI18N::ExtractorBase
9
+ assert_equal('confirm_password', c.to_key('Confirm password:'))
10
+ end
11
+
12
+ should "work fine with prefix" do
13
+ c = Object.new
14
+ def c.key_prefix; 'label' ;end
15
+ def c.to_value(s); s ;end
16
+ c.extend ReadyForI18N::ExtractorBase
17
+ assert_equal('label_login', c.to_key('Login:'))
18
+ end
19
+
20
+ should "t_method should use symbol when no use dot" do
21
+ ReadyForI18N::ExtractorBase.use_dot(false)
22
+ c = Object.new
23
+ def c.key_prefix; 'label' ;end
24
+ def c.to_value(s); s ;end
25
+ c.extend ReadyForI18N::ExtractorBase
26
+ assert_equal("t(:label_login)", c.t_method('Login:'))
27
+ assert_equal("<%=t(:label_login)%>", c.t_method('Login:',true))
28
+ end
29
+
30
+ should "t_method should start with a dot when use dot" do
31
+ ReadyForI18N::ExtractorBase.use_dot(true)
32
+ c = Object.new
33
+ def c.key_prefix; 'label' ;end
34
+ def c.to_value(s); s ;end
35
+ c.extend ReadyForI18N::ExtractorBase
36
+ assert_equal("t('.label_login')", c.t_method('Login:'))
37
+ assert_equal("<%=t('.label_login')%>", c.t_method('Login:',true))
38
+ end
39
+
40
+ end
@@ -3,7 +3,7 @@ require 'helper'
3
3
  class TestHtmlTextExtractor < Test::Unit::TestCase
4
4
  should "extract the text that need i18n from the erb view file" do
5
5
  f = File.join(File.dirname(__FILE__),'fixtures','index.html.erb')
6
- expected = %w{Users Login Name Groups Operations Login: Name: Password: Export} << 'Confirm password:'
6
+ expected = %w{Users Login Name Groups Operations Login: Name: Password: Export} << 'Confirm password:' << 'select all &raquo;'
7
7
  result = []
8
8
  ReadyForI18N::HtmlTextExtractor.new.extract(File.read(f)){|k,v| result << v}
9
9
  assert_same_elements(expected,result)
@@ -17,4 +17,13 @@ class TestHtmlTextExtractor < Test::Unit::TestCase
17
17
  end
18
18
  end
19
19
 
20
+ should "replace the text only needed" do
21
+ input = "<span id='Replace Me'>Replace Me</span>"
22
+ output = ReadyForI18N::HtmlTextExtractor.new.extract input
23
+ assert_equal("<span id='Replace Me'><%=t(:text_replace_me)%></span>", output)
24
+
25
+ input = "<span id='Replace Me'>Replace Me"
26
+ output = ReadyForI18N::HtmlTextExtractor.new.extract input
27
+ assert_equal("<span id='Replace Me'><%=t(:text_replace_me)%>", output)
28
+ end
20
29
  end
@@ -1,14 +1,15 @@
1
1
  require 'helper'
2
+ require 'stringio'
2
3
 
3
4
  class TestLocaleDictionary < Test::Unit::TestCase
4
5
  should "save the result hash to yaml file" do
5
6
  locale_file = File.join(File.dirname(__FILE__),'output','en.yml')
6
7
 
7
8
  dict = ReadyForI18N::LocaleDictionary.new
8
- dict['login_key'] = 'Login:'
9
- dict['label'] = 'OK'
10
- dict['text'] = 'Please Confirm:'
11
- dict['with_quote'] = 'It is my "Label"'
9
+ dict.push 'login_key','Login:'
10
+ dict.push 'label','OK'
11
+ dict.push 'text','Please Confirm:'
12
+ dict.push 'with_quote','It is my "Label"'
12
13
  File.open(locale_file,'w+') {|f| dict.write_to f}
13
14
 
14
15
  result = YAML.load_file locale_file
@@ -18,8 +19,18 @@ class TestLocaleDictionary < Test::Unit::TestCase
18
19
 
19
20
  should "output to STDOUT when write to is nil" do
20
21
  dict = ReadyForI18N::LocaleDictionary.new
21
- dict['label'] = 'OK'
22
- dict.write_to STDOUT
22
+ dict.push 'label','OK'
23
+ out = StringIO.new
24
+ dict.write_to out
25
+ assert_equal("en:\n label: \"OK\"\n", out.string)
26
+ end
27
+
28
+ should "should intent output when path is given" do
29
+ dict = ReadyForI18N::LocaleDictionary.new
30
+ dict.push 'label','OK',['my_view']
31
+ out = StringIO.new
32
+ dict.write_to out
33
+ assert_equal("en:\n my_view:\n label: \"OK\"\n", out.string)
23
34
  end
24
35
 
25
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ready_for_i18n
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - zigzag
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-21 00:00:00 +08:00
12
+ date: 2009-12-25 00:00:00 +08:00
13
13
  default_executable: ready_for_i18n
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,17 +30,17 @@ extensions: []
30
30
 
31
31
  extra_rdoc_files:
32
32
  - LICENSE
33
- - README.rdoc
33
+ - README.textile
34
34
  files:
35
35
  - .document
36
36
  - .gitignore
37
37
  - LICENSE
38
- - README.rdoc
38
+ - README.textile
39
39
  - Rakefile
40
40
  - VERSION
41
41
  - bin/ready_for_i18n
42
- - lib/base_extractor.rb
43
42
  - lib/erb_helper_extractor.rb
43
+ - lib/extractor_base.rb
44
44
  - lib/html_attr_extractor.rb
45
45
  - lib/html_text_extractor.rb
46
46
  - lib/i18n_generator.rb
@@ -53,8 +53,8 @@ files:
53
53
  - test/output/en.yml
54
54
  - test/output/label.html.erb
55
55
  - test/output/text.html.erb
56
- - test/test_base_extractor.rb
57
56
  - test/test_erb_helper_extractor.rb
57
+ - test/test_extractor_base.rb
58
58
  - test/test_html_attr_extractor.rb
59
59
  - test/test_html_text_extractor.rb
60
60
  - test/test_locale_dictionary.rb
@@ -88,8 +88,8 @@ specification_version: 3
88
88
  summary: ready_for_i18n is a tool helping for the very first step of transfering your local Rails project to an i18n one.
89
89
  test_files:
90
90
  - test/helper.rb
91
- - test/test_base_extractor.rb
92
91
  - test/test_erb_helper_extractor.rb
92
+ - test/test_extractor_base.rb
93
93
  - test/test_html_attr_extractor.rb
94
94
  - test/test_html_text_extractor.rb
95
95
  - test/test_locale_dictionary.rb
@@ -1,51 +0,0 @@
1
- = ready_for_i18n
2
-
3
- Ready_for_i18n is handy tool helping you in the first step of getting your local Rails project ready for I18N.
4
-
5
- It will automatically extract hard-coded text from your ERB view file,
6
- then choose a proper key and replace them with the I18n.translate method.
7
-
8
- Currently three extractors are available:
9
-
10
- * HtmlTextExtractor will scan all HTML text nodes in you view files, like <b>Hello</b> then replace it with <b><%=t(:text_hello)%></b>.
11
- * HtmlAttrExtractor will scan all visible HTML attribute in you view files, like <input type="submit" value="Back"> then replace it with <input type="submit" value="<%=t(:label_back)">.
12
- * ErbHelperExtractor will scan all the text in helper methods like link_to('Login'...) and replace with link_to (t(:login)).
13
-
14
- Introduction Blog at: http://zigzag.github.com/2009/12/17/get-your-local-rails-application-ready-for-i18n.html
15
-
16
- == Installation:
17
- gem install ready_for_i18n
18
-
19
- Hosed at http://www.gemcutter.org/gems/ready_for_i18n
20
-
21
- == Basic Command Line Usage:
22
- ready_for_i18n <path to ERB source files> [target path]
23
-
24
- Your erb files in source path will be transformed(i18n_ready) and copy to target file path.
25
- If target path is missing, then ready_for_i18n will do a Dry run and only generated the locale file.
26
-
27
- A locale file will be output to STDOUT,which you can redirect to file like
28
- ready_for_i18n <path to ERB source files> [target path] > /temp/en.yml
29
-
30
- Using the following options:
31
- --locale [LOCALE] Generating for the specified locale (default locale 'en')
32
- --ext [EXTENSION] The file extension name of your views(default '.html.erb')
33
-
34
- == Warning
35
- * This tool is used based on the most "conventional" way of HTML and ERB. But I can not guarantee all the text will be extracted correctly.Create an issue in this github project page if you found some thing miss.
36
-
37
- * Only tested when the local language is English. Other languages support is in the TODO list.
38
-
39
- == Note on Patches/Pull Requests
40
-
41
- * Fork the project.
42
- * Make your feature addition or bug fix.
43
- * Add tests for it. This is important so I don't break it in a
44
- future version unintentionally.
45
- * Commit, do not mess with rakefile, version, or history.
46
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
47
- * Send me a pull request. Bonus points for topic branches.
48
-
49
- == Copyright
50
-
51
- Copyright (c) 2009 zigzag. See LICENSE for details.
@@ -1,20 +0,0 @@
1
- require 'helper'
2
-
3
- class TestBaseExtractor < Test::Unit::TestCase
4
- should "find a proper key for a given text/label" do
5
- c = Object.new
6
- def c.key_prefix; nil;end
7
- def c.to_value(s); s ;end
8
- c.extend ReadyForI18N::BaseExtractor
9
- assert_equal('confirm_password', c.to_key('Confirm password:'))
10
- end
11
-
12
- should "work fine with prefix" do
13
- c = Object.new
14
- def c.key_prefix; 'label' ;end
15
- def c.to_value(s); s ;end
16
- c.extend ReadyForI18N::BaseExtractor
17
- assert_equal('label_login', c.to_key('Login:'))
18
- end
19
-
20
- end