{
   "project" : "Log-Report",
   "distribution" : "Log-Report",
   "index" : {
      "id823" : {
         "intro" : "<p>Returns <code>true</code> if the previous try block did produce a terminal\nerror.  This \"try\" object is assigned to <code>$@</code>, and the usual\nperl syntax is <code>if($@) {...error-handler...}</code>.</p>\n",
         "type" : "overload",
         "call" : "overload <b><a name=\"id823\">bool</a></b>; boolean",
         "id" : "id823",
         "name" : "bool"
      },
      "id79" : {
         "id" : "id79",
         "name" : "_join",
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Which STRING to use when an ARRAY is being filled-in as parameter.</p>\n"
      },
      "id483" : {
         "call" : "$obj-&gt;<b><a name=\"id483\">index</a></b>",
         "id" : "id483",
         "name" : "index",
         "intro" : "<p>Returns a HASH of all defined PO objects, organized by msgid.  Please try\nto avoid using this: use <a class=\"jump\" href=\"id487\">msgid()</a> for lookup and <a class=\"jump\" href=\"id489\">add()</a> for adding\ntranslations.</p>\n",
         "type" : "i_method"
      },
      "id433" : {
         "intro" : "<p>Remove all references.</p>\n",
         "options" : [
            [
               "id434",
               "id435"
            ]
         ],
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id433\">cleanup</a></b>(&nbsp;%options&nbsp;)",
         "id" : "id433",
         "name" : "cleanup"
      },
      "id911" : {
         "name" : "tags",
         "id" : "id911",
         "call" : "$obj-&gt;<b><a name=\"id911\">tags</a></b>",
         "type" : "i_method",
         "intro" : "<p>[1.44] Returns the LIST of tags which are defined for this message; message\ngroup indicators, as often found in exception-based programming.</p>\n"
      },
      "id437-id289" : {
         "diagnostics" : [
            "id438-id289"
         ],
         "call" : "$obj-&gt;<b><a name=\"id437\">write</a></b>(&nbsp;[$domain], %options&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id437\">Log::Report::Extract::write()</a></p>",
         "extends" : "id437",
         "id" : "id437-id289",
         "name" : "write"
      },
      "id1099" : {
         "value" : "&lt;basename <tt class=\"parameter\">$0</tt>>",
         "name" : "identity",
         "id" : "id1099",
         "type" : "default"
      },
      "id909-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id909\">Log::Report::Message::context()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id909\">context</a></b>",
         "id" : "id909-id217",
         "name" : "context",
         "extends" : "id909"
      },
      "id786-id1174" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>",
         "params" : "CLASS",
         "type" : "option",
         "extends" : "id786",
         "id" : "id786-id1174",
         "name" : "package"
      },
      "id796-id818" : {
         "id" : "id796-id818",
         "name" : "max_line",
         "extends" : "id796",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "params" : "INTEGER",
         "type" : "option"
      },
      "id416" : {
         "type" : "chapter",
         "path" : "METHODS",
         "nest" : [
            "id417",
            "id425",
            "id431"
         ],
         "level" : 1,
         "id" : "id416",
         "name" : "METHODS"
      },
      "id465" : {
         "value" : "<code>undef</code>",
         "id" : "id465",
         "name" : "filename",
         "type" : "default"
      },
      "id438-id289" : {
         "id" : "id438-id289",
         "name" : "starting new textdomain $domain, template in $filename",
         "extends" : "id438",
         "subroutine" : "id437",
         "type" : "info",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id437\">Log::Report::Extract::write()</a></p>"
      },
      "id790-id1090" : {
         "name" : "linenr",
         "id" : "id790-id1090",
         "extends" : "id790",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "params" : "INTEGER",
         "type" : "option"
      },
      "id791-id944" : {
         "extends" : "id791",
         "value" : "&lt;required&gt;",
         "id" : "id791-id944",
         "name" : "linenr",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "type" : "default"
      },
      "id835" : {
         "type" : "default",
         "id" : "id835",
         "name" : "on_die",
         "value" : "'ERROR'"
      },
      "id1293" : {
         "path" : "DETAILS",
         "nest" : [
            "id1294"
         ],
         "type" : "chapter",
         "level" : 1,
         "id" : "id1293",
         "name" : "DETAILS"
      },
      "id792" : {
         "params" : "STRING",
         "type" : "option",
         "id" : "id792",
         "name" : "call"
      },
      "id304" : {
         "path" : "METHODS/Processors",
         "type" : "section",
         "subroutines" : [
            "id439-id289",
            "id433-id289",
            "id437-id289",
            "id305",
            "id436-id289"
         ],
         "level" : 2,
         "id" : "id304",
         "name" : "Processors"
      },
      "id425" : {
         "id" : "id425",
         "name" : "Attributes",
         "level" : 2,
         "subroutines" : [
            "id428",
            "id430",
            "id426",
            "id429",
            "id427"
         ],
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id890-id217" : {
         "id" : "id890-id217",
         "name" : "_class",
         "extends" : "id890",
         "value" : "<code>undef</code>",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id889\">Log::Report::Message::new(_class)</a></p>"
      },
      "id885" : {
         "type" : "option",
         "params" : "$tags|\\@tags",
         "intro" : "<p>Alternative name for <tt class=\"parameter\">_tag</tt></p>\n",
         "name" : "_tags",
         "id" : "id885"
      },
      "id1103" : {
         "value" : "'user'",
         "name" : "facility",
         "id" : "id1103",
         "type" : "default"
      },
      "id644" : {
         "id" : "id644",
         "name" : "charset",
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>The character-set which is used for the file.  When not specified, it is\ntaken from the \"Content-Type\" field in the PO-file.</p>\n"
      },
      "id771-id1174" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id771\">Log::Report::Dispatcher::name()</a></p>",
         "extends" : "id771",
         "id" : "id771-id1174",
         "name" : "name",
         "call" : "$obj-&gt;<b><a name=\"id771\">name</a></b>"
      },
      "id863" : {
         "type" : "overload",
         "intro" : "<p>An (accidental) use of concatenation (a dot where a comma should be\nused) would immediately stringify the object.  This is avoided by\noverloading that operation.</p>\n",
         "name" : "'.'",
         "id" : "id863",
         "call" : "overload <b><a name=\"id863\">'.'</a></b>; concatenation"
      },
      "id973" : {
         "type" : "error",
         "name" : "Log4perl level '$level' must be in 0-5",
         "id" : "id973",
         "subroutine" : "id967"
      },
      "id1131" : {
         "path" : "METHODS",
         "nest" : [
            "id1132",
            "id1134",
            "id1152"
         ],
         "type" : "chapter",
         "level" : 1,
         "name" : "METHODS",
         "id" : "id1131"
      },
      "id1012" : {
         "id" : "id1012",
         "name" : "assert",
         "call" : "<b><a name=\"id1012\">assert</a></b>(&nbsp;$message&nbsp;)",
         "type" : "function",
         "intro" : "<p>Short for <code>report ASSERT =&gt; $message</code></p>\n"
      },
      "id788-id958" : {
         "extends" : "id788",
         "name" : "filename",
         "id" : "id788-id958",
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>"
      },
      "id1097" : {
         "type" : "default",
         "id" : "id1097",
         "name" : "format_reason",
         "value" : "'IGNORE'"
      },
      "id650" : {
         "subroutine" : "id643",
         "id" : "id650",
         "name" : "cannot read superblock from $fn: $!",
         "type" : "fault"
      },
      "id514" : {
         "name" : "DESCRIPTION",
         "id" : "id514",
         "type" : "chapter",
         "intro" : "<p>This module is administering one translation object.  Sets of PO\nrecords are kept in a POT file, implemented in <a class=\"jump\" href=\"id441\">Log::Report::Lexicon::POT</a>.</p>\n",
         "path" : "DESCRIPTION",
         "level" : 1
      },
      "id211" : {
         "name" : "DESCRIPTION",
         "id" : "id211",
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>This module will allow libraries (helper modules) to have a dependency\nto a small module instead of the full Log-Report distribution.  The full\npower of <code>Log::Report</code> is only released when the main program uses that\nmodule.  In that case, the module using the 'Optional' will also use the\nfull <a class=\"jump\" href=\"id979\">Log::Report</a>, otherwise the dressed-down <a class=\"jump\" href=\"id117\">Log::Report::Minimal</a>\nversion.</p>\n\n<p>For the full documentation:</p>\n\n<ul>\n<li>see <a class=\"jump\" href=\"id979\">Log::Report</a> when it is used by main<br />\n<li>see <a class=\"jump\" href=\"id117\">Log::Report::Minimal</a> otherwise<br />\n</ul>\n\n<p>The latter provides the same functions from the former, but is the\nsimpelest possible way.</p>\n",
         "level" : 1
      },
      "id440-id289" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id439\">Log::Report::Extract::store()</a></p>",
         "type" : "error",
         "subroutine" : "id439",
         "name" : "no context tags allowed in plural `$msgid'",
         "id" : "id440-id289",
         "extends" : "id440"
      },
      "id797" : {
         "type" : "default",
         "name" : "max_line",
         "id" : "id797",
         "value" : "<code>undef</code>"
      },
      "id273" : {
         "type" : "i_method",
         "intro" : "<p>Forwards the <tt class=\"parameter\">%options</tt> to <a class=\"jump\" href=\"id342\">Log::Report::Template::addTextdomain()</a>.</p>\n",
         "examples" : [
            "id274"
         ],
         "call" : "$obj-&gt;<b><a name=\"id273\">addTextDomain</a></b>(&nbsp;%options&nbsp;)",
         "id" : "id273",
         "name" : "addTextDomain"
      },
      "id787-id958" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>",
         "value" : "&lt;required&gt;",
         "extends" : "id787",
         "id" : "id787-id958",
         "name" : "package"
      },
      "id775" : {
         "name" : "needs",
         "id" : "id775",
         "call" : "$obj-&gt;<b><a name=\"id775\">needs</a></b>(&nbsp;[$reason]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Returns the list with all REASONS which are needed to fulfill this\ndispatcher's needs.  When disabled, the list is empty, but not forgotten.</p>\n\n<p>[0.999] when only one <tt class=\"parameter\">$reason</tt> is specified, it is returned if in the\nlist.</p>\n"
      },
      "id696" : {
         "intro" : "<p>The tools which handle translations expect the msgctxt to be static.\nFor instance, contain a filename where the string is used to disambigue\naccidental collissions of the use of the same msgid for different\npurposes.</p>\n\n<p>Now, we have designed far more flexible contexts.  We need to generate all\npossible msgctxt values while extracting msgids to update the PO-files.\nTherefore, we need a map-file.</p>\n\n<p>The context maps are included in a configuration file which is passed to\nxgettext-perl and to the program which uses contexts.\nSee <a class=\"jump\" href=\"id1149\">Log::Report::Domain::readConfig()</a>.</p>\n\n<p>Example of such configuration file: (JSON syntax and Perl syntax)</p>\n<pre>\n  === JSON ===                    ==== Perl ==   =\n {{\n     \"context_rules\" : {             context_rules =&gt; {\n        \"gender\" : [                    gender =&gt; [\n           \"male\",                         'male',\n           \"female\"                        'female'\n        ]                               ]\n     }                               }\n  }                               }\n</pre>\n\n<p>or</p>\n<pre>\n  {                               {\n     \"context_rules\" : {             context_rules =&gt; {\n        \"gender\" : {                    gender =&gt; {\n           \"alternatives\" : [              alternatives =&gt; [\n              \"male\",                         'male',\n              \"female\",                       'female',\n              \"unknown\"                       'unknown'\n           ]                               ]\n           ... more config for 'gender'    ...\n        }                                }\n     }                               }\n  }                               }\n</pre>\n\n<p>As \"alternatives\", we list the alternatives as known by the application\ninternals.  Each msgid which contains a <code>{&lt;gender}</code> mark will be\nreplicated three times, in each language table.  Each copy will be marked\nwith a different value from \"alternatives\".</p>\n\n<p>However, languages differ.  For instance, in some language we may address\nthe <code>unknown</code> gender as being a male person.  In other languages, the\ntranslation can express this \"unknown\" personality.  To get this to work,\nyou can use the <code>msgctxt</code> construct.</p>\n\n<p>The default <code>msgctxt</code>, as used in the previous example, is simply mapping\nthe alternatives directly on msgctxt values which are the same:</p>\n<pre>\n  {                                { context_rules =&gt;\n   \"context_rules\" : {                { gender =&gt;\n      \"gender\" : {                      { default =&gt; { qw/\n         \"default\" : {                      female  female\n            \"female\" : \"female\",            male    male\n            \"male\" : \"male\"                 unknown male / }\n            \"unknown\" : \"male\",         , 'nl,de' =&gt; { qw/\n         },                                 unknown x    / }\n         \"nl,de\" : {\n            \"unknown\" : \"x\"\n         }                              }\n       ... more configuration ...\n       }\n    ... more context rules ...\n    }                                 }\n  }                                }\n</pre>\n\n<p>By default, there will only be two msgid copies in a language file,\nbecause at run-time the \"unknown\" is mapped on \"male\".  An exception\nfor the Dutch (nl*) and German (de*) tables, which apparently support\nthe third gender.</p>\n\n<p>If you are not interested for a certain tag, then put it on 'IGNORE'\nas default or for your language.</p>\n<pre>\n  \"default\" : \"IGNORE\",           default =&gt; 'IGNORE'\n  \"nl\": \"IGNORE\"                  nl =&gt; 'IGNORE'\n</pre>\n",
         "path" : "DETAILS/Using context_rules/Configuration",
         "type" : "subsection",
         "level" : 3,
         "id" : "id696",
         "name" : "Configuration"
      },
      "id798" : {
         "id" : "id798",
         "name" : "max_params",
         "params" : "INTEGER",
         "type" : "option"
      },
      "id1325" : {
         "level" : 1,
         "type" : "chapter",
         "intro" : "<pre> Log::Report::Minimal::Domain is extended by\n   <a class=\"jump\" href=\"id1127\">Log::Report::Domain</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "id" : "id1325",
         "name" : "INHERITANCE"
      },
      "id1116" : {
         "subroutines" : [
            "id771-id1090",
            "id774-id1090",
            "id775-id1090",
            "id772-id1090",
            "id773-id1090",
            "id1117"
         ],
         "id" : "id1116",
         "name" : "Attributes",
         "level" : 2,
         "path" : "METHODS/Attributes",
         "type" : "section"
      },
      "id1173-id618" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1173\">Log::Report::Translator::load()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id1173\">load</a></b>(&nbsp;$domain, $locale&nbsp;)",
         "extends" : "id1173",
         "name" : "load",
         "id" : "id1173-id618"
      },
      "id264" : {
         "distribution" : "Dancer2-Plugin-LogReport",
         "package" : "Dancer2::Template::TTLogReport",
         "inheritance" : {
            "extends" : [
               "Moo::Object"
            ]
         },
         "id" : "id264",
         "name" : "Dancer2::Template::TTLogReport",
         "title" : "Template toolkit engine with Log::Report translations for Dancer2",
         "is_pure_pod" : false,
         "chapters" : [
            "id265",
            "id1326",
            "id266",
            "id267",
            "id268",
            "id276"
         ],
         "version" : "2.03"
      },
      "id784" : {
         "name" : "collectLocation",
         "id" : "id784",
         "call" : "$any-&gt;<b><a name=\"id784\">collectLocation</a></b>",
         "type" : "ci_method",
         "intro" : "<p>Collect the information to be displayed as line where the error occurred.</p>\n"
      },
      "id561" : {
         "type" : "warning",
         "id" : "id561",
         "name" : "do not understand line at $where:\\n  $line",
         "subroutine" : "id557"
      },
      "id734" : {
         "path" : "METHODS/Managing PO's/Translation",
         "type" : "subsection",
         "subroutines" : [
            "id736",
            "id735"
         ],
         "level" : 3,
         "id" : "id734",
         "name" : "Translation"
      },
      "id121" : {
         "path" : "FUNCTIONS",
         "nest" : [
            "id123",
            "id133",
            "id145",
            "id155"
         ],
         "type" : "chapter",
         "subroutines" : [
            "id122"
         ],
         "level" : 1,
         "id" : "id121",
         "name" : "FUNCTIONS"
      },
      "id779" : {
         "call" : "$obj-&gt;<b><a name=\"id779\">translate</a></b>(&nbsp;\\%options, $reason, $message&nbsp;)",
         "name" : "translate",
         "id" : "id779",
         "intro" : "<p>See <a class=\"jump\" href=\"id804\">Processing the message</a>, which describes the actions taken by\nthis method.  A string is returned, which ends on a new-line, and\nmay be multi-line (in case a stack trace is produced).</p>\n",
         "type" : "i_method"
      },
      "id656" : {
         "type" : "fault",
         "subroutine" : "id643",
         "id" : "id656",
         "name" : "cannot read msgids from $fn, need $size at $loc: $!"
      },
      "id758" : {
         "type" : "default",
         "name" : "accept",
         "id" : "id758",
         "value" : "<code>depend on mode</code>"
      },
      "id1177" : {
         "id" : "id1177",
         "name" : "DESCRIPTION",
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>This dispatchers produces output to and <code>Log::Dispatch</code> back-end.\n(which will NOT be automatically installed for you).</p>\n\n<p>The REASON for a message often uses names which are quite similar to the\nlog-levels used by Log::Dispatch.  However: they have a different\napproach.  The REASON of <a class=\"jump\" href=\"id979\">Log::Report</a> limits the responsibility of the\nprogrammer to indicate the cause of the message: whether it was able to\nhandle a certain situation.  The Log::Dispatch levels are there for the\nuser's of the program.  However: the programmer does not known anything\nabout the application (in the general case).  This is cause of much of\nthe trickery in Perl programs.</p>\n\n<p>The default translation table is list below.  You can change the mapping\nusing <a class=\"jump\" href=\"id1181\">new(to_level)</a>.  See example in SYNOPSIS.</p>\n",
         "level" : 1
      },
      "id1246" : {
         "id" : "id1246",
         "name" : "format",
         "call" : "$obj-&gt;<b><a name=\"id1246\">format</a></b>",
         "type" : "i_method"
      },
      "id744-id637" : {
         "type" : "error",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id743\">Log::Report::Lexicon::Table::setupPluralAlgorithm()</a></p>",
         "name" : "invalid plural-form algorithm '$alg'.",
         "id" : "id744-id637",
         "extends" : "id744",
         "subroutine" : "id743"
      },
      "id1147-id375" : {
         "extends" : "id1147",
         "name" : "the native_language '$locale' is not a valid locale",
         "id" : "id1147-id375",
         "subroutine" : "id1138",
         "type" : "error",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1138\">Log::Report::Domain::configure()</a></p>"
      },
      "id912-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id912\">Log::Report::Message::classes()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id912\">classes</a></b>",
         "id" : "id912-id217",
         "name" : "classes",
         "extends" : "id912"
      },
      "id1129" : {
         "id" : "id1129",
         "name" : "SYNOPSIS",
         "intro" : "<pre>  # internal usage\n  use Log::Report::Domain;\n  my $domain = Log::Report::Domain-&gt;new(name =&gt; $name);\n\n  # find a ::Domain object\n  use Log::Report 'my-domain';\n  my $domain = textdomain 'my-domain'; # find domain config\n  my $domain = textdomain;             # config of this package\n\n  # explicit domain configuration\n  package My::Package;\n  use Log::Report 'my-domain';         # set textdomain for package\n\n  textdomain $name, %configure;        # set config, once per program\n  (textdomain $name)-&gt;configure(%configure); # same\n  textdomain-&gt;configure(%configure);   # same if current package in $name\n\n  # implicit domain configuration\n  package My::Package;\n  use Log::Report 'my-domain', %configure;\n\n  # external file for configuration (perl or json format)\n  use Log::Report 'my-domain', config =&gt; $filename;\n\n  use Log::Report 'my-domain';\n  textdomain-&gt;configure(config =&gt; $filename);\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter",
         "level" : 1
      },
      "id690" : {
         "id" : "id690",
         "name" : "Contexts in Log::Report",
         "type" : "section",
         "path" : "DETAILS/Contexts in Log::Report",
         "intro" : "<p>For <a class=\"jump\" href=\"id979\">Log::Report</a>, the power of \"context\" is extended with selecting\nbetween alternatives for the use of a msgid <b>on the same spot</b>.</p>\n\n<p>For instance, the gender of the user of the website determines whether\n`he' or `she' needs to be used in the translation.  In this example,\nthe gender is set as context keyword in the message:</p>\n<pre>\n  my ($name, $sex) = ('Jack', 'male');\n  print __x\"{name&lt;gender} found his key\", name =&gt; $name,\n    _context =&gt; \"gender=$sex\";\n</pre>\n\n<p>This would also be possible in traditional gettext, although probably\nrarely used.  A complication is that the scripts to maintain the po\ntables are not too smart; do not understand complex code constructs.\nProbably this would beed needed:</p>\n<pre>\n  if(sex==MALE)\n  {   printf pgettext('male', \"%s found his key\\n\", name);\n  }\n  else\n  {   printf pgettext('female', \"%s found her key\\n\", name);\n  }\n</pre>\n",
         "level" : 2
      },
      "id521" : {
         "value" : "<code>undef</code>",
         "id" : "id521",
         "name" : "msgid_plural",
         "type" : "default"
      },
      "id1057" : {
         "subroutine" : "id1045",
         "id" : "id1057",
         "name" : "no domain for configuration options in $fn line $line",
         "type" : "error"
      },
      "id794-id958" : {
         "params" : "ARRAY",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>",
         "id" : "id794-id958",
         "name" : "params",
         "extends" : "id794"
      },
      "id224" : {
         "distribution" : "Dancer2-Plugin-LogReport",
         "inheritance" : {
            "extends" : [
               "Dancer::Logger::Abstract",
               "Exporter"
            ]
         },
         "package" : "Dancer::Logger::LogReport",
         "name" : "Dancer::Logger::LogReport",
         "id" : "id224",
         "is_pure_pod" : false,
         "title" : "reroute Dancer logs into Log::Report",
         "chapters" : [
            "id225",
            "id1337",
            "id226",
            "id227"
         ],
         "version" : "2.03"
      },
      "id757" : {
         "id" : "id757",
         "name" : "accept",
         "intro" : "<p>See <a class=\"jump\" href=\"id187\">Log::Report::Util::expand_reasons()</a> for possible values.  If\nthe initial mode for this dispatcher does not need verbose or debug\ninformation, then those levels will not be accepted.</p>\n\n<p>When the mode equals \"NORMAL\" (the default) then <tt class=\"parameter\">accept</tt>'s default\nis <code>NOTICE- </code>.  In case of \"VERBOSE\" it will be <code>INFO- </code>, <code>ASSERT</code>\nresults in <code>ASSERT- </code>, and \"DEBUG\" in <code>ALL</code>.</p>\n",
         "params" : "$reasons|\\@reasons",
         "type" : "option"
      },
      "id1038" : {
         "name" : "of <a class=\"jump\" href=\"id1037\">N__w()</a>\n",
         "id" : "id1038",
         "intro" : "<pre>  my @colors = (N__\"red\", N__\"green\", N__\"blue\");\n  my @colors = N__w\"red green blue\";  # same\n  print __ $colors[1];\n</pre>\n",
         "type" : "example"
      },
      "id161" : {
         "name" : "DESCRIPTION",
         "id" : "id161",
         "level" : 1,
         "path" : "DESCRIPTION",
         "intro" : "<p>Read <a class=\"jump\" href=\"id1127\">Log::Report::Domain</a>.</p>\n",
         "type" : "chapter"
      },
      "id1187" : {
         "id" : "id1187",
         "name" : "callbacks",
         "type" : "option",
         "params" : "CODE|\\@CODE",
         "intro" : "<p>See Log::Dispatch::Output.</p>\n"
      },
      "id791-id1082" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "id" : "id791-id1082",
         "name" : "linenr",
         "extends" : "id791",
         "value" : "&lt;required&gt;"
      },
      "id752" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  use Log::Report;\n\n  # The following will be created for you automatically\n  dispatcher 'PERL', 'default', accept =&gt; 'NOTICE-';\n  dispatcher close =&gt; 'default';  # after deamonize\n\n  dispatcher 'FILE', 'log',\n    mode =&gt; 'DEBUG', to =&gt; '/var/log/mydir/myfile';\n\n  # Full package name is used, same as 'FILE'\n  dispatcher Log::Report::Dispatch::File =&gt; 'stderr',\n    to =&gt; \\*STDERR, accept =&gt; 'NOTICE-';\n</pre>\n",
         "name" : "SYNOPSIS",
         "id" : "id752"
      },
      "id839" : {
         "type" : "i_method",
         "intro" : "<p>Check whether the try stops message which were produced for <tt class=\"parameter\">$reason</tt>.</p>\n",
         "id" : "id839",
         "name" : "hides",
         "call" : "$obj-&gt;<b><a name=\"id839\">hides</a></b>(&nbsp;$reason&nbsp;)"
      },
      "id1253" : {
         "path" : "METHODS/Logging",
         "type" : "section",
         "subroutines" : [
            "id781-id1228",
            "id785-id1228",
            "id778-id1228",
            "id784-id1228",
            "id1254",
            "id780-id1228",
            "id783-id1228",
            "id779-id1228"
         ],
         "id" : "id1253",
         "name" : "Logging",
         "level" : 2
      },
      "id1179" : {
         "subroutines" : [
            "id1180"
         ],
         "level" : 2,
         "name" : "Constructors",
         "id" : "id1179",
         "path" : "METHODS/Constructors",
         "type" : "section"
      },
      "id429" : {
         "type" : "i_method",
         "intro" : "<p>Returns the list of <a class=\"jump\" href=\"id441\">Log::Report::Lexicon::POT</a> objects which contain\nthe tables for <tt class=\"parameter\">$domain</tt>.</p>\n",
         "name" : "pots",
         "id" : "id429",
         "call" : "$obj-&gt;<b><a name=\"id429\">pots</a></b>(&nbsp;$domain&nbsp;)"
      },
      "id889" : {
         "intro" : "<p>Deprecated alternative for <tt class=\"parameter\">_tag</tt>.</p>\n",
         "type" : "option",
         "params" : "$tags|\\@tags",
         "name" : "_class",
         "id" : "id889"
      },
      "id964" : {
         "name" : "Limitiations",
         "id" : "id964",
         "type" : "subsection",
         "path" : "DESCRIPTION/Categories/Limitiations",
         "intro" : "<p>The global <code>$caller_depth</code> concept of Log::Log4perl is broken.\nThat variable is used to find the filename and line number of the logged\nmessages.  But these messages may have been caught, rerouted, eval'ed, and\notherwise followed a unpredictable multi-leveled path before it reached\nthe Log::Log4perl dispatcher.  This means that layout patterns <code>%F</code>\nand <code>%L</code> are not useful in the generic case, maybe in your specific case.</p>\n",
         "level" : 3
      },
      "id874" : {
         "type" : "default",
         "id" : "id874",
         "name" : "_plural",
         "value" : "<code>undef</code>"
      },
      "id790-id818" : {
         "id" : "id790-id818",
         "name" : "linenr",
         "extends" : "id790",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "type" : "option",
         "params" : "INTEGER"
      },
      "id780-id1174" : {
         "extends" : "id780",
         "name" : "collectStack",
         "id" : "id780-id1174",
         "call" : "$any-&gt;<b><a name=\"id780\">collectStack</a></b>(&nbsp;[$maxdepth]&nbsp;)",
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id780\">Log::Report::Dispatcher::collectStack()</a></p>"
      },
      "id924" : {
         "intro" : "<p>Return the concatenation of the prepend, msgid, and append strings.  Variable\nexpansions within the msgid is not performed.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id924\">untranslated</a></b>",
         "id" : "id924",
         "name" : "untranslated"
      },
      "id75" : {
         "intro" : "<pre>  use String::Print;           # all\n  use String::Print 'sprinti'; # only sprinti\n\n  use String::Print 'printi',   # only printi\n    modifiers   =&gt; [ EUR   =&gt; sub {sprintf \"%5.2f e\", $_[0]} ],\n    serializers =&gt; [ UNDEF =&gt; sub {'-'} ],\n    defaults    =&gt; [ DT =&gt; { standard =&gt; 'ISO' } ];\n\n  printi \"price: {p EUR}\", p =&gt; 3.1415; # price: ␣␣3.14 e\n  printi \"count: {c}\", c =&gt; undef;      # count: -\n  my $s = sprinti \"price: {p EUR}\", p =&gt; 7;  # output in $s\n</pre>\n",
         "type" : "example",
         "id" : "id75"
      },
      "id1189" : {
         "type" : "error",
         "subroutine" : "id1180",
         "name" : "Log::Dispatch level '$level' not understood",
         "id" : "id1189"
      },
      "id1333" : {
         "level" : 1,
         "type" : "chapter",
         "intro" : "<pre> Log::Report::Dispatcher is extended by\n   <a class=\"jump\" href=\"id944\">Log::Report::Dispatcher::Callback</a>\n   <a class=\"jump\" href=\"id1228\">Log::Report::Dispatcher::File</a>\n   <a class=\"jump\" href=\"id958\">Log::Report::Dispatcher::Log4perl</a>\n   <a class=\"jump\" href=\"id1174\">Log::Report::Dispatcher::LogDispatch</a>\n   <a class=\"jump\" href=\"id1082\">Log::Report::Dispatcher::Perl</a>\n   <a class=\"jump\" href=\"id1090\">Log::Report::Dispatcher::Syslog</a>\n   <a class=\"jump\" href=\"id818\">Log::Report::Dispatcher::Try</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "name" : "INHERITANCE",
         "id" : "id1333"
      },
      "id796-id1090" : {
         "extends" : "id796",
         "name" : "max_line",
         "id" : "id796-id1090",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "type" : "option",
         "params" : "INTEGER"
      },
      "id1301" : {
         "type" : "subsection",
         "path" : "DETAILS/Processing the message/Filters",
         "level" : 3,
         "id" : "id1301",
         "name" : "Filters"
      },
      "id1127" : {
         "inheritance" : {
            "extends" : [
               "Log::Report::Minimal::Domain"
            ],
            "extended_by" : [
               "Log::Report::Template::Textdomain"
            ]
         },
         "package" : "Log::Report::Domain",
         "distribution" : "Log-Report",
         "is_pure_pod" : false,
         "title" : "administer one text-domain",
         "name" : "Log::Report::Domain",
         "id" : "id1127",
         "chapters" : [
            "id1128",
            "id1321",
            "id1129",
            "id1130",
            "id1131",
            "id1159"
         ],
         "version" : "1.45"
      },
      "id1059" : {
         "type" : "error",
         "name" : "translator must be a $pkg object for $domain",
         "id" : "id1059",
         "subroutine" : "id1045"
      },
      "id896-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id895\">Log::Report::Message::new(_lang)</a></p>",
         "type" : "default",
         "extends" : "id896",
         "value" : "&lt;from locale&gt;",
         "id" : "id896-id217",
         "name" : "_lang"
      },
      "id905-id217" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id905\">Log::Report::Message::msgid()</a></p>",
         "extends" : "id905",
         "id" : "id905-id217",
         "name" : "msgid",
         "call" : "$obj-&gt;<b><a name=\"id905\">msgid</a></b>"
      },
      "id1149-id375" : {
         "name" : "readConfig",
         "id" : "id1149-id375",
         "extends" : "id1149",
         "call" : "$any-&gt;<b><a name=\"id1149\">readConfig</a></b>(&nbsp;$filename&nbsp;)",
         "diagnostics" : [
            "id1150-id375",
            "id1151-id375"
         ],
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1149\">Log::Report::Domain::readConfig()</a></p>",
         "type" : "ci_method"
      },
      "id1163" : {
         "id" : "id1163",
         "name" : "Log::Report::Translator",
         "title" : "base implementation for translating messages",
         "is_pure_pod" : false,
         "distribution" : "Log-Report",
         "package" : "Log::Report::Translator",
         "inheritance" : {
            "extended_by" : [
               "Log::Report::Translator::Gettext",
               "Log::Report::Translator::POT"
            ]
         },
         "version" : "1.45",
         "chapters" : [
            "id1164",
            "id1315",
            "id1165",
            "id1166",
            "id1167"
         ]
      },
      "id469" : {
         "type" : "default",
         "name" : "charset",
         "id" : "id469",
         "value" : "&lt;required&gt;"
      },
      "id925" : {
         "id" : "id925",
         "name" : "concat",
         "examples" : [
            "id926"
         ],
         "call" : "$obj-&gt;<b><a name=\"id925\">concat</a></b>(&nbsp;$text|$message, [$prepend]&nbsp;)",
         "intro" : "<p>This method implements the overloading of concatenation, which is used\nto delay translations even longer.  When <tt class=\"parameter\">$prepend</tt> is <code>true</code>, the <tt class=\"parameter\">$text</tt>\nor <tt class=\"parameter\">$message</tt> (another <code>Log::Report::Message</code>) will be prepended, otherwise\nit is appended in the final display.</p>\n",
         "type" : "i_method"
      },
      "id772-id958" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id772\">Log::Report::Dispatcher::type()</a></p>",
         "name" : "type",
         "id" : "id772-id958",
         "extends" : "id772",
         "call" : "$obj-&gt;<b><a name=\"id772\">type</a></b>"
      },
      "id1062" : {
         "id" : "id1062",
         "name" : "needs",
         "examples" : [
            "id1063"
         ],
         "call" : "$class-&gt;<b><a name=\"id1062\">needs</a></b>(&nbsp;$reason, [$reasons]&nbsp;)",
         "intro" : "<p>Returns <code>true</code> when the reporter needs any of the <tt class=\"parameter\">$reasons</tt>, when any of\nthe active dispatchers is collecting messages in the specified level.\nThis is useful when the processing of data for the message is relatively\nexpensive, but for instance only required in debug mode.</p>\n",
         "type" : "c_method"
      },
      "id1049" : {
         "type" : "default",
         "value" : "'NORMAL'",
         "name" : "mode",
         "id" : "id1049"
      },
      "id904-id217" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id904\">Log::Report::Message::prepend()</a></p>",
         "extends" : "id904",
         "name" : "prepend",
         "id" : "id904-id217",
         "call" : "$obj-&gt;<b><a name=\"id904\">prepend</a></b>"
      },
      "id473" : {
         "type" : "error",
         "subroutine" : "id467",
         "name" : "unsupported charset $charset in $fn.",
         "id" : "id473"
      },
      "id1272" : {
         "type" : "subsection",
         "path" : "METHODS/Managing PO's/Translation",
         "level" : 3,
         "name" : "Translation",
         "id" : "id1272",
         "subroutines" : [
            "id589",
            "id588"
         ]
      },
      "id897" : {
         "intro" : "<p>[1.00] Set the <tt class=\"parameter\">@keywords</tt> which can be used to select alternatives\nbetween translations.  Read the DETAILS section in\n<a class=\"jump\" href=\"id669\">Log::Report::Translator::Context</a></p>\n",
         "type" : "option",
         "params" : "$keyword|\\@keywords",
         "id" : "id897",
         "name" : "_context"
      },
      "id1311" : {
         "id" : "id1311",
         "name" : "Automatic parameters",
         "level" : 2,
         "type" : "section",
         "nest" : [
            "id1312",
            "id1313"
         ],
         "path" : "DETAILS/Automatic parameters"
      },
      "id796-id944" : {
         "extends" : "id796",
         "id" : "id796-id944",
         "name" : "max_line",
         "type" : "option",
         "params" : "INTEGER",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>"
      },
      "id427-id697" : {
         "name" : "charset",
         "id" : "id427-id697",
         "extends" : "id427",
         "call" : "$obj-&gt;<b><a name=\"id427\">charset</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id427\">Log::Report::Extract::charset()</a></p>"
      },
      "id781-id1174" : {
         "name" : "addSkipStack",
         "id" : "id781-id1174",
         "extends" : "id781",
         "call" : "$any-&gt;<b><a name=\"id781\">addSkipStack</a></b>(&nbsp;@CODE&nbsp;)",
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id781\">Log::Report::Dispatcher::addSkipStack()</a></p>"
      },
      "id791-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "type" : "default",
         "name" : "linenr",
         "id" : "id791-id818",
         "extends" : "id791",
         "value" : "&lt;required&gt;"
      },
      "id933" : {
         "id" : "id933",
         "name" : "Messages with plural forms",
         "nest" : [
            "id934"
         ],
         "level" : 2,
         "type" : "section",
         "intro" : "<p>The <a class=\"jump\" href=\"id1032\">Log::Report::__xn()</a> message constructor is used when you need\na different translation based on the count of one of the inserted\nfields.</p>\n<pre>\n  fault __x\"cannot read {file}\", file =&gt; $fn;\n  # --&gt; FAULT: cannot read /etc/shadow: Permission denied\\n\n\n  print __xn\"directory {dir} contains one file\",\n            \"directory {dir} contains {nr_files} files\",\n            scalar(@files),            # (1) (2) (3)\n            nr_files =&gt; scalar @files, # (4)\n            dir      =&gt; $dir;\n</pre>\n\n<p>(1) this required third parameter is used to switch between the different\nplural forms.  English has only two forms, but some languages have many\nmore.</p>\n\n<p>(2) the \"scalar\" keyword is not needed, because the third parameter is\nin SCALAR context.  You may also pass <code> \\@files </code> there, because ARRAYs\nwill be converted into their length.  A HASH will be converted into the\nnumber of keys in the HASH.</p>\n\n<p>(3) you could also simply pass a reference to the ARRAY: it will take\nthe length as counter.  With a HASH, it will count the number of keys.</p>\n\n<p>(4) the <code>scalar</code> keyword is required here, because it is LIST context:\notherwise all filenames will be filled-in as parameters to <code>__xn()</code>.\nSee below for the available <code>_count</code> value, to see how the <code>nr_files</code>\nparameter can disappear.</p>\n<pre>\n  print __xn\"directory {dir} contains one file\",\n            \"directory {dir} contains {_count} files\",\n            \\@files, dir =&gt; $dir;\n</pre>\n\n<p>Some languages need more than two translations based on the counter.\nThis is solved by the translation table definition.  The two msgids\ngive here are simply the fallback, when there is not translation table\nactive.</p>\n",
         "path" : "DETAILS/Messages with plural forms"
      },
      "id1243" : {
         "type" : "error",
         "id" : "id1243",
         "name" : "unknown format parameter `$what'",
         "subroutine" : "id1234"
      },
      "id309" : {
         "name" : "pattern",
         "id" : "id309",
         "value" : "&lt;from new(pattern)&gt;",
         "type" : "default"
      },
      "id983" : {
         "name" : "FUNCTIONS",
         "id" : "id983",
         "level" : 1,
         "nest" : [
            "id984",
            "id1010",
            "id1022",
            "id1039",
            "id1044",
            "id1061"
         ],
         "path" : "FUNCTIONS",
         "type" : "chapter"
      },
      "id649" : {
         "name" : "unsupported file type (magic number is $magic)",
         "id" : "id649",
         "subroutine" : "id643",
         "type" : "error"
      },
      "id177-id1127" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id176\">Log::Report::Minimal::Domain::configure(formatter)</a></p>",
         "type" : "default",
         "value" : "<code>PRINTI</code>",
         "extends" : "id177",
         "name" : "formatter",
         "id" : "id177-id1127"
      },
      "id916" : {
         "id" : "id916",
         "name" : "valueOf",
         "intro" : "<p>Lookup the named <tt class=\"parameter\">$parameter</tt> for the message.  All pre-defined names\nhave their own method which should be used with preference.</p>\n",
         "type" : "i_method",
         "examples" : [
            "id917"
         ],
         "call" : "$obj-&gt;<b><a name=\"id916\">valueOf</a></b>(&nbsp;$parameter&nbsp;)"
      },
      "id965" : {
         "path" : "METHODS",
         "nest" : [
            "id966",
            "id974",
            "id976"
         ],
         "type" : "chapter",
         "level" : 1,
         "name" : "METHODS",
         "id" : "id965"
      },
      "id428-id697" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id428\">Log::Report::Extract::domains()</a></p>",
         "extends" : "id428",
         "name" : "domains",
         "id" : "id428-id697",
         "call" : "$obj-&gt;<b><a name=\"id428\">domains</a></b>"
      },
      "id1282" : {
         "name" : "Filters",
         "id" : "id1282",
         "level" : 3,
         "path" : "DETAILS/Processing the message/Filters",
         "type" : "subsection"
      },
      "id875" : {
         "intro" : "<p>The message label, which refers to some translation information.\nUsually a string which is close the English version of the message.\nThis will also be used if there is no translation possible/known.</p>\n\n<p>Leading white-space <code>\\s</code> will be added to <tt class=\"parameter\">_prepend</tt>.  Trailing\nwhite-space will be added before <tt class=\"parameter\">_append</tt>.</p>\n",
         "type" : "option",
         "params" : "$msgid",
         "id" : "id875",
         "name" : "_msgid"
      },
      "id898" : {
         "type" : "default",
         "value" : "<code>undef</code>",
         "id" : "id898",
         "name" : "_context"
      },
      "id790-id1082" : {
         "type" : "option",
         "params" : "INTEGER",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "extends" : "id790",
         "name" : "linenr",
         "id" : "id790-id1082"
      },
      "id1138-id375" : {
         "call" : "$obj-&gt;<b><a name=\"id1138\">configure</a></b>(&nbsp;%options&nbsp;)",
         "diagnostics" : [
            "id1147-id375",
            "id1148-id375"
         ],
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1138\">Log::Report::Domain::configure()</a></p>",
         "type" : "i_method",
         "extends" : "id1138",
         "name" : "configure",
         "id" : "id1138-id375",
         "options" : [
            [
               "id1145-id375",
               "id1146-id375"
            ],
            [
               "id1143-id375",
               "id1144-id375"
            ],
            [
               "id176-id375",
               "id177-id375"
            ],
            [
               "id1141-id375",
               "id1142-id375"
            ],
            [
               "id1139-id375",
               "id1140-id375"
            ],
            [
               "id174-id375",
               "id175-id375"
            ]
         ]
      },
      "id160" : {
         "name" : "SYNOPSIS",
         "id" : "id160",
         "level" : 1,
         "type" : "chapter",
         "intro" : "<pre>  use Log::Report::Minimal::Domain;\n  my $domain = Log::Report::Minimal::Domain-&gt;new(name =&gt; $name);\n\n  # normal usage\n  use Log::Report::Optional;       # or Log::Report itself\n  my $domain = textdomain $name;   # find config\n  textdomain $name, %configure;    # set config, only once.\n</pre>\n",
         "path" : "SYNOPSIS"
      },
      "id745-id637" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id745\">Log::Report::Lexicon::Table::nrPlurals()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id745\">nrPlurals</a></b>",
         "extends" : "id745",
         "name" : "nrPlurals",
         "id" : "id745-id637"
      },
      "id1157-id375" : {
         "call" : "$obj-&gt;<b><a name=\"id1157\">defaultContext</a></b>",
         "id" : "id1157-id375",
         "name" : "defaultContext",
         "extends" : "id1157",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1157\">Log::Report::Domain::defaultContext()</a></p>",
         "type" : "i_method"
      },
      "id172-id1127" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id172\">Log::Report::Minimal::Domain::format()</a></p>",
         "name" : "format",
         "id" : "id172-id1127",
         "extends" : "id172",
         "call" : "$obj-&gt;<b><a name=\"id172\">format</a></b>"
      },
      "id723" : {
         "type" : "c_method",
         "id" : "id723",
         "name" : "new",
         "call" : "$class-&gt;<b><a name=\"id723\">new</a></b>(&nbsp;%options&nbsp;)"
      },
      "id1166" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>A module (or distribution) has a certain way of translating messages,\nusually <code>gettext</code>.  The translator is based on some <code>textdomain</code>\nfor the message, which can be specified as option per text element,\nbut usually is package scoped.</p>\n\n<p>This base class does not translate at all: it will use the MSGID\n(and MSGID_PLURAL if available).  It's a nice fallback if the\nlanguage packs are not installed.</p>\n",
         "name" : "DESCRIPTION",
         "id" : "id1166"
      },
      "id89" : {
         "name" : "DETAILS",
         "id" : "id89",
         "nest" : [
            "id90",
            "id91",
            "id92",
            "id95",
            "id96",
            "id110",
            "id113"
         ],
         "level" : 1,
         "path" : "DETAILS",
         "intro" : "<pre>  Your manual-page reader may not support the unicode used\n  in some of the examples below.\n</pre>\n",
         "type" : "chapter"
      },
      "id520" : {
         "id" : "id520",
         "name" : "msgid_plural",
         "type" : "option",
         "params" : "$msgid"
      },
      "id691" : {
         "level" : 2,
         "path" : "DETAILS/Using context_rules",
         "intro" : "<p>In <a class=\"jump\" href=\"id979\">Log::Report</a>'s extended concept of \"contexts\", you can select between\nmultiple translations for the same msgid, when they</p>\n\n<ul>\n<li>appear with different purpose (like gnu's concept of contexts)<br />\n<li>need alternative translation sets <b>on the same spot</b><br />\n<li>interpolate global parameters in messages<br />\n</ul>\n\n<p>In the standard gettext set-up, some msgid may accidentally collide\nbetween two different uses.  For instance, whether you translate the word\n\"Open\" in the menu for \"Files\" to mean \"open a file\", and the word \"Open\"\nin the status display meaning \"the file is open\".  In some languages,\nthese translations may differ.  Using a msgctxt keyword will cause the\nsame msgid to appear twice in the PO-file.</p>\n\n<p>But, there is a much broader need for context sensitive translations,\nwhich is not in the provided by standard gettext: environmental\ninformation or parameters may influence the translation more than simply\nsolvable by inserted parameters.</p>\n\n<p>For instance, the gender of the user of the website determines whether\n`he' or `she' needs to be used.  In this example, the gender is set as\ncontext keyword in the message:</p>\n<pre>\n  $name = 'Jack';\n  print __x\"{name} found her key\", name =&gt; $name;\n</pre>\n\n<p>You may try to solve this via:</p>\n<pre>\n  my ($name, $gender) = ('Jack', 'male');\n  print __x\"{name} found {personal} key\", name =&gt; $name,\n    personal =&gt; ($gender eq 'male' ? 'his' : 'her');    # No!\n</pre>\n\n<p>This does not translate!  For one, you would need to translate <code>his</code> and\n<code>her</code> to the language as well.  But in some languages, the differences\nbetween addressed genders have more impact on the whole sentence.</p>\n\n<p>So, <a class=\"jump\" href=\"id979\">Log::Report</a> translations add extra syntax:</p>\n<pre>\n  my ($name, $gender) = ('Jack', 'male');\n  print __x\"{name&lt;gender} found her key\", name =&gt; $name,\n    _context =&gt; \"gender=$gender\";\n</pre>\n\n<p>The <code>gender</code> marking tells the translation table builder (xgettext-perl)\nand the translation handler that there is a context active.</p>\n\n<p>Now, the English PO-file has</p>\n<pre>\n  # gender alternatives 'male' and 'female'\n\n  msgctxt \"gender=male\"\n  msgid  \"{name} found his key\"\n  msgstr \"{name} found his key\"\n\n  msgctxt \"gender=female\"\n  msgid   \"{name} found his key\"\n  msgstr  \"{name} found her key\"\n</pre>\n\n<p>To make this work, both the application and the <code>xgettext-perl</code> script\nmust share information to understand which genders are available.  See\nthe section on \"Configuration\" below.</p>\n\n<p>Another example:</p>\n<pre>\n  print __x\"greetings{&lt;style}\";\n  # style alternatives 'formal' and 'informal'\n\n  msgctxt \"style=formal\"\n  msgid   \"greetings\"\n  msgstr  \"Dear Sir/Madam,\"\n\n  msgctxt \"style=informal\"\n  msgid   \"greetings\"\n  msgstr  \"Hey buddy,\"\n</pre>\n\n<p>As can be seen, the '&lt;style' marking may be added inside the '{}' of\na filled-in parameter, or may appear on its own.  These markings are\nremoved from the msgid in the PO file, so that you may freely add them to\nthe strings used in your program without disturbing existing translations.</p>\n",
         "type" : "section",
         "name" : "Using context_rules",
         "id" : "id691",
         "nest" : [
            "id692",
            "id693",
            "id694",
            "id695",
            "id696"
         ]
      },
      "id225" : {
         "id" : "id225",
         "name" : "NAME",
         "level" : 1,
         "intro" : "<p>Dancer::Logger::LogReport - reroute Dancer logs into Log::Report</p>\n",
         "path" : "NAME",
         "type" : "chapter"
      },
      "id795-id958" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>",
         "extends" : "id795",
         "value" : "&lt;required&gt;",
         "name" : "params",
         "id" : "id795-id958"
      },
      "id1047" : {
         "type" : "default",
         "name" : "syntax",
         "id" : "id1047",
         "value" : "'SHORT'"
      },
      "id778-id958" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id778\">Log::Report::Dispatcher::log()</a></p>",
         "id" : "id778-id958",
         "name" : "log",
         "extends" : "id778",
         "call" : "$obj-&gt;<b><a name=\"id778\">log</a></b>(&nbsp;\\%options, $reason, $message, $domain&nbsp;)"
      },
      "id759-id958" : {
         "extends" : "id759",
         "id" : "id759-id958",
         "name" : "locale",
         "type" : "option",
         "params" : "LOCALE",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>"
      },
      "id519" : {
         "value" : "&lt;required&gt;",
         "name" : "msgid",
         "id" : "id519",
         "type" : "default"
      },
      "id1336" : {
         "name" : "INHERITANCE",
         "id" : "id1336",
         "type" : "chapter",
         "intro" : "<pre> Log::Report::Template::Extract\n   is a <a class=\"jump\" href=\"id412\">Log::Report::Extract</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "level" : 1
      },
      "id119" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # See Log::Report, most functions get \"hollow\" behavior\n  use Log::Report::Optional mode =&gt; 'DEBUG';\n</pre>\n",
         "name" : "SYNOPSIS",
         "id" : "id119"
      },
      "id756-id1082" : {
         "diagnostics" : [
            "id767-id1082",
            "id768-id1082",
            "id769-id1082"
         ],
         "call" : "$class-&gt;<b><a name=\"id756\">new</a></b>(&nbsp;$type, $name, %options&nbsp;)",
         "type" : "c_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id756\">Log::Report::Dispatcher::new()</a></p>",
         "extends" : "id756",
         "name" : "new",
         "id" : "id756-id1082",
         "options" : [
            [
               "id757-id1082",
               "id758-id1082"
            ],
            [
               "id765-id1082",
               "id766-id1082"
            ],
            [
               "id763-id1082",
               "id764-id1082"
            ],
            [
               "id759-id1082",
               "id760-id1082"
            ],
            [
               "id761-id1082",
               "id762-id1082"
            ]
         ]
      },
      "id265" : {
         "name" : "NAME",
         "id" : "id265",
         "intro" : "<p>Dancer2::Template::TTLogReport - Template toolkit engine with Log::Report translations for Dancer2</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "level" : 1
      },
      "id422-id697" : {
         "extends" : "id422",
         "value" : "'utf-8'",
         "name" : "charset",
         "id" : "id422-id697",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id421\">Log::Report::Extract::new(charset)</a></p>",
         "type" : "default"
      },
      "id785" : {
         "type" : "ci_method",
         "options" : [
            [
               "id800",
               "id801"
            ],
            [
               "id792",
               "id793"
            ],
            [
               "id788",
               "id789"
            ],
            [
               "id790",
               "id791"
            ],
            [
               "id796",
               "id797"
            ],
            [
               "id798",
               "id799"
            ],
            [
               "id786",
               "id787"
            ],
            [
               "id794",
               "id795"
            ]
         ],
         "call" : "$any-&gt;<b><a name=\"id785\">stackTraceLine</a></b>(&nbsp;%options&nbsp;)",
         "id" : "id785",
         "name" : "stackTraceLine"
      },
      "id735" : {
         "id" : "id735",
         "name" : "msgid",
         "call" : "$obj-&gt;<b><a name=\"id735\">msgid</a></b>(&nbsp;STRING, [$msgctxt]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Lookup the <a class=\"jump\" href=\"id511\">Log::Report::Lexicon::PO</a> with the <tt class=\"parameter\">STRING</tt>.\nReturns <code>undef</code> when not defined.</p>\n"
      },
      "id1222" : {
         "name" : "overrule defaults to report\n",
         "id" : "id1222",
         "type" : "example",
         "intro" : "<pre>  try { report {to =&gt; 'default'}, ERROR =&gt; 'oops!' };\n  $@-&gt;reportFatal(to =&gt; 'syslog');\n\n  my ($syslog) = $exception-&gt;throw(to =&gt; 'syslog');\n  my @disps = $@-&gt;wasFatal-&gt;throw(reason =&gt; 'WARNING');\n</pre>\n"
      },
      "id892" : {
         "name" : "_to",
         "id" : "id892",
         "value" : "<code>undef</code>",
         "type" : "default"
      },
      "id343" : {
         "intro" : "<pre>  my $domain = $templater-&gt;addTextdomain(\n    name     =&gt; 'my-project',\n    function =&gt; 'loc',   # default\n  );\n</pre>\n",
         "type" : "example",
         "id" : "id343"
      },
      "id233" : {
         "name" : "process",
         "id" : "id233",
         "call" : "$obj-&gt;<b><a name=\"id233\">process</a></b>",
         "type" : "i_method",
         "intro" : "<p><code>process()</code> is an eval, but one which expects and understands exceptions\ngenerated by <a class=\"jump\" href=\"id979\">Log::Report</a>. Any messages will be logged as normal in\naccordance with the dispatchers, but any fatal exceptions will be caught\nand handled gracefully.  This allows much simpler error handling, rather\nthan needing to test for lots of different scenarios.</p>\n\n<p>In a module, it is enough to simply use the <code>error</code> keyword in the event\nof a fatal error.</p>\n\n<p>The return value will be 1 for success or 0 if a fatal exception occurred.</p>\n\n<p>See the <a class=\"jump\" href=\"id252\">DETAILS</a> for an example of how this is expected to be used.</p>\n\n<p>This module is configured only once in your application. The other modules\nwhich make your website do not need to require this plugin, instead they\ncan <code>use Log::Report</code> to get useful functions like error and fault.</p>\n"
      },
      "id120" : {
         "intro" : "<p>This module implements the functions provided by <a class=\"jump\" href=\"id979\">Log::Report</a>, but then\nas simple as possible: no support for translations, no dispatchers, no\nsmart exceptions.  The package uses <code>Log::Report</code> in an <code>::Optional</code>\nway, the main script determines whether it wants the <code>::Minimal</code> or\nfull-blown feature set.</p>\n",
         "path" : "DESCRIPTION",
         "type" : "chapter",
         "level" : 1,
         "name" : "DESCRIPTION",
         "id" : "id120"
      },
      "id603" : {
         "id" : "id603",
         "name" : "find",
         "call" : "$obj-&gt;<b><a name=\"id603\">find</a></b>(&nbsp;$textdomain, $locale&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Lookup the best translation table, according to the rules described\nin chapter <a class=\"jump\" href=\"id606\">DETAILS</a>, below.</p>\n\n<p>Returned is a filename, or <code>undef</code> if nothing is defined for the\n<tt class=\"parameter\">$locale</tt> (there is no default on this level).</p>\n"
      },
      "id560" : {
         "type" : "warning",
         "subroutine" : "id557",
         "id" : "id560",
         "name" : "quoted line is not a continuation at $where."
      },
      "id1320" : {
         "level" : 1,
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Minimal\n   is an Exporter\n</pre>\n",
         "type" : "chapter",
         "id" : "id1320",
         "name" : "INHERITANCE"
      },
      "id763" : {
         "name" : "format_reason",
         "id" : "id763",
         "type" : "option",
         "params" : "'UPPERCASE'|'LOWERCASE'|'UCFIRST'|'IGNORE'|CODE",
         "intro" : "<p>How to show the reason text which is printed before the message. When\na CODE is specified, it will be called with a translated text and the\nreturned text is used.</p>\n"
      },
      "id777-id958" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id777\">Log::Report::Dispatcher::close()</a></p>",
         "extends" : "id777",
         "name" : "close",
         "id" : "id777-id958",
         "call" : "$obj-&gt;<b><a name=\"id777\">close</a></b>"
      },
      "id1256" : {
         "level" : 2,
         "name" : "Available back-ends",
         "id" : "id1256",
         "path" : "DETAILS/Available back-ends",
         "type" : "section"
      },
      "id283" : {
         "level" : 2,
         "intro" : "<p>If using this module on its own (such as a drop-in replacement for\nDancer2::Logger::Syslog), then the logging format is configured as with any\nother Dancer logger. If using this module with <a class=\"jump\" href=\"id228\">Dancer2::Plugin::LogReport</a>,\nthen log_format is ignored and messages are not formatted, in order to keep the\nmessage format consistent regardless of where the message was generated (be it\nanother module using <a class=\"jump\" href=\"id979\">Log::Report</a>, the plugin, or Dancer itself). In this case,\nthe log format should be configured using the applicable dispatcher (such as\n<a class=\"jump\" href=\"id1112\">Log::Report::Dispatcher::Syslog::new(format)</a>).</p>\n\n<p>If also using with the <a class=\"jump\" href=\"id979\">Log::Report</a> logging functions, then you probably want\nto set a very simple <code>logger_format</code>, because the dispatchers do already add\nsome of the fields that the default <code>simple</code> format adds.  For instance, to\nget the filename/line-number in messages depends on the dispatcher 'mode' (f.i.\n'DEBUG').</p>\n\n<p>You also want to set the Dancer2 log level to <code>debug</code>, because level filtering\nis controlled per dispatcher (as well).</p>\n\n<p>See <a class=\"jump\" href=\"id252\">DETAILS</a> for examples.</p>\n",
         "path" : "DESCRIPTION/Log Format",
         "type" : "section",
         "name" : "Log Format",
         "id" : "id283"
      },
      "id796-id1082" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "type" : "option",
         "params" : "INTEGER",
         "extends" : "id796",
         "name" : "max_line",
         "id" : "id796-id1082"
      },
      "id789" : {
         "type" : "default",
         "value" : "&lt;required&gt;",
         "id" : "id789",
         "name" : "filename"
      },
      "id166" : {
         "type" : "default",
         "value" : "&lt;required&gt;",
         "id" : "id166",
         "name" : "name"
      },
      "id269" : {
         "name" : "Constructors",
         "id" : "id269",
         "level" : 2,
         "intro" : "<p>Standard Moo with Dancer2::Core::Role::Template extensions.</p>\n",
         "path" : "METHODS/Constructors",
         "type" : "section"
      },
      "id1106" : {
         "params" : "'unix'|'inet'|'stream'|HASH",
         "type" : "option",
         "intro" : "<p>If specified, the log socket type will be initialized to this before\n<code>openlog()</code> is called.  If not specified, the system default is used.</p>\n",
         "id" : "id1106",
         "name" : "logsocket"
      },
      "id739" : {
         "intro" : "<p>Returns a list with all defined <a class=\"jump\" href=\"id511\">Log::Report::Lexicon::PO</a> objects. When\nthe string <tt class=\"parameter\">$active</tt> is given as parameter, only objects which have\nreferences are returned.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id739\">translations</a></b>(&nbsp;[$active]&nbsp;)",
         "diagnostics" : [
            "id740"
         ],
         "name" : "translations",
         "id" : "id739"
      },
      "id852" : {
         "type" : "default",
         "id" : "id852",
         "name" : "tag",
         "value" : "<code>undef</code>"
      },
      "id526" : {
         "id" : "id526",
         "name" : "comment",
         "type" : "option",
         "params" : "\\@text",
         "intro" : "<p>Translator added comments.\nSee <a class=\"jump\" href=\"id543\">addComment()</a>.</p>\n"
      },
      "id108" : {
         "name" : "Private modifiers",
         "id" : "id108",
         "level" : 3,
         "type" : "subsection",
         "intro" : "<p>You may pass your own modifiers.  A modifier consists of a selector and\na CODE, which is called when the selector matches.  The selector is either\na string or a regular expression.</p>\n<pre>\n  # in Object Oriented syntax:\n  my $f = String::Print-&gt;new(\n    modifiers =&gt; [ qr/[€₤]/ =&gt; \\&amp;money ],\n  );\n\n  # in function syntax:\n  use String::Print 'printi', 'sprinti',\n    modifiers =&gt; [ qr/[€₤]/ =&gt; \\&amp;money ];\n\n  # the implementation:\n  sub money$$$$)\n  { my ($formatter, $modif, $value, $args) = @_;\n\n      $modif eq '€' ? sprintf(\"%.2f EUR\", $value+0.0001)\n    : $modif eq '₤' ? sprintf(\"%.2f GBP\", $value/1.16+0.0001)\n    :                 'ERROR';\n  }\n</pre>\n\n<p>Using <a class=\"jump\" href=\"id86\">printp()</a> makes it a little shorter, but will become quite\ncomplex when there are more parameter in one string.</p>\n<pre>\n  printi \"price: {p€}\", p =&gt; $pi;   # price: 3.14 EUR\n  printi \"price: {p₤}\", p =&gt; $pi;   # price: 2.71 GBP\n\n  printp \"price: %{€}s\", $pi;       # price: 3.14 EUR\n  printp \"price: %{₤}s\", $pi;       # price: 2.71 GBP\n</pre>\n\n<p>This is very useful in the translation context, where the translator can\nspecify abstract formatting rules.  As example, see the (GNU) gettext\nfiles, in the translation table for Dutch into English.  The translator\ntells us which currency to use in the display.</p>\n<pre>\n  msgid  \"kostprijs: {p€}\"\n  msgstr \"price: {p₤}\"\n</pre>\n\n<p>Another example.  Now, we want to add timestamps.  In this case, we\ndecide for modifier names in <code>\\w</code>, so we need a blank to separate\nthe parameter from the modifer.</p>\n",
         "path" : "DETAILS/Interpolation: Modifiers/Private modifiers"
      },
      "id774" : {
         "id" : "id774",
         "name" : "isDisabled",
         "call" : "$obj-&gt;<b><a name=\"id774\">isDisabled</a></b>",
         "type" : "i_method"
      },
      "id312" : {
         "type" : "fault",
         "subroutine" : "id305",
         "id" : "id312",
         "name" : "cannot read template from $file: $!"
      },
      "id1296" : {
         "path" : "DETAILS/Configuring/configuring global values",
         "type" : "subsection",
         "id" : "id1296",
         "name" : "configuring global values",
         "level" : 3
      },
      "id507" : {
         "type" : "function",
         "intro" : "<p>Returns the encoding name (usable with module Encode) based on the current\ncodepage.  For example, <code>cp1252</code> for iso-8859-1 (latin-1) or <code>cp932</code> for\nShift-JIS Japanese.  Returns <code>undef</code> if the encoding cannot be identified.</p>\n",
         "name" : "charset_encoding",
         "id" : "id507",
         "call" : "<b><a name=\"id507\">charset_encoding</a></b>"
      },
      "id1324" : {
         "level" : 1,
         "intro" : "<pre> Log::Report::Dispatcher::Syslog\n   is a <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter",
         "name" : "INHERITANCE",
         "id" : "id1324"
      },
      "id210" : {
         "id" : "id210",
         "name" : "SYNOPSIS",
         "intro" : "<pre>  # Use Log::Report when already loaded, otherwise Log::Report::Minimal\n  package My::Package;\n  use Log::Report::Optional 'my-domain';\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter",
         "level" : 1
      },
      "id107" : {
         "id" : "id107",
         "name" : "Modifier: UNKNOWN or UNKNOWN($width)",
         "path" : "DETAILS/Interpolation: Modifiers/Modifier: UNKNOWN or UNKNOWN($width)",
         "intro" : "<p>[1.01] When you need to interpolate a value which is unknown and potentially\nunsafe, then use this.  For instance, you produce an internal error message\nto report that a method is used incorrectly:</p>\n<pre>\n  sub openFolder\n  {  my ($self, $folder) = @_;\n\n     blessed $folder &amp;&amp; $folder-&gt;isa('Mail::Box')\n        or printi \"ERROR: expected a Mail::Box, got a {t UNKNOWN}.\",\n              t =&gt; $folder;\n  }\n</pre>\n\n<p>Now, this <code>$folder</code> parameter is clearly wrong.  But what is it?  Did we\npass a wrong object type?  Did we pass a string?  An ARRAY maybe?</p>\n\n<p>The <code>UNKNOWN</code> modifier distibuishes the following:</p>\n<ul>\n<li>undefined values will be shown as the UNDEF serializer does;<br />\n<li>objects will be represented by their type;<br />\n<li>references will show the first part of their Data::Dumper dump; and<br />\n<li>the leading parts of strings will be shown between double quotes.<br />\n</ul>\n\n<p>Care is taken that weird characters are escaped.  The shortening uses the\n<code>trim</code> setting: either <code>'EL'</code> (default) or <code>'CHOP'</code>.</p>\n",
         "type" : "subsection",
         "level" : 3
      },
      "id651" : {
         "type" : "fault",
         "id" : "id651",
         "name" : "cannot seek to $loc in $fn for originals: $!",
         "subroutine" : "id643"
      },
      "id85" : {
         "call" : "<b><a name=\"id85\">printi</a></b>(&nbsp;[$fh], $format, %data|\\%data&nbsp;)",
         "name" : "printi",
         "id" : "id85",
         "intro" : "<p>Calls <a class=\"jump\" href=\"id76\">sprinti()</a> to fill the <tt class=\"parameter\">%data</tt> into <tt class=\"parameter\">$format</tt>, and then sends it to\nthe <tt class=\"parameter\">$fh</tt> (by default the selected file handle)</p>\n<pre>\n  open my $fh, '>:encoding(UTF-8)', $file;\n  printi $fh, ...\n\n  printi \\*STDERR, ...\n</pre>\n",
         "type" : "function"
      },
      "id126" : {
         "type" : "default",
         "name" : "errno",
         "id" : "id126",
         "value" : "<code>$!</code> or <code>1</code>"
      },
      "id799-id958" : {
         "value" : "8",
         "extends" : "id799",
         "id" : "id799-id958",
         "name" : "max_params",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>",
         "type" : "default"
      },
      "id229" : {
         "level" : 1,
         "intro" : "<p>Dancer2::Plugin::LogReport - logging, exceptions and translations in Dancer2 via Log::Report</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "name" : "NAME",
         "id" : "id229"
      },
      "id508" : {
         "id" : "id508",
         "name" : "ms_codepage_id",
         "call" : "<b><a name=\"id508\">ms_codepage_id</a></b>",
         "type" : "function",
         "intro" : "<p>Returns the numeric language ID for the current codepage language.\nFor example, the numeric value for <code>0x0409</code> for <code>en-US</code>, and <code>0x0411</code>\nfor <code>ja</code>.  Returns <code>false</code> if the codepage cannot be identified.</p>\n"
      },
      "id515" : {
         "id" : "id515",
         "name" : "METHODS",
         "level" : 1,
         "nest" : [
            "id516",
            "id537",
            "id556"
         ],
         "path" : "METHODS",
         "type" : "chapter"
      },
      "id566" : {
         "subroutine" : "id563",
         "name" : "too many plurals for '$msgid': $got > $expect.",
         "id" : "id566",
         "type" : "warning"
      },
      "id1002" : {
         "subroutine" : "id985",
         "id" : "id1002",
         "name" : "odd length parameter list with object '$msg'.",
         "type" : "error"
      },
      "id834" : {
         "intro" : "<p>When code which runs in this block exits with a die(), it will get\ntranslated into a <a class=\"jump\" href=\"id1194\">Log::Report::Exception</a> using\n<a class=\"jump\" href=\"id814\">Log::Report::Die::die_decode()</a>.  How serious are we about these\nerrors?</p>\n",
         "type" : "option",
         "params" : "'ERROR'|'PANIC'",
         "name" : "on_die",
         "id" : "id834"
      },
      "id318" : {
         "id" : "id318",
         "name" : "Predefined for Template-Toolkit",
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/Scan Patterns/Predefined for Template-Toolkit",
         "intro" : "<p>There is not a single convention for translations in <code>Template-Toolkit</code>\n(see Template), so you need to specify which version TT you use and\nwhich function name you want to use.  In extreme cases, you may even build\nseparate translation tables by simply providing using functions.</p>\n\n<p>For instance</p>\n<pre>\n  pattern =&gt; 'TT2-loc'\n</pre>\n\n<p>will scan for</p>\n<pre>\n  [% loc(\"msgid\", key =&gt; value, ...) %]\n  [% loc('msgid', key =&gt; value, ...) %]\n  [% loc(\"msgid|plural\", count, key =&gt; value, ...) %]\n\n  [% INCLUDE\n       title = loc('something')\n   %]\n\n  [% | loc(n =&gt; name) %]hi {n}[% END %]\n  [% 'hi {n}' | loc(n =&gt; name) %]\n</pre>\n\n<p>For <code>TT1</code>, the brackets can either be '[%...%]' or '%%...%%'.  The function\nname is treated case-sensitive.  Some people prefer 'l()' or 'L()'.</p>\n\n<p>The code needed</p>\n<pre>\n  # during initiation of the webserver, once in your script (before fork)\n  my $lexicons   = 'some-directory-for-translation-tables';\n  my $pots = Log::Report::Translator::POT-&gt;new(lexicons =&gt; $lexicons);\n\n  my $templater  = Log::Report::Template-&gt;new(...);\n  my $domain     = $templater-&gt;addTextdomain(\n      name     =&gt; $domainname,\n      function =&gt; 'loc',\n  );\n  $domain-&gt;configure(translator =&gt; $pots);\n\n  # part of the processing per page\n  $vars{translate_to} = 'nl_NL.utf8';\n  $templater-&gt;process($template, \\%vars, \\$output);\n</pre>\n\n<p>To generate the pod tables, run in the shell something like</p>\n<pre>\n  xgettext-perl -p $lexicons --template TT2-loc \\\n      --domain $textdomain  $templates_dir\n</pre>\n\n<p>If you want to implement your own extractor --to avoid <code>xgettext-perl</code>--\nyou need to run something like this:</p>\n<pre>\n  my $extr = Log::Report::Template::Extract-&gt;new(\n    lexicon =&gt; $output,\n    charset =&gt; 'utf-8',\n    domain  =&gt; $domain,\n    pattern =&gt; 'TT2-loc',\n  );\n  $extr-&gt;process($_) for @filenames;\n  $extr-&gt;write;\n</pre>\n"
      },
      "id50" : {
         "id" : "id50",
         "name" : "DESCRIPTION",
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>This module inserts values into (format) strings.  It provides <code>printf()</code>\nand <code>sprintf()</code> alternatives via both an object oriented and a functional\ninterface.</p>\n\n<p>Read in the <a class=\"jump\" href=\"id89\">DETAILS</a> chapter below, why this module provides a better\nalternative for <code>printf()</code>.  Also, some extended <b>examples</b> can be\nfound down there.  Take a look at them first, when you start using this\nmodule!</p>\n",
         "level" : 1
      },
      "id305" : {
         "name" : "process",
         "id" : "id305",
         "diagnostics" : [
            "id310",
            "id311",
            "id312",
            "id313",
            "id314",
            "id315"
         ],
         "call" : "$obj-&gt;<b><a name=\"id305\">process</a></b>(&nbsp;$filename, %options&nbsp;)",
         "options" : [
            [
               "id306",
               "id307"
            ],
            [
               "id308",
               "id309"
            ]
         ],
         "type" : "i_method",
         "intro" : "<p>Update the domains mentioned in the <tt class=\"parameter\">$filename</tt>.  All textdomains defined\nin the file will get updated automatically, but not written before\nall files where processed.</p>\n"
      },
      "id424" : {
         "id" : "id424",
         "name" : "cannot create lexicon directory $dir: $!",
         "subroutine" : "id418",
         "type" : "fault"
      },
      "id884" : {
         "type" : "default",
         "id" : "id884",
         "name" : "_tag",
         "value" : "[]"
      },
      "id1113" : {
         "type" : "default",
         "id" : "id1113",
         "name" : "format",
         "value" : "&lt;unchanged&gt;"
      },
      "id645" : {
         "type" : "default",
         "value" : "&lt;from header&gt;",
         "name" : "charset",
         "id" : "id645"
      },
      "id891-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id891\">Log::Report::Message::new(_to)</a></p>",
         "type" : "option",
         "params" : "$dispatcher",
         "name" : "_to",
         "id" : "id891-id217",
         "extends" : "id891"
      },
      "id969" : {
         "type" : "default",
         "name" : "to_level",
         "id" : "id969",
         "value" : "[]"
      },
      "id858" : {
         "name" : "SYNOPSIS",
         "id" : "id858",
         "level" : 1,
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # Objects created by Log::Report's __ functions\n  # Full feature description in the DETAILS section\n\n  # no interpolation\n  __\"Hello, World\";\n\n  # with interpolation\n  __x\"age {years}\", years =&gt; 12;\n\n  # interpolation for one or many\n  my $nr_files = @files;\n  __nx\"one file\", \"{_count} files\", $nr_files;\n  __nx\"one file\", \"{_count} files\", \\@files;\n\n  # interpolation of arrays\n  __x\"price-list: {prices%.2f}\", prices =&gt; \\@prices, _join =&gt; ', ';\n\n  # white-spacing on msgid preserved\n  print __\"\\tCongratulations,\\n\";\n  print \"\\t\", __(\"Congratulations,\"), \"\\n\";  # same\n\n  # Object serialization support\n  my $clone = Log::Report::Message-&gt;thaw($msg-&gt;freeze);\n</pre>\n",
         "type" : "chapter"
      },
      "id879" : {
         "params" : "$text|$message",
         "type" : "option",
         "intro" : "<p>Some <tt class=\"parameter\">$text</tt> or other <tt class=\"parameter\">$message</tt> object which need to be glued before this\nmessage object.</p>\n",
         "id" : "id879",
         "name" : "_prepend"
      },
      "id102" : {
         "id" : "id102",
         "name" : "Modifiers: YEAR, DATE(), TIME, and DT()",
         "level" : 3,
         "path" : "DETAILS/Interpolation: Modifiers/Modifiers: YEAR, DATE(), TIME, and DT()",
         "intro" : "<p>[0.91] A set of modifiers help displaying dates and times.  They are a\nlittle flexible in values they accept, but do not expect miracles: when\nit get harder, you will need to process it yourself.</p>\n\n<p>The actual treatment of a time value depends on the value.  Four\ndifferent situations:</p>\n\n<ol>\n\n\n\n<p><li>numeric<br />\nA pure numeric value is considered \"seconds since epoch\", unless it\nis smaller than 21000000, in which case it is taken as date without\nseparators.</p>\n\n\n\n<p><li>DateTime object<br />\n[1.00] Use a DateTime object to provide the value.  This way, the\nformat does not need to know whether the date is specified as object or\nas string.</p>\n<pre>\n  my $now = DateTime-&gt;now;\n  printi \"{t YEAR}\", t =&gt; $now;  # works for DateTime, epoch and string\n  printi \"{t.year YEAR}\", t =&gt; $now;  # same effect, DateTime only\n  printi \"{t.year}\", t =&gt; $now;  # will also work, not as nice\n</pre>\n\n\n\n<p><li>date format without time-zone<br />\nThe same formats are understood as in the next option, but without\ntime-zone information.  The date is processed as text as if in the\nlocal time zone, and the output in the local time-zone.</p>\n<li>date format with time-zone<br />\n\n<p>By far not all possible date formats are supported, just a few common\nversions, like</p>\n<pre>\n  2017-06-27 10:04:15 +02:00\n  2017-06-27 17:34:28.571491+02  # psql timestamp with zone\n  20170627100415+2\n  2017-06-27T10:04:15Z           # iso 8601\n  20170627                       # only for YEAR and DATE\n  2017-6-1                       # only for YEAR and DATE\n  12:34                          # only for TIME\n</pre>\n\n<p>The meaning of <code>05-04-2017</code> is ambiguous, so not supported.  Milliseconds\nget ignored.</p>\n\n<p>When the provided value has a timezone indication, it will get\nconverted into the local timezone of the observer.</p>\n\n</ol>\n\n<p>The output of <code>YEAR</code> is in format 'YYYY', where <code>TIME</code> produces 'HH:mm:ss'.\n<code>DT</code> and <code>DATE</code> are configurable.</p>\n\n<p>The DT modifier can produce different formats:</p>\n<pre>\n  DT(ASC)     : %a %b %e %T %Y       asctime output (not on Windows)\n  DT(FT)      : %F %T                YYYY-MM-DD HH:MM:SS (default)\n  DT(ISO)     : %FT%T%z              iso8601\n  DT(RFC822)  : %a, %d %b %y %T %z   email old\n  DT(RFC2822) : %a, %d %b %Y %T %z   email newer\n  DT(RFC5322) : %a, %d %b %Y %T %z   email newest [0.96]\n  DT(%F-%T)                          [1.02] any own format\n</pre>\n\n<p>You may suggest additional formats, or add your own modifier.  For your own\nformat: be warned that <code>%F</code> and <code>%T</code> are not supported on some Windows\nversions (but the difference is hidden by Perl >5.38).</p>\n\n<p>[1.02] Also, the DATE modifier can produce different formats:</p>\n<pre>\n  DATE(-)     : %Y-%m-%d\n  DATE(/)     : %Y/%m/%d\n  DATE(%d-%m-%Y)         any own pattern\n  DATE(%m-%d-%Y)         better not use this broken order\n</pre>\n\n<p>Other fields than <code>%Y</code>, <code>%m</code>, and <code>%d</code> are not supported. Other characters\nare left untouched.</p>\n\n<p>The defaults are:</p>\n<pre>\n  DATE =&gt; { format =&gt; '-' },\n  DT   =&gt; { format =&gt; 'FT' },\n</pre>\n",
         "type" : "subsection"
      },
      "id790-id944" : {
         "id" : "id790-id944",
         "name" : "linenr",
         "extends" : "id790",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "params" : "INTEGER",
         "type" : "option"
      },
      "id791-id1090" : {
         "id" : "id791-id1090",
         "name" : "linenr",
         "extends" : "id791",
         "value" : "&lt;required&gt;",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>"
      },
      "id929" : {
         "type" : "c_method",
         "call" : "$class-&gt;<b><a name=\"id929\">thaw</a></b>(&nbsp;\\%data, %options&nbsp;)",
         "id" : "id929",
         "name" : "thaw"
      },
      "id502" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>Windows uses different locales to represent languages: codepages. Programs\nwhich are written with <a class=\"jump\" href=\"id979\">Log::Report</a> however, will contain ISO encoded\nlanguage names; this module translates between them.</p>\n\n<p>The algorithms in this module are based on Win32::Locale and Win32::Codepage.</p>\n",
         "id" : "id502",
         "name" : "DESCRIPTION"
      },
      "id317" : {
         "name" : "Scan Patterns",
         "id" : "id317",
         "nest" : [
            "id318"
         ],
         "level" : 2,
         "type" : "section",
         "intro" : "<p>Various template systems use different conventions for denoting strings\nto be translated.</p>\n",
         "path" : "DETAILS/Scan Patterns"
      },
      "id857" : {
         "intro" : "<p>Log::Report::Message - a piece of text to be translated</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "level" : 1,
         "name" : "NAME",
         "id" : "id857"
      },
      "id910" : {
         "intro" : "<p>The message context for the translation table lookup.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id910\">msgctxt</a></b>",
         "id" : "id910",
         "name" : "msgctxt"
      },
      "id464" : {
         "params" : "STRING",
         "type" : "option",
         "intro" : "<p>Specify an output filename.  The name can also be specified when\n<a class=\"jump\" href=\"id475\">write()</a> is called.</p>\n",
         "name" : "filename",
         "id" : "id464"
      },
      "id743-id569" : {
         "diagnostics" : [
            "id744-id569"
         ],
         "call" : "$obj-&gt;<b><a name=\"id743\">setupPluralAlgorithm</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id743\">Log::Report::Lexicon::Table::setupPluralAlgorithm()</a></p>",
         "id" : "id743-id569",
         "name" : "setupPluralAlgorithm",
         "extends" : "id743"
      },
      "id622" : {
         "level" : 1,
         "id" : "id622",
         "name" : "METHODS",
         "type" : "chapter",
         "path" : "METHODS",
         "nest" : [
            "id623",
            "id630",
            "id633"
         ]
      },
      "id793-id944" : {
         "extends" : "id793",
         "value" : "&lt;required&gt;",
         "name" : "call",
         "id" : "id793-id944",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>"
      },
      "id476" : {
         "type" : "option",
         "params" : "BOOLEAN",
         "intro" : "<p>[1.02] Do not write records which do have a translation, but where the\nmsgid has disappeared from the sources.  By default, these records are\ncommented out (marked with '#~') but left in the file.</p>\n",
         "id" : "id476",
         "name" : "only_active"
      },
      "id1170" : {
         "name" : "Attributes",
         "id" : "id1170",
         "level" : 2,
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id800-id1082" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "type" : "option",
         "params" : "INTEGER",
         "name" : "abstract",
         "id" : "id800-id1082",
         "extends" : "id800"
      },
      "id861" : {
         "intro" : "<p>When the object is used in string context, it will get translated.\nImplemented as <a class=\"jump\" href=\"id921\">toString()</a>.</p>\n",
         "type" : "overload",
         "call" : "overload <b><a name=\"id861\">'\"\"'</a></b>; stringification",
         "id" : "id861",
         "name" : "'\"\"'"
      },
      "id1094" : {
         "nest" : [
            "id1095",
            "id1116",
            "id1118"
         ],
         "path" : "METHODS",
         "type" : "chapter",
         "id" : "id1094",
         "name" : "METHODS",
         "level" : 1
      },
      "id66" : {
         "intro" : "<p>The <tt class=\"parameter\">PAIRS</tt> are a combination of an selector and a CODE which processes the\nvalue when the modifier matches.  The selector is a string or (preferred)\na regular expression. Later modifiers with the same name overrule earlier\ndefinitions.  You may also specify an ARRAY of modifiers per <a class=\"jump\" href=\"id85\">printi()</a>\nor <a class=\"jump\" href=\"id86\">printp()</a>.</p>\n\n<p>See section <a class=\"jump\" href=\"id96\">Interpolation: Modifiers</a> about the details.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id66\">addModifiers</a></b>(&nbsp;PAIRS&nbsp;)",
         "name" : "addModifiers",
         "id" : "id66"
      },
      "id788-id1228" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>",
         "params" : "STRING",
         "type" : "option",
         "extends" : "id788",
         "name" : "filename",
         "id" : "id788-id1228"
      },
      "id773-id1174" : {
         "call" : "$obj-&gt;<b><a name=\"id773\">mode</a></b>",
         "extends" : "id773",
         "name" : "mode",
         "id" : "id773-id1174",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id773\">Log::Report::Dispatcher::mode()</a></p>",
         "type" : "i_method"
      },
      "id971" : {
         "name" : "config",
         "id" : "id971",
         "value" : "&lt;<code>undef</code>>",
         "type" : "default"
      },
      "id1032" : {
         "type" : "function",
         "intro" : "<p>Same as <a class=\"jump\" href=\"id1030\">__nx()</a>, because we have no preferred order for 'x' and 'n'.</p>\n",
         "id" : "id1032",
         "name" : "__xn",
         "call" : "<b><a name=\"id1032\">__xn</a></b>(&nbsp;$single_msgid, $plural_msgid, $count, $paurs&nbsp;)"
      },
      "id70" : {
         "id" : "id70",
         "name" : "defaults",
         "call" : "$obj-&gt;<b><a name=\"id70\">defaults</a></b>(&nbsp;$modifier&nbsp;)",
         "examples" : [
            "id71"
         ],
         "type" : "i_method",
         "intro" : "<p>[1.00] Returns the current defaults for the <tt class=\"parameter\">$modifier</tt>.</p>\n"
      },
      "id1111" : {
         "type" : "default",
         "value" : "'utf8'",
         "name" : "charset",
         "id" : "id1111"
      },
      "id1180" : {
         "options" : [
            [
               "id757-id1174",
               "id758-id1174"
            ],
            [
               "id1187",
               "id1188"
            ],
            [
               "id765-id1174",
               "id766-id1174"
            ],
            [
               "id763-id1174",
               "id764-id1174"
            ],
            [
               "id759-id1174",
               "id760-id1174"
            ],
            [
               "id1185",
               "id1186"
            ],
            [
               "id1183",
               "id1184"
            ],
            [
               "id761-id1174",
               "id762-id1174"
            ],
            [
               "id1181",
               "id1182"
            ]
         ],
         "type" : "c_method",
         "intro" : "<p>The Log::Dispatch infrastructure has quite a large number of output\nTYPEs, each extending the Log::Dispatch::Output base-class.  You\ndo not create these objects yourself: <a class=\"jump\" href=\"id979\">Log::Report</a> is doing it for you.</p>\n\n<p>The Log::Dispatch back-ends are very careful with validating their\nparameters, so you will need to restrict the options to what is supported\nfor the specific back-end.  See their respective manual-pages.  The errors\nproduced by the back-ends quite horrible and untranslated, sorry.</p>\n",
         "id" : "id1180",
         "name" : "new",
         "diagnostics" : [
            "id1189"
         ],
         "call" : "$class-&gt;<b><a name=\"id1180\">new</a></b>(&nbsp;$type, $name, %options&nbsp;)"
      },
      "id62" : {
         "id" : "id62",
         "name" : "defaults",
         "intro" : "<p>[1.00] change the defaults for some modifiers.  This is a <tt class=\"parameter\">%map</tt> of\nmodifier name to HASH with modifier specific settings.</p>\n",
         "params" : "\\%map",
         "type" : "option"
      },
      "id740-id569" : {
         "id" : "id740-id569",
         "name" : "only acceptable parameter is 'ACTIVE'",
         "extends" : "id740",
         "subroutine" : "id739",
         "type" : "error",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id739\">Log::Report::Lexicon::Table::translations()</a></p>"
      },
      "id821" : {
         "type" : "chapter",
         "intro" : "<p>The <b>try</b> works like Perl's build-in <code>eval()</code>, but implements\nreal exception handling which Perl core lacks.</p>\n\n<p>The <a class=\"jump\" href=\"id1008\">Log::Report::try()</a> function creates this <code>::Try</code> dispatcher\nobject with name 'try'.  After the <code>try()</code> is over, you can find\nthe object in <code>$@</code>.  The <code>$@</code> as <code>::Try</code> object behaves exactly\nas the <code>$@</code> produced by <code>eval</code>, but has many added features.</p>\n\n<p>The <code>try()</code> function catches fatal errors happening inside the BLOCK\n(CODE reference which is just following the function name) into the\n<code>::Try</code> object <code>$@</code>.  The errors are not automatically progressed to\nactive dispatchers.  However, non-fatal exceptions (like info or notice)\nare also collected (unless not accepted, see <a class=\"jump\" href=\"id757\">new(accept)</a>, but also\nimmediately passed to the active dispatchers (unless the reason is hidden,\nsee <a class=\"jump\" href=\"id832\">new(hide)</a>)</p>\n\n<p>After the <code>try()</code> has run, you can introspect the collected exceptions.\nTypically, you use <a class=\"jump\" href=\"id850\">wasFatal()</a> to get the exception which terminated\nthe run of the BLOCK.</p>\n",
         "path" : "DESCRIPTION",
         "level" : 1,
         "id" : "id821",
         "name" : "DESCRIPTION"
      },
      "id481" : {
         "type" : "section",
         "path" : "METHODS/Attributes",
         "level" : 2,
         "name" : "Attributes",
         "id" : "id481",
         "subroutines" : [
            "id483",
            "id484",
            "id482",
            "id485"
         ]
      },
      "id913" : {
         "call" : "$obj-&gt;<b><a name=\"id913\">addTags</a></b>(&nbsp;@tags&nbsp;)",
         "name" : "addTags",
         "id" : "id913",
         "intro" : "<p>[1.45] Add zero or more tags to this message.</p>\n",
         "type" : "i_method"
      },
      "id431" : {
         "type" : "section",
         "path" : "METHODS/Processors",
         "name" : "Processors",
         "id" : "id431",
         "level" : 2,
         "subroutines" : [
            "id439",
            "id433",
            "id437",
            "id432",
            "id436"
         ]
      },
      "id1050" : {
         "name" : "import",
         "id" : "id1050",
         "intro" : "<p>[0.998] When not specified, the <tt class=\"parameter\">syntax</tt> option determines the list\nof <tt class=\"parameter\">@functions</tt> which are being exported.  With this option, the <tt class=\"parameter\">syntax</tt>\noption is ignored and only the specified <tt class=\"parameter\">@functions</tt> are imported.</p>\n",
         "type" : "option",
         "params" : "$function|\\@functions"
      },
      "id394" : {
         "type" : "section",
         "path" : "METHODS/Attributes",
         "id" : "id394",
         "name" : "Attributes",
         "level" : 2,
         "subroutines" : [
            "id170-id375",
            "id172-id375",
            "id1138-id375",
            "id171-id375",
            "id1136-id375",
            "id1137-id375",
            "id1135-id375",
            "id1149-id375",
            "id397",
            "id395",
            "id398",
            "id399",
            "id396"
         ]
      },
      "id986" : {
         "name" : "to",
         "id" : "id986",
         "intro" : "<p>Sent the <tt class=\"parameter\">$message</tt> only to the named dispatchers.  Ignore unknown <tt class=\"parameter\">@names</tt>.\nStill, the dispatcher needs to be enabled and accept the <tt class=\"parameter\">$reason</tt>.</p>\n",
         "params" : "$name|\\@names",
         "type" : "option"
      },
      "id1140-id375" : {
         "extends" : "id1140",
         "value" : "<code>created internally</code>",
         "name" : "translator",
         "id" : "id1140-id375",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1139\">Log::Report::Domain::configure(translator)</a></p>"
      },
      "id662" : {
         "path" : "METHODS/Attributes",
         "type" : "section",
         "subroutines" : [
            "id663",
            "id664",
            "id665"
         ],
         "id" : "id662",
         "name" : "Attributes",
         "level" : 2
      },
      "id936" : {
         "name" : "Automatic parameters",
         "id" : "id936",
         "nest" : [
            "id938",
            "id939"
         ],
         "level" : 2,
         "examples" : [
            "id937"
         ],
         "type" : "section",
         "intro" : "<p>Besides the parameters which you specify yourself, <a class=\"jump\" href=\"id979\">Log::Report</a> will add\na few which can also be interpolated.  The all start with an underscore\n(<code>_</code>).  These are collected when this Message object is instantiated,\nsee the <code>%options</code> of <a class=\"jump\" href=\"id866\">new()</a>.  These parameters have a purpose, but\nyou are also permitted tp interpolate them in your message.  This may\nsimplify your coding.</p>\n\n<p>The useful names are:</p>\n\n<ul>\n\n\n<p><li>_msgid<br />\nThe MSGID as provided with <a class=\"jump\" href=\"id1023\">Log::Report::__()</a> and <a class=\"jump\" href=\"id1025\">Log::Report::__x()</a></p>\n\n\n\n<p><li>_plural, _count<br />\nThe plural (second) msgid, respectively the counter value as used with\n<a class=\"jump\" href=\"id1028\">Log::Report::__n()</a> and <a class=\"jump\" href=\"id1030\">Log::Report::__nx()</a></p>\n\n\n\n<p><li>_textdomain<br />\nThe label of the textdomain in which the translation takes place.</p>\n\n\n\n<p><li>_join<br />\nThe string which is used between elements of an ARRAY, when it gets\ninterpolated in a single field.</p>\n\n\n\n<p><li>_tags<br />\n[1.44] Tags are to be used to group exceptions, and can be queried with <a class=\"jump\" href=\"id919\">taggedWith()</a>,\n<a class=\"jump\" href=\"id1219\">Log::Report::Exception::taggedWith()</a>, or\n<a class=\"jump\" href=\"id851\">Log::Report::Dispatcher::Try::wasFatal(tag)</a>.</p>\n\n</ul>\n",
         "path" : "DETAILS/Automatic parameters"
      },
      "id787-id1228" : {
         "id" : "id787-id1228",
         "name" : "package",
         "extends" : "id787",
         "value" : "&lt;required&gt;",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>",
         "type" : "default"
      },
      "id702" : {
         "id" : "id702",
         "name" : "What is extracted?",
         "level" : 3,
         "type" : "subsection",
         "path" : "DESCRIPTION/The extraction process/What is extracted?",
         "intro" : "<p>This script will extract the msgids used in <code>__()</code>, <code>__x()</code>, <code>__xn()</code>,\nand <code>__n()</code> (implemented by <a class=\"jump\" href=\"id979\">Log::Report</a>) For instance</p>\n<pre>\n  __x\"msgid\", @more\n  __x'msgid', @more  &lt;--- no!  syntax error!\n  __x(\"msgid\", @more)\n  __x('msgid', @more)\n  __x(msgid =&gt; @more)\n</pre>\n\n<p>Besides, there are some helpers which are no-ops in the code, only to fill\nthe po-tables: <code>N__()</code>, <code>N__n()</code>, <code>N__()</code></p>\n"
      },
      "id707" : {
         "path" : "METHODS/Processors",
         "type" : "section",
         "subroutines" : [
            "id439-id697",
            "id433-id697",
            "id437-id697",
            "id708",
            "id436-id697"
         ],
         "level" : 2,
         "id" : "id707",
         "name" : "Processors"
      },
      "id574" : {
         "path" : "METHODS/Constructors",
         "type" : "section",
         "subroutines" : [
            "id731-id569",
            "id575"
         ],
         "level" : 2,
         "name" : "Constructors",
         "id" : "id574"
      },
      "id271" : {
         "intro" : "<p>Returns the <a class=\"jump\" href=\"id320\">Log::Report::Template</a> object which is performing the\ntemplate processing.  This object gets instantiated based on values\nfound in the Dancer2 configuration file.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id271\">tt</a></b>",
         "name" : "tt",
         "id" : "id271"
      },
      "id667" : {
         "call" : "$obj-&gt;<b><a name=\"id667\">msgid</a></b>(&nbsp;STRING, [$msgctxt]&nbsp;)",
         "id" : "id667",
         "name" : "msgid",
         "intro" : "<p>Lookup the translations with the <tt class=\"parameter\">STRING</tt>.  Returns a SCALAR, when only\none translation is known, and an ARRAY when we have plural forms.\nReturns <code>undef</code> when the translation is not defined.</p>\n",
         "type" : "i_method"
      },
      "id628" : {
         "name" : "charset",
         "id" : "id628",
         "value" : "&lt;<code>undef</code>>",
         "type" : "default"
      },
      "id726" : {
         "level" : 1,
         "intro" : "<p>Log::Report::Lexicon::Table - generic interface to translation tables</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "name" : "NAME",
         "id" : "id726"
      },
      "id539" : {
         "intro" : "<p>Returns the message context string, if provided.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id539\">msgctxt</a></b>",
         "name" : "msgctxt",
         "id" : "id539"
      },
      "id1136" : {
         "call" : "$obj-&gt;<b><a name=\"id1136\">translator</a></b>",
         "id" : "id1136",
         "name" : "translator",
         "type" : "i_method"
      },
      "id762-id818" : {
         "extends" : "id762",
         "value" : "'NORMAL'",
         "id" : "id762-id818",
         "name" : "mode",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>",
         "type" : "default"
      },
      "id738-id569" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id738\">Log::Report::Lexicon::Table::add()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id738\">add</a></b>(&nbsp;$po&nbsp;)",
         "name" : "add",
         "id" : "id738-id569",
         "extends" : "id738"
      },
      "id589" : {
         "intro" : "<p>Returns the translated string for <tt class=\"parameter\">$msgid</tt>.  When not specified, <tt class=\"parameter\">$count</tt> is 1\n(the single form).</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id589\">msgstr</a></b>(&nbsp;$msgid, [$count, [$msgctxt]&nbsp;)",
         "diagnostics" : [
            "id590"
         ],
         "id" : "id589",
         "name" : "msgstr"
      },
      "id715" : {
         "type" : "error",
         "subroutine" : "id708",
         "name" : "string is incorrect at line $line: $error",
         "id" : "id715"
      },
      "id766" : {
         "name" : "charset",
         "id" : "id766",
         "value" : "<code>undef</code>",
         "type" : "default"
      },
      "id668" : {
         "call" : "$obj-&gt;<b><a name=\"id668\">msgstr</a></b>(&nbsp;$msgid, [$count, $msgctxt]&nbsp;)",
         "id" : "id668",
         "name" : "msgstr",
         "intro" : "<p>Returns the translated string for <tt class=\"parameter\">$msgid</tt>.  When not specified, <tt class=\"parameter\">$count</tt> is 1\n(the singular form).</p>\n",
         "type" : "i_method"
      },
      "id189" : {
         "id" : "id189",
         "name" : "unknown reason $which in '$reasons'.",
         "subroutine" : "id187",
         "type" : "error"
      },
      "id236" : {
         "intro" : "<pre>  fatal_handler sub {\n    my ($dsl, $msg, $reason, $default) = @_;\n\n    (my $ctype = $dsl-&gt;request-&gt;header('content-type')) =~ s/;.*//;\n    return if $ctype ne 'application/json';\n    status $reason eq 'PANIC' ? 'Internal Server Error' : 'Bad Request';\n    $dsl-&gt;send_as(JSON =&gt; {\n       error       =&gt; 1,\n       description =&gt; $msg-&gt;toString,\n    }, {\n       content_type =&gt; 'application/json; charset=UTF-8',\n    });\n  };\n</pre>\n",
         "type" : "example",
         "id" : "id236",
         "name" : "Return JSON responses for requests with content-type of application/json\n"
      },
      "id139" : {
         "call" : "<b><a name=\"id139\">mistake</a></b>(&nbsp;$message&nbsp;)",
         "id" : "id139",
         "name" : "mistake",
         "type" : "function"
      },
      "id708" : {
         "call" : "$obj-&gt;<b><a name=\"id708\">process</a></b>(&nbsp;$filename, %options&nbsp;)",
         "id" : "id708",
         "name" : "process",
         "diagnostics" : [
            "id711",
            "id712",
            "id713",
            "id714",
            "id715",
            "id716"
         ],
         "intro" : "<p>Update the domains mentioned in the <tt class=\"parameter\">$filename</tt>.  All textdomains defined\nin the file will get updated automatically, but not written before\nall files where processed.</p>\n",
         "options" : [
            [
               "id709",
               "id710"
            ]
         ],
         "type" : "i_method"
      },
      "id606" : {
         "nest" : [
            "id607",
            "id609",
            "id610"
         ],
         "name" : "DETAILS",
         "id" : "id606",
         "type" : "chapter",
         "path" : "DETAILS",
         "intro" : "<p>It's always complicated to find the lexicon files, because the perl\npackage can be installed on any weird operating system.  Therefore,\nyou may need to specify the lexicon directory or alternative directories\nexplicitly.  However, you may also choose to install the lexicon files\nin between the perl modules.</p>\n",
         "level" : 1
      },
      "id801-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "type" : "default",
         "value" : "1",
         "extends" : "id801",
         "id" : "id801-id818",
         "name" : "abstract"
      },
      "id174" : {
         "intro" : "<p>Specifies the location of the configuration.  It is not allowed to\nconfigure a domain on more than one location.</p>\n",
         "type" : "option",
         "params" : "ARRAY",
         "id" : "id174",
         "name" : "where"
      },
      "id1120" : {
         "inheritance" : {
            "extends" : [
               "Mojo::Log"
            ]
         },
         "package" : "MojoX::Log::Report",
         "distribution" : "Log-Report",
         "is_pure_pod" : false,
         "title" : "divert log messages into Log::Report",
         "name" : "MojoX::Log::Report",
         "id" : "id1120",
         "chapters" : [
            "id1121",
            "id1322",
            "id1122",
            "id1123",
            "id1124"
         ],
         "version" : "1.45"
      },
      "id346" : {
         "type" : "i_method",
         "intro" : "<p>Returns a LIST with all defined textdomains, unsorted.</p>\n",
         "name" : "domains",
         "id" : "id346",
         "call" : "$obj-&gt;<b><a name=\"id346\">domains</a></b>"
      },
      "id213" : {
         "id" : "id213",
         "name" : "usedBy",
         "call" : "$class-&gt;<b><a name=\"id213\">usedBy</a></b>",
         "type" : "c_method",
         "intro" : "<p>Returns the classes which loaded the optional module.</p>\n"
      },
      "id627" : {
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Enforce character set for files.  We default to reading the character-set\nas defined in the header of each PO file.</p>\n",
         "id" : "id627",
         "name" : "charset"
      },
      "id242" : {
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id242\">notice</a></b>",
         "id" : "id242",
         "name" : "notice"
      },
      "id948" : {
         "intro" : "<pre>  sub send_mail($$$)\n  {   my ($disp, $options, $reason, $message) = @_;\n      my $msg = Mail::Send-&gt;new(Subject =&gt; $reason, To =&gt; 'admin@localhost');\n      my $fh  = $msg-&gt;open('sendmail');\n      print $fh $disp-&gt;translate($reason, $message);\n      close $fh;\n  }\n\n  dispatcher CALLBACK =&gt; 'mail', callback =&gt; \\&amp;send_mail;\n</pre>\n",
         "type" : "example",
         "id" : "id948"
      },
      "id1306" : {
         "type" : "chapter",
         "path" : "DETAILS",
         "nest" : [
            "id1307",
            "id1308",
            "id1309",
            "id1311"
         ],
         "level" : 1,
         "id" : "id1306",
         "name" : "DETAILS"
      },
      "id719" : {
         "level" : 1,
         "name" : "SYNOPSIS",
         "id" : "id719",
         "path" : "SYNOPSIS",
         "type" : "chapter"
      },
      "id185" : {
         "type" : "chapter",
         "nest" : [
            "id186",
            "id195",
            "id200"
         ],
         "path" : "FUNCTIONS",
         "id" : "id185",
         "name" : "FUNCTIONS",
         "level" : 1
      },
      "id135" : {
         "type" : "function",
         "call" : "<b><a name=\"id135\">assert</a></b>(&nbsp;$message&nbsp;)",
         "name" : "assert",
         "id" : "id135"
      },
      "id801-id1090" : {
         "extends" : "id801",
         "value" : "1",
         "name" : "abstract",
         "id" : "id801-id1090",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>"
      },
      "id800-id944" : {
         "extends" : "id800",
         "id" : "id800-id944",
         "name" : "abstract",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "type" : "option",
         "params" : "INTEGER"
      },
      "id382" : {
         "intro" : "<p>The textdomain can only be used in the indicated directories: if found\nanywhere else, it's an error.  When not specified, the function is\nallowed everywhere.</p>\n",
         "params" : "DIRECTORY|ARRAY",
         "type" : "option",
         "id" : "id382",
         "name" : "only_in_directory"
      },
      "id523" : {
         "value" : "\"\" or []",
         "name" : "msgstr",
         "id" : "id523",
         "type" : "default"
      },
      "id720" : {
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>This module is the main extry point for the distribution, but has\ncurrently no further use.  This distribution contains all components\nof <a class=\"jump\" href=\"id979\">Log::Report</a> which handle translations.</p>\n\n<p>If you do not need translations, you do not need to install this module.\nWhen you use <a class=\"jump\" href=\"id979\">Log::Report</a> and need to add translations, it may be\nvery little work: when you nicely wrote texts in the advised message\nformat like</p>\n<pre>\n  print __x\"Greetings to you, {name}\", name =&gt; $name;\n  fault __x\"cannot open file {filename}\", filename =&gt; $fn;\n</pre>\n\n<p>then all is in perfect condition to introduce translations: it requires\nvery little to no additions to the existing code!</p>\n\n<p>In this distribution:</p>\n\n<ul>\n\n\n\n<p><li><a class=\"jump\" href=\"id412\">Log::Report::Extract</a><br />\nLogic used by the <i class=\"filename\">xgettext-perl</i> binary (also included here) to\nextract msgid's from perl scripts and (website) templates.</p>\n\n\n\n<p><li><a class=\"jump\" href=\"id725\">Log::Report::Lexicon::Table</a><br />\nTranslation table administration, in PO or MO format.</p>\n\n\n\n<p><li><a class=\"jump\" href=\"id591\">Log::Report::Lexicon::Index</a><br />\nTranslation table file file administration, understanding locales,\ndomains, and attributes in the filenames.</p>\n\n\n\n<p><li><a class=\"jump\" href=\"id1163\">Log::Report::Translator</a><br />\nThe run-time component of translations.</p>\n</ul>\n",
         "level" : 1,
         "id" : "id720",
         "name" : "DESCRIPTION"
      },
      "id1018" : {
         "type" : "function",
         "intro" : "<p>Short for <code>report FAULT =&gt; $message</code></p>\n",
         "name" : "fault",
         "id" : "id1018",
         "call" : "<b><a name=\"id1018\">fault</a></b>(&nbsp;$message&nbsp;)"
      },
      "id793-id1082" : {
         "name" : "call",
         "id" : "id793-id1082",
         "value" : "&lt;required&gt;",
         "extends" : "id793",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>"
      },
      "id332" : {
         "id" : "id332",
         "name" : "modifiers",
         "value" : "[]",
         "type" : "default"
      },
      "id163" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "level" : 2,
         "name" : "Constructors",
         "id" : "id163",
         "subroutines" : [
            "id164"
         ]
      },
      "id760" : {
         "id" : "id760",
         "name" : "locale",
         "value" : "&lt;system locale&gt;",
         "type" : "default"
      },
      "id280" : {
         "level" : 1,
         "intro" : "<p>Dancer2::Logger::LogReport - reroute Dancer2 logs into Log::Report</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "id" : "id280",
         "name" : "NAME"
      },
      "id563" : {
         "diagnostics" : [
            "id566",
            "id567"
         ],
         "id" : "id563",
         "name" : "toString",
         "call" : "$obj-&gt;<b><a name=\"id563\">toString</a></b>(&nbsp;%options&nbsp;)",
         "type" : "i_method",
         "options" : [
            [
               "id564",
               "id565"
            ]
         ],
         "intro" : "<p>Format the object into a multi-lined string.</p>\n"
      },
      "id762-id1090" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>",
         "name" : "mode",
         "id" : "id762-id1090",
         "extends" : "id762",
         "value" : "'NORMAL'"
      },
      "id123" : {
         "subroutines" : [
            "id124",
            "id132",
            "id131"
         ],
         "id" : "id123",
         "name" : "Report Production and Configuration",
         "level" : 2,
         "path" : "FUNCTIONS/Report Production and Configuration",
         "type" : "section"
      },
      "id600" : {
         "type" : "section",
         "path" : "METHODS/Search",
         "level" : 2,
         "id" : "id600",
         "name" : "Search",
         "subroutines" : [
            "id601",
            "id604",
            "id602",
            "id603"
         ]
      },
      "id947" : {
         "examples" : [
            "id948"
         ],
         "level" : 1,
         "path" : "DESCRIPTION",
         "intro" : "<p>This basic file logger accepts a callback, which is called for each\nmessage which is to be logged. When you need complex things, you\nmay best make your own extension to <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>, but\nfor simple things this will do.</p>\n",
         "type" : "chapter",
         "name" : "DESCRIPTION",
         "id" : "id947"
      },
      "id1124" : {
         "level" : 1,
         "id" : "id1124",
         "name" : "METHODS",
         "path" : "METHODS",
         "nest" : [
            "id1125"
         ],
         "type" : "chapter"
      },
      "id862-id217" : {
         "id" : "id862-id217",
         "name" : "'&amp;{}'",
         "extends" : "id862",
         "call" : "overload <b><a name=\"id862\">'&amp;{}'</a></b>; used as function",
         "type" : "overload",
         "intro" : "<p>Inherited, see Log::Report::Message subroutine '&amp;{}'</p>"
      },
      "id230" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # Load the plugin into Dancer2\n  # see Log::Report::import() for %options\n  use Dancer2::Plugin::LogReport %options;\n\n  # Stop execution, redirect, and display an error to the user\n  $name or error \"Please enter a name\";\n\n  # Add debug information to logger\n  trace \"We're here\";\n\n  # Handling user errors cleanly\n  if (process( sub {MyApp::Model-&gt;create_user} )) {\n      # Success, redirect user elsewhere\n  } else {\n      # Failed, continue as if submit hadn't been made.\n      # Error message will be in session for display later.\n  }\n\n  # Send errors to template for display\n  hook before_template =&gt; sub {\n      my $tokens = shift;\n      $tokens-&gt;{messages} = session 'messages';\n      session 'messages' =&gt; [];\n  }\n</pre>\n",
         "id" : "id230",
         "name" : "SYNOPSIS"
      },
      "id535" : {
         "type" : "default",
         "value" : "<code>[]</code>",
         "id" : "id535",
         "name" : "format"
      },
      "id340" : {
         "type" : "i_method",
         "name" : "translateTo",
         "id" : "id340",
         "call" : "$obj-&gt;<b><a name=\"id340\">translateTo</a></b>(&nbsp;[$language]&nbsp;)"
      },
      "id585" : {
         "name" : "filename",
         "id" : "id585",
         "call" : "$obj-&gt;<b><a name=\"id585\">filename</a></b>",
         "type" : "i_method",
         "intro" : "<p>Returns the name of the source file for this data.</p>\n"
      },
      "id1045" : {
         "examples" : [
            "id1054"
         ],
         "call" : "$obj-&gt;<b><a name=\"id1045\">import</a></b>(&nbsp;[$level,][$domain,] %options&nbsp;)",
         "diagnostics" : [
            "id1055",
            "id1056",
            "id1057",
            "id1058",
            "id1059"
         ],
         "intro" : "<p>The import is automatically called when the package is compiled.  For all\npackages but one in your distribution, it will only contain the name of\nthe <tt class=\"parameter\">$domain</tt>.</p>\n\n<p>For one package, the import list may additionally contain textdomain\nconfiguration <tt class=\"parameter\">%options</tt>.  These <tt class=\"parameter\">%options</tt> are used for all packages which\nuse the same <tt class=\"parameter\">$domain</tt>.  These are alternatives:</p>\n<pre>\n  # Do not use variables in the %*config!  They are not yet initialized\n  # when Log::Report-&gt;import is run!!!\n  use Log::Report 'my-domain', %config, %domain_config;\n\n  use Log::Report 'my-domain', %config;\n  textdomain 'my-domain', %domain_config;   # vars allowed\n</pre>\n\n<p>The latter syntax has major advantages, when the configuration of the\ndomain is determined at run-time.  It is probably also easier to understand.</p>\n\n<p>See <a class=\"jump\" href=\"id1138\">Log::Report::Domain::configure()</a>, for the <b>list of %options</b>\nfor the domain configuration.  Here, we only list the options which are\nrelated to the normal import behavior.</p>\n\n<p>The export <tt class=\"parameter\">$level</tt> is a plus (+) followed by a number, for instance <code>+1</code>,\nto indicate to on which caller level we need to work.  This is used\nin <a class=\"jump\" href=\"id208\">Log::Report::Optional</a>.  It defaults to '0': my direct caller.</p>\n",
         "type" : "i_method",
         "id" : "id1045",
         "name" : "import",
         "options" : [
            [
               "id1050",
               "id1051"
            ],
            [
               "id1052",
               "id1053"
            ],
            [
               "id1048",
               "id1049"
            ],
            [
               "id1046",
               "id1047"
            ]
         ]
      },
      "id388" : {
         "id" : "id388",
         "name" : "templater",
         "type" : "option",
         "params" : "Log::Report::Template-object"
      },
      "id1313" : {
         "path" : "DETAILS/Automatic parameters/Avoiding repetative translations",
         "type" : "subsection",
         "name" : "Avoiding repetative translations",
         "id" : "id1313",
         "level" : 3
      },
      "id814" : {
         "call" : "<b><a name=\"id814\">die_decode</a></b>(&nbsp;STRING, %options&nbsp;)",
         "name" : "die_decode",
         "id" : "id814",
         "intro" : "<p>The <tt class=\"parameter\">STRING</tt> is the content of <code>$@</code> after an eval() caught a die().\ncroak(), or confess().  This routine tries to convert this into\nparameters for <a class=\"jump\" href=\"id985\">Log::Report::report()</a>.  This is done in a very\nsmart way, even trying to find the stringifications of <code>$!</code>.</p>\n\n<p>Returned are four elements: the error string or object which triggered\nthe death originally (the original $@), and the opts, reason, and plain\ntext message.  The opts is a HASH which, amongst other things, may contain\na stack trace and location extracted from the death text or object.</p>\n\n<p>Translated components will have exception classes <code>perl</code>, and <code>die</code> or\n<code>confess</code>.  On the moment, the <code>croak</code> cannot be distiguished from the\n<code>confess</code> (when used in package main) or <code>die</code> (otherwise).</p>\n\n<p>The returned reason depends on whether the translation of the current\n<code>$!</code> is found in the <tt class=\"parameter\">STRING</tt>, and the presence of a stack trace.  The\nfollowing table is used:</p>\n<pre>\n  errstr  stack  =&gt;  reason\n    no      no       ERROR   (die) application internal problem\n    yes     no       FAULT   (die) external problem, think open()\n    no      yes      PANIC   (confess) implementation error\n    yes     yes      ALERT   (confess) external problem, caught\n</pre>\n",
         "type" : "function",
         "options" : [
            [
               "id815",
               "id816"
            ]
         ]
      },
      "id470" : {
         "type" : "fault",
         "name" : "cannot read in $cs from file $fn: $!",
         "id" : "id470",
         "subroutine" : "id467"
      },
      "id338" : {
         "path" : "METHODS/Attributes",
         "type" : "section",
         "subroutines" : [
            "id340",
            "id339"
         ],
         "level" : 2,
         "name" : "Attributes",
         "id" : "id338"
      },
      "id1090" : {
         "version" : "1.45",
         "chapters" : [
            "id1091",
            "id1324",
            "id1092",
            "id1093",
            "id1094",
            "id1262"
         ],
         "title" : "send messages to syslog",
         "is_pure_pod" : false,
         "name" : "Log::Report::Dispatcher::Syslog",
         "id" : "id1090",
         "package" : "Log::Report::Dispatcher::Syslog",
         "inheritance" : {
            "extends" : [
               "Log::Report::Dispatcher"
            ]
         },
         "distribution" : "Log-Report"
      },
      "id942" : {
         "intro" : "<pre>  use Log::Report::DBIC::Profiler;\n  $schema-&gt;storage-&gt;debugobj(Log::Report::DBIC::Profiler-&gt;new);\n  $schema-&gt;storage-&gt;debug(1);\n\n  # And maybe (if no exceptions expected from DBIC)\n  $schema-&gt;exception_action(sub { panic @_ });\n\n  # Log to syslog\n  use Log::Report;\n  dispatcher SYSLOG =&gt; 'myapp',\n    identity =&gt; 'myapp',\n    facility =&gt; 'local0',\n    flags    =&gt; \"pid ndelay nowait\",\n    mode     =&gt; 'DEBUG';\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter",
         "level" : 1,
         "name" : "SYNOPSIS",
         "id" : "id942"
      },
      "id1174" : {
         "is_pure_pod" : false,
         "title" : "send messages to Log::Dispatch back-end",
         "name" : "Log::Report::Dispatcher::LogDispatch",
         "id" : "id1174",
         "inheritance" : {
            "extends" : [
               "Log::Report::Dispatcher"
            ]
         },
         "package" : "Log::Report::Dispatcher::LogDispatch",
         "distribution" : "Log-Report",
         "version" : "1.45",
         "chapters" : [
            "id1175",
            "id1343",
            "id1176",
            "id1177",
            "id1178",
            "id1283"
         ]
      },
      "id248" : {
         "name" : "failure",
         "id" : "id248",
         "call" : "$obj-&gt;<b><a name=\"id248\">failure</a></b>",
         "type" : "i_method"
      },
      "id867-id217" : {
         "id" : "id867-id217",
         "name" : "_expand",
         "extends" : "id867",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id867\">Log::Report::Message::new(_expand)</a></p>",
         "params" : "BOOLEAN",
         "type" : "option"
      },
      "id354" : {
         "id" : "id354",
         "name" : "filenames",
         "value" : "<code>undef</code>",
         "type" : "default"
      },
      "id1155-id375" : {
         "subroutine" : "id1153",
         "name" : "you need to configure context_rules before setContext",
         "id" : "id1155-id375",
         "extends" : "id1155",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1153\">Log::Report::Domain::setContext()</a></p>",
         "type" : "error"
      },
      "id794-id1228" : {
         "params" : "ARRAY",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>",
         "name" : "params",
         "id" : "id794-id1228",
         "extends" : "id794"
      },
      "id337" : {
         "id" : "id337",
         "name" : "illegal value '$value' for 'processing_errors' option.",
         "subroutine" : "id326",
         "type" : "error"
      },
      "id746-id569" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id746\">Log::Report::Lexicon::Table::header()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id746\">header</a></b>(&nbsp;$field&nbsp;)",
         "extends" : "id746",
         "id" : "id746-id569",
         "name" : "header"
      },
      "id387" : {
         "type" : "default",
         "value" : "<code>undef</code>",
         "name" : "lexicon",
         "id" : "id387"
      },
      "id1144-id375" : {
         "value" : "<code>undef</code>",
         "extends" : "id1144",
         "id" : "id1144-id375",
         "name" : "context_rules",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1143\">Log::Report::Domain::configure(context_rules)</a></p>",
         "type" : "default"
      },
      "id980" : {
         "level" : 1,
         "intro" : "<p>Log::Report - report a problem, with exceptions and translation support</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "id" : "id980",
         "name" : "NAME"
      },
      "id94" : {
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/Interpolation: keys/Complex keys",
         "intro" : "<p>[0.91] In the previous section, we kept our addressing it simple: let's\nchange that now.  Two alternatives for the same:</p>\n<pre>\n  my $user = { name =&gt; 'John' };\n  printi \"Username: {name}\", name =&gt; $user-&gt;{name}; # simple key\n  printi \"Username: {user.name}\", user =&gt; $user;    # complex key\n</pre>\n\n<p>The way these complex keys work, is close to the flexibility of\ntemplate toolkit: the only thing you cannot do, is passing parameters\nto called CODE.</p>\n\n<p>You can pass a parameter name as HASH, which contains values.  This may\neven be nested into multiple levels.  You may also pass objects, class\n(package names), and code references.</p>\n\n<p>In above case of <code>user.name</code>, when <code>user</code> is a HASH it will take the\nvalue which belongs to the key <code>name</code>.  When <code>user</code> is a CODE, it will\nrun code to get a value.  When <code>user</code> is an object, the method <code>name</code>\nis called to get a value back.  When <code>user</code> is a class name, the <code>name</code>\nrefers to an instance method on that class.</p>\n\n<p>More examples which do work:</p>\n<pre>\n  # when name is a column in the database query result\n  printi \"Username: {user.name}\", user =&gt; $sth-&gt;fetchrow_hashref;\n\n  # call a sub which does the database query, returning a HASH\n  printi \"Username: {user.name}\", user =&gt; sub { $db-&gt;getUser('John') };\n\n  # using an instance method (object)\n  { package User;\n    sub new  { bless { myname =&gt; $_[1] }, $_[0] }\n    sub name { $_[0]-&gt;{myname} }\n  }\n  my $user = User-&gt;new('John');\n  printi \"Username: {user.name}\", user =&gt; $user;\n\n  # using a class method\n  sub User::count   { 42 }\n  printi \"Username: {user.count}\", user =&gt; 'User';\n\n  # nesting, mixing\n  printi \"Complain to {product.factory.address}\", product =&gt; $p;\n\n  # mixed, here CODE, HASH, and Object\n  printi \"Username: {document.author.name}\", document =&gt; sub {\n    return +{ author =&gt; User-&gt;new('John') }\n  };\n</pre>\n\n<p>Limitation: you cannot pass arguments to CODE calls.</p>\n",
         "id" : "id94",
         "name" : "Complex keys"
      },
      "id1054" : {
         "id" : "id1054",
         "name" : "of import\n",
         "intro" : "<pre>  use Log::Report mode =&gt; 3;      # '3' or 'DEBUG', no domain given\n\n  use Log::Report 'my-domain';    # in each package producing messages\n\n  use Log::Report 'my-domain',    # in one package, top of distr\n    mode            =&gt; 'VERBOSE',\n    syntax          =&gt; 'REPORT',  # report ERROR, not error()\n    translator      =&gt; Log::Report::Translator::POT-&gt;new(\n       lexicon =&gt; '/home/mine/locale', # translation tables\n    ),\n    native_language =&gt; 'nl_NL';   # untranslated msgs are Dutch\n\n  use Log::Report import =&gt; 'try';     # or ARRAY of functions\n</pre>\n",
         "type" : "example"
      },
      "id1241" : {
         "value" : "&lt;adds timestamp&gt;",
         "name" : "format",
         "id" : "id1241",
         "type" : "default"
      },
      "id247" : {
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id247\">alert</a></b>",
         "name" : "alert",
         "id" : "id247"
      },
      "id1184" : {
         "type" : "default",
         "name" : "min_level",
         "id" : "id1184",
         "value" : "<code>debug</code>"
      },
      "id764-id1174" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>",
         "id" : "id764-id1174",
         "name" : "format_reason",
         "extends" : "id764",
         "value" : "'LOWERCASE'"
      },
      "id868-id217" : {
         "value" : "<code>false</code>",
         "extends" : "id868",
         "name" : "_expand",
         "id" : "id868-id217",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id867\">Log::Report::Message::new(_expand)</a></p>",
         "type" : "default"
      },
      "id930" : {
         "level" : 1,
         "intro" : "<p>The message cast by the <a class=\"jump\" href=\"id979\">Log::Report</a> exception framework can be\nplain strings.  This is sufficient for some cases, for instance:\nwhich would you bother much about the content of <code>trace</code> messages?\nMessage which are destined for end-users or log-files however, need\nmore care; require a higher quality.  In this case, you can better\nuse cast message objects which support interpolation.</p>\n",
         "path" : "DETAILS",
         "type" : "chapter",
         "id" : "id930",
         "name" : "DETAILS",
         "nest" : [
            "id931",
            "id932",
            "id933",
            "id936"
         ]
      },
      "id413" : {
         "id" : "id413",
         "name" : "NAME",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Extract - Collect translatable strings</p>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id793-id818" : {
         "extends" : "id793",
         "value" : "&lt;required&gt;",
         "name" : "call",
         "id" : "id793-id818",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>",
         "type" : "default"
      },
      "id759-id1228" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "type" : "option",
         "params" : "LOCALE",
         "extends" : "id759",
         "id" : "id759-id1228",
         "name" : "locale"
      },
      "id931" : {
         "name" : "Message-IDs",
         "id" : "id931",
         "level" : 2,
         "path" : "DETAILS/Message-IDs",
         "intro" : "<p>An exception message as a string is pretty inflexible.  It cannot\nbe translated anymore, and it cannot contain related information\nlike an error code.  An exception message as an object (as this\nmodule implements) is able to contain additional information.</p>\n\n<p>The easiest way to create <a class=\"jump\" href=\"id856\">Log::Report::Message</a> objects, is via the\n<code>__x()</code> (and friends) functions which are exported by <a class=\"jump\" href=\"id979\">Log::Report</a>.\nThese are nearly equivalent:</p>\n<pre>\n  my $msg = Log::Report::Message-&gt;new(_msgid =&gt; \"Hello, World!\");\n  my $msg = __\"Hello, World!\";\n</pre>\n\n<p>The name <code>msgid</code> is used, because this object can do translations.\nIn the GNU gettext library for translations, the term <code>msgid</code> is\nused to describe the string which has to be looked-up in translation\ntables.  When there are no tables, or the <code>msgid</code> is not found,\nthen the output string is equivalent to the <code>msgid</code>.</p>\n\n<p>So, without any translation configuration, this happens:</p>\n<pre>\n  my $msg = __\"Hello, World!\";\n  print \"$msg\\n\";      # Hello, World!⏎\n</pre>\n\n<p>The <code>__()</code> function can be used with a static string, although you\ncould do this:</p>\n<pre>\n  my $msg = __\"Hello $name!\";      #XXX Don't do this!\n  print \"$msg\\n\";      # Hello Mark!⏎\n</pre>\n\n<p>With the <code>__x()</code> or <code>__nx()</code>, interpolation will take place on the\n(optionally) translated <code>msgid</code> string.  This is how to write above:</p>\n<pre>\n  my $msg = __x\"Hello {name}!\", name =&gt; $name;\n</pre>\n\n<p>So: the <code>msgid</code> is usually a <i>format string</i>.  Only when you use\nformats correctly, you will be able to introduce translation later.</p>\n",
         "type" : "section"
      },
      "id778-id1228" : {
         "call" : "$obj-&gt;<b><a name=\"id778\">log</a></b>(&nbsp;\\%options, $reason, $message, $domain&nbsp;)",
         "extends" : "id778",
         "name" : "log",
         "id" : "id778-id1228",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id778\">Log::Report::Dispatcher::log()</a></p>",
         "type" : "i_method"
      },
      "id783-id1174" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id783\">Log::Report::Dispatcher::skipStack()</a></p>",
         "extends" : "id783",
         "name" : "skipStack",
         "id" : "id783-id1174",
         "call" : "$obj-&gt;<b><a name=\"id783\">skipStack</a></b>"
      },
      "id795-id1228" : {
         "extends" : "id795",
         "value" : "&lt;required&gt;",
         "name" : "params",
         "id" : "id795-id1228",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>"
      },
      "id1175" : {
         "level" : 1,
         "path" : "NAME",
         "intro" : "<p>Log::Report::Dispatcher::LogDispatch - send messages to Log::Dispatch back-end</p>\n",
         "type" : "chapter",
         "id" : "id1175",
         "name" : "NAME"
      },
      "id807" : {
         "id" : "id807",
         "name" : "a filter on syslog\n",
         "intro" : "<pre>  dispatcher filter =&gt; \\&amp;myfilter, 'syslog';\n\n  # ignore all translatable and non-translatable messages containing\n  # the word \"skip\"\n  sub myfilter($$$$)\n  {   my ($disp, $opts, $reason, $message) = @_;\n      return () if $message-&gt;untranslated =~ m/\\bskip\\b/;\n      ($reason, $message);\n  }\n</pre>\n",
         "type" : "example"
      },
      "id981" : {
         "level" : 1,
         "type" : "chapter",
         "intro" : "<pre>  # Invocation with 'mode' to get trace and verbose messages\n  use Log::Report mode =&gt; 'DEBUG';\n\n  # Usually invoked with a domain, which groups packages for translation\n  use Log::Report 'my-domain', %options;\n\n  # Interpolation syntax via String::Print\n  # First step to translations, once you need it.\n  print __x\"my name is {name}\", name =&gt; $n;  # print, so no exception\n  print __\"Hello World\\n\";      # no interpolation, optional translation\n  print __x'Hello World';       # SYNTAX ERROR: quote is alternative for ::\n\n  # Functions replacing die/warn/carp, casting exceptions but not message\n  # objects and no translation support.\n  error \"oops\";                 # exception like die(), no translation\n  -f $config or panic \"Help!\";  # alert/error/fault/info/...more\n\n  # Combined exception, interpolation, and optional translation\n  error __x\"Help!\";             # __x() creates ::Message object\n  error __x('gettext msgid', param =&gt; $value, ...)\n      if $condition;\n\n  # Also non fatal \"exceptions\" find their way to dispatchers\n  info __x\"started {pid}\", pid =&gt; $$;   # translatable\n  debug \"$i was here!\";         # you probably do not want to translate debug\n  panic \"arrghhh\";              # like Carp::Confess\n\n  # Many destinations for an exception message (may exist in parallel)\n  dispatcher PERL =&gt; 'default', # see Log::Report::Dispatcher: use die/warn\n    reasons =&gt; 'NOTICE-';       # this dispatcher is already present at start\n\n  dispatcher SYSLOG =&gt; 'syslog' # also send to syslog,\n    charset =&gt; 'iso-8859-1',    # explicit character conversions\n    locale  =&gt; 'en_US';         # overrule user's locale\n\n  dispatcher close =&gt; 'default' # stop default die/warn dispatcher\n\n  # Fill-in values, like Locale::TextDomain and gettext\n  # See Log::Report::Message section DETAILS\n  fault __x\"cannot allocate {size} bytes\", size =&gt; $size;\n  fault \"cannot allocate $size bytes\";     # no translation, ok\n  fault __x\"cannot allocate $size bytes\";  # not translatable, wrong\n\n  # Output (optionally with translation) depending on count\n  # Leading and trailing whitespace stay magically outside translation\n  # tables.  @files in scalar context.  Special parameter with _\n  print __xn\"found one file\\n\", \"found {_count} files\", @files;\n\n  # Borrow from an other text-domain (see Log::Report::Message)\n  print __x(+\"errors in {line}\", _domain =&gt; 'global', line =&gt; $line);\n\n  # catch errors (implements hidden eval/die)\n  try { error };\n  if($@) {...}      # $@ isa Log::Report::Dispatcher::Try\n  if(my $exception = $@-&gt;wasFatal)         # ::Exception object\n\n  # Language translations at the output component\n  # Translation management via Log::Report::Lexicon\n  use POSIX::1003::Locale qw/setlocale LC_ALL/;\n  setlocale(LC_ALL, 'nl_NL');\n  info __\"Hello World!\";      # in Dutch, if translation table found\n\n  # Exception classes, see Log::Report::Exception\n  try { error __x\"something\", _tags =&gt; 'parsing,schema' };\n  if($@-&gt;wasFatal-&gt;taggedWith('parsing')) ...\n</pre>\n",
         "path" : "SYNOPSIS",
         "id" : "id981",
         "name" : "SYNOPSIS"
      },
      "id436" : {
         "id" : "id436",
         "name" : "showStats",
         "call" : "$obj-&gt;<b><a name=\"id436\">showStats</a></b>(&nbsp;[$domains]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Show a status about the DOMAIN (by default all domains).  At least mode\nverbose is required to see this.</p>\n\n<p>The statistics are sent to (<a class=\"jump\" href=\"id979\">Log::Report</a>) dispatchers which accept\nnotice and info.  This could be syslog.  When you have no explicit\ndispatchers in your program, the level of detail get controlled by\nthe 'mode':</p>\n<pre>\n  use Log::Report mode =&gt; 'DEBUG';  # or 'VERBOSE'\n</pre>\n"
      },
      "id1044" : {
         "type" : "section",
         "path" : "FUNCTIONS/Configuration",
         "level" : 2,
         "id" : "id1044",
         "name" : "Configuration",
         "subroutines" : [
            "id1045",
            "id1060"
         ]
      },
      "id1251" : {
         "subroutine" : "id1249",
         "name" : "unable to rotate logfile $fn to $oldfn: $!",
         "id" : "id1251",
         "type" : "fault"
      },
      "id826" : {
         "level" : 2,
         "id" : "id826",
         "name" : "Constructors",
         "subroutines" : [
            "id827"
         ],
         "type" : "section",
         "path" : "METHODS/Constructors"
      },
      "id552" : {
         "name" : "format",
         "id" : "id552",
         "type" : "i_method",
         "intro" : "<p>When one <tt class=\"parameter\">$language</tt> is specified, it looks whether a \"language-format\" or\n\"no-language-format\" is present in the line of FLAGS.  This will return\n<code>1</code> (<code>true</code>) in the first case, <code>0</code> (<code>false</code>) in the second case.  It will\nreturn <code>undef</code> (also <code>false</code>) in case that both are not present.</p>\n\n<p>You can also specify <tt class=\"parameter\">PAIRS</tt>: the key is a language name, and the\nvalue is either <code>0</code>, <code>1</code>, or <code>undef</code>.</p>\n",
         "call" : "$obj-&gt;<b><a name=\"id552\">format</a></b>(&nbsp;$language | &lt;PAIRS|ARRAY|HASH&gt;&nbsp;)",
         "examples" : [
            "id553"
         ]
      },
      "id765-id1174" : {
         "id" : "id765-id1174",
         "name" : "charset",
         "extends" : "id765",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>",
         "params" : "CHARSET",
         "type" : "option"
      },
      "id486" : {
         "subroutines" : [
            "id495",
            "id496",
            "id498",
            "id497"
         ],
         "id" : "id486",
         "name" : "Managing PO's",
         "level" : 2,
         "nest" : [
            "id1276",
            "id1277"
         ],
         "path" : "METHODS/Managing PO's",
         "type" : "section"
      },
      "id1055" : {
         "type" : "error",
         "subroutine" : "id1045",
         "id" : "id1055",
         "name" : "syntax flag must be either SHORT or REPORT, not `$flag' in $fn line $line"
      },
      "id976" : {
         "id" : "id976",
         "name" : "Logging",
         "level" : 2,
         "subroutines" : [
            "id781-id958",
            "id785-id958",
            "id778-id958",
            "id784-id958",
            "id777-id958",
            "id780-id958",
            "id783-id958",
            "id779-id958",
            "id977"
         ],
         "type" : "section",
         "path" : "METHODS/Logging"
      },
      "id152" : {
         "call" : "<b><a name=\"id152\">N__</a></b>(&nbsp;$msgid&nbsp;)",
         "id" : "id152",
         "name" : "N__",
         "type" : "function"
      },
      "id1161" : {
         "level" : 3,
         "path" : "DETAILS/Configuring/configuring your own formatter",
         "intro" : "<p>[0.91] The <code>PRINTI</code> is a special constants for <a class=\"jump\" href=\"id176\">configure(formatter)</a>, and\nwill use <a class=\"jump\" href=\"id47\">String::Print</a> function <code>printi()</code>, with the standard tricks.</p>\n<pre>\n  textdomain 'some-domain',\n    formatter =&gt; {\n       class     =&gt; 'String::Print',    # default\n       method    =&gt; 'sprinti',          # default\n       %options,   # constructor options for String::Print\n    );\n</pre>\n\n<p>When you want your own formatter, or configuration of <code>String::Print</code>,\nyou need to pass a CODE.  Be aware that you may loose magic added by\n<a class=\"jump\" href=\"id979\">Log::Report</a> and other layers, like <a class=\"jump\" href=\"id320\">Log::Report::Template</a>:</p>\n<pre>\n  textdomain 'some-domain', formatter =&gt; \\&amp;my_formatter;\n</pre>\n",
         "type" : "subsection",
         "id" : "id1161",
         "name" : "configuring your own formatter"
      },
      "id808" : {
         "name" : "take all mistakes and warnings serious\n",
         "id" : "id808",
         "type" : "example",
         "intro" : "<pre>  dispatch filter =&gt; \\&amp;take_warns_seriously;\n  sub take_warns_seriously($$$$)\n  {   my ($disp, $opts, $reason, $message) = @_;\n        $reason eq 'MISTAKE' ? (ERROR   =&gt; $message)\n      : $reason eq 'WARNING' ? (FAULT   =&gt; $message)\n      :                        ($reason =&gt; $message);\n  }\n</pre>\n"
      },
      "id815" : {
         "id" : "id815",
         "name" : "on_die",
         "params" : "REASON",
         "type" : "option"
      },
      "id1185" : {
         "type" : "option",
         "params" : "$level",
         "intro" : "<p>Like <tt class=\"parameter\">min_level</tt>.</p>\n",
         "id" : "id1185",
         "name" : "max_level"
      },
      "id866" : {
         "call" : "$class-&gt;<b><a name=\"id866\">new</a></b>(&nbsp;%options&nbsp;)",
         "name" : "new",
         "id" : "id866",
         "intro" : "<p><b>End-users: do not use this method directly</b>, but use\n<a class=\"jump\" href=\"id1023\">Log::Report::__()</a>, <a class=\"jump\" href=\"id1025\">Log::Report::__x()</a> and friends.  The <tt class=\"parameter\">%options</tt>\nis a mixed list of object initiation parameters (all with a leading\nunderscore) and variables to be filled in into the translated <tt class=\"parameter\">_msgid</tt>\nstring.</p>\n",
         "type" : "c_method",
         "options" : [
            [
               "id881",
               "id882"
            ],
            [
               "id877",
               "id878"
            ],
            [
               "id889",
               "id890"
            ],
            [
               "id887",
               "id888"
            ],
            [
               "id897",
               "id898"
            ],
            [
               "id871",
               "id872"
            ],
            [
               "id869",
               "id870"
            ],
            [
               "id867",
               "id868"
            ],
            [
               "id893",
               "id894"
            ],
            [
               "id895",
               "id896"
            ],
            [
               "id899",
               "id900"
            ],
            [
               "id875",
               "id876"
            ],
            [
               "id873",
               "id874"
            ],
            [
               "id879",
               "id880"
            ],
            [
               "id883",
               "id884"
            ],
            [
               "id885",
               "id886"
            ],
            [
               "id891",
               "id892"
            ]
         ]
      },
      "id471" : {
         "type" : "fault",
         "subroutine" : "id467",
         "name" : "cannot read from file $fn (unknown charset): $!",
         "id" : "id471"
      },
      "id399" : {
         "intro" : "<p>The language we are going to translate to.  Change this with <a class=\"jump\" href=\"id401\">translateTo()</a>\nfor this domain, or better <a class=\"jump\" href=\"id340\">Log::Report::Template::translateTo()</a>.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id399\">lang</a></b>",
         "id" : "id399",
         "name" : "lang"
      },
      "id1331" : {
         "name" : "INHERITANCE",
         "id" : "id1331",
         "intro" : "<pre> Log::Report::Message is extended by\n   <a class=\"jump\" href=\"id217\">Dancer2::Plugin::LogReport::Message</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter",
         "level" : 1
      },
      "id355" : {
         "name" : "filename_match",
         "id" : "id355",
         "type" : "option",
         "params" : "RegEx",
         "intro" : "<p>Process all files from the INCLUDE_PATH directories which match this\nregular expression.</p>\n"
      },
      "id1303" : {
         "subroutines" : [
            "id901-id217",
            "id866-id217"
         ],
         "level" : 2,
         "name" : "Constructors",
         "id" : "id1303",
         "path" : "METHODS/Constructors",
         "type" : "section"
      },
      "id55" : {
         "type" : "default",
         "id" : "id55",
         "name" : "modifiers",
         "value" : "<code>[ qr/^%\\S+/ =&gt; \\&amp;format_printf]</code>"
      },
      "id1145-id375" : {
         "id" : "id1145-id375",
         "name" : "config",
         "extends" : "id1145",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1145\">Log::Report::Domain::configure(config)</a></p>",
         "type" : "option",
         "params" : "$file"
      },
      "id558" : {
         "id" : "id558",
         "name" : "unknown comment type '$cmd' at $where.",
         "subroutine" : "id557",
         "type" : "warning"
      },
      "id579" : {
         "id" : "id579",
         "name" : "cannot read in $charset from file $fn: $!",
         "subroutine" : "id575",
         "type" : "fault"
      },
      "id341" : {
         "subroutines" : [
            "id346",
            "id342",
            "id348",
            "id347"
         ],
         "name" : "Handling text domains",
         "id" : "id341",
         "level" : 2,
         "path" : "METHODS/Handling text domains",
         "type" : "section"
      },
      "id534" : {
         "id" : "id534",
         "name" : "format",
         "params" : "ARRAY|HASH",
         "type" : "option",
         "intro" : "<p>See <a class=\"jump\" href=\"id552\">format()</a>.  Either an ARRAY with PAIRS or a HASH with that same\ninformation.</p>\n"
      },
      "id772-id1228" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id772\">Log::Report::Dispatcher::type()</a></p>",
         "name" : "type",
         "id" : "id772-id1228",
         "extends" : "id772",
         "call" : "$obj-&gt;<b><a name=\"id772\">type</a></b>"
      },
      "id231" : {
         "name" : "DESCRIPTION",
         "id" : "id231",
         "level" : 1,
         "type" : "chapter",
         "intro" : "<p>[The Dancer2 plugin was contributed by Andrew Beverley]\nWhen you need to translate your templates as well (not only the messages\nin your code) then have a look at <a class=\"jump\" href=\"id264\">Dancer2::Template::TTLogReport</a>.</p>\n\n<p>This module provides easy access to the extensive logging facilities\nprovided by <a class=\"jump\" href=\"id979\">Log::Report</a>. Along with <a class=\"jump\" href=\"id279\">Dancer2::Logger::LogReport</a>,\nthis brings together all the internal Dancer2 logging, handling for\nexpected and unexpected exceptions, translations and application logging.</p>\n\n<p>Logging is extremely flexible using many of the available\n<a class=\"jump\" href=\"id802\">dispatchers</a>.  Multiple dispatchers can be\nused, each configured separately to display different messages in different\nformats.  By default, messages are logged to a session variable for display on\na webpage, and to STDERR.</p>\n\n<p>Messages within this plugin use the extended\n<a href=\"https://metacpan.org/dist/Dancer2_Logger_LogReport_Message\">manual Dancer2::Logger::LogReport::Message</a> class rather than the standard\n<a class=\"jump\" href=\"id856\">Log::Report::Message</a> class.</p>\n\n<p>Note that it is currently recommended to use the plugin in all apps within\na Dancer2 program, not only some. Therefore, wherever you <code>use Dancer2</code>\nyou should also <code>use Dancer2::Plugin::LogReport</code>. This does not apply if\nusing the same app name (<code>use Dancer2 appname, 'Already::Exists'</code>). In\nall other modules, you can just <code>use Log::Report</code>.</p>\n\n<p>Read the <a class=\"jump\" href=\"id252\">DETAILS</a> in below in this manual-page.</p>\n",
         "path" : "DESCRIPTION"
      },
      "id80" : {
         "value" : "', '",
         "id" : "id80",
         "name" : "_join",
         "type" : "default"
      },
      "id601" : {
         "type" : "i_method",
         "intro" : "<p>For internal use only.\nForce the creation of the index (if not already done).  Returns a hash\nwith key-value pairs, where the key is the lower-cased version of the\nfilename, and the value the case-sensitive version of the filename.</p>\n",
         "name" : "index",
         "id" : "id601",
         "call" : "$obj-&gt;<b><a name=\"id601\">index</a></b>"
      },
      "id762-id944" : {
         "name" : "mode",
         "id" : "id762-id944",
         "value" : "'NORMAL'",
         "extends" : "id762",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>"
      },
      "id157" : {
         "type" : "error",
         "subroutine" : "id156",
         "name" : "syntax flag must be either SHORT or REPORT, not `$flag'",
         "id" : "id157"
      },
      "id281" : {
         "name" : "SYNOPSIS",
         "id" : "id281",
         "type" : "chapter",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # This module is loaded when configured.  It does not provide\n  # end-user functions or methods.\n\n  # See <a class=\"jump\" href=\"id252\">DETAILS</a>\n</pre>\n",
         "level" : 1
      },
      "id761" : {
         "name" : "mode",
         "id" : "id761",
         "params" : "'NORMAL'|'VERBOSE'|'ASSERT'|'DEBUG'|0..3",
         "type" : "option",
         "intro" : "<p>Possible values are <code>NORMAL</code> (or <code>0</code> or <code>undef</code>), which will not show\n<code>INFO</code> or debug messages, <code>VERBOSE</code> (<code>1</code>; shows <code>INFO</code> not debug),\n<code>ASSERT</code> (<code>2</code>; only ignores <code>TRACE</code> messages), or <code>DEBUG</code> (<code>3</code>)\nwhich shows everything.  See section <a class=\"jump\" href=\"id1071\">Run modes</a>.</p>\n\n<p>You are advised to use the symbolic mode names when the mode is\nchanged within your program: the numerical values are available\nfor smooth Getopt::Long integration.</p>\n"
      },
      "id584" : {
         "subroutines" : [
            "id586",
            "id585"
         ],
         "name" : "Attributes",
         "id" : "id584",
         "level" : 2,
         "path" : "METHODS/Attributes",
         "type" : "section"
      },
      "id557" : {
         "id" : "id557",
         "name" : "fromText",
         "diagnostics" : [
            "id558",
            "id559",
            "id560",
            "id561",
            "id562"
         ],
         "call" : "$class-&gt;<b><a name=\"id557\">fromText</a></b>(&nbsp;STRING, [$where]&nbsp;)",
         "type" : "c_method",
         "intro" : "<p>Parse the <tt class=\"parameter\">STRING</tt> into a new PO object.  The <tt class=\"parameter\">$where</tt> string should explain\nthe location of the <tt class=\"parameter\">STRING</tt>, to be used in error messages.</p>\n"
      },
      "id184" : {
         "path" : "DESCRIPTION",
         "intro" : "<p>This module collects a few functions and definitions which are shared\nbetween different components in the <a class=\"jump\" href=\"id979\">Log::Report</a> infrastructure.\nThey should not be needed for end-user applications, although this\nman-page may contain some useful background information.</p>\n",
         "type" : "chapter",
         "level" : 1,
         "id" : "id184",
         "name" : "DESCRIPTION"
      },
      "id1008" : {
         "type" : "function",
         "intro" : "<p>Execute the <tt class=\"parameter\">CODE</tt> while blocking all dispatchers as long as it is running.\nThe exceptions which occur while running the <tt class=\"parameter\">CODE</tt> are caught until it\nhas finished.  When there where no fatal errors, the result of the <tt class=\"parameter\">CODE</tt>\nexecution is returned.</p>\n\n<p>After the <tt class=\"parameter\">CODE</tt> was tried, the <code>$@</code> will contain a\n<a class=\"jump\" href=\"id818\">Log::Report::Dispatcher::Try</a> object, which contains the collected\nmessages.  Read that manual page to understand <code>try</code>.</p>\n\n<p>Run-time errors from Perl and die's, croak's and confess's within the\nprogram (which shouldn't appear, but you never know) are collected into an\n<a class=\"jump\" href=\"id856\">Log::Report::Message</a> object, using <a class=\"jump\" href=\"id809\">Log::Report::Die</a>.</p>\n\n<p>The <tt class=\"parameter\">%options</tt> are passed to the constructor of the try-dispatcher, see\n<a class=\"jump\" href=\"id827\">Log::Report::Dispatcher::Try::new()</a>.  For instance, you may like to\nadd <code>mode =&gt; 'DEBUG'</code>, or <code>accept =&gt; 'ERROR-'</code>.</p>\n\n<p><b>Be warned</b> that the parameter to <code>try</code> is a <tt class=\"parameter\">CODE</tt> reference.  This means\nthat you shall not use a comma after the block when there are <tt class=\"parameter\">%options</tt>\nspecified.  On the other hand, you shall use a semi-colon after the\nblock if there are no arguments.</p>\n\n<p><b>Be warned</b> that the <code>{}</code> are interpreted as subroutine, which\nmeans that --for instance-- it has its own <code>@_</code> parameter list.\nThe manual-page of Try::Tiny lists a few more side-effects of this.</p>\n",
         "examples" : [
            "id1009"
         ],
         "call" : "<b><a name=\"id1008\">try</a></b>(&nbsp;CODE, %options&nbsp;)",
         "id" : "id1008",
         "name" : "try"
      },
      "id721" : {
         "type" : "chapter",
         "nest" : [
            "id722",
            "id724"
         ],
         "path" : "METHODS",
         "id" : "id721",
         "name" : "METHODS",
         "level" : 1
      },
      "id134" : {
         "type" : "function",
         "call" : "<b><a name=\"id134\">trace</a></b>(&nbsp;$message&nbsp;)",
         "name" : "trace",
         "id" : "id134"
      },
      "id693" : {
         "level" : 3,
         "path" : "DETAILS/Using context_rules/Global parameters",
         "intro" : "<p>You can use contexts to set global interpolation parameters.  For instance,\nrunning a pure perl webserver, you may serve multiple domains.  Some of\nthe log messages may need to show that domain name.  Of course, you can\ncollect (or pass on) the hostname when throwing the error... something\nlike this:</p>\n<pre>\n  # can I access $vhost easily?\n  error __x\"For {host}, login failed for {user}\",\n        host =&gt; $vhost-&gt;name, user =&gt; $user;\n</pre>\n\n<p>Via contexts:</p>\n<pre>\n  # when you know the vhost: (max once per request)\n  textdomain-&gt;setContext(host =&gt; $vhost-&gt;name);  # or updateContext\n\n  # until you reconfigure the context\n  error __x\"For {_context.host}, login failed for {user}\", user =&gt; $user;\n</pre>\n\n<p>The context values are always available for interpolation.</p>\n",
         "type" : "subsection",
         "name" : "Global parameters",
         "id" : "id693"
      },
      "id276" : {
         "name" : "DETAILS",
         "id" : "id276",
         "level" : 1,
         "type" : "chapter",
         "nest" : [
            "id277",
            "id278"
         ],
         "path" : "DETAILS"
      },
      "id179" : {
         "path" : "METHODS/Translating",
         "type" : "section",
         "subroutines" : [
            "id180"
         ],
         "id" : "id179",
         "name" : "Translating",
         "level" : 2
      },
      "id158" : {
         "is_pure_pod" : false,
         "title" : "administer one text-domain",
         "id" : "id158",
         "name" : "Log::Report::Minimal::Domain",
         "inheritance" : {
            "extended_by" : [
               "Log::Report::Domain"
            ]
         },
         "package" : "Log::Report::Minimal::Domain",
         "distribution" : "Log-Report-Optional",
         "version" : "1.08",
         "chapters" : [
            "id159",
            "id1325",
            "id160",
            "id161",
            "id162"
         ]
      },
      "id800-id1090" : {
         "extends" : "id800",
         "name" : "abstract",
         "id" : "id800-id1090",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "params" : "INTEGER",
         "type" : "option"
      },
      "id801-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "type" : "default",
         "extends" : "id801",
         "value" : "1",
         "id" : "id801-id944",
         "name" : "abstract"
      },
      "id802" : {
         "type" : "chapter",
         "nest" : [
            "id803",
            "id804"
         ],
         "path" : "DETAILS",
         "name" : "DETAILS",
         "id" : "id802",
         "level" : 1
      },
      "id1125" : {
         "path" : "METHODS/Constructors",
         "type" : "section",
         "subroutines" : [
            "id1126"
         ],
         "level" : 2,
         "name" : "Constructors",
         "id" : "id1125"
      },
      "id1316" : {
         "name" : "INHERITANCE",
         "id" : "id1316",
         "level" : 1,
         "intro" : "<pre> Log::Report::Optional\n   is an Exporter\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter"
      },
      "id714" : {
         "subroutine" : "id708",
         "name" : "use double quotes not single, in $string on $file line $line.",
         "id" : "id714",
         "type" : "warning"
      },
      "id447" : {
         "diagnostics" : [
            "id466"
         ],
         "name" : "new",
         "id" : "id447",
         "call" : "$class-&gt;<b><a name=\"id447\">new</a></b>(&nbsp;%options&nbsp;)",
         "type" : "c_method",
         "options" : [
            [
               "id448",
               "id449"
            ],
            [
               "id462",
               "id463"
            ],
            [
               "id464",
               "id465"
            ],
            [
               "id460",
               "id461"
            ],
            [
               "id454",
               "id455"
            ],
            [
               "id456",
               "id457"
            ],
            [
               "id458",
               "id459"
            ],
            [
               "id450",
               "id451"
            ],
            [
               "id452",
               "id453"
            ]
         ],
         "intro" : "<p>Create a new POT file.  The initial header is generated for you, but\nit can be changed using the <a class=\"jump\" href=\"id493\">header()</a> method.</p>\n"
      },
      "id597" : {
         "name" : "new",
         "id" : "id597",
         "call" : "$class-&gt;<b><a name=\"id597\">new</a></b>(&nbsp;$directory, %options&nbsp;)",
         "type" : "c_method",
         "intro" : "<p>Create an index for a certain directory.  If the directory does not\nexist or is empty, then the object will still be created.</p>\n\n<p>All files the <tt class=\"parameter\">$directory</tt> tree which are recognized as an translation table\nformat which is understood will be listed.  Momentarily, those are:</p>\n\n<ul>\n<li>. files with extension \"po\", see <a class=\"jump\" href=\"id569\">Log::Report::Lexicon::POTcompact</a><br />\n<li>. [0.993] files with extension \"mo\", see <a class=\"jump\" href=\"id637\">Log::Report::Lexicon::MOTcompact</a><br />\n</ul>\n\n<p>[0.99] Files which are in directories which start with a dot (hidden\ndirectories) and files which start with a dot (hidden files) are skipped.</p>\n"
      },
      "id372" : {
         "name" : "adding a new language",
         "id" : "id372",
         "level" : 3,
         "type" : "subsection",
         "intro" : "<p>The first time you run <a class=\"jump\" href=\"id348\">extract()</a>, you will see a file being created\nin <code>$lexicon/$textdomain-$charset.po</code>.  That file will be left empty:\ncopy it to start a new translation.</p>\n\n<p>There are many ways to structure PO-files.  Which structure used, is\ndetected automatically by <a class=\"jump\" href=\"id717\">Log::Report::Lexicon</a>.  My personal preference\nis <code>$lexicon/$textdomain/$language-$charset.po</code>.  On Unix-like systems,\nyou would do:</p>\n<pre>\n  # Start a new language\n  mkdir mylexicon/mydomain\n  cp mylexicon/mydomain-utf8.po mylexicon/mydomain/nl_NL-utf8.po\n\n  # fill the nl_NL-utf8.po file with the translation\n  poedit mylexicon/mydomain/nl_NL-utf8.po\n\n  # add the file to your version control system\n  git add mylexicon/mydomain/nl_NL-utf8.po\n</pre>\n\n\n<p>Now, when your program sets the locale to 'nl-NL', it should start\ntranslating to Dutch.  If it doesn't, it is not always easy to\nfigure-out what is wrong...</p>\n",
         "path" : "DETAILS/Extracting PO-files/adding a new language"
      },
      "id653" : {
         "subroutine" : "id643",
         "id" : "id653",
         "name" : "cannot seek to $loc in $fn for translations: $!",
         "type" : "fault"
      },
      "id800-id818" : {
         "params" : "INTEGER",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "extends" : "id800",
         "id" : "id800-id818",
         "name" : "abstract"
      },
      "id175" : {
         "type" : "default",
         "value" : "&lt;required&gt;",
         "name" : "where",
         "id" : "id175"
      },
      "id768-id1082" : {
         "type" : "error",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id756\">Log::Report::Dispatcher::new()</a></p>",
         "id" : "id768-id1082",
         "name" : "illegal format_reason '$format' for dispatcher",
         "extends" : "id768",
         "subroutine" : "id756"
      },
      "id198" : {
         "type" : "function",
         "call" : "<b><a name=\"id198\">must_show_location</a></b>(&nbsp;$mode, $reason&nbsp;)",
         "name" : "must_show_location",
         "id" : "id198"
      },
      "id1288" : {
         "level" : 1,
         "id" : "id1288",
         "name" : "DETAILS",
         "path" : "DETAILS",
         "nest" : [
            "id1289",
            "id1290"
         ],
         "type" : "chapter"
      },
      "id1068" : {
         "nest" : [
            "id1069",
            "id1071",
            "id1075"
         ],
         "name" : "Error handling models",
         "id" : "id1068",
         "path" : "DETAILS/Error handling models",
         "intro" : "<p>There are two approaches to handling errors and warnings.  In the first\napproach, as produced by <code>die</code>, <code>warn</code> and the <code>carp</code> family of\ncommands, the program handles the problem immediately on the location\nwhere the problem appears.  In the second approach, an <i>exception</i>\nis thrown on the spot where the problem is created, and then somewhere\nelse in the program the condition is handled.</p>\n\n<p>The implementation of exceptions in Perl5 is done with a eval-die pair:\non the spot where the problem occurs, <code>die</code> is called.  But, because of\nthe execution of that routine is placed within an <code>eval</code>, the program\nas a whole will not die, just the execution of a part of the program\nwill seize.  However, what if the condition which caused the routine to die\nis solvable on a higher level?  Or what if the user of the code doesn't\nbother that a part fails, because it has implemented alternatives for\nthat situation?  Exception handling is quite clumsy in Perl5.</p>\n\n<p>The <code>Log::Report</code> set of distributions let modules concentrate on the\nprogram flow, and let the main program decide on the report handling\nmodel.  The infrastructure to translate messages into multiple languages,\nwhether to create exceptions or carp/die, to collect longer explanations\nwith the messages, to log to mail or syslog, and so on, is decided in\npluggable back-ends.</p>\n",
         "type" : "section",
         "level" : 2
      },
      "id575" : {
         "diagnostics" : [
            "id578",
            "id579",
            "id580",
            "id581",
            "id582",
            "id583"
         ],
         "id" : "id575",
         "name" : "read",
         "call" : "$class-&gt;<b><a name=\"id575\">read</a></b>(&nbsp;$filename, %options&nbsp;)",
         "type" : "c_method",
         "options" : [
            [
               "id576",
               "id577"
            ]
         ],
         "intro" : "<p>Read the POT table information from <tt class=\"parameter\">$filename</tt>, as compact as possible.\nComments, plural-form, and such are lost on purpose: they are not\nneeded for translations.</p>\n"
      },
      "id448" : {
         "params" : "STRING",
         "type" : "option",
         "intro" : "<p>The charset to be used for the createed file.  It is unwise to use anything\nelse than 'UTF-8', but allowed.  Before [1.09] this option was required.</p>\n",
         "id" : "id448",
         "name" : "charset"
      },
      "id598" : {
         "name" : "Attributes",
         "id" : "id598",
         "level" : 2,
         "subroutines" : [
            "id599"
         ],
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id1278" : {
         "path" : "DETAILS",
         "nest" : [
            "id1279",
            "id1280"
         ],
         "type" : "chapter",
         "level" : 1,
         "id" : "id1278",
         "name" : "DETAILS"
      },
      "id270" : {
         "path" : "METHODS/Attributes",
         "type" : "section",
         "subroutines" : [
            "id271"
         ],
         "level" : 2,
         "id" : "id270",
         "name" : "Attributes"
      },
      "id1329" : {
         "name" : "INHERITANCE",
         "id" : "id1329",
         "level" : 1,
         "type" : "chapter",
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Util\n   is an Exporter\n</pre>\n"
      },
      "id197" : {
         "name" : "mode_accepts",
         "id" : "id197",
         "call" : "<b><a name=\"id197\">mode_accepts</a></b>(&nbsp;$mode&nbsp;)",
         "type" : "function",
         "intro" : "<p>Returns something acceptable by <a class=\"jump\" href=\"id187\">expand_reasons()</a></p>\n"
      },
      "id767-id1082" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id756\">Log::Report::Dispatcher::new()</a></p>",
         "type" : "alert",
         "subroutine" : "id756",
         "extends" : "id767",
         "name" : "cannot use class $backend:\\n$@: $!",
         "id" : "id767-id1082"
      },
      "id1095" : {
         "subroutines" : [
            "id1096"
         ],
         "name" : "Constructors",
         "id" : "id1095",
         "level" : 2,
         "path" : "METHODS/Constructors",
         "type" : "section"
      },
      "id192" : {
         "intro" : "<p>Returns <code>true</code> if the STRING is one of the predefined REASONS.</p>\n",
         "type" : "function",
         "call" : "<b><a name=\"id192\">is_reason</a></b>(&nbsp;$name&nbsp;)",
         "name" : "is_reason",
         "id" : "id192"
      },
      "id762-id1082" : {
         "extends" : "id762",
         "value" : "'NORMAL'",
         "id" : "id762-id1082",
         "name" : "mode",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>"
      },
      "id819" : {
         "level" : 1,
         "path" : "NAME",
         "intro" : "<p>Log::Report::Dispatcher::Try - capture all reports as exceptions</p>\n",
         "type" : "chapter",
         "id" : "id819",
         "name" : "NAME"
      },
      "id1040" : {
         "id" : "id1040",
         "name" : "__p",
         "call" : "<b><a name=\"id1040\">__p</a></b>(&nbsp;$msgctxt, $msgid&nbsp;)",
         "type" : "function"
      },
      "id1228" : {
         "distribution" : "Log-Report",
         "package" : "Log::Report::Dispatcher::File",
         "inheritance" : {
            "extends" : [
               "Log::Report::Dispatcher"
            ]
         },
         "name" : "Log::Report::Dispatcher::File",
         "id" : "id1228",
         "title" : "send messages to a file or file-handle",
         "is_pure_pod" : false,
         "chapters" : [
            "id1229",
            "id1339",
            "id1230",
            "id1231",
            "id1232",
            "id1278"
         ],
         "version" : "1.45"
      },
      "id395" : {
         "intro" : "<p>The <a class=\"jump\" href=\"id320\">Log::Report::Template</a> object which is using this textdomain.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id395\">templater</a></b>",
         "name" : "templater",
         "id" : "id395"
      },
      "id359" : {
         "name" : "Template (Toolkit) base-class",
         "id" : "id359",
         "type" : "section",
         "path" : "METHODS/Template (Toolkit) base-class",
         "intro" : "<p>The details of the following functions can be found in the Template\nmanual page.  They are included here for reference only.</p>\n",
         "level" : 2,
         "subroutines" : [
            "id361",
            "id360"
         ]
      },
      "id430" : {
         "call" : "$obj-&gt;<b><a name=\"id430\">addPot</a></b>(&nbsp;$domain, $pot, %options&nbsp;)",
         "name" : "addPot",
         "id" : "id430",
         "type" : "i_method"
      },
      "id378" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>Manage one translation domain for <a class=\"jump\" href=\"id320\">Log::Report::Template</a>.</p>\n",
         "id" : "id378",
         "name" : "DESCRIPTION"
      },
      "id1150-id375" : {
         "type" : "fault",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1149\">Log::Report::Domain::readConfig()</a></p>",
         "name" : "cannot open JSON file for context at $fn: $!",
         "id" : "id1150-id375",
         "extends" : "id1150",
         "subroutine" : "id1149"
      },
      "id480" : {
         "type" : "fault",
         "subroutine" : "id475",
         "id" : "id480",
         "name" : "cannot write to file $fn with $layers: $!"
      },
      "id820" : {
         "name" : "SYNOPSIS",
         "id" : "id820",
         "level" : 1,
         "intro" : "<pre>  try { ... };       # mind the ';' !!\n  if($@) {           # signals something went wrong\n\n  if(try {...}) {    # block ended normally\n\n  my $x = try { read_temperature() };\n  my @x = try { read_lines_from_file() };\n\n  try { ... }        # no comma!!\n     mode =&gt; 'DEBUG', accept =&gt; 'ERROR-';\n\n  try sub { ... },   # with comma\n     mode =&gt; 'DEBUG', accept =&gt; 'ALL';\n\n  try \\&amp;myhandler, accept =&gt; 'ERROR-';\n  try { ... } hide =&gt; 'TRACE';\n\n  print ref $@;      # Log::Report::Dispatcher::Try\n\n  $@-&gt;reportFatal;   # re-dispatch result of try block\n  $@-&gt;reportAll;     # ... also warnings etc\n  if($@) {...}       # if errors\n  if($@-&gt;failed) {   # same       # }\n  if($@-&gt;success) {  # no errors  # }\n\n  try { # something causes an error report, which is caught\n        failure 'no network';\n      };\n  $@-&gt;reportFatal(to =&gt; 'syslog');  # overrule destination\n\n  print $@-&gt;exceptions; # no re-cast, just print\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter"
      },
      "id741-id569" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id741\">Log::Report::Lexicon::Table::pluralIndex()</a></p>",
         "diagnostics" : [
            "id742-id569"
         ],
         "call" : "$obj-&gt;<b><a name=\"id741\">pluralIndex</a></b>(&nbsp;$count&nbsp;)",
         "name" : "pluralIndex",
         "id" : "id741-id569",
         "extends" : "id741"
      },
      "id59" : {
         "value" : "<code>undef</code>",
         "id" : "id59",
         "name" : "encode_for",
         "type" : "default"
      },
      "id1101" : {
         "value" : "'pid,nowait'",
         "name" : "flags",
         "id" : "id1101",
         "type" : "default"
      },
      "id1327" : {
         "type" : "chapter",
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Extract is extended by\n   <a class=\"jump\" href=\"id697\">Log::Report::Extract::PerlPPI</a>\n   <a class=\"jump\" href=\"id289\">Log::Report::Template::Extract</a>\n</pre>\n",
         "level" : 1,
         "name" : "INHERITANCE",
         "id" : "id1327"
      },
      "id970" : {
         "name" : "config",
         "id" : "id970",
         "type" : "option",
         "params" : "FILENAME|SCALAR",
         "intro" : "<p>When a SCALAR reference is passed in, that must refer to a string which\ncontains the configuration text.  Otherwise, specify an existing FILENAME.</p>\n\n<p>By default, it is expected that Log::Log4perl has been initialized\nexternally.  That module uses global variables to communicate, which\nshould be present before any logging is attempted.</p>\n"
      },
      "id799-id1228" : {
         "name" : "max_params",
         "id" : "id799-id1228",
         "extends" : "id799",
         "value" : "8",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>",
         "type" : "default"
      },
      "id860" : {
         "subroutines" : [
            "id863",
            "id861",
            "id862"
         ],
         "level" : 1,
         "name" : "OVERLOADED",
         "id" : "id860",
         "path" : "OVERLOADED",
         "type" : "chapter"
      },
      "id1133" : {
         "intro" : "<p>Create a new Domain object.</p>\n",
         "type" : "c_method",
         "options" : [
            [
               "id165-id1127",
               "id166-id1127"
            ]
         ],
         "call" : "$class-&gt;<b><a name=\"id1133\">new</a></b>(&nbsp;%options&nbsp;)",
         "name" : "new",
         "id" : "id1133"
      },
      "id801-id1082" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "type" : "default",
         "id" : "id801-id1082",
         "name" : "abstract",
         "value" : "1",
         "extends" : "id801"
      },
      "id1291" : {
         "type" : "subsection",
         "path" : "DETAILS/Processing the message/Addition information",
         "level" : 3,
         "name" : "Addition information",
         "id" : "id1291"
      },
      "id893-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id893\">Log::Report::Message::new(_join)</a></p>",
         "params" : "$separator",
         "type" : "option",
         "name" : "_join",
         "id" : "id893-id217",
         "extends" : "id893"
      },
      "id442" : {
         "path" : "NAME",
         "intro" : "<p>Log::Report::Lexicon::POT - manage PO files</p>\n",
         "type" : "chapter",
         "level" : 1,
         "name" : "NAME",
         "id" : "id442"
      },
      "id793-id1090" : {
         "extends" : "id793",
         "value" : "&lt;required&gt;",
         "name" : "call",
         "id" : "id793-id1090",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>"
      },
      "id592" : {
         "path" : "NAME",
         "intro" : "<p>Log::Report::Lexicon::Index - search through available translation files</p>\n",
         "type" : "chapter",
         "level" : 1,
         "name" : "NAME",
         "id" : "id592"
      },
      "id377" : {
         "type" : "chapter",
         "intro" : "<pre>  my $templater = Log::Report::Template-&gt;new(...);\n  my $domain    = $templater-&gt;addTextdomain(%options);\n</pre>\n",
         "path" : "SYNOPSIS",
         "level" : 1,
         "id" : "id377",
         "name" : "SYNOPSIS"
      },
      "id663" : {
         "type" : "i_method",
         "intro" : "<p>Returns a HASH of all defined PO objects, organized by msgid.  Please try\nto avoid using this: use <a class=\"jump\" href=\"id667\">msgid()</a> for lookup.</p>\n",
         "id" : "id663",
         "name" : "index",
         "call" : "$obj-&gt;<b><a name=\"id663\">index</a></b>"
      },
      "id844" : {
         "name" : "log",
         "id" : "id844",
         "call" : "$obj-&gt;<b><a name=\"id844\">log</a></b>(&nbsp;$opts, $reason, $message&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Other dispatchers translate the message here, and make it leave the\nprogram.  However, messages in a \"try\" block are only captured in\nan intermediate layer: they may never be presented to an end-users.\nAnd for sure, we do not know the language yet.</p>\n\n<p>The <tt class=\"parameter\">$message</tt> is either a STRING or a <a class=\"jump\" href=\"id856\">Log::Report::Message</a>.</p>\n"
      },
      "id781-id958" : {
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id781\">Log::Report::Dispatcher::addSkipStack()</a></p>",
         "id" : "id781-id958",
         "name" : "addSkipStack",
         "extends" : "id781",
         "call" : "$any-&gt;<b><a name=\"id781\">addSkipStack</a></b>(&nbsp;@CODE&nbsp;)"
      },
      "id703" : {
         "intro" : "<p><b>Not</b> extracted are the usage of anything above, where the first\nparameter is not a simple string.  Not extracted are</p>\n<pre>\n  __x($format, @more)\n  __x$format, @more\n  __x(+$format, _domain =&gt; 'other domain', @more)\n  __x($first.$second, @more)\n</pre>\n\n<p>In these cases, you have to use <code>N__()</code> functions to declare the possible\nvalues of <code>$format</code>.</p>\n",
         "path" : "DESCRIPTION/The extraction process/What is not extracted?",
         "type" : "subsection",
         "level" : 3,
         "name" : "What is not extracted?",
         "id" : "id703"
      },
      "id784-id1082" : {
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id784\">Log::Report::Dispatcher::collectLocation()</a></p>",
         "id" : "id784-id1082",
         "name" : "collectLocation",
         "extends" : "id784",
         "call" : "$any-&gt;<b><a name=\"id784\">collectLocation</a></b>"
      },
      "id500" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Win32Locale - unix/windows locales</p>\n",
         "name" : "NAME",
         "id" : "id500"
      },
      "id205" : {
         "subroutine" : "id204",
         "name" : "unknown locale language in locale '$locale'.",
         "id" : "id205",
         "type" : "error"
      },
      "id1247" : {
         "call" : "$obj-&gt;<b><a name=\"id1247\">output</a></b>(&nbsp;$msg&nbsp;)",
         "name" : "output",
         "id" : "id1247",
         "intro" : "<p>Returns the file-handle to write the log lines to. [1.10] This may\ndepend on the <tt class=\"parameter\">$msg</tt> (especially message context)</p>\n",
         "type" : "i_method"
      },
      "id635" : {
         "name" : "unknown translation table extension '$ext' in $file.",
         "id" : "id635",
         "subroutine" : "id634",
         "type" : "error"
      },
      "id685" : {
         "name" : "needDecode",
         "id" : "id685",
         "diagnostics" : [
            "id686"
         ],
         "call" : "$any-&gt;<b><a name=\"id685\">needDecode</a></b>(&nbsp;$source, STRING|ARRAY|HASH|PAIRS&nbsp;)",
         "type" : "ci_method",
         "intro" : "<p>Converts the context settings passed with the MSGID, into a <tt class=\"parameter\">HASH</tt> which will\nbe matched to the context providers.</p>\n"
      },
      "id1176" : {
         "name" : "SYNOPSIS",
         "id" : "id1176",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  use Log::Dispatch::File;\n  dispatcher Log::Dispatch::File =&gt; 'logger', accept =&gt; 'NOTICE-',\n    filename =&gt; 'logfile', to_level =&gt; [ 'ALERT-' =&gt; 'err' ];\n\n  # disable default dispatcher\n  dispatcher close =&gt; 'logger';\n</pre>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id218" : {
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>Dancer2::Plugin::LogReport::Message - extended Log::Report message class</p>\n",
         "level" : 1,
         "name" : "NAME",
         "id" : "id218"
      },
      "id912" : {
         "name" : "classes",
         "id" : "id912",
         "call" : "$obj-&gt;<b><a name=\"id912\">classes</a></b>",
         "type" : "i_method",
         "intro" : "<p>Deprecated alternative for <a class=\"jump\" href=\"id911\">tags()</a>.</p>\n"
      },
      "id779-id1082" : {
         "call" : "$obj-&gt;<b><a name=\"id779\">translate</a></b>(&nbsp;\\%options, $reason, $message&nbsp;)",
         "extends" : "id779",
         "id" : "id779-id1082",
         "name" : "translate",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id779\">Log::Report::Dispatcher::translate()</a></p>",
         "type" : "i_method"
      },
      "id758-id1082" : {
         "name" : "accept",
         "id" : "id758-id1082",
         "value" : "<code>depend on mode</code>",
         "extends" : "id758",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "type" : "default"
      },
      "id772-id1174" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id772\">Log::Report::Dispatcher::type()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id772\">type</a></b>",
         "id" : "id772-id1174",
         "name" : "type",
         "extends" : "id772"
      },
      "id1146-id375" : {
         "extends" : "id1146",
         "value" : "<code>undef</code>",
         "name" : "config",
         "id" : "id1146-id375",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1145\">Log::Report::Domain::configure(config)</a></p>"
      },
      "id1022" : {
         "type" : "section",
         "path" : "FUNCTIONS/Messages (optionally translatable)",
         "intro" : "<p>Even when you do not support translations (yet) you may want to use\nmessage objects to improve the logging feature. For instance,\nyou get very powerful interpolation from <a class=\"jump\" href=\"id47\">String::Print</a>.</p>\n\n<p>The language translations are initiate by limited set of functions\nwhich contain <b>two under-scores</b> (<code>__</code>) in their name.  Most\nof them return a <a class=\"jump\" href=\"id856\">Log::Report::Message</a> object.</p>\n\n<p><b>Be warned(1)</b> that -in general- its considered very bad practice to\ncombine multiple translations into one message: translating may also\naffect the order of the translated components. Besides, when the person\nwhich translates only sees smaller parts of the text, his (or her) job\nbecomes more complex.  So:</p>\n<pre>\n  print __\"Hello\" . ', ' . __\"World!\";  # works, but to be avoided\n  print __\"Hello, World!\";              # preferred, complete sentence\n</pre>\n\n<p>The the former case, tricks with overloading used by the\n<a class=\"jump\" href=\"id856\">Log::Report::Message</a> objects will still make delayed translations\nwork.</p>\n\n<p>In normal situations, it is not a problem to translate interpolated\nvalues:</p>\n<pre>\n  print __\"the color is {c}\", c =&gt; __\"red\";\n</pre>\n\n<p><b>Be warned(2)</b> that using <code>__'Hello'</code> will produce a syntax error like\n\"String found where operator expected at .... Can't find string terminator\n\"'\" anywhere before EOF\".  The first quote is the cause of the complaint,\nbut the second generates the error.  In the early days of Perl, the single\nquote was used to separate package name from function name, a role which\nwas later replaced by a double-colon.  So <code>__'Hello'</code> gets interpreted\nas <code>__::Hello '</code>.  Then, there is a trailing single quote which has\nno counterpart.</p>\n",
         "level" : 2,
         "subroutines" : [
            "id1025",
            "id1037",
            "id1023",
            "id1032",
            "id1028",
            "id1035",
            "id1033",
            "id1030"
         ],
         "name" : "Messages (optionally translatable)",
         "id" : "id1022"
      },
      "id1186" : {
         "value" : "<code>undef</code>",
         "name" : "max_level",
         "id" : "id1186",
         "type" : "default"
      },
      "id791" : {
         "type" : "default",
         "value" : "&lt;required&gt;",
         "id" : "id791",
         "name" : "linenr"
      },
      "id757-id1082" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "type" : "option",
         "params" : "$reasons|\\@reasons",
         "name" : "accept",
         "id" : "id757-id1082",
         "extends" : "id757"
      },
      "id792-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>",
         "params" : "STRING",
         "type" : "option",
         "extends" : "id792",
         "name" : "call",
         "id" : "id792-id944"
      },
      "id100" : {
         "id" : "id100",
         "name" : "Modifier: BYTES",
         "level" : 3,
         "type" : "subsection",
         "intro" : "<p>[0.91] Too often, you have to translate a (file) size into humanly readible\nformat.  The <code>BYTES</code> modifier simplifies this a lot:</p>\n<pre>\n  printp \"{size BYTES} {fn}\\n\", fn =&gt; $fn, size =&gt; -s $fn;\n</pre>\n\n<p>The output will always be 5 characters.  Examples are \"999 B\", \"1.2kB\",\nand \" 27MB\".</p>\n",
         "path" : "DETAILS/Interpolation: Modifiers/Modifier: BYTES"
      },
      "id217" : {
         "distribution" : "Dancer2-Plugin-LogReport",
         "inheritance" : {
            "extends" : [
               "Log::Report::Message"
            ]
         },
         "package" : "Dancer2::Plugin::LogReport::Message",
         "id" : "id217",
         "name" : "Dancer2::Plugin::LogReport::Message",
         "is_pure_pod" : false,
         "title" : "extended Log::Report message class",
         "chapters" : [
            "id218",
            "id1347",
            "id219",
            "id220",
            "id1302",
            "id221",
            "id1306"
         ],
         "version" : "2.03"
      },
      "id623" : {
         "subroutines" : [
            "id624"
         ],
         "level" : 2,
         "id" : "id623",
         "name" : "Constructors",
         "path" : "METHODS/Constructors",
         "type" : "section"
      },
      "id1348" : {
         "intro" : "<pre> Log::Report::Lexicon::Table is extended by\n   <a class=\"jump\" href=\"id637\">Log::Report::Lexicon::MOTcompact</a>\n   <a class=\"jump\" href=\"id441\">Log::Report::Lexicon::POT</a>\n   <a class=\"jump\" href=\"id569\">Log::Report::Lexicon::POTcompact</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter",
         "level" : 1,
         "id" : "id1348",
         "name" : "INHERITANCE"
      },
      "id91" : {
         "type" : "section",
         "path" : "DETAILS/Four components",
         "intro" : "<p>To fill-in a FORMAT, four clearly separated components play a role:</p>\n\n<ol>\n\n\n<p><li>modifiers<br />\nHow to change the provided values, for instance to hide locale\ndifferences.</p>\n\n\n<p><li>serializer<br />\nHow to represent (the modified) the values correctly, for instance <code>undef</code>\nand ARRAYs.</p>\n\n\n<p><li>conversion<br />\nThe standard UNIX format rules, like <code>%d</code>.  One conversion rule\nhas been added 'S', which provides unicode correct behavior.</p>\n\n\n<p><li>encoding<br />\nPrepare the output for a certain syntax, like HTML.</p>\n</ol>\n\n<p>Simplified:</p>\n<pre>\n  # sprinti() replaces \"{$key$modifiers$conversion}\" by\n  $encode-&gt;($format-&gt;($serializer-&gt;($modifiers-&gt;($args{$key}))))\n\n  # sprintp() replaces \"%pos{$modifiers}$conversion\" by\n  $encode-&gt;($format-&gt;($serializer-&gt;($modifiers-&gt;($arg[$pos]))))\n</pre>\n\n<p>Example:</p>\n<pre>\n  printi \"price: {price € %-10s}\", price =&gt; $cost;\n  printi \"price: {price € %-10s}\", { price =&gt; $cost };\n  printp \"price: %-10{€}s\", $cost;\n\n  $value      = $cost (in €)\n  $modifier   = convert € to local currency £\n  $serializer = show float as string\n  $format     = column width %-10s\n  $encode     = £ into &amp;pound;     # when encodingFor('HTML')\n</pre>\n",
         "level" : 2,
         "name" : "Four components",
         "id" : "id91"
      },
      "id1056" : {
         "type" : "error",
         "name" : "message_class $class does not extend $base",
         "id" : "id1056",
         "subroutine" : "id1045"
      },
      "id905" : {
         "type" : "i_method",
         "intro" : "<p>Returns the msgid which will later be translated.</p>\n",
         "id" : "id905",
         "name" : "msgid",
         "call" : "$obj-&gt;<b><a name=\"id905\">msgid</a></b>"
      },
      "id896" : {
         "type" : "default",
         "id" : "id896",
         "name" : "_lang",
         "value" : "&lt;from locale&gt;"
      },
      "id1130" : {
         "id" : "id1130",
         "name" : "DESCRIPTION",
         "path" : "DESCRIPTION",
         "intro" : "<p><a class=\"jump\" href=\"id979\">Log::Report</a> can handle multiple sets of packages used by your program at the same\ntime.  In the common case, your program consists of more than one imported software\ndistribution, each containing a number of packages.  So separate the <a class=\"jump\" href=\"id979\">Log::Report</a>\nconfiguration for each distribution, you should explicitly assign each package\nto a set, to a namespace.  This is (in translation lingo) a <i>domain</i> or <i>text domain</i>.\nThe default domain has name <code>default</code>.</p>\n\n<p>For <code>Log::Report</code>, those package sets are selected with the text-domain\nvalue in the <code>use</code> statement:</p>\n<pre>\n  use Log::Report 'my-domain';\n</pre>\n\n<p>There are many things you can configure per (text)domain.  This is\nnot only related to translations, but also -for instance- for text\nformatting configuration (<a class=\"jump\" href=\"id47\">String::Print</a> options).  The administration\nfor the configuration is managed in this package.</p>\n\n<p>This class extends <a class=\"jump\" href=\"id158\">Log::Report::Minimal::Domain</a>, which can be used when your\nprogram does not want any overhead from the powerful <a class=\"jump\" href=\"id979\">Log::Report</a> features.\nIn that case, your program invokes <a class=\"jump\" href=\"id208\">Log::Report::Optional</a>.</p>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id1262" : {
         "type" : "chapter",
         "nest" : [
            "id1263",
            "id1264"
         ],
         "path" : "DETAILS",
         "name" : "DETAILS",
         "id" : "id1262",
         "level" : 1
      },
      "id1304" : {
         "level" : 2,
         "name" : "Attributes",
         "id" : "id1304",
         "subroutines" : [
            "id907-id217",
            "id913-id217",
            "id911-id217",
            "id914-id217",
            "id912-id217",
            "id915-id217",
            "id909-id217",
            "id905-id217",
            "id908-id217",
            "id916-id217",
            "id906-id217",
            "id904-id217",
            "id910-id217"
         ],
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id426-id697" : {
         "call" : "$obj-&gt;<b><a name=\"id426\">index</a></b>",
         "name" : "index",
         "id" : "id426-id697",
         "extends" : "id426",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id426\">Log::Report::Extract::index()</a></p>",
         "type" : "i_method"
      },
      "id1249" : {
         "type" : "i_method",
         "intro" : "<p>[1.00] Move the current file to <tt class=\"parameter\">$filename</tt>, and start a new file.</p>\n",
         "diagnostics" : [
            "id1250",
            "id1251",
            "id1252"
         ],
         "name" : "rotate",
         "id" : "id1249",
         "call" : "$obj-&gt;<b><a name=\"id1249\">rotate</a></b>(&nbsp;$filename|CODE&nbsp;)"
      },
      "id797-id944" : {
         "name" : "max_line",
         "id" : "id797-id944",
         "extends" : "id797",
         "value" : "<code>undef</code>",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "type" : "default"
      },
      "id924-id217" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id924\">Log::Report::Message::untranslated()</a></p>",
         "id" : "id924-id217",
         "name" : "untranslated",
         "extends" : "id924",
         "call" : "$obj-&gt;<b><a name=\"id924\">untranslated</a></b>"
      },
      "id918" : {
         "type" : "section",
         "path" : "METHODS/Processing",
         "id" : "id918",
         "name" : "Processing",
         "level" : 2,
         "subroutines" : [
            "id927",
            "id922",
            "id920",
            "id924",
            "id919",
            "id925",
            "id929",
            "id921"
         ]
      },
      "id212" : {
         "path" : "METHODS",
         "type" : "chapter",
         "subroutines" : [
            "id213"
         ],
         "name" : "METHODS",
         "id" : "id212",
         "level" : 1
      },
      "id1072" : {
         "intro" : "<p>The <code>GetOptions()</code> function will count the number of <code>v</code> options\non the command-line when a <code>+</code> is after the option name.</p>\n<pre>\n  use Log::Report;\n  use Getopt::Long qw(:config no_ignore_case bundling);\n\n  my $mode;    # defaults to NORMAL\n  GetOptions 'v+'        =&gt; \\$mode,\n             'verbose=i' =&gt; \\$mode,\n             'mode=s'    =&gt; \\$mode\n      or exit 1;\n\n  dispatcher 'PERL', 'default', mode =&gt; $mode;\n</pre>\n\n<p>Now, <code>-vv</code> will set <code>$mode</code> to <code>2</code>, as will <code>--verbose 2</code> and\n<code>--verbose=2</code> and <code>--mode=ASSERT</code>.  Of course, you do not need to\nprovide all these options to the user: make a choice.</p>\n",
         "type" : "example",
         "id" : "id1072",
         "name" : "extract run mode from Getopt::Long\n"
      },
      "id777-id1174" : {
         "extends" : "id777",
         "id" : "id777-id1174",
         "name" : "close",
         "call" : "$obj-&gt;<b><a name=\"id777\">close</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id777\">Log::Report::Dispatcher::close()</a></p>"
      },
      "id369" : {
         "level" : 3,
         "type" : "subsection",
         "intro" : "<p>Usually, when data is passed from the program's internal to the template,\nit should get encoded into HTML to escape some characters.  Typical TT\ncode:</p>\n<pre>\n  Title: [% title | html %]\n</pre>\n\n<p>When your insert is produced by the localizer, you can do this as well\n(set <code>template_syntax</code> to 'UNKNOWN' first)</p>\n<pre>\n  [% loc(\"Title: {t}\", t =&gt; title) | html %]\n</pre>\n\n<p>The default TT syntax is 'HTML', which will circumvent the need to\nuse the html filter.  In that default case, you only say:</p>\n<pre>\n  [% loc(\"Title: {t}\", t =&gt; title) %]\n  [% loc(\"Title: {title}\") %]  # short form, see previous section\n</pre>\n\n<p>When the title is already escaped for HTML, you can circumvent that\nby using tags which end on 'html':</p>\n<pre>\n  [% loc(\"Title: {t_html}\", t_html =&gt; title) %]\n\n  [% SET title_html = html(title) %]\n  [% loc(\"Title: {title_html}\") %]\n</pre>\n",
         "path" : "DETAILS/Supported syntax/Translation into HTML",
         "name" : "Translation into HTML",
         "id" : "id369"
      },
      "id739-id637" : {
         "id" : "id739-id637",
         "name" : "translations",
         "extends" : "id739",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id739\">Log::Report::Lexicon::Table::translations()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id739\">translations</a></b>(&nbsp;[$active]&nbsp;)",
         "diagnostics" : [
            "id740-id637"
         ]
      },
      "id850" : {
         "id" : "id850",
         "name" : "wasFatal",
         "call" : "$obj-&gt;<b><a name=\"id850\">wasFatal</a></b>(&nbsp;%options&nbsp;)",
         "options" : [
            [
               "id853",
               "id854"
            ],
            [
               "id851",
               "id852"
            ]
         ],
         "type" : "i_method",
         "intro" : "<p>Returns the <a class=\"jump\" href=\"id1194\">Log::Report::Exception</a> which caused the \"try\" block to\ndie, otherwise an empty LIST (<code>undef</code>).</p>\n"
      },
      "id889-id217" : {
         "type" : "option",
         "params" : "$tags|\\@tags",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id889\">Log::Report::Message::new(_class)</a></p>",
         "extends" : "id889",
         "name" : "_class",
         "id" : "id889-id217"
      },
      "id1126" : {
         "intro" : "<p>Inherited <tt class=\"parameter\">%options</tt> <code>path</code> and <code>level</code> are ignored.</p>\n",
         "type" : "c_method",
         "call" : "$class-&gt;<b><a name=\"id1126\">new</a></b>(&nbsp;%options&nbsp;)",
         "name" : "new",
         "id" : "id1126"
      },
      "id1315" : {
         "name" : "INHERITANCE",
         "id" : "id1315",
         "level" : 1,
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Translator is extended by\n   <a class=\"jump\" href=\"id611\">Log::Report::Translator::Gettext</a>\n   <a class=\"jump\" href=\"id618\">Log::Report::Translator::POT</a>\n</pre>\n",
         "type" : "chapter"
      },
      "id775-id944" : {
         "id" : "id775-id944",
         "name" : "needs",
         "extends" : "id775",
         "call" : "$obj-&gt;<b><a name=\"id775\">needs</a></b>(&nbsp;[$reason]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id775\">Log::Report::Dispatcher::needs()</a></p>"
      },
      "id176-id1127" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id176\">Log::Report::Minimal::Domain::configure(formatter)</a></p>",
         "type" : "option",
         "params" : "CODE|\\%config|'PRINTI'",
         "id" : "id176-id1127",
         "name" : "formatter",
         "extends" : "id176"
      },
      "id1043" : {
         "call" : "<b><a name=\"id1043\">__npx</a></b>(&nbsp;$msgctxt, $msgid, $plural, count, PAIRS&nbsp;)",
         "id" : "id1043",
         "name" : "__npx",
         "type" : "function"
      },
      "id917" : {
         "type" : "example",
         "intro" : "<p>When the message was produced with</p>\n<pre>\n  my @files = qw/one two three/;\n  my $msg = __xn\n     \"found one file: {file}\",\n     \"found {nrfiles} files: {files}\",\n     scalar @files,\n     file    =&gt; $files[0],\n     files   =&gt; \\@files,\n     nrfiles =&gt; @files+0,  # or scalar(@files)\n     _tags   =&gt; [ 'IO', 'files' ],\n     _join   =&gt; ', ';\n</pre>\n\n<p>then the values can be takes from the produced message as</p>\n<pre>\n  my $files = $msg-&gt;valueOf('files');  # returns ARRAY reference\n  print @$files;                 # 3\n  my $count = $msg-&gt;count;       # 3\n  my @tags  = $msg-&gt;tags;        # 'IO', 'files'\n  if($msg-&gt;taggedWith('files'))  # true\n</pre>\n\n<p>Simplified, the above example can also be written as:</p>\n<pre>\n  local $\" = ', ';  # Perl default\n  my $msg  = __xn\n     \"found one file: {files}\",\n     \"found {_count} files: {files}\",\n     @files,      # has scalar context\n     files   =&gt; \\@files,\n     _tags   =&gt; 'IO, files';\n</pre>\n",
         "id" : "id917"
      },
      "id798-id944" : {
         "id" : "id798-id944",
         "name" : "max_params",
         "extends" : "id798",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>",
         "params" : "INTEGER",
         "type" : "option"
      },
      "id789-id1090" : {
         "extends" : "id789",
         "value" : "&lt;required&gt;",
         "name" : "filename",
         "id" : "id789-id1090",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>",
         "type" : "default"
      },
      "id765-id1228" : {
         "id" : "id765-id1228",
         "name" : "charset",
         "extends" : "id765",
         "type" : "option",
         "params" : "CHARSET",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>"
      },
      "id329" : {
         "type" : "option",
         "params" : "'UNKNOWN'|'HTML'",
         "intro" : "<p>Linked to <a class=\"jump\" href=\"id58\">String::Print::new(encode_for)</a>: the output of the translation\nis HTML encoded unless the inserted value name ends on <code>_html</code>.\nRead <a class=\"jump\" href=\"id369\">Translation into HTML</a></p>\n",
         "name" : "template_syntax",
         "id" : "id329"
      },
      "id763-id818" : {
         "extends" : "id763",
         "name" : "format_reason",
         "id" : "id763-id818",
         "type" : "option",
         "params" : "'UPPERCASE'|'LOWERCASE'|'UCFIRST'|'IGNORE'|CODE",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>"
      },
      "id778-id1174" : {
         "call" : "$obj-&gt;<b><a name=\"id778\">log</a></b>(&nbsp;\\%options, $reason, $message, $domain&nbsp;)",
         "extends" : "id778",
         "name" : "log",
         "id" : "id778-id1174",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id778\">Log::Report::Dispatcher::log()</a></p>",
         "type" : "i_method"
      },
      "id783-id1228" : {
         "id" : "id783-id1228",
         "name" : "skipStack",
         "extends" : "id783",
         "call" : "$obj-&gt;<b><a name=\"id783\">skipStack</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id783\">Log::Report::Dispatcher::skipStack()</a></p>"
      },
      "id759-id1174" : {
         "type" : "option",
         "params" : "LOCALE",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "extends" : "id759",
         "name" : "locale",
         "id" : "id759-id1174"
      },
      "id1152" : {
         "path" : "METHODS/Translating",
         "type" : "section",
         "subroutines" : [
            "id180-id1127",
            "id1153",
            "id1158",
            "id1156",
            "id1157"
         ],
         "id" : "id1152",
         "name" : "Translating",
         "level" : 2
      },
      "id795-id1174" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>",
         "name" : "params",
         "id" : "id795-id1174",
         "extends" : "id795",
         "value" : "&lt;required&gt;"
      },
      "id874-id217" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id873\">Log::Report::Message::new(_plural)</a></p>",
         "value" : "<code>undef</code>",
         "extends" : "id874",
         "name" : "_plural",
         "id" : "id874-id217"
      },
      "id785-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id785\">Log::Report::Dispatcher::stackTraceLine()</a></p>",
         "type" : "ci_method",
         "options" : [
            [
               "id800-id818",
               "id801-id818"
            ],
            [
               "id792-id818",
               "id793-id818"
            ],
            [
               "id788-id818",
               "id789-id818"
            ],
            [
               "id790-id818",
               "id791-id818"
            ],
            [
               "id796-id818",
               "id797-id818"
            ],
            [
               "id798-id818",
               "id799-id818"
            ],
            [
               "id786-id818",
               "id787-id818"
            ],
            [
               "id794-id818",
               "id795-id818"
            ]
         ],
         "call" : "$any-&gt;<b><a name=\"id785\">stackTraceLine</a></b>(&nbsp;%options&nbsp;)",
         "extends" : "id785",
         "id" : "id785-id818",
         "name" : "stackTraceLine"
      },
      "id1082" : {
         "version" : "1.45",
         "chapters" : [
            "id1083",
            "id1319",
            "id1084",
            "id1085",
            "id1086",
            "id1255"
         ],
         "id" : "id1082",
         "name" : "Log::Report::Dispatcher::Perl",
         "title" : "send messages to die and warn",
         "is_pure_pod" : false,
         "distribution" : "Log-Report",
         "package" : "Log::Report::Dispatcher::Perl",
         "inheritance" : {
            "extends" : [
               "Log::Report::Dispatcher"
            ]
         }
      },
      "id774-id1090" : {
         "call" : "$obj-&gt;<b><a name=\"id774\">isDisabled</a></b>",
         "name" : "isDisabled",
         "id" : "id774-id1090",
         "extends" : "id774",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id774\">Log::Report::Dispatcher::isDisabled()</a></p>",
         "type" : "i_method"
      },
      "id310" : {
         "subroutine" : "id305",
         "name" : "processing file $file in $charset.",
         "id" : "id310",
         "type" : "info"
      },
      "id1153-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1153\">Log::Report::Domain::setContext()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id1153\">setContext</a></b>(&nbsp;STRING|HASH|ARRAY|PAIRS&nbsp;)",
         "diagnostics" : [
            "id1155-id375"
         ],
         "extends" : "id1153",
         "name" : "setContext",
         "id" : "id1153-id375"
      },
      "id885-id217" : {
         "name" : "_tags",
         "id" : "id885-id217",
         "extends" : "id885",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id885\">Log::Report::Message::new(_tags)</a></p>",
         "type" : "option",
         "params" : "$tags|\\@tags"
      },
      "id758-id944" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "value" : "<code>depend on mode</code>",
         "extends" : "id758",
         "name" : "accept",
         "id" : "id758-id944"
      },
      "id774-id818" : {
         "call" : "$obj-&gt;<b><a name=\"id774\">isDisabled</a></b>",
         "extends" : "id774",
         "id" : "id774-id818",
         "name" : "isDisabled",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id774\">Log::Report::Dispatcher::isDisabled()</a></p>",
         "type" : "i_method"
      },
      "id779-id944" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id779\">Log::Report::Dispatcher::translate()</a></p>",
         "name" : "translate",
         "id" : "id779-id944",
         "extends" : "id779",
         "call" : "$obj-&gt;<b><a name=\"id779\">translate</a></b>(&nbsp;\\%options, $reason, $message&nbsp;)"
      },
      "id1202" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "name" : "Constructors",
         "id" : "id1202",
         "level" : 2,
         "subroutines" : [
            "id1203"
         ]
      },
      "id52" : {
         "path" : "METHODS/Constructors",
         "intro" : "<p>When you use this package with functions, then you do not call the\nconstructor explicitly.  In that case, these <a class=\"jump\" href=\"id53\">new()</a> parameters are\nadded to the <code>use String::Print</code> line.</p>\n",
         "type" : "section",
         "subroutines" : [
            "id53"
         ],
         "level" : 2,
         "id" : "id52",
         "name" : "Constructors"
      },
      "id890" : {
         "type" : "default",
         "id" : "id890",
         "name" : "_class",
         "value" : "<code>undef</code>"
      },
      "id404" : {
         "name" : "superfluous positional parameters for '$msgid'",
         "id" : "id404",
         "subroutine" : "id402",
         "type" : "error"
      },
      "id785-id1090" : {
         "type" : "ci_method",
         "options" : [
            [
               "id800-id1090",
               "id801-id1090"
            ],
            [
               "id792-id1090",
               "id793-id1090"
            ],
            [
               "id788-id1090",
               "id789-id1090"
            ],
            [
               "id790-id1090",
               "id791-id1090"
            ],
            [
               "id796-id1090",
               "id797-id1090"
            ],
            [
               "id798-id1090",
               "id799-id1090"
            ],
            [
               "id786-id1090",
               "id787-id1090"
            ],
            [
               "id794-id1090",
               "id795-id1090"
            ]
         ],
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id785\">Log::Report::Dispatcher::stackTraceLine()</a></p>",
         "extends" : "id785",
         "id" : "id785-id1090",
         "name" : "stackTraceLine",
         "call" : "$any-&gt;<b><a name=\"id785\">stackTraceLine</a></b>(&nbsp;%options&nbsp;)"
      },
      "id325" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "name" : "Constructors",
         "id" : "id325",
         "level" : 2,
         "subroutines" : [
            "id326"
         ]
      },
      "id420-id697" : {
         "extends" : "id420",
         "value" : "&lt;required&gt;",
         "name" : "lexicon",
         "id" : "id420-id697",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id419\">Log::Report::Extract::new(lexicon)</a></p>",
         "type" : "default"
      },
      "id1300" : {
         "level" : 3,
         "id" : "id1300",
         "name" : "Addition information",
         "path" : "DETAILS/Processing the message/Addition information",
         "type" : "subsection"
      },
      "id763-id1090" : {
         "extends" : "id763",
         "name" : "format_reason",
         "id" : "id763-id1090",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>",
         "type" : "option",
         "params" : "'UPPERCASE'|'LOWERCASE'|'UCFIRST'|'IGNORE'|CODE"
      },
      "id562" : {
         "name" : "no msgid in block $where.",
         "id" : "id562",
         "subroutine" : "id557",
         "type" : "warning"
      },
      "id799-id1174" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>",
         "type" : "default",
         "value" : "8",
         "extends" : "id799",
         "id" : "id799-id1174",
         "name" : "max_params"
      },
      "id789-id818" : {
         "name" : "filename",
         "id" : "id789-id818",
         "value" : "&lt;required&gt;",
         "extends" : "id789",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>"
      },
      "id784-id944" : {
         "extends" : "id784",
         "id" : "id784-id944",
         "name" : "collectLocation",
         "call" : "$any-&gt;<b><a name=\"id784\">collectLocation</a></b>",
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id784\">Log::Report::Dispatcher::collectLocation()</a></p>"
      },
      "id1192" : {
         "name" : "Logging",
         "id" : "id1192",
         "level" : 2,
         "subroutines" : [
            "id781-id1174",
            "id785-id1174",
            "id778-id1174",
            "id784-id1174",
            "id777-id1174",
            "id780-id1174",
            "id783-id1174",
            "id779-id1174",
            "id1193"
         ],
         "type" : "section",
         "path" : "METHODS/Logging"
      },
      "id863-id217" : {
         "name" : "'.'",
         "id" : "id863-id217",
         "extends" : "id863",
         "call" : "overload <b><a name=\"id863\">'.'</a></b>; concatenation",
         "type" : "overload",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id863\">Log::Report::Message::'.'()</a></p>"
      },
      "id419-id697" : {
         "id" : "id419-id697",
         "name" : "lexicon",
         "extends" : "id419",
         "params" : "$directory",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id419\">Log::Report::Extract::new(lexicon)</a></p>"
      },
      "id166-id375" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id165\">Log::Report::Minimal::Domain::new(name)</a></p>",
         "value" : "&lt;required&gt;",
         "extends" : "id166",
         "id" : "id166-id375",
         "name" : "name"
      },
      "id1134" : {
         "subroutines" : [
            "id170-id1127",
            "id172-id1127",
            "id1138",
            "id171-id1127",
            "id1136",
            "id1137",
            "id1135",
            "id1149"
         ],
         "level" : 2,
         "id" : "id1134",
         "name" : "Attributes",
         "path" : "METHODS/Attributes",
         "type" : "section"
      },
      "id122" : {
         "id" : "id122",
         "name" : "textdomain",
         "call" : "<b><a name=\"id122\">textdomain</a></b>(&nbsp;&lt;[$name],$config&gt;|&lt;$name, 'DELETE'|'EXISTS'>|$domain&nbsp;)",
         "type" : "function"
      },
      "id170-id1127" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id170\">Log::Report::Minimal::Domain::name()</a></p>",
         "extends" : "id170",
         "name" : "name",
         "id" : "id170-id1127",
         "call" : "$obj-&gt;<b><a name=\"id170\">name</a></b>"
      },
      "id909" : {
         "call" : "$obj-&gt;<b><a name=\"id909\">context</a></b>",
         "id" : "id909",
         "name" : "context",
         "intro" : "<p>Returns an HASH if there is a context defined for this message.</p>\n",
         "type" : "i_method"
      },
      "id522" : {
         "params" : "$translation|\\@translations",
         "type" : "option",
         "intro" : "<p>The <tt class=\"parameter\">@translations</tt> for the <tt class=\"parameter\">msgid</tt>.  When <tt class=\"parameter\">msgid_plural</tt> is defined, then an\nARRAY must be provided.</p>\n",
         "name" : "msgstr",
         "id" : "id522"
      },
      "id856" : {
         "chapters" : [
            "id857",
            "id1331",
            "id858",
            "id859",
            "id860",
            "id864",
            "id930"
         ],
         "version" : "1.45",
         "inheritance" : {
            "extended_by" : [
               "Dancer2::Plugin::LogReport::Message"
            ]
         },
         "package" : "Log::Report::Message",
         "distribution" : "Log-Report",
         "is_pure_pod" : false,
         "title" : "a piece of text to be translated",
         "id" : "id856",
         "name" : "Log::Report::Message"
      },
      "id1119" : {
         "type" : "i_method",
         "intro" : "<p>Returns a level which is understood by syslog(3), based on a translation\ntable.  This can be changed with <a class=\"jump\" href=\"id1104\">new(to_prio)</a>.</p>\n",
         "name" : "reasonToPrio",
         "id" : "id1119",
         "call" : "$obj-&gt;<b><a name=\"id1119\">reasonToPrio</a></b>(&nbsp;$reason&nbsp;)"
      },
      "id911-id217" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id911\">Log::Report::Message::tags()</a></p>",
         "extends" : "id911",
         "name" : "tags",
         "id" : "id911-id217",
         "call" : "$obj-&gt;<b><a name=\"id911\">tags</a></b>"
      },
      "id383" : {
         "type" : "default",
         "value" : "<code>undef</code>",
         "id" : "id383",
         "name" : "only_in_directory"
      },
      "id333" : {
         "name" : "translate_to",
         "id" : "id333",
         "intro" : "<p>Globally set the output language of template processing.  Usually, this\nis derived from the logged-in user setting or browser setting.\nSee <a class=\"jump\" href=\"id340\">translateTo()</a>.</p>\n",
         "params" : "LANGUAGE",
         "type" : "option"
      },
      "id162" : {
         "id" : "id162",
         "name" : "METHODS",
         "level" : 1,
         "type" : "chapter",
         "nest" : [
            "id163",
            "id169",
            "id179"
         ],
         "path" : "METHODS"
      },
      "id757-id944" : {
         "params" : "$reasons|\\@reasons",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "name" : "accept",
         "id" : "id757-id944",
         "extends" : "id757"
      },
      "id792-id1082" : {
         "extends" : "id792",
         "id" : "id792-id1082",
         "name" : "call",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>",
         "type" : "option",
         "params" : "STRING"
      },
      "id745" : {
         "type" : "i_method",
         "intro" : "<p>Returns the number of plurals, when not known then '2'.</p>\n",
         "id" : "id745",
         "name" : "nrPlurals",
         "call" : "$obj-&gt;<b><a name=\"id745\">nrPlurals</a></b>"
      },
      "id56" : {
         "params" : "HASH|ARRAY",
         "type" : "option",
         "intro" : "<p>How to serialize data elements.</p>\n",
         "name" : "serializers",
         "id" : "id56"
      },
      "id243" : {
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id243\">warning</a></b>",
         "name" : "warning",
         "id" : "id243"
      },
      "id316" : {
         "level" : 1,
         "name" : "DETAILS",
         "id" : "id316",
         "type" : "chapter",
         "path" : "DETAILS",
         "nest" : [
            "id317",
            "id319"
         ]
      },
      "id365" : {
         "id" : "id365",
         "name" : "Template::Toolkit in Dancer2",
         "intro" : "<p>When you use Dancer2, you need to connect the text domain with</p>\n<pre>\n  my $domain = (engine 'template')-&gt;addTextdomain(\n      name       =&gt; 'isaas',\n      function   =&gt; 'loc',\n  );\n</pre>\n\n<p>And in file <code>config.ini</code>:</p>\n<pre>\n  template: \"TTLogReport\"\n  engines:\n    template:\n      TTLogReport:\n</pre>\n\n<p>This \"TTLogReport\" refers to module <a class=\"jump\" href=\"id264\">Dancer2::Template::TTLogReport</a>, which is\npart of distribution <code>Log-Report</code>.</p>\n",
         "path" : "DETAILS/Textdomains/Template::Toolkit in Dancer2",
         "type" : "subsection",
         "level" : 3
      },
      "id568" : {
         "type" : "i_method",
         "intro" : "<p>[1.02] The message-id has no references anymore <b>and</b> no translations.</p>\n",
         "name" : "useless",
         "id" : "id568",
         "call" : "$obj-&gt;<b><a name=\"id568\">useless</a></b>"
      },
      "id506" : {
         "call" : "<b><a name=\"id506\">iso_locale</a></b>(&nbsp;[$codepage]&nbsp;)",
         "id" : "id506",
         "name" : "iso_locale",
         "intro" : "<p>Returns the ISO string for the Microsoft codepage locale.  Might return\n<code>undef</code>/<code>false</code>.  By default, the actual codepage is used.</p>\n",
         "type" : "function"
      },
      "id128" : {
         "type" : "default",
         "value" : "&lt;depends on reason&gt;",
         "id" : "id128",
         "name" : "is_fatal"
      },
      "id167" : {
         "id" : "id167",
         "name" : "textdomain name choice\n",
         "type" : "example",
         "intro" : "<p>A good choice is to use Perl's distribution name for the domain name.  For instance,\nthe domain name for this module would be set this way:</p>\n<pre>\n  use Log::Report 'log-report-optional';\n  use Log::Report 'log-report-opt';\n</pre>\n"
      },
      "id797-id1082" : {
         "value" : "<code>undef</code>",
         "extends" : "id797",
         "id" : "id797-id1082",
         "name" : "max_line",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>"
      },
      "id751" : {
         "name" : "NAME",
         "id" : "id751",
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Dispatcher - manage message dispatching, display or logging</p>\n",
         "level" : 1
      },
      "id527" : {
         "type" : "default",
         "value" : "[]",
         "name" : "comment",
         "id" : "id527"
      },
      "id1096" : {
         "type" : "c_method",
         "options" : [
            [
               "id757-id1090",
               "id758-id1090"
            ],
            [
               "id1110",
               "id1111"
            ],
            [
               "id1102",
               "id1103"
            ],
            [
               "id1100",
               "id1101"
            ],
            [
               "id1112",
               "id1113"
            ],
            [
               "id763-id1090",
               "id1097"
            ],
            [
               "id1098",
               "id1099"
            ],
            [
               "id1108",
               "id1109"
            ],
            [
               "id759-id1090",
               "id760-id1090"
            ],
            [
               "id1106",
               "id1107"
            ],
            [
               "id761-id1090",
               "id762-id1090"
            ],
            [
               "id1104",
               "id1105"
            ]
         ],
         "intro" : "<p>With syslog, people tend not to include the REASON of the message\nin the logs, because that is already used to determine the destination\nof the message.</p>\n",
         "diagnostics" : [
            "id1114",
            "id1115"
         ],
         "name" : "new",
         "id" : "id1096",
         "call" : "$class-&gt;<b><a name=\"id1096\">new</a></b>(&nbsp;$type, $name, %options&nbsp;)"
      },
      "id943" : {
         "level" : 1,
         "type" : "chapter",
         "intro" : "<p>This profile will log DBIx::Class queries via <a class=\"jump\" href=\"id979\">Log::Report</a> to a\nselected back-end (via a dispatcher, see <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>)</p>\n",
         "path" : "DESCRIPTION",
         "name" : "DESCRIPTION",
         "id" : "id943"
      },
      "id127" : {
         "params" : "BOOLEAN",
         "type" : "option",
         "id" : "id127",
         "name" : "is_fatal"
      },
      "id567" : {
         "name" : "no plurals expected for '$msgid'.",
         "id" : "id567",
         "subroutine" : "id563",
         "type" : "warning"
      },
      "id674" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "id" : "id674",
         "name" : "Constructors",
         "level" : 2,
         "subroutines" : [
            "id675"
         ]
      },
      "id106" : {
         "path" : "DETAILS/Interpolation: Modifiers/Modifier: CHOP or CHOP($width, [$units])",
         "intro" : "<p>[1.00] When the string is larger than <code>$width</code> columns (defaults to\n20), then chop it short and add <code>[+42]</code>: the number of character\nchopped off.  The <code>$width</code> is the size of the result string.\nThe comma is optional.</p>\n<pre>\n  \"Intro: {text CHOP(10)}\";        # Intro: 12345[+42]\n  \"Intro: {text CHOP(19 chars)}\";  # Intro: 1234578[+33 chars]\n  \"Intro: {text CHOP(19, chars)}\"; # Intro: 1234578[+33 chars]\n</pre>\n\n<p>The same effect can be reached by setting the defaults</p>\n<pre>\n  $sp-&gt;setDefaults(CHOP =&gt; +{width =&gt; 19, units =&gt; ' chars'});\n  $sp-&gt;printi(\"Intro: {text CHOP}\", text =&gt; $t); # Intro: 1234578[+33 chars]\n</pre>\n\n<p>Other defaults are <code>head</code> (<code>[</code>) and <code>tail</code> (<code>]</code>).</p>\n<pre>\n  $sp-&gt;setDefaults(CHOP =&gt; +{head =&gt; '«', tail =&gt; '»'});\n  $sp-&gt;printi(\"Intro: {text CHOP}\", text =&gt; $t); # Intro: 1234578«+12»\n</pre>\n",
         "type" : "subsection",
         "level" : 3,
         "name" : "Modifier: CHOP or CHOP($width, [$units])",
         "id" : "id106"
      },
      "id209" : {
         "name" : "NAME",
         "id" : "id209",
         "level" : 1,
         "path" : "NAME",
         "intro" : "<p>Log::Report::Optional - pick Log::Report or ::Minimal</p>\n",
         "type" : "chapter"
      },
      "id639" : {
         "id" : "id639",
         "name" : "SYNOPSIS",
         "type" : "chapter",
         "intro" : "<pre>  # using a MO table efficiently\n  my $mot = Log::Report::Lexicon::MOTcompact-&gt;read('mo/nl.mo')\n     or die;\n\n  my $header = $mot-&gt;msgid('');\n  print $mot-&gt;msgstr($msgid, 3);\n</pre>\n",
         "path" : "SYNOPSIS",
         "level" : 1
      },
      "id528" : {
         "intro" : "<p>The string is not yet translated, some smart guesses may have been made.\nSee <a class=\"jump\" href=\"id551\">fuzzy()</a>.</p>\n",
         "type" : "option",
         "params" : "BOOLEAN",
         "name" : "fuzzy",
         "id" : "id528"
      },
      "id1117" : {
         "call" : "$obj-&gt;<b><a name=\"id1117\">format</a></b>(&nbsp;[CODE]&nbsp;)",
         "id" : "id1117",
         "name" : "format",
         "intro" : "<p>Returns the <tt class=\"parameter\">CODE</tt> ref which formats the syslog line.</p>\n",
         "type" : "i_method"
      },
      "id689" : {
         "level" : 1,
         "intro" : "<p>The \"contexts\" concept in (GNU's version of) gettext, has a\nvery restricted purpose: to separate two (accidental) uses of the\nsame message-id, under different circumstances.  The same msgid may\ntranslated diffently in one file or the other.</p>\n\n<p>For instance, two libraries used in the same application, or two\ncomponentent within a single library both want to used the same\ndefault text (which usually is very short)</p>\n<pre>\n  char * t1 = pgettext('interface', 'None');\n  char * t2 = pgettext('selections', 'None');\n</pre>\n\n<p>Some translation setups use the library name consequently as msgctxt.\nBut, the name \"context\" is pretending much more power than the gettext\nlibraries are capable of: it usually only behaves like a namespace.</p>\n",
         "path" : "DETAILS",
         "type" : "chapter",
         "name" : "DETAILS",
         "id" : "id689",
         "nest" : [
            "id690",
            "id691"
         ]
      },
      "id798-id1082" : {
         "params" : "INTEGER",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>",
         "extends" : "id798",
         "id" : "id798-id1082",
         "name" : "max_params"
      },
      "id168" : {
         "type" : "error",
         "subroutine" : "id164",
         "name" : "translation domain without name.",
         "id" : "id168"
      },
      "id775-id1082" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id775\">Log::Report::Dispatcher::needs()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id775\">needs</a></b>(&nbsp;[$reason]&nbsp;)",
         "id" : "id775-id1082",
         "name" : "needs",
         "extends" : "id775"
      },
      "id1321" : {
         "id" : "id1321",
         "name" : "INHERITANCE",
         "level" : 1,
         "intro" : "<pre> Log::Report::Domain\n   is a <a class=\"jump\" href=\"id158\">Log::Report::Minimal::Domain</a>\n\n Log::Report::Domain is extended by\n   <a class=\"jump\" href=\"id375\">Log::Report::Template::Textdomain</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter"
      },
      "id849" : {
         "name" : "success",
         "id" : "id849",
         "call" : "$obj-&gt;<b><a name=\"id849\">success</a></b>",
         "type" : "i_method",
         "intro" : "<p>Returns <code>true</code> if the block exited normally.</p>\n"
      },
      "id1107" : {
         "type" : "default",
         "id" : "id1107",
         "name" : "logsocket",
         "value" : "<code>undef</code>"
      },
      "id796" : {
         "id" : "id796",
         "name" : "max_line",
         "params" : "INTEGER",
         "type" : "option"
      },
      "id789-id1082" : {
         "id" : "id789-id1082",
         "name" : "filename",
         "extends" : "id789",
         "value" : "&lt;required&gt;",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>"
      },
      "id698" : {
         "name" : "NAME",
         "id" : "id698",
         "level" : 1,
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Extract::PerlPPI - Collect translatable strings from Perl using PPI</p>\n"
      },
      "id675" : {
         "options" : [
            [
               "id676",
               "id677"
            ]
         ],
         "type" : "c_method",
         "id" : "id675",
         "name" : "new",
         "call" : "$class-&gt;<b><a name=\"id675\">new</a></b>(&nbsp;%options&nbsp;)"
      },
      "id771-id958" : {
         "call" : "$obj-&gt;<b><a name=\"id771\">name</a></b>",
         "id" : "id771-id958",
         "name" : "name",
         "extends" : "id771",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id771\">Log::Report::Dispatcher::name()</a></p>",
         "type" : "i_method"
      },
      "id1297" : {
         "level" : 1,
         "name" : "DETAILS",
         "id" : "id1297",
         "type" : "chapter",
         "path" : "DETAILS",
         "nest" : [
            "id1298",
            "id1299"
         ]
      },
      "id153" : {
         "type" : "function",
         "call" : "<b><a name=\"id153\">N__n</a></b>(&nbsp;$single_msgid, $plural_msgid&nbsp;)",
         "id" : "id153",
         "name" : "N__n"
      },
      "id774-id1082" : {
         "call" : "$obj-&gt;<b><a name=\"id774\">isDisabled</a></b>",
         "name" : "isDisabled",
         "id" : "id774-id1082",
         "extends" : "id774",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id774\">Log::Report::Dispatcher::isDisabled()</a></p>",
         "type" : "i_method"
      },
      "id697" : {
         "name" : "Log::Report::Extract::PerlPPI",
         "id" : "id697",
         "is_pure_pod" : false,
         "title" : "Collect translatable strings from Perl using PPI",
         "distribution" : "Log-Report-Lexicon",
         "inheritance" : {
            "extends" : [
               "Log::Report::Extract"
            ]
         },
         "package" : "Log::Report::Extract::PerlPPI",
         "version" : "1.16",
         "chapters" : [
            "id698",
            "id1342",
            "id699",
            "id700",
            "id704"
         ]
      },
      "id750" : {
         "chapters" : [
            "id751",
            "id1333",
            "id752",
            "id753",
            "id754",
            "id802"
         ],
         "version" : "1.45",
         "inheritance" : {
            "extended_by" : [
               "Log::Report::Dispatcher::Callback",
               "Log::Report::Dispatcher::File",
               "Log::Report::Dispatcher::Log4perl",
               "Log::Report::Dispatcher::LogDispatch",
               "Log::Report::Dispatcher::Perl",
               "Log::Report::Dispatcher::Syslog",
               "Log::Report::Dispatcher::Try"
            ]
         },
         "package" : "Log::Report::Dispatcher",
         "distribution" : "Log-Report",
         "is_pure_pod" : false,
         "title" : "manage message dispatching, display or logging",
         "id" : "id750",
         "name" : "Log::Report::Dispatcher"
      },
      "id553" : {
         "type" : "example",
         "intro" : "<pre>  # getters\n  if($po-&gt;format('c')) ...\n  unless($po-&gt;format('perl-brace')) ...\n  if(defined $po-&gt;format('java')) ...\n\n  # setters\n  $po-&gt;format(java =&gt; 1);       # results in 'java-format'\n  $po-&gt;format(java =&gt; 0);       # results in 'no-java-format'\n  $po-&gt;format(java =&gt; undef);   # results in ''\n</pre>\n",
         "name" : "use of format()\n",
         "id" : "id553"
      },
      "id412" : {
         "package" : "Log::Report::Extract",
         "inheritance" : {
            "extended_by" : [
               "Log::Report::Extract::PerlPPI",
               "Log::Report::Template::Extract"
            ]
         },
         "distribution" : "Log-Report-Lexicon",
         "title" : "Collect translatable strings",
         "is_pure_pod" : false,
         "id" : "id412",
         "name" : "Log::Report::Extract",
         "chapters" : [
            "id413",
            "id1327",
            "id414",
            "id415",
            "id416"
         ],
         "version" : "1.16"
      },
      "id792-id818" : {
         "extends" : "id792",
         "id" : "id792-id818",
         "name" : "call",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>",
         "type" : "option",
         "params" : "STRING"
      },
      "id786-id958" : {
         "extends" : "id786",
         "id" : "id786-id958",
         "name" : "package",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>",
         "params" : "CLASS",
         "type" : "option"
      },
      "id803" : {
         "level" : 2,
         "path" : "DETAILS/Available back-ends",
         "intro" : "<p>When a dispatcher is created (via <a class=\"jump\" href=\"id756\">new()</a> or <a class=\"jump\" href=\"id1003\">Log::Report::dispatcher()</a>),\nyou must specify the TYPE of the dispatcher.  This can either be a class\nname, which extends a <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>, or a pre-defined\nabbreviation of a class name.</p>\n\n<p>Implemented are:</p>\n\n<ul>\n\n\n<p><li><a class=\"jump\" href=\"id1082\">Log::Report::Dispatcher::Perl</a> (abbreviation 'PERL')<br />\nUse Perl's own <code>print()</code>, <code>warn()</code> and <code>die()</code> to ventilate\nreports.  This is the default dispatcher.</p>\n\n\n\n<p><li><a class=\"jump\" href=\"id1228\">Log::Report::Dispatcher::File</a> (abbreviation 'FILE')<br />\nLogs the message into a file, which can either be opened by the\nclass or be opened before the dispatcher is created.</p>\n\n\n\n<p><li><a class=\"jump\" href=\"id1090\">Log::Report::Dispatcher::Syslog</a> (abbreviation 'SYSLOG')<br />\nSend messages into the system's syslog infrastructure, using\nSys::Syslog.</p>\n\n\n\n<p><li><a class=\"jump\" href=\"id944\">Log::Report::Dispatcher::Callback</a> (abbreviation 'CALLBACK')<br />\nCalls any CODE reference on receipt of each selected message, for\ninstance to send important message as email or SMS.</p>\n\n\n\n<p><li><code>Log::Dispatch::*</code><br />\nAll of the Log::Dispatch::Output extensions can be used directly.\nThe <a class=\"jump\" href=\"id1174\">Log::Report::Dispatcher::LogDispatch</a> will wrap around that\nback-end.</p>\n\n\n\n<p><li><code>Log::Log4perl</code><br />\nUse the Log::Log4perl main object to write to dispatchers.  This\ninfrastructure uses a configuration file.</p>\n\n\n\n<p><li><a class=\"jump\" href=\"id818\">Log::Report::Dispatcher::Try</a> (abbreviation 'TRY')<br />\nUsed by function <a class=\"jump\" href=\"id1008\">Log::Report::try()</a>.  It collects the exceptions\nand can produce them on request.</p>\n\n</ul>\n",
         "type" : "section",
         "id" : "id803",
         "name" : "Available back-ends"
      },
      "id1135" : {
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id1135\">nativeLanguage</a></b>",
         "id" : "id1135",
         "name" : "nativeLanguage"
      },
      "id797-id818" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "extends" : "id797",
         "value" : "<code>undef</code>",
         "id" : "id797-id818",
         "name" : "max_line"
      },
      "id1299" : {
         "level" : 2,
         "id" : "id1299",
         "name" : "Processing the message",
         "type" : "section",
         "path" : "DETAILS/Processing the message",
         "nest" : [
            "id1300",
            "id1301"
         ]
      },
      "id417" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "id" : "id417",
         "name" : "Constructors",
         "level" : 2,
         "subroutines" : [
            "id418"
         ]
      },
      "id929-id217" : {
         "type" : "c_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id929\">Log::Report::Message::thaw()</a></p>",
         "extends" : "id929",
         "id" : "id929-id217",
         "name" : "thaw",
         "call" : "$class-&gt;<b><a name=\"id929\">thaw</a></b>(&nbsp;\\%data, %options&nbsp;)"
      },
      "id787-id1174" : {
         "value" : "&lt;required&gt;",
         "extends" : "id787",
         "name" : "package",
         "id" : "id787-id1174",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>"
      },
      "id744" : {
         "id" : "id744",
         "name" : "invalid plural-form algorithm '$alg'.",
         "subroutine" : "id743",
         "type" : "error"
      },
      "id757-id1090" : {
         "extends" : "id757",
         "id" : "id757-id1090",
         "name" : "accept",
         "params" : "$reasons|\\@reasons",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>"
      },
      "id910-id217" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id910\">Log::Report::Message::msgctxt()</a></p>",
         "extends" : "id910",
         "name" : "msgctxt",
         "id" : "id910-id217",
         "call" : "$obj-&gt;<b><a name=\"id910\">msgctxt</a></b>"
      },
      "id1109" : {
         "type" : "default",
         "name" : "include_domain",
         "id" : "id1109",
         "value" : "<code>false</code>"
      },
      "id692" : {
         "id" : "id692",
         "name" : "Specifying the context per Message",
         "type" : "subsection",
         "intro" : "<p>You need to specify the context at each message which is influenced by\nthe context.  This can be a comma separated list of words, an ARRAY, or\na HASH:</p>\n<pre>\n  _context =&gt; 'gender=male'\n  _context =&gt; 'gender=male,agegroup=adult,married=yes'\n  _context =&gt; [ 'gender=male', 'agegroup=adult', 'married=yes']\n  _context =&gt; [ qw/gender=male agegroup=adult married=yes/ ]\n\n  my @context = (qw/gender=male agegroup=adult married=yes/);\n  _context =&gt; \\@context;\n</pre>\n\n<p>Probably the</p><pre>\n  my %context = (gender =&gt; 'male', agegroup =&gt; 'adult', married =&gt; 'yes');\n  my %context = qw/gender male  agegroup adult  married yes/;\n  _context =&gt; \\%context;\n</pre>\n\n<p>Standard gettext only allows a single keyword (=string)\n<code>Log::Report</code> permits you to set-up a context for a whole\ntext-domain, which means that multiple context rules may be active at\nany moment.</p>\n",
         "path" : "DETAILS/Using context_rules/Specifying the context per Message",
         "level" : 3
      },
      "id436-id289" : {
         "name" : "showStats",
         "id" : "id436-id289",
         "extends" : "id436",
         "call" : "$obj-&gt;<b><a name=\"id436\">showStats</a></b>(&nbsp;[$domains]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id436\">Log::Report::Extract::showStats()</a></p>"
      },
      "id364" : {
         "level" : 3,
         "path" : "DETAILS/Textdomains/Integration with Template::Toolkit",
         "intro" : "<p>Instead of Template, from Template::Toolkit, you use its extension\n<a class=\"jump\" href=\"id320\">Log::Report::Template</a>.</p>\n<pre>\n  # during initiation of the webserver, once in your script (before fork)\n  my $lexicons   = 'some-directory-for-translation-tables';\n  my $pots = Log::Report::Translator::POT-&gt;new(lexicons =&gt; $lexicons);\n\n  my $templater  = Log::Report::Template-&gt;new(...);\n  my $domain     = $templater-&gt;addTextdomain(\n      name     =&gt; $domainname,\n      function =&gt; 'loc',\n  );\n  $domain-&gt;configure(translator =&gt; $pots);\n\n  # part of the processing per page\n  $vars{translate_to} = 'nl_NL.utf8';\n  $templater-&gt;process($template, \\%vars, \\$output);\n</pre>\n\n<p>When you use the same domain for both templates as source code, then be\naware that there is only one place where you can configure the domain.\nThis may be in the code.  When you use a separate domain for the templates,\nthen you configure as shown above.</p>\n",
         "type" : "subsection",
         "name" : "Integration with Template::Toolkit",
         "id" : "id364"
      },
      "id171-id1127" : {
         "extends" : "id171",
         "name" : "isConfigured",
         "id" : "id171-id1127",
         "call" : "$obj-&gt;<b><a name=\"id171\">isConfigured</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id171\">Log::Report::Minimal::Domain::isConfigured()</a></p>"
      },
      "id884-id217" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id883\">Log::Report::Message::new(_tag)</a></p>",
         "value" : "[]",
         "extends" : "id884",
         "name" : "_tag",
         "id" : "id884-id217"
      },
      "id775-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id775\">Log::Report::Dispatcher::needs()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id775\">needs</a></b>(&nbsp;[$reason]&nbsp;)",
         "extends" : "id775",
         "name" : "needs",
         "id" : "id775-id818"
      },
      "id773-id1228" : {
         "extends" : "id773",
         "id" : "id773-id1228",
         "name" : "mode",
         "call" : "$obj-&gt;<b><a name=\"id773\">mode</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id773\">Log::Report::Dispatcher::mode()</a></p>"
      },
      "id788-id1174" : {
         "id" : "id788-id1174",
         "name" : "filename",
         "extends" : "id788",
         "params" : "STRING",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>"
      },
      "id798-id818" : {
         "extends" : "id798",
         "id" : "id798-id818",
         "name" : "max_params",
         "type" : "option",
         "params" : "INTEGER",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>"
      },
      "id418" : {
         "options" : [
            [
               "id421",
               "id422"
            ],
            [
               "id419",
               "id420"
            ]
         ],
         "type" : "c_method",
         "call" : "$class-&gt;<b><a name=\"id418\">new</a></b>(&nbsp;%options&nbsp;)",
         "name" : "new",
         "id" : "id418",
         "diagnostics" : [
            "id423",
            "id424"
         ]
      },
      "id1093" : {
         "name" : "DESCRIPTION",
         "id" : "id1093",
         "level" : 1,
         "type" : "chapter",
         "intro" : "<p>This dispatchers produces output to syslog, based on the Sys::Syslog\nmodule (which will NOT be automatically installed for you, because some\nsystems have a problem with this dependency).</p>\n\n<p>The REASON for a message often uses names which are quite similar to\nthe log-levels used by syslog.  However: they have a different purpose.\nThe REASON is used by the programmer to indicate the cause of the message:\nwhether it was able to handle a certain situation.  The syslog levels\nare there for the user's of the program (with syslog usually the\nsystem administrators).  It is not unusual to see a \"normal\" error\nor mistake as a very serious situation in a production environment. So,\nyou may wish to translate any message above reason MISTAKE into a LOG_CRIT.</p>\n\n<p>The default translation table is list below.  You can change the mapping\nusing <a class=\"jump\" href=\"id1104\">new(to_prio)</a>.  See example in SYNOPSIS.</p>\n<pre>\n  TRACE   =&gt; LOG_DEBUG    ERROR   =&gt; LOG_ERR\n  ASSERT  =&gt; LOG_DEBUG    FAULT   =&gt; LOG_ERR\n  INFO    =&gt; LOG_INFO     ALERT   =&gt; LOG_ALERT\n  NOTICE  =&gt; LOG_NOTICE   FAILURE =&gt; LOG_EMERG\n  WARNING =&gt; LOG_WARNING  PANIC   =&gt; LOG_CRIT\n  MISTAKE =&gt; LOG_WARNING\n</pre>\n",
         "path" : "DESCRIPTION"
      },
      "id405" : {
         "subroutine" : "id402",
         "id" : "id405",
         "name" : "message does not contain counting alternatives in '$msgid'",
         "type" : "error"
      },
      "id784-id1090" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id784\">Log::Report::Dispatcher::collectLocation()</a></p>",
         "type" : "ci_method",
         "call" : "$any-&gt;<b><a name=\"id784\">collectLocation</a></b>",
         "id" : "id784-id1090",
         "name" : "collectLocation",
         "extends" : "id784"
      },
      "id324" : {
         "level" : 1,
         "id" : "id324",
         "name" : "METHODS",
         "type" : "chapter",
         "path" : "METHODS",
         "nest" : [
            "id325",
            "id338",
            "id341",
            "id357",
            "id358",
            "id359"
         ]
      },
      "id1310" : {
         "path" : "DETAILS/Messages with plural forms/Interpolation with String::Print",
         "type" : "subsection",
         "id" : "id1310",
         "name" : "Interpolation with String::Print",
         "level" : 3
      },
      "id763-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>",
         "params" : "'UPPERCASE'|'LOWERCASE'|'UCFIRST'|'IGNORE'|CODE",
         "type" : "option",
         "id" : "id763-id944",
         "name" : "format_reason",
         "extends" : "id763"
      },
      "id421-id697" : {
         "extends" : "id421",
         "name" : "charset",
         "id" : "id421-id697",
         "params" : "$charset",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id421\">Log::Report::Extract::new(charset)</a></p>"
      },
      "id879-id217" : {
         "type" : "option",
         "params" : "$text|$message",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id879\">Log::Report::Message::new(_prepend)</a></p>",
         "extends" : "id879",
         "id" : "id879-id217",
         "name" : "_prepend"
      },
      "id785-id944" : {
         "id" : "id785-id944",
         "name" : "stackTraceLine",
         "extends" : "id785",
         "call" : "$any-&gt;<b><a name=\"id785\">stackTraceLine</a></b>(&nbsp;%options&nbsp;)",
         "options" : [
            [
               "id800-id944",
               "id801-id944"
            ],
            [
               "id792-id944",
               "id793-id944"
            ],
            [
               "id788-id944",
               "id789-id944"
            ],
            [
               "id790-id944",
               "id791-id944"
            ],
            [
               "id796-id944",
               "id797-id944"
            ],
            [
               "id798-id944",
               "id799-id944"
            ],
            [
               "id786-id944",
               "id787-id944"
            ],
            [
               "id794-id944",
               "id795-id944"
            ]
         ],
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id785\">Log::Report::Dispatcher::stackTraceLine()</a></p>"
      },
      "id891" : {
         "intro" : "<p>Specify the <tt class=\"parameter\">$dispatcher</tt> as destination explicitly. Short\nfor  <code>report {to =&gt; NAME}, ...</code>  See <a class=\"jump\" href=\"id914\">to()</a></p>\n",
         "params" : "$dispatcher",
         "type" : "option",
         "id" : "id891",
         "name" : "_to"
      },
      "id69" : {
         "type" : "example",
         "intro" : "<pre>  $sp-&gt;setDefaults(EL =&gt; {width =&gt; 30}, CHOP =&gt; {width =&gt; 10});\n\n  my %defs = (EL =&gt; {width =&gt; 30}, CHOP =&gt; {width =&gt; 10});\n  $sp-&gt;setDefaults(\\%defs);\n</pre>\n",
         "name" : "setting defaults\n",
         "id" : "id69"
      },
      "id1212" : {
         "type" : "i_method",
         "id" : "id1212",
         "name" : "reason",
         "call" : "$obj-&gt;<b><a name=\"id1212\">reason</a></b>(&nbsp;[$reason]&nbsp;)"
      },
      "id779-id1090" : {
         "call" : "$obj-&gt;<b><a name=\"id779\">translate</a></b>(&nbsp;\\%options, $reason, $message&nbsp;)",
         "id" : "id779-id1090",
         "name" : "translate",
         "extends" : "id779",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id779\">Log::Report::Dispatcher::translate()</a></p>",
         "type" : "i_method"
      },
      "id758-id1090" : {
         "id" : "id758-id1090",
         "name" : "accept",
         "extends" : "id758",
         "value" : "<code>depend on mode</code>",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>"
      },
      "id758-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "type" : "default",
         "id" : "id758-id818",
         "name" : "accept",
         "extends" : "id758",
         "value" : "<code>depend on mode</code>"
      },
      "id779-id818" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id779\">Log::Report::Dispatcher::translate()</a></p>",
         "extends" : "id779",
         "name" : "translate",
         "id" : "id779-id818",
         "call" : "$obj-&gt;<b><a name=\"id779\">translate</a></b>(&nbsp;\\%options, $reason, $message&nbsp;)"
      },
      "id311" : {
         "subroutine" : "id305",
         "name" : "need pattern to scan for, either via new() or process().",
         "id" : "id311",
         "type" : "error"
      },
      "id774-id944" : {
         "extends" : "id774",
         "name" : "isDisabled",
         "id" : "id774-id944",
         "call" : "$obj-&gt;<b><a name=\"id774\">isDisabled</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id774\">Log::Report::Dispatcher::isDisabled()</a></p>"
      },
      "id1053" : {
         "value" : "<code>Log::Report::Message</code>",
         "name" : "message_class",
         "id" : "id1053",
         "type" : "default"
      },
      "id764-id1228" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>",
         "type" : "default",
         "extends" : "id764",
         "value" : "'LOWERCASE'",
         "name" : "format_reason",
         "id" : "id764-id1228"
      },
      "id1183" : {
         "params" : "$level",
         "type" : "option",
         "intro" : "<p>Restrict the messages which are passed through based on the <tt class=\"parameter\">$level</tt>,\nso after the reason got translated into a Log::Dispatch compatible\nLEVEL.  The default will use <a class=\"jump\" href=\"id979\">Log::Report</a> restrictions only.</p>\n",
         "name" : "min_level",
         "id" : "id1183"
      },
      "id1339" : {
         "id" : "id1339",
         "name" : "INHERITANCE",
         "level" : 1,
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Dispatcher::File\n   is a <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>\n</pre>\n",
         "type" : "chapter"
      },
      "id898-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id897\">Log::Report::Message::new(_context)</a></p>",
         "type" : "default",
         "name" : "_context",
         "id" : "id898-id217",
         "value" : "<code>undef</code>",
         "extends" : "id898"
      },
      "id1142" : {
         "type" : "default",
         "name" : "native_language",
         "id" : "id1142",
         "value" : "'en_US'"
      },
      "id875-id217" : {
         "type" : "option",
         "params" : "$msgid",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id875\">Log::Report::Message::new(_msgid)</a></p>",
         "extends" : "id875",
         "id" : "id875-id217",
         "name" : "_msgid"
      },
      "id794-id1174" : {
         "type" : "option",
         "params" : "ARRAY",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>",
         "id" : "id794-id1174",
         "name" : "params",
         "extends" : "id794"
      },
      "id784-id818" : {
         "call" : "$any-&gt;<b><a name=\"id784\">collectLocation</a></b>",
         "extends" : "id784",
         "id" : "id784-id818",
         "name" : "collectLocation",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id784\">Log::Report::Dispatcher::collectLocation()</a></p>",
         "type" : "ci_method"
      },
      "id789-id944" : {
         "value" : "&lt;required&gt;",
         "extends" : "id789",
         "id" : "id789-id944",
         "name" : "filename",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>"
      },
      "id798-id1090" : {
         "extends" : "id798",
         "id" : "id798-id1090",
         "name" : "max_params",
         "params" : "INTEGER",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>"
      },
      "id430-id289" : {
         "call" : "$obj-&gt;<b><a name=\"id430\">addPot</a></b>(&nbsp;$domain, $pot, %options&nbsp;)",
         "name" : "addPot",
         "id" : "id430-id289",
         "extends" : "id430",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id430\">Log::Report::Extract::addPot()</a></p>",
         "type" : "i_method"
      },
      "id775-id1090" : {
         "id" : "id775-id1090",
         "name" : "needs",
         "extends" : "id775",
         "call" : "$obj-&gt;<b><a name=\"id775\">needs</a></b>(&nbsp;[$reason]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id775\">Log::Report::Dispatcher::needs()</a></p>"
      },
      "id1305" : {
         "name" : "Processing",
         "id" : "id1305",
         "level" : 2,
         "subroutines" : [
            "id927-id217",
            "id922-id217",
            "id920-id217",
            "id924-id217",
            "id919-id217",
            "id925-id217",
            "id929-id217",
            "id921-id217"
         ],
         "type" : "section",
         "path" : "METHODS/Processing"
      },
      "id65" : {
         "type" : "section",
         "path" : "METHODS/Attributes",
         "id" : "id65",
         "name" : "Attributes",
         "level" : 2,
         "subroutines" : [
            "id68",
            "id70",
            "id67",
            "id66"
         ]
      },
      "id851" : {
         "params" : "$tag|REGEX",
         "type" : "option",
         "intro" : "<p>[1.44] Only return the exception if it was fatal, and in the same time in\nthe specified <tt class=\"parameter\">$tag</tt> (as string) or matches the REGEX.\nSee <a class=\"jump\" href=\"id919\">Log::Report::Message::taggedWith()</a></p>\n",
         "name" : "tag",
         "id" : "id851"
      },
      "id1169" : {
         "id" : "id1169",
         "name" : "new",
         "call" : "$class-&gt;<b><a name=\"id1169\">new</a></b>(&nbsp;%options&nbsp;)",
         "type" : "c_method"
      },
      "id1143-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1143\">Log::Report::Domain::configure(context_rules)</a></p>",
         "params" : "\\%rules|OBJECT",
         "type" : "option",
         "name" : "context_rules",
         "id" : "id1143-id375",
         "extends" : "id1143"
      },
      "id916-id217" : {
         "id" : "id916-id217",
         "name" : "valueOf",
         "extends" : "id916",
         "call" : "$obj-&gt;<b><a name=\"id916\">valueOf</a></b>(&nbsp;$parameter&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id916\">Log::Report::Message::valueOf()</a></p>"
      },
      "id1173" : {
         "name" : "load",
         "id" : "id1173",
         "call" : "$obj-&gt;<b><a name=\"id1173\">load</a></b>(&nbsp;$domain, $locale&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Load the translation information in the text <tt class=\"parameter\">$domain</tt> for the indicated <tt class=\"parameter\">$locale</tt>.\nMultiple calls to <a class=\"jump\" href=\"id1173\">load()</a> should not cost significant performance: the\ndata must be cached.</p>\n"
      },
      "id904" : {
         "call" : "$obj-&gt;<b><a name=\"id904\">prepend</a></b>",
         "id" : "id904",
         "name" : "prepend",
         "intro" : "<p>Returns the string which is prepended to this one.  Usually <code>undef</code>.</p>\n",
         "type" : "i_method"
      },
      "id757-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "params" : "$reasons|\\@reasons",
         "type" : "option",
         "id" : "id757-id818",
         "name" : "accept",
         "extends" : "id757"
      },
      "id1259" : {
         "name" : "Filters",
         "id" : "id1259",
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/Processing the message/Filters"
      },
      "id925-id217" : {
         "extends" : "id925",
         "id" : "id925-id217",
         "name" : "concat",
         "call" : "$obj-&gt;<b><a name=\"id925\">concat</a></b>(&nbsp;$text|$message, [$prepend]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id925\">Log::Report::Message::concat()</a></p>"
      },
      "id373" : {
         "id" : "id373",
         "name" : "Keeping translations up to date",
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/Extracting PO-files/Keeping translations up to date",
         "intro" : "<p>You have to call <a class=\"jump\" href=\"id348\">extract()</a> when msgids have changed or added,\nto have the PO-tables updated.  The language specific tables will\nget updated automatically... look for msgids which are 'fuzzy'\n(need update)</p>\n\n<p>You may also use the external program <code>xgettext-perl</code>, which is\nshipped with the <a class=\"jump\" href=\"id717\">Log::Report::Lexicon</a> distribution.</p>\n"
      },
      "id797-id1090" : {
         "name" : "max_line",
         "id" : "id797-id1090",
         "extends" : "id797",
         "value" : "<code>undef</code>",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "type" : "default"
      },
      "id180-id1127" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id180\">Log::Report::Minimal::Domain::interpolate()</a></p>",
         "extends" : "id180",
         "id" : "id180-id1127",
         "name" : "interpolate",
         "call" : "$obj-&gt;<b><a name=\"id180\">interpolate</a></b>(&nbsp;$msgid, [$args]&nbsp;)"
      },
      "id1314" : {
         "id" : "id1314",
         "name" : "INHERITANCE",
         "level" : 1,
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report\n   is an Exporter\n</pre>\n",
         "type" : "chapter"
      },
      "id897-id217" : {
         "id" : "id897-id217",
         "name" : "_context",
         "extends" : "id897",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id897\">Log::Report::Message::new(_context)</a></p>",
         "type" : "option",
         "params" : "$keyword|\\@keywords"
      },
      "id652" : {
         "subroutine" : "id643",
         "name" : "cannot read originals from $fn, need $size at $loc: $!",
         "id" : "id652",
         "type" : "fault"
      },
      "id892-id217" : {
         "extends" : "id892",
         "value" : "<code>undef</code>",
         "id" : "id892-id217",
         "name" : "_to",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id891\">Log::Report::Message::new(_to)</a></p>",
         "type" : "default"
      },
      "id1167" : {
         "path" : "METHODS",
         "nest" : [
            "id1168",
            "id1170",
            "id1171"
         ],
         "type" : "chapter",
         "level" : 1,
         "id" : "id1167",
         "name" : "METHODS"
      },
      "id657" : {
         "subroutine" : "id643",
         "name" : "cannot seek to $loc in $fn for transl strings: $!",
         "id" : "id657",
         "type" : "fault"
      },
      "id1156-id375" : {
         "call" : "$obj-&gt;<b><a name=\"id1156\">updateContext</a></b>(&nbsp;STRING|HASH|ARRAY|PAIRS&nbsp;)",
         "extends" : "id1156",
         "id" : "id1156-id375",
         "name" : "updateContext",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1156\">Log::Report::Domain::updateContext()</a></p>",
         "type" : "i_method"
      },
      "id593" : {
         "id" : "id593",
         "name" : "SYNOPSIS",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  my $index = Log::Report::Lexicon::Index-&gt;new($directory);\n  my $fn    = $index-&gt;find('my-domain', 'nl_NL.utf-8');\n</pre>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id101" : {
         "id" : "id101",
         "name" : "Modifier: HTML",
         "level" : 3,
         "path" : "DETAILS/Interpolation: Modifiers/Modifier: HTML",
         "intro" : "<p>[0.95] interpolate the parameter with HTML entity encoding.</p>\n",
         "type" : "subsection"
      },
      "id792-id1090" : {
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>",
         "name" : "call",
         "id" : "id792-id1090",
         "extends" : "id792"
      },
      "id790" : {
         "type" : "option",
         "params" : "INTEGER",
         "id" : "id790",
         "name" : "linenr"
      },
      "id443" : {
         "type" : "chapter",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # this is usually not for end-users, See ::Extract::PerlPPI\n  # using a PO table\n\n  my $pot = Log::Report::Lexicon::POT-&gt;read('po/nl.po', charset =&gt; 'utf-8')\n     or die;\n\n  my $po = $pot-&gt;msgid('msgid');\n  my $po = $pot-&gt;msgid($msgid, $msgctxt);\n  print $pot-&gt;nrPlurals;\n  print $pot-&gt;msgstr('msgid', 3);\n  print $pot-&gt;msgstr($msgid, 3, $msgctxt);\n  $pot-&gt;write;  # update the file\n\n  # fill the table, by calling the next a lot\n  my $po  = Log::Report::Lexicon::PO-&gt;new(...);\n  $pot-&gt;add($po);\n\n  # creating a PO table\n  $pot-&gt;write('po/nl.po')\n      or die;\n</pre>\n",
         "level" : 1,
         "name" : "SYNOPSIS",
         "id" : "id443"
      },
      "id1337" : {
         "id" : "id1337",
         "name" : "INHERITANCE",
         "type" : "chapter",
         "intro" : "<pre> Dancer::Logger::LogReport\n   is a Dancer::Logger::Abstract\n\n Dancer::Logger::LogReport\n   is an Exporter\n</pre>\n",
         "path" : "INHERITANCE",
         "level" : 1
      },
      "id1123" : {
         "intro" : "<p>[Included since <a class=\"jump\" href=\"id979\">Log::Report</a> v1.00]\nMojo likes to log messages directly into a file, by default.  <a class=\"jump\" href=\"id979\">Log::Report</a>\nconstructs a <a class=\"jump\" href=\"id1194\">Log::Report::Exception</a> object first.</p>\n\n<p>Be aware that this extension does catch the messages to be logged,\nbut that the dispatching of the error follows a different route now.\nFor instance, you cannot use <code>$ENV{MOJO_LOG_LEVEL}</code> to control the output\nlevel, but you need to use <a class=\"jump\" href=\"id1003\">Log::Report::dispatcher()</a> action <code>mode</code>.</p>\n\n<p>Mojo defines five \"levels\" of messages, which map onto <a class=\"jump\" href=\"id979\">Log::Report</a>'s\nreasons this way:</p>\n<pre>\n  debug  TRACE\n  info   INFO\n  warn   WARNING\n  error  ERROR\n  fatal  ALERT\n</pre>\n",
         "path" : "DESCRIPTION",
         "type" : "chapter",
         "level" : 1,
         "name" : "DESCRIPTION",
         "id" : "id1123"
      },
      "id1046" : {
         "name" : "syntax",
         "id" : "id1046",
         "params" : "'REPORT'|'SHORT'|'LONG'",
         "type" : "option",
         "intro" : "<p>The SHORT syntax will add the report abbreviations (like function\n<a class=\"jump\" href=\"id1017\">error()</a>) to your name-space.  Otherwise, each message must be produced\nwith <a class=\"jump\" href=\"id985\">report()</a>. <code>LONG</code> is an alternative to <code>REPORT</code>: both do not\npollute your namespace with the useful abbrev functions.</p>\n"
      },
      "id845" : {
         "id" : "id845",
         "name" : "reportAll",
         "call" : "$obj-&gt;<b><a name=\"id845\">reportAll</a></b>(&nbsp;%options&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Re-cast the messages in all collect exceptions into the defined\ndispatchers, which were disabled during the try block. The <tt class=\"parameter\">%options</tt>\nwill end-up as HASH of <tt class=\"parameter\">%options</tt> to <a class=\"jump\" href=\"id985\">Log::Report::report()</a>; see\n<a class=\"jump\" href=\"id1221\">Log::Report::Exception::throw()</a> which does the job.</p>\n"
      },
      "id785-id1082" : {
         "call" : "$any-&gt;<b><a name=\"id785\">stackTraceLine</a></b>(&nbsp;%options&nbsp;)",
         "name" : "stackTraceLine",
         "id" : "id785-id1082",
         "extends" : "id785",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id785\">Log::Report::Dispatcher::stackTraceLine()</a></p>",
         "options" : [
            [
               "id800-id1082",
               "id801-id1082"
            ],
            [
               "id792-id1082",
               "id793-id1082"
            ],
            [
               "id788-id1082",
               "id789-id1082"
            ],
            [
               "id790-id1082",
               "id791-id1082"
            ],
            [
               "id796-id1082",
               "id797-id1082"
            ],
            [
               "id798-id1082",
               "id799-id1082"
            ],
            [
               "id786-id1082",
               "id787-id1082"
            ],
            [
               "id794-id1082",
               "id795-id1082"
            ]
         ],
         "type" : "ci_method"
      },
      "id679" : {
         "name" : "rules",
         "id" : "id679",
         "call" : "$obj-&gt;<b><a name=\"id679\">rules</a></b>",
         "type" : "i_method",
         "intro" : "<p>Returns a HASH to the simplified context maps.</p>\n"
      },
      "id756" : {
         "intro" : "<p>Create a dispatcher.  The <tt class=\"parameter\">$type</tt> of back-end to start is required, and listed\nin the <a class=\"jump\" href=\"id753\">DESCRIPTION</a> part of this manual-page. For various external\nback-ends, special wrappers are created.</p>\n\n<p>The <tt class=\"parameter\">$name</tt> must be uniquely identifying this dispatcher.  When a second\ndispatcher is created (via <a class=\"jump\" href=\"id1003\">Log::Report::dispatcher()</a>) with the name\nof an existing dispatcher, the existing one will get replaced.</p>\n\n<p>All <tt class=\"parameter\">%options</tt> which are not consumed by this base constructor are passed\nto the wrapped back-end.  Some of them will check whether all <tt class=\"parameter\">%options</tt>\nare understood, other ignore unknown <tt class=\"parameter\">%options</tt>.</p>\n",
         "type" : "c_method",
         "options" : [
            [
               "id757",
               "id758"
            ],
            [
               "id765",
               "id766"
            ],
            [
               "id763",
               "id764"
            ],
            [
               "id759",
               "id760"
            ],
            [
               "id761",
               "id762"
            ]
         ],
         "call" : "$class-&gt;<b><a name=\"id756\">new</a></b>(&nbsp;$type, $name, %options&nbsp;)",
         "diagnostics" : [
            "id767",
            "id768",
            "id769"
         ],
         "name" : "new",
         "id" : "id756"
      },
      "id658" : {
         "subroutine" : "id643",
         "name" : "cannot read translations from $fn, need $size at $loc: $!",
         "id" : "id658",
         "type" : "fault"
      },
      "id204" : {
         "diagnostics" : [
            "id205"
         ],
         "id" : "id204",
         "name" : "parse_locale",
         "call" : "<b><a name=\"id204\">parse_locale</a></b>(&nbsp;STRING&nbsp;)",
         "type" : "function",
         "intro" : "<p>Decompose a locale string.</p>\n\n<p>For simplicity of the caller's code, the capatization of the returned\nfields is standardized to the preferred, although the match is case-\ninsensitive as required by the RFC. The territory in returned in capitals\n(ISO3166), the language is lower-case (ISO639), the script as upper-case\nfirst, the character-set as lower-case, and the modifier and variant unchanged.</p>\n\n<p>In LIST context, four elements are returned: language, territory,\ncharacter-set (codeset), and modifier.  Those four are important for the\nusual unix translationg infrastructure.  Only the \"country\" is obligatory,\nthe others can be <code>undef</code>.  It may also return <code>C</code> and <code>POSIX</code>.</p>\n\n<p>In SCALAR context, a HASH is returned which can contain more information:\nlanguage, script, territory, variant, codeset, and modifiers.  The\nvariant (RFC3066 is probably never used)</p>\n"
      },
      "id1257" : {
         "level" : 2,
         "name" : "Processing the message",
         "id" : "id1257",
         "type" : "section",
         "path" : "DETAILS/Processing the message",
         "nest" : [
            "id1258",
            "id1259"
         ]
      },
      "id763-id1082" : {
         "name" : "format_reason",
         "id" : "id763-id1082",
         "extends" : "id763",
         "params" : "'UPPERCASE'|'LOWERCASE'|'UCFIRST'|'IGNORE'|CODE",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>"
      },
      "id193" : {
         "name" : "is_fatal",
         "id" : "id193",
         "call" : "<b><a name=\"id193\">is_fatal</a></b>(&nbsp;$reason&nbsp;)",
         "type" : "function",
         "intro" : "<p>Returns <code>true</code> if the <tt class=\"parameter\">$reason</tt> is severe enough to cause an exception\n(or program termination).</p>\n"
      },
      "id501" : {
         "name" : "SYNOPSIS",
         "id" : "id501",
         "level" : 1,
         "type" : "chapter",
         "intro" : "<pre>  # Only usable on Windows\n  print codepage_to_iso(0x0413);   # nl-NL\n  print iso_to_codepage('nl_NL');  # 1043\n  printf \"%x\", iso_to_codepage('nl_NL');  # 413\n\n  my $iso = iso_locale(ms_codepage_id());\n  my $iso = iso_locale;  # same\n\n  print charset_encoding;          # cp1252\n  print ms_codepage_id;            # 1043\n  print ms_install_codepage_id;    # 1043\n  print ms_locale;                 # Dutch (Netherlands)\n</pre>\n",
         "path" : "SYNOPSIS"
      },
      "id634" : {
         "diagnostics" : [
            "id635",
            "id636"
         ],
         "id" : "id634",
         "name" : "translate",
         "call" : "$obj-&gt;<b><a name=\"id634\">translate</a></b>(&nbsp;$msg, $lang, $context&nbsp;)",
         "type" : "i_method"
      },
      "id780-id958" : {
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id780\">Log::Report::Dispatcher::collectStack()</a></p>",
         "id" : "id780-id958",
         "name" : "collectStack",
         "extends" : "id780",
         "call" : "$any-&gt;<b><a name=\"id780\">collectStack</a></b>(&nbsp;[$maxdepth]&nbsp;)"
      },
      "id1238" : {
         "name" : "replace",
         "id" : "id1238",
         "value" : "<code>false</code>",
         "type" : "default"
      },
      "id684" : {
         "id" : "id684",
         "name" : "unknown alternative `$alt' for tag `$tag' in context of `$msgid'",
         "subroutine" : "id681",
         "type" : "warning"
      },
      "id862" : {
         "type" : "overload",
         "intro" : "<p>When the object is called as function, a new object is created with\nthe data from the original one but updated with the new parameters.\nImplemented in <code>clone()</code>.</p>\n",
         "name" : "'&amp;{}'",
         "id" : "id862",
         "call" : "overload <b><a name=\"id862\">'&amp;{}'</a></b>; used as function"
      },
      "id295" : {
         "options" : [
            [
               "id421-id289",
               "id422-id289"
            ],
            [
               "id296",
               "id297"
            ],
            [
               "id419-id289",
               "id420-id289"
            ],
            [
               "id298",
               "id299"
            ]
         ],
         "type" : "c_method",
         "call" : "$class-&gt;<b><a name=\"id295\">new</a></b>(&nbsp;%options&nbsp;)",
         "id" : "id295",
         "name" : "new",
         "diagnostics" : [
            "id300"
         ]
      },
      "id1121" : {
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>MojoX::Log::Report - divert log messages into Log::Report</p>\n",
         "level" : 1,
         "name" : "NAME",
         "id" : "id1121"
      },
      "id278" : {
         "level" : 2,
         "type" : "section",
         "path" : "DETAILS/Advanced Customization",
         "intro" : "<p>Module <a href=\"https://metacpan.org/dist/Dancer2_Template_TemplateToolkit\">manual Dancer2::Template::TemplateToolkit</a> describes how to extend the Template\nby wrapping the <code>_build_engine</code> method.  The instantiation trick is insufficient\nfor a bit more complex modules, like our <a class=\"jump\" href=\"id979\">Log::Report</a> translation feature.  You may\nbe able to extend this module with your own templater, however.</p>\n<pre>\n  # in config.yml\n  engines:\n    template:\n      TTLogReport:\n        start_tag: '&lt;%'\n        end_tag:   '%>'\n        templater: Log::Report::Template  # default\n</pre>\n",
         "id" : "id278",
         "name" : "Advanced Customization"
      },
      "id156" : {
         "type" : "i_method",
         "intro" : "<p>See <a class=\"jump\" href=\"id1045\">Log::Report::import()</a>.</p>\n",
         "diagnostics" : [
            "id157"
         ],
         "name" : "import",
         "id" : "id156",
         "call" : "$obj-&gt;<b><a name=\"id156\">import</a></b>(&nbsp;[$domain], %options&nbsp;)"
      },
      "id972" : {
         "value" : "'ALL'",
         "name" : "accept",
         "id" : "id972",
         "type" : "default"
      },
      "id259" : {
         "type" : "subsection",
         "path" : "DETAILS/In use/Exceptions",
         "intro" : "<p><a class=\"jump\" href=\"id979\">Log::Report</a> is a combination of a logger and an exception system.  Messages\nto be logged are <i>thrown</i> to all listening dispatchers to be handled.</p>\n\n<p>This module will also catch any unexpected exceptions:</p>\n<pre>\n  # This will be caught, the error will be logged (full stacktrace to STDOUT,\n  # short message to the session messages), and the user will be forwarded\n  # (default to /). This would also be sent to syslog with the appropriate\n  # dispatcher.\n  get 'route' =&gt; sub {\n      my $foo = 1;\n      my $bar = $foo-&gt;{x}; # whoops\n  }\n</pre>\n\n<p>For a production application (<code>show_errors: 1</code>), the message saved in the\nsession will be the generic text \"An unexpected error has occurred\". This\ncan be customised in the configuration file, and will be translated.</p>\n",
         "level" : 3,
         "name" : "Exceptions",
         "id" : "id259"
      },
      "id1307" : {
         "type" : "section",
         "path" : "DETAILS/Message-IDs",
         "level" : 2,
         "name" : "Message-IDs",
         "id" : "id1307"
      },
      "id793" : {
         "type" : "default",
         "value" : "&lt;required&gt;",
         "id" : "id793",
         "name" : "call"
      },
      "id48" : {
         "level" : 1,
         "intro" : "<p>String::Print - printf alternative</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "name" : "NAME",
         "id" : "id48"
      },
      "id440" : {
         "type" : "error",
         "subroutine" : "id439",
         "id" : "id440",
         "name" : "no context tags allowed in plural `$msgid'"
      },
      "id590" : {
         "id" : "id590",
         "name" : "string '$text' not between quotes at $location",
         "subroutine" : "id589",
         "type" : "warning"
      },
      "id621" : {
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>Translate a message by directly accessing POT files.  The files will load\nlazily (unless forced).  This module accesses the PO's in a compact way,\nusing <a class=\"jump\" href=\"id569\">Log::Report::Lexicon::POTcompact</a>, which is much more efficient\nthan <a class=\"jump\" href=\"id511\">Log::Report::Lexicon::PO</a>.</p>\n",
         "level" : 1,
         "name" : "DESCRIPTION",
         "id" : "id621"
      },
      "id82" : {
         "type" : "default",
         "value" : "<code>undef</code>",
         "name" : "_prepend",
         "id" : "id82"
      },
      "id731-id569" : {
         "call" : "$class-&gt;<b><a name=\"id731\">new</a></b>(&nbsp;%options&nbsp;)",
         "extends" : "id731",
         "id" : "id731-id569",
         "name" : "new",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id731\">Log::Report::Lexicon::Table::new()</a></p>",
         "type" : "c_method"
      },
      "id86" : {
         "name" : "printp",
         "id" : "id86",
         "call" : "<b><a name=\"id86\">printp</a></b>(&nbsp;[$fh], $format, @positionals, %options&nbsp;)",
         "type" : "function",
         "intro" : "<p>Calls <a class=\"jump\" href=\"id87\">sprintp()</a> to fill the <tt class=\"parameter\">@positionals</tt> in <tt class=\"parameter\">$format</tt>, and\nthen sends it to the <tt class=\"parameter\">$fh</tt> (by default the selected file handle).</p>\n"
      },
      "id661" : {
         "subroutine" : "id643",
         "id" : "id661",
         "name" : "unsupported charset $charset in $fn.",
         "type" : "error"
      },
      "id783-id958" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id783\">Log::Report::Dispatcher::skipStack()</a></p>",
         "id" : "id783-id958",
         "name" : "skipStack",
         "extends" : "id783",
         "call" : "$obj-&gt;<b><a name=\"id783\">skipStack</a></b>"
      },
      "id1208" : {
         "params" : "Log::Report::Message",
         "type" : "option",
         "id" : "id1208",
         "name" : "message"
      },
      "id277" : {
         "id" : "id277",
         "name" : "Dancer2 Configuration",
         "type" : "section",
         "path" : "DETAILS/Dancer2 Configuration",
         "intro" : "<p>Most configuration variables are available when creating a new instance\nof a <a href=\"https://metacpan.org/dist/Template\">manual Template</a>::Toolkit object can be declared in your config.yml file.\nFor example:</p>\n<pre>\n  template: TTLogReport\n\n  engines:\n    template:\n      TTLogReport:\n        start_tag: '&lt;%'\n        end_tag:   '%>'\n</pre>\n\n<p>(Note: <code>start_tag</code> and <code>end_tag</code> are regexes.  If you want to use PHP-style\ntags, you will need to list them as <code>&lt;\\? &gt;> and C<< \\?></code>.)\nSee <a href=\"https://metacpan.org/dist/Template_Manual_Config\">manual Template::Manual::Config</a> for the configuration variables.</p>\n\n<p>In addition to the standard configuration variables, the option <code>show_private_variables</code>\nis also available. Template::Toolkit, by default, does not render private variables\n(the ones starting with an underscore). If in your project it gets easier to disable\nthis feature than changing variable names, add this option to your configuration.</p>\n<pre>\n  show_private_variables: true\n</pre>\n\n<p><b>Warning:</b> Given the way Template::Toolkit implements this option, different Dancer2\napplications running within the same interpreter will share this option!</p>\n",
         "level" : 2
      },
      "id701" : {
         "id" : "id701",
         "name" : "The extraction process",
         "nest" : [
            "id702",
            "id703"
         ],
         "level" : 2,
         "intro" : "<p>All pm-files need to be processed in one go: no incremental processing!</p>\n\n<p>The Perl source is parsed using PPI, which does understand Perl syntax\nquite well, but does not support all features.</p>\n\n<p>Automatically, the textdomain of the translations is discovered, as\nfirst parameter of <code>use Log::Report</code>.  You may switch textdomain inside\none pm-file.</p>\n\n<p>When all files have been processed, during the <a class=\"jump\" href=\"id437\">write()</a>, all existing\npo-files for all discovered textdomains will get updated.  Not only the\n<code>$lexicon/$domain.po</code> template, but also all <code>$lexicon/$domain/$lang.po</code>\nwill be replaced.  When a msgid has disappeared, existing translations\nwill get disabled, not removed.  New msgids will be added and flagged\n\"fuzzy\".</p>\n",
         "path" : "DESCRIPTION/The extraction process",
         "type" : "section"
      },
      "id97" : {
         "nest" : [
            "id98",
            "id99"
         ],
         "id" : "id97",
         "name" : "Modifier: POSIX format starts with '%'",
         "type" : "subsection",
         "path" : "DETAILS/Interpolation: Modifiers/Modifier: POSIX format starts with '%'",
         "intro" : "<p>As shown in the examples above, you can specify a format.  This can,\nfor instance, help you with rounding or columns:</p>\n<pre>\n  printp \"π = {pi%.3f}\", pi =&gt; 3.1415;\n  printp \"weight is {kilogram%d}\", kilogram =&gt; 127*OUNCE_PER_KILO;\n  printp \"{filename%-20.20s}\\n\", filename =&gt; $fn;\n</pre>\n",
         "level" : 3
      },
      "id760-id1082" : {
         "name" : "locale",
         "id" : "id760-id1082",
         "value" : "&lt;system locale&gt;",
         "extends" : "id760",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "type" : "default"
      },
      "id190" : {
         "type" : "error",
         "id" : "id190",
         "name" : "reason '$begin' more serious than '$end' in '$reasons'.",
         "subroutine" : "id187"
      },
      "id482" : {
         "intro" : "<p>The character-set to be used for reading and writing.  You do not need\nto be aware of Perl's internal encoding for the characters.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id482\">charset</a></b>",
         "id" : "id482",
         "name" : "charset"
      },
      "id1198" : {
         "subroutines" : [
            "id1199",
            "id1200"
         ],
         "level" : 1,
         "name" : "OVERLOADED",
         "id" : "id1198",
         "path" : "OVERLOADED",
         "type" : "chapter"
      },
      "id556" : {
         "subroutines" : [
            "id568",
            "id557",
            "id563"
         ],
         "level" : 2,
         "id" : "id556",
         "name" : "Parsing",
         "path" : "METHODS/Parsing",
         "type" : "section"
      },
      "id822" : {
         "subroutines" : [
            "id824",
            "id823"
         ],
         "level" : 1,
         "id" : "id822",
         "name" : "OVERLOADED",
         "path" : "OVERLOADED",
         "type" : "chapter"
      },
      "id432" : {
         "intro" : "<p>Update the domains mentioned in the <tt class=\"parameter\">$filename</tt>.  All text-domains defined\nin the file will get updated automatically, but should not written before\nall files are processed.</p>\n\n<p>Returned is the number of messages found in this particular file.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id432\">process</a></b>(&nbsp;$filename, %options&nbsp;)",
         "name" : "process",
         "id" : "id432"
      },
      "id765-id958" : {
         "extends" : "id765",
         "id" : "id765-id958",
         "name" : "charset",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>",
         "params" : "CHARSET",
         "type" : "option"
      },
      "id1335" : {
         "level" : 1,
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Lexicon::MOTcompact\n   is a <a class=\"jump\" href=\"id725\">Log::Report::Lexicon::Table</a>\n</pre>\n",
         "type" : "chapter",
         "id" : "id1335",
         "name" : "INHERITANCE"
      },
      "id433-id289" : {
         "options" : [
            [
               "id434-id289",
               "id435-id289"
            ]
         ],
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id433\">Log::Report::Extract::cleanup()</a></p>",
         "name" : "cleanup",
         "id" : "id433-id289",
         "extends" : "id433",
         "call" : "$obj-&gt;<b><a name=\"id433\">cleanup</a></b>(&nbsp;%options&nbsp;)"
      },
      "id437" : {
         "intro" : "<p>Update the information of the files related to <tt class=\"parameter\">$domain</tt>, by default all\nprocessed DOMAINS.</p>\n\n<p>All information known about the written <tt class=\"parameter\">$domain</tt> is removed from the cache.\nThe <tt class=\"parameter\">%options</tt> are passed to the <code>write()</code> of the specific lexicon\nmanager.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id437\">write</a></b>(&nbsp;[$domain], %options&nbsp;)",
         "diagnostics" : [
            "id438"
         ],
         "id" : "id437",
         "name" : "write"
      },
      "id487" : {
         "intro" : "<p>Lookup the <a class=\"jump\" href=\"id511\">Log::Report::Lexicon::PO</a> with the <tt class=\"parameter\">STRING</tt>.  If you\nwant to add a new translation, use <a class=\"jump\" href=\"id489\">add()</a>.  Returns <code>undef</code>\nwhen not defined.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id487\">msgid</a></b>(&nbsp;STRING, [$msgctxt]&nbsp;)",
         "id" : "id487",
         "name" : "msgid"
      },
      "id827" : {
         "type" : "c_method",
         "options" : [
            [
               "id757-id818",
               "id758-id818"
            ],
            [
               "id765-id818",
               "id766-id818"
            ],
            [
               "id830",
               "id831"
            ],
            [
               "id828",
               "id829"
            ],
            [
               "id763-id818",
               "id764-id818"
            ],
            [
               "id832",
               "id833"
            ],
            [
               "id759-id818",
               "id760-id818"
            ],
            [
               "id761-id818",
               "id762-id818"
            ],
            [
               "id834",
               "id835"
            ]
         ],
         "call" : "$class-&gt;<b><a name=\"id827\">new</a></b>(&nbsp;$type, $name, %options&nbsp;)",
         "name" : "new",
         "id" : "id827"
      },
      "id1141-id375" : {
         "extends" : "id1141",
         "id" : "id1141-id375",
         "name" : "native_language",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1141\">Log::Report::Domain::configure(native_language)</a></p>",
         "type" : "option",
         "params" : "CODESET"
      },
      "id761-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>",
         "type" : "option",
         "params" : "'NORMAL'|'VERBOSE'|'ASSERT'|'DEBUG'|0..3",
         "extends" : "id761",
         "name" : "mode",
         "id" : "id761-id818"
      },
      "id1165" : {
         "level" : 1,
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # internal infrastructure\n  my $msg = Log::Report::Message-&gt;new(_msgid =&gt; \"Hello World\\n\");\n  print Log::Report::Translator-&gt;new(...)-&gt;translate($msg);\n\n  # normal use\n  textdomain 'my-domain',\n    translator =&gt; Log::Report::Translator-&gt;new;  # default\n  print __\"Hello World\\n\";\n</pre>\n",
         "type" : "chapter",
         "id" : "id1165",
         "name" : "SYNOPSIS"
      },
      "id781-id1228" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id781\">Log::Report::Dispatcher::addSkipStack()</a></p>",
         "type" : "ci_method",
         "call" : "$any-&gt;<b><a name=\"id781\">addSkipStack</a></b>(&nbsp;@CODE&nbsp;)",
         "name" : "addSkipStack",
         "id" : "id781-id1228",
         "extends" : "id781"
      },
      "id868" : {
         "id" : "id868",
         "name" : "_expand",
         "value" : "<code>false</code>",
         "type" : "default"
      },
      "id1309" : {
         "path" : "DETAILS/Messages with plural forms",
         "nest" : [
            "id1310"
         ],
         "type" : "section",
         "level" : 2,
         "name" : "Messages with plural forms",
         "id" : "id1309"
      },
      "id744-id441" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id743\">Log::Report::Lexicon::Table::setupPluralAlgorithm()</a></p>",
         "type" : "error",
         "subroutine" : "id743",
         "name" : "invalid plural-form algorithm '$alg'.",
         "id" : "id744-id441",
         "extends" : "id744"
      },
      "id1051" : {
         "id" : "id1051",
         "name" : "import",
         "value" : "<code>undef</code>",
         "type" : "default"
      },
      "id1244" : {
         "path" : "METHODS/Attributes",
         "type" : "section",
         "subroutines" : [
            "id771-id1228",
            "id774-id1228",
            "id775-id1228",
            "id772-id1228",
            "id773-id1228",
            "id1246",
            "id1245",
            "id1247"
         ],
         "level" : 2,
         "name" : "Attributes",
         "id" : "id1244"
      },
      "id1181" : {
         "id" : "id1181",
         "name" : "to_level",
         "intro" : "<p>See <a class=\"jump\" href=\"id1193\">reasonToLevel()</a>.</p>\n",
         "type" : "option",
         "params" : "\\@PAIRS"
      },
      "id995" : {
         "value" : "<code>undef</code>",
         "id" : "id995",
         "name" : "locale",
         "type" : "default"
      },
      "id806" : {
         "examples" : [
            "id807",
            "id808"
         ],
         "level" : 3,
         "intro" : "<p>With a filter, you can block or modify specific messages before\ntranslation.  There may be a wish to change the REASON of a report\nor its content.  It is not possible to avoid the exit which is\nrelated to the original message, because a module's flow depends\non it to happen.</p>\n\n<p>When there are filters defined, they will be called in order of\ndefinition.  For each of the dispatchers which are called for a\ncertain REASON (which <code>accept</code> that REASON), it is checked whether\nits name is listed for the filter (when no names where specified,\nthen the filter is applied to all dispatchers).</p>\n\n<p>When selected, the filter's CODE reference is called with four arguments:\nthe dispatcher object (a <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>), the HASH-of-OPTIONS\npassed as optional first argument to <a class=\"jump\" href=\"id985\">Log::Report::report()</a>, the\nREASON, and the MESSAGE.  Returned is the new REASON and MESSAGE.\nWhen the returned REASON is <code>undef</code>, then the message will be ignored\nfor that dispatcher.</p>\n\n<p>Be warned about processing the MESSAGE: it is a <a class=\"jump\" href=\"id856\">Log::Report::Message</a>\nobject which may have a <code>prepend</code> string and <code>append</code> string or\nobject.  When the call to <a class=\"jump\" href=\"id985\">Log::Report::report()</a> contained multiple\ncomma-separated components, these will already have been joined together\nusing concatenation (see <a class=\"jump\" href=\"id925\">Log::Report::Message::concat()</a>.</p>\n",
         "path" : "DETAILS/Processing the message/Filters",
         "type" : "subsection",
         "id" : "id806",
         "name" : "Filters"
      },
      "id978" : {
         "type" : "example",
         "intro" : "<pre>  use Log::Log4perl     qw/:levels/;\n\n  # by default, ALERTs are output as $FATAL\n  dispatcher Log::Log4perl =&gt; 'logger',\n    to_level =&gt; [ ALERT =&gt; $ERROR, ],\n    ...;\n</pre>\n",
         "id" : "id978"
      },
      "id272" : {
         "path" : "METHODS/Action",
         "type" : "section",
         "subroutines" : [
            "id275",
            "id273"
         ],
         "level" : 2,
         "id" : "id272",
         "name" : "Action"
      },
      "id959" : {
         "type" : "chapter",
         "intro" : "<p>Log::Report::Dispatcher::Log4perl - send messages to Log::Log4perl back-end</p>\n",
         "path" : "NAME",
         "level" : 1,
         "id" : "id959",
         "name" : "NAME"
      },
      "id488" : {
         "id" : "id488",
         "name" : "msgstr",
         "call" : "$obj-&gt;<b><a name=\"id488\">msgstr</a></b>(&nbsp;$msgid, [$count, [$msgctxt]]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Returns the translated string for <tt class=\"parameter\">$msgid</tt>.  When <tt class=\"parameter\">$count</tt> is not specified or\n<code>undef</code>, the translation string related to \"1\" is returned.</p>\n"
      },
      "id1255" : {
         "type" : "chapter",
         "nest" : [
            "id1256",
            "id1257"
         ],
         "path" : "DETAILS",
         "id" : "id1255",
         "name" : "DETAILS",
         "level" : 1
      },
      "id828" : {
         "params" : "\\@objects",
         "type" : "option",
         "intro" : "<p>ARRAY of <a class=\"jump\" href=\"id1194\">Log::Report::Exception</a> objects.</p>\n",
         "id" : "id828",
         "name" : "exceptions"
      },
      "id1110" : {
         "params" : "$charset",
         "type" : "option",
         "intro" : "<p>Translate the text-strings into the specified <tt class=\"parameter\">$charset</tt>, otherwise the\nsysadmin may get unreadable text.</p>\n",
         "id" : "id1110",
         "name" : "charset"
      },
      "id370" : {
         "type" : "section",
         "intro" : "<p>You may define a textdomain without doing any translations (yet)  However,\nwhen you start translating, you will need to maintain translation tables\nwhich are in PO-format.  PO-files can be maintained with a wide variety\nof tools, for instance poedit, Pootle, virtaal, GTranslator, Lokalize,\nor Webtranslateit.</p>\n",
         "path" : "DETAILS/Extracting PO-files",
         "level" : 2,
         "nest" : [
            "id371",
            "id372",
            "id373",
            "id374"
         ],
         "name" : "Extracting PO-files",
         "id" : "id370"
      },
      "id438" : {
         "name" : "starting new textdomain $domain, template in $filename",
         "id" : "id438",
         "subroutine" : "id437",
         "type" : "info"
      },
      "id165-id1127" : {
         "extends" : "id165",
         "id" : "id165-id1127",
         "name" : "name",
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id165\">Log::Report::Minimal::Domain::new(name)</a></p>"
      },
      "id1171" : {
         "path" : "METHODS/Translating",
         "type" : "section",
         "subroutines" : [
            "id1173",
            "id1172"
         ],
         "id" : "id1171",
         "name" : "Translating",
         "level" : 2
      },
      "id977" : {
         "call" : "$obj-&gt;<b><a name=\"id977\">reasonToLevel</a></b>(&nbsp;$reason&nbsp;)",
         "examples" : [
            "id978"
         ],
         "intro" : "<p>Returns a level which is understood by Log::Dispatch, based on\na translation table.  This can be changed with <a class=\"jump\" href=\"id968\">new(to_level)</a>.</p>\n",
         "type" : "i_method",
         "id" : "id977",
         "name" : "reasonToLevel"
      },
      "id454" : {
         "id" : "id454",
         "name" : "nr_plurals",
         "params" : "INTEGER",
         "type" : "option",
         "intro" : "<p>The number of translations each of the translation with plural form\nneed to have.</p>\n"
      },
      "id766-id944" : {
         "id" : "id766-id944",
         "name" : "charset",
         "extends" : "id766",
         "value" : "<code>undef</code>",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>",
         "type" : "default"
      },
      "id867" : {
         "name" : "_expand",
         "id" : "id867",
         "params" : "BOOLEAN",
         "type" : "option",
         "intro" : "<p>Indicates whether variables are to be filled-in; whether <code>__x</code> or <code>__</code> was\nused to define the message.</p>\n"
      },
      "id1295" : {
         "path" : "DETAILS/Configuring/configuring your own formatter",
         "type" : "subsection",
         "name" : "configuring your own formatter",
         "id" : "id1295",
         "level" : 3
      },
      "id429-id289" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id429\">Log::Report::Extract::pots()</a></p>",
         "id" : "id429-id289",
         "name" : "pots",
         "extends" : "id429",
         "call" : "$obj-&gt;<b><a name=\"id429\">pots</a></b>(&nbsp;$domain&nbsp;)"
      },
      "id381" : {
         "options" : [
            [
               "id390",
               "id391"
            ],
            [
               "id386",
               "id387"
            ],
            [
               "id165-id375",
               "id166-id375"
            ],
            [
               "id382",
               "id383"
            ],
            [
               "id388",
               "id389"
            ],
            [
               "id384",
               "id385"
            ]
         ],
         "type" : "c_method",
         "call" : "$class-&gt;<b><a name=\"id381\">new</a></b>(&nbsp;%options&nbsp;)",
         "id" : "id381",
         "name" : "new"
      },
      "id913-id217" : {
         "call" : "$obj-&gt;<b><a name=\"id913\">addTags</a></b>(&nbsp;@tags&nbsp;)",
         "id" : "id913-id217",
         "name" : "addTags",
         "extends" : "id913",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id913\">Log::Report::Message::addTags()</a></p>",
         "type" : "i_method"
      },
      "id1139" : {
         "name" : "translator",
         "id" : "id1139",
         "intro" : "<p>Set the object which will do the translations for this domain.</p>\n",
         "params" : "Log::Report::Translator|\\%config",
         "type" : "option"
      },
      "id175-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id174\">Log::Report::Minimal::Domain::configure(where)</a></p>",
         "type" : "default",
         "name" : "where",
         "id" : "id175-id375",
         "value" : "&lt;required&gt;",
         "extends" : "id175"
      },
      "id331" : {
         "type" : "option",
         "params" : "\\@modifiers",
         "intro" : "<p>Add <tt class=\"parameter\">@modifiers</tt> to the default set.  Modifiers are part of the\nformatting process, when values get inserted in the translated string.\nRead <a class=\"jump\" href=\"id358\">Formatter value modifiers</a>.</p>\n",
         "id" : "id331",
         "name" : "modifiers"
      },
      "id1028" : {
         "intro" : "<p>It depends on the value of <tt class=\"parameter\">$count</tt> (and the selected language) which\ntext will be displayed.  When translations can not be performed, then\n<tt class=\"parameter\">$msgid</tt> will be used when <tt class=\"parameter\">$count</tt> is 1, and PLURAL_MSGSID in other cases.\nHowever, some languages have more complex schemes than English.</p>\n\n<p>The <tt class=\"parameter\">PAIRS</tt> are options for <a class=\"jump\" href=\"id866\">Log::Report::Message::new()</a> and variables\nto be filled in.</p>\n",
         "type" : "function",
         "examples" : [
            "id1029"
         ],
         "call" : "<b><a name=\"id1028\">__n</a></b>(&nbsp;$msgid, $plural_msgid, $count, PAIRS&nbsp;)",
         "id" : "id1028",
         "name" : "__n"
      },
      "id1240" : {
         "id" : "id1240",
         "name" : "format",
         "type" : "option",
         "params" : "CODE|'LONG'",
         "intro" : "<p>[1.00] process each printed line.  By default, this adds a timestamp,\nbut you may want to add hostname, process number, or more.</p>\n<pre>\n  format =&gt; sub { '['.localtime().'] '.$_[0] }\n  format =&gt; sub { shift }   # no timestamp\n  format =&gt; 'LONG'\n</pre>\n\n<p>The first parameter to format is the string to print; it is already\ntranslated and trailed by a newline.  The second parameter is the\ntext-domain (if known).</p>\n\n<p>[1.10] As third parameter, you get the message raw object as well (maybe\nyou want to use the message context?)</p>\n\n<p>[1.19] After the three positional parameters, there may be a list\nof pairs providing additional facts about the exception.  It may\ncontain <code>location</code> information.</p>\n\n<p>The \"LONG\" format is equivalent to:</p>\n<pre>\n  my $t = strftime \"%FT%T\", gmtime;\n  \"[$t $$] $_[1] $_[0]\"\n</pre>\n\n<p>Use of context:</p>\n<pre>\n  format =&gt; sub { my ($msgstr, $domain, $msg, %more) = @_;\n     my $host = $msg-&gt;context-&gt;{host};\n     \"$host $msgstr\";\n  }\n</pre>\n"
      },
      "id494" : {
         "subroutine" : "id493",
         "name" : "no header defined in POT for file $fn.",
         "id" : "id494",
         "type" : "error"
      },
      "id434-id697" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id434\">Log::Report::Extract::cleanup(keep)</a></p>",
         "type" : "option",
         "params" : "HASH|ARRAY",
         "id" : "id434-id697",
         "name" : "keep",
         "extends" : "id434"
      },
      "id1105" : {
         "type" : "default",
         "value" : "[]",
         "id" : "id1105",
         "name" : "to_prio"
      },
      "id241" : {
         "call" : "$obj-&gt;<b><a name=\"id241\">info</a></b>",
         "id" : "id241",
         "name" : "info",
         "type" : "i_method"
      },
      "id544" : {
         "call" : "$obj-&gt;<b><a name=\"id544\">automatic</a></b>(&nbsp;[@lines|\\@lines|$text]&nbsp;)",
         "name" : "automatic",
         "id" : "id544",
         "intro" : "<p>Returns a STRING which contains the cleaned paragraph of automatically\nadded comments.  If an argument is specified, it will replace the current\ncomment.</p>\n",
         "type" : "i_method"
      },
      "id1342" : {
         "name" : "INHERITANCE",
         "id" : "id1342",
         "type" : "chapter",
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Extract::PerlPPI\n   is a <a class=\"jump\" href=\"id412\">Log::Report::Extract</a>\n</pre>\n",
         "level" : 1
      },
      "id800" : {
         "intro" : "<p>The higher the abstraction value, the less details are given\nabout the caller.  The minimum abstraction is specified, and\nthen increased internally to make the line fit within the <tt class=\"parameter\">max_line</tt>\nmargin.</p>\n",
         "type" : "option",
         "params" : "INTEGER",
         "name" : "abstract",
         "id" : "id800"
      },
      "id376" : {
         "level" : 1,
         "intro" : "<p>Log::Report::Template::Textdomain - template translation with one domain</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "name" : "NAME",
         "id" : "id376"
      },
      "id144" : {
         "id" : "id144",
         "name" : "panic",
         "call" : "<b><a name=\"id144\">panic</a></b>(&nbsp;$message&nbsp;)",
         "type" : "function"
      },
      "id761-id1090" : {
         "id" : "id761-id1090",
         "name" : "mode",
         "extends" : "id761",
         "params" : "'NORMAL'|'VERBOSE'|'ASSERT'|'DEBUG'|0..3",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>"
      },
      "id760-id944" : {
         "id" : "id760-id944",
         "name" : "locale",
         "value" : "&lt;system locale&gt;",
         "extends" : "id760",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "type" : "default"
      },
      "id1091" : {
         "name" : "NAME",
         "id" : "id1091",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Dispatcher::Syslog - send messages to syslog</p>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id861-id217" : {
         "extends" : "id861",
         "name" : "'\"\"'",
         "id" : "id861-id217",
         "call" : "overload <b><a name=\"id861\">'\"\"'</a></b>; stringification",
         "type" : "overload",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id861\">Log::Report::Message::'\"\"'()</a></p>"
      },
      "id999" : {
         "id" : "id999",
         "name" : "token '$token' not recognized as reason.",
         "subroutine" : "id985",
         "type" : "error"
      },
      "id955" : {
         "path" : "METHODS/Attributes",
         "type" : "section",
         "subroutines" : [
            "id771-id944",
            "id774-id944",
            "id775-id944",
            "id772-id944",
            "id773-id944",
            "id956"
         ],
         "name" : "Attributes",
         "id" : "id955",
         "level" : 2
      },
      "id1114" : {
         "subroutine" : "id1096",
         "id" : "id1114",
         "name" : "max one active syslog dispatcher, attempt for $new have $old",
         "type" : "error"
      },
      "id941" : {
         "name" : "NAME",
         "id" : "id941",
         "level" : 1,
         "type" : "chapter",
         "intro" : "<p>Log::Report::DBIC::Profiler - query profiler for DBIx::Class</p>\n",
         "path" : "NAME"
      },
      "id150" : {
         "id" : "id150",
         "name" : "__nx",
         "call" : "<b><a name=\"id150\">__nx</a></b>(&nbsp;$msgid, $plural_msgid, $count, PAIRS&nbsp;)",
         "type" : "function"
      },
      "id596" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "level" : 2,
         "id" : "id596",
         "name" : "Constructors",
         "subroutines" : [
            "id597"
         ]
      },
      "id1158" : {
         "intro" : "<p>Translate the <tt class=\"parameter\">$message</tt> into the <tt class=\"parameter\">$language</tt>.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id1158\">translate</a></b>(&nbsp;$message, $language&nbsp;)",
         "name" : "translate",
         "id" : "id1158"
      },
      "id1323" : {
         "id" : "id1323",
         "name" : "INHERITANCE",
         "type" : "chapter",
         "intro" : "<pre> Log::Report::Translator::Gettext\n   is a <a class=\"jump\" href=\"id1163\">Log::Report::Translator</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "level" : 1
      },
      "id446" : {
         "subroutines" : [
            "id447",
            "id467",
            "id475"
         ],
         "level" : 2,
         "name" : "Constructors",
         "id" : "id446",
         "path" : "METHODS/Constructors",
         "type" : "section"
      },
      "id1137" : {
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id1137\">contextRules</a></b>",
         "name" : "contextRules",
         "id" : "id1137"
      },
      "id1088" : {
         "level" : 2,
         "id" : "id1088",
         "name" : "Attributes",
         "subroutines" : [
            "id771-id1082",
            "id774-id1082",
            "id775-id1082",
            "id772-id1082",
            "id773-id1082"
         ],
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id1268" : {
         "type" : "section",
         "path" : "DETAILS/Available back-ends",
         "name" : "Available back-ends",
         "id" : "id1268",
         "level" : 2
      },
      "id766-id1082" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>",
         "extends" : "id766",
         "value" : "<code>undef</code>",
         "name" : "charset",
         "id" : "id766-id1082"
      },
      "id196" : {
         "call" : "<b><a name=\"id196\">mode_number</a></b>(&nbsp;$name|$mode&nbsp;)",
         "id" : "id196",
         "name" : "mode_number",
         "intro" : "<p>Returns the <tt class=\"parameter\">$mode</tt> as number.</p>\n",
         "type" : "function"
      },
      "id299" : {
         "id" : "id299",
         "name" : "pattern",
         "value" : "&lt;<code>undef</code>>",
         "type" : "default"
      },
      "id255" : {
         "level" : 3,
         "intro" : "<p>Set up <a class=\"jump\" href=\"id279\">Dancer2::Logger::LogReport</a> by adding it to your Dancer2\napplication configuration (see <a href=\"https://metacpan.org/dist/Dancer2_Config\">manual Dancer2::Config</a>). By default,\nall messages will go to STDERR.</p>\n\n<p>To get all message out \"the Perl way\" (using print, warn and die) just use</p>\n<pre>\n  logger: \"LogReport\"\n</pre>\n\n<p>At start, these are handled by a <a class=\"jump\" href=\"id1082\">Log::Report::Dispatcher::Perl</a> object,\nnamed 'default'.  If you open a new dispatcher with the name 'default',\nthe output via the perl mechanisms will be stopped.</p>\n\n<p>To also send messages to your syslog:</p>\n<pre>\n  logger: \"LogReport\"\n\n  engines:\n    logger:\n      LogReport:\n        log_format: %a%i%m      # See Dancer2::Logger::LogReport\n        app_name: MyApp\n        dispatchers:\n          default:              # Name\n            type: SYSLOG        # Log::Reporter::dispatcher() options\n            identity: myapp\n            facility: local0\n            flags: \"pid ndelay nowait\"\n            mode: DEBUG\n</pre>\n\n<p>To send messages to a file:</p>\n<pre>\n  logger: \"LogReport\"\n\n  engines:\n    logger:\n      LogReport:\n        log_format: %a%i%m      # See Dancer2::Logger::LogReport\n        app_name: MyApp\n        dispatchers:\n          logfile:              # \"default\" dispatcher stays open as well\n            type: FILE\n            to: /var/log/myapp.log\n            charset: utf-8\n            mode: DEBUG\n</pre>\n\n<p>See <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a> for full details of options.</p>\n\n<p>Finally: a Dancer2 script may run many applications.  Each application\ncan have its own logger configuration.  However, <a class=\"jump\" href=\"id979\">Log::Report</a> dispatchers\nare global, so will be shared between Dancer2 applications.  Any attempt\nto create a new <a class=\"jump\" href=\"id979\">Log::Report</a> dispatcher by the same name (as will happen\nwhen a new Dancer2 application is started with the same configuration)\nwill be ignored.</p>\n",
         "path" : "DETAILS/Setup and Configuration/Dancer2::Logger::LogReport",
         "type" : "subsection",
         "id" : "id255",
         "name" : "Dancer2::Logger::LogReport"
      },
      "id550" : {
         "call" : "$obj-&gt;<b><a name=\"id550\">isActive</a></b>",
         "id" : "id550",
         "name" : "isActive",
         "intro" : "<p>Returns whether the translation has any references, or is the header.</p>\n",
         "type" : "i_method"
      },
      "id1078" : {
         "id" : "id1078",
         "name" : "Compared to other solutions in Perl",
         "nest" : [
            "id1079",
            "id1080",
            "id1081"
         ],
         "level" : 2,
         "type" : "section",
         "path" : "DETAILS/Compared to other solutions in Perl",
         "intro" : "<p>Some notes on differences between the <a class=\"jump\" href=\"id979\">Log::Report</a> approach and other\nPerl concepts.</p>\n"
      },
      "id753" : {
         "id" : "id753",
         "name" : "DESCRIPTION",
         "level" : 1,
         "path" : "DESCRIPTION",
         "intro" : "<p>In <a class=\"jump\" href=\"id979\">Log::Report</a>, dispatchers are used to handle (exception) messages\nwhich are created somewhere else.  Those message were produced (thrown)\nby <a class=\"jump\" href=\"id1017\">Log::Report::error()</a> and friends.</p>\n\n<p>This base-class handles the creation of dispatchers, plus the common\nfiltering rules.  See the <a class=\"jump\" href=\"id802\">DETAILS</a> section, below.</p>\n",
         "type" : "chapter"
      },
      "id614" : {
         "id" : "id614",
         "name" : "DESCRIPTION",
         "level" : 1,
         "path" : "DESCRIPTION",
         "intro" : "<p>UNTESTED!!!  PLEASE CONTRIBUTE!!!\nTranslate a message using the GNU gettext infrastructure.</p>\n\n<p>Guido Flohr reports:\nbe aware that Locale::gettext is only a binding for the C library\nlibintl and depends on its features.  That means that your module will\neffectively only run on GNU systems and maybe on Solaris (depending\non the exact version), because only these systems provide the plural\nhandling functions ngettext(), dngettext() and dcngettext().  Sooner or\nlater you will probably also need bind_textdomain_codeset() which is\nalso only available on certain systems.</p>\n",
         "type" : "chapter"
      },
      "id727" : {
         "name" : "SYNOPSIS",
         "id" : "id727",
         "type" : "chapter",
         "intro" : "<pre>  # use one of the extensions, for instance:\n  my $pot = Log::Report::Lexicon::POT-&gt;read('po/nl.po', charset =&gt; 'utf-8')\n         or panic;\n</pre>\n",
         "path" : "SYNOPSIS",
         "level" : 1
      },
      "id47" : {
         "chapters" : [
            "id48",
            "id49",
            "id50",
            "id51",
            "id74",
            "id89"
         ],
         "version" : "1.02",
         "distribution" : "String-Print",
         "package" : "String::Print",
         "inheritance" : {},
         "id" : "id47",
         "name" : "String::Print",
         "title" : "printf alternative",
         "is_pure_pod" : false
      },
      "id348" : {
         "id" : "id348",
         "name" : "extract",
         "call" : "$obj-&gt;<b><a name=\"id348\">extract</a></b>(&nbsp;%options&nbsp;)",
         "type" : "i_method",
         "options" : [
            [
               "id349",
               "id350"
            ],
            [
               "id355",
               "id356"
            ],
            [
               "id353",
               "id354"
            ],
            [
               "id351",
               "id352"
            ]
         ],
         "intro" : "<p>Extract message ids from the templates, and register them to the lexicon.\nRead section <a class=\"jump\" href=\"id370\">Extracting PO-files</a> how to use this method.</p>\n\n<p>Show statistics will be show when the <a class=\"jump\" href=\"id979\">Log::Report</a> more is VERBOSE or\nDEBUG.</p>\n"
      },
      "id551" : {
         "type" : "i_method",
         "intro" : "<p>Returns whether the translation needs human inspection.</p>\n",
         "name" : "fuzzy",
         "id" : "id551",
         "call" : "$obj-&gt;<b><a name=\"id551\">fuzzy</a></b>(&nbsp;[BOOLEAN]&nbsp;)"
      },
      "id254" : {
         "type" : "section",
         "path" : "DETAILS/Setup and Configuration",
         "intro" : "<p>To make full use of <a class=\"jump\" href=\"id979\">Log::Report</a>, you'll need to use both\n<a class=\"jump\" href=\"id279\">Dancer2::Logger::LogReport</a> and <a class=\"jump\" href=\"id228\">Dancer2::Plugin::LogReport</a>.</p>\n",
         "level" : 2,
         "nest" : [
            "id255",
            "id256"
         ],
         "id" : "id254",
         "name" : "Setup and Configuration"
      },
      "id608" : {
         "type" : "example",
         "intro" : "<p>My module is named <code>Some::Module</code> and installed in\nsome of perl's directories, say <code>~perl5.8.8</code>.  The module is defining\ntextdomain <code>my-domain</code>.  The translation is made into <code>nl-NL.utf-8</code>\n(locale for Dutch spoken in The Netherlands, utf-8 encoded text file).</p>\n\n<p>The default location for the translation table is under</p><pre>\n  ~perl5.8.8/Some/Module/messages/\n</pre>\n\n<p>for instance</p><pre>\n  ~perl5.8.8/Some/Module/messages/nl-NL.utf-8/LC_MESSAGES/my-domain.po\n</pre>\n\n<p>There are alternatives, as described in <a class=\"jump\" href=\"id591\">Log::Report::Lexicon::Index</a>,\nfor instance</p><pre>\n  ~perl5.8.8/Some/Module/messages/my-domain/nl-NL.utf-8.po\n  ~perl5.8.8/Some/Module/messages/my-domain/nl.po\n</pre>\n",
         "id" : "id608",
         "name" : "lexicon in module tree\n"
      },
      "id706" : {
         "id" : "id706",
         "name" : "Attributes",
         "level" : 2,
         "subroutines" : [
            "id428-id697",
            "id430-id697",
            "id426-id697",
            "id429-id697",
            "id427-id697"
         ],
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id238" : {
         "id" : "id238",
         "name" : "Handlers",
         "path" : "METHODS/Handlers",
         "intro" : "<p>All the standard <a class=\"jump\" href=\"id979\">Log::Report</a> functions are available to use. Please see the\n<a class=\"jump\" href=\"id1069\">The Reason for the report</a> for details\nof when each one should be used.</p>\n\n<p><a href=\"https://metacpan.org/dist/Log_Report_Message_pod_class_STRING_ARRAY\">Log::Report class functionality</a>\nto class messages (which can then be tested later):</p>\n<pre>\n  notice __x\"Tag me up\", _tag =&gt; 'label';\n  ...\n  if ($msg-&gt;taggedWith('label')) ...\n</pre>\n\n<p><a class=\"jump\" href=\"id228\">Dancer2::Plugin::LogReport</a> has a special message class, <code>no_session</code>,\nwhich prevents the message from being saved to the messages session\nvariable. This is useful, for example, if you are writing messages within\nthe session hooks, in which case recursive loops can be experienced.</p>\n",
         "type" : "section",
         "subroutines" : [
            "id248",
            "id250",
            "id246",
            "id249",
            "id242",
            "id239",
            "id247",
            "id241",
            "id245",
            "id244",
            "id243",
            "id240"
         ],
         "level" : 2
      },
      "id932" : {
         "id" : "id932",
         "name" : "Why use format strings?",
         "level" : 2,
         "type" : "section",
         "intro" : "<p>Simple perl scripts will use <code>print()</code> with variables in the string.\nHowever, when the content of the variable gets more unpredictable or\nneeds some pre-processing, then it gets tricky.  When you do want to\nintroduce translations (in the far future of your successful project)\nit gets impossible.  Let me give you some examples:</p>\n<pre>\n  print \"product: $name\\n\";    # simple perl\n\n  # Will not work because \"$name\" is interpolated too early\n  print translate(\"product: $name\"), \"\\n\";\n\n  # This is the gettext solution, with formats\n  printf translate(\"product: %s\\n\"), $name;\n\n  # With named in stead of positional parameters\n  print translate(\"product: {p}\\n\", p =&gt; $name);\n\n  # With Log::Report, the translate() is hidden in __x()\n  print __x\"product: {p}\\n\", p =&gt; $name;\n</pre>\n\n<p>Besides making translation possible, interpolation via format strings\nis much cleaner than in the simpelest perl way.  For instance, these\ncases:</p>\n<pre>\n  # Safety measures while interpolation\n  my $name = undef;\n  print \"product: $name\\n\";   # uninitialized warning\n  print __x\"product: {p}\\n\", p =&gt; $name;  # --&gt; product: undef\n\n  # Interpolation of more complex data\n  my @names = qw/a b c/;\n  print \"products: \", join(', ', @names), \"\\n\";\n  print __x\"products: {p}\\n\", p =&gt; \\@names;\n\n  # Padded values hard to do without format strings\n  print \"padded counter: \", ' ' x (6-length $c), \"$c\\n\";\n  printf \"padded counter: %6d\\n\", $counter;\n  print __x\"padded counter: {c%6d}\\n\", c =&gt; $counter;\n</pre>\n\n<p>So: using formats has many advantages.  Advice: use simple perl only in\n<code>trace</code> and <code>assert</code> messages, maybe also with panics.  For serious output\nof your program, use formatted output.</p>\n",
         "path" : "DETAILS/Why use format strings?"
      },
      "id768" : {
         "type" : "error",
         "name" : "illegal format_reason '$format' for dispatcher",
         "id" : "id768",
         "subroutine" : "id756"
      },
      "id666" : {
         "name" : "Managing PO's",
         "id" : "id666",
         "level" : 2,
         "type" : "section",
         "nest" : [
            "id1274",
            "id1275"
         ],
         "path" : "METHODS/Managing PO's"
      },
      "id982" : {
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>Get messages to users and logs.  <code>Log::Report</code> combines three tasks\nwhich are closely related in one:</p>\n\n<ol>\n<li>logging (like Log::Log4Perl and syslog), and<br />\n<li>exceptions (like 'error' and 'info'), with<br />\n<li>translations (like <code>gettext</code> and Locale::TextDomain)<br />\n</ol>\n\n<p>You <b>do not need</b> to use this module for all three reasons: pick what\nyou need now, maybe extend the usage later.  Read more about how and\nwhy in the <a class=\"jump\" href=\"id1064\">DETAILS</a> section, below.  Especially, you should B<read\nabout the REASON parameter>.</p>\n\n<p>Also, you can study this module swiftly via the article published in\nthe German Perl <code>$foo-magazine</code>.  English version:\n<a href=\"https://perl.overmeer.net/log-report/papers/201306-PerlMagazine-article-en.html\" target=\"_blank\">https://perl.overmeer.net/log-report/papers/201306-PerlMagazine-article-en.html</a></p>\n",
         "level" : 1,
         "name" : "DESCRIPTION",
         "id" : "id982"
      },
      "id615" : {
         "path" : "METHODS",
         "nest" : [
            "id1260",
            "id1261",
            "id616"
         ],
         "type" : "chapter",
         "level" : 1,
         "name" : "METHODS",
         "id" : "id615"
      },
      "id347" : {
         "type" : "i_method",
         "intro" : "<p>Returns the textdomain with the specified <tt class=\"parameter\">$name</tt>.</p>\n",
         "name" : "domain",
         "id" : "id347",
         "call" : "$obj-&gt;<b><a name=\"id347\">domain</a></b>(&nbsp;$name&nbsp;)"
      },
      "id472" : {
         "subroutine" : "id467",
         "id" : "id472",
         "name" : "cannot detect charset in $fn.",
         "type" : "error"
      },
      "id728" : {
         "name" : "DESCRIPTION",
         "id" : "id728",
         "intro" : "<p>This base class defines the generic interface for translation tables.</p>\n\n<p>Currently, there are three extensions:</p>\n\n<ul>\n\n\n\n<p><li><a class=\"jump\" href=\"id441\">Log::Report::Lexicon::POT</a><br />\nThis is a relatively heavy implementation, used to read but also to\nwrite PO files.  It is used by <i class=\"filename\">xgettext-perl</i>, for instance, to\nadminister the collection of discovered msgid's.</p>\n\n\n\n<p><li><a class=\"jump\" href=\"id569\">Log::Report::Lexicon::POTcompact</a><br />\nLight-weighted read-only access to PO-file information.</p>\n\n\n\n<p><li><a class=\"jump\" href=\"id637\">Log::Report::Lexicon::MOTcompact</a><br />\nRead-only access to MO-file information.  These binary MO-files are\nsuper efficient.</p>\n\n</ul>\n",
         "path" : "DESCRIPTION",
         "type" : "chapter",
         "level" : 1
      },
      "id626" : {
         "id" : "id626",
         "name" : "lexicons",
         "value" : "&lt;see text&gt;",
         "type" : "default"
      },
      "id1148" : {
         "subroutine" : "id1138",
         "name" : "Missing key '$key' in format '$format', file $use",
         "id" : "id1148",
         "type" : "warning"
      },
      "id773-id958" : {
         "extends" : "id773",
         "id" : "id773-id958",
         "name" : "mode",
         "call" : "$obj-&gt;<b><a name=\"id773\">mode</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id773\">Log::Report::Dispatcher::mode()</a></p>"
      },
      "id767" : {
         "subroutine" : "id756",
         "name" : "cannot use class $backend:\\n$@: $!",
         "id" : "id767",
         "type" : "alert"
      },
      "id93" : {
         "id" : "id93",
         "name" : "Simple keys",
         "type" : "subsection",
         "path" : "DETAILS/Interpolation: keys/Simple keys",
         "intro" : "<p>A simple key directly refers to a named parameter of the function or method:</p>\n<pre>\n  printi \"Username: {name}\", name =&gt; 'John';\n</pre>\n\n<p>You may also pass them as HASH or CODE:</p>\n<pre>\n  printi \"Username: {name}\", { name =&gt; 'John' };\n  printi \"Username: {name}\", name =&gt; sub { 'John' };\n  printi \"Username: {name}\", { name =&gt; sub { 'John' } };\n  printi \"Username: {name}\", name =&gt; sub { sub {'John'} };\n</pre>\n\n<p>The smartness of pre-processing CODE is part of serialization.</p>\n",
         "level" : 3
      },
      "id151" : {
         "type" : "function",
         "call" : "<b><a name=\"id151\">__xn</a></b>(&nbsp;$single_msgid, $plural_msgid, $count, PAIRS&nbsp;)",
         "name" : "__xn",
         "id" : "id151"
      },
      "id940" : {
         "id" : "id940",
         "name" : "Log::Report::DBIC::Profiler",
         "is_pure_pod" : false,
         "title" : "query profiler for DBIx::Class",
         "distribution" : "Log-Report",
         "inheritance" : {
            "extends" : [
               "DBIx::Class::Storage::Statistics"
            ]
         },
         "package" : "Log::Report::DBIC::Profiler",
         "version" : "1.45",
         "chapters" : [
            "id941",
            "id1330",
            "id942",
            "id943"
         ]
      },
      "id98" : {
         "type" : "subsubsection",
         "intro" : "<p>The POSIX <code>printf()</code> does not handle unicode strings.  Perl does\nunderstand that the 's' modifier may need to insert utf8 so does not\ncount bytes but characters.  <a class=\"jump\" href=\"id85\">printi()</a> does not use characters but\n\"grapheme clusters\" via Unicode::GCString.  Now, also composed\ncharacters do work correctly.</p>\n\n<p>Additionally, you can use the <b>new 'S' conversion</b> to count in columns.\nIn fixed-width fonts, graphemes can have width 0, 1 or 2.  For instance,\nChinese characters have width 2.  When printing in fixed-width, this\n'S' is probably the better choice over 's'.  When the field does not\nspecify its width, then there is no performance penalty for using 'S'.</p>\n<pre>\n  # name right aligned, commas on same position, always\n  printp \"name: {name%20S},\\n\", name =&gt; $some_chinese;\n</pre>\n",
         "path" : "DETAILS/Interpolation: Modifiers/Modifier: POSIX format starts with '%'/POSIX modifier extension '%S'",
         "level" : 4,
         "name" : "POSIX modifier extension '%S'",
         "id" : "id98"
      },
      "id607" : {
         "path" : "DETAILS/merge lexicon files with perl modules",
         "intro" : "<p>By default, the filename which contains the package which contains the\ntextdomain's translator configuration is taken (that can be only one)\nand changed into a directory name.  The path is then extended with <code>messages</code>\nto form the root of the lexicon: the top of the index.  After this,\nthe locale indication, the lc-category (usually LC_MESSAGES), and\nthe <code>textdomain</code> followed by <code>.po</code> are added.  This is exactly as\n<code>gettext(1)</code> does, but then using the PO text file instead of the MO\nbinary file.</p>\n",
         "type" : "section",
         "examples" : [
            "id608"
         ],
         "level" : 2,
         "name" : "merge lexicon files with perl modules",
         "id" : "id607"
      },
      "id237" : {
         "id" : "id237",
         "name" : "An unexpected error has occurred",
         "subroutine" : "id234",
         "type" : "error"
      },
      "id1104" : {
         "type" : "option",
         "params" : "\\@PAIRS",
         "intro" : "<p>See <a class=\"jump\" href=\"id1119\">reasonToPrio()</a>.</p>\n",
         "id" : "id1104",
         "name" : "to_prio"
      },
      "id602" : {
         "intro" : "<p>Add a certain file to the index.  This method returns the <tt class=\"parameter\">$absolute</tt>\npath to that file, which must be used to access it.  When not explicitly\nspecified, the <tt class=\"parameter\">$absolute</tt> path will be calculated.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id602\">addFile</a></b>(&nbsp;$basename, [$absolute]&nbsp;)",
         "id" : "id602",
         "name" : "addFile"
      },
      "id938" : {
         "level" : 3,
         "type" : "subsection",
         "intro" : "<p>In above examples, the msgid and plural form have a trailing new-line.\nIn general, it is much easier to write</p>\n<pre>\n  print __x\"Hello, World!\\n\";\n</pre>\n\n<p>than</p>\n<pre>\n  print __x(\"Hello, World!\") . \"\\n\";\n</pre>\n\n<p>For the translation tables, however, that trailing new-line is \"ignorable\ninformation\"; it is an layout issue, not a translation issue.</p>\n\n<p>Therefore, the first form will automatically be translated into the\nsecond.  All leading and trailing white-space (blanks, new-lines, tabs,\n...) are removed from the msgid before the look-up, and then added to\nthe translated string.</p>\n\n<p>Leading and trailing white-space on the plural form will also be\nremoved.  However, after translation the spacing of the msgid will\nbe used.</p>\n",
         "path" : "DETAILS/Automatic parameters/Handling white-spaces",
         "name" : "Handling white-spaces",
         "id" : "id938"
      },
      "id771-id1228" : {
         "call" : "$obj-&gt;<b><a name=\"id771\">name</a></b>",
         "name" : "name",
         "id" : "id771-id1228",
         "extends" : "id771",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id771\">Log::Report::Dispatcher::name()</a></p>",
         "type" : "i_method"
      },
      "id232" : {
         "level" : 1,
         "name" : "METHODS",
         "id" : "id232",
         "subroutines" : [
            "id234",
            "id233"
         ],
         "type" : "chapter",
         "path" : "METHODS",
         "nest" : [
            "id238"
         ]
      },
      "id988" : {
         "params" : "INTEGER",
         "type" : "option",
         "intro" : "<p>When the <tt class=\"parameter\">$reason</tt> includes the error text (See <a class=\"jump\" href=\"id1071\">Run modes</a>), you can\noverrule the error code kept in <code>$!</code>.  In other cases, the return code\ndefaults to <code>1</code> (historical UNIX behavior). When the message <tt class=\"parameter\">$reason</tt>\n(combined with the run-mode) is severe enough to stop the program,\nthis value as return code of the program.  The use of this option itself\nwill not trigger an <code>die()</code>.</p>\n",
         "name" : "errno",
         "id" : "id988"
      },
      "id282" : {
         "nest" : [
            "id283"
         ],
         "id" : "id282",
         "name" : "DESCRIPTION",
         "type" : "chapter",
         "intro" : "<p>[The Dancer2 plugin was contributed by Andrew Beverley]</p>\n\n<p>This logger allows the use of the many logging backends available\nin <a class=\"jump\" href=\"id979\">Log::Report</a>.  It will process all of the Dancer2 log messages,\nand also allow any other module to use the same logging facilities. The\nsame log messages can be sent to multiple destinations at the same time\nvia flexible dispatchers.</p>\n\n<p>If using this logger, you may also want to use\n<a class=\"jump\" href=\"id228\">Dancer2::Plugin::LogReport</a></p>\n\n<p>Many log back-ends, like syslog, have more levels of system messages.\nModules who explicitly load this module can use the missing <code>assert</code>,\n<code>notice</code>, <code>panic</code>, and <code>alert</code> log levels.  The <code>trace</code> name is\nprovided as well: when you are debugging, you add a 'trace' to your\nprogram... it's just a better name than 'debug'. You will need to load\n<a class=\"jump\" href=\"id979\">Log::Report</a> in order to use the additional levels; if doing so directly within\na Dancer2 application (not a sub-module), then you will either need to load\n<a class=\"jump\" href=\"id979\">Log::Report</a> with <code>syntax, 'LONG'</code> or use <a class=\"jump\" href=\"id228\">Dancer2::Plugin::LogReport</a> to\nprevent namespace clashes.</p>\n",
         "path" : "DESCRIPTION",
         "level" : 1
      },
      "id762" : {
         "type" : "default",
         "value" : "'NORMAL'",
         "name" : "mode",
         "id" : "id762"
      },
      "id761-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>",
         "params" : "'NORMAL'|'VERBOSE'|'ASSERT'|'DEBUG'|0..3",
         "type" : "option",
         "extends" : "id761",
         "name" : "mode",
         "id" : "id761-id944"
      },
      "id1330" : {
         "id" : "id1330",
         "name" : "INHERITANCE",
         "level" : 1,
         "intro" : "<pre> Log::Report::DBIC::Profiler\n   is a DBIx::Class::Storage::Statistics\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter"
      },
      "id145" : {
         "path" : "FUNCTIONS/Language Translations",
         "intro" : "<p>No translations, no <a class=\"jump\" href=\"id856\">Log::Report::Message</a> objects returned.</p>\n",
         "type" : "section",
         "subroutines" : [
            "id153",
            "id152",
            "id150",
            "id147",
            "id146",
            "id154",
            "id151",
            "id149"
         ],
         "level" : 2,
         "id" : "id145",
         "name" : "Language Translations"
      },
      "id760-id1090" : {
         "id" : "id760-id1090",
         "name" : "locale",
         "value" : "&lt;system locale&gt;",
         "extends" : "id760",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>"
      },
      "id423-id697" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id418\">Log::Report::Extract::new()</a></p>",
         "type" : "error",
         "subroutine" : "id418",
         "id" : "id423-id697",
         "name" : "extractions require an explicit lexicon directory.",
         "extends" : "id423"
      },
      "id1294" : {
         "type" : "section",
         "path" : "DETAILS/Configuring",
         "nest" : [
            "id1295",
            "id1296"
         ],
         "level" : 2,
         "name" : "Configuring",
         "id" : "id1294"
      },
      "id342" : {
         "type" : "i_method",
         "intro" : "<p>Create a new <a class=\"jump\" href=\"id375\">Log::Report::Template::Textdomain</a> object.\nSee its <code>new()</code> method for the options.</p>\n\n<p>Additional facts about the options: you may specify <code>only_in_directory</code>\nas a path. Those directories must be in the INCLUDE_PATH as well.\nThe (domain) <code>name</code> must be unique, and the <code>function</code> not yet in use.</p>\n\n<p>When the code also uses this textdomain, then that configuration will\nget extended with this configuration.</p>\n",
         "diagnostics" : [
            "id344",
            "id345"
         ],
         "examples" : [
            "id343"
         ],
         "call" : "$obj-&gt;<b><a name=\"id342\">addTextdomain</a></b>(&nbsp;%options&nbsp;)",
         "name" : "addTextdomain",
         "id" : "id342"
      },
      "id893" : {
         "id" : "id893",
         "name" : "_join",
         "intro" : "<p>Which <tt class=\"parameter\">$separator</tt> string to be used then an ARRAY is being filled-in.</p>\n",
         "params" : "$separator",
         "type" : "option"
      },
      "id1160" : {
         "nest" : [
            "id1161",
            "id1162"
         ],
         "name" : "Configuring",
         "id" : "id1160",
         "type" : "section",
         "intro" : "<p>Configuration of a domain can happen in many ways: either explicitly or\nimplicitly.  The explicit form:</p>\n<pre>\n  package My::Package;\n  use Log::Report 'my-domain';\n\n  textdomain 'my-domain', %configuration;\n  textdomain-&gt;configure(%configuration);\n  textdomain-&gt;configure(\\%configuration);\n\n  textdomain-&gt;configure(conf =&gt; $filename);\n</pre>\n\n<p>The implicit form is (no variables possible, only constants!)</p>\n<pre>\n  package My::Package;\n  use Log::Report 'my-domain', %configuration;\n  use Log::Report 'my-domain', conf =&gt; '/filename';\n</pre>\n\n<p>You can only configure your domain in one place in your program.  The\ntextdomain setup is then used for all packages in the same domain.</p>\n\n<p>This also works for <a class=\"jump\" href=\"id208\">Log::Report::Optional</a>, which is a dressed-down\nversion of <a class=\"jump\" href=\"id979\">Log::Report</a>.</p>\n",
         "path" : "DETAILS/Configuring",
         "level" : 2
      },
      "id72" : {
         "examples" : [
            "id73"
         ],
         "level" : 2,
         "path" : "METHODS/Printing",
         "intro" : "<p>The following are provided both as method and as function.  The function\nversion is explained further down on this page, because it reads a bit\neasier, but the object version is most flexible.</p>\n<pre>\n  my $sp = String::Print-&gt;new;\n  $sp-&gt;printi([$fh], $format, %data|\\%data);        # see <a class=\"jump\" href=\"id85\">printi()</a>\n  $sp-&gt;printp([$fh], $format, @params, %options);   # see <a class=\"jump\" href=\"id86\">printp()</a>\n  my $s = $sp-&gt;sprinti($format, %data|\\%data);      # see <a class=\"jump\" href=\"id76\">sprinti()</a>\n  my $s = $sp-&gt;sprintp($format, @params, %options); # see <a class=\"jump\" href=\"id87\">sprintp()</a>\n</pre>\n",
         "type" : "section",
         "id" : "id72",
         "name" : "Printing"
      },
      "id954" : {
         "subroutine" : "id951",
         "id" : "id954",
         "name" : "dispatcher $name needs a 'callback'",
         "type" : "error"
      },
      "id1232" : {
         "type" : "chapter",
         "nest" : [
            "id1233",
            "id1244",
            "id1248",
            "id1253"
         ],
         "path" : "METHODS",
         "name" : "METHODS",
         "id" : "id1232",
         "level" : 1
      },
      "id477" : {
         "name" : "only_active",
         "id" : "id477",
         "value" : "<code>false</code>",
         "type" : "default"
      },
      "id801" : {
         "name" : "abstract",
         "id" : "id801",
         "value" : "1",
         "type" : "default"
      },
      "id60" : {
         "id" : "id60",
         "name" : "missing_key",
         "intro" : "<p>[0.91] During interpolation, it may be discovered that a key is missing\nfrom the parameter list.  In that case, a warning is produced and <code>undef</code>\ninserted.  May can overrule that behavior.</p>\n",
         "params" : "CODE",
         "type" : "option"
      },
      "id987" : {
         "name" : "to",
         "id" : "id987",
         "value" : "<code>undef</code>",
         "type" : "default"
      },
      "id174-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id174\">Log::Report::Minimal::Domain::configure(where)</a></p>",
         "type" : "option",
         "params" : "ARRAY",
         "extends" : "id174",
         "id" : "id174-id375",
         "name" : "where"
      },
      "id76" : {
         "name" : "sprinti",
         "id" : "id76",
         "call" : "<b><a name=\"id76\">sprinti</a></b>(&nbsp;$format, %data|\\%data|OBJECT, %options&nbsp;)",
         "type" : "function",
         "options" : [
            [
               "id83",
               "id84"
            ],
            [
               "id77",
               "id78"
            ],
            [
               "id79",
               "id80"
            ],
            [
               "id81",
               "id82"
            ]
         ],
         "intro" : "<p>The <tt class=\"parameter\">$format</tt> refers to some string, maybe the result of a translation.</p>\n\n<p>The <tt class=\"parameter\">%data</tt> (which may be passed as LIST, HASH, or blessed HASH) contains\na mixture of special and normal variables to be filled in.  The names\nof the special variables (the <tt class=\"parameter\">%options</tt>) start with an underscore (<code>_</code>).</p>\n"
      },
      "id240" : {
         "name" : "assert",
         "id" : "id240",
         "call" : "$obj-&gt;<b><a name=\"id240\">assert</a></b>",
         "type" : "i_method"
      },
      "id786-id1228" : {
         "name" : "package",
         "id" : "id786-id1228",
         "extends" : "id786",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>",
         "type" : "option",
         "params" : "CLASS"
      },
      "id1326" : {
         "id" : "id1326",
         "name" : "INHERITANCE",
         "level" : 1,
         "type" : "chapter",
         "intro" : "<pre> Dancer2::Template::TTLogReport\n   is a Moo::Object\n</pre>\n",
         "path" : "INHERITANCE"
      },
      "id1115" : {
         "subroutine" : "id1096",
         "name" : "syslog level '$level' not understood",
         "id" : "id1115",
         "type" : "error"
      },
      "id937" : {
         "name" : "using the _count\n",
         "id" : "id937",
         "type" : "example",
         "intro" : "<p>With Locale::TextDomain, you have to do</p>\n<pre>\n  use Locale::TextDomain;\n  print __nx(\n     \"One file has been deleted.\\n\",\n     \"{num} files have been deleted.\\n\",\n     $num_files,\n     num =&gt; $num_files,\n  );\n</pre>\n\n<p>With <code>Log::Report</code>, you can do</p>\n<pre>\n  use Log::Report;\n  print __nx(\n     \"One file has been deleted.\\n\",\n     \"{_count} files have been deleted.\\n\",\n     $num_files,\n  );\n</pre>\n\n<p>Of course, you need to be aware that the name used to reference the\ncounter is fixed to <code>_count</code>.  The first example works as well, but\nis more verbose.</p>\n"
      },
      "id1250" : {
         "name" : "cannot rotate log file which was opened as file-handle",
         "id" : "id1250",
         "subroutine" : "id1249",
         "type" : "error"
      },
      "id435-id697" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id434\">Log::Report::Extract::cleanup(keep)</a></p>",
         "value" : "[]",
         "extends" : "id435",
         "name" : "keep",
         "id" : "id435-id697"
      },
      "id495" : {
         "type" : "i_method",
         "intro" : "<p>Replace the \"PO-Revision-Date\" with the specified <tt class=\"parameter\">$date</tt>, or the current\nmoment.</p>\n",
         "name" : "updated",
         "id" : "id495",
         "call" : "$obj-&gt;<b><a name=\"id495\">updated</a></b>(&nbsp;[$date]&nbsp;)"
      },
      "id330" : {
         "type" : "default",
         "value" : "'HTML'",
         "name" : "template_syntax",
         "id" : "id330"
      },
      "id459" : {
         "value" : "&lt;constructed from nr_plurals and plural_alg&gt;",
         "id" : "id459",
         "name" : "plural_forms",
         "type" : "default"
      },
      "id478" : {
         "name" : "no filename or file-handle specified for PO",
         "id" : "id478",
         "subroutine" : "id475",
         "type" : "error",
         "intro" : "<p>When a PO file is written, then a filename or file-handle must be\nspecified explicitly, or set beforehand using the <a class=\"jump\" href=\"id484\">filename()</a>\nmethod, or known because the write follows a <a class=\"jump\" href=\"id467\">read()</a> of the file.</p>\n"
      },
      "id766-id818" : {
         "extends" : "id766",
         "value" : "<code>undef</code>",
         "name" : "charset",
         "id" : "id766-id818",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>",
         "type" : "default"
      },
      "id545" : {
         "call" : "$obj-&gt;<b><a name=\"id545\">addAutomatic</a></b>(&nbsp;@lines|\\@lines|$text&nbsp;)",
         "id" : "id545",
         "name" : "addAutomatic",
         "intro" : "<p>Add multiple lines to the translator's comment block.  Returns an\nempty string if there are no comments.</p>\n",
         "type" : "i_method"
      },
      "id380" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "name" : "Constructors",
         "id" : "id380",
         "level" : 2,
         "subroutines" : [
            "id381",
            "id392"
         ]
      },
      "id722" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "name" : "Constructors",
         "id" : "id722",
         "level" : 2,
         "subroutines" : [
            "id723"
         ]
      },
      "id866-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id866\">Log::Report::Message::new()</a></p>",
         "type" : "c_method",
         "options" : [
            [
               "id881-id217",
               "id882-id217"
            ],
            [
               "id877-id217",
               "id878-id217"
            ],
            [
               "id889-id217",
               "id890-id217"
            ],
            [
               "id887-id217",
               "id888-id217"
            ],
            [
               "id897-id217",
               "id898-id217"
            ],
            [
               "id871-id217",
               "id872-id217"
            ],
            [
               "id869-id217",
               "id870-id217"
            ],
            [
               "id867-id217",
               "id868-id217"
            ],
            [
               "id893-id217",
               "id894-id217"
            ],
            [
               "id895-id217",
               "id896-id217"
            ],
            [
               "id899-id217",
               "id900-id217"
            ],
            [
               "id875-id217",
               "id876-id217"
            ],
            [
               "id873-id217",
               "id874-id217"
            ],
            [
               "id879-id217",
               "id880-id217"
            ],
            [
               "id883-id217",
               "id884-id217"
            ],
            [
               "id885-id217",
               "id886-id217"
            ],
            [
               "id891-id217",
               "id892-id217"
            ]
         ],
         "call" : "$class-&gt;<b><a name=\"id866\">new</a></b>(&nbsp;%options&nbsp;)",
         "extends" : "id866",
         "id" : "id866-id217",
         "name" : "new"
      },
      "id1245" : {
         "type" : "i_method",
         "intro" : "<p>Returns the name of the opened file, or <code>undef</code> in case this dispatcher\nwas started from a file-handle or file-object.</p>\n",
         "id" : "id1245",
         "name" : "filename",
         "call" : "$obj-&gt;<b><a name=\"id1245\">filename</a></b>"
      },
      "id1164" : {
         "name" : "NAME",
         "id" : "id1164",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Translator - base implementation for translating messages</p>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id1290" : {
         "id" : "id1290",
         "name" : "Processing the message",
         "level" : 2,
         "type" : "section",
         "nest" : [
            "id1291",
            "id1292"
         ],
         "path" : "DETAILS/Processing the message"
      },
      "id371" : {
         "id" : "id371",
         "name" : "Setting-up translations",
         "path" : "DETAILS/Extracting PO-files/Setting-up translations",
         "intro" : "<p>Start with desiging a domain structure.  Probably, you want to create\na separate domain for the templates (external texts in many languages)\nand your Perl program (internal texts with few languages).</p>\n\n<p>Pick a lexicon directory, which is also inside your version control setup,\nfor instance your GIT repository.  Some po-editors can work together\nwith various version control systems.</p>\n\n<p>Now, start using this module.  There are two ways: either by creating it\nas object, or by extension.</p>\n<pre>\n  ### As object\n  # Somewhere in your code\n  use Log::Report::Template;\n  my $templater = Log::Report::Template-&gt;new(%config);\n  $templater-&gt;addTextdomain(...);\n\n  $templater-&gt;process('template_file.tt', \\%vars); # runtime\n  $templater-&gt;extract(...);    # rarely, \"off-line\"\n</pre>\n\n<p>Some way or another, you want to be able to share the creation of the\ntemplater and configuration of the textdomain between the run-time use\nand the irregular (off-line) extraction of msgids.</p>\n\n<p>The alternative is via extension:</p>\n<pre>\n  ### By extension\n  # Somewhere in your code:\n  use My::Template;\n  my $templater = My::Template-&gt;new;\n  $templater-&gt;process('template_file.tt', \\%vars);\n\n  # File lib/My/Template.pm\n  package My::Template;\n  use parent 'Log::Report::Template';\n\n  sub init($) {\n     my ($self, $args) = @_;\n     # add %config into %$args\n     $self-&gt;SUPER::init($args);\n     $self-&gt;addTextdomain(...);\n     $self;\n  }\n\n  1;\n</pre>\n\n<p>The second solution requires a little bit of experience with OO, but is\neasier to maintain and to share.</p>\n",
         "type" : "subsection",
         "level" : 3
      },
      "id499" : {
         "chapters" : [
            "id500",
            "id1341",
            "id501",
            "id502",
            "id503"
         ],
         "version" : "1.16",
         "distribution" : "Log-Report-Lexicon",
         "package" : "Log::Report::Win32Locale",
         "inheritance" : {
            "extends" : [
               "Exporter"
            ]
         },
         "name" : "Log::Report::Win32Locale",
         "id" : "id499",
         "title" : "unix/windows locales",
         "is_pure_pod" : false
      },
      "id439-id697" : {
         "id" : "id439-id697",
         "name" : "store",
         "extends" : "id439",
         "call" : "$obj-&gt;<b><a name=\"id439\">store</a></b>(&nbsp;$domain, $filename, $linenr, $context, $msg, [$msg_plural]&nbsp;)",
         "diagnostics" : [
            "id440-id697"
         ],
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id439\">Log::Report::Extract::store()</a></p>",
         "type" : "i_method"
      },
      "id549" : {
         "call" : "$obj-&gt;<b><a name=\"id549\">keepReferencesTo</a></b>(&nbsp;$table&nbsp;)",
         "name" : "keepReferencesTo",
         "id" : "id549",
         "intro" : "<p>Remove all references which are not found as key in the hash <tt class=\"parameter\">$table</tt>.\nReturns the number of references left.</p>\n",
         "type" : "i_method"
      },
      "id1334" : {
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Translator::POT\n   is a <a class=\"jump\" href=\"id1163\">Log::Report::Translator</a>\n</pre>\n",
         "type" : "chapter",
         "level" : 1,
         "name" : "INHERITANCE",
         "id" : "id1334"
      },
      "id455" : {
         "value" : "2",
         "name" : "nr_plurals",
         "id" : "id455",
         "type" : "default"
      },
      "id1100" : {
         "id" : "id1100",
         "name" : "flags",
         "intro" : "<p>Any combination of <tt class=\"parameter\">$flags</tt> as defined by Sys::Syslog, as comma-separated\nstring.  Examples for flags are: <code>pid</code>, <code>ndelay</code>, and <code>nowait</code>.</p>\n",
         "params" : "$flags",
         "type" : "option"
      },
      "id313" : {
         "id" : "id313",
         "name" : "unknown pattern $pattern.",
         "subroutine" : "id305",
         "type" : "error"
      },
      "id1319" : {
         "type" : "chapter",
         "intro" : "<pre> Log::Report::Dispatcher::Perl\n   is a <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "level" : 1,
         "id" : "id1319",
         "name" : "INHERITANCE"
      },
      "id780-id1228" : {
         "call" : "$any-&gt;<b><a name=\"id780\">collectStack</a></b>(&nbsp;[$maxdepth]&nbsp;)",
         "id" : "id780-id1228",
         "name" : "collectStack",
         "extends" : "id780",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id780\">Log::Report::Dispatcher::collectStack()</a></p>",
         "type" : "ci_method"
      },
      "id1151-id375" : {
         "type" : "error",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1149\">Log::Report::Domain::readConfig()</a></p>",
         "extends" : "id1151",
         "name" : "unsupported context file type for $fn",
         "id" : "id1151-id375",
         "subroutine" : "id1149"
      },
      "id149" : {
         "name" : "__n",
         "id" : "id149",
         "call" : "<b><a name=\"id149\">__n</a></b>(&nbsp;$msgid, $plural_msgid, $count, PAIRS&nbsp;)",
         "type" : "function"
      },
      "id246" : {
         "call" : "$obj-&gt;<b><a name=\"id246\">fault</a></b>",
         "name" : "fault",
         "id" : "id246",
         "type" : "i_method"
      },
      "id760-id818" : {
         "extends" : "id760",
         "value" : "&lt;system locale&gt;",
         "name" : "locale",
         "id" : "id760-id818",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "type" : "default"
      },
      "id336" : {
         "id" : "id336",
         "name" : "textdomain_class",
         "value" : "<code>Log::Report::Template::Textdomain</code>",
         "type" : "default"
      },
      "id745-id441" : {
         "call" : "$obj-&gt;<b><a name=\"id745\">nrPlurals</a></b>",
         "id" : "id745-id441",
         "name" : "nrPlurals",
         "extends" : "id745",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id745\">Log::Report::Lexicon::Table::nrPlurals()</a></p>",
         "type" : "i_method"
      },
      "id1041" : {
         "type" : "function",
         "id" : "id1041",
         "name" : "__px",
         "call" : "<b><a name=\"id1041\">__px</a></b>(&nbsp;$msgctxt, $msgid, PAIRS&nbsp;)"
      },
      "id1254" : {
         "type" : "i_method",
         "intro" : "<p>Only when initiated with a FILENAME, the file will be closed.  In any\nother case, nothing will be done.</p>\n",
         "id" : "id1254",
         "name" : "close",
         "call" : "$obj-&gt;<b><a name=\"id1254\">close</a></b>"
      },
      "id994" : {
         "id" : "id994",
         "name" : "locale",
         "type" : "option",
         "params" : "$locale",
         "intro" : "<p>Use this specific <tt class=\"parameter\">$locale</tt>, in stead of the user's preference.</p>\n"
      },
      "id853" : {
         "params" : "$class|REGEX",
         "type" : "option",
         "intro" : "<p>Deprecated alternative for <code>tag</code>.</p>\n",
         "id" : "id853",
         "name" : "class"
      },
      "id386" : {
         "id" : "id386",
         "name" : "lexicon",
         "params" : "DIRECTORY",
         "type" : "option"
      },
      "id742-id569" : {
         "extends" : "id742",
         "name" : "there is no Plural-Forms field in the header, but needed.",
         "id" : "id742-id569",
         "subroutine" : "id741",
         "type" : "error",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id741\">Log::Report::Lexicon::Table::pluralIndex()</a></p>"
      },
      "id503" : {
         "type" : "chapter",
         "path" : "FUNCTIONS",
         "level" : 1,
         "id" : "id503",
         "name" : "FUNCTIONS",
         "subroutines" : [
            "id506",
            "id510",
            "id508",
            "id509",
            "id505",
            "id507",
            "id504"
         ]
      },
      "id191" : {
         "name" : "unknown reason $which in '$reasons'.",
         "id" : "id191",
         "subroutine" : "id187",
         "type" : "error"
      },
      "id761-id1082" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>",
         "params" : "'NORMAL'|'VERBOSE'|'ASSERT'|'DEBUG'|0..3",
         "type" : "option",
         "extends" : "id761",
         "name" : "mode",
         "id" : "id761-id1082"
      },
      "id700" : {
         "id" : "id700",
         "name" : "DESCRIPTION",
         "nest" : [
            "id701"
         ],
         "level" : 1,
         "type" : "chapter",
         "intro" : "<p>This module helps maintaining the POT files, updating the list of\nmessage-ids which are kept in them.  After initiation, the <a class=\"jump\" href=\"id708\">process()</a>\nmethod needs to be called with all files which changed since last processing\nand the existing PO files will get updated accordingly.</p>\n\n<p>If no translations exist yet, one <code>$lexicon/$domain.po</code> file will be\ncreated.  If you want to start a translation, copy <code>$lexicon/$domain.po</code>\nto <code>$lexicon/$domain/$lang.po</code> and edit that file.  You may use\n<code>poedit</code> to edit po-files.  There are many smart translation management\napplications which can hand po-files, for instance Pootle and Weblate.</p>\n\n<p>Do not forget to add the new po-file to your distribution (MANIFEST)</p>\n",
         "path" : "DESCRIPTION"
      },
      "id1218" : {
         "name" : "Processing",
         "id" : "id1218",
         "level" : 2,
         "subroutines" : [
            "id1219",
            "id1221",
            "id1223",
            "id1225",
            "id1226",
            "id1220"
         ],
         "type" : "section",
         "path" : "METHODS/Processing"
      },
      "id660" : {
         "type" : "error",
         "name" : "cannot detect charset in $fn.",
         "id" : "id660",
         "subroutine" : "id643"
      },
      "id764-id958" : {
         "id" : "id764-id958",
         "name" : "format_reason",
         "extends" : "id764",
         "value" : "'LOWERCASE'",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>"
      },
      "id294" : {
         "subroutines" : [
            "id295"
         ],
         "level" : 2,
         "id" : "id294",
         "name" : "Constructors",
         "path" : "METHODS/Constructors",
         "type" : "section"
      },
      "id620" : {
         "intro" : "<pre>  # internal use\n  my $msg = Log::Report::Message-&gt;new(\n    _msgid  =&gt; \"Hello World\\n\",\n    _domain =&gt; 'my-domain',\n  );\n\n  print Log::Report::Translator::POT\n     -&gt;new(lexicons =&gt; $dir)\n     -&gt;translate($msg, 'nl-BE');\n\n  # normal use (end-users view in the program's ::main)\n  textdomain 'my-domain',\n    translator =&gt;  Log::Report::Translator::POT-&gt;new(lexicon =&gt; $dir);\n  print __\"Hello World\\n\";\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter",
         "level" : 1,
         "id" : "id620",
         "name" : "SYNOPSIS"
      },
      "id103" : {
         "id" : "id103",
         "name" : "Modifier: //word, //\"string\", //'string'",
         "level" : 3,
         "intro" : "<p>[0.91] By default, an undefined value is shown as text '<code>undef</code>'.  Empty\nstrings are shown as nothing.  This may not be nice.  You may want to\nbe more specific when a value is missing.</p>\n<pre>\n  \"visitors: {count //0}\"\n  \"published: {date DT//'not yet'}\"\n  \"copyright: {year//2017 YEAR}\n</pre>\n\n<p>Modifiers will usually return <code>undef</code> when they are called with an\nundefined or empty value.  By the right order of '//', you may product\ndifferent kinds of output:</p>\n<pre>\n  \"price: {price//5 EUR}\"\n  \"price: {price EUR//unknown}\"\n</pre>\n",
         "path" : "DETAILS/Interpolation: Modifiers/Modifier: //word, //\"string\", //'string'",
         "type" : "subsection"
      },
      "id591" : {
         "chapters" : [
            "id592",
            "id593",
            "id594",
            "id595",
            "id606"
         ],
         "version" : "1.16",
         "distribution" : "Log-Report-Lexicon",
         "package" : "Log::Report::Lexicon::Index",
         "inheritance" : {},
         "id" : "id591",
         "name" : "Log::Report::Lexicon::Index",
         "title" : "search through available translation files",
         "is_pure_pod" : false
      },
      "id441" : {
         "id" : "id441",
         "name" : "Log::Report::Lexicon::POT",
         "title" : "manage PO files",
         "is_pure_pod" : false,
         "distribution" : "Log-Report-Lexicon",
         "package" : "Log::Report::Lexicon::POT",
         "inheritance" : {
            "extends" : [
               "Log::Report::Lexicon::Table"
            ]
         },
         "version" : "1.16",
         "chapters" : [
            "id442",
            "id1338",
            "id443",
            "id444",
            "id445"
         ]
      },
      "id1317" : {
         "name" : "INHERITANCE",
         "id" : "id1317",
         "level" : 1,
         "intro" : "<pre> Log::Report::Template\n   is a Template\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter"
      },
      "id946" : {
         "name" : "SYNOPSIS",
         "id" : "id946",
         "level" : 1,
         "type" : "chapter",
         "intro" : "<pre>  sub cb($$$)\n  {   my ($disp, $options, $reason, $message) = @_;\n      ...\n  }\n\n  dispatcher Log::Report::Dispatcher::Callback =&gt; 'cb',\n        callback =&gt; \\&amp;cb;\n\n  dispatcher CALLBACK =&gt; 'cb',   # same\n        callback =&gt; \\&amp;cb;\n</pre>\n",
         "path" : "SYNOPSIS"
      },
      "id619" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Translator::POT - translation based on POT files</p>\n",
         "name" : "NAME",
         "id" : "id619"
      },
      "id743-id637" : {
         "name" : "setupPluralAlgorithm",
         "id" : "id743-id637",
         "extends" : "id743",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id743\">Log::Report::Lexicon::Table::setupPluralAlgorithm()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id743\">setupPluralAlgorithm</a></b>",
         "diagnostics" : [
            "id744-id637"
         ]
      },
      "id492" : {
         "name" : "the only acceptable parameter is 'ACTIVE', not '$p'.",
         "id" : "id492",
         "subroutine" : "id491",
         "type" : "error"
      },
      "id542" : {
         "type" : "i_method",
         "intro" : "<p>Returns a STRING which contains the cleaned paragraph of translator's\ncomment.  If an argument is specified, it will replace the current\ncomment.</p>\n",
         "id" : "id542",
         "name" : "comment",
         "call" : "$obj-&gt;<b><a name=\"id542\">comment</a></b>(&nbsp;[@lines|\\@lines|$text]&nbsp;)"
      },
      "id1158-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1158\">Log::Report::Domain::translate()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id1158\">translate</a></b>(&nbsp;$message, $language&nbsp;)",
         "id" : "id1158-id375",
         "name" : "translate",
         "extends" : "id1158"
      },
      "id1137-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1137\">Log::Report::Domain::contextRules()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id1137\">contextRules</a></b>",
         "id" : "id1137-id375",
         "name" : "contextRules",
         "extends" : "id1137"
      },
      "id1322" : {
         "name" : "INHERITANCE",
         "id" : "id1322",
         "intro" : "<pre> MojoX::Log::Report\n   is a Mojo::Log\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter",
         "level" : 1
      },
      "id725" : {
         "chapters" : [
            "id726",
            "id1348",
            "id727",
            "id728",
            "id729"
         ],
         "version" : "1.16",
         "distribution" : "Log-Report-Lexicon",
         "inheritance" : {
            "extended_by" : [
               "Log::Report::Lexicon::MOTcompact",
               "Log::Report::Lexicon::POT",
               "Log::Report::Lexicon::POTcompact"
            ]
         },
         "package" : "Log::Report::Lexicon::Table",
         "name" : "Log::Report::Lexicon::Table",
         "id" : "id725",
         "is_pure_pod" : false,
         "title" : "generic interface to translation tables"
      },
      "id130" : {
         "name" : "odd length parameter list with '$msg'",
         "id" : "id130",
         "subroutine" : "id124",
         "type" : "error"
      },
      "id793-id958" : {
         "name" : "call",
         "id" : "id793-id958",
         "extends" : "id793",
         "value" : "&lt;required&gt;",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>",
         "type" : "default"
      },
      "id617" : {
         "id" : "id617",
         "name" : "translate",
         "call" : "$obj-&gt;<b><a name=\"id617\">translate</a></b>(&nbsp;$msg, $lang, $ctxt&nbsp;)",
         "type" : "i_method"
      },
      "id223" : {
         "intro" : "<p>Get a suitable bootstrap context color for the message. This can be\nused as per the SYNOPSIS.</p>\n\n<p>CSS class <code>success</code> is used for <a class=\"jump\" href=\"id250\">Dancer2::Plugin::LogReport::success()</a>\nmessages, <code>info</code> colors are used for messages <code>notice</code> and below,\n<code>warning</code> is used for <code>warning</code> and <code>mistake</code>, <code>danger</code> is used for\nall other messages.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id223\">bootstrap_color</a></b>",
         "name" : "bootstrap_color",
         "id" : "id223"
      },
      "id1220" : {
         "call" : "$obj-&gt;<b><a name=\"id1220\">inClass</a></b>(&nbsp;$tag|Regexp&nbsp;)",
         "id" : "id1220",
         "name" : "inClass",
         "intro" : "<p>Deprecated name for <a class=\"jump\" href=\"id1219\">taggedWith()</a>.</p>\n",
         "type" : "i_method"
      },
      "id180" : {
         "name" : "interpolate",
         "id" : "id180",
         "call" : "$obj-&gt;<b><a name=\"id180\">interpolate</a></b>(&nbsp;$msgid, [$args]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Interpolate the keys used in <tt class=\"parameter\">$msgid</tt> from the values in <tt class=\"parameter\">$args</tt>.\nThis is handled by the formatter, by default a <a class=\"jump\" href=\"id47\">String::Print</a>\ninstance.</p>\n"
      },
      "id1048" : {
         "type" : "option",
         "params" : "LEVEL",
         "intro" : "<p>This sets the default mode for all created dispatchers.  You can\nalso selectively change the output mode, like</p><pre>\n  dispatcher PERL =&gt; 'default', mode =&gt; 3\n</pre>\n",
         "id" : "id1048",
         "name" : "mode"
      },
      "id263" : {
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/In use/Email alerts of exceptions",
         "intro" : "<p>If you have an unexpected exception in your production application,\nthen you probably want to be notified about it. One way to do so is\nconfigure rsyslog to send emails of messages at the panic level. Use\nthe following configuration to do so:</p>\n<pre>\n  # Normal logging from LOCAL0\n  local0.*                        -/var/log/myapp.log\n\n  # Load the mail module\n  $ModLoad ommail\n  # Configure sender, receiver and mail server\n  $ActionMailSMTPServer localhost\n  $ActionMailFrom root\n  $ActionMailTo root\n  # Set up an email template\n  $template mailSubject,\"Critical error on %hostname%\"\n  $template mailBody,\"RSYSLOG Alert\\r\\nmsg='%msg%'\\r\\nseverity='%syslogseverity-text%'\"\n  $ActionMailSubject mailSubject\n  # Send an email no more frequently than every minute\n  $ActionExecOnlyOnceEveryInterval 60\n  # Configure the level of message to notify via email\n  if $syslogfacility-text == 'local0' and $syslogseverity &lt; 3 then :ommail:;mailBody\n  $ActionExecOnlyOnceEveryInterval 0\n</pre>\n\n<p>With the above configuration, you will only be emailed of severe errors, but can\nview the full log information in /var/log/myapp.log</p>\n\n<p>=encoding UTF-8</p>\n",
         "id" : "id263",
         "name" : "Email alerts of exceptions"
      },
      "id49" : {
         "id" : "id49",
         "name" : "SYNOPSIS",
         "level" : 1,
         "intro" : "<pre>  ### Functional interface\n\n  use String::Print;           # simpelest way\n  use String::Print qw/printi printp/, %config;\n\n  printi 'age {years}', years =&gt; 12;   # to STDOUT\n  my $s = sprinti 'age {years}', years =&gt; 12;  # in variable\n\n  # interpolation of arrays and hashes (serializers)\n  printi 'price-list: {prices}', prices =&gt; \\@p, _join =&gt; \"+\";\n  printi 'dump: {c}', c =&gt; \\%data;\n\n  # same with positional parameters\n  printp 'age %d\", 12;\n  printp 'price-list: %.2f', \\@prices;\n  printp 'dump: %s', \\%settings;\n  my $s = sprintp 'age %d\", 12;\n\n  # modifiers\n  printi 'price: {price%.2f}', price =&gt; 3.14 * EURO;\n\n  # [0.91] more complex interpolation names\n  printi 'filename: {c.filename}', c =&gt; \\%data;\n  printi 'username: {user.name}', user =&gt; $user_object;\n  printi 'price: {product.price €}', product =&gt; $db-&gt;product(3);\n\n  ### Object Oriented interface\n\n  use String::Print 'oo', %config;      # import no functions\n  my $f = String::Print-&gt;new(%config);\n  $f-&gt;printi('age {years}', years =&gt; 12);\n  $f-&gt;printp('age %d', 12);\n  my $s = $f-&gt;sprinti('age {y}', y =&gt; 12);\n  my $s = $f-&gt;sprintp('age %d', 12);\n\n  ### via Log::Report's __* functions (optional translation)\n\n  use Log::Report;             # or Log::Report::Optional\n  print __x\"age {years}\", years =&gt; 12;\n\n  ### via Log::Report::Template (Template Toolkit extension)\n\n  [% SET name = 'John Doe' %]\n  [% loc(\"Dear {name},\") %]    # includes translation\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter"
      },
      "id783" : {
         "id" : "id783",
         "name" : "skipStack",
         "call" : "$obj-&gt;<b><a name=\"id783\">skipStack</a></b>",
         "type" : "i_method",
         "intro" : "<p>[1.13] Returns the number of nestings in the stack which should be skipped\nto get outside the <a class=\"jump\" href=\"id979\">Log::Report</a> (and related) modules.  The end-user\ndoes not want to see those internals in stack-traces.</p>\n"
      },
      "id54" : {
         "id" : "id54",
         "name" : "modifiers",
         "intro" : "<p>Add one or more modifier handlers to power of the formatter.  They will\nget preference over the predefined modifiers, but lower than the modifiers\npassed to <code>print[ip]</code> itself.</p>\n",
         "params" : "ARRAY",
         "type" : "option"
      },
      "id580" : {
         "subroutine" : "id575",
         "id" : "id580",
         "name" : "cannot read from file $fn (unknown charset): $!",
         "type" : "fault"
      },
      "id530" : {
         "intro" : "<p>Automatically added comments.\nSee <a class=\"jump\" href=\"id545\">addAutomatic()</a>.</p>\n",
         "type" : "option",
         "params" : "\\@text",
         "name" : "automatic",
         "id" : "id530"
      },
      "id345" : {
         "type" : "error",
         "id" : "id345",
         "name" : "translation function '$func' already in use by textdomain '$name'",
         "subroutine" : "id342"
      },
      "id733" : {
         "id" : "id733",
         "name" : "Managing PO's",
         "level" : 2,
         "nest" : [
            "id734",
            "id737"
         ],
         "path" : "METHODS/Managing PO's",
         "type" : "section"
      },
      "id440-id697" : {
         "id" : "id440-id697",
         "name" : "no context tags allowed in plural `$msgid'",
         "extends" : "id440",
         "subroutine" : "id439",
         "type" : "error",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id439\">Log::Report::Extract::store()</a></p>"
      },
      "id605" : {
         "type" : "example",
         "intro" : "<pre>  my @l = $index-&gt;list('my-domain');\n  my @l = $index-&gt;list('my-domain', 'po');\n  my @l = $index-&gt;list('my-domain', qr/^readme/i);\n</pre>\n",
         "id" : "id605"
      },
      "id235" : {
         "intro" : "<pre>  fatal_handler sub {\n    my ($dsl, $msg, $reason) = @_;\n    return if $dsl-&gt;app-&gt;request-&gt;uri !~ m!^/api/!;\n    status $reason eq 'PANIC' ? 'Internal Server Error' : 'Bad Request';\n    $dsl-&gt;send_as(JSON =&gt; {\n        error             =&gt; 1,\n        error_description =&gt; $msg-&gt;toString,\n    }, {\n        content_type =&gt; 'application/json; charset=UTF-8',\n    });\n  };\n</pre>\n",
         "type" : "example",
         "name" : "Error handler based on URL (e.g. API)\n",
         "id" : "id235"
      },
      "id765" : {
         "id" : "id765",
         "name" : "charset",
         "intro" : "<p>Convert the messages in the specified character-set (codeset).  By\ndefault, no conversion will take place, because the right choice cannot\nbe determined automatically.</p>\n",
         "type" : "option",
         "params" : "CHARSET"
      },
      "id1236" : {
         "type" : "default",
         "value" : "&lt;required&gt;",
         "id" : "id1236",
         "name" : "to"
      },
      "id285" : {
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id285\">log</a></b>(&nbsp;$level, $params&nbsp;)",
         "id" : "id285",
         "name" : "log"
      },
      "id716" : {
         "type" : "error",
         "subroutine" : "id708",
         "id" : "id716",
         "name" : "count missing in $function in line $line."
      },
      "id618" : {
         "id" : "id618",
         "name" : "Log::Report::Translator::POT",
         "is_pure_pod" : false,
         "title" : "translation based on POT files",
         "distribution" : "Log-Report-Lexicon",
         "inheritance" : {
            "extends" : [
               "Log::Report::Translator"
            ]
         },
         "package" : "Log::Report::Translator::POT",
         "version" : "1.16",
         "chapters" : [
            "id619",
            "id1334",
            "id620",
            "id621",
            "id622"
         ]
      },
      "id142" : {
         "call" : "<b><a name=\"id142\">alert</a></b>(&nbsp;$message&nbsp;)",
         "name" : "alert",
         "id" : "id142",
         "type" : "function"
      },
      "id1343" : {
         "type" : "chapter",
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Dispatcher::LogDispatch\n   is a <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>\n</pre>\n",
         "level" : 1,
         "name" : "INHERITANCE",
         "id" : "id1343"
      },
      "id923" : {
         "intro" : "<pre>  print $msg-&gt;toHTML('NL');\n</pre>\n",
         "type" : "example",
         "id" : "id923"
      },
      "id1015" : {
         "name" : "warning",
         "id" : "id1015",
         "call" : "<b><a name=\"id1015\">warning</a></b>(&nbsp;$message&nbsp;)",
         "type" : "function",
         "intro" : "<p>Short for <code>report WARNING =&gt; $message</code></p>\n"
      },
      "id147" : {
         "call" : "<b><a name=\"id147\">__x</a></b>(&nbsp;$msgid, PAIRS&nbsp;)",
         "name" : "__x",
         "id" : "id147",
         "diagnostics" : [
            "id148"
         ],
         "type" : "function"
      },
      "id811" : {
         "level" : 1,
         "intro" : "<pre>  # use internally only\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter",
         "name" : "SYNOPSIS",
         "id" : "id811"
      },
      "id1280" : {
         "id" : "id1280",
         "name" : "Processing the message",
         "level" : 2,
         "type" : "section",
         "nest" : [
            "id1281",
            "id1282"
         ],
         "path" : "DETAILS/Processing the message"
      },
      "id61" : {
         "value" : "&lt;warning&gt;",
         "id" : "id61",
         "name" : "missing_key",
         "type" : "default"
      },
      "id1139-id375" : {
         "params" : "Log::Report::Translator|\\%config",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1139\">Log::Report::Domain::configure(translator)</a></p>",
         "extends" : "id1139",
         "name" : "translator",
         "id" : "id1139-id375"
      },
      "id438-id697" : {
         "subroutine" : "id437",
         "extends" : "id438",
         "id" : "id438-id697",
         "name" : "starting new textdomain $domain, template in $filename",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id437\">Log::Report::Extract::write()</a></p>",
         "type" : "info"
      },
      "id498" : {
         "call" : "$obj-&gt;<b><a name=\"id498\">stats</a></b>",
         "id" : "id498",
         "name" : "stats",
         "intro" : "<p>Returns a HASH with some statistics about this POT table.</p>\n",
         "type" : "i_method"
      },
      "id351" : {
         "name" : "write_tables",
         "id" : "id351",
         "params" : "BOOLEAN",
         "type" : "option",
         "intro" : "<p>When <code>false</code>, the po-files will not get updated.</p>\n"
      },
      "id475" : {
         "intro" : "<p>When you pass an open <tt class=\"parameter\">$fh</tt>, you are yourself responsible that\nthe correct character-encoding (binmode) is set.  When the write\nfollowed a <a class=\"jump\" href=\"id467\">read()</a> or the filename was explicitly set with <a class=\"jump\" href=\"id484\">filename()</a>,\nthen you may omit the first parameter.</p>\n",
         "type" : "i_method",
         "options" : [
            [
               "id476",
               "id477"
            ]
         ],
         "call" : "$obj-&gt;<b><a name=\"id475\">write</a></b>(&nbsp;[$filename|$fh], %options&nbsp;)",
         "diagnostics" : [
            "id478",
            "id479",
            "id480"
         ],
         "id" : "id475",
         "name" : "write"
      },
      "id548" : {
         "id" : "id548",
         "name" : "removeReferencesTo",
         "call" : "$obj-&gt;<b><a name=\"id548\">removeReferencesTo</a></b>(&nbsp;$filename&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Remove all the references to the indicate <tt class=\"parameter\">$filename</tt> from the list.  Returns\nthe number of refs left.</p>\n"
      },
      "id791-id1228" : {
         "name" : "linenr",
         "id" : "id791-id1228",
         "value" : "&lt;required&gt;",
         "extends" : "id791",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>"
      },
      "id1270" : {
         "path" : "DETAILS/Processing the message/Addition information",
         "type" : "subsection",
         "id" : "id1270",
         "name" : "Addition information",
         "level" : 3
      },
      "id935" : {
         "intro" : "<pre>  # This tries to display the $param as useful and safe as possible,\n  # where you have totally no idea what its contents is.\n  error __x\"illegal parameter {p UNKNOWN}.\", p =&gt; $param;\n  # ---&gt; \"illegal parameter 'accidentally passed text'.\"\n  # ---&gt; \"illegal parameter Unexpected::Object::Type.\"\n\n  # fault() adds \": $!\", with $! translated when configured.\n  open my($fh), \"&lt;:encoding(utf-8)\", $filename\n  \t or fault __x\"cannot read {file}\", file =&gt; $filename;\n\n  # Auto-abbreviation\n  trace __x\"first lines: '{text EL}'\\n\", text =&gt; $t;\n  # ---&gt; \"first lines: 'This text is long, we sho⋯'.\\n\"\n\n  trace __x\"first lines: {text CHOP}\\n\", text =&gt; $t;\n  # ---&gt; \"This text is long, we [+3712 chars]\\n\"\n\n  info __x\"file {file} size {size BYTES}\\n\", file =&gt; $fn, size =&gt; -s $fn;\n  # --&gt; \"/etc/passwd size 23kB\\n\"\n\n  # HASH or object values\n  print __x\"Name: {user.first} {user.surname}\\n\", user =&gt; $login;\n</pre>\n\n<p>There are more nice standard interpolation modifiers, and you can add\nyour own.  Besides, you can add serializers which determine how\nobjects are inlined.</p>\n",
         "type" : "example",
         "id" : "id935",
         "name" : "using format features\n"
      },
      "id985" : {
         "call" : "<b><a name=\"id985\">report</a></b>(&nbsp;[\\%options], $reason, $message|&lt;$text,%params>,&nbsp;)",
         "examples" : [
            "id998"
         ],
         "diagnostics" : [
            "id999",
            "id1000",
            "id1001",
            "id1002"
         ],
         "intro" : "<p>The <code>report</code> function is sending (for some <tt class=\"parameter\">$reason</tt>) a <tt class=\"parameter\">$message</tt> to be\ndisplayed or logged (by a `dispatcher').  This function is the core\nfor <a class=\"jump\" href=\"id1017\">error()</a>, <a class=\"jump\" href=\"id1013\">info()</a> etc functions, which are nicer names for this\nexception throwing: better use those short names.</p>\n\n<p>The optional <tt class=\"parameter\">%options</tt> are listed below.  Quite differently from other\nfunctions and methods, they have to be passed in a HASH as first parameter.</p>\n\n<p>The <tt class=\"parameter\">$reason</tt> is a string like 'ERROR' (for function <code>error()</code>).\nThe <tt class=\"parameter\">$message</tt> is a <a class=\"jump\" href=\"id856\">Log::Report::Message</a> object (which is created with\nthe special translation syntax like <a class=\"jump\" href=\"id1025\">__x()</a>).</p>\n\n<p>The message may also be a plain piece of <tt class=\"parameter\">$text</tt>, or a\n<a class=\"jump\" href=\"id1194\">Log::Report::Exception</a> object. The <tt class=\"parameter\">%params</tt> can be used to influence\nthe dispatchers, like real message objects can.</p>\n\n<p>This function returns the LIST of dispatchers which accepted the <tt class=\"parameter\">$message</tt>.\nWhen empty, no back-end has accepted it so the <tt class=\"parameter\">$message</tt> was \"lost\".\nEven when no back-end needs the message, the program will still exit\nwhen there is a <tt class=\"parameter\">$reason</tt> to <code>die()</code>.</p>\n",
         "type" : "function",
         "name" : "report",
         "id" : "id985",
         "options" : [
            [
               "id988",
               "id989"
            ],
            [
               "id996",
               "id997"
            ],
            [
               "id994",
               "id995"
            ],
            [
               "id992",
               "id993"
            ],
            [
               "id990",
               "id991"
            ],
            [
               "id986",
               "id987"
            ]
         ]
      },
      "id148" : {
         "subroutine" : "id147",
         "id" : "id148",
         "name" : "even length parameter list for __x at $where",
         "type" : "error"
      },
      "id1004" : {
         "id" : "id1004",
         "name" : "play with dispatchers\n",
         "intro" : "<pre>  dispatcher Log::Dispatcher::File =&gt; mylog =&gt;,\n    accept   =&gt; 'MISTAKE-',    # for wrapper\n    locale   =&gt; 'pt_BR',       # other language\n    filename =&gt; 'logfile';     # for back-end\n\n  dispatcher close =&gt; 'mylog';  # cleanup\n  my $obj = dispatcher find =&gt; 'mylog';\n  my @obj = dispatcher 'list';\n  dispatcher disable =&gt; 'syslog';\n  dispatcher enable =&gt; 'mylog', 'syslog'; # more at a time\n  dispatcher mode =&gt; 'DEBUG', 'mylog';\n  dispatcher mode =&gt; 'DEBUG', 'ALL';\n  my $catcher = dispatcher 'active-try';\n  dispatcher 'do-not-reopen';\n\n  my @need_info = dispatcher needs =&gt; 'INFO';\n  if(dispatcher needs =&gt; 'INFO') ...      # anyone needs INFO\n\n  # Getopt::Long integration: see Log::Report::Dispatcher::mode()\n  dispatcher PERL =&gt; 'default', mode =&gt; 'DEBUG', accept =&gt; 'ALL'\n     if $debug;\n</pre>\n",
         "type" : "example"
      },
      "id612" : {
         "name" : "NAME",
         "id" : "id612",
         "level" : 1,
         "path" : "NAME",
         "intro" : "<p>Log::Report::Translator::Gettext - the GNU gettext infrastructure</p>\n",
         "type" : "chapter"
      },
      "id1211" : {
         "call" : "$obj-&gt;<b><a name=\"id1211\">report_opts</a></b>",
         "name" : "report_opts",
         "id" : "id1211",
         "type" : "i_method"
      },
      "id1060" : {
         "type" : "function",
         "intro" : "<p>[1.00] Without CONFIGuration, this returns the <a class=\"jump\" href=\"id1127\">Log::Report::Domain</a> object\nwhich administers the <tt class=\"parameter\">$domain</tt>, by default the domain effective in the scope\nof the package.</p>\n\n<p>A very special case is \"<tt class=\"parameter\">DELETE</tt>\", which will remove the domain\nconfiguration. [1.20] \"<tt class=\"parameter\">EXISTS</tt>\" will check for existence: when it exists,\nit will be returned, but a domain will not be automagically created.</p>\n\n<p>[1.20] You may also pass a pre-configured domain.</p>\n",
         "id" : "id1060",
         "name" : "textdomain",
         "call" : "<b><a name=\"id1060\">textdomain</a></b>(&nbsp;&lt;[$name],$config&gt;|&lt;$name, 'DELETE'|'EXISTS'>|$domain&nbsp;)"
      },
      "id963" : {
         "type" : "section",
         "path" : "DESCRIPTION/Categories",
         "intro" : "<p><code>Log::Report</code> uses text-domains for translation tables.  These are\nalso used as categories for the Log4perl infrastructure.  So, typically\nevery module start with:</p>\n<pre>\n  use Log::Report 'my-text-domain', %more_options;\n</pre>\n\n<p>Now, if there is a logger inside the log4perl configuration which is\nnamed 'my-text-domain', that will be used.  Otherwise, the name of the\ndispatcher is used to select the logger.</p>\n",
         "level" : 2,
         "nest" : [
            "id964"
         ],
         "id" : "id963",
         "name" : "Categories"
      },
      "id437-id697" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id437\">Log::Report::Extract::write()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id437\">write</a></b>(&nbsp;[$domain], %options&nbsp;)",
         "diagnostics" : [
            "id438-id697"
         ],
         "id" : "id437-id697",
         "name" : "write",
         "extends" : "id437"
      },
      "id497" : {
         "id" : "id497",
         "name" : "keepReferencesTo",
         "call" : "$obj-&gt;<b><a name=\"id497\">keepReferencesTo</a></b>(&nbsp;$table&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Remove all references which are not found as key in the hash <tt class=\"parameter\">$table</tt>.\nReturns the number of references left.</p>\n"
      },
      "id547" : {
         "call" : "$obj-&gt;<b><a name=\"id547\">addReferences</a></b>(&nbsp;$locations|@locations|\\@locations&nbsp;)",
         "id" : "id547",
         "name" : "addReferences",
         "intro" : "<p>A single scalar contains a blank separated list of <tt class=\"parameter\">@locations</tt>.  The LIST\nand ARRAY contain separate <tt class=\"parameter\">@locations</tt>.  A LOCATION is of the form\n<code>filename:linenumber</code>.  Returns the internal HASH with references.</p>\n",
         "type" : "i_method"
      },
      "id761-id1174" : {
         "extends" : "id761",
         "name" : "mode",
         "id" : "id761-id1174",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>",
         "type" : "option",
         "params" : "'NORMAL'|'VERBOSE'|'ASSERT'|'DEBUG'|0..3"
      },
      "id873" : {
         "name" : "_plural",
         "id" : "id873",
         "params" : "$msgid",
         "type" : "option",
         "intro" : "<p>Can be used together with <tt class=\"parameter\">_count</tt>.  This plural form of the <tt class=\"parameter\">_msgid</tt>\ntext is used to simplify the work of translators, and as fallback when\nno translation is possible: therefore, this can best resemble an\nEnglish message.</p>\n\n<p>White-space at the beginning and end of the string are stripped off.\nThe white-space provided by the <tt class=\"parameter\">_msgid</tt> will be used.</p>\n"
      },
      "id939" : {
         "name" : "Avoiding repetative translations",
         "id" : "id939",
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/Automatic parameters/Avoiding repetative translations",
         "intro" : "<p>This way of translating is somewhat expensive, because an object to\nhandle the <code>Log::Report::__x()</code> is created each time.</p>\n<pre>\n  for my $i (1..100_000)\n  {   print __x \"Hello World {i}\\n\", i =&gt; $i;\n  }\n</pre>\n\n<p>The suggestion that Locale::TextDomain makes to improve performance,\nis to get the translation outside the loop, which only works without\ninterpolation:</p>\n<pre>\n  use Locale::TextDomain;\n  my $i = 42;\n  my $s = __x(\"Hello World {i}\\n\", i =&gt; $i);\n  foreach $i (1..100_000)\n  {   print $s;\n  }\n</pre>\n\n<p><b>Oops,</b> not what you mean because the first value of <code>$i</code> is captured\nin the initial message object.  With <a class=\"jump\" href=\"id979\">Log::Report</a>, you can do it (except\nwhen you use contexts)</p>\n<pre>\n  use Log::Report;\n  my $i;\n  my $s = __x(\"Hello World {i}\\n\", i =&gt; \\$i);\n  foreach $i (1..100_000)\n  {   print $s;\n  }\n</pre>\n\n<p>Mind you not to write: <code>for my $i</code> in above case!!!!</p>\n\n<p>You can also write an incomplete translation:</p>\n<pre>\n  use Log::Report;\n  my $s = __x \"Hello World {i}\\n\";\n  foreach my $i (1..100_000)\n  {   print $s-&gt;(i =&gt; $i);\n  }\n</pre>\n\n<p>In either case, the translation will be looked-up only once.</p>\n"
      },
      "id989" : {
         "name" : "errno",
         "id" : "id989",
         "value" : "<code>$!</code> or <code>1</code>",
         "type" : "default"
      },
      "id303" : {
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id303\">pattern</a></b>",
         "name" : "pattern",
         "id" : "id303"
      },
      "id864" : {
         "name" : "METHODS",
         "id" : "id864",
         "level" : 1,
         "nest" : [
            "id865",
            "id903",
            "id918"
         ],
         "path" : "METHODS",
         "type" : "chapter"
      },
      "id1284" : {
         "id" : "id1284",
         "name" : "Available back-ends",
         "level" : 2,
         "path" : "DETAILS/Available back-ends",
         "type" : "section"
      },
      "id643" : {
         "diagnostics" : [
            "id646",
            "id647",
            "id648",
            "id649",
            "id650",
            "id651",
            "id652",
            "id653",
            "id654",
            "id655",
            "id656",
            "id657",
            "id658",
            "id659",
            "id660",
            "id661"
         ],
         "name" : "read",
         "id" : "id643",
         "call" : "$class-&gt;<b><a name=\"id643\">read</a></b>(&nbsp;$filename, %options&nbsp;)",
         "type" : "c_method",
         "options" : [
            [
               "id644",
               "id645"
            ]
         ],
         "intro" : "<p>Read the MOT table information from <tt class=\"parameter\">$filename</tt>.</p>\n"
      },
      "id1141" : {
         "name" : "native_language",
         "id" : "id1141",
         "type" : "option",
         "params" : "CODESET",
         "intro" : "<p>This is the language which you have used to write the translatable and\nthe non-translatable messages in.  In case no translation is needed,\nyou still wish the system error messages to be in the same language\nas the report.  Of course, each textdomain can define its own.</p>\n"
      },
      "id800-id958" : {
         "params" : "INTEGER",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "extends" : "id800",
         "id" : "id800-id958",
         "name" : "abstract"
      },
      "id457" : {
         "type" : "default",
         "name" : "plural_alg",
         "id" : "id457",
         "value" : "<code>n!=1</code>"
      },
      "id974" : {
         "type" : "section",
         "path" : "METHODS/Attributes",
         "level" : 2,
         "id" : "id974",
         "name" : "Attributes",
         "subroutines" : [
            "id771-id958",
            "id774-id958",
            "id775-id958",
            "id772-id958",
            "id773-id958",
            "id975"
         ]
      },
      "id484" : {
         "call" : "$obj-&gt;<b><a name=\"id484\">filename</a></b>",
         "id" : "id484",
         "name" : "filename",
         "intro" : "<p>Returns the filename, as derived from <a class=\"jump\" href=\"id467\">read()</a> or specified during\ninitiation with <a class=\"jump\" href=\"id464\">new(filename)</a>.</p>\n",
         "type" : "i_method"
      },
      "id824" : {
         "type" : "overload",
         "intro" : "<p>When <code>$@</code> is used the traditional way, it is checked to have\na string content.  In this case, stringify into the fatal error\nor nothing.</p>\n",
         "name" : "\"\"",
         "id" : "id824",
         "call" : "overload <b><a name=\"id824\">\"\"</a></b>; stringify"
      },
      "id1064" : {
         "level" : 1,
         "name" : "DETAILS",
         "id" : "id1064",
         "path" : "DETAILS",
         "nest" : [
            "id1065",
            "id1068",
            "id1076",
            "id1078"
         ],
         "type" : "chapter"
      },
      "id434" : {
         "intro" : "<p>Keep the information about these filename, either specified as ARRAY of\nnames, or a HASH where the keys are the named.</p>\n",
         "type" : "option",
         "params" : "HASH|ARRAY",
         "name" : "keep",
         "id" : "id434"
      },
      "id1000" : {
         "type" : "error",
         "subroutine" : "id985",
         "name" : "odd length parameter list with '$msg'.",
         "id" : "id1000"
      },
      "id391" : {
         "type" : "default",
         "value" : "<code>undef</code>",
         "id" : "id391",
         "name" : "lang"
      },
      "id479" : {
         "subroutine" : "id475",
         "name" : "no filename or file-handle specified for PO.",
         "id" : "id479",
         "type" : "error"
      },
      "id458" : {
         "id" : "id458",
         "name" : "plural_forms",
         "type" : "option",
         "params" : "RULE",
         "intro" : "<p>[0.992] When this option is used, it overrules <tt class=\"parameter\">nr_plurals</tt> and\n<tt class=\"parameter\">plural_alg</tt>.  The RULE should be a full \"Plural-Forms\" field.</p>\n"
      },
      "id745-id569" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id745\">Log::Report::Lexicon::Table::nrPlurals()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id745\">nrPlurals</a></b>",
         "extends" : "id745",
         "id" : "id745-id569",
         "name" : "nrPlurals"
      },
      "id1274" : {
         "id" : "id1274",
         "name" : "Translation",
         "level" : 3,
         "subroutines" : [
            "id668",
            "id667"
         ],
         "type" : "subsection",
         "path" : "METHODS/Managing PO's/Translation"
      },
      "id1224" : {
         "id" : "id1224",
         "name" : "printing exceptions\n",
         "type" : "example",
         "intro" : "<pre>  print $_-&gt;toString for $@-&gt;exceptions;\n  print $_ for $@-&gt;exceptions;   # via overloading\n</pre>\n"
      },
      "id113" : {
         "id" : "id113",
         "name" : "String::Print compared to other modules on CPAN",
         "level" : 2,
         "intro" : "<p>There are a quite a number of modules on CPAN which extend the functionality\nof <code>printf()</code>.  To name a few:\n<a href=\"https://metacpan.org/dist/String-Format\" target=\"_blank\">String::Format</a>,\n<a href=\"https://metacpan.org/dist/String-Errf\" target=\"_blank\">String::Errf</a>,\n<a href=\"https://metacpan.org/dist/String-Formatter\" target=\"_blank\">String::Formatter</a>,\n<a href=\"https://metacpan.org/dist/Text-Sprintf-Named\" target=\"_blank\">Text::Sprintf::Named</a>,\n<a href=\"https://metacpan.org/dist/Acme-StringFormat\" target=\"_blank\">Acme::StringFormat</a>,\n<a href=\"https://metacpan.org/dist/Text-sprintfn\" target=\"_blank\">Text::sprintf</a>,\n<a href=\"https://metacpan.org/dist/Log-Sprintf\" target=\"_blank\">Log::Sprintf</a>, and\n<a href=\"https://metacpan.org/dist/String-Sprintf\" target=\"_blank\">String::Sprintf</a>.\nThey are all slightly different.</p>\n\n<p>When the <code>String::Print</code> module was created, none of the modules\nmentioned above handled unicode correctly.  Global configuration\nof serializers and modifiers is also usually not possible, sometimes\nprovided per explicit function call.  Only <code>String::Print</code> cleanly\nseparates the roles of serializers, modifiers, and conversions.</p>\n\n<p><code>String::Print</code> is nicely integrated with <a class=\"jump\" href=\"id979\">Log::Report</a>.</p>\n",
         "path" : "DETAILS/String::Print compared to other modules on CPAN",
         "type" : "section"
      },
      "id742-id441" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id741\">Log::Report::Lexicon::Table::pluralIndex()</a></p>",
         "type" : "error",
         "subroutine" : "id741",
         "id" : "id742-id441",
         "name" : "there is no Plural-Forms field in the header, but needed.",
         "extends" : "id742"
      },
      "id349" : {
         "type" : "option",
         "params" : "CHARSET",
         "name" : "charset",
         "id" : "id349"
      },
      "id274" : {
         "type" : "example",
         "intro" : "<pre>  my $lexicon = $directory;  # f.i. $directory/&lt;domain>/nl_NL.utf-8.po\n  my $tables  = Log::Report::Translator::POT-&gt;new(lexicon =&gt; $lexicon);\n  (engine 'template')-&gt;addTextdomain(name =&gt; 'mydomain')-&gt;configure(translator =&gt; $tables);\n</pre>\n",
         "id" : "id274"
      },
      "id571" : {
         "level" : 1,
         "intro" : "<pre>  # using a PO table efficiently\n  my $pot = Log::Report::Lexicon::POTcompact-&gt;read('po/nl.po')\n     or die;\n\n  my $header = $pot-&gt;msgid('');\n  print $pot-&gt;msgstr('msgid', 3);\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter",
         "id" : "id571",
         "name" : "SYNOPSIS"
      },
      "id609" : {
         "type" : "section",
         "intro" : "<p>The exact gettext defined format of the locale is</p><pre>\n  language[_territory[.codeset]][@modifier]\n<p></pre>\nThe modifier will be used in above directory search, but only if provided\nexplicitly.</p>\n\n<p>The manual <code>info gettext</code> determines the rules.  During the search,\ncomponents of the locale get stripped, in the following order:</p>\n<ol>\n<li>codeset<br />\n<li>normalized codeset<br />\n<li>territory<br />\n<li>modifier<br />\n</ol>\n\n<p>The normalized codeset (character-set name) is derived by</p>\n<ol>\n<li>Remove all characters beside numbers and letters.<br />\n<li>Fold letters to lowercase.<br />\n<li>If the same only contains digits prepend the string \"iso\".<br />\n</ol>\n\n<p>To speed-up the search for the right table, the full directory tree\nwill be indexed only once when needed the first time.  The content of\nall defined lexicon directories will get merged into one tree.</p>\n",
         "path" : "DETAILS/Locale search",
         "level" : 2,
         "name" : "Locale search",
         "id" : "id609"
      },
      "id136" : {
         "id" : "id136",
         "name" : "info",
         "call" : "<b><a name=\"id136\">info</a></b>(&nbsp;$message&nbsp;)",
         "type" : "function"
      },
      "id239" : {
         "type" : "i_method",
         "name" : "trace",
         "id" : "id239",
         "call" : "$obj-&gt;<b><a name=\"id239\">trace</a></b>"
      },
      "id186" : {
         "path" : "FUNCTIONS/Reasons",
         "type" : "section",
         "subroutines" : [
            "id194",
            "id193",
            "id187",
            "id192"
         ],
         "name" : "Reasons",
         "id" : "id186",
         "level" : 2
      },
      "id289" : {
         "distribution" : "Log-Report-Template",
         "inheritance" : {
            "extends" : [
               "Log::Report::Extract"
            ]
         },
         "package" : "Log::Report::Template::Extract",
         "name" : "Log::Report::Template::Extract",
         "id" : "id289",
         "is_pure_pod" : false,
         "title" : "collect translatable strings from template files",
         "chapters" : [
            "id290",
            "id1336",
            "id291",
            "id292",
            "id293",
            "id316"
         ],
         "version" : "1.05"
      },
      "id769" : {
         "type" : "error",
         "name" : "Perl does not support charset $cs",
         "id" : "id769",
         "subroutine" : "id756"
      },
      "id586" : {
         "type" : "i_method",
         "intro" : "<p>[1.09] Returns the character-set of the strings found in the file.  They will\nget translated into utf8 before being used in Perl.</p>\n",
         "name" : "originalCharset",
         "id" : "id586",
         "call" : "$obj-&gt;<b><a name=\"id586\">originalCharset</a></b>"
      },
      "id452" : {
         "id" : "id452",
         "name" : "version",
         "type" : "option",
         "params" : "STRING"
      },
      "id536" : {
         "id" : "id536",
         "name" : "no msgid defined for PO.",
         "subroutine" : "id517",
         "type" : "error"
      },
      "id729" : {
         "path" : "METHODS",
         "nest" : [
            "id730",
            "id732",
            "id733"
         ],
         "type" : "chapter",
         "level" : 1,
         "id" : "id729",
         "name" : "METHODS"
      },
      "id171" : {
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id171\">isConfigured</a></b>",
         "id" : "id171",
         "name" : "isConfigured"
      },
      "id710" : {
         "type" : "default",
         "value" : "'iso-8859-1'",
         "id" : "id710",
         "name" : "charset"
      },
      "id513" : {
         "path" : "SYNOPSIS",
         "type" : "chapter",
         "name" : "SYNOPSIS",
         "id" : "id513",
         "level" : 1
      },
      "id297" : {
         "type" : "default",
         "id" : "id297",
         "name" : "domain",
         "value" : "&lt;required&gt;"
      },
      "id711" : {
         "subroutine" : "id708",
         "id" : "id711",
         "name" : "cannot read perl from file $filename: $!",
         "type" : "fault"
      },
      "id99" : {
         "intro" : "<p>The full pattern is pretty complex: <code>%[+ -0]?[0-9]*[_,.]?d</code>, POSIX\nformat style with a few extra features.  The middle (optional) digits tell\nthe minimal size of the integer to be displayed.  The optional character\nbefore it says: <code>+</code> will add a '+' sign when positive, 'blank' adds one\nblank before the digits when positive, a <code>0</code> pads left with zeros instead\nof blanks.  Finally, a C<-&gt; means left-align padding blanks on the right.</p>\n\n<p>[0.96] The last pattern is only useful when you print (big) decimals:\nadd an underscore, comma, or dot on the thousands.</p>\n<pre>\n  printi \"{count%_d}\\n\", count =&gt; 1e9;   # 1_000_000_000\n  printi \"{count%,d}\\n\", count =&gt; 1e9;   # 1,000,000,000\n  printi \"{count%.d}\\n\", count =&gt; 1e9;   # 1.000.000.000\n\n  printi \"'{v%10.d}'\",  v =&gt;  10000;   # '    10.000';\n  printi \"'{v%10_d}'\",  v =&gt; -10000;   # '   -10_000';\n  printi \"'{v%-10.d}'\", v =&gt;  10000;   # '10.000    ';\n  printi \"'{v%-10.d}'\", v =&gt; -10000;   # '-10.000   ';\n  printi \"'{v%+10,d}'\", v =&gt;  10000;   # '   +10,000';\n  printi \"'{v% ,d}'\",   v =&gt;  10000;   # ' 10,000';\n  printi \"'{v% ,d}'\",   v =&gt; -10000;   # '-10,000';\n</pre>\n\n<p>[1.00] You can set the default <code>FORMAT</code> separator:</p>\n<pre>\n  use String::Print\n      defaults =&gt; [ FORMAT =&gt; { thousands =&gt; ',' } ];\n\n  # or\n  my $sp = String::Print-&gt;new(\n     defaults =&gt; { FORMAT =&gt; { thousands =&gt; ',' }},\n  );\n\n  # or\n  $sp-&gt;setDefaults(FORMAT =&gt; { thousands =&gt; ',' });\n</pre>\n",
         "path" : "DETAILS/Interpolation: Modifiers/Modifier: POSIX format starts with '%'/POSIX modifier extensions '%d'",
         "type" : "subsubsection",
         "level" : 4,
         "name" : "POSIX modifier extensions '%d'",
         "id" : "id99"
      },
      "id170" : {
         "type" : "i_method",
         "name" : "name",
         "id" : "id170",
         "call" : "$obj-&gt;<b><a name=\"id170\">name</a></b>"
      },
      "id1225" : {
         "type" : "i_method",
         "intro" : "<p>[1.11] Calls <a class=\"jump\" href=\"id1223\">toString()</a> and then escapes HTML volatile characters.</p>\n",
         "id" : "id1225",
         "name" : "toHTML",
         "call" : "$obj-&gt;<b><a name=\"id1225\">toHTML</a></b>(&nbsp;[$locale]&nbsp;)"
      },
      "id422-id289" : {
         "value" : "'utf-8'",
         "extends" : "id422",
         "id" : "id422-id289",
         "name" : "charset",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id421\">Log::Report::Extract::new(charset)</a></p>"
      },
      "id1098" : {
         "id" : "id1098",
         "name" : "identity",
         "params" : "$program",
         "type" : "option"
      },
      "id1021" : {
         "call" : "<b><a name=\"id1021\">panic</a></b>(&nbsp;$message&nbsp;)",
         "id" : "id1021",
         "name" : "panic",
         "intro" : "<p>Short for <code>report PANIC =&gt; $message</code></p>\n",
         "type" : "function"
      },
      "id992" : {
         "params" : "$location",
         "type" : "option",
         "intro" : "<p>When defined, this location is used in the display.  Otherwise, it\nis determined automatically if needed.  An empty string will disable\nany attempt to display this line.</p>\n",
         "id" : "id992",
         "name" : "location"
      },
      "id298" : {
         "intro" : "<p>See the DETAILS section below for a detailed explenation.</p>\n",
         "type" : "option",
         "params" : "PREDEFINED|CODE",
         "id" : "id298",
         "name" : "pattern"
      },
      "id275" : {
         "type" : "i_method",
         "intro" : "<p>Renders the template.  The first arg is a filename for the template file\nor a reference to a string that contains the template. The second arg\nis a hashref for the tokens that you wish to pass to\n<a href=\"https://metacpan.org/dist/Template_Toolkit\">manual Template::Toolkit</a> for rendering.</p>\n\n<p>When a translation language is set, then this renderer adds the following\nvariables: <code>language</code> (like \"nl\"), <code>language_territory</code> (like \"nl_BE\"),\nand <code>locale</code> (like \"nl_BE.utf8\").</p>\n",
         "id" : "id275",
         "name" : "render",
         "call" : "$obj-&gt;<b><a name=\"id275\">render</a></b>(&nbsp;$template, \\%tokens&nbsp;)"
      },
      "id570" : {
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Lexicon::POTcompact - use translations from a POT file</p>\n",
         "level" : 1,
         "name" : "NAME",
         "id" : "id570"
      },
      "id773" : {
         "type" : "i_method",
         "intro" : "<p>Returns the mode in use for the dispatcher as number.  See <a class=\"jump\" href=\"id761\">new(mode)</a>\nand <a class=\"jump\" href=\"id1071\">Run modes</a>.</p>\n",
         "id" : "id773",
         "name" : "mode",
         "call" : "$obj-&gt;<b><a name=\"id773\">mode</a></b>"
      },
      "id485" : {
         "type" : "i_method",
         "intro" : "<p>Returns the language code, which is derived from the filename.</p>\n",
         "name" : "language",
         "id" : "id485",
         "call" : "$obj-&gt;<b><a name=\"id485\">language</a></b>"
      },
      "id1285" : {
         "nest" : [
            "id1286",
            "id1287"
         ],
         "path" : "DETAILS/Processing the message",
         "type" : "section",
         "name" : "Processing the message",
         "id" : "id1285",
         "level" : 2
      },
      "id825" : {
         "type" : "chapter",
         "path" : "METHODS",
         "nest" : [
            "id826",
            "id836",
            "id843",
            "id847"
         ],
         "level" : 1,
         "name" : "METHODS",
         "id" : "id825"
      },
      "id428-id289" : {
         "call" : "$obj-&gt;<b><a name=\"id428\">domains</a></b>",
         "extends" : "id428",
         "name" : "domains",
         "id" : "id428-id289",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id428\">Log::Report::Extract::domains()</a></p>",
         "type" : "i_method"
      },
      "id766-id1174" : {
         "id" : "id766-id1174",
         "name" : "charset",
         "value" : "<code>undef</code>",
         "extends" : "id766",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>",
         "type" : "default"
      },
      "id390" : {
         "params" : "LANGUAGES",
         "type" : "option",
         "intro" : "<p>[1.01] Initial language to translate to.  Usually, this language which change\nfor each user connection via <a class=\"jump\" href=\"id401\">translateTo()</a>.</p>\n",
         "name" : "lang",
         "id" : "id390"
      },
      "id1261" : {
         "type" : "section",
         "path" : "METHODS/Attributes",
         "level" : 2,
         "id" : "id1261",
         "name" : "Attributes"
      },
      "id1010" : {
         "subroutines" : [
            "id1013",
            "id1017",
            "id1019",
            "id1012",
            "id1015",
            "id1016",
            "id1020",
            "id1011",
            "id1014",
            "id1021",
            "id1018"
         ],
         "level" : 2,
         "intro" : "<p>The following functions are all wrappers for calls to <a class=\"jump\" href=\"id985\">report()</a>,\nand available when \"syntax is SHORT\" (by default, see <a class=\"jump\" href=\"id1045\">import()</a>).\nYou cannot specify additional options to influence the behavior of\n<code>report()</code>, which are usually not needed anyway.</p>\n",
         "path" : "FUNCTIONS/Abbreviations for report()",
         "type" : "section",
         "id" : "id1010",
         "name" : "Abbreviations for report()"
      },
      "id435" : {
         "type" : "default",
         "value" : "[]",
         "name" : "keep",
         "id" : "id435"
      },
      "id762-id958" : {
         "id" : "id762-id958",
         "name" : "mode",
         "value" : "'NORMAL'",
         "extends" : "id762",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>",
         "type" : "default"
      },
      "id997" : {
         "id" : "id997",
         "name" : "is_fatal",
         "value" : "&lt;depends on reason&gt;",
         "type" : "default"
      },
      "id796-id1228" : {
         "type" : "option",
         "params" : "INTEGER",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "id" : "id796-id1228",
         "name" : "max_line",
         "extends" : "id796"
      },
      "id463" : {
         "type" : "default",
         "id" : "id463",
         "name" : "date",
         "value" : "now"
      },
      "id744-id569" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id743\">Log::Report::Lexicon::Table::setupPluralAlgorithm()</a></p>",
         "type" : "error",
         "subroutine" : "id743",
         "extends" : "id744",
         "id" : "id744-id569",
         "name" : "invalid plural-form algorithm '$alg'."
      },
      "id1071" : {
         "path" : "DETAILS/Error handling models/Run modes",
         "intro" : "<p>The run-mode change which messages are passed to a dispatcher, the verbosity.\nIt takes a different angle than the dispatch filters: the mode changes\nbehavioral aspects of the messages, which are described in detail in\n<a class=\"jump\" href=\"id804\">Processing the message</a>.  However, it should\nbehave as you expect: the DEBUG mode shows more than the VERBOSE mode,\nand both show more than the NORMAL mode.</p>\n",
         "type" : "subsection",
         "examples" : [
            "id1072",
            "id1073",
            "id1074"
         ],
         "level" : 3,
         "name" : "Run modes",
         "id" : "id1071"
      },
      "id801-id958" : {
         "name" : "abstract",
         "id" : "id801-id958",
         "value" : "1",
         "extends" : "id801",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "type" : "default"
      },
      "id833" : {
         "name" : "hide",
         "id" : "id833",
         "value" : "'NONE'",
         "type" : "default"
      },
      "id1275" : {
         "subroutines" : [
            "id741-id637",
            "id745-id637",
            "id743-id637",
            "id746-id637",
            "id738-id637",
            "id739-id637"
         ],
         "level" : 3,
         "id" : "id1275",
         "name" : "Administration",
         "path" : "METHODS/Managing PO's/Administration",
         "type" : "subsection"
      },
      "id883" : {
         "params" : "$tags|\\@tags",
         "type" : "option",
         "intro" : "<p>When messages are used for exception based programming, you add a\n<tt class=\"parameter\">_tag</tt> parameter to the argument list.  Later, with for instance\n<a class=\"jump\" href=\"id851\">Log::Report::Dispatcher::Try::wasFatal(tag)</a>, you can check the\ncategory (group, class) of the exception.</p>\n\n<p>The <tt class=\"parameter\">$tags</tt> is interpreted as comma- and/or blank separated list of class\ntokens (barewords), the ARRAY lists all tags separately. See <a class=\"jump\" href=\"id911\">tags()</a>.</p>\n",
         "id" : "id883",
         "name" : "_tag"
      },
      "id356" : {
         "type" : "default",
         "value" : "qr/\\.tt2?$/",
         "name" : "filename_match",
         "id" : "id356"
      },
      "id427-id289" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id427\">Log::Report::Extract::charset()</a></p>",
         "name" : "charset",
         "id" : "id427-id289",
         "extends" : "id427",
         "call" : "$obj-&gt;<b><a name=\"id427\">charset</a></b>"
      },
      "id423" : {
         "subroutine" : "id418",
         "id" : "id423",
         "name" : "extractions require an explicit lexicon directory.",
         "type" : "error"
      },
      "id865" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "name" : "Constructors",
         "id" : "id865",
         "level" : 2,
         "subroutines" : [
            "id901",
            "id866"
         ]
      },
      "id1081" : {
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/Compared to other solutions in Perl/Locale::gettext and Locate::TextDomain",
         "intro" : "<p>Both on GNU gettext based implementations can be used as translation\nframeworks.  Locale::TextDomain syntax is supported, with quite some\nextensions. Read the excellent documentation of Locale::TextDomain.\nOnly the tried access via <code>$__</code> and <code>%__</code> are not supported.</p>\n\n<p>The main difference with these modules is the moment when the translation\ntakes place.  In Locale::TextDomain, an <code>__x()</code> will result in an\nimmediate translation request via <code>gettext()</code>.  <code>Log::Report</code>'s version\nof <code>__x()</code> will only capture what needs to be translated in an object.\nWhen the object is used in a print statement, only then the translation\nwill take place.  This is needed to offer ways to send different\ntranslations of the message to different destinations.</p>\n\n<p>To be able to postpone translation, objects are returned which stringify\ninto the translated text.</p>\n",
         "name" : "Locale::gettext and Locate::TextDomain",
         "id" : "id1081"
      },
      "id816" : {
         "type" : "default",
         "id" : "id816",
         "name" : "on_die",
         "value" : "'ERROR'"
      },
      "id1151" : {
         "subroutine" : "id1149",
         "id" : "id1151",
         "name" : "unsupported context file type for $fn",
         "type" : "error"
      },
      "id292" : {
         "level" : 1,
         "path" : "DESCRIPTION",
         "intro" : "<p>This module helps maintaining the POT files which list translatable\nstrings from template files (or other flat text files) by updating the\nlist of message-ids which are kept in them.</p>\n\n<p>After initiation, the <a class=\"jump\" href=\"id305\">process()</a> method needs to be called for each file\nin the domain  and the existing PO files will get updated accordingly.</p>\n\n<p>If no translations exist yet, one <code>$textdomain.po</code> file will be\ncreated as point to start.  Copy that file into <code>$textdomain/$lang.po</code></p>\n",
         "type" : "chapter",
         "id" : "id292",
         "name" : "DESCRIPTION"
      },
      "id998" : {
         "intro" : "<pre>  # long syntax example\n  report TRACE =&gt; \"start processing now\";\n  report INFO  =&gt; '500: ' . __'Internal Server Error';\n\n  # explicit dispatcher, no translation\n  report {to =&gt; 'syslog'}, NOTICE =&gt; \"started process $$\";\n  notice \"started process $$\", _to =&gt; 'syslog';   # same\n\n  # short syntax examples\n  trace \"start processing now\";\n  warning  __x'Disk {percent%.2f}% full', percent =&gt; $p\n      if $p > 97;\n\n  # error message, overruled to be printed in Brazilian\n  report {locale =&gt; 'pt_BR'},\n        WARNING =&gt; \"do this at home!\";\n</pre>\n",
         "type" : "example",
         "name" : "for use of <a class=\"jump\" href=\"id985\">report()</a>\n",
         "id" : "id998"
      },
      "id1065" : {
         "type" : "section",
         "path" : "DETAILS/Introduction",
         "intro" : "<p>Getting messages to users and logs. The distincting concept of this module,\nis that three tasks which are strongly related are merged into one simple\nsyntax.  The three tasks:</p>\n\n<ul>\n<li>produce some text on a certain condition,<br />\n<li>translate it to the proper language, and<br />\n<li>deliver it in some way to a user.<br />\n</ul>\n\n<p>Text messages in Perl are produced by commands like <code>print</code>, <code>die</code>,\n<code>warn</code>, <code>carp</code>, or <code>croak</code>.  But where is that output directed to?\nTranslations is hard.  There is no clean exception mechanism.</p>\n\n<p>Besides, the <code>print</code>/<code>warn</code>/<code>die</code> together produce only three different\noutput \"levels\" with a message.  Think of the variation syslog offers:\nmore than 7 levels.  Many people manually implement their own tricks to\nget additional levels, like verbose and debug flags.  <a class=\"jump\" href=\"id979\">Log::Report</a> offers\nthat variety.</p>\n\n<p>The (optional) translations use the beautiful syntax defined by\nLocale::TextDomain, with some own extensions (of course).  A very\nimportant difference is that translations are delayed till the delivery\nstep: until a dispatcher actually writes your message into a file, sends\nit to syslog, or shows it on the screen.  This means that the pop-up in\nthe graphical interface of the user may show the text in the language\nof the user --say Chinese in utf8--, but at the same time syslog may\nwrite the latin1 English version of the same message.</p>\n",
         "level" : 2,
         "nest" : [
            "id1066",
            "id1067"
         ],
         "id" : "id1065",
         "name" : "Introduction"
      },
      "id975" : {
         "type" : "i_method",
         "intro" : "<p>Returns the Log::Log4perl::Logger object which is used for logging.\nWhen there is no specific logger for this <tt class=\"parameter\">$domain</tt> (logger with the exact\nname of the <tt class=\"parameter\">$domain</tt>) the default logger is being used, with the name of\nthis dispatcher.</p>\n",
         "name" : "logger",
         "id" : "id975",
         "call" : "$obj-&gt;<b><a name=\"id975\">logger</a></b>(&nbsp;[$domain]&nbsp;)"
      },
      "id760-id1174" : {
         "value" : "&lt;system locale&gt;",
         "extends" : "id760",
         "id" : "id760-id1174",
         "name" : "locale",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "type" : "default"
      },
      "id1233" : {
         "level" : 2,
         "name" : "Constructors",
         "id" : "id1233",
         "subroutines" : [
            "id1234"
         ],
         "type" : "section",
         "path" : "METHODS/Constructors"
      },
      "id177-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id176\">Log::Report::Minimal::Domain::configure(formatter)</a></p>",
         "type" : "default",
         "name" : "formatter",
         "id" : "id177-id375",
         "value" : "<code>PRINTI</code>",
         "extends" : "id177"
      },
      "id934" : {
         "id" : "id934",
         "name" : "Interpolation with String::Print",
         "level" : 3,
         "examples" : [
            "id935"
         ],
         "type" : "subsection",
         "path" : "DETAILS/Messages with plural forms/Interpolation with String::Print",
         "intro" : "<p>There is no way of checking beforehand whether you have provided all\nrequired values, to be interpolated in the translated string.</p>\n\n<p>This <a class=\"jump\" href=\"id856\">Log::Report::Message</a> uses <a class=\"jump\" href=\"id47\">String::Print</a> to handle formatted strings.\nOn object of that module is hidden in the logic of <code>__x()</code> and friends.</p>\n\n<p><a class=\"jump\" href=\"id47\">String::Print</a> is a very capable format string processor, and you should\nreally <b>read its manual</b> page to see how it can help you.  It would be\npossible to support an other formatter (pretty simple even), but this is\nnot (yet) supported.</p>\n"
      },
      "id984" : {
         "subroutines" : [
            "id985",
            "id1008",
            "id1003"
         ],
         "id" : "id984",
         "name" : "Report production and configuration",
         "level" : 2,
         "path" : "FUNCTIONS/Report production and configuration",
         "type" : "section"
      },
      "id396" : {
         "type" : "i_method",
         "intro" : "<p>Returns the name of the function which is used for translations.</p>\n",
         "name" : "function",
         "id" : "id396",
         "call" : "$obj-&gt;<b><a name=\"id396\">function</a></b>"
      },
      "id1201" : {
         "level" : 1,
         "id" : "id1201",
         "name" : "METHODS",
         "path" : "METHODS",
         "nest" : [
            "id1202",
            "id1210",
            "id1218"
         ],
         "type" : "chapter"
      },
      "id869" : {
         "id" : "id869",
         "name" : "_domain",
         "params" : "$name|$object",
         "type" : "option",
         "intro" : "<p>The text-domain (translation table) to which this <tt class=\"parameter\">_msgid</tt> belongs.</p>\n\n<p>With this parameter, your can \"borrow\" translations from other textdomains.\nBe very careful with this (although there are good use-cases)  The xgettext\nmsgid extractor may add the used msgid to this namespace as well.  To\navoid that, add a harmless '+':</p>\n<pre>\n  print __x(+\"errors\", _domain =&gt; 'global');\n</pre>\n\n<p>The extractor will not take the msgid when it is an expression.  The '+'\nhas no effect on the string at runtime.</p>\n"
      },
      "id1014" : {
         "intro" : "<p>Short for <code>report NOTICE =&gt; $message</code></p>\n",
         "type" : "function",
         "call" : "<b><a name=\"id1014\">notice</a></b>(&nbsp;$message&nbsp;)",
         "name" : "notice",
         "id" : "id1014"
      },
      "id1191" : {
         "call" : "$obj-&gt;<b><a name=\"id1191\">backend</a></b>",
         "name" : "backend",
         "id" : "id1191",
         "intro" : "<p>Returns the Log::Dispatch::Output object which is used for logging.</p>\n",
         "type" : "i_method"
      },
      "id958" : {
         "inheritance" : {
            "extends" : [
               "Log::Report::Dispatcher"
            ]
         },
         "package" : "Log::Report::Dispatcher::Log4perl",
         "distribution" : "Log-Report",
         "is_pure_pod" : false,
         "title" : "send messages to Log::Log4perl back-end",
         "id" : "id958",
         "name" : "Log::Report::Dispatcher::Log4perl",
         "chapters" : [
            "id959",
            "id1344",
            "id960",
            "id961",
            "id965",
            "id1288"
         ],
         "version" : "1.45"
      },
      "id252" : {
         "level" : 1,
         "intro" : "<p>This chapter will guide you through the myriad of ways that you can use\n<a class=\"jump\" href=\"id979\">Log::Report</a> in your Dancer2 application.</p>\n\n<p>We will set up our application to do the following:</p>\n\n<ul>\n\n\n\n<p><li>Messages to the user<br />\nWe'll look at an easy way to output messages to the user's web page, whether\nthey be informational messages, warnings or errors.</p>\n\n\n\n<p><li>Debug information<br />\nWe'll look at an easy way to log debug information, at different levels.</p>\n\n\n\n<p><li>Manage unexpected exceptions<br />\nWe'll handle unexpected exceptions cleanly, in the unfortunate event that\nthey happen in your production application.</p>\n\n\n\n<p><li>Email alerts of significant errors<br />\nIf we do get unexpected errors then we want to be notified them.</p>\n\n\n\n<p><li>Log DBIC information and errors<br />\nWe'll specifically look at nice ways to log SQL queries and errors when\nusing DBIx::Class.</p>\n\n</ul>\n",
         "path" : "DETAILS",
         "type" : "chapter",
         "id" : "id252",
         "name" : "DETAILS",
         "nest" : [
            "id253",
            "id254",
            "id257"
         ]
      },
      "id979" : {
         "package" : "Log::Report",
         "inheritance" : {
            "extends" : [
               "Exporter"
            ]
         },
         "distribution" : "Log-Report",
         "title" : "report a problem, with exceptions and translation support",
         "is_pure_pod" : false,
         "id" : "id979",
         "name" : "Log::Report",
         "chapters" : [
            "id980",
            "id1314",
            "id981",
            "id982",
            "id983",
            "id1064"
         ],
         "version" : "1.45"
      },
      "id790-id1228" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "type" : "option",
         "params" : "INTEGER",
         "extends" : "id790",
         "id" : "id790-id1228",
         "name" : "linenr"
      },
      "id489" : {
         "type" : "i_method",
         "intro" : "<p>Add the information from a <tt class=\"parameter\">$po</tt> into this POT.  If the msgid of the <tt class=\"parameter\">$po</tt>\nis already known, that is an error.</p>\n",
         "diagnostics" : [
            "id490"
         ],
         "id" : "id489",
         "name" : "add",
         "call" : "$obj-&gt;<b><a name=\"id489\">add</a></b>(&nbsp;$po&nbsp;)"
      },
      "id1128" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Domain - administer one text-domain</p>\n",
         "id" : "id1128",
         "name" : "NAME"
      },
      "id829" : {
         "type" : "default",
         "name" : "exceptions",
         "id" : "id829",
         "value" : "[]"
      },
      "id1039" : {
         "id" : "id1039",
         "name" : "Messages with Context",
         "level" : 2,
         "subroutines" : [
            "id1040",
            "id1041",
            "id1042",
            "id1043"
         ],
         "type" : "section",
         "path" : "FUNCTIONS/Messages with Context",
         "intro" : "<p>In <a class=\"jump\" href=\"id979\">Log::Report</a>, the message context (<code>mgsctxt</code> in the PO-files --in the\ntranslation tables) can be used in a very powerful way.  Read all about\nit in <a class=\"jump\" href=\"id669\">Log::Report::Translator::Context</a></p>\n\n<p>The msgctxt versions of the tranditional gettext infrastructure are far\nless useful for <a class=\"jump\" href=\"id979\">Log::Report</a>, because we can easily work with different\ntext domains within the same program.  That should avoid most of the\naccidental translation conflicts between components of the code.</p>\n\n<p>Just for compatibility with Locale::TextDomain and completeness, the\n'p' versions of above methods are supported.  See examples for these\nfunctions in Locale::TextDomain.</p>\n\n<p><b>Warnings:</b> Functions <code>N__p()</code> and <code>N__np()</code> seem not to be usable in\nreality, hence not implemented.  The script <i class=\"filename\">xgettext-perl</i> and\n<a class=\"jump\" href=\"id697\">Log::Report::Extract::PerlPPI</a> (both in the <a class=\"jump\" href=\"id717\">Log::Report::Lexicon</a>\ndistribution) do not yet support these functions.</p>\n"
      },
      "id350" : {
         "name" : "charset",
         "id" : "id350",
         "value" : "'UTF-8'",
         "type" : "default"
      },
      "id439" : {
         "type" : "i_method",
         "intro" : "<p>Register the existence of a (<tt class=\"parameter\">$msg</tt>, <tt class=\"parameter\">$msg_plural</tt>) in all POTs of\nthe <tt class=\"parameter\">$domain</tt>.</p>\n",
         "diagnostics" : [
            "id440"
         ],
         "id" : "id439",
         "name" : "store",
         "call" : "$obj-&gt;<b><a name=\"id439\">store</a></b>(&nbsp;$domain, $filename, $linenr, $context, $msg, [$msg_plural]&nbsp;)"
      },
      "id810" : {
         "name" : "NAME",
         "id" : "id810",
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Die - compatibility routines with Perl's die/croak/confess</p>\n",
         "level" : 1
      },
      "id474" : {
         "subroutine" : "id467",
         "id" : "id474",
         "name" : "failed reading from file $fn: $!",
         "type" : "fault"
      },
      "id957" : {
         "path" : "METHODS/Logging",
         "type" : "section",
         "subroutines" : [
            "id781-id944",
            "id785-id944",
            "id778-id944",
            "id784-id944",
            "id777-id944",
            "id780-id944",
            "id783-id944",
            "id779-id944"
         ],
         "id" : "id957",
         "name" : "Logging",
         "level" : 2
      },
      "id1005" : {
         "id" : "id1005",
         "name" : "only one dispatcher name accepted in SCALAR context.",
         "subroutine" : "id1003",
         "type" : "error",
         "intro" : "<p>In SCALAR context, only one dispatcher name accepted The <a class=\"jump\" href=\"id1003\">dispatcher()</a>\nmethod returns the <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a> objects which it has accessed.\nWhen multiple names where given, it wishes to return a LIST of objects,\nnot the count of them.</p>\n"
      },
      "id344" : {
         "name" : "directory $dir not in INCLUDE_PATH, used by $option",
         "id" : "id344",
         "subroutine" : "id342",
         "type" : "error"
      },
      "id258" : {
         "intro" : "<p>In its simplest form, you can now use all the\n<a href=\"https://metacpan.org/dist/Log_Report_The_Reason_for_the_report\">Log::Report logging functions</a>\nto send messages to your dispatchers (as configured in the Logger\nconfiguration):</p>\n<pre>\n  trace \"I'm here\";\n\n  warning \"Something dodgy happened\";\n\n  panic \"I'm bailing out\";\n\n  # Additional, special Dancer2 keyword\n  success \"Settings saved successfully\";\n</pre>\n",
         "path" : "DETAILS/In use/Logging debug information",
         "type" : "subsection",
         "level" : 3,
         "name" : "Logging debug information",
         "id" : "id258"
      },
      "id176" : {
         "type" : "option",
         "params" : "CODE|\\%config|'PRINTI'",
         "intro" : "<p>Selects the formatter used for the errors messages.  The default is the\nstring <code>PRINTI</code>, which will use <a class=\"jump\" href=\"id85\">String::Print::printi()</a>: interpolation\nwith curly braces around the variable names.</p>\n",
         "name" : "formatter",
         "id" : "id176"
      },
      "id952" : {
         "intro" : "<p>Your <tt class=\"parameter\">callback</tt> is called with five parameters: this dispatcher object,\nthe options, a reason and a message.  The <code>options</code> are the first\nparameter of <a class=\"jump\" href=\"id985\">Log::Report::report()</a> (read over there).  The <code>reason</code>\nis a capitized string like <code>ERROR</code>. Then, the <code>message</code> (is a\n<a class=\"jump\" href=\"id856\">Log::Report::Message</a>).  Finally the text-domain of the message.</p>\n",
         "type" : "option",
         "params" : "CODE",
         "id" : "id952",
         "name" : "callback"
      },
      "id279" : {
         "version" : "2.03",
         "chapters" : [
            "id280",
            "id1349",
            "id281",
            "id282",
            "id284"
         ],
         "id" : "id279",
         "name" : "Dancer2::Logger::LogReport",
         "is_pure_pod" : false,
         "title" : "reroute Dancer2 logs into Log::Report",
         "distribution" : "Dancer2-Plugin-LogReport",
         "inheritance" : {
            "extends" : [
               "Moo::Object"
            ]
         },
         "package" : "Dancer2::Logger::LogReport"
      },
      "id604" : {
         "name" : "list",
         "id" : "id604",
         "call" : "$obj-&gt;<b><a name=\"id604\">list</a></b>(&nbsp;$domain, [$extension]&nbsp;)",
         "examples" : [
            "id605"
         ],
         "intro" : "<p>Returned is a list of filenames which is used to update the list of\nMSGIDs when source files have changed.  All translation files which\nbelong to a certain <tt class=\"parameter\">$domain</tt> are listed.</p>\n\n<p>The <tt class=\"parameter\">$extension</tt> filter can be used to reduce the filenames further, for\ninstance to select only <code>po</code>, <code>mo</code> or <code>gmo</code> files, and ignore readme's.\nUse an string, without dot and interpreted case-insensitive, or a\nregular expression.</p>\n",
         "type" : "i_method"
      },
      "id234" : {
         "id" : "id234",
         "name" : "fatal_handler",
         "type" : "i_method",
         "intro" : "<p><code>fatal_handler()</code> allows alternative handlers to be defined in place of (or in\naddition to) the default redirect handler that is called on a fatal error.</p>\n\n<p>Calls should be made with 1 parameter: the subroutine to call in the case of a\nfatal error. The subroutine is passed 3 parameters: the DSL, the message in\nquestion, and the reason. The subroutine should return <code>true</code> or <code>false</code> depending\non whether it handled the error. If it returns <code>false</code>, the next fatal handler is\ncalled, and if there are no others then the default redirect fatal handler is\ncalled.</p>\n",
         "diagnostics" : [
            "id237"
         ],
         "examples" : [
            "id235",
            "id236"
         ],
         "call" : "$obj-&gt;<b><a name=\"id234\">fatal_handler</a></b>"
      },
      "id531" : {
         "value" : "\"\"",
         "name" : "automatic",
         "id" : "id531",
         "type" : "default"
      },
      "id581" : {
         "type" : "error",
         "subroutine" : "id575",
         "name" : "header not found for charset in $fn.",
         "id" : "id581"
      },
      "id764" : {
         "type" : "default",
         "value" : "'LOWERCASE'",
         "name" : "format_reason",
         "id" : "id764"
      },
      "id284" : {
         "path" : "METHODS",
         "type" : "chapter",
         "subroutines" : [
            "id285"
         ],
         "level" : 1,
         "name" : "METHODS",
         "id" : "id284"
      },
      "id1178" : {
         "name" : "METHODS",
         "id" : "id1178",
         "level" : 1,
         "nest" : [
            "id1179",
            "id1190",
            "id1192"
         ],
         "path" : "METHODS",
         "type" : "chapter"
      },
      "id181" : {
         "distribution" : "Log-Report-Optional",
         "inheritance" : {
            "extends" : [
               "Exporter"
            ]
         },
         "package" : "Log::Report::Util",
         "name" : "Log::Report::Util",
         "id" : "id181",
         "is_pure_pod" : false,
         "title" : "helpful routines to Log::Report",
         "chapters" : [
            "id182",
            "id1329",
            "id183",
            "id184",
            "id185"
         ],
         "version" : "1.08"
      },
      "id257" : {
         "level" : 2,
         "id" : "id257",
         "name" : "In use",
         "type" : "section",
         "path" : "DETAILS/In use",
         "nest" : [
            "id258",
            "id259",
            "id260",
            "id261",
            "id262",
            "id263"
         ]
      },
      "id1148-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1138\">Log::Report::Domain::configure()</a></p>",
         "type" : "warning",
         "subroutine" : "id1138",
         "id" : "id1148-id375",
         "name" : "Missing key '$key' in format '$format', file $use",
         "extends" : "id1148"
      },
      "id131" : {
         "call" : "<b><a name=\"id131\">dispatcher</a></b>(&nbsp;&lt;$type, $name, %options&gt;|&lt;$command, @names>&nbsp;)",
         "id" : "id131",
         "name" : "dispatcher",
         "intro" : "<p>Not supported.</p>\n",
         "type" : "function"
      },
      "id95" : {
         "level" : 2,
         "type" : "section",
         "path" : "DETAILS/Interpolation: Serialization",
         "intro" : "<p>The 'interpolation' functions have named VARIABLES to be filled-in, but\nalso additional OPTIONS.  To distinguish between the OPTIONS and VARIABLES\n(both a list of key-value pairs), the keys of the OPTIONS start with\nan underscore <code>_</code>.  As result of this, please avoid the use of keys\nwhich start with an underscore in variable names.  On the other hand,\nyou are allowed to interpolate OPTION values in your strings.</p>\n\n<p>There is no way of checking beforehand whether you have provided all\nvalues to be interpolated in the translated string.  When you refer to\nvalue which is missing, it will be interpreted as <code>undef</code>.</p>\n\n<ul>\n\n\n\n<p><li>strings<br />\nSimple scalar values are interpolated \"as is\"</p>\n\n\n\n<p><li>CODE<br />\nWhen a value is passed as CODE reference, that function will get called\nto return the value to be filled in.\nFor interpolating, the following rules apply:</p>\n\n\n\n<p><li>SCALAR<br />\nTakes the value where the scalar reference points to.</p>\n\n\n\n<p><li>ARRAY<br />\nAll members will be interpolated with <code>,␣</code> between the elements.\nAlternatively (maybe nicer), you can pass an interpolation parameter\nvia the <code>_join</code> OPTION.</p>\n<pre>\n  printi \"matching files: {files}\", files =&gt; \\@files, _join =&gt; ', '\n</pre>\n\n\n\n<p><li>HASH<br />\nBy default, HASHes are interpolated with sorted keys,</p>\n<pre>\n  $key =&gt; $value, $key2 =&gt; $value2, ...\n</pre>\n\n<p>There is no quoting on the keys or values (yet).  Usually, this will\nproduce an ugly result anyway.</p>\n\n\n\n<p><li>Objects<br />\nWith the <code>serialization</code> parameter, you can overrule the interpolation\nof above defaults, but also add rules for your own objects.  By default,\nobjects get stringified.</p>\n<pre>\n  serialization =&gt; [ $myclass =&gt; \\&amp;name_in_reverse ]\n\n  sub name_in_reverse($$$)\n  {   my ($formatter, $object, $args) = @_;\n      # the $args are all parameters to be filled-in\n      scalar reverse $object-&gt;name;\n  }\n</pre>\n\n</ul>\n",
         "name" : "Interpolation: Serialization",
         "id" : "id95"
      },
      "id724" : {
         "level" : 2,
         "id" : "id724",
         "name" : "Attributes",
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id1188" : {
         "value" : "[]",
         "id" : "id1188",
         "name" : "callbacks",
         "type" : "default"
      },
      "id576" : {
         "params" : "STRING",
         "type" : "option",
         "intro" : "<p>When the charset is not specified, it will be taken from the content-type\nfield in the po-file header.</p>\n",
         "name" : "charset",
         "id" : "id576"
      },
      "id1037" : {
         "name" : "N__w",
         "id" : "id1037",
         "intro" : "<p>This extension to the Locale::TextDomain syntax, is a combined\n<code>qw</code> (list of quoted words) and <a class=\"jump\" href=\"id1033\">N__()</a> into a list of translatable\nwords.</p>\n",
         "type" : "function",
         "examples" : [
            "id1038"
         ],
         "call" : "<b><a name=\"id1037\">N__w</a></b>(&nbsp;$string&nbsp;)"
      },
      "id1346" : {
         "intro" : "<pre> Log::Report::Dispatcher::Try\n   is a <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter",
         "level" : 1,
         "name" : "INHERITANCE",
         "id" : "id1346"
      },
      "id172-id375" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id172\">Log::Report::Minimal::Domain::format()</a></p>",
         "name" : "format",
         "id" : "id172-id375",
         "extends" : "id172",
         "call" : "$obj-&gt;<b><a name=\"id172\">format</a></b>"
      },
      "id1058" : {
         "subroutine" : "id1045",
         "name" : "textdomain `$domain' for translator not defined",
         "id" : "id1058",
         "type" : "error"
      },
      "id564" : {
         "name" : "nr_plurals",
         "id" : "id564",
         "params" : "INTEGER",
         "type" : "option",
         "intro" : "<p>If the number of plurals is specified, then the plural translation\nlist can be checked for the correct length.  Otherwise, no smart\nbehavior is attempted.</p>\n"
      },
      "id781" : {
         "call" : "$any-&gt;<b><a name=\"id781\">addSkipStack</a></b>(&nbsp;@CODE&nbsp;)",
         "examples" : [
            "id782"
         ],
         "intro" : "<p>[1.13] Add one or more <tt class=\"parameter\">CODE</tt> blocks of caller lines which should not be\ncollected for stack-traces or location display.  A <tt class=\"parameter\">CODE</tt> gets\ncalled with an ARRAY of caller information, and returns <code>true</code>\nwhen that line should get skipped.</p>\n\n<p><b>Warning:</b> this logic is applied globally: on all dispatchers.</p>\n",
         "type" : "ci_method",
         "name" : "addSkipStack",
         "id" : "id781"
      },
      "id261" : {
         "name" : "Handling user errors",
         "id" : "id261",
         "path" : "DETAILS/In use/Handling user errors",
         "intro" : "<p>Sometimes we write a function in a model, and it would be nice to have a\nnice easy way to return from the function with an error message. One\nway of doing this is with a separate error message variable, but that\ncan be messy code. An alternative is to use exceptions, but these\ncan be a pain to deal with in terms of catching them.\nHere's how to do it with <a class=\"jump\" href=\"id979\">Log::Report</a>.</p>\n\n<p>In this example, we do use exceptions, but in a neat, easier to use manner.</p>\n\n<p>First, your module/model:</p>\n<pre>\n  package MyApp::CD;\n\n  sub update {\n    my ($self, %values) = @_;\n    $values{title} or error \"Please enter a title\";\n    $values{description} or warning \"No description entered\";\n  }\n</pre>\n\n<p>Then, in your controller:</p>\n<pre>\n  package MyApp;\n  use Dancer2;\n\n  post '/cd' =&gt; sub {\n    my %values = (\n      title       =&gt; param('title');\n      description =&gt; param('description');\n    );\n    if (process sub { MyApp::CD-&gt;update(%values) } ) {\n      success \"CD updated successfully\";\n      redirect '/cd';\n    }\n\n    template 'cd' =&gt; { values =&gt; \\%values };\n  }\n</pre>\n\n<p>Now, when update() is called, any exceptions are caught. However, there is\nno need to worry about any error messages. Both the error and warning\nmessages in the above code will have been stored in the messages session\nvariable, where they can be displayed using the code in the previous section.\nThe <code>error</code> will have caused the code to stop running, and process()\nwill have returned <code>false</code>. <code>warning</code> will have simply logged the warning\nand not caused the function to stop running.</p>\n",
         "type" : "subsection",
         "level" : 3
      },
      "id677" : {
         "value" : "{}",
         "id" : "id677",
         "name" : "rules",
         "type" : "default"
      },
      "id124" : {
         "call" : "<b><a name=\"id124\">report</a></b>(&nbsp;[\\%options], $reason, $message|&lt;STRING,$params>&nbsp;)",
         "id" : "id124",
         "name" : "report",
         "diagnostics" : [
            "id129",
            "id130"
         ],
         "intro" : "<p>Be warned that <tt class=\"parameter\">%options</tt> is a HASH here.</p>\n",
         "options" : [
            [
               "id125",
               "id126"
            ],
            [
               "id127",
               "id128"
            ]
         ],
         "type" : "function"
      },
      "id731" : {
         "call" : "$class-&gt;<b><a name=\"id731\">new</a></b>(&nbsp;%options&nbsp;)",
         "name" : "new",
         "id" : "id731",
         "type" : "c_method"
      },
      "id772-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id772\">Log::Report::Dispatcher::type()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id772\">type</a></b>",
         "extends" : "id772",
         "id" : "id772-id818",
         "name" : "type"
      },
      "id1216" : {
         "id" : "id1216",
         "type" : "example",
         "intro" : "<pre>  $e-&gt;message-&gt;concat('!!')); # will not work!\n  $e-&gt;message($e-&gt;message-&gt;concat('!!'));\n\n  $e-&gt;message(__x\"some message {xyz}\", xyz =&gt; $xyz);\n</pre>\n"
      },
      "id402" : {
         "call" : "$obj-&gt;<b><a name=\"id402\">translationFunction</a></b>",
         "id" : "id402",
         "name" : "translationFunction",
         "diagnostics" : [
            "id403",
            "id404",
            "id405",
            "id406",
            "id407",
            "id408"
         ],
         "intro" : "<p>This method returns a CODE which is able to handle a call for\ntranslation by Template Toolkit.</p>\n",
         "type" : "i_method"
      },
      "id741-id637" : {
         "diagnostics" : [
            "id742-id637"
         ],
         "call" : "$obj-&gt;<b><a name=\"id741\">pluralIndex</a></b>(&nbsp;$count&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id741\">Log::Report::Lexicon::Table::pluralIndex()</a></p>",
         "name" : "pluralIndex",
         "id" : "id741-id637",
         "extends" : "id741"
      },
      "id695" : {
         "name" : "The msgctxt",
         "id" : "id695",
         "type" : "subsection",
         "intro" : "<p>The gnutext implementation of the context is very simple.  This is to\nbe expected from a library written in C.  The msgctxt alternatives\nare matched against the context keywords of the message.  In all or\nnone of the alternatives match, then just a random translation is\nchosen.</p>\n\n<p>In the simplest form, the msgctxt field contains a single keyword\n(not containing a comma).</p>\n<pre>\n  msgctxt \"gender=male\"\n</pre>\n\n<p>But you can do more.  <b>Be warned</b> that most (all?) existing tools\nwhich smartly edit PO-files do not understand these constructs: they\nsee the msgctxt as dump string without meaning.</p>\n<pre>\n  msgctxt \"agegroup=baby,agegroup=grandparent\" # baby OR grandparent\n  msgctxt \"gender=male agegroup=adult\"         # both male AND adult\n</pre>\n\n<p>So, a comma separated list of alternatives.  If any matches, then the\nrule is selected.</p>\n",
         "path" : "DETAILS/Using context_rules/The msgctxt",
         "level" : 3
      },
      "id1007" : {
         "id" : "id1007",
         "name" : "the 'filter' sub-command needs a CODE reference.",
         "subroutine" : "id1003",
         "type" : "error"
      },
      "id659" : {
         "type" : "error",
         "name" : "the header is not the first entry, needed for charset in $fn.",
         "id" : "id659",
         "subroutine" : "id643"
      },
      "id776" : {
         "subroutines" : [
            "id781",
            "id785",
            "id778",
            "id784",
            "id777",
            "id780",
            "id783",
            "id779"
         ],
         "level" : 2,
         "name" : "Logging",
         "id" : "id776",
         "path" : "METHODS/Logging",
         "type" : "section"
      },
      "id678" : {
         "level" : 2,
         "id" : "id678",
         "name" : "Attributes",
         "subroutines" : [
            "id679"
         ],
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id221" : {
         "type" : "chapter",
         "nest" : [
            "id1303",
            "id1304",
            "id1305"
         ],
         "path" : "METHODS",
         "id" : "id221",
         "name" : "METHODS",
         "level" : 1,
         "subroutines" : [
            "id222",
            "id223"
         ]
      },
      "id791-id958" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "value" : "&lt;required&gt;",
         "extends" : "id791",
         "id" : "id791-id958",
         "name" : "linenr"
      },
      "id524" : {
         "name" : "msgctxt",
         "id" : "id524",
         "intro" : "<p>Context string: specifies where the <tt class=\"parameter\">msgid</tt> belongs.</p>\n",
         "type" : "option",
         "params" : "$context"
      },
      "id794-id1082" : {
         "name" : "params",
         "id" : "id794-id1082",
         "extends" : "id794",
         "params" : "ARRAY",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>"
      },
      "id164" : {
         "diagnostics" : [
            "id168"
         ],
         "name" : "new",
         "id" : "id164",
         "examples" : [
            "id167"
         ],
         "call" : "$class-&gt;<b><a name=\"id164\">new</a></b>(&nbsp;%options&nbsp;)",
         "type" : "c_method",
         "options" : [
            [
               "id165",
               "id166"
            ]
         ]
      },
      "id466" : {
         "subroutine" : "id447",
         "name" : "textdomain parameter is required.",
         "id" : "id466",
         "type" : "error"
      },
      "id793-id1228" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>",
         "name" : "call",
         "id" : "id793-id1228",
         "extends" : "id793",
         "value" : "&lt;required&gt;"
      },
      "id759-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "params" : "LOCALE",
         "type" : "option",
         "id" : "id759-id818",
         "name" : "locale",
         "extends" : "id759"
      },
      "id415" : {
         "id" : "id415",
         "name" : "DESCRIPTION",
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>This module helps maintaining the POT files, updating the list of\nmessage-ids which are kept in them.  After initiation, the <a class=\"jump\" href=\"id432\">process()</a>\nmethod needs to be called with all files which changed since last\nprocessing and the existing PO files will get updated accordingly.  If no\ntranslations exist yet, one <code>textdomain/xx.po</code> file will be created.</p>\n",
         "level" : 1
      },
      "id795-id818" : {
         "value" : "&lt;required&gt;",
         "extends" : "id795",
         "id" : "id795-id818",
         "name" : "params",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>",
         "type" : "default"
      },
      "id785-id1174" : {
         "call" : "$any-&gt;<b><a name=\"id785\">stackTraceLine</a></b>(&nbsp;%options&nbsp;)",
         "name" : "stackTraceLine",
         "id" : "id785-id1174",
         "extends" : "id785",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id785\">Log::Report::Dispatcher::stackTraceLine()</a></p>",
         "options" : [
            [
               "id800-id1174",
               "id801-id1174"
            ],
            [
               "id792-id1174",
               "id793-id1174"
            ],
            [
               "id788-id1174",
               "id789-id1174"
            ],
            [
               "id790-id1174",
               "id791-id1174"
            ],
            [
               "id796-id1174",
               "id797-id1174"
            ],
            [
               "id798-id1174",
               "id799-id1174"
            ],
            [
               "id786-id1174",
               "id787-id1174"
            ],
            [
               "id794-id1174",
               "id795-id1174"
            ]
         ],
         "type" : "ci_method"
      },
      "id408" : {
         "name" : "Missing key '$key' in format '$format', in $use //template",
         "id" : "id408",
         "subroutine" : "id402",
         "type" : "warning"
      },
      "id1193" : {
         "intro" : "<p>Returns a level which is understood by Log::Dispatch, based on\na translation table.  This can be changed with <a class=\"jump\" href=\"id1181\">new(to_level)</a>.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id1193\">reasonToLevel</a></b>(&nbsp;$reason&nbsp;)",
         "id" : "id1193",
         "name" : "reasonToLevel"
      },
      "id899-id217" : {
         "extends" : "id899",
         "name" : "_msgctxt",
         "id" : "id899-id217",
         "type" : "option",
         "params" : "$context",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id899\">Log::Report::Message::new(_msgctxt)</a></p>"
      },
      "id961" : {
         "nest" : [
            "id962",
            "id963"
         ],
         "id" : "id961",
         "name" : "DESCRIPTION",
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>This dispatchers produces output tot syslog, based on the <code>Sys::Log4perl</code>\nmodule (which will not be automatically installed for you).</p>\n",
         "level" : 1
      },
      "id1231" : {
         "id" : "id1231",
         "name" : "DESCRIPTION",
         "level" : 1,
         "intro" : "<p>This basic file logger accepts an file-handle or filename as destination.</p>\n\n<p>[1.00] writing to the file protected by a lock, so multiple processes\ncan write to the same file.</p>\n",
         "path" : "DESCRIPTION",
         "type" : "chapter"
      },
      "id788-id944" : {
         "id" : "id788-id944",
         "name" : "filename",
         "extends" : "id788",
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>"
      },
      "id799-id1090" : {
         "extends" : "id799",
         "value" : "8",
         "name" : "max_params",
         "id" : "id799-id1090",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>"
      },
      "id871" : {
         "intro" : "<p>When defined, the <tt class=\"parameter\">_plural</tt> need to be defined as well.  When an\nARRAY is provided, the length of the ARRAY is taken.  When a HASH\nis given, the number of keys in the HASH is used.</p>\n",
         "type" : "option",
         "params" : "INTEGER|ARRAY|HASH",
         "name" : "_count",
         "id" : "id871"
      },
      "id763-id1174" : {
         "id" : "id763-id1174",
         "name" : "format_reason",
         "extends" : "id763",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>",
         "params" : "'UPPERCASE'|'LOWERCASE'|'UCFIRST'|'IGNORE'|CODE",
         "type" : "option"
      },
      "id67" : {
         "call" : "$obj-&gt;<b><a name=\"id67\">encodeFor</a></b>(&nbsp;\\%settings|undef|($predefined, %overrule)&nbsp;)",
         "id" : "id67",
         "name" : "encodeFor",
         "intro" : "<p>[0.91] Enable/define the output encoding.  The <tt class=\"parameter\">%settings</tt> contain the <code>encoding</code>\nCODE and the tag name patterns to <code>exclude</code> from encoding.  Output for <code>HTML</code>\nis <tt class=\"parameter\">$predefined</tt>, but you may <tt class=\"parameter\">%overrule</tt> its settings.</p>\n\n<p>Read section <a class=\"jump\" href=\"id110\">Output encoding</a> about the details.</p>\n",
         "type" : "i_method"
      },
      "id1203" : {
         "options" : [
            [
               "id1208",
               "id1209"
            ],
            [
               "id1206",
               "id1207"
            ],
            [
               "id1204",
               "id1205"
            ]
         ],
         "type" : "c_method",
         "intro" : "<p>Create a new exception object, which is basically a <tt class=\"parameter\">message</tt> which\nwas produced for a <tt class=\"parameter\">reason</tt>.</p>\n",
         "name" : "new",
         "id" : "id1203",
         "call" : "$class-&gt;<b><a name=\"id1203\">new</a></b>(&nbsp;%options&nbsp;)"
      },
      "id407" : {
         "subroutine" : "id402",
         "name" : "superfluous positional parameters for '$msgid'",
         "id" : "id407",
         "type" : "error"
      },
      "id1035" : {
         "intro" : "<p>Label to indicate that the two MSGIDs are related, the first as\nsingle, the seconds as its plural.  Only used to find the text\nfragments to be translated.  The function itself does nothing.</p>\n",
         "type" : "function",
         "examples" : [
            "id1036"
         ],
         "call" : "<b><a name=\"id1035\">N__n</a></b>(&nbsp;$single_msgid, $plural_msgid&nbsp;)",
         "name" : "N__n",
         "id" : "id1035"
      },
      "id921" : {
         "type" : "i_method",
         "intro" : "<p>Translate a message.  If not specified, the default locale is used.</p>\n",
         "id" : "id921",
         "name" : "toString",
         "call" : "$obj-&gt;<b><a name=\"id921\">toString</a></b>(&nbsp;[$locale]&nbsp;)"
      },
      "id777-id818" : {
         "extends" : "id777",
         "name" : "close",
         "id" : "id777-id818",
         "call" : "$obj-&gt;<b><a name=\"id777\">close</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id777\">Log::Report::Dispatcher::close()</a></p>"
      },
      "id813" : {
         "subroutines" : [
            "id817",
            "id814"
         ],
         "name" : "FUNCTIONS",
         "id" : "id813",
         "level" : 1,
         "path" : "FUNCTIONS",
         "type" : "chapter"
      },
      "id886" : {
         "type" : "default",
         "id" : "id886",
         "name" : "_tags",
         "value" : "[]"
      },
      "id353" : {
         "params" : "$file|\\@files",
         "type" : "option",
         "intro" : "<p>By default, all filenames from the INCLUDE_PATH directories which match\nthe <tt class=\"parameter\">filename_match</tt> are processed, but you may explicitly create a\nsubset by hand.</p>\n",
         "name" : "filenames",
         "id" : "id353"
      },
      "id426" : {
         "type" : "i_method",
         "intro" : "<p>Returns the <a class=\"jump\" href=\"id591\">Log::Report::Lexicon::Index</a> object, which is listing\nthe files in the lexicon directory tree.</p>\n",
         "name" : "index",
         "id" : "id426",
         "call" : "$obj-&gt;<b><a name=\"id426\">index</a></b>"
      },
      "id1009" : {
         "id" : "id1009",
         "type" : "example",
         "intro" : "<pre>  my $x = try { 3/$x };  # mind the ';' !!\n  if($@) {               # signals something went wrong\n\n  if(try {...}) {        # block ended normally, returns bool\n\n  try { ... }            # no comma!!\n     mode =&gt; 'DEBUG', accept =&gt; 'ERROR-';\n\n  try sub { ... },       # with comma, also \\&amp;function\n     mode =&gt; 'DEBUG', accept =&gt; 'ALL';\n\n  my $response = try { $ua-&gt;request($request) };\n  if(my $e = $@-&gt;wasFatal) ...\n</pre>\n"
      },
      "id900-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id899\">Log::Report::Message::new(_msgctxt)</a></p>",
         "type" : "default",
         "extends" : "id900",
         "value" : "<code>undef</code>",
         "name" : "_msgctxt",
         "id" : "id900-id217"
      },
      "id672" : {
         "intro" : "<p>[Added in <a class=\"jump\" href=\"id979\">Log::Report</a> v1.00]\nThe \"contexts\" concept in (GNU's version of) gettext, has a\nvery restricted purpose: to separate two (accidental) uses of the\nsame message-id, under different circumstances.  The same msgid may\ntranslated diffently in one file or the other.</p>\n\n<p>For instance, two libraries used in the same application, or two\ncomponentent within a single library both want to used the same\ndefault text (which usually is very short)</p>\n<pre>\n  char * t1 = pgettext('interface', 'None');\n  char * t2 = pgettext('selections', 'None');\n</pre>\n\n<p>Some translation setups use the library name consequently as msgctxt.\nBut, the name \"context\" is pretending much more power than the gettext\nlibraries are capable of: it usually only behaves like a namespace.</p>\n\n<p>For <a class=\"jump\" href=\"id979\">Log::Report</a>, the power of \"context\" is extended with selecting\nbetween alternatives for the use of a msgid <b>on the same spot</b>.</p>\n\n<p>For instance, the gender of the user of the website determines whether\n`he' or `she' needs to be used in the translation.  In this example,\nthe gender is set as context keyword in the message:</p>\n<pre>\n  my ($name, $sex) = ('Jack', 'male');\n  print __x\"{name&lt;gender} found his key\", name =&gt; $name,\n    _context =&gt; \"gender=$sex\";\n</pre>\n",
         "path" : "DESCRIPTION",
         "type" : "chapter",
         "level" : 1,
         "name" : "DESCRIPTION",
         "id" : "id672"
      },
      "id836" : {
         "path" : "METHODS/Attributes",
         "type" : "section",
         "subroutines" : [
            "id771-id818",
            "id774-id818",
            "id775-id818",
            "id772-id818",
            "id773-id818",
            "id837",
            "id838",
            "id840",
            "id839",
            "id842"
         ],
         "level" : 2,
         "name" : "Attributes",
         "id" : "id836"
      },
      "id787-id944" : {
         "id" : "id787-id944",
         "name" : "package",
         "extends" : "id787",
         "value" : "&lt;required&gt;",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>"
      },
      "id1227" : {
         "intro" : "<pre>  print $exception;  # via overloading\n  $exception-&gt;print; # OO style\n</pre>\n",
         "type" : "example",
         "id" : "id1227"
      },
      "id460" : {
         "id" : "id460",
         "name" : "index",
         "intro" : "<p>A set of translations (<a class=\"jump\" href=\"id511\">Log::Report::Lexicon::PO</a> objects),\nwith msgid as key.</p>\n",
         "type" : "option",
         "params" : "HASH"
      },
      "id1169-id611" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1169\">Log::Report::Translator::new()</a></p>",
         "type" : "c_method",
         "call" : "$class-&gt;<b><a name=\"id1169\">new</a></b>(&nbsp;%options&nbsp;)",
         "extends" : "id1169",
         "id" : "id1169-id611",
         "name" : "new"
      },
      "id1289" : {
         "level" : 2,
         "id" : "id1289",
         "name" : "Available back-ends",
         "path" : "DETAILS/Available back-ends",
         "type" : "section"
      },
      "id914" : {
         "name" : "to",
         "id" : "id914",
         "call" : "$obj-&gt;<b><a name=\"id914\">to</a></b>(&nbsp;[$name]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Returns the <tt class=\"parameter\">$name</tt> of a dispatcher if explicitly specified with\nthe '_to' key. Can also be used to set it.  Usually, this will\nreturn <code>undef</code>, because usually all dispatchers get all messages.</p>\n"
      },
      "id1073" : {
         "id" : "id1073",
         "name" : "the mode of a dispatcher\n",
         "intro" : "<pre>  my $mode = dispatcher(find =&gt; 'myname')-&gt;mode;\n</pre>\n",
         "type" : "example"
      },
      "id393" : {
         "type" : "error",
         "id" : "id393",
         "name" : "extension to domain '$name' already exists",
         "subroutine" : "id392"
      },
      "id777-id1090" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id777\">Log::Report::Dispatcher::close()</a></p>",
         "id" : "id777-id1090",
         "name" : "close",
         "extends" : "id777",
         "call" : "$obj-&gt;<b><a name=\"id777\">close</a></b>"
      },
      "id842" : {
         "intro" : "<p>Returns the value of <a class=\"jump\" href=\"id834\">new(on_die)</a>.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id842\">die2reason</a></b>",
         "name" : "die2reason",
         "id" : "id842"
      },
      "id1263" : {
         "level" : 2,
         "name" : "Available back-ends",
         "id" : "id1263",
         "type" : "section",
         "path" : "DETAILS/Available back-ends"
      },
      "id877-id217" : {
         "id" : "id877-id217",
         "name" : "_category",
         "extends" : "id877",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id877\">Log::Report::Message::new(_category)</a></p>",
         "type" : "option",
         "params" : "INTEGER"
      },
      "id1083" : {
         "id" : "id1083",
         "name" : "NAME",
         "intro" : "<p>Log::Report::Dispatcher::Perl - send messages to die and warn</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "level" : 1
      },
      "id419" : {
         "name" : "lexicon",
         "id" : "id419",
         "params" : "$directory",
         "type" : "option",
         "intro" : "<p>The place where the lexicon is kept.  When no lexicon is defined yet,\nthis will be the <tt class=\"parameter\">$directory</tt> where an <code>domain/xx.po</code> file will be created.</p>\n"
      },
      "id799-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>",
         "type" : "default",
         "name" : "max_params",
         "id" : "id799-id818",
         "extends" : "id799",
         "value" : "8"
      },
      "id794-id944" : {
         "name" : "params",
         "id" : "id794-id944",
         "extends" : "id794",
         "params" : "ARRAY",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>"
      },
      "id1279" : {
         "type" : "section",
         "path" : "DETAILS/Available back-ends",
         "level" : 2,
         "id" : "id1279",
         "name" : "Available back-ends"
      },
      "id789-id1174" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>",
         "type" : "default",
         "name" : "filename",
         "id" : "id789-id1174",
         "value" : "&lt;required&gt;",
         "extends" : "id789"
      },
      "id927-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id927\">Log::Report::Message::freeze()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id927\">freeze</a></b>(&nbsp;%options&nbsp;)",
         "extends" : "id927",
         "id" : "id927-id217",
         "name" : "freeze"
      },
      "id1153" : {
         "name" : "setContext",
         "id" : "id1153",
         "examples" : [
            "id1154"
         ],
         "call" : "$obj-&gt;<b><a name=\"id1153\">setContext</a></b>(&nbsp;STRING|HASH|ARRAY|PAIRS&nbsp;)",
         "diagnostics" : [
            "id1155"
         ],
         "intro" : "<p>Temporary set the default translation context for messages.  This is used\nwhen the message is created without a <code>_context</code> parameter. The context\ncan be retrieved with <a class=\"jump\" href=\"id1157\">defaultContext()</a>.</p>\n\n<p>Contexts are totally ignored then there are no <code>context_rules</code>.  When\nyou do not wish to change settings, you may simply provide an empty <tt class=\"parameter\">HASH</tt>.</p>\n",
         "type" : "i_method"
      },
      "id1328" : {
         "name" : "INHERITANCE",
         "id" : "id1328",
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Dispatcher::Callback\n   is a <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>\n</pre>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id301" : {
         "type" : "section",
         "path" : "METHODS/Attributes",
         "name" : "Attributes",
         "id" : "id301",
         "level" : 2,
         "subroutines" : [
            "id428-id289",
            "id430-id289",
            "id426-id289",
            "id429-id289",
            "id427-id289",
            "id302",
            "id303"
         ]
      },
      "id1173-id611" : {
         "call" : "$obj-&gt;<b><a name=\"id1173\">load</a></b>(&nbsp;$domain, $locale&nbsp;)",
         "extends" : "id1173",
         "id" : "id1173-id611",
         "name" : "load",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1173\">Log::Report::Translator::load()</a></p>",
         "type" : "i_method"
      },
      "id906-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id906\">Log::Report::Message::append()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id906\">append</a></b>",
         "extends" : "id906",
         "name" : "append",
         "id" : "id906-id217"
      },
      "id895-id217" : {
         "extends" : "id895",
         "id" : "id895-id217",
         "name" : "_lang",
         "params" : "ISO",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id895\">Log::Report::Message::new(_lang)</a></p>"
      },
      "id420" : {
         "id" : "id420",
         "name" : "lexicon",
         "value" : "&lt;required&gt;",
         "type" : "default"
      },
      "id774-id1174" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id774\">Log::Report::Dispatcher::isDisabled()</a></p>",
         "extends" : "id774",
         "id" : "id774-id1174",
         "name" : "isDisabled",
         "call" : "$obj-&gt;<b><a name=\"id774\">isDisabled</a></b>"
      },
      "id1069" : {
         "type" : "subsection",
         "intro" : "<p>Traditionally, perl has a very simple view on error reports: you\neither have a warning or an error.  However, it would be much clearer\nfor user's and module-using applications, when a distinction is made\nbetween various causes.  For instance, a configuration error is quite\ndifferent from a disk-full situation.  In <code>Log::Report</code>, the produced\nreports in the code tell <i>what</i> is wrong.  The main application defines\nloggers, which interpret the cause into (syslog) levels.</p>\n\n<p>Defined by <code>Log::Report</code> are</p>\n\n<ul>\n\n\n<p><li>trace (debug, program)<br />\nThe message will be used when some logger has debugging enabled.  The\nmessages show steps taken by the program, which are of interest by the\ndevelopers and maintainers of the code, but not for end-users.</p>\n\n\n\n<p><li>assert (program)<br />\nShows an unexpected condition, but continues to run.  When you want the\nprogram to abort in such situation, that use <code>panic</code>.</p>\n\n\n\n<p><li>info (verbose, program)<br />\nThese messages show larger steps in the execution of the program.\nExperienced users of the program usually do not want to see all these\nintermediate steps.  Most programs will display info messages (and\nhigher) when some <code>verbose</code> flag is given on the command-line.</p>\n\n\n\n<p><li>notice (program)<br />\nAn user may need to be aware of the program's accidental smart behavior,\nfor instance, that it initializes a lasting <code>Desktop</code> directory in your\nhome directory.  Notices should be sparse.</p>\n\n\n\n<p><li>warning (program)<br />\nThe program encountered some problems, but was able to work around it\nby smart behavior.  For instance, the program does not understand a\nline from a log-file, but simply skips the line.</p>\n\n\n\n<p><li>mistake (user)<br />\nWhen a user does something wrong, but what is correctable by smart\nbehavior of the program.  For instance, in some configuration file,\nyou can fill-in \"yes\" or \"no\", but the user wrote \"yeah\".  The program\ninterprets this as \"yes\", producing a mistake message as warning.</p>\n\n<p>It is much nicer to tell someone that he/she made a mistake, than\nto call that an error.</p>\n\n\n\n<p><li>error (user)<br />\nThe user did something wrong, which is not automatically correctable\nor the program is not willing to correct it automatically for reasons\nof code quality.  For instance, an unknown option flag is given on the\ncommand-line.  These are configuration issues, and have no useful\nvalue in <code>$!</code>.  The program will be stopped, usually before taken off.</p>\n\n\n\n<p><li>fault (system)<br />\nThe program encountered a situation where it has no work-around.  For\ninstance, a file cannot be opened to be written.  The cause of that\nproblem can be some user error (i.e. wrong filename), or external\n(you accidentally removed a directory yesterday).  In any case, the\n<code>$!</code> (<code>$ERRNO</code>) variable is set here.</p>\n\n\n\n<p><li>alert (system)<br />\nSome external cause disturbs the execution of the program, but the\nprogram stays alive and will try to continue operation.  For instance,\nthe connection to the database is lost.  After a few attempts, the\ndatabase can be reached and the program continues as if nothing happened.\nThe cause is external, so <code>$!</code> is set.  Usually, a system administrator\nneeds to be informed about the problem.</p>\n\n\n\n<p><li>failure (system)<br />\nSome external cause makes it impossible for this program to continue.\n<code>$!</code> is set, and usually the system administrator wants to be\ninformed.  The program will die.</p>\n\n<p>The difference with <code>fault</code> is subtile and not always clear.  A fault\nreports an error returned by an operating system call, where the failure\nwould report an operational problem, like a failing mount.</p>\n\n\n\n<p><li>panic (program)<br />\nAll above report classes are expected: some predictable situation\nis encountered, and therefore a message is produced.  However, programs\noften do some internal checking.  Of course, these conditions should\nnever be triggered, but if they do... then we can only stop.</p>\n\n<p>For instance, in an OO perl module, the base class requires all\nsub-classes to implement a certain method.  The base class will produce\na stub method with triggers a panic when called.  The non-dieing version\nof this test <code>assert</code>.</p>\n</ul>\n\n<p><i>Debugging</i> or being <code>verbose</code> are run-time behaviors, and have nothing\ndirectly to do with the type of message which is produced.  These two\nare <b>modes</b> which can be set on the dispatchers: one dispatcher may\nbe more verbose that some other.</p>\n\n<p>On purpose, we do not use the terms <code>die</code> or <code>fatal</code>, because the\ndispatcher can be configured what to do in cause of which condition.\nFor instance, it may decide to stop execution on warnings as well.</p>\n\n<p>The terms <code>carp</code> and <code>croak</code> are avoided, because the program cause\nversus user cause distinction (warn vs carp) is reflected in the use\nof different reasons.  There is no need for <code>confess</code> and <code>croak</code>\neither, because the dispatcher can be configured to produce stack-trace\ninformation (for a limited sub-set of dispatchers)</p>\n",
         "path" : "DETAILS/Error handling models/The Reason for the report",
         "level" : 3,
         "nest" : [
            "id1070"
         ],
         "id" : "id1069",
         "name" : "The Reason for the report"
      },
      "id641" : {
         "type" : "chapter",
         "path" : "METHODS",
         "nest" : [
            "id642",
            "id662",
            "id666"
         ],
         "level" : 1,
         "name" : "METHODS",
         "id" : "id641"
      },
      "id880" : {
         "type" : "default",
         "value" : "<code>undef</code>",
         "id" : "id880",
         "name" : "_prepend"
      },
      "id878-id217" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id877\">Log::Report::Message::new(_category)</a></p>",
         "value" : "<code>undef</code>",
         "extends" : "id878",
         "name" : "_category",
         "id" : "id878-id217"
      },
      "id84" : {
         "type" : "default",
         "id" : "id84",
         "name" : "_append",
         "value" : "<code>undef</code>"
      },
      "id1042" : {
         "call" : "<b><a name=\"id1042\">__np</a></b>(&nbsp;$msgctxt, $msgid, $plural, count&nbsp;)",
         "name" : "__np",
         "id" : "id1042",
         "type" : "function"
      },
      "id795-id1090" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>",
         "type" : "default",
         "name" : "params",
         "id" : "id795-id1090",
         "value" : "&lt;required&gt;",
         "extends" : "id795"
      },
      "id830" : {
         "intro" : "<p>The exit string or object (<code>$@</code>) of the eval'ed block, in its unprocessed state.</p>\n",
         "params" : "$text",
         "type" : "option",
         "id" : "id830",
         "name" : "died"
      },
      "id759-id1090" : {
         "id" : "id759-id1090",
         "name" : "locale",
         "extends" : "id759",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "type" : "option",
         "params" : "LOCALE"
      },
      "id778-id1090" : {
         "call" : "$obj-&gt;<b><a name=\"id778\">log</a></b>(&nbsp;\\%options, $reason, $message, $domain&nbsp;)",
         "name" : "log",
         "id" : "id778-id1090",
         "extends" : "id778",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id778\">Log::Report::Dispatcher::log()</a></p>",
         "type" : "i_method"
      },
      "id848" : {
         "intro" : "<p>Returns <code>true</code> if the block was left with an fatal message.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id848\">failed</a></b>",
         "name" : "failed",
         "id" : "id848"
      },
      "id788-id1082" : {
         "id" : "id788-id1082",
         "name" : "filename",
         "extends" : "id788",
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>"
      },
      "id699" : {
         "name" : "SYNOPSIS",
         "id" : "id699",
         "intro" : "<pre>  my $ppi = Log::Report::Extract::PerlPPI-&gt;new(\n    lexicon =&gt; '/usr/share/locale',\n  );\n  $ppi-&gt;process('lib/My/Pkg.pm');  # call for each .pm file\n  $ppi-&gt;showStats;                 # optional\n  $ppi-&gt;write;\n\n  # See script  xgettext-perl\n  bin/xgettext-perl -p $lexdir @source_dirs\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter",
         "level" : 1
      },
      "id655" : {
         "type" : "fault",
         "name" : "cannot seek to $loc in $fn for msgid strings: $!",
         "id" : "id655",
         "subroutine" : "id643"
      },
      "id800-id1228" : {
         "type" : "option",
         "params" : "INTEGER",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "name" : "abstract",
         "id" : "id800-id1228",
         "extends" : "id800"
      },
      "id1287" : {
         "level" : 3,
         "name" : "Filters",
         "id" : "id1287",
         "type" : "subsection",
         "path" : "DETAILS/Processing the message/Filters"
      },
      "id173" : {
         "call" : "$obj-&gt;<b><a name=\"id173\">configure</a></b>(&nbsp;%options&nbsp;)",
         "diagnostics" : [
            "id178"
         ],
         "id" : "id173",
         "name" : "configure",
         "intro" : "<p>Collect the settings for this domain.</p>\n",
         "type" : "i_method",
         "options" : [
            [
               "id176",
               "id177"
            ],
            [
               "id174",
               "id175"
            ]
         ]
      },
      "id511" : {
         "title" : "one translation definition",
         "is_pure_pod" : false,
         "id" : "id511",
         "name" : "Log::Report::Lexicon::PO",
         "package" : "Log::Report::Lexicon::PO",
         "inheritance" : {},
         "distribution" : "Log-Report-Lexicon",
         "version" : "1.16",
         "chapters" : [
            "id512",
            "id513",
            "id514",
            "id515"
         ]
      },
      "id1229" : {
         "name" : "NAME",
         "id" : "id1229",
         "type" : "chapter",
         "intro" : "<p>Log::Report::Dispatcher::File - send messages to a file or file-handle</p>\n",
         "path" : "NAME",
         "level" : 1
      },
      "id922-id217" : {
         "id" : "id922-id217",
         "name" : "toHTML",
         "extends" : "id922",
         "call" : "$obj-&gt;<b><a name=\"id922\">toHTML</a></b>(&nbsp;[$locale]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id922\">Log::Report::Message::toHTML()</a></p>"
      },
      "id787-id1082" : {
         "value" : "&lt;required&gt;",
         "extends" : "id787",
         "id" : "id787-id1082",
         "name" : "package",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>",
         "type" : "default"
      },
      "id872-id217" : {
         "extends" : "id872",
         "value" : "<code>undef</code>",
         "name" : "_count",
         "id" : "id872-id217",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id871\">Log::Report::Message::new(_count)</a></p>",
         "type" : "default"
      },
      "id111" : {
         "name" : "Example with Log::Report::Template",
         "id" : "id111",
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/Output encoding/Example with Log::Report::Template",
         "intro" : "<p>In pure Template Toolkit, you would write</p>\n<pre>\n  # in your TT-template\n  &lt;div&gt;Username: [% username | html %]&lt;/div>\n  # in your code\n  username =&gt; $user-&gt;name,\n</pre>\n\n<p>With plain <a class=\"jump\" href=\"id47\">String::Print</a> with output encoding enabled, you can do:</p>\n<pre>\n  # in your TT-template\n  &lt;div&gt;[% show_username %]&lt;/div>\n  # in your code with encodeFor('HTML')\n  show_username =&gt; printi(\"Username: {user}\", user =&gt; $user-&gt;name),\n  # or\n  show_username =&gt; printp(\"Username: %s\", $user-&gt;name),\n</pre>\n\n<p>That does not look very efficient, however it changes for the good when\nthis is combined with <a class=\"jump\" href=\"id717\">Log::Report::Lexicon</a> (translations)  You can\neither do:</p>\n<pre>\n  # in your TT-template\n  &lt;div&gt;[% show_username %]&lt;/div>\n  # in your code with encodeFor('HTML')\n  show_username =&gt; __x(\"Username: {user}\", user =&gt; $user-&gt;name),\n</pre>\n\n<p>Shorter:</p>\n<pre>\n  # in your TT-template with encodeFor('HTML')\n  &lt;div&gt;[% loc(\"Username: {user}\", user =&gt; username) %]&lt;/div>\n  # in your code\n  username =&gt; $user-&gt;name,\n</pre>\n\n<p>Even shorter:</p>\n<pre>\n  # in your TT-template with encodeFor('HTML')\n  &lt;div&gt;[% loc(\"Username: {user.name}\", user =&gt; userobj) %]&lt;/div>\n  # in your code\n  userobj =&gt; $user,\n</pre>\n\n<p>Shortest:</p>\n<pre>\n  # in your TT-template with encodeFor('HTML')\n  &lt;div&gt;[% loc(\"Username: {user.name}\") %]&lt;/div>\n  # in your code\n  user =&gt; $user,\n</pre>\n\n<p>Shorter that the original, and translations for free!\nMore examples in <a class=\"jump\" href=\"id320\">Log::Report::Template</a>.</p>\n"
      },
      "id770" : {
         "id" : "id770",
         "name" : "Attributes",
         "level" : 2,
         "subroutines" : [
            "id771",
            "id774",
            "id775",
            "id772",
            "id773"
         ],
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id573" : {
         "level" : 1,
         "name" : "METHODS",
         "id" : "id573",
         "path" : "METHODS",
         "nest" : [
            "id574",
            "id584",
            "id587"
         ],
         "type" : "chapter"
      },
      "id847" : {
         "subroutines" : [
            "id848",
            "id850",
            "id855",
            "id849"
         ],
         "level" : 2,
         "name" : "Status",
         "id" : "id847",
         "path" : "METHODS/Status",
         "type" : "section"
      },
      "id772-id1090" : {
         "call" : "$obj-&gt;<b><a name=\"id772\">type</a></b>",
         "name" : "type",
         "id" : "id772-id1090",
         "extends" : "id772",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id772\">Log::Report::Dispatcher::type()</a></p>",
         "type" : "i_method"
      },
      "id1067" : {
         "level" : 3,
         "path" : "DETAILS/Introduction/Background ideas",
         "intro" : "<p>The following ideas are the base of this implementation:</p>\n\n<ul>\n\n\n\n<p><li>simplification<br />\nHandling errors and warnings is probably the most labor-intensive\ntask for a programmer: when programs are written correctly, up-to\nthree-quarters of the code is related to testing, reporting, and\nhandling (problem) conditions.  Simplifying the way to create reports,\nsimplifies programming and maintenance.</p>\n\n\n\n<p><li>multiple dispatchers<br />\nIt is not the location where the (for instance) error occurs which\ndetermines what will happen with the text, but the main application which\nuses the the complaining module has control.  Messages have a reason.\nBased on the `reason' classification, they can get ignored, send to one\nor multiple dispatchers, like Log::Dispatch, Log::Log4perl,\nor UNIX syslog.</p>\n\n\n\n<p><li>delayed translations<br />\nThe background ideas are that of Locale::TextDomain, based\non <code>gettext()</code>.  However, in the <code>Log::Report</code> infrastructure,\ntranslations are postponed until the text is dispatched to a screen\nor log-file; the same report can be sent to syslog in (for instance)\nEnglish and to the user interface in Dutch.</p>\n\n\n\n<p><li>context sensitive<br />\nUsing contexts, you can set-up how to translate or rewrite messages,\nto improve messages.  A typical problem is whether to use gender in\ntext (use 'his' or 'her'): you can set a gender in a context, and the\nuse translation tables to pick the right one.</p>\n</ul>\n",
         "type" : "subsection",
         "id" : "id1067",
         "name" : "Background ideas"
      },
      "id1146" : {
         "type" : "default",
         "value" : "<code>undef</code>",
         "name" : "config",
         "id" : "id1146"
      },
      "id1023" : {
         "id" : "id1023",
         "name" : "__",
         "examples" : [
            "id1024"
         ],
         "call" : "<b><a name=\"id1023\">__</a></b>(&nbsp;$msgid&nbsp;)",
         "type" : "function",
         "intro" : "<p>This function (name is <b>two</b> under-score characters) will cause the <tt class=\"parameter\">$msgid</tt>\nto be replaced by the translations when doing the actual output.  Returned\nis a <a class=\"jump\" href=\"id856\">Log::Report::Message</a> object, which will be used in translation\nlater.  Translating is invoked when the object gets stringified.  When\nyou have no translation tables, the <tt class=\"parameter\">$msgid</tt> will be shown untranslated.</p>\n\n<p>If you need options for <a class=\"jump\" href=\"id866\">Log::Report::Message::new()</a> then use <a class=\"jump\" href=\"id1025\">__x()</a>;\nthe prototype of this function does not permit parameters: it is a\nprefix operator!</p>\n"
      },
      "id1277" : {
         "path" : "METHODS/Managing PO's/Administration",
         "type" : "subsection",
         "subroutines" : [
            "id741-id441",
            "id745-id441",
            "id743-id441",
            "id493",
            "id489",
            "id491"
         ],
         "level" : 3,
         "name" : "Administration",
         "id" : "id1277"
      },
      "id569" : {
         "id" : "id569",
         "name" : "Log::Report::Lexicon::POTcompact",
         "is_pure_pod" : false,
         "title" : "use translations from a POT file",
         "distribution" : "Log-Report-Lexicon",
         "inheritance" : {
            "extends" : [
               "Log::Report::Lexicon::Table"
            ]
         },
         "package" : "Log::Report::Lexicon::POTcompact",
         "version" : "1.16",
         "chapters" : [
            "id570",
            "id1332",
            "id571",
            "id572",
            "id573"
         ]
      },
      "id792-id1174" : {
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>",
         "name" : "call",
         "id" : "id792-id1174",
         "extends" : "id792"
      },
      "id1122" : {
         "name" : "SYNOPSIS",
         "id" : "id1122",
         "level" : 1,
         "intro" : "<pre>  use MojoX::Log::Report;\n  my $log = MojoX::Log::Report-&gt;new(%options);\n  $app-&gt;log($log);  # install logger in the Mojo::App\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter"
      },
      "id226" : {
         "name" : "SYNOPSIS",
         "id" : "id226",
         "level" : 1,
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # When your main program is not a Dancer object\n  use My::Dancer::App;\n  use Log::Report;\n  ... start dispatcher ...\n  error \"something is wrong\";   # Log::Report::error()\n\n  # When your main program is a Dancer object\n  use Dancer;\n  use Dancer::Logger::LogReport;\n  use Log::Report import =&gt; 'dispatcher';\n  ... start dispatcher ...\n  error \"something is wrong\";   # Dancer::error()\n\n  # In any case, your main program needs to start log dispatcers\n  # Both Dancer and other Log::Report based modules will send\n  # their messages here:\n  dispatcher FILE =&gt; 'default', ...;\n\n  # In your config\n  logger: log_report\n  logger_format: %i%m   # keep it simple\n  log: debug            # filtered by dispatchers\n</pre>\n",
         "type" : "chapter"
      },
      "id129" : {
         "name" : "token '$token' not recognized as reason",
         "id" : "id129",
         "subroutine" : "id124",
         "type" : "error"
      },
      "id796-id958" : {
         "extends" : "id796",
         "name" : "max_line",
         "id" : "id796-id958",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "params" : "INTEGER",
         "type" : "option"
      },
      "id687" : {
         "name" : "expand",
         "id" : "id687",
         "diagnostics" : [
            "id688"
         ],
         "call" : "$obj-&gt;<b><a name=\"id687\">expand</a></b>(&nbsp;$msgid, $language, %options&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Expand the context settings into all possible combinations which need\ntranslations in the PO file.  This may depend on the <tt class=\"parameter\">$language</tt>.\nThe <tt class=\"parameter\">$msgid</tt> is used in error messages.</p>\n"
      },
      "id1156" : {
         "intro" : "<p>[1.10] Make changes and additions to the active context (see <a class=\"jump\" href=\"id1153\">setContext()</a>).</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id1156\">updateContext</a></b>(&nbsp;STRING|HASH|ARRAY|PAIRS&nbsp;)",
         "id" : "id1156",
         "name" : "updateContext"
      },
      "id90" : {
         "id" : "id90",
         "name" : "Why use <code>printi()</code> to replace <code>printf()</code>?",
         "intro" : "<p>The <code>printf()</code> function is provided by Perl's CORE; you do not need\nto install any module to use it.  Why would you use consider using\nthis module?</p>\n\n<ul>\n\n\n\n<p><li>translating<br />\n<code>printf()</code> uses positional parameters, where <a class=\"jump\" href=\"id85\">printi()</a> uses names\nto refer to the values to be filled-in.  Especially in a set-up with\ntranslations, where the format strings get extracted into PO-files,\nit is much clearer to use names.  This is also a disadvantage of\n<a class=\"jump\" href=\"id86\">printp()</a></p>\n\n\n\n<p><li>pluggable serializers<br />\n<code>printi()</code> supports serialization for specific data-types: how to\ninterpolate <code>undef</code>, HASHes, etc.</p>\n\n\n\n<p><li>pluggable modifiers<br />\nEspecially useful in context of translations, the FORMAT string may\ncontain (language specific) helpers to insert the values correctly.</p>\n\n\n\n<p><li>correct use of utf8<br />\nSized string formatting in <code>printf()</code> is broken: it takes your string\nas bytes, not Perl strings (which may be utf8).  In unicode, one\n\"character\" may use many bytes.  Also, some characters are displayed\ndouble wide, for instance in Chinese.  The <a class=\"jump\" href=\"id85\">printi()</a> implementation\nwill use Unicode::GCString for correct behavior.</p>\n\n\n\n<p><li>automatic output encoding (for HTML)<br />\nYou can globally declare that all produced strings must be encoded in\na certain format, for instance that HTML entities should be encoded.</p>\n\n</ul>\n",
         "path" : "DETAILS/Why use C<printi()> to replace C<printf()>?",
         "type" : "section",
         "level" : 2
      },
      "id772-id944" : {
         "extends" : "id772",
         "id" : "id772-id944",
         "name" : "type",
         "call" : "$obj-&gt;<b><a name=\"id772\">type</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id772\">Log::Report::Dispatcher::type()</a></p>"
      },
      "id771" : {
         "call" : "$obj-&gt;<b><a name=\"id771\">name</a></b>",
         "id" : "id771",
         "name" : "name",
         "intro" : "<p>Returns the unique name of this dispatcher.</p>\n",
         "type" : "i_method"
      },
      "id746-id637" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id746\">Log::Report::Lexicon::Table::header()</a></p>",
         "name" : "header",
         "id" : "id746-id637",
         "extends" : "id746",
         "call" : "$obj-&gt;<b><a name=\"id746\">header</a></b>(&nbsp;$field&nbsp;)"
      },
      "id110" : {
         "id" : "id110",
         "name" : "Output encoding",
         "nest" : [
            "id111",
            "id112"
         ],
         "level" : 2,
         "path" : "DETAILS/Output encoding",
         "intro" : "<p>[0.91] This module is also used by <a class=\"jump\" href=\"id320\">Log::Report::Template</a>, which is used\nto insert (translated) strings with parameters into HTML templates.\nYou can imagine that some of the parameter may need to be encoded to\nHTML in the template, and other not.</p>\n",
         "type" : "section"
      },
      "id207" : {
         "name" : "conflict: package {pkg} in translation domain {domain1} in {file1} line {line1}, but in {domain2} in {file2} line {line2}.",
         "id" : "id207",
         "subroutine" : "id206",
         "type" : "warning"
      },
      "id762-id1228" : {
         "value" : "'NORMAL'",
         "extends" : "id762",
         "id" : "id762-id1228",
         "name" : "mode",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>"
      },
      "id1086" : {
         "name" : "METHODS",
         "id" : "id1086",
         "level" : 1,
         "type" : "chapter",
         "nest" : [
            "id1087",
            "id1088",
            "id1089"
         ],
         "path" : "METHODS"
      },
      "id637" : {
         "version" : "1.16",
         "chapters" : [
            "id638",
            "id1335",
            "id639",
            "id640",
            "id641"
         ],
         "name" : "Log::Report::Lexicon::MOTcompact",
         "id" : "id637",
         "is_pure_pod" : false,
         "title" : "use translations from an MO file",
         "distribution" : "Log-Report-Lexicon",
         "inheritance" : {
            "extends" : [
               "Log::Report::Lexicon::Table"
            ]
         },
         "package" : "Log::Report::Lexicon::MOTcompact"
      },
      "id510" : {
         "id" : "id510",
         "name" : "ms_locale",
         "call" : "<b><a name=\"id510\">ms_locale</a></b>",
         "type" : "function",
         "intro" : "<p>Returns the locale setting from the control panel.</p>\n"
      },
      "id1266" : {
         "name" : "Filters",
         "id" : "id1266",
         "level" : 3,
         "path" : "DETAILS/Processing the message/Filters",
         "type" : "subsection"
      },
      "id713" : {
         "type" : "info",
         "id" : "id713",
         "name" : "processing file $fn in $charset.",
         "subroutine" : "id708"
      },
      "id654" : {
         "type" : "fault",
         "name" : "cannot read translations from $fn, need $size at $loc: $!",
         "id" : "id654",
         "subroutine" : "id643"
      },
      "id902" : {
         "type" : "example",
         "intro" : "<pre>  my $s = __x \"found {nr} files\", nr =&gt; 5;\n  my $t = $s-&gt;clone(nr =&gt; 3);\n  my $t = $s-&gt;(nr =&gt; 3);      # equivalent\n  print $s;     # found 5 files\n  print $t;     # found 3 files\n</pre>\n",
         "name" : "use of clone()\n",
         "id" : "id902"
      },
      "id801-id1228" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "id" : "id801-id1228",
         "name" : "abstract",
         "extends" : "id801",
         "value" : "1"
      },
      "id208" : {
         "id" : "id208",
         "name" : "Log::Report::Optional",
         "title" : "pick Log::Report or ::Minimal",
         "is_pure_pod" : false,
         "distribution" : "Log-Report-Optional",
         "package" : "Log::Report::Optional",
         "inheritance" : {
            "extends" : [
               "Exporter"
            ]
         },
         "version" : "1.08",
         "chapters" : [
            "id209",
            "id1316",
            "id210",
            "id211",
            "id212"
         ]
      },
      "id529" : {
         "type" : "default",
         "value" : "<code>false</code>",
         "id" : "id529",
         "name" : "fuzzy"
      },
      "id736" : {
         "call" : "$obj-&gt;<b><a name=\"id736\">msgstr</a></b>(&nbsp;$msgid, [$count, $msgctxt]&nbsp;)",
         "id" : "id736",
         "name" : "msgstr",
         "intro" : "<p>Returns the translated string for <tt class=\"parameter\">$msgid</tt>.  When not specified, <tt class=\"parameter\">$count</tt> is 1.</p>\n",
         "type" : "i_method"
      },
      "id638" : {
         "name" : "NAME",
         "id" : "id638",
         "level" : 1,
         "intro" : "<p>Log::Report::Lexicon::MOTcompact - use translations from an MO file</p>\n",
         "path" : "NAME",
         "type" : "chapter"
      },
      "id1076" : {
         "intro" : "<p>Interpolation via formats is optional.</p>\n\n<p>In shown examples, you see <code>__x()</code> everywhere.  Using that function\nis required when you wish to use translations (later in your project),\nbut also has many other benefits.  The functions <code>__x</code> and friends\ncreate a <a class=\"jump\" href=\"id856\">Log::Report::Message</a> object.</p>\n\n<p>Continue reading:</p>\n<ul>\n<li><a class=\"jump\" href=\"id932\">Why use format strings?</a><br />\n<li><a class=\"jump\" href=\"id933\">Messages with plural forms</a><br />\n<li><a class=\"jump\" href=\"id934\">Interpolation with String::Print</a><br />\n<li><a class=\"jump\" href=\"id936\">Automatic parameters</a><br />\n</ul>\n",
         "path" : "DETAILS/Interpolation via formats",
         "type" : "section",
         "level" : 2,
         "nest" : [
            "id1077"
         ],
         "name" : "Interpolation via formats",
         "id" : "id1076"
      },
      "id169" : {
         "level" : 2,
         "id" : "id169",
         "name" : "Attributes",
         "subroutines" : [
            "id170",
            "id172",
            "id173",
            "id171"
         ],
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id266" : {
         "type" : "chapter",
         "path" : "SYNOPSIS",
         "intro" : "<p>To use this engine, you may configure <a href=\"https://metacpan.org/dist/Dancer2\">manual Dancer2</a> via <code>config.yaml</code>:</p>\n<pre>\n  template:   \"TTLogReport\"\n</pre>\n\n<p>Or you may also change the rendering engine on a per-route basis by\nsetting it manually with <code>set</code>:</p>\n<pre>\n  set template =&gt; 'TTLogReport';\n</pre>\n\n<p>Application:</p>\n<pre>\n  # In your daemon startup\n  my $pot    = Log::Report::Translator::POT-&gt;new(lexicon =&gt; $poddir);\n  my $domain = (engine 'template')-&gt;addTextdomain(name =&gt; $mydomain);\n  $domain-&gt;configure(translator =&gt; $pot);\n\n  # Use it:\n  get '/' =&gt; sub {\n    template index =&gt; {\n        title        =&gt; 'my webpage',\n\n        # The actual language is stored in the user session.\n        translate_to =&gt; 'nl_NL.utf-8',\n    };\n  };\n</pre>\n",
         "level" : 1,
         "name" : "SYNOPSIS",
         "id" : "id266"
      },
      "id688" : {
         "subroutine" : "id687",
         "name" : "unknown context tag '$tag' used in '$msgid'",
         "id" : "id688",
         "type" : "error"
      },
      "id786" : {
         "id" : "id786",
         "name" : "package",
         "params" : "CLASS",
         "type" : "option"
      },
      "id799-id1082" : {
         "id" : "id799-id1082",
         "name" : "max_params",
         "extends" : "id799",
         "value" : "8",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>"
      },
      "id1142-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1141\">Log::Report::Domain::configure(native_language)</a></p>",
         "type" : "default",
         "extends" : "id1142",
         "value" : "'en_US'",
         "name" : "native_language",
         "id" : "id1142-id375"
      },
      "id778-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id778\">Log::Report::Dispatcher::log()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id778\">log</a></b>(&nbsp;\\%options, $reason, $message, $domain&nbsp;)",
         "extends" : "id778",
         "id" : "id778-id944",
         "name" : "log"
      },
      "id759-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "params" : "LOCALE",
         "type" : "option",
         "extends" : "id759",
         "name" : "locale",
         "id" : "id759-id944"
      },
      "id831" : {
         "type" : "default",
         "id" : "id831",
         "name" : "died",
         "value" : "<code>undef</code>"
      },
      "id795-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>",
         "type" : "default",
         "name" : "params",
         "id" : "id795-id944",
         "extends" : "id795",
         "value" : "&lt;required&gt;"
      },
      "id63" : {
         "value" : "<code>see modifier docs</code>",
         "name" : "defaults",
         "id" : "id63",
         "type" : "default"
      },
      "id907" : {
         "call" : "$obj-&gt;<b><a name=\"id907\">domain</a></b>",
         "name" : "domain",
         "id" : "id907",
         "intro" : "<p>Returns the domain of the first translatable string in the structure.</p>\n",
         "type" : "i_method"
      },
      "id1143" : {
         "id" : "id1143",
         "name" : "context_rules",
         "type" : "option",
         "params" : "\\%rules|OBJECT",
         "intro" : "<p>When <tt class=\"parameter\">%rules</tt> are provided, the translator will use the <code>msgctxt</code> fields\nas provided by PO-files (gettext).  This parameter is used to initialize\na <a class=\"jump\" href=\"id669\">Log::Report::Translator::Context</a> helper object.</p>\n"
      },
      "id68" : {
         "name" : "setDefaults",
         "id" : "id68",
         "call" : "$obj-&gt;<b><a name=\"id68\">setDefaults</a></b>(&nbsp;\\%defaults|@defaults&nbsp;)",
         "examples" : [
            "id69"
         ],
         "type" : "i_method",
         "intro" : "<p>[1.00] Set the defaults for modifiers, either with a HASH where the key modifier name\nmaps to a HASH of settings, or a list of PAIRS.</p>\n\n<p>When using the methods in OO style , you can change the defaults at any time.  For\nfunctional style, the object is hidden.</p>\n"
      },
      "id881" : {
         "name" : "_append",
         "id" : "id881",
         "intro" : "<p>Some <tt class=\"parameter\">$text</tt> or other <tt class=\"parameter\">$message</tt> object which need to be pasted after this\nmessage object.</p>\n",
         "type" : "option",
         "params" : "$text|$message"
      },
      "id640" : {
         "id" : "id640",
         "name" : "DESCRIPTION",
         "path" : "DESCRIPTION",
         "intro" : "<p>This module is translating, based on MO files (binary versions of\nthe PO files, the \"Machine Object\" format)</p>\n\n<p>Actually, this module is not \"compact\" anymore: not trading off\nspeed for memory.  That may change again in the future.</p>\n\n<p>To get a MO file, you first need a PO file.  Then run <i class=\"filename\">msgfmt</i>, which\nis part of the gnu gettext package.</p>\n<pre>\n  msgfmt -cv -o $domain.mo $domain.po\n\n  # -c = --check-format &amp; --check-header &amp; --check-domain\n  # -v = --verbose\n  # -o = --output-file\n</pre>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id421" : {
         "intro" : "<p>The character-set used in the PO files.</p>\n",
         "params" : "$charset",
         "type" : "option",
         "name" : "charset",
         "id" : "id421"
      },
      "id1026" : {
         "name" : "how to use <code>__x()</code>\n",
         "id" : "id1026",
         "type" : "example",
         "intro" : "<p>This is by far the most used message constructor.</p>\n<pre>\n  print __x\"Name {person.name}\", person =&gt; $person_obj;\n  error __x\"Too many options: max 5, got {count}\", count =&gt; $c;\n  fault __x\"Cannot open file {f}\", f =&gt; $input_filename;\n</pre>\n"
      },
      "id300" : {
         "subroutine" : "id295",
         "id" : "id300",
         "name" : "template extract requires explicit domain.",
         "type" : "error"
      },
      "id894-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id893\">Log::Report::Message::new(_join)</a></p>",
         "type" : "default",
         "id" : "id894-id217",
         "name" : "_join",
         "extends" : "id894",
         "value" : "<code>$\"</code>  <code>$LIST_SEPARATOR</code>"
      },
      "id775-id1174" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id775\">Log::Report::Dispatcher::needs()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id775\">needs</a></b>(&nbsp;[$reason]&nbsp;)",
         "extends" : "id775",
         "name" : "needs",
         "id" : "id775-id1174"
      },
      "id1182" : {
         "name" : "to_level",
         "id" : "id1182",
         "value" : "[]",
         "type" : "default"
      },
      "id788-id818" : {
         "params" : "STRING",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>",
         "extends" : "id788",
         "id" : "id788-id818",
         "name" : "filename"
      },
      "id798-id1174" : {
         "name" : "max_params",
         "id" : "id798-id1174",
         "extends" : "id798",
         "params" : "INTEGER",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>"
      },
      "id418-id697" : {
         "options" : [
            [
               "id421-id697",
               "id422-id697"
            ],
            [
               "id419-id697",
               "id420-id697"
            ]
         ],
         "extends" : "id418",
         "id" : "id418-id697",
         "name" : "new",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id418\">Log::Report::Extract::new()</a></p>",
         "type" : "c_method",
         "call" : "$class-&gt;<b><a name=\"id418\">new</a></b>(&nbsp;%options&nbsp;)",
         "diagnostics" : [
            "id423-id697",
            "id424-id697"
         ]
      },
      "id1052" : {
         "name" : "message_class",
         "id" : "id1052",
         "params" : "CLASS",
         "type" : "option",
         "intro" : "<p>[1.08] Use a more powerful message object class, for instance because\nyour messages need extra attributes.  The provided CLASS must extend\n<a class=\"jump\" href=\"id856\">Log::Report::Message</a></p>\n"
      },
      "id794-id1090" : {
         "name" : "params",
         "id" : "id794-id1090",
         "extends" : "id794",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>",
         "params" : "ARRAY",
         "type" : "option"
      },
      "id926" : {
         "intro" : "<pre>  print __\"Hello\" . ' ' . __\"World!\\n\";\n  print __(\"Hello\")-&gt;concat(' ')-&gt;concat(__\"World!\")-&gt;concat(\"\\n\");\n</pre>\n",
         "type" : "example",
         "id" : "id926",
         "name" : "of concatenation\n"
      },
      "id202" : {
         "intro" : "<p>Replace all backslash-something escapes by their escape character.\nFor instance, backslash-t is replaced by a tab character.</p>\n",
         "type" : "function",
         "call" : "<b><a name=\"id202\">unescape_chars</a></b>(&nbsp;STRING&nbsp;)",
         "name" : "unescape_chars",
         "id" : "id202"
      },
      "id908" : {
         "intro" : "<p>Returns the count, which is used to select the translation\nalternatives.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id908\">count</a></b>",
         "id" : "id908",
         "name" : "count"
      },
      "id876" : {
         "value" : "<code>undef</code>",
         "id" : "id876",
         "name" : "_msgid",
         "type" : "default"
      },
      "id632" : {
         "call" : "$obj-&gt;<b><a name=\"id632\">charset</a></b>",
         "name" : "charset",
         "id" : "id632",
         "intro" : "<p>Returns the default charset, which can be overrule by the locale.</p>\n",
         "type" : "i_method"
      },
      "id1030" : {
         "id" : "id1030",
         "name" : "__nx",
         "examples" : [
            "id1031"
         ],
         "call" : "<b><a name=\"id1030\">__nx</a></b>(&nbsp;$msgid, $plural_msgid, $count, PAIRS&nbsp;)",
         "type" : "function",
         "intro" : "<p>It depends on the value of <tt class=\"parameter\">$count</tt> (and the selected language) which\ntext will be displayed.  See details in <a class=\"jump\" href=\"id1028\">__n()</a>.  After translation,\nthe VARIABLES will be filled-in.</p>\n\n<p>The <tt class=\"parameter\">PAIRS</tt> are options for <a class=\"jump\" href=\"id866\">Log::Report::Message::new()</a> and variables\nto be filled in.</p>\n"
      },
      "id682" : {
         "name" : "no context definition for `$tag' in `$msgid'",
         "id" : "id682",
         "subroutine" : "id681",
         "type" : "error"
      },
      "id777-id944" : {
         "call" : "$obj-&gt;<b><a name=\"id777\">close</a></b>",
         "extends" : "id777",
         "id" : "id777-id944",
         "name" : "close",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id777\">Log::Report::Dispatcher::close()</a></p>",
         "type" : "i_method"
      },
      "id966" : {
         "subroutines" : [
            "id967"
         ],
         "id" : "id966",
         "name" : "Constructors",
         "level" : 2,
         "path" : "METHODS/Constructors",
         "type" : "section"
      },
      "id915" : {
         "name" : "errno",
         "id" : "id915",
         "call" : "$obj-&gt;<b><a name=\"id915\">errno</a></b>(&nbsp;[$errno]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>[1.38] Returns the value of the <code>_errno</code> key, to indicate the error\nnumber (to be returned from your script).  Usually, this method will\nreturn <code>undef</code>.  For FAILURE, FAULT, and ALERT, the errno is by default\ntaken from <code>$!</code> and <code>$?</code>.</p>\n"
      },
      "id461" : {
         "id" : "id461",
         "name" : "index",
         "value" : "{}",
         "type" : "default"
      },
      "id797-id1174" : {
         "id" : "id797-id1174",
         "name" : "max_line",
         "value" : "<code>undef</code>",
         "extends" : "id797",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>"
      },
      "id787-id818" : {
         "name" : "package",
         "id" : "id787-id818",
         "value" : "&lt;required&gt;",
         "extends" : "id787",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>",
         "type" : "default"
      },
      "id1172" : {
         "name" : "translate",
         "id" : "id1172",
         "call" : "$obj-&gt;<b><a name=\"id1172\">translate</a></b>(&nbsp;$message, [$language, $ctxt]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Returns the translation of the <tt class=\"parameter\">$message</tt>, a <a class=\"jump\" href=\"id856\">Log::Report::Message</a> object,\nbased on the current locale.</p>\n\n<p>Translators are permitted to peek into the internal HASH of the\nmessage object, for performance reasons.</p>\n"
      },
      "id787-id1090" : {
         "value" : "&lt;required&gt;",
         "extends" : "id787",
         "id" : "id787-id1090",
         "name" : "package",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>"
      },
      "id327" : {
         "name" : "processing_errors",
         "id" : "id327",
         "type" : "option",
         "params" : "'NATIVE'|'EXCEPTION'",
         "intro" : "<p>The Template Toolkit infrastructure handles errors carefully: <code>undef</code> is\nreturned and you need to call <a class=\"jump\" href=\"id361\">error()</a> to collect it.</p>\n"
      },
      "id901-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id901\">Log::Report::Message::clone()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id901\">clone</a></b>(&nbsp;%options, $variables&nbsp;)",
         "name" : "clone",
         "id" : "id901-id217",
         "extends" : "id901"
      },
      "id1019" : {
         "intro" : "<p>Short for <code>report ALERT =&gt; $message</code></p>\n",
         "type" : "function",
         "call" : "<b><a name=\"id1019\">alert</a></b>(&nbsp;$message&nbsp;)",
         "id" : "id1019",
         "name" : "alert"
      },
      "id887-id217" : {
         "name" : "_classes",
         "id" : "id887-id217",
         "extends" : "id887",
         "params" : "$tags|\\@tags",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id887\">Log::Report::Message::new(_classes)</a></p>"
      },
      "id919" : {
         "type" : "i_method",
         "intro" : "<p>[1.44] Returns <code>true</code> if the message carries the specified <tt class=\"parameter\">$tag</tt> (string) or\nmatches the Regexp.  The trueth value is the (first matching) tag.</p>\n",
         "id" : "id919",
         "name" : "taggedWith",
         "call" : "$obj-&gt;<b><a name=\"id919\">taggedWith</a></b>(&nbsp;$tag|Regexp&nbsp;)"
      },
      "id772-id1082" : {
         "call" : "$obj-&gt;<b><a name=\"id772\">type</a></b>",
         "extends" : "id772",
         "id" : "id772-id1082",
         "name" : "type",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id772\">Log::Report::Dispatcher::type()</a></p>",
         "type" : "i_method"
      },
      "id646" : {
         "type" : "error",
         "name" : "unsupported explicit charset $charset for $fn.",
         "id" : "id646",
         "subroutine" : "id643"
      },
      "id1341" : {
         "level" : 1,
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Win32Locale\n   is an Exporter\n</pre>\n",
         "type" : "chapter",
         "id" : "id1341",
         "name" : "INHERITANCE"
      },
      "id306" : {
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>The character encoding used in this template file.</p>\n",
         "id" : "id306",
         "name" : "charset"
      },
      "id920" : {
         "name" : "inClass",
         "id" : "id920",
         "call" : "$obj-&gt;<b><a name=\"id920\">inClass</a></b>(&nbsp;$tag|Regexp&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Deprecated alternative for <a class=\"jump\" href=\"id919\">taggedWith()</a>.</p>\n"
      },
      "id757-id1174" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "params" : "$reasons|\\@reasons",
         "type" : "option",
         "extends" : "id757",
         "id" : "id757-id1174",
         "name" : "accept"
      },
      "id368" : {
         "level" : 3,
         "intro" : "<p>With TT, we can add a simplificition which we cannot offer for Perl\ntranslations: TT variables are dynamic and stored in the stash which\nwe can access.  Therefore, we can lookup \"accidentally\" missed parameters.</p>\n<pre>\n  [% SET name = 'John Doe' %]\n  [% loc(\"Hi {name}\", name =&gt; name) %]  # looks silly\n  [% loc(\"Hi {name}\") %]                # uses TT stash directly\n</pre>\n\n<p>Sometimes, computation of objects is expensive: you never know.  So, you\nmay try to avoid repeated computation.  In the follow example, \"soldOn\"\nis collected/computed twice:</p>\n<pre>\n  [% IF product.soldOn %]\n  &lt;tdE&lt;gt>[% loc(\"Sold on {product.soldOn DATE}\")&lt;/tdE&lt;gt>\n  [% END %]\n</pre>\n\n<p>The performance is predictable optimal with:</p>\n<pre>\n  [% sold_on = product.soldOn; IF sold_on %]\n  &lt;tdE&lt;gt>[% loc(\"Sold on {sold_on DATE}\")&lt;/tdE&lt;gt>\n  [% END %]\n</pre>\n",
         "path" : "DETAILS/Supported syntax/Translation syntax, more magic",
         "type" : "subsection",
         "name" : "Translation syntax, more magic",
         "id" : "id368"
      },
      "id1135-id375" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1135\">Log::Report::Domain::nativeLanguage()</a></p>",
         "extends" : "id1135",
         "id" : "id1135-id375",
         "name" : "nativeLanguage",
         "call" : "$obj-&gt;<b><a name=\"id1135\">nativeLanguage</a></b>"
      },
      "id1213" : {
         "type" : "i_method",
         "intro" : "<p>Returns whether this exception has a severity which makes it fatal\nwhen thrown. [1.34] This can have been overruled with the <code>is_fatal</code>\nattribute.  See <a class=\"jump\" href=\"id193\">Log::Report::Util::is_fatal()</a>.</p>\n",
         "examples" : [
            "id1214"
         ],
         "call" : "$obj-&gt;<b><a name=\"id1213\">isFatal</a></b>",
         "id" : "id1213",
         "name" : "isFatal"
      },
      "id888-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id887\">Log::Report::Message::new(_classes)</a></p>",
         "type" : "default",
         "name" : "_classes",
         "id" : "id888-id217",
         "value" : "<code>undef</code>",
         "extends" : "id888"
      },
      "id738-id637" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id738\">Log::Report::Lexicon::Table::add()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id738\">add</a></b>(&nbsp;$po&nbsp;)",
         "name" : "add",
         "id" : "id738-id637",
         "extends" : "id738"
      },
      "id870" : {
         "type" : "default",
         "value" : "&lt;from \"use <a class=\"jump\" href=\"id979\">Log::Report</a>\">",
         "name" : "_domain",
         "id" : "id870"
      },
      "id414" : {
         "id" : "id414",
         "name" : "SYNOPSIS",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # See the extensions\n</pre>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id794-id818" : {
         "name" : "params",
         "id" : "id794-id818",
         "extends" : "id794",
         "params" : "ARRAY",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>"
      },
      "id799-id944" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>",
         "extends" : "id799",
         "value" : "8",
         "name" : "max_params",
         "id" : "id799-id944"
      },
      "id784-id1174" : {
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id784\">Log::Report::Dispatcher::collectLocation()</a></p>",
         "extends" : "id784",
         "id" : "id784-id1174",
         "name" : "collectLocation",
         "call" : "$any-&gt;<b><a name=\"id784\">collectLocation</a></b>"
      },
      "id328" : {
         "type" : "default",
         "value" : "'NATIVE'",
         "id" : "id328",
         "name" : "processing_errors"
      },
      "id788-id1090" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>",
         "params" : "STRING",
         "type" : "option",
         "id" : "id788-id1090",
         "name" : "filename",
         "extends" : "id788"
      },
      "id960" : {
         "intro" : "<pre>  # start using log4perl via a config file\n  # The name of the dispatcher is the name of the default category.\n  dispatcher LOG4PERL =&gt; 'logger',\n    accept =&gt; 'NOTICE-',\n    config =&gt; \"$ENV{HOME}/.log.conf\";\n\n  # disable default dispatcher\n  dispatcher close =&gt; 'logger';\n\n  # configuration inline, not in file: adapted from the Log4perl manpage\n  my $name    = 'logger';\n  my $outfile = '/tmp/a.log';\n  my $config  = &lt;&lt;__CONFIG;\n  log4perl.category.$name            = INFO, Logfile\n  log4perl.logger.Logfile          = Log::Log4perl::Appender::File\n  log4perl.logger.Logfile.filename = $outfn\n  log4perl.logger.Logfile.layout   = Log::Log4perl::Layout::PatternLayout\n  log4perl.logger.Logfile.layout.ConversionPattern = %d %F{1} %L> %m\n  __CONFIG\n\n  dispatcher LOG4PERL =&gt; $name, config =&gt; \\$config;\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter",
         "level" : 1,
         "name" : "SYNOPSIS",
         "id" : "id960"
      },
      "id1034" : {
         "type" : "example",
         "intro" : "<pre>  # add three msgids to the translation table\n  my @colors = (N__\"red\", N__\"green\", N__\"blue\");\n  my @colors = N__w \"red green blue\";   # same\n  print __ $colors[1];                  # translate green\n\n  # using <a class=\"jump\" href=\"id1023\">__()</a>, would work as well\n  my @colors = (__\"red\", __\"green\", __\"blue\");\n  print $colors[1];\n  # however: this will always create all Log::Report::Message objects,\n  # where maybe only one is used.\n</pre>\n",
         "name" : "how to use <code>N__()</code>\n",
         "id" : "id1034"
      },
      "id758-id1174" : {
         "name" : "accept",
         "id" : "id758-id1174",
         "value" : "<code>depend on mode</code>",
         "extends" : "id758",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "type" : "default"
      },
      "id779-id1174" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id779\">Log::Report::Dispatcher::translate()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id779\">translate</a></b>(&nbsp;\\%options, $reason, $message&nbsp;)",
         "name" : "translate",
         "id" : "id779-id1174",
         "extends" : "id779"
      },
      "id367" : {
         "type" : "subsection",
         "path" : "DETAILS/Supported syntax/Translation syntax",
         "intro" : "<p>Let say that your translation function is called 'loc', which is the\ndefault name.  Then, you can use that name as simple function.</p>\n\n<p>In these examples, <code>PAIRS</code> is a list of values to be inserted in the\n<code>msgid</code> string. When the <code>msgid</code> is specified with a <code>plural</code> alternative,\nthen a <code>COUNTER</code> value is required to indicate which alternative is\nrequired.</p>\n<pre>\n  [% loc(\"msgid\", PAIRS) %]\n  [% loc('msgid', PAIRS) %]\n  [% loc(\"msgid|plural\", COUNTER, PAIRS) %]\n  [% loc(\"msgid|plural\", _count =&gt; COUNTER, PAIRS) %]\n\n  [% INCLUDE\n       title = loc('something')\n   %]\n</pre>\n\n<p>But also as filter.  Although filters and functions work differently\ninternally in Template Toolkit, it is convenient to permit both syntaxes.</p>\n<pre>\n  [% | loc(PAIRS) %]msgid[% END %]\n  [% 'msgid' | loc(PAIRS) %]\n  [% \"msgid\" | loc(PAIRS) %]\n\n  [% \"msgid|plural\" | loc(COUNTER, PAIRS) %]\n  [% \"msgid|plural\" | loc(_count =&gt; COUNTER, PAIRS) %]\n  [% FILTER loc %]msgid[% END %]\n  [% FILTER loc(COUNTER, PAIRS) %]msgid|plural[% END %]\n</pre>\n\n<p>As examples</p>\n<pre>\n  [% loc(\"hi {n}\", n =&gt; name) %]\n  [% | loc(n =&gt; name) %]hi {n}[% END %]\n  [% \"hi {n}\" | loc(n =&gt; name) %]\n  [% loc(\"one person|{_count} people\", size) %]\n  [% | loc(size) %]one person|{_count} people[% END %]\n  [% 'one person|{_count} people' | loc(size) %]\n</pre>\n\n<p>These syntaxes work exacly like translations with <a class=\"jump\" href=\"id979\">Log::Report</a> for your\nPerl programs.  Compare this with:</p>\n<pre>\n  __x\"hi {n}\", n =&gt; name;    # equivalent to\n  __x(\"hi {n}\", n =&gt; name);  # replace __x() by loc()\n</pre>\n",
         "level" : 3,
         "name" : "Translation syntax",
         "id" : "id367"
      },
      "id1092" : {
         "level" : 1,
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # add syslog dispatcher\n  dispatcher SYSLOG =&gt; 'syslog', accept =&gt; 'NOTICE-',\n    format_reason =&gt; 'IGNORE',\n    to_prio =&gt; [ 'ALERT-' =&gt; 'err' ];\n\n  # disable default dispatcher, when daemon\n  dispatcher close =&gt; 'default';\n</pre>\n",
         "type" : "chapter",
         "name" : "SYNOPSIS",
         "id" : "id1092"
      },
      "id183" : {
         "type" : "chapter",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  my ($language, $territory, $charset, $modifier)\n     = parse_locale 'nl_BE.utf-8@home';\n\n  my @take = expand_reasons 'INFO-ERROR,PANIC';\n</pre>\n",
         "level" : 1,
         "name" : "SYNOPSIS",
         "id" : "id183"
      },
      "id694" : {
         "name" : "Specifying the context per Domain",
         "id" : "id694",
         "type" : "subsection",
         "path" : "DETAILS/Using context_rules/Specifying the context per Domain",
         "intro" : "<p>Above examples are to be specified per message.  You may also\nset a default.  The top of your modules set the text-domain (name\nof the translation table) for all strings found in those files.\nIn this case, for instance \"webpages\"</p>\n<pre>\n  # Log::Report::textdomain()\n  (textdomain 'webpages')-&gt;setContext(%context);\n</pre>\n\n<p>This context is used as defaults, the <code>_context</code> attribute used by\nstrings are overruling these.</p>\n",
         "level" : 3
      },
      "id790-id958" : {
         "id" : "id790-id958",
         "name" : "linenr",
         "extends" : "id790",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "type" : "option",
         "params" : "INTEGER"
      },
      "id220" : {
         "type" : "chapter",
         "intro" : "<p>[This Dancer2 plugin was contributed by Andrew Beverley]</p>\n\n<p>This class is an extension of <a class=\"jump\" href=\"id856\">Log::Report::Message</a>, with functions\nspecifically designed for Dancer applications. Minimal functions are\nprovided (currently only aimed at Bootstrap), but ideas for new ones are\nwelcome.</p>\n",
         "path" : "DESCRIPTION",
         "level" : 1,
         "id" : "id220",
         "name" : "DESCRIPTION"
      },
      "id133" : {
         "subroutines" : [
            "id143",
            "id134",
            "id137",
            "id144",
            "id141",
            "id140",
            "id136",
            "id142",
            "id135",
            "id138",
            "id139"
         ],
         "level" : 2,
         "id" : "id133",
         "name" : "Abbreviations for report()",
         "path" : "FUNCTIONS/Abbreviations for report()",
         "type" : "section"
      },
      "id362" : {
         "path" : "DETAILS",
         "nest" : [
            "id363",
            "id366",
            "id370"
         ],
         "type" : "chapter",
         "level" : 1,
         "id" : "id362",
         "name" : "DETAILS"
      },
      "id1017" : {
         "name" : "error",
         "id" : "id1017",
         "call" : "<b><a name=\"id1017\">error</a></b>(&nbsp;$message&nbsp;)",
         "type" : "function",
         "intro" : "<p>Short for <code>report ERROR =&gt; $message</code></p>\n"
      },
      "id525" : {
         "value" : "<code>undef</code>",
         "id" : "id525",
         "name" : "msgctxt",
         "type" : "default"
      },
      "id795-id1082" : {
         "extends" : "id795",
         "value" : "&lt;required&gt;",
         "id" : "id795-id1082",
         "name" : "params",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id794\">Log::Report::Dispatcher::stackTraceLine(params)</a></p>"
      },
      "id165" : {
         "intro" : "<p>The name of the textdomain is used in its invocation, but also as (part of) the\ntranslation file names, hence please keep it simple and short.</p>\n",
         "params" : "STRING",
         "type" : "option",
         "id" : "id165",
         "name" : "name"
      },
      "id759-id1082" : {
         "extends" : "id759",
         "name" : "locale",
         "id" : "id759-id1082",
         "params" : "LOCALE",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>"
      },
      "id742" : {
         "subroutine" : "id741",
         "id" : "id742",
         "name" : "there is no Plural-Forms field in the header, but needed.",
         "type" : "error"
      },
      "id740-id637" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id739\">Log::Report::Lexicon::Table::translations()</a></p>",
         "type" : "error",
         "subroutine" : "id739",
         "id" : "id740-id637",
         "name" : "only acceptable parameter is 'ACTIVE'",
         "extends" : "id740"
      },
      "id778-id1082" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id778\">Log::Report::Dispatcher::log()</a></p>",
         "id" : "id778-id1082",
         "name" : "log",
         "extends" : "id778",
         "call" : "$obj-&gt;<b><a name=\"id778\">log</a></b>(&nbsp;\\%options, $reason, $message, $domain&nbsp;)"
      },
      "id219" : {
         "level" : 1,
         "path" : "SYNOPSIS",
         "intro" : "<pre>  In your template:\n\n  [% FOR message IN messages %]\n    &lt;div class=\"alert alert-[% message.bootstrap_color %]\"&gt;\n      [% message.toString | html_entity %]\n    &lt;/div&gt;\n  [% END %]\n</pre>\n",
         "type" : "chapter",
         "id" : "id219",
         "name" : "SYNOPSIS"
      },
      "id565" : {
         "type" : "default",
         "value" : "<code>undef</code>",
         "id" : "id565",
         "name" : "nr_plurals"
      },
      "id516" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "name" : "Constructors",
         "id" : "id516",
         "level" : 2,
         "subroutines" : [
            "id517"
         ]
      },
      "id1206" : {
         "type" : "option",
         "params" : "$reason",
         "name" : "reason",
         "id" : "id1206"
      },
      "id125" : {
         "id" : "id125",
         "name" : "errno",
         "type" : "option",
         "params" : "INTEGER"
      },
      "id730" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "id" : "id730",
         "name" : "Constructors",
         "level" : 2,
         "subroutines" : [
            "id731"
         ]
      },
      "id882-id217" : {
         "name" : "_append",
         "id" : "id882-id217",
         "extends" : "id882",
         "value" : "<code>undef</code>",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id881\">Log::Report::Message::new(_append)</a></p>"
      },
      "id1196" : {
         "level" : 1,
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # created within a try block\n  try { error \"help!\" };\n  my $exception = $@-&gt;wasFatal;\n  $exception-&gt;throw if $exception;\n\n  $@-&gt;reportFatal;  # combination of above two lines\n\n  my $message = $exception-&gt;message;   # the Log::Report::Message\n\n  if($message-&gt;taggedWith('die')) ...\n  if($exception-&gt;taggedWith('die')) ...   # same\n  if($@-&gt;wasFatal(tag =&gt; 'die')) ... # same\n</pre>\n",
         "type" : "chapter",
         "name" : "SYNOPSIS",
         "id" : "id1196"
      },
      "id533" : {
         "value" : "[]",
         "name" : "references",
         "id" : "id533",
         "type" : "default"
      },
      "id777-id1082" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id777\">Log::Report::Dispatcher::close()</a></p>",
         "id" : "id777-id1082",
         "name" : "close",
         "extends" : "id777",
         "call" : "$obj-&gt;<b><a name=\"id777\">close</a></b>"
      },
      "id322" : {
         "path" : "SYNOPSIS",
         "intro" : "<pre>  use Log::Report::Template;\n  my $templater = Log::Report::Template-&gt;new(%config);\n  $templater-&gt;addTextdomain(name =&gt; \"Tic\", lexicons =&gt; ...);\n  $templater-&gt;process('template_file.tt', \\%vars, \\$output);\n</pre>\n",
         "type" : "chapter",
         "level" : 1,
         "name" : "SYNOPSIS",
         "id" : "id322"
      },
      "id583" : {
         "name" : "unsupported charset $charset in $fn.",
         "id" : "id583",
         "subroutine" : "id575",
         "type" : "error"
      },
      "id260" : {
         "level" : 3,
         "type" : "subsection",
         "intro" : "<p>To make it easier to send messages to your users, messages at the following\nlevels are also stored in the user's session: <code>notice</code>, <code>warning</code>, <code>mistake</code>,\n<code>error</code>, <code>fault</code>, <code>alert</code>, <code>failure</code> and <code>panic</code>.</p>\n\n<p>You can pass these to your template and display them at each page render:</p>\n<pre>\n  hook before_template =&gt; sub {\n    my $tokens = shift;\n    $tokens-&gt;{messages} = session 'messages';\n    session 'messages' =&gt; []; # Clear the message queue\n  }\n</pre>\n\n<p>Then in your template (for example the main layout):</p>\n<pre>\n  [% FOR message IN messages %]\n    &lt;div class=\"alert alert-[% message.bootstrap_color %]\"&gt;\n      [% message.toString | html_entity %]\n    &lt;/div&gt;\n  [% END %]\n</pre>\n\n<p>The <code>bootstrap_color</code> of the message is compatible with Bootstrap contextual\ncolors: <code>success</code>, <code>info</code>, <code>warning</code> or <code>danger</code>.</p>\n\n<p>When you use <a class=\"jump\" href=\"id264\">Dancer2::Template::TTLogReport</a> as well, which enables the\ntranslations of your whole templates, then add <code>locale</code>:</p>\n<pre>\n  [% message.toString(locale) | html_entity %]\n</pre>\n\n<p>Now, anywhere in your application that you have used <a class=\"jump\" href=\"id979\">Log::Report</a>, you can</p>\n<pre>\n  warning \"Hey user, you should now about this\";\n</pre>\n\n<p>and the message will be sent to the next page the user sees.</p>\n",
         "path" : "DETAILS/In use/Sending messages to the user",
         "name" : "Sending messages to the user",
         "id" : "id260"
      },
      "id74" : {
         "name" : "FUNCTIONS",
         "id" : "id74",
         "path" : "FUNCTIONS",
         "intro" : "<p>The functional interface creates a hidden <code>String::Print</code> object, which is\nreused in the whole active package.  Seperate packages will use different\nhidden objects.</p>\n\n<p>You may import any of these functions explicitly, or all together by\nnot specifying the names.</p>\n",
         "type" : "chapter",
         "examples" : [
            "id75"
         ],
         "subroutines" : [
            "id87",
            "id85",
            "id86",
            "id76"
         ],
         "level" : 1
      },
      "id780" : {
         "call" : "$any-&gt;<b><a name=\"id780\">collectStack</a></b>(&nbsp;[$maxdepth]&nbsp;)",
         "name" : "collectStack",
         "id" : "id780",
         "intro" : "<p>Returns an ARRAY of ARRAYs with text, filename, line-number.</p>\n",
         "type" : "ci_method"
      },
      "id1085" : {
         "intro" : "<p>Ventilate the problem reports via the standard Perl error mechanisms:\n<code>die()</code>, <code>warn()</code>, and <code>print()</code>.  There can be only one such dispatcher\n(per thread), because once <code>die()</code> is called, we are not able to return.\nTherefore, this dispatcher will always be called last.</p>\n\n<p>In the early releases of <a class=\"jump\" href=\"id979\">Log::Report</a>, it tried to simulate the behavior\nof warn and die using STDERR and exit; however: that is not possible.</p>\n",
         "path" : "DESCRIPTION",
         "type" : "chapter",
         "level" : 1,
         "name" : "DESCRIPTION",
         "id" : "id1085"
      },
      "id384" : {
         "id" : "id384",
         "name" : "translation_function",
         "params" : "STRING",
         "type" : "option",
         "intro" : "<p>The name of the function as used in the template to call for translation.\nSee <a class=\"jump\" href=\"id396\">function()</a>.  It must be unique over all text-domains used.</p>\n"
      },
      "id805" : {
         "id" : "id805",
         "name" : "Addition information",
         "type" : "subsection",
         "path" : "DETAILS/Processing the message/Addition information",
         "intro" : "<p>The modules which use <code>Log::Report</code> will only specify the base of\nthe message string.  The base dispatcher and the back-ends will extend\nthis message with additional information:</p>\n\n<ul>\n<li>. the reason<br />\n<li>. the filename/line-number where the problem appeared<br />\n<li>. the filename/line-number where it problem was reported<br />\n<li>. the error text in <code>$!</code><br />\n<li>. a stack-trace<br />\n<li>. a trailing new-line<br />\n</ul>\n\n<p>When the message is a translatable object (<a class=\"jump\" href=\"id856\">Log::Report::Message</a>, for\ninstance created with <a class=\"jump\" href=\"id1023\">Log::Report::__()</a>), then the added components\nwill get translated as well.  Otherwise, all will be in English.</p>\n\n<p>Exactly what will be added depends on the actual mode of the dispatcher\n(change it with <a class=\"jump\" href=\"id773\">mode()</a>, initiate it with <a class=\"jump\" href=\"id761\">new(mode)</a>).</p>\n<pre>\n                         mode mode mode mode\n  REASON   SOURCE   TE!  NORM VERB ASSE DEBUG\n  trace    program  ...                 S\n  assert   program  ...            SL   SL\n  info     program  T..       S    S    S\n  notice   program  T..  S    S    S    S\n  mistake  user     T..  S    S    S    SL\n  warning  program  T..  S    S    SL   SL\n  error    user     TE.  S    S    SL   SC\n  fault    system   TE!  S    S    SL   SC\n  alert    system   T.!  SL   SL   SC   SC\n  failure  system   TE!  SL   SL   SC   SC\n  panic    program  .E.  SC   SC   SC   SC\n\n  T - usually translated\n  E - exception (execution interrupted)\n  ! - will include $! text at display\n  L - include filename and linenumber\n  S - show/print when accepted\n  C - stack trace (like Carp::confess())\n</pre>\n",
         "level" : 3
      },
      "id996" : {
         "params" : "BOOLEAN",
         "type" : "option",
         "intro" : "<p>Some logged exceptions are fatal, other aren't.  The default usually\nis correct. However, you may want an error to be caught (usually with\n<a class=\"jump\" href=\"id1008\">try()</a>), redispatch it to syslog, but without it killing the main\nprogram.</p>\n",
         "id" : "id996",
         "name" : "is_fatal"
      },
      "id1061" : {
         "id" : "id1061",
         "name" : "Reasons",
         "level" : 2,
         "subroutines" : [
            "id1062"
         ],
         "type" : "section",
         "path" : "FUNCTIONS/Reasons"
      },
      "id1210" : {
         "type" : "section",
         "path" : "METHODS/Attributes",
         "level" : 2,
         "name" : "Attributes",
         "id" : "id1210",
         "subroutines" : [
            "id1213",
            "id1215",
            "id1212",
            "id1211"
         ]
      },
      "id818" : {
         "version" : "1.45",
         "chapters" : [
            "id819",
            "id1346",
            "id820",
            "id821",
            "id822",
            "id825",
            "id1297"
         ],
         "title" : "capture all reports as exceptions",
         "is_pure_pod" : false,
         "name" : "Log::Report::Dispatcher::Try",
         "id" : "id818",
         "package" : "Log::Report::Dispatcher::Try",
         "inheritance" : {
            "extends" : [
               "Log::Report::Dispatcher"
            ]
         },
         "distribution" : "Log-Report"
      },
      "id334" : {
         "value" : "<code>undef</code>",
         "name" : "translate_to",
         "id" : "id334",
         "type" : "default"
      },
      "id1155" : {
         "type" : "error",
         "subroutine" : "id1153",
         "name" : "you need to configure context_rules before setContext",
         "id" : "id1155"
      },
      "id797-id1228" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "extends" : "id797",
         "value" : "<code>undef</code>",
         "name" : "max_line",
         "id" : "id797-id1228"
      },
      "id541" : {
         "type" : "i_method",
         "intro" : "<p>Returns a <tt class=\"parameter\">$translation</tt>, optionally after setting it.\nWhen no plural is defined, the <tt class=\"parameter\">$index</tt> is ignored.</p>\n",
         "name" : "msgstr",
         "id" : "id541",
         "call" : "$obj-&gt;<b><a name=\"id541\">msgstr</a></b>(&nbsp;[$index, [$translation]]&nbsp;)"
      },
      "id170-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id170\">Log::Report::Minimal::Domain::name()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id170\">name</a></b>",
         "name" : "name",
         "id" : "id170-id375",
         "extends" : "id170"
      },
      "id244" : {
         "id" : "id244",
         "name" : "mistake",
         "call" : "$obj-&gt;<b><a name=\"id244\">mistake</a></b>",
         "type" : "i_method"
      },
      "id491" : {
         "call" : "$obj-&gt;<b><a name=\"id491\">translations</a></b>(&nbsp;[$active]&nbsp;)",
         "name" : "translations",
         "id" : "id491",
         "diagnostics" : [
            "id492"
         ],
         "intro" : "<p>Returns a list with all defined <a class=\"jump\" href=\"id511\">Log::Report::Lexicon::PO</a> objects. When\nthe string <tt class=\"parameter\">$active</tt> is given as parameter, only objects which have\nreferences are returned.</p>\n",
         "type" : "i_method"
      },
      "id379" : {
         "id" : "id379",
         "name" : "METHODS",
         "level" : 1,
         "nest" : [
            "id380",
            "id394",
            "id400"
         ],
         "path" : "METHODS",
         "type" : "chapter"
      },
      "id358" : {
         "id" : "id358",
         "name" : "Formatter value modifiers",
         "level" : 2,
         "type" : "section",
         "path" : "METHODS/Formatter value modifiers",
         "intro" : "<p>Modifiers simplify the display of values.  Read the section about\nmodifiers in <a class=\"jump\" href=\"id47\">String::Print</a>.  Here, only some examples are shown.</p>\n\n<p>You can achieve the same transformation with TT vmethods, or with the\nperl code which drives your website.  The advantange is that you can\ntranslate them.  And they are quite readible.</p>\n\n<ul>\n<li>POSIX format <code>%-10s</code>, <code>%2.4f</code>, etc<br />\n\n<p>Exactly like format of the perl's internal <code>printf()</code> (which is\nactually being called to do the formatting)</p>\n\n<p>Examples:</p>\n<pre>\n  # pi in two decimals\n  [% loc(\"π = {pi %.2f}\", pi =&gt; 3.14157) %]\n\n  # show int, no fraction. filesize is a template variable\n  [% loc(\"file size {size %d}\", size =&gt; filesize + 0.5) %]\n</pre>\n<li>BYTES<br />\n\n<p>Convert a file size into a nice human readible format.</p>\n\n<p>Examples:</p>\n<pre>\n  # filesize and fn are passed as variables to the templater\n  [% loc(\"downloaded {size BYTES} {fn}\\n\", size =&gt; fs, fn =&gt; fn) %]\n  # may produce:   \"  0 B\", \"25 MB\", \"1.5 GB\", etc\n</pre>\n<li>Time-formatting YEAR, DATE, TIME, DT<br />\n\n<p>Accept various time syntaxes as value, and translate them into\nstandard formats: year only, date in <code>YYYY-MM-DD</code>, time as <code>HH::MM::SS</code>,\nand various DateTime formats:</p>\n\n<p>Examples:</p>\n<pre>\n  # shows 'Copyright 2017'\n  [% loc(\"Copyright {today YEAR}\", today =&gt; '2017-06-26') %]\n\n  # shows 'Created: 2017-06-26'\n  [% loc(\"Created: {now DATE}\", now =&gt; '2017-06-26 00:24:15') %]\n\n  # shows 'Night: 00:24:15'\n  [% loc(\"Night: {now TIME}\", now =&gt; '2017-06-26 00:24:15') %]\n\n  # shows 'Mon Jun 26 00:28:50 CEST 2017'\n  [% loc(\"Stamp: {now DT(ASC)}\", now =&gt; 1498429696) %]\n</pre>\n<li>Default //\"string\", //'string', or //word<br />\n\n<p>When a parameter has no value or is an empty string, the word or\nstring will take its place.</p>\n<pre>\n  [% loc(\"visitors: {count //0}\", count =&gt; 3) %]\n  [% loc(\"published: {date DT//'not yet'}\", date =&gt; '') %]\n  [% loc(\"copyright: {year//2017 YEAR}\", year =&gt; '2018') %]\n  [% loc(\"price: {price//5 EUR}\", price =&gt; product.price %]\n  [% loc(\"price: {price EUR//unknown}\", price =&gt; 3 %]\n</pre>\n\n</ul>\n"
      },
      "id1312" : {
         "level" : 3,
         "name" : "Handling white-spaces",
         "id" : "id1312",
         "path" : "DETAILS/Automatic parameters/Handling white-spaces",
         "type" : "subsection"
      },
      "id1271" : {
         "type" : "subsection",
         "path" : "DETAILS/Processing the message/Filters",
         "level" : 3,
         "id" : "id1271",
         "name" : "Filters"
      },
      "id775-id1228" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id775\">Log::Report::Dispatcher::needs()</a></p>",
         "id" : "id775-id1228",
         "name" : "needs",
         "extends" : "id775",
         "call" : "$obj-&gt;<b><a name=\"id775\">needs</a></b>(&nbsp;[$reason]&nbsp;)"
      },
      "id817" : {
         "call" : "<b><a name=\"id817\">exception_decode</a></b>(&nbsp;$exception, %options&nbsp;)",
         "id" : "id817",
         "name" : "exception_decode",
         "intro" : "<p>[1.23] This function attempts to translate object of other exception frameworks\ninto information to create a <a class=\"jump\" href=\"id1194\">Log::Report::Exception</a>.  It returns the\nsame list of parameters as <a class=\"jump\" href=\"id814\">die_decode()</a> does.</p>\n\n<p>Currently supported:</p>\n<ul>\n<li>DBIx::Class::Exception<br />\n<li>XML::LibXML::Error<br />\n</ul>\n",
         "type" : "function"
      },
      "id798-id1228" : {
         "extends" : "id798",
         "id" : "id798-id1228",
         "name" : "max_params",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>",
         "type" : "option",
         "params" : "INTEGER"
      },
      "id950" : {
         "id" : "id950",
         "name" : "Constructors",
         "level" : 2,
         "subroutines" : [
            "id951"
         ],
         "type" : "section",
         "path" : "METHODS/Constructors"
      },
      "id773-id818" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id773\">Log::Report::Dispatcher::mode()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id773\">mode</a></b>",
         "id" : "id773-id818",
         "name" : "mode",
         "extends" : "id773"
      },
      "id765-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>",
         "type" : "option",
         "params" : "CHARSET",
         "extends" : "id765",
         "id" : "id765-id944",
         "name" : "charset"
      },
      "id141" : {
         "type" : "function",
         "id" : "id141",
         "name" : "fault",
         "call" : "<b><a name=\"id141\">fault</a></b>(&nbsp;$message&nbsp;)"
      },
      "id1075" : {
         "id" : "id1075",
         "name" : "Exceptions",
         "level" : 3,
         "path" : "DETAILS/Error handling models/Exceptions",
         "intro" : "<p>The simple view on live says: you 're dead when you die.  However,\nmore complex situations try to revive the dead.  Typically, the \"die\"\nis considered a terminating exception, but not terminating the whole\nprogram, but only some logical block.  Of course, a wrapper round\nthat block must decide what to do with these emerging problems.</p>\n\n<p>Java-like languages do not \"die\" but throw exceptions which contain the\ninformation about what went wrong.  Perl modules like <code>Exception::Class</code>\nsimulate this.  It's a hassle to create exception class objects for each\nemerging problem, and the same amount of work to walk through all the\noptions.</p>\n\n<p><a class=\"jump\" href=\"id979\">Log::Report</a> follows a simpler scheme.  Fatal messages will \"die\", which is\ncaught with \"eval\", just the Perl way (used invisible to you).  However,\nthe wrapper gets its hands on the message as the user has specified it:\nuntranslated, with all unprocessed parameters still at hand.</p>\n<pre>\n  try { fault __x \"cannot open file {file}\", file =&gt; $fn };\n  if($@)                         # is Log::Report::Dispatcher::Try\n  {   my $cause = $@-&gt;wasFatal;  # is Log::Report::Exception\n      $cause-&gt;throw if $cause-&gt;message-&gt;msgid =~ m/ open /;\n      # all other problems ignored\n  }\n</pre>\n\n<p>See <a class=\"jump\" href=\"id818\">Log::Report::Dispatcher::Try</a> and <a class=\"jump\" href=\"id1194\">Log::Report::Exception</a>.</p>\n",
         "type" : "subsection"
      },
      "id166-id1127" : {
         "name" : "name",
         "id" : "id166-id1127",
         "extends" : "id166",
         "value" : "&lt;required&gt;",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id165\">Log::Report::Minimal::Domain::new(name)</a></p>",
         "type" : "default"
      },
      "id403" : {
         "type" : "error",
         "subroutine" : "id402",
         "id" : "id403",
         "name" : "no counting positional for '$msgid'"
      },
      "id783-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id783\">Log::Report::Dispatcher::skipStack()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id783\">skipStack</a></b>",
         "extends" : "id783",
         "id" : "id783-id944",
         "name" : "skipStack"
      },
      "id1281" : {
         "level" : 3,
         "name" : "Addition information",
         "id" : "id1281",
         "type" : "subsection",
         "path" : "DETAILS/Processing the message/Addition information"
      },
      "id1144" : {
         "id" : "id1144",
         "name" : "context_rules",
         "value" : "<code>undef</code>",
         "type" : "default"
      },
      "id426-id289" : {
         "id" : "id426-id289",
         "name" : "index",
         "extends" : "id426",
         "call" : "$obj-&gt;<b><a name=\"id426\">index</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id426\">Log::Report::Extract::index()</a></p>"
      },
      "id357" : {
         "level" : 2,
         "type" : "section",
         "path" : "METHODS/Template filters",
         "intro" : "<p>Some common activities in templates are harder when translation is\nneeded.  A few TT filters are provided to easy the process.</p>\n\n<ul>\n<li>Filter: cols<br />\n\n<p>A typical example of an HTML component which needs translation is</p>\n<pre>\n  &lt;trE&lt;gt>&lt;tdE&lt;gt>Price:&lt;/tdE&lt;gt>&lt;tdE&lt;gt>20 £&lt;/tdE&lt;gt>&lt;/trE&lt;gt>\n</pre>\n\n<p>Both the price text as value need to be translated.  In plain perl\n(with <a class=\"jump\" href=\"id979\">Log::Report</a>) you would write</p>\n<pre>\n  __x\"Price: {price £}\", price =&gt; $product-&gt;price   # or\n  __x\"Price: {p.price £}\", p =&gt; $product;\n</pre>\n\n<p>In HTML, there seems to be the need for two separate translations,\nmay in the program code.  This module (actually <a class=\"jump\" href=\"id47\">String::Print</a>)\ncan be trained to convert money during translation, because '£'\nis a modifier.  The translation for Dutch (via a PO table) could be</p>\n<pre>\n  \"Prijs: {p.price €}\"\n</pre>\n\n<p>SO: we want to get both table fields in one translation.  Try this:</p>\n<pre>\n  &lt;trE&lt;gt>[% loc(\"Price:\\t{p.price £}\" | cols %]&lt;/trE&lt;gt>\n</pre>\n\n<p>In the translation table, you have to place the tabs (backslash-t) as\nwell.</p>\n\n<p>There are two main forms of <code>cols</code>.  The first form is the containerizer:\npass 'cols' a list of container names.  The fields in the input string\n(as separated by tabs) are wrapped in the named container.  The last\ncontainer name will be reused for all remaining columns.  By default,\neverything is wrapped in 'td' containers.</p>\n<pre>\n  \"a\\tb\\tc\" | cols             &lt;tdE&lt;gt>aE&lt;lt>/tdE&lt;gt>&lt;tdE&lt;gt>bE&lt;lt>/tdE&lt;gt>&lt;tdE&lt;gt>cE&lt;lt>/tdE&lt;gt>\n  \"a\\tb\\tc\" | cols('td')       same\n  \"a\\tb\\tc\" | cols('th', 'td') &lt;thE&lt;gt>aE&lt;lt>/thE&lt;gt>&lt;tdE&lt;gt>bE&lt;lt>/tdE&lt;gt>&lt;tdE&lt;gt>cE&lt;lt>/tdE&lt;gt>\n  \"a\"       | cols('div')      &lt;divE&lt;gt>aE&lt;lt>/divE&lt;gt>\n  loc(\"a\")  | cols('div')      &lt;divE&lt;gt>xxxxE&lt;lt>/divE&lt;gt>\n</pre>\n\n<p>The second form has one pattern, which contains (at least one) <code>$1</code>\nreplacement positions.  Missing columns for positional parameters\nwill be left blank.</p>\n<pre>\n  \"a\\tb\\tc\" | cols('#$3#$1#')  #c#a#\n  \"a\"       | cols('#$3#$1#')  ##a#\n  loc(\"a\")  | cols('#$3#$1#')  #mies#aap#\n</pre>\n<li>Filter: br<br />\n\n<p>Some translations will produce more than one line of text.  Add\n'&lt;brE&lt;gt>' after each of them.</p>\n<pre>\n  [% loc('intro-text') | br %]\n  [% | br %][% intro_text %][% END %]\n  [% FILTER br %][% intro_text %][% END %]\n</pre>\n\n</ul>\n",
         "id" : "id357",
         "name" : "Template filters"
      },
      "id1265" : {
         "name" : "Addition information",
         "id" : "id1265",
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/Processing the message/Addition information"
      },
      "id944" : {
         "version" : "1.45",
         "chapters" : [
            "id945",
            "id1328",
            "id946",
            "id947",
            "id949",
            "id1267"
         ],
         "id" : "id944",
         "name" : "Log::Report::Dispatcher::Callback",
         "is_pure_pod" : false,
         "title" : "call a code-ref for each log-line",
         "distribution" : "Log-Report",
         "inheritance" : {
            "extends" : [
               "Log::Report::Dispatcher"
            ]
         },
         "package" : "Log::Report::Dispatcher::Callback"
      },
      "id801-id1174" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>",
         "id" : "id801-id1174",
         "name" : "abstract",
         "extends" : "id801",
         "value" : "1"
      },
      "id352" : {
         "id" : "id352",
         "name" : "write_tables",
         "value" : "&lt;<code>true</code>>",
         "type" : "default"
      },
      "id673" : {
         "nest" : [
            "id674",
            "id678",
            "id680"
         ],
         "path" : "METHODS",
         "type" : "chapter",
         "id" : "id673",
         "name" : "METHODS",
         "level" : 1
      },
      "id1108" : {
         "name" : "include_domain",
         "id" : "id1108",
         "intro" : "<p>[1.00] Include the text-domain of the message in each logged message.</p>\n",
         "params" : "BOOLEAN",
         "type" : "option"
      },
      "id155" : {
         "name" : "Configuration",
         "id" : "id155",
         "level" : 2,
         "subroutines" : [
            "id156"
         ],
         "type" : "section",
         "path" : "FUNCTIONS/Configuration"
      },
      "id1025" : {
         "id" : "id1025",
         "name" : "__x",
         "diagnostics" : [
            "id1027"
         ],
         "call" : "<b><a name=\"id1025\">__x</a></b>(&nbsp;$msgid, PAIRS&nbsp;)",
         "examples" : [
            "id1026"
         ],
         "type" : "function",
         "intro" : "<p>Translate the <tt class=\"parameter\">$msgid</tt> and then interpolate the VARIABLES in that string.\nOf course, translation and interpolation is delayed as long as possible.\nBoth OPTIONS and VARIABLES are key-value pairs.</p>\n\n<p>The <tt class=\"parameter\">PAIRS</tt> are options for <a class=\"jump\" href=\"id866\">Log::Report::Message::new()</a> and variables\nto be filled in.</p>\n"
      },
      "id296" : {
         "name" : "domain",
         "id" : "id296",
         "intro" : "<p>There is no syntax for specifying domains in templates (yet), so you\nmust be explicit about the collection we are making now.</p>\n",
         "type" : "option",
         "params" : "DOMAIN"
      },
      "id199" : {
         "name" : "must_show_stack",
         "id" : "id199",
         "call" : "<b><a name=\"id199\">must_show_stack</a></b>(&nbsp;$mode, $reason&nbsp;)",
         "type" : "function"
      },
      "id769-id1082" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id756\">Log::Report::Dispatcher::new()</a></p>",
         "type" : "error",
         "subroutine" : "id756",
         "extends" : "id769",
         "id" : "id769-id1082",
         "name" : "Perl does not support charset $cs"
      },
      "id812" : {
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>This module is used internally, to translate output of 'die' and Carp\nfunctions into <a class=\"jump\" href=\"id856\">Log::Report::Message</a> objects.  Also, it tries to\nconvert other kinds of exception frameworks into our message object.</p>\n",
         "level" : 1,
         "id" : "id812",
         "name" : "DESCRIPTION"
      },
      "id1298" : {
         "level" : 2,
         "name" : "Available back-ends",
         "id" : "id1298",
         "path" : "DETAILS/Available back-ends",
         "type" : "section"
      },
      "id766-id958" : {
         "name" : "charset",
         "id" : "id766-id958",
         "value" : "<code>undef</code>",
         "extends" : "id766",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>",
         "type" : "default"
      },
      "id1221" : {
         "examples" : [
            "id1222"
         ],
         "call" : "$obj-&gt;<b><a name=\"id1221\">throw</a></b>(&nbsp;%options&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Insert the message contained in the exception into the currently defined\ndispatchers.  The <code>throw</code> as method name is commonly known exception\nrelated terminology for <code>report</code>.</p>\n\n<p>The <tt class=\"parameter\">%options</tt> overrule the captured options to <a class=\"jump\" href=\"id985\">Log::Report::report()</a>.\nThis can be used to overrule a destination.  Also, the reason can\nbe changed.</p>\n\n<p>Returned is the LIST of dispatchers which have accepted the forwarded\nexception.</p>\n",
         "name" : "throw",
         "id" : "id1221"
      },
      "id762-id1174" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>",
         "extends" : "id762",
         "value" : "'NORMAL'",
         "name" : "mode",
         "id" : "id762-id1174"
      },
      "id449" : {
         "id" : "id449",
         "name" : "charset",
         "value" : "'UTF-8'",
         "type" : "default"
      },
      "id555" : {
         "type" : "warning",
         "subroutine" : "id554",
         "id" : "id555",
         "name" : "unknown flag $flag ignored"
      },
      "id599" : {
         "call" : "$obj-&gt;<b><a name=\"id599\">directory</a></b>",
         "name" : "directory",
         "id" : "id599",
         "intro" : "<p>Returns the directory name.</p>\n",
         "type" : "i_method"
      },
      "id250" : {
         "call" : "$obj-&gt;<b><a name=\"id250\">success</a></b>",
         "name" : "success",
         "id" : "id250",
         "intro" : "<p>This is a special additional type, equivalent to <code>notice</code>.  The difference is\nthat messages using this keyword will have the class <code>success</code> added, which\ncan be used to color the messages differently to the end user. For example,\n<a href=\"https://metacpan.org/dist/Dancer2_Plugin_LogReport_Message_bootstrap_color\">manual Dancer2::Plugin::LogReport::Message#bootstrap_color</a> uses this to display the\nmessage in green.</p>\n",
         "type" : "i_method"
      },
      "id792-id1228" : {
         "extends" : "id792",
         "name" : "call",
         "id" : "id792-id1228",
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>"
      },
      "id81" : {
         "name" : "_prepend",
         "id" : "id81",
         "type" : "option",
         "params" : "STRING|OBJECT",
         "intro" : "<p>Text as STRING prepended before <tt class=\"parameter\">$format</tt>, without interpolation.  This\nmay also be an <tt class=\"parameter\">OBJECT</tt> which gets stringified, but variables not filled-in.</p>\n"
      },
      "id611" : {
         "version" : "1.16",
         "chapters" : [
            "id612",
            "id1323",
            "id613",
            "id614",
            "id615"
         ],
         "is_pure_pod" : false,
         "title" : "the GNU gettext infrastructure",
         "id" : "id611",
         "name" : "Log::Report::Translator::Gettext",
         "inheritance" : {
            "extends" : [
               "Log::Report::Translator"
            ]
         },
         "package" : "Log::Report::Translator::Gettext",
         "distribution" : "Log-Report-Lexicon"
      },
      "id1136-id375" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id1136\">Log::Report::Domain::translator()</a></p>",
         "extends" : "id1136",
         "id" : "id1136-id375",
         "name" : "translator",
         "call" : "$obj-&gt;<b><a name=\"id1136\">translator</a></b>"
      },
      "id578" : {
         "type" : "fault",
         "subroutine" : "id575",
         "name" : "failed reading from file {fn}: $!",
         "id" : "id578"
      },
      "id559" : {
         "type" : "warning",
         "subroutine" : "id557",
         "id" : "id559",
         "name" : "do not understand command '$cmd' at $where."
      },
      "id445" : {
         "id" : "id445",
         "name" : "METHODS",
         "level" : 1,
         "nest" : [
            "id446",
            "id481",
            "id486"
         ],
         "path" : "METHODS",
         "type" : "chapter"
      },
      "id1168" : {
         "path" : "METHODS/Constructors",
         "type" : "section",
         "subroutines" : [
            "id1169"
         ],
         "id" : "id1168",
         "name" : "Constructors",
         "level" : 2
      },
      "id595" : {
         "level" : 1,
         "id" : "id595",
         "name" : "METHODS",
         "path" : "METHODS",
         "nest" : [
            "id596",
            "id598",
            "id600"
         ],
         "type" : "chapter"
      },
      "id290" : {
         "level" : 1,
         "type" : "chapter",
         "intro" : "<p>Log::Report::Template::Extract - collect translatable strings from template files</p>\n",
         "path" : "NAME",
         "id" : "id290",
         "name" : "NAME"
      },
      "id624" : {
         "name" : "new",
         "id" : "id624",
         "call" : "$class-&gt;<b><a name=\"id624\">new</a></b>(&nbsp;%options&nbsp;)",
         "examples" : [
            "id629"
         ],
         "type" : "c_method",
         "options" : [
            [
               "id627",
               "id628"
            ],
            [
               "id625",
               "id626"
            ]
         ]
      },
      "id177" : {
         "type" : "default",
         "value" : "<code>PRINTI</code>",
         "name" : "formatter",
         "id" : "id177"
      },
      "id1338" : {
         "name" : "INHERITANCE",
         "id" : "id1338",
         "type" : "chapter",
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Lexicon::POT\n   is a <a class=\"jump\" href=\"id725\">Log::Report::Lexicon::Table</a>\n</pre>\n",
         "level" : 1
      },
      "id843" : {
         "type" : "section",
         "path" : "METHODS/Logging",
         "level" : 2,
         "name" : "Logging",
         "id" : "id843",
         "subroutines" : [
            "id781-id818",
            "id785-id818",
            "id844",
            "id784-id818",
            "id777-id818",
            "id780-id818",
            "id783-id818",
            "id779-id818",
            "id846",
            "id845"
         ]
      },
      "id577" : {
         "type" : "default",
         "value" : "<code>undef</code>",
         "name" : "charset",
         "id" : "id577"
      },
      "id392" : {
         "intro" : "<p>Upgrade a base class <a class=\"jump\" href=\"id1127\">Log::Report::Domain</a>-object into an Template\ndomain.</p>\n\n<p>This is a bit akward process, needed when one of the code packages\nuses the same domain as the templating system uses.  The generic domain\nconfiguration stays intact.</p>\n",
         "type" : "c_method",
         "call" : "$class-&gt;<b><a name=\"id392\">upgrade</a></b>(&nbsp;$domain, %options&nbsp;)",
         "diagnostics" : [
            "id393"
         ],
         "name" : "upgrade",
         "id" : "id392"
      },
      "id664" : {
         "id" : "id664",
         "name" : "filename",
         "call" : "$obj-&gt;<b><a name=\"id664\">filename</a></b>",
         "type" : "i_method",
         "intro" : "<p>Returns the name of the source file for this data.</p>\n"
      },
      "id760-id958" : {
         "extends" : "id760",
         "value" : "&lt;system locale&gt;",
         "name" : "locale",
         "id" : "id760-id958",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "type" : "default"
      },
      "id704" : {
         "level" : 1,
         "id" : "id704",
         "name" : "METHODS",
         "type" : "chapter",
         "path" : "METHODS",
         "nest" : [
            "id705",
            "id706",
            "id707"
         ]
      },
      "id783-id1082" : {
         "call" : "$obj-&gt;<b><a name=\"id783\">skipStack</a></b>",
         "extends" : "id783",
         "name" : "skipStack",
         "id" : "id783-id1082",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id783\">Log::Report::Dispatcher::skipStack()</a></p>",
         "type" : "i_method"
      },
      "id159" : {
         "name" : "NAME",
         "id" : "id159",
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Minimal::Domain - administer one text-domain</p>\n",
         "level" : 1
      },
      "id256" : {
         "type" : "subsection",
         "path" : "DETAILS/Setup and Configuration/Dancer2::Plugin::LogReport",
         "intro" : "<p>To use the plugin, you simply use it in your application:</p>\n<pre>\n  package MyApp;\n  use Log::Report ();  # use early and minimal once\n  use Dancer2;\n  use Dancer2::Plugin::LogReport %config;\n</pre>\n\n<p><a class=\"jump\" href=\"id228\">Dancer2::Plugin::LogReport</a> takes the same <code>%config</code> options as\n<a class=\"jump\" href=\"id979\">Log::Report</a> itself (see <a class=\"jump\" href=\"id1045\">Log::Report::import()</a>).</p>\n\n<p>If you want to send messages from your modules/models, there is\nno need to use this specific plugin. Instead, you should simply\n<code>use Log::Report</code> to negate the need of loading all the Dancer2\nspecific code.</p>\n",
         "level" : 3,
         "id" : "id256",
         "name" : "Dancer2::Plugin::LogReport"
      },
      "id178" : {
         "subroutine" : "id173",
         "name" : "illegal formatter '$name' at $fn line $line.",
         "id" : "id178",
         "type" : "error"
      },
      "id1237" : {
         "id" : "id1237",
         "name" : "replace",
         "type" : "option",
         "params" : "BOOLEAN",
         "intro" : "<p>Only used in combination with a <tt class=\"parameter\">to</tt> filename: throw away the old file\nif it exists.  Probably you wish to append to existing information.</p>\n\n<p>Use the locale setting by default, which is LC_CTYPE or LC_ALL or LANG\n(in that order).  If these contain a character-set which Perl understands,\nthen that is used, otherwise silently ignored.</p>\n"
      },
      "id765-id1082" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>",
         "type" : "option",
         "params" : "CHARSET",
         "extends" : "id765",
         "id" : "id765-id1082",
         "name" : "charset"
      },
      "id195" : {
         "name" : "Modes",
         "id" : "id195",
         "path" : "FUNCTIONS/Modes",
         "intro" : "<p>Run-modes are explained in <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>.</p>\n",
         "type" : "section",
         "subroutines" : [
            "id197",
            "id198",
            "id199",
            "id196"
         ],
         "level" : 2
      },
      "id1258" : {
         "type" : "subsection",
         "path" : "DETAILS/Processing the message/Addition information",
         "level" : 3,
         "id" : "id1258",
         "name" : "Addition information"
      },
      "id1033" : {
         "examples" : [
            "id1034"
         ],
         "call" : "<b><a name=\"id1033\">N__</a></b>(&nbsp;$msgid&nbsp;)",
         "type" : "function",
         "intro" : "<p>Label to indicate that the string is a text which will be translated\nlater.  The function itself does nothing.  See also <a class=\"jump\" href=\"id1037\">N__w()</a>.</p>\n\n<p>This no-op function is used as label to the xgettext program to build the\ntranslation tables.</p>\n",
         "name" : "N__",
         "id" : "id1033"
      },
      "id779-id1228" : {
         "call" : "$obj-&gt;<b><a name=\"id779\">translate</a></b>(&nbsp;\\%options, $reason, $message&nbsp;)",
         "name" : "translate",
         "id" : "id779-id1228",
         "extends" : "id779",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id779\">Log::Report::Dispatcher::translate()</a></p>",
         "type" : "i_method"
      },
      "id990" : {
         "name" : "stack",
         "id" : "id990",
         "intro" : "<p>When defined, that data is used to display the call stack.  Otherwise,\nit is collected via <code>caller()</code> if needed.</p>\n",
         "type" : "option",
         "params" : "\\@trace"
      },
      "id758-id1228" : {
         "value" : "<code>depend on mode</code>",
         "extends" : "id758",
         "name" : "accept",
         "id" : "id758-id1228",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "type" : "default"
      },
      "id764-id818" : {
         "name" : "format_reason",
         "id" : "id764-id818",
         "value" : "'LOWERCASE'",
         "extends" : "id764",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>",
         "type" : "default"
      },
      "id1001" : {
         "id" : "id1001",
         "name" : "a message object is reported with more parameters.",
         "subroutine" : "id985",
         "type" : "error"
      },
      "id1214" : {
         "id" : "id1214",
         "type" : "example",
         "intro" : "<pre>  if($ex-&gt;isFatal) { $ex-&gt;throw(reason =&gt; 'ALERT') }\n  else { $ex-&gt;throw }\n</pre>\n"
      },
      "id741-id441" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id741\">Log::Report::Lexicon::Table::pluralIndex()</a></p>",
         "diagnostics" : [
            "id742-id441"
         ],
         "call" : "$obj-&gt;<b><a name=\"id741\">pluralIndex</a></b>(&nbsp;$count&nbsp;)",
         "id" : "id741-id441",
         "name" : "pluralIndex",
         "extends" : "id741"
      },
      "id873-id217" : {
         "params" : "$msgid",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id873\">Log::Report::Message::new(_plural)</a></p>",
         "extends" : "id873",
         "id" : "id873-id217",
         "name" : "_plural"
      },
      "id176-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id176\">Log::Report::Minimal::Domain::configure(formatter)</a></p>",
         "params" : "CODE|\\%config|'PRINTI'",
         "type" : "option",
         "extends" : "id176",
         "name" : "formatter",
         "id" : "id176-id375"
      },
      "id784-id1228" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id784\">Log::Report::Dispatcher::collectLocation()</a></p>",
         "type" : "ci_method",
         "call" : "$any-&gt;<b><a name=\"id784\">collectLocation</a></b>",
         "extends" : "id784",
         "id" : "id784-id1228",
         "name" : "collectLocation"
      },
      "id773-id1090" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id773\">Log::Report::Dispatcher::mode()</a></p>",
         "extends" : "id773",
         "id" : "id773-id1090",
         "name" : "mode",
         "call" : "$obj-&gt;<b><a name=\"id773\">mode</a></b>"
      },
      "id397" : {
         "type" : "i_method",
         "intro" : "<p>Directory where the translation tables are kept.</p>\n",
         "id" : "id397",
         "name" : "lexicon",
         "call" : "$obj-&gt;<b><a name=\"id397\">lexicon</a></b>"
      },
      "id572" : {
         "id" : "id572",
         "name" : "DESCRIPTION",
         "level" : 1,
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>This module is translating, based on PO files. PO files are used to store\ntranslations in humanly readable format for most of existing translation\nframeworks, like GNU gettext and Perl's Maketext.</p>\n\n<p>Internally, this module tries to be as efficient as possible: high\nspeed and low memory foot-print.  You will not be able to sub-class\nthis class cleanly.</p>\n\n<p>If you like to change the content of PO files, then use\n<a class=\"jump\" href=\"id441\">Log::Report::Lexicon::POT</a>.</p>\n"
      },
      "id956" : {
         "call" : "$obj-&gt;<b><a name=\"id956\">callback</a></b>",
         "id" : "id956",
         "name" : "callback",
         "intro" : "<p>Returns the code reference which will handle each logged message.</p>\n",
         "type" : "i_method"
      },
      "id172" : {
         "type" : "i_method",
         "intro" : "<p>Returns the CODE which implements the formatting.  It needs to be called with a\nmsgid and a HASH with arguments, usually via <a class=\"jump\" href=\"id180\">interpolate()</a>.</p>\n",
         "id" : "id172",
         "name" : "format",
         "call" : "$obj-&gt;<b><a name=\"id172\">format</a></b>"
      },
      "id1140" : {
         "value" : "<code>created internally</code>",
         "name" : "translator",
         "id" : "id1140",
         "type" : "default"
      },
      "id809" : {
         "name" : "Log::Report::Die",
         "id" : "id809",
         "title" : "compatibility routines with Perl's die/croak/confess",
         "is_pure_pod" : false,
         "distribution" : "Log-Report",
         "package" : "Log::Report::Die",
         "inheritance" : {
            "extends" : [
               "Exporter"
            ]
         },
         "version" : "1.45",
         "chapters" : [
            "id810",
            "id1340",
            "id811",
            "id812",
            "id813"
         ]
      },
      "id1239" : {
         "type" : "default",
         "value" : "LC_CTYPE",
         "name" : "charset",
         "id" : "id1239"
      },
      "id757-id1228" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "type" : "option",
         "params" : "$reasons|\\@reasons",
         "id" : "id757-id1228",
         "name" : "accept",
         "extends" : "id757"
      },
      "id419-id289" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id419\">Log::Report::Extract::new(lexicon)</a></p>",
         "type" : "option",
         "params" : "$directory",
         "id" : "id419-id289",
         "name" : "lexicon",
         "extends" : "id419"
      },
      "id1195" : {
         "level" : 1,
         "intro" : "<p>Log::Report::Exception - a single generated event</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "name" : "NAME",
         "id" : "id1195"
      },
      "id398" : {
         "type" : "i_method",
         "intro" : "<p>Return <code>true</code> when the function name which relates to this domain is\nallowed to be used for the indicated file.  The msgid extractor will warn\nwhen there is no match.</p>\n",
         "id" : "id398",
         "name" : "expectedIn",
         "call" : "$obj-&gt;<b><a name=\"id398\">expectedIn</a></b>(&nbsp;$filename&nbsp;)"
      },
      "id451" : {
         "type" : "default",
         "id" : "id451",
         "name" : "textdomain",
         "value" : "&lt;required&gt;"
      },
      "id375" : {
         "chapters" : [
            "id376",
            "id1345",
            "id377",
            "id378",
            "id379",
            "id1293"
         ],
         "version" : "1.05",
         "inheritance" : {
            "extends" : [
               "Log::Report::Domain"
            ]
         },
         "package" : "Log::Report::Template::Textdomain",
         "distribution" : "Log-Report-Template",
         "is_pure_pod" : false,
         "title" : "template translation with one domain",
         "id" : "id375",
         "name" : "Log::Report::Template::Textdomain"
      },
      "id57" : {
         "type" : "default",
         "value" : "&lt;useful defaults&gt;",
         "id" : "id57",
         "name" : "serializers"
      },
      "id1205" : {
         "name" : "report_opts",
         "id" : "id1205",
         "value" : "+{ }",
         "type" : "default"
      },
      "id420-id289" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id419\">Log::Report::Extract::new(lexicon)</a></p>",
         "type" : "default",
         "id" : "id420-id289",
         "name" : "lexicon",
         "extends" : "id420",
         "value" : "&lt;required&gt;"
      },
      "id389" : {
         "type" : "default",
         "value" : "&lt;required&gt;",
         "name" : "templater",
         "id" : "id389"
      },
      "id421-id289" : {
         "extends" : "id421",
         "name" : "charset",
         "id" : "id421-id289",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id421\">Log::Report::Extract::new(charset)</a></p>",
         "params" : "$charset",
         "type" : "option"
      },
      "id1150" : {
         "type" : "fault",
         "subroutine" : "id1149",
         "id" : "id1150",
         "name" : "cannot open JSON file for context at $fn: $!"
      },
      "id1215" : {
         "intro" : "<p>Change the <tt class=\"parameter\">$message</tt> of the exception, must be a <a class=\"jump\" href=\"id856\">Log::Report::Message</a>\nobject.</p>\n\n<p>When you use a <code>Log::Report::Message</code> object, you will get a new one\nreturned. Therefore, if you want to modify the message in an exception,\nyou have to re-assign the result of the modification.</p>\n",
         "type" : "i_method",
         "examples" : [
            "id1216"
         ],
         "call" : "$obj-&gt;<b><a name=\"id1215\">message</a></b>(&nbsp;[$message]&nbsp;)",
         "diagnostics" : [
            "id1217"
         ],
         "id" : "id1215",
         "name" : "message"
      },
      "id903" : {
         "level" : 2,
         "name" : "Attributes",
         "id" : "id903",
         "subroutines" : [
            "id907",
            "id913",
            "id911",
            "id914",
            "id912",
            "id915",
            "id909",
            "id905",
            "id908",
            "id916",
            "id906",
            "id904",
            "id910"
         ],
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id180-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id180\">Log::Report::Minimal::Domain::interpolate()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id180\">interpolate</a></b>(&nbsp;$msgid, [$args]&nbsp;)",
         "id" : "id180-id375",
         "name" : "interpolate",
         "extends" : "id180"
      },
      "id1080" : {
         "name" : "Log::Dispatch and Log::Log4perl",
         "id" : "id1080",
         "level" : 3,
         "type" : "subsection",
         "intro" : "<p>The two major logging frameworks for Perl are Log::Dispatch and\nLog::Log4perl; both provide a pluggable logging interface.</p>\n\n<p>Both frameworks do not have (gettext or maketext) language translation\nsupport, which has various consequences.  When you wish for to report\nin some other language, it must be translated before the logging\nfunction is called.   This may mean that an error message is produced\nin Chinese, and therefore also ends-up in the syslog file in Chinese.\nWhen this is not your language, you have a problem.</p>\n\n<p><a class=\"jump\" href=\"id979\">Log::Report</a> translates only in the back-end, which means that the user may\nget the message in Chinese, but you get your report in your beloved Dutch.\nWhen no dispatcher needs to report the message, then no time is lost in\ntranslating.</p>\n\n<p>With both logging frameworks, you use terminology comparable to\nsyslog: the module programmer determines the seriousness of the\nerror message, not the application which integrates multiple modules.\nThis is the way perl programs usually work, but often the cause for\ninconsequent user interaction.</p>\n",
         "path" : "DETAILS/Compared to other solutions in Perl/Log::Dispatch and Log::Log4perl"
      },
      "id339" : {
         "intro" : "<p>Get the <code>String::Print</code> object which formats the messages.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id339\">formatter</a></b>",
         "id" : "id339",
         "name" : "formatter"
      },
      "id450" : {
         "params" : "STRING",
         "type" : "option",
         "intro" : "<p>The package name, used in the directory structure to store the\nPO files.</p>\n",
         "id" : "id450",
         "name" : "textdomain"
      },
      "id146" : {
         "type" : "function",
         "call" : "<b><a name=\"id146\">__</a></b>(&nbsp;$msgid&nbsp;)",
         "id" : "id146",
         "name" : "__"
      },
      "id249" : {
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id249\">panic</a></b>",
         "id" : "id249",
         "name" : "panic"
      },
      "id712" : {
         "type" : "info",
         "name" : "no Perl in file $filename.",
         "id" : "id712",
         "subroutine" : "id708"
      },
      "id374" : {
         "level" : 3,
         "intro" : "<p>PO-files are quite large.  You can reduce the translation table size by\ncreating a binary \"MO\"-file for each of them. <a class=\"jump\" href=\"id717\">Log::Report::Lexicon</a>\nwill prefer mo files, if it encounters them, but generation is not (yet)\norganized via <a class=\"jump\" href=\"id979\">Log::Report</a> components.  Search for \"msgfmt\" as separate\ntool or CPAN module.</p>\n",
         "path" : "DETAILS/Extracting PO-files/More performance via MO-files",
         "type" : "subsection",
         "id" : "id374",
         "name" : "More performance via MO-files"
      },
      "id1070" : {
         "level" : 4,
         "path" : "DETAILS/Error handling models/The Reason for the report/Report level comparison",
         "intro" : "<p>Various frameworks used with perl programs define different labels\nto indicate the reason for the message to be produced.</p>\n<pre>\n  Perl5 Log::Dispatch Syslog Log4Perl Log::Report\n  print   0,debug     debug  debug    trace\n  print   0,debug     debug  debug    assert\n  print   1,info      info   info     info\n  warn\\n  2,notice    notice info     notice\n  warn    3,warning   warn   warn     mistake\n  carp    3,warning   warn   warn     warning\n  die\\n   4,error     err    error    error\n  die     5,critical  crit   fatal    fault\n  croak   6,alert     alert  fatal    alert\n  croak   7,emergency emerg  fatal    failure\n  confess 7,emergency emerg  fatal    panic\n</pre>\n",
         "type" : "subsubsection",
         "id" : "id1070",
         "name" : "Report level comparison"
      },
      "id773-id944" : {
         "call" : "$obj-&gt;<b><a name=\"id773\">mode</a></b>",
         "id" : "id773-id944",
         "name" : "mode",
         "extends" : "id773",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id773\">Log::Report::Dispatcher::mode()</a></p>",
         "type" : "i_method"
      },
      "id765-id818" : {
         "extends" : "id765",
         "name" : "charset",
         "id" : "id765-id818",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id765\">Log::Report::Dispatcher::new(charset)</a></p>",
         "params" : "CHARSET",
         "type" : "option"
      },
      "id1349" : {
         "id" : "id1349",
         "name" : "INHERITANCE",
         "level" : 1,
         "type" : "chapter",
         "path" : "INHERITANCE",
         "intro" : "<pre> Dancer2::Logger::LogReport\n   is a Moo::Object\n</pre>\n"
      },
      "id546" : {
         "intro" : "<p>Returns an unsorted LIST of <tt class=\"parameter\">@locations</tt>.  When data are specified,\nthen those will be used to replace all currently defined references.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id546\">references</a></b>(&nbsp;[$locations|@locations|\\@locations]&nbsp;)",
         "id" : "id546",
         "name" : "references"
      },
      "id496" : {
         "type" : "i_method",
         "intro" : "<p>Remove all the references to the indicate <tt class=\"parameter\">$filename</tt> from all defined\ntranslations.  Returns the number of refs left.</p>\n",
         "id" : "id496",
         "name" : "removeReferencesTo",
         "call" : "$obj-&gt;<b><a name=\"id496\">removeReferencesTo</a></b>(&nbsp;$filename&nbsp;)"
      },
      "id436-id697" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id436\">Log::Report::Extract::showStats()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id436\">showStats</a></b>(&nbsp;[$domains]&nbsp;)",
         "extends" : "id436",
         "name" : "showStats",
         "id" : "id436-id697"
      },
      "id763-id1228" : {
         "type" : "option",
         "params" : "'UPPERCASE'|'LOWERCASE'|'UCFIRST'|'IGNORE'|CODE",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>",
         "id" : "id763-id1228",
         "name" : "format_reason",
         "extends" : "id763"
      },
      "id1204" : {
         "name" : "report_opts",
         "id" : "id1204",
         "params" : "\\%opts",
         "type" : "option"
      },
      "id1132" : {
         "path" : "METHODS/Constructors",
         "type" : "section",
         "subroutines" : [
            "id1133"
         ],
         "level" : 2,
         "id" : "id1132",
         "name" : "Constructors"
      },
      "id1011" : {
         "intro" : "<p>Short for <code>report TRACE =&gt; $message</code></p>\n",
         "type" : "function",
         "call" : "<b><a name=\"id1011\">trace</a></b>(&nbsp;$message&nbsp;)",
         "id" : "id1011",
         "name" : "trace"
      },
      "id793-id1174" : {
         "extends" : "id793",
         "value" : "&lt;required&gt;",
         "name" : "call",
         "id" : "id793-id1174",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>",
         "type" : "default"
      },
      "id783-id818" : {
         "extends" : "id783",
         "name" : "skipStack",
         "id" : "id783-id818",
         "call" : "$obj-&gt;<b><a name=\"id783\">skipStack</a></b>",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id783\">Log::Report::Dispatcher::skipStack()</a></p>"
      },
      "id71" : {
         "type" : "example",
         "intro" : "<pre>  my $def = $sp-&gt;defaults('EL');\n  say \"Default max width is \", $def-&gt;{width};\n</pre>\n",
         "id" : "id71",
         "name" : "getting defaults for a modifier\n"
      },
      "id1260" : {
         "path" : "METHODS/Constructors",
         "type" : "section",
         "subroutines" : [
            "id1169-id611"
         ],
         "name" : "Constructors",
         "id" : "id1260",
         "level" : 2
      },
      "id785-id1228" : {
         "name" : "stackTraceLine",
         "id" : "id785-id1228",
         "extends" : "id785",
         "call" : "$any-&gt;<b><a name=\"id785\">stackTraceLine</a></b>(&nbsp;%options&nbsp;)",
         "options" : [
            [
               "id800-id1228",
               "id801-id1228"
            ],
            [
               "id792-id1228",
               "id793-id1228"
            ],
            [
               "id788-id1228",
               "id789-id1228"
            ],
            [
               "id790-id1228",
               "id791-id1228"
            ],
            [
               "id796-id1228",
               "id797-id1228"
            ],
            [
               "id798-id1228",
               "id799-id1228"
            ],
            [
               "id786-id1228",
               "id787-id1228"
            ],
            [
               "id794-id1228",
               "id795-id1228"
            ]
         ],
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id785\">Log::Report::Dispatcher::stackTraceLine()</a></p>"
      },
      "id1194" : {
         "name" : "Log::Report::Exception",
         "id" : "id1194",
         "is_pure_pod" : false,
         "title" : "a single generated event",
         "distribution" : "Log-Report",
         "inheritance" : {},
         "package" : "Log::Report::Exception",
         "version" : "1.45",
         "chapters" : [
            "id1195",
            "id1196",
            "id1197",
            "id1198",
            "id1201"
         ]
      },
      "id991" : {
         "type" : "default",
         "name" : "stack",
         "id" : "id991",
         "value" : "<code>undef</code>"
      },
      "id869-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id869\">Log::Report::Message::new(_domain)</a></p>",
         "params" : "$name|$object",
         "type" : "option",
         "extends" : "id869",
         "name" : "_domain",
         "id" : "id869-id217"
      },
      "id718" : {
         "level" : 1,
         "path" : "NAME",
         "intro" : "<p>Log::Report::Lexicon - translation component of Log::Report</p>\n",
         "type" : "chapter",
         "id" : "id718",
         "name" : "NAME"
      },
      "id616" : {
         "type" : "section",
         "path" : "METHODS/Translating",
         "id" : "id616",
         "name" : "Translating",
         "level" : 2,
         "subroutines" : [
            "id1173-id611",
            "id617"
         ]
      },
      "id949" : {
         "level" : 1,
         "name" : "METHODS",
         "id" : "id949",
         "path" : "METHODS",
         "nest" : [
            "id950",
            "id955",
            "id957"
         ],
         "type" : "chapter"
      },
      "id665" : {
         "id" : "id665",
         "name" : "originalCharset",
         "call" : "$obj-&gt;<b><a name=\"id665\">originalCharset</a></b>",
         "type" : "i_method",
         "intro" : "<p>Returns the character-set as found in the PO-file.  The strings are\nconverted into utf8 before you use them in the program.</p>\n"
      },
      "id705" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "level" : 2,
         "name" : "Constructors",
         "id" : "id705",
         "subroutines" : [
            "id418-id697"
         ]
      },
      "id633" : {
         "type" : "section",
         "path" : "METHODS/Translating",
         "level" : 2,
         "name" : "Translating",
         "id" : "id633",
         "subroutines" : [
            "id1173-id618",
            "id634"
         ]
      },
      "id203" : {
         "type" : "function",
         "intro" : "<p>[1.02] Escape HTML volatile characters.</p>\n",
         "name" : "to_html",
         "id" : "id203",
         "call" : "<b><a name=\"id203\">to_html</a></b>(&nbsp;$string&nbsp;)"
      },
      "id764-id1082" : {
         "extends" : "id764",
         "value" : "'LOWERCASE'",
         "name" : "format_reason",
         "id" : "id764-id1082",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>",
         "type" : "default"
      },
      "id194" : {
         "type" : "function",
         "id" : "id194",
         "name" : "use_errno",
         "call" : "<b><a name=\"id194\">use_errno</a></b>(&nbsp;$reason&nbsp;)"
      },
      "id761-id958" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>",
         "type" : "option",
         "params" : "'NORMAL'|'VERBOSE'|'ASSERT'|'DEBUG'|0..3",
         "id" : "id761-id958",
         "name" : "mode",
         "extends" : "id761"
      },
      "id683" : {
         "subroutine" : "id681",
         "name" : "no value for tag `$tag' in the context",
         "id" : "id683",
         "type" : "warning"
      },
      "id1020" : {
         "type" : "function",
         "intro" : "<p>Short for <code>report FAILURE =&gt; $message</code></p>\n",
         "id" : "id1020",
         "name" : "failure",
         "call" : "<b><a name=\"id1020\">failure</a></b>(&nbsp;$message&nbsp;)"
      },
      "id1248" : {
         "type" : "section",
         "path" : "METHODS/File maintenance",
         "id" : "id1248",
         "name" : "File maintenance",
         "level" : 2,
         "subroutines" : [
            "id1249"
         ]
      },
      "id717" : {
         "inheritance" : {},
         "package" : "Log::Report::Lexicon",
         "distribution" : "Log-Report-Lexicon",
         "is_pure_pod" : false,
         "title" : "translation component of Log::Report",
         "id" : "id717",
         "name" : "Log::Report::Lexicon",
         "chapters" : [
            "id718",
            "id719",
            "id720",
            "id721"
         ],
         "version" : "1.16"
      },
      "id444" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>This module is reading, extending, and writing POT files.  POT files\nare used to store translations in humanly readable format for most of\nexisting translation frameworks, like GNU gettext and Perl's Maketext.\nIf you only wish to access the translation, then you may use the much\nmore efficient <a class=\"jump\" href=\"id569\">Log::Report::Lexicon::POTcompact</a>.</p>\n\n<p>The code is loosely based on Locale::PO, by Alan Schwartz.  The coding\nstyle is a bit off the rest of <code>Log::Report</code>, and there was a need to\nsincere simplification.  Each PO record will be represented by a\n<a class=\"jump\" href=\"id511\">Log::Report::Lexicon::PO</a>.</p>\n",
         "id" : "id444",
         "name" : "DESCRIPTION"
      },
      "id594" : {
         "id" : "id594",
         "name" : "DESCRIPTION",
         "path" : "DESCRIPTION",
         "intro" : "<p>This module handles the lookup of translation files for a whole\ndirectory tree.  It is lazy loading, which means that it will only\nbuild the search tree when addressed, not when the object is\ncreated.</p>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id291" : {
         "level" : 1,
         "type" : "chapter",
         "intro" : "<pre>  # Added Log-Report-Template v0.90\n  # First use of this module: extract msgids from various kinds\n  # of text-files, usually web templates.\n  # See script \"xgettext-perl\" for standard wrapper script\n\n  my $extr = Log::Report::Template::Extract-&gt;new(\n    lexicon =&gt; '/usr/share/locale',\n    domain  =&gt; 'my-web-site',\n    pattern =&gt; 'TT2-loc',\n  );\n  $extr-&gt;process('website/page.html');  # many times\n  $extr-&gt;showStats;\n  $extr-&gt;write;\n\n  # Second use: connect to Template::Toolkit\n  # See DETAILS chapter below\n\n  [% loc(\"Greetings {name},\", name =&gt; client.name) %]\n  [% | loc(name =&gt; client.name) %]Greetings {name}[% END %]\n  [% 'Greetings {name}' | loc(name =&gt; client.name) %]\n</pre>\n",
         "path" : "SYNOPSIS",
         "name" : "SYNOPSIS",
         "id" : "id291"
      },
      "id625" : {
         "id" : "id625",
         "name" : "lexicons",
         "intro" : "<p>The <tt class=\"parameter\">$directory</tt> where the translations can be found.  See\n<a class=\"jump\" href=\"id591\">Log::Report::Lexicon::Index</a> for the expected structure of such\ndirectory.</p>\n\n<p>The default is based on the location of the module which instantiates\nthis translator.  The filename of the module is stripped from its <code>.pm</code>\nextension, and used as directory name.  Within that directory, there\nmust be a directory named <code>messages</code>, which will be the root directory\nof a <a class=\"jump\" href=\"id591\">Log::Report::Lexicon::Index</a>.</p>\n",
         "params" : "$directory",
         "type" : "option"
      },
      "id1347" : {
         "type" : "chapter",
         "intro" : "<pre> Dancer2::Plugin::LogReport::Message\n   is a <a class=\"jump\" href=\"id856\">Log::Report::Message</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "level" : 1,
         "id" : "id1347",
         "name" : "INHERITANCE"
      },
      "id1036" : {
         "intro" : "<pre>  my @save = N__n \"save file\", \"save files\";\n  my @save = (N__n \"save file\", \"save files\");\n  my @save = N__n(\"save file\", \"save files\");\n\n  # be warned about SCALARs in prototype!\n  print __n @save, $nr_files;  # wrong!\n  print __n $save[0], $save[1], @files, %vars;\n</pre>\n",
         "type" : "example",
         "id" : "id1036",
         "name" : "how to use <a class=\"jump\" href=\"id1035\">N__n()</a>\n"
      },
      "id137" : {
         "id" : "id137",
         "name" : "notice",
         "call" : "<b><a name=\"id137\">notice</a></b>(&nbsp;$message&nbsp;)",
         "type" : "function"
      },
      "id610" : {
         "level" : 2,
         "type" : "section",
         "intro" : "<p>My module is named <code>Some::Module</code> and installed in some of perl's\ndirectories, say <code>~perl5</code>.  The module is defining textdomain\n<code>my-domain</code>.  The translation is made into <code>nl-NL.utf-8</code> (locale for\nDutch spoken in The Netherlands, utf-8 encoded text file).</p>\n\n<p>The translation table is taken from the first existing of these files:</p><pre>\n  nl-NL.utf-8/LC_MESSAGES/my-domain.po\n  nl-NL.utf-8/LC_MESSAGES/my-domain.po\n  nl-NL.utf8/LC_MESSAGES/my-domain.po\n  nl-NL/LC_MESSAGES/my-domain.po\n  nl/LC_MESSAGES/my-domain.po\n</pre>\n\n<p>Then, attempts are made which are not compatible with gettext.  The\nadvantage is that the directory structure is much simpler.  The idea\nis that each domain has its own locale installation directory, instead\nof everything merged in one place, what gettext presumes.</p>\n\n<p>In order of attempts:</p><pre>\n  nl-NL.utf-8/my-domain.po\n  nl-NL.utf8/my-domain.po\n  nl-NL/my-domain.po\n  nl/my-domain.po\n  my-domain/nl-NL.utf8.po\n  my-domain/nl-NL.po\n  my-domain/nl.po\n</pre>\n\n<p>Filenames may get mutulated by the platform (which we will try to hide\nfrom you [please help improve this]), and are treated case-INsensitive!</p>\n",
         "path" : "DETAILS/Example",
         "id" : "id610",
         "name" : "Example"
      },
      "id1024" : {
         "name" : "how to use <code>__()</code>\n",
         "id" : "id1024",
         "type" : "example",
         "intro" : "<pre>  print __\"Hello World\";      # translated into user's language\n  print __'Hello World';      # syntax error!\n  print __('Hello World');    # ok, translated\n  print __\"Hello\", \" World\";  # World not translated\n\n  my $s = __\"Hello World\";    # creates object, not yet translated\n  print ref $s;               # Log::Report::Message\n  print $s;                   # ok, translated\n  print $s-&gt;toString('fr');   # ok, forced into French\n</pre>\n"
      },
      "id554" : {
         "call" : "$obj-&gt;<b><a name=\"id554\">addFlags</a></b>(&nbsp;STRING&nbsp;)",
         "diagnostics" : [
            "id555"
         ],
         "name" : "addFlags",
         "id" : "id554",
         "intro" : "<p>Parse a \"flags\" line.</p>\n",
         "type" : "i_method"
      },
      "id187" : {
         "id" : "id187",
         "name" : "expand_reasons",
         "type" : "function",
         "intro" : "<p>Returns a sub-set of all existing message reason labels, based on the\ncontent reason patterns.  Either use a comma separated list of patterns\nin string <tt class=\"parameter\">$reasons</tt>, or an ARRAY of patterns.</p>\n\n<p>The following rules apply for the patterns:</p>\n<pre>\n  REASONS     = BLOCK [ ',' BLOCKS ] | ARRAY-of-REASON\n  BLOCK       = '-' TO | FROM '-' TO | ONE | SOURCE\n  FROM,TO,ONE = 'TRACE' | 'ASSERT' | ,,, | 'PANIC'\n  SOURCE      = 'USER' | 'PROGRAM' | 'SYSTEM' | 'FATAL' | 'ALL' | 'NONE'\n</pre>\n\n<p>The SOURCE specification group all reasons which are usually related to\nthe problem: report about problems caused by the user, reported by\nthe program, or with system interaction.</p>\n",
         "diagnostics" : [
            "id189",
            "id190",
            "id191"
         ],
         "examples" : [
            "id188"
         ],
         "call" : "<b><a name=\"id187\">expand_reasons</a></b>(&nbsp;$reasons|\\@reasons&nbsp;)"
      },
      "id538" : {
         "type" : "i_method",
         "intro" : "<p>Returns the actual msgid, which cannot be <code>undef</code>.</p>\n",
         "id" : "id538",
         "name" : "msgid",
         "call" : "$obj-&gt;<b><a name=\"id538\">msgid</a></b>"
      },
      "id629" : {
         "type" : "example",
         "intro" : "<pre>  # file xxx/perl5.8.8/My/Module.pm\n  use Log::Report 'my-domain',\n    translator =&gt; Log::Report::Translator::POT-&gt;new;\n\n  # lexicon now in xxx/perl5.8.8/My/Module/messages/\n</pre>\n",
         "name" : "default lexicon directory\n",
         "id" : "id629"
      },
      "id588" : {
         "intro" : "<p>Lookup the translations with the <tt class=\"parameter\">$msgid</tt>.  Returns a SCALAR, when only\none translation is known, and an ARRAY where there are multiple.\nReturns <code>undef</code> when nothing about the translation is known.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id588\">msgid</a></b>(&nbsp;$msgid, [$msgctxt]&nbsp;)",
         "name" : "msgid",
         "id" : "id588"
      },
      "id739-id569" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id739\">Log::Report::Lexicon::Table::translations()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id739\">translations</a></b>(&nbsp;[$active]&nbsp;)",
         "diagnostics" : [
            "id740-id569"
         ],
         "extends" : "id739",
         "id" : "id739-id569",
         "name" : "translations"
      },
      "id945" : {
         "level" : 1,
         "intro" : "<p>Log::Report::Dispatcher::Callback - call a code-ref for each log-line</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "id" : "id945",
         "name" : "NAME"
      },
      "id188" : {
         "intro" : "<pre>  WARNING-FAULT # == WARNING,MISTAKE,ERROR,FAULT\n  WARNING,INFO  # == WARNING,INFO\n  -INFO         # == TRACE-INFO\n  ALERT-        # == ALERT,FAILURE,PANIC\n  USER          # == MISTAKE,ERROR\n  ALL           # == TRACE-PANIC\n  FATAL         # == ERROR,FAULT,FAILURE,PANIC [1.07]\n  NONE          # ==\n</pre>\n",
         "type" : "example",
         "name" : "of expanded REASONS\n",
         "id" : "id188"
      },
      "id669" : {
         "version" : "1.16",
         "chapters" : [
            "id670",
            "id671",
            "id672",
            "id673",
            "id689"
         ],
         "name" : "Log::Report::Translator::Context",
         "id" : "id669",
         "is_pure_pod" : false,
         "title" : "handle translation contexts",
         "distribution" : "Log-Report-Lexicon",
         "inheritance" : {},
         "package" : "Log::Report::Translator::Context"
      },
      "id138" : {
         "call" : "<b><a name=\"id138\">warning</a></b>(&nbsp;$message&nbsp;)",
         "name" : "warning",
         "id" : "id138",
         "type" : "function"
      },
      "id709" : {
         "name" : "charset",
         "id" : "id709",
         "params" : "$charset",
         "type" : "option",
         "intro" : "<p>PPI v1.284 still does not support unicode by itself, so you need to help\nit by specifying the character-set which is used in the file.</p>\n"
      },
      "id154" : {
         "type" : "function",
         "id" : "id154",
         "name" : "N__w",
         "call" : "<b><a name=\"id154\">N__w</a></b>(&nbsp;STRING&nbsp;)"
      },
      "id587" : {
         "level" : 2,
         "id" : "id587",
         "name" : "Managing PO's",
         "path" : "METHODS/Managing PO's",
         "nest" : [
            "id1272",
            "id1273"
         ],
         "type" : "section"
      },
      "id1118" : {
         "level" : 2,
         "name" : "Logging",
         "id" : "id1118",
         "subroutines" : [
            "id781-id1090",
            "id785-id1090",
            "id778-id1090",
            "id784-id1090",
            "id777-id1090",
            "id780-id1090",
            "id783-id1090",
            "id779-id1090",
            "id1119"
         ],
         "type" : "section",
         "path" : "METHODS/Logging"
      },
      "id773-id1082" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id773\">Log::Report::Dispatcher::mode()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id773\">mode</a></b>",
         "extends" : "id773",
         "name" : "mode",
         "id" : "id773-id1082"
      },
      "id537" : {
         "path" : "METHODS/Attributes",
         "type" : "section",
         "subroutines" : [
            "id542",
            "id550",
            "id549",
            "id543",
            "id547",
            "id541",
            "id545",
            "id551",
            "id546",
            "id540",
            "id539",
            "id548",
            "id544",
            "id552",
            "id538",
            "id554"
         ],
         "level" : 2,
         "id" : "id537",
         "name" : "Attributes"
      },
      "id800-id1174" : {
         "id" : "id800-id1174",
         "name" : "abstract",
         "extends" : "id800",
         "type" : "option",
         "params" : "INTEGER",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id800\">Log::Report::Dispatcher::stackTraceLine(abstract)</a></p>"
      },
      "id774-id1228" : {
         "call" : "$obj-&gt;<b><a name=\"id774\">isDisabled</a></b>",
         "extends" : "id774",
         "name" : "isDisabled",
         "id" : "id774-id1228",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id774\">Log::Report::Dispatcher::isDisabled()</a></p>",
         "type" : "i_method"
      },
      "id532" : {
         "params" : "$locations|\\@locations",
         "type" : "option",
         "intro" : "<p>As SCALAR, this contains a blank separated list of <tt class=\"parameter\">@locations</tt>.\nThe <tt class=\"parameter\">@locations</tt> are of the  form <code>filename:linenumber</code>, for\ninstance <code>lib/Foo.pm:42</code>\nSee <a class=\"jump\" href=\"id547\">addReferences()</a></p>\n",
         "id" : "id532",
         "name" : "references"
      },
      "id883-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id883\">Log::Report::Message::new(_tag)</a></p>",
         "params" : "$tags|\\@tags",
         "type" : "option",
         "extends" : "id883",
         "name" : "_tag",
         "id" : "id883-id217"
      },
      "id764-id944" : {
         "value" : "'LOWERCASE'",
         "extends" : "id764",
         "name" : "format_reason",
         "id" : "id764-id944",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>",
         "type" : "default"
      },
      "id456" : {
         "type" : "option",
         "params" : "EXPRESSION",
         "intro" : "<p>The algorithm to be used to calculate which translated msgstr to use.</p>\n",
         "name" : "plural_alg",
         "id" : "id456"
      },
      "id582" : {
         "type" : "error",
         "id" : "id582",
         "name" : "cannot detect charset in $fn.",
         "subroutine" : "id575"
      },
      "id783-id1090" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id783\">Log::Report::Dispatcher::skipStack()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id783\">skipStack</a></b>",
         "extends" : "id783",
         "id" : "id783-id1090",
         "name" : "skipStack"
      },
      "id323" : {
         "level" : 1,
         "path" : "DESCRIPTION",
         "intro" : "<p>This module extends Template, which is the core of Template Toolkit.\nThe main addition is support for translations via the translation\nframework offered by <a class=\"jump\" href=\"id979\">Log::Report</a>.</p>\n\n<p>You add translations to a template system, by adding calls to some\ntranslation function (by default called <code>loc()</code>) to your template text.\nThat function will perform dark magic to collect the translation from\ntranslation tables, and fill in values.  For instance:</p>\n<pre>\n  [% price = 3.14 %]\n  &lt;divE&lt;gt>Price: [% price %]&lt;/divE&lt;gt>          # no translation\n  &lt;divE&lt;gt>[% loc(\"Price: {price}\") %]&lt;/divE&lt;gt> # translation optional\n</pre>\n\n<p>It's quite a lot of work to make your templates translatable.\nPlease read the <a class=\"jump\" href=\"id362\">DETAILS</a> section before you start using this module.</p>\n",
         "type" : "chapter",
         "name" : "DESCRIPTION",
         "id" : "id323"
      },
      "id789-id1228" : {
         "id" : "id789-id1228",
         "name" : "filename",
         "extends" : "id789",
         "value" : "&lt;required&gt;",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>",
         "type" : "default"
      },
      "id1084" : {
         "level" : 1,
         "type" : "chapter",
         "intro" : "<pre>  dispatcher Log::Report::Dispatcher::Perl =&gt; 'default',\n    accept =&gt; 'NOTICE-';\n\n  # close the default dispatcher\n  dispatcher close =&gt; 'default';\n</pre>\n",
         "path" : "SYNOPSIS",
         "id" : "id1084",
         "name" : "SYNOPSIS"
      },
      "id140" : {
         "type" : "function",
         "call" : "<b><a name=\"id140\">error</a></b>(&nbsp;$message&nbsp;)",
         "name" : "error",
         "id" : "id140"
      },
      "id1154" : {
         "type" : "example",
         "intro" : "<pre>  use Log::Report 'my-domain', context_rules =&gt; {};\n</pre>\n",
         "id" : "id1154"
      },
      "id951" : {
         "name" : "new",
         "id" : "id951",
         "diagnostics" : [
            "id954"
         ],
         "call" : "$class-&gt;<b><a name=\"id951\">new</a></b>(&nbsp;$type, $name, %options&nbsp;)",
         "options" : [
            [
               "id757-id944",
               "id758-id944"
            ],
            [
               "id952",
               "id953"
            ],
            [
               "id765-id944",
               "id766-id944"
            ],
            [
               "id763-id944",
               "id764-id944"
            ],
            [
               "id759-id944",
               "id760-id944"
            ],
            [
               "id761-id944",
               "id762-id944"
            ]
         ],
         "type" : "c_method"
      },
      "id385" : {
         "type" : "default",
         "value" : "'loc'",
         "name" : "translation_function",
         "id" : "id385"
      },
      "id53" : {
         "examples" : [
            "id64"
         ],
         "call" : "$class-&gt;<b><a name=\"id53\">new</a></b>(&nbsp;%options&nbsp;)",
         "intro" : "<p>The <tt class=\"parameter\">%options</tt> of the constructure configure processing options.</p>\n",
         "type" : "c_method",
         "id" : "id53",
         "name" : "new",
         "options" : [
            [
               "id62",
               "id63"
            ],
            [
               "id58",
               "id59"
            ],
            [
               "id60",
               "id61"
            ],
            [
               "id54",
               "id55"
            ],
            [
               "id56",
               "id57"
            ]
         ]
      },
      "id1190" : {
         "type" : "section",
         "path" : "METHODS/Attributes",
         "level" : 2,
         "name" : "Attributes",
         "id" : "id1190",
         "subroutines" : [
            "id771-id1174",
            "id774-id1174",
            "id775-id1174",
            "id772-id1174",
            "id773-id1174",
            "id1191"
         ]
      },
      "id1302" : {
         "path" : "OVERLOADED",
         "type" : "chapter",
         "subroutines" : [
            "id863-id217",
            "id861-id217",
            "id862-id217"
         ],
         "level" : 1,
         "name" : "OVERLOADED",
         "id" : "id1302"
      },
      "id804" : {
         "nest" : [
            "id805",
            "id806"
         ],
         "path" : "DETAILS/Processing the message",
         "type" : "section",
         "name" : "Processing the message",
         "id" : "id804",
         "level" : 2
      },
      "id430-id697" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id430\">Log::Report::Extract::addPot()</a></p>",
         "extends" : "id430",
         "id" : "id430-id697",
         "name" : "addPot",
         "call" : "$obj-&gt;<b><a name=\"id430\">addPot</a></b>(&nbsp;$domain, $pot, %options&nbsp;)"
      },
      "id490" : {
         "subroutine" : "id489",
         "id" : "id490",
         "name" : "translation already exists for '$msgid' with '$ctxt'.",
         "type" : "error"
      },
      "id1264" : {
         "name" : "Processing the message",
         "id" : "id1264",
         "level" : 2,
         "nest" : [
            "id1265",
            "id1266"
         ],
         "path" : "DETAILS/Processing the message",
         "type" : "section"
      },
      "id743" : {
         "type" : "i_method",
         "intro" : "<p>This method needs to be called after setting (reading or creating) a new\ntable header, to interpret the plural algorithm as specified in the\n<code>Plural-Forms</code> header field.  [1.09] The header field is not required\nwhen not used.</p>\n\n<p>A full list of plural forms per language can be found at\n<a href=\"https://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html\" target=\"_blank\">https://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html</a></p>\n",
         "id" : "id743",
         "name" : "setupPluralAlgorithm",
         "diagnostics" : [
            "id744"
         ],
         "call" : "$obj-&gt;<b><a name=\"id743\">setupPluralAlgorithm</a></b>"
      },
      "id335" : {
         "params" : "CLASS",
         "type" : "option",
         "intro" : "<p>Use your own extension to <a class=\"jump\" href=\"id375\">Log::Report::Template::Textdomain</a>.</p>\n",
         "id" : "id335",
         "name" : "textdomain_class"
      },
      "id58" : {
         "id" : "id58",
         "name" : "encode_for",
         "type" : "option",
         "params" : "\\%rules|'HTML'",
         "intro" : "<p>[0.91] The format string and the inserted values will get encoded according to\nsome <tt class=\"parameter\">%rules</tt>.  Function <code>encode_entities()</code> provided by HTML::Entities\nis used when you specify the predefined string <code>HTML</code>.  See <a class=\"jump\" href=\"id67\">encodeFor()</a>\nand <a class=\"jump\" href=\"id110\">Output encoding</a>.</p>\n"
      },
      "id1145" : {
         "params" : "$file",
         "type" : "option",
         "intro" : "<p>Read the settings from the <tt class=\"parameter\">$file</tt>.  The parameters found in the file are\nused as default for the parameters above.  This parameter is especially\nuseful for the <tt class=\"parameter\">context_rules</tt>, which need to be shared between the\nrunning application and <i class=\"filename\">xgettext-perl</i>.  See <a class=\"jump\" href=\"id1149\">readConfig()</a></p>\n",
         "id" : "id1145",
         "name" : "config"
      },
      "id540" : {
         "intro" : "<p>Returns the actual msgid_plural, which can be <code>undef</code>.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id540\">plural</a></b>(&nbsp;[STRING]&nbsp;)",
         "id" : "id540",
         "name" : "plural"
      },
      "id171-id375" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id171\">Log::Report::Minimal::Domain::isConfigured()</a></p>",
         "id" : "id171-id375",
         "name" : "isConfigured",
         "extends" : "id171",
         "call" : "$obj-&gt;<b><a name=\"id171\">isConfigured</a></b>"
      },
      "id245" : {
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id245\">error</a></b>",
         "id" : "id245",
         "name" : "error"
      },
      "id182" : {
         "id" : "id182",
         "name" : "NAME",
         "type" : "chapter",
         "path" : "NAME",
         "intro" : "<p>Log::Report::Util - helpful routines to Log::Report</p>\n",
         "level" : 1
      },
      "id1200" : {
         "type" : "overload",
         "intro" : "<p>Always returns <code>true</code>: the exception object exists.</p>\n",
         "id" : "id1200",
         "name" : "bool",
         "call" : "overload <b><a name=\"id1200\">bool</a></b>; boolean condition"
      },
      "id132" : {
         "type" : "function",
         "call" : "<b><a name=\"id132\">try</a></b>(&nbsp;CODE, %options&nbsp;)",
         "id" : "id132",
         "name" : "try"
      },
      "id363" : {
         "level" : 2,
         "type" : "section",
         "intro" : "<p>This module uses standard gettext PO-translation tables via the\n<a class=\"jump\" href=\"id717\">Log::Report::Lexicon</a> distribution.  An important role here is\nfor the 'textdomain': the name of the set of translation tables.</p>\n\n<p>For code, you say \"use <a class=\"jump\" href=\"id979\">Log::Report</a> '&lt;textdomain>;\" in each related\nmodule (pm file).  We cannot do achieve comparible syntax with\nTemplate Toolkit: you must specify the textdomain before the\ntemplates get processed.</p>\n\n<p>Your website may contain multiple separate sets of templates.  For\ninstance, a standard website implementation with some local extensions.\nThe only way to get that to work, is by using different translation\nfunctions: one textdomain may use 'loc()', where an other uses 'trans()'.</p>\n",
         "path" : "DETAILS/Textdomains",
         "name" : "Textdomains",
         "id" : "id363",
         "nest" : [
            "id364",
            "id365"
         ]
      },
      "id1074" : {
         "id" : "id1074",
         "name" : "run-time change mode of a dispatcher\n",
         "type" : "example",
         "intro" : "<p>To change the running mode of the dispatcher, you can do</p>\n<pre>\n  dispatcher mode =&gt; DEBUG =&gt; 'myname';\n</pre>\n\n<p>However, be warned that this does not change the types of messages\naccepted by the dispatcher!  So: probably you will not receive\nthe trace, assert, and info messages after all.  So, probably you\nneed to replace the dispatcher with a new one with the same name:</p>\n<pre>\n  dispatcher FILE =&gt; 'myname', to =&gt; ..., mode =&gt; 'DEBUG';\n</pre>\n\n<p>This may reopen connections (depends on the actual dispatcher), which\nmight be not what you wish to happened.  In that case, you must take\nthe following approach:</p>\n<pre>\n  # at the start of your program, overrule the default 'NOTICE-' !!\n  dispatcher FILE =&gt; 'myname', to =&gt; ..., accept =&gt; 'ALL';\n\n  # now it works\n  dispatcher mode =&gt; DEBUG =&gt; 'myname';    # debugging on\n  ...\n  dispatcher mode =&gt; NORMAL =&gt; 'myname';   # debugging off\n</pre>\n\n<p>Of course, this comes with a small overall performance penalty.</p>\n"
      },
      "id319" : {
         "name" : "Use in combination with contexts",
         "id" : "id319",
         "type" : "section",
         "intro" : "<p>This example extends the previous with using context sensitive translations,\nas implemented by <a class=\"jump\" href=\"id669\">Log::Report::Translator::Context</a>.</p>\n\n<p>Let's say that the translation of some of the sentences on the website depend\non the gender of the addressed person.  An example of the use in a TT2\ntemplate:</p>\n<pre>\n  [% loc(\"{name&lt;gender} forgot his key\", name =&gt; person.name) %]\n</pre>\n\n<p>The extraction script <i class=\"filename\">xgettext-perl</i> will expand this into two records\nin the PO file, respectively with msgctxt attribute 'gender=male' and\n'gender=female'.</p>\n\n<p>When your PO-files are not generated by 'xgettext-perl', you do not need\na separate domain configuration file:</p>\n<pre>\n  $domain-&gt;configure(\n    context_rules =&gt; +{gender =&gt; ['male','female']},\n    translator    =&gt; $translator,\n  );\n</pre>\n\n<p>When your PO-files are generated by 'xgettext-perl', you need to share\nthe context-rules between that msgid extractor and your runtime code. That\nsame file needs to be passed with the 'domain' parameter to the script.</p>\n<pre>\n  # add context_rules either explicit or via 'config' filename\n  $domain-&gt;configure(\n    config     =&gt; 'my/own/$domain.conf',\n    translator =&gt; $translator,\n  );\n</pre>\n\n<p>Now, when you generate the pages, you need to set-up the right context.\nIn this case, we set-up the gender of the person who gets addressed.\n(The name 'gender' is good for examples, but quite non-descriptive.\nMaybe 'user_gender' is more maintainable)</p>\n<pre>\n  $domain-&gt;setContext( +{gender =&gt; 'male'} );  # or ('gender=male')\n  $domain-&gt;setContext( \"gender=male\" );        # same\n</pre>\n\n\n<p>=encoding utf-8</p>\n",
         "path" : "DETAILS/Use in combination with contexts",
         "level" : 2
      },
      "id771-id818" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id771\">Log::Report::Dispatcher::name()</a></p>",
         "id" : "id771-id818",
         "name" : "name",
         "extends" : "id771",
         "call" : "$obj-&gt;<b><a name=\"id771\">name</a></b>"
      },
      "id143" : {
         "type" : "function",
         "call" : "<b><a name=\"id143\">failure</a></b>(&nbsp;$message&nbsp;)",
         "name" : "failure",
         "id" : "id143"
      },
      "id927" : {
         "intro" : "<p>Convert the data of this message into a (nested) HASH which optimally\npreserves its content.  Pass this to <a class=\"jump\" href=\"id929\">thaw()</a> to get the object back.</p>\n\n<p>The returned HASH can be serialized safely with (for instance) YAML\nor JSON.  Then, it can be reconstructed from the de-serialized data.\nAt the moment, all facts can be preserved.</p>\n",
         "type" : "i_method",
         "examples" : [
            "id928"
         ],
         "call" : "$obj-&gt;<b><a name=\"id927\">freeze</a></b>(&nbsp;%options&nbsp;)",
         "name" : "freeze",
         "id" : "id927"
      },
      "id1226" : {
         "examples" : [
            "id1227"
         ],
         "call" : "$obj-&gt;<b><a name=\"id1226\">print</a></b>(&nbsp;[$fh]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>The default filehandle is STDOUT.</p>\n",
         "id" : "id1226",
         "name" : "print"
      },
      "id401" : {
         "id" : "id401",
         "name" : "translateTo",
         "call" : "$obj-&gt;<b><a name=\"id401\">translateTo</a></b>(&nbsp;$lang&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Set the language to translate to for <tt class=\"parameter\">$lang</tt>, for this domain only.  This may\nbe useful when various text domains do not support the same destination languages.\nBut in general, you can best use <a class=\"jump\" href=\"id340\">Log::Report::Template::translateTo()</a>.</p>\n"
      },
      "id781-id944" : {
         "name" : "addSkipStack",
         "id" : "id781-id944",
         "extends" : "id781",
         "call" : "$any-&gt;<b><a name=\"id781\">addSkipStack</a></b>(&nbsp;@CODE&nbsp;)",
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id781\">Log::Report::Dispatcher::addSkipStack()</a></p>"
      },
      "id780-id1090" : {
         "extends" : "id780",
         "id" : "id780-id1090",
         "name" : "collectStack",
         "call" : "$any-&gt;<b><a name=\"id780\">collectStack</a></b>(&nbsp;[$maxdepth]&nbsp;)",
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id780\">Log::Report::Dispatcher::collectStack()</a></p>"
      },
      "id320" : {
         "id" : "id320",
         "name" : "Log::Report::Template",
         "title" : "Template Toolkit with translations",
         "is_pure_pod" : false,
         "distribution" : "Log-Report-Template",
         "package" : "Log::Report::Template",
         "inheritance" : {
            "extends" : [
               "Template"
            ]
         },
         "version" : "1.05",
         "chapters" : [
            "id321",
            "id1317",
            "id322",
            "id323",
            "id324",
            "id362"
         ]
      },
      "id782" : {
         "id" : "id782",
         "intro" : "<p>By default, all lines in the <a class=\"jump\" href=\"id979\">Log::Report</a> packages are skipped from\ndisplay, with a simple <tt class=\"parameter\">CODE</tt> as this:</p>\n<pre>\n  sub in_lr { $_[0][0] =~ m/^Log\\:\\:Report(?:\\:\\:|$)/ }\n  Log::Report::Dispatcher-&gt;addSkipStack(\\&amp;in_lr);\n</pre>\n\n<p>The only parameter to in_lr is the return of caller().  The first\nelement of that ARRAY is the package name of a stack line.</p>\n",
         "type" : "example"
      },
      "id262" : {
         "name" : "Logging DBIC database queries and errors",
         "id" : "id262",
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/In use/Logging DBIC database queries and errors",
         "intro" : "<p>If you use <a href=\"https://metacpan.org/dist/DBIx_Class\">manual DBIx::Class</a> in your application, you can easily integrate\nits logging and exceptions. To log SQL queries:</p>\n<pre>\n  # Log all queries and execution time\n  $schema-&gt;storage-&gt;debugobj(new Log::Report::DBIC::Profiler);\n  $schema-&gt;storage-&gt;debug(1);\n</pre>\n\n<p>By default, exceptions from DBIC are classified at the level \"error\". This\nis normally a user level error, and thus may be filtered as normal program\noperation. If you do not expect to receive any DBIC exceptions, then it\nis better to class them at the level \"panic\":</p>\n<pre>\n  # panic() DBIC errors\n  $schema-&gt;exception_action(sub { panic @_ });\n  # Optionally get a stracktrace too\n  $schema-&gt;stacktrace(1);\n</pre>\n\n<p>If you are occasionally running queries where you expect to naturally\nget exceptions (such as not inserting multiple values on a unique constraint),\nthen you can catch these separately:</p>\n<pre>\n  try { $self-&gt;schema-&gt;resultset('Unique')-&gt;create() };\n  # Log any messages from try block, but only as trace\n  $@-&gt;reportAll(reason =&gt; 'TRACE');\n</pre>\n"
      },
      "id968" : {
         "intro" : "<p>See <a class=\"jump\" href=\"id977\">reasonToLevel()</a>.</p>\n",
         "type" : "option",
         "params" : "ARRAY-of-PAIRS",
         "id" : "id968",
         "name" : "to_level"
      },
      "id880-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id879\">Log::Report::Message::new(_prepend)</a></p>",
         "type" : "default",
         "value" : "<code>undef</code>",
         "extends" : "id880",
         "name" : "_prepend",
         "id" : "id880-id217"
      },
      "id878" : {
         "type" : "default",
         "name" : "_category",
         "id" : "id878",
         "value" : "<code>undef</code>"
      },
      "id732" : {
         "level" : 2,
         "id" : "id732",
         "name" : "Attributes",
         "type" : "section",
         "path" : "METHODS/Attributes"
      },
      "id1252" : {
         "type" : "fault",
         "subroutine" : "id1249",
         "name" : "cannot write log into $file: $!",
         "id" : "id1252"
      },
      "id859" : {
         "name" : "DESCRIPTION",
         "id" : "id859",
         "level" : 1,
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>Any use of a constructor function exported by <a class=\"jump\" href=\"id979\">Log::Report</a>, like\n<code>__()</code> (the function is named underscore-underscore) or <code>__x()</code>\n(underscore-underscore-x) will result in this Message object.  It will capture\nsome environmental information as well.</p>\n\n<p>The optional translation is delayed until it is really needed.\nCreating an object first and translating it later, might be slower than\ntranslating it immediately.  However (by design decissions of <a class=\"jump\" href=\"id979\">Log::Report</a>)\non the location where the message is produced, we do not yet know in\nwhat language to translate it to: that depends on the actual log dispatcher\nconfigurations in the main program.</p>\n"
      },
      "id895" : {
         "params" : "ISO",
         "type" : "option",
         "intro" : "<p>[1.00] Override language setting from locale, for instance because that\nis not configured correctly (yet).  This does not extend to prepended\nor appended translated message object.</p>\n",
         "id" : "id895",
         "name" : "_lang"
      },
      "id906" : {
         "intro" : "<p>Returns the string or <a class=\"jump\" href=\"id856\">Log::Report::Message</a> object which is appended\nafter this one.  Usually <code>undef</code>.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id906\">append</a></b>",
         "name" : "append",
         "id" : "id906"
      },
      "id792-id958" : {
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id792\">Log::Report::Dispatcher::stackTraceLine(call)</a></p>",
         "extends" : "id792",
         "id" : "id792-id958",
         "name" : "call"
      },
      "id222" : {
         "type" : "i_method",
         "intro" : "<p>Get or set the reason of a message</p>\n",
         "name" : "reason",
         "id" : "id222",
         "call" : "$obj-&gt;<b><a name=\"id222\">reason</a></b>"
      },
      "id928" : {
         "intro" : "<pre>  my $clone = Log::Report::Message-&gt;thaw($msg-&gt;freeze);\n</pre>\n",
         "type" : "example",
         "id" : "id928",
         "name" : "to thaw a frozen\n"
      },
      "id914-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id914\">Log::Report::Message::to()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id914\">to</a></b>(&nbsp;[$name]&nbsp;)",
         "extends" : "id914",
         "name" : "to",
         "id" : "id914-id217"
      },
      "id1149" : {
         "intro" : "<p>Helper method, which simply parses the content <tt class=\"parameter\">$filename</tt> into a HASH to be\nused as parameters to <a class=\"jump\" href=\"id1138\">configure()</a>. The filename must end on '.pl',\nto indicate that it uses perl syntax (can be processed with Perl's <code>do</code>\ncommand) or end on '.json'.  See also chapter <a class=\"jump\" href=\"id1160\">Configuring</a> below.</p>\n\n<p>Currently, this file can be in Perl native format (when ending on <code>.pl</code>)\nor JSON (when it ends with <code>.json</code>).  Various modules may explain parts\nof what can be found in these files, for instance\n<a class=\"jump\" href=\"id669\">Log::Report::Translator::Context</a>.</p>\n",
         "type" : "ci_method",
         "call" : "$any-&gt;<b><a name=\"id1149\">readConfig</a></b>(&nbsp;$filename&nbsp;)",
         "id" : "id1149",
         "name" : "readConfig",
         "diagnostics" : [
            "id1150",
            "id1151"
         ]
      },
      "id360" : {
         "id" : "id360",
         "name" : "process",
         "call" : "$obj-&gt;<b><a name=\"id360\">process</a></b>(&nbsp;$template, [\\%vars, $output, \\%options]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Process the <tt class=\"parameter\">$template</tt> into <tt class=\"parameter\">$output</tt>, filling in the <tt class=\"parameter\">%vars</tt>.</p>\n"
      },
      "id1162" : {
         "name" : "configuring global values",
         "id" : "id1162",
         "type" : "subsection",
         "intro" : "<p>Say, you log for a (Dancer) webserver, where you wish to include the website\nname in some of the log lines.  For this, (ab)use the translation context:</p>\n<pre>\n  ### first, enable translation contexts\n  use Log::Report 'my-domain', context_rules =&gt; { ... };\n\n  # or\n  use Log::Report 'my-domain';\n  textdomain-&gt;configure(context_rules =&gt; { ... });\n\n  # or\n  textdomain 'my-domain', content_rules =&gt; { ... };\n\n  ### every time you start working for a different virtual host\n  (textdomain 'my-domain')-&gt;setContext(host =&gt; $host);\n\n  ### now you can use that in your code\n  package My::Package;\n  use Log::Report 'my-domain';\n  error __x\"in {_context.host} not logged-in {user}\", user =&gt; $username;\n</pre>\n",
         "path" : "DETAILS/Configuring/configuring global values",
         "level" : 3
      },
      "id786-id818" : {
         "id" : "id786-id818",
         "name" : "package",
         "extends" : "id786",
         "type" : "option",
         "params" : "CLASS",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>"
      },
      "id1230" : {
         "name" : "SYNOPSIS",
         "id" : "id1230",
         "level" : 1,
         "type" : "chapter",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  dispatcher Log::Report::Dispatcher::File =&gt; 'stderr',\n    to =&gt; \\*STDERR, accept =&gt; 'NOTICE-';\n\n  # close a dispatcher\n  dispatcher close =&gt; 'stderr';\n\n  # let dispatcher open and close the file\n  dispatcher FILE =&gt; 'mylog', to =&gt; '/var/log/mylog', charset =&gt; 'utf-8';\n  ...\n  dispatcher close =&gt; 'mylog';  # will close file\n\n  # open yourself, then also close yourself\n  open OUT, \">:encoding('iso-8859-1')\", '/var/log/mylog'\n      or fault \"...\";\n  dispatcher FILE =&gt; 'mylog', to =&gt; \\*OUT;\n  ...\n  dispatcher close =&gt; 'mylog';\n  close OUT;\n\n  # dispatch into a scalar\n  my $output = '';\n  open $outfile, '>', \\$output;\n  dispatcher FILE =&gt; 'into-scalar', to =&gt; \\$outfile;\n  ...\n  dispatcher close =&gt; 'into-scalar';\n  print $output;\n</pre>\n"
      },
      "id796-id1174" : {
         "type" : "option",
         "params" : "INTEGER",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "name" : "max_line",
         "id" : "id796-id1174",
         "extends" : "id796"
      },
      "id877" : {
         "id" : "id877",
         "name" : "_category",
         "intro" : "<p>The category when the real gettext library is used, for instance\nLC_MESSAGES.</p>\n",
         "type" : "option",
         "params" : "INTEGER"
      },
      "id543" : {
         "intro" : "<p>Add multiple lines to the translator's comment block.  Returns an\nempty string if there are no comments.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id543\">addComment</a></b>(&nbsp;@lines|\\@lines|$text&nbsp;)",
         "name" : "addComment",
         "id" : "id543"
      },
      "id493" : {
         "intro" : "<p>The translation of a blank MSGID is used to store a MIME header, which\ncontains some meta-data.  When only a <tt class=\"parameter\">$field</tt> is specified, that content is\nlooked-up (case-insensitive) and returned.  When a <tt class=\"parameter\">$content</tt> is specified,\nthe knowledge will be stored.  In latter case, the header structure\nmay get created.  When the <tt class=\"parameter\">$content</tt> is set to <code>undef</code>, the field will\nbe removed.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id493\">header</a></b>(&nbsp;[$field, [$content]]&nbsp;)",
         "diagnostics" : [
            "id494"
         ],
         "name" : "header",
         "id" : "id493"
      },
      "id78" : {
         "type" : "default",
         "name" : "_count",
         "id" : "id78",
         "value" : "<code>undef</code>"
      },
      "id433-id697" : {
         "extends" : "id433",
         "id" : "id433-id697",
         "name" : "cleanup",
         "call" : "$obj-&gt;<b><a name=\"id433\">cleanup</a></b>(&nbsp;%options&nbsp;)",
         "type" : "i_method",
         "options" : [
            [
               "id434-id697",
               "id435-id697"
            ]
         ],
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id433\">Log::Report::Extract::cleanup()</a></p>"
      },
      "id742-id637" : {
         "extends" : "id742",
         "id" : "id742-id637",
         "name" : "there is no Plural-Forms field in the header, but needed.",
         "subroutine" : "id741",
         "type" : "error",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id741\">Log::Report::Lexicon::Table::pluralIndex()</a></p>"
      },
      "id740" : {
         "id" : "id740",
         "name" : "only acceptable parameter is 'ACTIVE'",
         "subroutine" : "id739",
         "type" : "error"
      },
      "id175-id1127" : {
         "name" : "where",
         "id" : "id175-id1127",
         "extends" : "id175",
         "value" : "&lt;required&gt;",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id174\">Log::Report::Minimal::Domain::configure(where)</a></p>"
      },
      "id1332" : {
         "level" : 1,
         "intro" : "<pre> Log::Report::Lexicon::POTcompact\n   is a <a class=\"jump\" href=\"id725\">Log::Report::Lexicon::Table</a>\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter",
         "id" : "id1332",
         "name" : "INHERITANCE"
      },
      "id73" : {
         "intro" : "<pre>  use String::Print 'oo';    # do not import the functions\n\n  my $sp = String::Print-&gt;new(\n    modifiers   =&gt; [ EUR   =&gt; sub {sprintf \"%5.2f e\", $_[0]} ],\n    serializers =&gt; [ UNDEF =&gt; sub {'-'} ],\n    defaults    =&gt; [ DT    =&gt; { standard =&gt; 'ISO' } ],\n  );\n\n  $sp-&gt;printi(\"price: {p EUR}\", p =&gt; 3.1415); # price: ␣␣3.14 e\n  $sp-&gt;printi(\"count: {c}\", c =&gt; undef);      # count: -\n  my $s = $sp-&gt;sprinti(\"price: {p EUR}\", p =&gt; 7); # output in $s\n</pre>\n",
         "type" : "example",
         "id" : "id73"
      },
      "id967" : {
         "intro" : "<p>The Log::Log4perl infrastructure has all settings in a configuration\nfile.  In that file, you should find a category with the <tt class=\"parameter\">$name</tt>.</p>\n",
         "type" : "c_method",
         "options" : [
            [
               "id757-id958",
               "id972"
            ],
            [
               "id765-id958",
               "id766-id958"
            ],
            [
               "id970",
               "id971"
            ],
            [
               "id763-id958",
               "id764-id958"
            ],
            [
               "id759-id958",
               "id760-id958"
            ],
            [
               "id761-id958",
               "id762-id958"
            ],
            [
               "id968",
               "id969"
            ]
         ],
         "call" : "$class-&gt;<b><a name=\"id967\">new</a></b>(&nbsp;$type, $name, %options&nbsp;)",
         "diagnostics" : [
            "id973"
         ],
         "name" : "new",
         "id" : "id967"
      },
      "id962" : {
         "name" : "Reasons &lt;--&gt; Levels",
         "id" : "id962",
         "type" : "section",
         "intro" : "<p>The REASONs for a message in <a class=\"jump\" href=\"id979\">Log::Report</a> are names quite similar to\nthe log levels used by Log::Log4perl.  The default mapping is list\nbelow.  You can change the mapping using <a class=\"jump\" href=\"id968\">new(to_level)</a>.</p>\n<pre>\n  TRACE   =&gt; $DEBUG    ERROR   =&gt; $ERROR\n  ASSERT  =&gt; $DEBUG    FAULT   =&gt; $ERROR\n  INFO    =&gt; $INFO     ALERT   =&gt; $FATAL\n  NOTICE  =&gt; $INFO     FAILURE =&gt; $FATAL\n  WARNING =&gt; $WARN     PANIC   =&gt; $FATAL\n  MISTAKE =&gt; $WARN\n</pre>\n",
         "path" : "DESCRIPTION/Reasons <--> Levels",
         "level" : 2
      },
      "id268" : {
         "name" : "METHODS",
         "id" : "id268",
         "level" : 1,
         "type" : "chapter",
         "nest" : [
            "id269",
            "id270",
            "id272"
         ],
         "path" : "METHODS"
      },
      "id686" : {
         "subroutine" : "id685",
         "name" : "tags value must have form `a=b', found `$this' in `$source'",
         "id" : "id686",
         "type" : "error"
      },
      "id788" : {
         "id" : "id788",
         "name" : "filename",
         "type" : "option",
         "params" : "STRING"
      },
      "id636" : {
         "subroutine" : "id634",
         "id" : "id636",
         "name" : "read table $file as $class for $dname in $locale.",
         "type" : "info"
      },
      "id738" : {
         "type" : "i_method",
         "intro" : "<p>Add the information from a <tt class=\"parameter\">$po</tt> into this POT.  If the msgid of the <tt class=\"parameter\">$po</tt>\nis already known, that is an error.</p>\n",
         "id" : "id738",
         "name" : "add",
         "call" : "$obj-&gt;<b><a name=\"id738\">add</a></b>(&nbsp;$po&nbsp;)"
      },
      "id872" : {
         "name" : "_count",
         "id" : "id872",
         "value" : "<code>undef</code>",
         "type" : "default"
      },
      "id206" : {
         "intro" : "<p>The domain for the registered <tt class=\"parameter\">$package</tt> is returned.</p>\n\n<p>With <tt class=\"parameter\">$domain</tt>, <tt class=\"parameter\">$filename</tt> and <tt class=\"parameter\">$line</tt>, this registers a location where\nthe textdomain is specified first.  Each <tt class=\"parameter\">$package</tt> can only belong to\none <tt class=\"parameter\">$domain</tt>.</p>\n",
         "type" : "function",
         "call" : "<b><a name=\"id206\">pkg2domain</a></b>(&nbsp;$package, [$domain, $filename, $line]&nbsp;)",
         "diagnostics" : [
            "id207"
         ],
         "name" : "pkg2domain",
         "id" : "id206"
      },
      "id109" : {
         "id" : "id109",
         "name" : "Stacking modifiers",
         "type" : "subsection",
         "intro" : "<p>You can add more than one modifier.  The modifiers detect the extend of\ntheir own information (via a regular expression), and therefore the\nformatter understands where one ends and the next begins.</p>\n\n<p>The modifiers are called in order:</p>\n<pre>\n  printi \"price: {p€%9s}\\n\", p =&gt; $p; # price: ␣␣␣123.45\n  printi \"!{t TIME%10s}!\", t =&gt; $now; # !␣␣12:59:17!\n\n  printp \"price: %9{€}s\\n\", $p;       # price: ␣␣␣123.45\n  printp \"!%10{TIME}s!\", $now;        # !␣␣12:59:17!\n</pre>\n",
         "path" : "DETAILS/Interpolation: Modifiers/Stacking modifiers",
         "level" : 3
      },
      "id754" : {
         "level" : 1,
         "id" : "id754",
         "name" : "METHODS",
         "path" : "METHODS",
         "nest" : [
            "id755",
            "id770",
            "id776"
         ],
         "type" : "chapter"
      },
      "id92" : {
         "level" : 2,
         "path" : "DETAILS/Interpolation: keys",
         "intro" : "<p>A key is a bareword (like a variable name) or a list of barewords\nseparated by dots (no blanks!)</p>\n\n<p><b>Please</b> use explanatory key names, to help the translation\nprocess once you need that (in the future).</p>\n",
         "type" : "section",
         "id" : "id92",
         "name" : "Interpolation: keys",
         "nest" : [
            "id93",
            "id94"
         ]
      },
      "id613" : {
         "name" : "SYNOPSIS",
         "id" : "id613",
         "level" : 1,
         "intro" : "<pre>  # normal use (end-users view)\n\n  textdomain 'my-domain',\n    translator =&gt; Log::Report::Translator::Gettext-&gt;new;\n\n  print __\"Hello World\\n\";  # language determined by environment\n\n  # internal use\n\n  my $msg = Log::Report::Message-&gt;new(\n    _msgid      =&gt; \"Hello World\\n\",\n    _textdomain =&gt; 'my-domain',\n  );\n\n  print Log::Report::Translator::Gettext-&gt;new\n      -&gt;translate($msg, 'nl-BE');\n</pre>\n",
         "path" : "SYNOPSIS",
         "type" : "chapter"
      },
      "id227" : {
         "name" : "DESCRIPTION",
         "id" : "id227",
         "level" : 1,
         "intro" : "<p>The <a class=\"jump\" href=\"id979\">Log::Report</a> exception/translation framework defines a large\nnumber of logging back-ends.  The same log messages can be sent to\nmultiple destinations at the same time via flexible dispatchers.\nWhen you use this logger in your Dancer application, it will nicely\nintegrate with non-Dancer modules which need logging.</p>\n\n<p>Many log back-ends, like syslog, have more levels of system messages.\nModules who explicitly load this module can use the missing <code>assert</code>,\n<code>notice</code>, <code>panic</code>, and <code>alert</code> log levels.  The <code>trace</code> name is\nprovided as well: when you are debugging, you add a 'trace' to your\nprogram... its just a better name than 'debug'.</p>\n\n<p>You probably want to set a very simple <code>logger_format</code>, because the\ndispatchers do already add some of the fields that the default\n<code>simple</code> format adds.  For instance, to get the filename/line-number\nin messages depends on the dispatcher 'mode' (f.i. 'DEBUG').</p>\n\n<p>You also want to set the log level to <code>debug</code>, because level filtering\nis controlled per dispatcher (as well)</p>\n",
         "path" : "DESCRIPTION",
         "type" : "chapter"
      },
      "id797-id958" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id796\">Log::Report::Dispatcher::stackTraceLine(max_line)</a></p>",
         "type" : "default",
         "value" : "<code>undef</code>",
         "extends" : "id797",
         "name" : "max_line",
         "id" : "id797-id958"
      },
      "id1286" : {
         "path" : "DETAILS/Processing the message/Addition information",
         "type" : "subsection",
         "level" : 3,
         "name" : "Addition information",
         "id" : "id1286"
      },
      "id1066" : {
         "level" : 3,
         "path" : "DETAILS/Introduction/Lightweight Log::Report::Optional",
         "intro" : "<p>When you want to use <a class=\"jump\" href=\"id979\">Log::Report</a> features as cheap as possible, you\nmay use <a class=\"jump\" href=\"id208\">Log::Report::Optional</a> in your module.  In this case, your\nmodule can use <code>error()</code> and <code>__x()</code> with very little cost: they\nwill not build internal objects and support translations.  It's fast\nand few dependencies.</p>\n\n<p>The beauty is, then when the main program which uses module does\ninitiate the full <a class=\"jump\" href=\"id979\">Log::Report</a> functionality, then your module will\nalso switch to full support mode.</p>\n",
         "type" : "subsection",
         "id" : "id1066",
         "name" : "Lightweight Log::Report::Optional"
      },
      "id737" : {
         "level" : 3,
         "id" : "id737",
         "name" : "Administration",
         "subroutines" : [
            "id741",
            "id745",
            "id743",
            "id746",
            "id738",
            "id739"
         ],
         "type" : "subsection",
         "path" : "METHODS/Managing PO's/Administration"
      },
      "id96" : {
         "nest" : [
            "id97",
            "id100",
            "id101",
            "id102",
            "id103",
            "id104",
            "id105",
            "id106",
            "id107",
            "id108",
            "id109"
         ],
         "id" : "id96",
         "name" : "Interpolation: Modifiers",
         "type" : "section",
         "intro" : "<p>Modifiers are used to change the value to be inserted, before\nthe characters get interpolated in the line.  This is a powerful\nsimplification.  Some useful modifiers are already provided by default.\nThey are also good examples how to write your own.</p>\n\n<p>Let's discuss this with an example.\nIn traditional (gnu) gettext, you would write:</p>\n<pre>\n  printf(gettext(\"approx pi: %.6f\\n\"), PI);\n</pre>\n\n<p>to get PI printed with six digits in the fragment.\nLocale::TextDomain has two ways to achieve that:</p>\n<pre>\n  printf __\"approx pi: %.6f\\n\", PI;\n  print __x\"approx pi: {approx}\\n\", approx =&gt; sprintf(\"%.6f\", PI);\n</pre>\n\n<p>The first does not respect the wish to be able to reorder the arguments\nduring translation (although there are ways to work around that)  The\nsecond version is quite long.  The string to be translated differs\nbetween the two examples.</p>\n\n<p>With <code>Log::Report</code>, above syntaxes do work as well, but you can also do:</p>\n<pre>\n  # with optional translations\n  print __x\"approx pi: {pi%.6f}\\n\", pi =&gt; PI;\n</pre>\n\n<p>The base for <code>__x()</code> is the <a class=\"jump\" href=\"id85\">printi()</a> provided by this module. Internally,\nit will call <code>printi</code> to fill-in parameters:</p>\n<pre>\n  printi \"approx pi: {pi%.6f}\\n\", pi =&gt; PI;\n</pre>\n\n<p>Another example:</p>\n<pre>\n  printi \"{perms} {links%2d} {user%-8s} {size%10d} {fn}\\n\",\n     perms =&gt; '-rw-r--r--', links =&gt; 7, user =&gt; 'me',\n     size =&gt; 12345, fn =&gt; $filename;\n</pre>\n\n<p>An additional advantage (when you use translation) is the fact that not\nall languages produce comparable length strings.  Now, the translators\ncan change the format, such that the layout of tables is optimal for their\nlanguage.</p>\n\n<p>Above example in <a class=\"jump\" href=\"id86\">printp()</a> syntax, shorter but less maintainable:</p>\n<pre>\n  printp \"%s %2d %-8s 10d %s\\n\",\n     '-rw-r--r--', 7, 'me', 12345, $filename;\n</pre>\n",
         "path" : "DETAILS/Interpolation: Modifiers",
         "level" : 2
      },
      "id87" : {
         "name" : "sprintp",
         "id" : "id87",
         "type" : "function",
         "intro" : "<p>Where <a class=\"jump\" href=\"id76\">sprinti()</a> uses named parameters --especially useful when the\nstrings need translation-- this function stays close to the standard\n<code>sprintf()</code>.  All features of POSIX formats are supported.  This\nshould say enough: you can use <code>%3$0#5.*d</code>, if you like.</p>\n\n<p>It may be useful to know that the positional <tt class=\"parameter\">$format</tt> is rewritten and\nthen fed into <a class=\"jump\" href=\"id76\">sprinti()</a>.  <b>Be careful</b> with the length of the <tt class=\"parameter\">@positionals</tt>:\nsuperfluous parameter <tt class=\"parameter\">%options</tt> are passed along to <code>sprinti()</code>, and\nshould only contain \"specials\": parameter names which start with '_'.</p>\n",
         "call" : "<b><a name=\"id87\">sprintp</a></b>(&nbsp;$format, @positionals, %options&nbsp;)",
         "examples" : [
            "id88"
         ]
      },
      "id671" : {
         "name" : "SYNOPSIS",
         "id" : "id671",
         "path" : "SYNOPSIS",
         "intro" : "<pre>  # usually, the context information is in a separate file\n  textdomain 'my-domain', config =&gt; $filename;\n</pre>\n",
         "type" : "chapter",
         "level" : 1
      },
      "id787" : {
         "type" : "default",
         "name" : "package",
         "id" : "id787",
         "value" : "&lt;required&gt;"
      },
      "id267" : {
         "level" : 1,
         "type" : "chapter",
         "path" : "DESCRIPTION",
         "intro" : "<p>This template engine allows you to use <a href=\"https://metacpan.org/dist/Template\">manual Template</a>::Toolkit in <a href=\"https://metacpan.org/dist/Dancer2\">manual Dancer2</a>,\nincluding the translation extensions offered by <a class=\"jump\" href=\"id320\">Log::Report::Template</a>.</p>\n",
         "id" : "id267",
         "name" : "DESCRIPTION"
      },
      "id922" : {
         "type" : "i_method",
         "intro" : "<p>[1.11] Translate the message, and then entity encode HTML volatile characters.</p>\n\n<p>[1.20] When used in combination with a templating system, you may want to\nuse <code>content_for =&gt; 'HTML'</code> in <a class=\"jump\" href=\"id176\">Log::Report::Domain::configure(formatter)</a>.</p>\n",
         "examples" : [
            "id923"
         ],
         "call" : "$obj-&gt;<b><a name=\"id922\">toHTML</a></b>(&nbsp;[$locale]&nbsp;)",
         "id" : "id922",
         "name" : "toHTML"
      },
      "id798-id958" : {
         "extends" : "id798",
         "name" : "max_params",
         "id" : "id798-id958",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id798\">Log::Report::Dispatcher::stackTraceLine(max_params)</a></p>",
         "params" : "INTEGER",
         "type" : "option"
      },
      "id228" : {
         "distribution" : "Dancer2-Plugin-LogReport",
         "package" : "Dancer2::Plugin::LogReport",
         "inheritance" : {
            "extends" : [
               "Dancer2::Plugin"
            ]
         },
         "id" : "id228",
         "name" : "Dancer2::Plugin::LogReport",
         "title" : "logging, exceptions and translations in Dancer2 via Log::Report",
         "is_pure_pod" : false,
         "chapters" : [
            "id229",
            "id1318",
            "id230",
            "id231",
            "id232",
            "id252"
         ],
         "version" : "2.03"
      },
      "id1276" : {
         "path" : "METHODS/Managing PO's/Translation",
         "type" : "subsection",
         "subroutines" : [
            "id488",
            "id487"
         ],
         "id" : "id1276",
         "name" : "Translation",
         "level" : 3
      },
      "id509" : {
         "call" : "<b><a name=\"id509\">ms_install_codepage_id</a></b>",
         "id" : "id509",
         "name" : "ms_install_codepage_id",
         "intro" : "<p>Returns the numeric language ID for the installed codepage language.\nThis is like <a class=\"jump\" href=\"id508\">ms_codepage_id()</a>, but refers to the codepage that was\nthe default when Windows was first installed.</p>\n",
         "type" : "function"
      },
      "id775-id958" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id775\">Log::Report::Dispatcher::needs()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id775\">needs</a></b>(&nbsp;[$reason]&nbsp;)",
         "id" : "id775-id958",
         "name" : "needs",
         "extends" : "id775"
      },
      "id1147" : {
         "type" : "error",
         "subroutine" : "id1138",
         "id" : "id1147",
         "name" : "the native_language '$locale' is not a valid locale"
      },
      "id64" : {
         "intro" : "<pre>  my $f = String::Print-&gt;new(\n    modifiers   =&gt; [ EUR   =&gt; sub {sprintf \"%5.2f e\", $_[0]} ],\n    serializers =&gt; [ UNDEF =&gt; sub {'-'} ],\n    encode_for  =&gt; 'HTML',\n  );\n\n  $f-&gt;printi(\"price: {p EUR}\", p =&gt; 3.1415); # price: ␣␣3.14 e\n  $f-&gt;printi(\"count: {c}\", c =&gt; undef);      # count: -\n</pre>\n",
         "type" : "example",
         "id" : "id64"
      },
      "id784-id958" : {
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id784\">Log::Report::Dispatcher::collectLocation()</a></p>",
         "extends" : "id784",
         "name" : "collectLocation",
         "id" : "id784-id958",
         "call" : "$any-&gt;<b><a name=\"id784\">collectLocation</a></b>"
      },
      "id680" : {
         "subroutines" : [
            "id687",
            "id685",
            "id681"
         ],
         "name" : "Action",
         "id" : "id680",
         "level" : 2,
         "path" : "METHODS/Action",
         "type" : "section"
      },
      "id841" : {
         "type" : "example",
         "intro" : "<pre>  my $parent_try = dispatcher 'active-try';\n  $parent_try-&gt;hide('ALL');\n</pre>\n",
         "id" : "id841",
         "name" : "change the setting of the running block\n"
      },
      "id117" : {
         "distribution" : "Log-Report-Optional",
         "inheritance" : {
            "extends" : [
               "Exporter"
            ]
         },
         "package" : "Log::Report::Minimal",
         "name" : "Log::Report::Minimal",
         "id" : "id117",
         "is_pure_pod" : false,
         "title" : "simulate Log::Report functions simple",
         "chapters" : [
            "id118",
            "id1320",
            "id119",
            "id120",
            "id121"
         ],
         "version" : "1.08"
      },
      "id200" : {
         "path" : "FUNCTIONS/Other",
         "type" : "section",
         "subroutines" : [
            "id204",
            "id202",
            "id206",
            "id201",
            "id203"
         ],
         "name" : "Other",
         "id" : "id200",
         "level" : 2
      },
      "id630" : {
         "type" : "section",
         "path" : "METHODS/Attributes",
         "level" : 2,
         "name" : "Attributes",
         "id" : "id630",
         "subroutines" : [
            "id632",
            "id631"
         ]
      },
      "id781-id1082" : {
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id781\">Log::Report::Dispatcher::addSkipStack()</a></p>",
         "id" : "id781-id1082",
         "name" : "addSkipStack",
         "extends" : "id781",
         "call" : "$any-&gt;<b><a name=\"id781\">addSkipStack</a></b>(&nbsp;@CODE&nbsp;)"
      },
      "id505" : {
         "type" : "function",
         "intro" : "<p>Returns the numeric value of the codepage.  The <tt class=\"parameter\">$iso</tt> may look like\nthis: <code>xx_YY</code>.  Then, first the <code>xx_YY</code> is looked-up.  If that does\nnot exist, <code>xx</code> is tried.</p>\n",
         "id" : "id505",
         "name" : "iso_to_codepage",
         "call" : "<b><a name=\"id505\">iso_to_codepage</a></b>(&nbsp;$iso&nbsp;)"
      },
      "id779-id958" : {
         "call" : "$obj-&gt;<b><a name=\"id779\">translate</a></b>(&nbsp;\\%options, $reason, $message&nbsp;)",
         "id" : "id779-id958",
         "name" : "translate",
         "extends" : "id779",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id779\">Log::Report::Dispatcher::translate()</a></p>",
         "type" : "i_method"
      },
      "id1217" : {
         "type" : "error",
         "name" : "message() of exception expects Log::Report::Message, got $what.",
         "id" : "id1217",
         "subroutine" : "id1215"
      },
      "id518" : {
         "params" : "$msgid",
         "type" : "option",
         "name" : "msgid",
         "id" : "id518"
      },
      "id642" : {
         "type" : "section",
         "path" : "METHODS/Constructors",
         "level" : 2,
         "id" : "id642",
         "name" : "Constructors",
         "subroutines" : [
            "id731-id637",
            "id643"
         ]
      },
      "id118" : {
         "type" : "chapter",
         "intro" : "<p>Log::Report::Minimal - simulate Log::Report functions simple</p>\n",
         "path" : "NAME",
         "level" : 1,
         "id" : "id118",
         "name" : "NAME"
      },
      "id1006" : {
         "id" : "id1006",
         "name" : "the 'needs' sub-command parameter '$need' is not a reason.",
         "subroutine" : "id1003",
         "type" : "error"
      },
      "id105" : {
         "name" : "Modifier: EL or EL($width, [$replace])",
         "id" : "id105",
         "level" : 3,
         "intro" : "<p>[1.00] When the string is larger than <code>$width</code> columns, then chop it\nshort and add a 'mid-line ellipsis' character: <code> ⋯  </code>.  You may also\npick another replacement string.   The comma is optional</p>\n\n<p>Attention: \"columns\" not \"characters\": it is aware of wide fonts, like\nchinese characters (see <code>%S</code> above).  The default ellipsis is also two\ncolumns wide.</p>\n<pre>\n  \"Intro: {text EL(10)}\";     # Intro: 12345678⋯ \n  \"Intro: {text EL(10,⋮)}\";   # Intro: 123456789⋮ \n  \"Intro: {text EL(10⋮)}\";    # Intro: 123456789⋮ \n  \"Intro: {text EL(10,XY)}\";  # Intro: 12345678XY \n  \"Intro: {text EL(10XY)}\";   # Intro: 12345678XY \n</pre>\n\n<p>The defaults for EL are '20' and '⋯' (mid-dots).  You can changes these\nwith <a class=\"jump\" href=\"id68\">setDefaults()</a>:</p>\n<pre>\n  $sp-&gt;setDefaults(EL =&gt; { width =&gt; 10, replace =&gt; '⋮' });\n  $sp-&gt;printi(\"Intro: {text EL}\"); # Intro: 12345678⋯ \n</pre>\n",
         "path" : "DETAILS/Interpolation: Modifiers/Modifier: EL or EL($width, [$replace])",
         "type" : "subsection"
      },
      "id517" : {
         "type" : "c_method",
         "options" : [
            [
               "id530",
               "id531"
            ],
            [
               "id526",
               "id527"
            ],
            [
               "id534",
               "id535"
            ],
            [
               "id528",
               "id529"
            ],
            [
               "id524",
               "id525"
            ],
            [
               "id518",
               "id519"
            ],
            [
               "id520",
               "id521"
            ],
            [
               "id522",
               "id523"
            ],
            [
               "id532",
               "id533"
            ]
         ],
         "diagnostics" : [
            "id536"
         ],
         "name" : "new",
         "id" : "id517",
         "call" : "$class-&gt;<b><a name=\"id517\">new</a></b>(&nbsp;%options&nbsp;)"
      },
      "id794" : {
         "name" : "params",
         "id" : "id794",
         "params" : "ARRAY",
         "type" : "option"
      },
      "id302" : {
         "id" : "id302",
         "name" : "domain",
         "call" : "$obj-&gt;<b><a name=\"id302\">domain</a></b>",
         "type" : "i_method"
      },
      "id1318" : {
         "level" : 1,
         "type" : "chapter",
         "intro" : "<pre> Dancer2::Plugin::LogReport\n   is a Dancer2::Plugin\n</pre>\n",
         "path" : "INHERITANCE",
         "id" : "id1318",
         "name" : "INHERITANCE"
      },
      "id757-id958" : {
         "id" : "id757-id958",
         "name" : "accept",
         "extends" : "id757",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id757\">Log::Report::Dispatcher::new(accept)</a></p>",
         "type" : "option",
         "params" : "$reasons|\\@reasons"
      },
      "id165-id375" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id165\">Log::Report::Minimal::Domain::new(name)</a></p>",
         "params" : "STRING",
         "type" : "option",
         "id" : "id165-id375",
         "name" : "name",
         "extends" : "id165"
      },
      "id307" : {
         "id" : "id307",
         "name" : "charset",
         "value" : "'utf-8'",
         "type" : "default"
      },
      "id921-id217" : {
         "call" : "$obj-&gt;<b><a name=\"id921\">toString</a></b>(&nbsp;[$locale]&nbsp;)",
         "extends" : "id921",
         "id" : "id921-id217",
         "name" : "toString",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id921\">Log::Report::Message::toString()</a></p>",
         "type" : "i_method"
      },
      "id1219" : {
         "call" : "$obj-&gt;<b><a name=\"id1219\">taggedWith</a></b>(&nbsp;$tag|Regexp&nbsp;)",
         "name" : "taggedWith",
         "id" : "id1219",
         "intro" : "<p>[1.44] Check whether any of the classes listed in the message match <tt class=\"parameter\">$tag</tt>\n(string) or the Regexp.  This uses <a class=\"jump\" href=\"id919\">Log::Report::Message::taggedWith()</a>.</p>\n",
         "type" : "i_method"
      },
      "id512" : {
         "path" : "NAME",
         "intro" : "<p>Log::Report::Lexicon::PO - one translation definition</p>\n",
         "type" : "chapter",
         "level" : 1,
         "id" : "id512",
         "name" : "NAME"
      },
      "id453" : {
         "type" : "default",
         "name" : "version",
         "id" : "id453",
         "value" : "<code>undef</code>"
      },
      "id326" : {
         "call" : "$class-&gt;<b><a name=\"id326\">new</a></b>(&nbsp;%options&nbsp;)",
         "id" : "id326",
         "name" : "new",
         "diagnostics" : [
            "id337"
         ],
         "intro" : "<p>Create a new translator object.  You may pass the <tt class=\"parameter\">%options</tt> as HASH or\nPAIRS.  By convension, all basic Template Toolkit options are in capitals.\nRead Template::Config about what they mean.  Extension options provided\nby this module are all in lower-case.</p>\n\n<p>In a web-environment, you want to start this before your webserver starts\nforking.</p>\n",
         "options" : [
            [
               "id331",
               "id332"
            ],
            [
               "id327",
               "id328"
            ],
            [
               "id329",
               "id330"
            ],
            [
               "id335",
               "id336"
            ],
            [
               "id333",
               "id334"
            ]
         ],
         "type" : "c_method"
      },
      "id786-id1090" : {
         "type" : "option",
         "params" : "CLASS",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>",
         "id" : "id786-id1090",
         "name" : "package",
         "extends" : "id786"
      },
      "id647" : {
         "subroutine" : "id643",
         "id" : "id647",
         "name" : "cannot read mo from file $fn: $!",
         "type" : "fault"
      },
      "id900" : {
         "type" : "default",
         "id" : "id900",
         "name" : "_msgctxt",
         "value" : "<code>undef</code>"
      },
      "id886-id217" : {
         "id" : "id886-id217",
         "name" : "_tags",
         "value" : "[]",
         "extends" : "id886",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id885\">Log::Report::Message::new(_tags)</a></p>",
         "type" : "default"
      },
      "id366" : {
         "level" : 2,
         "name" : "Supported syntax",
         "id" : "id366",
         "type" : "section",
         "path" : "DETAILS/Supported syntax",
         "nest" : [
            "id367",
            "id368",
            "id369"
         ]
      },
      "id434-id289" : {
         "extends" : "id434",
         "name" : "keep",
         "id" : "id434-id289",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id434\">Log::Report::Extract::cleanup(keep)</a></p>",
         "params" : "HASH|ARRAY",
         "type" : "option"
      },
      "id1013" : {
         "call" : "<b><a name=\"id1013\">info</a></b>(&nbsp;$message&nbsp;)",
         "id" : "id1013",
         "name" : "info",
         "intro" : "<p>Short for <code>report INFO =&gt; $message</code></p>\n",
         "type" : "function"
      },
      "id1345" : {
         "name" : "INHERITANCE",
         "id" : "id1345",
         "level" : 1,
         "type" : "chapter",
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Template::Textdomain\n   is a <a class=\"jump\" href=\"id1127\">Log::Report::Domain</a>\n   is a <a class=\"jump\" href=\"id158\">Log::Report::Minimal::Domain</a>\n</pre>\n"
      },
      "id315" : {
         "subroutine" : "id305",
         "id" : "id315",
         "name" : "template syntax error, no END in $fn line $line.",
         "type" : "error"
      },
      "id308" : {
         "params" : "PREDEFINED|CODE",
         "type" : "option",
         "intro" : "<p>Read the DETAILS section about this.</p>\n",
         "id" : "id308",
         "name" : "pattern"
      },
      "id51" : {
         "nest" : [
            "id52",
            "id65",
            "id72"
         ],
         "id" : "id51",
         "name" : "METHODS",
         "type" : "chapter",
         "intro" : "<p>See functions <a class=\"jump\" href=\"id85\">printi()</a>, <a class=\"jump\" href=\"id76\">sprinti()</a>, <a class=\"jump\" href=\"id86\">printp()</a>, and <a class=\"jump\" href=\"id87\">sprintp()</a>: you\ncan also call them as method.</p>\n<pre>\n  use String::Print 'oo';\n  my $f = String::Print-&gt;new(%config);\n  $f-&gt;printi($format, @params);\n\n  # exactly the same functionality:\n  use String::Print 'printi', %config;\n  printi $format, @params;\n</pre>\n\n<p>The Object Oriented interface wins when you need the same configuration\nin multiple source files, or when you need different configurations\nwithin one program.  In these cases, the hassle of explicitly using the\nobject has some benefits.</p>\n",
         "path" : "METHODS",
         "level" : 1
      },
      "id1102" : {
         "name" : "facility",
         "id" : "id1102",
         "intro" : "<p>The possible values for this depend (a little) on the system.  POSIX\nonly defines <code>user</code>, and <code>local0</code> up to <code>local7</code>.</p>\n",
         "params" : "$facility",
         "type" : "option"
      },
      "id790-id1174" : {
         "name" : "linenr",
         "id" : "id790-id1174",
         "extends" : "id790",
         "type" : "option",
         "params" : "INTEGER",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>"
      },
      "id780-id818" : {
         "call" : "$any-&gt;<b><a name=\"id780\">collectStack</a></b>(&nbsp;[$maxdepth]&nbsp;)",
         "extends" : "id780",
         "name" : "collectStack",
         "id" : "id780-id818",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id780\">Log::Report::Dispatcher::collectStack()</a></p>",
         "type" : "ci_method"
      },
      "id112" : {
         "level" : 3,
         "type" : "subsection",
         "path" : "DETAILS/Output encoding/Output encoding exclusion",
         "intro" : "<p>In some cases, the data which is inserted is already encoded in the\noutput syntax.  For instance, you already have HTML to be included.</p>\n\n<p>The default exclusion rule for HTML output is <code>qr/html$/i</code>, which\nmeans that all inserted named parameters, where the name ends on <code>html</code>\nwill not get html-entity encoded.</p>\n\n<p>This will work by default:</p>\n<pre>\n  # with encodeFor('HTML')\n  printp \"Me &amp; Co: {name}, {description_html}\",\n     name =&gt; 'RenE&lt;eacute>', description_html =&gt; $descr;\n</pre>\n\n<p>This may result in:</p>\n<pre>\n  Me &amp;amp; Co: RenE&lt;amp>eacute;, &lt;font color=\"red\"&gt;new member&lt;/font>\n</pre>\n\n<p>Better not to have HTML in your program: leave it to the template.  But\nin some cases, you have no choice.</p>\n",
         "name" : "Output encoding exclusion",
         "id" : "id112"
      },
      "id760-id1228" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id759\">Log::Report::Dispatcher::new(locale)</a></p>",
         "type" : "default",
         "name" : "locale",
         "id" : "id760-id1228",
         "extends" : "id760",
         "value" : "&lt;system locale&gt;"
      },
      "id743-id441" : {
         "extends" : "id743",
         "id" : "id743-id441",
         "name" : "setupPluralAlgorithm",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id743\">Log::Report::Lexicon::Table::setupPluralAlgorithm()</a></p>",
         "diagnostics" : [
            "id744-id441"
         ],
         "call" : "$obj-&gt;<b><a name=\"id743\">setupPluralAlgorithm</a></b>"
      },
      "id871-id217" : {
         "type" : "option",
         "params" : "INTEGER|ARRAY|HASH",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id871\">Log::Report::Message::new(_count)</a></p>",
         "name" : "_count",
         "id" : "id871-id217",
         "extends" : "id871"
      },
      "id746" : {
         "type" : "i_method",
         "intro" : "<p>The translation of a blank MSGID is used to store a MIME header, which\ncontains some meta-data.  The <tt class=\"parameter\">$field</tt> value is looked-up (case-insensitive)\nand returned.</p>\n",
         "name" : "header",
         "id" : "id746",
         "call" : "$obj-&gt;<b><a name=\"id746\">header</a></b>(&nbsp;$field&nbsp;)"
      },
      "id1234" : {
         "type" : "c_method",
         "options" : [
            [
               "id757-id1228",
               "id758-id1228"
            ],
            [
               "id765-id1228",
               "id1239"
            ],
            [
               "id1240",
               "id1241"
            ],
            [
               "id763-id1228",
               "id764-id1228"
            ],
            [
               "id759-id1228",
               "id760-id1228"
            ],
            [
               "id761-id1228",
               "id762-id1228"
            ],
            [
               "id1237",
               "id1238"
            ],
            [
               "id1235",
               "id1236"
            ]
         ],
         "diagnostics" : [
            "id1242",
            "id1243"
         ],
         "id" : "id1234",
         "name" : "new",
         "call" : "$class-&gt;<b><a name=\"id1234\">new</a></b>(&nbsp;$type, $name, %options&nbsp;)"
      },
      "id648" : {
         "type" : "fault",
         "id" : "id648",
         "name" : "cannot read magic from $fn: $!",
         "subroutine" : "id643"
      },
      "id429-id697" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id429\">Log::Report::Extract::pots()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id429\">pots</a></b>(&nbsp;$domain&nbsp;)",
         "id" : "id429-id697",
         "name" : "pots",
         "extends" : "id429"
      },
      "id1292" : {
         "level" : 3,
         "name" : "Filters",
         "id" : "id1292",
         "type" : "subsection",
         "path" : "DETAILS/Processing the message/Filters"
      },
      "id855" : {
         "name" : "showStatus",
         "id" : "id855",
         "call" : "$obj-&gt;<b><a name=\"id855\">showStatus</a></b>",
         "type" : "i_method",
         "intro" : "<p>If this object is kept in <code>$@</code>, and someone uses this as string, we\nwant to show the fatal error message.</p>\n\n<p>The message is not very informative for the good cause: we do not want\npeople to simply print the <code>$@</code>, but wish for a re-cast of the message\nusing <a class=\"jump\" href=\"id845\">reportAll()</a> or <a class=\"jump\" href=\"id846\">reportFatal()</a>.</p>\n"
      },
      "id771-id1090" : {
         "call" : "$obj-&gt;<b><a name=\"id771\">name</a></b>",
         "id" : "id771-id1090",
         "name" : "name",
         "extends" : "id771",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id771\">Log::Report::Dispatcher::name()</a></p>",
         "type" : "i_method"
      },
      "id899" : {
         "intro" : "<p>[1.22] Message <tt class=\"parameter\">$context</tt> in the translation file, the traditional use.  Cannot\nbe combined with <tt class=\"parameter\">_context</tt> on the same msgids.</p>\n",
         "type" : "option",
         "params" : "$context",
         "name" : "_msgctxt",
         "id" : "id899"
      },
      "id435-id289" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id434\">Log::Report::Extract::cleanup(keep)</a></p>",
         "name" : "keep",
         "id" : "id435-id289",
         "extends" : "id435",
         "value" : "[]"
      },
      "id838" : {
         "type" : "i_method",
         "intro" : "<p>Returns all collected <a class=\"jump\" href=\"id1194\">Log::Report::Exception</a> objects.  The last of\nthem may be a fatal one.  The other are non-fatal.</p>\n",
         "id" : "id838",
         "name" : "exceptions",
         "call" : "$obj-&gt;<b><a name=\"id838\">exceptions</a></b>"
      },
      "id772" : {
         "intro" : "<p>The dispatcher type, which is usually the same as the class of this\nobject, but not in case of wrappers like for Log::Dispatch.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id772\">type</a></b>",
         "name" : "type",
         "id" : "id772"
      },
      "id314" : {
         "type" : "warning",
         "id" : "id314",
         "name" : "msgid '$msgid' contains html escapes, don't do that.  File $file line $linenr.",
         "subroutine" : "id305"
      },
      "id771-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id771\">Log::Report::Dispatcher::name()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id771\">name</a></b>",
         "extends" : "id771",
         "name" : "name",
         "id" : "id771-id944"
      },
      "id428" : {
         "id" : "id428",
         "name" : "domains",
         "call" : "$obj-&gt;<b><a name=\"id428\">domains</a></b>",
         "type" : "i_method",
         "intro" : "<p>Returns a sorted list of all known domain names.</p>\n"
      },
      "id888" : {
         "type" : "default",
         "id" : "id888",
         "name" : "_classes",
         "value" : "<code>undef</code>"
      },
      "id761-id1228" : {
         "type" : "option",
         "params" : "'NORMAL'|'VERBOSE'|'ASSERT'|'DEBUG'|0..3",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id761\">Log::Report::Dispatcher::new(mode)</a></p>",
         "id" : "id761-id1228",
         "name" : "mode",
         "extends" : "id761"
      },
      "id870-id217" : {
         "name" : "_domain",
         "id" : "id870-id217",
         "extends" : "id870",
         "value" : "&lt;from \"use <a class=\"jump\" href=\"id979\">Log::Report</a>\">",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id869\">Log::Report::Message::new(_domain)</a></p>",
         "type" : "default"
      },
      "id781-id818" : {
         "extends" : "id781",
         "id" : "id781-id818",
         "name" : "addSkipStack",
         "call" : "$any-&gt;<b><a name=\"id781\">addSkipStack</a></b>(&nbsp;@CODE&nbsp;)",
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id781\">Log::Report::Dispatcher::addSkipStack()</a></p>"
      },
      "id791-id1174" : {
         "extends" : "id791",
         "value" : "&lt;required&gt;",
         "name" : "linenr",
         "id" : "id791-id1174",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id790\">Log::Report::Dispatcher::stackTraceLine(linenr)</a></p>",
         "type" : "default"
      },
      "id1031" : {
         "type" : "example",
         "intro" : "<pre>  print __nx \"one file\", \"{_count} files\", $nr_files;\n  print __nx \"one file\", \"{_count} files\", @files;\n\n  local $\" = ', ';\n  print __nx \"one file: {f}\", \"{_count} files: {f}\", @files, f =&gt; \\@files;\n</pre>\n",
         "id" : "id1031",
         "name" : "how to use <code>__nx()</code>\n"
      },
      "id1112" : {
         "type" : "option",
         "params" : "CODE",
         "intro" : "<p>[1.10] With a CODE reference you get your hands on the text before\nit gets sent to syslog.  The three parameters are: the (translated) text,\nthe related text domain object, and the message object.  You may want to\nuse context information from the latter.</p>\n\n<p>[1.19] After the three positional parameters, there may be a list of\npairs (named parameters) with additional info.  This may contain a\n<code>location</code> with an ARRAY of information produced by caller() about the\norigin of the exception.</p>\n",
         "name" : "format",
         "id" : "id1112"
      },
      "id467" : {
         "options" : [
            [
               "id468",
               "id469"
            ]
         ],
         "type" : "c_method",
         "intro" : "<p>Read the POT information from <tt class=\"parameter\">$filename</tt>.</p>\n",
         "id" : "id467",
         "name" : "read",
         "diagnostics" : [
            "id470",
            "id471",
            "id472",
            "id473",
            "id474"
         ],
         "call" : "$class-&gt;<b><a name=\"id467\">read</a></b>(&nbsp;$filename, %options&nbsp;)"
      },
      "id854" : {
         "type" : "default",
         "value" : "<code>undef</code>",
         "id" : "id854",
         "name" : "class"
      },
      "id1003" : {
         "name" : "dispatcher",
         "id" : "id1003",
         "type" : "function",
         "intro" : "<p>The <code>dispatcher</code> function controls access to dispatchers: the back-ends\nwhich process messages, do the logging.  Dispatchers are global entities,\naddressed by a symbolic <tt class=\"parameter\">$name</tt>.  Please read <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a> as\nwell.</p>\n\n<p>The <code>Log::Report</code> suite has its own dispatcher types, but also connects\nto external dispatching frameworks.  Each need some (minor) conversions,\nespecially with respect to translation of REASONS of the reports\ninto log-levels as the back-end understands.</p>\n\n<p>[1.10] When you open a dispatcher with a <tt class=\"parameter\">$name</tt> which is already in use,\nthat existing dispatcher gets closed.  Except when you have given an\n'dispatcher \"do-not-reopen\"' earlier, in which case the first object\nstays alive, and the second attempt ignored. [1.11] The automatically\ncreated default dispatcher will get replaced, even when this option\nis given, by another dispatcher which is named 'default'.</p>\n\n<p>The <tt class=\"parameter\">%options</tt> are a mixture of parameters needed for the\n<a class=\"jump\" href=\"id979\">Log::Report</a> dispatcher wrapper and the settings of the back-end.\nSee <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>, the documentation for the back-end specific\nwrappers, and the back-ends for more details.</p>\n\n<p>Implemented COMMANDs are <code>close</code>, <code>find</code>, <code>list</code>, <code>disable</code>,\n<code>enable</code>, <code>mode</code>, <code>filter</code>, <code>needs</code>, <code>active-try</code>, and <code>do-not-reopen</code>.</p>\n\n<p>Most commands are followed by a LIST of dispatcher <tt class=\"parameter\">@names</tt> to be addressed.\nFor <code>mode</code> see section <a class=\"jump\" href=\"id1071\">Run modes</a>; it requires a MODE argument\nbefore the LIST of NAMEs.  Non-existing names will be ignored. When\n<code>ALL</code> is specified, then all existing dispatchers will get addressed.\nFor <code>filter</code> see <a class=\"jump\" href=\"id806\">Filters</a>; it requires a CODE\nreference before the <tt class=\"parameter\">@names</tt> of the dispatchers which will have the it\napplied (defaults to all).</p>\n\n<p>With <code>needs</code>, you only provide a REASON: it will return the list of\ndispatchers which need to be called in case of a message with the REASON\nis triggered.  The <code>active-try</code> [1.09] returns the closest surrounding\nexception catcher, a <a class=\"jump\" href=\"id818\">Log::Report::Dispatcher::Try</a> object.</p>\n\n<p>For both the creation as COMMANDs version of this method, all objects\ninvolved are returned as LIST, non-existing ones skipped.  In SCALAR\ncontext with only one name, the one object is returned.</p>\n",
         "diagnostics" : [
            "id1005",
            "id1006",
            "id1007"
         ],
         "call" : "<b><a name=\"id1003\">dispatcher</a></b>(&nbsp;&lt;$type, $name, %options&gt;|&lt;$command, @names>&nbsp;)",
         "examples" : [
            "id1004"
         ]
      },
      "id993" : {
         "type" : "default",
         "id" : "id993",
         "name" : "location",
         "value" : "<code>undef</code>"
      },
      "id919-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id919\">Log::Report::Message::taggedWith()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id919\">taggedWith</a></b>(&nbsp;$tag|Regexp&nbsp;)",
         "extends" : "id919",
         "name" : "taggedWith",
         "id" : "id919-id217"
      },
      "id427" : {
         "id" : "id427",
         "name" : "charset",
         "call" : "$obj-&gt;<b><a name=\"id427\">charset</a></b>",
         "type" : "i_method",
         "intro" : "<p>Returns the character-set used inside the POT files.</p>\n"
      },
      "id1199" : {
         "intro" : "<p>Produces \"reason: message\" via <a class=\"jump\" href=\"id1223\">toString()</a>.</p>\n",
         "type" : "overload",
         "call" : "overload <b><a name=\"id1199\">\"\"</a></b>; stringification",
         "id" : "id1199",
         "name" : "\"\""
      },
      "id77" : {
         "intro" : "<p>Result of the translation process: when <a class=\"jump\" href=\"id1032\">Log::Report::__xn()</a> is\nare used for count-sensitive translation.  Those function may add\nmore specials to the parameter list.</p>\n",
         "params" : "INTEGER",
         "type" : "option",
         "id" : "id77",
         "name" : "_count"
      },
      "id901" : {
         "type" : "i_method",
         "intro" : "<p>Returns a new object which copies info from original, and updates it\nwith the specified <tt class=\"parameter\">%options</tt> and <tt class=\"parameter\">$variables</tt>.  The advantage is that the\ncached translations are shared between the objects.</p>\n",
         "examples" : [
            "id902"
         ],
         "call" : "$obj-&gt;<b><a name=\"id901\">clone</a></b>(&nbsp;%options, $variables&nbsp;)",
         "id" : "id901",
         "name" : "clone"
      },
      "id887" : {
         "id" : "id887",
         "name" : "_classes",
         "intro" : "<p>Deprecated alternative for <tt class=\"parameter\">_tag</tt>.</p>\n",
         "params" : "$tags|\\@tags",
         "type" : "option"
      },
      "id1235" : {
         "intro" : "<p>You can either specify a <tt class=\"parameter\">$file</tt> by name, which is opened in append mode with\nautoflush on. Or pass any kind of file handle <tt class=\"parameter\">$fh</tt>, or some OBJECT which\nimplements a <code>print()</code> method. You probably want to have autoflush\nenabled on your file-handles.</p>\n\n<p>When cleaning-up the dispatcher, the file will only be closed in case\nof a named <tt class=\"parameter\">$file</tt>.</p>\n\n<p>[1.10] When you pass a CODE, then for each log message the function is\ncalled with two arguments: this dispatcher object and the message object.\nIn some way (maybe via the message context) you have to determine the\nlog filename.  This means that probably many log-files are open at the\nsame time.</p>\n<pre>\n  # configuration time\n  dispatcher FILE =&gt; 'logfile', to =&gt;\n     sub { my ($disp, $msg) = @_; $msg-&gt;context-&gt;{logfile} };\n\n  # whenever you want to change the logfile\n  textdomain-&gt;updateContext(logfile =&gt; '/var/log/app');\n  (textdomain 'mydomain')-&gt;setContext(logfile =&gt; '/var/log/app');\n\n  # or\n  error __x\"help\", _context =&gt; {logfile =&gt; '/dev/tty'};\n  error __x\"help\", _context =&gt; \"logfile=/dev/tty\";\n</pre>\n",
         "params" : "$file|$fh|OBJECT|CODE",
         "type" : "option",
         "name" : "to",
         "id" : "id1235"
      },
      "id786-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>",
         "type" : "option",
         "params" : "CLASS",
         "id" : "id786-id944",
         "name" : "package",
         "extends" : "id786"
      },
      "id837" : {
         "intro" : "<p>The exit <tt class=\"parameter\">$text</tt> or object (<code>$@</code>) of the eval'ed block, in its unprocessed state.\nThey will always return <code>true</code> when they where deadly, and it always stringifies\ninto something useful.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id837\">died</a></b>(&nbsp;[$text]&nbsp;)",
         "id" : "id837",
         "name" : "died"
      },
      "id1344" : {
         "type" : "chapter",
         "path" : "INHERITANCE",
         "intro" : "<pre> Log::Report::Dispatcher::Log4perl\n   is a <a class=\"jump\" href=\"id750\">Log::Report::Dispatcher</a>\n</pre>\n",
         "level" : 1,
         "id" : "id1344",
         "name" : "INHERITANCE"
      },
      "id406" : {
         "name" : "no counting positional for '$msgid'",
         "id" : "id406",
         "subroutine" : "id402",
         "type" : "error"
      },
      "id1209" : {
         "type" : "default",
         "value" : "&lt;required&gt;",
         "name" : "message",
         "id" : "id1209"
      },
      "id920-id217" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id920\">Log::Report::Message::inClass()</a></p>",
         "extends" : "id920",
         "name" : "inClass",
         "id" : "id920-id217",
         "call" : "$obj-&gt;<b><a name=\"id920\">inClass</a></b>(&nbsp;$tag|Regexp&nbsp;)"
      },
      "id468" : {
         "name" : "charset",
         "id" : "id468",
         "params" : "STRING",
         "type" : "option",
         "intro" : "<p>The character-set which is used for the file.  You must specify\nthis explicitly.</p>\n"
      },
      "id1308" : {
         "id" : "id1308",
         "name" : "Why use format strings?",
         "level" : 2,
         "path" : "DETAILS/Why use format strings?",
         "type" : "section"
      },
      "id293" : {
         "path" : "METHODS",
         "nest" : [
            "id294",
            "id301",
            "id304"
         ],
         "type" : "chapter",
         "level" : 1,
         "name" : "METHODS",
         "id" : "id293"
      },
      "id104" : {
         "type" : "subsection",
         "path" : "DETAILS/Interpolation: Modifiers/Modifier: '=' (show name)",
         "intro" : "<p>[0.96] As (always trailing) modifier, this will show the interpolated\nname before the value.  It might simplify debugging statements.</p>\n<pre>\n  \"visitors: {count=}\", count =&gt; 1;      # visitors: count=1\n  \"v: {count %-8,d =}X\", count =&gt; 10000; # v: count=10,000␣␣X\n</pre>\n",
         "level" : 3,
         "name" : "Modifier: '=' (show name)",
         "id" : "id104"
      },
      "id759" : {
         "id" : "id759",
         "name" : "locale",
         "intro" : "<p>Overrules the global locale setting.  Can be overruled itself by\n<a class=\"jump\" href=\"id994\">Log::Report::report(locale)</a>.</p>\n",
         "params" : "LOCALE",
         "type" : "option"
      },
      "id676" : {
         "params" : "HASH",
         "type" : "option",
         "name" : "rules",
         "id" : "id676"
      },
      "id778" : {
         "call" : "$obj-&gt;<b><a name=\"id778\">log</a></b>(&nbsp;\\%options, $reason, $message, $domain&nbsp;)",
         "id" : "id778",
         "name" : "log",
         "intro" : "<p>This method is called by <a class=\"jump\" href=\"id985\">Log::Report::report()</a> and should not be called\ndirectly.  Internally, it will call <a class=\"jump\" href=\"id779\">translate()</a>, which does most of\nthe work.</p>\n",
         "type" : "i_method"
      },
      "id832" : {
         "name" : "hide",
         "id" : "id832",
         "type" : "option",
         "params" : "$reasons|\\@reasons|'ALL'|'NONE'",
         "intro" : "<p>[1.09] see <a class=\"jump\" href=\"id840\">hide()</a></p>\n"
      },
      "id795" : {
         "id" : "id795",
         "name" : "params",
         "value" : "&lt;required&gt;",
         "type" : "default"
      },
      "id422" : {
         "name" : "charset",
         "id" : "id422",
         "value" : "'utf-8'",
         "type" : "default"
      },
      "id1016" : {
         "type" : "function",
         "intro" : "<p>Short for <code>report MISTAKE =&gt; $message</code></p>\n",
         "id" : "id1016",
         "name" : "mistake",
         "call" : "<b><a name=\"id1016\">mistake</a></b>(&nbsp;$message&nbsp;)"
      },
      "id882" : {
         "name" : "_append",
         "id" : "id882",
         "value" : "<code>undef</code>",
         "type" : "default"
      },
      "id785-id958" : {
         "call" : "$any-&gt;<b><a name=\"id785\">stackTraceLine</a></b>(&nbsp;%options&nbsp;)",
         "extends" : "id785",
         "id" : "id785-id958",
         "name" : "stackTraceLine",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id785\">Log::Report::Dispatcher::stackTraceLine()</a></p>",
         "type" : "ci_method",
         "options" : [
            [
               "id800-id958",
               "id801-id958"
            ],
            [
               "id792-id958",
               "id793-id958"
            ],
            [
               "id788-id958",
               "id789-id958"
            ],
            [
               "id790-id958",
               "id791-id958"
            ],
            [
               "id796-id958",
               "id797-id958"
            ],
            [
               "id798-id958",
               "id799-id958"
            ],
            [
               "id786-id958",
               "id787-id958"
            ],
            [
               "id794-id958",
               "id795-id958"
            ]
         ]
      },
      "id1207" : {
         "name" : "reason",
         "id" : "id1207",
         "value" : "&lt;required&gt;",
         "type" : "default"
      },
      "id462" : {
         "type" : "option",
         "params" : "STRING",
         "intro" : "<p>Overrule the date which is included in the generated header.</p>\n",
         "name" : "date",
         "id" : "id462"
      },
      "id83" : {
         "type" : "option",
         "params" : "STRING|OBJECT",
         "intro" : "<p>Text as STRING appended after <tt class=\"parameter\">$format</tt>, without interpolation.</p>\n",
         "id" : "id83",
         "name" : "_append"
      },
      "id780-id1082" : {
         "extends" : "id780",
         "id" : "id780-id1082",
         "name" : "collectStack",
         "call" : "$any-&gt;<b><a name=\"id780\">collectStack</a></b>(&nbsp;[$maxdepth]&nbsp;)",
         "type" : "ci_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id780\">Log::Report::Dispatcher::collectStack()</a></p>"
      },
      "id631" : {
         "type" : "i_method",
         "intro" : "<p>Returns a list of <a class=\"jump\" href=\"id591\">Log::Report::Lexicon::Index</a> objects, where the\ntranslation files may be located.</p>\n",
         "name" : "lexicons",
         "id" : "id631",
         "call" : "$obj-&gt;<b><a name=\"id631\">lexicons</a></b>"
      },
      "id504" : {
         "intro" : "<p>Translate windows <tt class=\"parameter\">$codepage</tt> into ISO code.  The <tt class=\"parameter\">$codepage</tt> is numeric\nor a hex string like '0x0304'.</p>\n",
         "type" : "function",
         "call" : "<b><a name=\"id504\">codepage_to_iso</a></b>(&nbsp;$codepage&nbsp;)",
         "id" : "id504",
         "name" : "codepage_to_iso"
      },
      "id201" : {
         "intro" : "<p>Replace all escape characters into their readable counterpart.  For\ninstance, a new-line is replaced by backslash-n.</p>\n",
         "type" : "function",
         "call" : "<b><a name=\"id201\">escape_chars</a></b>(&nbsp;STRING&nbsp;)",
         "name" : "escape_chars",
         "id" : "id201"
      },
      "id763-id958" : {
         "type" : "option",
         "params" : "'UPPERCASE'|'LOWERCASE'|'UCFIRST'|'IGNORE'|CODE",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id763\">Log::Report::Dispatcher::new(format_reason)</a></p>",
         "extends" : "id763",
         "id" : "id763-id958",
         "name" : "format_reason"
      },
      "id777" : {
         "intro" : "<p>Terminate this dispatcher activities.  The dispatcher gets disabled,\nto avoid the case it accidentally gets used.  Returns <code>undef</code> (<code>false</code>)\nif the dispatcher was already closed.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id777\">close</a></b>",
         "id" : "id777",
         "name" : "close"
      },
      "id840" : {
         "id" : "id840",
         "name" : "hide",
         "type" : "i_method",
         "intro" : "<p>[1.09] By default, the try will only catch messages which stop the\nexecution of the block (errors etc, internally a 'die').  Other messages\nare passed to the parent dispatchers.</p>\n\n<p>This option gives the opportunity to stop, for instance, trace messages.\nThose messages are still collected inside the try object (unless excluded\nby <a class=\"jump\" href=\"id757\">new(accept)</a>), so may get passed-on later via <a class=\"jump\" href=\"id845\">reportAll()</a> if\nyou like.</p>\n\n<p>Be warned: Using this method will reset the whole 'hide' configuration:\nit's a <i>set</i> not an <i>add</i>.</p>\n",
         "call" : "$obj-&gt;<b><a name=\"id840\">hide</a></b>(&nbsp;@reasons&nbsp;)",
         "examples" : [
            "id841"
         ]
      },
      "id1197" : {
         "level" : 1,
         "path" : "DESCRIPTION",
         "intro" : "<p>In <a class=\"jump\" href=\"id979\">Log::Report</a>, exceptions are not as extended as available in\nlanguages as Java: you do not create classes for them.  The only\nthing an exception object does, is capture some information about\nan (untranslated) report.</p>\n",
         "type" : "chapter",
         "id" : "id1197",
         "name" : "DESCRIPTION"
      },
      "id681" : {
         "type" : "i_method",
         "intro" : "<p>Returns a pair of the MSGID stripped from context markup, and the\ncontext evaluated into the msgctxt string.  The <tt class=\"parameter\">$message</tt> is a\n<a class=\"jump\" href=\"id856\">Log::Report::Message</a> object.  The <tt class=\"parameter\">$context</tt> is the default context\nfor a certain textdomain.</p>\n<pre>\n  my ($msgid, $msgctxt) = $context-&gt;ctxtFor($msg, $lang, $context);\n</pre>\n",
         "name" : "ctxtFor",
         "id" : "id681",
         "diagnostics" : [
            "id682",
            "id683",
            "id684"
         ],
         "call" : "$obj-&gt;<b><a name=\"id681\">ctxtFor</a></b>(&nbsp;$message, $lang, [$context]&nbsp;)"
      },
      "id88" : {
         "id" : "id88",
         "name" : "of the rewrite\n",
         "type" : "example",
         "intro" : "<pre>  # positional parameters\n  my $x = sprintp \"dumpfiles: %s\\n\", \\@dumpfiles, _join =&gt; ':';\n\n  # is rewritten into, and then processed as\n  my $x = sprinti \"dumpfiles: {_1}\\n\", _1 =&gt; \\@dumpfiles, _join =&gt; ':';\n</pre>\n"
      },
      "id789-id958" : {
         "extends" : "id789",
         "value" : "&lt;required&gt;",
         "name" : "filename",
         "id" : "id789-id958",
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id788\">Log::Report::Dispatcher::stackTraceLine(filename)</a></p>"
      },
      "id1087" : {
         "subroutines" : [
            "id756-id1082"
         ],
         "id" : "id1087",
         "name" : "Constructors",
         "level" : 2,
         "path" : "METHODS/Constructors",
         "type" : "section"
      },
      "id670" : {
         "level" : 1,
         "type" : "chapter",
         "intro" : "<p>Log::Report::Translator::Context - handle translation contexts</p>\n",
         "path" : "NAME",
         "id" : "id670",
         "name" : "NAME"
      },
      "id1138" : {
         "name" : "configure",
         "id" : "id1138",
         "diagnostics" : [
            "id1147",
            "id1148"
         ],
         "call" : "$obj-&gt;<b><a name=\"id1138\">configure</a></b>(&nbsp;%options&nbsp;)",
         "options" : [
            [
               "id1145",
               "id1146"
            ],
            [
               "id1143",
               "id1144"
            ],
            [
               "id176-id1127",
               "id177-id1127"
            ],
            [
               "id1141",
               "id1142"
            ],
            [
               "id1139",
               "id1140"
            ],
            [
               "id174-id1127",
               "id175-id1127"
            ]
         ],
         "type" : "i_method",
         "intro" : "<p>The import is automatically called when the package is compiled.  For all\nbut one packages in your distribution, it will only contain the name of\nthe DOMAIN.  For one package, it will contain configuration information.\nThese <tt class=\"parameter\">%options</tt> are used for all packages which use the same DOMAIN.\nSee chapter <a class=\"jump\" href=\"id1160\">Configuring</a> below.</p>\n"
      },
      "id774-id958" : {
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id774\">Log::Report::Dispatcher::isDisabled()</a></p>",
         "id" : "id774-id958",
         "name" : "isDisabled",
         "extends" : "id774",
         "call" : "$obj-&gt;<b><a name=\"id774\">isDisabled</a></b>"
      },
      "id771-id1082" : {
         "call" : "$obj-&gt;<b><a name=\"id771\">name</a></b>",
         "id" : "id771-id1082",
         "name" : "name",
         "extends" : "id771",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id771\">Log::Report::Dispatcher::name()</a></p>",
         "type" : "i_method"
      },
      "id1029" : {
         "name" : "how to use <code>__n()</code>\n",
         "id" : "id1029",
         "type" : "example",
         "intro" : "<pre>  print __n \"one\", \"more\", $a;\n  print __n(\"one\", \"more\", $a), \"\\n\";\n  print +(__n \"one\", \"more\", $a), \"\\n\";\n\n  # new-lines are ignore at lookup, but printed.\n  print __n \"one\\n\", \"more\\n\", $a;\n\n  # count is in scalar context\n  # the value is also available as _count\n  print __n \"found one\\n\", \"found {_count}\\n\", @r;\n\n  # ARRAYs and HASHes are counted\n  print __n \"one\", \"more\", \\@r;\n</pre>\n"
      },
      "id1157" : {
         "name" : "defaultContext",
         "id" : "id1157",
         "call" : "$obj-&gt;<b><a name=\"id1157\">defaultContext</a></b>",
         "type" : "i_method",
         "intro" : "<p>Returns the current default translation context settings as HASH.  You should\nnot modify the content of that HASH: change it by called <a class=\"jump\" href=\"id1153\">setContext()</a> or\n<a class=\"jump\" href=\"id1156\">updateContext()</a>.</p>\n"
      },
      "id253" : {
         "id" : "id253",
         "name" : "Larger example",
         "intro" : "<p>In its simplest form, this module can be used for more flexible logging</p>\n<pre>\n  get '/route' =&gt; sub {\n      # Stop execution, redirect, and display an error to the user\n      $name or error \"Please enter a name\";\n\n      # The same but translated\n      $name or error __\"Please enter a name\";\n\n      # The same but translated and with variables\n      $name or error __x\"{name} is not valid\", name =&gt; $name;\n\n      # Show the user a warning, but continue execution\n      mistake \"Not sure that's what you wanted\";\n\n      # Add debug information, can be caught in syslog by adding\n      # the (for instance) syslog dispatcher\n      trace \"Hello world\";\n   };\n</pre>\n",
         "path" : "DETAILS/Larger example",
         "type" : "section",
         "level" : 2
      },
      "id1267" : {
         "type" : "chapter",
         "path" : "DETAILS",
         "nest" : [
            "id1268",
            "id1269"
         ],
         "level" : 1,
         "id" : "id1267",
         "name" : "DETAILS"
      },
      "id755" : {
         "subroutines" : [
            "id756"
         ],
         "id" : "id755",
         "name" : "Constructors",
         "level" : 2,
         "path" : "METHODS/Constructors",
         "type" : "section"
      },
      "id1223" : {
         "intro" : "<p>Prints the reason and the message.  Differently from <a class=\"jump\" href=\"id1221\">throw()</a>, this\nonly represents the textual content: it does not re-cast the exceptions to\nhigher levels.</p>\n",
         "type" : "i_method",
         "examples" : [
            "id1224"
         ],
         "call" : "$obj-&gt;<b><a name=\"id1223\">toString</a></b>(&nbsp;[$locale]&nbsp;)",
         "id" : "id1223",
         "name" : "toString"
      },
      "id799" : {
         "type" : "default",
         "value" : "8",
         "name" : "max_params",
         "id" : "id799"
      },
      "id786-id1082" : {
         "id" : "id786-id1082",
         "name" : "package",
         "extends" : "id786",
         "params" : "CLASS",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id786\">Log::Report::Dispatcher::stackTraceLine(package)</a></p>"
      },
      "id1077" : {
         "name" : "Translation",
         "id" : "id1077",
         "type" : "subsection",
         "intro" : "<p>Translating is optional.</p>\n\n<p>Distribution <a class=\"jump\" href=\"id717\">Log::Report::Lexicon</a> handles translations.  It will help\nyou manage all <a class=\"jump\" href=\"id1025\">__x()</a> (and friends) format strings in GNU's PO file\nformat (<i class=\"filename\">https://www.gnu.org/software/gettext/manual/html_node/PO-Files.html</i>)</p>\n\n<p>With <a class=\"jump\" href=\"id320\">Log::Report::Template</a>, you can use <a class=\"jump\" href=\"id979\">Log::Report</a> with translations\nin various website template systems.</p>\n\n<p>Then, <a class=\"jump\" href=\"id228\">Dancer2::Plugin::LogReport</a> brings <a class=\"jump\" href=\"id979\">Log::Report</a> with exceptions\nand translations to the Dancer2 web framework.</p>\n",
         "path" : "DETAILS/Interpolation via formats/Translation",
         "level" : 3
      },
      "id846" : {
         "type" : "i_method",
         "intro" : "<p>Re-cast only the fatal message to the defined dispatchers.  If the\nblock was left without problems, then nothing will be done.  The <tt class=\"parameter\">%options</tt>\nwill end-up as HASH of <tt class=\"parameter\">%options</tt> to <a class=\"jump\" href=\"id985\">Log::Report::report()</a>; see\n<a class=\"jump\" href=\"id1221\">Log::Report::Exception::throw()</a> which does the job.</p>\n",
         "id" : "id846",
         "name" : "reportFatal",
         "call" : "$obj-&gt;<b><a name=\"id846\">reportFatal</a></b>(&nbsp;%options&nbsp;)"
      },
      "id1027" : {
         "name" : "even length parameter list for __x at $where",
         "id" : "id1027",
         "subroutine" : "id1025",
         "type" : "error"
      },
      "id915-id217" : {
         "extends" : "id915",
         "id" : "id915-id217",
         "name" : "errno",
         "call" : "$obj-&gt;<b><a name=\"id915\">errno</a></b>(&nbsp;[$errno]&nbsp;)",
         "type" : "i_method",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id915\">Log::Report::Message::errno()</a></p>"
      },
      "id1159" : {
         "nest" : [
            "id1160"
         ],
         "path" : "DETAILS",
         "type" : "chapter",
         "id" : "id1159",
         "name" : "DETAILS",
         "level" : 1
      },
      "id741" : {
         "intro" : "<p>Returns the msgstr index used to translate a value of <tt class=\"parameter\">$count</tt>.</p>\n",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id741\">pluralIndex</a></b>(&nbsp;$count&nbsp;)",
         "id" : "id741",
         "name" : "pluralIndex",
         "diagnostics" : [
            "id742"
         ]
      },
      "id876-id217" : {
         "type" : "default",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id875\">Log::Report::Message::new(_msgid)</a></p>",
         "value" : "<code>undef</code>",
         "extends" : "id876",
         "id" : "id876-id217",
         "name" : "_msgid"
      },
      "id1273" : {
         "type" : "subsection",
         "path" : "METHODS/Managing PO's/Administration",
         "name" : "Administration",
         "id" : "id1273",
         "level" : 3,
         "subroutines" : [
            "id741-id569",
            "id745-id569",
            "id743-id569",
            "id746-id569",
            "id738-id569",
            "id739-id569"
         ]
      },
      "id908-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id908\">Log::Report::Message::count()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id908\">count</a></b>",
         "name" : "count",
         "id" : "id908-id217",
         "extends" : "id908"
      },
      "id1089" : {
         "level" : 2,
         "id" : "id1089",
         "name" : "Logging",
         "subroutines" : [
            "id781-id1082",
            "id785-id1082",
            "id778-id1082",
            "id784-id1082",
            "id777-id1082",
            "id780-id1082",
            "id783-id1082",
            "id779-id1082"
         ],
         "type" : "section",
         "path" : "METHODS/Logging"
      },
      "id1063" : {
         "id" : "id1063",
         "type" : "example",
         "intro" : "<pre>  if(Log::Report-&gt;needs('TRACE'))\n  {  my @args = ...expensive calculation...;\n     trace \"your options are: @args\";\n  }\n</pre>\n"
      },
      "id174-id1127" : {
         "params" : "ARRAY",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id174\">Log::Report::Minimal::Domain::configure(where)</a></p>",
         "extends" : "id174",
         "name" : "where",
         "id" : "id174-id1127"
      },
      "id361" : {
         "type" : "i_method",
         "intro" : "<p>If the 'processing_errors' option is 'NATIVE' (default), you have to\ncollect the error like this:</p>\n<pre>\n  $tt-&gt;process($template_fn, $vars, ...)\n     or die $tt-&gt;error;\n</pre>\n\n<p>When the 'procesing_errors' option is set to 'EXCEPTION', the error is\ntranslated into a <a class=\"jump\" href=\"id1194\">Log::Report::Exception</a>:</p>\n<pre>\n  use Log::Report;\n  try { $tt-&gt;process($template_fn, $vars, ...) };\n  print $@-&gt;wasFatal if $@;\n</pre>\n\n<p>In the latter solution, the try() is probably only on the level of the\nhighest level: the request handler which catches all kinds of serious\nerrors at once.</p>\n",
         "id" : "id361",
         "name" : "error",
         "call" : "$obj-&gt;<b><a name=\"id361\">error</a></b>"
      },
      "id439-id289" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id439\">Log::Report::Extract::store()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id439\">store</a></b>(&nbsp;$domain, $filename, $linenr, $context, $msg, [$msg_plural]&nbsp;)",
         "diagnostics" : [
            "id440-id289"
         ],
         "id" : "id439-id289",
         "name" : "store",
         "extends" : "id439"
      },
      "id1079" : {
         "id" : "id1079",
         "name" : "die/warn/Carp",
         "level" : 3,
         "intro" : "<p>Perl's built-in exception system is very primitive: \"die\" and \"warn\".\nMost programming languages provide a much more detailed exception\nmechanism.</p>\n\n<p>A typical perl program can look like this:</p>\n<pre>\n  my $dir = '/etc';\n\n  File::Spec-&gt;file_name is_absolute($dir)\n      or die \"ERROR: directory name must be absolute.\\n\";\n\n  -d $dir\n      or die \"ERROR: what platform are you on?\";\n\n  until(opendir DIR, $dir)\n  {   warn \"ERROR: cannot read system directory $dir: $!\";\n      sleep 60;\n  }\n\n  print \"Processing directory $dir\\n\"\n      if $verbose;\n\n  while(defined(my $file = readdir DIR))\n  {   if($file =~ m/\\.bak$/)\n      {   warn \"WARNING: found backup file $dir/$f\\n\";\n          next;\n      }\n\n      die \"ERROR: file $dir/$file is binary\"\n          if $debug &amp;&amp; -B \"$dir/$file\";\n\n      print \"DEBUG: processing file $dir/$file\\n\"\n          if $debug;\n\n      open my $fh, \"&lt;:encoding(UTF-8)\", \"$dir/$file\"\n          or die \"ERROR: cannot read from $dir/$f: $!\";\n\n      $fh-&gt;close\n          or croak \"ERROR: read errors in $dir/$file: $!\";\n  }\n</pre>\n\n<p>Where <code>die</code>, <code>warn</code>, and <code>print</code> are used for various tasks.  With\n<code>Log::Report</code>, you would write</p>\n<pre>\n  use Log::Report;\n\n  # can be left-out when there is no debug/verbose\n  dispatcher PERL =&gt; 'default', mode =&gt; 'DEBUG';\n\n  my $dir = '/etc';\n\n  File::Spec-&gt;file_name is_absolute($dir)\n      or mistake \"directory name must be absolute\";\n\n  -d $dir\n      or panic \"what platform are you on?\";\n\n  until(opendir DIR, $dir)\n  {   alert \"cannot read system directory $dir\";\n      sleep 60;\n  }\n\n  info \"Processing directory $dir\";\n\n  while(defined(my $file = readdir DIR))\n  {   if($file =~ m/\\.bak$/)\n      {   notice \"found backup file $dir/$f\";\n          next;\n      }\n\n      assert \"file $dir/$file is binary\"\n          if -B \"$dir/$file\";\n\n      trace \"processing file $dir/$file\";\n\n      unless(open my $fh, \"&lt;:encoding(UTF-8)\", \"$dir/$file\")\n      {   error \"no permission to read from $dir/$f\" if $!==ENOPERM;\n          fault \"unable to read from $dir/$f\";  # or better\n      }\n\n      $fh-&gt;close\n          or failure \"read errors in $dir/$file\";\n  }\n</pre>\n\n<p>A lot of things are quite visibly different, and there are a few smaller\nchanges.  There is no need for a new-line after the text of the message.\nWhen applicable (error about system problem), then the <code>$!</code> is added\nautomatically.</p>\n",
         "path" : "DETAILS/Compared to other solutions in Perl/die/warn/Carp",
         "type" : "subsection"
      },
      "id731-id637" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id731\">Log::Report::Lexicon::Table::new()</a></p>",
         "type" : "c_method",
         "call" : "$class-&gt;<b><a name=\"id731\">new</a></b>(&nbsp;%options&nbsp;)",
         "extends" : "id731",
         "id" : "id731-id637",
         "name" : "new"
      },
      "id907-id217" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id907\">Log::Report::Message::domain()</a></p>",
         "type" : "i_method",
         "call" : "$obj-&gt;<b><a name=\"id907\">domain</a></b>",
         "extends" : "id907",
         "id" : "id907-id217",
         "name" : "domain"
      },
      "id1283" : {
         "id" : "id1283",
         "name" : "DETAILS",
         "level" : 1,
         "type" : "chapter",
         "nest" : [
            "id1284",
            "id1285"
         ],
         "path" : "DETAILS"
      },
      "id881-id217" : {
         "name" : "_append",
         "id" : "id881-id217",
         "extends" : "id881",
         "params" : "$text|$message",
         "type" : "option",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id881\">Log::Report::Message::new(_append)</a></p>"
      },
      "id1340" : {
         "intro" : "<pre> Log::Report::Die\n   is an Exporter\n</pre>\n",
         "path" : "INHERITANCE",
         "type" : "chapter",
         "level" : 1,
         "id" : "id1340",
         "name" : "INHERITANCE"
      },
      "id321" : {
         "name" : "NAME",
         "id" : "id321",
         "intro" : "<p>Log::Report::Template - Template Toolkit with translations</p>\n",
         "path" : "NAME",
         "type" : "chapter",
         "level" : 1
      },
      "id781-id1090" : {
         "call" : "$any-&gt;<b><a name=\"id781\">addSkipStack</a></b>(&nbsp;@CODE&nbsp;)",
         "id" : "id781-id1090",
         "name" : "addSkipStack",
         "extends" : "id781",
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id781\">Log::Report::Dispatcher::addSkipStack()</a></p>",
         "type" : "ci_method"
      },
      "id780-id944" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id780\">Log::Report::Dispatcher::collectStack()</a></p>",
         "type" : "ci_method",
         "call" : "$any-&gt;<b><a name=\"id780\">collectStack</a></b>(&nbsp;[$maxdepth]&nbsp;)",
         "name" : "collectStack",
         "id" : "id780-id944",
         "extends" : "id780"
      },
      "id1269" : {
         "id" : "id1269",
         "name" : "Processing the message",
         "level" : 2,
         "type" : "section",
         "nest" : [
            "id1270",
            "id1271"
         ],
         "path" : "DETAILS/Processing the message"
      },
      "id400" : {
         "path" : "METHODS/Translating",
         "type" : "section",
         "subroutines" : [
            "id180-id375",
            "id1153-id375",
            "id1158-id375",
            "id1156-id375",
            "id1157-id375",
            "id401",
            "id402"
         ],
         "level" : 2,
         "name" : "Translating",
         "id" : "id400"
      },
      "id424-id697" : {
         "intro" : "<p>Inherited, see <a class=\"jump\" href=\"id418\">Log::Report::Extract::new()</a></p>",
         "type" : "fault",
         "subroutine" : "id418",
         "name" : "cannot create lexicon directory $dir: $!",
         "id" : "id424-id697",
         "extends" : "id424"
      },
      "id953" : {
         "id" : "id953",
         "name" : "callback",
         "value" : "&lt;required&gt;",
         "type" : "default"
      },
      "id1242" : {
         "type" : "error",
         "name" : "dispatcher $name needs parameter 'to'",
         "id" : "id1242",
         "subroutine" : "id1234"
      },
      "id894" : {
         "value" : "<code>$\"</code>  <code>$LIST_SEPARATOR</code>",
         "id" : "id894",
         "name" : "_join",
         "type" : "default"
      }
   },
   "meta" : {
      "main_manual" : "Log::Report"
   },
   "generated_by" : {
      "program_version" : null,
      "oodoc_version" : "3.06",
      "created" : "2026-04-10 11:17:58",
      "program" : "/home/markov/local/perl-git/OODoc/bin/oodist"
   },
   "distributions" : {
      "Log-Report" : {
         "generated_by" : "ExtUtils::MakeMaker version 7.76, CPAN::Meta::Converter version 2.150010",
         "author" : [
            "Mark Overmeer <markov@cpan.org>"
         ],
         "abstract" : "report a problem, pluggable handlers and language support",
         "x_oodist" : {
            "generate" : [
               {
                  "podtail" : null,
                  "format" : "pod3"
               },
               {
                  "docroot" : "/logreport/html",
                  "publish" : "../public_html/log-report/htmlpkg",
                  "format" : "html",
                  "templates" : "html",
                  "webpages" : "../public_html/logreport/html",
                  "stylesheet" : "/logreport/html/oodoc.css"
               },
               {
                  "export" : "website",
                  "publish" : "../public_html/log-report/doctree",
                  "meta" : {
                     "main_manual" : "Log::Report"
                  },
                  "markup" : "html",
                  "serializer" : "json"
               }
            ],
            "raw" : {
               "publish" : "../public_html/log-report/raw"
            },
            "use" : [],
            "parser" : {
               "syntax" : "markov",
               "skip_links" : [
                  "Locale::TextDomain",
                  "Log::Dispatch",
                  "Log::Dispatch::Output",
                  "Log::Log4perl"
               ]
            },
            "first_year" : 2007,
            "oodoc_version" : 3.04,
            "include" : [
               "../Dancer2-Plugin-LogReport",
               "../Log-Report-Lexicon",
               "../Log-Report-Optional",
               "../Log-Report-Template",
               "../String-Print"
            ],
            "tests" : {},
            "release" : {
               "publish" : "../public_html/log-report/source"
            },
            "email" : "markov@cpan.org"
         },
         "prereqs" : {
            "test" : {
               "requires" : {
                  "Test::Pod" : "1",
                  "Test::More" : "1"
               }
            },
            "develop" : {
               "requires" : {
                  "OODoc" : "3.04"
               }
            },
            "runtime" : {
               "requires" : {
                  "Encode" : "2.00",
                  "Devel::GlobalDestruction" : "0.09",
                  "String::Print" : "1.00",
                  "Scalar::Util" : "0",
                  "Log::Report::Optional" : "1.07",
                  "Sys::Syslog" : "0.27"
               }
            },
            "configure" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            },
            "build" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            }
         },
         "dynamic_config" : 0,
         "x_serialization_backend" : "JSON::PP version 4.16",
         "no_index" : {
            "directory" : [
               "t",
               "inc"
            ]
         },
         "license" : [
            "perl_5"
         ],
         "version" : "1.45",
         "meta-spec" : {
            "version" : 2,
            "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec"
         },
         "release_status" : "stable",
         "name" : "Log-Report",
         "resources" : {
            "bugtracker" : {
               "web" : "https://github.com/markov2/perl5-Log-Report/issues"
            },
            "repository" : {
               "web" : "https://github.com/markov2/perl5-Log-Report",
               "url" : "https://github.com/markov2/perl5-Log-Report.git",
               "type" : "git"
            },
            "homepage" : "http://perl.overmeer.net/CPAN/"
         }
      },
      "Dancer2-Plugin-LogReport" : {
         "x_oodist" : {
            "generate" : [
               {
                  "podtail" : null,
                  "format" : "pod3"
               }
            ],
            "first_year" : 2015,
            "oodoc_version" : 3.04,
            "parser" : {
               "skip_links" : [
                  "Dancer2::Logger::Syslog"
               ],
               "syntax" : "markov"
            },
            "use" : [],
            "raw" : {
               "publish" : "../public_html/dancer2-plugin-logreport/raw"
            },
            "release" : {
               "publish" : "../public_html/dancer2-plugin-logreport/source"
            },
            "include" : [
               "../Log-Report",
               "../Log-Report-Optional"
            ],
            "tests" : {},
            "email" : "markov@cpan.org"
         },
         "prereqs" : {
            "runtime" : {
               "requires" : {
                  "Scalar::Util" : "0",
                  "Log::Report" : "1.45",
                  "Dancer2" : "0.207",
                  "Log::Report::Template" : "0"
               }
            },
            "configure" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            },
            "build" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            },
            "test" : {
               "requires" : {
                  "Test::More" : "1",
                  "Test::Pod" : "1"
               }
            },
            "develop" : {
               "requires" : {
                  "OODoc" : "3.04"
               }
            }
         },
         "no_index" : {
            "directory" : [
               "t",
               "inc"
            ]
         },
         "x_serialization_backend" : "JSON::PP version 4.16",
         "dynamic_config" : 0,
         "generated_by" : "ExtUtils::MakeMaker version 7.76, CPAN::Meta::Converter version 2.150010",
         "author" : [
            "Mark Overmeer <markov@cpan.org>"
         ],
         "abstract" : "logging, exceptions and translations in Dancer2 via Log::Report",
         "resources" : {
            "homepage" : "http://perl.overmeer.net/CPAN/",
            "repository" : {
               "type" : "git",
               "web" : "https://github.com/markov2/perl5-Dancer2-Plugin-LogReport",
               "url" : "https://github.com/markov2/perl5-Dancer2-Plugin-LogReport.git"
            },
            "bugtracker" : {
               "web" : "https://github.com/markov2/perl5-Dancer2-Plugin-LogReport/issues"
            }
         },
         "name" : "Dancer2-Plugin-LogReport",
         "license" : [
            "perl_5"
         ],
         "version" : "2.03",
         "meta-spec" : {
            "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
            "version" : 2
         },
         "release_status" : "stable"
      },
      "Log-Report-Lexicon" : {
         "name" : "Log-Report-Lexicon",
         "resources" : {
            "repository" : {
               "type" : "git",
               "web" : "https://github.com/markov2/perl5-Log-Report-Lexicon",
               "url" : "https://github.com/markov2/perl5-Log-Report-Lexicon.git"
            },
            "homepage" : "http://perl.overmeer.net/CPAN/",
            "bugtracker" : {
               "web" : "https://github.com/markov2/perl5-Log-Report-Lexicon/issues"
            }
         },
         "meta-spec" : {
            "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
            "version" : 2
         },
         "version" : "1.16",
         "license" : [
            "perl_5"
         ],
         "release_status" : "stable",
         "x_oodist" : {
            "generate" : [
               {
                  "format" : "pod3",
                  "podtail" : null
               }
            ],
            "use" : [
               "../Log-Report",
               "../Log-Report-Template"
            ],
            "parser" : {
               "skip_links" : [
                  "Locale::PO",
                  "Win32::Locale",
                  "Win32::Codepage"
               ],
               "syntax" : "markov"
            },
            "raw" : {
               "publish" : "../public_html/log-report-lexicon/raw"
            },
            "oodoc_version" : 3.03,
            "first_year" : 2007,
            "tests" : {},
            "include" : [
               "../String-Print",
               "../Log-Report-Optional"
            ],
            "release" : {
               "publish" : "../public_html/log-report-lexicon/source"
            },
            "email" : "markov@cpan.org"
         },
         "prereqs" : {
            "develop" : {
               "requires" : {
                  "OODoc" : "3.00"
               }
            },
            "test" : {
               "requires" : {
                  "Test::More" : "1",
                  "Test::Pod" : "1"
               }
            },
            "configure" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            },
            "build" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            },
            "runtime" : {
               "requires" : {
                  "Log::Report" : "1.4",
                  "File::Temp" : "0",
                  "File::Spec" : "0",
                  "POSIX" : "0",
                  "Fcntl" : "0",
                  "List::Util" : "0",
                  "Scalar::Util" : "0",
                  "Pod::Usage" : "0",
                  "Data::Dumper" : "0",
                  "Encode" : "0",
                  "File::Find" : "0",
                  "File::Basename" : "0"
               }
            }
         },
         "no_index" : {
            "directory" : [
               "t",
               "inc"
            ]
         },
         "x_serialization_backend" : "JSON::PP version 4.16",
         "dynamic_config" : 0,
         "generated_by" : "ExtUtils::MakeMaker version 7.76, CPAN::Meta::Converter version 2.150010",
         "author" : [
            "Mark Overmeer <markov@cpan.org>"
         ],
         "abstract" : "Log::Report translation table management"
      },
      "String-Print" : {
         "resources" : {
            "bugtracker" : {
               "web" : "https://github.com/markov2/perl5-String-Print/issues"
            },
            "repository" : {
               "url" : "https://github.com/markov2/perl5-String-Print.git",
               "web" : "https://github.com/markov2/perl5-String-Print",
               "type" : "git"
            },
            "homepage" : "http://perl.overmeer.net/CPAN/"
         },
         "name" : "String-Print",
         "release_status" : "stable",
         "meta-spec" : {
            "version" : 2,
            "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec"
         },
         "license" : [
            "perl_5"
         ],
         "version" : "1.02",
         "dynamic_config" : 0,
         "x_serialization_backend" : "JSON::PP version 4.16",
         "no_index" : {
            "directory" : [
               "t",
               "inc"
            ]
         },
         "prereqs" : {
            "develop" : {
               "requires" : {
                  "OODoc" : "3.04"
               }
            },
            "test" : {
               "requires" : {
                  "Test::More" : "1",
                  "Test::Pod" : "1"
               }
            },
            "configure" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            },
            "build" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            },
            "runtime" : {
               "x_optional" : {
                  "DateTime" : 1
               },
               "requires" : {
                  "HTML::Entities" : "0",
                  "Test::More" : "0.86",
                  "Unicode::GCString" : "0",
                  "Date::Parse" : "2.3",
                  "Encode" : "0"
               }
            }
         },
         "x_oodist" : {
            "release" : {
               "publish" : "../public_html/string-print/source"
            },
            "include" : [],
            "tests" : {},
            "email" : "markov@cpan.org",
            "generate" : [
               {
                  "format" : "pod3",
                  "podtail" : null
               }
            ],
            "oodoc_version" : 3.04,
            "first_year" : 2016,
            "use" : [],
            "raw" : {
               "publish" : "../public_html/string-print/raw"
            },
            "parser" : {
               "syntax" : "markov",
               "skip_links" : [
                  "Locale::TextDomain"
               ]
            }
         },
         "abstract" : "printf extensions",
         "author" : [
            "Mark Overmeer <markov@cpan.org>"
         ],
         "generated_by" : "ExtUtils::MakeMaker version 7.76, CPAN::Meta::Converter version 2.150010"
      },
      "Log-Report-Template" : {
         "dynamic_config" : 0,
         "x_serialization_backend" : "JSON::PP version 4.16",
         "no_index" : {
            "directory" : [
               "t",
               "inc"
            ]
         },
         "prereqs" : {
            "develop" : {
               "requires" : {
                  "OODoc" : "3.00"
               }
            },
            "test" : {
               "requires" : {
                  "Test::Pod" : "1",
                  "Test::More" : "1"
               }
            },
            "build" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            },
            "configure" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            },
            "runtime" : {
               "requires" : {
                  "String::Print" : "0.91",
                  "Scalar::Util" : "0",
                  "Log::Report" : "1.42",
                  "File::Find" : "0",
                  "Template" : "2.26",
                  "Log::Report::Lexicon" : "1.13"
               }
            }
         },
         "x_oodist" : {
            "release" : {
               "publish" : "../public_html/log-report-template/source"
            },
            "tests" : {},
            "include" : [
               "../Log-Report",
               "../Log-Report-Lexicon",
               "../Log-Report-Optional",
               "../String-Print"
            ],
            "email" : "markov@cpan.org",
            "generate" : [
               {
                  "podtail" : null,
                  "format" : "pod3"
               }
            ],
            "first_year" : 2017,
            "oodoc_version" : 3.04,
            "raw" : {
               "publish" : "../public_html/log-report-template/raw"
            },
            "use" : [],
            "parser" : {
               "syntax" : "markov",
               "skip_links" : [
                  "Dancer2::Config"
               ]
            }
         },
         "abstract" : "template toolkit with translations",
         "author" : [
            "Mark Overmeer <markov@cpan.org>"
         ],
         "generated_by" : "ExtUtils::MakeMaker version 7.76, CPAN::Meta::Converter version 2.150010",
         "resources" : {
            "bugtracker" : {
               "web" : "https://github.com/markov2/perl5-Log-Report-Template/issues"
            },
            "repository" : {
               "type" : "git",
               "url" : "https://github.com/markov2/perl5-Log-Report-Template.git",
               "web" : "https://github.com/markov2/perl5-Log-Report-Template"
            },
            "homepage" : "http://perl.overmeer.net/CPAN/"
         },
         "name" : "Log-Report-Template",
         "release_status" : "stable",
         "license" : [
            "perl_5"
         ],
         "version" : "1.05",
         "meta-spec" : {
            "version" : 2,
            "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec"
         }
      },
      "Log-Report-Optional" : {
         "author" : [
            "Mark Overmeer <mark@overmeer.net>"
         ],
         "abstract" : "Log::Report in its lightest form",
         "generated_by" : "ExtUtils::MakeMaker version 7.70, CPAN::Meta::Converter version 2.150010",
         "prereqs" : {
            "test" : {
               "requires" : {
                  "Test::More" : "1",
                  "Test::Pod" : "1"
               }
            },
            "develop" : {
               "requires" : {
                  "OODoc" : "3.03"
               }
            },
            "runtime" : {
               "requires" : {
                  "Test::More" : "0.86",
                  "String::Print" : "0.91"
               }
            },
            "build" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            },
            "configure" : {
               "requires" : {
                  "ExtUtils::MakeMaker" : "0"
               }
            }
         },
         "no_index" : {
            "directory" : [
               "t",
               "inc"
            ]
         },
         "x_serialization_backend" : "JSON::PP version 4.16",
         "dynamic_config" : 0,
         "x_oodist" : {
            "generate" : [
               {
                  "format" : "pod3",
                  "podtail" : null
               }
            ],
            "use" : [
               "../String-Print"
            ],
            "parser" : {
               "skip_links" : [],
               "syntax" : "markov"
            },
            "raw" : {
               "publish" : "../public_html/log-report-optional/raw"
            },
            "oodoc_version" : 3.04,
            "first_year" : 2013,
            "include" : [],
            "tests" : {},
            "release" : {
               "publish" : "../public_html/log-report-optional/source"
            },
            "email" : "markov@cpan.org"
         },
         "release_status" : "stable",
         "meta-spec" : {
            "version" : 2,
            "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec"
         },
         "version" : "1.08",
         "license" : [
            "perl_5"
         ],
         "name" : "Log-Report-Optional",
         "resources" : {
            "homepage" : "http://perl.overmeer.net/CPAN/",
            "repository" : {
               "web" : "https://github.com/markov2/perl5-Log-Report-Optional",
               "url" : "https://github.com/markov2/perl5-Log-Report-Optional.git",
               "type" : "git"
            }
         }
      }
   },
   "manuals" : {
      "Log::Report::Translator" : "id1163",
      "Log::Report::Optional" : "id208",
      "Log::Report::Template" : "id320",
      "Log::Report" : "id979",
      "String::Print" : "id47",
      "Log::Report::Minimal::Domain" : "id158",
      "Log::Report::Translator::Gettext" : "id611",
      "Log::Report::Dispatcher::Syslog" : "id1090",
      "Log::Report::Extract" : "id412",
      "Dancer2::Template::TTLogReport" : "id264",
      "Log::Report::Dispatcher::Callback" : "id944",
      "Dancer2::Plugin::LogReport" : "id228",
      "Log::Report::Dispatcher::Perl" : "id1082",
      "Log::Report::Minimal" : "id117",
      "MojoX::Log::Report" : "id1120",
      "Log::Report::Domain" : "id1127",
      "Log::Report::Util" : "id181",
      "Log::Report::Lexicon" : "id717",
      "Log::Report::Message" : "id856",
      "Log::Report::Exception" : "id1194",
      "Log::Report::Translator::Context" : "id669",
      "Log::Report::DBIC::Profiler" : "id940",
      "Log::Report::Template::Extract" : "id289",
      "Log::Report::Lexicon::MOTcompact" : "id637",
      "Dancer::Logger::LogReport" : "id224",
      "Log::Report::Lexicon::POTcompact" : "id569",
      "Log::Report::Dispatcher" : "id750",
      "Log::Report::Translator::POT" : "id618",
      "Log::Report::Win32Locale" : "id499",
      "Log::Report::Lexicon::POT" : "id441",
      "Log::Report::Die" : "id809",
      "Log::Report::Dispatcher::File" : "id1228",
      "Log::Report::Lexicon::Index" : "id591",
      "Log::Report::Template::Textdomain" : "id375",
      "Log::Report::Dispatcher::Log4perl" : "id958",
      "Log::Report::Dispatcher::LogDispatch" : "id1174",
      "Log::Report::Lexicon::PO" : "id511",
      "Log::Report::Extract::PerlPPI" : "id697",
      "Dancer2::Logger::LogReport" : "id279",
      "Log::Report::Dispatcher::Try" : "id818",
      "Log::Report::Lexicon::Table" : "id725",
      "Dancer2::Plugin::LogReport::Message" : "id217"
   },
   "version" : "1.45"
}
