Re: [AsteriskBrasil] Patch para adaptação ao idioma PT-BR (somente Asterisk 1.2.7.1)

Celso Fassoni celso.fassoni em gmail.com
Quarta Abril 26 21:37:12 BRT 2006


Caio, está parecendo que se trata do VoiceMail, correto? Neste caso,
verifique o timezone no voicemail.conf.

Fiz uma atualização do README.lang_br com a descrição das aplicações e
formatos suportados. De uma olhada no anexo.

Diga-nos os resultados!!

Obrigado,

Celso Fassoni


Em 26/04/06, Caio Begotti<caio em ueberalles.net> escreveu:
> On Wednesday 26 April 2006 18:39, Caio Begotti wrote:
> > Ele tá tentando tocar o digits/at e o digits/pt-as um seguido do outro.
>
> Outro problema (por enquanto só reports, nada de patch para o patch hehe):
>
> -- Playing 'digits/6' (language 'br')
> -- Playing 'digits/pt-da' (language 'br')
> -- Playing 'digits/night' (language 'br')
> -- Playing 'digits/20' (language 'br')
> -- Playing 'digits/pt-e' (language 'br')
> -- Playing 'digits/7' (language 'br')
> -- Playing 'digits/minutes' (language 'br')
> -- Playing 'digits/pt-da' (language 'br')
> -- Playing 'digits/night' (language 'br')
>
> Ele ta falando: 6 da noite 20 e 7 minutos da noite
> Deveria ser: 6 horas e 20 e 7 minutos da noite
>
> Falou!
>
> --
> caio[1982] begotti
> http://caio.ueberalles.net
> _______________________________________________
> LIsta de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>
> _______________________________________________
> Acesse o  wiki AsteriskBrasil.org:
> http://www.asteriskbrasil.org
>
-------------- Próxima Parte ----------
ABSTRACT
========

The Portuguese Language spoken in some countries like Portugal and Brazil needs
some adaptations in the code in order to make the pronunciation be grammatically
correct. 

These README is to Brazilian users who want to have their Asterisk working 
in their native language and teachs how to apply a patch in the source code in
order to implement those adaptations. The instructions will be available only
in Portuguese.


DISCLAIMER
==========
The author disclaims responsability in the code or its usage. All the credits go
to Asterisk community world wide and the source code is licensed under GPL.
The implementation is totally EXPERIMENTAL. Use it with caution!


INSTRU??ES
==========

O seguinte trabalho foi feito com base no c?digo existente para v?rios idiomas
tais como o pr?prio Portugues de Portugal (language=pt), Espanhol e Frances.

Os arquivos alterados s?o:

<asterisk src root>/say.c
<asterisk src root>/apps/app_voicemail.c

ATEN??O: A vers?o compat?vel no momento ? 1.2.7.1
Nenhuma anterior ou posterior foi testada e poder? ocorrer problemas se tentado

1) Instale o c?digo fonte do Asterisk no diret?rio de prefer?ncia (p.ex. /usr/src)

# cd /usr/src
# wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.7.1.tar.gz
# tar xzvf asterisk-1.2.7.1.tar.gz
# cd asterisk-1.2.7.1

2) Aplique o patch

# patch -p0 < /path/to/the/patch/lang_br_asterisk-1.2.7.1.patch

N?o dever? ser mostrada qualquer mensagem de erro se tudo ocorreu bem. Caso
contr?rio, aborte e verifique.

3) Compile e instale

# make
# make install


APLICA??ES
==========

- SayNumber
----------------------------------------------------------------------------------
Fala um n?mero (exemplo "dois mil, duzentos e trinta e sete"). 

Sintaxe
 SayNumber(numero[,genero]) 

Fala um n?mero no idioma escolhido (padr?o em Ingl?s).
Aceita somente inteiros entre 0 e 999,999,999, positivos ou negativos.

'genero' pode ser:
"f" feminino

Descri??o 
 Alterando o par?metro ou vari?vel 'language' afeta a maneira de como os n?meros
 s?o pronunciados de acordo com o idioma.  Por exemplo, 92 usando "language=en"
 (arquivos "90" seguido do "2" do diret?rio "sounds/digits" padr?o) n?o usar?
 os mesmos prompts do que 92 em "br" (arquivos "90", "pt-e" seguido do "2" do 
 diret?rio "sounds/digits/br" espec?fico para o idioma "br"). Esta caracter?stica
 est? codificada internamente no software para v?rios idiomas. 

