<!-- <?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@uol.com.br</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 dos programas e a documentação são escritas em Inglês. Usando uma estrutura feita de um conjunto de ferramentas e bibliotecas, é possível ter seus aplicativos favoritos falando seu idioma nativo diferente do Inglês. Este processo de adaptação de um aplicativo para um idioma específico é conhecido como localização. O processo de localização inclui a tradução da interface e documentação do programa para diversos idiomas que os usuários necessitam e, em alguns países ou regiões, criando entradas e saídas de acordo com convenções particulares. O &kbabel; é uma ferramenta que lhe auxiliará no processo de internacionalização fazendo com que a interface de um aplicativo fale diversos idiomas.</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 obtém uma cópia do arquivo <acronym
>POT</acronym
> e inicia a tradução das mensagens. Este arquivo se torna um arquivo <acronym
>PO</acronym
> - Portable Object (Objeto Portável) e representa somente um idioma.</para>

<para
>Cada tradutor faz uma cópia de um destes modelos POT e inicia o preenchimento nos espaços vagos: cada mensagem é traduzida para o idioma desejado. O arquivo contendo o texto traduzido é referenciado para um arquivo <acronym
>PO</acronym
> (Portable Object - Objeto Portável). </para>

<para
>Uma vez que todas as mensagens estejam traduzidas, o arquivo <acronym
>PO</acronym
> é compilado para um formato binário legível pelo computador, conhecido como um arquivo <acronym
>MO</acronym
> (Machine Object - Objeto de Máquina). Estes arquivos, que serão armazenados com uma extensão <literal role="extension"
>.mo</literal
>, agem como um banco de dados para minimizar o tempo levado pelos aplicativos para procurar por cada mensagem traduzida. </para>

<para
>Isto sugere uma questão: eu preciso saber o que está dentro de um arquivo <acronym
>PO</acronym
> mesmo que eu tenha o &kbabel;? A resposta é, indubitavelmente, sim. Existem situações onde um catálogo de mensagem vem corrompido e necessita ser manualmente corrigido. A maioria destes problemas decorrem dos tão odiados conflitos de <acronym
>CVS</acronym
> que ocorrem quando um processo de tradução é coordenado por um sistema de versões concorrentes (veja a documentação do <ulink url="info:/cvs"
>CVS</ulink
>). O &kbabel; não pode auxiliá-lo muito se um problema como este surge, então um editor de texto e algum conhecimento de arquivos <acronym
>PO</acronym
> é necessário. Vamos ver como um arquivo <acronym
>PO</acronym
> é feito.</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>

<para
>Linhas vazias e iniciadas com <literal
>#</literal
> são ignoradas. Linhas iniciando com um # representam comentários e são uma maneira útil de colocar uma nota detalhando em qual arquivo esta mensagem será usada e, no caso de escritores de aplicativos, para fornecer comentários adicionais que auxiliem na tradução. O &kbabel; exibe 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
>Versões recentes do <application
>&GNU; gettext</application
> adicionaram outro recurso i18n útil chamado <emphasis
>formas plurais</emphasis
>. O Inglês usa somente uma forma singular e uma plural de nomes, &eg; <quote
>1 file</quote
> e <quote
>10 files</quote
>. Isto leva muitos desenvolvedores a uma idéia de que o mundo é simples assim e eles podem usar mensagens como <quote
>Do you want to delete %1 file(s)?</quote
>, onde o <literal
>%1</literal
> denota um número de arquivos a ser excluído. Mas isto está fundamentalmente errado. Para traduções para o eslovaco você precisa de 3 formas diferentes de mensagem. Este número é diferente para diferentes idiomas e mesmo quando for o mesmo, &eg; o Tcheco usa 3 formas também, a regra para decidir que forma usar pode ser muito diferente. </para>
<para
>Formas plurais em arquivos <acronym
>PO</acronym
> estão aqui para ajudar. Infelizmente, os desenvolvedores do &kde; não gostam da implementação de formas plurais do <application
>&GNU; gettext</application
> e eles tem introduzido seu próprio formato de manipulá-las. </para>
</sect1>

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

<para
>Aqui está uma fotografia do &kbabel;. Por conveniência o &kbabel; possui barras de ferramentas para acelerar muitas operações e, para usuários ocupados, existem atalhos de teclado. A janela principal é dividida 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>

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

<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ê deseja ver onde estão os espaços, você pode ligar <guibutton
>Destacar fundo</guibutton
> e/ou <guibutton
>Marcar espaços em branco com pontos</guibutton
> no diálogo de preferências na aba <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 visto pelo pacote gettext. Isto mostrará o resultado do comando e marcará as <acronym
>msgstr</acronym
>s erradas. </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 denotados 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
>Equações são um formato especial do <acronym
>msgid</acronym
> tipicamente usado em arquivos .desktop. E porque suas traduções serão mescladas para estes arquivos, o <acronym
>msgstr</acronym
> deve usar este formato especial também. Isto significa que a tradução deve iniciar (após a primeira ocorrência do <literal
>=</literal
>) com o mesmo texto da 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 a ortografia de sua tradução antes de usar seu resultado. Desta maneira você pode encontrar erros e outros problemas em sua tradução. O &kbabel; usa a biblioteca padrão do &kde; para verificação ortográfica e esta configuração padrão pode ser encontrada no <link linkend="preferences-spellcheck"
>diálogo de configuração do &kbabel;</link
>. A verificação ortográfica em si mesma pode ser encontrada no submenu <menuchoice
><guimenu
>Ferramentas</guimenu
> <guisubmenu
>Ortografia</guisubmenu
></menuchoice
>. Você pode usar os seguintes modos para 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, que será invocado pelo <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 a partir 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 <acronym
>GUI</acronym
>. 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
>Em virtude das formas plurais serem um assunto complicado, nós dedicamos uma seção especial para seu suporte no &kbabel;. </para>
<para
>O &kbabel; pode ler as formas plurais &GNU; somente, mas não pode editá-las. Ele somente suporta a versão &kde; de formas plurais no momento. </para>
<para
>Cada idioma para o qual o &kde; é traduzido deve configurar um correto número de formas plurais. Isto é feito traduzindo uma entrada no <filename
>kdelibs.po</filename
>. O número pé configurado selecionando o nome de um idioma, que usa o mesmo número e <emphasis
>regras</emphasis
> para encontrar a forma plural correta. A lista atualizada dos valores possíveis pode ser encontrada no código fonte do kdelibs, no arquivo <filename
>kdecore/klocale.cpp</filename
>. </para>
<para
>As formas plurais do &kde; são denotadas pelo comentário <userinput
>_:</userinput
> contendo o argumento <literal
>%n</literal
>. Este argumento é então usado na mensagem propriamente dita e ele controla que forma plural de seu idioma deve ser usada dependendo das regras para seu idioma. </para>
<para
>A tradução de uma mensagem de forma plural deve ter um formato especial. Ela deve conter o número correto de traduções (uma para cada forma plural) separadas por um fim de linha <literal
>\n</literal
>. Por exemplo, <quote
>Selected %n files</quote
> traduzido para o Eslovaco deve ser: </para>
<programlisting
>Vybraný %n súbor\n
Vybrané %n súbory\n
Vybraných %n súborov
</programlisting>
<para
>Para 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 
-->