locale_rails 0.1.0 → 2.0.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.
Files changed (47) hide show
  1. data/ChangeLog +10 -4
  2. data/{README → README.rdoc} +6 -1
  3. data/Rakefile +8 -7
  4. data/lib/locale_rails.rb +3 -1
  5. data/lib/locale_rails/action_controller.rb +4 -130
  6. data/lib/locale_rails/action_controller/base.rb +85 -0
  7. data/lib/locale_rails/action_controller/caching.rb +49 -0
  8. data/lib/locale_rails/action_controller/test_process.rb +44 -0
  9. data/lib/locale_rails/action_view.rb +10 -12
  10. data/lib/locale_rails/i18n.rb +20 -1
  11. data/lib/locale_rails/version.rb +3 -3
  12. data/replace.rb +21 -0
  13. data/sample/app/views/samples/index.html.erb +14 -5
  14. data/sample/app/views/samples/index.pt.html.erb +16 -0
  15. data/sample/app/views/samples/index_uz_UZ.html.erb +4 -3
  16. data/sample/config/environment.rb +1 -1
  17. data/sample/config/locales/en.yml +2 -0
  18. data/sample/config/locales/ja.yml +2 -0
  19. data/sample/db/development.sqlite3 +0 -0
  20. data/sample/db/schema.rb +10 -0
  21. data/sample/db/test.sqlite3 +0 -0
  22. data/sample/log/development.log +1492 -2273
  23. metadata +17 -47
  24. data/NEWS +0 -7
  25. data/doc/classes/ActionController/Base.html +0 -442
  26. data/doc/classes/ActionController/Caching.html +0 -348
  27. data/doc/classes/ActionController/Caching/Fragments.html +0 -424
  28. data/doc/classes/ActionView/Base.html +0 -422
  29. data/doc/classes/I18n.html +0 -492
  30. data/doc/classes/Locale.html +0 -364
  31. data/doc/created.rid +0 -1
  32. data/doc/files/ChangeLog.html +0 -355
  33. data/doc/files/README.html +0 -409
  34. data/doc/files/lib/locale_rails/action_controller_rb.html +0 -349
  35. data/doc/files/lib/locale_rails/action_view_rb.html +0 -349
  36. data/doc/files/lib/locale_rails/i18n_rb.html +0 -342
  37. data/doc/files/lib/locale_rails/version_rb.html +0 -342
  38. data/doc/files/lib/locale_rails_rb.html +0 -349
  39. data/doc/fr_class_index.html +0 -7
  40. data/doc/fr_file_index.html +0 -8
  41. data/doc/fr_method_index.html +0 -11
  42. data/doc/index.html +0 -1
  43. data/doc/rdoc-style.css +0 -320
  44. data/locale_rails-0.1.0.gem +0 -0
  45. data/sample/app/views/samples/#cookie.rb# +0 -3
  46. data/sample/db/production.sqlite3 +0 -0
  47. data/sample/log/production.log +0 -80
data/ChangeLog CHANGED
@@ -1,7 +1,13 @@
1
- 2008-12-01 Masao Mutoh <mutoh@highway.ne.jp>
1
+ = locale_rails-2.0.0 (2009-03-22)
2
2
 
3
- * Fix a trivial bug.
3
+ * I18n.translate fallbacks to the localized message in the locale candidates.
4
+ * Support localized view both of gettext-1.93.0 style and rails-2.3.x style.
4
5
 
5
- 2008-11-24 Masao Mutoh <mutoh@highway.ne.jp>
6
+ = locale_rails-0.1.0 (2008-12-04)
7
+
8
+ * Initial released.
9
+ * Auto-Detect the locales from the WWW browser
10
+ * Localized Routes
11
+ * Action/Fragment caching
12
+ * Separated Localized View template file
6
13
 
7
- * Initial import.
@@ -10,6 +10,7 @@ auto-detection and some other features includes this library.
10
10
  * Action/Fragment caching
11
11
  * Separated Localized View template file
12
12
  * Localized Routes
13
+ * I18n.t fallback to localized message candidates.
13
14
 
14
15
  == Website
15
16
  * http://www.yotabanana.com/hiki/ruby-locale-rails.html