Examplos (language=br)
   SayNumber(123)  ; Fala "cento e vinte e tres" (100E + 20 + pt-e + 3)
   SayNumber(389,f); Fala "trezentas e oitenta e nove" (300F + pt-e + 80 + pt-e + 9)
   SayNumber(-25);   Fala "menos vinte e cinco" (minus + 20 + pt-e + 5)
   
Veja tamb?m
 Lista de prompts para o idioma Portugues do Brasil ao final deste documento


- SayUnixTime
----------------------------------------------------------------------------------
Fala a data e/ou hora para o originador de acordo com o formato especificado. 

Sintaxe
   SayUnixTime(unixtime,timezone,format) 

Descri??o 
 Utiliza alguns arquivos de ?udio armazenados em /var/lib/asterisk/sounds/digits
 para construir a frase, falando a data e/ou hora num formato espec?fico.
 
 SayUnixTime ? compat?vel com v?rios idiomasa. Ele pronunciar? a data e hora
 de acordo com o 'language' configurado no canal ou substitu?do pelo comando
 SetLanugage. Neste descritivo foi ilustrado com o language=br.

 'unixtime' ? a data/hora a ser pronunciada, representada como um timestamp padr?o
            do unix (numero de segundos desde 00:00:00 de 1/Jan/1970 UTC).
            Se o par?metro for omitido, a data/hora corrente do sistema ? utilizada. 

 'timezone' especifica o fuso hor?rio correspondente a data/hora especificada por
            unixtime. Se o par?metro for omitido. ser? utilizado o valor padr?o
            do sistema. Consulte seu /usr/share/zoneinfo para uma lista de fusos
            v?lidos no sistema, por exemplo "Pacific/Samoa".

 'format' ? um sequencia de caracteres que determina a maneira de como o hor?rio
          ser? pronunciado. Ele utiliza um formato baseado na chamada do sistema
          strftime(3), se voc? for familizarizado com tal fun??o. Se omitido, o
          padr?o ser?: 

          ABdY 'digits/at' IMp 

          Que resulta numa frase como: "Segunda-feira Janeiro vinte e um dois mil
          e tres as sete cinquenta e dois minutos da noite". Note que 'digits/at'
          refere-se ao audio em /var/lib/asterisk/sounds/digits/br/at.gsm, ou seja,
          ? um caminho relativo ao arquivo de ?udio. 

          Codigos para o formato:
          
  'filename'    arquivo de audio a ser emitido. O ap?strofo ' ? requerido. 
  A ou a        Dia da semana (domingo, segunda-feira, ... s?bado) 
  B, b ou h     Mes (Janeiro, Fevereiro,... Dezembro) 
  d ou e        Dia do mes (um, dois, ... trinta e um) 
  Y             Ano (sempre com milhar: dois mil e seis)
  I             Hora no formato de 12h, precedido das preposi??es "a", "ao" ou "as"
                (00:00 - a meia-noite, 12:00 - ao meio-dia, 02:00 - as duas da tarde ou manha)
  l             Hora no formato de 12h, sem preceder com preposi??es
                (00:00 - meia-noite, 12:00 - meio-dia, 02:00 - duas da tarde ou manha)
  H             Hora no formato 24h (zero hora, uma hora, duas... vinte e tres horas) 
  k             Hora no formato 24h, omitindo-se "hora"/"horas" (zero, uma... vinte e tres) 
  M             Minutos (zero minuto, um minuto, ... cinquenta e nove minutos) 
  m             Mes em formato numerico (um, dois,... doze) 
  P ou p        Per?odo da hora (at? as 12:00 "da manha", entre 12:00 e
                18:00 "da tarde" e ap?s 18:00 "da noite")
  Q             "Hoje", "Ontem" ou ABdY 
  q             "Ontem", dia da semana ou ABdY (omite o "hoje")
  R             Hora e minutos no formato 24h (ex., quatorze horas e um minuto)  
  S             Segundo (zero segundo, um segundo,... cinquenta e nove segundos)
  T             Hora, minutos e segundos (como HMS), sem a preposi??o "e" entre
                os elementos

C?digo de Retorno
0 ou -1 on hangup. 

Exemplo
  SayUnixTime(,,HM)  ; Pronuncia como "dezesseis horas e vinte e sete minutos"

Veja tamb?m
 Lista de prompts para o idioma Portugues do Brasil ao final deste documento
 voicemail.conf - configura??o do par?metro tz (timezone)


