summaryrefslogtreecommitdiffstats
path: root/tde-i18n-pt/docs/tdesdk/kbabel/using.docbook
blob: d03065821888b0ad5bd88d6469d39f3761eb563c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
<!-- <?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>Pedro</firstname><surname>Morais</surname><affiliation><address><email>morais@kde.org</email></address></affiliation><contrib>Tradução</contrib></othercredit> 
</chapterinfo>


<title>Usar 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 a falar a sua língua não-inglesa nativa. Este processo de adaptar uma aplicação a uma língua específica é conhecido por 'localização'. O processo de localização inclui a tradução das interfaces e da documentação do programa para as várias línguas que o utilizador necessita 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>Todos os programas com capacidades de internacionalização tornam disponíveis para tradução um ou mais ficheiros de catálogo de mensagens. A extensão destes ficheiros é a <literal role="extension">.pot</literal>. O <acronym>POT</acronym> é uma abreviatura de <quote>Portable Object Template</quote> (Modelo de Objecto 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 na língua desejada. O ficheiro que contém o texto traduzido é referido como sendo um ficheiro <acronym>PO</acronym> (Portable Object - Objecto Portável). </para>

<para>Logo que todas as mensagens tenham sido traduzidas, o ficheiro <acronym>PO</acronym> é compilado para um formato binário, conhecido como um ficheiro <acronym>MO</acronym> (Machine Object - Objecto da Máquina). Estes ficheiros, que serão gravados 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;), actuam 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: é necessário saber o que existe dentro de um ficheiro <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 controlo de versões, como o <acronym>CVS</acronym> ou o Subversion (<acronym>SVN</acronym>). O &kbabel; não o poderá ajudar muito, se um destes problemas se levantar, de modo que um editor de texto e algum conhecimento acerca dos ficheiros <acronym>PO</acronym> serão necessários. Vamos ver como é que se cria um ficheiro <acronym>PO</acronym>.</para>

<para>Os ficheiros <acronym>PO</acronym> consistem em vários pares de mensagens &mdash; um <emphasis>msgid</emphasis> e um <emphasis>msgstr</emphasis>. O 'msgid' é o texto em inglês e o 'msgstr' é o texto traduzido na língua apropriada. O texto que acompanha cada um dos 'msgid' e 'msgstr' está retido entre aspas semelhantes às da linguagem C. Segue-se um exemplo, retirado de um ficheiro <acronym>PO</acronym> do &noatun;, é o <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 ficheiro 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 dos casos, o primeiro par 'msgid'-'msgstr' dos ficheiros <acronym>PO</acronym> é um item falso (que actua como cabeçalho do ficheiro <acronym>PO</acronym>) que contém várias informações acerca do ficheiro <acronym>PO</acronym> traduzido, como o nome da aplicação, a data da tradução, 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 ficheiro </quote> e <quote>10 ficheiros</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 ficheiros 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 as diferentes línguas e mesmo quando é o mesmo, &eg; o Checo usa também 3 formas, só que a regra que decide a forma a usar é que poderá ser muito diferente. As formas plurais nos ficheiros <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 o tratamento das mesmas mensagens. </para></note>

</sect1>

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

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

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

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

<para>O campo de edição <emphasis>em cima e à esquerda</emphasis> é só para leitura e contém o campo 'msgid' actual do ficheiro PO aberto e o seu texto em inglês.</para>

<para>O campo de edição <emphasis>em baixo e à esquerda</emphasis> contém o campo 'msgstr' relacionado com o 'msgid' apresentado e aqui você poderá editar o texto traduzido.</para>

<para>A parte <emphasis>em cima e à direita</emphasis> é um painel de comentários onde você poderá ver os comentários que foram adicionados para o item em edição no momento.</para>

<para>Pode ser usado:</para>

<itemizedlist>
<listitem><para>para descobrir como é que a mensagem actual é tratada pela aplicação (formatada à C ou simples) </para></listitem>
<listitem><para>em alguns casos, para ler os comentários úteis adicionados pelos programadores da aplicação para ajudar os tradutores no seu trabalho &mdash; por exemplo, poderão existir sugestões técnicas (usadas com grande aplicação no projecto <application>LyX</application>) </para></listitem>
<listitem><para>quando precisa de saber em que ficheiro existe uma dada mensagem, porque precisa de comunicar um erro ortográfico no texto original em inglês. </para></listitem>
</itemizedlist>

