<!-- <?xml version="1.0" ?>
<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd"
> -->
<!-- Uncomment the previous two lines to validate this document -->
<!-- standalone.  Be sure to recomment them before attempting to -->
<!-- process index.docbook -->

<chapter id="using-kbabel">
<chapterinfo>
<!-- Fill in this section if this document has a different author -->
<authorgroup>
<author>
<personname
><firstname
></firstname
><surname
></surname
></personname>
</author>
</authorgroup>

<othercredit role="translator"
><firstname
>Marcus</firstname
><surname
>Gama</surname
><affiliation
><address
><email
>marcus.gama@gmail.com</email
></address
></affiliation
><contrib
>Tradução</contrib
></othercredit
> 
</chapterinfo>


<title
>Usando o &kbabel;</title>

<sect1 id="using-introduction">
<title
>Introdução</title>

<para
>Normalmente, as mensagens e a documentação do programa são escritas em inglês. Usando uma plataforma composta por um conjunto de ferramentas e bibliotecas, é possível ter as suas aplicações favoritas falando a sua língua não-inglesa nativa. Este processo de adaptar uma aplicação a um idioma específico é conhecido por 'localização'. O processo de localização inclui a tradução das interfaces e da documentação do programa para os vários idiomas que o usuário precisa e, em alguns países e regiões, adaptar os métodos de entrada e saída de dados para convenções especiais. O &kbabel; é uma ferramenta que o ajudará no processo de internacionalização para fazer com que a interface de uma aplicação fale várias línguas.</para>

<para
>Cada aplicativo apto à internacionalização torna disponível para a tradução um ou mais arquivos de catálogos de mensagens. A extensão destes arquivo é <literal role="extension"
>.pot</literal
>. <acronym
>POT</acronym
> é um acrônimo para <quote
>Portable Object Template</quote
> (Modelo de Objeto Portável).</para>

<para
>Cada tradutor retira uma cópia de um desses modelos <acronym
>POT</acronym
> e começa a preencher as mensagens em branco: cada mensagem é traduzida no idioma desejado. O arquivo que contém o texto traduzido é referido como sendo um arquivo <acronym
>PO</acronym
> (Portable Object - Objeto Portável). </para>

<para
>Logo que todas as mensagens tenham sido traduzidas, o arquivo <acronym
>PO</acronym
> é compilado para um formato binário, conhecido como um arquivo <acronym
>MO</acronym
> (Machine Object - Objeto da Máquina). Estes arquivos, que serão salvos com uma extensão <literal role="extension"
>.mo</literal
> (ou uma extensão <literal role="extension"
>.gmo</literal
>), para mostrar que foram processados pelo 'gettext' da &GNU;), atuam como uma base de dados para minimizar o tempo ocupado pelas aplicações para procurar cada mensagem traduzida. </para>

<para
>Isto leva a uma pergunta: eu preciso saber o que existe dentro de um arquivo <acronym
>PO</acronym
>, mesmo tendo o &kbabel;? A resposta é, sem dúvida, sim. Existem situações em que o catálogo de mensagens pode ficar corrompido e tenha de ser corrigido manualmente. A maioria destes problemas são os odiosos conflitos do <acronym
>CVS</acronym
> ou <acronym
>SVN</acronym
> que ocorrem quando um processo de tradução é coordenado por um sistema concorrente de controle de versões, como o <acronym
>CVS</acronym
> ou o Subversion (<acronym
>SVN</acronym
>). O &kbabel; não poderá ajudá-lo muito, se um destes problemas ocorrer, de modo que um editor de texto e algum conhecimento sobre os arquivos <acronym
>PO</acronym
> serão necessários. Vamos ver como se cria um arquivo <acronym
>PO</acronym
>.</para>

<para
>Arquivos <acronym
>PO</acronym
> consistem de pares de mensagens&mdash;um <emphasis
>msgid</emphasis
> e um <emphasis
>msgstr</emphasis
>. 	A msgid é o texto em Inglês e a msgstr é o texto traduzido para o idioma apropriado. O texto que acompanha cada msgid e msgstr é colocado entre aspas duplas no estilo C. Um exemplo, obtido de um arquivo <acronym
>PO</acronym
> para o &noatun;, é <literal
>msgid &quot;Open a Playlist&quot;</literal
> </para>

<!-- ### TODO: we would need an example of an entry -->

