sinatra-r18n 0.3.2 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -2,22 +2,21 @@
2
2
 
3
3
  Sinatra extension that provides i18n support to translate your web application.
4
4
 
5
- It is just a wrap for R18n core library. See R18n documentation for more
5
+ It is just a wrapper for R18n core library. See R18n documentation for more
6
6
  information.
7
7
 
8
8
  == Features
9
9
 
10
- * It has special support for countries with two official languages. If there
11
- isn’t translation in user locale, it will be found in locales, which
12
- user may know (not only in default locale). For example, many people in
13
- Belarus can understand Russian, and locale has information about it.
14
- * It can format numbers and time to the rules of the user locale, translate
15
- month and week days name and give other locale information.
16
- * It has translation for commons words, like “OK”, “Cancel”, etc.
17
- * It storage translation in rich YAML format. You can put procedures and
18
- pluralization (“1 comment”, “5 comments”) or create you own filters.
10
+ * Nice Ruby-style syntax.
11
+ * Filters.
12
+ * Flexible locales.
13
+ * Custom translations loaders.
14
+ * Translation support for any classes.
15
+ * Time and number localization.
16
+ * Several user language support.
19
17
 
20
18
  == How To
19
+
21
20
  1. Create translations dir <tt>./i18n/</tt>.
22
21
  2. Add file with translation in some language. For example
23
22
  <tt>./i18n/en.yml</tt>:
@@ -54,30 +53,32 @@ information.
54
53
  Or you save locale in session, when user change it:
55
54
 
56
55
  before do
57
- session[:locale] = params[:locale] if params[:locale]
56
+ session[:locale] = params[:locale] if params[:locale]
58
57
  end
59
58
 
60
59
  5. Use translation messages in view. For example in HAML:
61
60
 
62
- %p= i18n.post.friends
63
- %p= i18n.post.tags(@post.tags.join(', '))
61
+ %p= t.post.friends
62
+ %p= t.post.tags(@post.tags.join(', '))
64
63
 
65
- %h2= i18n.comments(@post.comments.size)
64
+ %h2= t.comments(@post.comments.size)
66
65
 
67
66
  6. Print localized time and numbers. For example:
68
67
 
69
- i18n.l @post.created_at, :human
68
+ l @post.created_at, :human
70
69
 
71
70
  7. Print available translations. For example in HAML:
72
71
 
73
72
  %ul
74
- - i18n.translations.each_pair do |locale, title|
73
+ - r18n.available_locales.each do |locale|
75
74
  %li
76
- %a{ href: "/#{locale}/" }= title
75
+ %a{ href: "/#{locale.code}/" }= locale.title
77
76
 
78
77
  == License
78
+
79
79
  R18n is licensed under the GNU Lesser General Public License version 3.
80
80
  You can read it in LICENSE file or in http://www.gnu.org/licenses/lgpl.html.
81
81
 
82
82
  == Author
83
+
83
84
  Andrey “A.I.” Sitnik <andrey@sitnik.ru>
data/lib/sinatra/r18n.rb CHANGED
@@ -30,7 +30,7 @@ module Sinatra #::nodoc::
30
30
  module Helpers
31
31
  # Return tool for i18n support. It will be R18n::I18n object, see it
32
32
  # documentation for more information.
33
- def i18n
33
+ def r18n
34
34
  unless @i18n
35
35
  ::R18n::I18n.default = options.default_locale
36
36
 
@@ -47,6 +47,18 @@ module Sinatra #::nodoc::
47
47
  @i18n
48
48
  end
49
49
  end
50
+ alias i18n r18n
51
+
52
+
53
+ # Translate message. Alias for <tt>r18n.t</tt>.
54
+ def t(*params)
55
+ i18n.t(*params)
56
+ end
57
+
58
+ # Localize object. Alias for <tt>r18n.l</tt>.
59
+ def l(*params)
60
+ i18n.l(*params)
61
+ end
50
62
  end
51
63
 
52
64
  def self.registered(app) #::nodoc::
data/spec/app/app.rb CHANGED
@@ -8,25 +8,29 @@ get '/:locale/posts/:name' do
8
8
  end
9
9
 
10
10
  get '/:locale/posts/:name/comments' do
11
- i18n.post.comments(3).to_s
11
+ t.post.comments(3).to_s
12
+ end
13
+
14
+ get '/time' do
15
+ l Time.at(0).utc
12
16
  end
13
17
 
14
18
  get '/locale' do
15
- i18n.locale.title
19
+ r18n.locale.title
16
20
  end
17
21
 
18
22
  get '/locales' do
19
- i18n.translations.map { |i| i.join(': ') }.sort.join('; ')
23
+ r18n.available_locales.map { |i| "#{i.code}: #{i.title}" }.sort.join('; ')
20
24
  end
21
25
 
22
26
  get '/greater' do
23
- i18n.greater
27
+ t.greater
24
28
  end
25
29
 
26
30
  get '/warning' do
27
- i18n.warning
31
+ t.warning
28
32
  end
29
33
 
30
34
  get '/untranslated' do
31
- "#{i18n.post.no}"
35
+ "#{t.post.no}"
32
36
  end
@@ -1 +1 @@
1
- <h1><%= i18n.post.title(@post) %></h1>
1
+ <h1><%= t.post.title(@post) %></h1>
@@ -58,4 +58,10 @@ describe Sinatra::R18n do
58
58
  last_response.body.should == "post.<span style='color: red'>no</span>"
59
59
  end
60
60
 
61
+ it "should localize objects" do
62
+ get '/time'
63
+ last_response.should be_ok
64
+ last_response.body.should == "01/01/1970 00:00"
65
+ end
66
+
61
67
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-r18n
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: "0.4"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey "A.I." Sitnik
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-29 00:00:00 +03:00
12
+ date: 2010-01-03 00:00:00 +03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,9 +20,9 @@ dependencies:
20
20
  requirements:
21
21
  - - "="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.3.2
23
+ version: "0.4"
24
24
  version:
25
- description: " A Sinatra extension that provides i18n support to translate your web\n application. It is just a wrap for R18n core library.\n It can format numbers and time to the rules of the user locale,\n has translation for common words, storage translation in YAML format with\n pluralization, procedures and user filters and has special support for\n countries with two official languages.\n"
25
+ description: " A Sinatra extension that provides i18n support to translate your web\n application. It is just a wrapper for R18n core library.\n It has nice Ruby-style syntax, filters, flexible locales, custom loaders,\n translation support for any classes, time and number localization, several\n user language support, agnostic core package with out-of-box support for\n Rails, Sinatra, Merb and desktop applications.\n"
26
26
  email: andrey@sitnik.ru
27
27
  executables: []
28
28