voicemail.conf
----------------------------------------------------------------------------------
Abaixo um exemplo de como configurar o par?metro tz para que a pron?ncia da
data e hora da mensagem esteja de acordo com o idioma Portugues do Brasil.
Os c?digos de formato na linha da defini??o do timezone segue exatamente ao formato
definido na aplica??o SayUnixTime.

[general]
...
tz=brazil

[zonemessages]
brazil=America/Sao_Paulo|'vm-received' QR

[default]
;Defini??o das caixas postais
;maxmsg=50
<mailbox> => <senha>,Nome do Usu?rio,email em dousuario,,tz=brazil


Veja tamb?m
  SayUnixTime



ARQUIVOS DE AUDIO (PROMPTS) NECESS?RIOS
=======================================

Devido a complexidade na composi??o de frases no idioma Portugues, foi necess?rio
o acr?scimo de v?rios arquivos. Abaixo uma rela??o de prompts usados (alguns
arquivos podem ja estar dispon?veis):

Em "digits/br"

Arquivo             Frase               Exemplo, como em...
--------------------------------------------------------------------------
0.gsm	            zero	
1.gsm	            um	                UM minuto
1F.gsm	            uma	                UMA hora
2.gsm	            dois	            DOIS minutos
2F.gsm	            duas	            DUAS horas
3.gsm	            tres	
4.gsm	            quatro	
5.gsm	            cinco	
6.gsm	            seis	
7.gsm	            sete	
8.gsm	            oito	
9.gsm	            nove	
10.gsm	            dez	
11.gsm	            onze	
12.gsm	            doze	
13.gsm	            treze	
14.gsm	            quatorze	
15.gsm	            quinze	
16.gsm	            dezesseis	
17.gsm	            dezessete	
18.gsm	            dezoito	
19.gsm	            dezenove	
20.gsm	            vinte	
30.gsm	            trinta	
40.gsm	            quarenta	
50.gsm	            cinquenta	
60.gsm	            sessenta	
70.gsm	            setenta	
80.gsm	            oitenta	
90.gsm	            noventa	
100.gsm	            cem	
100E.gsm            cento e	            CENTO E quarenta e tres
200.gsm	            duzentos	
200F.gsm            duzentas	
300.gsm	            trezentos	
300F.gsm            trezentas	
400.gsm             quatrocentos	
400F.gsm            quatrocentas	
500.gsm             quinhentos	
500F.gsm            quinhentas	
600.gsm             seiscentos	
600F.gsm            seiscentas	
700.gsm             setecentos	
700F.gsm            setecentas	
800.gsm             oitocentos	
800F.gsm            oitocentas	
900.gsm             novecentos	
900F.gsm            novecentas	
1000.gsm            mil	
1000000.gsm         milh?o	
1000000S.gsm        milh?es	
pt-de.gsm	        de	                trinta DE abril
pt-a.gsm            a	                recebido A meia-noite
pt-meianoite.gsm    meia noite	
pt-ao.gsm	        ao                  recebido AO meio-dia
pt-meiodia.gsm	    meio dia	
pt-as.gsm	        ?s	                recebido AS dezesseis horas
pt-da.gsm	        da                  quatro horas DA tarde
pt-e.gsm	        e	                vinte E um
morning.gsm	        manh?	            nove horas da MANH?
afternoon.gsm	    tarde	            duas horas da TARDE
night.gsm	        noite	            oito horas da NOITE
hour.gsm	        hora	            uma HORA
hours.gsm	        horas	            duas HORAS
minute.gsm	        minuto	            um MINUTO
minutes.gsm	        minutos	            dois MINUTOS
second.gsm	        segundo	            um SEGUNDO
seconds.gsm	        segundos	        dois SEGUNDOS
minus.gsm           menos               MENOS vinte e cinco

Em "sounds/br":

vm-INBOXs.gsm	    nova	            uma mensagem NOVA
vm-Olds.gsm	        antiga	            uma mensagem ANTIGA
vm-youhaveno.gsm    voc? n?o tem	    VOC? N?O TEM mensagens


DUVIDAS, SUGEST?ES
==================

Poste suas d?vidas e sugest?es na lista AsteriskBrasil:

AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil 


O Autor

Celso Porto Fassoni
celso.fassoni em gmail.com
 -- Abr/2006 --


Mais detalhes sobre a lista de discussão AsteriskBrasil