<para
>As linhas em branco e as que começam por <literal
>#</literal
> são ignoradas. As linhas que começam por # representam comentários e são formas úteis de fornecer uma nota que detalhe o arquivo em que esta mensagem será usada e, no caso dos criadores das aplicações, para fornecer comentários adicionais para ajudar na tradução. O &kbabel; mostra estas linhas de comentários para cada mensagem.</para>

<para
>Em muitos casos o primeiro par de msgid-msgstr no arquivo <acronym
>PO</acronym
> é uma entrada falsa (agindo como um cabeçalho do arquivo <acronym
>PO</acronym
>) que contém várias informações sobre o arquivo <acronym
>PO</acronym
> traduzido, como o nome do aplicativo, data de tradução, nome do tradutor e assim por diante.</para>

<para
>Uma funcionalidade útil de internacionalização é chamada de <emphasis
>formas plurais</emphasis
>. O Inglês (e o Português) só usam o singular e uma única forma plural de nomes, &eg; <quote
>1 arquivo </quote
> e <quote
>10 arquivos</quote
>. Isto leva a que muitos programadores pensem que o mundo é assim simples e que poderão usar mensagens do tipo <quote
>Do you want to delete %1 file(s)?</quote
>, onde o <literal
>%1</literal
> representa um conjunto de arquivos a remover. Isto é completamente errado. Na tradução para Eslovaco (por exemplo), você precisa de 3 formas diferentes da mensagem. Este número é diferente para os diferentes idiomas e mesmo quando o número é o mesmo, &eg; o Checo usa também 3 formas, a regra que decide a forma a usar poderá ser muito diferente. As formas plurais nos arquivos <acronym
>PO</acronym
> estão aqui para ajudar. </para>

<note
><para
>Os programadores do &kde; escolheram uma implementação diferente para as formas plurais, em relação ao <application
>gettext da &GNU;</application
> e, por isso, introduziram o seu próprio formato e modo de tratamento das mensagens. Está planejado o uso das formas plurais do &GNU; gettext para o &kde; em sua versão 4. </para
></note>

</sect1>

<sect1 id="using-editor">
<title
>Editor</title>

<para
>Aqui está uma imagem do &kbabel;.</para>

<screenshot>
<screeninfo
>Captura de tela do &kbabel;</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="snap1.png" format="PNG"/>
</imageobject>
<textobject
><phrase
>Captura de tela do &kbabel;</phrase
></textobject>
</mediaobject>
</screenshot>

<para
>Por questões de conveniência, o &kbabel; possui barras de ferramentas para acelerar várias operações e, para os usuários ocupados, existem muitos atalhos de teclado. A janela principal divide-se em quatro partes. </para>

<para
>A caixa de edição <emphasis
>superior-esquerda</emphasis
> é somente de leitura e contém o campo msgid atual do arquivo PO aberto e seu texto em Inglês.</para>

<para
>A caixa de edição <emphasis
>inferior-esquerda</emphasis
> contém o campo msgstr correspondente ao msgid mostrado e nela você pode editar o texto traduzido.</para>

<para
>A parte <emphasis
>superior-direita</emphasis
> da janela é um painel de comentários onde você pode ver os comentários adicionados para a entrada atualmente sendo editada.</para>

<para
>Ele pode ser usado:</para>

<itemizedlist>
<listitem
><para
>para descobrir como a mensagem atual é tratada pelo aplicativo (no estilo C ou simples) </para
></listitem>
<listitem
><para
>em alguns casos, para ler comentários úteis adicionados pelo desenvolvedor do aplicativo para auxiliar os tradutores em seu trabalho&mdash; por exemplo, podem ser dicas técnicas (usadas com grande efeito no projeto <application
>LyX</application
>) </para
></listitem>
<listitem
><para
>quando você precisa saber de qual arquivo uma mensagem vem porque você deseja informar um erro de ortografia no string original em Inglês. </para
></listitem>
</itemizedlist>

<para
>A janela do editor (na parte inferior direita) é a parte mais sofisticada da janela principal do &kbabel;. Seu tamanho pode ser ajustado usando a linha divisória entre ele e o painel de comentário (na parte superior direita). A janela do editor possui dois painéis de aba&mdash;essencialmente é uma pequena 'fotografia' do arquivo PO. Durante a tradução, é muito comum que strings de mensagem estejam relacionados com as mensagens anterior e posterior, logo o painel de contexto é útil para dar uma olhada nas mensagens próximas para obter uma dica de como a mensagem atual pode ser melhor traduzida. A tradução de interface de diálogo é um bom exemplo, ou widgets com seu texto associado e mensagem "o que é isso".  </para>

