NOME¶
po-debconf - introdução
DESCRIÇÃO¶
O objectivo do "debconf" era tornar a configuração do pacote
mais amiga do utilizador. De modo a alcançar isto, é importante
assegurar que os utilizadores irão obter a questão no seu idioma. Os
tradutores necessitam de um mecanismo para facilmente trabalharem nas
traduções sem terem de perseguir o desenvolvimento do pacote; O
"po-debconf" foi desenhado para ser capaz de trabalhar com
ferramentas "gettext" standard ao traduzir ficheiros de templates
debconf.
ACRESCENTAR SUPORTE DE I18N A FICHEIROS DE TEMPLATES DEBCONF¶
Se está a acrescentar suporte a debconf ao seu pacote, você escreveu
um ficheiro templates que contém o texto em Inglês. Para acrescentar
o devido suporte a i18n ao seu pacote, você tem de:
- - Criar debian/po/POTFILES.in
- Este ficheiro contém a lista de templates mestre.
Normalmente contém uma única linha:
[type: gettext/rfc822deb] templates
Os caminhos são relativos ao directório pai.
- - Em cada template juntar um underscore como prefixo antes
dos campos a traduzir
- Normalmente podem ser traduzidos os campos
"Description", "Choices" e às vezes
"Default".
- - Correr o debconf-updatepo
- Isto irá criar o ficheiro
debian/po/templates.pot que os tradutores irão traduzir para o
seu idioma.
- - Acrescentar a dependência de compilação
"po-debconf" em debian/control
ACTUALIZAR TEMPLATES¶
De modo a ajudar os tradutores, os ficheiros PO no seu pacote devem estar sempre
actualizados, caso contrário eles poderão perder o seu tempo a
traduzir mensagens não utilizadas. Para isso, simplesmente chame o
seguinte comando sem argumentos:
$ debconf-updatepo
Você deve correr este comando cada vez que mudar os templates em
Inglês, mas também quando receber traduções novas ou
actualizadas, porque os tradutores podem ter trabalhado num ficheiro PO
obsoleto.
Se renomear, acrescentar ou remover alguns ficheiros de templates, lembre-se
também de editar
debian/po/POTFILES.in de acordo, caso
contrário ficarão a faltar as mensagens em Inglês dos ficheiros
PO e serão mostradas aos utilizadores mesmo que os ficheiros PO estejam
traduzidos na totalidade.
O programa
debconf-updatepo é idempotente, modifica apenas os
ficheiros PO se o seu conteúdo foi actualizado. Por isso a melhor forma
para disponibilizar os ficheiros PO actualizados no seu pacote-fonte é
chamar este comando a partir do alvo "clean" do ficheiro
debian/rules.
Por favor note que tem de correr
debconf-updatepo mesmo se você
utilizar
dh_installdebconf. O último chama o
po2debconf o
qual era utilizado para chamar o
debconf-updatepo se fossem detectados
ficheiros desactualizados, mas isto não é actualmente o caso porque
não era uma boa solução devido a pelo menos duas razões:
- 1.
- O po2debconf baseia-se em registos de tempo para
detectar ficheiros desactualizados, e pode ser abusado ao utilizar o
"pbuilder" ou se uma tradução desactualizada for
guardada no disco após os templates terem sido modificados.
- 2.
- O dh_installdebconf é chamado muito depois do
ficheiro ".diff.gz" ter sido gerado
COMBINAR TRADUÇÕES E ORIGINAL¶
Você tem de se assegurar que quando o seu pacote for compilado, as
traduções irão ficar no pacote compilado. Você pode fazer
isso manualmente, ou automaticamente utilizando o script
dh_installdebconf (assegure-se que tem uma dependência de
compilação com versão contra o "debhelper (>=
4.1.16)").
Para o fazer manualmente, você tem de combinar os templates e as
traduções durante a compilação (e tem de ter uma
dependência de compilação contra o "po-debconf") como
isto:
$ po2debconf debian/templates > debian/tmp/DEBIAN/templates
TENHA CUIDADO: os dois ficheiros chamados
templates não
são o mesmo. O primeiro contém apenas o texto em Inglês, com
marcas para denotar alguns campos a serem traduzidos enquanto que o segundo
contém todos os idiomas. Isto é para dizer que você NÃO
PODE manter apenas os templates combinados, ou não será capaz de
lidar com traduções que as pessoas lhe submeterem.
NOVOS TEMPLATES MESTRE¶
O formato da fonte do novo ficheiro templates é idêntico a um dos
ficheiros templates distribuídos, mas os campos a traduzir são
precedidos com um underscore. Exemplo:
Template: debconf/frontend
Type: select
_Choices: Dialog, Readline, Gnome, Editor, Noninteractive
Default: Dialog
_Description: Interface a utilizar com os pacotes a configurar:
Os pacotes que utilizam debconf para a configuração partilham um aspecto
e funcionamento idênticos. Você pode escolher o tipo de interface com o
utilizador que utilizam.
.
O frontend dialog é uma interface de ecrã inteiro, baseada em carácter,
enquanto que o frontend readline oferece uma interface de texto simples,
mais tradicional, e o frontend gnome é uma interface X moderna. O
frontend editor permite configurar as coisas pelo uso do seu editor de
texto favorito. O frontend noninteractive não apresenta nenhuma questão.
DIVIDIR A LISTA DE ESCOLHAS¶
Desde o "po-debconf" 0.6.0, os campos localizados podem conter dois
underscores no inicio. Neste caso, o valor do campo é suposto ser uma
lista de valores separada por vírgulas, que são postos em msgids
diferentes. Por isso se o exemplo anterior contivesse
__Choices: Dialog, Readline, Gnome, Editor, Noninteractive
isto seriam 5 msgids diferentes. Note que os espaços a seguir às
vírgulas não são significativos.
Quando uma lista de escolhas nunca for alterada, "_Choices" pode ser
considerado OK. No entanto, dividir tais listas pode ajudar a evitar erros
frequentes em traduções, tais como, omitir uma escolha ou utilizar
vírgulas não-standard. Por essas razões, a utilização
de "__Choices" facilitará a vida do tradutor e é
fortemente recomendado.
Infelizmente se decidir mudar de "_Choices" para
"__Choices", todas as traduções ficarão 'fuzzy'. Aqui
está uma explicação para fazer esta alteração sem
perda de tradução (necessita de "po-debconf" >=1.0).
Suponha que queremos mudar o exemplo anterior para "__Choices".
Você copia o ficheiro
templates para um ficheiro temporário.
$ cp debian/templates debian/foo
Edite
debian/foo e mantenha apenas os campos "Template",
"Type" e "_Choices", que estão neste exemplo
Template: debconf/frontend
Type: select
_Choices: Dialog, Readline, Gnome, Kde, Editor, Noninteractive
Para compilar os ficheiros PO como se "__Choices" fosse escrito corra
debconf-gettextize com as flags "--merge" e
"--choices" , e combine esses ficheiros PO com os existentes:
$ debconf-gettextize --merge --choices debian/foo
Eventualmente terá de remover
foo e manualmente editar
debian/templates para substituir "_Choices" por
"__Choices" antes de
debconf-updatepo ser corrido.
COLOCAR AQUI COMENTÁRIOS PARA OS TRADUTORES¶
Os maintainers do "Dpkg" decidiram que por convenção as
linhas que começam por um cardinal ("#") são
comentários nos ficheiros
debian/control, e o
"po-debconf" segue esta regra. Desde o "po-debconf" 0.8.0,
tais comentários são escritos nos ficheiros PO, e podem conter
informações valiosas para os tradutores. Incidentalmente todas as
versões anteriores do "po-debconf" ignoram linhas que não
contenham um sinal de dois pontos, por isso se os seus comentários
não contêm qualquer sinal de dois pontos, não é
necessário acrescentar uma dependência de compilação com
versão contra o "po-debconf". Aqui está um exemplo:
Template: debconf/button-yes
Type: text
# Tradutores, este texto irá aparecer num botão, por isso mantenham-no CURTO!
_Description: Yes
No "po-debconf" 1.0 foram introduzidos comentários especiais para
lidar com mensagens que são compostas por vários itens (como o campo
Choices) ou parágrafos (como o
Description). Com estas
directivas, os developers têm um melhor controlo sobre o que é
mostrados aos tradutores. Estes estão na forma "#flag:
directive"; as directivas estão detalhadas abaixo.
- translate:spec,
translate!:spec
- Marcar apenas alguns itens como traduzíveis;
spec é uma lista de números separada por vírgulas,
especifica quais as mensagens serão escritas nos ficheiros PO. As
gamas também podem ser definidas através de um sinal de menos
(por exemplo "2-6"), e um asterisco ("*") significa
todas as mensagens. Por exemplo, com
Template: partman-basicfilesystems/fat_mountpoint
Type: select
#flag:translate:3,4
__Choices: /dos, /windows, Introduzir manualmente, Não o montar
_Description: Ponto de montagem para esta partição:
"Intoduzir manualmente" e "Não o montar" irá
aparecer nos ficheiros PO mas não "/dos" and
"/windows". Quando o ponto de exclamação segue a
palavra-chave translate, spec especifica quais as mensagens
que serão descartadas dos ficheiros PO, todas as outras mensagens
serão mostradas. O exemplo anterior é similar a
Template: partman-basicfilesystems/fat_mountpoint
Type: select
#flag:translate!:1,2
__Choices: /dos, /windows, Introduza manualmente, Não o montar
_Description: Ponto de montagem para esta partição:
A mesma palavra-chave pode também ser aplicada ao campo
Description para assegurar que algumas mensagens não
serão traduzidas.
Template: partman-crypto/options_missing
Type: error
#flag:translate!:3
_Description: Faltam opções de encriptação necessárias
As opções de encriptação para o dispositivo ${DEVICE} estão incompletas.
Por favor volte ao menu da partição e escolha todas as opções necessárias.
.
${ITEMS}
Mas isto é perigoso porque o contexto pode ser eliminado dos ficheiros
PO, neste caso por favor acrescente os comentários para que os
tradutores não fiquem confusos.
- comment:spec,
comment!:spec
- O comentário após esta directiva aplica-se
às mensagens especificadas por spec, que é definida
acima. Por omissão, um comentário é escrito antes de um
campo a traduzir e escrito juntamente com todas as mensagens que
pertençam a este campo. (Nota: com o "po-debconf" < 1.0,
o comentário era escrito apenas com a primeira mensagem)
Template: arcboot-installer/prom-variables
Type: note
# Tradutores, a 4ª mensagem desta descrição foi largada
# dos ficheiros PO. Contém comandos da shell e não deve ser
# traduzida.
#flag:comment:3
# "Stop for Maintenance" deve ser deixado em Inglês
#flag:translate!:4
_Description: Definir variáveis na PROM para Arcboot
Se esta é a primeira instalação de Linux nesta máquina,
ou se os discos
rígidos foram re-particionados, têm de ser definidas algumas
variáveis na
PROM antes do sistema ser capaz de arrancar normalmente.
.
No fim desta etapa da instalação, o sistema irá reiniciar.
Após isto, introduza o comando monitor a partir da opção
"Stop for
Maintenance", e introduza os seguintes comandos:
.
setenv OSLoader arcboot
setenv OSLoadFilename Linux
.
Irá ter de fazer isto apenas uma vez. Depois disso, introduza o
comando
"boot" ou reinicie o sistema para passar à próxima
etapa da instalação.
O exemplo acima tem um comentário sem a directiva
"#flag:comment", onde é acrescentado um
"#flag:comment:*" implícito. Este comentário aparece
com todas as mensagens, mas a que tem Stop for Maintenance é
mostrada apenas antes da mensagem relevante.
- partial
- Esta palavra-chave diz ao po2debconf para manter as
mensagens traduzidas mesmo que não estejam todas traduzidas. Por
favor utilize-a com cautela, esta palavra-chave foi introduzida para
propósitos muito específicos.
AVISAR OS TRADUTORES ANTES DE FAZER UM UPLOAD¶
Normalmente os tradutores tomam conhecimento nas páginas web de estado
(veja abaixo) que as traduções estão desactualizadas, e enviam
patches que serão incluídos em futuros uploads. Mas os developers
são encorajados a pedir uma actualização aos maintainers de
traduções desactualizadas antes dum upload, por exemplo com uma
semana de antecedência. Para este propósito foi escrita uma
ferramenta dedicada, o
podebconf-report-po. Não hesite em abusar
dela!
DEPURAÇÃO¶
Irá descobrir que
debconf-loadtemplate não irá aceitar um
ficheiro templates com códigos i18n. No entanto, irá aceitar um
ficheiro integrado, por isso se tem feito depuração a sua
configuração debconf assim
rm /tmp/{config,templates}.dat{,-old}
debconf-loadtemplate debian/templates
DEBIAN_PRIORITY=low debconf -freadline debian/config configure 28.0
em vez disso agora irá necessitar de algo como isto:
po2debconf debian/templates > debian/tmp/DEBIAN/templates
rm /tmp/{config,templates}.dat{,-old}
debconf-loadtemplate debian/tmp/DEBIAN/templates
DEBIAN_PRIORITY=low debconf -freadline debian/config configure 28.0
AVISOS¶
- •
- O "Debconf" 1.2.0 reconhece campos na forma
Name- lang.encoding, e.g.
"Description-de.ISO-8859-1" ou "Choices-ru.KOI8-R".
Por pré-definição o po2debconf escreve ficheiros
templates nesse novo formato. Versões mais antigas do
"debconf" irão ignorar estes campos, mas é mostrado o
texto em Inglês. Para saber como alterar a codificação e o
formato de saída veja po2debconf(1).
- •
- Uma dada mensagem em Inglês apenas pode ter uma
única tradução num dado idioma. É impossível dar
duas traduções diferentes, dependendo do contexto. Para resolver
este problema, você tem de acrescentar marcas especiais para as
diferentes ocorrências de uma dada mensagem para as tornar
diferentes. (Estas marcações apenas serão visíveis aos
tradutores, e serão removidas da mensagem antes de ser mostrada ao
utilizador)
Tais marcadores têm de ser acrescentados no final das mensagens a
traduzir, têm de começar por "[ " (um parêntesis
recto esquerdo seguido de um espaço) e terminar com "]"
(parêntesis recto direito), e pode conter qualquer carácter
excepto parêntesis rectos ou novas linhas. Por exemplo "[
blahblah]" é um marcador válido enquanto que "[
bla[bla]bla]" não o é. Para viciados em expressões
regulares de Perl, os marcadores são reconhecidos (e removidos)
utilizando esta regra:
$msg =~ s/\[\s[^\[\]]*\]$//s;
- •
- O espaçamento não é lidado exactamente da
mesma forma pelo "po-debconf" e pelo "debconf-utils";
com o último, os parágrafos são reformatados ao actualizar
e combinar traduções, por isso o "debconf-utils"
é muito esperto e não considera os espaços como parte das
mensagens ao determinar as entradas fuzzy. (i.e., as que necessitam a
atenção do tradutor devido ao original ter sido alterado)
Por outro lado o "po-debconf" baseia-se no "gettext"
para detectar entradas fuzzy, e não trata os espaços como
caracteres especiais. Por isso os espaços supérfluos têm de
ser removidos do final das linhas nos ficheiros-mestre templates, ou
irão aparecer nos ficheiros PO e POT.
Pela mesma razão, o debconf-gettextize pode marcar o texto como
fuzzy se os caracteres espaço não coincidirem, os tradutores
terão de manualmente eliminar os fuzzys de tais mensagens. Isto
apenas acontece uma vez ao converter os templates para o formato
"po-debconf", a menos que altere aleatoriamente os espaços
nos ficheiros-mestre templates, o que será trabalhoso para os
tradutores.
- •
- Normalmente o campo Default: não pode ser
traduzido quando o tipo do template for Select ou
Multiselect. Sob raras circunstâncias (e.g. ao escolher o
idioma pré-definido para uma aplicação) os valores
localizados podem ter significado.
O valor localizado não deve ser traduzido, mas escolhido a partir de
uma lista de valores em Inglês listados no campo Choices. A
melhor forma de alcançar esta meta é inserir um comentário
no seu ficheiro templates o qual será copiado para os ficheiros PO.
Template: geneweb/lang
Type: select
__Choices: Danish (da), Dutch (nl), English (en), Esperanto (eo)
# Você NÃO deve traduzir esta mensagem, mas pode mudar o seu valor.
# O comentário dentro de parêntesis é utilizado para distinguir este msgid
# do que está na lista Choices; você não tem de se preocupar acerca deles,
# e tem apenas de escolher uma msgstr entre os valores em Inglês
# listados no campo Choices acima, e.g. msgstr "Dutch (nl)"
_Default: English (en)[ default language]
_Description: Geneweb default language
O valor pré-definido também aparece no campo Choices, e
ambos têm traduções diferentes: a primeira é um valor
por traduzir escolhido entre os valores de Choices, e a última
é uma tradução normal. Como o "gettext" não
pode ter duas traduções diferentes no mesmo msgid,
então ambos os msgids têm de ser diferentes utilizando
para isso comentários em parêntesis rectos conforme é
descrito na secção anterior.
Antes do "po-debconf" 0.8.0, não estavam disponíveis
tais comentários e os maintainers tinham de substituir o campo
_Default: por _DefaultChoice: de modo a destacar tais campos
nos ficheiros PO:
#. DefaultChoice
msgid ""
"English[ pré-definido: não traduzir o que está dentro de parêntesis"
"rectos, ponha aqui o seu idioma mas SEM TRADUZIR. Se não estiver na"
" lista, ponha English (sem o que está nos parêntesis)]"
msgstr ""
"Portuguese"
Comentários simples nos ficheiros templates são menos sujeitos a
erros e são encorajados.
PÁGINAS WEB DE ESTADO¶
As estatísticas para as traduções "po-debconf"
estão disponíveis em
http://www.debian.org/intl/l10n/po-debconf/
<
http://www.debian.org/intl/l10n/po-debconf/> (ou nos seus mirrors);
estas são automaticamente actualizadas quando for feito o upload dos
novos pacotes. Apenas são considerados os pacotes que contenham
debian/po/templates.pot e
debian/po/POTFILES.in, por isso deve
assegurar-se que o seu pacote com a fonte o disponibiliza.
Os tradutores podem obter os ficheiros PO e POT a partir daqui, mas eles devem
sempre entrar em contacto com o tradutor anterior (o seu endereço de mail
pode ser encontrado no ficheiro PO) e/ou os seus companheiros de
traduções em debian-l10n-
<language>@lists.debian.org
(se tal lista existir) para se assegurar que ninguém está a
trabalhar nessa tradução ao mesmo tempo, e ler os relatórios de
bug actuais do pacote que vai traduzir para ver se já foi relatada uma
tradução.
Após traduzir estes ficheiros, eles devem submeter o seu trabalho ao
maintainer como um relato de bug de severidade
wishlist e com o tag
patch.
VEJA TAMBÉM¶
debconf-gettextize(1),
debconf-updatepo(1),
dh_installdebconf(1),
podebconf-report-po(1),
po2debconf(1),
debconf-devel(7).
AUTORES¶
Martin Quinson <Martin.Quinson@ens-lyon.fr>
Denis Barbier <barbier@linuxfr.org>