parsi-localize 0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in .gemspec
4
+ gemspec
data/README.markdown ADDED
@@ -0,0 +1,38 @@
1
+ ParsiLocalize
2
+ =============
3
+
4
+ Change I18n localize to use parsi digits and jalaly dates in farsi (فارسی) locale.
5
+ This gem contains two sections
6
+
7
+ ParsiDigits
8
+ -----------
9
+ Simply change digits in a string/integer/float to unicode parsi digits.
10
+
11
+ (In all the example below we have right to left issues to present output!)
12
+
13
+ Example:
14
+
15
+ ‪"15,000 تومان".with_parsi_digits => "۱۵,۰۰۰ تومان"
16
+ 123.25.with_parsi_digits => "۱۲۳/۲۵"
17
+
18
+
19
+ ParsiLocalize
20
+ -------------
21
+ Change behaivor of I18n#localize so that it localize digits and dates in 'farsi' locale.
22
+
23
+ I18n.l ‪"15,000 تومان" => "۱۵,۰۰۰ تومان"
24
+ I18n.l Time.now, fromat: "%y/%m/%d %H:%M:%S" => "۹۰/۱۰/۱۳ ۰۵:۴۳:۳۲"
25
+
26
+ If you don't set date format, it uses the default locale format (time.formats.default) wich you can set in your locale file. For more info on dateformating see 'jalalidate' docs
27
+ For example with
28
+
29
+ fa:
30
+ time:
31
+ formats:
32
+ default: "%d %b %y"
33
+
34
+ in your locale file you will get:
35
+
36
+ I18n.l Time.now => "۱۳ دی ۹۰"
37
+
38
+ Copyright (c) 2012 Hassan Zamani, released under the MIT license.
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+
4
+ task default: :test
5
+
6
+ desc 'Test the parsi-localize plugin.'
7
+ Rake::TestTask.new(:test) do |t|
8
+ t.libs << 'lib'
9
+ t.libs << 'test'
10
+ t.pattern = 'test/**/*_test.rb'
11
+ t.verbose = true
12
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'parsi_localize'
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ class String
4
+ def with_parsi_digits
5
+ digits = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹']
6
+ gsub(/\d/) { |d| digits[d.to_i] }
7
+ end
8
+
9
+ def with_parsi_digits!
10
+ digits = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹']
11
+ gsub!(/\d/) { |d| digits[d.to_i] }
12
+ end
13
+ end
14
+
15
+ class Integer
16
+ def with_parsi_digits
17
+ to_s.with_parsi_digits
18
+ end
19
+ end
20
+
21
+ class Float
22
+ def with_parsi_digits
23
+ to_s.with_parsi_digits.sub '.', '/'
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ require 'parsi_digits'
2
+ require 'jalalidate'
3
+ require 'i18n'
4
+
5
+ module I18n
6
+ class << self
7
+ def localize(object, options = {})
8
+ locale = options.delete(:locale) || config.locale
9
+ format = options.delete(:format) || :default
10
+
11
+ if locale == :fa and not object.nil?
12
+ if object.respond_to? :with_parsi_digits
13
+ object.with_parsi_digits
14
+ elsif object.is_a? Date or object.is_a? Time
15
+ jdate = JalaliDate.new object
16
+ format = I18n.t("time.formats.default") if format == :default
17
+ jdate.strftime(format).with_parsi_digits
18
+ end
19
+ else
20
+ config.backend.localize(locale, object, format, options)
21
+ end
22
+ end
23
+ alias :l :localize
24
+ end
25
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,5 @@
1
+ module I18n
2
+ module ParsiLocalize
3
+ VERSION = "0.1"
4
+ end
5
+ end
data/locale/en.yml ADDED
File without changes
data/locale/fa.yml ADDED
@@ -0,0 +1,8 @@
1
+ fa:
2
+ time:
3
+ formats:
4
+ default: "%y/%m/%d %H:%M:%S"
5
+ short: "%d %b، %H:%M"
6
+ long: "%A، %e %b %Y، ساعت %H:%M:%S (%Z)"
7
+ am: "قبل از ظهر"
8
+ pm: "بعد از ظهر"
@@ -0,0 +1,29 @@
1
+ $:.push File.expand_path('../lib', __FILE__)
2
+ require 'version'
3
+
4
+ Gem::Specification.new do |s|
5
+
6
+ # Description Meta...
7
+ s.name = 'parsi-localize'
8
+ s.version = I18n::ParsiLocalize::VERSION
9
+ s.platform = Gem::Platform::RUBY
10
+ s.author = 'Hassan Zamani'
11
+ s.email = 'hsn.zamani@gmail.com'
12
+ s.homepage = 'http://github.com/hzamani/parsi_localize'
13
+ s.summary = 'Change I18n localize to use parsi digits and jalaly dates in farsi locale'
14
+ s.description = 'Change I18n localize to use parsi digits and jalaly dates in farsi locale'
15
+
16
+
17
+ # Load Paths...
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ['lib']
22
+
23
+
24
+ # Dependencies (installed via 'bundle install')...
25
+ s.add_development_dependency("bundler")
26
+ s.add_development_dependency("rake")
27
+ s.add_development_dependency("i18n")
28
+ s.add_development_dependency("jalalidate")
29
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class ParsiDigitsTest < Test::Unit::TestCase
6
+ def test_string_with_parsi_digits
7
+ assert_equal "۹۸۷۶۵۴۳۲۱۰", "9876543210".with_parsi_digits
8
+ end
9
+
10
+ def test_integer_with_parsi_digits
11
+ assert_equal "۹۸۷۶۵۴۳۲۱۰", 9876543210.with_parsi_digits
12
+ end
13
+
14
+ def test_float_with_parsi_digits
15
+ assert_equal "۹/۰۸۷۶۵۴۳۲۱", 9.087654321.with_parsi_digits
16
+ end
17
+
18
+ def test_localize
19
+ assert_equal "۹۸۷۶۵۴۳۲۱۰", I18n.l("9876543210")
20
+ assert_equal "۹۸۷۶۵۴۳۲۱۰", I18n.l(9876543210)
21
+ assert_equal "۹/۰۸۷۶۵۴۳۲۱", I18n.l(9.087654321)
22
+ time = Time.mktime(2012, 1, 3, 5, 43, 32)
23
+ date = Time.mktime(2012, 1, 3)
24
+ assert_equal "۹۰/۱۰/۱۳ ۰۵:۴۳:۳۲", I18n.l(time)
25
+ assert_equal "۹۰/۱۰/۱۳ ۰۰:۰۰:۰۰", I18n.l(date)
26
+ assert_equal "۱۳ دی ۹۰", I18n.l(time, format: "%d %b %y")
27
+ end
28
+ end
@@ -0,0 +1,7 @@
1
+ require 'test/unit'
2
+ require 'i18n'
3
+ require 'parsi_digits'
4
+ require 'parsi_localize'
5
+
6
+ I18n.load_path = ['locale/fa.yml']
7
+ I18n.default_locale = :fa
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: parsi-localize
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Hassan Zamani
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: &21869540 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *21869540
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &21869040 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *21869040
36
+ - !ruby/object:Gem::Dependency
37
+ name: i18n
38
+ requirement: &21868620 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *21868620
47
+ - !ruby/object:Gem::Dependency
48
+ name: jalalidate
49
+ requirement: &21868180 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *21868180
58
+ description: Change I18n localize to use parsi digits and jalaly dates in farsi locale
59
+ email: hsn.zamani@gmail.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - .gitignore
65
+ - Gemfile
66
+ - README.markdown
67
+ - Rakefile
68
+ - init.rb
69
+ - lib/parsi_digits.rb
70
+ - lib/parsi_localize.rb
71
+ - lib/version.rb
72
+ - locale/en.yml
73
+ - locale/fa.yml
74
+ - parsi-localize.gemspec
75
+ - test/parsi_digits_test.rb
76
+ - test/test_helper.rb
77
+ homepage: http://github.com/hzamani/parsi_localize
78
+ licenses: []
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 1.8.10
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: Change I18n localize to use parsi digits and jalaly dates in farsi locale
101
+ test_files:
102
+ - test/parsi_digits_test.rb
103
+ - test/test_helper.rb