<sect2 id="more-kbabel-features">
<title
>Mais Recursos do &kbabel;</title>

<para
>Cada entrada msgid pode estar em três estados: </para>

<variablelist>
   <varlistentry>
     <term
>não traduzido</term>
     <listitem>
       <para
>não existe nenhum texto traduzido atualmente associado com o msgstr </para>
     </listitem>
   </varlistentry>
   <varlistentry>
      <term
>aproximado</term>
      <listitem>
         <para
><command
>msgmerge</command
> tentou corresponder um string traduzido procurando nas entradas do arquivo PO restantes. Isto não funcionou perfeitamente e você deve editar o texto traduzido para corresponder ao texto atual em Inglês. </para>
      </listitem>
   </varlistentry>
   <varlistentry>
      <term
>traduzido</term>
      <listitem>
         <para
>a msgid é forma traduzida final da msgstr </para>
      </listitem>
   </varlistentry>
</variablelist>

<para
>O estado da entrada atual é indicada por dois <acronym
>LED</acronym
>s. Dependendo de sua configuração eles podem estar tanto na barra de estado como acima da caixa de edição <guilabel
>string traduzido</guilabel
>. Ambos possuem uma cor personalizável (para refletir suas necessidades visuais ou gosto). Por favor leia a seção <link linkend="preferences"
>Preferências</link
> para ver como você pode ajustar estas configurações.</para>

</sect2>

</sect1>

<sect1 id="kbabel-features">
<title
>Tradução Avançada</title>

<para
>Agora você já tem uma idéia de como traduzir um arquivo PO. Nesta seção nós seguiremos com o modo padrão de traduzir novos arquivos PO usando os recursos avançados do &kbabel;. Nós assumiremos que você já abriu um arquivo-modelo POT e salvou-o como arquivo PO. </para>

<sect2 id="kbabel-navigation">
<title
>Navegando no arquivo PO</title>
<para
>O &kbabel; lhe permite navegar facilmente pelo arquivo de acordo com o estado de sua tradução. O estado não traduzido/aproximado já foi apresentado. Um mensagem pode ser marcada como erro como um resultado do <link linkend="kbabel-validation"
>verificar validação</link
> ou da validação feita pelo <command
>msgfmt</command
>. E, é claro, o &kbabel; suporta navegação do histórico com <guilabel
>Avançar</guilabel
>/<guilabel
>Voltar</guilabel
>, como no &konqueror;.</para>
<para
>Todos os comandos de navegação estão no menu <menuchoice
><guimenu
>Ir</guimenu
></menuchoice
>. </para>
<informaltable>
<tgroup cols="2">
<tbody>

<row>
<entry
><para
><keycombo action="simul"
><keycap
>Page Up</keycap
></keycombo
></para
></entry>
<entry
><para
>Move para a mensagem anterior </para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
><keycap
>Page Down</keycap
></keycombo
></para
></entry>
<entry
><para
>Move para a próxima mensagem</para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
>&Ctrl;<keycap
>Page Up</keycap
></keycombo
></para
></entry>
<entry
><para
>Move para a mensagem aproximada anterior</para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
>&Ctrl;<keycap
>Page Down</keycap
></keycombo
></para
></entry>
<entry
><para
>Move para a próxima mensagem aproximada</para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
>&Alt;<keycap
>Page Up</keycap
></keycombo
></para
></entry>
<entry
><para
>Move para a mensagem não traduzida anterior</para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
>&Alt;<keycap
>Page Down</keycap
></keycombo
></para
></entry>
<entry
><para
>Move para a próxima mensagem não traduzida</para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
>&Shift;<keycap
>Page Up</keycap
></keycombo
></para
></entry>
<entry
><para
>Move para a mensagem com erro anterior</para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
>&Shift;<keycap
>Page Down</keycap
></keycombo
></para
></entry>
<entry
><para
>Move para a próxima mensagem com erro</para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
>&Ctrl;&Shift;<keycap
>Page Up</keycap
></keycombo
></para
></entry>
<entry
><para
>Move para a mensagem aproximada ou não traduzida anterior</para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
>&Ctrl;&Shift;<keycap
>Page Down</keycap
></keycombo
></para
></entry>
<entry
><para
>Move para a próxima mensagem aproximada ou não traduzida</para
></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>

