Estou interessado em manter traduzido o bugzilla, visto que faz mais de dois anos que está parado. Creio que tenho total liberdade para me basear na tradução já existente, das versões 2.17.4 e 2.18rc2, para traduzir a versão 2.22.2 que é a atualmente estável, porém queria saber como posso disponibilizar esta tradução aqui e, se não houver mais interesse do mantenedor em contuinuar, posso me tornar o novo mantendor. Alguém vivo por aqui?
Em todo caso, pretendo fazer o seguinte:
1. Extrair as frases em inglês da versão 2.17.4 e 2.18rc2 e sua respectivas frases traduzidas e jogar num arquivo com uma estrutura simples, bem parecida e mais simples que os .po, onde teremos uma linha com a fraze em inglês, a linha seguinte com a frase traduzida para o português e outra linha em branco, isto para cada frase.
2. Pegar *todos* os arquivos abaixo do diretório template/en da última versão do bugzilla, procurar e substituir as frases em inglês pelas frases traduzidas e gravar os arquivos com as traduções em template/pt_BR, mantendo a mesma estrutura de diretórios sob template/en.
3. Disponibilizar a tradução, por aqui ou pela minha página, e abrir um projeto no bugzilla que pretendo instalar na minha página para fazer as devidas correções que possam sugir devido à tradução para o pt_BR.
Também queria saber se existem ferramanetas que possam me ajudar no passo 1, no passo 2 creio que o sed seja a chave da questão e quanto ao passo 3 espero resposta.
Como você pode ter observado, eu fiz uma tradução da versão 2.20, para consumo interno aqui na empresa e disponibilizei o código.
Minha experiência é a seguinte; subi um servidorzinho de CVS, e na minha estação de trabalho coloquei um client para windows chamado Tortoise CVS.
Então: Criei um módulo inicial com o inglês, e vim editando individualmente, direto do inglês, via notepad cada um dos arquivos.
Honestamente? Não demorou muito.
Em uns 5 dias de trabalho, dedicando ~ 2h/dia na tarefa, tive a tradução de quase tudo que eu queria. Não fiz uma tradução completa; mas o mais usual certamente.
Também, não procurei derivar uma tradução "ipsis litteris" do inglês, justamente para suavizar os termos.
Exemplo:
Frase original:
I need a legitimate login and password to continue.
--
Tradução da v. 2.18:
Eu preciso de um usuário e de uma senha válidos para continuar.
--
Minha tradução:
Digite seu email e sua senha.
Ou ainda:
Original:
If you don't have a Bugzilla account, you can create a new account.
--
2.18:
Se você não tem uma conta no Bugzilla, você pode criar uma nova conta.
--
RF:
Se você não tem uma conta em nosso sistema, Abra uma nova conta.
Eu lhe encorajo. Vá em frente e manda bala na tarefa!
Use um português coerente e correto; se precisar de algo estou às ordens!
Um abraço,
RF.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Cheguei a baixa e dar uma olhada em suas traduções, mas como "fugiam um pouco" do padrão adotado para as traduções anteriores, resolvi não me concentrar nas mesmas de imediato.
Minha proposta é a seguinte: fazer "ferramentas". Como eu disse acima na outra mensagem, elas têm que extrair as frazes em inglês do template en (inglês) e as organizar em um arquivo ou mais de tal forma que fique uma linha em inglês, seguida de uma outra com a tradução, outra em inglês seguida de outra com a tradução, e assim por diante. Assim sendo, podem servir para outras liguagens também, eu acho.
Já inciei meus trabalhos e analisei a estrutura dos arquivos dos template, ainda analisando melhor, mas já tenho parâmetros para progredir. Estou com a seguinte analise de onde e como tirar as frases que precisam ser traduzidas:
1. Frases entre aspas no campo value (value="_frase_") que não são "hidden"
2. Frases entre aspas no campo title (titel = "_frase_")
3. Frases que são o texto de tags html, como por exemplo <label>_frase_</label>, <a...>_frase_</a>
4. Frases soltas que ainda não encontrei uma forma padronizá-las para extraílas
Minha idéia é gerar um arquivo para cada padrão como separado acima. Cada arquivo é gerado, depois traduzido e por fim utilizado de forma diferente em cada caso para aplicar as traduções.
Vou detalhar aqui meu trabalho:
a. Como pegar as frases padronizadas no item 1 acima?
a.1. Posicionado no diretório buzilla-2.22.2/template, obter as linhas com o padrão 'value="_frase_"':
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; grep -ri "value$BIB\".*\"" en
a.2. Extrair apenas o que estiver entre aspas, que pode ser conseguido com a expressão regular 's/.*value="\([^"]*\).*/\1/', ficando:
(a.1) | sed "s/.*value$BIB*\"\([^\"]*\).*/\1/"
a.3. Notei que os values do tipo hidden não deveriam aparecer, então vamos agregar /type[$spc_tab]*=[$spc_tab]*"hidden"/d ao sed:
(a.1) | sed "/type$BIB\"hidden\"/d;s/.*value$BIB*\"\([^\"]*\).*/\1/"
a.4. Reparei que haviam linhas nesta saída em branco, com apenas números e/ou sinais e outras iniciadas por '[%' e terminadas por '%]' que não fazem sentido a tradução, as quais casam com os padrões '/^[0-9!-\/:-@\[-`{-~]*$/' (linha em branco também) e '/^\[%.*$%\]/', ficando:
(a.3) | sed '/^\[%.*%\]$/d;/^[0-9!-\/:-@\[-`{-~]*$/d'
a.5. Para finalizar e ter uma saída de frases únicas e em "ordem alfabética", sort e uniq no final:
(a.4) | sort | uniq
a.6. Para ficar uma linha em branco abaixo de cada linha da lista, façamos:
(a.5) | sed 'a\
'
Repare que na linha de comando, depois do "a\", pressiona-se [Enter] para pular de linha e então termina a aspa simples, portanto é um comando de duas linhas.
a.7. Ainda reparei que passaram algumas coisas estranhas:
[% Param(
[% ids.join(
[% mail.${relationship.id}.${event.id} ?
[% terms.bug %] list
[% time2str(
[% urlquerypart FILTER html %][%
Fui analisar e o que houve foi o uso de " em de ', pois em todos os outros casos usou-se ' em vez de ".
Provavelmente uma distração dos desenvolvedores ou nem mesmo se importaram com isso.
Mas essas linhas é só apagar na mão depois de salva num arquivo para traduzir ou repeti-las simplesmente.
Ufa, temos então agora uma lista de todas as frases em inglês que casam com o padrão 1 (value="_frase_") em "duas" linhas:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; grep -ri "value$BIB\".*\"" en | sed "/type$BIB\"hidden\"/d;s/.*value$BIB*\"\([^\"]*\).*/\1/" | sed '/^\[%.*%\]$/d;/^[0-9!-\/:-@\[-`{-~]*$/d' | sort | uniq | sed 'a\
'
Fui um pouco mais além e tentei colocar de forma adjacente as traduções da versão 2.17.4. Digo adjacente por ter tido alguns problemas em colocar antes a frase em inglês e depois em português, mas já facilitou bastante. Vou testar com sua tradução da 2.20 mais tarde para ver o resultado.
Com essa saída salva em um arquivo (values.txt), ordenei manualmente de forma a ficar primeiro a frase em inglês e depois a em português e, por final, apliquei a tradução na versão 2.22.2.
Encontrei alguns problemas com UTF-8, então converti o arquivo para UTF-8, apliquei novamente a tradução e funcionou! :) Para delírio da galera!!! :D
b. Como extrair as frases seguindo o padrão 1 (values="_frase_") do inglês, do português?
b.1. Minha idéia foi usar da saída do grep de forma a obter-se algo do tipo:
_caminho/do/arquivo_:_linha_:_linha contendo value="_frase_"
Então, se após o número da linha colocar _e_ para inglês e _p_ para português, juntar as saídas e ordená-las, eu teria primeiro inglês e depois português se as linhas forem iguais ou pelo menos adjacente caso contrário.
Retorci o rabo da potranca e cheguei a isso:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; { grep -rin "value$BIB\".*\"" pt_BR | sed "/type$BIB\"hidden\"/d;s/pt_BR\/\(.*\):.*value$BIB*\"\([^\"]*\).*/\1p:\2/"; grep -rin "value$BIB\".*\"" en | sed "/type$BIB\"hidden\"/d;s/en\/\(.*\):.*value$BIB*\"\([^\"]*\).*/\1e:\2/"; } | sort | sed 's/[^:]*:[^:]*:\(.*\)/\1/;/^\[%.*%\]$/d;/^[0-9!-\/:-@\[-`{-~]*$/d'
A saga contina...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Descobri que os intervalos do sed não seguem a tabela ascii, então a parte que elimina linhas com símbolos e em branco deve ser alterada para que contenha explicitamente todos os símbolos não traduzíveis, ficanco o (a.4):
(a.3) | sed '/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d'
Mais uma observação, o _B_ que aparece significa _BRANCOS_, que nada mais é igual à um espaço em branco seguido de uma tabulação; e _BIB_ (contração de Brancos_Igual_Brancos) significa zero ou mais brancos, seguidos de um sinal de igual, seguidos de zero ou mais brancos. Em alguns lugares, depois de $BIB coloquei um asterisco por engano, então desconsidere este asterisco após $BIB.
Agora a linha final (duas linhas na verdade) para criação do arquivo values.txt é:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; grep -ri "value$BIB\".*\"" en | sed "/type$BIB\"hidden\"/d;s/.*value$BIB\"\([^\"]*\).*/\1/" | sed '/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' | sort | uniq | sed 'a\
' > values-en-2.22.2.txt
E o resultado desta saída, executadas a partir do diretório bugzilla-2.22.2/template, é o arquivo values-en-2.22.2.txt, o qual contém todas as frases que seguem o padrão 1 (values="_frase_"). Este arquivo está pronto para ser traduzido e poder ser visto aqui: http://www.juniorpolegato.com.br/teste/values-en-2.22.2.txt
Também arrumei o (b.1), ficando:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; { grep -rin "value$BIB\".*\"" pt_BR | iconv -f ISO-8859-1 -t UTF-8 | sed "/type$BIB\"hidden\"/d;s/pt_BR\/\(.*\):.*value$BIB\"\([^\"]*\).*/\1p:\2/"; grep -rin "value$BIB\".*\"" en | sed "/type$BIB\"hidden\"/d;s/en\/\(.*\):.*value$BIB\"\([^\"]*\).*/\1e:\2/"; } | sort | sed 's/[^:]*:[^:]*:\(.*\)/\1/;/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' > values-pt_BR-2.17.4.txt
Executando a linha acima no diretório bugzilla-2.17.4/template, sendo que dentro deste mesmo diretório extrai a tradução oficial daqui o qual fica no diretório bugzilla-pt-BR, renomeei-o para default (mv bugzilla-pt-BR default), criei o diretório pt_BR (mkdir pt_BR) e movi o default para o pt_BR (mv default pt_BR), ficando assim com a estrutura de diretórios coerente.
Recapitulando, depois o feito acima, executando a linha de comando anterior no diretório bugzilla-2.17.4/template, o qual tem en e pt_BR, obtenho o arquivo values-pt_BR.txt, o qual contém, senão na ordem correta (primeiro inglês e depois português), pelo menos em teoria terá português e depois em inglês em alguns casos, o qual pode ser visto aqui: http://www.juniorpolegato.com.br/teste/values-pt_BR-2.17.4.txt
Dei uma editada nesse arquivo, traduzindo e ajeitando algumas coisas (outras nem tanto, mas foi com o intuito de teste apenas), convertido para UTF-8, para poder ver o resultado das aplicações das traduções sobre a versão 2.22.2, o qual pode ser visto aqui: http://www.juniorpolegato.com.br/teste/values-pt_BR-2.17.4-editado.txt
Agora é possível gerar o novo values-pt_BR-2.22.2.txt utilizando-se das traduções já aplicadas provindas do arquivo values-pt_BR-2.17.4.txt, que não necessita mais de conversão para UTF-8, com a garantia de ser tudo traduzido na mesma linha, então não teremos inversões de ordem, estando no diretório bugzilla-2.22.2/template:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; { grep -rin "value$BIB\".*\"" pt_BR | sed "/type$BIB\"hidden\"/d;s/pt_BR\/\(.*\):.*value$BIB\"\([^\"]*\).*/\1p:\2/"; grep -rin "value$BIB\".*\"" en | sed "/type$BIB\"hidden\"/d;s/en\/\(.*\):.*value$BIB\"\([^\"]*\).*/\1e:\2/"; } | sort | sed 's/[^:]*:[^:]*:\(.*\)/\1/;/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' > values-pt_BR-2.22.2.txt
Então basta ir traduzindo o que falta, sendo que neste caso, as frases em inglês se repetirão, mas serão poucas de uma versão para outra, aplicar e voltar a recriar o arquivo até que esteja tudo bem traduzido e gerando o arquivo de forma automática, sem necessidade de intervenção do usuário para editar. Este então pode ser utilizado para traduzir novas versões pelo mesmo processo.
Para extrair os títulos em inglês para traduzir deixando a linha para tradução em branco:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; grep -ri "title$BIB\".*\"" en | sed "s/.*title$BIB\"\([^\"]*\).*/\1/" | sed '/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' | sort | uniq | sed 'a\
' > titles-en-2.22.2.txt
Para extrair aquele arquivo com traduções adjacentes:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; { grep -rin "title$BIB\".*\"" pt_BR | iconv -f ISO-8859-1 -t UTF-8 | sed "s/pt_BR\/\(.*\):.*title$BIB\"\([^\"]*\).*/\1p:\2/"; grep -rin "title$BIB\".*\"" en | sed "s/en\/\(.*\):.*title$BIB\"\([^\"]*\).*/\1e:\2/"; } | sort | sed 's/[^:]*:[^:]*:\(.*\)/\1/;/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' > titles-pt_BR-2.17.4.txt
Já dei uma revisada neste último e está lá com o nome titles-pt_BR-2.17.4-editado.txt
Agora temos os scripts traduzir-values e traduzir-titles, também lá no diretório passado.
Apliquei também as alterações de título e o pacote com elas está lá com o nome bugzilla-2.22.2-pt_BR.tar.bz2 e para dar uma olhadinha, entre em http://www.juniorpolegato.com.br/bugzilla
Para reextrair as traduções e frases não traduzidas da nova versão, temos:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; { grep -rin "title$BIB\".*\"" pt_BR | sed "s/pt_BR\/\(.*\):.*title$BIB\"\([^\"]*\).*/\1p:\2/"; grep -rin "title$BIB\".*\"" en | sed "s/en\/\(.*\):.*title$BIB\"\([^\"]*\).*/\1e:\2/"; } | sort | sed 's/[^:]*:[^:]*:\(.*\)/\1/;/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' > titles-pt_BR-2.22.2.txt
Abraços.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Olá,
Estou interessado em manter traduzido o bugzilla, visto que faz mais de dois anos que está parado. Creio que tenho total liberdade para me basear na tradução já existente, das versões 2.17.4 e 2.18rc2, para traduzir a versão 2.22.2 que é a atualmente estável, porém queria saber como posso disponibilizar esta tradução aqui e, se não houver mais interesse do mantenedor em contuinuar, posso me tornar o novo mantendor. Alguém vivo por aqui?
Em todo caso, pretendo fazer o seguinte:
1. Extrair as frases em inglês da versão 2.17.4 e 2.18rc2 e sua respectivas frases traduzidas e jogar num arquivo com uma estrutura simples, bem parecida e mais simples que os .po, onde teremos uma linha com a fraze em inglês, a linha seguinte com a frase traduzida para o português e outra linha em branco, isto para cada frase.
2. Pegar *todos* os arquivos abaixo do diretório template/en da última versão do bugzilla, procurar e substituir as frases em inglês pelas frases traduzidas e gravar os arquivos com as traduções em template/pt_BR, mantendo a mesma estrutura de diretórios sob template/en.
3. Disponibilizar a tradução, por aqui ou pela minha página, e abrir um projeto no bugzilla que pretendo instalar na minha página para fazer as devidas correções que possam sugir devido à tradução para o pt_BR.
Também queria saber se existem ferramanetas que possam me ajudar no passo 1, no passo 2 creio que o sed seja a chave da questão e quanto ao passo 3 espero resposta.
Abraços.
--
Atenciosamente,
Junior Polegato
Um peregrino de problemas; Um pergaminho de soluções!
Página Profissional: http://www.juniorpolegato.com.br
Oi Junior,
Como você pode ter observado, eu fiz uma tradução da versão 2.20, para consumo interno aqui na empresa e disponibilizei o código.
Minha experiência é a seguinte; subi um servidorzinho de CVS, e na minha estação de trabalho coloquei um client para windows chamado Tortoise CVS.
Então: Criei um módulo inicial com o inglês, e vim editando individualmente, direto do inglês, via notepad cada um dos arquivos.
Honestamente? Não demorou muito.
Em uns 5 dias de trabalho, dedicando ~ 2h/dia na tarefa, tive a tradução de quase tudo que eu queria. Não fiz uma tradução completa; mas o mais usual certamente.
Também, não procurei derivar uma tradução "ipsis litteris" do inglês, justamente para suavizar os termos.
Exemplo:
Frase original:
I need a legitimate login and password to continue.
--
Tradução da v. 2.18:
Eu preciso de um usuário e de uma senha válidos para continuar.
--
Minha tradução:
Digite seu email e sua senha.
Ou ainda:
Original:
If you don't have a Bugzilla account, you can create a new account.
--
2.18:
Se você não tem uma conta no Bugzilla, você pode criar uma nova conta.
--
RF:
Se você não tem uma conta em nosso sistema, Abra uma nova conta.
Eu lhe encorajo. Vá em frente e manda bala na tarefa!
Use um português coerente e correto; se precisar de algo estou às ordens!
Um abraço,
RF.
Olá Rodrigo,
Cheguei a baixa e dar uma olhada em suas traduções, mas como "fugiam um pouco" do padrão adotado para as traduções anteriores, resolvi não me concentrar nas mesmas de imediato.
Minha proposta é a seguinte: fazer "ferramentas". Como eu disse acima na outra mensagem, elas têm que extrair as frazes em inglês do template en (inglês) e as organizar em um arquivo ou mais de tal forma que fique uma linha em inglês, seguida de uma outra com a tradução, outra em inglês seguida de outra com a tradução, e assim por diante. Assim sendo, podem servir para outras liguagens também, eu acho.
Já inciei meus trabalhos e analisei a estrutura dos arquivos dos template, ainda analisando melhor, mas já tenho parâmetros para progredir. Estou com a seguinte analise de onde e como tirar as frases que precisam ser traduzidas:
1. Frases entre aspas no campo value (value="_frase_") que não são "hidden"
2. Frases entre aspas no campo title (titel = "_frase_")
3. Frases que são o texto de tags html, como por exemplo <label>_frase_</label>, <a...>_frase_</a>
4. Frases soltas que ainda não encontrei uma forma padronizá-las para extraílas
Minha idéia é gerar um arquivo para cada padrão como separado acima. Cada arquivo é gerado, depois traduzido e por fim utilizado de forma diferente em cada caso para aplicar as traduções.
Vou detalhar aqui meu trabalho:
a. Como pegar as frases padronizadas no item 1 acima?
a.1. Posicionado no diretório buzilla-2.22.2/template, obter as linhas com o padrão 'value="_frase_"':
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; grep -ri "value$BIB\".*\"" en
a.2. Extrair apenas o que estiver entre aspas, que pode ser conseguido com a expressão regular 's/.*value="\([^"]*\).*/\1/', ficando:
(a.1) | sed "s/.*value$BIB*\"\([^\"]*\).*/\1/"
a.3. Notei que os values do tipo hidden não deveriam aparecer, então vamos agregar /type[$spc_tab]*=[$spc_tab]*"hidden"/d ao sed:
(a.1) | sed "/type$BIB\"hidden\"/d;s/.*value$BIB*\"\([^\"]*\).*/\1/"
a.4. Reparei que haviam linhas nesta saída em branco, com apenas números e/ou sinais e outras iniciadas por '[%' e terminadas por '%]' que não fazem sentido a tradução, as quais casam com os padrões '/^[0-9!-\/:-@\[-`{-~]*$/' (linha em branco também) e '/^\[%.*$%\]/', ficando:
(a.3) | sed '/^\[%.*%\]$/d;/^[0-9!-\/:-@\[-`{-~]*$/d'
a.5. Para finalizar e ter uma saída de frases únicas e em "ordem alfabética", sort e uniq no final:
(a.4) | sort | uniq
a.6. Para ficar uma linha em branco abaixo de cada linha da lista, façamos:
(a.5) | sed 'a\ '
Repare que na linha de comando, depois do "a\", pressiona-se [Enter] para pular de linha e então termina a aspa simples, portanto é um comando de duas linhas.
a.7. Ainda reparei que passaram algumas coisas estranhas:
[% Param(
[% ids.join(
[% mail.${relationship.id}.${event.id} ?
[% terms.bug %] list
[% time2str(
[% urlquerypart FILTER html %][%
Fui analisar e o que houve foi o uso de " em de ', pois em todos os outros casos usou-se ' em vez de ".
Provavelmente uma distração dos desenvolvedores ou nem mesmo se importaram com isso.
Mas essas linhas é só apagar na mão depois de salva num arquivo para traduzir ou repeti-las simplesmente.
Ufa, temos então agora uma lista de todas as frases em inglês que casam com o padrão 1 (value="_frase_") em "duas" linhas:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; grep -ri "value$BIB\".*\"" en | sed "/type$BIB\"hidden\"/d;s/.*value$BIB*\"\([^\"]*\).*/\1/" | sed '/^\[%.*%\]$/d;/^[0-9!-\/:-@\[-`{-~]*$/d' | sort | uniq | sed 'a\ '
Fui um pouco mais além e tentei colocar de forma adjacente as traduções da versão 2.17.4. Digo adjacente por ter tido alguns problemas em colocar antes a frase em inglês e depois em português, mas já facilitou bastante. Vou testar com sua tradução da 2.20 mais tarde para ver o resultado.
Com essa saída salva em um arquivo (values.txt), ordenei manualmente de forma a ficar primeiro a frase em inglês e depois a em português e, por final, apliquei a tradução na versão 2.22.2.
Encontrei alguns problemas com UTF-8, então converti o arquivo para UTF-8, apliquei novamente a tradução e funcionou! :) Para delírio da galera!!! :D
b. Como extrair as frases seguindo o padrão 1 (values="_frase_") do inglês, do português?
b.1. Minha idéia foi usar da saída do grep de forma a obter-se algo do tipo:
_caminho/do/arquivo_:_linha_:_linha contendo value="_frase_"
Então, se após o número da linha colocar _e_ para inglês e _p_ para português, juntar as saídas e ordená-las, eu teria primeiro inglês e depois português se as linhas forem iguais ou pelo menos adjacente caso contrário.
Retorci o rabo da potranca e cheguei a isso:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; { grep -rin "value$BIB\".*\"" pt_BR | sed "/type$BIB\"hidden\"/d;s/pt_BR\/\(.*\):.*value$BIB*\"\([^\"]*\).*/\1p:\2/"; grep -rin "value$BIB\".*\"" en | sed "/type$BIB\"hidden\"/d;s/en\/\(.*\):.*value$BIB*\"\([^\"]*\).*/\1e:\2/"; } | sort | sed 's/[^:]*:[^:]*:\(.*\)/\1/;/^\[%.*%\]$/d;/^[0-9!-\/:-@\[-`{-~]*$/d'
A saga contina...
Cruzes!
Haja vício! :-D
O mundo se dobra ante vocês, ó desenvolvedores! ;-)
Boa sorte na empreitada!
Abração,
RF.
Vamos mais um pouco...
Descobri que os intervalos do sed não seguem a tabela ascii, então a parte que elimina linhas com símbolos e em branco deve ser alterada para que contenha explicitamente todos os símbolos não traduzíveis, ficanco o (a.4):
(a.3) | sed '/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d'
Mais uma observação, o _B_ que aparece significa _BRANCOS_, que nada mais é igual à um espaço em branco seguido de uma tabulação; e _BIB_ (contração de Brancos_Igual_Brancos) significa zero ou mais brancos, seguidos de um sinal de igual, seguidos de zero ou mais brancos. Em alguns lugares, depois de $BIB coloquei um asterisco por engano, então desconsidere este asterisco após $BIB.
Agora a linha final (duas linhas na verdade) para criação do arquivo values.txt é:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; grep -ri "value$BIB\".*\"" en | sed "/type$BIB\"hidden\"/d;s/.*value$BIB\"\([^\"]*\).*/\1/" | sed '/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' | sort | uniq | sed 'a\
' > values-en-2.22.2.txt
E o resultado desta saída, executadas a partir do diretório bugzilla-2.22.2/template, é o arquivo values-en-2.22.2.txt, o qual contém todas as frases que seguem o padrão 1 (values="_frase_"). Este arquivo está pronto para ser traduzido e poder ser visto aqui: http://www.juniorpolegato.com.br/teste/values-en-2.22.2.txt
Também arrumei o (b.1), ficando:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; { grep -rin "value$BIB\".*\"" pt_BR | iconv -f ISO-8859-1 -t UTF-8 | sed "/type$BIB\"hidden\"/d;s/pt_BR\/\(.*\):.*value$BIB\"\([^\"]*\).*/\1p:\2/"; grep -rin "value$BIB\".*\"" en | sed "/type$BIB\"hidden\"/d;s/en\/\(.*\):.*value$BIB\"\([^\"]*\).*/\1e:\2/"; } | sort | sed 's/[^:]*:[^:]*:\(.*\)/\1/;/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' > values-pt_BR-2.17.4.txt
Executando a linha acima no diretório bugzilla-2.17.4/template, sendo que dentro deste mesmo diretório extrai a tradução oficial daqui o qual fica no diretório bugzilla-pt-BR, renomeei-o para default (mv bugzilla-pt-BR default), criei o diretório pt_BR (mkdir pt_BR) e movi o default para o pt_BR (mv default pt_BR), ficando assim com a estrutura de diretórios coerente.
Recapitulando, depois o feito acima, executando a linha de comando anterior no diretório bugzilla-2.17.4/template, o qual tem en e pt_BR, obtenho o arquivo values-pt_BR.txt, o qual contém, senão na ordem correta (primeiro inglês e depois português), pelo menos em teoria terá português e depois em inglês em alguns casos, o qual pode ser visto aqui: http://www.juniorpolegato.com.br/teste/values-pt_BR-2.17.4.txt
Dei uma editada nesse arquivo, traduzindo e ajeitando algumas coisas (outras nem tanto, mas foi com o intuito de teste apenas), convertido para UTF-8, para poder ver o resultado das aplicações das traduções sobre a versão 2.22.2, o qual pode ser visto aqui: http://www.juniorpolegato.com.br/teste/values-pt_BR-2.17.4-editado.txt
Fiz um script para aplicar as traduções, o qual pode ser visto aqui: http://www.juniorpolegato.com.br/teste/traduzir
Depois de aplicadas essas traduções (./traduzir values-pt_BR-2.17.4), gerei um pacote do diretório pt_BR: http://www.juniorpolegato.com.br/teste/pt_BR-2.22.2.tar.bz2
Agora é possível gerar o novo values-pt_BR-2.22.2.txt utilizando-se das traduções já aplicadas provindas do arquivo values-pt_BR-2.17.4.txt, que não necessita mais de conversão para UTF-8, com a garantia de ser tudo traduzido na mesma linha, então não teremos inversões de ordem, estando no diretório bugzilla-2.22.2/template:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; { grep -rin "value$BIB\".*\"" pt_BR | sed "/type$BIB\"hidden\"/d;s/pt_BR\/\(.*\):.*value$BIB\"\([^\"]*\).*/\1p:\2/"; grep -rin "value$BIB\".*\"" en | sed "/type$BIB\"hidden\"/d;s/en\/\(.*\):.*value$BIB\"\([^\"]*\).*/\1e:\2/"; } | sort | sed 's/[^:]*:[^:]*:\(.*\)/\1/;/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' > values-pt_BR-2.22.2.txt
Veja este arquivo em: http://www.juniorpolegato.com.br/teste/traduzir
Então basta ir traduzindo o que falta, sendo que neste caso, as frases em inglês se repetirão, mas serão poucas de uma versão para outra, aplicar e voltar a recriar o arquivo até que esteja tudo bem traduzido e gerando o arquivo de forma automática, sem necessidade de intervenção do usuário para editar. Este então pode ser utilizado para traduzir novas versões pelo mesmo processo.
Aqui temos então praticamente todos os botões e caixas de opções traduzidas. Você pode confirir alguma coisa em: http://www.juniorpolegato.com.br/bugzilla
E saga ainda continua...
Desculpe-me,
A linha
Veja este arquivo em: http://www.juniorpolegato.com.br/teste/traduzir
deveria ser
Veja este arquivo em: http://www.juniorpolegato.com.br/teste/values-pt_BR-2.22.2.txt
Abraços.
Mais um passito...
Usando os mesmos princípio, fiz para o padrão 2 (title="_frase_").
Mudei alguns arquivos dos passados acima, sendo a lista completa encontrada em:
http://www.juniorpolegato.com.br/teste/
Para extrair os títulos em inglês para traduzir deixando a linha para tradução em branco:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; grep -ri "title$BIB\".*\"" en | sed "s/.*title$BIB\"\([^\"]*\).*/\1/" | sed '/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' | sort | uniq | sed 'a\ ' > titles-en-2.22.2.txt
Para extrair aquele arquivo com traduções adjacentes:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; { grep -rin "title$BIB\".*\"" pt_BR | iconv -f ISO-8859-1 -t UTF-8 | sed "s/pt_BR\/\(.*\):.*title$BIB\"\([^\"]*\).*/\1p:\2/"; grep -rin "title$BIB\".*\"" en | sed "s/en\/\(.*\):.*title$BIB\"\([^\"]*\).*/\1e:\2/"; } | sort | sed 's/[^:]*:[^:]*:\(.*\)/\1/;/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' > titles-pt_BR-2.17.4.txt
Já dei uma revisada neste último e está lá com o nome titles-pt_BR-2.17.4-editado.txt
Agora temos os scripts traduzir-values e traduzir-titles, também lá no diretório passado.
Apliquei também as alterações de título e o pacote com elas está lá com o nome bugzilla-2.22.2-pt_BR.tar.bz2 e para dar uma olhadinha, entre em http://www.juniorpolegato.com.br/bugzilla
Para reextrair as traduções e frases não traduzidas da nova versão, temos:
B="`echo -e " \t"`"; BIB="[$B]*=[$B]*"; { grep -rin "title$BIB\".*\"" pt_BR | sed "s/pt_BR\/\(.*\):.*title$BIB\"\([^\"]*\).*/\1p:\2/"; grep -rin "title$BIB\".*\"" en | sed "s/en\/\(.*\):.*title$BIB\"\([^\"]*\).*/\1e:\2/"; } | sort | sed 's/[^:]*:[^:]*:\(.*\)/\1/;/^\[%.*%\]$/d;/^[]0-9 !"#$%&'"'"'()*+,./:;<=>?@[\^_`{|}~´-]*$/d' > titles-pt_BR-2.22.2.txt
Abraços.