gettext_i18n_rails 0.2.4 → 0.2.5
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/Rakefile +4 -13
- data/Readme.md +27 -16
- data/VERSION +1 -1
- data/gettext_i18n_rails.gemspec +2 -2
- data/lib/gettext_i18n_rails.rb +1 -1
- data/lib/gettext_i18n_rails/html_safe_translations.rb +13 -3
- data/spec/gettext_i18n_rails_spec.rb +38 -1
- data/spec/spec_helper.rb +1 -1
- metadata +3 -3
data/Rakefile
CHANGED
@@ -2,26 +2,17 @@ require 'spec/rake/spectask'
|
|
2
2
|
Spec::Rake::SpecTask.new {|t| t.spec_opts = ['--color']}
|
3
3
|
|
4
4
|
task :default do
|
5
|
-
|
6
|
-
puts `
|
7
|
-
|
8
|
-
# gem 'activerecord', '>=3' did not work for me, but just require gets the right version...
|
9
|
-
require 'active_record'
|
10
|
-
if ActiveRecord::VERSION::MAJOR >= 3
|
11
|
-
puts `rake spec RSPEC_COLOR=1`
|
12
|
-
else
|
13
|
-
'install rails 3 to get full test coverage...'
|
14
|
-
end
|
5
|
+
puts `rake spec VERSION=2.3.9 RSPEC_COLOR=1`
|
6
|
+
puts `rake spec VERSION=3.0.0 RSPEC_COLOR=1`
|
15
7
|
end
|
16
8
|
|
17
9
|
begin
|
18
10
|
require 'jeweler'
|
19
|
-
project_name = 'gettext_i18n_rails'
|
20
11
|
Jeweler::Tasks.new do |gem|
|
21
|
-
gem.name =
|
12
|
+
gem.name = 'gettext_i18n_rails'
|
22
13
|
gem.summary = "Simple FastGettext Rails integration."
|
23
14
|
gem.email = "grosser.michael@gmail.com"
|
24
|
-
gem.homepage = "http://github.com/grosser/#{
|
15
|
+
gem.homepage = "http://github.com/grosser/#{gem.name}"
|
25
16
|
gem.authors = ["Michael Grosser"]
|
26
17
|
gem.add_dependency 'fast_gettext'
|
27
18
|
end
|
data/Readme.md
CHANGED
@@ -26,23 +26,21 @@ GetText 2.0 will render 1.93 unusable, so only install if you do not have apps t
|
|
26
26
|
Copy default locales with dates/sentence-connectors/AR-errors you want from e.g.
|
27
27
|
[rails i18n](http://github.com/svenfuchs/rails-i18n/tree/master/rails/locale/) into 'config/locales'
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
#config/environment.rb
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
config.gem "gettext", :lib => false, :version => '>=1.9.3'
|
37
|
-
end
|
29
|
+
Rails 2:
|
30
|
+
|
31
|
+
# config/environment.rb
|
32
|
+
config.gem "fast_gettext", :version => '>=0.4.8'
|
33
|
+
|
34
|
+
# only needed for mo/po file generation in development
|
35
|
+
config.gem "gettext", :version => '>=1.9.3', :lib => false
|
38
36
|
|
39
|
-
|
37
|
+
With bundler:
|
40
38
|
|
41
|
-
#Gemfile
|
42
|
-
gem
|
43
|
-
gem '>=1.9.3',
|
39
|
+
# Gemfile
|
40
|
+
gem 'fast_gettext', '>=0.4.8'
|
41
|
+
gem 'gettext', '>=1.9.3', :require => false
|
44
42
|
|
45
|
-
|
43
|
+
Installed as gem? Add to your Rakefile:
|
46
44
|
|
47
45
|
#Rakefile
|
48
46
|
begin
|
@@ -53,14 +51,14 @@ If you installed it as a gem add to your Rakefile
|
|
53
51
|
|
54
52
|
To initialize:
|
55
53
|
|
56
|
-
#config/
|
54
|
+
# config/initializers/fast_gettext.rb
|
57
55
|
FastGettext.add_text_domain 'app', :path => 'locale'
|
58
56
|
FastGettext.default_available_locales = ['en','de'] #all you want to allow
|
59
57
|
FastGettext.default_text_domain = 'app'
|
60
58
|
|
61
59
|
And in your application:
|
62
60
|
|
63
|
-
#app/controllers/application_controller.rb
|
61
|
+
# app/controllers/application_controller.rb
|
64
62
|
class ApplicationController < ...
|
65
63
|
before_filter :set_gettext_locale
|
66
64
|
|
@@ -101,6 +99,13 @@ You do not have to translate this into english "Model", if you use the
|
|
101
99
|
namespace-aware translation
|
102
100
|
s_('Car|Model') == 'Model' #when no translation was found
|
103
101
|
|
102
|
+
XSS / html_safe
|
103
|
+
===============
|
104
|
+
If you trust your translators and all your usages of % on translations:
|
105
|
+
(% on string is atm buggy with always staying html_safe, no matter what was replaced)
|
106
|
+
# config/environment.rb
|
107
|
+
GettextI18nRails.translations_are_html_safe = true
|
108
|
+
|
104
109
|
ActiveRecord - error messages
|
105
110
|
=============================
|
106
111
|
ActiveRecord error messages are translated through Rails::I18n, but
|
@@ -150,6 +155,12 @@ Sometimes translations like `_("x"+"u")` cannot be fond. You have 4 options:
|
|
150
155
|
- add a Logger to a translation Chain, so every unfound translations is logged ([example]((http://github.com/grosser/fast_gettext)))
|
151
156
|
|
152
157
|
|
158
|
+
TODO
|
159
|
+
=====
|
160
|
+
- add Railtie for rake tasks on Rails 3
|
161
|
+
- fix % on string to respect html_safe: `("<a>%{x}</a>".html_safe % {:x=>'<script>y</script>'})` should escape the `<script>y</script>` part)
|
162
|
+
- refactor Readme
|
163
|
+
|
153
164
|
Contributors
|
154
165
|
======
|
155
166
|
- [ruby gettext extractor](http://github.com/retoo/ruby_gettext_extractor/tree/master) from [retoo](http://github.com/retoo)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
data/gettext_i18n_rails.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gettext_i18n_rails}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Michael Grosser"]
|
12
|
-
s.date = %q{2010-09-
|
12
|
+
s.date = %q{2010-09-27}
|
13
13
|
s.email = %q{grosser.michael@gmail.com}
|
14
14
|
s.files = [
|
15
15
|
".gitignore",
|
data/lib/gettext_i18n_rails.rb
CHANGED
@@ -12,7 +12,7 @@ end
|
|
12
12
|
# include translations into all the places it needs to go...
|
13
13
|
Object.send(:include, FastGettext::Translation)
|
14
14
|
|
15
|
-
# make translations html_safe if
|
15
|
+
# make translations html_safe if possible and wanted
|
16
16
|
if "".respond_to?(:html_safe?)
|
17
17
|
require 'gettext_i18n_rails/html_safe_translations'
|
18
18
|
Object.send(:include, GettextI18nRails::HtmlSafeTranslations)
|
@@ -1,19 +1,29 @@
|
|
1
1
|
module GettextI18nRails
|
2
|
+
mattr_accessor :translations_are_html_safe
|
3
|
+
|
2
4
|
module HtmlSafeTranslations
|
5
|
+
# also make available on class methods
|
3
6
|
def self.included(base)
|
4
7
|
base.extend self
|
5
8
|
end
|
6
9
|
|
7
10
|
def _(*args)
|
8
|
-
super
|
11
|
+
html_safe_if_wanted super
|
9
12
|
end
|
10
13
|
|
11
14
|
def n_(*args)
|
12
|
-
super
|
15
|
+
html_safe_if_wanted super
|
13
16
|
end
|
14
17
|
|
15
18
|
def s_(*args)
|
16
|
-
super
|
19
|
+
html_safe_if_wanted super
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def html_safe_if_wanted(text)
|
25
|
+
return text unless GettextI18nRails.translations_are_html_safe
|
26
|
+
text.to_s.html_safe
|
17
27
|
end
|
18
28
|
end
|
19
29
|
end
|
@@ -3,10 +3,47 @@ require File.expand_path("spec_helper", File.dirname(__FILE__))
|
|
3
3
|
FastGettext.silence_errors
|
4
4
|
|
5
5
|
describe GettextI18nRails do
|
6
|
+
before do
|
7
|
+
GettextI18nRails.translations_are_html_safe = nil
|
8
|
+
end
|
9
|
+
|
6
10
|
it "extends all classes with fast_gettext" do
|
7
11
|
_('test')
|
8
12
|
end
|
9
13
|
|
14
|
+
describe 'translations_are_html_safe' do
|
15
|
+
before do
|
16
|
+
GettextI18nRails.translations_are_html_safe = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
it "makes translations not html_safe by default" do
|
20
|
+
_('x').html_safe?.should == false
|
21
|
+
s_('x').html_safe?.should == false
|
22
|
+
n_('x','y',2).html_safe?.should == false
|
23
|
+
String._('x').html_safe?.should == false
|
24
|
+
String.s_('x').html_safe?.should == false
|
25
|
+
String.n_('x','y',2).html_safe?.should == false
|
26
|
+
end
|
27
|
+
|
28
|
+
it "makes instance translations html_safe when wanted" do
|
29
|
+
GettextI18nRails.translations_are_html_safe = true
|
30
|
+
_('x').html_safe?.should == true
|
31
|
+
s_('x').html_safe?.should == true
|
32
|
+
n_('x','y',2).html_safe?.should == true
|
33
|
+
end
|
34
|
+
|
35
|
+
it "makes class translations html_safe when wanted" do
|
36
|
+
GettextI18nRails.translations_are_html_safe = true
|
37
|
+
String._('x').html_safe?.should == true
|
38
|
+
String.s_('x').html_safe?.should == true
|
39
|
+
String.n_('x','y',2).html_safe?.should == true
|
40
|
+
end
|
41
|
+
|
42
|
+
it "does not make everything html_safe" do
|
43
|
+
'x'.html_safe?.should == false
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
10
47
|
it "sets up out backend" do
|
11
48
|
I18n.backend.is_a?(GettextI18nRails::Backend).should be_true
|
12
49
|
end
|
@@ -37,7 +74,7 @@ describe GettextI18nRails do
|
|
37
74
|
FastGettext.locale.should == 'yy'
|
38
75
|
end
|
39
76
|
|
40
|
-
it "does not set a non-available locale
|
77
|
+
it "does not set a non-available locale though I18n.locale" do
|
41
78
|
FastGettext.available_locales = ['de']
|
42
79
|
I18n.locale = :xx
|
43
80
|
FastGettext.locale.should == 'de'
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
if ENV['VERSION']
|
3
3
|
puts "running VERSION #{ENV['VERSION']}"
|
4
|
+
gem 'actionpack', ENV['VERSION']
|
4
5
|
gem 'activerecord', ENV['VERSION']
|
5
6
|
gem 'activesupport', ENV['VERSION']
|
6
|
-
gem 'actionpack', ENV['VERSION']
|
7
7
|
gem 'actionmailer', ENV['VERSION']
|
8
8
|
end
|
9
9
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 5
|
9
|
+
version: 0.2.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Michael Grosser
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-09-
|
17
|
+
date: 2010-09-27 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|