~anybox/aeroo/openerp6

« back to all changes in this revision

Viewing changes to report_aeroo/ctt_languages/lt_LT/__init__.py

  • Committer: root
  • Date: 2013-05-16 15:46:46 UTC
  • Revision ID: root@erp.kndati.lv-20130516154646-5lesr8tyzl1vdc0k
1.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
# -*- coding: utf8 -*-
 
3
# lt_LT
 
4
################################################################################
 
5
#
 
6
# Lithuanian language support assembled from contributions provided by:
 
7
# Paulius Sladkevičius
 
8
#
 
9
################################################################################
 
10
 
 
11
from report_aeroo.ctt_objects import ctt_language
 
12
 
 
13
class lt_LT(ctt_language):
 
14
    def _init_lang(self):
 
15
        self.name = 'lt_LT'
 
16
        # digits - masculine, singular
 
17
        self.number_sng_msc = [u'nulis', u'vienas', u'du', u'trys', u'keturi',
 
18
                               u'penkti', u'šeši', u'septyni', u'aštuoni',
 
19
                               u'devyni']
 
20
        # tens - masculine, singular
 
21
        self.tens_sng_msc = [u'nulis', u'vienas', u'dvi', u'tris',
 
22
                               u'keturias', u'penkias', u'šešias', u'septynias',
 
23
                               u'aštuonias', u'devynias']
 
24
        # teens - masculine
 
25
        self.teens = [u'dešimt', u'vienuolika', u'dvylika', u'trylika',
 
26
                      u'keturiolika', u'penkiolika', u'šešiolika',
 
27
                      u'septyniolika', u'aštuonolika', u'devyniolika']
 
28
        # multiplier - masculine, singular
 
29
        self.multi_sng_msc = [u' šimtas', u' tūkstantis', u' milijonas',
 
30
                              u' milijardas']
 
31
        # multiplier - masculine, plural
 
32
        self.multi_plr_msc = [u' šimtai', u' tūkstančiai', u' milijonai',
 
33
                              u' milijardai']
 
34
        # multiplier - masculine, plural (other form)
 
35
        self.multi_plr_msc_2 = [u' šimtų', u' tūkstančių', u' milijonų',
 
36
                              u' milijardų']
 
37
        
 
38
        # next line is needed for correct loading of currencies 
 
39
        import currencies
 
40
        return currencies
 
41
 
 
42
 
 
43
    def wordify(self, chunk, chunknr, gender):
 
44
        if gender == 'm':
 
45
            number = self.number_sng_msc
 
46
        elif gender == 'f':
 
47
            number = self.number_sng_fem
 
48
        elif gender == 'n':
 
49
            number = self.number_sng_neu
 
50
        words = u''
 
51
        digit1 = u''
 
52
        digit2 = u''
 
53
        digit3 = u''
 
54
        chunklength = len(chunk)
 
55
        # placing digits in right places
 
56
        if chunklength == 1:
 
57
            digit3 = chunk[0 : 1]
 
58
        if chunklength == 2:
 
59
            digit2 = chunk[0 : 1]
 
60
            digit3 = chunk[1 : 2]
 
61
        if chunklength == 3:
 
62
            digit1 = chunk[0 : 1]
 
63
            digit2 = chunk[1 : 2]
 
64
            digit3 = chunk[-1]
 
65
        # processing zero
 
66
        if chunklength == 1 and digit3  == '0' :
 
67
            return number[0]
 
68
        # processing hundreds
 
69
        if chunklength == 3 :
 
70
            if digit1 == '1' :
 
71
                words += self.multi_sng_msc[0]
 
72
            else :
 
73
                if int(digit1) > 1 : words += number[int(digit1)] + \
 
74
                                                 self.multi_plr_msc[0]
 
75
        # processing tens
 
76
        if chunklength > 1:
 
77
            spacer = ''
 
78
            if len(words) > 0 : spacer = ' '
 
79
            if digit2 == '1':
 
80
                words += spacer + self.number_teens[int(digit3)]
 
81
            else:
 
82
                if int(digit2) > 1 and int(digit2) > 0:
 
83
                    words += spacer + self.tens_sng_msc[int(digit2)] + u'dešimt'
 
84
 
 
85
        # processing ones
 
86
        if chunklength > 0 and digit2 != '1' :
 
87
            spacer = ''
 
88
            if len(words) > 0: spacer = u' '
 
89
            if int(digit3) > 0:
 
90
                words += spacer + number[int(digit3)]
 
91
        # end processing
 
92
        if len(words) > 0 :
 
93
            if digit3 == '1' and chunknr > 0:
 
94
                return words + self.multi_sng_msc[chunknr]
 
95
            elif digit3 != '1' and chunknr > 0:
 
96
                if chunklength >= 2 and ((int(chunk) % 10) == 0 or (digit2 == \
 
97
                                                     '1' and int(digit3) > 0)):
 
98
                    return words + multi_plr_msc_2[chunknr]
 
99
                else:
 
100
                    return words + multi_plr_msc[chunknr]
 
101
 
 
102
            else:
 
103
                return words
 
104
        else:
 
105
            return ''
 
106
 
 
107
lt_LT()