Formació autodidàctica en mòduls d'Enginyeria lingüística aplicada a la Traducció


Generació multilingüe de documents

Aquesta macro ens permet generar una nota telefònica en diverses llengües, afegint ergonomia en la tria dels continguts onomàstics.

Sub notaTelefonica()
'
' Macro enregistrada per Lluís de Yzaguirre i Maura
' Institut de Lingüística Aplicada
' Universitat "Pompeu Fabra"
'
interiorFarcimentNotaTelefonica (triaLlenguaNota())
End Sub

Sub notaTelefonicaCastella()
'
' Macro enregistrada per Lluís de Yzaguirre i Maura
' Institut de Lingüística Aplicada
' Universitat "Pompeu Fabra"
'
interiorFarcimentNotaTelefonica (2)
End Sub

Sub notaTelefonicaCatala()
'
' Macro enregistrada per Lluís de Yzaguirre i Maura
' Institut de Lingüística Aplicada
' Universitat "Pompeu Fabra"
'
interiorFarcimentNotaTelefonica (1)
End Sub

Function triaLlenguaNota()
nombre = 4
Dim llengues(12) As String ' cal que coincideixi amb la xifra precedent
llengues(1) = "Català"
llengues(2) = "Castellà"
llengues(3) = "Gallec"
llengues(4) = "Basc"
llengues(5) = "Àrab"
llengues(6) = "Portuguès"
llengues(7) = "Anglès UK"
llengues(8) = "Anglès US"
llengues(9) = "Francès"
llengues(10) = "Alemany"
llengues(11) = "Italià"
llengues(12) = "Romanès"

missatge$ = "Tria la llengua:"
For i = 1 To 2
    missatge$ = missatge$ + Chr(13) + Str(i) + " = " + llengues(i)
Next i

resposta2$ = InputBox(missatge$, "Generar nota")

triaLlenguaNota = Val(resposta2$)

End Function

Function generaMissatge$(llengua, idMissatge)
'
' Macro enregistrada per Lluís de Yzaguirre i Maura
' Institut de Lingüística Aplicada
' Universitat "Pompeu Fabra"
'
Select Case llengua
    Case 1
        Select Case idMissatge
            Case 0
                generaMissatge$ = "Trucada"
            Case 1
                generaMissatge$ = "Hora"
            Case 2
                generaMissatge$ = "Data"
            Case 3
                generaMissatge$ = "Per a"
            Case 4
                generaMissatge$ = "De"
            Case 5
                generaMissatge$ = "Encàrrec"
            Case 6
                generaMissatge$ = "Li tornarà a trucar"
            Case 7
                generaMissatge$ = "Li enviarà un correu"
            Case 8
                generaMissatge$ = "Li enviarà un SMS"
            Case 9
                generaMissatge$ = "Vindrà a veure'l"
            Case 10
                generaMissatge$ = "Demana que li truqui"
            Case 11
                generaMissatge$ = "Demana que li enviï un corr-el"
        End Select
    Case 2
        Select Case idMissatge
            Case 0
                generaMissatge$ = "Llamada"
            Case 1
                generaMissatge$ = "Hora"
            Case 2
                generaMissatge$ = "Fecha"
            Case 3
                generaMissatge$ = "Para"
            Case 4
                generaMissatge$ = "De"
            Case 5
                generaMissatge$ = "Encargo"
            Case 6
                generaMissatge$ = "Volverá a llamar"
            Case 7
                generaMissatge$ = "Enviará un correo"
            Case 8
                generaMissatge$ = "Enviará un SMS"
            Case 9
                generaMissatge$ = "Vendrá a verlo"
            Case 10
                generaMissatge$ = "Ruega que le llame"
            Case 11
                generaMissatge$ = "Ruega que le envie un correo electrónico"
        End Select
    Case 3
        generaMissatge$ = "llengua no implementada"
    Case 4
        generaMissatge$ = "llengua no implementada"
    Case Default
        generaMissatge$ = "llengua no implementada"
End Select
End Function

Sub interiorFarcimentNotaTelefonica(llengua)
' ---------------------------------- inicialitzem la llengua
If llengua > 2 Or llengua < 1 Then ' pleguem si no la tenim
    End
End If
Select Case llengua
    Case 1
        codiLlengua = wdCatalan
    Case 2
        codiLlengua = wdSpanishModernSort
    Case 3
        codiLlengua = wdGalician
    Case 4
        codiLlengua = wdBasque
    Case 5
        codiLlengua = wdArabicMorocco
    Case 6
        codiLlengua = wdPortuguese
    Case 7
        codiLlengua = wdEnglishUK
    Case 8
        codiLlengua = wdEnglishUS
    Case 9
        codiLlengua = wdFrench
    Case 10
        codiLlengua = wdGerman
    Case 11
        codiLlengua = wdItalian
    Case 12
        codiLlengua = wdRomanian
    Case Default
        End
End Select

' --------------------------------- demanem el nom de la persona trucada
nombrePersonal = 4
idPersonal = -1
Dim personal(4) As String ' cal que coincideixi amb la xifra precedent
personal(0) = "Teresa Cabré"
personal(1) = "Mercè Lorente"
personal(2) = "Carles Tebé"
personal(3) = "Núria Bel"
personal(4) = "Jaume Martí"

missatge$ = "Entra el nom del destinatari -a:"
For i = 0 To nombrePersonal
    missatge$ = missatge$ + Chr(13) + Chr(48 + i) + " = " + personal(i)
