Locale-Utils-Autotranslator

 view release on metacpan or  search on metacpan

t/22_interactive_utf-8.t  view on Meta::CPAN

#!perl
#!perl -T

use strict;
use warnings;
use utf8;

use Moo;
use English qw($OS_ERROR $INPUT_RECORD_SEPARATOR);
use Path::Tiny qw(path);
use Test::More tests => 4;
use Test::NoWarnings;
use Test::Differences;

extends qw(
    Locale::Utils::Autotranslator::Interactive
);

my $output_filename = './translated interactive de_utf-8.po';
local *STDIN;
my @files = (
    "\n" eq "\x{D}\x{A}"
    ? (
        't/LocaleData/STDIN.interactive.windwos.txt',
        't/LocaleData/STDIN.interactive_end.windows.txt',
    )
    : (
        't/LocaleData/STDIN.interactive.linux.txt',
        't/LocaleData/STDIN.interactive_end.linux.txt',
    ),
);
{
    local $_ = shift @files;
    open STDIN, '<', $_
        or die "Can't open '$_': $OS_ERROR";
}

my $obj = Locale::Utils::Autotranslator::Interactive
    ->new(
        language                => 'de',
        after_translation_code  => sub {
        my ( $self, $msgid, $msgstr ) = @_;
            local $_ = shift @files;
            open STDIN, '<', $_
                or die "Can't open '$_': $OS_ERROR";
            return 1;
        },
    )
    ->translate(
        't/LocaleData/untranslated de_utf-8.po',
        $output_filename,
    );
is
    do {
        local $_ = $obj->error;
        s{\r? \n}{}xms;
        $_;
    },
    "API error: __END__",
    'end error'
    or exit;
is
    $obj->translation_count,
    1,
    'translation count';

my $content = path($output_filename)->slurp_utf8;
unlink $output_filename;

eq_or_diff
    [ split m{ \r? \n }xms, $content ],
    [ split m{ \n }xms, <<"EOT" ],
msgid ""



( run in 1.965 second using v1.01-cache-2.11-cpan-39bf76dae61 )