diff --git a/num2words/lang_VI.py b/num2words/lang_VI.py index d30fca23..04c3a834 100644 --- a/num2words/lang_VI.py +++ b/num2words/lang_VI.py @@ -85,6 +85,11 @@ def vietnam_number(self, val): return ret def number_to_text(self, number): + # Negatives must not index to_19 from the end (e.g. -1 -> "mười chín"). + minus = u'' + if number < 0: + minus = u'âm ' + number = abs(number) number = '%.2f' % number the_list = str(number).split('.') start_word = self.vietnam_number(int(the_list[0])) @@ -92,7 +97,7 @@ def number_to_text(self, number): if len(the_list) > 1 and int(the_list[1]) > 0: end_word = self.vietnam_number(int(the_list[1])) final_result = final_result + ' phẩy ' + end_word - return final_result + return minus + final_result def to_cardinal(self, number): return self.number_to_text(number) diff --git a/tests/test_vi.py b/tests/test_vi.py index bba78ec6..bb1e71f8 100644 --- a/tests/test_vi.py +++ b/tests/test_vi.py @@ -137,3 +137,11 @@ def test_special_number(self): num2words(1000101017, lang="vi"), "một tỷ một trăm lẻ một nghìn lẻ mười bảy" ) + + def test_negative(self): + self.assertEqual(num2words(-1, lang="vi"), "âm một") + self.assertEqual(num2words(-19, lang="vi"), "âm mười chín") + self.assertEqual(num2words(-20, lang="vi"), "âm hai mươi") + self.assertEqual(num2words(-100, lang="vi"), "âm một trăm") + self.assertEqual(num2words(-1.5, lang="vi"), "âm một phẩy năm mươi") +