There is an ongoing outage on the primary CPAN mirror. It is possible to work around the issue by using MetaCPAN as a mirror.

NAME

Log::Report::Extract - Collect translatable strings

INHERITANCE

Log::Report::Extract is extended by
  Log::Report::Extract::PerlPPI

SYNOPSIS

# See the extensions

DESCRIPTION

This module helps maintaining the POT files, updating the list of message-ids which are kept in them. After initiation, the process() method needs to be called with all files which changed since last processing and the existing PO files will get updated accordingly. If no translations exist yet, one textdomain/xx.po file will be created.

METHODS

Constructors

$class->new(%options)

-Option --Default
 charset  'utf-8'
 lexicon  <required>
charset => STRING

The character-set used in the PO files.

lexicon => DIRECTORY

The place where the lexicon is kept. When no lexicon is defined yet, this will be the directory where an domain/xx.po file will be created.

Accessors

$obj->addPot($domain, $pot, %options)

$obj->charset()

Returns the character-set used inside the POT files.

$obj->domains()

Returns a sorted list of all known domain names.

$obj->index()

Returns the Log::Report::Lexicon::Index object, which is listing the files in the lexicon directory tree.

$obj->pots($domain)

Returns the list of Log::Report::Lexicon::POT objects which contain the tables for $domain.

Processors

$obj->cleanup(%options)

Remove all references.

-Option--Default
 keep    []
keep => HASH|ARRAY

Keep the information about these filename, either specified as ARRAY of names, or a HASH where the keys are the named.

$obj->process($filename, %options)

Update the domains mentioned in the $filename. All text-domains defined in the file will get updated automatically, but should not written before all files are processed.

Returned is the number of messages found in this particular file.

$obj->showStats( [$domains] )

Show a status about the DOMAIN (by default all domains). At least mode verbose is required to see this.

The statistics are sent to (Log::Report) dispatchers which accept notice and info. This could be syslog. When you have no explicit dispatchers in your program, the level of detail get controlled by the 'mode':

use Log::Report mode => 'DEBUG';  # or 'VERBOSE'
$obj->store( $domain, $filename, $linenr, $context, $msg, [$msg_plural] )

Register the existence of a ($msg, $msg_plural) in all POTs of the $domain.

$obj->write( [$domain], %options )

Update the information of the files related to $domain, by default all processed DOMAINS.

All information known about the written $domain is removed from the cache. The %options are passed to the write() of the specific lexicon manager.

DIAGNOSTICS

Fault: cannot create lexicon directory $dir: $!

Cast by new()

Error: extractions require an explicit lexicon directory

Cast by new()

Error: no context tags allowed in plural `$msgid'

Cast by store()

Info: starting new textdomain $domain, template in $filename

Cast by write()

SEE ALSO

This module is part of Log-Report-Lexicon version 1.14, built on September 08, 2025. Website: http://perl.overmeer.net/CPAN/

LICENSE

For contributors see file ChangeLog.

This software is copyright (c) 2007-2025 by Mark Overmeer.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.