---
name: "Log::Report::Extract"
section: "3pm"
platform: "linux"
package: "liblog-report-lexicon-perl"
version: "1.12-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Log::Report::Extract"
---

# Log::Report::Extract(3pm)

Collect translatable strings

## NAME

Log::Report::Extract - Collect translatable strings

## INHERITANCE

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

## 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

- Log::Report::Extract-\>**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\] )

  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.

## SEE ALSO

This module is part of Log-Report-Lexicon distribution version 1.12, built on April 18, 2025. Website: *http://perl.overmeer.net/CPAN/*

## LICENSE

Copyrights 2007-2025 by \[Mark Overmeer \<markov@cpan.org\>\]. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See *http://dev.perl.org/licenses/*