@@ -25,9 +26,13 @@ auto-detection and some other features includes this library.
25
26
  ($ su)
26
27
  # gem install locale_rails
27
28
 
29
+ == Support matrix
30
+ * locale_rails-0.1.0 - rails-2.1.x
31
+ * locale_rails-2.0.0 - rails-2.3.2
32
+
28
33
  == License
29
34
  This program is licenced under the same licence as Ruby.
30
35
  (See the file 'COPYING'.)
31
36
 
32
37
  == Maintainer
33
- Masao Mutoh <mutoh at highway.ne.jp>
38
+ Masao Mutoh <mutomasa at gmail.com>
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ require 'locale_rails/version'
12
12
  #task :default => [ :test ]
13
13
 
14
14
  PKG_NAME = "locale_rails"
15
- PKG_VERSION = Locale::LOCALE_RAILS_VERSION
15
+ PKG_VERSION = LocaleRails::VERSION
16
16
 
17
17
  # Run the unit tests
18
18
  task :test do
@@ -35,19 +35,19 @@ Rake::RDocTask.new { |rdoc|
35
35
  rdoc.template = allison if allison.size > 0
36
36
  }
37
37
 
38
- desc "Create gem"
38
+ desc "Create gem and tar.gz"
39
39
  spec = Gem::Specification.new do |s|
40
40
  s.name = PKG_NAME
41
41
  s.version = PKG_VERSION
42
42
  s.summary = 'Ruby-Locale for Ruby on Rails is the pure ruby library which provides basic functions for localization based on Ruby-Locale.'
43
43
  s.author = 'Masao Mutoh'
44
- s.email = 'mutoh@highway.ne.jp'
44
+ s.email = 'mutomasa at gmail.com'
45
45
  s.homepage = 'http://locale.rubyforge.org/'
46
46
  s.rubyforge_project = "locale"
47
- s.files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS/}
47
+ s.files = FileList['**/*'].to_a.select{|v| v !~ /pkg|CVS|git/}
48
48
  s.require_path = 'lib'
49
49
  s.bindir = 'bin'
50
- s.add_dependency('locale', '>= 0.9.0')
50
+ s.add_dependency('locale', '>= 2.0.0')
51
51
  s.has_rdoc = true
52
52
  s.description = <<-EOF
53
53
  Ruby-Locale for Ruby on Rails is the pure ruby library which provides basic functions for localization.
@@ -65,8 +65,9 @@ task :release => [ :package ] do
65
65
  require 'rubyforge'
66
66
 
67
67
  rubyforge = RubyForge.new
68
+ rubyforge.configure
68
69
  rubyforge.login
