Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Georgian language support #100

Merged
merged 1 commit into from
May 8, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions README.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ Számok betűvel írva az I18n könyvtár segítségével.
* Lietuvių [lt]
* Latviešu [lv]
* Eesti [et]
* ქართული (Georgian) [ka]
* Türkçe** [tr]
* Deutsch** [de]
* Italiano** [it]
Expand Down Expand Up @@ -68,6 +69,9 @@ Számok betűvel írva az I18n könyvtár segítségével.
I18n.with_locale(:et) { 42.to_words }
=> "nelikümmend kaks"

I18n.with_locale(:ka) { 42.to_words }
=> "ორმოცდაორი"

21.to_words
=> "twenty-one"
=> "veintiuno"
Expand All @@ -79,6 +83,7 @@ Számok betűvel írva az I18n könyvtár segítségével.
=> "divdesmit viens"
=> "kakskümmend üks"
=> "yirmi bir"
=> "ოცდაერთი"
=> "einundzwanzig"
=> "ventiuno"
=> "éénentwintig"
Expand All @@ -94,6 +99,7 @@ Számok betűvel írva az I18n könyvtár segítségével.
=> "du šimtai trisdešimt vienas"
=> "divi simti trīsdesmit viens"
=> "kakssada kolmkümmend üks"
=> "ორას ოცდათერთმეტი"
=> "iki yüz otuz bir"
=> "zweihunderteinunddreißig"
=> "2 cento trentauno"
Expand All @@ -110,6 +116,7 @@ Számok betűvel írva az I18n könyvtár segítségével.
=> "keturi tūkstančiai trisdešimt"
=> "četri tūkstoši trīsdesmit"
=> "neli tuhat kolmkümmend"
=> "ოთხი ათას ოცდაათი"
=> "dört bin otuz"
=> "viertausenddreißig"
=> "quattro mille trenta"
Expand All @@ -126,6 +133,7 @@ Számok betűvel írva az I18n könyvtár segítségével.
=> "milijonas šimtas"
=> "viens miljons simts"
=> "üks miljon ükssada"
=> "ერთი მილიონ ასი"
=> "bir milyon bir yüz"
=> "eine Million einhundert"
=> "uno milione 1 cento"
Expand Down Expand Up @@ -157,6 +165,7 @@ Számok betűvel írva az I18n könyvtár segítségével.
=> ["vienas", "du", "trys"]
=> ["viens", "divi", "trīs"]
=> ["üks", "kaks", "kolm"]
=> ["ერთი", "ორი", "სამი"]

[11, 22, 133].to_words
=> ["eleven", "twenty-two", "one hundred thirty-three"]
Expand All @@ -168,6 +177,7 @@ Számok betűvel írva az I18n könyvtár segítségével.
=> ["vienuolika", "dvidešimt du", "šimtas trisdešimt trys"]
=> ["vienpadsmit", "divdesmit divi", "simtu trīsdesmit trīs"]
=> ["üksteist", "kakskümmend kaks", "ükssada kolmkümmend kolm"]
=> ["თერთმეტი", "ოცდაორი", "ას ოცდაცამეტი"]
=> ["on bir", "yirmi iki", "bir yüz otuz üç"]
=> ["elf", "zweiundzwanzig", "einhundertdreiunddreißig"]
=> ["undici", "ventidue", "1 cento trentatre"]
Expand Down
23 changes: 23 additions & 0 deletions lib/numbers_and_words/i18n/locales/numbers.ka.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
ka:
numbers:
ones: [ნული, ერთი, ორი, სამი, ოთხი, ხუთი, ექვსი, შვიდი, რვა, ცხრა]
teens: [ათი, თერთმეტი, თორმეტი, ცამეტი, თოთხმეტი, თხუთმეტი, თექვსმეტი, ჩვიდმეტი, თვრამეტი, ცხრამეტი]
tens: [ნული, ათი, ოცი, ოცდაათი, ორმოცი, ორმოცდაათი, სამოცი, სამოცდაათი, ოთხმოცი, ოთხმოცდაათი]
twenty: ოცი
forty: ორმოცი
sixty: სამოცი
eighty: ოთხმოცი
one_hundred: ასი
one_thousand: ათასი
one_million: მილიონი
one_billion: მილიარდი
partials:
ones: [ნული, ერთი, ორ, სამ, ოთხ, ხუთ, ექვს, შვიდ, რვა, ცხრა]
twenty: ოცდა
forty: ორმოცდა
sixty: სამოცდა
eighty: ოთხმოცდა
one_hundred: ას
one_thousand: ათას
one_million: მილიონ
one_billion: მილიარდ
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
require 'numbers_and_words/strategies/figures_converter/languages/ua'
require 'numbers_and_words/strategies/figures_converter/languages/pt'

require 'numbers_and_words/strategies/figures_converter/languages/ka'

module NumbersAndWords
module Strategies
Expand Down
43 changes: 43 additions & 0 deletions lib/numbers_and_words/strategies/figures_converter/languages/ka.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
module NumbersAndWords
module Strategies
module FiguresConverter
module Languages
class Ka < Base
include Families::Latin

private

def capacity_iteration
words = []
capacity_words = words_in_capacity(@current_capacity)
words.push(megs) unless capacity_words.empty?
words += capacity_words unless is_a_thousand? and is_a_one?
words
end

def is_a_one?
[translations.ones(1)] == words_in_capacity(@current_capacity)
end

def is_a_thousand?
FiguresArray::THOUSAND_CAPACITY == @current_capacity
end

def hundreds
super({only_hundreds: figures[0, 2] == [0, 0]})
end

def megs
if @figures.hundreds || @figures.tens || @figures.ones
prefix = :partials
else
prefix = nil
end