Next i

       resposta2$ = InputBox(missatge$, "Per a")

i = Asc(Mid$(resposta2$, 1, 1)) - 48
If ((i >= 0) And (i <= nombrePersonal)) Then
      resposta2$ = personal(i)
      idPersonal = i
End If
' --------------------------------- demanem el nom del client que truca
Dim clients(4) As String ' cal que coincideixi amb la xifra màxima de clients
If idPersonal = 0 Then
' llista de clients que truca per a personal=0
    nombreClients = 2
    clients(0) = "sa mare"
    clients(1) = "son pare"
    clients(2) = "sa tia"
ElseIf idPersonal = 1 Then
' llista de clients que truca per a personal=1
    nombreClients = 4
    clients(0) = "impremta"
    clients(1) = "copisteria"
    clients(2) = "missatgeria"
    clients(3) = "ETT"
    clients(4) = "càtering"
Else
' llista de clients per defecte
    nombreClients = 3
    clients(0) = "Groucho Marx"
    clients(1) = "John Lennon"
    clients(2) = "Joana d'Arc"
    clients(3) = "L'home del sac"
End If

missatge$ = "Entra el nom del comunicant:"
For i = 0 To nombreClients
    missatge$ = missatge$ + Chr(13) + Chr(48 + i) + " = " + clients(i)
Next i

resposta1$ = InputBox(missatge$, "De part de")

i = Asc(Mid$(resposta1$, 1, 1)) - 48
If ((i >= 0) And (i <= nombreClients)) Then
      resposta1$ = clients(i)
End If
' --------------------------------- demanem què vol
nombreOpcions = 5
Dim opcions(5) As String ' cal que coincideixi amb la xifra precedent
For i = 0 To nombreOpcions ' generem els missatges en català
    opcions(i) = generaMissatge$(1, i + 6)
Next i

missatge$ = "Entra l'encàrrec:"
For i = 0 To nombreOpcions
    missatge$ = missatge$ + Chr(13) + Chr(48 + i) + " = " + opcions(i)
Next i

       resposta3$ = InputBox(missatge$, "Diu que")

' --------------------------------- convertim el text
For i = 0 To nombreOpcions ' els recuperem en la llengua triada
    opcions(i) = generaMissatge$(llengua, i + 6)
Next i

' --------------------------------- complementem informacions
If resposta3$ = "4" Then
    resposta3$ = InputBox("Número de telèfon", "Número")
    If Len(resposta3$) > 0 Then
        resposta3$ = opcions(4) + " (" + resposta3$ + ")"
    End If
ElseIf resposta3$ = "5" Then
    resposta3$ = InputBox("Adreça electrònica", "Adr-el")
    If Len(resposta3$) > 0 Then
        resposta3$ = opcions(5) + " (" + resposta3$ + ")"
    End If
Else
    i = Asc(Mid$(resposta3$, 1, 1)) - 48
    If ((i >= 0) And (i <= nombreOpcions)) Then
        resposta3$ = opcions(i)
    End If
End If

' --------------------------------- generem el text

    Selection.ParagraphFormat.TabStops.ClearAll
    ActiveDocument.DefaultTabStop = CentimetersToPoints(1.25)
    Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(3), _
        Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
    Selection.TypeText Text:=generaMissatge$(llengua, 0)
    Selection.TypeParagraph
    Selection.TypeText Text:=generaMissatge$(llengua, 1) + ":" & vbTab
    Selection.InsertDateTime DateTimeFormat:="HH:mm", InsertAsField:=False, _
        DateLanguage:=codiLlengua, CalendarType:=wdCalendarWestern, _
        InsertAsFullWidth:=False
    Selection.TypeParagraph
    Selection.TypeText Text:=generaMissatge$(llengua, 2) + ":" & vbTab
    Selection.InsertDateTime DateTimeFormat:="d' / 'MMMM' / 'yyyy", _
        InsertAsField:=False, DateLanguage:=codiLlengua, CalendarType:= _
        wdCalendarWestern, InsertAsFullWidth:=False
    Selection.TypeParagraph
    Selection.TypeText Text:=generaMissatge$(llengua, 3) + ":" & vbTab & resposta2$
    Selection.TypeParagraph
    Selection.TypeText Text:=generaMissatge$(llengua, 4) + ":" & vbTab & resposta1$
    Selection.TypeParagraph
    Selection.TypeText Text:=generaMissatge$(llengua, 5) + ":" & vbTab & resposta3$

'--------------------------------------------- generem un marc exterior
    Selection.WholeStory
    With Selection.ParagraphFormat
        With .Borders(wdBorderLeft)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth050pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderRight)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth050pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderTop)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth050pt
            .Color = wdColorAutomatic
        End With
        With .Borders(wdBorderBottom)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth050pt
            .Color = wdColorAutomatic
        End With
        .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
        With .Borders
            .DistanceFromTop = 1
            .DistanceFromLeft = 4
            .DistanceFromBottom = 1
            .DistanceFromRight = 4
            .Shadow = True
        End With
    End With
    With Options
        .DefaultBorderLineStyle = wdLineStyleSingle
        .DefaultBorderLineWidth = wdLineWidth050pt
        .DefaultBorderColor = wdColorAutomatic
    End With

    Selection.MoveRight Unit:=wdCharacter, Count:=1
' si activem la línia següent el document s'imprimirà a la impress. x defecte
'    ActiveDocument.PrintOut

End Sub


Per qualsevol problema amb aquesta pàgina, contacteu "de_yza@upf.es"