Changeset 1653


Ignore:
Timestamp:
May 23, 2016, 1:30:59 PM (3 years ago)
Author:
Juanma
Message:

WIP Pyromaths i18n

Location:
pyromaths/trunk/fuentes/src/pyromaths/ex/sixiemes
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • pyromaths/trunk/fuentes/src/pyromaths/ex/sixiemes/__init__.py

    r423 r1653  
    2121# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
    2222#
    23 description = u'6.Sixième'
     23description = _(u'6.Sixième')
    2424level = description
  • pyromaths/trunk/fuentes/src/pyromaths/ex/sixiemes/aires.py

    r1637 r1653  
    240240    return(exo, cor)
    241241
    242 aires.description = u'Aires et quadrillage'
     242aires.description = _(u'Aires et quadrillage')
  • pyromaths/trunk/fuentes/src/pyromaths/ex/sixiemes/angles.py

    r1637 r1653  
    255255    return (exo, cor)
    256256
    257 MesureAngles.description = u'Mesurer des angles'
     257MesureAngles.description = _(u'Mesurer des angles')
    258258
    259259class ConstruireZigZag(ex.TexExercise):
  • pyromaths/trunk/fuentes/src/pyromaths/ex/sixiemes/decimaux.py

    r1637 r1653  
    2323
    2424import random
     25import os
    2526from pyromaths.outils import Affichage, Arithmetique
    2627#===============================================================================
     
    161162    return result
    162163
     164def NombreEnLettres_es(n):
     165    unite = {
     166        1: 'uno',
     167        2: 'dos',
     168        3: 'tres',
     169        4: 'cuatro',
     170        5: 'cinco',
     171        6: 'seis',
     172        7: 'siete',
     173        8: 'ocho',
     174        9: 'nueve',
     175        10: 'diez',
     176        11: 'once',
     177        12: 'doce',
     178        13: 'trece',
     179        14: 'catorce',
     180        15: 'quince',
     181        16: u'dieciséis',
     182        17: 'diecisiete',
     183        18: 'dieciocho',
     184        19: 'diecinueve',
     185        20: 'veinte',
     186        21: 'veintiun',             #Está bien así, NO CORREGIR
     187        22: u'veintidós',
     188        23: u'veintitrés',
     189        24: 'veinticuatro',
     190        25: 'veinticinco',
     191        26: u'veintiséis',
     192        27: 'veintisiete',
     193        28: 'veintiocho',
     194        29: 'veintinueve',
     195        }
     196    dizaineE = {3: 'treinta', 4: 'cuarenta', 5: 'cincuenta',
     197                6: 'sesenta', 7: 'setenta', 8: 'ochenta', 9: 'noventa'}
     198    coefs = {0: 'cien', 1: 'mil', 2: 'mill', 3:'mil'}
     199    coefc = {0: 'un', 1: 'ciento', 2: 'dosci', 3: 'tresci', 4:'cuatroci', 5:'quini',
     200                6: 'seisci', 7: 'seteci', 8: 'ochoci', 9: 'noveci'}
     201    result = ""
     202   
     203    #Cas particulier de zéro
     204    if n == 0:
     205        result = u'cero'
     206    else:
     207        coef = 0
     208
     209        while n > 0:
     210
     211        # Récupération de l'unité du bloc de trois chiffres en cours
     212
     213            u = n % 10
     214            n = n // 10
     215
     216        # Récupération de la dizaine du bloc de trois chiffres en cours
     217
     218            d = n % 10
     219            n = n // 10
     220        # Traitement des dizaines
     221
     222            temp = ""
     223
     224        # Passage sur la dizaine inférieure pour 10 à 19
     225        # et pour 70-79 90-99 dans le cas de la France
     226
     227            if d == 1:                  # Escribe los nº del 10 al 19 de la tabla
     228                d = d - 1
     229                u = u + 10
     230            if d == 2:                  # Escribe los nº del 20 al 21 de la tabla
     231                d = d - 1
     232                u = u + 20
     233            if d > 2:
     234
     235            # Ajout du cas particulier de 'et' entre la dizaine et 1
     236
     237                    if n:               # Escribe el resto del 30 al 99
     238                        temp = ' ' + dizaineE[d]    # Añade espacio si es > 100
     239                    else:
     240                        temp = dizaineE[d]
     241
     242        # ajout du texte de l'unité
     243
     244            if u > 0 and d > 2:                         # Añade "y" de los nº entre 30 a 99
     245                if u == 1 and coef > 0:                 # Usa "un" en lugar de "uno"
     246                    temp = temp + ' y ' + coefc[0]
     247                else:
     248                    temp = temp + ' y ' + unite[u]
     249            elif u > 0 and n:                           # Añade espacio si es > 100
     250                if u == 21 and coef == 0: # Usa "veintiuno" en lugar de "veintiun" si <1000
     251                    temp = temp + ' ' + unite[u] + 'o'
     252                elif u == 1 and (coef > 0 and coef < 4):    # Usa "un" en lugar de "uno"
     253                    if coef == 3:
     254                        temp = temp                         # Usa "mil millones" en lugar de "un mil"
     255                    else:
     256                        temp = ' ' + coefc[0]
     257                else:
     258                    temp = temp + ' ' + unite[u]
     259            elif u == 21 and d == 1 and coef == 0:  # Usa "veintiuno" cuando es 21
     260                temp = unite[u] + 'o'
     261            elif u == 1 and d == 0 and coef > 0:  # Usa "un" son numeros > 1000
     262                temp = coefc[0]
     263            elif u > 0:
     264                temp = unite[u]
     265
     266            result = temp + result
     267
     268
     269        # Récupération de la centaine du bloc de trois chiffres en cours
     270
     271            c = n % 10
     272            n = n // 10
     273            if c > 0:
     274                temp = ""
     275                if c == 1 and not d and not u:  # Usa "cien" en lugar de "un cien"
     276                    temp = coefs[0]
     277                elif c == 1:                      # Usa "ciento" para >100
     278                    temp = coefc[1]
     279                else:                           # Compone los nº > 200
     280                    temp = coefc[c] + 'entos'
     281
     282        # Traitement du cas particulier du 's' à cent si rien ne suit
     283
     284                if n > 0 :                      # Añade espacio si es > 1000
     285                    result = ' ' + temp + result
     286                else:
     287                    result = temp + result
     288
     289        # Traitement du prochain groupe de 3 chiffres
     290
     291            if n > 0:
     292                coef = coef + 1
     293                i = n % 1000
     294
     295          # Traitement du cas particulier 'mille' ( non pas 'un mille' )
     296
     297                if coef == 1 and i==1:        # No añade espacio en "mil"
     298                    n = n - 1
     299                    if n == 0:
     300                        result = coefs[coef] + result
     301                    else:
     302                        result = ' ' + coefs[coef] + result
     303                elif coef == 2:      # Usa "millones" en lugar de "millón"
     304                    if i == 1 and n == 1:
     305                        result = ' ' + coefs[coef] + u'ón' + result
     306                    else:
     307                        result = ' ' + coefs[coef] + 'ones' + result
     308                elif i == 1 and coef == 3:      # No añade espacio en "mil millones"
     309                    result = coefs[coef] + result
     310                elif i > 0:
     311                    result = ' ' + coefs[coef] + result
     312
     313    return result
     314
     315
     316
    163317def nombreATrouver():
    164318    """a contient la liste des nombres à créer où il peut ne pas y avoir de
     
    212366    return txt
    213367
    214 def EcritEnChiffre(exo, cor):
     368def EcritNombreDecimal_es(n):
     369    txt = ""
     370    if n != int(n):
     371        #n n'est pas un nombre entier
     372        (e, d) = str(n).split('.')
     373        (e, d) = (int(e), int(d))
     374    else:
     375        (e, d) = (int(n), 0)
     376    if not d:
     377        txt = NombreEnLettres_es(e)
     378    elif e:
     379        txt = NombreEnLettres_es(e)
     380    if d:
     381        partieDec = [u" décima", u" centésima", u" milésima"]
     382        if e == 1:
     383            txt = txt + u' unidad con '
     384        if e > 1:
     385            txt = txt + u' unidades con '
     386        txt = txt + NombreEnLettres_es(d) + partieDec[len(str(n).split('.')[1]) -
     387                1]
     388        if d > 1:
     389            txt = txt + 's'
     390        txt = txt.replace("uno", "una")     # Cambio a femenino para decimales
     391        txt = txt.replace("un ", "una ")    # Cambio a femenino para decimales
     392        txt = txt.replace("tos", "tas")    # Cambio a femenino para decimales
     393    return txt
     394
     395
     396
     397def EcritEnChiffre(exo, cor,lang=""):
    215398    lnb = nombreATrouver()
    216399    for i in range(len(lnb)):
    217         exo.append("\\item " + EcritNombreDecimal(lnb[i]) +
     400        exo.append("\\item " + eval('EcritNombreDecimal'+lang+'(lnb[i])') +
    218401                 " : \\dotfill")
    219         cor.append("\\item " + EcritNombreDecimal(lnb[i]) + " : ")
     402        cor.append("\\item " + eval('EcritNombreDecimal'+lang+'(lnb[i])') +
     403                   " : ")
    220404        cor.append(Affichage.decimaux(lnb[i], 0) + '')
    221405
    222406
    223 def EcritEnLettre(exo, cor):
     407def EcritEnLettre(exo, cor,lang=""):
    224408    lnb = nombreATrouver()
    225409    for i in range(8):
     
    228412        cor.append("\\item " + Affichage.decimaux(lnb[i], 0) +
    229413                " : ")
    230         cor.append(EcritNombreDecimal(lnb[i]) + '')
     414        cor.append(eval('EcritNombreDecimal'+lang+'(lnb[i])') + '')
    231415
    232416
    233417def EcrireNombreLettre():
     418
     419    langue = os.getenv('LANG')
     420
     421    if langue == "fr" or langue == "":
     422        lang = ""
     423    else:
     424        lang = "_" + langue[0:2]
     425        try:
     426            eval('EcritNombreDecimal'+lang+'(1)')
     427        except NameError:
     428            lang = ""
     429
     430
    234431    exo = ["\\exercice", "\\begin{enumerate}",
    235432            _(u'\\item Écrire en chiffres les nombres suivants.'),
     
    239436            '\\begin{enumerate}']
    240437
    241     EcritEnChiffre(exo, cor)
     438    EcritEnChiffre(exo, cor,lang)
    242439
    243440    exo.append('\\end{enumerate}')
     
    248445    cor.append('\\begin{enumerate}')
    249446
    250     EcritEnLettre(exo, cor)
     447    EcritEnLettre(exo, cor,lang)
    251448
    252449    exo.append('\\end{enumerate}')
     
    256453    return (exo, cor)
    257454
    258 EcrireNombreLettre.description = u'Écrire un nombre décimal'
     455EcrireNombreLettre.description = _(u'Écrire un nombre décimal')
     456
     457def NombreEnLettres_ca(n):
     458    unite = {1: 'un',2: 'dos',3: 'tres',4: 'quatre',5: 'cinc',6: 'sis',7: 'set',
     459             8: 'huit',9: 'nou',10: 'deu',11: 'onze',12: 'dotze',13: 'tretze',
     460             14: 'catorze',15: 'quinze',16: 'setze',17: u'dèsset',18: 'dihuit',19: u'dènou'}
     461
     462    dizaineE = {2:'vint',3: 'trenta', 4: 'quaranta', 5: 'cinquanta',
     463                6: 'seixanta', 7: 'setanta', 8: 'huitanta', 9: 'noranta'}
     464
     465    suffix_num = {0:[ ['',''] , [u'milió','milions'] , [u'bilió','bilions'] ],1:'mil'}
     466
     467    result = ""
     468    loops = 0
     469  # Cas particulier de zéro
     470    if n == 0:
     471        result = u'zero'
     472    else:
     473        while n > 0 :
     474
     475            c = n % 1000 // 100
     476            d = n % 100 // 10
     477            u = n % 10
     478            n = n // 1000
     479            aux_dec = ( d * 10 ) + u
     480            aux_string = ''
     481            aux_centesima = c*100+d*10+u
     482            if c == 1 :
     483                aux_string = 'cent'
     484            elif c > 1:
     485                aux_string = unite[c] + '-cents'
     486
     487            if aux_dec > 0 :
     488                if aux_dec < 20:
     489                    if not (aux_dec == 1 and (loops % 2) == 1):
     490                        aux_string += ' ' + unite[aux_dec]
     491                else:
     492                    aux_string += ' ' + dizaineE[d]
     493                    if u != 0:
     494                        if d == 2:
     495                            aux_string += '-i'
     496                        aux_string += '-' + unite[u]
     497            if aux_centesima != 0:
     498                if ( loops % 2 ) == 0:
     499
     500                    if aux_centesima > 1:
     501                        aux_string += ' ' + suffix_num[0][loops//2][1]
     502                    else:
     503                        aux_string += ' ' + suffix_num[1]
     504
     505            result = aux_string.strip() + ' ' + result
     506            loops += 1
     507    return result
     508
     509def EcritNombreDecimal_ca(n):
     510    txt = ""
     511    if n != int(n):
     512        #n n'est pas un nombre entier
     513        (e, d) = str(n).split('.')
     514        (e, d) = (int(e), int(d))
     515    else:
     516        (e, d) = (int(n), 0)
     517    if not d:
     518        txt = NombreEnLettres_ca(e)
     519    elif e:
     520        txt = NombreEnLettres_ca(e)
     521    if d:
     522        partieDec = [u"dècima", u"centèsima", u"mil·lèsima"]
     523        if e == 1:
     524            txt = txt + u'unitat amb '
     525        if e > 1:
     526            txt = txt + u'unitats amb '
     527        txt = txt + NombreEnLettres_ca(d) + partieDec[len(str(n).split('.')[1]) - 1]
     528        if d > 1:
     529            txt = txt[:len(txt)-1] + 'es'
     530        #txt = txt.replace("un", "una")     # Cambio a femenino para decimales
     531        txt = txt.replace("-un ", "-una ")    # Cambio a femenino para decimales
     532        txt = txt.replace("un ", "una ")    # Cambio a femenino para decimales
     533        txt = txt.replace("cents", "centes")    # Cambio a femenino para decimales
     534    return txt
     535
    259536
    260537
     
    358635    return (exo, cor)
    359636
    360 tex_units.description = u'Conversions unités'
     637tex_units.description = _(u'Conversions unités')
    361638
    362639
     
    655932    return (exo, cor)
    656933
    657 EcritureFractionnaire.description = u'Écriture fractionnaire ou décimale'
     934EcritureFractionnaire.description = _(u'Écriture fractionnaire ou décimale')
    658935
    659936
     
    720997    return (exo, cor)
    721998
    722 Decomposition.description = u'Décomposition de décimaux'
     999Decomposition.description = _(u'Décomposition de décimaux')
    7231000
    7241001
  • pyromaths/trunk/fuentes/src/pyromaths/ex/sixiemes/droites.py

    r1637 r1653  
    217217    return (exo, cor)
    218218
    219 Droites.description = u'Droites, demi-droites, segments'
     219Droites.description = _(u'Droites, demi-droites, segments')
    220220
    221221
     
    328328    return (exo, cor)
    329329
    330 Perpendiculaires.description = u'Droites perpendiculaires et parallèles'
     330Perpendiculaires.description = _(u'Droites perpendiculaires et parallèles')
    331331
    332332
     
    656656    return (exo, cor)
    657657
    658 Proprietes.description = u'Propriétés sur les droites'
     658Proprietes.description = _(u'Propriétés sur les droites')
  • pyromaths/trunk/fuentes/src/pyromaths/ex/sixiemes/espace.py

    r1637 r1653  
    248248    return (exo, cor)
    249249
    250 espace.description = u'Représentation dans l\'espace'
     250espace.description = _(u'Représentation dans l\'espace')
  • pyromaths/trunk/fuentes/src/pyromaths/ex/sixiemes/fractions.py

    r1637 r1653  
    188188    return (exo, cor)
    189189
    190 FractionPartage.description = u'Fractions partage'
     190FractionPartage.description = _(u'Fractions partage')
    191191
    192192
  • pyromaths/trunk/fuentes/src/pyromaths/ex/sixiemes/operations.py

    r1637 r1653  
    294294    return (exo, cor)
    295295
    296 Operations.description = u'Poser des opérations (sauf divisions)'
     296Operations.description = _(u'Poser des opérations (sauf divisions)')
    297297
    298298
     
    370370    return (exo, cor)
    371371
    372 CalculMental.description = u'Calcul mental'
     372CalculMental.description = _(u'Calcul mental')
    373373
    374374
     
    470470    return (exo, cor)
    471471
    472 ProduitPuissanceDix.description = u'Produits, quotients par 10, 100, 1000'
     472ProduitPuissanceDix.description = _(u'Produits, quotients par 10, 100, 1000')
  • pyromaths/trunk/fuentes/src/pyromaths/ex/sixiemes/symetrie.py

    r1637 r1653  
    108108    return (exo, cor)
    109109
    110 SymetrieQuadrillage.description = u'Symétrie et quadrillages'
     110SymetrieQuadrillage.description = _(u'Symétrie et quadrillages')
Note: See TracChangeset for help on using the changeset viewer.