super(prefix: prefix)
end
end
end
end
end
end
1 change: 1 addition & 0 deletions lib/numbers_and_words/translations.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
require 'numbers_and_words/translations/lt'
require 'numbers_and_words/translations/de'
require 'numbers_and_words/translations/pt'
require 'numbers_and_words/translations/ka'

module NumbersAndWords
module Translations
Expand Down
72 changes: 72 additions & 0 deletions lib/numbers_and_words/translations/ka.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
module NumbersAndWords
module Translations
class Ka < Base
include NumbersAndWords::Translations::Families::Latin
TENS_VIGESIMAL_RANGES = [
{
range: Range.new(0, 4, true),
name: :twenty,
multiplicative: 2
},
{
range: Range.new(0, 6, true),
name: :forty,
multiplicative: 4
},
{
range: Range.new(0, 8, true),
name: :sixty,
multiplicative: 6
},
{
range: Range.new(0, 9, false),
name: :eighty,
multiplicative: 8
},
]

def vigesimal_range number
range = nil
TENS_VIGESIMAL_RANGES.each do|item|
if item[:range].include? number
range = item
break
end
end

range
end

def tens_with_ones numbers, options = {}
range = vigesimal_range(numbers[1])

if numbers[1] - range[:multiplicative] > 0
minor = teens(numbers)
else
minor = ones(numbers[0])
end

[t([:partials, range[:name]].join('.')), minor].join ''
end

def hundreds number, options = {}
options[:prefix] ||= (options[:only_hundreds] == true) ? nil : :partials

parts = [t([options[:prefix], :one_hundred].join('.'))]
parts.unshift(ones(number, prefix: :partials)) if number > 1

parts.join ''
end

def megs capacity, options = {}
if capacity == 1
t([options[:prefix], :one_thousand].join('.'))
elsif capacity == 2
t([options[:prefix], :one_million].join('.'))
elsif capacity == 3
t([options[:prefix], :one_billion].join('.'))
end
end
end
end
end
21 changes: 21 additions & 0 deletions spec/numbers_and_words/array/fixture_examples/ka.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
to_words:
simple_example:
?
- 1
- 2
- 3
:
- ერთი
- ორი
- სამი
complex_example:
?
- 100
- 101
- 21
- 13
:
- ასი
- ას ერთი
- ოცდაერთი
- ცამეტი
74 changes: 74 additions & 0 deletions spec/numbers_and_words/integer/fixture_examples/ka.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
to_words:
ones:
0: ნული
1: ერთი
2: ორი
3: სამი
4: ოთხი
5: ხუთი
6: ექვსი
7: შვიდი
8: რვა
9: ცხრა
teens:
10: ათი
11: თერთმეტი
12: თორმეტი
13: ცამეტი
14: თოთხმეტი
15: თხუთმეტი
16: თექვსმეტი
17: ჩვიდმეტი
18: თვრამეტი
19: ცხრამეტი
20: ოცი
21: ოცდაერთი
22: ოცდაორი
30: ოცდაათი
31: ოცდათერთმეტი
38: ოცდათვრამეტი
39: ოცდაცხრამეტი
40: ორმოცი
42: ორმოცდაორი
47: ორმოცდაშვიდი
99: ოთხმოცდაცხრამეტი
hundreds:
100: ასი
101: ას ერთი
102: ას ორი
121: ას ოცდაერთი
200: ორასი
201: ორას ერთი
250: ორას ორმოცდაათი
300: სამასი
310: სამას ათი
415: ოთხას თხუთმეტი
600: ექვსასი
909: ცხრაას ცხრა
999: ცხრაას ოთხმოცდაცხრამეტი
thousands:
1000: ათასი
1001: ათას ერთი
2000: ორი ათასი
2010: ორი ათას ათი
7892: შვიდი ათას რვაას ოთხმოცდათორმეტი
10000: ათი ათასი
121000: ას ოცდაერთი ათასი
121100: ას ოცდაერთი ათას ასი
120000: ას ოცი ათასი
124000: ას ოცდაოთხი ათასი
999000: ცხრაას ოთხმოცდაცხრამეტი ათასი
999900: ცხრაას ოთხმოცდაცხრამეტი ათას ცხრაასი
999990: ცხრაას ოთხმოცდაცხრამეტი ათას ცხრაას ოთხმოცდაათი
999999: ცხრაას ოთხმოცდაცხრამეტი ათას ცხრაას ოთხმოცდაცხრამეტი
millions:
1000000: ერთი მილიონი
2000000: ორი მილიონი
999000999: ცხრაას ოთხმოცდაცხრამეტი მილიონ ცხრაას ოთხმოცდაცხრამეტი
999999999: ცხრაას ოთხმოცდაცხრამეტი მილიონ ცხრაას ოთხმოცდაცხრამეტი ათას ცხრაას ოთხმოცდაცხრამეტი
billions:
1174315110: ერთი მილიარდ ას სამოცდათოთხმეტი მილიონ სამას თხუთმეტი ათას ას ათი
1174315119: ერთი მილიარდ ას სამოცდათოთხმეტი მილიონ სამას თხუთმეტი ათას ას ცხრამეტი
15174315110: თხუთმეტი მილიარდ ას სამოცდათოთხმეტი მილიონ სამას თხუთმეტი ათას ას ათი
35174315119: ოცდათხუთმეტი მილიარდ ას სამოცდათოთხმეტი მილიონ სამას თხუთმეტი ათას ას ცხრამეტი
935174315119: ცხრაას ოცდათხუთმეტი მილიარდ ას სამოცდათოთხმეტი მილიონ სამას თხუთმეტი ათას ას ცხრამეტი