<sect2 id="kbabel-cleveredit">
<title
>Edição inteligente</title>
<para
><emphasis
>Edição inteligente</emphasis
> significa que o editor lhe auxiliará na edição da tradução levando em conta características especiais do formato do PO. Ele <quote
>escapará</quote
> corretamente os caracteres quando necessário.</para>
<para
>Ele também suporta mais de um modo para inserção de fim de linha. Isto é muito útil devido a maneira que o gettext manipula o fim de linha. Ele simplesmente o ignora. (Você pode imaginar que todo o texto no <acronym
>msgstr</acronym
> é uma linha simples.) Se você deseja inserir um fim de linha <quote
>real</quote
>, você precisa inserir <userinput
>\n</userinput
>. Mas a maioria dos tradutores não o fazem, de modo que uma nova linha no <acronym
>msgstr</acronym
> não adiciona nenhum espaço entre as linhas. Isto pode ser facilmente resolvido adicionando um espaço no final de cada linha. Mas você pode facilmente esquecer disso, então a edição inteligente faz isso automaticamente para você. </para>
<para
>A tabela abaixo resume os recursos de edição inteligente. </para>

<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
><para
><keycombo action="simul"
><keycap
>Tab</keycap
></keycombo
></para
></entry>
<entry
><para
>Insere <emphasis
>\t</emphasis
></para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
><keycap
>"</keycap
></keycombo
></para
></entry>
<entry
><para
>Insere <emphasis
>\"</emphasis
></para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
><keycap
>Enter</keycap
></keycombo
></para
></entry>
<entry
><para
>Se o último caracter antes do cursor não é um espaço, insere um espaço. Então inicia uma nova linha.</para
></entry>
</row
><row>
<entry
><para
><keycombo action="simul"
>&Ctrl;<keycap
>Enter</keycap
></keycombo
></para
></entry>
<entry
><para
>Inicia uma nova linha sem nenhuma adição lógica</para
></entry>
</row>
<row>
<entry
><para
><keycombo action="simul"
>&Shift;<keycap
>Enter</keycap
></keycombo
></para
></entry>
<entry
><para
>Insere <emphasis
>\n</emphasis
> e inicia uma nova linha</para
></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<note>
<para
>Se você quiser ver onde estão os espaços, você poderá ativar o <guibutton
>Realçar fundo</guibutton
> e/ou <guibutton
>Marcar espaços com pontos</guibutton
> na janela de configuração, na página <guilabel
>Editar</guilabel
> <guilabel
>Aparência</guilabel
>. </para>
</note>
</sect2>