<para>A janela do editor (em baixo e à direita) é a parte mais sofisticada da janela principal do &kbabel;. O seu tamanho poderá ser ajustado usando a linha divisória entre ele e o painel do comentário (o painel em cima e à direita). A janela do editor tem dois painéis separados em páginas &mdash; uma que contém a informação da procura e a outra com a informação de contexto. A página da informação de contexto contém uma área móvel que mostra os 4 itens anteriores e seguintes associados ao item actual &mdash; essencialmente, é uma pequena 'fotografia' do ficheiro PO. Durante a tradução, é bastante comum os textos das mensagens estarem relacionados com as mensagens anteriores e subsequentes, de modo a que o painel de contexto seja útil para procurar nas mensagens adjacentes para ter uma ideia de como a mensagem actual poderá ser melhor traduzida. A tradução das interfaces das janelas é um bom exemplo, ou os itens gráficos e a sua mensagem de "o que é isto?". </para>

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

<para>Cada item do 'msgid' poderá estar num de três estados: </para>

<variablelist>
   <varlistentry>
     <term>não-traduzido</term>
     <listitem>
       <para>não existe nenhum texto traduzido associado de momento ao 'msgstr' </para>
     </listitem>
   </varlistentry>
   <varlistentry>
      <term>'fuzzy' (aproximado)</term>
      <listitem>
         <para>o <command>msgmerge</command> tentou fazer a correspondência de um determinado texto, procurando nos restantes itens do ficheiro PO. Isto não funciona perfeitamente e você precisa de editar o ficheiro traduzido para se adequar ao texto actual em inglês. </para>
      </listitem>
   </varlistentry>
   <varlistentry>
      <term>traduzido</term>
      <listitem>
         <para>o 'msgid' é a forma completamente traduzida do 'msgstr' </para>
      </listitem>
   </varlistentry>
</variablelist>

<para>O estado do item actual é indicado através de dois <acronym>LED</acronym>s. Dependendo da sua configuração, estes tanto poderão estar na barra de estado como no campo de edição do <guilabel>texto traduzido</guilabel>. Ambos têm uma cor personalizada (para reflectir os seus gostos ou requisitos visuais). Por favor leia a secção das <link linkend="preferences">Preferências</link> para ver como poderá ajustar essas opções.</para>

</sect2>

</sect1>

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

<para>Agora você tem uma ideia sobre como traduzir um ficheiro PO. Nesta secção, tentar-se-á seguir a forma normal de traduzir um novo ficheiro PO usando as funcionalidades avançadas do &kbabel;. Assumir-se-á que você já abriu um ficheiro POT de modelo e o gravou como um ficheiro PO. </para>

<sect2 id="kbabel-navigation">
<title>Navegação no ficheiro PO</title>
<para>O &kbabel; permite-lhe navegar facilmente pelo ficheiro, de acordo com o estado da sua tradução. O estado de não-traduzido/aproximado já foi introduzido. Uma mensagem poderá ser marcada como errada em resultado de uma <link linkend="kbabel-validation">verificação</link> ou pela validação feita pelo <command>msgfmt</command>. E, claro, o &kbabel; suporta a navegação no histórico das mensagens visitadas com o <guilabel>Avançar</guilabel>/<guilabel>Recuar</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>Mover para a mensagem anterior </para></entry>
</row>
<row>
<entry><para><keycombo action="simul"><keycap>Page Down</keycap></keycombo></para></entry>
<entry><para>Ir para a próxima mensagem</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Ctrl;<keycap>Page Up</keycap></keycombo></para></entry>
<entry><para>Vai para a mensagem aproximada anterior</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Ctrl;<keycap>Page Down</keycap></keycombo></para></entry>
<entry><para>Vai 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>Vai 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>Vai 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>Vai para a mensagem de erro anterior</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Shift;<keycap>Page Down</keycap></keycombo></para></entry>
<entry><para>Vai para a mensagem de erro seguinte</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Ctrl;&Shift;<keycap>Page Up</keycap></keycombo></para></entry>
<entry><para>Vai 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>Vai para a mensagem aproximada ou não-traduzida seguinte</para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>

