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
1038
|
<!-- <?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
>[email protected]</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 — 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 "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 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, ⪚ <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, ⪚ 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 — 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 — 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 — 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, ⪚ 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, ⪚ o & 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, ⪚ <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>
<!--
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
-->
|