From 8d09a801541287ac0c3fc20ed7a16eef765f0759 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 19 Feb 2010 11:41:45 -0600 Subject: allow setting defaults for the generated stub msgstrs --- lib/Locale/POFileManager/File.pm | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'lib/Locale/POFileManager') diff --git a/lib/Locale/POFileManager/File.pm b/lib/Locale/POFileManager/File.pm index 9f736bc..acdd0aa 100644 --- a/lib/Locale/POFileManager/File.pm +++ b/lib/Locale/POFileManager/File.pm @@ -4,6 +4,7 @@ use Moose; use MooseX::Types::Path::Class qw(File); use List::MoreUtils qw(any); use Locale::PO; +use Scalar::Util qw(reftype); has file => ( is => 'ro', @@ -12,6 +13,11 @@ has file => ( required => 1, ); +has stub_msgstr => ( + is => 'ro', + isa => 'Str|CodeRef', +); + has entries => ( traits => [qw(Array)], isa => 'ArrayRef[Locale::PO]', @@ -32,6 +38,12 @@ sub _build_entries { return (-r $filename) ? Locale::PO->load_file_asarray($filename) : []; } +sub entry_for { + my $self = shift; + my ($msgid) = @_; + return grep { $_->msgid eq $msgid } $self->entries; +} + sub save { my $self = shift; @@ -63,8 +75,18 @@ sub add_stubs_from { my $self = shift; my ($other) = @_; - $self->add_entry($_) for map { Locale::PO->new(-msgid => $_) } - $self->find_missing_from($other); + for my $missing ($self->find_missing_from($other)) { + my $msgstr = $self->stub_msgstr; + if (reftype($msgstr) && reftype($msgstr) eq 'CODE') { + $msgstr = $msgstr->(lang => $self->language, msgid => $missing); + } + my $entry = Locale::PO->new( + -msgid => $missing, + defined($msgstr) ? (-msgstr => $msgstr) : (), + ); + $self->add_entry($entry); + } + $self->save; } -- cgit v1.2.3-54-g00ecf