<sect2 id="kbabel-cleveredit">
<title>Edição inteligente</title>
<para>A <emphasis>edição inteligente</emphasis> significa que o editor o irá ajudar a editar facilmente a tradução, enquanto tem em conta as potencialidades do formato PO. Irá <quote>escapar</quote> correctamente, à medida das necessidades.</para>
<para>Também suporta mais do que um modo para introduzir o fim-de-linha. Isto é bastante útil por causa da forma como o 'gettext' lida com os fim das linhas. Ele simplesmente ignora-as. (você poderá imaginar que todo o texto do <acronym>msgstr</acronym> é uma única linha). Se você quiser introduzir um fim-de-linha <quote>real</quote>, você terá de introduzir um <userinput>\n</userinput>. Mas a maioria dos tradutores não se lembra que uma nova linha no <acronym>msgstr</acronym> não adiciona nenhum espaço entre as linhas. Isto poderá ser resolvido facilmente se adicionar um espaço no fim de cada linha. Mas você poder-se-á esquecer facilmente disso, por isso a edição inteligente fará isso automaticamente por si. </para>
<para>A tabela em baixo resume as funcionalidades de edição inteligente. </para>

<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry><para><keycombo action="simul"><keycap>Tab</keycap></keycombo></para></entry>
<entry><para>Introduz um <emphasis>\t</emphasis></para></entry>
</row>
<row>
<entry><para><keycombo action="simul"><keycap>"</keycap></keycombo></para></entry>
<entry><para>Introduz um <emphasis>\"</emphasis></para></entry>
</row>
<row>
<entry><para><keycombo action="simul"><keycap>Enter</keycap></keycombo></para></entry>
<entry><para>Se o último carácter antes do cursor não for um espaço, introduz um espaço. De seguida, 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 qualquer lógica adicional</para></entry>
</row>
<row>
<entry><para><keycombo action="simul">&Shift;<keycap>Enter</keycap></keycombo></para></entry>
<entry><para>Introduz um <emphasis>\n</emphasis> e começa uma nova linha</para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<note>
<para>Se você quiser ver onde é que estão os espaços, você poderá activar o <guibutton>Realçar o fundo</guibutton> e/ou <guibutton>Marcar os 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 primeiro passo no início de uma nova tradução, o &kbabel; oferece uma função para preencher automaticamente as traduções das mensagens das traduções anteriores. Escolha a opção <menuchoice><guimenu>Ferramentas</guimenu><guimenuitem>Tradução Lata</guimenuitem> </menuchoice> para que o &kbabel; lhe apresente a seguinte janela: </para>
<para>
<screenshot>
<screeninfo>Janela de tradução lata</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="roughtranslation.png" format="PNG"/>
</imageobject>
</mediaobject>
</screenshot>
</para>
<para>Na janela, você deverá indicar o que deverá ser traduzido e escolher as referências das traduções anteriores. </para>
<para>No cimo da área <guilabel>O que traduzir</guilabel> existem três opções (<guilabel>Itens não-traduzidos</guilabel>, <guilabel>Itens aproximados</guilabel>, <guilabel>Itens traduzidos</guilabel>) para indicar o tipo de mensagens que deseja traduzir. Os itens não-traduzidos e os aproximados são escolhas naturais para a tradução automática, mas você poderá também alterar as mensagens já traduzidas. </para>
<para>A correspondência exacta para os <acronym>msgid</acronym>s será sempre usada na tradução lata. Contudo, você poderá adicionar mais estratégias, &ie; <guilabel>Permitir as traduções aproximadas (lento)</guilabel> e <guilabel>Permitir traduções de palavras únicas</guilabel>. Ambas as estratégias adicionais precisam de ser suportadas pelo código usado (ver em baixo). Não existe nenhuma especificação sobre o que é que a <quote>tradução aproximada</quote> significa, mas o intuito é bastante óbvio. A <quote>Tradução de palavras únicas</quote> adequa-se apenas em algumas das línguas. O &kbabel; irá tentar traduzir cada palavra do <acronym>msgid</acronym> em separado e tentará então colocar as palavras (ou frases) traduzidas, pela mesma ordem, no <acronym>msgstr </acronym>. </para>
<para>Como referência para a tradução lata, qualquer módulo de dicionário disponível poderá ser usado. Existe uma lista de módulos <guilabel>Não usar</guilabel> e <guilabel>Usar</guilabel>. Os módulos são usado pela ordem da lista <guilabel>Usar</guilabel>. É pedido ao primeiro módulo uma tradução. Se não for encontrada, o próximo módulo da lista é notificado, e assim por diante. Você poderá usar os botões com as setas para mover os módulos entre as listas. Não se esqueça de alterar a ordem de acordo com as suas necessidades com os botões <guibutton>Subir </guibutton> e <guibutton>Descer</guibutton>. </para>
<para>Normalmente o &kbabel; irá marcar todas as mensagens traduzidas de forma lata como sendo 'fuzzy' (aproximadas), porque assume que todas as traduções automáticas deverão ser revistas pelo tradutor. Parte de você, ter 100% de certeza que a tradução automática será correcta, ou rever todas as traduções à mesma. A opção <guilabel>Marcar os itens alterados como aproximados</guilabel> permite-lhe desactivar esta marcação automática, mas você irá precisar de confirmar isso. </para>
<para>Se você tiver configurado todas as opções de acordo com as suas necessidades, carregue em <guibutton>Iniciar </guibutton> para traduzir automaticamente as mensagens. Você poderá seguir a barra de progresso e, se for caso, existe sempre o botão para <guibutton>Parar</guibutton>. </para>
</sect2>

