On Thu, Mar 05, 2026 at 05:39:52AM -0300, Jamenson Espindula wrote:
> Below is the actual content of the 't2a_modify_translations.pm':
> 
>  = = = transcription begins = = =

It would be much easier if you attached the file, and also it could
allow me to check the actual encoding.  Once transcripted, some
information on the actual file, in particular how characters are
encoded is lost.

>     1
> 
>     2 use strict;
> 
>     3 use warnings;
> 
>     4 use utf8

A ; is missing on the use utf8 line, which explains why you have an
error message below.  Should be:

use utf8;

> 
>     5
> 
>     6 my %translations = (
> 
>     7   'pt_BR' => {
> 
>     8         'error@arrow{}' => {'' => 'error@arrow{}'},
> 
>     9         'Next' => {'NodeNext direction string' => 'Próximo'},
> 
>    10         '   ' => {'' => '   '},
> 
>    11         'Table of contents' => {'Contents direction description'
> => 'Sumário'},
> 
>    12         'Contents' => {'Contents direction string' => 'Conteúdo'},
> 
>    13         'Index' => {'Index direction description' => 'Índice'},
> 
>    14         'Index' => {'Index direction string' => 'Índice'},
> 
>    15         ' ? ' => {'' => ' ? '},
> 
>    16         '{number} {section_title}' => {'' => '{number} 
> {section_title}'},
> 
>    17         'Appendix {number} {section_title}' => {'' => 'Anexo
> {number} {section_title}'},
> 
>    18         'Short Table of Contents' => {'shortcontents section
> heading' => 'Sumaríssimo'},
> 
>    19         'Table of Contents' => {'contents section heading' => 
> 'Sumário'},
> 
>    20         '{element_text} ({title})' => {'' => '{element_text} 
> ({title})'},
> 
>    21         'Previous' => {'NodePrev direction string' => 'Anterior'},
> 
>    22         'Up' => {'NodeUp direction string' => 'Acima'},
> 
>    23         'see {reference_name}' => {'' => 'veja-se {reference_name}'},
> 
>    24         'See {reference_name}' => {'' => 'Veja-se {reference_name}'},
> 
>    25         '{reference} in @cite{{book}}' => {'' => '{reference} em
> @cite{{book}}'},
> 
>    26         'see @cite{{book_reference}}' => {'' => 'veja-se
> @cite{{book_reference}}'},
> 
>    27         'see {reference} in @cite{{book}}' => {'' => 'veja-se
> {reference} em @cite{{book}}'},
> 
>    28         '{reference_name}' => {'' => '{reference_name}'},
> 
>    29         'See @cite{{book_reference}}' => {'' => 'Veja-se
> @cite{{book_reference}}'},
> 
>    30         'See {reference} in @cite{{book}}' => {'' => 'Veja-se
> {reference} em @cite{{book}}'},
> 
>    31         'Footnotes' => {'footnotes section heading' => 'Notas de 
> Rodapé'},
> 
>    32         '{explained_string} ({explanation})' => {'' =>
> '{explained_string} ({explanation})'},
> 
>    33         '@b{{quotation_arg}:} ' => {'' => '@b{{quotation_arg}:} '},
> 
>    34         '@center --- @emph{{author}}' => {'' => '@center ---
> @emph{{author}}'},
> 
>    35         '{category}: ' => {'' => '{category}: '},
> 
>    36         '{category} of @code{{class}}: ' => {'' => '{category}
> da @code{{class}}: '},
> 
>    37         '@cite{{book_reference}}' => {'' => '@cite{{book_reference}}'},
> 
>    38         'Jump to' => {'' => 'Pular para'},
> 
>    39         'The node you are looking for is at {href}.' => {'' =>
> 'O nó que você está procurando está em {href}.'},
> 
>    40         'Index' => {'Index direction description' => 'Índice'},
> 
>    41         'Function' => {'category of functions for @defun' => 'Função'},
> 
>    42         'Special Form' => {'' => 'Forma Especial'},
> 
>    43         'Instance Variable' => {'category of instance variables
> in object-oriented programming for @defivar' => 'Variável de
> Instância'},
> 
>    44         'Instance Variable' => {'category of instance variables
> with data type in object-oriented programming for @deftypeivar' =>
> 'Variável de Instância'},
> 
>    45    },
> 
>    46 );
> 
>    47
> 
>    48 my $seen_translated = {};
> 
>    49 my $translated_lang = 'pt_BR';
> 
>    50
> 
>    51 sub my_format_translate_message($$$;$) {
> 
>    52   my ($converter, $string, $lang, $translation_context) = @_;
> 
>    53
> 
>    54   $translation_context = '' if (!defined($translation_context));
> 
>    55
> 
>    56   # uncomment next lines to have the strings to translate being printed
> 
>    57   #if (!exists($seen_translated->{"$string-$translation_context"})) {
> 
>    58   #  if (!exists($translations{$translated_lang})
> 
>    59   #      or !exists($translations{$translated_lang}->{$string})
> 
>    60   #      or !exists($translations{$translated_lang}->{$string}
> 
>    61   #                                        ->{$translation_context})) {
> 
>    62   #    print STDERR "       # '$string' =>
> {'$translation_context' => ''},\n";
> 
>    63   #  }
> 
>    64   #  $seen_translated->{"$string-$translation_context"} = 1;
> 
>    65   #}
> 
>    66
> 
>    67   return $string if (!defined($lang) or $lang eq '');
> 
>    68   if (exists($translations{$lang})
> 
>    69       and exists($translations{$lang}->{$string})
> 
>    70       and
> exists($translations{$lang}->{$string}->{$translation_context})) {
> 
>    71     my $translation =
> $translations{$lang}->{$string}->{$translation_context};
> 
>    72     return $translation;
> 
>    73   }
> 
>    74   return undef;
> 
>    75 }
> 
>    76
> 
>    77 texinfo_register_formatting_function('format_translate_message',
> 
>    78                                           
> \&my_format_translate_message);
> 
>    79
> 
>    80 sub my_reset_seen_translated {
> 
>    81   $seen_translated = {};
> 
>    82
> 
>    83   return 0;
> 
>    84 }
> 
>    85
> 
>    86 texinfo_register_handler('setup', \&my_reset_seen_translated);
> 
>    87
> 
>    88 1;
> 
>  = = = transcription ends = = =
> 
> Output of 'texi2any --html --init-file ./t2a_modify_translations.pm':
> 
> = = = transcription begins = = =
> 
>     1 texi2any: error parsing ./t2a_modify_translations.pm: Global
> symbol "%translations" requires explicit package name (did you forget
> to declare "my %translations"?) at ./t2a_modify_translations.pm line
> 68.
> 
>     2 Global symbol "%translations" requires explicit package name
> (did you forget to declare "my %translations"?) at
> ./t2a_modify_translations.pm line 69.
> 
>     3 Global symbol "%translations" requires explicit package name
> (did you forget to declare "my %translations"?) at
> ./t2a_modify_translations.pm line 70.
> 
>     4 Global symbol "%translations" requires explicit package name
> (did you forget to declare "my %translations"?) at
> ./t2a_modify_translations.pm line 71.
> 
>  = = = transcription ends = = =
> 
> > Also you need to make sure that the strings in
> > t2a_modify_translations.pm are actually UTF-8 encoded.
> >
> 
> Output of 'LC_ALL=C file t2a_modify_translations.pm':
> 
> t2a_modify_translations.pm: Unicode text, UTF-8 text, with CRLF line 
> terminators

What is your platform?  If you are not on Windows, it would be strange
to have CRLF line terminators.

> Output of '/usr/bin/perl --version':
> 
> This is perl 5, version 42, subversion 0 (v5.42.0) built for
> x86_64-linux-thread-multi

That is recent enough (even more than the one I use).

-- 
Pat

Reply via email to