The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -T

use strict;
use warnings;

use Test::More tests => 5;
use Test::NoWarnings;

BEGIN {
    require_ok('Locale::TextDomain::OO');
}

my $loc = Locale::TextDomain::OO->new(
    plugins => [ qw( Expand::Maketext ) ],
    logger  => sub { note shift },
);
$loc->expand_maketext->formatter_code(
    sub {
        my $value = shift;
        # set the , between 3 digits
        while ( $value =~ s{(\d+) (\d{3})}{$1,$2}xms ) {}
        # German number format
        $loc->language =~ m{\A de \b}xms
            and $value =~ tr{.,}{,.};
        return $value;
    },
);

is
    $loc->maketext('[*,_1,EUR]', '12345678.90'),
    '12,345,678.90 EUR',
    'num en formatted';

$loc->language('de');
is
    $loc->maketext('[*,_1,EUR]', '12345678.90'),
    '12.345.678,90 EUR',
    'num de formatted';

$loc->expand_maketext->clear_formatter_code;
is
    $loc->maketext('[*,_1,EUR]', '12345678.90'),
    '12345678.90 EUR',
    'num no longer formatted';