<sect2 id="kbabel-roughtranslation">
<title
>Tradução automática</title>
<para
>Como um primeiro passo ao iniciar uma nova tradução, o &kbabel; oferece uma função para automaticamente traduzir as mensagens a partir de traduções antigas. Escolha <menuchoice
><guimenu
>Ferramentas</guimenu
><guimenuitem
>Tradução Aproximada</guimenuitem
></menuchoice
> e o &kbabel; lhe apresentará o seguinte diálogo: </para>
<para>
<screenshot>
<screeninfo
>Diálogo de tradução aproximada</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="roughtranslation.png" format="PNG"/>
</imageobject>
</mediaobject>
</screenshot>
</para>
<para
>No diálogo, você deve especificar o que traduzir e escolher as fontes para as traduções antigas. </para>
<para
>No topo do quadro <guilabel
>O que traduzir</guilabel
> estão três caixas de verificação (<guilabel
>Entradas não traduzidas</guilabel
>, <guilabel
>Entradas aproximadas</guilabel
>, <guilabel
>Entradas traduzidas</guilabel
>) para especificar que tipo de mensagens você deseja traduzir. Entradas não traduzidas e aproximadas são escolhas naturais para tradução automática, mas você pode mudar mensagens traduzidas também. </para>
<para
>A correspondência exata para as <acronym
>msgid</acronym
>s será sempre usada para tradução aproximada. No entanto, você pode adicionar mais estratégias, &ie; <guilabel
>Permitir tradução aproximada (lento)</guilabel
> e <guilabel
>Permitir tradução de palavras simples</guilabel
>. Ambas são estratégias adicionais que devem ser suportadas pelas fontes usadas (veja abaixo). Não há nenhuma especificação do que <quote
>tradução aproximada</quote
> significa, mas o propósito é bem óbvio. <quote
>Tradução de palavras simples</quote
> é aplicável somente para alguns idiomas. O &kbabel; tentará traduzir cada palavra no <acronym
>msgid</acronym
> separadamente e então colocar as palavras traduzidas (ou frases) na mesma ordem no <acronym
>msgstr</acronym
>. </para>
<para
>Como uma fonte da tradução aproximada, qualquer módulo de dicionário disponível pode ser usado. Existe uma lista dos módulos <guilabel
>Não usar</guilabel
> e dos módulos <guilabel
>Usar</guilabel
>. Módulos são usados na ordem da lista <guilabel
>Usar</guilabel
>. O primeiro módulo é requisitado para tradução. Se nada for encontrado nele, o próximo módulo da lista é usado e assim por diante. Você pode usar os botões com setas para mover os módulos entre as listas. Não esqueça de mudar a ordem para atender as suas necessidades através dos botões <guibutton
>Mover Acima</guibutton
> e <guibutton
>Mover Abaixo</guibutton
>. </para>
<para
>Normalmente o &kbabel; marcará cada mensagem aproximadamente traduzida como aproximada, porque ele assume que qualquer tradução automática necessita de ser revisada por um tradutor. Se você estiver 100% certo de que a tradução automática estará correta, ou se você revisará toda a tradução de qualquer modo, <guilabel
>Marcar entradas mudadas como aproximada</guilabel
> lhe permite desligar esta marcação automática de aproximado, mas você precisará confirmar isto. </para>
<para
>Se você tiver configurado todas as opções de acordo com sua necessidade, pressione <guibutton
>Iniciar</guibutton
> para automaticamente traduzir as mensagens. Você pode acompanhar a barra de progresso e se for o caso, existe sempre o botão <guibutton
>Parar</guibutton
>. </para>
</sect2>

<sect2 id="kbabel-validation">
<title
>Validar sua tradução</title>
<para
>Todos cometem erros. Logo o &kbabel; suporta um número de verificações para problemas típicos nas traduções. Estas verificações (não verificação de sintaxe) pode ser realizada basicamente de duas maneiras.</para>
<para
>Verificações podem ser feitas para cada mudança no texto traduzido. Elas são chamadas verificações <emphasis
>automáticas</emphasis
> e elas podem ser ligadas no <link linkend="preferences-editor"
>diálogo de configuração do &kbabel;.</link
>. A verificação automática da sintaxe é possível a cada salvamento do arquivo. </para>
<para
>As verificações automáticas podem tornar o &kbabel; lento. Se você possui um computador lento, você pode desligar as verificações automáticas e usar somente a segunda possibilidade. Você pode invocar todo tipo de verificação a partir do <menuchoice
><guimenu
>Ferramentas</guimenu
> <guisubmenu
>Validação</guisubmenu
></menuchoice
>. Então a verificação é executada para todas as mensagens no arquivo e as falhas são marcadas como erros. </para>
<variablelist>
   <varlistentry>
     <term
><guimenuitem
>Verificar Sintaxe</guimenuitem
></term>
     <listitem>
       <para
>Isto invoca o <command
>msgfmt</command
> para verificar a validade do arquivo PO, como é permitido pelo pacote do 'gettext' da &GNU;. Isto irá mostrar o resultado do comando e marcar os <acronym
>msgstr</acronym
>s errados. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
><guimenuitem
>Verificar Argumentos</guimenuitem
></term>
     <listitem>
       <para
>Traduções incorretas podem travar o aplicativo. As partes mais perigosas da tradução são os argumentos, &eg; para funções tipo printf. Esta verificação compara o número e tipo de argumentos no <acronym
>msgid</acronym
> e <acronym
>msgstr</acronym
>. Eles devem corresponder. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
><guimenuitem
>Verificar Aceleradores</guimenuitem
></term>
     <listitem>
     <para