<sect2 id="kbabel-validation">
<title>Validar a sua tradução</title>
<para>Toda a gente comete erros. Como tal, o &kbabel; suporta um conjunto de verificações para os problemas típicos das traduções. Estas validações (não incluem verificações sintácticas) poderão ser efectuadas, basicamente, de duas formas.</para>
<para>As verificações poderão ser feitas a cada alteração do texto traduzido. Estas são denominadas por verificações <emphasis>automáticas</emphasis> e poderão ser activadas na <link linkend="preferences-editor">janela de configuração do &kbabel;</link>. A verificação automática da sintaxe é permitida a cada gravação do ficheiro. </para>
<para>As verificações automáticas poderão tornar o &kbabel; mais lento. Se você tiver um computador lento, você poderá desligar as verificações automáticas e usar apenas a segunda hipótese. Você poderá invocar qualquer tipo de verificação em <menuchoice><guimenu>Ferramentas</guimenu><guisubmenu> Validação</guisubmenu></menuchoice>. Aí, a verificação é feita para todas as mensagens do ficheiro e as mensagens inválidas serão marcadas como erros. </para>
<variablelist>
   <varlistentry>
     <term><guimenuitem>Verificar a Sintaxe</guimenuitem></term>
     <listitem>
       <para>Isto invoca o <command>msgfmt</command> para verificar a validade do ficheiro 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 os Argumentos</guimenuitem></term>
     <listitem>
       <para>As traduções incorrectas poderão fazer estoirar a aplicação. As partes mais perigosas das traduções são os argumentos, &eg; para as funções do tipo 'printf'. Esta verificação compara o número e os tipos dos argumentos no <acronym>msgid</acronym> e no <acronym>msgstr</acronym>. Estes terão de ser iguais. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term><guimenuitem>Verificar os Aceleradores</guimenuitem></term>
     <listitem>
     <para>O texto da interface gráfica normalmente contém aceleradores, &ie; as letras que poderão ser usadas para aceder rapidamente aos elementos da interface com o teclado. Estes são assinalados com um carácter especial, &eg; o &amp; no &kde;. O requisito típico da tradução é que o texto traduzido também terá de conter o acelerados. Esta verificação irá confirmar isso para si. O carácter do acelerador poderá ser indicado em <guilabel>Preferências</guilabel>, na página <guilabel>Diversos</guilabel>. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term><guimenuitem>Procurar por Informação de Contexto Traduzida</guimenuitem></term>
     <listitem>
     <para>Você só irá provavelmente necessitar disto para a tradução do &kde;. Alguns dos textos são bastante comuns e eles precisam de ser traduzidos de forma diferente quando os contextos são diferentes. No &kde;, o contexto é descrito no início do <acronym>msgid</acronym> a seguir à sequência especial <userinput>:_</userinput>. Porém, se alguns tradutores não estiverem a par desta convenção e tentarão traduzir a informação de contexto também. Esta validação irá tentar encontrar essas mensagens. Se a verificação encontrar alguma informação de contexto traduzida, você deverá tentar removê-la. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term><guimenuitem>Verificar Formas Plurais</guimenuitem></term>
     <listitem>
       <para>Se o <acronym>msgid</acronym> for especificado como uma <quote>forma plural</quote>, a tradução terá de conter o número correcto de traduções, separadas por <userinput>\n</userinput>. O número correcto depende da língua da tradução e é indicado na página <guilabel>Identidade</guilabel> da janela de <guilabel> Preferências</guilabel>. Isto só está implementado para o &kde; de momento. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term><guimenuitem>Verificar as Equações</guimenuitem></term>
     <listitem>
       <para>As equações são um formato especial do <acronym>msgid</acronym> que é usado tipicamente nos ficheiros <filename>.desktop</filename>. Atendendo a que as suas traduções irão ser reunidas nestes ficheiros, o <acronym>msgstr</acronym> precisa também de 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>Verificar ortograficamente a 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 acedida 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>Verificação ortográfica...</guimenuitem></term>
     <listitem>
       <para>Esta é uma invocação genérica de uma janela, onde você poderá escolher o modo da verificação ortográfica e definir o modo por omissão, o qual será invocado com a combinação de teclas <keycombo action="simul">&Ctrl;<keycap>I</keycap> </keycombo>. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term><guimenuitem>Verificar Tudo...</guimenuitem></term>
     <listitem>
       <para>Verifica todas as mensagens deste ficheiro. </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 actual e vai avançando até ao fim do ficheiro. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term><guimenuitem>Verificar o Actual...</guimenuitem></term>
     <listitem>
       <para>Verifica ortograficamente apenas a mensagem actual. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term><guimenuitem>Verificar o Texto Seleccionado...</guimenuitem></term>
     <listitem>
       <para>Se existir algum texto seleccionado no editor da <acronym>msgstr</acronym>, esta opção ficará disponível e irá verificar ortograficamente apenas este texto. </para>
     </listitem>
   </varlistentry>
