---
name: "Zonemaster::Engine::Translator"
section: "3pm"
platform: "linux"
package: "libzonemaster-perl"
version: "7.1.0-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Zonemaster::Engine::Translator"
---

# Zonemaster::Engine::Translator(3pm)

translation support for Zonemaster

## NAME

Zonemaster::Engine::Translator - translation support for Zonemaster

## SYNOPSIS

```
    Zonemaster::Engine::Translator->initialize( locale => 'sv_SE.UTF-8' );
    my $trans = Zonemaster::Engine::Translator->instance;
    say $trans->to_string($entry);
```

This is a singleton class.

The instance of this class requires exclusive control over `$ENV{LC_MESSAGES}` and the program's underlying LC\_MESSAGES. At times it resets gettext's textdomain. On construction it unsets `$ENV{LC_ALL}` and from then on it must remain unset.

On systems that support `$ENV{LANGUAGE}`, this variable overrides the **locale()** attribute unless the **locale()** attribute is set to `"C"`.

## ATTRIBUTES

- locale

  The locale used for localized messages.

  ```
      say $translator->locale();
      if ( !$translator->locale( 'sv_SE.UTF-8' ) ) {
          say "failed to update locale";
      }
  ```

  The value of this attribute is mirrored in `$ENV{LC_MESSAGES}`.

  When writing to this attribute, a request is made to update the program's underlying LC\_MESSAGES. If this request fails, the attribute value remains unchanged and an empty list is returned.

  As a side effect when successfully updating this attribute gettext's textdomain is reset.

- data

  A reference to a hash with translation data. This is unlikely to be useful to end-users.

- all\_tag\_descriptions

  ## METHODS

- initialize(%args)

  Provide initial values for the single instance of this class.

  ```
      Zonemaster::Engine::Translator->initialize( locale => 'sv_SE.UTF-8' );
  ```

  This method must be called at most once and before the first call to **instance()**.

- **instance()**

  Returns the single instance of this class.

  ```
      my $translator = Zonemaster::Engine::Translator->instance;
  ```

  If **initialize()** has not been called prior to the first call to **instance()**, it is the same as if **initialize()** had been called without arguments.

- new(%args)

  Use of this method is deprecated.

  - locale

    If no initial value is provided to the constructor, one is determined by calling setlocale( LC\_MESSAGES, "" ).

- to\_string($entry)

  Takes a Zonemaster::Engine::Logger::Entry object as its argument and returns a translated string with the timestamp, level, message and arguments in the entry.

- translate\_tag($entry)

  Takes a Zonemaster::Engine::Logger::Entry object as its argument and returns a translation of its tag and arguments.

- test\_case\_description($testcase)

  Takes a string (test case ID) and returns the translated test case description.

- BUILD

  Internal method that's only mentioned here to placate Pod::Coverage.
