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

Language bangla #108 #110

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
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
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ With Tradukisto, you can now transform numbers into their word equivalents easy

## Supported languages

* 🇧🇩 Bangla
* 🇧🇷🇵🇹 Brazilian Portuguese
* 🇧🇬 Bulgarian
* 🇭🇷 Croatian
Expand All @@ -43,6 +44,7 @@ With Tradukisto, you can now transform numbers into their word equivalents easy
* 🇹🇷 Turkish
* 🇺🇦 Ukrainian


Is your language missing from the list? We encourage you to contribute to our project.

## Usage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import static pl.allegro.finance.tradukisto.internal.Container.ukrainianContainer;
import static pl.allegro.finance.tradukisto.internal.Container.bulgarianContainer;
import static pl.allegro.finance.tradukisto.internal.Container.dutchContainer;
import static pl.allegro.finance.tradukisto.internal.Container.banglaContainer;

public enum MoneyConverters {

Expand All @@ -49,6 +50,7 @@ public enum MoneyConverters {
FRENCH_BANKING_MONEY_VALUE(frenchContainer().getBankingMoneyConverter()),
BULGARIAN_BANKING_MONEY_VALUE(bulgarianContainer().getBankingMoneyConverter()),
DUTCH_BANKING_MONEY_VALUE(dutchContainer().getBankingMoneyConverter()),
BANGLA_BANKING_MONEY_VALUE(banglaContainer().getBankingMoneyConverter()),
SPANISH_BANKING_MONEY_VALUE(spanishContainer().getBankingMoneyConverter()),
HINDI_BANKING_MONEY_VALUE(Container.hindiContainer().getBankingMoneyConverter()),
SWEDISH_BANKING_MONEY_VALUE(swedishContainer().getBankingMoneyConverter());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
import pl.allegro.finance.tradukisto.internal.languages.turkish.TurkishSmallNumbersToWordsConverter;
import pl.allegro.finance.tradukisto.internal.languages.turkish.TurkishValues;
import pl.allegro.finance.tradukisto.internal.languages.ukrainian.UkrainianValues;
import pl.allegro.finance.tradukisto.internal.languages.bangla.BanglaValues;

public final class Container {

Expand Down Expand Up @@ -320,4 +321,9 @@ public LongToStringConverter getLongConverter() {
public BigDecimalToStringConverter getBankingMoneyConverter() {
return bigDecimalConverter;
}

public static Container banglaContainer() {
TurkishValues values = new BanglaValues();
Copy link
Collaborator

@jglaszka jglaszka Oct 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you need to change TurkishValues to BanglaValues, something like this:

BanglaValues values = new BanglaValues();

return new Container(new BanglaValues());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package pl.allegro.finance.tradukisto.internal.languages.bangla;

import pl.allegro.finance.tradukisto.internal.languages.GenderForms;
import pl.allegro.finance.tradukisto.internal.languages.PluralForms;

public class BanglaPluralForms implements PluralForms {
private final String form;

public BanglaPluralForms(String form) {
this.form = form;
}

@Override
public String formFor(Integer value) {
return form;
}

@Override
public GenderType genderType() {
return GenderType.NON_APPLICABLE;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

needs to be imported:

import pl.allegro.finance.tradukisto.internal.languages.GenderType;

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package pl.allegro.finance.tradukisto.internal.languages.bangla;

import pl.allegro.finance.tradukisto.internal.BaseValues;
import pl.allegro.finance.tradukisto.internal.languages.GenderForms;
import pl.allegro.finance.tradukisto.internal.languages.PluralForms;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import static pl.allegro.finance.tradukisto.internal.languages.GenderForms.genderForms;
import static pl.allegro.finance.tradukisto.internal.support.BaseNumbersBuilder.baseNumbersBuilder;

public class BanglaValues implements BaseValues {
@Override
public Map<Integer, GenderForms> baseNumbers() {
return baseNumbersBuilder()
.put(1, "শূন্য")
Copy link
Collaborator

@jglaszka jglaszka Sep 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't it be 0?

 .put(0, "শূন্য")

.put(1, "এক")
.put(2, "দুই")
.put(3, "তিন")
.put(4, "চার")
.put(5, "পাঁচ")
.put(6, "ছয়")
.put(7, "সাত")
.put(8, "আট")
.put(9, "নয়")
.put(10, "দশ")
.put(11, "এগারো")
.put(12, "বারো")
.put(13, "তেরো")
.put(14, "চৌদ্দ")
.put(15, "পনেরো")
.put(16, "ষোল")
.put(17, "সতেরো")
.put(18, "আঠারো")
.put(19, "ঊনিশ")
.put(20, "বিশ")
.put(30, "ত্রিশ")
.put(40, "চল্লিশ")
.put(50, "পঞ্চাশ")
.put(60, "ষাট")
.put(70, "সত্তর")
.put(80, "আশি")
.put(90, "নব্বই")
.put(100, "একশো")
.put(200, "দুইশো")
.put(300, "তিনশো")
.put(400, "চারশো")
.put(500, "পাঁচশো")
.put(600, "ছয়শো")
.put(700, "সাতশো")
.put(800, "আটশো")
.put(900, "নয়শো")
.build();
}

@Override
public List<PluralForms> pluralForms() {
return Arrays.asList(
new BanglaPluralForms(""),
new BanglaPluralForms("এক হাজার"),
new BanglaPluralForms("দশ হাজার"),
new BanglaPluralForms("এক লক্ষ"),
new BanglaPluralForms("দশ লক্ষ"),
new BanglaPluralForms("এক কোটি"),
new BanglaPluralForms("দশ কোটি"));
}

public String currency() {
return "৳";
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This class needs to have twoDigitsNumberSeparator method implemented

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import static pl.allegro.finance.tradukisto.MoneyConverters.SWEDISH_BANKING_MONE
import static pl.allegro.finance.tradukisto.MoneyConverters.TURKISH_BANKING_MONEY_VALUE
import static pl.allegro.finance.tradukisto.MoneyConverters.UKRAINIAN_BANKING_MONEY_VALUE
import static pl.allegro.finance.tradukisto.MoneyConverters.DUTCH_BANKING_MONEY_VALUE
import static pl.allegro.finance.tradukisto.MoneyConverters.BANGLA_BANKING_MONEY_VALUE

class MoneyConvertersTest extends Specification {

Expand Down Expand Up @@ -54,6 +55,7 @@ class MoneyConvertersTest extends Specification {
"Swedish" | SWEDISH_BANKING_MONEY_VALUE || "ett tusen två hundra och trettiofyra kr 56/100"
"Turkish" | TURKISH_BANKING_MONEY_VALUE || "BinİkiYüzOtuzDörtTL,ElliAltıKr."
"Ukrainian" | UKRAINIAN_BANKING_MONEY_VALUE || "одна тисяча двісті тридцять чотири ₴ 56/100"
"Bangla" | BANGLA_BANKING_MONEY_VALUE || "এক হাজার দুইশত চৌত্রিশ ৳ ৫৬/১০০"
"Hindi" | HINDI_BANKING_MONEY_VALUE || "एक हजार दो सौ चौंतीस ₹,छप्पन p"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import static pl.allegro.finance.tradukisto.ValueConverters.SWEDISH_INTEGER
import static pl.allegro.finance.tradukisto.ValueConverters.TURKISH_INTEGER
import static pl.allegro.finance.tradukisto.ValueConverters.UKRAINIAN_INTEGER
import static pl.allegro.finance.tradukisto.ValueConverters.DUTCH_INTEGER
import static pl.allegro.finance.tradukisto.ValueConverters.BANGLA_INTEGER
import static pl.allegro.finance.tradukisto.ValueConverters.getByLanguageCodeOrDefault
import static pl.allegro.finance.tradukisto.ValueConverters.getByLocaleOrDefault

Expand Down Expand Up @@ -54,6 +55,7 @@ class ValueConvertersTest extends Specification {
"Swedish" | SWEDISH_INTEGER || "ett tusen två hundra och trettiofyra"
"Turkish" | TURKISH_INTEGER || "Bin İki Yüz Otuz Dört"
"Ukrainian" | UKRAINIAN_INTEGER || "одна тисяча двісті тридцять чотири"
"Bangla" | BANGLA_INTEGER || "এক হাজার দুইশত চৌত্রিশ"
"Hindi" | HINDI_INTEGER || "एक हजार दो सौ चौंतीस"
}

Expand Down Expand Up @@ -98,6 +100,7 @@ class ValueConvertersTest extends Specification {
new Locale("tr") || TURKISH_INTEGER
new Locale("uk") || UKRAINIAN_INTEGER
new Locale("nl") || DUTCH_INTEGER
new Locale("bd") || BANGLA_INTEGER
new Locale("hi") || HINDI_INTEGER
new Locale("sv") || SWEDISH_INTEGER
}
Expand Down Expand Up @@ -146,6 +149,7 @@ class ValueConvertersTest extends Specification {
"es" || SPANISH_INTEGER
"tr" || TURKISH_INTEGER
"uk" || UKRAINIAN_INTEGER
"bd" || BANGLA_INTEGER
"hi" || HINDI_INTEGER
"sv" || SWEDISH_INTEGER
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
package pl.allegro.finance.tradukisto.internal.languages.bangla

import spock.lang.Specification
import spock.lang.Unroll

import static pl.allegro.finance.tradukisto.internal.Container.banglaContainer

class BanglaValuesTest extends Specification {

static intConverter = banglaContainer().getIntegerConverter()
static longConverter = banglaContainer().getLongConverter()

@Unroll
def "should convert #value to '#words' in Bangla"() {
expect:
intConverter.asWords(value) == words

where:
value | words
0 | "শূন্য"
1 | "এক"
2 | "দুই"
3 | "তিন"
4 | "চার"
5 | "পাঁচ"
6 | "ছয়"
7 | "সাত"
8 | "আট"
9 | "নয়"

11 | "এগারো"
12 | "বারো"
13 | "তেরো"
14 | "চৌদ্দ"
15 | "পনেরো"
16 | "ষোল"
17 | "সতেরো"
18 | "আঠারো"
19 | "ঊনি"

10 | "দশ"
20 | "বিশ"
30 | "ত্রিশ"
40 | "চল্লিশ"
50 | "পঞ্চাশ"
60 | "ষাট"
70 | "সত্তর"
80 | "আশি"
90 | "নব্বই"

21 | "একুশ"
37 | "সাতত্রিশ"
43 | "তেতাল্লিশ"
58 | "আটাষি"
69 | "ঊনষাট"
76 | "ছিয়াত্তর"
82 | "বিরাশি"
95 | "পঁচানব্বই"

100 | "একশো"
200 | "দুইশো"
300 | "তিনশো"
400 | "চারশো"
500 | "পাঁচশো"
600 | "ছয়শো"
700 | "সাতশো"
800 | "আটশো"
900 | "নয়শো"

101 | "একশ এক"
111 | "একশ এগারো"
272 | "দুই শো বাহাত্তর"
387 | "তিনশো সাতাশি"
421 | "চারশো একুশ"
448 | "চারশো আটচল্লিশ"
569 | "পাঁচশো ঊনসত্তর"
625 | "ছয়শো পঁচিশ"
782 | "সাত শো বিরাশি"
895 | "আট শো পঁচানব্বই"
999 | "নয় শো নিরানব্বই"

1_000 | "এক হাজার"
2_000 | "দুই হাজার"
3_000 | "তিন হাজার"
4_000 | "চার হাজার"
5_000 | "পাঁচ হাজার"
11_000 | "এগারো হাজার"
12_000 | "বারো হাজার"
13_000 | "তেরো হাজার"
14_000 | "চৌদ্দ হাজার"
15_000 | "পনের হাজার"
21_000 | "একুশ হাজার"

7_634 | "সাত হাজার ছয় শো চৌত্রিশ"
24_190 | "চব্বিশ হাজার এক শোনব্বই"
99_999 | "নিরানব্বই হাজার নয় শো নিরানব্বই"

111_000 | "এক লাখ এগারো হাজার"
112_000 | "এক লাখ বারো হাজার"
113_000 | "এক লাখ তেরো হাজার"
115_000 | "এক লাখ পনেরো হাজার"
700_000 | "সাত লাখ"
653_000 | "ছয় লাখ তিপ্পান্ন হাজার"

123_454 | "এক লাখ তেইশ হাজার চার শো চুয়ান্ন"
999_999 | "নয় লাখ নিরানব্বই হাজার নয় শো নিরানব্বই"

1_000_000 | "এক মিলিয়ন"
2_000_000 | "দুই মিলিয়ন"
5_000_000 | "পাঁচ মিলিয়ন"
11_437_219 | "এক কোটি চৌদ্দ লাখ সাইত্রিশ হাজার দুই শো ঊনিশ"
21_437_219 | "দুই কোটি চৌদ্দ লাখ সাইত্রিশ হাজার দুই শো ঊনিশ"
22_437_219 | "দুই কোটি চব্বিশ লাখ সাইত্রিশ হাজার দুই শো ঊনিশ"
23_437_219 | "দুই কোটি চৌত্রিশ লাখ সাইত্রিশ হাজার দুই শো ঊনিশ"
100_000_000 | "দশ কোটি"
121_000_000 | "বারো কোটি দশ লাখ"
121_451_789 | "বারো কোটি চৌদ্দ লাখ একান্ন হাজার সাত শো ঊননব্বই"
123_456_789 | "বারো কোটি চৌত্রিশ লাখ ছাপ্পান্ন হাজার সাত শো ঊননব্বই"

1_000_000_000 | "এক বিলিয়ন"
2_141_123_731 | "দুইশো চৌদ্দ বিলিয়ন এগারো লাখ তেইশ হাজার সাত শো একত্রিশ"
Long.MAX_VALUE | "দুই বিলিয়ন একশ সাতচল্লিশ মিলিয়ন চারশত তিরিশ হাজার ছয়শ সাতচল্লিশ"
}

@Unroll
def "should convert long #value to '#words' in Bangla"() {
expect:
longConverter.asWords(value) == words

where:
value | words
5_000_000_000 | "পাঁচ বিলিয়ন"

1_000_000_000_000 | "এক ট্রিলিয়ন"
2_000_000_000_000 | "দুই ট্রিলিয়ন"
5_000_000_000_000 | "পাঁচ ট্রিলিয়ন"

1_000_000_000_000_000 | "এক কোয়াড্রিলিয়ন"
2_000_000_000_000_000 | "দুই কোয়াড্রিলিয়ন"
5_000_000_000_000_000 | "পাঁচ কোয়াড্রিলিয়ন"

1_000_000_000_000_000_000 | "দশ লক্ষের পঞ্চঘাত"
2_000_000_000_000_000_000 | "বিশ লক্ষের পঞ্চঘাত"
ronisarkarexe marked this conversation as resolved.
Show resolved Hide resolved
Long.MAX_VALUE | "নয় ট্রিলিয়ন দুইশত তেইশ বিলিয়ন তিনশত বাহাত্তর ট্রিলিয়ন ছত্রিশ বিলিয়ন আটশত পঞ্চাশ চার কোটি সাতশত পঁচাত্তর হাজার আটশত সাত"
}
}
Loading