>O texto da &GUI; comumente contém aceleradores, &ie; letras que podem ser usadas para um rápido acesso aos elementos da &GUI; através do teclado. Eles são marcados por um caracter especial, &eg; &amp; no &kde;. Um requisito típico da tradução é que o texto traduzido deve conter o acelerador do texto original. Esta verificação informa este problema para você. O caracter acelerador pode ser especificado nas <guilabel
>Preferências</guilabel
> na aba <guilabel
>Miscelânea</guilabel
>. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
><guimenuitem
>Procurar por Informações de Contexto Traduzidas</guimenuitem
></term>
     <listitem>
     <para
>Você provavelmente precisará disto para traduções do &kde;. Alguns textos que são muito comuns precisam ser traduzidos diferentemente em diferentes contextos. No &kde; este contexto é descrito no início da <acronym
>msgid</acronym
> após a seqüência especial <userinput
>:_</userinput
>. Mas se alguns tradutores podem não estar cientes desta convenção e tentar traduzir a informação de contexto também. Esta verificação tenta encontrar este erro. Se ele encontrar informações de contexto traduzidas, você deve removê-las. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
><guimenuitem
>Verificar Formas Plurais</guimenuitem
></term>
     <listitem>
       <para
>Se a <acronym
>msgid</acronym
> é especificada como uma <quote
>forma plural</quote
>, a tradução deve conter o número correto de traduções separadas por <userinput
>\n</userinput
>. O número correto depende do idioma da tradução e é especificado na aba <guilabel
>Identidade</guilabel
> no diálogo <guilabel
>Preferências</guilabel
>. Esta implementação, até agora, ocorre somente para o &kde;. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
><guimenuitem
>Verificar Equações</guimenuitem
></term>
     <listitem>
       <para
