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 5 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
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ With Tradukisto, you can now transform numbers into their word equivalents easy
* 🇷🇸 Serbian (Latin)
* 🇷🇸 Serbian (Cyrillic)
* 🇹🇷 Turkish
* 🇧🇩 Bangla

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,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 @@ -45,7 +46,8 @@ public enum MoneyConverters {
SERBIAN_CYRILLIC_BANKING_MONEY_VALUE(serbianCyrillicContainer().getBankingMoneyConverter()),
FRENCH_BANKING_MONEY_VALUE(frenchContainer().getBankingMoneyConverter()),
BULGARIAN_BANKING_MONEY_VALUE(bulgarianContainer().getBankingMoneyConverter()),
DUTCH_BANKING_MONEY_VALUE(dutchContainer().getBankingMoneyConverter());
DUTCH_BANKING_MONEY_VALUE(dutchContainer().getBankingMoneyConverter()),
BANGLA_BANKING_MONEY_VALUE(banglaContainer().getBankingMoneyConverter());

Copy link
Collaborator

Choose a reason for hiding this comment

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

Please add your language also to the ValueConverters and LongConvertrs files

private final BigDecimalToStringConverter converter;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,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 @@ -262,4 +263,8 @@ public LongToStringConverter getLongConverter() {
public BigDecimalToStringConverter getBankingMoneyConverter() {
return bigDecimalConverter;
}

public static Container banglaContainer() {
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 @@ -21,6 +21,7 @@ import static pl.allegro.finance.tradukisto.MoneyConverters.SLOVAK_BANKING_MONEY
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 @@ -49,6 +50,7 @@ class MoneyConvertersTest extends Specification {
"Russian" | RUSSIAN_BANKING_MONEY_VALUE || "одна тысяча двести тридцать четыре руб. 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 || "এক হাজার দুইশত চৌত্রিশ ৳ ৫৬/১০০"
}

def "should throw exception when null given"() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import static pl.allegro.finance.tradukisto.ValueConverters.SLOVAK_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 @@ -49,6 +50,7 @@ class ValueConvertersTest extends Specification {
"Russian" | RUSSIAN_INTEGER || "одна тысяча двести тридцать четыре"
"Turkish" | TURKISH_INTEGER || "Bin İki Yüz Otuz Dört"
"Ukrainian" | UKRAINIAN_INTEGER || "одна тисяча двісті тридцять чотири"
"Bangla" | BANGLA_INTEGER || "এক হাজার দুইশত চৌত্রিশ"
}

def "should throw exception when null value given"() {
Expand Down Expand Up @@ -91,6 +93,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
}

def "should return supplied default converter when locale is unknown"() {
Expand Down Expand Up @@ -136,6 +139,7 @@ class ValueConvertersTest extends Specification {
"sk" || SLOVAK_INTEGER
"tr" || TURKISH_INTEGER
"uk" || UKRAINIAN_INTEGER
"bd" || BANGLA_INTEGER
}

def "should return supplied default converter when languageCode is unknown"() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
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 | "একশো বাইশ কোটি তিনচল্লিশ লাখ পঁচাত্তর হাজার নব্বই"
ronisarkarexe marked this conversation as resolved.
Show resolved Hide resolved

1_000_000_000 | "এক বিলিয়ন"
2_141_123_731 | "একুশ বিলিয়ন চার কোটি এগারো লাখ তেইশ হাজার সাত শো একত্রিশ"
ronisarkarexe marked this conversation as resolved.
Show resolved Hide resolved
}

@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
}
}