parsi-localize 0.1
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/.gitignore +5 -0
- data/Gemfile +4 -0
- data/README.markdown +38 -0
- data/Rakefile +12 -0
- data/init.rb +1 -0
- data/lib/parsi_digits.rb +25 -0
- data/lib/parsi_localize.rb +25 -0
- data/lib/version.rb +5 -0
- data/locale/en.yml +0 -0
- data/locale/fa.yml +8 -0
- data/parsi-localize.gemspec +29 -0
- data/test/parsi_digits_test.rb +28 -0
- data/test/test_helper.rb +7 -0
- metadata +103 -0
data/Gemfile
ADDED
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
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'parsi_localize'
|
data/lib/parsi_digits.rb
ADDED
@@ -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
data/locale/en.yml
ADDED
File without changes
|
data/locale/fa.yml
ADDED
@@ -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
|
data/test/test_helper.rb
ADDED
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
|