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
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
|
<!-- <?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—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 "Open a Playlist"</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, ⪚ <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, ⪚ 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— 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—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, ⪚ 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, ⪚ & 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, ⪚ <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
>tdelibs.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 'tdelibs', no arquivo <filename
>tdecore/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 '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 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
-->
|