</variablelist>
</sect2>

<sect2 id="kbabel-tags">
<title>Traduzir &XML;, <acronym>HTML</acronym>, ...</title>
<para>As linguagens de formatação são usadas cada vez mais no <acronym>GUI</acronym>. O projecto do &kde; também usa os ficheiros <acronym>PO</acronym> para traduzir os ficheiros de documentação de DocBook (que é também uma linguagem de formatação). O &kbabel; contém algumas funcionalidades para suportar esta tecnologia. </para>
<note>
<para>Aqui, iremos descrever apenas as funções relacionadas com as marcas ('tags') usadas na formatação em si. O outro problema introduzido pelas linguagens de formatação é a tradução dos textos mais compridos. Este item é tratado pela funcionalidade de <emphasis>diff</emphasis> (diferenças), que é descrito <link linkend="kbabel-diff">na secção seguinte</link>. </para>
</note>
<para>A versão actual do &kbabel; é capaz de encontrar quais as marcas que são usadas no <acronym>msgid</acronym> e possibilita facilmente o acesso às mesmas, recorrendo às acções seguintes em <guimenu>Editar</guimenu>: </para>

<variablelist>
<varlistentry>
    <term>
        <guimenuitem>Inserir a Marca Seguinte</guimenuitem>
    </term>
    <listitem>
      <para>
        <action>Isto introduz a próxima marca encontrada no 'msgid' na tradução. O &kbabel; irá procurar a marca a ser introduzida, contando o número de marcas desde o início da tradução. </action>
      </para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term>
      <menuchoice><guimenu>Editar</guimenu> <guisubmenu>Inserir uma 'Tag'</guisubmenu> </menuchoice>
    </term>
    <listitem>
      <para>
        <action>Este sub-menu contém todas as diferentes marcas de formatação encontradas no texto original em inglês. Se seleccionar uma marca, você poderá introduzi-la na posição actual do cursor no texto traduzido. </action>
      </para>
    </listitem>
  </varlistentry>
</variablelist>
</sect2>