69
- rubyforge.add_release("locale", "locale",
70
- "Ruby-Locale for Ruby on Rails #{PKG_VERSION}",
70
+ rubyforge.add_release("locale", "locale_rails",
71
+ PKG_VERSION,
71
72
  "pkg/#{PKG_NAME}-#{PKG_VERSION}.gem")
72
73
  end
@@ -2,7 +2,9 @@ require 'locale'
2
2
 
3
3
  Locale.init(:driver => :cgi)
4
4
 
5
- ["i18n", "action_controller", "action_view", "version"].each do |lib|
5
+ # localized view support was canceled.
6
+ #["i18n", "action_controller", "action_view", "version"].each do |lib|
7
+ ["i18n", "action_controller", "version"].each do |lib|
6
8
  require File.join(File.dirname(__FILE__), "locale_rails", lib)
7
9
  end
8
10
 
@@ -1,141 +1,15 @@
1
1
  =begin
2
- locale_rails/lib/action_controller.rb - Ruby/Locale for "Ruby on Rails"
2
+ lib/locale_rails/action_controller.rb - Ruby/Locale for "Ruby on Rails"
3
3
 
4
- Copyright (C) 2008 Masao Mutoh
4
+ Copyright (C) 2008-2009 Masao Mutoh
5
5
 
6
6
  You may redistribute it and/or modify it under the same
7
7
  license terms as Ruby.
8
8
 
9
- $Id: action_controller.rb 25 2008-11-30 15:44:24Z mutoh $
10
9
  =end
11
10
 
12
11
  require 'action_controller'
13
-
14
- module ActionController #:nodoc:
15
- class Base
16
-
17
- prepend_before_filter :init_locale
18
-
19
- def self.locale_filter_chain # :nodoc:
20
- if chain = read_inheritable_attribute('locale_filter_chain')
21
- return chain
22
- else
23
- write_inheritable_attribute('locale_filter_chain', FilterChain.new)
24
- return locale_filter_chain
25
- end
26
- end
27
-
28
- def init_locale # :nodoc:
29
- cgi = nil
30
- if defined? request.cgi
31
- cgi = request.cgi
32
- end
33
-
34
- fchain = self.class.locale_filter_chain
35
- run_before_filters(fchain.select(&:before?), 0, 0)
36
-
37
- cgi.params["lang"] = [params["lang"]] if params["lang"]
38
- Locale.set_cgi(cgi)
39
- if cgi.params["lang"]
40
- I18n.locale = cgi.params["lang"][0]
41
- else
42
- I18n.locale = nil
43
- end
44
-
45
- run_after_filters(fchain.select(&:after?), 0)
46
- end
47
-
48
- # Append a block which is called before initializing locale on each WWW request.
49
- #
50
- # (e.g.)
51
- # class ApplicationController < ActionController::Base
52
- # def before_init_i18n
53
- # if (cookies["lang"].nil? or cookies["lang"].empty?)
54
- # params["lang"] = "ko_KR"
55
- # end
56
- # end
57
- # before_init_locale :before_init_i18n
58
- # # ...
59
- # end
60
- def self.before_init_locale(*filters, &block)
61
- locale_filter_chain.append_filter_to_chain(filters, :before, &block)
62
- end
63
-
64
- # Append a block which is called after initializing locale on each WWW request.
65
- #
66
- # (e.g.)
67
- # class ApplicationController < ActionController::Base
68
- # def after_init_i18n
69
- # L10nClass.new(locale_candidates)
70
- # end
71
- # after_init_locale :after_init_i18n
72
- # # ...
73
- # end
74
- def self.after_init_locale(*filters, &block)
75
- locale_filter_chain.append_filter_to_chain(filters, :after, &block)
76
- end
77
- end
78
-
79
- class TestRequest < AbstractRequest #:nodoc:
80
- class LocaleMockCGI < CGI #:nodoc:
81
- attr_accessor :stdinput, :stdoutput, :env_table
82
-
83
- def initialize(env, input=nil)
84
- self.env_table = env
85
- self.stdinput = StringIO.new(input || "")
86
- self.stdoutput = StringIO.new
87
-
88
- super()
89
- end
90
- end
91
-
92
- @cgi = nil
93
- def cgi
94
- unless @cgi
95
- @cgi = LocaleMockCGI.new("REQUEST_METHOD" => "GET",
96
- "QUERY_STRING" => "",
97
- "REQUEST_URI" => "/",
98
- "HTTP_HOST" => "www.example.com",
99
- "SERVER_PORT" => "80",
100
- "HTTPS" => "off")
101
- end
102
- @cgi
103
- end
104
- end
105
-
106
- module Caching
107
- module Fragments
108
- def fragment_cache_key_with_locale(name)
109
- ret = fragment_cache_key_without_locale(name)
110
- if ret.is_a? String
111
- ret.gsub(/:/, ".") << "_#{I18n.candidates}"
112
- else
113
- ret
114
- end
115
- end
116
- alias_method_chain :fragment_cache_key, :locale
117
-
118
- def expire_fragment_with_locale(name, options = nil)
119
- return unless perform_caching
120
-
121
- fc_store = (respond_to? :cache_store) ? cache_store : fragment_cache_store
122
- key = name.is_a?(Regexp) ? name : fragment_cache_key_without_locale(name)
123
- if key.is_a?(Regexp)
124
- self.class.benchmark "Expired fragments matching: #{key.source}" do
125
- fc_store.delete_matched(key, options)
126
- end
127
- else
128
- key = key.gsub(/:/, ".")
129
- self.class.benchmark "Expired fragment: #{key}, lang = #{I18n.supported_locales}" do
130
- supported_locales.each do |lang|
131
- fc_store.delete("#{key}_#{lang}", options)
132
- end
133
- end
134
- end
135
- end
136
- alias_method_chain :expire_fragment, :locale
137
- end
138
- end
12
+ ["base", "caching", "test_process"].each do |lib|
13
+ require File.join(File.dirname(__FILE__), "action_controller", lib)
139
14
  end
140
15
 
141
-
@@ -0,0 +1,85 @@
1
+ =begin
2
+ lib/locale_rails/action_controller/base.rb - Ruby/Locale for "Ruby on Rails"
3
+
4
+ Copyright (C) 2008 Masao Mutoh
5
+
6
+ You may redistribute it and/or modify it under the same
7
+ license terms as Ruby.
8
+
9
+ $Id: action_controller.rb 25 2008-11-30 15:44:24Z mutoh $
10
+ =end
11
+
12
+ require 'action_controller'
13
+
14
+ module ActionController #:nodoc:
15
+ class Base
16
+
17
+ prepend_before_filter :init_locale
18
+
19
+ def self.locale_filter_chain # :nodoc:
20
+ if chain = read_inheritable_attribute('locale_filter_chain')
21
+ return chain
22
+ else
23
+ write_inheritable_attribute('locale_filter_chain', FilterChain.new)
24
+ return locale_filter_chain
25
+ end
26
+ end
27
+
28
+ def init_locale # :nodoc:
29
+ cgi = nil
30
+ if defined? ::Rack
31
+ cgi = request
32
+ else
33
+ if defined? request.cgi
34
+ cgi = request.cgi
35
+ end
36
+ end
37
+
38
+ fchain = self.class.locale_filter_chain
39
+ run_before_filters(fchain.select(&:before?), 0, 0)
40
+
41
+ cgi.params["lang"] = [params["lang"]] if params["lang"]
42
+ Locale.set_cgi(cgi)
43
+ if cgi.params["lang"]
44
+ I18n.locale = cgi.params["lang"][0]
45
+ else
46
+ I18n.locale = nil
47
+ end
48
+
49
+ run_after_filters(fchain.select(&:after?), 0)
50
+ end
51
+
52
+ # Append a block which is called before initializing locale on each WWW request.
53
+ #
54
+ # (e.g.)
55
+ # class ApplicationController < ActionController::Base
56
+ # def before_init_i18n
57
+ # if (cookies["lang"].nil? or cookies["lang"].empty?)
58
+ # params["lang"] = "ko_KR"
59
+ # end
60
+ # end
61
+ # before_init_locale :before_init_i18n
62
+ # # ...
63
+ # end
64
+ def self.before_init_locale(*filters, &block)
65
+ locale_filter_chain.append_filter_to_chain(filters, :before, &block)
66
+ end
67
+
68
+ # Append a block which is called after initializing locale on each WWW request.
69
+ #
70
+ # (e.g.)
71
+ # class ApplicationController < ActionController::Base
72
+ # def after_init_i18n
73
+ # L10nClass.new(locale_candidates)
74
+ # end
75
+ # after_init_locale :after_init_i18n
76
+ # # ...
77
+ # end
78
+ def self.after_init_locale(*filters, &block)
79
+ locale_filter_chain.append_filter_to_chain(filters, :after, &block)
80
+ end
81
+ end
82
+
83
+ end
84
+
85
+
@@ -0,0 +1,49 @@
1
+ =begin
2
+ lib/locale_rails/action_controller.rb - Ruby/Locale for "Ruby on Rails"
3
+
4
+ Copyright (C) 2008 Masao Mutoh
5
+
6
+ You may redistribute it and/or modify it under the same
7
+ license terms as Ruby.
8
+
9
+ $Id: action_controller.rb 25 2008-11-30 15:44:24Z mutoh $
10
+ =end
11
+
12
+ require 'action_controller/caching'
13
+
14
+ module ActionController #:nodoc:
15
+
16
+ module Caching
17
+ module Fragments
18
+ def fragment_cache_key_with_locale(name)
19
+ ret = fragment_cache_key_without_locale(name)
20
+ if ret.is_a? String
21
+ ret.gsub(/:/, ".") << "_#{I18n.candidates}"
22
+ else
23
+ ret
24
+ end
25
+ end
26
+ alias_method_chain :fragment_cache_key, :locale
27
+
28
+ def expire_fragment_with_locale(name, options = nil)
29
+ return unless perform_caching
30
+
31
+ fc_store = (respond_to? :cache_store) ? cache_store : fragment_cache_store
32
+ key = name.is_a?(Regexp) ? name : fragment_cache_key_without_locale(name)
33
+ if key.is_a?(Regexp)
34
+ self.class.benchmark "Expired fragments matching: #{key.source}" do
35
+ fc_store.delete_matched(key, options)
36
+ end
37
+ else
38
+ key = key.gsub(/:/, ".")
39
+ self.class.benchmark "Expired fragment: #{key}, lang = #{I18n.supported_locales}" do
40
+ supported_locales.each do |lang|
41
+ fc_store.delete("#{key}_#{lang}", options)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ alias_method_chain :expire_fragment, :locale
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,44 @@
1
+ =begin
2
+ lib/locale_rails/action_controller.rb - Ruby/Locale for "Ruby on Rails"
3
+
4
+ Copyright (C) 2009 Masao Mutoh
5
+
6
+ You may redistribute it and/or modify it under the same
7
+ license terms as Ruby.
8
+
9
+ =end
10
+
11
+ require 'action_controller'
12
+ require 'action_controller/test_process'
13
+
14
+ module ActionController
15
+ if defined? AbstractRequest #:nodoc:
16
+ # for Rails-2.2.x or earlier.
17
+ class TestRequest < AbstractRequest #:nodoc:
18
+ class LocaleMockCGI < CGI #:nodoc:
19
+ attr_accessor :stdinput, :stdoutput, :env_table
20
+
21
+ def initialize(env, input=nil)
22
+ self.env_table = env
23
+ self.stdinput = StringIO.new(input || "")
24
+ self.stdoutput = StringIO.new
25
+
26
+ super()
27
+ end
28
+ end
29
+
30
+ @cgi = nil
31
+ def cgi
32
+ unless @cgi
33
+ @cgi = LocaleMockCGI.new("REQUEST_METHOD" => "GET",
34
+ "QUERY_STRING" => "",
35
+ "REQUEST_URI" => "/",
36
+ "HTTP_HOST" => "www.example.com",
37
+ "SERVER_PORT" => "80",
38
+ "HTTPS" => "off")
39
+ end
40
+ @cgi
41
+ end
42
+ end
43
+ end
44
+ end
@@ -8,36 +8,34 @@
8
8
 
9
9
  Original: Ruby-GetText-Package-1.92.0
10
10
 
11
- $Id: action_view.rb 23 2008-11-24 09:22:35Z mutoh $
12
11
  =end
13
12
 
14
13
  require 'action_view'
15
14
 
16
15
  module ActionView #:nodoc:
17
- class Base
18
- def _pick_template_with_locale_main(template_path, tags)
19
- path = template_path.sub(/^\//, '')
16
+ class PathSet < Array
17
+
18
+ def find_template_with_locale_rails(original_template_path, format = nil, html_fallback = true)
19
+ return original_template_path if original_template_path.respond_to?(:render)
20
+
21
+ path = original_template_path.sub(/^\//, '')
20
22
  if m = path.match(/(.*)\.(\w+)$/)
21
23
  template_file_name, template_file_extension = m[1], m[2]
22
24
  else
23
25
  template_file_name = path
24
26
  end
25
27
 
26
- tags.each do |v|
28
+ I18n.candidates.each do |v|
27
29
  file_name = "#{template_file_name}_#{v}"
28
30
  begin
29
- return _pick_template_without_locale(file_name)
31
+ return find_template_without_locale_rails(file_name, format, false)
30
32
  rescue MissingTemplate => e
31
33
  end
32
34
  end
33
- _pick_template_without_locale(template_path)
35
+ find_template_without_locale_rails(original_template_path, format, html_fallback)
34
36
  end
35
- memoize :_pick_template_with_locale_main
37
+ alias_method_chain :find_template, :locale_rails
36
38
 
37
- def _pick_template_with_locale(template_path) #: shouldn't memoize.
38
- _pick_template_with_locale_main(template_path, I18n.candidates)
39
- end
40
- alias_method_chain :_pick_template, :locale
41
39
  end
42
40
  end
43
41