>As equações são um formato especial do <acronym
>msgid</acronym
> que é usado tipicamente nos arquivos <filename
>.desktop</filename
>. Uma vez que as suas traduções irão ser mescladas nestes arquivos, o <acronym
>msgstr</acronym
> precisa também usar este formato especial. Isto significa que a tradução deverá ter início (até à primeira ocorrência do <literal
>=</literal
> com o mesmo texto que a mensagem original, &eg; <userinput
>Name=</userinput
>. </para>
     </listitem>
   </varlistentry>
</variablelist>
</sect2>

<sect2 id="kbabel-spellcheck">
<title
>Verificação ortográfica da tradução</title>
<para
>Como sempre, é muito importante verificar ortograficamente a sua tradução antes de usar o seu resultado. Desta forma, você sempre poderá encontrar erros tipográficos ou outros problemas na sua tradução. O &kbabel; usa a biblioteca-padrão do &kde; para fazer a verificação ortográfica e as suas opções normais poderão ser encontradas na <link linkend="preferences-project-spellcheck"
>janela de configuração do &kbabel;</link
>. A verificação ortográfica em si poderá ser acessada em <menuchoice
><guimenu
>Ferramentas</guimenu
><guisubmenu
>Verificação Ortográfica</guisubmenu
> </menuchoice
>. Você poderá usar um conjunto de modos na verificação ortográfica: </para>
<variablelist>
   <varlistentry>
     <term
><guimenuitem
>Verificar ortografia...</guimenuitem
></term>
     <listitem>
       <para
>Esta é uma invocação genérica de um diálogo, de onde você pode escolher o modo de verificação ortográfica e configurar um modo padrão. Este será invocado pressionando <keycombo action="simul"
>&Ctrl;<keycap
>I</keycap
></keycombo
>. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
><guimenuitem
>Verificar Tudo...</guimenuitem
></term>
     <listitem>
       <para
>Verifica todas as mensagens no arquivo. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
><guimenuitem
>Verificar da Posição do Cursor...</guimenuitem
></term>
     <listitem>
       <para
>Inicia a verificação ortográfica na posição da mensagem atual e continua em direção ao fim do arquivo. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
><guimenuitem
>Verificar Atual...</guimenuitem
></term>
     <listitem>
       <para
>Verifica a ortografia somente da mensagem atual. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
><guimenuitem
>Verificar Texto Selecionado...</guimenuitem
></term>
     <listitem>
       <para
>Se existir um texto selecionado no editor de <acronym
>msgstr</acronym
>, esta opção estará disponível e a verificação ortográfica será apenas deste texto. </para>
     </listitem>
   </varlistentry>
</variablelist>
</sect2>

<sect2 id="kbabel-tags">
<title
>Traduzir &XML;, <acronym
>HTML</acronym
>, ...</title>
<para
>Linguagens de marcação são usadas cada vez mais em &GUI;. O projeto &kde; também usa arquivos <acronym
>PO</acronym
> para tradução de arquivos de documentação DocBook (que é também uma linguagem de marcação). O &kbabel; contém muitas funcionalidades para suportar esta tendência. </para>
<note>
<para
>Aqui, nós descreveremos somente funções relacionadas às tags usadas por marcações propriamente ditas. O outro problema introduzido pelo uso de linguagens de marcação é a tradução de textos longos. Isto é endereçado pelo recurso <emphasis
>diff</emphasis
> descrito na <link linkend="kbabel-diff"
>seção seguinte</link
>. </para>
</note>
<para
>A versão atual do &kbabel; é capaz de encontrar quais tags são usadas no <acronym
>msgid</acronym
> e fornecer um acesso fácil a elas usando as seguintes ações no <guimenu
>Editar</guimenu
>. </para>

<variablelist>
<varlistentry>
    <term>
        <guimenuitem
>Inserir Próxima Tag</guimenuitem>
    </term>
    <listitem>
      <para>
        <action
>Isto insere a próxima tag encontrada no msgid para a tradução. O &kbabel; encontra a tag a ser inserida contando o números de tags a partir do início da tradução. </action>
      </para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term>
      <menuchoice
><guimenu
>Editar</guimenu
><guisubmenu
>Inserir Tag</guisubmenu
> </menuchoice>
    </term>
    <listitem>
      <para>
        <action
>Este submenu contém todos as diferentes tags de marcação encontradas no string original em inglês. Selecionando uma delas você pode inseri-la na posição do cursor no texto traduzido. </action>
      </para>
    </listitem>
  </varlistentry>
</variablelist>
</sect2>

<sect2 id="kbabel-diff">
<title
>Mostrar a diferença</title>
<para
>Como já explanado, aplicativos atuais, tentando ser amigáveis com o usuário, contém uma grande quantidade de texto descritivo, incluindo marcações. Se o desenvolvedor muda uma parte do texto, o sistema &GNU; gettext irá, na melhor hipótese, manter a tradução antiga e marcá-la como aproximada. (Na pior hipótese você perderá a tradução completamente, dependendo do tamanho do texto mudado). Isto funciona bem se um <acronym
>msgid</acronym
> é curto, porque você poderá encontrar as mudanças rapidamente. Mas se o texto é longo o bastante, você terá que se esforçar para descobrir o que mudou (Por exemplo, pode ser somente um artigo mudado pela equipe de leitura.) </para>
<para
>Para auxiliar, o &kbabel; pode ser solicitado a procurar a <acronym
>msgid</acronym
> original e mostrar a diferença. As mudanças serão exibidas graficamente no editor do <guilabel
>String Original</guilabel
>. O modo exato pode ser configurado no <link linkend="preferences-editor-appearance"
>diálogo de configuração do &kbabel;</link
>. O <menuchoice
><guimenu
>Ferramentas</guimenu
> <guisubmenu
>Diferença</guisubmenu
> <guimenuitem
>Mostrar Diferença</guimenuitem
></menuchoice
> mostrará as diferenças encontradas. Para ver o texto atual sem a mistura com o texto original, use <menuchoice
><guimenu
>Ferramentas</guimenu
><guisubmenu
>Diferença</guisubmenu
> <guimenuitem
>Mostrar Texto Original</guimenuitem
></menuchoice
>. </para>
<para
>Você pode ligar ou desligar a procura automática por diferenças escolhendo <menuchoice
><guimenu
>Ferramentas</guimenu
> <guisubmenu
>Diferença</guisubmenu
> <guimenuitem
>Modo de Diferenças</guimenuitem
></menuchoice
>. Quando o modo de diferença estiver ligado, a busca por diferenças inicia quando você vai para outra mensagem. </para>
<para
>Como sempre, você pode usar fontes de diferenças para encontrar a versão antiga do texto, tudo sendo configurado no <link linkend="preferences-diffmode"
>diálogo de configuração do &kbabel;</link
>: </para>
<variablelist>
   <varlistentry>
     <term
>Banco de Dados de Traduções</term>
     <listitem>
       <para
>Você pode usar o Banco de Dados de Traduções para procura por diferenças. Nós recomendamos fortemente habilitar o armazenamento automático das mensagens traduzidas para o Banco de Dados de Traduções no <link linkend="database-fill"
>diálogo de configuração do Banco de Dados de Traduções</link
>. Este modo pode ser ligado pelo <guilabel
>Usar mensagens do Banco de Dados de Traduções</guilabel
>. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
>Árvore de arquivos antigos</term>
     <listitem>
       <para
>Isto será usado somente se a procura no Banco de Dados de Traduções estiver desligada. Configurando o <guilabel
>Pasta base para diferença de arquivos</guilabel
> você pode informar ao &kbabel; qual arquivo usar para diferenças. Ele obtém o caminho relativo do arquivo aberto e usa este caminho na pasta especificada aqui. Se existir um arquivo correspondente, ele será usado. Para usar este modo, você deve fazer uma cópia dos arquivos antigos antes de cada atualização. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term
>Escolher manualmente o arquivo</term>
     <listitem>
       <para
>Se a possibilidade anterior não funcionar corretamente, você pode sempre configurar um arquivo para diferenças manualmente selecionando <menuchoice
><guimenu
>Ferramentas</guimenu
> <guisubmenu
>Diferença</guisubmenu
> <guimenuitem
>Abrir Arquivo para Diferença</guimenuitem
></menuchoice
>. </para>
     </listitem>
   </varlistentry>
</variablelist>
<note>
<para
>A procura por diferença nem sempre é precisa, porque o arquivo <acronym
>PO</acronym
> não contém nenhum referência à mensagem original. </para>
</note>
</sect2>

</sect1>

<sect1 id="kbabel-pluralforms">
<title
>Formas Plurais</title>
<para
>Uma vez que as formas plurais são um assunto bastante complicado, é dedicada uma seção especial ao suporte delas no &kbabel;. </para>

<note
><para
>Esta seção lida com as formas plurais do &kde; (para ser mais preciso, para o &kde; versão 3). Desde o &kbabel; versão 1.11 (KDE 3.5) em diante, o &kbabel; também é capaz de ler, editar e salvar as formas plurais do 'gettext' da &GNU;. </para
></note>

<para
>Cada idioma em que o &kde; está traduzido precisa ter um número correto de formas plurais. Isto é feito ao traduzir um item no <filename
>kdelibs.po</filename
>. O número é definido ao selecionar o nome de um idioma, que usa o mesmo número e <emphasis
>regras</emphasis
> para procurar a forma plural correta. A lista atualizada dos valores possíveis poderá ser encontrada no código-fonte do 'kdelibs', no arquivo <filename
>kdecore/klocale.cpp</filename
>. </para>

<note
><para
>O 'gettext' da &GNU; permite definir o número e tipo de formas plurais, através de uma fórmula, e definir esta fórmula de forma independente para cada arquivo PO. O &kde; só pode definir o número e tipo de formas plurais uma vez no 'kdelibs'. </para
></note>

<para
>As formas plurais do &kde; são demarcadas com o comentário <userinput
>_n:</userinput
>, o qual contém o argumento <literal
>%n</literal
>. Este argumento é então usado na mensagem em si e controla qual a forma plural do seu idioma deverá ser usada, dependendo das regras do seu idioma. </para>
<para
>A tradução de uma mensagem de uma forma plural terá de ter um formato especial. Deverá conter o número correto de traduções (uma por cada forma plural), separadas por um fim-de-linha <literal
>\n</literal
>, <emphasis
>sem</emphasis
> a seqüência <userinput
>_n:</userinput
> (e o espaço). Por exemplo, o <quote
>_n: Selected1 file\nSelected %n files</quote
>, traduzido para Português, ficaria: </para>
<programlisting
>Vybraný %n súbor\n
Vybrané %n súbory\n
Vybraných %n súborov
</programlisting>
<para
>marcus.gama@gmail.comPara verificar se sua tradução contém o número correto de formas plurais, use o menu <menuchoice
><guimenu
>Ferramentas</guimenu
> <guisubmenu
>Validação</guisubmenu
> <guimenuitem
>Verificar Formas Plurais (somente KDE)</guimenuitem
></menuchoice
>. </para>
</sect1>
</chapter>

<!--
Local Variables:
mode: xml
sgml-minimize-attributes:nil
sgml-general-insert-case:lower
sgml-indent-step:0
sgml-indent-data:nil
End:

vim:tabstop=2:shiftwidth=2:expandtab 
-->