<sect2 id="kbabel-diff">
<title>Mostrar a diferença</title>
<para>Como foi explicado anteriormente, as aplicações actuais, tentando ser amigáveis, contêm um conjunto de textos descritivos grandes, incluindo a sua formatação. Se um programador alterar uma parte do texto, o sistema do 'gettext' da &GNU; irá, na melhor das hipóteses manter a tradução anterior e marcá-la como aproximada. (No pior dos casos, você irá perder a tradução por completo, dependendo do tamanho das alterações do texto). Isto funciona bem, se um <acronym>msgid</acronym> for curto, porque aí poderá encontrar as alterações rapidamente. Agora se o texto for grande o suficiente, você debater-se-á à procura do que foi alterado (por exemplo, poderá ser a mudança apenas de um artigo pela equipa de correcção ortográfica). </para>
<para>Para o ajudar, o &kbabel; poderá pedir para ver o <acronym>msgid</acronym> original e mostrar a diferença. As alterações são mostradas graficamente no editor do <guilabel>Texto Original</guilabel>. A forma exacta poderá ser definida na <link linkend="preferences-editor-appearance">janela de configuração do &kbabel;</link>. O <menuchoice><guimenu>Ferramentas</guimenu> <guisubmenu>'Diff'</guisubmenu> <guimenuitem>Mostrar as Diferenças</guimenuitem> </menuchoice> irá mostrar as diferenças que foram encontradas. Para ver o texto actual, sem estar misturado com o texto original, use a opção <menuchoice><guimenu>Ferramentas</guimenu> <guisubmenu>'Diff'</guisubmenu> <guimenuitem>Mostrar o Texto Original</guimenuitem> </menuchoice>. </para>
<para>Você poderá activar ou desactivar a pesquisa automática das diferenças se escolher a opção <menuchoice><guimenu>Ferramentas</guimenu> <guisubmenu>'Diff'</guisubmenu> <guimenuitem>Modo do 'Diff'</guimenuitem> </menuchoice>. Quando o modo do 'diff' está activo, a procura das diferenças começa quando você for para outra mensagem. </para>
<para>Como sempre, você poderá usar as origens diferentes para procurar a versão anterior do texto, estando todas elas definidas na <link linkend="preferences-diffmode">janela de configuração do &kbabel;</link>: </para>
<variablelist>
   <varlistentry>
     <term>Base de Dados de Traduções</term>
     <listitem>
       <para>Você poderá usar a Base de Dados de Traduções para procurar as diferenças. Recomendamos fortemente que active o armazenamento automático das mensagens traduzidas na Base de Dados de Traduções na <link linkend="database-fill"> janela de configuração da Base de Dados de Traduções </link>. Este modo poderá ser activado pela opção <guilabel>Usar as mensagens da Base de Dados de Traduções </guilabel>. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term>Árvore dos ficheiros antigos</term>
     <listitem>
       <para>Isto só será usado se a procura na Base de Dados de Traduções estiver desactivada. Ao definir a <guilabel>Pasta de base dos ficheiros 'diff'</guilabel> você poderá escolher no &kbabel;, qual o ficheiro a usar nas diferenças. Ele usa a localização relativa do ficheiro aberto e usa essa localização relativa na pasta aqui indicada. Se existir um ficheiro correspondente, este será usado. Para poder utilizar este modo, você deverá fazer uma cópia dos ficheiros antigos antes de cada actualização. </para>
     </listitem>
   </varlistentry>
   <varlistentry>
     <term>Ficheiro escolhido manualmente</term>
     <listitem>
       <para>Se a possibilidade anterior não resultar, você poderá sempre definir manualmente o ficheiro com as diferenças ao escolher a opção <menuchoice> <guimenu>Ferramentas</guimenu><guisubmenu>'Diff'</guisubmenu> <guimenuitem>Abrir Ficheiro para 'Diff'</guimenuitem></menuchoice>. </para>
     </listitem>
   </varlistentry>
</variablelist>
<note>
<para>A pesquisa das diferenças nem sempre é correcta, porque o ficheiro <acronym>PO</acronym> não contém nenhuma referência à mensagem original. </para>
</note>
</sect2>

</sect1>

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

<note><para>Esta secçã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 gravar as formas plurais do 'gettext' da &GNU;. </para></note>

<para>Cada língua em que o &kde; está traduzido precisa de ter um número correcto de formas plurais. Isto é feito ao traduzir um item no <filename>tdelibs.po</filename>. O número é definido ao seleccionar o nome de uma língua, o qual usa o mesmo número e <emphasis>regras</emphasis> para procurar a forma plural correcta. A lista actualizada dos valores possíveis poderá ser encontrada no código-fonte do 'tdelibs', no ficheiro <filename>tdecore/tdelocale.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 ficheiro PO. O &kde; só pode definir o número e tipo de formas plurais uma vez no 'tdelibs'. </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 da sua língua que deverá ser usada, dependendo das regras da sua língua. </para>
<para>A tradução de uma mensagem de uma forma plural terá de ter um formato especial. Deverá conter o número correcto de traduções (uma por cada forma plural), separadas por um fim-de-linha <literal>\n</literal>, <emphasis>sem</emphasis> a sequê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>%n ficheiro seleccionado\n
%n ficheiros seleccionados
</programlisting>
<para>Para verificar se a sua tradução contém o número correcto de formas plurais, use a opção <menuchoice><guimenu>Ferramentas</guimenu> <guisubmenu>Validação </guisubmenu> <guimenuitem>Verificar as Formas Plurais (só no KDE)</guimenuitem> </menuchoice>. </para>
</sect1>
</chapter>