diff options
Diffstat (limited to 'rt/lib/RT')
64 files changed, 4802 insertions, 47709 deletions
diff --git a/rt/lib/RT/ACE.pm b/rt/lib/RT/ACE.pm index 7f21ba05e..1501a125e 100755 --- a/rt/lib/RT/ACE.pm +++ b/rt/lib/RT/ACE.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -69,7 +44,11 @@ RT::ACE =cut package RT::ACE; -use base 'RT::Record'; +use RT::Record; + + +use vars qw( @ISA ); +@ISA= qw( RT::Record ); sub _Init { my $self = shift; @@ -82,7 +61,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -125,7 +104,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -134,14 +113,14 @@ Returns the current value of id. =cut -=head2 PrincipalType +=item PrincipalType Returns the current value of PrincipalType. (In the database, PrincipalType is stored as varchar(25).) -=head2 SetPrincipalType VALUE +=item SetPrincipalType VALUE Set PrincipalType to VALUE. @@ -152,14 +131,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 PrincipalId +=item PrincipalId Returns the current value of PrincipalId. (In the database, PrincipalId is stored as int(11).) -=head2 SetPrincipalId VALUE +=item SetPrincipalId VALUE Set PrincipalId to VALUE. @@ -170,14 +149,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 RightName +=item RightName Returns the current value of RightName. (In the database, RightName is stored as varchar(25).) -=head2 SetRightName VALUE +=item SetRightName VALUE Set RightName to VALUE. @@ -188,14 +167,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ObjectType +=item ObjectType Returns the current value of ObjectType. (In the database, ObjectType is stored as varchar(25).) -=head2 SetObjectType VALUE +=item SetObjectType VALUE Set ObjectType to VALUE. @@ -206,14 +185,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ObjectId +=item ObjectId Returns the current value of ObjectId. (In the database, ObjectId is stored as int(11).) -=head2 SetObjectId VALUE +=item SetObjectId VALUE Set ObjectId to VALUE. @@ -224,14 +203,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 DelegatedBy +=item DelegatedBy Returns the current value of DelegatedBy. (In the database, DelegatedBy is stored as int(11).) -=head2 SetDelegatedBy VALUE +=item SetDelegatedBy VALUE Set DelegatedBy to VALUE. @@ -242,14 +221,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 DelegatedFrom +=item DelegatedFrom Returns the current value of DelegatedFrom. (In the database, DelegatedFrom is stored as int(11).) -=head2 SetDelegatedFrom VALUE +=item SetDelegatedFrom VALUE Set DelegatedFrom to VALUE. @@ -261,25 +240,25 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, PrincipalType => - {read => 1, write => 1, sql_type => 12, length => 25, is_blob => 0, is_numeric => 0, type => 'varchar(25)', default => ''}, + {read => 1, write => 1, type => 'varchar(25)', default => ''}, PrincipalId => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, RightName => - {read => 1, write => 1, sql_type => 12, length => 25, is_blob => 0, is_numeric => 0, type => 'varchar(25)', default => ''}, + {read => 1, write => 1, type => 'varchar(25)', default => ''}, ObjectType => - {read => 1, write => 1, sql_type => 12, length => 25, is_blob => 0, is_numeric => 0, type => 'varchar(25)', default => ''}, + {read => 1, write => 1, type => 'varchar(25)', default => ''}, ObjectId => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, DelegatedBy => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, DelegatedFrom => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, } }; @@ -311,7 +290,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/ACL.pm b/rt/lib/RT/ACL.pm index 1dc66e8b6..81f59c6d0 100755 --- a/rt/lib/RT/ACL.pm +++ b/rt/lib/RT/ACL.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -72,9 +47,12 @@ use strict; package RT::ACL; -use base 'RT::SearchBuilder'; +use RT::SearchBuilder; use RT::ACE; +use vars qw( @ISA ); +@ISA= qw(RT::SearchBuilder); + sub _Init { my $self = shift; @@ -86,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::ACE item @@ -123,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Action/Autoreply.pm b/rt/lib/RT/Action/Autoreply.pm index 3734d819a..81f7bddfa 100755 --- a/rt/lib/RT/Action/Autoreply.pm +++ b/rt/lib/RT/Action/Autoreply.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,51 +14,20 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK package RT::Action::Autoreply; +require RT::Action::SendEmail; use strict; -use warnings; - -use base qw(RT::Action::SendEmail); +use vars qw/@ISA/; +@ISA = qw(RT::Action::SendEmail); -=head2 Prepare - -Set up the relevant recipients, then call our parent. - -=cut - - -sub Prepare { - my $self = shift; - $self->SetRecipients(); - $self->SUPER::Prepare(); -} # {{{ sub SetRecipients @@ -96,37 +59,35 @@ Set this message\'s return address to the apropriate queue address sub SetReturnAddress { my $self = shift; + my %args = ( is_comment => 0, + @_ + ); - my $friendly_name; - - if (RT->Config->Get('UseFriendlyFromLine')) { - $friendly_name = $self->TicketObj->QueueObj->Description || - $self->TicketObj->QueueObj->Name; - } - - $self->SUPER::SetReturnAddress( @_, friendly_name => $friendly_name ); + my $replyto; + if ($args{'is_comment'}) { + $replyto = $self->TicketObj->QueueObj->CommentAddress || + $RT::CommentAddress; + } + else { + $replyto = $self->TicketObj->QueueObj->CorrespondAddress || + $RT::CorrespondAddress; + } + + unless ($self->TemplateObj->MIMEObj->head->get('From')) { + my $friendly_name = $self->TicketObj->QueueObj->Description || + $self->TicketObj->QueueObj->Name; + $friendly_name =~ s/"/\\"/g; + $self->SetHeader('From', "\"$friendly_name\" <$replyto>"); + } + + unless ($self->TemplateObj->MIMEObj->head->get('Reply-To')) { + $self->SetHeader('Reply-To', "$replyto"); + } } # }}} -# {{{{ sub SetRTSpecialHeaders - -=head2 SetRTSpecialHeaders - -Set the C<Auto-Generated> header to C<auto-replied>, in accordance -with RFC3834. - -=cut - -sub SetRTSpecialHeaders { - my $self = shift; - $self->SUPER::SetRTSpecialHeaders(@_); - $self->SetHeader( 'Auto-Submitted', 'auto-replied' ); -} - -# }}} - eval "require RT::Action::Autoreply_Vendor"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Autoreply_Vendor.pm}); eval "require RT::Action::Autoreply_Local"; diff --git a/rt/lib/RT/Action/Generic.pm b/rt/lib/RT/Action/Generic.pm index 5e8ef32ce..007d299c7 100755 --- a/rt/lib/RT/Action/Generic.pm +++ b/rt/lib/RT/Action/Generic.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,35 +14,16 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. # -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK =head1 NAME - RT::Action::Generic - deprecated, see RT::Action + RT::Action::Generic - a generic baseclass for RT Actions =head1 SYNOPSIS @@ -56,25 +31,165 @@ =head1 DESCRIPTION -This module is provided only for backwards compatibility. - =head1 METHODS +=begin testing + +ok (require RT::Action::Generic); + +=end testing =cut -use strict; -use warnings; package RT::Action::Generic; -use base 'RT::Action'; + +use strict; + +# {{{ sub new +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless ($self, $class); + $self->_Init(@_); + return $self; +} +# }}} + +# {{{ sub new +sub loc { + my $self = shift; + return $self->{'ScripObj'}->loc(@_); +} +# }}} + +# {{{ sub _Init +sub _Init { + my $self = shift; + my %args = ( TransactionObj => undef, + TicketObj => undef, + ScripObj => undef, + TemplateObj => undef, + Argument => undef, + Type => undef, + @_ ); + + + $self->{'Argument'} = $args{'Argument'}; + $self->{'ScripObj'} = $args{'ScripObj'}; + $self->{'TicketObj'} = $args{'TicketObj'}; + $self->{'TransactionObj'} = $args{'TransactionObj'}; + $self->{'TemplateObj'} = $args{'TemplateObj'}; + $self->{'Type'} = $args{'Type'}; +} +# }}} + +# Access Scripwide data + +# {{{ sub Argument +sub Argument { + my $self = shift; + return($self->{'Argument'}); +} +# }}} + +# {{{ sub TicketObj +sub TicketObj { + my $self = shift; + return($self->{'TicketObj'}); +} +# }}} + +# {{{ sub TransactionObj +sub TransactionObj { + my $self = shift; + return($self->{'TransactionObj'}); +} +# }}} + +# {{{ sub TemplateObj +sub TemplateObj { + my $self = shift; + return($self->{'TemplateObj'}); +} +# }}} + +# {{{ sub ScripObj +sub ScripObj { + my $self = shift; + return($self->{'ScripObj'}); +} +# }}} + +# {{{ sub Type +sub Type { + my $self = shift; + return($self->{'Type'}); +} +# }}} + + +# Scrip methods + +#Do what we need to do and send it out. + +# {{{ sub Commit +sub Commit { + my $self = shift; + return(0, $self->loc("Commit Stubbed")); +} +# }}} + + +#What does this type of Action does + +# {{{ sub Describe +sub Describe { + my $self = shift; + return $self->loc("No description for [_1]", ref $self); +} +# }}} + + +#Parse the templates, get things ready to go. + +# {{{ sub Prepare +sub Prepare { + my $self = shift; + return (0, $self->loc("Prepare Stubbed")); +} +# }}} + + +#If this rule applies to this transaction, return true. + +# {{{ sub IsApplicable +sub IsApplicable { + my $self = shift; + return(undef); +} +# }}} + +# {{{ sub DESTROY +sub DESTROY { + my $self = shift; + + # We need to clean up all the references that might maybe get + # oddly circular + $self->{'TemplateObj'} =undef + $self->{'TicketObj'} = undef; + $self->{'TransactionObj'} = undef; + $self->{'ScripObj'} = undef; + + + +} + +# }}} eval "require RT::Action::Generic_Vendor"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Generic_Vendor.pm}); -warn "RT::Action::Generic has become RT::Action. Please adjust your deprecated RT::Action::Generic_Vendor file at " . $INC{"RT/Action/Generic_Vendor.pm"} if !$@; - eval "require RT::Action::Generic_Local"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Generic_Local.pm}); -warn "RT::Action::Generic has become RT::Action. Please adjust your deprecated RT::Action::Generic_Local file at " . $INC{"RT/Action/Generic_Local.pm"} if !$@; 1; - diff --git a/rt/lib/RT/Action/Notify.pm b/rt/lib/RT/Action/Notify.pm index 3b782f34b..1e4e4c073 100755 --- a/rt/lib/RT/Action/Notify.pm +++ b/rt/lib/RT/Action/Notify.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,54 +14,21 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. # -# END BPS TAGGED BLOCK }}} - -# +# END LICENSE BLOCK package RT::Action::Notify; +require RT::Action::SendEmail; use strict; -use warnings; - -use base qw(RT::Action::SendEmail); - -use Email::Address; - -=head2 Prepare - -Set up the relevant recipients, then call our parent. +use vars qw/@ISA/; +@ISA = qw(RT::Action::SendEmail); -=cut - - -sub Prepare { - my $self = shift; - $self->SetRecipients(); - $self->SUPER::Prepare(); -} +# {{{ sub SetRecipients =head2 SetRecipients @@ -79,89 +40,90 @@ Explicitly B<does not> notify the creator of the transaction by default sub SetRecipients { my $self = shift; - my $ticket = $self->TicketObj; - my $arg = $self->Argument; + $arg =~ s/\bAll\b/Owner,Requestor,AdminCc,Cc/; my ( @To, @PseudoTo, @Cc, @Bcc ); - if ( $arg =~ /\bOtherRecipients\b/ ) { - if ( my $attachment = $self->TransactionObj->Attachments->First ) { - push @Cc, map { $_->address } Email::Address->parse( - $attachment->GetHeader('RT-Send-Cc') - ); - push @Bcc, map { $_->address } Email::Address->parse( - $attachment->GetHeader('RT-Send-Bcc') - ); + if ($arg =~ /\bOtherRecipients\b/) { + if ($self->TransactionObj->Attachments->First) { + push (@Cc, $self->TransactionObj->Attachments->First->GetHeader('RT-Send-Cc')); + push (@Bcc, $self->TransactionObj->Attachments->First->GetHeader('RT-Send-Bcc')); } } if ( $arg =~ /\bRequestor\b/ ) { - push @To, $ticket->Requestors->MemberEmailAddresses; + push ( @To, $self->TicketObj->Requestors->MemberEmailAddresses ); } + + if ( $arg =~ /\bCc\b/ ) { #If we have a To, make the Ccs, Ccs, otherwise, promote them to To if (@To) { - push ( @Cc, $ticket->Cc->MemberEmailAddresses ); - push ( @Cc, $ticket->QueueObj->Cc->MemberEmailAddresses ); + push ( @Cc, $self->TicketObj->Cc->MemberEmailAddresses ); + push ( @Cc, $self->TicketObj->QueueObj->Cc->MemberEmailAddresses ); } else { - push ( @Cc, $ticket->Cc->MemberEmailAddresses ); - push ( @To, $ticket->QueueObj->Cc->MemberEmailAddresses ); + push ( @Cc, $self->TicketObj->Cc->MemberEmailAddresses ); + push ( @To, $self->TicketObj->QueueObj->Cc->MemberEmailAddresses ); } } - if ( $arg =~ /\bOwner\b/ && $ticket->OwnerObj->id != $RT::Nobody->id ) { - # If we're not sending to Ccs or requestors, + if ( ( $arg =~ /\bOwner\b/ ) + && ( $self->TicketObj->OwnerObj->id != $RT::Nobody->id ) ) + { + + # If we're not sending to Ccs or requestors, # then the Owner can be the To. if (@To) { - push ( @Bcc, $ticket->OwnerObj->EmailAddress ); + push ( @Bcc, $self->TicketObj->OwnerObj->EmailAddress ); } else { - push ( @To, $ticket->OwnerObj->EmailAddress ); + push ( @To, $self->TicketObj->OwnerObj->EmailAddress ); } } if ( $arg =~ /\bAdminCc\b/ ) { - push ( @Bcc, $ticket->AdminCc->MemberEmailAddresses ); - push ( @Bcc, $ticket->QueueObj->AdminCc->MemberEmailAddresses ); + push ( @Bcc, $self->TicketObj->AdminCc->MemberEmailAddresses ); + push ( @Bcc, $self->TicketObj->QueueObj->AdminCc->MemberEmailAddresses ); } - if ( RT->Config->Get('UseFriendlyToLine') ) { + if ($RT::UseFriendlyToLine) { unless (@To) { - push @PseudoTo, - sprintf RT->Config->Get('FriendlyToLineFormat'), $arg, $ticket->id; + push ( + @PseudoTo, + sprintf($RT::FriendlyToLineFormat, $arg, $self->TicketObj->id), + ); } } - my $creatorObj = $self->TransactionObj->CreatorObj; - my $creator = $creatorObj->EmailAddress(); + my $creator = $self->TransactionObj->CreatorObj->EmailAddress(); #Strip the sender out of the To, Cc and AdminCc and set the # recipients fields used to build the message by the superclass. # unless a flag is set - my $TransactionCurrentUser = RT::CurrentUser->new; - $TransactionCurrentUser->LoadByName($creatorObj->Name); - if (RT->Config->Get('NotifyActor',$TransactionCurrentUser)) { + if ($RT::NotifyActor) { @{ $self->{'To'} } = @To; @{ $self->{'Cc'} } = @Cc; @{ $self->{'Bcc'} } = @Bcc; } else { - @{ $self->{'To'} } = grep ( lc $_ ne lc $creator, @To ); - @{ $self->{'Cc'} } = grep ( lc $_ ne lc $creator, @Cc ); - @{ $self->{'Bcc'} } = grep ( lc $_ ne lc $creator, @Bcc ); + @{ $self->{'To'} } = grep ( !/^$creator$/, @To ); + @{ $self->{'Cc'} } = grep ( !/^$creator$/, @Cc ); + @{ $self->{'Bcc'} } = grep ( !/^$creator$/, @Bcc ); } @{ $self->{'PseudoTo'} } = @PseudoTo; - + return (1); } +# }}} + eval "require RT::Action::Notify_Vendor"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/Notify_Vendor.pm}); eval "require RT::Action::Notify_Local"; diff --git a/rt/lib/RT/Action/NotifyAsComment.pm b/rt/lib/RT/Action/NotifyAsComment.pm index 4380c86db..210e4ab15 100755 --- a/rt/lib/RT/Action/NotifyAsComment.pm +++ b/rt/lib/RT/Action/NotifyAsComment.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,54 +14,36 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK package RT::Action::NotifyAsComment; +require RT::Action::Notify; use strict; -use warnings; +use vars qw/@ISA/; +@ISA = qw(RT::Action::Notify); -use base qw(RT::Action::Notify); =head2 SetReturnAddress -Tell SendEmail that this message should come out as a comment. +Tell SendEmail that this message should come out as a comment. Calls SUPER::SetReturnAddress. =cut sub SetReturnAddress { - my $self = shift; - - # Tell RT::Action::SendEmail that this should come - # from the relevant comment email address. - $self->{'comment'} = 1; - - return $self->SUPER::SetReturnAddress( @_, is_comment => 1 ); + my $self = shift; + + # Tell RT::Action::SendEmail that this should come + # from the relevant comment email address. + $self->{'comment'} = 1; + + return($self->SUPER::SetReturnAddress(is_comment => 1)); } eval "require RT::Action::NotifyAsComment_Vendor"; @@ -76,3 +52,4 @@ eval "require RT::Action::NotifyAsComment_Local"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/NotifyAsComment_Local.pm}); 1; + diff --git a/rt/lib/RT/Action/ResolveMembers.pm b/rt/lib/RT/Action/ResolveMembers.pm index ff826ccc1..02ff3a58c 100644 --- a/rt/lib/RT/Action/ResolveMembers.pm +++ b/rt/lib/RT/Action/ResolveMembers.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,39 +14,22 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # This Action will resolve all members of a resolved group ticket package RT::Action::ResolveMembers; -use base 'RT::Action'; +require RT::Action::Generic; require RT::Links; use strict; +use vars qw/@ISA/; +@ISA=qw(RT::Action::Generic); #Do what we need to do and send it out. diff --git a/rt/lib/RT/Action/SendEmail.pm b/rt/lib/RT/Action/SendEmail.pm index 8b682c118..dac8fc8e7 100755 --- a/rt/lib/RT/Action/SendEmail.pm +++ b/rt/lib/RT/Action/SendEmail.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,46 +14,25 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Portions Copyright 2000 Tobias Brox <tobix@cpan.org> package RT::Action::SendEmail; +require RT::Action::Generic; use strict; -use warnings; +use vars qw/@ISA/; +@ISA = qw(RT::Action::Generic); -use base qw(RT::Action); +use MIME::Words qw(encode_mimeword); use RT::EmailParser; -use RT::Interface::Email; -use Email::Address; -our @EMAIL_RECIPIENT_HEADERS = qw(To Cc Bcc); - =head1 NAME @@ -69,493 +42,273 @@ RT::Action::AutoReply is a good example subclass. =head1 SYNOPSIS - use base 'RT::Action::SendEmail'; + require RT::Action::SendEmail; + @ISA = qw(RT::Action::SendEmail); + =head1 DESCRIPTION Basically, you create another module RT::Action::YourAction which ISA RT::Action::SendEmail. -=head1 METHODS +If you want to set the recipients of the mail to something other than +the addresses mentioned in the To, Cc, Bcc and headers in +the template, you should subclass RT::Action::SendEmail and override +either the SetRecipients method or the SetTo, SetCc, etc methods (see +the comments for the SetRecipients sub). -=head2 CleanSlate -Cleans class-wide options, like L</SquelchMailTo> or L</AttachTickets>. +=begin testing -=cut +ok (require RT::Action::SendEmail); -sub CleanSlate { - my $self = shift; - $self->SquelchMailTo(undef); - $self->AttachTickets(undef); -} +=end testing -=head2 Commit -Sends the prepared message and writes outgoing record into DB if the feature is -activated in the config. +=head1 AUTHOR -=cut +Jesse Vincent <jesse@bestpractical.com> and Tobias Brox <tobix@cpan.org> -sub Commit { - my $self = shift; +=head1 SEE ALSO - $self->DeferDigestRecipients() if RT->Config->Get('RecordOutgoingEmail'); - my $message = $self->TemplateObj->MIMEObj; - - my $orig_message; - if ( RT->Config->Get('RecordOutgoingEmail') - && RT->Config->Get('GnuPG')->{'Enable'} ) - { - - # it's hacky, but we should know if we're going to crypt things - my $attachment = $self->TransactionObj->Attachments->First; - - my %crypt; - foreach my $argument (qw(Sign Encrypt)) { - if ( $attachment - && defined $attachment->GetHeader("X-RT-$argument") ) - { - $crypt{$argument} = $attachment->GetHeader("X-RT-$argument"); - } else { - $crypt{$argument} = $self->TicketObj->QueueObj->$argument(); - } - } - if ( $crypt{'Sign'} || $crypt{'Encrypt'} ) { - $orig_message = $message->dup; - } - } +perl(1). - my ($ret) = $self->SendMessage($message); - if ( $ret > 0 && RT->Config->Get('RecordOutgoingEmail') ) { - if ($orig_message) { - $message->attach( - Type => 'application/x-rt-original-message', - Disposition => 'inline', - Data => $orig_message->as_string, - ); - } - $self->RecordOutgoingMailTransaction($message); - $self->RecordDeferredRecipients(); - } +=cut +# {{{ Scrip methods (_Init, Commit, Prepare, IsApplicable) - return ( abs $ret ); -} +# {{{ sub _Init +# We use _Init from RT::Action +# }}} -=head2 Prepare +# {{{ sub Commit +#Do what we need to do and send it out. +sub Commit { + my $self = shift; -Builds an outgoing email we're going to send using scrip's template. + my $MIMEObj = $self->TemplateObj->MIMEObj; + my $msgid = $MIMEObj->head->get('Message-Id'); + chomp $msgid; + $RT::Logger->info($msgid." #".$self->TicketObj->id."/".$self->TransactionObj->id." - Scrip ". $self->ScripObj->id ." ".$self->ScripObj->Description); + #send the email -=cut + # Weed out any RT addresses. We really don't want to talk to ourselves! + @{$self->{'To'}} = RT::EmailParser::CullRTAddresses("", @{$self->{'To'}}); + @{$self->{'Cc'}} = RT::EmailParser::CullRTAddresses("", @{$self->{'Cc'}}); + @{$self->{'Bcc'}} = RT::EmailParser::CullRTAddresses("", @{$self->{'Bcc'}}); + # If there are no recipients, don't try to send the message. + # If the transaction has content and has the header RT-Squelch-Replies-To -sub Prepare { - my $self = shift; + if ( defined $self->TransactionObj->Attachments->First() ) { - my ( $result, $message ) = $self->TemplateObj->Parse( - Argument => $self->Argument, - TicketObj => $self->TicketObj, - TransactionObj => $self->TransactionObj - ); - if ( !$result ) { - return (undef); - } - - my $MIMEObj = $self->TemplateObj->MIMEObj; + my $squelch = $self->TransactionObj->Attachments->First->GetHeader( 'RT-Squelch-Replies-To'); - # Header - $self->SetRTSpecialHeaders(); + if ($squelch) { + my @blacklist = split ( /,/, $squelch ); - $self->RemoveInappropriateRecipients(); + # Cycle through the people we're sending to and pull out anyone on the + # system blacklist - my %seen; - foreach my $type (@EMAIL_RECIPIENT_HEADERS) { - @{ $self->{$type} } - = grep defined && length && !$seen{ lc $_ }++, - @{ $self->{$type} }; + foreach my $person_to_yank (@blacklist) { + $person_to_yank =~ s/\s//g; + @{ $self->{'To'} } = + grep ( !/^$person_to_yank$/, @{ $self->{'To'} } ); + @{ $self->{'Cc'} } = + grep ( !/^$person_to_yank$/, @{ $self->{'Cc'} } ); + @{ $self->{'Bcc'} } = + grep ( !/^$person_to_yank$/, @{ $self->{'Bcc'} } ); + } + } } # Go add all the Tos, Ccs and Bccs that we need to to the message to # make it happy, but only if we actually have values in those arrays. -# TODO: We should be pulling the recipients out of the template and shove them into To, Cc and Bcc + $self->SetHeader( 'To', join ( ',', @{ $self->{'To'} } ) ) + if ( $self->{'To'} && @{ $self->{'To'} } ); + $self->SetHeader( 'Cc', join ( ',', @{ $self->{'Cc'} } ) ) + if ( $self->{'Cc'} && @{ $self->{'Cc'} } ); + $self->SetHeader( 'Bcc', join ( ',', @{ $self->{'Bcc'} } ) ) + if ( $self->{'Cc'} && @{ $self->{'Bcc'} } ); - for my $header (@EMAIL_RECIPIENT_HEADERS) { - $self->SetHeader( $header, join( ', ', @{ $self->{$header} } ) ) - if ( !$MIMEObj->head->get($header) - && $self->{$header} - && @{ $self->{$header} } ); -} - # PseudoTo (fake to headers) shouldn't get matched for message recipients. - # If we don't have any 'To' header (but do have other recipients), drop in - # the pseudo-to header. - $self->SetHeader( 'To', join( ', ', @{ $self->{'PseudoTo'} } ) ) - if $self->{'PseudoTo'} - && @{ $self->{'PseudoTo'} } - && !$MIMEObj->head->get('To') - && ( $MIMEObj->head->get('Cc') or $MIMEObj->head->get('Bcc') ); - - # We should never have to set the MIME-Version header - $self->SetHeader( 'MIME-Version', '1.0' ); - - # fsck.com #5959: Since RT sends 8bit mail, we should say so. - $self->SetHeader( 'Content-Transfer-Encoding', '8bit' ); - - # For security reasons, we only send out textual mails. - foreach my $part ( grep !$_->is_multipart, $MIMEObj->parts_DFS ) { - my $type = $part->mime_type || 'text/plain'; - $type = 'text/plain' unless RT::I18N::IsTextualContentType($type); - $part->head->mime_attr( "Content-Type" => $type ); - $part->head->mime_attr( "Content-Type.charset" => 'utf-8' ); - } + $self->SetHeader('MIME-Version', '1.0'); - RT::I18N::SetMIMEEntityToEncoding( $MIMEObj, - RT->Config->Get('EmailOutputEncoding'), - 'mime_words_ok', ); + # try to convert message body from utf-8 to $RT::EmailOutputEncoding + $self->SetHeader( 'Content-Type', 'text/plain; charset="utf-8"' ); - # Build up a MIME::Entity that looks like the original message. - $self->AddAttachments if ( $MIMEObj->head->get('RT-Attach-Message') - && ( $MIMEObj->head->get('RT-Attach-Message') !~ /^(n|no|0|off|false)$/i ) ); - - $self->AddTickets; - - my $attachment = $self->TransactionObj->Attachments->First; - if ($attachment - && !( - $attachment->GetHeader('X-RT-Encrypt') - || $self->TicketObj->QueueObj->Encrypt - ) - ) - { - $attachment->SetHeader( 'X-RT-Encrypt' => 1 ) - if ( $attachment->GetHeader("X-RT-Incoming-Encryption") || '' ) eq - 'Success'; - } + RT::I18N::SetMIMEEntityToEncoding( $MIMEObj, $RT::EmailOutputEncoding, 'mime_words_ok' ); + $self->SetHeader( 'Content-Type', 'text/plain; charset="' . $RT::EmailOutputEncoding . '"' ); - return $result; -} -=head2 To + # Build up a MIME::Entity that looks like the original message. -Returns an array of L<Email::Address> objects containing all the To: recipients for this notification + my $do_attach = $self->TemplateObj->MIMEObj->head->get('RT-Attach-Message'); -=cut + if ($do_attach) { + $self->TemplateObj->MIMEObj->head->delete('RT-Attach-Message'); -sub To { - my $self = shift; - return ( $self->AddressesFromHeader('To') ); -} + my $attachments = RT::Attachments->new($RT::SystemUser); + $attachments->Limit( FIELD => 'TransactionId', + VALUE => $self->TransactionObj->Id ); + $attachments->OrderBy('id'); -=head2 Cc + my $transaction_content_obj = $self->TransactionObj->ContentObj; -Returns an array of L<Email::Address> objects containing all the Cc: recipients for this notification + # attach any of this transaction's attachments + while ( my $attach = $attachments->Next ) { -=cut + # Don't attach anything blank + next unless ( $attach->ContentLength ); -sub Cc { - my $self = shift; - return ( $self->AddressesFromHeader('Cc') ); -} - -=head2 Bcc - -Returns an array of L<Email::Address> objects containing all the Bcc: recipients for this notification + # We want to make sure that we don't include the attachment that's being sued as the "Content" of this message" + next + if ( $transaction_content_obj + && $transaction_content_obj->Id == $attach->Id + && $transaction_content_obj->ContentType =~ qr{text/plain}i + ); + $MIMEObj->make_multipart('mixed'); + $MIMEObj->attach( Type => $attach->ContentType, + Charset => $attach->OriginalEncoding, + Data => $attach->OriginalContent, + Filename => $self->MIMEEncodeString( $attach->Filename, $RT::EmailOutputEncoding ), + Encoding => '-SUGGEST'); + } -=cut + } -sub Bcc { - my $self = shift; - return ( $self->AddressesFromHeader('Bcc') ); -} + my $retval = $self->SendMessage($MIMEObj); -sub AddressesFromHeader { - my $self = shift; - my $field = shift; - my $header = $self->TemplateObj->MIMEObj->head->get($field); - my @addresses = Email::Address->parse($header); - return (@addresses); + return ($retval); } -=head2 SendMessage MIMEObj - -sends the message using RT's preferred API. -TODO: Break this out to a separate module - -=cut +# }}} -sub SendMessage { +# {{{ sub Prepare - # DO NOT SHIFT @_ in this subroutine. It breaks Hook::LexWrap's - # ability to pass @_ to a 'post' routine. - my ( $self, $MIMEObj ) = @_; - - my $msgid = $MIMEObj->head->get('Message-ID'); - chomp $msgid; - - $self->ScripActionObj->{_Message_ID}++; - - $RT::Logger->info( $msgid . " #" - . $self->TicketObj->id . "/" - . $self->TransactionObj->id - . " - Scrip " - . ($self->ScripObj->id || '#rule'). " " - . ( $self->ScripObj->Description || '' ) ); - - my $status = RT::Interface::Email::SendEmail( - Entity => $MIMEObj, - Ticket => $self->TicketObj, - Transaction => $self->TransactionObj, - ); +sub Prepare { + my $self = shift; - - return $status unless ($status > 0 || exists $self->{'Deferred'}); + # This actually populates the MIME::Entity fields in the Template Object - my $success = $msgid . " sent "; - foreach (@EMAIL_RECIPIENT_HEADERS) { - my $recipients = $MIMEObj->head->get($_); - $success .= " $_: " . $recipients if $recipients; + unless ( $self->TemplateObj ) { + $RT::Logger->warning("No template object handed to $self\n"); } - if( exists $self->{'Deferred'} ) { - for (qw(daily weekly susp)) { - $success .= "\nBatched email $_ for: ". join(", ", keys %{ $self->{'Deferred'}{ $_ } } ) - if exists $self->{'Deferred'}{ $_ }; - } - } - - $success =~ s/\n//g; - - $RT::Logger->info($success); - - return (1); -} - -=head2 AddAttachments + unless ( $self->TransactionObj ) { + $RT::Logger->warning("No transaction object handed to $self\n"); -Takes any attachments to this transaction and attaches them to the message -we're building. - -=cut - -sub AddAttachments { - my $self = shift; - - my $MIMEObj = $self->TemplateObj->MIMEObj; - - $MIMEObj->head->delete('RT-Attach-Message'); + } - my $attachments = RT::Attachments->new($RT::SystemUser); - $attachments->Limit( - FIELD => 'TransactionId', - VALUE => $self->TransactionObj->Id - ); + unless ( $self->TicketObj ) { + $RT::Logger->warning("No ticket object handed to $self\n"); - # Don't attach anything blank - $attachments->LimitNotEmpty; - $attachments->OrderBy( FIELD => 'id' ); - - # We want to make sure that we don't include the attachment that's - # being used as the "Content" of this message" unless that attachment's - # content type is not like text/... - my $transaction_content_obj = $self->TransactionObj->ContentObj; - - if ( $transaction_content_obj - && $transaction_content_obj->ContentType =~ m{text/}i ) - { - # If this was part of a multipart/alternative, skip all of the kids - my $parent = $transaction_content_obj->ParentObj; - if ($parent and $parent->Id and $parent->ContentType eq "multipart/alternative") { - $attachments->Limit( - ENTRYAGGREGATOR => 'AND', - FIELD => 'parent', - OPERATOR => '!=', - VALUE => $parent->Id, - ); - } else { - $attachments->Limit( - ENTRYAGGREGATOR => 'AND', - FIELD => 'id', - OPERATOR => '!=', - VALUE => $transaction_content_obj->Id, - ); - } } - # attach any of this transaction's attachments - my $seen_attachment = 0; - while ( my $attach = $attachments->Next ) { - if ( !$seen_attachment ) { - $MIMEObj->make_multipart( 'mixed', Force => 1 ); - $seen_attachment = 1; + my ( $result, $message ) = $self->TemplateObj->Parse( + Argument => $self->Argument, + TicketObj => $self->TicketObj, + TransactionObj => $self->TransactionObj + ); + if ($result) { + + # Header + $self->SetSubject(); + $self->SetSubjectToken(); + $self->SetRecipients(); + $self->SetReturnAddress(); + $self->SetRTSpecialHeaders(); + if ($RT::EmailOutputEncoding) { + + # l10n related header + $self->SetHeaderAsEncoding( 'Subject', $RT::EmailOutputEncoding ); } - $self->AddAttachment($attach); } -} - -=head2 AddAttachment $attachment -Takes one attachment object of L<RT::Attachmment> class and attaches it to the message -we're building. - -=cut + return $result; -sub AddAttachment { - my $self = shift; - my $attach = shift; - my $MIMEObj = shift || $self->TemplateObj->MIMEObj; - - $MIMEObj->attach( - Type => $attach->ContentType, - Charset => $attach->OriginalEncoding, - Data => $attach->OriginalContent, - Filename => $self->MIMEEncodeString( $attach->Filename ), - 'RT-Attachment:' => $self->TicketObj->Id . "/" - . $self->TransactionObj->Id . "/" - . $attach->id, - Encoding => '-SUGGEST', - ); } -=head2 AttachTickets [@IDs] - -Returns or set list of ticket's IDs that should be attached to an outgoing message. +# }}} -B<Note> this method works as a class method and setup things global, so you have to -clean list by passing undef as argument. - -=cut - -{ - my $list = []; - - sub AttachTickets { - my $self = shift; - $list = [ grep defined, @_ ] if @_; - return @$list; - } -} +# }}} -=head2 AddTickets +# {{{ SendMessage +=head2 SendMessage MIMEObj -Attaches tickets to the current message, list of tickets' ids get from -L</AttachTickets> method. +sends the message using RT's preferred API. +TODO: Break this out to a seperate module =cut -sub AddTickets { +sub SendMessage { my $self = shift; - $self->AddTicket($_) foreach $self->AttachTickets; - return; -} - -=head2 AddTicket $ID - -Attaches a ticket with ID to the message. + my $MIMEObj = shift; -Each ticket is attached as multipart entity and all its messages and attachments -are attached as sub entities in order of creation, but only if transaction type -is Create or Correspond. + my $msgid = $MIMEObj->head->get('Message-Id'); -=cut -sub AddTicket { - my $self = shift; - my $tid = shift; - - # XXX: we need a current user here, but who is current user? - my $attachs = RT::Attachments->new($RT::SystemUser); - my $txn_alias = $attachs->TransactionAlias; - $attachs->Limit( ALIAS => $txn_alias, FIELD => 'Type', VALUE => 'Create' ); - $attachs->Limit( - ALIAS => $txn_alias, - FIELD => 'Type', - VALUE => 'Correspond' - ); - $attachs->LimitByTicket($tid); - $attachs->LimitNotEmpty; - $attachs->OrderBy( FIELD => 'Created' ); - - my $ticket_mime = MIME::Entity->build( - Type => 'multipart/mixed', - Top => 0, - Description => "ticket #$tid", - ); - while ( my $attachment = $attachs->Next ) { - $self->AddAttachment( $attachment, $ticket_mime ); - } - if ( $ticket_mime->parts ) { - my $email_mime = $self->TemplateObj->MIMEObj; - $email_mime->make_multipart; - $email_mime->add_part($ticket_mime); + #If we don't have any recipients to send to, don't send a message; + unless ( $MIMEObj->head->get('To') + || $MIMEObj->head->get('Cc') + || $MIMEObj->head->get('Bcc') ) { + $RT::Logger->info($msgid. " No recipients found. Not sending.\n"); + return (1); } - return; -} - -=head2 RecordOutgoingMailTransaction MIMEObj -Record a transaction in RT with this outgoing message for future record-keeping purposes + # PseudoTo (fake to headers) shouldn't get matched for message recipients. + # If we don't have any 'To' header, drop in the pseudo-to header. -=cut + $self->SetHeader( 'To', join ( ',', @{ $self->{'PseudoTo'} } ) ) + if ( $self->{'PseudoTo'} && ( @{ $self->{'PseudoTo'} } ) + and ( !$MIMEObj->head->get('To') ) ); + if ( $RT::MailCommand eq 'sendmailpipe' ) { + eval { + open( MAIL, "|$RT::SendmailPath $RT::SendmailArguments" ); + print MAIL $MIMEObj->as_string; + close(MAIL); + }; + if ($@) { + $RT::Logger->crit($msgid. "Could not send mail. -".$@ ); + } + } + else { + my @mailer_args = ($RT::MailCommand); + local $ENV{MAILADDRESS}; -sub RecordOutgoingMailTransaction { - my $self = shift; - my $MIMEObj = shift; + if ( $RT::MailCommand eq 'sendmail' ) { + push @mailer_args, $RT::SendmailArguments; + } + elsif ( $RT::MailCommand eq 'smtp' ) { + $ENV{MAILADDRESS} = $RT::SMTPFrom || $MIMEObj->head->get('From'); + push @mailer_args, (Server => $RT::SMTPServer); + push @mailer_args, (Debug => $RT::SMTPDebug); + } + else { + push @mailer_args, $RT::MailParams; + } - my @parts = $MIMEObj->parts; - my @attachments; - my @keep; - foreach my $part (@parts) { - my $attach = $part->head->get('RT-Attachment'); - if ($attach) { - $RT::Logger->debug( - "We found an attachment. we want to not record it."); - push @attachments, $attach; - } else { - $RT::Logger->debug("We found a part. we want to record it."); - push @keep, $part; + unless ( $MIMEObj->send( @mailer_args ) ) { + $RT::Logger->crit($msgid. "Could not send mail." ); + return (0); } } - $MIMEObj->parts( \@keep ); - foreach my $attachment (@attachments) { - $MIMEObj->head->add( 'RT-Attachment', $attachment ); - } - - RT::I18N::SetMIMEEntityToEncoding( $MIMEObj, 'utf-8', 'mime_words_ok' ); - my $transaction - = RT::Transaction->new( $self->TransactionObj->CurrentUser ); -# XXX: TODO -> Record attachments as references to things in the attachments table, maybe. + my $success = ($msgid. " sent To: ".$MIMEObj->head->get('To') . " Cc: ".$MIMEObj->head->get('Cc') . " Bcc: ".$MIMEObj->head->get('Bcc')); + $success =~ s/\n//gi; + $RT::Logger->info($success); - my $type; - if ( $self->TransactionObj->Type eq 'Comment' ) { - $type = 'CommentEmailRecord'; - } else { - $type = 'EmailRecord'; - } + return (1); +} - my $msgid = $MIMEObj->head->get('Message-ID'); - chomp $msgid; +# }}} - my ( $id, $msg ) = $transaction->Create( - Ticket => $self->TicketObj->Id, - Type => $type, - Data => $msgid, - MIMEObj => $MIMEObj, - ActivateScrips => 0 - ); +# {{{ Deal with message headers (Set* subs, designed for easy overriding) - if ($id) { - $self->{'OutgoingMailTransaction'} = $id; - } else { - $RT::Logger->warning( - "Could not record outgoing message transaction: $msg"); - } - return $id; -} +# {{{ sub SetRTSpecialHeaders =head2 SetRTSpecialHeaders @@ -567,272 +320,85 @@ that don't matter much to anybody else. sub SetRTSpecialHeaders { my $self = shift; - $self->SetSubject(); - $self->SetSubjectToken(); - $self->SetHeaderAsEncoding( 'Subject', - RT->Config->Get('EmailOutputEncoding') ) - if ( RT->Config->Get('EmailOutputEncoding') ); - $self->SetReturnAddress(); - $self->SetReferencesHeaders(); - - unless ( $self->TemplateObj->MIMEObj->head->get('Message-ID') ) { - - # Get Message-ID for this txn - my $msgid = ""; - if ( my $msg = $self->TransactionObj->Message->First ) { - $msgid = $msg->GetHeader("RT-Message-ID") - || $msg->GetHeader("Message-ID"); - } + $self->SetReferences(); - # If there is one, and we can parse it, then base our Message-ID on it - if ( $msgid - and $msgid - =~ s/<(rt-.*?-\d+-\d+)\.(\d+)-\d+-\d+\@\QRT->Config->Get('Organization')\E>$/ - "<$1." . $self->TicketObj->id - . "-" . $self->ScripObj->id - . "-" . $self->ScripActionObj->{_Message_ID} - . "@" . RT->Config->Get('Organization') . ">"/eg - and $2 == $self->TicketObj->id - ) - { - $self->SetHeader( "Message-ID" => $msgid ); - } else { - $self->SetHeader( - 'Message-ID' => RT::Interface::Email::GenMessageId( - Ticket => $self->TicketObj, - Scrip => $self->ScripObj, - ScripAction => $self->ScripActionObj - ), - ); - } - } + $self->SetMessageID(); - if (my $precedence = RT->Config->Get('DefaultMailPrecedence') - and !$self->TemplateObj->MIMEObj->head->get("Precedence") - ) { - $self->SetHeader( 'Precedence', $precedence ); - } + $self->SetPrecedence(); - $self->SetHeader( 'X-RT-Loop-Prevention', RT->Config->Get('rtname') ); + $self->SetHeader( 'X-RT-Loop-Prevention', $RT::rtname ); $self->SetHeader( 'RT-Ticket', - RT->Config->Get('rtname') . " #" . $self->TicketObj->id() ); + $RT::rtname . " #" . $self->TicketObj->id() ); $self->SetHeader( 'Managed-by', - "RT $RT::VERSION (http://www.bestpractical.com/rt/)" ); - -# XXX, TODO: use /ShowUser/ShowUserEntry(or something like that) when it would be -# refactored into user's method. - if ( my $email = $self->TransactionObj->CreatorObj->EmailAddress - and RT->Config->Get('UseOriginatorHeader') - ) { - $self->SetHeader( 'RT-Originator', $email ); - } - -} - - -sub DeferDigestRecipients { - my $self = shift; - $RT::Logger->debug( "Calling SetRecipientDigests for transaction " . $self->TransactionObj . ", id " . $self->TransactionObj->id ); - - # The digest attribute will be an array of notifications that need to - # be sent for this transaction. The array will have the following - # format for its objects. - # $digest_hash -> {daily|weekly|susp} -> address -> {To|Cc|Bcc} - # -> sent -> {true|false} - # The "sent" flag will be used by the cron job to indicate that it has - # run on this transaction. - # In a perfect world we might move this hash construction to the - # extension module itself. - my $digest_hash = {}; - - foreach my $mailfield (@EMAIL_RECIPIENT_HEADERS) { - # If we have a "PseudoTo", the "To" contains it, so we don't need to access it - next if ( ( $self->{'PseudoTo'} && @{ $self->{'PseudoTo'} } ) && ( $mailfield eq 'To' ) ); - $RT::Logger->debug( "Working on mailfield $mailfield; recipients are " . join( ',', @{ $self->{$mailfield} } ) ); - - # Store the 'daily digest' folk in an array. - my ( @send_now, @daily_digest, @weekly_digest, @suspended ); - - # Have to get the list of addresses directly from the MIME header - # at this point. - $RT::Logger->debug( $self->TemplateObj->MIMEObj->head->as_string ); - foreach my $rcpt ( map { $_->address } $self->AddressesFromHeader($mailfield) ) { - next unless $rcpt; - my $user_obj = RT::User->new($RT::SystemUser); - $user_obj->LoadByEmail($rcpt); - if ( ! $user_obj->id ) { - # If there's an email address in here without an associated - # RT user, pass it on through. - $RT::Logger->debug( "User $rcpt is not associated with an RT user object. Send mail."); - push( @send_now, $rcpt ); - next; - } + "RT $RT::VERSION (http://www.bestpractical.com/rt/)" ); - my $mailpref = RT->Config->Get( 'EmailFrequency', $user_obj ) || ''; - $RT::Logger->debug( "Got user mail preference '$mailpref' for user $rcpt"); + $self->SetHeader( 'RT-Originator', + $self->TransactionObj->CreatorObj->EmailAddress ); + return (); - if ( $mailpref =~ /daily/i ) { push( @daily_digest, $rcpt ) } - elsif ( $mailpref =~ /weekly/i ) { push( @weekly_digest, $rcpt ) } - elsif ( $mailpref =~ /suspend/i ) { push( @suspended, $rcpt ) } - else { push( @send_now, $rcpt ) } - } - - # Reset the relevant mail field. - $RT::Logger->debug( "Removing deferred recipients from $mailfield: line"); - if (@send_now) { - $self->SetHeader( $mailfield, join( ', ', @send_now ) ); - } else { # No recipients! Remove the header. - $self->TemplateObj->MIMEObj->head->delete($mailfield); - } - - # Push the deferred addresses into the appropriate field in - # our attribute hash, with the appropriate mail header. - $RT::Logger->debug( - "Setting deferred recipients for attribute creation"); - $digest_hash->{'daily'}->{$_} = {'header' => $mailfield , _sent => 0} for (@daily_digest); - $digest_hash->{'weekly'}->{$_} ={'header' => $mailfield, _sent => 0} for (@weekly_digest); - $digest_hash->{'susp'}->{$_} = {'header' => $mailfield, _sent =>0 } for (@suspended); - } +} - if ( scalar keys %$digest_hash ) { +# {{{ sub SetReferences - # Save the hash so that we can add it as an attribute to the - # outgoing email transaction. - $self->{'Deferred'} = $digest_hash; - } else { - $RT::Logger->debug( "No recipients found for deferred delivery on " - . "transaction #" - . $self->TransactionObj->id ); - } -} +=head2 SetReferences + + # This routine will set the References: and In-Reply-To headers, +# autopopulating it with all the correspondence on this ticket so +# far. This should make RT responses threadable. +=cut - -sub RecordDeferredRecipients { +sub SetReferences { my $self = shift; - return unless exists $self->{'Deferred'}; - my $txn_id = $self->{'OutgoingMailTransaction'}; - return unless $txn_id; + # TODO: this one is broken. What is this email really a reply to? + # If it's a reply to an incoming message, we'll need to use the + # actual message-id from the appropriate Attachment object. For + # incoming mails, we would like to preserve the In-Reply-To and/or + # References. - my $txn_obj = RT::Transaction->new( $self->CurrentUser ); - $txn_obj->Load( $txn_id ); - my( $ret, $msg ) = $txn_obj->AddAttribute( - Name => 'DeferredRecipients', - Content => $self->{'Deferred'} - ); - $RT::Logger->warning( "Unable to add deferred recipients to outgoing transaction: $msg" ) - unless $ret; + $self->SetHeader( 'In-Reply-To', + "<rt-" . $self->TicketObj->id() . "\@" . $RT::rtname . ">" ); - return ($ret,$msg); + # TODO We should always add References headers for all message-ids + # of previous messages related to this ticket. } -=head2 SquelchMailTo [@ADDRESSES] - -Mark ADDRESSES to be removed from list of the recipients. Returns list of the addresses. -To empty list pass undefined argument. - -B<Note> that this method can be called as class method and works globaly. Don't forget to -clean this list when blocking is not required anymore, pass undef to do this. - -=cut +# }}} -{ - my $squelch = []; +# {{{ sub SetMessageID - sub SquelchMailTo { - my $self = shift; - if (@_) { - $squelch = [ grep defined, @_ ]; - } - return @$squelch; - } -} +=head2 SetMessageID -=head2 RemoveInappropriateRecipients - -Remove addresses that are RT addresses or that are on this transaction's blacklist +Without this one, threading won't work very nice in email agents. +Anyway, I'm not really sure it's that healthy if we need to send +several separate/different emails about the same transaction. =cut -sub RemoveInappropriateRecipients { +sub SetMessageID { my $self = shift; - my @blacklist = (); - - # If there are no recipients, don't try to send the message. - # If the transaction has content and has the header RT-Squelch-Replies-To - - my $msgid = $self->TemplateObj->MIMEObj->head->get('Message-Id'); - if ( my $attachment = $self->TransactionObj->Attachments->First ) { - - if ( $attachment->GetHeader('RT-DetectedAutoGenerated') ) { - - # What do we want to do with this? It's probably (?) a bounce - # caused by one of the watcher addresses being broken. - # Default ("true") is to redistribute, for historical reasons. - - if ( !RT->Config->Get('RedistributeAutoGeneratedMessages') ) { - - # Don't send to any watchers. - @{ $self->{$_} } = () for (@EMAIL_RECIPIENT_HEADERS); - $RT::Logger->info( $msgid - . " The incoming message was autogenerated. " - . "Not redistributing this message based on site configuration." - ); - } elsif ( RT->Config->Get('RedistributeAutoGeneratedMessages') eq - 'privileged' ) - { - - # Only send to "privileged" watchers. - foreach my $type (@EMAIL_RECIPIENT_HEADERS) { - foreach my $addr ( @{ $self->{$type} } ) { - my $user = RT::User->new($RT::SystemUser); - $user->LoadByEmail($addr); - push @blacklist, $addr if ( !$user->Privileged ); - } - } - $RT::Logger->info( $msgid - . " The incoming message was autogenerated. " - . "Not redistributing this message to unprivileged users based on site configuration." - ); - } - } - - if ( my $squelch = $attachment->GetHeader('RT-Squelch-Replies-To') ) { - push @blacklist, split( /,/, $squelch ); - } - } - -# Let's grab the SquelchMailTo attribue and push those entries into the @blacklist - push @blacklist, map $_->Content, $self->TicketObj->SquelchMailTo; - push @blacklist, $self->SquelchMailTo; - - # Cycle through the people we're sending to and pull out anyone on the - # system blacklist + # TODO this one might be sort of broken. If we have several scrips +++ + # sending several emails to several different persons, we need to + # pull out different message-ids. I'd suggest message ids like + # "rt-ticket#-transaction#-scrip#-receipient#" + + $self->SetHeader( 'Message-ID', + "<rt-" + . $RT::VERSION ."-" + . $self->TicketObj->id() . "-" + . $self->TransactionObj->id() . "." + . rand(20) . "\@" + . $RT::Organization . ">" ) + unless $self->TemplateObj->MIMEObj->head->get('Message-ID'); +} - # Trim leading and trailing spaces. - @blacklist = map { RT::User->CanonicalizeEmailAddress( $_->address ) } Email::Address->parse(join(', ', grep {defined} @blacklist)); +# }}} - foreach my $type (@EMAIL_RECIPIENT_HEADERS) { - my @addrs; - foreach my $addr ( @{ $self->{$type} } ) { +# }}} - # Weed out any RT addresses. We really don't want to talk to ourselves! - # If we get a reply back, that means it's not an RT address - if ( !RT::EmailParser->CullRTAddresses($addr) ) { - $RT::Logger->info( $msgid . "$addr appears to point to this RT instance. Skipping" ); - next; - } - if ( grep /^\Q$addr\E$/, @blacklist ) { - $RT::Logger->info( $msgid . "$addr was blacklisted for outbound mail on this transaction. Skipping"); - next; - } - push @addrs, $addr; - } - @{ $self->{$type} } = @addrs; - } -} +# {{{ sub SetReturnAddress =head2 SetReturnAddress is_comment => BOOLEAN @@ -843,11 +409,8 @@ Calculate and set From and Reply-To headers based on the is_comment flag. sub SetReturnAddress { my $self = shift; - my %args = ( - is_comment => 0, - friendly_name => undef, - @_ - ); + my %args = ( is_comment => 0, + @_ ); # From and Reply-To # $args{is_comment} should be set if the comment address is to be used. @@ -855,37 +418,29 @@ sub SetReturnAddress { if ( $args{'is_comment'} ) { $replyto = $self->TicketObj->QueueObj->CommentAddress - || RT->Config->Get('CommentAddress'); - } else { + || $RT::CommentAddress; + } + else { $replyto = $self->TicketObj->QueueObj->CorrespondAddress - || RT->Config->Get('CorrespondAddress'); + || $RT::CorrespondAddress; } unless ( $self->TemplateObj->MIMEObj->head->get('From') ) { - if ( RT->Config->Get('UseFriendlyFromLine') ) { - my $friendly_name = $args{friendly_name}; - - unless ( $friendly_name ) { - $friendly_name = $self->TransactionObj->CreatorObj->FriendlyName; - if ( $friendly_name =~ /^"(.*)"$/ ) { # a quoted string - $friendly_name = $1; - } - } - - $friendly_name =~ s/"/\\"/g; - $self->SetHeader( - 'From', - sprintf( - RT->Config->Get('FriendlyFromLineFormat'), - $self->MIMEEncodeString( - $friendly_name, RT->Config->Get('EmailOutputEncoding') - ), - $replyto - ), - ); - } else { - $self->SetHeader( 'From', $replyto ); - } + if ($RT::UseFriendlyFromLine) { + my $friendly_name = $self->TransactionObj->CreatorObj->RealName; + if ( $friendly_name =~ /^"(.*)"$/ ) { # a quoted string + $friendly_name = $1; + } + + $friendly_name =~ s/"/\\"/g; + $self->SetHeader( 'From', + sprintf($RT::FriendlyFromLineFormat, + $self->MIMEEncodeString( $friendly_name, $RT::EmailOutputEncoding ), $replyto), + ); + } + else { + $self->SetHeader( 'From', $replyto ); + } } unless ( $self->TemplateObj->MIMEObj->head->get('Reply-To') ) { @@ -894,6 +449,10 @@ sub SetReturnAddress { } +# }}} + +# {{{ sub SetHeader + =head2 SetHeader FIELD, VALUE Set the FIELD of the current MIME object into VALUE. @@ -907,151 +466,163 @@ sub SetHeader { chomp $val; chomp $field; - my $head = $self->TemplateObj->MIMEObj->head; - $head->fold_length( $field, 10000 ); - $head->replace( $field, $val ); - return $head->get($field); + $self->TemplateObj->MIMEObj->head->fold_length( $field, 10000 ); + $self->TemplateObj->MIMEObj->head->replace( $field, $val ); + return $self->TemplateObj->MIMEObj->head->get($field); } -=head2 SetSubject +# }}} -This routine sets the subject. it does not add the rt tag. That gets done elsewhere -If subject is already defined via template, it uses that. otherwise, it tries to get -the transaction's subject. +# {{{ sub SetRecipients -=cut +=head2 SetRecipients -sub SetSubject { +Dummy method to be overriden by subclasses which want to set the recipients. + +=cut + +sub SetRecipients { my $self = shift; - my $subject; + return (); +} - if ( $self->TemplateObj->MIMEObj->head->get('Subject') ) { - return (); - } +# }}} - my $message = $self->TransactionObj->Attachments; - $message->RowsPerPage(1); - if ( $self->{'Subject'} ) { - $subject = $self->{'Subject'}; - } elsif ( my $first = $message->First ) { - my $tmp = $first->GetHeader('Subject'); - $subject = defined $tmp ? $tmp : $self->TicketObj->Subject; - } else { - $subject = $self->TicketObj->Subject; - } - $subject = '' unless defined $subject; - chomp $subject; +# {{{ sub SetTo - $subject =~ s/(\r\n|\n|\s)/ /g; +=head2 SetTo - $self->SetHeader( 'Subject', $subject ); +Takes a string that is the addresses you want to send mail to +=cut + +sub SetTo { + my $self = shift; + my $addresses = shift; + return $self->SetHeader( 'To', $addresses ); } -=head2 SetSubjectToken +# }}} -This routine fixes the RT tag in the subject. It's unlikely that you want to overwrite this. +# {{{ sub SetCc + +=head2 SetCc + +Takes a string that is the addresses you want to Cc =cut -sub SetSubjectToken { - my $self = shift; +sub SetCc { + my $self = shift; + my $addresses = shift; - my $head = $self->TemplateObj->MIMEObj->head; - $head->replace( - Subject => RT::Interface::Email::AddSubjectTag( - Encode::decode_utf8( $head->get('Subject') ), - $self->TicketObj, - ), - ); + return $self->SetHeader( 'Cc', $addresses ); } -=head2 SetReferencesHeaders +# }}} + +# {{{ sub SetBcc -Set References and In-Reply-To headers for this message. +=head2 SetBcc + +Takes a string that is the addresses you want to Bcc =cut -sub SetReferencesHeaders { +sub SetBcc { + my $self = shift; + my $addresses = shift; + + return $self->SetHeader( 'Bcc', $addresses ); +} + +# }}} + +# {{{ sub SetPrecedence + +sub SetPrecedence { my $self = shift; - my ( @in_reply_to, @references, @msgid ); - - if ( my $top = $self->TransactionObj->Message->First ) { - @in_reply_to = split( /\s+/m, $top->GetHeader('In-Reply-To') || '' ); - @references = split( /\s+/m, $top->GetHeader('References') || '' ); - @msgid = split( /\s+/m, $top->GetHeader('Message-ID') || '' ); - } else { - return (undef); + + unless ( $self->TemplateObj->MIMEObj->head->get("Precedence") ) { + $self->SetHeader( 'Precedence', "bulk" ); } +} - # There are two main cases -- this transaction was created with - # the RT Web UI, and hence we want to *not* append its Message-ID - # to the References and In-Reply-To. OR it came from an outside - # source, and we should treat it as per the RFC - my $org = RT->Config->Get('Organization'); - if ( "@msgid" =~ /<(rt-.*?-\d+-\d+)\.(\d+)-0-0\@\Q$org\E>/ ) { - - # Make all references which are internal be to version which we - # have sent out - - for ( @references, @in_reply_to ) { - s/<(rt-.*?-\d+-\d+)\.(\d+-0-0)\@\Q$org\E>$/ - "<$1." . $self->TicketObj->id . - "-" . $self->ScripObj->id . - "-" . $self->ScripActionObj->{_Message_ID} . - "@" . $org . ">"/eg - } +# }}} - # In reply to whatever the internal message was in reply to - $self->SetHeader( 'In-Reply-To', join( " ", (@in_reply_to) ) ); +# {{{ sub SetSubject + +=head2 SetSubject - # Default the references to whatever we're in reply to - @references = @in_reply_to unless @references; +This routine sets the subject. it does not add the rt tag. that gets done elsewhere +If $self->{'Subject'} is already defined, it uses that. otherwise, it tries to get +the transaction's subject. - # References are unchanged from internal - } else { +=cut - # In reply to that message - $self->SetHeader( 'In-Reply-To', join( " ", (@msgid) ) ); +sub SetSubject { + my $self = shift; + my $subject; - # Default the references to whatever we're in reply to - @references = @in_reply_to unless @references; + unless ( $self->TemplateObj->MIMEObj->head->get('Subject') ) { + my $message = $self->TransactionObj->Attachments; + my $ticket = $self->TicketObj->Id; - # Push that message onto the end of the references - push @references, @msgid; - } + if ( $self->{'Subject'} ) { + $subject = $self->{'Subject'}; + } + elsif ( ( $message->First() ) + && ( $message->First->Headers ) ) { + my $header = $message->First->Headers(); + $header =~ s/\n\s+/ /g; + if ( $header =~ /^Subject: (.*?)$/m ) { + $subject = $1; + } + else { + $subject = $self->TicketObj->Subject(); + } - # Push pseudo-ref to the front - my $pseudo_ref = $self->PseudoReference; - @references = ( $pseudo_ref, grep { $_ ne $pseudo_ref } @references ); + } + else { + $subject = $self->TicketObj->Subject(); + } - # If there are more than 10 references headers, remove all but the - # first four and the last six (Gotta keep this from growing - # forever) - splice( @references, 4, -6 ) if ( $#references >= 10 ); + $subject =~ s/(\r\n|\n|\s)/ /gi; - # Add on the references - $self->SetHeader( 'References', join( " ", @references ) ); - $self->TemplateObj->MIMEObj->head->fold_length( 'References', 80 ); + chomp $subject; + $self->SetHeader( 'Subject', $subject ); + } + return ($subject); } -=head2 PseudoReference +# }}} -Returns a fake Message-ID: header for the ticket to allow a base level of threading +# {{{ sub SetSubjectToken -=cut +=head2 SetSubjectToken + +This routine fixes the RT tag in the subject. It's unlikely that you want to overwrite this. -sub PseudoReference { +=cut +sub SetSubjectToken { my $self = shift; - my $pseudo_ref - = '<RT-Ticket-' - . $self->TicketObj->id . '@' - . RT->Config->Get('Organization') . '>'; - return $pseudo_ref; + my $tag = "[$RT::rtname #" . $self->TicketObj->id . "]"; + my $sub = $self->TemplateObj->MIMEObj->head->get('Subject'); + unless ( $sub =~ /\Q$tag\E/ ) { + $sub =~ s/(\r\n|\n|\s)/ /gi; + chomp $sub; + $self->TemplateObj->MIMEObj->head->replace( 'Subject', "$tag $sub" ); + } } +# }}} + +# }}} + +# {{{ + =head2 SetHeaderAsEncoding($field_name, $charset_encoding) This routine converts the field into specified charset encoding. @@ -1062,37 +633,53 @@ sub SetHeaderAsEncoding { my $self = shift; my ( $field, $enc ) = ( shift, shift ); - my $head = $self->TemplateObj->MIMEObj->head; - - if ( lc($field) eq 'from' and RT->Config->Get('SMTPFrom') ) { - $head->replace( $field, RT->Config->Get('SMTPFrom') ); - return; + if ($field eq 'From' and $RT::SMTPFrom) { + $self->TemplateObj->MIMEObj->head->replace( $field, $RT::SMTPFrom ); + return; } - my $value = $head->get( $field ); - $value = $self->MIMEEncodeString( $value, $enc ); - $head->replace( $field, $value ); + my $value = $self->TemplateObj->MIMEObj->head->get($field); -} + # don't bother if it's us-ascii + + # See RT::I18N, 'NOTES: Why Encode::_utf8_off before Encode::from_to' -=head2 MIMEEncodeString + $value = $self->MIMEEncodeString($value, $enc); -Takes a perl string and optional encoding pass it over -L<RT::Interface::Email/EncodeToMIME>. + $self->TemplateObj->MIMEObj->head->replace( $field, $value ); -Basicly encode a string using B encoding according to RFC2047. + +} +# }}} + +# {{{ MIMENcodeString + +=head2 MIMEEncodeString STRING ENCODING + +Takes a string and a possible encoding and returns the string wrapped in MIME goo. =cut sub MIMEEncodeString { - my $self = shift; - return RT::Interface::Email::EncodeToMIME( String => $_[0], Charset => $_[1] ); + my $self = shift; + my $value = shift; + my $enc = shift; + + chomp $value; + return ($value) unless $value =~ /[^\x20-\x7e]/; + + $value =~ s/\s*$//; + Encode::_utf8_off($value); + my $res = Encode::from_to( $value, "utf-8", $enc ); + $value = encode_mimeword( $value, 'B', $enc ); } +# }}} + eval "require RT::Action::SendEmail_Vendor"; -die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/SendEmail_Vendor.pm} ); +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/SendEmail_Vendor.pm}); eval "require RT::Action::SendEmail_Local"; -die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Action/SendEmail_Local.pm} ); +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/SendEmail_Local.pm}); 1; diff --git a/rt/lib/RT/Attachment.pm b/rt/lib/RT/Attachment.pm index 4327238e6..2ed520162 100755 --- a/rt/lib/RT/Attachment.pm +++ b/rt/lib/RT/Attachment.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -86,7 +61,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -135,7 +110,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -144,14 +119,14 @@ Returns the current value of id. =cut -=head2 TransactionId +=item TransactionId Returns the current value of TransactionId. (In the database, TransactionId is stored as int(11).) -=head2 SetTransactionId VALUE +=item SetTransactionId VALUE Set TransactionId to VALUE. @@ -162,14 +137,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Parent +=item Parent Returns the current value of Parent. (In the database, Parent is stored as int(11).) -=head2 SetParent VALUE +=item SetParent VALUE Set Parent to VALUE. @@ -180,14 +155,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 MessageId +=item MessageId Returns the current value of MessageId. (In the database, MessageId is stored as varchar(160).) -=head2 SetMessageId VALUE +=item SetMessageId VALUE Set MessageId to VALUE. @@ -198,14 +173,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Subject +=item Subject Returns the current value of Subject. (In the database, Subject is stored as varchar(255).) -=head2 SetSubject VALUE +=item SetSubject VALUE Set Subject to VALUE. @@ -216,14 +191,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Filename +=item Filename Returns the current value of Filename. (In the database, Filename is stored as varchar(255).) -=head2 SetFilename VALUE +=item SetFilename VALUE Set Filename to VALUE. @@ -234,14 +209,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ContentType +=item ContentType Returns the current value of ContentType. (In the database, ContentType is stored as varchar(80).) -=head2 SetContentType VALUE +=item SetContentType VALUE Set ContentType to VALUE. @@ -252,14 +227,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ContentEncoding +=item ContentEncoding Returns the current value of ContentEncoding. (In the database, ContentEncoding is stored as varchar(80).) -=head2 SetContentEncoding VALUE +=item SetContentEncoding VALUE Set ContentEncoding to VALUE. @@ -270,14 +245,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Content +=item Content Returns the current value of Content. (In the database, Content is stored as longtext.) -=head2 SetContent VALUE +=item SetContent VALUE Set Content to VALUE. @@ -288,14 +263,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Headers +=item Headers Returns the current value of Headers. (In the database, Headers is stored as longtext.) -=head2 SetHeaders VALUE +=item SetHeaders VALUE Set Headers to VALUE. @@ -306,7 +281,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Creator +=item Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) @@ -315,7 +290,7 @@ Returns the current value of Creator. =cut -=head2 Created +=item Created Returns the current value of Created. (In the database, Created is stored as datetime.) @@ -325,33 +300,33 @@ Returns the current value of Created. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, TransactionId => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Parent => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, MessageId => - {read => 1, write => 1, sql_type => 12, length => 160, is_blob => 0, is_numeric => 0, type => 'varchar(160)', default => ''}, + {read => 1, write => 1, type => 'varchar(160)', default => ''}, Subject => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, Filename => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, ContentType => - {read => 1, write => 1, sql_type => 12, length => 80, is_blob => 0, is_numeric => 0, type => 'varchar(80)', default => ''}, + {read => 1, write => 1, type => 'varchar(80)', default => ''}, ContentEncoding => - {read => 1, write => 1, sql_type => 12, length => 80, is_blob => 0, is_numeric => 0, type => 'varchar(80)', default => ''}, + {read => 1, write => 1, type => 'varchar(80)', default => ''}, Content => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'longtext', default => ''}, + {read => 1, write => 1, type => 'longtext', default => ''}, Headers => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'longtext', default => ''}, + {read => 1, write => 1, type => 'longtext', default => ''}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, } }; @@ -383,7 +358,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Attachments.pm b/rt/lib/RT/Attachments.pm index 416cde6ba..177cdd094 100755 --- a/rt/lib/RT/Attachments.pm +++ b/rt/lib/RT/Attachments.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::Attachment item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Condition/AnyTransaction.pm b/rt/lib/RT/Condition/AnyTransaction.pm index 1b90aa53e..4519fcf5a 100644 --- a/rt/lib/RT/Condition/AnyTransaction.pm +++ b/rt/lib/RT/Condition/AnyTransaction.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,36 +14,21 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. # -# END BPS TAGGED BLOCK }}} +# END LICENSE BLOCK + package RT::Condition::AnyTransaction; -use base 'RT::Condition'; +require RT::Condition::Generic; use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Condition::Generic); =head2 IsApplicable diff --git a/rt/lib/RT/Condition/Generic.pm b/rt/lib/RT/Condition/Generic.pm index 08baeda25..bd269315e 100755 --- a/rt/lib/RT/Condition/Generic.pm +++ b/rt/lib/RT/Condition/Generic.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,61 +14,198 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK =head1 NAME - RT::Condition::Generic - deprecated, see RT::Condition + RT::Condition::Generic - ; =head1 SYNOPSIS - use RT::Condition::Generic; + use RT::Condition::Generic; + my $foo = new RT::Condition::IsApplicable( + TransactionObj => $tr, + TicketObj => $ti, + ScripObj => $scr, + Argument => $arg, + Type => $type); + + if ($foo->IsApplicable) { + # do something + } + =head1 DESCRIPTION -This module is provided only for backwards compatibility. =head1 METHODS +=begin testing + +ok (require RT::Condition::Generic); + +=end testing + + =cut -use strict; -use warnings; package RT::Condition::Generic; -use base 'RT::Condition'; + +use RT::Base; +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Base); + +# {{{ sub new +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless ($self, $class); + $self->_Init(@_); + return $self; +} +# }}} + +# {{{ sub _Init +sub _Init { + my $self = shift; + my %args = ( TransactionObj => undef, + TicketObj => undef, + ScripObj => undef, + TemplateObj => undef, + Argument => undef, + ApplicableTransTypes => undef, + @_ ); + + $self->{'Argument'} = $args{'Argument'}; + $self->{'ScripObj'} = $args{'ScripObj'}; + $self->{'TicketObj'} = $args{'TicketObj'}; + $self->{'TransactionObj'} = $args{'TransactionObj'}; + $self->{'ApplicableTransTypes'} = $args{'ApplicableTransTypes'}; +} +# }}} + +# Access Scripwide data + +# {{{ sub Argument + +=head2 Argument + +Return the optional argument associated with this ScripCondition + +=cut + +sub Argument { + my $self = shift; + return($self->{'Argument'}); +} +# }}} + +# {{{ sub TicketObj + +=head2 TicketObj + +Return the ticket object we're talking about + +=cut + +sub TicketObj { + my $self = shift; + return($self->{'TicketObj'}); +} +# }}} + +# {{{ sub ScripObj + +=head2 ScripObj + +Return the Scrip object we're talking about + +=cut + +sub ScripObj { + my $self = shift; + return($self->{'ScripObj'}); +} +# }}} +# {{{ sub TransactionObj + +=head2 TransactionObj + +Return the transaction object we're talking about + +=cut + +sub TransactionObj { + my $self = shift; + return($self->{'TransactionObj'}); +} +# }}} + +# {{{ sub Type + +=head2 Type + + + +=cut + +sub ApplicableTransTypes { + my $self = shift; + return($self->{'ApplicableTransTypes'}); +} +# }}} + + +# Scrip methods + + +#What does this type of Action does + +# {{{ sub Describe +sub Describe { + my $self = shift; + return ($self->loc("No description for [_1]", ref $self)); +} +# }}} + + +#Parse the templates, get things ready to go. + +#If this rule applies to this transaction, return true. + +# {{{ sub IsApplicable +sub IsApplicable { + my $self = shift; + return(undef); +} +# }}} + +# {{{ sub DESTROY +sub DESTROY { + my $self = shift; + + # We need to clean up all the references that might maybe get + # oddly circular + $self->{'TemplateObj'} =undef + $self->{'TicketObj'} = undef; + $self->{'TransactionObj'} = undef; + $self->{'ScripObj'} = undef; + +} + +# }}} eval "require RT::Condition::Generic_Vendor"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Generic_Vendor.pm}); -warn "RT::Condition::Generic has become RT::Condition. Please adjust your RT::Condition::Generic_Vendor file at " . $INC{"RT/Condition/Generic_Vendor.pm"} if !$@; - eval "require RT::Condition::Generic_Local"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Generic_Local.pm}); -warn "RT::Condition::Generic has become RT::Condition. Please adjust your RT::Condition::Generic_Local file at " . $INC{"RT/Condition/Generic_Local.pm"} if !$@; 1; - diff --git a/rt/lib/RT/Condition/StatusChange.pm b/rt/lib/RT/Condition/StatusChange.pm index 285b71da6..8afabcda0 100644 --- a/rt/lib/RT/Condition/StatusChange.pm +++ b/rt/lib/RT/Condition/StatusChange.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,35 +14,22 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} +# END LICENSE BLOCK + + package RT::Condition::StatusChange; -use base 'RT::Condition'; +require RT::Condition::Generic; + use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Condition::Generic); =head2 IsApplicable diff --git a/rt/lib/RT/Config.pm b/rt/lib/RT/Config.pm index f8d121ced..4e66c3cff 100644 --- a/rt/lib/RT/Config.pm +++ b/rt/lib/RT/Config.pm @@ -173,7 +173,7 @@ our %META = ( WidgetArguments => { Description => 'Theme', #loc # XXX: we need support for 'get values callback' - Values => [qw(3.5-default 3.4-compat web2)], + Values => [qw(3.5-default 3.4-compat web2 freeside2.1)], }, }, MessageBoxRichText => { @@ -333,22 +333,6 @@ our %META = ( }, }, - RTAddressRegexp => { - Type => 'SCALAR', - PostLoadCheck => sub { - my $self = shift; - my $value = $self->Get('RTAddressRegexp'); - return if $value; - - $RT::Logger->error( - 'The RTAddressRegexp option is not set in the config.' - .' Not setting this option results in additional SQL queries to' - .' check whether each address belongs to RT or not.' - .' It is especially important to set this option if RT recieves' - .' emails on addresses that are not in the database or config.' - ); - }, - }, # User overridable mail options EmailFrequency => { Section => 'Mail', #loc @@ -365,16 +349,6 @@ our %META = ( ] } }, - NotifyActor => { - Section => 'Mail', #loc - Overridable => 1, - SortOrder => 2, - Widget => '/Widgets/Form/Boolean', - WidgetArguments => { - Description => 'Outgoing mail', #loc - Hints => 'Should RT send you mail for ticket updates you make?', #loc - } - }, # this tends to break extensions that stash links in ticket update pages Organization => { @@ -847,7 +821,7 @@ sub SetFromConfig { # XXX skip references to scalars or other references. # Otherwie 5.10 goes boom. may be we should skip any # reference - return if ref($entry) eq 'SCALAR' || ref($entry) eq 'REF'; + next if ref($entry) eq 'SCALAR' || ref($entry) eq 'REF'; my $entry_ref = *{$entry}{ ref($ref) }; next unless $entry_ref; diff --git a/rt/lib/RT/CurrentUser.pm b/rt/lib/RT/CurrentUser.pm index b674d4e60..4ca2f9891 100755 --- a/rt/lib/RT/CurrentUser.pm +++ b/rt/lib/RT/CurrentUser.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,165 +14,182 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK =head1 NAME RT::CurrentUser - an RT object representing the current user =head1 SYNOPSIS - use RT::CurrentUser; - - # laod - my $current_user = new RT::CurrentUser; - $current_user->Load(...); - # or - my $current_user = RT::CurrentUser->new( $user_obj ); - # or - my $current_user = RT::CurrentUser->new( $address || $name || $id ); - - # manipulation - $current_user->UserObj->SetName('new_name'); + use RT::CurrentUser =head1 DESCRIPTION -B<Read-only> subclass of L<RT::User> class. Used to define the current -user. You should pass an instance of this class to constructors of -many RT classes, then the instance used to check ACLs and localize -strings. =head1 METHODS -See also L<RT::User> for a list of methods this class has. -=head2 new +=begin testing + +ok (require RT::CurrentUser); -Returns new CurrentUser object. Unlike all other classes of RT it takes -either subclass of C<RT::User> class object or scalar value that is -passed to Load method. +=end testing =cut package RT::CurrentUser; +use RT::Record; use RT::I18N; use strict; -use warnings; +use vars qw/@ISA/; +@ISA= qw(RT::Record); -use base qw/RT::User/; +# {{{ sub _Init #The basic idea here is that $self->CurrentUser is always supposed # to be a CurrentUser object. but that's hard to do when we're trying to load # the CurrentUser object -sub _Init { - my $self = shift; - my $User = shift; - - $self->{'table'} = "Users"; - - if ( defined $User ) { - - if ( UNIVERSAL::isa( $User, 'RT::User' ) ) { - $self->LoadById( $User->id ); - } - elsif ( ref $User ) { - $RT::Logger->crit( - "RT::CurrentUser->new() called with a bogus argument: $User"); - } - else { - $self->Load( $User ); - } - } +sub _Init { + my $self = shift; + my $Name = shift; - $self->_BuildTableAttributes; + $self->{'table'} = "Users"; -} + if (defined($Name)) { + $self->Load($Name); + } + + $self->CurrentUser($self); -=head2 Create, Delete and Set* +} +# }}} -As stated above it's a subclass of L<RT::User>, but this class is read-only -and calls to these methods are illegal. Return 'permission denied' message -and log an error. - -=cut +# {{{ sub Create sub Create { my $self = shift; - $RT::Logger->error('RT::CurrentUser is read-only, RT::User for manipulation'); return (0, $self->loc('Permission Denied')); } +# }}} + +# {{{ sub Delete + sub Delete { my $self = shift; - $RT::Logger->error('RT::CurrentUser is read-only, RT::User for manipulation'); return (0, $self->loc('Permission Denied')); } -sub _Set { - my $self = shift; - $RT::Logger->error('RT::CurrentUser is read-only, RT::User for manipulation'); - return (0, $self->loc('Permission Denied')); -} +# }}} + +# {{{ sub UserObj =head2 UserObj -Returns the L<RT::User> object associated with this CurrentUser object. + Returns the RT::User object associated with this CurrentUser object. =cut sub UserObj { my $self = shift; - - my $user = RT::User->new( $self ); - unless ( $user->LoadById( $self->Id ) ) { - $RT::Logger->error( - $self->loc("Couldn't load [_1] from the users database.\n", $self->Id) - ); + + unless ($self->{'UserObj'}) { + use RT::User; + $self->{'UserObj'} = RT::User->new($self); + unless ($self->{'UserObj'}->Load($self->Id)) { + $RT::Logger->err($self->loc("Couldn't load [_1] from the users database.\n", $self->Id)); + } + } - return $user; + return ($self->{'UserObj'}); } +# }}} -sub _CoreAccessible { - { - Name => { 'read' => 1 }, - Gecos => { 'read' => 1 }, - RealName => { 'read' => 1 }, - Lang => { 'read' => 1 }, - Password => { 'read' => 0, 'write' => 0 }, - EmailAddress => { 'read' => 1, 'write' => 0 } - }; - +# {{{ sub PrincipalObj + +=head2 PrincipalObj + + Returns this user's principal object. this is just a helper routine for + $self->UserObj->PrincipalObj + +=cut + +sub PrincipalObj { + my $self = shift; + return($self->UserObj->PrincipalObj); } + +# }}} + + +# {{{ sub PrincipalId + +=head2 PrincipalId + + Returns this user's principal Id. this is just a helper routine for + $self->UserObj->PrincipalId + +=cut + +sub PrincipalId { + my $self = shift; + return($self->UserObj->PrincipalId); +} + + +# }}} + + +# {{{ sub _Accessible +sub _Accessible { + my $self = shift; + my %Cols = ( + Name => 'read', + Gecos => 'read', + RealName => 'read', + Password => 'neither', + EmailAddress => 'read', + Privileged => 'read', + IsAdministrator => 'read' + ); + return($self->SUPER::_Accessible(@_, %Cols)); +} +# }}} + +# {{{ sub LoadByEmail + +=head2 LoadByEmail + +Loads a User into this CurrentUser object. +Takes the email address of the user to load. + +=cut + +sub LoadByEmail { + my $self = shift; + my $identifier = shift; + + $identifier = RT::User::CanonicalizeEmailAddress(undef, $identifier); + + $self->LoadByCol("EmailAddress",$identifier); + +} +# }}} + +# {{{ sub LoadByGecos + =head2 LoadByGecos Loads a User into this CurrentUser object. @@ -188,128 +199,171 @@ Takes a unix username as its only argument. sub LoadByGecos { my $self = shift; - return $self->LoadByCol( "Gecos", shift ); + my $identifier = shift; + + $self->LoadByCol("Gecos",$identifier); + } +# }}} + +# {{{ sub LoadByName =head2 LoadByName Loads a User into this CurrentUser object. Takes a Name. - =cut sub LoadByName { my $self = shift; - return $self->LoadByCol( "Name", shift ); + my $identifier = shift; + $self->LoadByCol("Name",$identifier); + } +# }}} -=head2 LanguageHandle - -Returns this current user's langauge handle. Should take a language -specification. but currently doesn't +# {{{ sub Load -=cut +=head2 Load -sub LanguageHandle { - my $self = shift; - if ( !defined $self->{'LangHandle'} - || !UNIVERSAL::can( $self->{'LangHandle'}, 'maketext' ) - || @_ ) - { - if ( my $lang = $self->Lang ) { - push @_, $lang; - } - elsif ( $self->id && ($self->id == ($RT::SystemUser->id||0) || $self->id == ($RT::Nobody->id||0)) ) { - # don't use ENV magic for system users - push @_, 'en'; - } +Loads a User into this CurrentUser object. +Takes either an integer (users id column reference) or a Name +The latter is deprecated. Instead, you should use LoadByName. +Formerly, this routine also took email addresses. - $self->{'LangHandle'} = RT::I18N->get_handle(@_); - } +=cut - # Fall back to english. - unless ( $self->{'LangHandle'} ) { - die "We couldn't get a dictionary. Ne mogu naidti slovar. No puedo encontrar dictionario."; - } - return $self->{'LangHandle'}; +sub Load { + my $self = shift; + my $identifier = shift; + + #if it's an int, load by id. otherwise, load by name. + if ($identifier !~ /\D/) { + $self->SUPER::LoadById($identifier); + } + else { + # This is a bit dangerous, we might get false authen if somebody + # uses ambigous userids or real names: + $self->LoadByCol("Name",$identifier); + } } -sub loc { - my $self = shift; - return '' if !defined $_[0] || $_[0] eq ''; +# }}} - my $handle = $self->LanguageHandle; +# {{{ sub IsPassword - if (@_ == 1) { - # pre-scan the lexicon hashes to return _AUTO keys verbatim, - # to keep locstrings containing '[' and '~' from tripping over Maketext - return $_[0] unless grep exists $_->{$_[0]}, @{ $handle->_lex_refs }; - } +=head2 IsPassword - return $handle->maketext(@_); -} +Takes a password as a string. Passes it off to IsPassword in this +user's UserObj. If it is the user's password and the user isn't +disabled, returns 1. -sub loc_fuzzy { - my $self = shift; - return '' if !defined $_[0] || $_[0] eq ''; +Otherwise, returns undef. - # XXX: work around perl's deficiency when matching utf8 data - return $_[0] if Encode::is_utf8($_[0]); +=cut - return $self->LanguageHandle->maketext_fuzzy( @_ ); +sub IsPassword { + my $self = shift; + my $value = shift; + + return ($self->UserObj->IsPassword($value)); } -=head2 CurrentUser +# }}} -Return the current currentuser object +# {{{ sub Privileged + +=head2 Privileged + +Returns true if the current user can be granted rights and be +a member of groups. =cut -sub CurrentUser { +sub Privileged { my $self = shift; - return($self); - + return ($self->UserObj->Privileged()); } -=head2 Authenticate +# }}} -Takes $password, $created and $nonce, and returns a boolean value -representing whether the authentication succeeded. -If both $nonce and $created are specified, validate $password against: +# {{{ sub HasRight - encode_base64(sha1( - $nonce . - $created . - sha1_hex( "$username:$realm:$server_pass" ) - )) +=head2 HasRight -where $server_pass is the md5_hex(password) digest stored in the -database, $created is in ISO time format, and $nonce is a random -string no longer than 32 bytes. +calls $self->UserObj->HasRight with the arguments passed in =cut -sub Authenticate { - my ($self, $password, $created, $nonce, $realm) = @_; +sub HasRight { + my $self = shift; + return ($self->UserObj->HasRight(@_)); +} + +# }}} + +# {{{ Localization + +=head2 LanguageHandle + +Returns this current user's langauge handle. Should take a language +specification. but currently doesn't - require Digest::MD5; - require Digest::SHA1; - require MIME::Base64; +=begin testing + +ok (my $cu = RT::CurrentUser->new('root')); +ok (my $lh = $cu->LanguageHandle); +ok ($lh != undef); +ok ($lh->isa('Locale::Maketext')); +ok ($cu->loc('TEST_STRING') eq "Concrete Mixer", "Localized TEST_STRING into English"); +ok ($lh = $cu->LanguageHandle('fr')); +ok ($cu->loc('Before') eq "Avant", "Localized TEST_STRING into Frenc"); + +=end testing + +=cut - my $username = $self->UserObj->Name or return; - my $server_pass = $self->UserObj->__Value('Password') or return; - my $auth_digest = MIME::Base64::encode_base64(Digest::SHA1::sha1( - $nonce . - $created . - Digest::MD5::md5_hex("$username:$realm:$server_pass") - )); +sub LanguageHandle { + my $self = shift; + if ((!defined $self->{'LangHandle'}) || + (!UNIVERSAL::can($self->{'LangHandle'}, 'maketext')) || + (@_)) { + $self->{'LangHandle'} = RT::I18N->get_handle(@_); + } + # Fall back to english. + unless ($self->{'LangHandle'}) { + die "We couldn't get a dictionary. Nye mogu naidti slovar. No puedo encontrar dictionario."; + } + return ($self->{'LangHandle'}); +} - chomp($password); - chomp($auth_digest); +sub loc { + my $self = shift; + return '' if $_[0] eq ''; + + my $handle = $self->LanguageHandle; + + if (@_ == 1) { + # pre-scan the lexicon hashes to return _AUTO keys verbatim, + # to keep locstrings containing '[' and '~' from tripping over Maketext + return $_[0] unless grep { exists $_->{$_[0]} } @{ $handle->_lex_refs }; + } + + return $handle->maketext(@_); +} + +sub loc_fuzzy { + my $self = shift; + return '' if $_[0] eq ''; + + # XXX: work around perl's deficiency when matching utf8 data + return $_[0] if Encode::is_utf8($_[0]); + my $result = $self->LanguageHandle->maketext_fuzzy(@_); - return ($password eq $auth_digest); + return($result); } +# }}} eval "require RT::CurrentUser_Vendor"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/CurrentUser_Vendor.pm}); @@ -317,3 +371,4 @@ eval "require RT::CurrentUser_Local"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/CurrentUser_Local.pm}); 1; + diff --git a/rt/lib/RT/Date.pm b/rt/lib/RT/Date.pm index fc4c43ce4..355370ada 100644 --- a/rt/lib/RT/Date.pm +++ b/rt/lib/RT/Date.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK =head1 NAME RT::Date - a simple Object Oriented date. @@ -60,6 +35,11 @@ RT Date is a simple Date Object designed to be speedy and easy for RT to use The fact that it assumes that a time of 0 means "never" is probably a bug. +=begin testing + +ok (require RT::Date); + +=end testing =head1 METHODS @@ -69,11 +49,12 @@ The fact that it assumes that a time of 0 means "never" is probably a bug. package RT::Date; use Time::Local; -use POSIX qw(tzset); + +use RT::Base; use strict; -use warnings; -use base qw/RT::Base/; +use vars qw/@ISA/; +@ISA = qw/RT::Base/; use vars qw($MINUTE $HOUR $DAY $WEEK $MONTH $YEAR); @@ -81,68 +62,30 @@ $MINUTE = 60; $HOUR = 60 * $MINUTE; $DAY = 24 * $HOUR; $WEEK = 7 * $DAY; -$MONTH = 30.4375 * $DAY; -$YEAR = 365.25 * $DAY; - -our @MONTHS = ( - 'Jan', # loc - 'Feb', # loc - 'Mar', # loc - 'Apr', # loc - 'May', # loc - 'Jun', # loc - 'Jul', # loc - 'Aug', # loc - 'Sep', # loc - 'Oct', # loc - 'Nov', # loc - 'Dec', # loc -); - -our @DAYS_OF_WEEK = ( - 'Sun', # loc - 'Mon', # loc - 'Tue', # loc - 'Wed', # loc - 'Thu', # loc - 'Fri', # loc - 'Sat', # loc -); - -our @FORMATTERS = ( - 'DefaultFormat', # loc - 'ISO', # loc - 'W3CDTF', # loc - 'RFC2822', # loc - 'RFC2616', # loc - 'iCal', # loc -); -if ( eval 'use DateTime qw(); 1;' && eval 'use DateTime::Locale qw(); 1;' && - DateTime->can('format_cldr') && DateTime::Locale::root->can('date_format_full') ) { - push @FORMATTERS, 'LocalizedDateTime'; # loc +$MONTH = 4 * $WEEK; +$YEAR = 365 * $DAY; + +# {{{ sub new + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless ($self, $class); + $self->CurrentUser(@_); + $self->Unix(0); + return $self; } -=head2 new - -Object constructor takes one argument C<RT::CurrentUser> object. - -=cut +# }}} -sub new { - my $proto = shift; - my $class = ref($proto) || $proto; - my $self = {}; - bless ($self, $class); - $self->CurrentUser(@_); - $self->Unix(0); - return $self; -} +# {{{ sub Set -=head2 Set +=head2 sub Set -Takes a param hash with the fields C<Format>, C<Value> and C<Timezone>. +takes a param hash with the fields 'Format' and 'Value' -If $args->{'Format'} is 'unix', takes the number of seconds since the epoch. +if $args->{'Format'} is 'unix', takes the number of seconds since the epoch If $args->{'Format'} is ISO, tries to parse an ISO date. @@ -151,218 +94,243 @@ things out. This is a heavyweight operation that should never be called from within RT's core. But it's really useful for something like the textbox date entry where we let the user do whatever they want. -If $args->{'Value'} is 0, assumes you mean never. +If $args->{'Value'} is 0, assumes you mean never. + +=begin testing + +use_ok(RT::Date); +my $date = RT::Date->new($RT::SystemUser); +$date->Set(Format => 'unix', Value => '0'); +ok ($date->ISO eq '1970-01-01 00:00:00', "Set a date to midnight 1/1/1970 GMT"); + +=end testing =cut sub Set { my $self = shift; - my %args = ( - Format => 'unix', - Value => time, - Timezone => 'user', - @_ - ); - - return $self->Unix(0) unless $args{'Value'}; + my %args = ( Format => 'unix', + Value => time, + @_ ); + if ( !$args{'Value'} + || ( ( $args{'Value'} =~ /^\d*$/ ) and ( $args{'Value'} == 0 ) ) ) { + $self->Unix(-1); + return ( $self->Unix() ); + } if ( $args{'Format'} =~ /^unix$/i ) { - return $self->Unix( $args{'Value'} ); + $self->Unix( $args{'Value'} ); } - elsif ( $args{'Format'} =~ /^(sql|datemanip|iso)$/i ) { - $args{'Value'} =~ s!/!-!g; - if ( ( $args{'Value'} =~ /^(\d{4})?(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/ ) - || ( $args{'Value'} =~ /^(\d{4})?(\d\d)(\d\d)(\d\d):(\d\d):(\d\d)$/ ) - || ( $args{'Value'} =~ /^(?:(\d{4})-)?(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)$/ ) - || ( $args{'Value'} =~ /^(?:(\d{4})-)?(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)\+00$/ ) + elsif ( $args{'Format'} =~ /^(sql|datemanip|iso)$/i ) { + $args{'Value'} =~ s!/!-!g; + + if (( $args{'Value'} =~ /^(\d{4}?)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/ ) + || ( $args{'Value'} =~ + /^(\d{4}?)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)$/ ) + || ( $args{'Value'} =~ + /^(\d{4}?)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)\+00$/ ) + || ($args{'Value'} =~ /^(\d{4}?)(\d\d)(\d\d)(\d\d):(\d\d):(\d\d)$/ ) ) { - my ($year, $mon, $mday, $hours, $min, $sec) = ($1, $2, $3, $4, $5, $6); - - # use current year if string has no value - $year ||= (localtime time)[5] + 1900; + my $year = $1; + my $mon = $2; + my $mday = $3; + my $hours = $4; + my $min = $5; + my $sec = $6; #timegm expects month as 0->11 $mon--; - #now that we've parsed it, deal with the case where everything was 0 - return $self->Unix(0) if $mon < 0 || $mon > 11; - - my $tz = lc $args{'Format'} eq 'datemanip'? 'user': 'utc'; - $self->Unix( $self->Timelocal( $tz, $sec, $min, $hours, $mday, $mon, $year ) ); - - $self->Unix(0) unless $self->Unix > 0; + #now that we've parsed it, deal with the case where everything + #was 0 + if ( $mon == -1 ) { + $self->Unix(-1); + } + else { + + #Dateamnip strings aren't in GMT. + if ( $args{'Format'} =~ /^datemanip$/i ) { + $self->Unix( + timelocal( $sec, $min, $hours, $mday, $mon, $year ) ); + } + + #ISO and SQL dates are in GMT + else { + $self->Unix( + timegm( $sec, $min, $hours, $mday, $mon, $year ) ); + } + + $self->Unix(-1) unless $self->Unix; + } } else { - $RT::Logger->warning( - "Couldn't parse date '$args{'Value'}' as a $args{'Format'} format" - ); - return $self->Unix(0); + use Carp; + Carp::cluck; + $RT::Logger->debug( + "Couldn't parse date $args{'Value'} as a $args{'Format'}"); + } } elsif ( $args{'Format'} =~ /^unknown$/i ) { require Time::ParseDate; - # the module supports only legacy timezones like PDT or EST... - # so we parse date as GMT and later apply offset, this only - # should be applied to absolute times, so compensate shift in NOW - my $now = time; - $now += ($self->Localtime( $args{Timezone}, $now ))[9]; - my $date = Time::ParseDate::parsedate( - $args{'Value'}, - GMT => 1, - NOW => $now, - UK => RT->Config->Get('DateDayBeforeMonth'), - PREFER_PAST => RT->Config->Get('AmbiguousDayInPast'), - PREFER_FUTURE => RT->Config->Get('AmbiguousDayInFuture'), - ); - # apply timezone offset - $date -= ($self->Localtime( $args{Timezone}, $date ))[9]; - - $RT::Logger->debug( - "RT::Date used Time::ParseDate to make '$args{'Value'}' $date\n" - ); - - return $self->Set( Format => 'unix', Value => $date); - } - else { - $RT::Logger->error( - "Unknown Date format: $args{'Format'}\n" - ); - return $self->Unix(0); - } - - return $self->Unix; -} - -=head2 SetToNow -Set the object's time to the current time. Takes no arguments -and returns unix time. + #Convert it to an ISO format string -=cut + my $date = Time::ParseDate::parsedate($args{'Value'}, + UK => $RT::DateDayBeforeMonth, + PREFER_PAST => $RT::AmbiguousDayInPast, + PREFER_FUTURE => !($RT::AmbiguousDayInPast)); -sub SetToNow { - return $_[0]->Unix(time); -} + #This date has now been set to a date in the _local_ timezone. + #since ISO dates are known to be in GMT (for RT's purposes); -=head2 SetToMidnight [Timezone => 'utc'] + $RT::Logger->debug( "RT::Date used date::parse to make " + . $args{'Value'} + . " $date\n" ); -Sets the date to midnight (at the beginning of the day). -Returns the unixtime at midnight. + return ( $self->Set( Format => 'unix', Value => "$date" ) ); + } + else { + die "Unknown Date format: " . $args{'Format'} . "\n"; + } -Arguments: + return ( $self->Unix() ); +} -=over 4 +# }}} -=item Timezone +# {{{ sub SetToMidnight -Timezone context C<user>, C<server> or C<UTC>. See also L</Timezone>. +=head2 SetToMidnight -=back +Sets the date to midnight (at the beginning of the day) GMT +Returns the unixtime at midnight. =cut sub SetToMidnight { my $self = shift; - my %args = ( Timezone => '', @_ ); - my $new = $self->Timelocal( - $args{'Timezone'}, - 0,0,0,($self->Localtime( $args{'Timezone'} ))[3..9] - ); - return $self->Unix( $new ); + + use Time::Local; + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime($self->Unix); + $self->Unix(timegm (0,0,0,$mday,$mon,$year,$wday,$yday)); + + return ($self->Unix); + + } + +# }}} + +# {{{ sub SetToNow +sub SetToNow { + my $self = shift; + return($self->Set(Format => 'unix', Value => time)) +} +# }}} + +# {{{ sub Diff + =head2 Diff -Takes either an C<RT::Date> object or the date in unixtime format as a string, -if nothing is specified uses the current time. +Takes either an RT::Date object or the date in unixtime format as a string -Returns the differnce between the time in the current object and that time -as a number of seconds. Returns C<undef> if any of two compared values is -incorrect or not set. +Returns the differnce between $self and that time as a number of seconds =cut sub Diff { my $self = shift; my $other = shift; - $other = time unless defined $other; - if ( UNIVERSAL::isa( $other, 'RT::Date' ) ) { - $other = $other->Unix; - } - return undef unless $other=~ /^\d+$/ && $other > 0; - - my $unix = $self->Unix; - return undef unless $unix > 0; - return $unix - $other; + if (ref($other) eq 'RT::Date') { + $other=$other->Unix; + } + return ($self->Unix - $other); } +# }}} + +# {{{ sub DiffAsString -=head2 DiffAsString +=head2 sub DiffAsString -Takes either an C<RT::Date> object or the date in unixtime format as a string, -if nothing is specified uses the current time. +Takes either an RT::Date object or the date in unixtime format as a string -Returns the differnce between C<$self> and that time as a number of seconds as -a localized string fit for human consumption. Returns empty string if any of -two compared values is incorrect or not set. +Returns the differnce between $self and that time as a number of seconds as +as string fit for human consumption =cut sub DiffAsString { my $self = shift; - my $diff = $self->Diff( @_ ); - return '' unless defined $diff; + my $other = shift; + - return $self->DurationAsString( $diff ); + if ($other < 1) { + return (""); + } + if ($self->Unix < 1) { + return(""); + } + my $diff = $self->Diff($other); + + return ($self->DurationAsString($diff)); } +# }}} + +# {{{ sub DurationAsString + =head2 DurationAsString -Takes a number of seconds. Returns a localized string describing -that duration. +Takes a number of seconds. returns a string describing that duration =cut sub DurationAsString { + my $self = shift; - my $duration = int shift; + my $duration = shift; + + my ( $negative, $s ); - my ( $negative, $s, $time_unit ); - $negative = 1 if $duration < 0; - $duration = abs $duration; + $negative = 1 if ( $duration < 0 ); + $duration = abs($duration); + + my $time_unit; if ( $duration < $MINUTE ) { $s = $duration; $time_unit = $self->loc("sec"); } elsif ( $duration < ( 2 * $HOUR ) ) { - $s = int( $duration / $MINUTE + 0.5 ); + $s = int( $duration / $MINUTE ); $time_unit = $self->loc("min"); } elsif ( $duration < ( 2 * $DAY ) ) { - $s = int( $duration / $HOUR + 0.5 ); + $s = int( $duration / $HOUR ); $time_unit = $self->loc("hours"); } elsif ( $duration < ( 2 * $WEEK ) ) { - $s = int( $duration / $DAY + 0.5 ); + $s = int( $duration / $DAY ); $time_unit = $self->loc("days"); } elsif ( $duration < ( 2 * $MONTH ) ) { - $s = int( $duration / $WEEK + 0.5 ); + $s = int( $duration / $WEEK ); $time_unit = $self->loc("weeks"); } elsif ( $duration < $YEAR ) { - $s = int( $duration / $MONTH + 0.5 ); + $s = int( $duration / $MONTH ); $time_unit = $self->loc("months"); } else { - $s = int( $duration / $YEAR + 0.5 ); + $s = int( $duration / $YEAR ); $time_unit = $self->loc("years"); } - - if ( $negative ) { + if (0) { # For now, never display the "AGO" # $negative) { return $self->loc( "[_1] [_2] ago", $s, $time_unit ); } else { @@ -370,46 +338,46 @@ sub DurationAsString { } } -=head2 AgeAsString +# }}} -Takes nothing. Returns a string that's the differnce between the -time in the object and now. +# {{{ sub AgeAsString -=cut +=head2 sub AgeAsString + +Takes nothing -sub AgeAsString { return $_[0]->DiffAsString } +Returns a string that's the differnce between the time in the object and now +=cut +sub AgeAsString { + my $self = shift; + return ($self->DiffAsString(time)); + } +# }}} -=head2 AsString +# {{{ sub AsString -Returns the object's time as a localized string with curent user's prefered -format and timezone. +=head2 sub AsString -If the current user didn't choose prefered format then system wide setting is -used or L</DefaultFormat> if the latter is not specified. See config option -C<DateTimeFormat>. +Returns the object\'s time as a string with the current timezone. =cut sub AsString { my $self = shift; - my %args = (@_); - - return $self->loc("Not set") unless $self->Unix > 0; + return ($self->loc("Not set")) if ($self->Unix <= 0); - my $format = RT->Config->Get( 'DateTimeFormat', $self->CurrentUser ) || 'DefaultFormat'; - $format = { Format => $format } unless ref $format; - %args = (%$format, %args); + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($self->Unix); - return $self->Get( Timezone => 'user', %args ); + return $self->loc("[_1] [_2] [_3] [_4]:[_5]:[_6] [_7]", $self->GetWeekday($wday), $self->GetMonth($mon), map {sprintf "%02d", $_} ($mday, $hour, $min, $sec), ($year+1900)); } +# }}} +# {{{ GetWeekday =head2 GetWeekday DAY -Takes an integer day of week and returns a localized string for -that day of week. Valid values are from range 0-6, Note that B<0 -is sunday>. +Takes an integer day of week and returns a localized string for that day of week =cut @@ -417,628 +385,169 @@ sub GetWeekday { my $self = shift; my $dow = shift; - return $self->loc($DAYS_OF_WEEK[$dow]) - if $DAYS_OF_WEEK[$dow]; - return ''; + return $self->loc('Mon.') if ($dow == 1); + return $self->loc('Tue.') if ($dow == 2); + return $self->loc('Wed.') if ($dow == 3); + return $self->loc('Thu.') if ($dow == 4); + return $self->loc('Fri.') if ($dow == 5); + return $self->loc('Sat.') if ($dow == 6); + return $self->loc('Sun.') if ($dow == 0); } -=head2 GetMonth MONTH +# }}} -Takes an integer month and returns a localized string for that month. -Valid values are from from range 0-11. +# {{{ GetMonth +=head2 GetMonth DAY + +Takes an integer month and returns a localized string for that month =cut sub GetMonth { my $self = shift; - my $mon = shift; - - return $self->loc($MONTHS[$mon]) - if $MONTHS[$mon]; - return ''; + my $mon = shift; + + # We do this rather than an array so that we don't call localize 12x what we need to + return $self->loc('Jan.') if ($mon == 0); + return $self->loc('Feb.') if ($mon == 1); + return $self->loc('Mar.') if ($mon == 2); + return $self->loc('Apr.') if ($mon == 3); + return $self->loc('May.') if ($mon == 4); + return $self->loc('Jun.') if ($mon == 5); + return $self->loc('Jul.') if ($mon == 6); + return $self->loc('Aug.') if ($mon == 7); + return $self->loc('Sep.') if ($mon == 8); + return $self->loc('Oct.') if ($mon == 9); + return $self->loc('Nov.') if ($mon == 10); + return $self->loc('Dec.') if ($mon == 11); } -=head2 AddSeconds SECONDS +# }}} -Takes a number of seconds and returns the new unix time. +# {{{ sub AddSeconds -Negative value can be used to substract seconds. +=head2 sub AddSeconds + +Takes a number of seconds as a string + +Returns the new time =cut sub AddSeconds { my $self = shift; - my $delta = shift or return $self->Unix; + my $delta = shift; $self->Set(Format => 'unix', Value => ($self->Unix + $delta)); - + return ($self->Unix); -} - -=head2 AddDays [DAYS] - -Adds C<24 hours * DAYS> to the current time. Adds one day when -no argument is specified. Negative value can be used to substract -days. - -Returns new unix time. - -=cut - -sub AddDays { - my $self = shift; - my $days = shift || 1; - return $self->AddSeconds( $days * $DAY ); -} - -=head2 AddDay - -Adds 24 hours to the current time. Returns new unix time. - -=cut - -sub AddDay { return $_[0]->AddSeconds($DAY) } - -=head2 Unix [unixtime] - -Optionally takes a date in unix seconds since the epoch format. -Returns the number of seconds since the epoch - -=cut - -sub Unix { - my $self = shift; - $self->{'time'} = int(shift || 0) if @_; - return $self->{'time'}; -} - -=head2 DateTime - -Alias for L</Get> method. Arguments C<Date> and <Time> -are fixed to true values, other arguments could be used -as described in L</Get>. - -=cut - -sub DateTime { - my $self = shift; - unless (defined $self) { - use Carp; Carp::confess("undefined $self"); - } - return $self->Get( @_, Date => 1, Time => 1 ); -} - -=head2 Date - -Takes Format argument which allows you choose date formatter. -Pass throught other arguments to the formatter method. - -Returns the object's formatted date. Default formatter is ISO. - -=cut - -sub Date { - my $self = shift; - return $self->Get( @_, Date => 1, Time => 0 ); -} - -=head2 Time - - -=cut - -sub Time { - my $self = shift; - return $self->Get( @_, Date => 0, Time => 1 ); -} - -=head2 Get - -Returnsa a formatted and localized string that represets time of -the current object. - - -=cut + -sub Get -{ - my $self = shift; - my %args = (Format => 'ISO', @_); - my $formatter = $args{'Format'}; - $formatter = 'ISO' unless $self->can($formatter); - return $self->$formatter( %args ); } -=head2 Output formatters - -Fomatter is a method that returns date and time in different configurable -format. - -Each method takes several arguments: - -=over 1 - -=item Date - -=item Time - -=item Timezone - Timezone context C<server>, C<user> or C<UTC> - -=back +# }}} -Formatters may also add own arguments to the list, for example -in RFC2822 format day of time in output is optional so it -understand boolean argument C<DayOfTime>. +# {{{ sub AddDays -=head3 Formatters +=head2 AddDays $DAYS -Returns an array of available formatters. +Adds 24 hours * $DAYS to the current time =cut -sub Formatters -{ - my $self = shift; - - return @FORMATTERS; -} - -=head3 DefaultFormat - -=cut - -sub DefaultFormat -{ +sub AddDays { my $self = shift; - my %args = ( Date => 1, - Time => 1, - Timezone => '', - Seconds => 1, - @_, - ); + my $days = shift; + $self->AddSeconds($days * $DAY); - # 0 1 2 3 4 5 6 7 8 9 - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$ydaym,$isdst,$offset) = - $self->Localtime($args{'Timezone'}); - $wday = $self->GetWeekday($wday); - $mon = $self->GetMonth($mon); - ($mday, $hour, $min, $sec) = map { sprintf "%02d", $_ } ($mday, $hour, $min, $sec); - - if( $args{'Date'} && !$args{'Time'} ) { - return $self->loc('[_1] [_2] [_3] [_4]', - $wday,$mon,$mday,$year); - } elsif( !$args{'Date'} && $args{'Time'} ) { - if( $args{'Seconds'} ) { - return $self->loc('[_1]:[_2]:[_3]', - $hour,$min,$sec); - } else { - return $self->loc('[_1]:[_2]', - $hour,$min); - } - } else { - if( $args{'Seconds'} ) { - return $self->loc('[_1] [_2] [_3] [_4]:[_5]:[_6] [_7]', - $wday,$mon,$mday,$hour,$min,$sec,$year); - } else { - return $self->loc('[_1] [_2] [_3] [_4]:[_5] [_6]', - $wday,$mon,$mday,$hour,$min,$year); - } - } } -=head3 LocalizedDateTime +# }}} -Returns date and time as string, with user localization. +# {{{ sub AddDay -Supports arguments: C<DateFormat> and C<TimeFormat> which may contains date and -time format as specified in DateTime::Locale (default to full_date_format and -medium_time_format), C<AbbrDay> and C<AbbrMonth> which may be set to 0 if -you want full Day/Month names instead of abbreviated ones. +=head2 AddDay -Require optionnal DateTime::Locale module. +Adds 24 hours to the current time =cut -sub LocalizedDateTime -{ +sub AddDay { my $self = shift; - my %args = ( Date => 1, - Time => 1, - Timezone => '', - DateFormat => 'date_format_full', - TimeFormat => 'time_format_medium', - AbbrDay => 1, - AbbrMonth => 1, - @_, - ); - - return $self->loc("DateTime module missing") unless ( eval 'use DateTime qw(); 1;' ); - return $self->loc("DateTime::Locale module missing") unless ( eval 'use DateTime::Locale qw(); 1;' ); - return $self->loc("DateTime doesn't support format_cldr, you must upgrade to use this feature") - unless can DateTime::('format_cldr'); - - - my $date_format = $args{'DateFormat'}; - my $time_format = $args{'TimeFormat'}; - - my $lang = $self->CurrentUser->UserObj->Lang; - unless ($lang) { - require I18N::LangTags::Detect; - $lang = ( I18N::LangTags::Detect::detect(), 'en' )[0]; - } + $self->AddSeconds($DAY); - - my $formatter = DateTime::Locale->load($lang); - return $self->loc("DateTime::Locale doesn't support date_format_full, you must upgrade to use this feature") - unless $formatter->can('date_format_full'); - $date_format = $formatter->$date_format; - $time_format = $formatter->$time_format; - $date_format =~ s/EEEE/EEE/g if ( $args{'AbbrDay'} ); - $date_format =~ s/MMMM/MMM/g if ( $args{'AbbrMonth'} ); - - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$ydaym,$isdst,$offset) = - $self->Localtime($args{'Timezone'}); - $mon++; - my $tz = $self->Timezone($args{'Timezone'}); - - # FIXME : another way to call this module without conflict with local - # DateTime method? - my $dt = new DateTime::( locale => $lang, - time_zone => $tz, - year => $year, - month => $mon, - day => $mday, - hour => $hour, - minute => $min, - second => $sec, - nanosecond => 0, - ); - - if ( $args{'Date'} && !$args{'Time'} ) { - return $dt->format_cldr($date_format); - } elsif ( !$args{'Date'} && $args{'Time'} ) { - return $dt->format_cldr($time_format); - } else { - return $dt->format_cldr($date_format) . " " . $dt->format_cldr($time_format); - } -} - -=head3 ISO - -Returns the object's date in ISO format C<YYYY-MM-DD mm:hh:ss>. -ISO format is locale independant, but adding timezone offset info -is not implemented yet. - -Supports arguments: C<Timezone>, C<Date>, C<Time> and C<Seconds>. -See </Output formatters> for description of arguments. - -=cut - -sub ISO { - my $self = shift; - my %args = ( Date => 1, - Time => 1, - Timezone => '', - Seconds => 1, - @_, - ); - # 0 1 2 3 4 5 6 7 8 9 - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$ydaym,$isdst,$offset) = - $self->Localtime($args{'Timezone'}); - - #the month needs incrementing, as gmtime returns 0-11 - $mon++; - - my $res = ''; - $res .= sprintf("%04d-%02d-%02d", $year, $mon, $mday) if $args{'Date'}; - $res .= sprintf(' %02d:%02d', $hour, $min) if $args{'Time'}; - $res .= sprintf(':%02d', $sec, $min) if $args{'Time'} && $args{'Seconds'}; - $res =~ s/^\s+//; - - return $res; } -=head3 W3CDTF - -Returns the object's date and time in W3C date time format -(L<http://www.w3.org/TR/NOTE-datetime>). - -Format is locale independand and is close enought to ISO, but -note that date part is B<not optional> and output string -has timezone offset mark in C<[+-]hh:mm> format. - -Supports arguments: C<Timezone>, C<Time> and C<Seconds>. -See </Output formatters> for description of arguments. - -=cut - -sub W3CDTF { - my $self = shift; - my %args = ( - Time => 1, - Timezone => '', - Seconds => 1, - @_, - Date => 1, - ); - # 0 1 2 3 4 5 6 7 8 9 - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$ydaym,$isdst,$offset) = - $self->Localtime( $args{'Timezone'} ); - - #the month needs incrementing, as gmtime returns 0-11 - $mon++; - - my $res = ''; - $res .= sprintf("%04d-%02d-%02d", $year, $mon, $mday); - if ( $args{'Time'} ) { - $res .= sprintf('T%02d:%02d', $hour, $min); - $res .= sprintf(':%02d', $sec, $min) if $args{'Seconds'}; - if ( $offset ) { - $res .= sprintf "%s%02d:%02d", $self->_SplitOffset( $offset ); - } else { - $res .= 'Z'; - } - } - - return $res; -}; +# }}} +# {{{ sub Unix -=head3 RFC2822 (MIME) +=head2 sub Unix [unixtime] -Returns the object's date and time in RFC2822 format, -for example C<Sun, 06 Nov 1994 08:49:37 +0000>. -Format is locale independand as required by RFC. Time -part always has timezone offset in digits with sign prefix. - -Supports arguments: C<Timezone>, C<Date>, C<Time>, C<DayOfWeek> -and C<Seconds>. See </Output formatters> for description of -arguments. +Optionally takes a date in unix seconds since the epoch format. +Returns the number of seconds since the epoch =cut -sub RFC2822 { +sub Unix { my $self = shift; - my %args = ( Date => 1, - Time => 1, - Timezone => '', - DayOfWeek => 1, - Seconds => 1, - @_, - ); - - # 0 1 2 3 4 5 6 7 8 9 - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$ydaym,$isdst,$offset) = - $self->Localtime($args{'Timezone'}); - - my ($date, $time) = ('',''); - $date .= "$DAYS_OF_WEEK[$wday], " if $args{'DayOfWeek'} && $args{'Date'}; - $date .= "$mday $MONTHS[$mon] $year" if $args{'Date'}; - - if ( $args{'Time'} ) { - $time .= sprintf("%02d:%02d", $hour, $min); - $time .= sprintf(":%02d", $sec) if $args{'Seconds'}; - $time .= sprintf " %s%02d%02d", $self->_SplitOffset( $offset ); - } - - return join ' ', grep $_, ($date, $time); + + $self->{'time'} = shift if (@_); + + return ($self->{'time'}); } +# }}} -=head3 RFC2616 (HTTP) +# {{{ sub ISO -Returns the object's date and time in RFC2616 (HTTP/1.1) format, -for example C<Sun, 06 Nov 1994 08:49:37 GMT>. While the RFC describes -version 1.1 of HTTP, but the same form date can be used in version 1.0. +=head2 ISO -Format is fixed length, locale independand and always represented in GMT -what makes it quite useless for users, but any date in HTTP transfers -must be presented using this format. +Takes nothing - HTTP-date = rfc1123 | ... - rfc1123 = wkday "," SP date SP time SP "GMT" - date = 2DIGIT SP month SP 4DIGIT - ; day month year (e.g., 02 Jun 1982) - time = 2DIGIT ":" 2DIGIT ":" 2DIGIT - ; 00:00:00 - 23:59:59 - wkday = "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun" - month = "Jan" | "Feb" | "Mar" | "Apr" | "May" | "Jun" - | "Jul" | "Aug" | "Sep" | "Oct" | "Nov" | "Dec" - -Supports arguments: C<Date> and C<Time>, but you should use them only for -some personal reasons, RFC2616 doesn't define any optional parts. -See </Output formatters> for description of arguments. +Returns the object's date in ISO format =cut -sub RFC2616 { - my $self = shift; - my %args = ( Date => 1, Time => 1, - @_, - Timezone => 'utc', - Seconds => 1, DayOfWeek => 1, - ); - - my $res = $self->RFC2822( @_ ); - $res =~ s/\s*[+-]\d\d\d\d$/ GMT/ if $args{'Time'}; - return $res; -} - -=head4 iCal - -Returns the object's date and time in iCalendar format, - -Supports arguments: C<Date> and C<Time>. -See </Output formatters> for description of arguments. - -=cut +sub ISO { + my $self=shift; + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst, $date) ; + + return ('1970-01-01 00:00:00') if ($self->Unix == -1); -sub iCal { - my $self = shift; - my %args = ( - Date => 1, Time => 1, - @_, - ); - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$ydaym,$isdst,$offset) = - $self->Localtime( 'utc' ); + # 0 1 2 3 4 5 6 7 8 + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($self->Unix); + #make the year YYYY + $year+=1900; #the month needs incrementing, as gmtime returns 0-11 $mon++; - - my $res; - if ( $args{'Date'} && !$args{'Time'} ) { - $res = sprintf( '%04d%02d%02d', $year, $mon, $mday ); - } - elsif ( !$args{'Date'} && $args{'Time'} ) { - $res = sprintf( 'T%02d%02d%02dZ', $hour, $min, $sec ); - } - else { - $res = sprintf( '%04d%02d%02dT%02d%02d%02dZ', $year, $mon, $mday, $hour, $min, $sec ); - } - return $res; -} - -# it's been added by mistake in 3.8.0 -sub iCalDate { return (shift)->iCal( Time => 0, @_ ) } - -sub _SplitOffset { - my ($self, $offset) = @_; - my $sign = $offset < 0? '-': '+'; - $offset = int( (abs $offset) / 60 + 0.001 ); - my $mins = $offset % 60; - my $hours = int( $offset/60 + 0.001 ); - return $sign, $hours, $mins; -} - -=head2 Timezones handling - -=head3 Localtime $context [$time] - -Takes one mandatory argument C<$context>, which determines whether -we want "user local", "system" or "UTC" time. Also, takes optional -argument unix C<$time>, default value is the current unix time. - -Returns object's date and time in the format provided by perl's -builtin functions C<localtime> and C<gmtime> with two exceptions: - -1) "Year" is a four-digit year, rather than "years since 1900" - -2) The last element of the array returned is C<offset>, which -represents timezone offset against C<UTC> in seconds. - -=cut - -sub Localtime -{ - my $self = shift; - my $tz = $self->Timezone(shift); - - my $unix = shift || $self->Unix; - $unix = 0 unless $unix >= 0; + + $date = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year,$mon,$mday, $hour,$min,$sec); - my @local; - if ($tz eq 'UTC') { - @local = gmtime($unix); - } else { - { - local $ENV{'TZ'} = $tz; - ## Using POSIX::tzset fixes a bug where the TZ environment variable - ## is cached. - POSIX::tzset(); - @local = localtime($unix); - } - POSIX::tzset(); # return back previouse value - } - $local[5] += 1900; # change year to 4+ digits format - my $offset = Time::Local::timegm_nocheck(@local) - $unix; - return @local, $offset; -} - -=head3 Timelocal $context @time - -Takes argument C<$context>, which determines whether we should -treat C<@time> as "user local", "system" or "UTC" time. - -C<@time> is array returned by L<Localtime> functions. Only first -six elements are mandatory - $sec, $min, $hour, $mday, $mon and $year. -You may pass $wday, $yday and $isdst, these are ignored. - -If you pass C<$offset> as ninth argument, it's used instead of -C<$context>. It's done such way as code -C<$self->Timelocal('utc', $self->Localtime('server'))> doesn't -makes much sense and most probably would produce unexpected -result, so the method ignore 'utc' context and uses offset -returned by L<Localtime> method. - -=cut - -sub Timelocal { - my $self = shift; - my $tz = shift; - if ( defined $_[9] ) { - return timegm(@_[0..5]) - $_[9]; - } else { - $tz = $self->Timezone( $tz ); - if ( $tz eq 'UTC' ) { - return Time::Local::timegm(@_[0..5]); - } else { - my $rv; - { - local $ENV{'TZ'} = $tz; - ## Using POSIX::tzset fixes a bug where the TZ environment variable - ## is cached. - POSIX::tzset(); - $rv = Time::Local::timelocal(@_[0..5]); - }; - POSIX::tzset(); # switch back to previouse value - return $rv; - } - } + return ($date); } +# }}} -=head3 Timezone $context - -Returns the timezone name. - -Takes one argument, C<$context> argument which could be C<user>, C<server> or C<utc>. -=over +# {{{ sub LocalTimezone +=head2 LocalTimezone -=item user - -Default value is C<user> that mean it returns current user's Timezone value. - -=item server - -If context is C<server> it returns value of the C<Timezone> RT config option. - -=item utc - -If both server's and user's timezone names are undefined returns 'UTC'. - -=back + Returns the current timezone. For now, draws off a system timezone, RT::Timezone. Eventually, this may +pull from a 'Timezone' attribute of the CurrentUser =cut -sub Timezone { +sub LocalTimezone { my $self = shift; - my $context = lc(shift); - $context = 'utc' unless $context =~ /^(?:utc|server|user)$/i; + return $self->CurrentUser->Timezone + if $self->CurrentUser and $self->CurrentUser->can('Timezone'); - my $tz; - if( $context eq 'user' ) { - $tz = $self->CurrentUser->UserObj->Timezone; - } elsif( $context eq 'server') { - $tz = RT->Config->Get('Timezone'); - } else { - $tz = 'UTC'; - } - $tz ||= RT->Config->Get('Timezone') || 'UTC'; - $tz = 'UTC' if lc $tz eq 'gmt'; - return $tz; + return ($RT::Timezone); } +# }}} eval "require RT::Date_Vendor"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/Date_Vendor.pm}); diff --git a/rt/lib/RT/Extension/ActivityReports.pm b/rt/lib/RT/Extension/ActivityReports.pm new file mode 100644 index 000000000..52d8ba6ab --- /dev/null +++ b/rt/lib/RT/Extension/ActivityReports.pm @@ -0,0 +1,3 @@ +package RT::Extension::ActivityReports; + +our $VERSION = '0.2'; diff --git a/rt/lib/RT/Group.pm b/rt/lib/RT/Group.pm index 17444b06d..4dcef3f07 100755 --- a/rt/lib/RT/Group.pm +++ b/rt/lib/RT/Group.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -86,7 +61,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -94,7 +69,7 @@ Create takes a hash of values and creates a row in the database: varchar(255) 'Description'. varchar(64) 'Domain'. varchar(64) 'Type'. - int(11) 'Instance'. + varchar(64) 'Instance'. =cut @@ -123,7 +98,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -132,14 +107,14 @@ Returns the current value of id. =cut -=head2 Name +=item Name Returns the current value of Name. (In the database, Name is stored as varchar(200).) -=head2 SetName VALUE +=item SetName VALUE Set Name to VALUE. @@ -150,14 +125,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Description +=item Description Returns the current value of Description. (In the database, Description is stored as varchar(255).) -=head2 SetDescription VALUE +=item SetDescription VALUE Set Description to VALUE. @@ -168,14 +143,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Domain +=item Domain Returns the current value of Domain. (In the database, Domain is stored as varchar(64).) -=head2 SetDomain VALUE +=item SetDomain VALUE Set Domain to VALUE. @@ -186,14 +161,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Type +=item Type Returns the current value of Type. (In the database, Type is stored as varchar(64).) -=head2 SetType VALUE +=item SetType VALUE Set Type to VALUE. @@ -204,40 +179,40 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Instance +=item Instance Returns the current value of Instance. -(In the database, Instance is stored as int(11).) +(In the database, Instance is stored as varchar(64).) -=head2 SetInstance VALUE +=item SetInstance VALUE Set Instance to VALUE. Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -(In the database, Instance will be stored as a int(11).) +(In the database, Instance will be stored as a varchar(64).) =cut -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, Name => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, + {read => 1, write => 1, type => 'varchar(200)', default => ''}, Description => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, Domain => - {read => 1, write => 1, sql_type => 12, length => 64, is_blob => 0, is_numeric => 0, type => 'varchar(64)', default => ''}, + {read => 1, write => 1, type => 'varchar(64)', default => ''}, Type => - {read => 1, write => 1, sql_type => 12, length => 64, is_blob => 0, is_numeric => 0, type => 'varchar(64)', default => ''}, + {read => 1, write => 1, type => 'varchar(64)', default => ''}, Instance => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, write => 1, type => 'varchar(64)', default => ''}, } }; @@ -269,7 +244,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/GroupMember.pm b/rt/lib/RT/GroupMember.pm index f7fa73e9e..8de1a73fe 100755 --- a/rt/lib/RT/GroupMember.pm +++ b/rt/lib/RT/GroupMember.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -86,7 +61,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -114,7 +89,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -123,14 +98,14 @@ Returns the current value of id. =cut -=head2 GroupId +=item GroupId Returns the current value of GroupId. (In the database, GroupId is stored as int(11).) -=head2 SetGroupId VALUE +=item SetGroupId VALUE Set GroupId to VALUE. @@ -141,14 +116,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 MemberId +=item MemberId Returns the current value of MemberId. (In the database, MemberId is stored as int(11).) -=head2 SetMemberId VALUE +=item SetMemberId VALUE Set MemberId to VALUE. @@ -160,15 +135,15 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, GroupId => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, MemberId => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, } }; @@ -200,7 +175,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/GroupMembers.pm b/rt/lib/RT/GroupMembers.pm index 0e7514d3a..31cb9536f 100755 --- a/rt/lib/RT/GroupMembers.pm +++ b/rt/lib/RT/GroupMembers.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::GroupMember item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Groups.pm b/rt/lib/RT/Groups.pm index f8dac135b..29f12a5a0 100755 --- a/rt/lib/RT/Groups.pm +++ b/rt/lib/RT/Groups.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::Group item @@ -116,6 +91,8 @@ sub NewItem { }; + + =head1 SEE ALSO This class allows "overlay" methods to be placed @@ -124,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Groups_Overlay.pm b/rt/lib/RT/Groups_Overlay.pm index 793a85d18..407b905b9 100644 --- a/rt/lib/RT/Groups_Overlay.pm +++ b/rt/lib/RT/Groups_Overlay.pm @@ -88,7 +88,6 @@ sub _Init { my $self = shift; $self->{'table'} = "Groups"; $self->{'primary_key'} = "id"; - $self->{'with_disabled_column'} = 1; my @result = $self->SUPER::_Init(@_); @@ -130,7 +129,7 @@ sub PrincipalsAlias { } -# {{{ LimitToSystemInternalGroups +# {{{ LimiToSystemInternalGroups =head2 LimitToSystemInternalGroups @@ -149,7 +148,7 @@ sub LimitToSystemInternalGroups { # }}} -# {{{ LimitToUserDefinedGroups +# {{{ LimiToUserDefinedGroups =head2 LimitToUserDefinedGroups @@ -168,7 +167,7 @@ sub LimitToUserDefinedGroups { # }}} -# {{{ LimitToPersonalGroupsFor +# {{{ LimiToPersonalGroupsFor =head2 LimitToPersonalGroupsFor PRINCIPAL_ID @@ -323,6 +322,7 @@ sub WithRight { $from_group->WithGroupRight( %args ); #XXX: DIRTY HACK + use DBIx::SearchBuilder 1.50; #no version on ::Union :( use DBIx::SearchBuilder::Union; my $union = new DBIx::SearchBuilder::Union; $union->add($from_role); @@ -377,13 +377,12 @@ Only find items that haven\'t been disabled sub LimitToEnabled { my $self = shift; - - $self->{'handled_disabled_column'} = 1; - $self->Limit( - ALIAS => $self->PrincipalsAlias, - FIELD => 'Disabled', - VALUE => '0', - ); + + $self->Limit( ALIAS => $self->PrincipalsAlias, + FIELD => 'Disabled', + VALUE => '0', + OPERATOR => '=', + ); } # }}} @@ -398,14 +397,13 @@ Only find items that have been deleted. sub LimitToDeleted { my $self = shift; - $self->{'handled_disabled_column'} = $self->{'find_disabled_rows'} = 1; - $self->Limit( - ALIAS => $self->PrincipalsAlias, - FIELD => 'Disabled', - VALUE => 1, - ); + $self->{'find_disabled_rows'} = 1; + $self->Limit( ALIAS => $self->PrincipalsAlias, + FIELD => 'Disabled', + OPERATOR => '=', + VALUE => 1, + ); } - # }}} # {{{ sub Next diff --git a/rt/lib/RT/Handle.pm b/rt/lib/RT/Handle.pm index 46070cec7..5cdb65e5b 100644 --- a/rt/lib/RT/Handle.pm +++ b/rt/lib/RT/Handle.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,1042 +14,85 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. # -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK =head1 NAME -RT::Handle - RT's database handle + RT::Handle - RT's database handle =head1 SYNOPSIS - use RT; - BEGIN { RT::LoadConfig() }; - use RT::Handle; + use RT::Handle; =head1 DESCRIPTION -C<RT::Handle> is RT specific wrapper over one of L<DBIx::SearchBuilder::Handle> -classes. As RT works with different types of DBs we subclass repsective handler -from L<DBIx::SerachBuilder>. Type of the DB is defined by C<DatabasseType> RT's -config option. You B<must> load this module only when the configs have been -loaded. - -=cut +=begin testing -package RT::Handle; +ok(require RT::Handle); -use strict; -use warnings; -use vars qw/@ISA/; +=end testing =head1 METHODS -=head2 FinalizeDatabaseType - -Sets RT::Handle's superclass to the correct subclass of -L<DBIx::SearchBuilder::Handle>, using the C<DatabaseType> configuration. - =cut -sub FinalizeDatabaseType { - eval "use DBIx::SearchBuilder::Handle::". RT->Config->Get('DatabaseType') ."; - \@ISA= qw(DBIx::SearchBuilder::Handle::". RT->Config->Get('DatabaseType') .");"; +package RT::Handle; - if ($@) { - die "Unable to load DBIx::SearchBuilder database handle for '". RT->Config->Get('DatabaseType') ."'.\n". - "Perhaps you've picked an invalid database type or spelled it incorrectly.\n". - $@; - } -} +use strict; +use vars qw/@ISA/; + +eval "use DBIx::SearchBuilder::Handle::$RT::DatabaseType; +\@ISA= qw(DBIx::SearchBuilder::Handle::$RT::DatabaseType);"; +#TODO check for errors here. =head2 Connect -Connects to RT's database using credentials and options from the RT config. -Takes nothing. +Connects to RT's database handle. +Takes nothing. Calls SUPER::Connect with the needed args =cut sub Connect { - my $self = shift; - - my $db_type = RT->Config->Get('DatabaseType'); - if ( $db_type eq 'Oracle' ) { - $ENV{'NLS_LANG'} = "AMERICAN_AMERICA.AL32UTF8"; - $ENV{'NLS_NCHAR'} = "AL32UTF8"; - } +my $self=shift; - $self->SUPER::Connect( - User => RT->Config->Get('DatabaseUser'), - Password => RT->Config->Get('DatabasePassword'), - ); +# Unless the database port is a positive integer, we really don't want to pass it. - if ( $db_type eq 'mysql' ) { - my $version = $self->DatabaseVersion; - ($version) = $version =~ /^(\d+\.\d+)/; - $self->dbh->do("SET NAMES 'utf8'") if $version >= 4.1; - } - - $self->dbh->{'LongReadLen'} = RT->Config->Get('MaxAttachmentSize'); +$self->SUPER::Connect( + User => $RT::DatabaseUser, + Password => $RT::DatabasePassword, + ); + } -=head2 BuildDSN +=item BuildDSN -Build the DSN for the RT database. Doesn't take any parameters, draws all that -from the config. +Build the DSN for the RT database. doesn't take any parameters, draws all that +from the config file. =cut -require File::Spec; sub BuildDSN { my $self = shift; - # Unless the database port is a positive integer, we really don't want to pass it. - my $db_port = RT->Config->Get('DatabasePort'); - $db_port = undef unless (defined $db_port && $db_port =~ /^(\d+)$/); - my $db_host = RT->Config->Get('DatabaseHost'); - $db_host = undef unless $db_host; - my $db_name = RT->Config->Get('DatabaseName'); - my $db_type = RT->Config->Get('DatabaseType'); - $db_name = File::Spec->catfile($RT::VarPath, $db_name) - if $db_type eq 'SQLite' && !File::Spec->file_name_is_absolute($db_name); - - my %args = ( - Host => $db_host, - Database => $db_name, - Port => $db_port, - Driver => $db_type, - RequireSSL => RT->Config->Get('DatabaseRequireSSL'), - DisconnectHandleOnDestroy => 1, - ); - if ( $db_type eq 'Oracle' && $db_host ) { - $args{'SID'} = delete $args{'Database'}; - } - $self->SUPER::BuildDSN( %args ); -} - -=head2 DSN - -Returns the DSN for this handle. In order to get correct value you must -build DSN first, see L</BuildDSN>. - -This is method can be called as class method, in this case creates -temporary handle object, L</BuildDSN builds DSN> and returns it. - -=cut - -sub DSN { - my $self = shift; - return $self->SUPER::DSN if ref $self; - - my $handle = $self->new; - $handle->BuildDSN; - return $handle->DSN; -} - -=head2 SystemDSN - -Returns a DSN suitable for database creates and drops -and user creates and drops. - -Gets RT's DSN first (see L<DSN>) and then change it according -to requirements of a database system RT's using. - -=cut - -sub SystemDSN { - my $self = shift; - - my $db_name = RT->Config->Get('DatabaseName'); - my $db_type = RT->Config->Get('DatabaseType'); - - my $dsn = $self->DSN; - if ( $db_type eq 'mysql' ) { - # with mysql, you want to connect sans database to funge things - $dsn =~ s/dbname=\Q$db_name//; - } - elsif ( $db_type eq 'Pg' ) { - # with postgres, you want to connect to template1 database - $dsn =~ s/dbname=\Q$db_name/dbname=template1/; - } - elsif ( $db_type eq 'Informix' ) { - # with Informix, you want to connect sans database: - $dsn =~ s/Informix:\Q$db_name/Informix:/; - } - return $dsn; -} - -=head2 Database compatibility and integrity checks - - - -=cut - -sub CheckIntegrity { - my $self = shift; - - my $dsn = $self->DSN; - my $user = RT->Config->Get('DatabaseUser'); - my $pass = RT->Config->Get('DatabasePassword'); - - my $dbh = DBI->connect( - $dsn, $user, $pass, - { RaiseError => 0, PrintError => 0 }, - ); - unless ( $dbh ) { - return (0, 'no connection', "Failed to connect to $dsn as user '$user': ". $DBI::errstr); - } - - RT::ConnectToDatabase(); - RT::InitLogging(); - - require RT::CurrentUser; - my $test_user = new RT::CurrentUser; - $test_user->Load('RT_System'); - unless ( $test_user->id ) { - return (0, 'no system user', "Couldn't find RT_System user in the DB '$dsn'"); - } - - $test_user = new RT::CurrentUser; - $test_user->Load('Nobody'); - unless ( $test_user->id ) { - return (0, 'no nobody user', "Couldn't find Nobody user in the DB '$dsn'"); - } - - return $dbh; -} - -sub CheckCompatibility { - my $self = shift; - my $dbh = shift; - my $state = shift || 'post'; - - my $db_type = RT->Config->Get('DatabaseType'); - if ( $db_type eq "mysql" ) { - # Check which version we're running - my $version = ($dbh->selectrow_array("show variables like 'version'"))[1]; - return (0, "couldn't get version of the mysql server") - unless $version; - - ($version) = $version =~ /^(\d+\.\d+)/; - return (0, "RT is unsupported on MySQL versions before 4.0.x, it's $version") - if $version < 4; - - # MySQL must have InnoDB support - my $innodb = ($dbh->selectrow_array("show variables like 'have_innodb'"))[1]; - if ( lc $innodb eq "no" ) { - return (0, "RT requires that MySQL be compiled with InnoDB table support.\n". - "See http://dev.mysql.com/doc/mysql/en/InnoDB.html"); - } elsif ( lc $innodb eq "disabled" ) { - return (0, "RT requires that MySQL InnoDB table support be enabled.\n". - "Remove the 'skip-innodb' line from your my.cnf file, restart MySQL, and try again.\n"); - } - - if ( $state eq 'post' ) { - my $create_table = $dbh->selectrow_arrayref("SHOW CREATE TABLE Tickets")->[1]; - unless ( $create_table =~ /(?:ENGINE|TYPE)\s*=\s*InnoDB/i ) { - return (0, "RT requires that all its tables be of InnoDB type. Upgrade RT tables."); - } - } - if ( $version >= 4.1 && $state eq 'post' ) { - my $create_table = $dbh->selectrow_arrayref("SHOW CREATE TABLE Attachments")->[1]; - unless ( $create_table =~ /\bContent\b[^,]*BLOB/i ) { - return (0, "RT since version 3.8 has new schema for MySQL versions after 4.1.0\n" - ."Follow instructions in the UPGRADING.mysql file."); - } - } - } - return (1) -} - -=head2 Database maintanance - -=head3 CreateDatabase $DBH - -Creates a new database. This method can be used as class method. - -Takes DBI handle. Many database systems require special handle to -allow you to create a new database, so you have to use L<SystemDSN> -method during connection. - -Fetches type and name of the DB from the config. - -=cut - -sub CreateDatabase { - my $self = shift; - my $dbh = shift or return (0, "No DBI handle provided"); - my $db_type = RT->Config->Get('DatabaseType'); - my $db_name = RT->Config->Get('DatabaseName'); - - my $status; - if ( $db_type eq 'SQLite' ) { - return (1, 'Skipped as SQLite doesn\'t need any action'); - } - elsif ( $db_type eq 'Oracle' ) { - my $db_user = RT->Config->Get('DatabaseUser'); - my $db_pass = RT->Config->Get('DatabasePassword'); - $status = $dbh->do( - "CREATE USER $db_user IDENTIFIED BY $db_pass" - ." default tablespace USERS" - ." temporary tablespace TEMP" - ." quota unlimited on USERS" - ); - unless ( $status ) { - return $status, "Couldn't create user $db_user identified by $db_pass." - ."\nError: ". $dbh->errstr; - } - $status = $dbh->do( "GRANT connect, resource TO $db_user" ); - unless ( $status ) { - return $status, "Couldn't grant connect and resource to $db_user." - ."\nError: ". $dbh->errstr; - } - return (1, "Created user $db_user. All RT's objects should be in his schema."); - } - elsif ( $db_type eq 'Pg' ) { - # XXX: as we get external DBH we don't know if RaiseError or PrintError - # are enabled, so we have to setup it here and restore them back - $status = $dbh->do("CREATE DATABASE $db_name WITH ENCODING='UNICODE' TEMPLATE template0") - || $dbh->do("CREATE DATABASE $db_name TEMPLATE template0"); - } - elsif ( $db_type eq 'Informix' ) { - local $ENV{'DB_LOCALE'} = 'en_us.utf8'; - $status = $dbh->do("CREATE DATABASE $db_name WITH BUFFERED LOG"); - } - else { - $status = $dbh->do("CREATE DATABASE $db_name"); - } - return ($status, $DBI::errstr); -} - -=head3 DropDatabase $DBH [Force => 0] - -Drops RT's database. This method can be used as class method. - -Takes DBI handle as first argument. Many database systems require -special handle to allow you to create a new database, so you have -to use L<SystemDSN> method during connection. - -Fetches type and name of the DB from the config. - -=cut - -sub DropDatabase { - my $self = shift; - my $dbh = shift or return (0, "No DBI handle provided"); - - my $db_type = RT->Config->Get('DatabaseType'); - my $db_name = RT->Config->Get('DatabaseName'); - - if ( $db_type eq 'Oracle' || $db_type eq 'Informix' ) { - my $db_user = RT->Config->Get('DatabaseUser'); - my $status = $dbh->do( "DROP USER $db_user CASCADE" ); - unless ( $status ) { - return 0, "Couldn't drop user $db_user." - ."\nError: ". $dbh->errstr; - } - return (1, "Successfully dropped user '$db_user' with his schema."); - } - elsif ( $db_type eq 'SQLite' ) { - my $path = $db_name; - $path = "$RT::VarPath/$path" unless substr($path, 0, 1) eq '/'; - unlink $path or return (0, "Couldn't remove '$path': $!"); - return (1); - } else { - $dbh->do("DROP DATABASE ". $db_name) - or return (0, $DBI::errstr); - } - return (1); -} - -=head2 InsertACL - -=cut - -sub InsertACL { - my $self = shift; - my $dbh = shift; - my $base_path = shift || $RT::EtcPath; - - my $db_type = RT->Config->Get('DatabaseType'); - return (1) if $db_type eq 'SQLite'; - - $dbh = $self->dbh if !$dbh && ref $self; - return (0, "No DBI handle provided") unless $dbh; - - return (0, "'$base_path' doesn't exist") unless -e $base_path; - - my $path; - if ( -d $base_path ) { - $path = File::Spec->catfile( $base_path, "acl.$db_type"); - $path = $self->GetVersionFile($dbh, $path); - - $path = File::Spec->catfile( $base_path, "acl") - unless $path && -e $path; - return (0, "Couldn't find ACLs for $db_type") - unless -e $path; - } else { - $path = $base_path; - } - - local *acl; - do $path || return (0, "Couldn't load ACLs: " . $@); - my @acl = acl($dbh); - foreach my $statement (@acl) { - my $sth = $dbh->prepare($statement) - or return (0, "Couldn't prepare SQL query:\n $statement\n\nERROR: ". $dbh->errstr); - unless ( $sth->execute ) { - return (0, "Couldn't run SQL query:\n $statement\n\nERROR: ". $sth->errstr); - } - } - return (1); -} - -=head2 InsertSchema - -=cut - -sub InsertSchema { - my $self = shift; - my $dbh = shift; - my $base_path = (shift || $RT::EtcPath); - - $dbh = $self->dbh if !$dbh && ref $self; - return (0, "No DBI handle provided") unless $dbh; - - my $db_type = RT->Config->Get('DatabaseType'); - - my $file; - if ( -d $base_path ) { - $file = $base_path . "/schema." . $db_type; - } else { - $file = $base_path; - } - - $file = $self->GetVersionFile( $dbh, $file ); - unless ( $file ) { - return (0, "Couldn't find schema file(s) '$file*'"); - } - unless ( -f $file && -r $file ) { - return (0, "File '$file' doesn't exist or couldn't be read"); - } - - my (@schema); - - open my $fh_schema, "<$file"; - - my $has_local = 0; - open my $fh_schema_local, "<" . $self->GetVersionFile( $dbh, $RT::LocalEtcPath . "/schema." . $db_type ) - and $has_local = 1; - - my $statement = ""; - foreach my $line ( <$fh_schema>, ($_ = ';;'), $has_local? <$fh_schema_local>: () ) { - $line =~ s/\#.*//g; - $line =~ s/--.*//g; - $statement .= $line; - if ( $line =~ /;(\s*)$/ ) { - $statement =~ s/;(\s*)$//g; - push @schema, $statement; - $statement = ""; - } - } - close $fh_schema; close $fh_schema_local; - - if ( $db_type eq 'Oracle' ) { - my $db_user = RT->Config->Get('DatabaseUser'); - my $status = $dbh->do( "ALTER SESSION SET CURRENT_SCHEMA=$db_user" ); - unless ( $status ) { - return $status, "Couldn't set current schema to $db_user." - ."\nError: ". $dbh->errstr; - } - } - - local $SIG{__WARN__} = sub {}; - my $is_local = 0; - $dbh->begin_work or return (0, "Couldn't begin transaction: ". $dbh->errstr); - foreach my $statement (@schema) { - if ( $statement =~ /^\s*;$/ ) { - $is_local = 1; next; - } - - my $sth = $dbh->prepare($statement) - or return (0, "Couldn't prepare SQL query:\n$statement\n\nERROR: ". $dbh->errstr); - unless ( $sth->execute or $is_local ) { - return (0, "Couldn't run SQL query:\n$statement\n\nERROR: ". $sth->errstr); - } - } - $dbh->commit or return (0, "Couldn't commit transaction: ". $dbh->errstr); - return (1); -} - -=head1 GetVersionFile - -Takes base name of the file as argument, scans for <base name>-<version> named -files and returns file name with closest version to the version of the RT DB. - -=cut - -sub GetVersionFile { - my $self = shift; - my $dbh = shift; - my $base_name = shift; +$RT::DatabasePort = undef unless (defined $RT::DatabasePort && $RT::DatabasePort =~ /^(\d+)$/); +$RT::DatabaseHost = undef unless (defined $RT::DatabaseHost && $RT::DatabaseHost ne ''); - my $db_version = ref $self - ? $self->DatabaseVersion - : do { - my $tmp = RT::Handle->new; - $tmp->dbh($dbh); - $tmp->DatabaseVersion; - }; + $self->SUPER::BuildDSN(Host => $RT::DatabaseHost, + Database => $RT::DatabaseName, + Port => $RT::DatabasePort, + Driver => $RT::DatabaseType, + RequireSSL => $RT::DatabaseRequireSSL, + DisconnectHandleOnDestroy => 1 + ); + - require File::Glob; - my @files = File::Glob::bsd_glob("$base_name*"); - return '' unless @files; - - my %version = map { $_ =~ /\.\w+-([-\w\.]+)$/; ($1||0) => $_ } @files; - my $version; - foreach ( reverse sort cmp_version keys %version ) { - if ( cmp_version( $db_version, $_ ) >= 0 ) { - $version = $_; - last; - } - } - - return defined $version? $version{ $version } : undef; -} - -sub cmp_version($$) { - my ($a, $b) = (@_); - $b =~ s/HEAD$/9999/; - my @a = split /[^0-9]+/, $a; - my @b = split /[^0-9]+/, $b; - for ( my $i = 0; $i < @a; $i++ ) { - return 1 unless defined $b[$i]; - return $a[$i] <=> $b[$i] if $a[$i] <=> $b[$i]; - } - return 0 if @a == @b; - return -1; } - -=head2 InsertInitialData - -Inserts system objects into RT's DB, like system user or 'nobody', -internal groups and other records required. However, this method -doesn't insert any real users like 'root' and you have to use -InsertData or another way to do that. - -Takes no arguments. Returns status and message tuple. - -It's safe to call this method even if those objects already exist. - -=cut - -sub InsertInitialData { - my $self = shift; - - my @warns; - - # create RT_System user and grant him rights - { - require RT::CurrentUser; - - my $test_user = RT::User->new( new RT::CurrentUser ); - $test_user->Load('RT_System'); - if ( $test_user->id ) { - push @warns, "Found system user in the DB."; - } - else { - my $user = RT::User->new( new RT::CurrentUser ); - my ( $val, $msg ) = $user->_BootstrapCreate( - Name => 'RT_System', - RealName => 'The RT System itself', - Comments => 'Do not delete or modify this user. ' - . 'It is integral to RT\'s internal database structures', - Creator => '1', - LastUpdatedBy => '1', - ); - return ($val, $msg) unless $val; - } - DBIx::SearchBuilder::Record::Cachable->FlushCache; - } - - # init RT::SystemUser and RT::System objects - RT::InitSystemObjects(); - unless ( $RT::SystemUser->id ) { - return (0, "Couldn't load system user"); - } - - # grant SuperUser right to system user - { - my $test_ace = RT::ACE->new( $RT::SystemUser ); - $test_ace->LoadByCols( - PrincipalId => ACLEquivGroupId( $RT::SystemUser->Id ), - PrincipalType => 'Group', - RightName => 'SuperUser', - ObjectType => 'RT::System', - ObjectId => 1, - ); - if ( $test_ace->id ) { - push @warns, "System user has global SuperUser right."; - } else { - my $ace = RT::ACE->new( $RT::SystemUser ); - my ( $val, $msg ) = $ace->_BootstrapCreate( - PrincipalId => ACLEquivGroupId( $RT::SystemUser->Id ), - PrincipalType => 'Group', - RightName => 'SuperUser', - ObjectType => 'RT::System', - ObjectId => 1, - ); - return ($val, $msg) unless $val; - } - DBIx::SearchBuilder::Record::Cachable->FlushCache; - } - - # system groups - # $self->loc('Everyone'); # For the string extractor to get a string to localize - # $self->loc('Privileged'); # For the string extractor to get a string to localize - # $self->loc('Unprivileged'); # For the string extractor to get a string to localize - foreach my $name (qw(Everyone Privileged Unprivileged)) { - my $group = RT::Group->new( $RT::SystemUser ); - $group->LoadSystemInternalGroup( $name ); - if ( $group->id ) { - push @warns, "System group '$name' already exists."; - next; - } - - $group = RT::Group->new( $RT::SystemUser ); - my ( $val, $msg ) = $group->_Create( - Type => $name, - Domain => 'SystemInternal', - Description => 'Pseudogroup for internal use', # loc - Name => '', - Instance => '', - ); - return ($val, $msg) unless $val; - } - - # nobody - { - my $user = RT::User->new( $RT::SystemUser ); - $user->Load('Nobody'); - if ( $user->id ) { - push @warns, "Found 'Nobody' user in the DB."; - } - else { - my ( $val, $msg ) = $user->Create( - Name => 'Nobody', - RealName => 'Nobody in particular', - Comments => 'Do not delete or modify this user. It is integral ' - .'to RT\'s internal data structures', - Privileged => 0, - ); - return ($val, $msg) unless $val; - } - - if ( $user->HasRight( Right => 'OwnTicket', Object => $RT::System ) ) { - push @warns, "User 'Nobody' has global OwnTicket right."; - } else { - my ( $val, $msg ) = $user->PrincipalObj->GrantRight( - Right => 'OwnTicket', - Object => $RT::System, - ); - return ($val, $msg) unless $val; - } - } - - # rerun to get init Nobody as well - RT::InitSystemObjects(); - - # system role groups - foreach my $name (qw(Owner Requestor Cc AdminCc)) { - my $group = RT::Group->new( $RT::SystemUser ); - $group->LoadSystemRoleGroup( $name ); - if ( $group->id ) { - push @warns, "System role '$name' already exists."; - next; - } - - $group = RT::Group->new( $RT::SystemUser ); - my ( $val, $msg ) = $group->_Create( - Type => $name, - Domain => 'RT::System-Role', - Description => 'SystemRolegroup for internal use', # loc - Name => '', - Instance => '', - ); - return ($val, $msg) unless $val; - } - - push @warns, "You appear to have a functional RT database." - if @warns; - - return (1, join "\n", @warns); -} - -=head2 InsertData - -Load some sort of data into the database, takes path to a file. - -=cut - -sub InsertData { - my $self = shift; - my $datafile = shift; - - # Slurp in stuff to insert from the datafile. Possible things to go in here:- - our (@Groups, @Users, @ACL, @Queues, @ScripActions, @ScripConditions, - @Templates, @CustomFields, @Scrips, @Attributes, @Initial, @Final); - local (@Groups, @Users, @ACL, @Queues, @ScripActions, @ScripConditions, - @Templates, @CustomFields, @Scrips, @Attributes, @Initial, @Final); - - local $@; - $RT::Logger->debug("Going to load '$datafile' data file"); - eval { require $datafile } - or return (0, "Couldn't load data from '$datafile' for import:\n\nERROR:". $@); - - if ( @Initial ) { - $RT::Logger->debug("Running initial actions..."); - foreach ( @Initial ) { - local $@; - eval { $_->(); 1 } or return (0, "One of initial functions failed: $@"); - } - $RT::Logger->debug("Done."); - } - if ( @Groups ) { - $RT::Logger->debug("Creating groups..."); - foreach my $item (@Groups) { - my $new_entry = RT::Group->new( $RT::SystemUser ); - my $member_of = delete $item->{'MemberOf'}; - my ( $return, $msg ) = $new_entry->_Create(%$item); - unless ( $return ) { - $RT::Logger->error( $msg ); - next; - } else { - $RT::Logger->debug($return ."."); - } - if ( $member_of ) { - $member_of = [ $member_of ] unless ref $member_of eq 'ARRAY'; - foreach( @$member_of ) { - my $parent = RT::Group->new($RT::SystemUser); - if ( ref $_ eq 'HASH' ) { - $parent->LoadByCols( %$_ ); - } - elsif ( !ref $_ ) { - $parent->LoadUserDefinedGroup( $_ ); - } - else { - $RT::Logger->error( - "(Error: wrong format of MemberOf field." - ." Should be name of user defined group or" - ." hash reference with 'column => value' pairs." - ." Use array reference to add to multiple groups)" - ); - next; - } - unless ( $parent->Id ) { - $RT::Logger->error("(Error: couldn't load group to add member)"); - next; - } - my ( $return, $msg ) = $parent->AddMember( $new_entry->Id ); - unless ( $return ) { - $RT::Logger->error( $msg ); - } else { - $RT::Logger->debug( $return ."." ); - } - } - } - } - $RT::Logger->debug("done."); - } - if ( @Users ) { - $RT::Logger->debug("Creating users..."); - foreach my $item (@Users) { - my $new_entry = new RT::User( $RT::SystemUser ); - my ( $return, $msg ) = $new_entry->Create(%$item); - unless ( $return ) { - $RT::Logger->error( $msg ); - } else { - $RT::Logger->debug( $return ."." ); - } - } - $RT::Logger->debug("done."); - } - if ( @Queues ) { - $RT::Logger->debug("Creating queues..."); - for my $item (@Queues) { - my $new_entry = new RT::Queue($RT::SystemUser); - my ( $return, $msg ) = $new_entry->Create(%$item); - unless ( $return ) { - $RT::Logger->error( $msg ); - } else { - $RT::Logger->debug( $return ."." ); - } - } - $RT::Logger->debug("done."); - } - if ( @CustomFields ) { - $RT::Logger->debug("Creating custom fields..."); - for my $item ( @CustomFields ) { - my $new_entry = new RT::CustomField( $RT::SystemUser ); - my $values = delete $item->{'Values'}; - - my @queues; - # if ref then it's list of queues, so we do things ourself - if ( exists $item->{'Queue'} && ref $item->{'Queue'} ) { - $item->{'LookupType'} = 'RT::Queue-RT::Ticket'; - @queues = @{ delete $item->{'Queue'} }; - } - - my ( $return, $msg ) = $new_entry->Create(%$item); - unless( $return ) { - $RT::Logger->error( $msg ); - next; - } - - foreach my $value ( @{$values} ) { - my ( $return, $msg ) = $new_entry->AddValue(%$value); - $RT::Logger->error( $msg ) unless $return; - } - - # apply by default - if ( !@queues && !exists $item->{'Queue'} && $item->{LookupType} ) { - my $ocf = RT::ObjectCustomField->new($RT::SystemUser); - $ocf->Create( CustomField => $new_entry->Id ); - } - - for my $q (@queues) { - my $q_obj = RT::Queue->new($RT::SystemUser); - $q_obj->Load($q); - unless ( $q_obj->Id ) { - $RT::Logger->error("Could not find queue ". $q ); - next; - } - my $OCF = RT::ObjectCustomField->new($RT::SystemUser); - ( $return, $msg ) = $OCF->Create( - CustomField => $new_entry->Id, - ObjectId => $q_obj->Id, - ); - $RT::Logger->error( $msg ) unless $return and $OCF->Id; - } - } - - $RT::Logger->debug("done."); - } - if ( @ACL ) { - $RT::Logger->debug("Creating ACL..."); - for my $item (@ACL) { - - my ($princ, $object); - - # Global rights or Queue rights? - if ( $item->{'CF'} ) { - $object = RT::CustomField->new( $RT::SystemUser ); - my @columns = ( Name => $item->{'CF'} ); - push @columns, Queue => $item->{'Queue'} if $item->{'Queue'} and not ref $item->{'Queue'}; - $object->LoadByName( @columns ); - } elsif ( $item->{'Queue'} ) { - $object = RT::Queue->new($RT::SystemUser); - $object->Load( $item->{'Queue'} ); - } else { - $object = $RT::System; - } - - $RT::Logger->error("Couldn't load object") and next unless $object and $object->Id; - - # Group rights or user rights? - if ( $item->{'GroupDomain'} ) { - $princ = RT::Group->new($RT::SystemUser); - if ( $item->{'GroupDomain'} eq 'UserDefined' ) { - $princ->LoadUserDefinedGroup( $item->{'GroupId'} ); - } elsif ( $item->{'GroupDomain'} eq 'SystemInternal' ) { - $princ->LoadSystemInternalGroup( $item->{'GroupType'} ); - } elsif ( $item->{'GroupDomain'} eq 'RT::System-Role' ) { - $princ->LoadSystemRoleGroup( $item->{'GroupType'} ); - } elsif ( $item->{'GroupDomain'} eq 'RT::Queue-Role' && - $item->{'Queue'} ) - { - $princ->LoadQueueRoleGroup( Type => $item->{'GroupType'}, - Queue => $object->id); - } else { - $princ->Load( $item->{'GroupId'} ); - } - } else { - $princ = RT::User->new($RT::SystemUser); - $princ->Load( $item->{'UserId'} ); - } - - # Grant it - my ( $return, $msg ) = $princ->PrincipalObj->GrantRight( - Right => $item->{'Right'}, - Object => $object - ); - unless ( $return ) { - $RT::Logger->error( $msg ); - } - else { - $RT::Logger->debug( $return ."." ); - } - } - $RT::Logger->debug("done."); - } - - if ( @ScripActions ) { - $RT::Logger->debug("Creating ScripActions..."); - - for my $item (@ScripActions) { - my $new_entry = RT::ScripAction->new($RT::SystemUser); - my ( $return, $msg ) = $new_entry->Create(%$item); - unless ( $return ) { - $RT::Logger->error( $msg ); - } - else { - $RT::Logger->debug( $return ."." ); - } - } - - $RT::Logger->debug("done."); - } - - if ( @ScripConditions ) { - $RT::Logger->debug("Creating ScripConditions..."); - - for my $item (@ScripConditions) { - my $new_entry = RT::ScripCondition->new($RT::SystemUser); - my ( $return, $msg ) = $new_entry->Create(%$item); - unless ( $return ) { - $RT::Logger->error( $msg ); - } - else { - $RT::Logger->debug( $return ."." ); - } - } - - $RT::Logger->debug("done."); - } - - if ( @Templates ) { - $RT::Logger->debug("Creating templates..."); - - for my $item (@Templates) { - my $new_entry = new RT::Template($RT::SystemUser); - my ( $return, $msg ) = $new_entry->Create(%$item); - unless ( $return ) { - $RT::Logger->error( $msg ); - } - else { - $RT::Logger->debug( $return ."." ); - } - } - $RT::Logger->debug("done."); - } - if ( @Scrips ) { - $RT::Logger->debug("Creating scrips..."); - - for my $item (@Scrips) { - my $new_entry = new RT::Scrip($RT::SystemUser); - - my @queues = ref $item->{'Queue'} eq 'ARRAY'? @{ $item->{'Queue'} }: $item->{'Queue'} || 0; - push @queues, 0 unless @queues; # add global queue at least - - foreach my $q ( @queues ) { - my ( $return, $msg ) = $new_entry->Create( %$item, Queue => $q ); - unless ( $return ) { - $RT::Logger->error( $msg ); - } - else { - $RT::Logger->debug( $return ."." ); - } - } - } - $RT::Logger->debug("done."); - } - if ( @Attributes ) { - $RT::Logger->debug("Creating predefined searches..."); - my $sys = RT::System->new($RT::SystemUser); - - for my $item (@Attributes) { - my $obj = delete $item->{Object}; # XXX: make this something loadable - $obj ||= $sys; - my ( $return, $msg ) = $obj->AddAttribute (%$item); - unless ( $return ) { - $RT::Logger->error( $msg ); - } - else { - $RT::Logger->debug( $return ."." ); - } - } - $RT::Logger->debug("done."); - } - if ( @Final ) { - $RT::Logger->debug("Running final actions..."); - for ( @Final ) { - local $@; - eval { $_->(); }; - $RT::Logger->error( "Failed to run one of final actions: $@" ) - if $@; - } - $RT::Logger->debug("done."); - } - - my $db_type = RT->Config->Get('DatabaseType'); - $RT::Handle->Disconnect() unless $db_type eq 'SQLite'; - - $RT::Logger->debug("Done setting up database content."); - -# TODO is it ok to return 1 here? If so, the previous codes in this sub -# should return (0, $msg) if error happens instead of just warning. -# anyway, we need to return something here to tell if everything is ok - return( 1, 'Done inserting data' ); -} - -=head2 ACLEquivGroupId - -Given a userid, return that user's acl equivalence group - -=cut - -sub ACLEquivGroupId { - my $id = shift; - - my $cu = $RT::SystemUser; - unless ( $cu ) { - require RT::CurrentUser; - $cu = new RT::CurrentUser; - $cu->LoadByName('RT_System'); - warn "Couldn't load RT_System user" unless $cu->id; - } - - my $equiv_group = RT::Group->new( $cu ); - $equiv_group->LoadACLEquivalenceGroup( $id ); - return $equiv_group->Id; -} - -__PACKAGE__->FinalizeDatabaseType; - eval "require RT::Handle_Vendor"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/Handle_Vendor.pm}); eval "require RT::Handle_Local"; diff --git a/rt/lib/RT/I18N/en_malkovich.po b/rt/lib/RT/I18N/en_malkovich.po deleted file mode 100644 index 74769f1a3..000000000 --- a/rt/lib/RT/I18N/en_malkovich.po +++ /dev/null @@ -1,3973 +0,0 @@ -msgid "" -msgstr "" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: html/Approvals/Elements/Approve:26 html/Approvals/Elements/ShowDependency:49 html/SelfService/Display.html:24 html/Ticket/Display.html:25 html/Ticket/Display.html:29 -#. ($TicketObj->Id, $TicketObj->Subject) -#. ($Ticket->id, $Ticket->Subject) -#. ($ticket->Id, $ticket->Subject) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "#%1: %2" -msgstr "#%1: %2" - -#: html/Search/Elements/SelectPersonType:30 lib/RT/Date.pm:337 -#. ($s, $time_unit) -#. ($option, $subtype) -msgid "%1 %2" -msgstr "%1 %2" - -#: lib/RT/Tickets_Overlay.pm:828 -#. ($args{'FIELD'}, $args{'OPERATOR'}, $args{'VALUE'}) -msgid "%1 %2 %3" -msgstr "%1 %2 %3" - -#: lib/RT/Date.pm:373 -#. ($self->GetWeekday($wday), $self->GetMonth($mon), map {sprintf "%02d", $_} ($mday, $hour, $min, $sec), ($year+1900)) -msgid "%1 %2 %3 %4:%5:%6 %7" -msgstr "%1 %2 %3 %4:%5:%6 %7" - -#: lib/RT/Ticket_Overlay.pm:3451 lib/RT/Transaction_Overlay.pm:550 lib/RT/Transaction_Overlay.pm:593 -#. ($cf->Name, $new_value->Content) -#. ($field, $self->NewValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 added" -msgstr "%1 %2 Malkovich" - -#: lib/RT/Date.pm:334 -#. ($s, $time_unit) -msgid "%1 %2 ago" -msgstr "%1 %2 ago" - -#: lib/RT/Ticket_Overlay.pm:3457 lib/RT/Transaction_Overlay.pm:557 -#. ($cf->Name, $old_value, $new_value->Content) -#. ($field, $self->OldValue, $self->NewValue) -msgid "%1 %2 changed to %3" -msgstr "%1 %2 Malkovich to %3" - -#: lib/RT/Ticket_Overlay.pm:3454 lib/RT/Transaction_Overlay.pm:553 lib/RT/Transaction_Overlay.pm:599 -#. ($cf->Name, $old_value) -#. ($field, $self->OldValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 deleted" -msgstr "%1 %2 Malkovich" - -#: html/Admin/Elements/EditScrips:43 html/Admin/Elements/ListGlobalScrips:27 html/Ticket/Elements/PreviewScrips:53 -#. ($scrip->ConditionObj->Name, $scrip->ActionObj->Name, $scrip->TemplateObj->Name) -#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) -msgid "%1 %2 with template %3" -msgstr "%1 %2 Malkovich %3" - -#: bin/rt-crontool:165 bin/rt-crontool:172 bin/rt-crontool:178 -#. ("--search-argument", "--search") -#. ("--condition-argument", "--condition") -#. ("--action-argument", "--action") -msgid "%1 - An argument to pass to %2" -msgstr "%1 - A Malkovich to pass to %2" - -#: bin/rt-crontool:181 -#. ("--verbose") -msgid "%1 - Output status updates to STDOUT" -msgstr "%1 - Malkovich Malkovich to MALKOVICH" - -#: bin/rt-crontool:175 -#. ("--action") -msgid "%1 - Specify the action module you want to use" -msgstr "%1 - Malkovich the Malkovich Malkovich to use" - -#: bin/rt-crontool:169 -#. ("--condition") -msgid "%1 - Specify the condition module you want to use" -msgstr "%1 - Malkovich the Malkovich Malkovich to use" - -#: bin/rt-crontool:162 -#. ("--search") -msgid "%1 - Specify the search module you want to use" -msgstr "%1 - Malkovich the Malkovich Malkovich to use" - -#: lib/RT/ScripAction_Overlay.pm:114 -#. ($self->Id) -msgid "%1 ScripAction loaded" -msgstr "%1 Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:3484 -#. ($args{'Value'}, $cf->Name) -msgid "%1 added as a value for %2" -msgstr "%1 Malkovich as a Malkovich %2" - -#: lib/RT/Link_Overlay.pm:111 lib/RT/Link_Overlay.pm:118 -#. ($args{'Base'}) -#. ($args{'Target'}) -msgid "%1 appears to be a local object, but can't be found in the database" -msgstr "%1 Malkovich to be a Malkovich, but can't be Malkovich in the Malkovich" - -#: html/Ticket/Elements/ShowDates:52 lib/RT/Transaction_Overlay.pm:458 -#. ($self->BriefDescription , $self->CreatorObj->Name) -#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) -msgid "%1 by %2" -msgstr "%1 by %2" - -#: lib/RT/Transaction_Overlay.pm:512 lib/RT/Transaction_Overlay.pm:688 lib/RT/Transaction_Overlay.pm:697 lib/RT/Transaction_Overlay.pm:700 -#. ($self->Field , ( $self->OldValue || $no_value ) , $self->NewValue) -#. ($self->Field , $q1->Name , $q2->Name) -#. ($self->Field, $t2->AsString, $t1->AsString) -#. ($self->Field, $self->OldValue, $self->NewValue) -msgid "%1 changed from %2 to %3" -msgstr "%1 Malkovich %2 to %3" - -#: lib/RT/Record.pm:739 -msgid "%1 could not be set to %2." -msgstr "%1 Malkovich be set to %2." - -#: lib/RT/Ticket_Overlay.pm:2739 -#. ($self) -msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." -msgstr "%1 couldn't Malkovich to Malkovich. RT's Malkovich be Malkovich." - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets I own..." -msgstr "%1 Malkovich Malkovich I Malkovich..." - -#: html/Elements/MyTickets:26 -#. ($rows) -msgid "%1 highest priority tickets I requested..." -msgstr "%1 Malkovich Malkovich I Malkovich..." - -#: bin/rt-crontool:157 -#. ($0) -msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." -msgstr "%1 is a tool to act on Malkovich a Malkovich Malkovich, such as cron." - -#: lib/RT/Queue_Overlay.pm:784 -#. ($principal->Object->Name, $args{'Type'}) -msgid "%1 is no longer a %2 for this queue." -msgstr "%1 is no Malkovich a %2 Malkovich." - -#: lib/RT/Ticket_Overlay.pm:3540 -#. ($args{'Value'}, $cf->Name) -msgid "%1 is no longer a value for custom field %2" -msgstr "%1 is no Malkovich a Malkovich Malkovich %2" - -#: html/Ticket/Create.html:155 html/Ticket/Create.html:156 html/Ticket/Elements/ShowBasics:36 html/Ticket/Elements/ShowBasics:42 html/Ticket/Elements/ShowBasics:47 -#. ('<input size=3 name="TimeWorked" value="'.$ARGS{TimeWorked}.'">') -#. ('<input size=3 name="TimeLeft" value="'.$ARGS{TimeLeft}.'">') -#. ($Ticket->TimeEstimated) -#. ($Ticket->TimeWorked) -#. ($Ticket->TimeLeft) -msgid "%1 min" -msgstr "%1 min" - -#: html/User/Elements/DelegateRights:75 -#. (loc($ObjectType =~ /^RT::(.*)$/)) -msgid "%1 rights" -msgstr "%1 Malkovich" - -#: lib/RT/Action/ResolveMembers.pm:41 -#. (ref $self) -msgid "%1 will resolve all members of a resolved group ticket." -msgstr "%1 Malkovich Malkovich of a Malkovich Malkovich." - -#: lib/RT/Transaction_Overlay.pm:408 -#. ($self) -msgid "%1: no attachment specified" -msgstr "%1: no Malkovich Malkovich" - -#: html/Ticket/Elements/ShowTransactionAttachments:56 -#. ($size) -msgid "%1b" -msgstr "%1b" - -#: html/Ticket/Elements/ShowTransactionAttachments:53 -#. (int( $size / 102.4 ) / 10) -msgid "%1k" -msgstr "%1k" - -#: lib/RT/Ticket_Overlay.pm:1252 -#. ($args{'Status'}) -msgid "'%1' is an invalid value for status" -msgstr "'%1' is a Malkovich Malkovich" - -#: html/Admin/Elements/EditCustomFieldValues:24 html/Admin/Elements/EditQueueWatchers:28 html/Admin/Elements/EditScrips:34 html/Admin/Elements/EditTemplates:35 html/Admin/Groups/Members.html:51 html/Elements/EditLinks:32 html/Ticket/Elements/EditPeople:45 html/User/Groups/Members.html:54 -msgid "(Check box to delete)" -msgstr "(Malkovich to Malkovich)" - -#: html/Ticket/Elements/PreviewScrips:49 -msgid "(Check boxes to disable notifications to the listed recipients)" -msgstr "(Malkovich to Malkovich Malkovich to the Malkovich Malkovich)" - -#: html/Ticket/Elements/PreviewScrips:71 -msgid "(Check boxes to enable notifications to the listed recipients)" -msgstr "(Malkovich to Malkovich Malkovich to the Malkovich Malkovich)" - -#: NOT FOUND IN SOURCE -msgid "(Enter ticket ids or URLs, seperated with spaces)" -msgstr "(Malkovich Malkovich or URLs, Malkovich Malkovich)" - -#: html/Admin/Queues/Modify.html:53 html/Admin/Queues/Modify.html:59 -#. ($RT::CorrespondAddress) -#. ($RT::CommentAddress) -msgid "(If left blank, will default to %1" -msgstr "(If Malkovich, Malkovich to %1" - -#: html/Admin/Elements/EditCustomFields:32 html/Admin/Elements/ListGlobalCustomFields:31 -msgid "(No custom fields)" -msgstr "(No Malkovich)" - -#: html/Admin/Groups/Members.html:49 html/User/Groups/Members.html:52 -msgid "(No members)" -msgstr "(No Malkovich)" - -#: html/Admin/Elements/EditScrips:31 html/Admin/Elements/ListGlobalScrips:31 -msgid "(No scrips)" -msgstr "(No Malkovich)" - -#: html/Admin/Elements/EditTemplates:30 -msgid "(No templates)" -msgstr "(No Malkovich)" - -#: html/Ticket/Update.html:66 -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)" -msgstr "(Malkovich a Malkovich-copy of Malkovich to a Malkovich-Malkovich of Malkovich. Does <b>not</b> Malkovich Malkovich Malkovich Malkovich.)" - -#: html/Ticket/Create.html:78 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <b>will</b> receive future updates.)" -msgstr "(Malkovich a Malkovich-copy of Malkovich to a Malkovich-Malkovich of Malkovich Malkovich Malkovich. Malkovich <b>will</b> Malkovich Malkovich.)" - -#: html/Ticket/Update.html:62 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)" -msgstr "(Malkovich a Malkovich-copy of Malkovich to a Malkovich-Malkovich of Malkovich. Does <b>not</b> Malkovich Malkovich Malkovich Malkovich.)" - -#: html/Ticket/Create.html:68 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <b>will</b> receive future updates.)" -msgstr "(Malkovich a Malkovich-copy of Malkovich to a Malkovich-Malkovich of Malkovich. Malkovich <b>will</b> Malkovich Malkovich.)" - -#: html/Admin/Groups/index.html:32 html/User/Groups/index.html:32 -msgid "(empty)" -msgstr "(Malkovich)" - -#: html/Admin/Users/index.html:38 -msgid "(no name listed)" -msgstr "(no Malkovich)" - -#: html/Admin/Elements/SelectRights:47 html/Elements/SelectCustomFieldValue:29 html/Ticket/Elements/EditCustomField:64 html/Ticket/Elements/ShowCustomFields:35 lib/RT/Transaction_Overlay.pm:511 -msgid "(no value)" -msgstr "(no Malkovich)" - -#: html/Elements/EditLinks:105 html/Ticket/Elements/BulkLinks:27 -msgid "(only one ticket)" -msgstr "(Malkovich)" - -#: html/Elements/TicketList:167 -msgid "(pending approval)" -msgstr "(Malkovich Malkovich)" - -#: html/Elements/TicketList:170 -msgid "(pending other Collection)" -msgstr "(Malkovich Malkovich)" - -#: NOT FOUND IN SOURCE -msgid "(pending other tickets)" -msgstr "(Malkovich Malkovich)" - -#: html/Admin/Users/Modify.html:49 -msgid "(required)" -msgstr "(Malkovich)" - -#: html/Ticket/Elements/ShowTransactionAttachments:60 -msgid "(untitled)" -msgstr "(Malkovich)" - -#: NOT FOUND IN SOURCE -msgid "..." -msgstr "..." - -#: html/Ticket/Elements/ShowBasics:31 -msgid "<% $Ticket->Status%>" -msgstr "<% $Ticket->Status %>" - -#: html/Elements/SelectTicketTypes:26 -msgid "<% $_ %>" -msgstr "<% $_ %>" - -#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:25 lib/RT/StyleGuide.pod:767 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" value=\"New ticket in\"> %1" -msgstr "<input type=\"submit\" value=\"Malkovich in\"> %1" - -#: etc/initialdata:218 -msgid "A blank template" -msgstr "A Malkovich" - -#: lib/RT/ACE_Overlay.pm:156 lib/RT/Principal_Overlay.pm:180 -msgid "ACE not found" -msgstr "Malkovich" - -#: lib/RT/ACE_Overlay.pm:830 -msgid "ACEs can only be created and deleted." -msgstr "Malkovich be Malkovich and Malkovich." - -#: NOT FOUND IN SOURCE -msgid "Aborting to avoid unintended ticket modifications.\\n" -msgstr "Malkovich to Malkovich Malkovich Malkovich Malkovich.\\n" - -#: html/User/Elements/Tabs:31 -msgid "About me" -msgstr "Malkovich me" - -#: html/Admin/Users/Modify.html:79 -msgid "Access control" -msgstr "Malkovich" - -#: html/Admin/Elements/EditScrip:49 -msgid "Action" -msgstr "Malkovich" - -#: lib/RT/Scrip_Overlay.pm:148 -#. ($args{'ScripAction'}) -msgid "Action %1 not found" -msgstr "Malkovich %1 Malkovich" - -#: bin/rt-crontool:119 -msgid "Action committed." -msgstr "Malkovich Malkovich." - -#: bin/rt-crontool:115 -msgid "Action prepared..." -msgstr "Malkovich..." - -#: html/Search/Bulk.html:93 -msgid "Add AdminCc" -msgstr "Malkovich" - -#: html/Search/Bulk.html:89 -msgid "Add Cc" -msgstr "Add Cc" - -#: html/Ticket/Create.html:113 html/Ticket/Update.html:81 -msgid "Add More Files" -msgstr "Malkovich" - -#: html/Search/Bulk.html:85 -msgid "Add Requestor" -msgstr "Malkovich" - -#: html/Admin/Elements/AddCustomFieldValue:24 -msgid "Add Value" -msgstr "Malkovich" - -#: html/Admin/Global/Scrip.html:54 -msgid "Add a scrip which will apply to all queues" -msgstr "Add a Malkovich Malkovich to Malkovich" - -#: html/Search/Bulk.html:125 -msgid "Add comments or replies to selected tickets" -msgstr "Malkovich or Malkovich to Malkovich Malkovich" - -#: html/Admin/Groups/Members.html:41 html/User/Groups/Members.html:38 -msgid "Add members" -msgstr "Malkovich" - -#: html/Admin/Queues/People.html:65 html/Ticket/Elements/AddWatchers:27 -msgid "Add new watchers" -msgstr "Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:684 -#. ($args{'Type'}) -msgid "Added principal as a %1 for this queue" -msgstr "Malkovich as a %1 Malkovich" - -#: lib/RT/Ticket_Overlay.pm:1547 -#. ($self->loc($args{'Type'})) -msgid "Added principal as a %1 for this ticket" -msgstr "Malkovich as a %1 Malkovich" - -#: html/Admin/Users/Modify.html:119 html/User/Prefs.html:111 -msgid "Address1" -msgstr "Malkovich1" - -#: html/Admin/Users/Modify.html:124 html/User/Prefs.html:115 -msgid "Address2" -msgstr "Malkovich2" - -#: html/Ticket/Create.html:73 -msgid "Admin Cc" -msgstr "Malkovich Cc" - -#: etc/initialdata:295 -msgid "Admin Comment" -msgstr "Malkovich" - -#: etc/initialdata:274 -msgid "Admin Correspondence" -msgstr "Malkovich Malkovich" - -#: html/Admin/Queues/index.html:24 html/Admin/Queues/index.html:27 -msgid "Admin queues" -msgstr "Malkovich" - -#: html/Admin/Global/index.html:25 html/Admin/Global/index.html:27 -msgid "Admin/Global configuration" -msgstr "Malkovich/Malkovich Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Admin/Queue/Basics" -msgstr "Malkovich/Malkovich/Malkovich" - -#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:38 lib/RT/ACE_Overlay.pm:88 -msgid "AdminCc" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:73 -msgid "AdminCustomFields" -msgstr "Malkovich Malkovich" - -#: lib/RT/Group_Overlay.pm:146 -msgid "AdminGroup" -msgstr "Malkovich" - -#: lib/RT/Group_Overlay.pm:148 -msgid "AdminGroupMembership" -msgstr "Malkovich Malkovich" - -#: lib/RT/System.pm:58 -msgid "AdminOwnPersonalGroups" -msgstr "Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:69 -msgid "AdminQueue" -msgstr "Malkovich" - -#: lib/RT/System.pm:59 -msgid "AdminUsers" -msgstr "Malkovich" - -#: html/Admin/Queues/People.html:47 html/Ticket/Elements/EditPeople:53 -msgid "Administrative Cc" -msgstr "Malkovich Cc" - -#: html/Elements/SelectDateRelation:35 -msgid "After" -msgstr "Malkovich" - -#: etc/initialdata:363 -msgid "All Approvals Passed" -msgstr "Malkovich Malkovich" - -#: html/Admin/Elements/EditCustomFields:94 -msgid "All Custom Fields" -msgstr "Malkovich Malkovich" - -#: html/Admin/Queues/index.html:52 -msgid "All Queues" -msgstr "Malkovich" - -#: html/Elements/Tabs:58 -msgid "Approval" -msgstr "Malkovich" - -#: html/Approvals/Display.html:45 html/Approvals/Elements/ShowDependency:41 html/Approvals/index.html:64 -#. ($Ticket->Id, $Ticket->Subject) -#. ($ticket->id, $msg) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Approval #%1: %2" -msgstr "Malkovich #%1: %2" - -#: html/Approvals/index.html:53 -#. ($ticket->Id) -msgid "Approval #%1: Notes not recorded due to a system error" -msgstr "Malkovich #%1: Malkovich Malkovich to a Malkovich" - -#: html/Approvals/index.html:51 -#. ($ticket->Id) -msgid "Approval #%1: Notes recorded" -msgstr "Malkovich #%1: Malkovich" - -#: etc/initialdata:351 -msgid "Approval Passed" -msgstr "Malkovich" - -#: etc/initialdata:374 -msgid "Approval Rejected" -msgstr "Malkovich Malkovich" - -#: html/Approvals/Elements/Approve:43 -msgid "Approve" -msgstr "Malkovich" - -#: etc/initialdata:504 -msgid "Approver's notes: %1" -msgstr "Malkovich's Malkovich: %1" - -#: lib/RT/Date.pm:414 -msgid "Apr." -msgstr "Apr." - -#: html/Elements/SelectSortOrder:34 html/Search/Elements/DisplayOptions:52 -msgid "Ascending" -msgstr "Malkovich" - -#: html/Search/Bulk.html:134 html/SelfService/Update.html:47 html/Ticket/ModifyAll.html:82 html/Ticket/Update.html:81 -msgid "Attach" -msgstr "Malkovich" - -#: html/SelfService/Create.html:64 html/Ticket/Create.html:109 -msgid "Attach file" -msgstr "Malkovich" - -#: html/SelfService/Update.html:36 html/Ticket/Create.html:97 html/Ticket/Update.html:70 -msgid "Attached file" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:416 -msgid "Attachment created" -msgstr "Malkovich Malkovich" - -#: lib/RT/Tickets_Overlay.pm:1251 -msgid "Attachment filename" -msgstr "Malkovich Malkovich" - -#: html/Ticket/Elements/ShowAttachments:25 -msgid "Attachments" -msgstr "Malkovich" - -#: lib/RT/Attributes_Overlay.pm:158 -msgid "Attribute Deleted" -msgstr "Malkovich Malkovich" - -#: lib/RT/Date.pm:418 -msgid "Aug." -msgstr "Aug." - -#: NOT FOUND IN SOURCE -msgid "AuthSystem" -msgstr "Malkovich" - -#: etc/initialdata:221 -msgid "Autoreply" -msgstr "Malkovich" - -#: etc/initialdata:72 -msgid "Autoreply To Requestors" -msgstr "Malkovich To Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Bad data in %1" -msgstr "Malkovich in %1" - -#: html/Admin/Elements/GroupTabs:38 html/Admin/Elements/QueueTabs:38 html/Admin/Elements/UserTabs:37 html/Ticket/Elements/Tabs:91 html/User/Elements/GroupTabs:37 -msgid "Basics" -msgstr "Malkovich" - -#: html/Ticket/Update.html:64 -msgid "Bcc" -msgstr "Bcc" - -#: html/Admin/Elements/EditScrip:73 -msgid "Be sure to save your changes" -msgstr "Be sure to Malkovich Malkovich" - -#: html/Elements/SelectDateRelation:33 lib/RT/CurrentUser.pm:336 -msgid "Before" -msgstr "Malkovich" - -#: etc/initialdata:217 -msgid "Blank" -msgstr "Malkovich" - -#: html/Ticket/Elements/ShowHistory:38 html/Ticket/Elements/ShowHistory:44 -msgid "Brief headers" -msgstr "Malkovich" - -#: html/Search/Bulk.html:24 html/Search/Bulk.html:25 -msgid "Bulk ticket update" -msgstr "Malkovich Malkovich" - -#: lib/RT/User_Overlay.pm:1533 -msgid "Can not modify system users" -msgstr "Malkovich Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:68 -msgid "Can this principal see this queue" -msgstr "Malkovich Malkovich Malkovich" - -#: lib/RT/CustomField_Overlay.pm:211 -msgid "Can't add a custom field value without a name" -msgstr "Can't add a Malkovich Malkovich Malkovich a name" - -#: lib/RT/Link_Overlay.pm:126 -msgid "Can't link a ticket to itself" -msgstr "Can't link a Malkovich to Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2716 -msgid "Can't merge into a merged ticket. You should never get this error" -msgstr "Can't Malkovich a Malkovich. Malkovich Malkovich Malkovich" - -#: lib/RT/Record.pm:1060 lib/RT/Record.pm:1138 -msgid "Can't specifiy both base and target" -msgstr "Can't Malkovich Malkovich and Malkovich" - -#: html/autohandler:132 -#. ($msg) -msgid "Cannot create user: %1" -msgstr "Malkovich Malkovich: %1" - -#: etc/initialdata:50 html/Admin/Queues/People.html:43 html/SelfService/Create.html:48 html/Ticket/Create.html:63 html/Ticket/Elements/EditPeople:50 html/Ticket/Elements/ShowPeople:34 html/Ticket/Update.html:59 lib/RT/ACE_Overlay.pm:87 -msgid "Cc" -msgstr "Cc" - -#: html/SelfService/Prefs.html:30 -msgid "Change password" -msgstr "Malkovich" - -#: html/SelfService/Update.html:39 html/Ticket/Create.html:100 html/Ticket/Update.html:73 -msgid "Check box to delete" -msgstr "Malkovich to Malkovich" - -#: html/Admin/Elements/SelectRights:30 -msgid "Check box to revoke right" -msgstr "Malkovich to Malkovich" - -#: html/Elements/EditLinks:121 html/Elements/EditLinks:63 html/Elements/ShowLinks:56 html/Ticket/Create.html:183 html/Ticket/Elements/BulkLinks:42 -msgid "Children" -msgstr "Malkovich" - -#: html/Admin/Users/Modify.html:129 html/User/Prefs.html:119 -msgid "City" -msgstr "City" - -#: html/Ticket/Elements/ShowDates:47 -msgid "Closed" -msgstr "Malkovich" - -#: html/SelfService/Closed.html:24 -msgid "Closed Tickets" -msgstr "Malkovich" - -#: html/SelfService/Elements/Tabs:44 -msgid "Closed tickets" -msgstr "Malkovich" - -#: html/Ticket/Elements/ShowTransaction:152 html/Ticket/Elements/Tabs:154 -msgid "Comment" -msgstr "Malkovich" - -#: html/Admin/Queues/Modify.html:57 -msgid "Comment Address" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:88 -msgid "Comment on tickets" -msgstr "Malkovich on Malkovich" - -#: lib/RT/Queue_Overlay.pm:88 -msgid "CommentOnTicket" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Comments" -msgstr "Malkovich" - -#: html/Ticket/ModifyAll.html:69 html/Ticket/Update.html:51 -msgid "Comments (Not sent to requestors)" -msgstr "Malkovich (Malkovich to Malkovich)" - -#: html/Search/Bulk.html:129 -msgid "Comments (not sent to requestors)" -msgstr "Malkovich (Malkovich to Malkovich)" - -#: NOT FOUND IN SOURCE -msgid "Comments about %1" -msgstr "Malkovich %1" - -#: html/Admin/Users/Modify.html:182 html/Ticket/Elements/ShowRequestor:45 -msgid "Comments about this user" -msgstr "Malkovich Malkovich" - -#: lib/RT/Transaction_Overlay.pm:537 -msgid "Comments added" -msgstr "Malkovich" - -#: lib/RT/Action/Generic.pm:149 -msgid "Commit Stubbed" -msgstr "Malkovich" - -#: html/Admin/Elements/EditScrip:41 -msgid "Condition" -msgstr "Malkovich" - -#: bin/rt-crontool:105 -msgid "Condition matches..." -msgstr "Malkovich Malkovich..." - -#: lib/RT/Scrip_Overlay.pm:164 -msgid "Condition not found" -msgstr "Malkovich Malkovich" - -#: html/Elements/Tabs:52 -msgid "Configuration" -msgstr "Malkovich" - -#: html/SelfService/Prefs.html:32 -msgid "Confirm" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "ContactInfoSystem" -msgstr "Malkovich Malkovich" - -#: html/Admin/Elements/ModifyTemplate:43 html/Elements/SelectAttachmentField:26 html/Ticket/ModifyAll.html:86 -msgid "Content" -msgstr "Malkovich" - -#: etc/initialdata:286 -msgid "Correspondence" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Correspondence Address" -msgstr "Malkovich Malkovich" - -#: lib/RT/Transaction_Overlay.pm:533 -msgid "Correspondence added" -msgstr "Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:3471 -msgid "Could not add new custom field value for ticket. " -msgstr "Malkovich Malkovich Malkovich Malkovich Malkovich. " - -#: lib/RT/Ticket_Overlay.pm:2967 lib/RT/Ticket_Overlay.pm:2975 lib/RT/Ticket_Overlay.pm:2992 -msgid "Could not change owner. " -msgstr "Malkovich Malkovich. " - -#: html/Admin/Elements/EditCustomField:84 html/Admin/Elements/EditCustomFields:164 -#. ($msg) -msgid "Could not create CustomField" -msgstr "Malkovich Malkovich Malkovich" - -#: html/User/Groups/Modify.html:76 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 -msgid "Could not create group" -msgstr "Malkovich Malkovich" - -#: html/Admin/Global/Template.html:74 html/Admin/Queues/Template.html:71 -#. ($msg) -msgid "Could not create template: %1" -msgstr "Malkovich Malkovich: %1" - -#: lib/RT/Ticket_Overlay.pm:1185 lib/RT/Ticket_Overlay.pm:364 -msgid "Could not create ticket. Queue not set" -msgstr "Malkovich Malkovich. Malkovich" - -#: lib/RT/User_Overlay.pm:226 lib/RT/User_Overlay.pm:240 lib/RT/User_Overlay.pm:249 lib/RT/User_Overlay.pm:258 lib/RT/User_Overlay.pm:267 lib/RT/User_Overlay.pm:281 lib/RT/User_Overlay.pm:291 lib/RT/User_Overlay.pm:462 -msgid "Could not create user" -msgstr "Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:662 lib/RT/Ticket_Overlay.pm:1515 -msgid "Could not find or create that user" -msgstr "Malkovich or Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:723 lib/RT/Ticket_Overlay.pm:1596 -msgid "Could not find that principal" -msgstr "Malkovich Malkovich Malkovich" - -#: html/Admin/Groups/Members.html:87 html/User/Groups/Members.html:89 html/User/Groups/Modify.html:81 -msgid "Could not load group" -msgstr "Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:682 -#. ($args{'Type'}) -msgid "Could not make that principal a %1 for this queue" -msgstr "Malkovich Malkovich Malkovich a %1 Malkovich" - -#: lib/RT/Ticket_Overlay.pm:1536 -#. ($self->loc($args{'Type'})) -msgid "Could not make that principal a %1 for this ticket" -msgstr "Malkovich Malkovich Malkovich a %1 Malkovich" - -#: lib/RT/Queue_Overlay.pm:781 -#. ($args{'Type'}) -msgid "Could not remove that principal as a %1 for this queue" -msgstr "Malkovich Malkovich Malkovich as a %1 Malkovich" - -#: lib/RT/Group_Overlay.pm:977 -msgid "Couldn't add member to group" -msgstr "Couldn't Malkovich to Malkovich" - -#: lib/RT/Ticket_Overlay.pm:3481 lib/RT/Ticket_Overlay.pm:3537 -#. ($Msg) -msgid "Couldn't create a transaction: %1" -msgstr "Couldn't Malkovich a Malkovich: %1" - -#: lib/RT/Record.pm:748 -msgid "Couldn't find row" -msgstr "Couldn't Malkovich" - -#: lib/RT/Group_Overlay.pm:951 -msgid "Couldn't find that principal" -msgstr "Couldn't Malkovich Malkovich" - -#: lib/RT/CustomField_Overlay.pm:245 -msgid "Couldn't find that value" -msgstr "Couldn't Malkovich" - -#: lib/RT/CurrentUser.pm:123 -#. ($self->Id) -msgid "Couldn't load %1 from the users database.\\n" -msgstr "Couldn't load %1 from the Malkovich.\\n" - -#: html/Admin/Groups/GroupRights.html:87 html/Admin/Groups/UserRights.html:74 -#. ($id) -msgid "Couldn't load group %1" -msgstr "Couldn't Malkovich %1" - -#: lib/RT/Link_Overlay.pm:169 lib/RT/Link_Overlay.pm:178 lib/RT/Link_Overlay.pm:205 -msgid "Couldn't load link" -msgstr "Couldn't Malkovich" - -#: html/Admin/Elements/EditCustomFields:145 html/Admin/Queues/CustomFields.html:35 html/Admin/Queues/People.html:120 -#. ($id) -msgid "Couldn't load queue" -msgstr "Couldn't Malkovich" - -#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:71 -#. ($id) -msgid "Couldn't load queue %1" -msgstr "Couldn't Malkovich %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load that user (%1)" -msgstr "Couldn't Malkovich (%1)" - -#: html/SelfService/Display.html:116 -#. ($id) -msgid "Couldn't load ticket '%1'" -msgstr "Couldn't Malkovich '%1'" - -#: html/Admin/Users/Modify.html:146 html/User/Prefs.html:131 -msgid "Country" -msgstr "Malkovich" - -#: html/Admin/Elements/CreateUserCalled:25 html/Admin/Elements/EditCustomField:62 html/Admin/Elements/EditScrip:110 html/Admin/Groups/Modify.html:55 html/Admin/Queues/Template.html:44 html/Elements/QuickCreate:23 html/Ticket/Create.html:134 html/Ticket/Create.html:195 html/User/Groups/Modify.html:55 -msgid "Create" -msgstr "Malkovich" - -#: etc/initialdata:135 -msgid "Create Tickets" -msgstr "Malkovich" - -#: html/Admin/Elements/EditCustomField:74 -msgid "Create a CustomField" -msgstr "Malkovich a Malkovich" - -#: html/Admin/Queues/CustomField.html:47 -#. ($QueueObj->Name()) -msgid "Create a CustomField for queue %1" -msgstr "Malkovich a Malkovich Malkovich %1" - -#: html/Admin/Global/CustomField.html:47 -msgid "Create a CustomField which applies to all queues" -msgstr "Malkovich a Malkovich Malkovich to Malkovich" - -#: html/Admin/Groups/Modify.html:66 html/Admin/Groups/Modify.html:92 -msgid "Create a new group" -msgstr "Malkovich a Malkovich" - -#: html/User/Groups/Modify.html:66 html/User/Groups/Modify.html:91 -msgid "Create a new personal group" -msgstr "Malkovich a Malkovich Malkovich" - -#: html/Ticket/Create.html:24 html/Ticket/Create.html:27 html/Ticket/Create.html:35 -msgid "Create a new ticket" -msgstr "Malkovich a Malkovich" - -#: html/Admin/Users/Modify.html:211 html/Admin/Users/Modify.html:268 -msgid "Create a new user" -msgstr "Malkovich a Malkovich" - -#: html/Admin/Queues/Modify.html:103 -msgid "Create a queue" -msgstr "Malkovich a Malkovich" - -#: html/Admin/Queues/Scrip.html:58 -#. ($QueueObj->Name) -msgid "Create a scrip for queue %1" -msgstr "Malkovich a Malkovich %1" - -#: html/Admin/Global/Template.html:68 html/Admin/Queues/Template.html:64 -msgid "Create a template" -msgstr "Malkovich a Malkovich" - -#: html/SelfService/Create.html:24 -msgid "Create a ticket" -msgstr "Malkovich a Malkovich" - -#: etc/initialdata:137 -msgid "Create new tickets based on this scrip's template" -msgstr "Malkovich Malkovich on Malkovich's Malkovich" - -#: html/SelfService/Create.html:77 -msgid "Create ticket" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:86 -msgid "Create tickets in this queue" -msgstr "Malkovich in Malkovich" - -#: lib/RT/Queue_Overlay.pm:73 -msgid "Create, delete and modify custom fields" -msgstr "Malkovich, Malkovich and Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:69 -msgid "Create, delete and modify queues" -msgstr "Malkovich, Malkovich and Malkovich" - -#: lib/RT/System.pm:58 -msgid "Create, delete and modify the members of personal groups" -msgstr "Malkovich, Malkovich and Malkovich the Malkovich of Malkovich" - -#: lib/RT/System.pm:59 -msgid "Create, delete and modify users" -msgstr "Malkovich, Malkovich and Malkovich" - -#: lib/RT/Queue_Overlay.pm:86 -msgid "CreateTicket" -msgstr "Malkovich" - -#: html/Elements/SelectDateType:25 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1279 -msgid "Created" -msgstr "Malkovich" - -#: html/Admin/Elements/EditCustomField:87 -#. ($CustomFieldObj->Name()) -msgid "Created CustomField %1" -msgstr "Malkovich Malkovich %1" - -#: html/Elements/EditLinks:27 -msgid "Current Links" -msgstr "Malkovich Malkovich" - -#: html/Admin/Elements/EditScrips:29 -msgid "Current Scrips" -msgstr "Malkovich" - -#: html/Admin/Groups/Members.html:38 html/User/Groups/Members.html:41 -msgid "Current members" -msgstr "Malkovich" - -#: html/Admin/Elements/SelectRights:28 -msgid "Current rights" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Current search criteria" -msgstr "Malkovich Malkovich" - -#: html/Admin/Queues/People.html:40 html/Ticket/Elements/EditPeople:44 -msgid "Current watchers" -msgstr "Malkovich Malkovich" - -#: html/Admin/Global/CustomField.html:54 -#. ($CustomField) -msgid "Custom Field #%1" -msgstr "Malkovich #%1" - -#: html/Admin/Elements/QueueTabs:52 html/Admin/Elements/SystemTabs:39 html/Admin/Global/index.html:49 html/Ticket/Elements/ShowSummary:35 -msgid "Custom Fields" -msgstr "Malkovich" - -#: html/Admin/Elements/EditScrip:101 -msgid "Custom action cleanup code" -msgstr "Malkovich Malkovich Malkovich" - -#: html/Admin/Elements/EditScrip:93 -msgid "Custom action preparation code" -msgstr "Malkovich Malkovich Malkovich" - -#: html/Admin/Elements/EditScrip:85 -msgid "Custom condition" -msgstr "Malkovich Malkovich" - -#: lib/RT/Tickets_Overlay.pm:1693 -#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) -msgid "Custom field %1 %2 %3" -msgstr "Malkovich %1 %2 %3" - -#: lib/RT/Tickets_Overlay.pm:1688 -#. ($CF->Name) -msgid "Custom field %1 has a value." -msgstr "Malkovich %1 has a Malkovich." - -#: lib/RT/Tickets_Overlay.pm:1685 -#. ($CF->Name) -msgid "Custom field %1 has no value." -msgstr "Malkovich %1 has no Malkovich." - -#: lib/RT/Ticket_Overlay.pm:3373 -#. ($args{'Field'}) -msgid "Custom field %1 not found" -msgstr "Malkovich %1 Malkovich" - -#: html/Admin/Elements/EditCustomFields:195 -msgid "Custom field deleted" -msgstr "Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:3523 -msgid "Custom field not found" -msgstr "Malkovich Malkovich" - -#: lib/RT/CustomField_Overlay.pm:355 -#. ($args{'Content'}, $self->Name) -msgid "Custom field value %1 could not be found for custom field %2" -msgstr "Malkovich Malkovich %1 Malkovich be Malkovich Malkovich %2" - -#: lib/RT/CustomField_Overlay.pm:255 -msgid "Custom field value could not be deleted" -msgstr "Malkovich Malkovich Malkovich be Malkovich" - -#: lib/RT/CustomField_Overlay.pm:361 -msgid "Custom field value could not be found" -msgstr "Malkovich Malkovich Malkovich be Malkovich" - -#: lib/RT/CustomField_Overlay.pm:253 lib/RT/CustomField_Overlay.pm:363 -msgid "Custom field value deleted" -msgstr "Malkovich Malkovich Malkovich" - -#: lib/RT/Transaction_Overlay.pm:541 -msgid "CustomField" -msgstr "Malkovich" - -#: html/SelfService/Display.html:38 html/Ticket/Create.html:160 html/Ticket/Elements/ShowSummary:54 html/Ticket/Elements/Tabs:94 html/Ticket/ModifyAll.html:43 -msgid "Dates" -msgstr "Malkovich" - -#: lib/RT/Date.pm:422 -msgid "Dec." -msgstr "Dec." - -#: etc/initialdata:222 -msgid "Default Autoresponse template" -msgstr "Malkovich Malkovich Malkovich" - -#: etc/initialdata:296 -msgid "Default admin comment template" -msgstr "Malkovich Malkovich Malkovich" - -#: etc/initialdata:287 -msgid "Default correspondence template" -msgstr "Malkovich Malkovich Malkovich" - -#: etc/initialdata:253 -msgid "Default transaction template" -msgstr "Malkovich Malkovich Malkovich" - -#: lib/RT/Transaction_Overlay.pm:519 -#. ($type, $self->Field, $self->OldValue, $self->NewValue) -msgid "Default: %1/%2 changed from %3 to %4" -msgstr "Malkovich: %1/%2 Malkovich %3 to %4" - -#: html/User/Delegation.html:24 html/User/Delegation.html:27 -msgid "Delegate rights" -msgstr "Malkovich" - -#: lib/RT/System.pm:62 -msgid "Delegate specific rights which have been granted to you." -msgstr "Malkovich Malkovich Malkovich Malkovich Malkovich to you." - -#: lib/RT/System.pm:62 -msgid "DelegateRights" -msgstr "Malkovich" - -#: html/User/Elements/Tabs:37 -msgid "Delegation" -msgstr "Malkovich" - -#: html/Admin/Elements/EditScrips:53 html/Search/Elements/EditFormat:66 html/Search/Elements/EditSearches:15 -msgid "Delete" -msgstr "Malkovich" - -#: html/Admin/Elements/EditScrips:52 -msgid "Delete selected scrips" -msgstr "Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:91 -msgid "Delete tickets" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:91 -msgid "DeleteTicket" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:162 -msgid "Deleting this object could break referential integrity" -msgstr "Malkovich Malkovich Malkovich Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:329 -msgid "Deleting this object would break referential integrity" -msgstr "Malkovich Malkovich Malkovich Malkovich Malkovich" - -#: lib/RT/User_Overlay.pm:478 -msgid "Deleting this object would violate referential integrity" -msgstr "Malkovich Malkovich Malkovich Malkovich Malkovich Malkovich" - -#: html/Approvals/Elements/Approve:44 -msgid "Deny" -msgstr "Deny" - -#: html/Elements/EditLinks:113 html/Elements/EditLinks:44 html/Elements/ShowLinks:36 html/Ticket/Create.html:181 html/Ticket/Elements/BulkLinks:34 html/Ticket/Elements/ShowDependencies:31 -msgid "Depended on by" -msgstr "Malkovich on by" - -#: lib/RT/Transaction_Overlay.pm:621 -#. ($value) -msgid "Dependency by %1 added" -msgstr "Malkovich by %1 Malkovich" - -#: lib/RT/Transaction_Overlay.pm:661 -#. ($value) -msgid "Dependency by %1 deleted" -msgstr "Malkovich by %1 Malkovich" - -#: lib/RT/Transaction_Overlay.pm:618 -#. ($value) -msgid "Dependency on %1 added" -msgstr "Malkovich on %1 Malkovich" - -#: lib/RT/Transaction_Overlay.pm:658 -#. ($value) -msgid "Dependency on %1 deleted" -msgstr "Malkovich on %1 Malkovich" - -#: html/Elements/EditLinks:109 html/Elements/EditLinks:35 html/Elements/SelectLinkType:26 html/Elements/ShowLinks:26 html/Ticket/Create.html:180 html/Ticket/Elements/BulkLinks:30 html/Ticket/Elements/ShowDependencies:24 -msgid "Depends on" -msgstr "Malkovich on" - -#: html/Elements/SelectSortOrder:34 html/Search/Elements/DisplayOptions:57 -msgid "Descending" -msgstr "Malkovich" - -#: html/SelfService/Create.html:72 html/Ticket/Create.html:118 -msgid "Describe the issue below" -msgstr "Malkovich the Malkovich" - -#: html/Admin/Elements/AddCustomFieldValue:35 html/Admin/Elements/EditCustomField:38 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyTemplate:35 html/Admin/Groups/Modify.html:48 html/Admin/Queues/Modify.html:47 html/Elements/SelectGroups:26 html/Search/Elements/EditSearches:8 html/User/Groups/Modify.html:48 -msgid "Description" -msgstr "Malkovich" - -#: html/Ticket/Elements/Tabs:86 -msgid "Display" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:70 -msgid "Display Access Control List" -msgstr "Malkovich Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:76 -msgid "Display Scrip templates for this queue" -msgstr "Malkovich Malkovich Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:79 -msgid "Display Scrips for this queue" -msgstr "Malkovich Malkovich Malkovich" - -#: html/Ticket/Elements/ShowHistory:34 -msgid "Display mode" -msgstr "Malkovich" - -#: lib/RT/System.pm:53 -msgid "Do anything and everything" -msgstr "Do Malkovich and Malkovich" - -#: html/Elements/Refresh:29 -msgid "Don't refresh this page." -msgstr "Don't Malkovich Malkovich." - -#: NOT FOUND IN SOURCE -msgid "Don't show search results" -msgstr "Don't Malkovich Malkovich" - -#: html/Ticket/Elements/ShowTransactionAttachments:60 -msgid "Download" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Download all the tickets as a tab delimited file" -msgstr "Malkovich the Malkovich as a Malkovich Malkovich" - -#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:44 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1283 -msgid "Due" -msgstr "Due" - -#: NOT FOUND IN SOURCE -msgid "ERROR: Couldn't load ticket '%1': %2.\\n" -msgstr "MALKOVICH: Couldn't Malkovich '%1': %2.\\n" - -#: html/Admin/Queues/CustomFields.html:45 -#. ($Queue->Name) -msgid "Edit Custom Fields for %1" -msgstr "Malkovich Malkovich %1" - -#: html/Search/Bulk.html:141 html/Ticket/ModifyLinks.html:35 -msgid "Edit Links" -msgstr "Malkovich Malkovich" - -#: html/Admin/Queues/Templates.html:41 -#. ($QueueObj->Name) -msgid "Edit Templates for queue %1" -msgstr "Malkovich Malkovich %1" - -#: html/Admin/Global/index.html:45 -msgid "Edit system templates" -msgstr "Malkovich Malkovich" - -#: html/Admin/Queues/Modify.html:118 -#. ($QueueObj->Name) -msgid "Editing Configuration for queue %1" -msgstr "Malkovich Malkovich Malkovich %1" - -#: NOT FOUND IN SOURCE -msgid "Editing Configuration for user %1" -msgstr "Malkovich Malkovich Malkovich %1" - -#: html/Admin/Elements/EditCustomField:90 -#. ($CustomFieldObj->Name()) -msgid "Editing CustomField %1" -msgstr "Malkovich Malkovich %1" - -#: html/Admin/Groups/Members.html:31 -#. ($Group->Name) -msgid "Editing membership for group %1" -msgstr "Malkovich Malkovich Malkovich %1" - -#: html/User/Groups/Members.html:128 -#. ($Group->Name) -msgid "Editing membership for personal group %1" -msgstr "Malkovich Malkovich Malkovich Malkovich %1" - -#: lib/RT/Record.pm:1075 lib/RT/Record.pm:1152 -msgid "Either base or target must be specified" -msgstr "Malkovich or Malkovich be Malkovich" - -#: html/Admin/Users/Modify.html:52 html/Elements/SelectUsers:26 html/Ticket/Elements/AddWatchers:55 html/User/Prefs.html:43 -msgid "Email" -msgstr "Malkovich" - -#: lib/RT/User_Overlay.pm:206 -msgid "Email address in use" -msgstr "Malkovich in use" - -#: NOT FOUND IN SOURCE -msgid "EmailAddress" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "EmailEncoding" -msgstr "Malkovich" - -#: html/Admin/Elements/EditCustomField:50 -msgid "Enabled (Unchecking this box disables this custom field)" -msgstr "Malkovich (Malkovich Malkovich Malkovich Malkovich Malkovich)" - -#: html/Admin/Groups/Modify.html:52 html/User/Groups/Modify.html:52 -msgid "Enabled (Unchecking this box disables this group)" -msgstr "Malkovich (Malkovich Malkovich Malkovich Malkovich)" - -#: html/Admin/Queues/Modify.html:83 -msgid "Enabled (Unchecking this box disables this queue)" -msgstr "Malkovich (Malkovich Malkovich Malkovich Malkovich)" - -#: html/Admin/Elements/EditCustomFields:97 -msgid "Enabled Custom Fields" -msgstr "Malkovich Malkovich" - -#: html/Admin/Queues/index.html:55 -msgid "Enabled Queues" -msgstr "Malkovich" - -#: html/Admin/Elements/EditCustomField:106 html/Admin/Groups/Modify.html:116 html/Admin/Queues/Modify.html:140 html/Admin/Users/Modify.html:308 html/User/Groups/Modify.html:116 -#. (loc_fuzzy($msg)) -msgid "Enabled status %1" -msgstr "Malkovich %1" - -#: lib/RT/CustomField_Overlay.pm:433 -msgid "Enter multiple values" -msgstr "Malkovich Malkovich" - -#: lib/RT/CustomField_Overlay.pm:430 -msgid "Enter one value" -msgstr "Malkovich" - -#: html/Search/Bulk.html:142 -msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." -msgstr "Malkovich or URIs to Malkovich to. Malkovich Malkovich Malkovich Malkovich." - -#: html/Elements/Login:39 html/SelfService/Error.html:24 html/SelfService/Error.html:25 -msgid "Error" -msgstr "Error" - -#: lib/RT/Queue_Overlay.pm:593 -msgid "Error in parameters to Queue->AddWatcher" -msgstr "Malkovich in Malkovich to Malkovich->Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Error in parameters to Queue->DelWatcher" -msgstr "Malkovich in Malkovich to Malkovich->Malkovich" - -#: lib/RT/Ticket_Overlay.pm:1468 -msgid "Error in parameters to Ticket->AddWatcher" -msgstr "Malkovich in Malkovich to Malkovich->Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Error in parameters to Ticket->DelWatcher" -msgstr "Malkovich in Malkovich to Malkovich->Malkovich" - -#: etc/initialdata:20 -msgid "Everyone" -msgstr "Malkovich" - -#: bin/rt-crontool:190 -msgid "Example:" -msgstr "Malkovich:" - -#: NOT FOUND IN SOURCE -msgid "ExternalAuthId" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "ExternalContactInfoId" -msgstr "Malkovich Malkovich" - -#: html/Admin/Users/Modify.html:72 -msgid "Extra info" -msgstr "Malkovich" - -#: lib/RT/User_Overlay.pm:342 -msgid "Failed to find 'Privileged' users pseudogroup." -msgstr "Malkovich to find 'Malkovich' Malkovich Malkovich." - -#: lib/RT/User_Overlay.pm:349 -msgid "Failed to find 'Unprivileged' users pseudogroup" -msgstr "Malkovich to find 'Malkovich' Malkovich Malkovich" - -#: bin/rt-crontool:134 -#. ($modname, $@) -msgid "Failed to load module %1. (%2)" -msgstr "Malkovich to Malkovich %1. (%2)" - -#: lib/RT/Date.pm:412 -msgid "Feb." -msgstr "Feb." - -#: html/Search/Elements/PickBasics:60 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:57 lib/RT/Tickets_Overlay.pm:1153 -msgid "Final Priority" -msgstr "Malkovich" - -#: lib/RT/Ticket_Overlay.pm:1274 -msgid "FinalPriority" -msgstr "Malkovich" - -#: html/Admin/Queues/People.html:60 html/Ticket/Elements/EditPeople:33 -msgid "Find group whose" -msgstr "Malkovich Malkovich" - -#: html/Admin/Queues/People.html:56 html/Admin/Users/index.html:45 html/Ticket/Elements/EditPeople:29 -msgid "Find people whose" -msgstr "Malkovich Malkovich" - -#: html/Search/Results.html:72 -msgid "Find tickets" -msgstr "Malkovich" - -#: html/Ticket/Elements/Tabs:59 -msgid "First" -msgstr "Malkovich" - -#: docs/design_docs/string-extraction-guide.txt:33 lib/RT/StyleGuide.pod:746 -msgid "Foo Bar Baz" -msgstr "Malkovich" - -#: docs/design_docs/string-extraction-guide.txt:24 lib/RT/StyleGuide.pod:737 -msgid "Foo!" -msgstr "Foo!" - -#: html/Search/Bulk.html:84 -msgid "Force change" -msgstr "Malkovich" - -#: html/Search/Results.html:70 -#. ($ticketcount) -msgid "Found %quant(%1,ticket)" -msgstr "Malkovich %quant(%1,Malkovich)" - -#: lib/RT/Record.pm:750 -msgid "Found Object" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "FreeformContactInfo" -msgstr "Malkovich Malkovich" - -#: lib/RT/CustomField_Overlay.pm:37 -msgid "FreeformMultiple" -msgstr "Malkovich Malkovich" - -#: lib/RT/CustomField_Overlay.pm:36 -msgid "FreeformSingle" -msgstr "Malkovich" - -#: lib/RT/Date.pm:392 -msgid "Fri." -msgstr "Fri." - -#: html/Ticket/Elements/ShowHistory:40 html/Ticket/Elements/ShowHistory:50 -msgid "Full headers" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:587 -#. ($New->Name) -msgid "Given to %1" -msgstr "Malkovich to %1" - -#: html/Admin/Elements/Tabs:40 html/Admin/index.html:37 -msgid "Global" -msgstr "Malkovich" - -#: html/Admin/Elements/SelectTemplate:37 -#. (loc($Template->Name)) -msgid "Global template: %1" -msgstr "Malkovich: %1" - -#: html/Tools/Offline.html:69 -msgid "Go" -msgstr "Go" - -#: html/Admin/Elements/EditCustomFields:73 html/Admin/Groups/index.html:39 html/Admin/Queues/People.html:58 html/Admin/Queues/People.html:62 html/Admin/Queues/index.html:43 html/Admin/Users/index.html:48 html/Ticket/Elements/EditPeople:31 html/Ticket/Elements/EditPeople:35 html/index.html:69 -msgid "Go!" -msgstr "Go!" - -#: html/Elements/GotoTicket:24 html/SelfService/Elements/GotoTicket:24 -msgid "Goto ticket" -msgstr "Malkovich" - -#: html/Ticket/Elements/AddWatchers:45 html/Ticket/Elements/ShowGroupMembers:33 html/User/Elements/DelegateRights:77 -msgid "Group" -msgstr "Malkovich" - -#: html/Admin/Elements/GroupTabs:44 html/Admin/Elements/QueueTabs:56 html/Admin/Elements/SystemTabs:43 html/Admin/Global/index.html:54 -msgid "Group Rights" -msgstr "Malkovich" - -#: lib/RT/Group_Overlay.pm:957 -msgid "Group already has member" -msgstr "Malkovich Malkovich" - -#: html/Admin/Groups/Modify.html:76 -#. ($create_msg) -msgid "Group could not be created: %1" -msgstr "Malkovich be Malkovich: %1" - -#: lib/RT/Group_Overlay.pm:497 -msgid "Group created" -msgstr "Malkovich" - -#: lib/RT/Group_Overlay.pm:1129 -msgid "Group has no such member" -msgstr "Malkovich no Malkovich" - -#: lib/RT/Group_Overlay.pm:937 lib/RT/Queue_Overlay.pm:669 lib/RT/Queue_Overlay.pm:729 lib/RT/Ticket_Overlay.pm:1522 lib/RT/Ticket_Overlay.pm:1602 -msgid "Group not found" -msgstr "Malkovich" - -#: html/Admin/Elements/SelectNewGroupMembers:34 html/Admin/Elements/Tabs:34 html/Admin/Groups/Members.html:63 html/Admin/Queues/People.html:82 html/Admin/index.html:31 html/User/Groups/Members.html:66 -msgid "Groups" -msgstr "Malkovich" - -#: lib/RT/Group_Overlay.pm:963 -msgid "Groups can't be members of their members" -msgstr "Malkovich can't be Malkovich of Malkovich" - -#: lib/RT/Interface/CLI.pm:72 lib/RT/Interface/CLI.pm:72 -msgid "Hello!" -msgstr "Malkovich!" - -#: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:753 -#. ($name) -msgid "Hello, %1" -msgstr "Malkovich, %1" - -#: html/Ticket/Elements/ShowHistory:29 html/Ticket/Elements/Tabs:89 -msgid "History" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "HomePhone" -msgstr "Malkovich" - -#: html/Elements/Tabs:43 -msgid "Homepage" -msgstr "Malkovich" - -#: lib/RT/Base.pm:86 -#. (6) -msgid "I have %quant(%1,concrete mixer)." -msgstr "I have %quant(%1,Malkovich)." - -#: html/Search/Elements/PickBasics:104 html/Ticket/Elements/ShowBasics:26 lib/RT/Tickets_Overlay.pm:1080 -msgid "Id" -msgstr "Id" - -#: html/Admin/Users/Modify.html:43 html/User/Prefs.html:38 -msgid "Identity" -msgstr "Malkovich" - -#: etc/initialdata:429 -msgid "If an approval is rejected, reject the original and delete pending approvals" -msgstr "If a Malkovich is Malkovich, Malkovich the Malkovich and Malkovich Malkovich" - -#: bin/rt-crontool:186 -msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." -msgstr "If Malkovich Malkovich, a Malkovich Malkovich Malkovich Malkovich to Malkovich Malkovich Malkovich to RT." - -#: html/Admin/Queues/People.html:104 html/Ticket/Modify.html:38 html/Ticket/ModifyAll.html:93 html/Ticket/ModifyPeople.html:37 -msgid "If you've updated anything above, be sure to" -msgstr "If you've Malkovich Malkovich, be sure to" - -#: lib/RT/Record.pm:742 -msgid "Illegal value for %1" -msgstr "Malkovich Malkovich %1" - -#: lib/RT/Record.pm:745 -msgid "Immutable field" -msgstr "Malkovich" - -#: html/Admin/Elements/EditCustomFields:72 -msgid "Include disabled custom fields in listing." -msgstr "Malkovich Malkovich Malkovich in Malkovich." - -#: html/Admin/Queues/index.html:42 -msgid "Include disabled queues in listing." -msgstr "Malkovich Malkovich in Malkovich." - -#: html/Admin/Users/index.html:46 -msgid "Include disabled users in search." -msgstr "Malkovich Malkovich in Malkovich." - -#: html/Search/Elements/PickBasics:59 lib/RT/Tickets_Overlay.pm:1129 -msgid "Initial Priority" -msgstr "Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:1273 lib/RT/Ticket_Overlay.pm:1275 -msgid "InitialPriority" -msgstr "Malkovich" - -#: lib/RT/ScripAction_Overlay.pm:97 -msgid "Input error" -msgstr "Malkovich" - -#: lib/RT/Ticket_Overlay.pm:3797 -msgid "Internal Error" -msgstr "Malkovich" - -#: lib/RT/Record.pm:186 -#. ($id->{error_message}) -msgid "Internal Error: %1" -msgstr "Malkovich: %1" - -#: lib/RT/Group_Overlay.pm:644 -msgid "Invalid Group Type" -msgstr "Malkovich Malkovich" - -#: lib/RT/Principal_Overlay.pm:127 -msgid "Invalid Right" -msgstr "Malkovich" - -#: lib/RT/Record.pm:747 -msgid "Invalid data" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Invalid owner. Defaulting to 'nobody'." -msgstr "Malkovich. Malkovich to 'Malkovich'." - -#: lib/RT/Scrip_Overlay.pm:133 lib/RT/Template_Overlay.pm:251 -msgid "Invalid queue" -msgstr "Malkovich" - -#: lib/RT/ACE_Overlay.pm:243 lib/RT/ACE_Overlay.pm:252 lib/RT/ACE_Overlay.pm:258 lib/RT/ACE_Overlay.pm:269 lib/RT/ACE_Overlay.pm:274 -msgid "Invalid right" -msgstr "Malkovich" - -#: lib/RT/Record.pm:161 -#. ($key) -msgid "Invalid value for %1" -msgstr "Malkovich Malkovich %1" - -#: lib/RT/Ticket_Overlay.pm:3380 -msgid "Invalid value for custom field" -msgstr "Malkovich Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:385 -msgid "Invalid value for status" -msgstr "Malkovich Malkovich" - -#: bin/rt-crontool:187 -msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." -msgstr "It is Malkovich Malkovich Malkovich Malkovich Malkovich be Malkovich to Malkovich." - -#: bin/rt-crontool:188 -msgid "It is suggested that you create a non-privileged unix user with the correct group membership and RT access to run this tool." -msgstr "It is Malkovich Malkovich a non-Malkovich Malkovich the Malkovich Malkovich and RT Malkovich to Malkovich." - -#: bin/rt-crontool:159 -msgid "It takes several arguments:" -msgstr "It Malkovich Malkovich:" - -#: lib/RT/Date.pm:411 -msgid "Jan." -msgstr "Jan." - -#: lib/RT/Group_Overlay.pm:149 -msgid "Join or leave this group" -msgstr "Join or Malkovich Malkovich" - -#: lib/RT/Date.pm:417 -msgid "Jul." -msgstr "Jul." - -#: html/Ticket/Elements/Tabs:100 -msgid "Jumbo" -msgstr "Malkovich" - -#: lib/RT/Date.pm:416 -msgid "Jun." -msgstr "Jun." - -#: NOT FOUND IN SOURCE -msgid "Lang" -msgstr "Lang" - -#: html/User/Prefs.html:54 -msgid "Language" -msgstr "Malkovich" - -#: html/Ticket/Elements/Tabs:74 -msgid "Last" -msgstr "Last" - -#: html/Ticket/Elements/EditDates:37 html/Ticket/Elements/ShowDates:39 -msgid "Last Contact" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Last Contact</a>" -msgstr "Malkovich</a>" - -#: html/Elements/SelectDateType:28 -msgid "Last Contacted" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Last Notified" -msgstr "Malkovich" - -#: html/Elements/SelectDateType:29 -msgid "Last Updated" -msgstr "Malkovich" - -#: html/Admin/Users/Modify.html:82 -msgid "Let this user access RT" -msgstr "Malkovich Malkovich RT" - -#: html/Admin/Users/Modify.html:86 -msgid "Let this user be granted rights" -msgstr "Malkovich be Malkovich" - -#: lib/RT/Record.pm:1086 -msgid "Link already exists" -msgstr "Malkovich Malkovich" - -#: lib/RT/Record.pm:1100 -msgid "Link could not be created" -msgstr "Malkovich be Malkovich" - -#: lib/RT/Record.pm:1106 -#. ($TransString) -msgid "Link created (%1)" -msgstr "Malkovich (%1)" - -#: lib/RT/Record.pm:1167 -#. ($TransString) -msgid "Link deleted (%1)" -msgstr "Malkovich (%1)" - -#: lib/RT/Record.pm:1173 -msgid "Link not found" -msgstr "Malkovich" - -#: html/Ticket/ModifyLinks.html:24 html/Ticket/ModifyLinks.html:28 -#. ($Ticket->Id) -msgid "Link ticket #%1" -msgstr "Malkovich #%1" - -#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:61 html/Ticket/Elements/Tabs:98 html/Ticket/ModifyAll.html:56 -msgid "Links" -msgstr "Malkovich" - -#: html/Admin/Users/Modify.html:111 html/User/Prefs.html:104 -msgid "Location" -msgstr "Malkovich" - -#: lib/RT.pm:184 -#. ($RT::LogDir) -msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." -msgstr "Malkovich %1 Malkovich or couldn't be Malkovich.\\n RT can't run." - -#: html/Elements/Header:69 -#. ("<b>".$session{'CurrentUser'}->Name."</b>") -msgid "Logged in as %1" -msgstr "Malkovich in as %1" - -#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:35 html/Elements/Login:44 html/Elements/Login:54 lib/RT/StyleGuide.pod:777 -msgid "Login" -msgstr "Malkovich" - -#: html/Elements/Header:66 -msgid "Logout" -msgstr "Malkovich" - -#: html/Search/Bulk.html:83 -msgid "Make Owner" -msgstr "Malkovich" - -#: html/Search/Bulk.html:107 -msgid "Make Status" -msgstr "Malkovich" - -#: html/Search/Bulk.html:115 -msgid "Make date Due" -msgstr "Malkovich" - -#: html/Search/Bulk.html:117 -msgid "Make date Resolved" -msgstr "Malkovich Malkovich" - -#: html/Search/Bulk.html:111 -msgid "Make date Started" -msgstr "Malkovich Malkovich" - -#: html/Search/Bulk.html:109 -msgid "Make date Starts" -msgstr "Malkovich Malkovich" - -#: html/Search/Bulk.html:113 -msgid "Make date Told" -msgstr "Malkovich" - -#: html/Search/Bulk.html:103 -msgid "Make priority" -msgstr "Malkovich" - -#: html/Search/Bulk.html:105 -msgid "Make queue" -msgstr "Malkovich" - -#: html/Search/Bulk.html:101 -msgid "Make subject" -msgstr "Malkovich" - -#: html/Admin/index.html:32 -msgid "Manage groups and group membership" -msgstr "Malkovich and Malkovich Malkovich" - -#: html/Admin/index.html:38 -msgid "Manage properties and configuration which apply to all queues" -msgstr "Malkovich Malkovich and Malkovich Malkovich to Malkovich" - -#: html/Admin/index.html:35 -msgid "Manage queues and queue-specific properties" -msgstr "Malkovich and Malkovich-Malkovich Malkovich" - -#: html/Admin/index.html:29 -msgid "Manage users and passwords" -msgstr "Malkovich and Malkovich" - -#: lib/RT/Date.pm:413 -msgid "Mar." -msgstr "Mar." - -#: lib/RT/Date.pm:415 -msgid "May." -msgstr "May." - -#: lib/RT/Transaction_Overlay.pm:634 -#. ($value) -msgid "Member %1 added" -msgstr "Malkovich %1 Malkovich" - -#: lib/RT/Transaction_Overlay.pm:674 -#. ($value) -msgid "Member %1 deleted" -msgstr "Malkovich %1 Malkovich" - -#: lib/RT/Group_Overlay.pm:974 -msgid "Member added" -msgstr "Malkovich" - -#: lib/RT/Group_Overlay.pm:1136 -msgid "Member deleted" -msgstr "Malkovich" - -#: lib/RT/Group_Overlay.pm:1140 -msgid "Member not deleted" -msgstr "Malkovich Malkovich" - -#: html/Elements/SelectLinkType:25 -msgid "Member of" -msgstr "Malkovich of" - -#: html/Admin/Elements/GroupTabs:41 html/User/Elements/GroupTabs:41 -msgid "Members" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:631 -#. ($value) -msgid "Membership in %1 added" -msgstr "Malkovich in %1 Malkovich" - -#: lib/RT/Transaction_Overlay.pm:671 -#. ($value) -msgid "Membership in %1 deleted" -msgstr "Malkovich in %1 Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2813 -msgid "Merge Successful" -msgstr "Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2733 -msgid "Merge failed. Couldn't set EffectiveId" -msgstr "Malkovich. Couldn't Malkovich" - -#: html/Elements/EditLinks:104 html/Ticket/Elements/BulkLinks:26 -msgid "Merge into" -msgstr "Malkovich" - -#: html/Search/Bulk.html:135 html/Ticket/Update.html:83 -msgid "Message" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Message body not shown because it is too large or is not plain text." -msgstr "Malkovich Malkovich Malkovich it is Malkovich or is Malkovich." - -#: lib/RT/Ticket_Overlay.pm:2514 -msgid "Message could not be recorded" -msgstr "Malkovich Malkovich be Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Message recipients" -msgstr "Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2517 -msgid "Message recorded" -msgstr "Malkovich Malkovich" - -#: lib/RT/Record.pm:749 -msgid "Missing a primary key?: %1" -msgstr "Malkovich a Malkovich?: %1" - -#: html/Admin/Users/Modify.html:166 html/User/Prefs.html:71 -msgid "Mobile" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "MobilePhone" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:71 -msgid "Modify Access Control List" -msgstr "Malkovich Malkovich Malkovich" - -#: html/Admin/Global/CustomFields.html:43 html/Admin/Global/index.html:50 -msgid "Modify Custom Fields which apply to all queues" -msgstr "Malkovich Malkovich Malkovich to Malkovich" - -#: lib/RT/Queue_Overlay.pm:74 -msgid "Modify Scrip templates for this queue" -msgstr "Malkovich Malkovich Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:77 -msgid "Modify Scrips for this queue" -msgstr "Malkovich Malkovich Malkovich" - -#: html/Admin/Queues/CustomField.html:44 -#. ($QueueObj->Name()) -msgid "Modify a CustomField for queue %1" -msgstr "Malkovich a Malkovich Malkovich %1" - -#: html/Admin/Global/CustomField.html:52 -msgid "Modify a CustomField which applies to all queues" -msgstr "Malkovich a Malkovich Malkovich to Malkovich" - -#: html/Admin/Queues/Scrip.html:53 -#. ($QueueObj->Name) -msgid "Modify a scrip for queue %1" -msgstr "Malkovich a Malkovich %1" - -#: html/Admin/Global/Scrip.html:47 -msgid "Modify a scrip which applies to all queues" -msgstr "Malkovich a Malkovich Malkovich to Malkovich" - -#: html/Ticket/ModifyDates.html:24 html/Ticket/ModifyDates.html:28 -#. ($TicketObj->Id) -msgid "Modify dates for #%1" -msgstr "Malkovich Malkovich #%1" - -#: html/Ticket/ModifyDates.html:34 -#. ($TicketObj->Id) -msgid "Modify dates for ticket # %1" -msgstr "Malkovich Malkovich # %1" - -#: html/Admin/Global/GroupRights.html:24 html/Admin/Global/GroupRights.html:27 html/Admin/Global/index.html:55 -msgid "Modify global group rights" -msgstr "Malkovich Malkovich Malkovich" - -#: html/Admin/Global/GroupRights.html:32 -msgid "Modify global group rights." -msgstr "Malkovich Malkovich Malkovich." - -#: html/Admin/Global/UserRights.html:24 html/Admin/Global/UserRights.html:27 html/Admin/Global/index.html:59 -msgid "Modify global user rights" -msgstr "Malkovich Malkovich" - -#: html/Admin/Global/UserRights.html:32 -msgid "Modify global user rights." -msgstr "Malkovich Malkovich." - -#: lib/RT/Group_Overlay.pm:146 -msgid "Modify group metadata or delete group" -msgstr "Malkovich Malkovich or Malkovich" - -#: html/Admin/Groups/GroupRights.html:24 html/Admin/Groups/GroupRights.html:28 html/Admin/Groups/GroupRights.html:34 -#. ($GroupObj->Name) -msgid "Modify group rights for group %1" -msgstr "Malkovich Malkovich Malkovich %1" - -#: html/Admin/Queues/GroupRights.html:24 html/Admin/Queues/GroupRights.html:28 -#. ($QueueObj->Name) -msgid "Modify group rights for queue %1" -msgstr "Malkovich Malkovich Malkovich %1" - -#: lib/RT/Group_Overlay.pm:148 -msgid "Modify membership roster for this group" -msgstr "Malkovich Malkovich Malkovich Malkovich" - -#: lib/RT/System.pm:60 -msgid "Modify one's own RT account" -msgstr "Malkovich's own RT Malkovich" - -#: html/Admin/Queues/People.html:24 html/Admin/Queues/People.html:28 -#. ($QueueObj->Name) -msgid "Modify people related to queue %1" -msgstr "Malkovich Malkovich to Malkovich %1" - -#: html/Ticket/ModifyPeople.html:24 html/Ticket/ModifyPeople.html:28 html/Ticket/ModifyPeople.html:34 -#. ($Ticket->id) -#. ($Ticket->Id) -msgid "Modify people related to ticket #%1" -msgstr "Malkovich Malkovich to Malkovich #%1" - -#: html/Admin/Queues/Scrips.html:45 -#. ($QueueObj->Name) -msgid "Modify scrips for queue %1" -msgstr "Malkovich Malkovich %1" - -#: html/Admin/Global/Scrips.html:43 html/Admin/Global/index.html:41 -msgid "Modify scrips which apply to all queues" -msgstr "Malkovich Malkovich to Malkovich" - -#: html/Admin/Global/Template.html:24 html/Admin/Global/Template.html:29 html/Admin/Global/Template.html:80 html/Admin/Queues/Template.html:77 -#. (loc($TemplateObj->Name())) -#. ($TemplateObj->id) -msgid "Modify template %1" -msgstr "Malkovich %1" - -#: html/Admin/Global/Templates.html:43 -msgid "Modify templates which apply to all queues" -msgstr "Malkovich Malkovich Malkovich to Malkovich" - -#: html/Admin/Groups/Modify.html:86 html/User/Groups/Modify.html:85 -#. ($Group->Name) -msgid "Modify the group %1" -msgstr "Malkovich the Malkovich %1" - -#: lib/RT/Queue_Overlay.pm:72 -msgid "Modify the queue watchers" -msgstr "Malkovich the Malkovich" - -#: html/Admin/Users/Modify.html:263 -#. ($UserObj->Name) -msgid "Modify the user %1" -msgstr "Malkovich the user %1" - -#: html/Ticket/ModifyAll.html:36 -#. ($Ticket->Id) -msgid "Modify ticket # %1" -msgstr "Malkovich # %1" - -#: html/Ticket/Modify.html:24 html/Ticket/Modify.html:27 html/Ticket/Modify.html:33 -#. ($TicketObj->Id) -msgid "Modify ticket #%1" -msgstr "Malkovich #%1" - -#: lib/RT/Queue_Overlay.pm:90 -msgid "Modify tickets" -msgstr "Malkovich" - -#: html/Admin/Groups/UserRights.html:24 html/Admin/Groups/UserRights.html:28 html/Admin/Groups/UserRights.html:34 -#. ($GroupObj->Name) -msgid "Modify user rights for group %1" -msgstr "Malkovich Malkovich Malkovich %1" - -#: html/Admin/Queues/UserRights.html:24 html/Admin/Queues/UserRights.html:28 -#. ($QueueObj->Name) -msgid "Modify user rights for queue %1" -msgstr "Malkovich Malkovich Malkovich %1" - -#: lib/RT/Queue_Overlay.pm:71 -msgid "ModifyACL" -msgstr "Malkovich" - -#: lib/RT/Group_Overlay.pm:149 -msgid "ModifyOwnMembership" -msgstr "Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:72 -msgid "ModifyQueueWatchers" -msgstr "Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:77 -msgid "ModifyScrips" -msgstr "Malkovich" - -#: lib/RT/System.pm:60 -msgid "ModifySelf" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:74 -msgid "ModifyTemplate" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:90 -msgid "ModifyTicket" -msgstr "Malkovich" - -#: lib/RT/Date.pm:388 -msgid "Mon." -msgstr "Mon." - -#: html/Ticket/Elements/ShowRequestor:40 -#. ($name) -msgid "More about %1" -msgstr "Malkovich %1" - -#: html/Admin/Elements/EditCustomFields:60 -msgid "Move down" -msgstr "Malkovich" - -#: html/Admin/Elements/SelectSingleOrMultiple:26 -msgid "Multiple" -msgstr "Malkovich" - -#: lib/RT/User_Overlay.pm:197 -msgid "Must specify 'Name' attribute" -msgstr "Malkovich 'Name' Malkovich" - -#: html/SelfService/Elements/MyRequests:48 -#. ($friendly_status) -msgid "My %1 tickets" -msgstr "My %1 Malkovich" - -#: html/Approvals/index.html:24 html/Approvals/index.html:25 -msgid "My approvals" -msgstr "My Malkovich" - -#: html/Admin/Elements/AddCustomFieldValue:31 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/ModifyTemplate:27 html/Admin/Groups/Modify.html:43 html/Elements/SelectGroups:25 html/Elements/SelectUsers:27 html/User/Groups/Modify.html:43 -msgid "Name" -msgstr "Name" - -#: lib/RT/User_Overlay.pm:204 -msgid "Name in use" -msgstr "Name in use" - -#: html/Ticket/Elements/ShowDates:52 -msgid "Never" -msgstr "Malkovich" - -#: html/Elements/Quicksearch:29 -msgid "New" -msgstr "New" - -#: html/Elements/EditLinks:93 -msgid "New Links" -msgstr "Malkovich Malkovich" - -#: html/Admin/Users/Modify.html:92 html/User/Prefs.html:87 -msgid "New Password" -msgstr "Malkovich" - -#: etc/initialdata:332 -msgid "New Pending Approval" -msgstr "Malkovich Malkovich" - -#: NOT FOUND IN SOURCE -msgid "New Search" -msgstr "Malkovich" - -#: html/Admin/Global/CustomField.html:40 html/Admin/Global/CustomFields.html:38 html/Admin/Queues/CustomField.html:51 html/Admin/Queues/CustomFields.html:40 -msgid "New custom field" -msgstr "Malkovich Malkovich" - -#: html/Admin/Elements/GroupTabs:53 html/User/Elements/GroupTabs:51 -msgid "New group" -msgstr "Malkovich" - -#: html/SelfService/Prefs.html:31 -msgid "New password" -msgstr "Malkovich" - -#: lib/RT/User_Overlay.pm:773 -msgid "New password notification sent" -msgstr "Malkovich Malkovich Malkovich" - -#: html/Admin/Elements/QueueTabs:69 -msgid "New queue" -msgstr "Malkovich" - -#: html/Admin/Elements/SelectRights:41 -msgid "New rights" -msgstr "Malkovich" - -#: html/Admin/Global/Scrip.html:39 html/Admin/Global/Scrips.html:38 html/Admin/Queues/Scrip.html:42 html/Admin/Queues/Scrips.html:54 -msgid "New scrip" -msgstr "Malkovich" - -#: html/Admin/Global/Template.html:59 html/Admin/Global/Templates.html:38 html/Admin/Queues/Template.html:57 html/Admin/Queues/Templates.html:49 -msgid "New template" -msgstr "Malkovich" - -#: html/SelfService/Elements/Tabs:47 -msgid "New ticket" -msgstr "Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2700 -msgid "New ticket doesn't exist" -msgstr "Malkovich doesn't Malkovich" - -#: html/Admin/Elements/UserTabs:50 -msgid "New user" -msgstr "Malkovich" - -#: html/Admin/Elements/CreateUserCalled:25 -msgid "New user called" -msgstr "Malkovich" - -#: html/Admin/Queues/People.html:54 html/Ticket/Elements/EditPeople:28 -msgid "New watchers" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "New window setting" -msgstr "Malkovich Malkovich" - -#: html/Ticket/Elements/Tabs:70 -msgid "Next" -msgstr "Next" - -#: NOT FOUND IN SOURCE -msgid "NickName" -msgstr "Malkovich" - -#: html/Admin/Users/Modify.html:62 html/User/Prefs.html:50 -msgid "Nickname" -msgstr "Malkovich" - -#: html/Admin/Elements/EditCustomField:89 html/Admin/Elements/EditCustomFields:103 -msgid "No CustomField" -msgstr "No Malkovich" - -#: html/Admin/Groups/GroupRights.html:83 html/Admin/Groups/UserRights.html:70 -msgid "No Group defined" -msgstr "No Malkovich" - -#: lib/RT/Tickets_Overlay_SQL.pm:452 -msgid "No Query" -msgstr "No Malkovich" - -#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:67 -msgid "No Queue defined" -msgstr "No Malkovich" - -#: bin/rt-crontool:52 -msgid "No RT user found. Please consult your RT administrator.\\n" -msgstr "No RT Malkovich. Malkovich Malkovich RT Malkovich.\\n" - -#: html/Admin/Global/Template.html:78 html/Admin/Queues/Template.html:75 -msgid "No Template" -msgstr "No Malkovich" - -#: NOT FOUND IN SOURCE -msgid "No Ticket specified. Aborting ticket " -msgstr "No Malkovich Malkovich. Malkovich " - -#: html/Approvals/Elements/Approve:45 -msgid "No action" -msgstr "No Malkovich" - -#: lib/RT/Record.pm:744 -msgid "No column specified" -msgstr "No Malkovich Malkovich" - -#: html/Ticket/Elements/ShowRequestor:46 -msgid "No comment entered about this user" -msgstr "No Malkovich Malkovich Malkovich" - -#: lib/RT/Action/Generic.pm:159 lib/RT/Condition/Generic.pm:175 lib/RT/Search/ActiveTicketsInQueue.pm:55 lib/RT/Search/Generic.pm:112 -#. (ref $self) -msgid "No description for %1" -msgstr "No Malkovich %1" - -#: lib/RT/Users_Overlay.pm:159 -msgid "No group specified" -msgstr "No Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2475 -msgid "No message attached" -msgstr "No Malkovich Malkovich" - -#: lib/RT/User_Overlay.pm:991 -msgid "No password set" -msgstr "No Malkovich" - -#: lib/RT/Queue_Overlay.pm:296 -msgid "No permission to create queues" -msgstr "No Malkovich to Malkovich" - -#: NOT FOUND IN SOURCE -msgid "No permission to create tickets in the queue '%1'" -msgstr "No Malkovich to Malkovich in the Malkovich '%1'" - -#: lib/RT/User_Overlay.pm:157 -msgid "No permission to create users" -msgstr "No Malkovich to Malkovich" - -#: html/SelfService/Display.html:125 -msgid "No permission to display that ticket" -msgstr "No Malkovich to Malkovich Malkovich" - -#: html/SelfService/Update.html:68 -msgid "No permission to view update ticket" -msgstr "No Malkovich to Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:716 lib/RT/Ticket_Overlay.pm:1581 -msgid "No principal specified" -msgstr "No Malkovich Malkovich" - -#: html/Admin/Queues/People.html:153 html/Admin/Queues/People.html:163 -msgid "No principals selected." -msgstr "No Malkovich Malkovich." - -#: html/Admin/Queues/index.html:34 -msgid "No queues matching search criteria found." -msgstr "No Malkovich Malkovich Malkovich Malkovich." - -#: html/Admin/Elements/SelectRights:81 -msgid "No rights found" -msgstr "No Malkovich" - -#: html/Admin/Elements/SelectRights:32 -msgid "No rights granted." -msgstr "No Malkovich." - -#: html/Search/Bulk.html:162 -msgid "No search to operate on." -msgstr "No Malkovich to Malkovich on." - -#: lib/RT/Transaction_Overlay.pm:455 lib/RT/Transaction_Overlay.pm:493 -msgid "No transaction type specified" -msgstr "No Malkovich Malkovich Malkovich" - -#: html/Admin/Users/index.html:35 -msgid "No users matching search criteria found." -msgstr "No Malkovich Malkovich Malkovich Malkovich." - -#: NOT FOUND IN SOURCE -msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" -msgstr "No Malkovich RT Malkovich. RT Malkovich Malkovich. Malkovich Malkovich RT Malkovich.\\n" - -#: lib/RT/Record.pm:741 -msgid "No value sent to _Set!\\n" -msgstr "No Malkovich to _Set!\\n" - -#: lib/RT/Record.pm:746 -msgid "Nonexistant field?" -msgstr "Malkovich Malkovich?" - -#: html/Elements/Header:71 -msgid "Not logged in." -msgstr "Malkovich in." - -#: lib/RT/Date.pm:369 -msgid "Not set" -msgstr "Malkovich" - -#: html/NoAuth/Reminder.html:26 -msgid "Not yet implemented." -msgstr "Malkovich Malkovich." - -#: html/Approvals/Elements/Approve:48 -msgid "Notes" -msgstr "Malkovich" - -#: lib/RT/User_Overlay.pm:776 -msgid "Notification could not be sent" -msgstr "Malkovich Malkovich be sent" - -#: etc/initialdata:101 -msgid "Notify AdminCcs" -msgstr "Malkovich" - -#: etc/initialdata:97 -msgid "Notify AdminCcs as Comment" -msgstr "Malkovich as Malkovich" - -#: etc/initialdata:128 -msgid "Notify Other Recipients" -msgstr "Malkovich Malkovich" - -#: etc/initialdata:124 -msgid "Notify Other Recipients as Comment" -msgstr "Malkovich Malkovich as Malkovich" - -#: etc/initialdata:85 -msgid "Notify Owner" -msgstr "Malkovich" - -#: etc/initialdata:81 -msgid "Notify Owner as Comment" -msgstr "Malkovich as Malkovich" - -#: etc/initialdata:376 -msgid "Notify Owner of their rejected ticket" -msgstr "Malkovich of Malkovich Malkovich" - -#: etc/initialdata:365 -msgid "Notify Owner of their ticket has been approved by all approvers" -msgstr "Malkovich of Malkovich Malkovich Malkovich by Malkovich" - -#: etc/initialdata:353 -msgid "Notify Owner of their ticket has been approved by some approver" -msgstr "Malkovich of Malkovich Malkovich Malkovich by Malkovich" - -#: etc/initialdata:334 -msgid "Notify Owners and AdminCcs of new items pending their approval" -msgstr "Malkovich and Malkovich of Malkovich Malkovich Malkovich" - -#: etc/initialdata:77 -msgid "Notify Requestors" -msgstr "Malkovich Malkovich" - -#: etc/initialdata:111 -msgid "Notify Requestors and Ccs" -msgstr "Malkovich Malkovich and Ccs" - -#: etc/initialdata:106 -msgid "Notify Requestors and Ccs as Comment" -msgstr "Malkovich Malkovich and Ccs as Malkovich" - -#: etc/initialdata:120 -msgid "Notify Requestors, Ccs and AdminCcs" -msgstr "Malkovich Malkovich, Ccs and Malkovich" - -#: etc/initialdata:116 -msgid "Notify Requestors, Ccs and AdminCcs as Comment" -msgstr "Malkovich Malkovich, Ccs and Malkovich as Malkovich" - -#: lib/RT/Date.pm:421 -msgid "Nov." -msgstr "Nov." - -#: lib/RT/Record.pm:200 -msgid "Object could not be created" -msgstr "Malkovich Malkovich be Malkovich" - -#: lib/RT/Record.pm:219 -msgid "Object created" -msgstr "Malkovich" - -#: lib/RT/Date.pm:420 -msgid "Oct." -msgstr "Oct." - -#: html/Elements/SelectDateRelation:34 -msgid "On" -msgstr "On" - -#: etc/initialdata:163 -msgid "On Comment" -msgstr "On Malkovich" - -#: etc/initialdata:156 -msgid "On Correspond" -msgstr "On Malkovich" - -#: etc/initialdata:145 -msgid "On Create" -msgstr "On Malkovich" - -#: etc/initialdata:184 -msgid "On Owner Change" -msgstr "On Malkovich" - -#: etc/initialdata:192 -msgid "On Queue Change" -msgstr "On Malkovich" - -#: etc/initialdata:198 -msgid "On Resolve" -msgstr "On Malkovich" - -#: etc/initialdata:169 -msgid "On Status Change" -msgstr "On Malkovich" - -#: etc/initialdata:150 -msgid "On Transaction" -msgstr "On Malkovich" - -#: html/Approvals/Elements/PendingMyApproval:49 -#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") -msgid "Only show approvals for requests created after %1" -msgstr "Malkovich Malkovich Malkovich Malkovich Malkovich %1" - -#: html/Approvals/Elements/PendingMyApproval:47 -#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") -msgid "Only show approvals for requests created before %1" -msgstr "Malkovich Malkovich Malkovich Malkovich Malkovich %1" - -#: html/Elements/Quicksearch:30 -msgid "Open" -msgstr "Open" - -#: html/Ticket/Elements/Tabs:137 -msgid "Open it" -msgstr "Open it" - -#: html/SelfService/Elements/Tabs:41 -msgid "Open tickets" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Open tickets (from listing) in a new window" -msgstr "Malkovich (Malkovich) in a Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Open tickets (from listing) in another window" -msgstr "Malkovich (Malkovich) in Malkovich" - -#: etc/initialdata:140 -msgid "Open tickets on correspondence" -msgstr "Malkovich on Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Ordering and sorting" -msgstr "Malkovich and Malkovich" - -#: html/Admin/Users/Modify.html:114 html/Elements/SelectUsers:28 html/User/Prefs.html:107 -msgid "Organization" -msgstr "Malkovich" - -#: html/Approvals/Elements/Approve:32 -#. ($approving->Id, $approving->Subject) -msgid "Originating ticket: #%1" -msgstr "Malkovich Malkovich: #%1" - -#: html/Admin/Queues/Modify.html:68 -msgid "Over time, priority moves toward" -msgstr "Malkovich, Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:89 -msgid "Own tickets" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:89 -msgid "OwnTicket" -msgstr "Malkovich" - -#: etc/initialdata:38 html/Elements/QuickCreate:13 html/Search/Elements/PickBasics:114 html/SelfService/Elements/MyRequests:29 html/Ticket/Create.html:47 html/Ticket/Elements/EditPeople:42 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/ShowPeople:26 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:85 lib/RT/Tickets_Overlay.pm:1306 -msgid "Owner" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:575 -#. ($Old->Name , $New->Name) -msgid "Owner forcibly changed from %1 to %2" -msgstr "Malkovich Malkovich Malkovich %1 to %2" - -#: NOT FOUND IN SOURCE -msgid "Owner is" -msgstr "Malkovich is" - -#: html/Admin/Users/Modify.html:171 html/User/Prefs.html:75 -msgid "Pager" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "PagerPhone" -msgstr "Malkovich" - -#: html/Elements/EditLinks:117 html/Elements/EditLinks:54 html/Elements/ShowLinks:46 html/Ticket/Create.html:182 html/Ticket/Elements/BulkLinks:38 -msgid "Parents" -msgstr "Malkovich" - -#: html/Elements/Login:52 html/User/Prefs.html:83 -msgid "Password" -msgstr "Malkovich" - -#: html/NoAuth/Reminder.html:24 -msgid "Password Reminder" -msgstr "Malkovich Malkovich" - -#: lib/RT/User_Overlay.pm:185 lib/RT/User_Overlay.pm:994 -msgid "Password too short" -msgstr "Malkovich Malkovich" - -#: html/Admin/Users/Modify.html:316 html/User/Prefs.html:209 -#. (loc_fuzzy($msg)) -msgid "Password: %1" -msgstr "Malkovich: %1" - -#: html/Admin/Users/Modify.html:318 -msgid "Passwords do not match." -msgstr "Malkovich do Malkovich." - -#: html/User/Prefs.html:211 -msgid "Passwords do not match. Your password has not been changed" -msgstr "Malkovich do Malkovich. Malkovich Malkovich Malkovich" - -#: html/Ticket/Elements/ShowSummary:44 html/Ticket/Elements/Tabs:97 html/Ticket/ModifyAll.html:50 -msgid "People" -msgstr "Malkovich" - -#: etc/initialdata:133 -msgid "Perform a user-defined action" -msgstr "Malkovich a user-Malkovich" - -#: lib/RT/ACE_Overlay.pm:230 lib/RT/ACE_Overlay.pm:236 lib/RT/ACE_Overlay.pm:562 lib/RT/ACE_Overlay.pm:572 lib/RT/ACE_Overlay.pm:582 lib/RT/ACE_Overlay.pm:647 lib/RT/Attribute_Overlay.pm:135 lib/RT/Attribute_Overlay.pm:141 lib/RT/Attribute_Overlay.pm:379 lib/RT/Attribute_Overlay.pm:388 lib/RT/Attribute_Overlay.pm:401 lib/RT/CurrentUser.pm:103 lib/RT/CurrentUser.pm:94 lib/RT/CustomField_Overlay.pm:100 lib/RT/CustomField_Overlay.pm:207 lib/RT/CustomField_Overlay.pm:239 lib/RT/CustomField_Overlay.pm:517 lib/RT/CustomField_Overlay.pm:90 lib/RT/Group_Overlay.pm:1091 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1104 lib/RT/Group_Overlay.pm:1155 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1165 lib/RT/Group_Overlay.pm:426 lib/RT/Group_Overlay.pm:518 lib/RT/Group_Overlay.pm:596 lib/RT/Group_Overlay.pm:604 lib/RT/Group_Overlay.pm:701 lib/RT/Group_Overlay.pm:705 lib/RT/Group_Overlay.pm:711 lib/RT/Group_Overlay.pm:896 lib/RT/Group_Overlay.pm:900 lib/RT/Group_Overlay.pm:913 lib/RT/Queue_Overlay.pm:117 lib/RT/Queue_Overlay.pm:135 lib/RT/Queue_Overlay.pm:578 lib/RT/Queue_Overlay.pm:588 lib/RT/Queue_Overlay.pm:602 lib/RT/Queue_Overlay.pm:740 lib/RT/Queue_Overlay.pm:749 lib/RT/Queue_Overlay.pm:762 lib/RT/Queue_Overlay.pm:975 lib/RT/Scrip_Overlay.pm:125 lib/RT/Scrip_Overlay.pm:136 lib/RT/Scrip_Overlay.pm:201 lib/RT/Scrip_Overlay.pm:473 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:87 lib/RT/Template_Overlay.pm:93 lib/RT/Ticket_Overlay.pm:1453 lib/RT/Ticket_Overlay.pm:1463 lib/RT/Ticket_Overlay.pm:1477 lib/RT/Ticket_Overlay.pm:1614 lib/RT/Ticket_Overlay.pm:1624 lib/RT/Ticket_Overlay.pm:1638 lib/RT/Ticket_Overlay.pm:1755 lib/RT/Ticket_Overlay.pm:2075 lib/RT/Ticket_Overlay.pm:2213 lib/RT/Ticket_Overlay.pm:2381 lib/RT/Ticket_Overlay.pm:2428 lib/RT/Ticket_Overlay.pm:2582 lib/RT/Ticket_Overlay.pm:2640 lib/RT/Ticket_Overlay.pm:2691 lib/RT/Ticket_Overlay.pm:2706 lib/RT/Ticket_Overlay.pm:2905 lib/RT/Ticket_Overlay.pm:2915 lib/RT/Ticket_Overlay.pm:2920 lib/RT/Ticket_Overlay.pm:3143 lib/RT/Ticket_Overlay.pm:3147 lib/RT/Ticket_Overlay.pm:3350 lib/RT/Ticket_Overlay.pm:3512 lib/RT/Ticket_Overlay.pm:3564 lib/RT/Ticket_Overlay.pm:3791 lib/RT/Transaction_Overlay.pm:443 lib/RT/Transaction_Overlay.pm:450 lib/RT/Transaction_Overlay.pm:479 lib/RT/Transaction_Overlay.pm:486 lib/RT/User_Overlay.pm:1088 lib/RT/User_Overlay.pm:1536 lib/RT/User_Overlay.pm:335 lib/RT/User_Overlay.pm:696 lib/RT/User_Overlay.pm:731 lib/RT/User_Overlay.pm:987 -msgid "Permission Denied" -msgstr "Malkovich Malkovich" - -#: html/User/Elements/Tabs:34 -msgid "Personal Groups" -msgstr "Malkovich" - -#: html/User/Groups/index.html:29 html/User/Groups/index.html:39 -msgid "Personal groups" -msgstr "Malkovich" - -#: html/User/Elements/DelegateRights:36 -msgid "Personal groups:" -msgstr "Malkovich:" - -#: html/Admin/Users/Modify.html:153 html/User/Prefs.html:60 -msgid "Phone numbers" -msgstr "Malkovich" - -#: html/Elements/Header:63 html/Elements/Tabs:55 html/SelfService/Elements/Tabs:50 html/SelfService/Prefs.html:24 html/User/Prefs.html:24 html/User/Prefs.html:27 -msgid "Preferences" -msgstr "Malkovich" - -#: lib/RT/Action/Generic.pm:169 -msgid "Prepare Stubbed" -msgstr "Malkovich" - -#: html/Ticket/Elements/Tabs:62 -msgid "Prev" -msgstr "Prev" - -#: lib/RT/ACE_Overlay.pm:132 lib/RT/ACE_Overlay.pm:207 lib/RT/ACE_Overlay.pm:551 -#. ($args{'PrincipalId'}) -msgid "Principal %1 not found." -msgstr "Malkovich %1 Malkovich." - -#: html/Search/Elements/PickBasics:58 html/Ticket/Create.html:153 html/Ticket/Elements/EditBasics:52 html/Ticket/Elements/ShowBasics:50 lib/RT/Tickets_Overlay.pm:1104 -msgid "Priority" -msgstr "Malkovich" - -#: html/Admin/Queues/Modify.html:64 -msgid "Priority starts at" -msgstr "Malkovich at" - -#: etc/initialdata:25 -msgid "Privileged" -msgstr "Malkovich" - -#: html/Admin/Users/Modify.html:296 html/User/Prefs.html:200 -#. (loc_fuzzy($msg)) -msgid "Privileged status: %1" -msgstr "Malkovich Malkovich: %1" - -#: html/Admin/Users/index.html:61 -msgid "Privileged users" -msgstr "Malkovich Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Projects" -msgstr "Malkovich" - -#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 -msgid "Pseudogroup for internal use" -msgstr "Malkovich Malkovich Malkovich" - -#: html/Elements/QuickCreate:10 html/Elements/Quicksearch:28 html/Search/Elements/PickBasics:94 html/SelfService/Create.html:32 html/Ticket/Create.html:37 html/Ticket/Elements/EditBasics:35 html/Ticket/Elements/ShowBasics:54 html/User/Elements/DelegateRights:79 lib/RT/Tickets_Overlay.pm:945 -msgid "Queue" -msgstr "Malkovich" - -#: html/Admin/Queues/CustomField.html:41 html/Admin/Queues/Scrip.html:49 html/Admin/Queues/Scrips.html:47 html/Admin/Queues/Templates.html:43 -#. ($Queue) -#. ($id) -msgid "Queue %1 not found" -msgstr "Malkovich %1 Malkovich" - -#: html/Admin/Queues/Modify.html:42 -msgid "Queue Name" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:300 -msgid "Queue already exists" -msgstr "Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:309 lib/RT/Queue_Overlay.pm:315 -msgid "Queue could not be created" -msgstr "Malkovich not be Malkovich" - -#: html/Ticket/Create.html:208 -msgid "Queue could not be loaded." -msgstr "Malkovich be Malkovich." - -#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:319 lib/RT/StyleGuide.pod:789 -msgid "Queue created" -msgstr "Malkovich" - -#: html/SelfService/Display.html:72 lib/RT/CustomField_Overlay.pm:97 -msgid "Queue not found" -msgstr "Malkovich" - -#: html/Admin/Elements/Tabs:37 html/Admin/index.html:34 -msgid "Queues" -msgstr "Malkovich" - -#: html/Elements/Quicksearch:24 -msgid "Quick search" -msgstr "Malkovich" - -#: html/Elements/Login:44 -#. ($RT::VERSION) -msgid "RT %1" -msgstr "RT %1" - -#: docs/design_docs/string-extraction-guide.txt:70 lib/RT/StyleGuide.pod:776 -#. ($RT::VERSION, $RT::rtname) -msgid "RT %1 for %2" -msgstr "RT %1 for %2" - -#: NOT FOUND IN SOURCE -msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." -msgstr "RT %1 from <a href=\"http://Malkovich.com\">Malkovich Malkovich, LLC</a>." - -#: html/Admin/index.html:24 html/Admin/index.html:25 -msgid "RT Administration" -msgstr "RT Malkovich" - -#: html/Elements/Error:41 html/SelfService/Error.html:40 -msgid "RT Error" -msgstr "RT Malkovich" - -#: html/index.html:50 html/index.html:53 -msgid "RT at a glance" -msgstr "RT at a Malkovich" - -#: html/Elements/PageLayout:85 -#. ($RT::rtname) -msgid "RT for %1" -msgstr "RT for %1" - -#: NOT FOUND IN SOURCE -msgid "RT is © Copyright 1996-%1 Jesse Vincent <jesse@bestpractical.com>. It is distributed under <a href=\"http://www.gnu.org/copyleft/gpl.html\">Version 2 of the GNU General Public License.</a>" -msgstr "RT is © Malkovich 1996-%1 Malkovich <Malkovich@Malkovich.com>. It is Malkovich Malkovich <a href=\"http://www.gnu.org/copyleft/gpl.html\">Malkovich 2 of the Malkovich Malkovich Malkovich.</a>" - -#: html/Admin/Users/Modify.html:57 html/User/Prefs.html:47 -msgid "Real Name" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "RealName" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:628 -#. ($value) -msgid "Reference by %1 added" -msgstr "Malkovich by %1 Malkovich" - -#: lib/RT/Transaction_Overlay.pm:668 -#. ($value) -msgid "Reference by %1 deleted" -msgstr "Malkovich by %1 Malkovich" - -#: lib/RT/Transaction_Overlay.pm:625 -#. ($value) -msgid "Reference to %1 added" -msgstr "Malkovich to %1 Malkovich" - -#: lib/RT/Transaction_Overlay.pm:665 -#. ($value) -msgid "Reference to %1 deleted" -msgstr "Malkovich to %1 Malkovich" - -#: html/Elements/EditLinks:129 html/Elements/EditLinks:81 html/Elements/ShowLinks:70 html/Ticket/Create.html:185 html/Ticket/Elements/BulkLinks:50 -msgid "Referred to by" -msgstr "Malkovich to by" - -#: html/Elements/EditLinks:125 html/Elements/EditLinks:72 html/Elements/SelectLinkType:27 html/Elements/ShowLinks:60 html/Ticket/Create.html:184 html/Ticket/Elements/BulkLinks:46 -msgid "Refers to" -msgstr "Malkovich to" - -#: NOT FOUND IN SOURCE -msgid "Refine search" -msgstr "Malkovich" - -#: html/Elements/Refresh:35 -#. ($value/60) -msgid "Refresh this page every %1 minutes." -msgstr "Malkovich Malkovich %1 Malkovich." - -#: html/Search/Bulk.html:95 -msgid "Remove AdminCc" -msgstr "Malkovich" - -#: html/Search/Bulk.html:91 -msgid "Remove Cc" -msgstr "Malkovich Cc" - -#: html/Search/Bulk.html:87 -msgid "Remove Requestor" -msgstr "Malkovich Malkovich" - -#: html/Ticket/Elements/ShowTransaction:142 html/Ticket/Elements/Tabs:123 -msgid "Reply" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:87 -msgid "Reply to tickets" -msgstr "Malkovich to Malkovich" - -#: lib/RT/Queue_Overlay.pm:87 -msgid "ReplyToTicket" -msgstr "Malkovich" - -#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:86 -msgid "Requestor" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Requestor email address" -msgstr "Malkovich Malkovich" - -#: html/SelfService/Create.html:40 html/Ticket/Create.html:55 html/Ticket/Elements/EditPeople:47 html/Ticket/Elements/ShowPeople:30 -msgid "Requestors" -msgstr "Malkovich" - -#: html/Admin/Queues/Modify.html:74 -msgid "Requests should be due in" -msgstr "Malkovich be due in" - -#: html/Elements/Submit:61 -msgid "Reset" -msgstr "Malkovich" - -#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:63 -msgid "Residence" -msgstr "Malkovich" - -#: html/Ticket/Elements/Tabs:133 -msgid "Resolve" -msgstr "Malkovich" - -#: html/Ticket/Update.html:119 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Resolve ticket #%1 (%2)" -msgstr "Malkovich #%1 (%2)" - -#: etc/initialdata:323 html/Elements/SelectDateType:27 lib/RT/Ticket_Overlay.pm:1282 -msgid "Resolved" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Response to requestors" -msgstr "Malkovich to Malkovich" - -#: html/Elements/ListActions:25 html/Search/Elements/NewListActions:25 -msgid "Results" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Results per page" -msgstr "Malkovich Malkovich" - -#: html/Admin/Users/Modify.html:99 html/User/Prefs.html:94 -msgid "Retype Password" -msgstr "Malkovich" - -#: lib/RT/ACE_Overlay.pm:612 -msgid "Right Delegated" -msgstr "Malkovich" - -#: lib/RT/ACE_Overlay.pm:302 -msgid "Right Granted" -msgstr "Malkovich" - -#: lib/RT/ACE_Overlay.pm:160 -msgid "Right Loaded" -msgstr "Malkovich" - -#: lib/RT/ACE_Overlay.pm:677 lib/RT/ACE_Overlay.pm:692 -msgid "Right could not be revoked" -msgstr "Malkovich be Malkovich" - -#: html/User/Delegation.html:63 -msgid "Right not found" -msgstr "Malkovich" - -#: lib/RT/ACE_Overlay.pm:542 lib/RT/ACE_Overlay.pm:637 -msgid "Right not loaded." -msgstr "Malkovich Malkovich." - -#: lib/RT/ACE_Overlay.pm:688 -msgid "Right revoked" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Rights" -msgstr "Malkovich" - -#: lib/RT/Interface/Web.pm:869 -#. ($object_type) -msgid "Rights could not be granted for %1" -msgstr "Malkovich Malkovich be Malkovich %1" - -#: lib/RT/Interface/Web.pm:899 -#. ($object_type) -msgid "Rights could not be revoked for %1" -msgstr "Malkovich Malkovich be Malkovich %1" - -#: html/Admin/Global/GroupRights.html:50 html/Admin/Queues/GroupRights.html:52 -msgid "Roles" -msgstr "Malkovich" - -#: lib/RT/Date.pm:393 -msgid "Sat." -msgstr "Sat." - -#: html/Admin/Global/Template.html:45 html/Admin/Queues/Modify.html:89 html/Admin/Queues/People.html:104 html/Admin/Users/Modify.html:198 html/SelfService/Prefs.html:36 html/Ticket/Modify.html:38 html/Ticket/ModifyAll.html:93 html/Ticket/ModifyDates.html:38 html/Ticket/ModifyLinks.html:38 html/Ticket/ModifyPeople.html:37 -msgid "Save Changes" -msgstr "Malkovich" - -#: html/Ticket/Elements/PreviewScrips:79 -msgid "Save changes" -msgstr "Malkovich" - -#: html/Admin/Global/Scrip.html:48 html/Admin/Queues/Scrip.html:54 -#. ($id) -#. ($ARGS{'id'}) -msgid "Scrip #%1" -msgstr "Malkovich #%1" - -#: lib/RT/Scrip_Overlay.pm:180 -msgid "Scrip Created" -msgstr "Malkovich" - -#: html/Admin/Elements/EditScrips:85 -msgid "Scrip deleted" -msgstr "Malkovich" - -#: html/Admin/Elements/QueueTabs:45 html/Admin/Elements/SystemTabs:32 html/Admin/Global/index.html:40 -msgid "Scrips" -msgstr "Malkovich" - -#: html/Admin/Queues/Scrips.html:33 -msgid "Scrips which apply to all queues" -msgstr "Malkovich Malkovich to Malkovich" - -#: html/Elements/SimpleSearch:26 html/Search/Elements/DisplayOptions:73 -msgid "Search" -msgstr "Malkovich" - -#: html/Approvals/Elements/PendingMyApproval:38 -msgid "Search for approvals" -msgstr "Malkovich Malkovich" - -#: bin/rt-crontool:184 -msgid "Security:" -msgstr "Malkovich:" - -#: lib/RT/Queue_Overlay.pm:68 -msgid "SeeQueue" -msgstr "Malkovich" - -#: html/Admin/Groups/index.html:50 -msgid "Select a group" -msgstr "Malkovich a Malkovich" - -#: html/Admin/Users/index.html:24 html/Admin/Users/index.html:27 -msgid "Select a user" -msgstr "Malkovich a user" - -#: html/Admin/Global/CustomField.html:37 html/Admin/Global/CustomFields.html:35 -msgid "Select custom field" -msgstr "Malkovich Malkovich" - -#: html/Admin/Elements/GroupTabs:51 html/User/Elements/GroupTabs:49 -msgid "Select group" -msgstr "Malkovich" - -#: lib/RT/CustomField_Overlay.pm:427 -msgid "Select multiple values" -msgstr "Malkovich Malkovich" - -#: lib/RT/CustomField_Overlay.pm:424 -msgid "Select one value" -msgstr "Malkovich Malkovich" - -#: html/Admin/Elements/QueueTabs:66 -msgid "Select queue" -msgstr "Malkovich" - -#: html/Admin/Global/Scrip.html:36 html/Admin/Global/Scrips.html:35 html/Admin/Queues/Scrip.html:39 html/Admin/Queues/Scrips.html:51 -msgid "Select scrip" -msgstr "Malkovich" - -#: html/Admin/Global/Template.html:56 html/Admin/Global/Templates.html:35 html/Admin/Queues/Template.html:54 html/Admin/Queues/Templates.html:46 -msgid "Select template" -msgstr "Malkovich" - -#: html/Admin/Elements/UserTabs:46 -msgid "Select user" -msgstr "Malkovich" - -#: lib/RT/CustomField_Overlay.pm:35 -msgid "SelectMultiple" -msgstr "Malkovich" - -#: lib/RT/CustomField_Overlay.pm:34 -msgid "SelectSingle" -msgstr "Malkovich" - -#: etc/initialdata:121 -msgid "Send mail to all watchers" -msgstr "Malkovich to Malkovich" - -#: etc/initialdata:117 -msgid "Send mail to all watchers as a \"comment\"" -msgstr "Malkovich to Malkovich as a \"Malkovich\"" - -#: etc/initialdata:112 -msgid "Send mail to requestors and Ccs" -msgstr "Malkovich to Malkovich and Ccs" - -#: etc/initialdata:107 -msgid "Send mail to requestors and Ccs as a comment" -msgstr "Malkovich to Malkovich and Ccs as a Malkovich" - -#: etc/initialdata:78 -msgid "Sends a message to the requestors" -msgstr "Malkovich a Malkovich to the Malkovich" - -#: etc/initialdata:125 etc/initialdata:129 -msgid "Sends mail to explicitly listed Ccs and Bccs" -msgstr "Malkovich to Malkovich Malkovich and Bccs" - -#: etc/initialdata:102 -msgid "Sends mail to the administrative Ccs" -msgstr "Malkovich to the Malkovich Malkovich" - -#: etc/initialdata:98 -msgid "Sends mail to the administrative Ccs as a comment" -msgstr "Malkovich to the Malkovich Malkovich as a Malkovich" - -#: etc/initialdata:82 etc/initialdata:86 -msgid "Sends mail to the owner" -msgstr "Malkovich to the Malkovich" - -#: lib/RT/Date.pm:419 -msgid "Sep." -msgstr "Sep." - -#: html/Approvals/Elements/PendingMyApproval:43 -msgid "Show approved requests" -msgstr "Malkovich Malkovich" - -#: html/Ticket/Create.html:143 html/Ticket/Create.html:33 -msgid "Show basics" -msgstr "Malkovich" - -#: html/Approvals/Elements/PendingMyApproval:44 -msgid "Show denied requests" -msgstr "Malkovich Malkovich" - -#: html/Ticket/Create.html:143 html/Ticket/Create.html:33 -msgid "Show details" -msgstr "Malkovich" - -#: html/Approvals/Elements/PendingMyApproval:42 -msgid "Show pending requests" -msgstr "Malkovich Malkovich" - -#: html/Approvals/Elements/PendingMyApproval:45 -msgid "Show requests awaiting other approvals" -msgstr "Malkovich Malkovich Malkovich Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Show ticket private commentary" -msgstr "Malkovich Malkovich Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Show ticket summaries" -msgstr "Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:70 -msgid "ShowACL" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:79 -msgid "ShowScrips" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:76 -msgid "ShowTemplate" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:80 -msgid "ShowTicket" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:81 -msgid "ShowTicketComments" -msgstr "Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:84 -msgid "Sign up as a ticket Requestor or ticket or queue Cc" -msgstr "Sign up as a Malkovich Malkovich or Malkovich or Malkovich Cc" - -#: lib/RT/Queue_Overlay.pm:85 -msgid "Sign up as a ticket or queue AdminCc" -msgstr "Sign up as a Malkovich or Malkovich" - -#: html/Admin/Users/Modify.html:188 html/User/Prefs.html:145 -msgid "Signature" -msgstr "Malkovich" - -#: html/Admin/Elements/SelectSingleOrMultiple:25 -msgid "Single" -msgstr "Malkovich" - -#: html/Elements/Header:62 -msgid "Skip Menu" -msgstr "Malkovich" - -#: html/Admin/Elements/AddCustomFieldValue:27 -msgid "Sort" -msgstr "Sort" - -#: NOT FOUND IN SOURCE -msgid "Sort results by" -msgstr "Malkovich by" - -#: NOT FOUND IN SOURCE -msgid "Squelched message recipients" -msgstr "Malkovich Malkovich Malkovich" - -#: html/Admin/Elements/EditScrip:65 -msgid "Stage" -msgstr "Malkovich" - -#: html/Elements/SelectDateType:26 html/Ticket/Elements/EditDates:31 html/Ticket/Elements/ShowDates:35 -msgid "Started" -msgstr "Malkovich" - -#: html/Elements/SelectDateType:30 html/Ticket/Create.html:165 html/Ticket/Elements/EditDates:26 html/Ticket/Elements/ShowDates:31 -msgid "Starts" -msgstr "Malkovich" - -#: html/Admin/Users/Modify.html:135 html/User/Prefs.html:123 -msgid "State" -msgstr "Malkovich" - -#: html/Search/Elements/PickBasics:77 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:30 html/Ticket/Create.html:41 html/Ticket/Elements/EditBasics:31 html/Ticket/Elements/ShowBasics:30 html/Ticket/Update.html:37 lib/RT/Ticket_Overlay.pm:1276 lib/RT/Tickets_Overlay.pm:970 -msgid "Status" -msgstr "Malkovich" - -#: etc/initialdata:309 -msgid "Status Change" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:505 -#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) -msgid "Status changed from %1 to %2" -msgstr "Malkovich Malkovich %1 to %2" - -#: html/Ticket/Elements/Tabs:148 -msgid "Steal" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "Steal tickets" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "StealTicket" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:581 -#. ($Old->Name) -msgid "Stolen from %1 " -msgstr "Malkovich %1 " - -#: html/Elements/QuickCreate:7 html/Elements/SelectAttachmentField:25 html/Search/Bulk.html:133 html/SelfService/Create.html:56 html/SelfService/Elements/MyRequests:27 html/SelfService/Update.html:31 html/Ticket/Create.html:83 html/Ticket/Elements/EditBasics:26 html/Ticket/ModifyAll.html:78 html/Ticket/Update.html:58 lib/RT/Ticket_Overlay.pm:1272 lib/RT/Tickets_Overlay.pm:1049 -msgid "Subject" -msgstr "Malkovich" - -#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:795 lib/RT/Transaction_Overlay.pm:603 -#. ($self->Data) -msgid "Subject changed to %1" -msgstr "Malkovich to %1" - -#: html/Elements/Submit:58 -msgid "Submit" -msgstr "Malkovich" - -#: lib/RT/Group_Overlay.pm:749 -msgid "Succeeded" -msgstr "Malkovich" - -#: lib/RT/Date.pm:394 -msgid "Sun." -msgstr "Sun." - -#: lib/RT/System.pm:53 -msgid "SuperUser" -msgstr "Malkovich" - -#: html/User/Elements/DelegateRights:76 -msgid "System" -msgstr "Malkovich" - -#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:566 lib/RT/Interface/Web.pm:868 lib/RT/Interface/Web.pm:898 -msgid "System Error" -msgstr "Malkovich" - -#: lib/RT/ACE_Overlay.pm:615 -msgid "System error. Right not delegated." -msgstr "Malkovich. Malkovich Malkovich." - -#: lib/RT/ACE_Overlay.pm:145 lib/RT/ACE_Overlay.pm:222 lib/RT/ACE_Overlay.pm:305 lib/RT/ACE_Overlay.pm:897 -msgid "System error. Right not granted." -msgstr "Malkovich. Malkovich Malkovich." - -#: html/Admin/Global/GroupRights.html:34 html/Admin/Groups/GroupRights.html:36 html/Admin/Queues/GroupRights.html:35 -msgid "System groups" -msgstr "Malkovich" - -#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 -msgid "SystemRolegroup for internal use" -msgstr "Malkovich Malkovich Malkovich" - -#: lib/RT/CurrentUser.pm:334 -msgid "TEST_STRING" -msgstr "TEST_MALKOVICH" - -#: html/Elements/MyRequests:27 html/Ticket/Elements/Tabs:144 -msgid "Take" -msgstr "Take" - -#: lib/RT/Queue_Overlay.pm:92 -msgid "Take tickets" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:92 -msgid "TakeTicket" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:566 -msgid "Taken" -msgstr "Malkovich" - -#: html/Admin/Elements/EditScrip:57 html/Tools/Offline.html:56 -msgid "Template" -msgstr "Malkovich" - -#: html/Admin/Global/Template.html:90 html/Admin/Queues/Template.html:89 -#. ($TemplateObj->Id()) -msgid "Template #%1" -msgstr "Malkovich #%1" - -#: html/Admin/Elements/EditTemplates:88 -msgid "Template deleted" -msgstr "Malkovich Malkovich" - -#: lib/RT/Scrip_Overlay.pm:156 -msgid "Template not found" -msgstr "Malkovich Malkovich" - -#: lib/RT/Template_Overlay.pm:348 -msgid "Template parsed" -msgstr "Malkovich" - -#: html/Admin/Elements/QueueTabs:48 html/Admin/Elements/SystemTabs:35 html/Admin/Global/index.html:44 -msgid "Templates" -msgstr "Malkovich" - -#: lib/RT/Record.pm:740 -msgid "That is already the current value" -msgstr "That is Malkovich the Malkovich" - -#: lib/RT/CustomField_Overlay.pm:248 -msgid "That is not a value for this custom field" -msgstr "That is not a Malkovich Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2086 -msgid "That is the same value" -msgstr "That is the Malkovich" - -#: lib/RT/ACE_Overlay.pm:287 lib/RT/ACE_Overlay.pm:596 -msgid "That principal already has that right" -msgstr "Malkovich Malkovich Malkovich Malkovich" - -#: lib/RT/Queue_Overlay.pm:674 -#. ($args{'Type'}) -msgid "That principal is already a %1 for this queue" -msgstr "Malkovich is Malkovich a %1 Malkovich" - -#: lib/RT/Ticket_Overlay.pm:1527 -#. ($self->loc($args{'Type'})) -msgid "That principal is already a %1 for this ticket" -msgstr "Malkovich is Malkovich a %1 Malkovich" - -#: lib/RT/Queue_Overlay.pm:773 -#. ($args{'Type'}) -msgid "That principal is not a %1 for this queue" -msgstr "That Malkovich is not a %1 Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2082 -msgid "That queue does not exist" -msgstr "Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:3152 -msgid "That ticket has unresolved dependencies" -msgstr "Malkovich Malkovich Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2956 -msgid "That user already owns that ticket" -msgstr "Malkovich Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2928 -msgid "That user does not exist" -msgstr "Malkovich Malkovich" - -#: lib/RT/User_Overlay.pm:355 -msgid "That user is already privileged" -msgstr "Malkovich is Malkovich Malkovich" - -#: lib/RT/User_Overlay.pm:376 -msgid "That user is already unprivileged" -msgstr "Malkovich is Malkovich Malkovich" - -#: lib/RT/User_Overlay.pm:368 -msgid "That user is now privileged" -msgstr "Malkovich is Malkovich" - -#: lib/RT/User_Overlay.pm:389 -msgid "That user is now unprivileged" -msgstr "Malkovich is Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:2949 -msgid "That user may not own tickets in that queue" -msgstr "Malkovich Malkovich Malkovich in Malkovich" - -#: lib/RT/Link_Overlay.pm:200 -msgid "That's not a numerical id" -msgstr "That's not a Malkovich id" - -#: html/SelfService/Display.html:31 html/Ticket/Create.html:149 html/Ticket/Elements/ShowSummary:27 -msgid "The Basics" -msgstr "The Malkovich" - -#: lib/RT/ACE_Overlay.pm:87 -msgid "The CC of a ticket" -msgstr "The CC of a Malkovich" - -#: lib/RT/ACE_Overlay.pm:88 -msgid "The administrative CC of a ticket" -msgstr "The Malkovich CC of a Malkovich" - -#: bin/rt-crontool:194 -msgid "The following command will find all active tickets in the queue 'general' and set their priority to 99 if they haven't been touched in 4 hours:" -msgstr "The Malkovich Malkovich Malkovich Malkovich Malkovich in the Malkovich 'Malkovich' and Malkovich Malkovich to 99 if they haven't Malkovich in 4 Malkovich:" - -#: NOT FOUND IN SOURCE -msgid "The following commands were not proccessed:\\n\\n" -msgstr "The Malkovich Malkovich Malkovich Malkovich:\\n\\n" - -#: lib/RT/Record.pm:743 -msgid "The new value has been set." -msgstr "The Malkovich Malkovich." - -#: lib/RT/ACE_Overlay.pm:85 -msgid "The owner of a ticket" -msgstr "The Malkovich of a Malkovich" - -#: lib/RT/ACE_Overlay.pm:86 -msgid "The requestor of a ticket" -msgstr "The Malkovich of a Malkovich" - -#: html/Admin/Elements/EditUserComments:25 -msgid "These comments aren't generally visible to the user" -msgstr "Malkovich aren't Malkovich Malkovich to the user" - -#: bin/rt-crontool:185 -msgid "This tool allows the user to run arbitrary perl modules from within RT." -msgstr "Malkovich Malkovich the user to Malkovich Malkovich Malkovich Malkovich RT." - -#: lib/RT/Transaction_Overlay.pm:226 -msgid "This transaction appears to have no content" -msgstr "Malkovich Malkovich to have no Malkovich" - -#: html/Ticket/Elements/ShowRequestor:48 -#. ($rows) -msgid "This user's %1 highest priority tickets" -msgstr "Malkovich's %1 Malkovich Malkovich" - -#: lib/RT/Date.pm:391 -msgid "Thu." -msgstr "Thu." - -#: html/Ticket/ModifyAll.html:24 html/Ticket/ModifyAll.html:28 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket #%1 Jumbo update: %2" -msgstr "Malkovich #%1 Malkovich: %2" - -#: html/Approvals/Elements/ShowDependency:45 -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Ticket #%1: %2" -msgstr "Malkovich #%1: %2" - -#: lib/RT/Ticket_Overlay.pm:696 lib/RT/Ticket_Overlay.pm:720 -#. ($self->Id, $QueueObj->Name) -msgid "Ticket %1 created in queue '%2'" -msgstr "Malkovich %1 Malkovich in Malkovich '%2'" - -#: NOT FOUND IN SOURCE -msgid "Ticket %1 loaded\\n" -msgstr "Malkovich %1 Malkovich\\n" - -#: html/Search/Bulk.html:216 -#. ($Ticket->Id,$_) -msgid "Ticket %1: %2" -msgstr "Malkovich %1: %2" - -#: html/Ticket/History.html:24 html/Ticket/History.html:27 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket History # %1 %2" -msgstr "Malkovich # %1 %2" - -#: etc/initialdata:324 -msgid "Ticket Resolved" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Ticket attachment" -msgstr "Malkovich Malkovich" - -#: lib/RT/Tickets_Overlay.pm:1228 -msgid "Ticket content" -msgstr "Malkovich" - -#: lib/RT/Tickets_Overlay.pm:1274 -msgid "Ticket content type" -msgstr "Malkovich Malkovich" - -#: lib/RT/Ticket_Overlay.pm:565 lib/RT/Ticket_Overlay.pm:579 lib/RT/Ticket_Overlay.pm:590 lib/RT/Ticket_Overlay.pm:707 -msgid "Ticket could not be created due to an internal error" -msgstr "Malkovich Malkovich be Malkovich to a Malkovich" - -#: lib/RT/Transaction_Overlay.pm:497 -msgid "Ticket created" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:502 -msgid "Ticket deleted" -msgstr "Malkovich" - -#: etc/initialdata:310 -msgid "Ticket status changed" -msgstr "Malkovich Malkovich" - -#: html/Elements/Tabs:46 -msgid "Tickets" -msgstr "Malkovich" - -#: lib/RT/Tickets_Overlay.pm:1452 -#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) -msgid "Tickets %1 %2" -msgstr "Malkovich %1 %2" - -#: lib/RT/Tickets_Overlay.pm:1410 -#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) -msgid "Tickets %1 by %2" -msgstr "Malkovich %1 by %2" - -#: NOT FOUND IN SOURCE -msgid "Tickets from %1" -msgstr "Malkovich %1" - -#: html/Approvals/Elements/ShowDependency:26 -msgid "Tickets which depend on this approval:" -msgstr "Malkovich Malkovich on Malkovich:" - -#: html/Search/Elements/PickBasics:70 html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:47 -msgid "Time Left" -msgstr "Malkovich" - -#: html/Search/Elements/PickBasics:68 html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:43 -msgid "Time Worked" -msgstr "Malkovich" - -#: lib/RT/Tickets_Overlay.pm:1201 -msgid "Time left" -msgstr "Malkovich" - -#: html/Elements/Footer:44 -msgid "Time to display" -msgstr "Time to Malkovich" - -#: lib/RT/Tickets_Overlay.pm:1177 -msgid "Time worked" -msgstr "Malkovich" - -#: lib/RT/Ticket_Overlay.pm:1277 -msgid "TimeWorked" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "To generate a diff of this commit:" -msgstr "To Malkovich a diff of Malkovich:" - -#: NOT FOUND IN SOURCE -msgid "To generate a diff of this commit:\\n" -msgstr "To Malkovich a diff of Malkovich:\\n" - -#: lib/RT/Ticket_Overlay.pm:1280 -msgid "Told" -msgstr "Told" - -#: etc/initialdata:252 -msgid "Transaction" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:705 -#. ($self->Data) -msgid "Transaction %1 purged" -msgstr "Malkovich %1 Malkovich" - -#: lib/RT/Transaction_Overlay.pm:136 -msgid "Transaction Created" -msgstr "Malkovich Malkovich" - -#: lib/RT/Transaction_Overlay.pm:92 -msgid "Transaction->Create couldn't, as you didn't specify a ticket id" -msgstr "Malkovich->Malkovich couldn't, as you didn't Malkovich a Malkovich id" - -#: lib/RT/Transaction_Overlay.pm:760 -msgid "Transactions are immutable" -msgstr "Malkovich Malkovich Malkovich" - -#: lib/RT/Date.pm:389 -msgid "Tue." -msgstr "Tue." - -#: html/Admin/Elements/EditCustomField:43 html/Ticket/Elements/AddWatchers:32 html/Ticket/Elements/AddWatchers:43 html/Ticket/Elements/AddWatchers:53 lib/RT/Ticket_Overlay.pm:1278 lib/RT/Tickets_Overlay.pm:1021 -msgid "Type" -msgstr "Type" - -#: lib/RT/ScripCondition_Overlay.pm:103 -msgid "Unimplemented" -msgstr "Malkovich" - -#: html/Admin/Users/Modify.html:67 -msgid "Unix login" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "UnixUsername" -msgstr "Malkovich" - -#: lib/RT/Attachment_Overlay.pm:233 lib/RT/Attachment_Overlay.pm:265 -#. ($self->ContentEncoding) -msgid "Unknown ContentEncoding %1" -msgstr "Malkovich Malkovich %1" - -#: html/Elements/SelectResultsPerPage:36 -msgid "Unlimited" -msgstr "Malkovich" - -#: etc/initialdata:32 -msgid "Unprivileged" -msgstr "Malkovich" - -#: lib/RT/Transaction_Overlay.pm:562 -msgid "Untaken" -msgstr "Malkovich" - -#: html/Search/Bulk.html:32 -msgid "Update" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Update ID" -msgstr "Malkovich ID" - -#: html/Search/Bulk.html:127 html/Ticket/ModifyAll.html:65 html/Ticket/Update.html:48 -msgid "Update Type" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Update all these tickets at once" -msgstr "Malkovich Malkovich at once" - -#: NOT FOUND IN SOURCE -msgid "Update email" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Update name" -msgstr "Malkovich" - -#: lib/RT/Action/CreateTickets.pm:655 lib/RT/Interface/Web.pm:479 -msgid "Update not recorded." -msgstr "Malkovich Malkovich." - -#: html/Search/Bulk.html:78 -msgid "Update selected tickets" -msgstr "Malkovich Malkovich" - -#: NOT FOUND IN SOURCE -msgid "Update signature" -msgstr "Malkovich Malkovich" - -#: html/Ticket/ModifyAll.html:62 -msgid "Update ticket" -msgstr "Malkovich" - -#: html/SelfService/Update.html:24 html/SelfService/Update.html:63 -#. ($Ticket->id) -msgid "Update ticket #%1" -msgstr "Malkovich #%1" - -#: html/Ticket/Update.html:121 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Update ticket #%1 (%2)" -msgstr "Malkovich #%1 (%2)" - -#: lib/RT/Action/CreateTickets.pm:653 lib/RT/Interface/Web.pm:477 -msgid "Update type was neither correspondence nor comment." -msgstr "Malkovich Malkovich Malkovich Malkovich Malkovich." - -#: html/Elements/SelectDateType:32 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1281 -msgid "Updated" -msgstr "Malkovich" - -#: etc/initialdata:132 etc/initialdata:206 -msgid "User Defined" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "User ID" -msgstr "User ID" - -#: html/Elements/SelectUsers:25 -msgid "User Id" -msgstr "User Id" - -#: html/Admin/Elements/GroupTabs:46 html/Admin/Elements/QueueTabs:59 html/Admin/Elements/SystemTabs:46 html/Admin/Global/index.html:58 -msgid "User Rights" -msgstr "Malkovich" - -#: html/Admin/Users/Modify.html:252 -#. ($msg) -msgid "User could not be created: %1" -msgstr "Malkovich be Malkovich: %1" - -#: lib/RT/User_Overlay.pm:296 -msgid "User created" -msgstr "Malkovich" - -#: html/Admin/Global/GroupRights.html:66 html/Admin/Groups/GroupRights.html:53 html/Admin/Queues/GroupRights.html:68 -msgid "User defined groups" -msgstr "Malkovich Malkovich" - -#: lib/RT/User_Overlay.pm:558 lib/RT/User_Overlay.pm:575 -msgid "User loaded" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "User view" -msgstr "Malkovich" - -#: html/Admin/Users/Modify.html:47 html/Elements/Login:51 html/Ticket/Elements/AddWatchers:34 -msgid "Username" -msgstr "Malkovich" - -#: html/Admin/Elements/SelectNewGroupMembers:25 html/Admin/Elements/Tabs:31 html/Admin/Groups/Members.html:54 html/Admin/Queues/People.html:67 html/Admin/index.html:28 html/User/Groups/Members.html:57 -msgid "Users" -msgstr "Malkovich" - -#: html/Admin/Users/index.html:64 -msgid "Users matching search criteria" -msgstr "Malkovich Malkovich Malkovich" - -#: lib/RT/Tickets_Overlay_SQL.pm:494 -msgid "Valid Query" -msgstr "Malkovich" - -#: html/Admin/Elements/EditCustomField:56 -msgid "Values" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:84 -msgid "Watch" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:85 -msgid "WatchAsAdminCc" -msgstr "Malkovich" - -#: html/Admin/Elements/QueueTabs:41 -msgid "Watchers" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "WebEncoding" -msgstr "Malkovich" - -#: lib/RT/Date.pm:390 -msgid "Wed." -msgstr "Wed." - -#: etc/initialdata:521 -msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" -msgstr "When a Malkovich Malkovich by Malkovich, Malkovich Malkovich to the Malkovich" - -#: etc/initialdata:485 -msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" -msgstr "When a Malkovich Malkovich by Malkovich, Malkovich Malkovich to the Malkovich" - -#: etc/initialdata:146 -msgid "When a ticket is created" -msgstr "When a Malkovich is Malkovich" - -#: etc/initialdata:418 -msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" -msgstr "When a Malkovich is Malkovich, Malkovich the Malkovich and Malkovich of the Malkovich Malkovich Malkovich" - -#: etc/initialdata:151 -msgid "When anything happens" -msgstr "Malkovich Malkovich" - -#: etc/initialdata:199 -msgid "Whenever a ticket is resolved" -msgstr "Malkovich a Malkovich is Malkovich" - -#: etc/initialdata:185 -msgid "Whenever a ticket's owner changes" -msgstr "Malkovich a Malkovich's Malkovich" - -#: etc/initialdata:193 -msgid "Whenever a ticket's queue changes" -msgstr "Malkovich a Malkovich's Malkovich" - -#: etc/initialdata:170 -msgid "Whenever a ticket's status changes" -msgstr "Malkovich a Malkovich's Malkovich" - -#: etc/initialdata:207 -msgid "Whenever a user-defined condition occurs" -msgstr "Malkovich a user-Malkovich Malkovich" - -#: etc/initialdata:164 -msgid "Whenever comments come in" -msgstr "Malkovich Malkovich in" - -#: etc/initialdata:157 -msgid "Whenever correspondence comes in" -msgstr "Malkovich Malkovich Malkovich in" - -#: html/Admin/Users/Modify.html:161 html/User/Prefs.html:67 -msgid "Work" -msgstr "Work" - -#: NOT FOUND IN SOURCE -msgid "WorkPhone" -msgstr "Malkovich" - -#: html/Ticket/Elements/ShowBasics:41 html/Ticket/Update.html:42 -msgid "Worked" -msgstr "Malkovich" - -#: html/autohandler:150 -msgid "XXX CHANGEME You are not an authorized user" -msgstr "MALKOVICH Malkovich a Malkovich" - -#: lib/RT/Ticket_Overlay.pm:3059 -msgid "You already own this ticket" -msgstr "Malkovich Malkovich Malkovich" - -#: html/autohandler:142 -msgid "You are not an authorized user" -msgstr "Malkovich a Malkovich" - -#: NOT FOUND IN SOURCE -msgid "You can access it with the Download button on the right." -msgstr "Malkovich it with the Malkovich on the Malkovich." - -#: lib/RT/Ticket_Overlay.pm:2941 -msgid "You can only reassign tickets that you own or that are unowned" -msgstr "Malkovich Malkovich Malkovich Malkovich or Malkovich Malkovich" - -#: docs/design_docs/string-extraction-guide.txt:47 lib/RT/StyleGuide.pod:760 -#. ($num, $queue) -msgid "You found %1 tickets in queue %2" -msgstr "Malkovich %1 Malkovich in Malkovich %2" - -#: html/NoAuth/Logout.html:30 -msgid "You have been logged out of RT." -msgstr "Malkovich Malkovich of RT." - -#: html/SelfService/Display.html:79 -msgid "You have no permission to create tickets in that queue." -msgstr "Malkovich no Malkovich to Malkovich in that Malkovich." - -#: lib/RT/Ticket_Overlay.pm:2095 -msgid "You may not create requests in that queue." -msgstr "Malkovich Malkovich Malkovich in Malkovich." - -#: html/NoAuth/Logout.html:34 -msgid "You're welcome to login again" -msgstr "You're Malkovich to Malkovich" - -#: etc/initialdata:502 -msgid "Your request has been approved by %1. Other approvals may still be pending." -msgstr "Malkovich Malkovich Malkovich by %1. Malkovich Malkovich be Malkovich." - -#: etc/initialdata:540 -msgid "Your request has been approved." -msgstr "Malkovich Malkovich Malkovich." - -#: etc/initialdata:445 -msgid "Your request was rejected." -msgstr "Malkovich Malkovich." - -#: html/autohandler:177 -msgid "Your username or password is incorrect" -msgstr "Malkovich or Malkovich is Malkovich" - -#: html/Admin/Users/Modify.html:141 html/User/Prefs.html:127 -msgid "Zip" -msgstr "Zip" - -#: html/User/Elements/DelegateRights:58 -#. ($right->PrincipalObj->Object->SelfDescription) -msgid "as granted to %1" -msgstr "as Malkovich to %1" - -#: html/SelfService/Closed.html:27 -msgid "closed" -msgstr "Malkovich" - -#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:33 -msgid "contains" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "content" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "content-type" -msgstr "Malkovich-type" - -#: html/Admin/Queues/Modify.html:76 lib/RT/Date.pm:319 -msgid "days" -msgstr "days" - -#: lib/RT/Queue_Overlay.pm:64 -msgid "deleted" -msgstr "Malkovich" - -#: html/Search/Elements/PickBasics:33 -msgid "does not match" -msgstr "Malkovich" - -#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:34 -msgid "doesn't contain" -msgstr "doesn't Malkovich" - -#: html/Elements/SelectEqualityOperator:37 -msgid "equal to" -msgstr "Malkovich to" - -#: NOT FOUND IN SOURCE -msgid "filename" -msgstr "Malkovich" - -#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectEqualityOperator:37 -msgid "greater than" -msgstr "Malkovich" - -#: lib/RT/Group_Overlay.pm:196 -#. ($self->Name) -msgid "group '%1'" -msgstr "Malkovich '%1'" - -#: lib/RT/Date.pm:315 -msgid "hours" -msgstr "Malkovich" - -#: html/Elements/SelectBoolean:31 html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:35 html/Search/Elements/PickBasics:49 html/Search/Elements/PickBasics:80 html/Search/Elements/PickBasics:97 html/Search/Elements/PickCFs:37 -msgid "is" -msgstr "is" - -#: html/Elements/SelectBoolean:35 html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:36 html/Search/Elements/PickBasics:50 html/Search/Elements/PickBasics:81 html/Search/Elements/PickBasics:98 html/Search/Elements/PickCFs:38 -msgid "isn't" -msgstr "isn't" - -#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectEqualityOperator:37 -msgid "less than" -msgstr "Malkovich" - -#: html/Search/Elements/PickBasics:32 -msgid "matches" -msgstr "Malkovich" - -#: lib/RT/Date.pm:311 -msgid "min" -msgstr "min" - -#: html/Ticket/Update.html:42 -msgid "minutes" -msgstr "Malkovich" - -#: NOT FOUND IN SOURCE -msgid "modifications\\n\\n" -msgstr "Malkovich\\n\\n" - -#: lib/RT/Date.pm:327 -msgid "months" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:59 -msgid "new" -msgstr "new" - -#: html/Admin/Elements/EditCustomFields:42 -msgid "no name" -msgstr "no name" - -#: html/Admin/Elements/EditScrips:42 -msgid "no value" -msgstr "no Malkovich" - -#: html/Admin/Elements/EditQueueWatchers:26 html/Ticket/Elements/EditWatchers:27 -msgid "none" -msgstr "none" - -#: html/Elements/SelectEqualityOperator:37 -msgid "not equal to" -msgstr "Malkovich to" - -#: html/SelfService/Elements/MyRequests:61 lib/RT/Queue_Overlay.pm:60 -msgid "open" -msgstr "open" - -#: lib/RT/Group_Overlay.pm:201 -#. ($self->Name, $user->Name) -msgid "personal group '%1' for user '%2'" -msgstr "Malkovich '%1' Malkovich '%2'" - -#: lib/RT/Group_Overlay.pm:209 -#. ($queue->Name, $self->Type) -msgid "queue %1 %2" -msgstr "Malkovich %1 %2" - -#: lib/RT/Queue_Overlay.pm:63 -msgid "rejected" -msgstr "Malkovich" - -#: lib/RT/Queue_Overlay.pm:62 -msgid "resolved" -msgstr "Malkovich" - -#: lib/RT/Date.pm:307 -msgid "sec" -msgstr "sec" - -#: lib/RT/Queue_Overlay.pm:61 -msgid "stalled" -msgstr "Malkovich" - -#: lib/RT/Group_Overlay.pm:204 -#. ($self->Type) -msgid "system %1" -msgstr "Malkovich %1" - -#: lib/RT/Group_Overlay.pm:215 -#. ($self->Type) -msgid "system group '%1'" -msgstr "Malkovich '%1'" - -#: html/Elements/Error:42 html/SelfService/Error.html:41 -msgid "the calling component did not specify why" -msgstr "the Malkovich Malkovich Malkovich Malkovich" - -#: NOT FOUND IN SOURCE -msgid "ticket #%1" -msgstr "Malkovich #%1" - -#: lib/RT/Group_Overlay.pm:212 -#. ($self->Instance, $self->Type) -msgid "ticket #%1 %2" -msgstr "Malkovich #%1 %2" - -#: lib/RT/Group_Overlay.pm:218 -#. ($self->Id) -msgid "undescribed group %1" -msgstr "Malkovich Malkovich %1" - -#: lib/RT/Group_Overlay.pm:193 -#. ($user->Object->Name) -msgid "user %1" -msgstr "user %1" - -#: lib/RT/Date.pm:323 -msgid "weeks" -msgstr "Malkovich" - -#: lib/RT/Date.pm:331 -msgid "years" -msgstr "Malkovich" - diff --git a/rt/lib/RT/I18N/no.po b/rt/lib/RT/I18N/no.po deleted file mode 100644 index 113239724..000000000 --- a/rt/lib/RT/I18N/no.po +++ /dev/null @@ -1,6563 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: RT 3.5.x\n" -"POT-Creation-Date: 2003-04-01 06:06+0200\n" -"PO-Revision-Date: 2006-12-20 20:59+0100\n" -"Last-Translator: Ronny Pettersen <ronny.pettersen@edb.com>\n" -"Language-Team: rt-devel <rt-devel@lists.bestpractical.com>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: html/Widgets/SavedSearch:70 -#. ($self->{CurrentSearch}{Object}->Description) -msgid " %1 deleted." -msgstr "" - -#: html/Widgets/SavedSearch:47 -#. ($self->{CurrentSearch}{Description}, $args->{Description}) -msgid " %1 renamed to %2." -msgstr "" - -#: html/Widgets/SavedSearch:60 -#. ($args->{Description}) -msgid " %1 saved." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "#" -msgstr "#" - -#: NOT FOUND IN SOURCE -msgid "#%1" -msgstr "#%1" - -#: html/Approvals/Elements/Approve:48 html/Approvals/Elements/ShowDependency:71 html/SelfService/Display.html:46 html/Ticket/Display.html:47 html/Ticket/Display.html:51 -#. ($Ticket->id, $Ticket->Subject) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -#. ($ticket->Id, $ticket->Subject) -#. ($TicketObj->Id, $TicketObj->Subject) -msgid "#%1: %2" -msgstr "#%1: %2" - -#: html/Elements/ShowSearch:105 -msgid "$1" -msgstr "$1" - -#: lib/RT/Record.pm:940 -#. ($label) -msgid "$prefix %1" -msgstr "$prefix %1" - -#: lib/RT/URI/fsck_com_rt.pm:256 -#. ($self->ObjectType, $self->Object->Id) -msgid "%1 #%2" -msgstr "" - -#: lib/RT/Date.pm:365 -#. ($s, $time_unit) -msgid "%1 %2" -msgstr "%1 %2" - -#: NOT FOUND IN SOURCE -msgid "%1 %2 %3" -msgstr "%1 %2 %3" - -#: lib/RT/Date.pm:401 -#. ($self->GetWeekday($wday), $self->GetMonth($mon), map {sprintf "%02d", $_} ($mday, $hour, $min, $sec), ($year+1900)) -msgid "%1 %2 %3 %4:%5:%6 %7" -msgstr "%1 %3. %2 %7 %4:%5:%6" - -#: lib/RT/Record.pm:1685 lib/RT/Transaction_Overlay.pm:647 lib/RT/Transaction_Overlay.pm:690 -#. ($cf->Name, $new_value->Content) -#. ($field, $self->NewValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 added" -msgstr "%1 %2 lagt til" - -#: lib/RT/Date.pm:362 -#. ($s, $time_unit) -msgid "%1 %2 ago" -msgstr "%1 %2 siden" - -#: lib/RT/Record.pm:1692 lib/RT/Transaction_Overlay.pm:654 -#. ($cf->Name, $old_content, $new_value->Content) -#. ($field, $self->OldValue, $self->NewValue) -msgid "%1 %2 changed to %3" -msgstr "%1 %2 ble endret til %3" - -#: lib/RT/Record.pm:1689 lib/RT/Transaction_Overlay.pm:650 lib/RT/Transaction_Overlay.pm:696 -#. ($cf->Name, $old_value->Content) -#. ($field, $self->OldValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 deleted" -msgstr "%1 %2 slettet" - -#: NOT FOUND IN SOURCE -msgid "%1 %2 of group %3" -msgstr "%1 %2 av gruppen %3" - -#: html/Admin/Elements/EditScrips:65 html/Admin/Elements/ListGlobalScrips:63 html/Ticket/Elements/PreviewScrips:103 -#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) -msgid "%1 %2 with template %3" -msgstr "%1 %2 med mal %3" - -#: NOT FOUND IN SOURCE -msgid "%1 (%2) %3 this ticket\\n" -msgstr "%1 (%2) %3 denne saken\\n" - -#: html/Ticket/Elements/ShowAttachments:72 -#. ($rev->CreatedAsString, $size, $rev->CreatorObj->Name) -msgid "%1 (%2) by %3" -msgstr "" - -#: html/SelfService/Update.html:60 html/Ticket/Elements/EditBasics:108 html/Ticket/Update.html:61 html/Ticket/Update.html:63 html/Tools/MyDay.html:66 -#. (loc($DefaultStatus)) -#. (loc($Ticket->Status())) -#. (loc($TicketObj->Status)) -#. ($TicketObj->OwnerObj->Name()) -msgid "%1 (Unchanged)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "%1 - %2 shown" -msgstr "%1 - %2 vist" - -#: bin/rt-crontool:237 bin/rt-crontool:244 bin/rt-crontool:250 -#. ("--search-argument", "--search") -#. ("--condition-argument", "--condition") -#. ("--action-argument", "--action") -msgid "%1 - An argument to pass to %2" -msgstr "%1 - Et parameter til %2" - -#: bin/rt-crontool:262 -#. ("--verbose") -msgid "%1 - Output status updates to STDOUT" -msgstr "%1 - Viser statusoppdateringer til STDOUT" - -#: bin/rt-crontool:253 -#. ("--template-id") -msgid "%1 - Specify id of the template you want to use" -msgstr "" - -#: bin/rt-crontool:256 -#. ("--transaction") -msgid "%1 - Specify if you want to use either 'first' or 'last' tarnsaction" -msgstr "" - -#: bin/rt-crontool:247 -#. ("--action") -msgid "%1 - Specify the action module you want to use" -msgstr "%1 - Oppgi kommandomodulen du ønsker å bruke" - -#: bin/rt-crontool:241 -#. ("--condition") -msgid "%1 - Specify the condition module you want to use" -msgstr "%1 - Oppgi betingelsesmodulen du ønsker å bruke" - -#: bin/rt-crontool:234 -#. ("--search") -msgid "%1 - Specify the search module you want to use" -msgstr "%1 - Oppgi søkemodulen du ønsker å bruke" - -#: bin/rt-crontool:259 -#. ("--transaction-type") -msgid "%1 - Specify the type of a transaction you want to use" -msgstr "" - -#: html/Elements/Footer:56 -#. ('»|«', $RT::VERSION, '2006', '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',) -msgid "%1 RT %2 Copyright 1996-%3 %4." -msgstr "" - -#: lib/RT/ScripAction_Overlay.pm:150 -#. ($self->Id) -msgid "%1 ScripAction loaded" -msgstr "%1 KommandoScript lastet" - -#: lib/RT/Record.pm:1722 -#. ($args{'Value'}, $cf->Name) -msgid "%1 added as a value for %2" -msgstr "%1 ble lagt til som verdi for %2" - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on" -msgstr "%1 alias trenger en ReferanseId å jobbe mot" - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on " -msgstr "%1 alias trenger en saksnummer å jobbe mot " - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on (from %2) %3" -msgstr "%1 alias trenger et saksnummer å jobbe mot (fra %2) %3" - -#: lib/RT/Link_Overlay.pm:144 lib/RT/Link_Overlay.pm:151 -#. ($args{'Base'}) -#. ($args{'Target'}) -msgid "%1 appears to be a local object, but can't be found in the database" -msgstr "%1 ser ut til å være et lokalt objekt, men kan ikke finnes i databasen" - -#: html/Ticket/Elements/ShowDates:73 lib/RT/Transaction_Overlay.pm:531 -#. ($self->BriefDescription , $self->CreatorObj->Name) -#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) -msgid "%1 by %2" -msgstr "%1 av %2" - -#: lib/RT/Transaction_Overlay.pm:788 lib/RT/Transaction_Overlay.pm:797 lib/RT/Transaction_Overlay.pm:800 -#. ($self->Field , $q1->Name , $q2->Name) -#. ($self->Field, $t2->AsString, $t1->AsString) -#. ($self->Field, ($self->OldValue? "'".$self->OldValue ."'" : $self->loc("(no value)")) , "'". $self->NewValue."'") -msgid "%1 changed from %2 to %3" -msgstr "%1 ble endret fra %2 til %3" - -#: html/Search/Build.html:213 -#. ($Description) -msgid "%1 copy" -msgstr "%1 kopi" - -#: lib/RT/Record.pm:944 -msgid "%1 could not be set to %2." -msgstr "%1 kunne ikke settes til %2." - -#: NOT FOUND IN SOURCE -msgid "%1 couldn't init a transaction (%2)\\n" -msgstr "%1 kunne ikke starte en transaksjon (%2)\\n" - -#: lib/RT/Ticket_Overlay.pm:2787 -#. ($self) -msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." -msgstr "%1 kunne ikke sette status til løst. RT-basen kan være inkonsistent." - -#: lib/RT/Transaction_Overlay.pm:571 -#. ($obj_type) -msgid "%1 created" -msgstr "%1 opprettet" - -#: lib/RT/Transaction_Overlay.pm:576 -#. ($obj_type) -msgid "%1 deleted" -msgstr "%1 slettet" - -#: etc/initialdata:593 -msgid "%1 highest priority tickets I own" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets I own..." -msgstr "Mine %1 høyst prioriterte saker..." - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets I requested..." -msgstr "Mine %1 høyst prioriterte forespørsler..." - -#: bin/rt-crontool:229 -#. ($0) -msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." -msgstr "%1 er et verktøy for å behandle saker fra eksterne verktøy, slik som cron." - -#: lib/RT/Queue_Overlay.pm:863 -#. ($principal->Object->Name, $args{'Type'}) -msgid "%1 is no longer a %2 for this queue." -msgstr "%1 er ikke lenger en %2 for denne køen." - -#: NOT FOUND IN SOURCE -msgid "%1 is no longer a %2 for this ticket." -msgstr "%1 er ikke lenger en %2 for denne saken." - -#: NOT FOUND IN SOURCE -msgid "%1 is no longer a value for custom field %2" -msgstr "%1 er ikke lenger en verdi for fleksifeltet %2" - -#: NOT FOUND IN SOURCE -msgid "%1 isn't a valid Queue id." -msgstr "%1 er ikke et gyldig saksnummer." - -#: html/Ticket/Elements/ShowTime:47 html/Ticket/Elements/ShowTime:49 -#. ($minutes) -msgid "%1 min" -msgstr "%1 min" - -#: etc/initialdata:601 -msgid "%1 newest unowned tickets" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "%1 not shown" -msgstr "%1 vises ikke" - -#: lib/RT/CustomField_Overlay.pm:893 -msgid "%1 objects" -msgstr "" - -#: html/User/Elements/DelegateRights:97 -#. (loc($ObjectType =~ /^RT::(.*)$/)) -msgid "%1 rights" -msgstr "%1 rettigheter" - -#: NOT FOUND IN SOURCE -msgid "%1 succeeded\\n" -msgstr "%1 var velykket\\n" - -#: NOT FOUND IN SOURCE -msgid "%1 type unknown for $MessageId" -msgstr "%1 er ukjent type for $saksnummer" - -#: NOT FOUND IN SOURCE -msgid "%1 type unknown for %2" -msgstr "%1 er ukjent type for %2" - -#: NOT FOUND IN SOURCE -msgid "%1 was created without a CurrentUser\\n" -msgstr "%1 ble opprettet uten en aktiv bruker\\n" - -#: lib/RT/Action/ResolveMembers.pm:63 -#. (ref $self) -msgid "%1 will resolve all members of a resolved group ticket." -msgstr "%1 vil løse alle medlemmer av en løst gruppesak." - -#: NOT FOUND IN SOURCE -msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." -msgstr "%1 vil stoppe en [lokal] BASE hvis den er avhengig av/medlem av en tilkoblet sak." - -#: lib/RT/CustomField_Overlay.pm:894 -msgid "%1's %2 objects" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:895 -msgid "%1's %2's %3 objects" -msgstr "" - -#: html/Search/Elements/SearchPrivacy:52 html/Search/Elements/SelectSearchObject:55 html/Search/Elements/SelectSearchesForObjects:57 -#. ($object->Name) -#. ($Object->Name) -msgid "%1's saved searches" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:481 -#. ($self) -msgid "%1: no attachment specified" -msgstr "%1: ingen vedlegg oppgitt" - -#: html/Ticket/Elements/ShowTransactionAttachments:78 -#. ($size) -msgid "%1b" -msgstr "%1b" - -#: html/Ticket/Elements/ShowTransactionAttachments:75 -#. (int( $size / 102.4 ) / 10) -msgid "%1k" -msgstr "%1k" - -#: html/Ticket/Elements/ShowTime:49 -#. (sprintf("%.1f",$minutes / 60)) -msgid "%quant(%1,hour)" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1142 -#. ($args{'Status'}) -msgid "'%1' is an invalid value for status" -msgstr "'%1' er en ugyldig statusverdi" - -#: NOT FOUND IN SOURCE -msgid "'%1' not a recognized action. " -msgstr "'%1' er ikke en kjent handling" - -#: NOT FOUND IN SOURCE -msgid "(Check box to delete group member)" -msgstr "(Merk for å slette gruppemedlem)" - -#: NOT FOUND IN SOURCE -msgid "(Check box to delete scrip)" -msgstr "(Merk for å slette Scrip)" - -#: html/Admin/Elements/EditCustomFieldValues:50 html/Admin/Elements/EditQueueWatchers:50 html/Admin/Elements/EditScrips:56 html/Admin/Elements/EditTemplates:57 html/Admin/Groups/Members.html:73 html/Elements/EditLinks:54 html/Ticket/Elements/EditPeople:67 html/User/Groups/Members.html:76 -msgid "(Check box to delete)" -msgstr "(Merk for å slette)" - -#: NOT FOUND IN SOURCE -msgid "(Check boxes to delete)" -msgstr "(Merk boksene for å slette)" - -#: html/Ticket/Elements/PreviewScrips:99 -msgid "(Check boxes to disable notifications to the listed recipients)" -msgstr "" - -#: html/Ticket/Elements/PreviewScrips:123 -msgid "(Check boxes to enable notifications to the listed recipients)" -msgstr "" - -#: html/Ticket/Create.html:218 -msgid "(Enter ticket ids or URLs, separated with spaces)" -msgstr "(Skriv inn referansenummer eller URler, separert med mellomrom)" - -#: html/Admin/Queues/Modify.html:75 html/Admin/Queues/Modify.html:81 -#. ($RT::CorrespondAddress) -#. ($RT::CommentAddress) -msgid "(If left blank, will default to %1)" -msgstr "(Settes til standard %1 hvis blank)" - -#: NOT FOUND IN SOURCE -msgid "(No Value)" -msgstr "(Ingen Verdi)" - -#: html/Admin/Elements/EditCustomFields:74 html/Admin/Elements/ListGlobalCustomFields:53 -msgid "(No custom fields)" -msgstr "(Ingen fleksifelt)" - -#: html/Admin/Groups/Members.html:71 html/User/Groups/Members.html:74 -msgid "(No members)" -msgstr "(Ingen medlemmer)" - -#: html/Admin/Elements/EditScrips:53 html/Admin/Elements/ListGlobalScrips:48 -msgid "(No scrips)" -msgstr "(Ingen scrips)" - -#: html/Admin/Elements/EditTemplates:52 -msgid "(No templates)" -msgstr "(Ingen maler)" - -#: html/Admin/Elements/PickCustomFields:47 html/Admin/Elements/PickObjects:47 -msgid "(None)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)" -msgstr "(Sender en kopi av denne oppdateringen til en kommaseparert liste med epostaddresser. Endrer <b>ikke</b> hvem som vil motta fremtidige oppdatreinger.)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will recieve future updates.)" -msgstr "(Sender en kopi av denne oppdateringen til en kommaseparert liste med epostaddresser. Endrer <b>ikke</b> hvem som vil motta fremtidige oppdateringer.)" - -#: html/Ticket/Update.html:90 -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <b>will</b> receive future updates.)" -msgstr "(Sender en kopi av denne oppdateringen til en kommaseparert liste av administrative epostaddresser. Disse vil <b>vil</b> motta fremtidige oppdateringer.)" - -#: html/Ticket/Create.html:103 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <strong>will</strong> receive future updates.)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)" -msgstr "(Sender en kopi av denne oppdateringen til en komma-separert liste av epostaddresser. Endrer <b>ikke</b> hvem som vil motta fremtidige oppdateringer.)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will recieve future updates.)" -msgstr "(Sender en kopi av denne oppdateringen til en kommaseparert liste med epost-addresser. Endrer <b->ikke</b> hvem som vi motta fremtige utfordrer dere nå." - -#: html/Ticket/Update.html:86 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <b>will</b> receive future updates.)" -msgstr "(Sender en kopi av dette oppdateringen til en kommaseparert liste med epostaddresser. Disse <b>vill</b> motta fremtidige oppdateringer.)" - -#: html/Ticket/Create.html:93 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <strong>will</strong> receive future updates.)" -msgstr "" - -#: html/Admin/Elements/EditScrip:96 -msgid "(Use these fields when you choose 'User Defined' for a condition or action)" -msgstr "" - -#: html/Ticket/Elements/EditWatchers:60 html/Ticket/Elements/ShowUserEntry:53 -msgid "(Will not be sent email)" -msgstr "" - -#: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54 -msgid "(empty)" -msgstr "(tom)" - -#: html/Admin/Users/index.html:60 -msgid "(no name listed)" -msgstr "(navn ikke oppgitt)" - -#: NOT FOUND IN SOURCE -msgid "(no subject)" -msgstr "(ingen overskrift)" - -#: html/Admin/Elements/SelectRights:72 html/Elements/EditCustomFieldSelect:69 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:54 html/Search/Chart:56 html/Search/Elements/Chart:76 lib/RT/Transaction_Overlay.pm:591 -msgid "(no value)" -msgstr "(ingen verdi)" - -#: html/Admin/Elements/EditCustomFieldValues:47 -msgid "(no values)" -msgstr "" - -#: html/Elements/EditLinks:132 html/Ticket/Elements/BulkLinks:49 -msgid "(only one ticket)" -msgstr "(bare en sak)" - -#: html/Elements/RT__Ticket/ColumnMap:149 -msgid "(pending approval)" -msgstr "(Venter på godkjenning)" - -#: html/Elements/RT__Ticket/ColumnMap:152 -msgid "(pending other Collection)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "(pending other tickets)" -msgstr "(venter på andre saker)" - -#: NOT FOUND IN SOURCE -msgid "(requestor's group)" -msgstr "(kundens gruppe)" - -#: html/Admin/Users/Modify.html:71 -msgid "(required)" -msgstr "(nødvendig)" - -#: html/Ticket/Elements/ShowTransactionAttachments:82 -msgid "(untitled)" -msgstr "(ingen tittel)" - -#: html/Ticket/Elements/Reminders:133 -msgid "(yyyy/mm/dd)" -msgstr "" - -#: html/Elements/EditCustomFieldSelect:57 -msgid "-" -msgstr "" - -#: bin/rt-crontool:95 -msgid "--transaction argument could be only 'first' or 'last'" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "25 highest priority tickets I own..." -msgstr "Mine 25 høyst prioriterte saker..." - -#: NOT FOUND IN SOURCE -msgid "25 highest priority tickets I requested..." -msgstr "Mine 25 høyst priorterte forespørsler..." - -#: html/Ticket/Elements/ShowBasics:53 -msgid "<% $Ticket->Status%>" -msgstr "<% $Ticket-:Status%>" - -#: html/Elements/SelectTicketTypes:48 -msgid "<% $_ %>" -msgstr "<% $_ %>" - -#: html/Search/Elements/SelectLinks:48 -msgid "<%$_%>" -msgstr "" - -#: html/Search/Elements/DisplayOptions:73 -msgid "<%$field%>" -msgstr "" - -#: html/Elements/CreateTicket:47 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" class=\"button\" value=\"New ticket in\" /> %1" -msgstr "" - -#: docs/design_docs/string-extraction-guide.txt:54 lib/RT/StyleGuide.pod:787 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" value=\"New ticket in\"> %1" -msgstr "<input type=\"submit\" value=\"Ny sak i\"> %1" - -#: NOT FOUND IN SOURCE -msgid "??????" -msgstr "??????" - -#: etc/initialdata:218 -msgid "A blank template" -msgstr "En tom mal" - -#: html/Admin/Users/Modify.html:371 -msgid "A password was not set, so user won't be able to login." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "ACE Deleted" -msgstr "ACE slettet" - -#: NOT FOUND IN SOURCE -msgid "ACE Loaded" -msgstr "ACE lastet" - -#: NOT FOUND IN SOURCE -msgid "ACE could not be deleted" -msgstr "ACE kunne ikke slettes" - -#: NOT FOUND IN SOURCE -msgid "ACE could not be found" -msgstr "fant ikke ACE" - -#: lib/RT/ACE_Overlay.pm:174 lib/RT/Principal_Overlay.pm:219 -msgid "ACE not found" -msgstr "ACE ikke funnet" - -#: lib/RT/ACE_Overlay.pm:853 -msgid "ACEs can only be created and deleted." -msgstr "ACEr kan bare opprettes og slettes." - -#: html/Search/Elements/SelectAndOr:46 -msgid "AND" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Aborting to avoid unintended ticket modifications.\\n" -msgstr "Avbryter for å ungå uånsket saksendring" - -#: html/User/Elements/Tabs:53 -msgid "About me" -msgstr "Om meg" - -#: html/Admin/Users/Modify.html:106 -msgid "Access control" -msgstr "Aksesskontroll" - -#: html/Admin/Elements/EditScrip:65 -msgid "Action" -msgstr "Handling" - -#: lib/RT/Scrip_Overlay.pm:172 -#. ($args{'ScripAction'}) -msgid "Action %1 not found" -msgstr "Handling %1 finnes ikke" - -#: NOT FOUND IN SOURCE -msgid "Action committed." -msgstr "Handling skrevet." - -#: bin/rt-crontool:171 -msgid "Action committed.\\n" -msgstr "" - -#: lib/RT/Scrip_Overlay.pm:168 -msgid "Action is mandatory argument" -msgstr "" - -#: bin/rt-crontool:167 -msgid "Action prepared..." -msgstr "Handling forberedt" - -#: html/Search/Build.html:85 -msgid "Add" -msgstr "" - -#: html/Search/Bulk.html:92 -msgid "Add AdminCc" -msgstr "Legg til AdminCc" - -#: html/Search/Bulk.html:88 -msgid "Add Cc" -msgstr "Legg til Cc" - -#: html/Search/Elements/EditFormat:49 -msgid "Add Columns" -msgstr "" - -#: html/Search/Elements/PickCriteria:46 -msgid "Add Criteria" -msgstr "" - -#: html/Ticket/Create.html:147 html/Ticket/Update.html:116 -msgid "Add More Files" -msgstr "Legg til flere filer" - -#: NOT FOUND IN SOURCE -msgid "Add Next State" -msgstr "Legg til neste status" - -#: html/Search/Bulk.html:84 -msgid "Add Requestor" -msgstr "Legg til kunde" - -#: html/Admin/Elements/AddCustomFieldValue:46 -msgid "Add Value" -msgstr "Legg til verdi" - -#: NOT FOUND IN SOURCE -msgid "Add a Scrip to this queue" -msgstr "Legg til Scrip i denne køen" - -#: NOT FOUND IN SOURCE -msgid "Add a Scrip which will apply to all queues" -msgstr "Legg til et Scrip som gjelder for alle køer" - -#: NOT FOUND IN SOURCE -msgid "Add a keyword selection to this queue" -msgstr "Legg til et nøkkelordvalg på denne køen" - -#: NOT FOUND IN SOURCE -msgid "Add a new a global scrip" -msgstr "Legg til et globalt Scrip" - -#: NOT FOUND IN SOURCE -msgid "Add a scrip to this queue" -msgstr "Legg til et Scrip til denne køen" - -#: html/Admin/Global/Scrip.html:83 -msgid "Add a scrip which will apply to all queues" -msgstr "Legg til et Scrip som vil gjelde for alle køer" - -#: html/Search/Build.html:109 html/Search/Build.html:94 -msgid "Add and Search" -msgstr "" - -#: html/Search/Bulk.html:124 -msgid "Add comments or replies to selected tickets" -msgstr "Legg til kommentarer eller svar til denne saken" - -#: html/Admin/Groups/Members.html:63 html/User/Groups/Members.html:60 -msgid "Add members" -msgstr "Legg til medlemmer" - -#: html/Admin/Queues/People.html:87 html/Ticket/Elements/AddWatchers:49 -msgid "Add new watchers" -msgstr "Legg til overvåkere" - -#: html/Search/Build.html:85 -msgid "Add these terms to your search" -msgstr "" - -#: html/Search/Bulk.html:158 -msgid "Add values" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:108 -msgid "Add, delete and modify custom field values for objects" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "AddNextState" -msgstr "AddNextState" - -#: lib/RT/Queue_Overlay.pm:763 -#. ($args{'Type'}) -msgid "Added principal as a %1 for this queue" -msgstr "La til primær som en %1 for denne køen" - -#: lib/RT/Ticket_Overlay.pm:1455 -#. ($self->loc($args{'Type'})) -msgid "Added principal as a %1 for this ticket" -msgstr "La til primær som en %1 for denne saken" - -#: html/Admin/Users/Modify.html:146 html/User/Prefs.html:133 -msgid "Address1" -msgstr "Adresse1" - -#: html/Admin/Users/Modify.html:151 html/User/Prefs.html:137 -msgid "Address2" -msgstr "Adresse2" - -#: html/Ticket/Create.html:98 -msgid "Admin Cc" -msgstr "Admin Cc" - -#: etc/initialdata:295 -msgid "Admin Comment" -msgstr "Admin Kommentar" - -#: etc/initialdata:274 -msgid "Admin Correspondence" -msgstr "Admin-korrespondanse" - -#: html/Admin/Queues/index.html:46 html/Admin/Queues/index.html:49 -msgid "Admin queues" -msgstr "Adminkøer" - -#: NOT FOUND IN SOURCE -msgid "Admin users" -msgstr "Adminbrukere" - -#: html/Admin/Global/index.html:47 html/Admin/Global/index.html:49 -msgid "Admin/Global configuration" -msgstr "Admin/Global konfigurasjon" - -#: NOT FOUND IN SOURCE -msgid "Admin/Groups" -msgstr "Admin/Grupper" - -#: NOT FOUND IN SOURCE -msgid "Admin/Queue/Basics" -msgstr "Admin/Køer/Grunnleggende" - -#: NOT FOUND IN SOURCE -msgid "AdminAllPersonalGroups" -msgstr "AdminAllePersonalGrupper" - -#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:60 lib/RT/ACE_Overlay.pm:113 -msgid "AdminCc" -msgstr "AdminCc" - -#: NOT FOUND IN SOURCE -msgid "AdminComment" -msgstr "AdminKommentar" - -#: NOT FOUND IN SOURCE -msgid "AdminCorrespondence" -msgstr "AdminKorrespondanse" - -#: lib/RT/CustomField_Overlay.pm:106 -msgid "AdminCustomField" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "AdminCustomFields" -msgstr "AdminFleksifelt" - -#: lib/RT/Group_Overlay.pm:163 -msgid "AdminGroup" -msgstr "AdminGruppe" - -#: lib/RT/Group_Overlay.pm:165 -msgid "AdminGroupMembership" -msgstr "AdminGruppeMedlemskap" - -#: lib/RT/System.pm:80 -msgid "AdminOwnPersonalGroups" -msgstr "AdminEgnePersonligeGrupper" - -#: lib/RT/Queue_Overlay.pm:92 -msgid "AdminQueue" -msgstr "AdminKø" - -#: lib/RT/System.pm:81 -msgid "AdminUsers" -msgstr "AdminBrukere" - -#: html/Admin/Queues/People.html:69 html/Ticket/Elements/EditPeople:75 -msgid "Administrative Cc" -msgstr "Administrativ Cc" - -#: NOT FOUND IN SOURCE -msgid "Admins" -msgstr "Admin" - -#: html/Ticket/Elements/Tabs:216 -msgid "Advanced" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Advanced Search" -msgstr "Avansert Søk" - -#: html/Elements/SelectDateRelation:57 -msgid "After" -msgstr "Etter" - -#: NOT FOUND IN SOURCE -msgid "Age" -msgstr "Alder" - -#: html/Search/Elements/PickCriteria:52 -msgid "Aggregator" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Alias" -msgstr "Alias" - -#: NOT FOUND IN SOURCE -msgid "Alias for" -msgstr "Alias for" - -#: etc/initialdata:363 -msgid "All Approvals Passed" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "All Custom Fields" -msgstr "Alle Fleksifelt" - -#: html/Admin/Queues/index.html:75 -msgid "All Queues" -msgstr "Alle køer" - -#: NOT FOUND IN SOURCE -msgid "Always sends a message to the requestors independent of message sender" -msgstr "Send alltid en melding til kunden uavhengig av meldingssender" - -#: html/Search/Elements/EditQuery:56 -msgid "And/Or" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:73 html/Admin/Elements/CustomFieldTabs:83 -msgid "Applies to" -msgstr "" - -#: html/Search/Edit.html:64 -msgid "Apply" -msgstr "" - -#: html/Search/Edit.html:64 -msgid "Apply your changes" -msgstr "" - -#: html/Elements/Tabs:77 -msgid "Approval" -msgstr "Godkjennelse" - -#: html/Approvals/Display.html:65 html/Approvals/Elements/ShowDependency:63 html/Approvals/index.html:86 -#. ($Ticket->Id, $Ticket->Subject) -#. ($ticket->id, $msg) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Approval #%1: %2" -msgstr "Godkjennelse #%1: %2" - -#: html/Approvals/index.html:75 -#. ($ticket->Id) -msgid "Approval #%1: Notes not recorded due to a system error" -msgstr "Godkjenning # %1: Notater kunne ikke lagres pga. systemfeil" - -#: html/Approvals/index.html:73 -#. ($ticket->Id) -msgid "Approval #%1: Notes recorded" -msgstr "Godkjenning #%1: Notater lagret" - -#: NOT FOUND IN SOURCE -msgid "Approval Details" -msgstr "Godkjenning - Detaljer" - -#: etc/initialdata:351 -msgid "Approval Passed" -msgstr "" - -#: etc/initialdata:374 -msgid "Approval Rejected" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Approval diagram" -msgstr "Godkjenningsdiagram" - -#: html/Approvals/Elements/Approve:69 -msgid "Approve" -msgstr "Godkjenn" - -#: etc/initialdata:504 -msgid "Approver's notes: %1" -msgstr "Godkjenners notater: %1" - -#: lib/RT/Date.pm:444 -msgid "Apr." -msgstr "Apr." - -#: NOT FOUND IN SOURCE -msgid "April" -msgstr "April" - -#: html/Search/Elements/DisplayOptions:81 -msgid "Asc" -msgstr "" - -#: html/Elements/SelectSortOrder:56 -msgid "Ascending" -msgstr "Stigende" - -#: lib/RT/Queue_Overlay.pm:96 -msgid "Assign and remove custom fields" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:96 -msgid "AssignCustomFields" -msgstr "" - -#: html/Search/Bulk.html:142 html/SelfService/Update.html:87 html/Ticket/ModifyAll.html:115 html/Ticket/Update.html:116 -msgid "Attach" -msgstr "Legg Ved" - -#: html/SelfService/Create.html:92 html/Ticket/Create.html:143 -msgid "Attach file" -msgstr "Legg ved fil" - -#: html/SelfService/Update.html:75 html/Ticket/Create.html:131 html/Ticket/Update.html:94 -msgid "Attached file" -msgstr "Vedlagt fil" - -#: html/Ticket/ShowEmailRecord.html:52 html/Ticket/ShowEmailRecord.html:56 html/Ticket/ShowEmailRecord.html:59 -#. ($Attachment) -msgid "Attachment '%1' could not be loaded" -msgstr "Vedlegg '%1' kunne ikke lastes" - -#: lib/RT/Transaction_Overlay.pm:489 -msgid "Attachment created" -msgstr "Vedlegg opprettet" - -#: lib/RT/Tickets_Overlay.pm:1945 -msgid "Attachment filename" -msgstr "Vedleggsnavn" - -#: html/Ticket/Elements/ShowAttachments:47 -msgid "Attachments" -msgstr "Vedlegg" - -#: lib/RT/Attributes_Overlay.pm:171 -msgid "Attribute Deleted" -msgstr "" - -#: lib/RT/Date.pm:448 -msgid "Aug." -msgstr "Aug." - -#: NOT FOUND IN SOURCE -msgid "August" -msgstr "August" - -#: NOT FOUND IN SOURCE -msgid "AuthSystem" -msgstr "AutSystem" - -#: etc/initialdata:221 -msgid "Autoreply" -msgstr "Autosvar" - -#: etc/initialdata:72 -msgid "Autoreply To Requestors" -msgstr "Autosvar Til Kunde" - -#: NOT FOUND IN SOURCE -msgid "AutoreplyToRequestors" -msgstr "AutosvarTilKunde" - -#: html/Widgets/SelectionBox:185 -msgid "Available" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Bad PGP Signature: %1\\n" -msgstr "Ugyldig PGP-signatur: %1\\n" - -#: NOT FOUND IN SOURCE -msgid "Bad attachment id. Couldn't find attachment '%1'\\n" -msgstr "Ugyldig vedleggsid. Kunne ikke finne vedlegg '%1'\\n" - -#: NOT FOUND IN SOURCE -msgid "Bad data in %1" -msgstr "Ugyldig data i %1" - -#: NOT FOUND IN SOURCE -msgid "Bad transaction number for attachment. %1 should be %2\\n" -msgstr "Ugyldig transaksjonsnummer for vedlegg. %1 skulle vært %2\\n" - -#: html/Admin/Elements/CustomFieldTabs:65 html/Admin/Elements/GroupTabs:60 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/UserTabs:58 html/Ticket/Elements/Tabs:113 html/User/Elements/GroupTabs:59 -msgid "Basics" -msgstr "Detaljer" - -#: html/Ticket/Update.html:88 -msgid "Bcc" -msgstr "Bcc" - -#: html/Admin/CustomFields/GroupRights.html:91 html/Admin/CustomFields/UserRights.html:74 html/Admin/Elements/EditScrip:89 -msgid "Be sure to save your changes" -msgstr "Sørg for å lagre endringene dine" - -#: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:361 -msgid "Before" -msgstr "Før" - -#: NOT FOUND IN SOURCE -msgid "Begin Approval" -msgstr "Begynn Godkjenning" - -#: html/Elements/Logo:47 -msgid "Best Practical Solutions, LLC corporate logo" -msgstr "" - -#: etc/initialdata:217 -msgid "Blank" -msgstr "Blank" - -#: html/Search/Elements/EditFormat:84 -msgid "Bold" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Bookmarkable URL for this search" -msgstr "URL som kan brukes som bokmerke for dette søket" - -#: html/Search/Results.html:79 -msgid "Bookmarkable link" -msgstr "" - -#: html/Ticket/Elements/ShowHistory:64 html/Ticket/Elements/ShowHistory:69 -msgid "Brief headers" -msgstr "Begrens headere" - -#: html/Ticket/Elements/Tabs:227 -msgid "Bulk Update" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Bulk ticket update" -msgstr "Masseoppdatering av saker" - -#: lib/RT/User_Overlay.pm:1853 -msgid "Can not modify system users" -msgstr "Kan ikke endre systembrukere" - -#: lib/RT/Queue_Overlay.pm:91 -msgid "Can this principal see this queue" -msgstr "Kan denne primæren se denne køen" - -#: lib/RT/CustomField_Overlay.pm:379 -msgid "Can't add a custom field value without a name" -msgstr "Kan ikke legge til en verdi for et fleksifelt uten navn" - -#: html/Admin/CustomFields/Objects.html:86 -#. ($Class) -msgid "Can't find a collection class for '%1'" -msgstr "" - -#: html/Search/Build.html:286 -msgid "Can't find a saved search to work with" -msgstr "" - -#: lib/RT/Link_Overlay.pm:159 -msgid "Can't link a ticket to itself" -msgstr "Kan ikke koble en sak til seg selv" - -#: NOT FOUND IN SOURCE -msgid "Can't merge into a merged ticket. You should never get this error" -msgstr "Kan ikke flette inn i en flettet sak. Denne meldingen bør ikke forekomme" - -#: html/Widgets/SavedSearch:63 -#. (loc($self->{SearchType})) -msgid "Can't save %1" -msgstr "" - -#: html/Search/Build.html:290 -msgid "Can't save this search" -msgstr "" - -#: lib/RT/Record.pm:1282 lib/RT/Record.pm:1358 -msgid "Can't specifiy both base and target" -msgstr "Kan ikke spesifisere både base og mål." - -#: html/autohandler:204 -#. ($msg) -msgid "Cannot create user: %1" -msgstr "Kunne ikke oprette bruker: %1" - -#: html/Admin/Elements/AddCustomFieldValue:62 html/Admin/Elements/EditCustomFieldValues:58 -msgid "Category" -msgstr "" - -#: etc/initialdata:50 html/Admin/Queues/People.html:65 html/SelfService/Create.html:71 html/Ticket/Create.html:88 html/Ticket/Elements/EditPeople:72 html/Ticket/Elements/ShowPeople:56 html/Ticket/Update.html:83 lib/RT/ACE_Overlay.pm:112 -msgid "Cc" -msgstr "Cc" - -#: html/SelfService/Prefs.html:52 -msgid "Change password" -msgstr "Endre passord" - -#: html/Elements/Submit:78 -msgid "Check All" -msgstr "" - -#: html/SelfService/Update.html:78 html/Ticket/Create.html:134 html/Ticket/Update.html:97 -msgid "Check box to delete" -msgstr "Merk for å slette" - -#: html/Admin/Elements/SelectRights:55 -msgid "Check box to revoke right" -msgstr "Merk for å trekke tilbake rettighet" - -#: html/Elements/EditLinks:148 html/Elements/EditLinks:85 html/Elements/ShowLinks:78 html/Ticket/Create.html:223 html/Ticket/Elements/BulkLinks:64 -msgid "Children" -msgstr "Barn" - -#: html/NoAuth/js/util.js:201 -msgid "Choose a date" -msgstr "" - -#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:141 -msgid "City" -msgstr "By" - -#: html/Elements/Submit:80 -msgid "Clear All" -msgstr "" - -#: html/Helpers/CalPopup.html:51 -msgid "Close window" -msgstr "" - -#: html/Ticket/Elements/ShowDates:68 -msgid "Closed" -msgstr "Lukket" - -#: NOT FOUND IN SOURCE -msgid "Closed Tickets" -msgstr "Lukkede Saker" - -#: NOT FOUND IN SOURCE -msgid "Closed requests" -msgstr "Lukkede forespørsler" - -#: html/SelfService/Closed.html:46 html/SelfService/Elements/Tabs:78 -msgid "Closed tickets" -msgstr "Lukkede saker" - -#: NOT FOUND IN SOURCE -msgid "Code" -msgstr "Kode" - -#: lib/RT/CustomField_Overlay.pm:89 -msgid "Combobox: Select or enter multiple values" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:90 -msgid "Combobox: Select or enter one value" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:91 -msgid "Combobox: Select or enter up to %1 values" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Command not understood!\\n" -msgstr "Kunne ikke tolke kommando!\\n" - -#: html/Ticket/Elements/ShowTransaction:190 html/Ticket/Elements/Tabs:185 -msgid "Comment" -msgstr "Kommenter" - -#: html/Admin/Queues/Modify.html:79 -msgid "Comment Address" -msgstr "Kommentaraddresse" - -#: NOT FOUND IN SOURCE -msgid "Comment not recorded" -msgstr "Kommentaren ble ikke lagret" - -#: lib/RT/Queue_Overlay.pm:111 -msgid "Comment on tickets" -msgstr "Kommenter saker" - -#: lib/RT/Queue_Overlay.pm:111 -msgid "CommentOnTicket" -msgstr "KommenterSak" - -#: NOT FOUND IN SOURCE -msgid "Comments" -msgstr "Kommentarer" - -#: html/Ticket/ModifyAll.html:91 html/Ticket/Update.html:75 -msgid "Comments (Not sent to requestors)" -msgstr "Kommentarer (Ikke send til kunder)" - -#: html/Search/Bulk.html:128 -msgid "Comments (not sent to requestors)" -msgstr "Kommentarer (ikke sendt til kunder)" - -#: NOT FOUND IN SOURCE -msgid "Comments about %1" -msgstr "Kommentarer til %1" - -#: html/Admin/Users/Modify.html:225 html/Ticket/Elements/ShowRequestor:67 -msgid "Comments about this user" -msgstr "Kommentarer om denne brukeren" - -#: lib/RT/Transaction_Overlay.pm:634 -msgid "Comments added" -msgstr "La til kommentarer " - -#: lib/RT/Action/Generic.pm:175 -msgid "Commit Stubbed" -msgstr "Lagring forkortet" - -#: NOT FOUND IN SOURCE -msgid "Compile Restrictions" -msgstr "Kompilatorrestriksjoner" - -#: html/Admin/Elements/EditScrip:59 -msgid "Condition" -msgstr "Forutsetning" - -#: lib/RT/Scrip_Overlay.pm:184 -msgid "Condition is mandatory argument" -msgstr "" - -#: bin/rt-crontool:151 -msgid "Condition matches..." -msgstr "Forutsetning gjelder..." - -#: lib/RT/Scrip_Overlay.pm:188 -msgid "Condition not found" -msgstr "Forutsetning ikke funnet" - -#: html/Elements/Tabs:84 -msgid "Configuration" -msgstr "Konfigurasjon" - -#: html/SelfService/Prefs.html:54 -msgid "Confirm" -msgstr "Bekreft" - -#: NOT FOUND IN SOURCE -msgid "ContactInfoSystem" -msgstr "KontaktInfoSystem" - -#: NOT FOUND IN SOURCE -msgid "Contacted date '%1' could not be parsed" -msgstr "Kontatdato '%1' kunne ikke tolkes" - -#: html/Admin/Elements/ModifyTemplate:65 html/Elements/SelectAttachmentField:48 html/Ticket/ModifyAll.html:119 -msgid "Content" -msgstr "Innhold" - -#: html/Elements/SelectAttachmentField:49 -msgid "Content-Type" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Coould not create group" -msgstr "Kunne ikke opprette gruppen" - -#: html/Search/Elements/EditSearches:65 -msgid "Copy" -msgstr "" - -#: etc/initialdata:286 -msgid "Correspondence" -msgstr "Korrespondanse" - -#: NOT FOUND IN SOURCE -msgid "Correspondence Address" -msgstr "Korrespondanseaddresse" - -#: lib/RT/Transaction_Overlay.pm:630 -msgid "Correspondence added" -msgstr "Korrespondanse lagt til" - -#: NOT FOUND IN SOURCE -msgid "Correspondence not recorded" -msgstr "Korrespondansen ble ikke lagret" - -#: NOT FOUND IN SOURCE -msgid "Could not add new custom field value for ticket. " -msgstr "Kunne ikke legge til nye fleksifeltverdier for saken. " - -#: NOT FOUND IN SOURCE -msgid "Could not add new custom field value for ticket. %1 " -msgstr "Kunne ikke legge til nye fleksifeltverdier for saken. %1 " - -#: lib/RT/Record.pm:1707 -msgid "Could not add new custom field value. " -msgstr "" - -#: lib/RT/Record.pm:1660 -#. (, $value_msg) -msgid "Could not add new custom field value. %1 " -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:3048 lib/RT/Ticket_Overlay.pm:3056 lib/RT/Ticket_Overlay.pm:3073 -msgid "Could not change owner. " -msgstr "Kunne ikke endre eier. " - -#: html/Admin/CustomFields/Modify.html:161 -#. ($msg) -msgid "Could not create CustomField" -msgstr "Kunne ikke opprette fleksifelt" - -#: html/Admin/Elements/EditCustomField:113 -#. ($msg) -msgid "Could not create CustomField: %1" -msgstr "" - -#: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:494 lib/RT/Group_Overlay.pm:501 -msgid "Could not create group" -msgstr "Kunne ikke opprette gruppe" - -#: html/Admin/Global/Template.html:96 html/Admin/Queues/Template.html:93 -#. ($msg) -msgid "Could not create template: %1" -msgstr "Kunne ikke opprette mal: %1" - -#: lib/RT/Ticket_Overlay.pm:1075 lib/RT/Ticket_Overlay.pm:407 -msgid "Could not create ticket. Queue not set" -msgstr "Kunne ikke opprette sak. Kø ikke satt" - -#: lib/RT/User_Overlay.pm:255 lib/RT/User_Overlay.pm:269 lib/RT/User_Overlay.pm:278 lib/RT/User_Overlay.pm:287 lib/RT/User_Overlay.pm:296 lib/RT/User_Overlay.pm:310 lib/RT/User_Overlay.pm:320 lib/RT/User_Overlay.pm:496 -msgid "Could not create user" -msgstr "Kunne ikke opprette bruker" - -#: NOT FOUND IN SOURCE -msgid "Could not create watcher for requestor" -msgstr "Kunne ikke opprette overvåker for kunde" - -#: NOT FOUND IN SOURCE -msgid "Could not find a ticket with id %1" -msgstr "Kunne ikke finne en sak med id %1" - -#: NOT FOUND IN SOURCE -msgid "Could not find group %1." -msgstr "Kunne ikke finne gruppen %1." - -#: lib/RT/Queue_Overlay.pm:741 lib/RT/Ticket_Overlay.pm:1423 -msgid "Could not find or create that user" -msgstr "Kunne ikke finne eller lage den brukeren" - -#: lib/RT/Queue_Overlay.pm:802 lib/RT/Ticket_Overlay.pm:1504 -msgid "Could not find that principal" -msgstr "Kunne ikke finne den primæren" - -#: NOT FOUND IN SOURCE -msgid "Could not find user %1." -msgstr "Kunne ikke finne brukeren %1." - -#: html/Admin/CustomFields/Objects.html:69 -msgid "Could not load CustomField %1" -msgstr "" - -#: html/Admin/Groups/Members.html:112 html/User/Groups/Members.html:111 html/User/Groups/Modify.html:103 -msgid "Could not load group" -msgstr "Kunne ikke hente gruppen" - -#: lib/RT/SavedSearch.pm:119 -#. ($privacy) -msgid "Could not load object for %1" -msgstr "" - -#: lib/RT/SavedSearch.pm:197 -msgid "Could not load search attribute" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:761 -#. ($args{'Type'}) -msgid "Could not make that principal a %1 for this queue" -msgstr "Kunne ikke sette den primæren som %1 for denne køen" - -#: lib/RT/Ticket_Overlay.pm:1444 -#. ($self->loc($args{'Type'})) -msgid "Could not make that principal a %1 for this ticket" -msgstr "Kunne ikke sette den primæren som %1 for denne saken" - -#: lib/RT/Queue_Overlay.pm:860 -#. ($args{'Type'}) -msgid "Could not remove that principal as a %1 for this queue" -msgstr "Kunne ikke fjerne den primæren som %1 for denne køen" - -#: NOT FOUND IN SOURCE -msgid "Could not remove that principal as a %1 for this ticket" -msgstr "Knne ikke fjære den primæren som %1 for denne saken" - -#: lib/RT/User_Overlay.pm:191 -msgid "Could not set user info" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:159 -msgid "Couldn't add attachment" -msgstr "" - -#: lib/RT/Group_Overlay.pm:1003 -msgid "Couldn't add member to group" -msgstr "Kunne ikke legge til medlemmmer i gruppen" - -#: lib/RT/Record.pm:1719 lib/RT/Record.pm:1771 -#. ($Msg) -msgid "Couldn't create a transaction: %1" -msgstr "Kunne ikke opprette en transaksjon: %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't figure out what to do from gpg's reply\\n" -msgstr "Kunne ikke tolke gpgs svar\\n" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find group\\n" -msgstr "Kunne ikke finne gruppen\\n" - -#: lib/RT/Record.pm:953 -msgid "Couldn't find row" -msgstr "Kunne ikke finne raden" - -#: lib/RT/Group_Overlay.pm:977 -msgid "Couldn't find that principal" -msgstr "Kunne ikke finne primæren" - -#: lib/RT/CustomField_Overlay.pm:409 -msgid "Couldn't find that value" -msgstr "Kunne ikke finne verdien" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find that watcher" -msgstr "Kunne ikke finne den overvåkern" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find user\\n" -msgstr "Kunne ikke finne bruker\\n" - -#: lib/RT/CurrentUser.pm:145 -#. ($self->Id) -msgid "Couldn't load %1 from the users database.\\n" -msgstr "Kunne ikke laste %1 fra brukerdatabasen.\\n" - -#: html/Admin/CustomFields/UserRights.html:149 -#. ($id) -msgid "Couldn't load Class %1" -msgstr "" - -#: html/Admin/CustomFields/GroupRights.html:107 -#. ($id) -msgid "Couldn't load CustomField %1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load KeywordSelects." -msgstr "Kunne ikke laste NøkkelordValg." - -#: NOT FOUND IN SOURCE -msgid "Couldn't load RT config file '%1' %2" -msgstr "Kunne ikke laste RTs konfigurasjonsfil '%1' %2" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load Scrips." -msgstr "Kunne ikke laste Scripsene." - -#: lib/RT/Ticket_Overlay.pm:2016 -#. ($self->Id) -msgid "Couldn't load copy of ticket #%1." -msgstr "" - -#: html/Admin/Groups/GroupRights.html:109 html/Admin/Groups/UserRights.html:96 -#. ($id) -msgid "Couldn't load group %1" -msgstr "Kunne ikke laste gruppen %1" - -#: lib/RT/Link_Overlay.pm:202 lib/RT/Link_Overlay.pm:211 lib/RT/Link_Overlay.pm:238 -msgid "Couldn't load link" -msgstr "Kunne ikke laste linken" - -#: html/Admin/Elements/ObjectCustomFields:83 html/Admin/Queues/CustomFields.html:59 html/Admin/Users/CustomFields.html:59 -#. ($id) -msgid "Couldn't load object %1" -msgstr "" - -#: html/Admin/Queues/People.html:142 -#. ($id) -msgid "Couldn't load queue" -msgstr "Kunne ikke laste køen" - -#: html/Admin/Queues/GroupRights.html:122 html/Admin/Queues/UserRights.html:93 -#. ($id) -msgid "Couldn't load queue %1" -msgstr "Kunne ikke laste køen %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load scrip" -msgstr "Kunne ikke laste scripet" - -#: html/Admin/Elements/EditScrip:126 html/Admin/Elements/EditScrip:167 -#. ($id) -msgid "Couldn't load scrip #%1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load template" -msgstr "Kunne ikke finne mal" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load that user (%1)" -msgstr "Kunne ikke laste den brukeren (%1)" - -#: html/SelfService/Display.html:158 lib/RT/Action/CreateTickets.pm:680 -#. ($id) -msgid "Couldn't load ticket '%1'" -msgstr "Kunne ikke laste saken '%1'" - -#: lib/RT/Ticket_Overlay.pm:2643 -#. ($args{'URI'}) -msgid "Couldn't resolve '%1' into a URI." -msgstr "" - -#: html/Admin/Users/Modify.html:173 html/User/Prefs.html:153 -msgid "Country" -msgstr "Land" - -#: html/Admin/Elements/CreateUserCalled:47 html/Admin/Elements/EditCustomField:84 html/Admin/Elements/EditScrip:133 html/Admin/Queues/Template.html:66 html/Elements/QuickCreate:65 html/Ticket/Create.html:168 html/Ticket/Create.html:235 -msgid "Create" -msgstr "Opprett" - -#: etc/initialdata:135 -msgid "Create Tickets" -msgstr "Opprett Saker" - -#: html/Admin/CustomFields/Modify.html:150 html/Admin/Elements/EditCustomField:96 -msgid "Create a CustomField" -msgstr "Oprett et fleksifelt" - -#: html/Admin/Queues/CustomField.html:69 -#. ($QueueObj->Name()) -msgid "Create a CustomField for queue %1" -msgstr "Opprett et fleksifelt for køen %1" - -#: NOT FOUND IN SOURCE -msgid "Create a CustomField that applies to all queues" -msgstr "Opprett et fleksifelt for alle køer" - -#: NOT FOUND IN SOURCE -msgid "Create a new Custom Field" -msgstr "Opprett et nytt fleksifelt" - -#: NOT FOUND IN SOURCE -msgid "Create a new global Scrip" -msgstr "Opprett et globalt Scrip" - -#: NOT FOUND IN SOURCE -msgid "Create a new global scrip" -msgstr "Opprett et nytt globalt scrip" - -#: html/Admin/Groups/Modify.html:125 html/Admin/Groups/Modify.html:99 -msgid "Create a new group" -msgstr "Opprett en ny gruppe" - -#: html/User/Groups/Modify.html:113 html/User/Groups/Modify.html:88 -msgid "Create a new personal group" -msgstr "Opprett en ny personlig gruppe" - -#: NOT FOUND IN SOURCE -msgid "Create a new queue" -msgstr "Opprett en ny kø" - -#: NOT FOUND IN SOURCE -msgid "Create a new scrip" -msgstr "Opprett et nytt scrip" - -#: NOT FOUND IN SOURCE -msgid "Create a new template" -msgstr "Opprett en ny mal" - -#: html/Ticket/Create.html:47 html/Ticket/Create.html:51 html/Ticket/Create.html:60 -msgid "Create a new ticket" -msgstr "Opprett en ny sak" - -#: html/Admin/Users/Modify.html:252 html/Admin/Users/Modify.html:314 -msgid "Create a new user" -msgstr "Opprett en ny bruker" - -#: html/Admin/Queues/Modify.html:125 -msgid "Create a queue" -msgstr "Opprett en ny kø" - -#: NOT FOUND IN SOURCE -msgid "Create a queue called" -msgstr "Opprett en kø kalt" - -#: NOT FOUND IN SOURCE -msgid "Create a request" -msgstr "Opprett en forespørsel" - -#: html/Admin/Queues/Scrip.html:89 -#. ($QueueObj->Name) -msgid "Create a scrip for queue %1" -msgstr "Opprett et scrip for køen %1" - -#: html/Admin/Global/Template.html:90 html/Admin/Queues/Template.html:86 -msgid "Create a template" -msgstr "Opprett en mal" - -#: html/SelfService/Create.html:46 html/SelfService/CreateTicketInQueue.html:46 -msgid "Create a ticket" -msgstr "Opprett en sak" - -#: NOT FOUND IN SOURCE -msgid "Create failed: %1 / %2 / %3 " -msgstr "Opprettelse feilet: %1 / %2 / %3" - -#: NOT FOUND IN SOURCE -msgid "Create failed: %1/%2/%3" -msgstr "Opprettelse feilet: %1/%2/%3" - -#: etc/initialdata:137 -msgid "Create new tickets based on this scrip's template" -msgstr "Opprett nye saker basert på dette scripets mal" - -#: html/SelfService/Create.html:105 -msgid "Create ticket" -msgstr "Opprett sak" - -#: lib/RT/Queue_Overlay.pm:109 -msgid "Create tickets in this queue" -msgstr "Opprett saker i denne køen" - -#: lib/RT/CustomField_Overlay.pm:106 -msgid "Create, delete and modify custom fields" -msgstr "Opprett, slett og modifiser fleksifelt" - -#: lib/RT/Queue_Overlay.pm:92 -msgid "Create, delete and modify queues" -msgstr "Opprett, slett og endre køer" - -#: NOT FOUND IN SOURCE -msgid "Create, delete and modify the members of any user's personal groups" -msgstr "Opprett, slett og modifiser medlemmene av en brukers personlige grupper" - -#: lib/RT/System.pm:80 -msgid "Create, delete and modify the members of personal groups" -msgstr "Opprett, slett og modifiser medlemmene av personlige grupper" - -#: lib/RT/System.pm:81 -msgid "Create, delete and modify users" -msgstr "Opprett, slett og modifiser brukere" - -#: lib/RT/System.pm:87 -msgid "CreateSavedSearch" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:109 -msgid "CreateTicket" -msgstr "OpprettSak" - -#: html/Elements/SelectDateType:47 html/Ticket/Elements/ShowDates:48 lib/RT/Ticket_Overlay.pm:1169 -msgid "Created" -msgstr "Opprettet" - -#: html/Admin/CustomFields/Modify.html:163 html/Admin/Elements/EditCustomField:117 -#. ($CustomFieldObj->Name()) -msgid "Created CustomField %1" -msgstr "Opprettet Fleksifelt %1" - -#: html/Tools/Reports/Elements/Tabs:63 -msgid "Created in a date range" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Created template %1" -msgstr "Opprettet malen %1" - -#: html/Tools/Reports/CreatedByDates.html:52 -msgid "Created tickets in period, grouped by status" -msgstr "" - -#: html/Search/Elements/PickBasics:102 -msgid "Creator" -msgstr "" - -#: html/Elements/EditLinks:49 -msgid "Current Links" -msgstr "Eksisterende Forhold" - -#: html/Admin/Elements/EditScrips:51 -msgid "Current Scrips" -msgstr "Eksisterende Scrips" - -#: html/Admin/Groups/Members.html:60 html/User/Groups/Members.html:63 -msgid "Current members" -msgstr "Eksisterende medlemmer" - -#: html/Admin/Elements/SelectRights:51 -msgid "Current rights" -msgstr "Eksisterende rettigheter" - -#: html/Search/Elements/EditQuery:47 -msgid "Current search" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Current search criteria" -msgstr "Eksisterende søkekriterier" - -#: html/Admin/Queues/People.html:62 html/Ticket/Elements/EditPeople:66 -msgid "Current watchers" -msgstr "Eksisterende overvåkere" - -#: NOT FOUND IN SOURCE -msgid "Custom Field #%1" -msgstr "Fleksifeltet #%1" - -#: html/Admin/Elements/SystemTabs:61 html/Admin/Elements/Tabs:62 html/Admin/Global/index.html:71 html/Admin/Users/Modify.html:205 html/Admin/index.html:77 html/Ticket/Elements/ShowSummary:56 -msgid "Custom Fields" -msgstr "Fleksifelt" - -#: html/Admin/CustomFields/index.html:60 -#. ($lookup) -msgid "Custom Fields for %1" -msgstr "" - -#: html/Admin/Elements/EditScrip:107 -msgid "Custom action cleanup code" -msgstr "Avsluttningskode" - -#: html/Admin/Elements/EditScrip:103 -msgid "Custom action preparation code" -msgstr "Forberedelseskode" - -#: html/Admin/Elements/EditScrip:99 -msgid "Custom condition" -msgstr "Forutsetning" - -#: NOT FOUND IN SOURCE -msgid "Custom field %1 %2 %3" -msgstr "Fleksifeltet %1 %2 %3" - -#: lib/RT/Tickets_Overlay.pm:2424 -#. ($CF->Name) -msgid "Custom field %1 has a value." -msgstr "Fleksifeltet %1 har en verdi." - -#: lib/RT/Tickets_Overlay.pm:2420 -#. ($CF->Name) -msgid "Custom field %1 has no value." -msgstr "Fleksifeltet %1 har ingen verdi." - -#: lib/RT/Record.pm:1592 lib/RT/Record.pm:1754 -#. ($args{'Field'}) -msgid "Custom field %1 not found" -msgstr "Fleksifeltet %1 kunne ikke finnes" - -#: lib/RT/Report/Tickets.pm:118 lib/RT/Report/Tickets.pm:121 -#. ($cf) -#. ($obj->Name) -msgid "Custom field '%1'" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Custom field deleted" -msgstr "Fleksifeltet slettet" - -#: NOT FOUND IN SOURCE -msgid "Custom field not found" -msgstr "Fleksifeltet kunne ikke finnes" - -#: lib/RT/CustomField_Overlay.pm:1157 -#. ($args{'Content'}, $self->Name) -msgid "Custom field value %1 could not be found for custom field %2" -msgstr "Verdien %1 for fleksifeltet %2 kunne ikke finnes" - -#: NOT FOUND IN SOURCE -msgid "Custom field value changed from %1 to %2" -msgstr "Fleksifeltets verdi endret fra %1 til %2" - -#: lib/RT/CustomField_Overlay.pm:419 -msgid "Custom field value could not be deleted" -msgstr "Fleksifeltets verdi kunne ikke slettes" - -#: lib/RT/CustomField_Overlay.pm:1169 -msgid "Custom field value could not be found" -msgstr "Fleksifeltets verdi kunne ikke finnes" - -#: lib/RT/CustomField_Overlay.pm:1171 lib/RT/CustomField_Overlay.pm:417 -msgid "Custom field value deleted" -msgstr "Fleksifeltverdi slettet" - -#: html/Elements/SelectGroups:51 html/Elements/SelectUsers:51 lib/RT/Transaction_Overlay.pm:638 -msgid "CustomField" -msgstr "FleksiFelt" - -#: html/Prefs/MyRT.html:78 html/Prefs/Quicksearch.html:70 html/Prefs/Search.html:75 -msgid "Customize" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Data error" -msgstr "Datafeil" - -#: html/SelfService/Display.html:61 html/Ticket/Create.html:203 html/Ticket/Elements/ShowSummary:83 html/Ticket/Elements/Tabs:116 html/Ticket/ModifyAll.html:65 -msgid "Dates" -msgstr "Datoer" - -#: lib/RT/Date.pm:452 -msgid "Dec." -msgstr "Des." - -#: NOT FOUND IN SOURCE -msgid "December" -msgstr "Desember" - -#: NOT FOUND IN SOURCE -msgid "Default Autoresponse Template" -msgstr "Standard Autosvarmal" - -#: etc/initialdata:222 -msgid "Default Autoresponse template" -msgstr "Standard Autosvarmal" - -#: html/Tools/Offline.html:61 -msgid "Default Queue" -msgstr "" - -#: html/Tools/Offline.html:70 -msgid "Default Requestor" -msgstr "" - -#: etc/initialdata:296 -msgid "Default admin comment template" -msgstr "Standard Adminkommentarmal" - -#: etc/initialdata:275 -msgid "Default admin correspondence template" -msgstr "Standard Adminkorrespondensemal" - -#: etc/initialdata:287 -msgid "Default correspondence template" -msgstr "Standard korrespondensemal" - -#: etc/initialdata:253 -msgid "Default transaction template" -msgstr "Standard transaksjonsmal" - -#: NOT FOUND IN SOURCE -msgid "Default: %1/%2 changed from %3 to %4" -msgstr "Standard: %1/%2 endret seg fra %3 til %4" - -#: html/User/Delegation.html:46 html/User/Delegation.html:49 -msgid "Delegate rights" -msgstr "Deleger rettigheter" - -#: lib/RT/System.pm:84 -msgid "Delegate specific rights which have been granted to you." -msgstr "Deleger spesifikke rettigheter som har blitt gitt til deg." - -#: lib/RT/System.pm:84 -msgid "DelegateRights" -msgstr "DelegerRettigheter" - -#: html/User/Elements/Tabs:59 -msgid "Delegation" -msgstr "Delegering" - -#: html/Admin/Elements/EditScrips:75 html/Search/Elements/EditFormat:103 html/Search/Elements/EditQuery:57 html/Search/Elements/EditSearches:63 html/Widgets/SelectionBox:204 -msgid "Delete" -msgstr "Slett" - -#: html/Admin/Elements/EditTemplates:79 -msgid "Delete Template" -msgstr "" - -#: lib/RT/SavedSearch.pm:220 -#. ($msg) -msgid "Delete failed: %1" -msgstr "" - -#: html/Admin/Elements/EditScrips:74 -msgid "Delete selected scrips" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:114 -msgid "Delete tickets" -msgstr "Slett saker" - -#: html/Search/Bulk.html:159 -msgid "Delete values" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:114 -msgid "DeleteTicket" -msgstr "SlettSak" - -#: lib/RT/SavedSearch.pm:218 -msgid "Deleted search" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object could break referential integrity" -msgstr "Sletting av dette objektet kan føre til inkonsistens" - -#: lib/RT/Queue_Overlay.pm:394 -msgid "Deleting this object would break referential integrity" -msgstr "Sletting av dette objektet vil føre til inkonsistens" - -#: lib/RT/User_Overlay.pm:512 -msgid "Deleting this object would violate referential integrity" -msgstr "Sletting av dette objektet ville føre til inkonsistens" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object would violate referential integrity." -msgstr "Sletting av dette objektet ville føre til inkonsisistens." - -#: NOT FOUND IN SOURCE -msgid "Deleting this object would violate referential integrity. That's bad." -msgstr "Sletting av dette objektet ville føre til inkonsistens. Det er uheldig." - -#: html/Approvals/Elements/Approve:73 -msgid "Deny" -msgstr "Nekt" - -#: html/Elements/EditLinks:140 html/Elements/EditLinks:66 html/Elements/ShowLinks:58 html/Ticket/Create.html:221 html/Ticket/Elements/BulkLinks:56 html/Ticket/Elements/ShowDependencies:53 -msgid "Depended on by" -msgstr "Avhengighet fra" - -#: NOT FOUND IN SOURCE -msgid "Dependencies: \\n" -msgstr "Avhengigheter: \\n" - -#: lib/RT/Transaction_Overlay.pm:718 -#. ($value) -msgid "Dependency by %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:758 -#. ($value) -msgid "Dependency by %1 deleted" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:715 -#. ($value) -msgid "Dependency on %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:755 -#. ($value) -msgid "Dependency on %1 deleted" -msgstr "" - -#: html/Elements/EditLinks:136 html/Elements/EditLinks:57 html/Elements/SelectLinkType:48 html/Elements/ShowLinks:48 html/Ticket/Create.html:220 html/Ticket/Elements/BulkLinks:52 html/Ticket/Elements/ShowDependencies:46 -msgid "Depends on" -msgstr "Avhengig av" - -#: NOT FOUND IN SOURCE -msgid "DependsOn" -msgstr "AvhengigAv" - -#: html/Search/Elements/DisplayOptions:86 -msgid "Desc" -msgstr "" - -#: html/Elements/SelectSortOrder:56 -msgid "Descending" -msgstr "Synkende" - -#: html/SelfService/Create.html:100 html/Ticket/Create.html:152 -msgid "Describe the issue below" -msgstr "Beskriv problemet under" - -#: html/Admin/CustomFields/Modify.html:61 html/Admin/Elements/AddCustomFieldValue:57 html/Admin/Elements/EditCustomField:60 html/Admin/Elements/EditCustomFieldValues:56 html/Admin/Elements/EditScrip:55 html/Admin/Elements/ModifyTemplate:57 html/Admin/Groups/Modify.html:71 html/Admin/Queues/Modify.html:69 html/Search/Elements/EditSearches:56 html/User/Groups/Modify.html:70 -msgid "Description" -msgstr "Beskrivelse" - -#: NOT FOUND IN SOURCE -msgid "Details" -msgstr "Detaljer" - -#: html/Search/Elements/EditFormat:71 html/Ticket/Elements/Tabs:108 -msgid "Display" -msgstr "Vis" - -#: lib/RT/Queue_Overlay.pm:93 -msgid "Display Access Control List" -msgstr "Vis Rettigheter" - -#: html/Search/Elements/DisplayOptions:46 -msgid "Display Columns" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:99 -msgid "Display Scrip templates for this queue" -msgstr "Vis Scrip-maler for denne køen" - -#: lib/RT/Queue_Overlay.pm:102 -msgid "Display Scrips for this queue" -msgstr "Vis Scrip-maler for denne køen" - -#: html/Ticket/Elements/ShowHistory:59 -msgid "Display mode" -msgstr "Visningsmodus" - -#: lib/RT/Group_Overlay.pm:168 -msgid "Display saved searches for this group" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Display ticket #%1" -msgstr "Vis saken #%1" - -#: html/Elements/Footer:61 -msgid "Distributed under version 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> of the GNU GPL.</a>" -msgstr "" - -#: lib/RT/System.pm:75 -msgid "Do anything and everything" -msgstr "Gjør hva som helst" - -#: html/Elements/Refresh:51 -msgid "Don't refresh this page." -msgstr "Ikke last denne siden på nytt" - -#: NOT FOUND IN SOURCE -msgid "Don't show search results" -msgstr "Ikke vis søkeresultat" - -#: html/Ticket/Elements/ShowTransactionAttachments:82 -msgid "Download" -msgstr "Last ned" - -#: html/Admin/Groups/index.html:61 html/Admin/Users/index.html:64 -msgid "Download as a tab-delimited file" -msgstr "" - -#: html/Elements/SelectDateType:53 html/Ticket/Create.html:209 html/Ticket/Elements/EditDates:66 html/Ticket/Elements/Reminders:133 html/Ticket/Elements/ShowDates:64 lib/RT/Ticket_Overlay.pm:1173 -msgid "Due" -msgstr "Innen" - -#: NOT FOUND IN SOURCE -msgid "Due date '%1' could not be parsed" -msgstr "Innendato '%1' kunne ikke tolkes" - -#: NOT FOUND IN SOURCE -msgid "ERROR: Couldn't load ticket '%1': %2.\\n" -msgstr "FEIL: Kunne ikke laste sak '%1': %2.\\n" - -#: html/Elements/Quicksearch:48 html/Elements/ShowSearch:49 html/index.html:107 -msgid "Edit" -msgstr "Rediger" - -#: NOT FOUND IN SOURCE -msgid "Edit Conditions" -msgstr "Rediger Forhold" - -#: html/Search/Bulk.html:149 -msgid "Edit Custom Fields" -msgstr "" - -#: html/Admin/Elements/ObjectCustomFields:92 html/Admin/Queues/CustomFields.html:64 html/Admin/Users/CustomFields.html:64 -#. ($Object->Name) -msgid "Edit Custom Fields for %1" -msgstr "Rediger fleksifelt for %1" - -#: html/Admin/Global/CustomFields/Groups.html:54 -msgid "Edit Custom Fields for all groups" -msgstr "" - -#: html/Admin/Global/CustomFields/Users.html:54 -msgid "Edit Custom Fields for all users" -msgstr "" - -#: html/Admin/Global/CustomFields/Queue-Tickets.html:54 html/Admin/Global/CustomFields/Queue-Transactions.html:54 -msgid "Edit Custom Fields for tickets in all queues" -msgstr "" - -#: html/Search/Bulk.html:188 html/Ticket/ModifyLinks.html:57 -msgid "Edit Links" -msgstr "Rediger Forhold" - -#: html/Search/Edit.html:68 -msgid "Edit Query" -msgstr "" - -#: html/Ticket/Elements/Tabs:214 -msgid "Edit Search" -msgstr "" - -#: html/Admin/Queues/Templates.html:63 -#. ($QueueObj->Name) -msgid "Edit Templates for queue %1" -msgstr "Rediger Maler for køen %1" - -#: NOT FOUND IN SOURCE -msgid "Edit keywords" -msgstr "Rediger nøkkelord" - -#: lib/RT/Group_Overlay.pm:167 -msgid "Edit saved searches for this group" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Edit scrips" -msgstr "Rediger scrips" - -#: html/Admin/Elements/GlobalCustomFieldTabs:60 html/Admin/Global/index.html:67 -msgid "Edit system templates" -msgstr "Rediger systemmal" - -#: NOT FOUND IN SOURCE -msgid "Edit templates for %1" -msgstr "Rediger maler for %1" - -#: lib/RT/Group_Overlay.pm:167 -msgid "EditSavedSearches" -msgstr "" - -#: html/Admin/Queues/Modify.html:140 -#. ($QueueObj->Name) -msgid "Editing Configuration for queue %1" -msgstr "Rediger Konfigurasjon for køen %1" - -#: NOT FOUND IN SOURCE -msgid "Editing Configuration for user %1" -msgstr "Redigerer Konfigurasjonen av brukern %1" - -#: html/Admin/CustomFields/Modify.html:167 html/Admin/Elements/EditCustomField:120 -#. ($CustomFieldObj->Name()) -msgid "Editing CustomField %1" -msgstr "Redigerer Fleksifeltet %1" - -#: html/Admin/Groups/Members.html:53 -#. ($Group->Name) -msgid "Editing membership for group %1" -msgstr "Redigerer medlemsskap for gruppen %1" - -#: html/User/Groups/Members.html:150 -#. ($Group->Name) -msgid "Editing membership for personal group %1" -msgstr "Redigerer medlemsskap for den personlige gruppen %1" - -#: NOT FOUND IN SOURCE -msgid "Editing template %1" -msgstr "Redigerer malen %1" - -#: lib/RT/Record.pm:1295 lib/RT/Record.pm:1372 lib/RT/Ticket_Overlay.pm:2518 lib/RT/Ticket_Overlay.pm:2608 -msgid "Either base or target must be specified" -msgstr "Enten base eller mål må oppgis" - -#: html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65 -msgid "Email" -msgstr "Epost" - -#: lib/RT/User_Overlay.pm:235 -msgid "Email address in use" -msgstr "Epostaddresse i bruk" - -#: NOT FOUND IN SOURCE -msgid "EmailAddress" -msgstr "EpostAddresse" - -#: NOT FOUND IN SOURCE -msgid "EmailEncoding" -msgstr "EpostFormat" - -#: html/Admin/CustomFields/Modify.html:98 html/Admin/Elements/EditCustomField:72 -msgid "Enabled (Unchecking this box disables this custom field)" -msgstr "Aktivt (Fjern merkingen for å deaktivere dette fleksifeltet)" - -#: html/Admin/Groups/Modify.html:84 html/User/Groups/Modify.html:74 -msgid "Enabled (Unchecking this box disables this group)" -msgstr "Aktiv (Fjern merkingen for å deaktivere denne gruppen)" - -#: html/Admin/Queues/Modify.html:105 -msgid "Enabled (Unchecking this box disables this queue)" -msgstr "Aktiv (Fjern merkingen for å deaktivere denne køen)" - -#: NOT FOUND IN SOURCE -msgid "Enabled Custom Fields" -msgstr "Aktive Fleksifelt" - -#: html/Admin/Queues/index.html:78 -msgid "Enabled Queues" -msgstr "Aktive Køer" - -#: html/Admin/Elements/EditCustomField:136 html/Admin/Groups/Modify.html:150 html/Admin/Users/Modify.html:350 html/User/Groups/Modify.html:138 -#. (loc_fuzzy($msg)) -msgid "Enabled status %1" -msgstr "Aktiv status %1" - -#: html/Admin/CustomFields/Modify.html:185 html/Admin/Queues/Modify.html:162 -#. (loc_fuzzy($msg)) -msgid "Enabled status: %1" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:64 -msgid "Enter multiple values" -msgstr "Skriv multiple verdier" - -#: html/Elements/EditLinks:126 -msgid "Enter objects or URIs to link objects to. Separate multiple entries with spaces." -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:65 -msgid "Enter one value" -msgstr "Skriv en verdi" - -#: html/Elements/EditLinks:123 -msgid "Enter queues or URIs to link queues to. Separate multiple entries with spaces." -msgstr "" - -#: html/Elements/EditLinks:119 html/Search/Bulk.html:189 -msgid "Enter tickets or URIs to link tickets to. Separate multiple entries with spaces." -msgstr "Skriv saker og/eller URIer som det skal linkes til. Separer dem med mellomrom" - -#: lib/RT/CustomField_Overlay.pm:66 -msgid "Enter up to %1 values" -msgstr "" - -#: html/Elements/Login:76 html/SelfService/Error.html:46 html/SelfService/Error.html:47 -msgid "Error" -msgstr "Feil" - -#: NOT FOUND IN SOURCE -msgid "Error adding watcher" -msgstr "Feilet ved opprettelse av Overvåker" - -#: lib/RT/Queue_Overlay.pm:672 -msgid "Error in parameters to Queue->AddWatcher" -msgstr "Feil i parameterne til Queue->AddWatcher" - -#: NOT FOUND IN SOURCE -msgid "Error in parameters to Queue->DelWatcher" -msgstr "Feil i parameterne til Queue->DelWatcher" - -#: lib/RT/Queue_Overlay.pm:833 -msgid "Error in parameters to Queue->DeleteWatcher" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1372 -msgid "Error in parameters to Ticket->AddWatcher" -msgstr "Feil i parameterne til Ticket->AddWatcher" - -#: NOT FOUND IN SOURCE -msgid "Error in parameters to Ticket->DelWatcher" -msgstr "Feil i parameterne til Ticket->DelWatcher" - -#: lib/RT/Ticket_Overlay.pm:1538 -msgid "Error in parameters to Ticket->DeleteWatcher" -msgstr "" - -#: bin/rt-crontool:285 -msgid "Escalate tickets" -msgstr "" - -#: html/Ticket/Elements/ShowBasics:57 -msgid "Estimated" -msgstr "" - -#: etc/initialdata:20 -msgid "Everyone" -msgstr "Alle" - -#: bin/rt-crontool:271 -msgid "Example:" -msgstr "Eksempel:" - -#: NOT FOUND IN SOURCE -msgid "ExternalAuthId" -msgstr "EksternAutId" - -#: NOT FOUND IN SOURCE -msgid "ExternalContactInfoId" -msgstr "EksternKontaktInfoId" - -#: html/Admin/Users/Modify.html:99 -msgid "Extra info" -msgstr "Ekstra info" - -#: lib/RT/SavedSearch.pm:177 -msgid "Failed to create search attribute" -msgstr "" - -#: lib/RT/User_Overlay.pm:376 -msgid "Failed to find 'Privileged' users pseudogroup." -msgstr "Kunne ikke finne pseudogruppen 'Privilgerte' brukere." - -#: lib/RT/User_Overlay.pm:383 -msgid "Failed to find 'Unprivileged' users pseudogroup" -msgstr "Kunne ikke finne 'pseudogruppen 'Upriviligerte' brukere" - -#: bin/rt-crontool:206 -#. ($modname, $@) -msgid "Failed to load module %1. (%2)" -msgstr "Kunne ikke laste modulen %1. (%2)" - -#: lib/RT/SavedSearch.pm:152 -#. ($privacy) -msgid "Failed to load object for %1" -msgstr "" - -#: lib/RT/Date.pm:442 -msgid "Feb." -msgstr "Feb." - -#: NOT FOUND IN SOURCE -msgid "February" -msgstr "Februar" - -#: html/Elements/SelectAttachmentField:50 -msgid "Filename" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:69 -msgid "Fill in multiple text areas" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:74 -msgid "Fill in multiple wikitext areas" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:70 -msgid "Fill in one text area" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:75 -msgid "Fill in one wikitext area" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:107 html/Admin/CustomFields/Modify.html:118 -msgid "Fill in this field with a URL." -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:71 -msgid "Fill in up to %1 text areas" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:76 -msgid "Fill in up to %1 wikitext areas" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Fin" -msgstr "End" - -#: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:182 html/Ticket/Elements/EditBasics:97 lib/RT/Tickets_Overlay.pm:1841 -msgid "Final Priority" -msgstr "Endelig Prioritet" - -#: lib/RT/Ticket_Overlay.pm:1164 -msgid "FinalPriority" -msgstr "EndeligPrioritet" - -#: NOT FOUND IN SOURCE -msgid "Find group whose" -msgstr "Finn grupper hvor" - -#: html/Admin/Groups/index.html:72 html/Admin/Queues/People.html:82 html/Ticket/Elements/EditPeople:55 -msgid "Find groups whose" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Find new/open tickets" -msgstr "Finn nye/åpne saker" - -#: html/Admin/Queues/People.html:78 html/Admin/Users/index.html:70 html/Ticket/Elements/EditPeople:51 -msgid "Find people whose" -msgstr "Finn folk hvor" - -#: html/Search/Results.html:147 -msgid "Find tickets" -msgstr "Finn saker" - -#: NOT FOUND IN SOURCE -msgid "Finish Approval" -msgstr "Fullfør godkjennelse" - -#: html/Ticket/Elements/Tabs:81 -msgid "First" -msgstr "Først" - -#: NOT FOUND IN SOURCE -msgid "First page" -msgstr "Første side" - -#: docs/design_docs/string-extraction-guide.txt:33 lib/RT/StyleGuide.pod:766 -msgid "Foo Bar Baz" -msgstr "Foo Bar Baz" - -#: docs/design_docs/string-extraction-guide.txt:24 lib/RT/StyleGuide.pod:757 -msgid "Foo!" -msgstr "Foo!" - -#: html/Search/Bulk.html:83 -msgid "Force change" -msgstr "Tving gjennom endring" - -#: html/Search/Elements/EditFormat:52 -msgid "Format" -msgstr "" - -#: html/Search/Results.html:145 -#. ($ticketcount) -msgid "Found %quant(%1,ticket)" -msgstr "Fant %quant(%1) sak(er)" - -#: lib/RT/Record.pm:956 -msgid "Found Object" -msgstr "Fant Objektet" - -#: NOT FOUND IN SOURCE -msgid "FreeformContactInfo" -msgstr "FriforkKontaktInfo" - -#: NOT FOUND IN SOURCE -msgid "FreeformMultiple" -msgstr "FriformMultipel" - -#: NOT FOUND IN SOURCE -msgid "FreeformSingle" -msgstr "FriformSingel" - -#: lib/RT/Date.pm:421 -msgid "Fri." -msgstr "Fre." - -#: html/Ticket/Elements/ShowHistory:66 html/Ticket/Elements/ShowHistory:72 -msgid "Full headers" -msgstr "Fulle headere" - -#: html/Tools/Offline.html:85 -msgid "Get template from file" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Getting the current user from a pgp sig\\n" -msgstr "Henter brukerinfo fra pgp signatur\\n" - -#: lib/RT/Transaction_Overlay.pm:684 -#. ($New->Name) -msgid "Given to %1" -msgstr "Gitt til %1" - -#: html/Admin/Elements/Tabs:65 html/Admin/index.html:82 -msgid "Global" -msgstr "Global" - -#: html/Admin/Elements/EditCustomFields:55 -msgid "Global Custom Fields" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Global Keyword Selections" -msgstr "Globale Nøkkelordvalg" - -#: NOT FOUND IN SOURCE -msgid "Global Scrips" -msgstr "Globale Scrip" - -#: html/Admin/Global/CustomFields/index.html:59 -msgid "Global custom field configuration" -msgstr "" - -#: html/Admin/Global/MyRT.html:48 -#. ($pane) -msgid "Global portlet %1 saved." -msgstr "" - -#: html/Admin/Elements/SelectTemplate:59 -#. (loc($Template->Name)) -msgid "Global template: %1" -msgstr "Globale maler: %1" - -#: html/Admin/CustomFields/index.html:80 html/Search/Results.html:90 html/Tools/Offline.html:89 -msgid "Go" -msgstr "" - -#: html/Admin/Groups/index.html:67 html/Admin/Groups/index.html:73 html/Admin/Queues/People.html:80 html/Admin/Queues/People.html:84 html/Admin/Queues/index.html:66 html/Admin/Users/index.html:73 html/Elements/RefreshHomepage:48 html/Search/Results.html:74 html/Ticket/Elements/EditPeople:53 html/Ticket/Elements/EditPeople:57 -msgid "Go!" -msgstr "Start!" - -#: NOT FOUND IN SOURCE -msgid "Good pgp sig from %1\\n" -msgstr "Gyldig pgp sig fra %1\\n" - -#: NOT FOUND IN SOURCE -msgid "Goto page" -msgstr "Gå til siden" - -#: html/Elements/GotoTicket:46 html/SelfService/Elements/GotoTicket:46 -msgid "Goto ticket" -msgstr "Gå til saken" - -#: NOT FOUND IN SOURCE -msgid "Grand" -msgstr "Stor" - -#: html/Ticket/Elements/AddWatchers:67 html/Ticket/Elements/ShowGroupMembers:55 html/User/Elements/DelegateRights:99 -msgid "Group" -msgstr "Gruppe" - -#: NOT FOUND IN SOURCE -msgid "Group %1 %2: %3" -msgstr "Gruppen %1 %2: %3" - -#: html/Admin/Elements/CustomFieldTabs:68 html/Admin/Elements/GroupTabs:66 html/Admin/Elements/QueueTabs:82 html/Admin/Elements/SystemTabs:65 html/Admin/Global/index.html:76 -msgid "Group Rights" -msgstr "Grupperettigheter" - -#: lib/RT/Group_Overlay.pm:983 -msgid "Group already has member" -msgstr "Alt medlem av gruppen" - -#: NOT FOUND IN SOURCE -msgid "Group could not be created." -msgstr "Gruppen kunne ikke lastes." - -#: html/Admin/Groups/Modify.html:109 -#. ($create_msg) -msgid "Group could not be created: %1" -msgstr "Gruppen kunne ikke opprettes: %1" - -#: lib/RT/Group_Overlay.pm:521 -msgid "Group created" -msgstr "Gruppen opprettet" - -#: lib/RT/Group_Overlay.pm:1155 -msgid "Group has no such member" -msgstr "Gruppen har ikke det medlemmet" - -#: lib/RT/Group_Overlay.pm:963 lib/RT/Queue_Overlay.pm:748 lib/RT/Queue_Overlay.pm:808 lib/RT/Ticket_Overlay.pm:1430 lib/RT/Ticket_Overlay.pm:1510 -msgid "Group not found" -msgstr "Fant ikke gruppen" - -#: NOT FOUND IN SOURCE -msgid "Group not found.\\n" -msgstr "Fant ikke gruppen.\\n" - -#: NOT FOUND IN SOURCE -msgid "Group not specified.\\n" -msgstr "Ikke spesifisert gruppe.\\n" - -#: html/Admin/Elements/GlobalCustomFieldTabs:59 html/Admin/Elements/SelectNewGroupMembers:57 html/Admin/Elements/Tabs:56 html/Admin/Global/CustomFields/index.html:69 html/Admin/Groups/Members.html:86 html/Admin/Queues/People.html:104 html/Admin/Users/Memberships.html:53 html/Admin/index.html:67 html/User/Groups/Members.html:88 lib/RT/CustomField_Overlay.pm:1210 -msgid "Groups" -msgstr "Grupper" - -#: lib/RT/Group_Overlay.pm:989 -msgid "Groups can't be members of their members" -msgstr "Grupper kan ikke være medlemmer av sine medlemmer" - -#: html/Admin/Groups/index.html:86 -msgid "Groups matching search criteria" -msgstr "" - -#: html/Ticket/Elements/ShowRequestor:77 -msgid "Groups this user belongs to" -msgstr "" - -#: lib/RT/Interface/CLI.pm:94 lib/RT/Interface/CLI.pm:94 -msgid "Hello!" -msgstr "Hallo!" - -#: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:773 -#. ($name) -msgid "Hello, %1" -msgstr "Hallo, %1" - -#: html/Admin/Elements/GroupTabs:70 html/Admin/Elements/UserTabs:64 html/Ticket/Elements/ShowHistory:53 html/Ticket/Elements/Tabs:111 -msgid "History" -msgstr "Historikk" - -#: html/Admin/Groups/History.html:62 -#. ($GroupObj->Name) -msgid "History of the group %1" -msgstr "" - -#: html/Admin/Users/History.html:62 -#. ($UserObj->Name) -msgid "History of the user %1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "HomePhone" -msgstr "HjemmeTelefon" - -#: html/Elements/Tabs:65 -msgid "Homepage" -msgstr "Hjemmeside" - -#: html/Elements/SelectTimeUnits:48 -msgid "Hours" -msgstr "" - -#: lib/RT/Base.pm:119 -#. (6) -msgid "I have %quant(%1,concrete mixer)." -msgstr "Jeg har %quant(%1, sementblandere)." - -#: NOT FOUND IN SOURCE -msgid "I have [quant,_1,concrete mixer]." -msgstr "Jeg har [quant,_1,sementblandere]." - -#: html/Search/Build.html:460 lib/RT/Report/Tickets.pm:415 -msgid "I'm lost" -msgstr "" - -#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1766 -msgid "Id" -msgstr "Id" - -#: html/Admin/Users/Modify.html:65 html/User/Prefs.html:60 -msgid "Identity" -msgstr "Identitet" - -#: etc/initialdata:429 -msgid "If an approval is rejected, reject the original and delete pending approvals" -msgstr "Hvis en godkjenner blir avvist, avvis orginalen, og slett ventende godkjenninger" - -#: html/Tools/Offline.html:74 -msgid "If no Requestor is specified, create tickets with this requestor." -msgstr "" - -#: html/Tools/Offline.html:65 -msgid "If no queue is specified, create tickets in this queue." -msgstr "" - -#: bin/rt-crontool:267 -msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." -msgstr "Hvis dette verktøyet var setgid kunne en fiendtlig lokal bruker bruke dette verktøyet for å oppnå administrativ tilgang til RT." - -#: html/Admin/Queues/People.html:126 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:128 html/Ticket/ModifyPeople.html:60 -msgid "If you've updated anything above, be sure to" -msgstr "Hvis du har oppdatert noe over, sørg for at" - -#: lib/RT/Record.pm:947 -msgid "Illegal value for %1" -msgstr "Ugyldig verdig for %1" - -#: lib/RT/Record.pm:950 -msgid "Immutable field" -msgstr "Låst felt" - -#: NOT FOUND IN SOURCE -msgid "Include disabled custom fields in listing." -msgstr "Inkluder deaktiverte fleksifelt i listen." - -#: html/Admin/Groups/index.html:65 -msgid "Include disabled groups in listing." -msgstr "" - -#: html/Admin/Queues/index.html:65 -msgid "Include disabled queues in listing." -msgstr "Inkluder deaktiverte køer i listen." - -#: html/Admin/Users/index.html:71 -msgid "Include disabled users in search." -msgstr "Inkluder deaktiverte brukere i søket." - -#: html/Admin/CustomFields/Modify.html:113 -msgid "Include page" -msgstr "" - -#: html/Search/Build.html:486 lib/RT/Report/Tickets.pm:441 -msgid "Incomplete Query" -msgstr "" - -#: html/Search/Build.html:483 lib/RT/Report/Tickets.pm:438 -msgid "Incomplete query" -msgstr "" - -#: html/Search/Elements/PickBasics:148 lib/RT/Tickets_Overlay.pm:1816 -msgid "Initial Priority" -msgstr "Startprioritet" - -#: lib/RT/Ticket_Overlay.pm:1163 lib/RT/Ticket_Overlay.pm:1165 -msgid "InitialPriority" -msgstr "StartPrioritet" - -#: lib/RT/ScripAction_Overlay.pm:133 -msgid "Input error" -msgstr "Feil i inntasting" - -#: html/Elements/ValidateCustomFields:68 lib/RT/CustomField_Overlay.pm:1021 lib/RT/CustomField_Overlay.pm:1162 -#. ($self->FriendlyPattern) -#. ($CF->FriendlyPattern) -msgid "Input must match %1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Interest noted" -msgstr "Interesse registrert" - -#: lib/RT/Ticket_Overlay.pm:3503 -msgid "Internal Error" -msgstr "Intern Feil" - -#: lib/RT/Record.pm:308 -#. ($id->{error_message}) -msgid "Internal Error: %1" -msgstr "Intern Feil: %1" - -#: lib/RT/Group_Overlay.pm:668 -msgid "Invalid Group Type" -msgstr "Ugyldig gruppetype" - -#: lib/RT/Principal_Overlay.pm:161 -msgid "Invalid Right" -msgstr "Ugyldige rettigheter" - -#: NOT FOUND IN SOURCE -msgid "Invalid Type" -msgstr "Ugyldig Type" - -#: lib/RT/Record.pm:952 -msgid "Invalid data" -msgstr "Ugyldig data" - -#: NOT FOUND IN SOURCE -msgid "Invalid owner. Defaulting to 'nobody'." -msgstr "Ugydlig eier. Setter til 'nobody'." - -#: lib/RT/CustomField_Overlay.pm:207 lib/RT/CustomField_Overlay.pm:678 -#. ($msg) -msgid "Invalid pattern: %1" -msgstr "" - -#: lib/RT/Scrip_Overlay.pm:157 lib/RT/Template_Overlay.pm:244 -msgid "Invalid queue" -msgstr "Ugyldig kø" - -#: lib/RT/ACE_Overlay.pm:264 lib/RT/ACE_Overlay.pm:273 lib/RT/ACE_Overlay.pm:279 lib/RT/ACE_Overlay.pm:290 -msgid "Invalid right" -msgstr "Ugyldige rettigheter" - -#: lib/RT/Record.pm:283 -#. ($key) -msgid "Invalid value for %1" -msgstr "Ugyldig verdi for %1" - -#: lib/RT/Record.pm:1610 -msgid "Invalid value for custom field" -msgstr "Ugyldig verdi for fleksifeltet." - -#: lib/RT/Ticket_Overlay.pm:424 -msgid "Invalid value for status" -msgstr "Ugyldig verdi for status" - -#: bin/rt-crontool:268 -msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." -msgstr "Det er ekstremt viktig at ikkepriviligerte brukere ikke har tilgang til dette verktøyet." - -#: bin/rt-crontool:269 -msgid "It is suggested that you create a non-privileged unix user with the correct group membership and RT access to run this tool." -msgstr "Det er anbefalt at du oppretter en upriviligert unixbruker med korrekt gruppemedlemsskap og tilgang til RT for  kjøre dette verktøyet." - -#: bin/rt-crontool:231 -msgid "It takes several arguments:" -msgstr "Det tar flere parametere:" - -#: html/Search/Elements/EditFormat:85 -msgid "Italic" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Items pending my approval" -msgstr "Ting som venter på min godkjenning" - -#: lib/RT/Date.pm:441 -msgid "Jan." -msgstr "Jan." - -#: NOT FOUND IN SOURCE -msgid "January" -msgstr "Januar" - -#: lib/RT/Group_Overlay.pm:166 -msgid "Join or leave this group" -msgstr "Bli med i eller forlat denne gruppen" - -#: lib/RT/Date.pm:447 -msgid "Jul." -msgstr "Jul." - -#: NOT FOUND IN SOURCE -msgid "July" -msgstr "Juli" - -#: html/Ticket/Elements/Tabs:125 -msgid "Jumbo" -msgstr "Total" - -#: lib/RT/Date.pm:446 -msgid "Jun." -msgstr "Jun." - -#: NOT FOUND IN SOURCE -msgid "June" -msgstr "Juni" - -#: NOT FOUND IN SOURCE -msgid "Keyword" -msgstr "Nøkkelord" - -#: NOT FOUND IN SOURCE -msgid "Lang" -msgstr "Språk" - -#: html/Admin/Users/Modify.html:94 html/User/Prefs.html:76 -msgid "Language" -msgstr "" - -#: html/Search/Elements/EditFormat:79 -msgid "Large" -msgstr "" - -#: html/Ticket/Elements/Tabs:96 -msgid "Last" -msgstr "Siste" - -#: html/Ticket/Elements/EditDates:59 html/Ticket/Elements/ShowDates:60 -msgid "Last Contact" -msgstr "Siste Kontakt" - -#: html/Elements/SelectDateType:50 -msgid "Last Contacted" -msgstr "Sist kontaktet" - -#: NOT FOUND IN SOURCE -msgid "Last Notified" -msgstr "Sist Informert" - -#: html/Elements/SelectDateType:51 -msgid "Last Updated" -msgstr "Sist Oppdatert" - -#: NOT FOUND IN SOURCE -msgid "LastUpdated" -msgstr "SistOppdatert" - -#: html/Search/Elements/PickBasics:103 -msgid "LastUpdatedBy" -msgstr "" - -#: html/Ticket/Elements/ShowBasics:68 -msgid "Left" -msgstr "Igjen" - -#: html/Admin/Users/Modify.html:109 -msgid "Let this user access RT" -msgstr "La denne brukeren få tilgang til RT" - -#: html/Admin/Users/Modify.html:113 -msgid "Let this user be granted rights" -msgstr "La denne brukeren få rettigheter" - -#: NOT FOUND IN SOURCE -msgid "Limiting owner to %1 %2" -msgstr "Begrenser eier til %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Limiting queue to %1 %2" -msgstr "Begrenser køen til %1 %2" - -#: html/Search/Elements/EditFormat:68 -msgid "Link" -msgstr "" - -#: lib/RT/Record.pm:1306 -msgid "Link already exists" -msgstr "Lenke finnes alt" - -#: lib/RT/Record.pm:1320 -msgid "Link could not be created" -msgstr "Lenke kunne ikke opprettes" - -#: lib/RT/Record.pm:1326 -#. ($TransString) -msgid "Link created (%1)" -msgstr "Lenke opprettet (%1)" - -#: lib/RT/Record.pm:1387 -#. ($TransString) -msgid "Link deleted (%1)" -msgstr "Lenke slettet (%1)" - -#: lib/RT/Record.pm:1393 -msgid "Link not found" -msgstr "Lenke ble ikke funnet" - -#: html/Ticket/ModifyLinks.html:46 html/Ticket/ModifyLinks.html:50 -#. ($Ticket->Id) -msgid "Link ticket #%1" -msgstr "Knytt sak #%1" - -#: NOT FOUND IN SOURCE -msgid "Link ticket %1" -msgstr "Knytt sak %1" - -#: html/Admin/CustomFields/Modify.html:102 -msgid "Link values to" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:700 -msgid "Linking. Permission denied" -msgstr "" - -#: html/Ticket/Create.html:216 html/Ticket/Elements/ShowSummary:89 html/Ticket/Elements/Tabs:120 html/Ticket/ModifyAll.html:78 -msgid "Links" -msgstr "Lenker" - -#: html/Search/Elements/EditSearches:75 -msgid "Load" -msgstr "" - -#: html/Search/Elements/EditSearches:73 -msgid "Load saved search:" -msgstr "" - -#: lib/RT/System.pm:86 -msgid "LoadSavedSearch" -msgstr "" - -#: html/Admin/Tools/Configuration.html:64 -msgid "Loaded perl modules" -msgstr "" - -#: lib/RT/SavedSearch.pm:111 -#. ($self->Name) -msgid "Loaded search %1" -msgstr "" - -#: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126 -msgid "Location" -msgstr "Lokasjon" - -#: NOT FOUND IN SOURCE -msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." -msgstr "Logkatalogen %1 ble ikke funnet eller kunne ikke skrives til.\\nRT kan ikke kjøre." - -#: html/Elements/Header:91 -#. ("<span>".$session{'CurrentUser'}->Name."</span>") -msgid "Logged in as %1" -msgstr "Logget inn som %1" - -#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:100 html/Elements/Login:68 html/Elements/Login:84 lib/RT/StyleGuide.pod:797 -msgid "Login" -msgstr "Innlogging" - -#: html/Elements/Header:101 -msgid "Logout" -msgstr "Logg av" - -#: lib/RT/CustomField_Overlay.pm:932 -msgid "Lookup type mismatch" -msgstr "" - -#: html/Search/Bulk.html:82 -msgid "Make Owner" -msgstr "Sett Eier" - -#: html/Search/Bulk.html:106 -msgid "Make Status" -msgstr "Sett Status" - -#: html/Search/Bulk.html:114 -msgid "Make date Due" -msgstr "Sett tidsfrist " - -#: html/Search/Bulk.html:116 -msgid "Make date Resolved" -msgstr "Sett løsningsdato" - -#: html/Search/Bulk.html:110 -msgid "Make date Started" -msgstr "Sett startdato" - -#: html/Search/Bulk.html:108 -msgid "Make date Starts" -msgstr "Sett startdato" - -#: html/Search/Bulk.html:112 -msgid "Make date Told" -msgstr "Sett informert dato" - -#: html/Search/Bulk.html:102 -msgid "Make priority" -msgstr "Sett prioritet" - -#: html/Search/Bulk.html:104 -msgid "Make queue" -msgstr "Sett Kø" - -#: html/Search/Bulk.html:100 -msgid "Make subject" -msgstr "Sett Emne" - -#: lib/RT/Group_Overlay.pm:169 -msgid "Make this group visible to user" -msgstr "" - -#: html/Admin/index.html:78 -msgid "Manage custom fields and custom field values" -msgstr "" - -#: html/Admin/index.html:69 -msgid "Manage groups and group membership" -msgstr "Sett grupper og gruppemedlemsskap" - -#: html/Admin/index.html:85 -msgid "Manage properties and configuration which apply to all queues" -msgstr "Rediger egenskaper og konfigurasjon som gjelder for alle køer" - -#: html/Admin/index.html:74 -msgid "Manage queues and queue-specific properties" -msgstr "Rediger køer og kø-spesifike egenskaper" - -#: html/Admin/index.html:64 -msgid "Manage users and passwords" -msgstr "Rediger brukere og passord" - -#: lib/RT/Date.pm:443 -msgid "Mar." -msgstr "Mar." - -#: NOT FOUND IN SOURCE -msgid "March" -msgstr "Mars" - -#: NOT FOUND IN SOURCE -msgid "May" -msgstr "Mai" - -#: lib/RT/Date.pm:445 -msgid "May." -msgstr "Mai." - -#: lib/RT/Transaction_Overlay.pm:731 -#. ($value) -msgid "Member %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:771 -#. ($value) -msgid "Member %1 deleted" -msgstr "" - -#: lib/RT/Group_Overlay.pm:1000 -msgid "Member added" -msgstr "Medlem lagt til" - -#: lib/RT/Group_Overlay.pm:1162 -msgid "Member deleted" -msgstr "Medlem slettet" - -#: lib/RT/Group_Overlay.pm:1166 -msgid "Member not deleted" -msgstr "Medlem ikke slettet" - -#: html/Elements/SelectLinkType:47 -msgid "Member of" -msgstr "Medlem av" - -#: NOT FOUND IN SOURCE -msgid "MemberOf" -msgstr "MedlemAv" - -#: html/Admin/Elements/GroupTabs:63 html/User/Elements/GroupTabs:63 -msgid "Members" -msgstr "Medlemmer" - -#: lib/RT/Transaction_Overlay.pm:728 -#. ($value) -msgid "Membership in %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:768 -#. ($value) -msgid "Membership in %1 deleted" -msgstr "" - -#: html/Admin/Elements/UserTabs:61 -msgid "Memberships" -msgstr "" - -#: html/Admin/Users/Memberships.html:60 -#. ($UserObj->Name) -msgid "Memberships of the user %1" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2893 -msgid "Merge Successful" -msgstr "Fletting vellykket" - -#: lib/RT/Ticket_Overlay.pm:2780 -msgid "Merge failed. Couldn't set EffectiveId" -msgstr "Fletting feilet. Kunne ikke sette EffektivId" - -#: lib/RT/Ticket_Overlay.pm:2788 -msgid "Merge failed. Couldn't set Status" -msgstr "" - -#: html/Elements/EditLinks:131 html/Ticket/Elements/BulkLinks:48 -msgid "Merge into" -msgstr "Flett inn i" - -#: lib/RT/Transaction_Overlay.pm:734 -#. ($value) -msgid "Merged into %1" -msgstr "" - -#: html/Search/Bulk.html:143 html/Ticket/Update.html:118 -msgid "Message" -msgstr "Melding" - -#: html/Ticket/Elements/ShowTransactionAttachments:164 -msgid "Message body not shown because it is too large or is not plain text." -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2451 -msgid "Message could not be recorded" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2454 -msgid "Message recorded" -msgstr "" - -#: html/Ticket/Elements/PreviewScrips:122 -msgid "Messages about this ticket will not be sent to..." -msgstr "" - -#: html/Elements/SelectTimeUnits:47 -msgid "Minutes" -msgstr "" - -#: html/Search/Build.html:490 lib/RT/Report/Tickets.pm:445 -msgid "Mismatched parentheses" -msgstr "" - -#: lib/RT/Record.pm:954 -msgid "Missing a primary key?: %1" -msgstr "Mangler en primærnøkkel?: %1" - -#: html/Admin/Users/Modify.html:193 html/User/Prefs.html:92 -msgid "Mobile" -msgstr "Mobil" - -#: NOT FOUND IN SOURCE -msgid "MobilePhone" -msgstr "MobilTelefon" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "Modify Access Control List" -msgstr "Endre Tilgangslister" - -#: NOT FOUND IN SOURCE -msgid "Modify Custom Field %1" -msgstr "Endre Fleksifeltet %1" - -#: html/Admin/Elements/ObjectCustomFields:96 -#. (loc(lc($FriendlySubTypes)), loc(lc($Types))) -msgid "Modify Custom Fields which apply to %1 for all %2" -msgstr "" - -#: html/Admin/Elements/ObjectCustomFields:98 -#. (loc(lc($Types))) -msgid "Modify Custom Fields which apply to all %1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Modify Custom Fields which apply to all queues" -msgstr "Endre Fleksifelt som gjelder for alle køer" - -#: html/Admin/Global/GroupRights.html:106 html/Admin/Groups/GroupRights.html:94 html/Admin/Queues/GroupRights.html:107 -msgid "Modify Group Rights" -msgstr "" - -#: html/Admin/Groups/Members.html:105 html/User/Groups/Members.html:101 -msgid "Modify Members" -msgstr "" - -#: html/User/Delegation.html:58 -msgid "Modify Rights" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:97 -msgid "Modify Scrip templates for this queue" -msgstr "Endre Scripmaler for denne køen" - -#: lib/RT/Queue_Overlay.pm:100 -msgid "Modify Scrips for this queue" -msgstr "Endre Scrips for denne køen" - -#: NOT FOUND IN SOURCE -msgid "Modify System ACLS" -msgstr "Endre SystemACLer" - -#: NOT FOUND IN SOURCE -msgid "Modify Template %1" -msgstr "Endre Malen %1" - -#: html/Admin/Global/UserRights.html:75 html/Admin/Groups/UserRights.html:76 html/Admin/Queues/UserRights.html:75 -msgid "Modify User Rights" -msgstr "" - -#: html/Admin/Queues/CustomField.html:66 -#. ($QueueObj->Name()) -msgid "Modify a CustomField for queue %1" -msgstr "Endre et fleksifelt for køen %1" - -#: NOT FOUND IN SOURCE -msgid "Modify a CustomField that applies to all queues" -msgstr "Endre et fleksifelt som gjelder for alle køer" - -#: html/Admin/Queues/Scrip.html:82 -#. ($QueueObj->Name) -msgid "Modify a scrip for queue %1" -msgstr "Endre et scrip for køen %1" - -#: html/Admin/Global/Scrip.html:75 -msgid "Modify a scrip that applies to all queues" -msgstr "Endre et scrip som gjelder for alle køer" - -#: html/Admin/CustomFields/Objects.html:90 -#. ($CF->Name) -msgid "Modify associated objects for %1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Modify dates for # %1" -msgstr "Endre datoer for # %1" - -#: html/Ticket/ModifyDates.html:46 html/Ticket/ModifyDates.html:50 -#. ($TicketObj->Id) -msgid "Modify dates for #%1" -msgstr "Endre datoer for #%1" - -#: html/Ticket/ModifyDates.html:57 -#. ($TicketObj->Id) -msgid "Modify dates for ticket # %1" -msgstr "Endre datoer for sak # %1" - -#: html/Admin/Elements/GlobalCustomFieldTabs:65 html/Admin/Global/index.html:72 -msgid "Modify global custom fields" -msgstr "" - -#: html/Admin/Elements/GlobalCustomFieldTabs:70 html/Admin/Global/GroupRights.html:46 html/Admin/Global/GroupRights.html:49 html/Admin/Global/index.html:77 -msgid "Modify global group rights" -msgstr "Endre globale grupperettigheter" - -#: html/Admin/Global/GroupRights.html:54 -msgid "Modify global group rights." -msgstr "Endre globale grupperettigheter" - -#: NOT FOUND IN SOURCE -msgid "Modify global rights for groups" -msgstr "Endre globale rettigheter for grupper" - -#: NOT FOUND IN SOURCE -msgid "Modify global rights for users" -msgstr "Endre globale rettigheter for brukere" - -#: NOT FOUND IN SOURCE -msgid "Modify global scrips" -msgstr "Endre globale scrips" - -#: html/Admin/Global/UserRights.html:46 html/Admin/Global/UserRights.html:49 html/Admin/Global/index.html:81 -msgid "Modify global user rights" -msgstr "Endre globale brukerrettigheter" - -#: html/Admin/Global/UserRights.html:54 -msgid "Modify global user rights." -msgstr "Endre globale brukerrettigheter" - -#: lib/RT/Group_Overlay.pm:163 -msgid "Modify group metadata or delete group" -msgstr "Endre gruppens metadata eller slette gruppen" - -#: html/Admin/CustomFields/GroupRights.html:164 -#. ($CustomFieldObj->Name) -msgid "Modify group rights for custom field %1" -msgstr "" - -#: html/Admin/Groups/GroupRights.html:46 html/Admin/Groups/GroupRights.html:50 html/Admin/Groups/GroupRights.html:56 -#. ($GroupObj->Name) -msgid "Modify group rights for group %1" -msgstr "Endre grupperettigheter for %1 gruppen" - -#: html/Admin/Queues/GroupRights.html:46 html/Admin/Queues/GroupRights.html:50 -#. ($QueueObj->Name) -msgid "Modify group rights for queue %1" -msgstr "Endre grupperettigheter %1 køen" - -#: lib/RT/Group_Overlay.pm:165 -msgid "Modify membership roster for this group" -msgstr "Endre medlemsliste for denne gruppen" - -#: lib/RT/System.pm:82 -msgid "Modify one's own RT account" -msgstr "Endre sin egen RT konto" - -#: html/Admin/Queues/People.html:46 html/Admin/Queues/People.html:50 -#. ($QueueObj->Name) -msgid "Modify people related to queue %1" -msgstr "Endre hvem som er relatert til %1 køen" - -#: html/Ticket/ModifyPeople.html:46 html/Ticket/ModifyPeople.html:50 html/Ticket/ModifyPeople.html:57 -#. ($Ticket->id) -#. ($Ticket->Id) -msgid "Modify people related to ticket #%1" -msgstr "Endre hvem som er relater til sak #%1" - -#: html/Admin/Queues/Scrips.html:67 -#. ($QueueObj->Name) -msgid "Modify scrips for queue %1" -msgstr "Endre scrips for %1 køen" - -#: html/Admin/Elements/GlobalCustomFieldTabs:56 html/Admin/Global/Scrips.html:65 html/Admin/Global/index.html:63 -msgid "Modify scrips which apply to all queues" -msgstr "Endre scrips som gjelder alle køer" - -#: html/Admin/Global/Template.html:102 html/Admin/Global/Template.html:46 html/Admin/Global/Template.html:51 html/Admin/Queues/Template.html:99 -#. (loc($TemplateObj->Name())) -#. ($TemplateObj->id) -msgid "Modify template %1" -msgstr "Endre mal %1" - -#: html/Admin/Global/Templates.html:65 -msgid "Modify templates which apply to all queues" -msgstr "Endre maler som gjelder for alle køer" - -#: html/Admin/Global/index.html:85 -msgid "Modify the default \"RT at a glance\" view" -msgstr "" - -#: html/Admin/Groups/Modify.html:119 html/User/Groups/Modify.html:107 -#. ($Group->Name) -msgid "Modify the group %1" -msgstr "Endre gruppen %1" - -#: lib/RT/Queue_Overlay.pm:95 -msgid "Modify the queue watchers" -msgstr "Endre overvåkere for køen" - -#: html/Admin/Users/Modify.html:309 -#. ($UserObj->Name) -msgid "Modify the user %1" -msgstr "Endre brukeren %1" - -#: html/Ticket/ModifyAll.html:58 -#. ($Ticket->Id) -msgid "Modify ticket # %1" -msgstr "Endre sak # %1" - -#: html/Ticket/Modify.html:46 html/Ticket/Modify.html:49 html/Ticket/Modify.html:55 -#. ($TicketObj->Id) -msgid "Modify ticket #%1" -msgstr "Endre sak #%1" - -#: lib/RT/Queue_Overlay.pm:113 -msgid "Modify tickets" -msgstr "Endre saker" - -#: html/Admin/CustomFields/UserRights.html:157 -#. ($CustomFieldObj->Name) -msgid "Modify user rights for custom field %1" -msgstr "" - -#: html/Admin/Groups/UserRights.html:46 html/Admin/Groups/UserRights.html:50 html/Admin/Groups/UserRights.html:56 -#. ($GroupObj->Name) -msgid "Modify user rights for group %1" -msgstr "Endre brukerrettigheter for %1 gruppen" - -#: html/Admin/Queues/UserRights.html:46 html/Admin/Queues/UserRights.html:50 -#. ($QueueObj->Name) -msgid "Modify user rights for queue %1" -msgstr "Endre brukerrettigheter for %1 køen" - -#: NOT FOUND IN SOURCE -msgid "Modify watchers for queue '%1'" -msgstr "Endre overvåkere for '%1' køen" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "ModifyACL" -msgstr "EndreACL" - -#: lib/RT/CustomField_Overlay.pm:108 -msgid "ModifyCustomField" -msgstr "" - -#: lib/RT/Group_Overlay.pm:166 -msgid "ModifyOwnMembership" -msgstr "EndreEgetMedlemskap" - -#: lib/RT/Queue_Overlay.pm:95 -msgid "ModifyQueueWatchers" -msgstr "EndreKøOvervåkere" - -#: lib/RT/Queue_Overlay.pm:100 -msgid "ModifyScrips" -msgstr "EndreScrips" - -#: lib/RT/System.pm:82 -msgid "ModifySelf" -msgstr "EndreSegSelv" - -#: lib/RT/Queue_Overlay.pm:97 -msgid "ModifyTemplate" -msgstr "EndreMal" - -#: lib/RT/Queue_Overlay.pm:113 -msgid "ModifyTicket" -msgstr "EndreSak" - -#: lib/RT/Date.pm:417 -msgid "Mon." -msgstr "Man." - -#: html/Ticket/Elements/ShowRequestor:61 -#. ($name) -msgid "More about %1" -msgstr "Mer om %1" - -#: html/Admin/Elements/PickCustomFields:83 -msgid "Move down" -msgstr "Flytt ned" - -#: html/Admin/Elements/PickCustomFields:75 -msgid "Move up" -msgstr "Flytt opp" - -#: html/Admin/Elements/SelectSingleOrMultiple:48 -msgid "Multiple" -msgstr "Flere" - -#: lib/RT/User_Overlay.pm:226 -msgid "Must specify 'Name' attribute" -msgstr "Må spesifisere attributten 'Navn'" - -#: html/SelfService/Elements/MyRequests:57 -#. ($friendly_status) -msgid "My %1 tickets" -msgstr "Mine %1 saker" - -#: NOT FOUND IN SOURCE -msgid "My Approvals" -msgstr "Mine saker til godkjenning" - -#: html/Tools/Elements/Tabs:63 -msgid "My Day" -msgstr "" - -#: html/Approvals/index.html:46 html/Approvals/index.html:47 -msgid "My approvals" -msgstr "Mine saker til godkjenning" - -#: html/Search/Elements/SearchPrivacy:50 html/Search/Elements/SelectSearchObject:53 html/Search/Elements/SelectSearchesForObjects:54 -msgid "My saved searches" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:58 html/Admin/Elements/AddCustomFieldValue:53 html/Admin/Elements/EditCustomField:55 html/Admin/Elements/EditCustomFieldValues:55 html/Admin/Elements/ModifyTemplate:49 html/Admin/Groups/Modify.html:65 html/Search/Bulk.html:157 html/User/Groups/Modify.html:65 -msgid "Name" -msgstr "Navn" - -#: lib/RT/User_Overlay.pm:233 -msgid "Name in use" -msgstr "Navnet er i bruk" - -#: NOT FOUND IN SOURCE -msgid "Need approval from system administrator" -msgstr "Trenger godkjennelse fra systemadministrator" - -#: html/Ticket/Elements/ShowDates:73 -msgid "Never" -msgstr "Aldri" - -#: NOT FOUND IN SOURCE -msgid "New" -msgstr "Ny" - -#: html/Elements/EditLinks:117 -msgid "New Links" -msgstr "Nye forhold" - -#: html/Admin/Users/Modify.html:119 html/User/Prefs.html:109 -msgid "New Password" -msgstr "Nytt Passord" - -#: etc/initialdata:332 -msgid "New Pending Approval" -msgstr "Ny, Venter på Godkjennelse" - -#: html/Ticket/Elements/Tabs:212 -msgid "New Search" -msgstr "Nytt Søk" - -#: html/Admin/Elements/CustomFieldTabs:93 html/Admin/Queues/CustomField.html:73 -msgid "New custom field" -msgstr "Nytt fleksifelt" - -#: html/Admin/Elements/GroupTabs:77 html/User/Elements/GroupTabs:73 -msgid "New group" -msgstr "Ny gruppe" - -#: html/SelfService/Prefs.html:53 -msgid "New password" -msgstr "Nytt passord" - -#: lib/RT/User_Overlay.pm:816 -msgid "New password notification sent" -msgstr "Melding om nytt passord sendt" - -#: html/Admin/Elements/QueueTabs:95 -msgid "New queue" -msgstr "Ny kø" - -#: html/Ticket/Elements/Reminders:118 -msgid "New reminder:" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "New request" -msgstr "Ny forespørsel" - -#: html/Admin/Elements/SelectRights:65 -msgid "New rights" -msgstr "Nye rettigheter" - -#: html/Admin/Global/Scrip.html:63 html/Admin/Global/Scrips.html:60 html/Admin/Queues/Scrip.html:71 html/Admin/Queues/Scrips.html:76 -msgid "New scrip" -msgstr "Nytt scrip" - -#: NOT FOUND IN SOURCE -msgid "New search" -msgstr "Nytt søk" - -#: html/Admin/Global/Template.html:81 html/Admin/Global/Templates.html:60 html/Admin/Queues/Template.html:79 html/Admin/Queues/Templates.html:71 -msgid "New template" -msgstr "Ny mal" - -#: html/SelfService/Elements/Tabs:84 html/SelfService/Elements/Tabs:88 -msgid "New ticket" -msgstr "Ny sak" - -#: lib/RT/Ticket_Overlay.pm:2757 -msgid "New ticket doesn't exist" -msgstr "Ny sak eksistere ikke" - -#: html/Admin/Elements/UserTabs:81 -msgid "New user" -msgstr "Ny bruker" - -#: html/Admin/Elements/CreateUserCalled:47 -msgid "New user called" -msgstr "Ny bruker kalt" - -#: html/Admin/Queues/People.html:76 html/Ticket/Elements/EditPeople:50 -msgid "New watchers" -msgstr "Ny overvåker" - -#: NOT FOUND IN SOURCE -msgid "New window setting" -msgstr "Instillinger for nytt vindu" - -#: html/Helpers/CalPopup.html:58 html/Ticket/Elements/Tabs:92 -msgid "Next" -msgstr "Neste" - -#: html/Elements/TicketList:104 -msgid "Next Page" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Next page" -msgstr "Neste side" - -#: NOT FOUND IN SOURCE -msgid "NickName" -msgstr "KalleNavn" - -#: html/Admin/Users/Modify.html:84 html/User/Prefs.html:72 -msgid "Nickname" -msgstr "Kallenavn" - -#: html/Admin/CustomFields/UserRights.html:145 -msgid "No Class defined" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:166 html/Admin/Elements/EditCustomField:119 -msgid "No CustomField" -msgstr "Ingen FleksiFelt" - -#: html/Admin/CustomFields/GroupRights.html:103 -msgid "No CustomField defined" -msgstr "" - -#: html/Admin/Groups/GroupRights.html:105 html/Admin/Groups/UserRights.html:92 -msgid "No Group defined" -msgstr "Ingen grupper definert" - -#: lib/RT/Tickets_Overlay_SQL.pm:482 -msgid "No Query" -msgstr "" - -#: html/Admin/Queues/GroupRights.html:118 html/Admin/Queues/UserRights.html:89 -msgid "No Queue defined" -msgstr "Ingen kø definert" - -#: bin/rt-crontool:73 -msgid "No RT user found. Please consult your RT administrator.\\n" -msgstr "Ingen RT bruker funnet. Vennligst referer til manualen.\\n" - -#: html/Admin/Global/Template.html:100 html/Admin/Queues/Template.html:97 -msgid "No Template" -msgstr "Ingen Mal" - -#: NOT FOUND IN SOURCE -msgid "No Ticket specified. Aborting ticket " -msgstr "Ingen sak oppgitt. Avbryter sak " - -#: NOT FOUND IN SOURCE -msgid "No Ticket specified. Aborting ticket modifications\\n\\n" -msgstr "Ingen Sak oppgitt. Avbryter saksendring\\n\\n" - -#: html/Approvals/Elements/Approve:77 -msgid "No action" -msgstr "Ingen handling" - -#: lib/RT/Record.pm:949 -msgid "No column specified" -msgstr "Ingen kolonne spesifisert" - -#: NOT FOUND IN SOURCE -msgid "No command found\\n" -msgstr "Ingen kommando funnet\\n" - -#: html/Ticket/Elements/ShowRequestor:68 -msgid "No comment entered about this user" -msgstr "Ingen kommentar skrevet om denne brukeren" - -#: NOT FOUND IN SOURCE -msgid "No correspondence attached" -msgstr "Ingen korrespondanse vedlagt" - -#: lib/RT/Action/Generic.pm:185 lib/RT/Condition/Generic.pm:197 lib/RT/Search/ActiveTicketsInQueue.pm:77 lib/RT/Search/Generic.pm:134 lib/RT/Search/Googleish.pm:78 -#. (ref $self) -msgid "No description for %1" -msgstr "Ingen beskrivelse for %1" - -#: lib/RT/Users_Overlay.pm:190 -msgid "No group specified" -msgstr "Ingen gruppe spesifisert" - -#: html/Admin/Groups/index.html:52 -msgid "No groups matching search criteria found." -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2393 -msgid "No message attached" -msgstr "" - -#: lib/RT/User_Overlay.pm:1034 -msgid "No password set" -msgstr "Passordet er ikke satt" - -#: lib/RT/Queue_Overlay.pm:361 -msgid "No permission to create queues" -msgstr "Ingen tilgang til å opprette køer" - -#: lib/RT/Ticket_Overlay.pm:420 -#. ($QueueObj->Name) -msgid "No permission to create tickets in the queue '%1'" -msgstr "Ikke tilgang til å opprette saker for køen '%1'" - -#: lib/RT/User_Overlay.pm:186 -msgid "No permission to create users" -msgstr "Ikke tilgang til å opprette brukere" - -#: html/SelfService/Display.html:167 -msgid "No permission to display that ticket" -msgstr "Ikke tilgang til å vise den saken" - -#: lib/RT/SavedSearch.pm:156 -msgid "No permission to save system-wide searches" -msgstr "" - -#: html/SelfService/Update.html:117 -msgid "No permission to view update ticket" -msgstr "Ingen tilgang til å se oppdatering av saken" - -#: lib/RT/Queue_Overlay.pm:795 lib/RT/Ticket_Overlay.pm:1489 -msgid "No principal specified" -msgstr "Ingen primær spesifisert" - -#: html/Admin/Queues/People.html:175 html/Admin/Queues/People.html:185 -msgid "No principals selected." -msgstr "Ingen primære spesifisert" - -#: html/Admin/Queues/index.html:57 -msgid "No queues matching search criteria found." -msgstr "Det er ingen køer som matcher søkekriteriet" - -#: html/Admin/Elements/SelectRights:106 -msgid "No rights found" -msgstr "Ingen rettigheter funnet" - -#: html/Admin/Elements/SelectRights:53 -msgid "No rights granted." -msgstr "Ingen rettigheter tildelt" - -#: lib/RT/SavedSearch.pm:196 -msgid "No search loaded" -msgstr "" - -#: html/Search/Bulk.html:232 -msgid "No search to operate on." -msgstr "Ingen søk å behandle" - -#: html/Elements/RT__Ticket/ColumnMap:137 html/Search/Results.rdf:78 -msgid "No subject" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "No ticket id specified" -msgstr "Ingen saksid oppgitt" - -#: lib/RT/Transaction_Overlay.pm:528 lib/RT/Transaction_Overlay.pm:565 -msgid "No transaction type specified" -msgstr "Transaksjonstype ikke spesifisert" - -#: NOT FOUND IN SOURCE -msgid "No user or email address specified" -msgstr "Ingen bruker eller epostaddresse oppgitt" - -#: html/Admin/Users/index.html:55 -msgid "No users matching search criteria found." -msgstr "Fant ingen brukere som treffer søkekriteriene." - -#: NOT FOUND IN SOURCE -msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" -msgstr "Fant ingen gyldig RT bruker. RT cvs handler avstengt. Kontakt din RT administrator.\\n" - -#: lib/RT/Record.pm:946 -msgid "No value sent to _Set!\\n" -msgstr "Ingen verdi sendt til _Set!\\n" - -#: html/Elements/QuickCreate:59 -msgid "Nobody" -msgstr "Ingen" - -#: lib/RT/Record.pm:951 -msgid "Nonexistant field?" -msgstr "Ukjent felt?" - -#: html/Search/Chart:71 html/Search/Elements/Chart:88 -msgid "Not Set" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Not logged in" -msgstr "Ikke logget inn" - -#: html/Elements/Header:96 -msgid "Not logged in." -msgstr "Ikke logget inn." - -#: lib/RT/Date.pm:397 -msgid "Not set" -msgstr "Ikke satt" - -#: html/NoAuth/Reminder.html:48 -msgid "Not yet implemented." -msgstr "Ikke implementert enda." - -#: NOT FOUND IN SOURCE -msgid "Not yet implemented...." -msgstr "Ikke implementert enda...." - -#: html/Approvals/Elements/Approve:81 -msgid "Notes" -msgstr "Notater" - -#: lib/RT/User_Overlay.pm:819 -msgid "Notification could not be sent" -msgstr "Melding kunne ikke sendes" - -#: etc/initialdata:101 -msgid "Notify AdminCcs" -msgstr "Raporter til AdminCc" - -#: etc/initialdata:97 -msgid "Notify AdminCcs as Comment" -msgstr "Rapporter til AdminCc som kommentar" - -#: etc/initialdata:93 etc/upgrade/3.1.17/content:6 -msgid "Notify Ccs" -msgstr "" - -#: etc/initialdata:89 etc/upgrade/3.1.17/content:2 -msgid "Notify Ccs as Comment" -msgstr "" - -#: etc/initialdata:128 -msgid "Notify Other Recipients" -msgstr "Rapporter til andre mottakere" - -#: etc/initialdata:124 -msgid "Notify Other Recipients as Comment" -msgstr "Rapporter til andre mottakere som kommentar" - -#: etc/initialdata:85 -msgid "Notify Owner" -msgstr "Rapporter til eier" - -#: etc/initialdata:81 -msgid "Notify Owner as Comment" -msgstr "Rapportert til eier som kommentar" - -#: etc/initialdata:376 -msgid "Notify Owner of their rejected ticket" -msgstr "" - -#: etc/initialdata:365 -msgid "Notify Owner of their ticket has been approved by all approvers" -msgstr "" - -#: etc/initialdata:353 -msgid "Notify Owner of their ticket has been approved by some approver" -msgstr "" - -#: etc/initialdata:334 -msgid "Notify Owners and AdminCcs of new items pending their approval" -msgstr "Rapporter til Eiere og AdminCc om nye ting som venter på godkjenning" - -#: etc/initialdata:77 -msgid "Notify Requestors" -msgstr "Rapporter til kunde" - -#: etc/initialdata:111 -msgid "Notify Requestors and Ccs" -msgstr "Rapporter til Kunder og Cc" - -#: etc/initialdata:106 -msgid "Notify Requestors and Ccs as Comment" -msgstr "Rapporter til Kunder og Cc som kommentar" - -#: etc/initialdata:120 -msgid "Notify Requestors, Ccs and AdminCcs" -msgstr "Rapporter til Kunder Cc og AdminCc" - -#: etc/initialdata:116 -msgid "Notify Requestors, Ccs and AdminCcs as Comment" -msgstr "Rapporter til Kunder Cc og AdminCc som Kommentar" - -#: lib/RT/Date.pm:451 -msgid "Nov." -msgstr "Nov." - -#: NOT FOUND IN SOURCE -msgid "November" -msgstr "November" - -#: html/Search/Elements/SelectAndOr:47 -msgid "OR" -msgstr "" - -#: lib/RT/Record.pm:322 -msgid "Object could not be created" -msgstr "Objekter kunne ikke opprettes" - -#: lib/RT/Record.pm:123 -msgid "Object could not be deleted" -msgstr "" - -#: lib/RT/Record.pm:341 -msgid "Object created" -msgstr "Objektet ble opprettet" - -#: lib/RT/Record.pm:120 -msgid "Object deleted" -msgstr "" - -#: html/Admin/CustomFields/Objects.html:72 html/Admin/Elements/ObjectCustomFields:63 -#. ($ObjectType) -#. ($LookupType) -msgid "Object of type %1 cannot take custom fields" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:967 -msgid "Object type mismatch" -msgstr "" - -#: lib/RT/Date.pm:450 -msgid "Oct." -msgstr "Okt." - -#: NOT FOUND IN SOURCE -msgid "October" -msgstr "Oktober" - -#: html/Tools/Elements/Tabs:55 -msgid "Offline" -msgstr "" - -#: html/Tools/Offline.html:49 -msgid "Offline edits" -msgstr "" - -#: html/Tools/Offline.html:46 -msgid "Offline upload" -msgstr "" - -#: html/Elements/SelectDateRelation:56 -msgid "On" -msgstr "Ved" - -#: lib/RT/Transaction_Overlay.pm:326 -#. ($self->CreatedAsString(), $self->CreatorObj->Name()) -msgid "On %1, %2 wrote:" -msgstr "" - -#: etc/initialdata:163 -msgid "On Comment" -msgstr "Ved Kommentar" - -#: etc/initialdata:156 -msgid "On Correspond" -msgstr "Ved Korrespondanse" - -#: etc/initialdata:145 -msgid "On Create" -msgstr "Ved Opprettelse" - -#: etc/initialdata:184 -msgid "On Owner Change" -msgstr "Ved Eierskifte" - -#: etc/initialdata:177 etc/upgrade/3.1.17/content:15 -msgid "On Priority Change" -msgstr "" - -#: etc/initialdata:192 -msgid "On Queue Change" -msgstr "Ved Køendring" - -#: etc/initialdata:198 -msgid "On Resolve" -msgstr "Ved Løsning" - -#: etc/initialdata:169 -msgid "On Status Change" -msgstr "Ved statusendring" - -#: etc/initialdata:150 -msgid "On Transaction" -msgstr "Ved Transaksjon" - -#: html/Approvals/Elements/PendingMyApproval:70 -#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter' id='CreatedAfter' />") -msgid "Only show approvals for requests created after %1" -msgstr "Vis kun godkjennelse for saker opprettet etter %1" - -#: html/Approvals/Elements/PendingMyApproval:68 -#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore' id='CreatedBefore' />") -msgid "Only show approvals for requests created before %1" -msgstr "Bare vis godkjennelse for saker opprettet før %1" - -#: html/Admin/CustomFields/index.html:75 -msgid "Only show custom fields for:" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Open" -msgstr "Åpne" - -#: html/SelfService/index.html:46 -msgid "Open Tickets" -msgstr "" - -#: html/Ticket/Elements/Tabs:160 -msgid "Open it" -msgstr "Åpne den" - -#: NOT FOUND IN SOURCE -msgid "Open requests" -msgstr "Åpne forespørsler" - -#: html/SelfService/Elements/Tabs:75 -msgid "Open tickets" -msgstr "Åpne saker" - -#: NOT FOUND IN SOURCE -msgid "Open tickets (from listing) in a new window" -msgstr "Åpne saker (fra utlisting) i et nytt vindu" - -#: NOT FOUND IN SOURCE -msgid "Open tickets (from listing) in another window" -msgstr "Åpne saker (fra utlisting) it et annet vinud" - -#: etc/initialdata:140 -msgid "Open tickets on correspondence" -msgstr "Åpne saker ved korrespondanse" - -#: html/Prefs/MyRT.html:70 -msgid "Options" -msgstr "" - -#: html/Search/Elements/DisplayOptions:59 -msgid "Order by" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Ordering and sorting" -msgstr "Rekkefølge og sortering" - -#: html/Admin/Users/Modify.html:141 html/User/Prefs.html:129 -msgid "Organization" -msgstr "Organisasjon" - -#: html/Approvals/Elements/Approve:53 -#. ($approving->Id, $approving->Subject) -msgid "Originating ticket: #%1" -msgstr "Opprinnelig sak: #%1" - -#: lib/RT/Transaction_Overlay.pm:622 -msgid "Outgoing email about a comment recorded" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:626 -msgid "Outgoing email recorded" -msgstr "" - -#: html/Admin/Queues/Modify.html:90 -msgid "Over time, priority moves toward" -msgstr "Over tid beveger prioriteten seg mot" - -#: lib/RT/Queue_Overlay.pm:112 -msgid "Own tickets" -msgstr "Eie saker" - -#: lib/RT/Queue_Overlay.pm:112 -msgid "OwnTicket" -msgstr "EieSak" - -#: etc/initialdata:38 html/Elements/QuickCreate:56 html/Search/Elements/PickBasics:101 html/Ticket/Create.html:72 html/Ticket/Elements/EditBasics:61 html/Ticket/Elements/EditPeople:64 html/Ticket/Elements/EditPeople:65 html/Ticket/Elements/Reminders:129 html/Ticket/Elements/ShowPeople:48 html/Ticket/Update.html:62 lib/RT/ACE_Overlay.pm:110 lib/RT/Tickets_Overlay.pm:2006 -msgid "Owner" -msgstr "Eier" - -#: NOT FOUND IN SOURCE -msgid "Owner changed from %1 to %2" -msgstr "Eier endret fra %1 til %2" - -#: lib/RT/Ticket_Overlay.pm:505 -msgid "Owner could not be set." -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:672 -#. ($Old->Name , $New->Name) -msgid "Owner forcibly changed from %1 to %2" -msgstr "Eier ble tvunget til å endres fra %1 til %2" - -#: NOT FOUND IN SOURCE -msgid "Owner is" -msgstr "Eier er" - -#: html/Elements/TicketList:78 -#. ($Page, int($TotalFound/$Rows)+$oddRows) -msgid "Page %1 of %2" -msgstr "" - -#: html/Admin/Users/Modify.html:198 html/User/Prefs.html:96 -msgid "Pager" -msgstr "Personsøker" - -#: NOT FOUND IN SOURCE -msgid "PagerPhone" -msgstr "PersonSøker" - -#: NOT FOUND IN SOURCE -msgid "Parent" -msgstr "Forelder" - -#: html/Elements/EditLinks:144 html/Elements/EditLinks:76 html/Elements/ShowLinks:68 html/Ticket/Create.html:222 html/Ticket/Elements/BulkLinks:60 -msgid "Parents" -msgstr "Foreldre" - -#: html/Elements/Login:95 html/User/Prefs.html:105 -msgid "Password" -msgstr "Passord" - -#: html/NoAuth/Reminder.html:46 -msgid "Password Reminder" -msgstr "Passordhint" - -#: lib/RT/Transaction_Overlay.pm:781 lib/RT/User_Overlay.pm:1045 -msgid "Password changed" -msgstr "" - -#: lib/RT/User_Overlay.pm:1037 lib/RT/User_Overlay.pm:214 -#. ($RT::MinimumPasswordLength) -msgid "Password needs to be at least %1 characters long" -msgstr "" - -#: lib/RT/User_Overlay.pm:1044 -msgid "Password set" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Password too short" -msgstr "For kort passord" - -#: html/User/Prefs.html:240 -#. (loc_fuzzy($msg)) -msgid "Password: %1" -msgstr "Passord: %1" - -#: lib/RT/User_Overlay.pm:1030 -msgid "Password: Permission Denied" -msgstr "" - -#: html/Admin/Users/Modify.html:364 -msgid "Passwords do not match." -msgstr "Passordene stemmer ikke overens." - -#: html/User/Prefs.html:242 -msgid "Passwords do not match. Your password has not been changed" -msgstr "Passordene stemmer ikke overrens. Passordet ble ikke endret" - -#: html/Ticket/Elements/ShowSummary:62 html/Ticket/Elements/Tabs:119 html/Ticket/ModifyAll.html:72 -msgid "People" -msgstr "Personer" - -#: etc/initialdata:133 -msgid "Perform a user-defined action" -msgstr "Kjør en brukerdefinert handling" - -#: html/Admin/Tools/Configuration.html:94 -msgid "Perl configuration" -msgstr "" - -#: lib/RT/ACE_Overlay.pm:251 lib/RT/ACE_Overlay.pm:257 lib/RT/ACE_Overlay.pm:580 lib/RT/ACE_Overlay.pm:590 lib/RT/ACE_Overlay.pm:600 lib/RT/ACE_Overlay.pm:665 lib/RT/Attribute_Overlay.pm:158 lib/RT/Attribute_Overlay.pm:164 lib/RT/Attribute_Overlay.pm:405 lib/RT/Attribute_Overlay.pm:414 lib/RT/Attribute_Overlay.pm:427 lib/RT/CurrentUser.pm:116 lib/RT/CurrentUser.pm:125 lib/RT/CustomField_Overlay.pm:1017 lib/RT/CustomField_Overlay.pm:1138 lib/RT/CustomField_Overlay.pm:1281 lib/RT/CustomField_Overlay.pm:172 lib/RT/CustomField_Overlay.pm:189 lib/RT/CustomField_Overlay.pm:200 lib/RT/CustomField_Overlay.pm:374 lib/RT/CustomField_Overlay.pm:403 lib/RT/CustomField_Overlay.pm:763 lib/RT/CustomField_Overlay.pm:936 lib/RT/CustomField_Overlay.pm:971 lib/RT/Group_Overlay.pm:1117 lib/RT/Group_Overlay.pm:1121 lib/RT/Group_Overlay.pm:1130 lib/RT/Group_Overlay.pm:1240 lib/RT/Group_Overlay.pm:1244 lib/RT/Group_Overlay.pm:1250 lib/RT/Group_Overlay.pm:445 lib/RT/Group_Overlay.pm:542 lib/RT/Group_Overlay.pm:620 lib/RT/Group_Overlay.pm:628 lib/RT/Group_Overlay.pm:726 lib/RT/Group_Overlay.pm:730 lib/RT/Group_Overlay.pm:736 lib/RT/Group_Overlay.pm:922 lib/RT/Group_Overlay.pm:926 lib/RT/Group_Overlay.pm:939 lib/RT/Queue_Overlay.pm:1054 lib/RT/Queue_Overlay.pm:140 lib/RT/Queue_Overlay.pm:158 lib/RT/Queue_Overlay.pm:657 lib/RT/Queue_Overlay.pm:667 lib/RT/Queue_Overlay.pm:681 lib/RT/Queue_Overlay.pm:819 lib/RT/Queue_Overlay.pm:828 lib/RT/Queue_Overlay.pm:841 lib/RT/Scrip_Overlay.pm:149 lib/RT/Scrip_Overlay.pm:160 lib/RT/Scrip_Overlay.pm:224 lib/RT/Scrip_Overlay.pm:538 lib/RT/Template_Overlay.pm:108 lib/RT/Template_Overlay.pm:277 lib/RT/Ticket_Overlay.pm:1357 lib/RT/Ticket_Overlay.pm:1367 lib/RT/Ticket_Overlay.pm:1381 lib/RT/Ticket_Overlay.pm:1522 lib/RT/Ticket_Overlay.pm:1532 lib/RT/Ticket_Overlay.pm:1546 lib/RT/Ticket_Overlay.pm:1663 lib/RT/Ticket_Overlay.pm:1983 lib/RT/Ticket_Overlay.pm:2126 lib/RT/Ticket_Overlay.pm:2296 lib/RT/Ticket_Overlay.pm:2346 lib/RT/Ticket_Overlay.pm:2525 lib/RT/Ticket_Overlay.pm:2538 lib/RT/Ticket_Overlay.pm:2614 lib/RT/Ticket_Overlay.pm:2627 lib/RT/Ticket_Overlay.pm:2748 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2990 lib/RT/Ticket_Overlay.pm:3000 lib/RT/Ticket_Overlay.pm:3005 lib/RT/Ticket_Overlay.pm:3224 lib/RT/Ticket_Overlay.pm:3228 lib/RT/Ticket_Overlay.pm:3371 lib/RT/Ticket_Overlay.pm:3497 lib/RT/Transaction_Overlay.pm:516 lib/RT/Transaction_Overlay.pm:523 lib/RT/Transaction_Overlay.pm:551 lib/RT/Transaction_Overlay.pm:558 lib/RT/User_Overlay.pm:1176 lib/RT/User_Overlay.pm:1856 lib/RT/User_Overlay.pm:369 lib/RT/User_Overlay.pm:735 lib/RT/User_Overlay.pm:774 -msgid "Permission Denied" -msgstr "Ingen Tilgang" - -#: lib/RT/Template_Overlay.pm:238 lib/RT/Template_Overlay.pm:247 -msgid "Permission denied" -msgstr "" - -#: lib/RT/Template_Overlay.pm:372 -msgid "Permissions denied" -msgstr "" - -#: html/User/Elements/Tabs:56 -msgid "Personal Groups" -msgstr "Personlige Grupper" - -#: html/User/Groups/index.html:51 html/User/Groups/index.html:61 -msgid "Personal groups" -msgstr "Personlige grupper" - -#: html/User/Elements/DelegateRights:58 -msgid "Personal groups:" -msgstr "Personlige grupper:" - -#: html/Admin/Users/Modify.html:180 html/User/Prefs.html:81 -msgid "Phone numbers" -msgstr "Telefonnummer" - -#: NOT FOUND IN SOURCE -msgid "Placeholder" -msgstr "Stedholder" - -#: NOT FOUND IN SOURCE -msgid "Pref" -msgstr "Pref" - -#: html/Elements/Header:93 html/Elements/Tabs:91 html/SelfService/Elements/Tabs:95 html/SelfService/Prefs.html:46 html/User/Prefs.html:46 html/User/Prefs.html:49 -msgid "Preferences" -msgstr "Instillinger" - -#: html/Admin/Users/MyRT.html:75 -#. ($pane, $UserObj->Name) -msgid "Preferences %1 for user %2 ." -msgstr "" - -#: html/Prefs/MyRT.html:141 -#. ($pane) -msgid "Preferences saved for %1." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Prefs" -msgstr "Pref" - -#: lib/RT/Action/Generic.pm:195 -msgid "Prepare Stubbed" -msgstr "Klargjør Forkortet" - -#: html/Helpers/CalPopup.html:56 html/Ticket/Elements/Tabs:84 -msgid "Prev" -msgstr "Forrige" - -#: html/Elements/TicketList:101 -msgid "Previous Page" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Previous page" -msgstr "Forrige side" - -#: NOT FOUND IN SOURCE -msgid "Pri" -msgstr "Pri" - -#: lib/RT/ACE_Overlay.pm:157 lib/RT/ACE_Overlay.pm:239 lib/RT/ACE_Overlay.pm:569 -#. ($args{'PrincipalId'}) -msgid "Principal %1 not found." -msgstr "Primær %1 ikke funnet." - -#: html/Search/Elements/PickBasics:147 html/Ticket/Create.html:181 html/Ticket/Elements/EditBasics:92 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1790 -msgid "Priority" -msgstr "Prioritet" - -#: html/Admin/Queues/Modify.html:86 -msgid "Priority starts at" -msgstr "Prioritet starter på" - -#: html/Search/Elements/EditSearches:50 -msgid "Privacy:" -msgstr "" - -#: etc/initialdata:25 -msgid "Privileged" -msgstr "Priviligert" - -#: html/Admin/Users/Modify.html:342 html/User/Prefs.html:231 -#. (loc_fuzzy($msg)) -msgid "Privileged status: %1" -msgstr "Priviligert status: %1" - -#: html/Admin/Users/index.html:102 -msgid "Privileged users" -msgstr "Priviligerte brukere" - -#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 -msgid "Pseudogroup for internal use" -msgstr "Pseduogruppe for intern bruk" - -#: html/Search/Build.html:121 -msgid "Query Builder" -msgstr "" - -#: html/Search/Elements/Chart:101 -msgid "Query:" -msgstr "" - -#: html/Elements/QueueSummary:48 html/Elements/QuickCreate:54 html/Search/Elements/PickBasics:71 html/SelfService/Create.html:54 html/Ticket/Create.html:62 html/Ticket/Elements/EditBasics:57 html/Ticket/Elements/ShowBasics:76 html/Tools/Reports/CreatedByDates.html:85 html/Tools/Reports/ResolvedByDates.html:86 html/Tools/Reports/ResolvedByOwner.html:66 html/User/Elements/DelegateRights:101 lib/RT/Tickets_Overlay.pm:1617 -msgid "Queue" -msgstr "Kø" - -#: html/Admin/Queues/CustomField.html:63 html/Admin/Queues/Scrip.html:61 html/Admin/Queues/Scrips.html:69 html/Admin/Queues/Templates.html:65 -#. ($Queue) -#. ($id) -msgid "Queue %1 not found" -msgstr "Køen %1 kunne ikke finnes" - -#: NOT FOUND IN SOURCE -msgid "Queue '%1' not found\\n" -msgstr "Køen '%1' ikke funnet\\n" - -#: NOT FOUND IN SOURCE -msgid "Queue Keyword Selections" -msgstr "Nøkkelordvalg for kø" - -#: html/Admin/Queues/Modify.html:64 -msgid "Queue Name" -msgstr "Kønavn" - -#: NOT FOUND IN SOURCE -msgid "Queue Scrips" -msgstr "Køscrip" - -#: lib/RT/Queue_Overlay.pm:365 -msgid "Queue already exists" -msgstr "Køen eksisterer allerede" - -#: lib/RT/Queue_Overlay.pm:374 lib/RT/Queue_Overlay.pm:380 -msgid "Queue could not be created" -msgstr "Køen kunne ikke opprettes" - -#: html/Ticket/Create.html:244 lib/t/regression/01ticket_link_searching.t:17 -msgid "Queue could not be loaded." -msgstr "Køen kunne ikke lastes." - -#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:384 lib/RT/StyleGuide.pod:809 -msgid "Queue created" -msgstr "Køen opprettet" - -#: NOT FOUND IN SOURCE -msgid "Queue is not specified." -msgstr "Køen er ikke oppgitt." - -#: html/SelfService/Display.html:126 lib/RT/CustomField_Overlay.pm:197 -msgid "Queue not found" -msgstr "Køen ikke funnet" - -#: html/Admin/Elements/Tabs:59 html/Admin/index.html:72 -msgid "Queues" -msgstr "Køer" - -#: html/Elements/MyAdminQueues:46 -msgid "Queues I administer" -msgstr "" - -#: html/Elements/MySupportQueues:46 -msgid "Queues I'm an AdminCc for" -msgstr "" - -#: html/Elements/Quicksearch:47 html/Prefs/Elements/Tabs:58 html/Prefs/Quicksearch.html:70 -msgid "Quick search" -msgstr "Raskt søk" - -#: html/Elements/QuickCreate:47 -msgid "Quick ticket creation" -msgstr "" - -#: html/Search/Results.html:81 -msgid "RSS" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "RT %1" -msgstr "RT %1" - -#: docs/design_docs/string-extraction-guide.txt:70 lib/RT/StyleGuide.pod:796 -#. ($RT::VERSION, $RT::rtname) -msgid "RT %1 for %2" -msgstr "RT %1 for %2" - -#: NOT FOUND IN SOURCE -msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." -msgstr "RT %1 fra <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." - -#: NOT FOUND IN SOURCE -msgid "RT %1. Copyright 1996-%1 Jesse Vincent <jesse\\@bestpractical.com>\\n" -msgstr "RT %1. Copyright 1996-%1 Jesse Vincent <jesse\\@bestpractical.com>\\n" - -#: NOT FOUND IN SOURCE -msgid "RT %1. Copyright 1996-2002 Jesse Vincent <jesse\\@bestpractical.com>\\n" -msgstr "RT %1. Copyright 1996-2002 Jesse Vincent <jesse\\@bestpractical.com>\\n" - -#: html/Admin/index.html:46 html/Admin/index.html:47 -msgid "RT Administration" -msgstr "RT-administrasjon" - -#: NOT FOUND IN SOURCE -msgid "RT Authentication error." -msgstr "RT Autentiseringsfeil." - -#: NOT FOUND IN SOURCE -msgid "RT Bounce: %1" -msgstr "RT Avvisning: %1" - -#: NOT FOUND IN SOURCE -msgid "RT Configuration error" -msgstr "RT Konfigurasjonsfeil" - -#: NOT FOUND IN SOURCE -msgid "RT Critical error. Message not recorded!" -msgstr "Kritisk RT feil. Meldingen ble ikke lagret!" - -#: html/Elements/Error:63 html/SelfService/Error.html:62 -msgid "RT Error" -msgstr "RT Feil" - -#: NOT FOUND IN SOURCE -msgid "RT Received mail (%1) from itself." -msgstr "RT Mottok mail (%1) fra seg selv." - -#: NOT FOUND IN SOURCE -msgid "RT Recieved mail (%1) from itself." -msgstr "RT Mottok mail (%1) fra seg selv." - -#: NOT FOUND IN SOURCE -msgid "RT Self Service / Closed Tickets" -msgstr "RT Selvbetjening / Lukkede Saker" - -#: html/Admin/Tools/Configuration.html:73 -msgid "RT Variables" -msgstr "" - -#: html/Admin/Elements/SystemTabs:71 html/Admin/Elements/UserTabs:67 html/Admin/Global/MyRT.html:1 html/Admin/Global/MyRT.html:12 html/Admin/Global/MyRT.html:4 html/Admin/Global/index.html:84 html/Admin/Users/MyRT.html:21 html/Prefs/MyRT.html:66 html/Prefs/MyRT.html:78 html/User/Elements/Tabs:65 html/index.html:1 html/index.html:75 -msgid "RT at a glance" -msgstr "RT oversikt" - -#: html/Admin/Users/MyRT.html:30 -#. ($UserObj->Name) -msgid "RT at a glance for the user %1" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:117 -msgid "RT can include content from another web service when showing this custom field." -msgstr "" - -#: html/Admin/CustomFields/Modify.html:106 -msgid "RT can make this custom field's values into hyperlinks to another service." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't authenticate you" -msgstr "RT kunne ikke autentisere deg" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't find requestor via its external database lookup" -msgstr "RT kunne ikke finne kunde via sitt eksterne databaseoppslag" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't find the queue: %1" -msgstr "RT kunne ikke finne køen: %1" - -#: html/Elements/SetupSessionCookie:100 -msgid "RT couldn't store your session." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't validate this PGP signature. \\n" -msgstr "RT kunne ikke validere denne PGP signaturen. \\n" - -#: html/Elements/Logo:49 html/Elements/PageLayout:172 -#. ($RT::rtname) -msgid "RT for %1" -msgstr "RT for %1" - -#: NOT FOUND IN SOURCE -msgid "RT for %1: %2" -msgstr "RT for %1: %2" - -#: NOT FOUND IN SOURCE -msgid "RT has proccessed your commands" -msgstr "RT har behandlet dine kommandoer" - -#: NOT FOUND IN SOURCE -msgid "RT is © Copyright 1996-%1 Jesse Vincent <jesse@bestpractical.com>. It is distributed under <a href=\"http://www.gnu.org/copyleft/gpl.html\">Version 2 of the GNU General Public License.</a>" -msgstr "RT er © Copyright 1996-%1 Jesse Vincent <jesse@bestpractical.com>. Den er distribuert under <a href=\"http://www.gnu.org/copyleft/gpl.html\">Version 2 of the GNU General Public License.</a>" - -#: NOT FOUND IN SOURCE -msgid "RT is © Copyright 1996-2002 Jesse Vincent <jesse@bestpractical.com>. It is distributed under <a href=\"http://www.gnu.org/copyleft/gpl.html\">Version 2 of the GNU General Public License.</a>" -msgstr "RT er © Copyright 1996-2002 Jesse Vincent <jesse@bestpractical.com>. Den er distribuert under <a href=\"http://www.gnu.org/copyleft/gpl.html\">Version 2 of the GNU General Public License.</a>" - -#: NOT FOUND IN SOURCE -msgid "RT thinks this message may be a bounce" -msgstr "RT tror denne meldingen kan være en returmail" - -#: html/Search/Simple.html:58 -msgid "RT will look for anything else you enter in ticket subjects." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "RT will process this message as if it were unsigned.\\n" -msgstr "RT vil behandle denne meldingen som om den var usignert" - -#: html/Admin/CustomFields/Modify.html:108 html/Admin/CustomFields/Modify.html:119 -msgid "RT will replace <tt>__id__</tt> and <tt>__CustomField__</tt> with the record id and custom field value, respectively" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "RT's email command mode requires PGP authentication. Either you didn't sign your message, or your signature could not be verified." -msgstr "RT's epost kommandomodus krever PGP autentisering. Meldingen din var enten ikke signert, eller signaturen din kunne ikke bekreftes." - -#: html/Admin/Users/Modify.html:79 html/User/Prefs.html:69 -msgid "Real Name" -msgstr "Ekte Navn" - -#: NOT FOUND IN SOURCE -msgid "RealName" -msgstr "EkteNavn" - -#: lib/RT/Transaction_Overlay.pm:725 -#. ($value) -msgid "Reference by %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:765 -#. ($value) -msgid "Reference by %1 deleted" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:722 -#. ($value) -msgid "Reference to %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:762 -#. ($value) -msgid "Reference to %1 deleted" -msgstr "" - -#: html/Elements/EditLinks:103 html/Elements/EditLinks:156 html/Elements/ShowLinks:92 html/Ticket/Create.html:225 html/Ticket/Elements/BulkLinks:72 -msgid "Referred to by" -msgstr "Referert til av" - -#: html/Elements/EditLinks:152 html/Elements/EditLinks:94 html/Elements/SelectLinkType:49 html/Elements/ShowLinks:82 html/Ticket/Create.html:224 html/Ticket/Elements/BulkLinks:68 -msgid "Refers to" -msgstr "Refererer til" - -#: NOT FOUND IN SOURCE -msgid "RefersTo" -msgstr "RefererTil" - -#: NOT FOUND IN SOURCE -msgid "Refine" -msgstr "Redefiner" - -#: NOT FOUND IN SOURCE -msgid "Refine search" -msgstr "Redefiner søket" - -#: html/Elements/Refresh:57 -#. ($value/60) -msgid "Refresh this page every %1 minutes." -msgstr "Last siden på nytt hvert %1 minutt." - -#: lib/RT/Transaction_Overlay.pm:811 -#. ($ticket->Subject) -msgid "Reminder '%1' added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:824 -#. ($ticket->Subject) -msgid "Reminder '%1' completed" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:817 -#. ($ticket->Subject) -msgid "Reminder '%1' reopened" -msgstr "" - -#: html/Ticket/Reminders.html:46 -#. ($Ticket->Id) -msgid "Reminder ticket #%1" -msgstr "" - -#: html/Elements/MyReminders:48 html/Ticket/Elements/ShowSummary:75 html/Ticket/Elements/Tabs:122 html/Ticket/Reminders.html:52 -msgid "Reminders" -msgstr "" - -#: html/Ticket/Reminders.html:50 -#. ($Ticket->Id) -msgid "Reminders for ticket #%1" -msgstr "" - -#: html/Search/Bulk.html:94 -msgid "Remove AdminCc" -msgstr "Fjern AdminCc" - -#: html/Search/Bulk.html:90 -msgid "Remove Cc" -msgstr "Fjern Cc" - -#: html/Search/Bulk.html:86 -msgid "Remove Requestor" -msgstr "Fjern Kunde" - -#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:147 -msgid "Reply" -msgstr "Svar" - -#: html/Admin/Queues/Modify.html:72 -msgid "Reply Address" -msgstr "" - -#: html/Search/Bulk.html:129 html/Ticket/ModifyAll.html:94 html/Ticket/Update.html:78 -msgid "Reply to requestors" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:110 -msgid "Reply to tickets" -msgstr "Svar på sak" - -#: lib/RT/Queue_Overlay.pm:110 -msgid "ReplyToTicket" -msgstr "SvarPåSak" - -#: html/Tools/Elements/Tabs:59 html/Tools/Reports/index.html:46 html/Tools/Reports/index.html:47 -msgid "Reports" -msgstr "" - -#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:111 -msgid "Requestor" -msgstr "Kunde" - -#: NOT FOUND IN SOURCE -msgid "Requestor email address" -msgstr "Kundens epostaddresse" - -#: NOT FOUND IN SOURCE -msgid "Requestor(s)" -msgstr "Kunde(r)" - -#: NOT FOUND IN SOURCE -msgid "RequestorAddresses" -msgstr "KundeAddresser" - -#: html/SelfService/Create.html:63 html/Ticket/Create.html:80 html/Ticket/Elements/EditPeople:69 html/Ticket/Elements/ShowPeople:52 -msgid "Requestors" -msgstr "Kunder" - -#: html/Admin/Queues/Modify.html:96 -msgid "Requests should be due in" -msgstr "Forespørsler skal være behandlet innen" - -#: lib/RT/Attribute_Overlay.pm:146 -#. ('Object') -msgid "Required parameter '%1' not specified" -msgstr "" - -#: html/Elements/Submit:83 -msgid "Reset" -msgstr "Reset" - -#: html/Admin/Users/MyRT.html:15 html/Prefs/MyRT.html:60 -msgid "Reset to default" -msgstr "" - -#: html/Admin/Users/Modify.html:183 html/User/Prefs.html:84 -msgid "Residence" -msgstr "Hjemme" - -#: html/Ticket/Elements/Tabs:156 -msgid "Resolve" -msgstr "Løs" - -#: html/Ticket/Update.html:156 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Resolve ticket #%1 (%2)" -msgstr "Løs saknr #%1 (%2)" - -#: etc/initialdata:323 html/Elements/SelectDateType:49 lib/RT/Ticket_Overlay.pm:1172 -msgid "Resolved" -msgstr "Løst" - -#: html/Tools/Reports/Elements/Tabs:55 -msgid "Resolved by owner" -msgstr "" - -#: html/Tools/Reports/Elements/Tabs:59 -msgid "Resolved in date range" -msgstr "" - -#: html/Tools/Reports/ResolvedByDates.html:52 -msgid "Resolved tickets in period, grouped by owner" -msgstr "" - -#: html/Tools/Reports/ResolvedByOwner.html:50 -msgid "Resolved tickets, grouped by owner" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Response to requestors" -msgstr "Svar til kunder" - -#: html/Elements/ListActions:46 html/Search/Elements/NewListActions:47 -msgid "Results" -msgstr "Resultater" - -#: NOT FOUND IN SOURCE -msgid "Results per page" -msgstr "Resultater per side" - -#: html/Admin/Users/Modify.html:126 html/User/Prefs.html:116 -msgid "Retype Password" -msgstr "Skriv Passord igjen" - -#: html/Search/Elements/EditSearches:61 -msgid "Revert" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" -msgstr "Rettighet %1 kunne ikke finnes for %2 %3 in scope %4 (%5)\\n" - -#: lib/RT/ACE_Overlay.pm:630 -msgid "Right Delegated" -msgstr "Rettighet Deligert" - -#: lib/RT/ACE_Overlay.pm:320 -msgid "Right Granted" -msgstr "Rettighet Tildelt" - -#: lib/RT/ACE_Overlay.pm:178 -msgid "Right Loaded" -msgstr "Rettighet lastet" - -#: lib/RT/ACE_Overlay.pm:695 lib/RT/ACE_Overlay.pm:716 -msgid "Right could not be revoked" -msgstr "Rettigheten kunne ikke trekkes tilbake" - -#: html/User/Delegation.html:85 -msgid "Right not found" -msgstr "Rettighet ikke funnet" - -#: lib/RT/ACE_Overlay.pm:560 lib/RT/ACE_Overlay.pm:655 -msgid "Right not loaded." -msgstr "Rettighet ikke lastet." - -#: lib/RT/ACE_Overlay.pm:712 -msgid "Right revoked" -msgstr "Rettighet fjernet" - -#: html/Admin/Elements/UserTabs:70 -msgid "Rights" -msgstr "Rettigheter" - -#: html/Admin/CustomFields/GroupRights.html:129 lib/RT/Interface/Web.pm:961 -#. ($object_type) -msgid "Rights could not be granted for %1" -msgstr "Rettigheter kunne ikke tildeles for %1" - -#: html/Admin/CustomFields/GroupRights.html:156 lib/RT/Interface/Web.pm:990 -#. ($object_type) -msgid "Rights could not be revoked for %1" -msgstr "Rettigheter kunne ikke trekkes tilbake for %1" - -#: html/Admin/Global/GroupRights.html:72 html/Admin/Queues/GroupRights.html:74 -msgid "Roles" -msgstr "Roller" - -#: NOT FOUND IN SOURCE -msgid "RootApproval" -msgstr "RootGodkjenning" - -#: html/Prefs/MyRT.html:72 -msgid "Rows per box" -msgstr "" - -#: html/Search/Elements/DisplayOptions:93 -msgid "Rows per page" -msgstr "" - -#: lib/RT/Date.pm:422 -msgid "Sat." -msgstr "Lør." - -#: html/Prefs/MyRT.html:72 html/Prefs/Quicksearch.html:64 html/Prefs/Search.html:69 html/Prefs/Search.html:69 html/Search/Elements/EditSearches:70 html/Widgets/SelectionBox:211 -msgid "Save" -msgstr "" - -#: html/Admin/Global/Template.html:67 html/Admin/Groups/Modify.html:88 html/Admin/Queues/Modify.html:111 html/Admin/Queues/People.html:126 html/Admin/Users/Modify.html:239 html/Prefs/Quicksearch.html:64 html/Prefs/SearchOptions.html:63 html/SelfService/Prefs.html:58 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:127 html/Ticket/ModifyDates.html:60 html/Ticket/ModifyLinks.html:61 html/Ticket/ModifyPeople.html:60 html/User/Groups/Modify.html:77 -msgid "Save Changes" -msgstr "Lagre Endringer" - -#: html/User/Prefs.html:181 -msgid "Save Preferences" -msgstr "" - -#: html/Ticket/Elements/PreviewScrips:131 -msgid "Save changes" -msgstr "Lage endringer" - -#: lib/RT/SavedSearch.pm:173 -#. ($name) -msgid "Saved search %1" -msgstr "" - -#: html/Admin/Elements/ListGlobalScrips:60 html/Admin/Global/Scrip.html:77 html/Admin/Queues/Scrip.html:84 -#. ($scrip->Id) -#. ($id) -msgid "Scrip #%1" -msgstr "Scrip #%1" - -#: lib/RT/Scrip_Overlay.pm:203 -msgid "Scrip Created" -msgstr "Scrip Opprettet" - -#: html/Admin/Elements/EditScrip:52 -msgid "Scrip Fields" -msgstr "" - -#: html/Admin/Elements/EditScrips:109 -msgid "Scrip deleted" -msgstr "Scrip slettet" - -#: html/Admin/Elements/QueueTabs:67 html/Admin/Elements/SystemTabs:54 html/Admin/Global/index.html:62 -msgid "Scrips" -msgstr "Scrip" - -#: NOT FOUND IN SOURCE -msgid "Scrips for %1\\n" -msgstr "Scrip for %1\\n" - -#: html/Admin/Queues/Scrips.html:55 -msgid "Scrips which apply to all queues" -msgstr "Scrip som gjelder for alle køer" - -#: html/Elements/SimpleSearch:48 html/Search/Simple.html:63 -msgid "Search" -msgstr "Søk" - -#: NOT FOUND IN SOURCE -msgid "Search Criteria" -msgstr "Søkekriteria" - -#: html/Prefs/SearchOptions.html:47 html/Prefs/SearchOptions.html:50 -msgid "Search Preferences" -msgstr "" - -#: lib/RT/SavedSearch.pm:115 -msgid "Search attribute load failure" -msgstr "" - -#: html/Approvals/Elements/PendingMyApproval:59 -msgid "Search for approvals" -msgstr "Søk etter godkjenninger" - -#: html/Search/Simple.html:67 -msgid "Search for tickets" -msgstr "" - -#: html/Search/Simple.html:55 -msgid "Search for tickets. Enter <strong>id</strong> numbers, <strong>queues</strong> by name, Owners by <strong>username</strong> and Requestors by <strong>email address</strong>. RT will look for anything else you enter in ticket bodies and attachments." -msgstr "" - -#: html/User/Elements/Tabs:62 -msgid "Search options" -msgstr "" - -#: html/Search/Chart.html:56 -#. ($PrimaryGroupBy) -msgid "Search results grouped by %1" -msgstr "" - -#: lib/RT/SavedSearch.pm:203 -#. ($msg) -msgid "Search update: %1" -msgstr "" - -#: html/Search/Simple.html:57 -msgid "Searching the full text of every ticket can take a long time, but if you need to do it, you can search for any word in full ticket history for any word by typing <b>fulltext:<i>word</i></b>." -msgstr "" - -#: bin/rt-crontool:265 -msgid "Security:" -msgstr "Sikkerhet:" - -#: html/Elements/ShowCustomFields:98 -msgid "See also:" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:105 -msgid "See custom fields" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:106 -msgid "See exact outgoing email messages and their recipeients" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:104 -msgid "See ticket private commentary" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:103 -msgid "See ticket summaries" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:105 -msgid "SeeCustomField" -msgstr "" - -#: lib/RT/Group_Overlay.pm:169 -msgid "SeeGroup" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:91 -msgid "SeeQueue" -msgstr "SeKø" - -#: html/Admin/CustomFields/index.html:46 html/Admin/CustomFields/index.html:49 -msgid "Select a Custom Field" -msgstr "" - -#: html/Admin/Groups/index.html:78 -msgid "Select a group" -msgstr "Velg en gruppe" - -#: html/Admin/Queues/index.html:54 -msgid "Select a queue" -msgstr "Velg en kø" - -#: html/SelfService/CreateTicketInQueue.html:48 -msgid "Select a queue for your new ticket" -msgstr "" - -#: html/Admin/Users/index.html:46 html/Admin/Users/index.html:49 html/Admin/Users/index.html:52 -msgid "Select a user" -msgstr "Velg en bruker" - -#: html/Admin/Elements/CustomFieldTabs:90 -msgid "Select custom field" -msgstr "Velg fleksifelt" - -#: html/Admin/Global/CustomFields/index.html:70 -msgid "Select custom fields for all user groups" -msgstr "" - -#: html/Admin/Global/CustomFields/index.html:65 -msgid "Select custom fields for all users" -msgstr "" - -#: html/Admin/Global/CustomFields/index.html:76 -msgid "Select custom fields for tickets in all queues" -msgstr "" - -#: html/Admin/Global/CustomFields/index.html:83 -msgid "Select custom fields for transactions on tickets in all queues" -msgstr "" - -#: html/Admin/Elements/GroupTabs:75 html/User/Elements/GroupTabs:71 -msgid "Select group" -msgstr "Velg gruppe" - -#: lib/RT/CustomField_Overlay.pm:59 -msgid "Select multiple values" -msgstr "Velg flere verdier" - -#: lib/RT/CustomField_Overlay.pm:60 -msgid "Select one value" -msgstr "Velg en verdi" - -#: html/Admin/Elements/QueueTabs:92 -msgid "Select queue" -msgstr "Velg kø" - -#: html/Prefs/Quicksearch.html:53 -msgid "Select queues to be displayed on the \"RT at a glance\" page" -msgstr "" - -#: html/Admin/Global/Scrip.html:59 html/Admin/Global/Scrips.html:57 html/Admin/Queues/Scrip.html:67 html/Admin/Queues/Scrips.html:73 -msgid "Select scrip" -msgstr "Velg scrip" - -#: html/Admin/Global/Template.html:78 html/Admin/Global/Templates.html:57 html/Admin/Queues/Template.html:76 html/Admin/Queues/Templates.html:68 -msgid "Select template" -msgstr "Velg mal" - -#: lib/RT/CustomField_Overlay.pm:61 -msgid "Select up to %1 values" -msgstr "" - -#: html/Admin/Elements/UserTabs:78 -msgid "Select user" -msgstr "Velg bruker" - -#: NOT FOUND IN SOURCE -msgid "SelectMultiple" -msgstr "VelgFlere" - -#: NOT FOUND IN SOURCE -msgid "SelectSingle" -msgstr "VelgEnkelt" - -#: html/Admin/Elements/EditCustomFields:58 -msgid "Selected Custom Fields" -msgstr "" - -#: html/Admin/CustomFields/Objects.html:59 -msgid "Selected objects" -msgstr "" - -#: html/Widgets/SelectionBox:209 -msgid "Selections modified. Please save your changes" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Self Service" -msgstr "Selvbetjening" - -#: etc/initialdata:121 -msgid "Send mail to all watchers" -msgstr "Send epost til alle overvåkere" - -#: etc/initialdata:117 -msgid "Send mail to all watchers as a \"comment\"" -msgstr "Send epost til alle overvåkere som \"kommentar\"" - -#: etc/initialdata:112 -msgid "Send mail to requestors and Ccs" -msgstr "Send epost til kunder og Cc" - -#: etc/initialdata:107 -msgid "Send mail to requestors and Ccs as a comment" -msgstr "Send epost til kunder og Cc som kommentar" - -#: etc/initialdata:78 -msgid "Sends a message to the requestors" -msgstr "Sender en melding til kundene" - -#: etc/initialdata:125 etc/initialdata:129 -msgid "Sends mail to explicitly listed Ccs and Bccs" -msgstr "Send epost til eksplisit oppgitte Ccer og Bccer" - -#: etc/initialdata:94 etc/upgrade/3.1.17/content:7 -msgid "Sends mail to the Ccs" -msgstr "" - -#: etc/initialdata:90 etc/upgrade/3.1.17/content:3 -msgid "Sends mail to the Ccs as a comment" -msgstr "" - -#: etc/initialdata:102 -msgid "Sends mail to the administrative Ccs" -msgstr "Send epost til Administrative Ccer" - -#: etc/initialdata:98 -msgid "Sends mail to the administrative Ccs as a comment" -msgstr "Sender epost til de administrative Ccene som kommentar" - -#: etc/initialdata:82 etc/initialdata:86 -msgid "Sends mail to the owner" -msgstr "Sender epost til eieren" - -#: lib/RT/Date.pm:449 -msgid "Sep." -msgstr "Sep." - -#: NOT FOUND IN SOURCE -msgid "September" -msgstr "September" - -#: html/Ticket/Elements/ShowTransaction:158 -msgid "Show" -msgstr "" - -#: html/Approvals/index.html:52 -msgid "Show Approvals" -msgstr "" - -#: html/Search/Elements/EditFormat:56 -msgid "Show Columns" -msgstr "" - -#: html/Ticket/Elements/Tabs:220 -msgid "Show Results" -msgstr "Vis Resultater" - -#: html/Approvals/Elements/PendingMyApproval:64 -msgid "Show approved requests" -msgstr "Vis godkjente forespørsler" - -#: html/Ticket/Create.html:316 -msgid "Show basics" -msgstr "Vis basisinfo" - -#: html/Approvals/Elements/PendingMyApproval:65 -msgid "Show denied requests" -msgstr "Vis avviste forespørsler" - -#: html/Ticket/Create.html:319 -msgid "Show details" -msgstr "Vis detaljer" - -#: html/Approvals/Elements/PendingMyApproval:63 -msgid "Show pending requests" -msgstr "Vis ventende forespørsler" - -#: html/Approvals/Elements/PendingMyApproval:66 -msgid "Show requests awaiting other approvals" -msgstr "Vis forespørsler som venter på andre godkjenninger" - -#: NOT FOUND IN SOURCE -msgid "Show ticket private commentary" -msgstr "Vis sakens private kommentarer" - -#: NOT FOUND IN SOURCE -msgid "Show ticket summaries" -msgstr "Vis sakssammendrag" - -#: lib/RT/Queue_Overlay.pm:93 -msgid "ShowACL" -msgstr "VisACL" - -#: lib/RT/System.pm:85 -msgid "ShowConfigTab" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:106 -msgid "ShowOutgoingEmail" -msgstr "" - -#: lib/RT/Group_Overlay.pm:168 -msgid "ShowSavedSearches" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:102 -msgid "ShowScrips" -msgstr "VisScrip" - -#: lib/RT/Queue_Overlay.pm:99 -msgid "ShowTemplate" -msgstr "VisMal" - -#: lib/RT/Queue_Overlay.pm:103 -msgid "ShowTicket" -msgstr "VisSak" - -#: lib/RT/Queue_Overlay.pm:104 -msgid "ShowTicketComments" -msgstr "VisSaksKommentarer" - -#: lib/RT/Queue_Overlay.pm:107 -msgid "Sign up as a ticket Requestor or ticket or queue Cc" -msgstr "Meld deg på som saksforespørrer eller sak/kø Cc" - -#: lib/RT/Queue_Overlay.pm:108 -msgid "Sign up as a ticket or queue AdminCc" -msgstr "Meld deg på som sak/kø AdminCc" - -#: html/Admin/Users/Modify.html:230 html/User/Prefs.html:168 -msgid "Signature" -msgstr "Signatur" - -#: NOT FOUND IN SOURCE -msgid "Signed in as %1" -msgstr "Logget inn som %1" - -#: html/Elements/Tabs:68 -msgid "Simple Search" -msgstr "" - -#: html/Admin/Elements/SelectSingleOrMultiple:47 -msgid "Single" -msgstr "Enkel" - -#: html/Search/Elements/EditFormat:75 -msgid "Size" -msgstr "" - -#: html/Elements/Header:89 -msgid "Skip Menu" -msgstr "Dropp Meny" - -#: html/Search/Elements/EditFormat:78 -msgid "Small" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:120 -msgid "Some browsers may only load content from the same domain as your RT server." -msgstr "" - -#: html/Admin/Elements/AddCustomFieldValue:49 html/Admin/Elements/EditCustomFieldValues:54 -msgid "Sort" -msgstr "Sorter" - -#: NOT FOUND IN SOURCE -msgid "Sort key" -msgstr "Sorter nøkkel" - -#: NOT FOUND IN SOURCE -msgid "Sort results by" -msgstr "Sorter resultater etter" - -#: NOT FOUND IN SOURCE -msgid "SortOrder" -msgstr "SorteringsRekkefølge" - -#: html/Admin/Elements/EditScrip:78 -msgid "Stage" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Stalled" -msgstr "Pauset" - -#: NOT FOUND IN SOURCE -msgid "Start page" -msgstr "Startside" - -#: html/Elements/SelectDateType:48 html/Ticket/Elements/EditDates:53 html/Ticket/Elements/ShowDates:56 -msgid "Started" -msgstr "Startet" - -#: NOT FOUND IN SOURCE -msgid "Started date '%1' could not be parsed" -msgstr "Startdato '%1' kunne ikke tolkes" - -#: html/Elements/SelectDateType:52 html/Ticket/Create.html:208 html/Ticket/Elements/EditDates:48 html/Ticket/Elements/ShowDates:52 -msgid "Starts" -msgstr "Starter" - -#: NOT FOUND IN SOURCE -msgid "Starts By" -msgstr "Starter Etter" - -#: NOT FOUND IN SOURCE -msgid "Starts date '%1' could not be parsed" -msgstr "Startdato '%1' kunne ikke tolkes" - -#: html/Admin/Users/Modify.html:162 html/User/Prefs.html:145 -msgid "State" -msgstr "Stat" - -#: html/Search/Elements/PickBasics:87 html/SelfService/Update.html:57 html/Ticket/Create.html:66 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:52 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:1651 -msgid "Status" -msgstr "Status" - -#: etc/initialdata:309 -msgid "Status Change" -msgstr "Statusendring" - -#: NOT FOUND IN SOURCE -msgid "Status changed from %1 to %2" -msgstr "Status endret fra %1 til %2" - -#: NOT FOUND IN SOURCE -msgid "StatusChange" -msgstr "EndreStatus" - -#: html/Ticket/Elements/Tabs:178 -msgid "Steal" -msgstr "Stjel" - -#: lib/RT/Queue_Overlay.pm:117 -msgid "Steal tickets" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:117 -msgid "StealTicket" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:678 -#. ($Old->Name) -msgid "Stolen from %1" -msgstr "Stjålet fra %1" - -#: NOT FOUND IN SOURCE -msgid "Stolen from %1 " -msgstr "Stjålet fra %1 " - -#: html/Search/Elements/EditFormat:81 -msgid "Style" -msgstr "" - -#: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:132 html/SelfService/Create.html:79 html/SelfService/Update.html:65 html/Ticket/Create.html:108 html/Ticket/Elements/EditBasics:48 html/Ticket/Elements/Reminders:125 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:82 lib/RT/Ticket_Overlay.pm:1162 lib/RT/Tickets_Overlay.pm:1733 -msgid "Subject" -msgstr "Emne" - -#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm:700 -#. ($self->Data) -msgid "Subject changed to %1" -msgstr "Endre emne til %1" - -#: html/Elements/Submit:75 -msgid "Submit" -msgstr "Oppdater" - -#: NOT FOUND IN SOURCE -msgid "Submit Workflow" -msgstr "Send Arbeidsflyt" - -#: lib/RT/Group_Overlay.pm:774 -msgid "Succeeded" -msgstr "Lykkes" - -#: lib/RT/Date.pm:423 -msgid "Sun." -msgstr "Søn." - -#: lib/RT/System.pm:75 -msgid "SuperUser" -msgstr "SuperBruker" - -#: html/User/Elements/DelegateRights:98 -msgid "System" -msgstr "System" - -#: html/Admin/Elements/ToolTabs:54 html/Admin/Tools/Configuration.html:48 -msgid "System Configuration" -msgstr "" - -#: html/Admin/CustomFields/GroupRights.html:128 html/Admin/CustomFields/GroupRights.html:155 html/Admin/CustomFields/UserRights.html:128 html/Admin/CustomFields/UserRights.html:98 html/Admin/Elements/SelectRights:106 lib/RT/ACE_Overlay.pm:584 lib/RT/Interface/Web.pm:960 lib/RT/Interface/Web.pm:989 -msgid "System Error" -msgstr "Systemfeil" - -#: NOT FOUND IN SOURCE -msgid "System Error. Right not granted." -msgstr "Systemfeil. Rettighet ikke tildelt." - -#: NOT FOUND IN SOURCE -msgid "System Error. right not granted" -msgstr "Systemfeil. rettigheter ikke tildelt" - -#: lib/RT/Transaction_Overlay.pm:224 lib/RT/Transaction_Overlay.pm:230 -#. ($msg) -msgid "System Error: %1" -msgstr "" - -#: html/Admin/Tools/index.html:47 -msgid "System Tools" -msgstr "" - -#: lib/RT/ACE_Overlay.pm:633 -msgid "System error. Right not delegated." -msgstr "Systemfeil. Rettighet ikke tildelt." - -#: lib/RT/ACE_Overlay.pm:163 lib/RT/ACE_Overlay.pm:228 lib/RT/ACE_Overlay.pm:323 lib/RT/ACE_Overlay.pm:920 -msgid "System error. Right not granted." -msgstr "Systemfeil. Rettighet ikke tildelt." - -#: NOT FOUND IN SOURCE -msgid "System error. Unable to grant rights." -msgstr "Systemfeil. Kunne ikke tildele rettigheter." - -#: html/Admin/CustomFields/GroupRights.html:58 html/Admin/Global/GroupRights.html:56 html/Admin/Groups/GroupRights.html:58 html/Admin/Queues/GroupRights.html:57 -msgid "System groups" -msgstr "Systemgrupper" - -#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 -msgid "SystemRolegroup for internal use" -msgstr "SystemRollegruppe for intern bruk" - -#: lib/RT/CurrentUser.pm:357 -msgid "TEST_STRING" -msgstr "TEST_STRENG" - -#: etc/initialdata:603 html/Search/Elements/EditFormat:72 html/Ticket/Elements/Tabs:170 -msgid "Take" -msgstr "Ta" - -#: lib/RT/Queue_Overlay.pm:115 -msgid "Take tickets" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:115 -msgid "TakeTicket" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:663 -msgid "Taken" -msgstr "Tatt" - -#: html/Admin/Elements/EditScrip:71 html/Tools/Offline.html:78 -msgid "Template" -msgstr "Mal" - -#: html/Admin/Global/Template.html:112 html/Admin/Queues/Template.html:113 -#. ($TemplateObj->Id()) -msgid "Template #%1" -msgstr "Mal #%1" - -#: html/Admin/Elements/EditTemplates:110 -msgid "Template deleted" -msgstr "Mal slettet" - -#: lib/RT/Scrip_Overlay.pm:176 -msgid "Template is mandatory argument" -msgstr "" - -#: lib/RT/Scrip_Overlay.pm:180 -msgid "Template not found" -msgstr "Kunne ikke finne mal" - -#: NOT FOUND IN SOURCE -msgid "Template not found\\n" -msgstr "Kunne ikke finne mal\\n" - -#: lib/RT/Template_Overlay.pm:343 -msgid "Template parsed" -msgstr "Mal tolket" - -#: lib/RT/Template_Overlay.pm:391 -msgid "Template parsing error" -msgstr "" - -#: html/Admin/Elements/QueueTabs:70 html/Admin/Elements/SystemTabs:57 html/Admin/Global/index.html:66 -msgid "Templates" -msgstr "Maler" - -#: NOT FOUND IN SOURCE -msgid "Templates for %1\\n" -msgstr "Maler for %1\\n" - -#: lib/RT/CustomField_Overlay.pm:943 lib/RT/Record.pm:945 -msgid "That is already the current value" -msgstr "Verdien er allerede satt" - -#: lib/RT/CustomField_Overlay.pm:412 -msgid "That is not a value for this custom field" -msgstr "Det er ikke en verdi for dette fleksifeltet" - -#: lib/RT/Ticket_Overlay.pm:1994 -msgid "That is the same value" -msgstr "Det er den samme verdien" - -#: lib/RT/ACE_Overlay.pm:305 lib/RT/ACE_Overlay.pm:614 -msgid "That principal already has that right" -msgstr "Den primæren har allerede den rettigheten" - -#: lib/RT/Queue_Overlay.pm:753 -#. ($args{'Type'}) -msgid "That principal is already a %1 for this queue" -msgstr "Den primæren er allerede en %1 for denne køen" - -#: lib/RT/Ticket_Overlay.pm:1435 -#. ($self->loc($args{'Type'})) -msgid "That principal is already a %1 for this ticket" -msgstr "Den primæren er allerede en %1 for denne køen" - -#: lib/RT/Queue_Overlay.pm:852 -#. ($args{'Type'}) -msgid "That principal is not a %1 for this queue" -msgstr "Den primæren er ikke en %1 for denne køen" - -#: NOT FOUND IN SOURCE -msgid "That principal is not a %1 for this ticket" -msgstr "Den primæren er ikke en %1 for denne saken" - -#: lib/RT/Ticket_Overlay.pm:1990 -msgid "That queue does not exist" -msgstr "Den køen eksisterer ikke" - -#: lib/RT/Ticket_Overlay.pm:3233 -msgid "That ticket has unresolved dependencies" -msgstr "Denne saken har uløste avhengigheter" - -#: NOT FOUND IN SOURCE -msgid "That user already has that right" -msgstr "Den brukeren har allerede den rettigheten" - -#: lib/RT/Action/CreateTickets.pm:710 lib/RT/Ticket_Overlay.pm:3037 -msgid "That user already owns that ticket" -msgstr "Den brukeren eier allerede den saken" - -#: lib/RT/Ticket_Overlay.pm:3012 -msgid "That user does not exist" -msgstr "Den brukeren finnes ikke" - -#: lib/RT/User_Overlay.pm:389 -msgid "That user is already privileged" -msgstr "Den brukeren er allerede priviligert" - -#: lib/RT/User_Overlay.pm:410 -msgid "That user is already unprivileged" -msgstr "Den brukeren er allerede upriviligert" - -#: lib/RT/User_Overlay.pm:402 -msgid "That user is now privileged" -msgstr "Denne brukeren er nå priviligert" - -#: lib/RT/User_Overlay.pm:423 -msgid "That user is now unprivileged" -msgstr "Dette brukeren er nå upriviligert" - -#: NOT FOUND IN SOURCE -msgid "That user is now unprivilegedileged" -msgstr "Den brukeren er allerede upriviligert" - -#: lib/RT/Ticket_Overlay.pm:3031 -msgid "That user may not own tickets in that queue" -msgstr "Den brukeren kan ikke eie saker i den køen" - -#: lib/RT/Link_Overlay.pm:233 -msgid "That's not a numerical id" -msgstr "Dette er ikke en numerisk id" - -#: html/SelfService/Display.html:53 html/Ticket/Create.html:177 html/Ticket/Elements/ShowSummary:49 -msgid "The Basics" -msgstr "Detaljer" - -#: lib/RT/ACE_Overlay.pm:112 -msgid "The CC of a ticket" -msgstr "CCen til en sak" - -#: lib/RT/ACE_Overlay.pm:113 -msgid "The administrative CC of a ticket" -msgstr "Administrative CCer for en sak" - -#: NOT FOUND IN SOURCE -msgid "The comment has been recorded" -msgstr "Kommentarer er lagret" - -#: bin/rt-crontool:275 -msgid "The following command will find all active tickets in the queue 'general' and set their priority to 99 if they haven't been touched in 4 hours:" -msgstr "De følgende kommandoene vil finne alle aktive saker i køen 'general' og sette deres prioritet til 99 hvis de ikke har blitt rørt de siste 4 timene:" - -#: NOT FOUND IN SOURCE -msgid "The following commands were not proccessed:\\n\\n" -msgstr "De følgende kommandoene ble ikke behandlet:\\n\\n" - -#: lib/RT/Record.pm:948 -msgid "The new value has been set." -msgstr "Den nye verdien har blitt satt." - -#: lib/RT/ACE_Overlay.pm:110 -msgid "The owner of a ticket" -msgstr "Eieren av en sak" - -#: lib/RT/ACE_Overlay.pm:111 -msgid "The requestor of a ticket" -msgstr "Forespørren av en sak" - -#: html/Admin/Elements/EditUserComments:47 -msgid "These comments aren't generally visible to the user" -msgstr "Disse kommentarene er generelt ikke synlig for brukeren" - -#: lib/RT/CustomField_Overlay.pm:978 -msgid "This custom field does not apply to that object" -msgstr "" - -#: html/Admin/Tools/Configuration.html:50 -msgid "This feature is only available to system administrators" -msgstr "" - -#: html/Ticket/Elements/PreviewScrips:96 -msgid "This message will be sent to..." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "This ticket %1 %2 (%3)\\n" -msgstr "Denne saken %1 %2 (%3)\\n" - -#: bin/rt-crontool:266 -msgid "This tool allows the user to run arbitrary perl modules from within RT." -msgstr "Dette verktøyet tillater brukeren å kjøre perlmoduler fra inni RT." - -#: lib/RT/Transaction_Overlay.pm:301 -msgid "This transaction appears to have no content" -msgstr "Denne transaksjonen ser ikke ut til å ha noe innhold" - -#: html/Ticket/Elements/ShowRequestor:70 -#. ($rows) -msgid "This user's %1 highest priority tickets" -msgstr "Denne brukerens %1 høyst prioriterte saker" - -#: NOT FOUND IN SOURCE -msgid "This user's 25 highest priority tickets" -msgstr "Denne brukerens 23 høys prioriterte saker" - -#: lib/RT/Date.pm:420 -msgid "Thu." -msgstr "Tor." - -#: NOT FOUND IN SOURCE -msgid "Ticket" -msgstr "Sak" - -#: NOT FOUND IN SOURCE -msgid "Ticket # %1 %2" -msgstr "Sak # %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Ticket # %1 Jumbo update: %2" -msgstr "Sak $ %1 Jumbo oppdater: %2" - -#: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket #%1 Jumbo update: %2" -msgstr "Sak #%1 Jumbo oppdatering: %2" - -#: html/Approvals/Elements/ShowDependency:67 -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Ticket #%1: %2" -msgstr "Sak #%1: %2" - -#: lib/RT/Action/CreateTickets.pm:1350 lib/RT/Action/CreateTickets.pm:1359 lib/RT/Action/CreateTickets.pm:605 lib/RT/Action/CreateTickets.pm:729 lib/RT/Action/CreateTickets.pm:741 -#. ($T::Tickets{$template_id}->Id) -#. ($T::Tickets{$template_id}->id) -#. ($ticket->Id) -msgid "Ticket %1" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:755 lib/RT/Ticket_Overlay.pm:775 -#. ($self->Id, $QueueObj->Name) -msgid "Ticket %1 created in queue '%2'" -msgstr "Sak %1 opprettet i '%2' køen" - -#: NOT FOUND IN SOURCE -msgid "Ticket %1 loaded\\n" -msgstr "Sak %1 lastet\\n" - -#: html/Search/Bulk.html:377 -#. ($Ticket->Id, $_) -msgid "Ticket %1: %2" -msgstr "Sak %1: %2" - -#: html/Admin/Elements/QueueTabs:74 -msgid "Ticket Custom Fields" -msgstr "" - -#: html/Ticket/History.html:46 html/Ticket/History.html:49 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket History # %1 %2" -msgstr "Sakshistorikk # %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Ticket Id" -msgstr "SaksId" - -#: etc/initialdata:324 -msgid "Ticket Resolved" -msgstr "Løst Sak" - -#: html/Admin/Elements/GlobalCustomFieldTabs:69 html/Admin/Global/CustomFields/index.html:81 lib/RT/CustomField_Overlay.pm:1207 -msgid "Ticket Transactions" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Ticket attachment" -msgstr "Saks-vedlegg" - -#: lib/RT/Tickets_Overlay.pm:1920 -msgid "Ticket content" -msgstr "Saks-innhold" - -#: lib/RT/Tickets_Overlay.pm:1969 -msgid "Ticket content type" -msgstr "Sakens innholdstype" - -#: lib/RT/Ticket_Overlay.pm:603 lib/RT/Ticket_Overlay.pm:617 lib/RT/Ticket_Overlay.pm:628 lib/RT/Ticket_Overlay.pm:763 -msgid "Ticket could not be created due to an internal error" -msgstr "Saken kunne ikke opprettes på grunn av en intern feil" - -#: NOT FOUND IN SOURCE -msgid "Ticket created" -msgstr "Sak opprettet" - -#: NOT FOUND IN SOURCE -msgid "Ticket creation failed" -msgstr "Saksopprettelse feilet" - -#: NOT FOUND IN SOURCE -msgid "Ticket deleted" -msgstr "Sak slettet" - -#: NOT FOUND IN SOURCE -msgid "Ticket id not found" -msgstr "Saksid ikke funnet" - -#: NOT FOUND IN SOURCE -msgid "Ticket killed" -msgstr "Sak drept" - -#: html/Ticket/Display.html:55 -msgid "Ticket metadata" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Ticket not found" -msgstr "Sak ikke funnet" - -#: etc/initialdata:310 -msgid "Ticket status changed" -msgstr "Saksstatus endret" - -#: NOT FOUND IN SOURCE -msgid "Ticket watchers" -msgstr "Saksovervåkere" - -#: lib/RT/Search/FromSQL.pm:82 -#. (ref $self) -msgid "TicketSQL search module" -msgstr "" - -#: html/Admin/Elements/GlobalCustomFieldTabs:64 html/Admin/Global/CustomFields/index.html:75 html/Elements/Tabs:71 html/Search/Elements/Chart:109 lib/RT/CustomField_Overlay.pm:1206 -msgid "Tickets" -msgstr "Saker" - -#: NOT FOUND IN SOURCE -msgid "Tickets %1 %2" -msgstr "Saker %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Tickets %1 by %2" -msgstr "Saker %1 av %2" - -#: html/Tools/Reports/CreatedByDates.html:86 -msgid "Tickets created after" -msgstr "" - -#: html/Tools/Reports/CreatedByDates.html:88 -msgid "Tickets created before" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Tickets from %1" -msgstr "Saker fra %1" - -#: html/Tools/Reports/ResolvedByDates.html:87 -msgid "Tickets resolved after" -msgstr "" - -#: html/Tools/Reports/ResolvedByDates.html:89 -msgid "Tickets resolved before" -msgstr "" - -#: html/Approvals/Elements/ShowDependency:48 -msgid "Tickets which depend on this approval:" -msgstr "Saker som er avhengige av denne godkjennelsen:" - -#: html/Search/Elements/PickBasics:134 html/Ticket/Create.html:183 html/Ticket/Elements/EditBasics:72 -msgid "Time Estimated" -msgstr "" - -#: html/Search/Elements/PickBasics:135 html/Ticket/Create.html:196 html/Ticket/Elements/EditBasics:85 -msgid "Time Left" -msgstr "Tid Igjen" - -#: html/Search/Elements/PickBasics:133 html/Ticket/Create.html:189 html/Ticket/Elements/EditBasics:78 -msgid "Time Worked" -msgstr "Arbeidstid" - -#: lib/RT/Tickets_Overlay.pm:1891 -msgid "Time left" -msgstr "Tid igjen" - -#: html/Elements/Footer:51 -msgid "Time to display" -msgstr "Tid å vise" - -#: lib/RT/Tickets_Overlay.pm:1866 -msgid "Time worked" -msgstr "Arbeidstid" - -#: NOT FOUND IN SOURCE -msgid "TimeLeft" -msgstr "TidIgjen" - -#: lib/RT/Ticket_Overlay.pm:1167 -msgid "TimeWorked" -msgstr "ArbeidsTid" - -#: html/Search/Elements/EditFormat:74 -msgid "Title" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "To generate a diff of this commit:" -msgstr "For å generere en diff av denne bekreftelsen:" - -#: NOT FOUND IN SOURCE -msgid "To generate a diff of this commit:\\n" -msgstr "For å genere en diff av denne bekreftelsen" - -#: html/Elements/Footer:62 -#. ('<a href="mailto:sales@bestpractical.com">sales@bestpractical.com</a>') -msgid "To inquire about support, training, custom development or licensing, please contact %1." -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1170 -msgid "Told" -msgstr "Fortalt" - -#: html/Admin/Elements/Tabs:68 html/Admin/index.html:88 html/Elements/Tabs:74 html/Tools/index.html:46 html/Tools/index.html:49 -msgid "Tools" -msgstr "" - -#: html/Search/Elements/Chart:130 -msgid "Total" -msgstr "" - -#: etc/initialdata:252 -msgid "Transaction" -msgstr "Transaksjon" - -#: lib/RT/Transaction_Overlay.pm:805 -#. ($self->Data) -msgid "Transaction %1 purged" -msgstr "Transaksjon %1 slettet" - -#: lib/RT/Transaction_Overlay.pm:183 -msgid "Transaction Created" -msgstr "Transaksjon Opprettet" - -#: html/Admin/Elements/QueueTabs:78 -msgid "Transaction Custom Fields" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Transaction->Create couldn't, as you didn't specify a ticket id" -msgstr "Transaction->Create kunne ikke, siden du ikke spesifiserte en saksid" - -#: lib/RT/Transaction_Overlay.pm:128 -msgid "Transaction->Create couldn't, as you didn't specify an object type and id" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:870 -msgid "Transactions are immutable" -msgstr "Transaksjoner er låst" - -#: NOT FOUND IN SOURCE -msgid "Trying to delete a right: %1" -msgstr "Prøver å slette en rettighet: %1" - -#: lib/RT/Date.pm:418 -msgid "Tue." -msgstr "Tir." - -#: html/Admin/CustomFields/Modify.html:66 html/Admin/Elements/EditCustomField:65 html/Ticket/Elements/AddWatchers:54 html/Ticket/Elements/AddWatchers:65 html/Ticket/Elements/AddWatchers:75 lib/RT/Ticket_Overlay.pm:1168 lib/RT/Tickets_Overlay.pm:1705 -msgid "Type" -msgstr "Type" - -#: lib/RT/ScripCondition_Overlay.pm:128 -msgid "Unimplemented" -msgstr "Uimplementert" - -#: html/Admin/Users/Modify.html:89 -msgid "Unix login" -msgstr "Unix login" - -#: NOT FOUND IN SOURCE -msgid "UnixUsername" -msgstr "UnixBrukerNavn" - -#: lib/RT/Attachment_Overlay.pm:289 lib/RT/Record.pm:861 -#. ($self->ContentEncoding) -#. ($ContentEncoding) -msgid "Unknown ContentEncoding %1" -msgstr "Ukjent InnholdsFormatering %1" - -#: html/Search/Build.html:455 lib/RT/Report/Tickets.pm:410 -msgid "Unknown field: $key" -msgstr "" - -#: html/Elements/SelectResultsPerPage:58 -msgid "Unlimited" -msgstr "Ubegrenset" - -#: html/Search/Elements/SelectSearchesForObjects:64 -msgid "Unnamed search" -msgstr "" - -#: etc/initialdata:32 -msgid "Unprivileged" -msgstr "Upriviligert" - -#: html/Admin/Elements/EditCustomFields:60 -msgid "Unselected Custom Fields" -msgstr "" - -#: html/Admin/CustomFields/Objects.html:61 -msgid "Unselected objects" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:659 -msgid "Untaken" -msgstr "Ikke tatt" - -#: html/Admin/Elements/EditScrip:128 html/Elements/RT__Ticket/ColumnMap:302 html/Search/Bulk.html:193 html/Search/Bulk.html:75 -msgid "Update" -msgstr "Oppdater" - -#: NOT FOUND IN SOURCE -msgid "Update ID" -msgstr "Oppdater ID" - -#: html/Ticket/Update.html:135 -msgid "Update Ticket" -msgstr "" - -#: html/Search/Bulk.html:126 html/Ticket/ModifyAll.html:87 html/Ticket/Update.html:72 -msgid "Update Type" -msgstr "Oppdater Type" - -#: NOT FOUND IN SOURCE -msgid "Update all these tickets at once" -msgstr "Oppdater alle disse sakene samtidig" - -#: NOT FOUND IN SOURCE -msgid "Update email" -msgstr "Oppdater epost" - -#: html/Search/Bulk.html:200 html/Search/Results.html:78 -msgid "Update multiple tickets" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Update name" -msgstr "Oppdater navn" - -#: lib/RT/Action/CreateTickets.pm:750 lib/RT/Interface/Web.pm:584 -msgid "Update not recorded." -msgstr "Oppdatering ikke lagret." - -#: NOT FOUND IN SOURCE -msgid "Update selected tickets" -msgstr "Oppdater valgte saker" - -#: NOT FOUND IN SOURCE -msgid "Update signature" -msgstr "Oppdater signatur" - -#: html/Ticket/ModifyAll.html:84 -msgid "Update ticket" -msgstr "Oppdater sak" - -#: NOT FOUND IN SOURCE -msgid "Update ticket # %1" -msgstr "Ooppdater sak # %1" - -#: html/SelfService/Update.html:112 html/SelfService/Update.html:47 -#. ($Ticket->id) -msgid "Update ticket #%1" -msgstr "Oppdater sak #%1" - -#: html/Ticket/Update.html:158 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Update ticket #%1 (%2)" -msgstr "Oppdater sak #%1 (%2)" - -#: lib/RT/Action/CreateTickets.pm:748 lib/RT/Interface/Web.pm:583 -msgid "Update type was neither correspondence nor comment." -msgstr "Oppdateringstype var verken korrespondanse eller kommentar." - -#: html/Elements/SelectDateType:54 html/Ticket/Elements/ShowDates:72 lib/RT/CustomField_Overlay.pm:1284 lib/RT/Ticket_Overlay.pm:1171 -msgid "Updated" -msgstr "Oppdatert" - -#: html/Tools/Offline.html:93 -msgid "Upload" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:84 -msgid "Upload multiple files" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:79 -msgid "Upload multiple images" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:85 -msgid "Upload one file" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:80 -msgid "Upload one image" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:86 -msgid "Upload up to %1 files" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:81 -msgid "Upload up to %1 images" -msgstr "" - -#: html/Tools/Offline.html:93 -msgid "Upload your changes" -msgstr "" - -#: html/Admin/index.html:90 -msgid "Use other RT administrative tools" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "User %1 %2: %3\\n" -msgstr "Bruker %1 %2: %3\\n" - -#: NOT FOUND IN SOURCE -msgid "User %1 Password: %2\\n" -msgstr "Bruker %1 Passord: %2\\n" - -#: lib/RT/Ticket_Overlay.pm:506 -#. ($args{'Owner'}) -msgid "User '%1' could not be found." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "User '%1' not found" -msgstr "Brukeren '%1' ble ikke funnet" - -#: NOT FOUND IN SOURCE -msgid "User '%1' not found\\n" -msgstr "Brukeren '%1' ble ikke funnet" - -#: etc/initialdata:132 etc/initialdata:206 -msgid "User Defined" -msgstr "Bruker Definert" - -#: html/Admin/Elements/EditScrip:93 -msgid "User Defined conditions and actions" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "User ID" -msgstr "BrukerID" - -#: NOT FOUND IN SOURCE -msgid "User Id" -msgstr "BrukerId" - -#: html/Admin/Elements/CustomFieldTabs:72 html/Admin/Elements/GroupTabs:68 html/Admin/Elements/QueueTabs:85 html/Admin/Elements/SystemTabs:68 html/Admin/Global/index.html:80 -msgid "User Rights" -msgstr "Brukerrettigheter" - -#: html/Admin/Users/Modify.html:301 -#. ($msg) -msgid "User could not be created: %1" -msgstr "Bruker kunne ikke opprettes: %1" - -#: lib/RT/User_Overlay.pm:330 -msgid "User created" -msgstr "Bruker opprettet" - -#: html/Admin/CustomFields/GroupRights.html:74 html/Admin/Global/GroupRights.html:88 html/Admin/Groups/GroupRights.html:75 html/Admin/Queues/GroupRights.html:90 -msgid "User defined groups" -msgstr "Brukerdefinerte grupper" - -#: lib/RT/User_Overlay.pm:592 lib/RT/User_Overlay.pm:612 -msgid "User loaded" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "User notified" -msgstr "Bruker informert" - -#: NOT FOUND IN SOURCE -msgid "User view" -msgstr "Brukervisning" - -#: html/Admin/Groups/index.html:103 -msgid "User-defined groups" -msgstr "" - -#: html/Admin/Users/Modify.html:69 html/Elements/Login:90 html/Ticket/Elements/AddWatchers:56 -msgid "Username" -msgstr "Brukernavn" - -#: html/Admin/Elements/GlobalCustomFieldTabs:55 html/Admin/Elements/SelectNewGroupMembers:47 html/Admin/Elements/Tabs:53 html/Admin/Global/CustomFields/index.html:64 html/Admin/Groups/Members.html:76 html/Admin/Queues/People.html:89 html/Admin/index.html:62 html/User/Groups/Members.html:79 lib/RT/CustomField_Overlay.pm:1208 -msgid "Users" -msgstr "Brukere" - -#: html/Admin/Users/index.html:85 -msgid "Users matching search criteria" -msgstr "Brukere som treffer søkekriteria" - -#: bin/rt-crontool:134 -#. ($transaction->id) -msgid "Using transaction #%1..." -msgstr "" - -#: lib/RT/Tickets_Overlay_SQL.pm:528 -msgid "Valid Query" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:80 -msgid "Validation" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "ValueOfQueue" -msgstr "KøVerdi" - -#: html/Admin/CustomFields/Modify.html:130 html/Admin/Elements/EditCustomField:78 -msgid "Values" -msgstr "Verdier" - -#: NOT FOUND IN SOURCE -msgid "VrijevormEnkele" -msgstr "VrijevormEnkele" - -#: lib/RT/Queue_Overlay.pm:107 -msgid "Watch" -msgstr "Overvåk" - -#: lib/RT/Queue_Overlay.pm:108 -msgid "WatchAsAdminCc" -msgstr "OvervåkSomAdminCc" - -#: NOT FOUND IN SOURCE -msgid "Watcher loaded" -msgstr "Overvåker lastet" - -#: html/Admin/Elements/QueueTabs:63 -msgid "Watchers" -msgstr "Overvåkere" - -#: NOT FOUND IN SOURCE -msgid "WebEncoding" -msgstr "WebFormatering" - -#: lib/RT/Date.pm:419 -msgid "Wed." -msgstr "Ons." - -#: html/Tools/MyDay.html:75 -msgid "What I did today" -msgstr "" - -#: etc/initialdata:521 -msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" -msgstr "Når en sak har blitt godkjent av alle godkjennere, legg til korrespondanse for den opprinnelige saken" - -#: etc/initialdata:485 -msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" -msgstr "Når en sak har blitt godkjent av en godkjenner, legg til korrespondanse til den orginale saken" - -#: etc/initialdata:146 -msgid "When a ticket is created" -msgstr "Når er sak er opprettet" - -#: etc/initialdata:418 -msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" -msgstr "Når er godkjennelsessak blir opprettet, gi melding til Eier og AdminCc om saken som venter på deres godkjenning" - -#: etc/initialdata:151 -msgid "When anything happens" -msgstr "Når noe skjer" - -#: etc/initialdata:199 -msgid "Whenever a ticket is resolved" -msgstr "Når en sak er løst" - -#: etc/initialdata:185 -msgid "Whenever a ticket's owner changes" -msgstr "Når en sak får ny eier" - -#: etc/initialdata:178 etc/upgrade/3.1.17/content:16 -msgid "Whenever a ticket's priority changes" -msgstr "" - -#: etc/initialdata:193 -msgid "Whenever a ticket's queue changes" -msgstr "Når en sak flyttes til en ny kø" - -#: etc/initialdata:170 -msgid "Whenever a ticket's status changes" -msgstr "Når en saks status endres" - -#: etc/initialdata:207 -msgid "Whenever a user-defined condition occurs" -msgstr "Når brukerdefinerte forhold intreffer" - -#: etc/initialdata:164 -msgid "Whenever comments come in" -msgstr "Når kommentarer kommer inn" - -#: etc/initialdata:157 -msgid "Whenever correspondence comes in" -msgstr "Når korrespondanse kommer inn" - -#: html/Admin/Users/Modify.html:188 html/User/Prefs.html:88 -msgid "Work" -msgstr "Arbeid" - -#: html/Search/Results.html:82 -msgid "Work offline" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "WorkPhone" -msgstr "ArbeidsTelefon" - -#: html/Ticket/Elements/ShowBasics:63 html/Ticket/Update.html:64 -msgid "Worked" -msgstr "Arbeidet" - -#: lib/RT/Ticket_Overlay.pm:3140 -msgid "You already own this ticket" -msgstr "Du eier allerede denne saken" - -#: html/autohandler:214 html/autohandler:222 -msgid "You are not an authorized user" -msgstr "Du er ikke en autorisert bruker" - -#: html/Prefs/Search.html:56 -msgid "You can also edit the predefined search itself" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:3025 -msgid "You can only reassign tickets that you own or that are unowned" -msgstr "Du kan bare omfordele saker som du eier eller som ikke har en eier" - -#: lib/RT/Ticket_Overlay.pm:3021 -msgid "You can only take tickets that are unowned" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "You don't have permission to view that ticket.\\n" -msgstr "Du har ikke tilgang til å se den saken.\\n" - -#: docs/design_docs/string-extraction-guide.txt:47 lib/RT/StyleGuide.pod:780 -#. ($num, $queue) -msgid "You found %1 tickets in queue %2" -msgstr "Du fant %1 saker i %2 køen" - -#: html/NoAuth/Logout.html:52 -msgid "You have been logged out of RT." -msgstr "" - -#: html/SelfService/Display.html:133 -msgid "You have no permission to create tickets in that queue." -msgstr "Du har ikke tilgang til å opprette saker i den køen." - -#: lib/RT/Ticket_Overlay.pm:2003 -msgid "You may not create requests in that queue." -msgstr "Du kan ikke opprette forespørsler i den køen." - -#: html/NoAuth/Logout.html:56 -msgid "You're welcome to login again" -msgstr "Velkommen tilbake" - -#: NOT FOUND IN SOURCE -msgid "Your %1 requests" -msgstr "Dine %1 forespørsler" - -#: NOT FOUND IN SOURCE -msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" -msgstr "Din RT administrastor har feilkonfigurert mail aliasene som kaller RT" - -#: etc/initialdata:502 -msgid "Your request has been approved by %1. Other approvals may still be pending." -msgstr "Din forespørsel har blitt godkjent av %1. Andre godkjennelser avventer kanskje fortsatt" - -#: etc/initialdata:540 -msgid "Your request has been approved." -msgstr "Din forespørsel ble godkjent." - -#: NOT FOUND IN SOURCE -msgid "Your request was rejected" -msgstr "Din forespørsel ble avvist" - -#: etc/initialdata:445 -msgid "Your request was rejected." -msgstr "Din forespørsel ble avvist" - -#: html/autohandler:251 -msgid "Your username or password is incorrect" -msgstr "Ditt brukernavn/passord er ugyldig" - -#: html/Admin/Users/Modify.html:168 html/User/Prefs.html:149 -msgid "Zip" -msgstr "Zip" - -#: NOT FOUND IN SOURCE -msgid "[no subject]" -msgstr "[ikke noe emne]" - -#: lib/RT/System.pm:87 -msgid "allow creation of saved searches" -msgstr "" - -#: lib/RT/System.pm:86 -msgid "allow loading of saved searches" -msgstr "" - -#: html/User/Elements/DelegateRights:80 -#. ($right->PrincipalObj->Object->SelfDescription) -msgid "as granted to %1" -msgstr "som tildelt til %1" - -#: html/Search/Results.html:83 -msgid "chart" -msgstr "" - -#: html/SelfService/Closed.html:49 -msgid "closed" -msgstr "lukket" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:55 -msgid "contains" -msgstr "inneholder" - -#: NOT FOUND IN SOURCE -msgid "content" -msgstr "innhold" - -#: NOT FOUND IN SOURCE -msgid "content-type" -msgstr "innholdstype" - -#: NOT FOUND IN SOURCE -msgid "correspondence (probably) not sent" -msgstr "korrespondanse (sansynligvis) ikke sendt" - -#: NOT FOUND IN SOURCE -msgid "correspondence sent" -msgstr "korrespondanse sendt" - -#: html/Admin/Queues/Modify.html:98 lib/RT/Date.pm:346 -msgid "days" -msgstr "dager" - -#: NOT FOUND IN SOURCE -msgid "dead" -msgstr "død" - -#: NOT FOUND IN SOURCE -msgid "delete" -msgstr "slett" - -#: lib/RT/Queue_Overlay.pm:87 -msgid "deleted" -msgstr "slettet" - -#: html/Search/Elements/PickBasics:61 -msgid "does not match" -msgstr "treffer ikke" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:56 -msgid "doesn't contain" -msgstr "inneholder ikke" - -#: html/Elements/SelectEqualityOperator:59 -msgid "equal to" -msgstr "lik som" - -#: html/Search/Build.html:547 -msgid "error: can't move down" -msgstr "" - -#: html/Search/Build.html:569 -msgid "error: can't move left" -msgstr "" - -#: html/Search/Build.html:528 -msgid "error: can't move up" -msgstr "" - -#: html/Search/Build.html:612 -msgid "error: nothing to delete" -msgstr "" - -#: html/Search/Build.html:533 html/Search/Build.html:552 html/Search/Build.html:574 html/Search/Build.html:603 -msgid "error: nothing to move" -msgstr "" - -#: html/Search/Build.html:630 -msgid "error: nothing to toggle" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "false" -msgstr "usant" - -#: NOT FOUND IN SOURCE -msgid "filename" -msgstr "filnavn" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59 -msgid "greater than" -msgstr "større enn" - -#: lib/RT/Group_Overlay.pm:214 -#. ($self->Name) -msgid "group '%1'" -msgstr "gruppe '%1'" - -#: html/Search/Results.html:88 -#. ($m->scomp('Elements/SelectGroupBy', Name => 'PrimaryGroupBy', Query => $Query)) -msgid "grouped by %1" -msgstr "" - -#: lib/RT/Date.pm:342 -msgid "hours" -msgstr "timer" - -#: html/Search/Elements/PickBasics:48 -msgid "id" -msgstr "id" - -#: html/Elements/SelectBoolean:53 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:57 html/Search/Elements/PickBasics:162 html/Search/Elements/PickBasics:74 html/Search/Elements/PickBasics:90 html/Search/Elements/PickCFs:53 -msgid "is" -msgstr "er" - -#: html/Elements/SelectBoolean:57 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:58 html/Search/Elements/PickBasics:163 html/Search/Elements/PickBasics:75 html/Search/Elements/PickBasics:91 html/Search/Elements/PickCFs:54 -msgid "isn't" -msgstr "er ikke" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59 -msgid "less than" -msgstr "mindre enn" - -#: html/Search/Elements/PickBasics:60 -msgid "matches" -msgstr "treffer" - -#: lib/RT/Date.pm:338 -msgid "min" -msgstr "min" - -#: NOT FOUND IN SOURCE -msgid "minutes" -msgstr "minutter" - -#: NOT FOUND IN SOURCE -msgid "modifications\\n\\n" -msgstr "endringer\\n\\n" - -#: lib/RT/Date.pm:354 -msgid "months" -msgstr "måneder" - -#: lib/RT/Queue_Overlay.pm:82 -msgid "new" -msgstr "ny" - -#: html/Admin/Elements/PickCustomFields:64 html/Admin/Elements/PickObjects:65 -msgid "no name" -msgstr "" - -#: html/Admin/Elements/EditScrips:64 -msgid "no value" -msgstr "ingen verdi" - -#: html/Admin/Elements/EditQueueWatchers:48 html/Ticket/Elements/EditWatchers:49 -msgid "none" -msgstr "ingen" - -#: html/Elements/SelectEqualityOperator:59 -msgid "not equal to" -msgstr "ikke lik som" - -#: NOT FOUND IN SOURCE -msgid "notlike" -msgstr "ikkelik" - -#: html/SelfService/Elements/MyRequests:82 lib/RT/Queue_Overlay.pm:83 -msgid "open" -msgstr "åpen" - -#: lib/RT/Group_Overlay.pm:219 -#. ($self->Name, $user->Name) -msgid "personal group '%1' for user '%2'" -msgstr "personlig gruppe '%1' for bruker '%2'" - -#: lib/RT/Group_Overlay.pm:227 -#. ($queue->Name, $self->Type) -msgid "queue %1 %2" -msgstr "kø %1 %2" - -#: lib/RT/Queue_Overlay.pm:86 -msgid "rejected" -msgstr "avvist" - -#: lib/RT/Queue_Overlay.pm:85 -msgid "resolved" -msgstr "løst" - -#: lib/RT/Date.pm:334 -msgid "sec" -msgstr "sek" - -#: lib/RT/System.pm:85 -msgid "show Configuration tab" -msgstr "" - -#: html/Search/Results.html:80 -msgid "spreadsheet" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:84 -msgid "stalled" -msgstr "pauset" - -#: html/Search/Results.html:89 -#. ($m->scomp('Elements/SelectChartType', Name => 'ChartStyle')) -msgid "style: %1" -msgstr "" - -#: html/Prefs/MyRT.html:93 -msgid "summary rows" -msgstr "" - -#: lib/RT/Group_Overlay.pm:222 -#. ($self->Type) -msgid "system %1" -msgstr "system %1" - -#: lib/RT/Group_Overlay.pm:233 -#. ($self->Type) -msgid "system group '%1'" -msgstr "systemgruppe '%1'" - -#: html/Elements/Error:64 html/SelfService/Error.html:63 -msgid "the calling component did not specify why" -msgstr "den kallende komponenten oppga ikke hvorfor" - -#: lib/RT/Group_Overlay.pm:230 -#. ($self->Instance, $self->Type) -msgid "ticket #%1 %2" -msgstr "sak #%1 %2" - -#: NOT FOUND IN SOURCE -msgid "true" -msgstr "sant" - -#: lib/RT/Group_Overlay.pm:236 -#. ($self->Id) -msgid "undescribed group %1" -msgstr "ubeskrevet gruppe %1" - -#: NOT FOUND IN SOURCE -msgid "undescripbed group %1" -msgstr "ubeskrevet gruppe %1" - -#: lib/RT/Group_Overlay.pm:211 -#. ($user->Object->Name) -msgid "user %1" -msgstr "bruker %1" - -#: lib/RT/Date.pm:350 -msgid "weeks" -msgstr "uker" - -#: NOT FOUND IN SOURCE -msgid "with template %1" -msgstr "med malen %1" - -#: lib/RT/Date.pm:358 -msgid "years" -msgstr "år" - diff --git a/rt/lib/RT/I18N/pt_br.po b/rt/lib/RT/I18N/pt_br.po deleted file mode 100644 index 98fa2069e..000000000 --- a/rt/lib/RT/I18N/pt_br.po +++ /dev/null @@ -1,6528 +0,0 @@ -# translation of pt_br.po to Portugues Brasileiro -# Header entry was created by KBabel! -# -# Fernando Frota Machado de Morais <frota@cecom.ufmg.br>, 2008. -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"MIME-Version: 1.0\n" -"PO-Revision-Date: 2008-02-23 11:48-0300\n" -"Project-Id-Version: RT 3.6.x - pt_br\n" -"Language-Team: Portugues Brasileiro <pt@li.org>\n" -"X-Generator: KBabel 1.11.4\n" -"MIME-Version: 1.0\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Last-Translator: Fernando Frota Machado de Morais <frota@cecom.ufmg.br>\n" - -msgid "" -"RT's email command mode requires PGP authentication. Either you didn't sign " -"your message, or your signature could not be verified." -msgstr "" -"O modo de comandos por e-mail do RT requer autenticação PGP. Ou você não " -"assinou sua mensagem ou sua assinatura não pôde ser verificada." - -#: html/Widgets/SavedSearch:117 -#. ($self->{CurrentSearch}{Object}->Description) -msgid " %1 deleted." -msgstr " %1 removido." - -#: html/Widgets/SavedSearch:94 -#. ($self->{CurrentSearch}{Description}, $args->{Description}) -msgid " %1 renamed to %2." -msgstr " %1 renomeado para %2." - -#: html/Widgets/SavedSearch:107 -#. ($args->{Description}) -msgid " %1 saved." -msgstr " %1 salvo." - -#: html/Approvals/Elements/Approve:50 html/Approvals/Elements/ShowDependency:73 html/SelfService/Display.html:48 html/Ticket/Display.html:49 html/Ticket/Display.html:53 -#. ($ticket->Id, $ticket->Subject) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -#. ($TicketObj->Id, $TicketObj->Subject) -#. ($Ticket->id, $Ticket->Subject) -msgid "#%1: %2" -msgstr "" - -#: html/Elements/ShowSearch:116 -msgid "$1" -msgstr "" - -#: lib/RT/Record.pm:957 -#. ($label) -msgid "$prefix %1" -msgstr "$prefixo %1" - -#: lib/RT/URI/fsck_com_rt.pm:258 -#. ($self->ObjectType, $self->Object->Id) -msgid "%1 #%2" -msgstr "" - -#: lib/RT/Date.pm:367 -#. ($s, $time_unit) -msgid "%1 %2" -msgstr "" - -#: lib/RT/Date.pm:403 -#. ($self->GetWeekday($wday), $self->GetMonth($mon), map {sprintf "%02d", $_} ($mday, $hour, $min, $sec), ($year+1900)) -msgid "%1 %2 %3 %4:%5:%6 %7" -msgstr "" - -#: lib/RT/Record.pm:1707 lib/RT/Transaction_Overlay.pm:668 lib/RT/Transaction_Overlay.pm:711 -#. ($cf->Name, $new_value->Content) -#. ($field, $self->NewValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 added" -msgstr "%1 %2 adicionado" - -#: lib/RT/Date.pm:364 -#. ($s, $time_unit) -msgid "%1 %2 ago" -msgstr "%1 %2 atrás" - -#: lib/RT/Record.pm:1714 lib/RT/Transaction_Overlay.pm:675 -#. ($cf->Name, $old_content, $new_value->Content) -#. ($field, $self->OldValue, $self->NewValue) -msgid "%1 %2 changed to %3" -msgstr "%1 %2 mudado para %3" - -#: lib/RT/Record.pm:1711 lib/RT/Transaction_Overlay.pm:671 lib/RT/Transaction_Overlay.pm:717 -#. ($cf->Name, $old_value->Content) -#. ($field, $self->OldValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 deleted" -msgstr "%1 %2 removido" - -#: NOT FOUND IN SOURCE -msgid "%1 %2 of group %3" -msgstr "%1 %2 do grupo %3" - -#: html/Admin/Elements/EditScrips:67 html/Admin/Elements/ListGlobalScrips:65 html/Ticket/Elements/PreviewScrips:105 -#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) -msgid "%1 %2 with template %3" -msgstr "%1 %2 com modelo %3" - -#: NOT FOUND IN SOURCE -msgid "%1 (%2) %3 this ticket\\n" -msgstr "%1 (%2) %3 este tíquete\\n" - -#: html/Ticket/Elements/ShowAttachments:74 -#. ($rev->CreatedAsString, $size, $rev->CreatorObj->Name) -msgid "%1 (%2) by %3" -msgstr "%1 (%2) por %3" - -#: html/SelfService/Update.html:62 html/Ticket/Elements/EditBasics:110 html/Ticket/Update.html:63 html/Ticket/Update.html:65 html/Tools/MyDay.html:71 -#. (loc($TicketObj->Status)) -#. ($TicketObj->OwnerObj->Name()) -#. (loc($DefaultStatus)) -#. (loc($Ticket->Status())) -msgid "%1 (Unchanged)" -msgstr "%1 (Sem alteração)" - -#: NOT FOUND IN SOURCE -msgid "%1 - %2 shown" -msgstr "%1 - %2 apresentados" - -#: bin/rt-crontool:239 bin/rt-crontool:246 bin/rt-crontool:252 -#. ("--search-argument", "--search") -#. ("--condition-argument", "--condition") -#. ("--action-argument", "--action") -msgid "%1 - An argument to pass to %2" -msgstr "%1 - Um argumento para passar para %2" - -#: bin/rt-crontool:264 -#. ("--verbose") -msgid "%1 - Output status updates to STDOUT" -msgstr "%1 - Mostra atualizações de estado no STDOUT" - -#: bin/rt-crontool:255 -#. ("--template-id") -msgid "%1 - Specify id of the template you want to use" -msgstr "%1 - Especifique o id do modelo que você quer usar" - -#: bin/rt-crontool:258 -#. ("--transaction") -msgid "%1 - Specify if you want to use either 'first' or 'last' transaction" -msgstr "%1 - Especifique se você quer usar a 'primeira' ou a 'última' transação" - -#: bin/rt-crontool:249 -#. ("--action") -msgid "%1 - Specify the action module you want to use" -msgstr "%1 - Especifica o módulo de ação que você quer usar" - -#: bin/rt-crontool:243 -#. ("--condition") -msgid "%1 - Specify the condition module you want to use" -msgstr "%1 - Especifica o módulo de condição que você quer usar" - -#: bin/rt-crontool:236 -#. ("--search") -msgid "%1 - Specify the search module you want to use" -msgstr "%1 - Especifica o módulo de busca que você quer usar" - -#: bin/rt-crontool:261 -#. ("--transaction-type") -msgid "%1 - Specify the type of a transaction you want to use" -msgstr "%1 - Especifique o tipo de transação você quer usar" - -#: html/Elements/Footer:58 -#. ('»|«', $RT::VERSION, '2006', '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',) -msgid "%1 RT %2 Copyright 1996-%3 %4." -msgstr "%1 RT %2 Direitos Reservados 1996-%3 %4." - -#: lib/RT/ScripAction_Overlay.pm:152 -#. ($self->Id) -msgid "%1 ScripAction loaded" -msgstr "ScripAction %1 carregado" - -#: lib/RT/Record.pm:1744 -#. ($args{'Value'}, $cf->Name) -msgid "%1 added as a value for %2" -msgstr "%1 adicionado como um valor de %2" - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on" -msgstr "Aliases %1 requerem um TicketId no qual trabalhar" - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on " -msgstr "Aliases %1 requerem um TicketId no qual trabalhar " - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on (from %2) %3" -msgstr "Aliases %1 requerem um TicketId no qual trabalhar (de %2) %3" - -#: lib/RT/Link_Overlay.pm:146 lib/RT/Link_Overlay.pm:153 -#. ($args{'Base'}) -#. ($args{'Target'}) -msgid "%1 appears to be a local object, but can't be found in the database" -msgstr "%1 parece ser um objeto local, mas não pode ser encontrado no banco de dados" - -#: html/Ticket/Elements/ShowDates:75 lib/RT/Transaction_Overlay.pm:552 -#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) -#. ($self->BriefDescription , $self->CreatorObj->Name) -msgid "%1 by %2" -msgstr "%1 por %2" - -#: lib/RT/Transaction_Overlay.pm:809 lib/RT/Transaction_Overlay.pm:818 lib/RT/Transaction_Overlay.pm:821 -#. ($self->Field , $q1->Name , $q2->Name) -#. ($self->Field, $t2->AsString, $t1->AsString) -#. ($self->Field, ($self->OldValue? "'".$self->OldValue ."'" : $self->loc("(no value)")) , "'". $self->NewValue."'") -msgid "%1 changed from %2 to %3" -msgstr "%1 mudado de %2 para %3" - -#: html/Search/Build.html:215 -#. ($Description) -msgid "%1 copy" -msgstr "%1 copiado" - -#: lib/RT/Record.pm:961 -msgid "%1 could not be set to %2." -msgstr "%1 não pôde ser mudado para %2" - -#: NOT FOUND IN SOURCE -msgid "%1 couldn't init a transaction (%2)\\n" -msgstr "%1 não pôde iniciar uma transação (%2)\\n" - -#: NOT FOUND IN SOURCE -msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." -msgstr "" -"%1 não pôde definir o estado como resolvido. O banco de dados do RT pode " -"estar inconsistente." - -#: lib/RT/Transaction_Overlay.pm:592 -#. ($obj_type) -msgid "%1 created" -msgstr "%1 criado" - -#: lib/RT/Transaction_Overlay.pm:597 -#. ($obj_type) -msgid "%1 deleted" -msgstr "%1 removido" - -#: etc/initialdata:593 -msgid "%1 highest priority tickets I own" -msgstr "Meus %1 tíquetes de mais alta prioridade" - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets I own..." -msgstr "%1 tíquetes de mais alta prioridade que eu possuo..." - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets I requested..." -msgstr "%1 tíquetes de mais alta prioridade que eu requeri..." - -#: bin/rt-crontool:231 -#. ($0) -msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." -msgstr "%1 é uma ferramenta que age sobre os tíquetes a partir de uma ferramenta externa de agendamento, como cron." - -#: lib/RT/Queue_Overlay.pm:865 -#. ($principal->Object->Name, $args{'Type'}) -msgid "%1 is no longer a %2 for this queue." -msgstr "%1 não é mais um %2 desta fila." - -#: NOT FOUND IN SOURCE -msgid "%1 is no longer a %2 for this ticket." -msgstr "%1 não é mais um %2 deste tíquete." - -#: NOT FOUND IN SOURCE -msgid "%1 is no longer a value for custom field %2" -msgstr "%1 não é mais um valor para o campo personalizado %2" - -#: NOT FOUND IN SOURCE -msgid "%1 isn't a valid Queue id." -msgstr "%1 não é um identificador de fila válido." - -#: html/Ticket/Elements/ShowTime:49 html/Ticket/Elements/ShowTime:51 -#. ($minutes) -msgid "%1 min" -msgstr "" - -#: etc/initialdata:601 -msgid "%1 newest unowned tickets" -msgstr "%1 tíquetes mais recentes sem proprietário" - -#: NOT FOUND IN SOURCE -msgid "%1 not shown" -msgstr "%1 não mostrado" - -#: lib/RT/CustomField_Overlay.pm:896 -msgid "%1 objects" -msgstr "%1 objetos" - -#: html/User/Elements/DelegateRights:99 -#. (loc($ObjectType =~ /^RT::(.*)$/)) -msgid "%1 rights" -msgstr "%1 direitos" - -#: NOT FOUND IN SOURCE -msgid "%1 succeeded\\n" -msgstr "%1 teve sucesso\\n" - -#: NOT FOUND IN SOURCE -msgid "%1 type unknown for $MessageId" -msgstr "Tipo %1 desconhecido para $MessageId" - -#: NOT FOUND IN SOURCE -msgid "%1 type unknown for %2" -msgstr "Tipo %1 desconhecido para %2" - -#: NOT FOUND IN SOURCE -msgid "%1 was created without a CurrentUser\\n" -msgstr "%1 foi criado sem um CurrentUser\\n" - -#: lib/RT/Action/ResolveMembers.pm:65 -#. (ref $self) -msgid "%1 will resolve all members of a resolved group ticket." -msgstr "%1 resolverá todos os membros de um grupo de tíquetes resolvidos." - -#: lib/RT/CustomField_Overlay.pm:897 -msgid "%1's %2 objects" -msgstr "%1's %2 objetos" - -#: lib/RT/CustomField_Overlay.pm:898 -msgid "%1's %2's %3 objects" -msgstr "%1's %2's %3 objetos" - -#: html/Search/Elements/SearchPrivacy:54 html/Search/Elements/SelectSearchObject:57 html/Search/Elements/SelectSearchesForObjects:59 -#. ($object->Name) -#. ($Object->Name) -msgid "%1's saved searches" -msgstr "Primeiras %1 buscas salvas" - -#: lib/RT/Transaction_Overlay.pm:502 -#. ($self) -msgid "%1: no attachment specified" -msgstr "%1: nenhum arquivo anexo especificado" - -#: html/Ticket/Elements/ShowTransactionAttachments:80 -#. ($size) -msgid "%1b" -msgstr "" - -#: html/Ticket/Elements/ShowTransactionAttachments:77 -#. (int( $size / 102.4 ) / 10) -msgid "%1k" -msgstr "" - -#: html/Ticket/Elements/ShowTime:51 -#. (sprintf("%.1f",$minutes / 60)) -msgid "%quant(%1,hour)" -msgstr "%quant(%1,hora)" - -#: lib/RT/Ticket_Overlay.pm:1144 -#. ($args{'Status'}) -msgid "'%1' is an invalid value for status" -msgstr "'%1' é um valor inválido para estado " - -#: NOT FOUND IN SOURCE -msgid "'%1' not a recognized action. " -msgstr "'%1' não é uma ação reconhecida." - -#: NOT FOUND IN SOURCE -msgid "(Check box to delete group member)" -msgstr "(Marcar caixa para remover o membro do grupo)" - -#: NOT FOUND IN SOURCE -msgid "(Check box to delete scrip)" -msgstr "(Marcar caixa para remover o scrip)" - -#: html/Admin/Elements/EditCustomFieldValues:52 html/Admin/Elements/EditQueueWatchers:52 html/Admin/Elements/EditScrips:58 html/Admin/Elements/EditTemplates:59 html/Admin/Groups/Members.html:75 html/Elements/EditLinks:56 html/Ticket/Elements/EditPeople:69 html/User/Groups/Members.html:78 -msgid "(Check box to delete)" -msgstr "(Marcar caixa para remover)" - -#: html/Ticket/Elements/PreviewScrips:101 -msgid "(Check boxes to disable notifications to the listed recipients)" -msgstr "(Marcar caixas para desativar notificações para os destinatários listados)" - -#: html/Ticket/Elements/PreviewScrips:125 -msgid "(Check boxes to enable notifications to the listed recipients)" -msgstr "(Marcar caixas para ativar notificações para os destinatários listados)" - -#: html/Ticket/Create.html:220 -msgid "(Enter ticket ids or URLs, separated with spaces)" -msgstr "(Informar identificação de tíquetes ou URLs, separadas por espaço)" - -#: html/Admin/Queues/Modify.html:77 html/Admin/Queues/Modify.html:83 -#. ($RT::CorrespondAddress) -#. ($RT::CommentAddress) -msgid "(If left blank, will default to %1)" -msgstr "(Se deixado em branco, será entendido como %)" - -#: NOT FOUND IN SOURCE -msgid "(No Value)" -msgstr "(Sem Valor)" - -#: html/Admin/Elements/EditCustomFields:76 html/Admin/Elements/ListGlobalCustomFields:55 -msgid "(No custom fields)" -msgstr "(Nenhum campo personalizado)" - -#: html/Admin/Groups/Members.html:73 html/User/Groups/Members.html:76 -msgid "(No members)" -msgstr "(Sem membros)" - -#: html/Admin/Elements/EditScrips:55 html/Admin/Elements/ListGlobalScrips:50 -msgid "(No scrips)" -msgstr "(Sem scrips)" - -#: html/Admin/Elements/EditTemplates:54 -msgid "(No templates)" -msgstr "(Nenhum modelo)" - -#: html/Admin/Elements/PickCustomFields:49 html/Admin/Elements/PickObjects:49 -msgid "(None)" -msgstr "(Nenhum)" - -#: html/Ticket/Update.html:92 -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)" -msgstr "(Envia uma cópia oculta desta atualização para uma lista de endereços de e-mails separados por vírgula.<strong>Não</strong> altera quem vai receber atualizações futuras.)" - -#: html/Ticket/Create.html:105 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <strong>will</strong> receive future updates.)" -msgstr "(Envia uma cópia desta atualização para uma lista de endereços de e-mails administrativos separados por vírgula. Estas pessoas <strong>vão</strong> receber atualizações futuras.)" - -#: html/Ticket/Update.html:88 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)" -msgstr "(Envia uma cópia desta atualização para uma lista de endereços de e-mails separados por vírgula.<strong>Não</strong> altera quem vai receber atualizações futuras.)" - -#: html/Ticket/Create.html:95 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <strong>will</strong> receive future updates.)" -msgstr "(Envia uma cópia desta atualização para uma lista de endereços de separados por vírgula. Estas pessoas <strong>vão</strong> receber atualizações futuras.)" - -#: html/Admin/Elements/EditScrip:98 -msgid "(Use these fields when you choose 'User Defined' for a condition or action)" -msgstr "" -"(Use estes campos quando você escolhar 'Definido pelo Usuário' para uma " -"condição ou ação)" - -#: html/Ticket/Elements/EditWatchers:62 html/Ticket/Elements/ShowUserEntry:55 -msgid "(Will not be sent email)" -msgstr "(Não enviará e-mail)" - -#: html/Tools/MyDay.html:53 -#. ($session{'CurrentUser'}->Name) -msgid "(displaying new and open tickets for %1)" -msgstr "(mostrando tíquetes novos e abertos pra %1)" - -#: html/Admin/Groups/index.html:59 html/User/Groups/index.html:56 -msgid "(empty)" -msgstr "(vazio)" - -#: html/Admin/Users/index.html:62 -msgid "(no name listed)" -msgstr "(nenhum nome listado)" - -#: NOT FOUND IN SOURCE -msgid "(no subject)" -msgstr "(Sem assunto)" - -#: html/Admin/Elements/SelectRights:74 html/Elements/EditCustomFieldSelect:71 html/Elements/SelectCustomFieldValue:53 html/Elements/ShowCustomFields:56 html/Search/Chart:134 html/Search/Elements/Chart:78 lib/RT/Transaction_Overlay.pm:612 -msgid "(no value)" -msgstr "(sem valor)" - -#: html/Admin/Elements/EditCustomFieldValues:49 -msgid "(no values)" -msgstr "(sem valores)" - -#: html/Elements/EditLinks:133 html/Ticket/Elements/BulkLinks:51 -msgid "(only one ticket)" -msgstr "(somente um tíquete)" - -#: html/Elements/RT__Ticket/ColumnMap:151 -msgid "(pending approval)" -msgstr "(aprovação pendente)" - -#: html/Elements/RT__Ticket/ColumnMap:154 -msgid "(pending other Collection)" -msgstr "(outra Coleta pendente)" - -#: NOT FOUND IN SOURCE -msgid "(pending other tickets)" -msgstr "(aguardando outros tíquetes)" - -#: NOT FOUND IN SOURCE -msgid "(requestor's group)" -msgstr "(grupo do requisitante)" - -#: html/Admin/Users/Modify.html:73 -msgid "(required)" -msgstr "(requerido)" - -#: html/Ticket/Elements/ShowTransactionAttachments:84 -msgid "(untitled)" -msgstr "(sem título)" - -#: html/Ticket/Elements/Reminders:135 -msgid "(yyyy/mm/dd)" -msgstr "(aaaa/mm/dd)" - -#: html/Elements/EditCustomFieldSelect:59 -msgid "-" -msgstr "" - -#: bin/rt-crontool:97 -msgid "--transaction argument could be only 'first' or 'last'" -msgstr "--argumento da transação só pode ser 'first' (primeiro) ou 'last' (último)" - -#: NOT FOUND IN SOURCE -msgid "25 highest priority tickets I own..." -msgstr "25 tíquetes mais prioritários que possuo..." - -#: NOT FOUND IN SOURCE -msgid "25 highest priority tickets I requested..." -msgstr "25 tíquetes mais prioritários que requisitei..." - -#: html/Ticket/Elements/ShowBasics:55 -msgid "<% $Ticket->Status%>" -msgstr "" - -#: html/Elements/SelectTicketTypes:50 -msgid "<% $_ %>" -msgstr "" - -#: html/Search/Elements/SelectLinks:50 -msgid "<%$_%>" -msgstr "" - -#: html/Search/Elements/DisplayOptions:75 -msgid "<%$field%>" -msgstr "" - -#: html/Elements/CreateTicket:49 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" class=\"button\" value=\"New ticket in\" /> %1" -msgstr "<input type=\"submit\" class=\"button\" value=\"Novo tíquete em\" /> %1" - -#: docs/design_docs/string-extraction-guide.txt:54 lib/RT/StyleGuide.pod:785 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" value=\"New ticket in\"> %1" -msgstr "<input type=\"submit\" value=\"Novo tíquete em\"> %1" - -#: etc/initialdata:218 -msgid "A blank template" -msgstr "Um modelo vazio" - -#: html/Admin/Users/Modify.html:375 -msgid "A password was not set, so user won't be able to login." -msgstr "Não foi definida uma senha, o usuário não estará apto a usar o sistema." - -#: NOT FOUND IN SOURCE -msgid "ACE Deleted" -msgstr "ACE Removida" - -#: NOT FOUND IN SOURCE -msgid "ACE Loaded" -msgstr "ACE Carregada" - -#: NOT FOUND IN SOURCE -msgid "ACE could not be deleted" -msgstr "ACE não pôde ser removida" - -#: NOT FOUND IN SOURCE -msgid "ACE could not be found" -msgstr "ACE não pode ser encontrada" - -#: lib/RT/ACE_Overlay.pm:176 lib/RT/Principal_Overlay.pm:221 -msgid "ACE not found" -msgstr "ACE não encontrado" - -#: lib/RT/ACE_Overlay.pm:855 -msgid "ACEs can only be created and deleted." -msgstr "ACEs só podem ser criados e removidos." - -#: html/Search/Elements/SelectAndOr:48 -msgid "AND" -msgstr "E" - -#: NOT FOUND IN SOURCE -msgid "Aborting to avoid unintended ticket modifications.\\n" -msgstr "Abortando para evitar modificações indesejadas no tíquete.\\n" - -#: html/User/Elements/Tabs:55 -msgid "About me" -msgstr "Sobre mim" - -#: html/Admin/Users/Modify.html:108 -msgid "Access control" -msgstr "Controle de acesso" - -#: html/Admin/Elements/EditScrip:67 -msgid "Action" -msgstr "Ação" - -#: lib/RT/Scrip_Overlay.pm:174 -#. ($args{'ScripAction'}) -msgid "Action %1 not found" -msgstr "Ação %1 não encontrada" - -#: NOT FOUND IN SOURCE -msgid "Action committed." -msgstr "Ação executada." - -#: bin/rt-crontool:173 -msgid "Action committed.\\n" -msgstr "Ação executada.\\n" - -#: lib/RT/Scrip_Overlay.pm:170 -msgid "Action is mandatory argument" -msgstr "Ação é um argumento obrigatório." - -#: bin/rt-crontool:169 -msgid "Action prepared..." -msgstr "Ação preparada..." - -#: html/Search/Build.html:87 -msgid "Add" -msgstr "Adicionar" - -#: html/Search/Bulk.html:94 -msgid "Add AdminCc" -msgstr "Adicionar AdminCc" - -#: html/Search/Bulk.html:90 -msgid "Add Cc" -msgstr "Adicionar Cc" - -#: html/Search/Elements/EditFormat:51 -msgid "Add Columns" -msgstr "Adicionar Colunas" - -#: html/Search/Elements/PickCriteria:48 -msgid "Add Criteria" -msgstr "Adicionar Critério" - -#: html/Ticket/Create.html:149 html/Ticket/Update.html:118 -msgid "Add More Files" -msgstr "Adicionar Mais Arquivos" - -#: NOT FOUND IN SOURCE -msgid "Add Next State" -msgstr "Adicionar Próximo Estado" - -#: html/Search/Bulk.html:86 -msgid "Add Requestor" -msgstr "Adicionar Requisitante" - -#: html/Admin/Elements/AddCustomFieldValue:48 -msgid "Add Value" -msgstr "Adicionar Valor" - -#: NOT FOUND IN SOURCE -msgid "Add a Scrip to this queue" -msgstr "Adicionar um Scrip a esta fila" - -#: NOT FOUND IN SOURCE -msgid "Add a Scrip which will apply to all queues" -msgstr "Adicionar um Scrip que será aplicado a todas as filas" - -#: NOT FOUND IN SOURCE -msgid "Add a keyword selection to this queue" -msgstr "Adicionar uma seleção de teclado a esta fila" - -#: NOT FOUND IN SOURCE -msgid "Add a new a global scrip" -msgstr "Adicionar um novo scrip global" - -#: NOT FOUND IN SOURCE -msgid "Add a scrip to this queue" -msgstr "Adicionar um scrip a esta fila" - -#: html/Admin/Global/Scrip.html:85 -msgid "Add a scrip which will apply to all queues" -msgstr "Adicionar um scrip que se aplicará a todas as filas " - -#: html/Search/Build.html:111 html/Search/Build.html:96 -msgid "Add and Search" -msgstr "Adicionar e Buscar" - -#: html/Search/Bulk.html:126 -msgid "Add comments or replies to selected tickets" -msgstr "Adicionar comentários ou respostas aos tíquetes selecionados" - -#: html/Admin/Groups/Members.html:65 html/User/Groups/Members.html:62 -msgid "Add members" -msgstr "Adicionar membros" - -#: html/Admin/Queues/People.html:89 html/Ticket/Elements/AddWatchers:51 -msgid "Add new watchers" -msgstr "Adicionar novos observadores" - -#: html/Search/Build.html:87 -msgid "Add these terms to your search" -msgstr "Adicionar estes termos à sua busca" - -#: html/Search/Bulk.html:160 -msgid "Add values" -msgstr "Adicionar valores" - -#: lib/RT/CustomField_Overlay.pm:110 -msgid "Add, delete and modify custom field values for objects" -msgstr "Adicionar, remover e modificar valores de campos personalizados para objetos" - -#: NOT FOUND IN SOURCE -msgid "AddNextState" -msgstr "AddNextState" - -#: lib/RT/Queue_Overlay.pm:765 -#. ($args{'Type'}) -msgid "Added principal as a %1 for this queue" -msgstr "Usuário/Grupo adicionado como um %1 desta fila" - -#: lib/RT/Ticket_Overlay.pm:1457 -#. ($self->loc($args{'Type'})) -msgid "Added principal as a %1 for this ticket" -msgstr "Usuário/Grupo adicionado como um %1 deste tíquete" - -#: html/Admin/Users/Modify.html:149 html/User/Prefs.html:135 -msgid "Address1" -msgstr "Endereço 1" - -#: html/Admin/Users/Modify.html:154 html/User/Prefs.html:139 -msgid "Address2" -msgstr "Endereço 2" - -#: html/Ticket/Create.html:100 -msgid "Admin Cc" -msgstr "Admin Cc" - -#: etc/initialdata:295 -msgid "Admin Comment" -msgstr "Comentário do Administrador" - -#: etc/initialdata:274 -msgid "Admin Correspondence" -msgstr "Correspondência do Administrador" - -#: html/Admin/Queues/index.html:48 html/Admin/Queues/index.html:51 -msgid "Admin queues" -msgstr "Administração de filas" - -#: NOT FOUND IN SOURCE -msgid "Admin users" -msgstr "Administração de usuários" - -#: html/Admin/Global/index.html:49 html/Admin/Global/index.html:51 -msgid "Admin/Global configuration" -msgstr "Administração da configuração global" - -#: NOT FOUND IN SOURCE -msgid "Admin/Groups" -msgstr "Administração de Grupos" - -#: NOT FOUND IN SOURCE -msgid "Admin/Queue/Basics" -msgstr "Administração de uma fila" - -#: NOT FOUND IN SOURCE -msgid "AdminAllPersonalGroups" -msgstr "AdminAllPersonalGroups" - -#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:62 lib/RT/ACE_Overlay.pm:115 -msgid "AdminCc" -msgstr "AdminCc" - -#: NOT FOUND IN SOURCE -msgid "AdminComment" -msgstr "ComentarioAdministrador" - -#: NOT FOUND IN SOURCE -msgid "AdminCorrespondence" -msgstr "CorrespondenciaAdministrador" - -#: lib/RT/CustomField_Overlay.pm:108 -msgid "AdminCustomField" -msgstr "AdministrarCampoPersonalizado" - -#: NOT FOUND IN SOURCE -msgid "AdminCustomFields" -msgstr "AdministrarCamposPersonalizados" - -#: lib/RT/Group_Overlay.pm:165 -msgid "AdminGroup" -msgstr "AdministrarGrupo" - -#: lib/RT/Group_Overlay.pm:167 -msgid "AdminGroupMembership" -msgstr "AdministrarAfiliacaoGrupop" - -#: lib/RT/System.pm:82 -msgid "AdminOwnPersonalGroups" -msgstr "AdminOwnPersonalGroups" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "AdminQueue" -msgstr "AdministrarFila" - -#: lib/RT/System.pm:83 -msgid "AdminUsers" -msgstr "AdministrarUsuários" - -#: html/Admin/Queues/People.html:71 html/Ticket/Elements/EditPeople:77 -msgid "Administrative Cc" -msgstr "Cc Administrativo" - -#: NOT FOUND IN SOURCE -msgid "Admins" -msgstr "Administradores" - -#: html/Ticket/Elements/Tabs:218 -msgid "Advanced" -msgstr "Avançado" - -#: NOT FOUND IN SOURCE -msgid "Advanced Search" -msgstr "Busca avançada" - -#: html/Elements/SelectDateRelation:59 -msgid "After" -msgstr "Depois de" - -#: NOT FOUND IN SOURCE -msgid "Age" -msgstr "Idade" - -#: html/Search/Elements/PickCriteria:54 -msgid "Aggregator" -msgstr "Agregador" - -#: NOT FOUND IN SOURCE -msgid "Alias for" -msgstr "Aliás para" - -#: etc/initialdata:363 -msgid "All Approvals Passed" -msgstr "Todas as Aprovações Concedidas" - -#: NOT FOUND IN SOURCE -msgid "All Custom Fields" -msgstr "Todos os Campos Personalizados" - -#: html/Admin/Queues/index.html:77 -msgid "All Queues" -msgstr "Todas as filas" - -#: NOT FOUND IN SOURCE -msgid "Always sends a message to the requestors independent of message sender" -msgstr "" -"Sempre envia uma mensagem para os requisitantes independentemente do " -"remetente" - -#: html/Search/Elements/EditQuery:58 -msgid "And/Or" -msgstr "E/Ou" - -#: html/Admin/CustomFields/Modify.html:75 html/Admin/Elements/CustomFieldTabs:85 -msgid "Applies to" -msgstr "Aplica-se a" - -#: html/Search/Edit.html:66 -msgid "Apply" -msgstr "Aplicar" - -#: html/Search/Edit.html:66 -msgid "Apply your changes" -msgstr "Aplicar suas alterações" - -#: html/Elements/Tabs:80 -msgid "Approval" -msgstr "Aprovação" - -#: html/Approvals/Display.html:67 html/Approvals/Elements/ShowDependency:65 html/Approvals/index.html:88 -#. ($ticket->id, $msg) -#. ($Ticket->Id, $Ticket->Subject) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Approval #%1: %2" -msgstr "Aprovação #%1: %2" - -#: html/Approvals/index.html:77 -#. ($ticket->Id) -msgid "Approval #%1: Notes not recorded due to a system error" -msgstr "Aprovação #%1: Anotações não registradas devido a um erro de sistema" - -#: html/Approvals/index.html:75 -#. ($ticket->Id) -msgid "Approval #%1: Notes recorded" -msgstr "Aprovação #%1: Anotações registradas" - -#: NOT FOUND IN SOURCE -msgid "Approval Details" -msgstr "Detalhes da Aprovação" - -#: etc/initialdata:351 -msgid "Approval Passed" -msgstr "Aprovação Concedida" - -#: etc/initialdata:374 -msgid "Approval Rejected" -msgstr "Aprovação Rejeitada" - -#: NOT FOUND IN SOURCE -msgid "Approval diagram" -msgstr "Diagrama da aprovação" - -#: html/Approvals/Elements/Approve:71 -msgid "Approve" -msgstr "Aprove" - -#: etc/initialdata:504 -msgid "Approver's notes: %1" -msgstr "Anotações do aprovador: %1" - -#: lib/RT/Date.pm:446 -msgid "Apr." -msgstr "Abr." - -#: NOT FOUND IN SOURCE -msgid "April" -msgstr "Abril" - -#: html/Search/Elements/DisplayOptions:83 -msgid "Asc" -msgstr "" - -#: html/Elements/SelectSortOrder:58 -msgid "Ascending" -msgstr "Ascendente" - -#: lib/RT/Queue_Overlay.pm:98 -msgid "Assign and remove custom fields" -msgstr "Definir e remover campos personalizados" - -#: lib/RT/Queue_Overlay.pm:98 -msgid "AssignCustomFields" -msgstr "DefinirCamposPersonalizados" - -#: html/Search/Bulk.html:144 html/SelfService/Update.html:89 html/Ticket/ModifyAll.html:117 html/Ticket/Update.html:118 -msgid "Attach" -msgstr "Anexar" - -#: html/SelfService/Create.html:94 html/Ticket/Create.html:145 -msgid "Attach file" -msgstr "Anexar arquivo" - -#: html/SelfService/Update.html:77 html/Ticket/Create.html:133 html/Ticket/Update.html:96 -msgid "Attached file" -msgstr "Arquivo anexado" - -#: html/Ticket/ShowEmailRecord.html:54 html/Ticket/ShowEmailRecord.html:58 html/Ticket/ShowEmailRecord.html:61 -#. ($Attachment) -msgid "Attachment '%1' could not be loaded" -msgstr "Arquivo anexo '%1' não pôde ser carregado" - -#: lib/RT/Transaction_Overlay.pm:510 -msgid "Attachment created" -msgstr "Arquivo anexo criado" - -#: lib/RT/Tickets_Overlay.pm:2061 -msgid "Attachment filename" -msgstr "Nome do arquivo anexo" - -#: html/Ticket/Elements/ShowAttachments:49 -msgid "Attachments" -msgstr "Arquivos anexos" - -#: lib/RT/Attributes_Overlay.pm:173 -msgid "Attribute Deleted" -msgstr "Atributo Removido" - -#: lib/RT/Date.pm:450 -msgid "Aug." -msgstr "Ago." - -#: NOT FOUND IN SOURCE -msgid "August" -msgstr "Agosto" - -#: NOT FOUND IN SOURCE -msgid "AuthSystem" -msgstr "Sistema de autenticação" - -#: etc/initialdata:221 -msgid "Autoreply" -msgstr "RespostaAutomatica" - -#: etc/initialdata:72 -msgid "Autoreply To Requestors" -msgstr "Responder Automaticamente para Requisitantes" - -#: NOT FOUND IN SOURCE -msgid "AutoreplyToRequestors" -msgstr "AutoreplyToRequestors" - -#: html/Widgets/SelectionBox:191 -msgid "Available" -msgstr "Disponível" - -#: NOT FOUND IN SOURCE -msgid "Bad PGP Signature: %1\\n" -msgstr "Assinatura PGP inválida: %1\\n" - -#: NOT FOUND IN SOURCE -msgid "Bad attachment id. Couldn't find attachment '%1'\\n" -msgstr "" -"Identificador de arquivo anexo inválido. Não foi possível encontrar o arquivo '%" -"1'\\n" - -#: NOT FOUND IN SOURCE -msgid "Bad data in %1" -msgstr "Dados inválidos em %1" - -#: NOT FOUND IN SOURCE -msgid "Bad transaction number for attachment. %1 should be %2\\n" -msgstr "Número inválido de transação para o arquivo anexo. %1 deveria ser %2\\n" - -#: html/Admin/Elements/CustomFieldTabs:67 html/Admin/Elements/GroupTabs:62 html/Admin/Elements/QueueTabs:62 html/Admin/Elements/UserTabs:60 html/Ticket/Elements/Tabs:115 html/User/Elements/GroupTabs:61 -msgid "Basics" -msgstr "Básicos" - -#: html/Ticket/Update.html:90 -msgid "Bcc" -msgstr "Bcc" - -#: html/Admin/CustomFields/GroupRights.html:93 html/Admin/CustomFields/UserRights.html:76 html/Admin/Elements/EditScrip:91 -msgid "Be sure to save your changes" -msgstr "Não se esqueça de salvar suas alterações" - -#: html/Elements/SelectDateRelation:57 lib/RT/CurrentUser.pm:363 -msgid "Before" -msgstr "Antes de" - -#: NOT FOUND IN SOURCE -msgid "Begin Approval" -msgstr "Incício da Aprovação" - -#: html/Elements/Logo:49 -msgid "Best Practical Solutions, LLC corporate logo" -msgstr "" - -#: etc/initialdata:217 -msgid "Blank" -msgstr "Vazio" - -#: html/Search/Elements/EditFormat:86 -msgid "Bold" -msgstr "Negrito" - -#: NOT FOUND IN SOURCE -msgid "Bookmarkable URL for this search" -msgstr "URL para guardar esta busca em Favoritos" - -#: html/Search/Results.html:81 -msgid "Bookmarkable link" -msgstr "Atalho para Favoritos" - -#: html/Ticket/Elements/ShowHistory:66 html/Ticket/Elements/ShowHistory:71 -msgid "Brief headers" -msgstr "Cabeçalhos resumidos" - -#: html/Ticket/Elements/Tabs:228 -msgid "Bulk Update" -msgstr "Atualização em Massa" - -#: NOT FOUND IN SOURCE -msgid "Bulk ticket update" -msgstr "Atualização de tíquetes em lote" - -#: lib/RT/User_Overlay.pm:1855 -msgid "Can not modify system users" -msgstr "Não é possível modificar os usuários do sistema" - -#: lib/RT/Queue_Overlay.pm:93 -msgid "Can this principal see this queue" -msgstr "Este Usuário/Grupo pode ver esta fila" - -#: lib/RT/CustomField_Overlay.pm:382 -msgid "Can't add a custom field value without a name" -msgstr "Não é possível adicionar um valor de campo personalizado sem um nome" - -#: html/Admin/CustomFields/Objects.html:88 -#. ($Class) -msgid "Can't find a collection class for '%1'" -msgstr "Não foi encontrada uma classe de coleta para '%1'" - -#: html/Search/Build.html:288 -msgid "Can't find a saved search to work with" -msgstr "Não foi encontrada uma busca salva para ser trabalhada" - -#: lib/RT/Link_Overlay.pm:161 -msgid "Can't link a ticket to itself" -msgstr "Não é possível vincular um tíquete a ele mesmo" - -#: NOT FOUND IN SOURCE -msgid "Can't merge into a merged ticket. You should never get this error" -msgstr "Não é possível unir a um tíquete já unido. Você nunca deve obter este erro" - -#: html/Widgets/SavedSearch:110 -#. (loc($self->{SearchType})) -msgid "Can't save %1" -msgstr "Não é possível salvar %1" - -#: html/Search/Build.html:292 -msgid "Can't save this search" -msgstr "Não é possível salvar esta busca" - -#: lib/RT/Record.pm:1304 lib/RT/Record.pm:1380 -msgid "Can't specifiy both base and target" -msgstr "Não especifique origem e destino simultaneamente" - -#: html/autohandler:206 -#. ($msg) -msgid "Cannot create user: %1" -msgstr "Não é possível criar o usuário: %1" - -#: html/Admin/Elements/AddCustomFieldValue:64 html/Admin/Elements/EditCustomFieldValues:60 -msgid "Category" -msgstr "Categoria" - -#: etc/initialdata:50 html/Admin/Queues/People.html:67 html/SelfService/Create.html:73 html/Ticket/Create.html:90 html/Ticket/Elements/EditPeople:74 html/Ticket/Elements/ShowPeople:58 html/Ticket/Update.html:85 lib/RT/ACE_Overlay.pm:114 -msgid "Cc" -msgstr "" - -#: html/SelfService/Prefs.html:54 -msgid "Change password" -msgstr "Mudar a senha" - -#: html/Elements/Submit:80 -msgid "Check All" -msgstr "Marcar Tudo" - -#: html/SelfService/Update.html:80 html/Ticket/Create.html:136 html/Ticket/Update.html:99 -msgid "Check box to delete" -msgstr "Marcar caixa para remover" - -#: html/Admin/Elements/SelectRights:57 -msgid "Check box to revoke right" -msgstr "Marcar caixa para revogar o direito de acesso" - -#: html/Elements/EditLinks:149 html/Elements/EditLinks:86 html/Elements/ShowLinks:80 html/Ticket/Create.html:225 html/Ticket/Elements/BulkLinks:66 -msgid "Children" -msgstr "Filhos" - -#: html/NoAuth/js/util.js:203 -msgid "Choose a date" -msgstr "Escolher uma data" - -#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:143 -msgid "City" -msgstr "Cidade" - -#: html/Widgets/SelectionBox:214 -msgid "Clear" -msgstr "Limpar" - -#: html/Elements/Submit:82 -msgid "Clear All" -msgstr "Limpar Tudo" - -#: html/Helpers/CalPopup.html:53 -msgid "Close window" -msgstr "Fechar janela" - -#: html/Ticket/Elements/ShowDates:70 -msgid "Closed" -msgstr "Fechado" - -#: NOT FOUND IN SOURCE -msgid "Closed requests" -msgstr "Requisições fechadas" - -#: html/SelfService/Closed.html:48 html/SelfService/Elements/Tabs:81 -msgid "Closed tickets" -msgstr "Tíquetes fechados" - -#: NOT FOUND IN SOURCE -msgid "Code" -msgstr "Código" - -#: lib/RT/CustomField_Overlay.pm:91 -msgid "Combobox: Select or enter multiple values" -msgstr "CaixaCombinada: Selecionar on informar múltiplos valores" - -#: lib/RT/CustomField_Overlay.pm:92 -msgid "Combobox: Select or enter one value" -msgstr "CaixaCombinada: Selecionar ou informar um valor" - -#: lib/RT/CustomField_Overlay.pm:93 -msgid "Combobox: Select or enter up to %1 values" -msgstr "CaixaCombinada: Selecionar ou informar até %1 valores" - -#: NOT FOUND IN SOURCE -msgid "Command not understood!\\n" -msgstr "Comando não entendido!\\n" - -#: html/Ticket/Elements/ShowTransaction:190 html/Ticket/Elements/Tabs:187 -msgid "Comment" -msgstr "Comentar" - -#: html/Admin/Queues/Modify.html:81 -msgid "Comment Address" -msgstr "Endereço de Comentário" - -#: NOT FOUND IN SOURCE -msgid "Comment not recorded" -msgstr "Comentário não registrado" - -#: lib/RT/Queue_Overlay.pm:113 -msgid "Comment on tickets" -msgstr "Comente sobre os tíquetes" - -#: lib/RT/Queue_Overlay.pm:113 -msgid "CommentOnTicket" -msgstr "CommetarioNoTiquete" - -#: html/Tools/MyDay.html:67 -msgid "Comments" -msgstr "Comentários" - -#: html/Ticket/ModifyAll.html:93 html/Ticket/Update.html:77 -msgid "Comments (Not sent to requestors)" -msgstr "Comentários (não enviados aos requisitantes)" - -#: html/Search/Bulk.html:130 -msgid "Comments (not sent to requestors)" -msgstr "Comentários (não enviados aos requisitantes)" - -#: NOT FOUND IN SOURCE -msgid "Comments about %1" -msgstr "Comentários sobre %1" - -#: html/Admin/Users/Modify.html:229 html/Ticket/Elements/ShowRequestor:69 -msgid "Comments about this user" -msgstr "Comentários sobre este usuário" - -#: lib/RT/Transaction_Overlay.pm:655 -msgid "Comments added" -msgstr "Comentários adicionados" - -#: lib/RT/Action/Generic.pm:177 -msgid "Commit Stubbed" -msgstr "Execução Abortada" - -#: NOT FOUND IN SOURCE -msgid "Compile Restrictions" -msgstr "Compilar restrições" - -#: html/Admin/Elements/EditScrip:61 -msgid "Condition" -msgstr "Condição" - -#: lib/RT/Scrip_Overlay.pm:186 -msgid "Condition is mandatory argument" -msgstr "Condição é um argumento obrigatório" - -#: bin/rt-crontool:153 -msgid "Condition matches..." -msgstr "Condição satisfeita..." - -#: lib/RT/Scrip_Overlay.pm:190 -msgid "Condition not found" -msgstr "Condição não encontrada" - -#: html/Elements/Tabs:87 -msgid "Configuration" -msgstr "Configuração" - -#: html/SelfService/Prefs.html:56 -msgid "Confirm" -msgstr "Confirmar" - -#: NOT FOUND IN SOURCE -msgid "ContactInfoSystem" -msgstr "Informação de contato" - -#: NOT FOUND IN SOURCE -msgid "Contacted date '%1' could not be parsed" -msgstr "Data de contato '%1' não pôde ser entendida" - -#: html/Admin/Elements/ModifyTemplate:67 html/Elements/SelectAttachmentField:50 html/Ticket/ModifyAll.html:121 -msgid "Content" -msgstr "Conteúdo" - -#: html/Elements/SelectAttachmentField:51 -msgid "Content-Type" -msgstr "Tipo-de-Conteúdo" - -#: NOT FOUND IN SOURCE -msgid "Coould not create group" -msgstr "Não foi possível criar o grupo" - -#: html/Search/Elements/EditSearches:67 -msgid "Copy" -msgstr "Copiar" - -#: etc/initialdata:286 -msgid "Correspondence" -msgstr "Correspondência" - -#: NOT FOUND IN SOURCE -msgid "Correspondence Address" -msgstr "Endereço de correspondência" - -#: lib/RT/Transaction_Overlay.pm:651 -msgid "Correspondence added" -msgstr "Correspondência adicionada" - -#: NOT FOUND IN SOURCE -msgid "Correspondence not recorded" -msgstr "Correspondência não registrada" - -#: NOT FOUND IN SOURCE -msgid "Could not add new custom field value for ticket. " -msgstr "Não foi possível adicionar novo valor de campo personalizado para o tíquete. " - -#: NOT FOUND IN SOURCE -msgid "Could not add new custom field value for ticket. %1 " -msgstr "Não foi possível adicionar novo valor de campo personalizado para o tíquete. %1" - -#: NOT FOUND IN SOURCE -msgid "Could not add new custom field value. " -msgstr "Não foi possível adicionar novo valor do campo personalizado." - -#: NOT FOUND IN SOURCE -msgid "Could not add new custom field value. %1 " -msgstr "Não foi possível adicionar novo valor do campo personalizado. %1" - -#: lib/RT/Record.pm:1682 lib/RT/Record.pm:1729 -#. ($value_msg) -msgid "Could not add new custom field value: %1" -msgstr "Não foi possível adicionar novo valor do campo personalizado: %1" - -#: lib/RT/Ticket_Overlay.pm:3071 lib/RT/Ticket_Overlay.pm:3079 lib/RT/Ticket_Overlay.pm:3096 -msgid "Could not change owner. " -msgstr "Não foi possível mudar o proprietário. " - -#: html/Admin/CustomFields/Modify.html:163 -#. ($msg) -msgid "Could not create CustomField" -msgstr "Não foi possível criar CampoPersonalizado" - -#: html/Admin/Elements/EditCustomField:115 -#. ($msg) -msgid "Could not create CustomField: %1" -msgstr "Não foi possível criar CampoPersonalizado: %1" - -#: html/User/Groups/Modify.html:100 lib/RT/Group_Overlay.pm:496 lib/RT/Group_Overlay.pm:503 -msgid "Could not create group" -msgstr "Não foi possível criar o grupo" - -#: html/Admin/Global/Template.html:98 html/Admin/Queues/Template.html:95 -#. ($msg) -msgid "Could not create template: %1" -msgstr "Não foi possível criar o modelo: %1" - -#: lib/RT/Ticket_Overlay.pm:1077 lib/RT/Ticket_Overlay.pm:409 -msgid "Could not create ticket. Queue not set" -msgstr "Não foi possível criar o tíquete. Fila não definida" - -#: lib/RT/User_Overlay.pm:257 lib/RT/User_Overlay.pm:271 lib/RT/User_Overlay.pm:280 lib/RT/User_Overlay.pm:289 lib/RT/User_Overlay.pm:298 lib/RT/User_Overlay.pm:312 lib/RT/User_Overlay.pm:322 lib/RT/User_Overlay.pm:498 -msgid "Could not create user" -msgstr "Não foi possível criar o usuário" - -#: NOT FOUND IN SOURCE -msgid "Could not create watcher for requestor" -msgstr "Não foi possível criar um observador para o requisitante" - -#: NOT FOUND IN SOURCE -msgid "Could not find a ticket with id %1" -msgstr "Não foi possível encontrar um tíquete com identificador %1" - -#: NOT FOUND IN SOURCE -msgid "Could not find group %1." -msgstr "Não foi possível encontrar o grupo %1." - -#: lib/RT/Queue_Overlay.pm:743 lib/RT/Ticket_Overlay.pm:1425 -msgid "Could not find or create that user" -msgstr "Não foi possível encontrar ou criar este usuário" - -#: lib/RT/Queue_Overlay.pm:804 lib/RT/Ticket_Overlay.pm:1506 -msgid "Could not find that principal" -msgstr "Não foi possível encontrar este usuário/grupo" - -#: NOT FOUND IN SOURCE -msgid "Could not find user %1." -msgstr "Não foi possível encontrar o usuário %1." - -#: html/Admin/CustomFields/Objects.html:71 -msgid "Could not load CustomField %1" -msgstr "Não foi possível caarregar CampoPersonalizado %1" - -#: html/Admin/Groups/Members.html:114 html/User/Groups/Members.html:113 html/User/Groups/Modify.html:105 -msgid "Could not load group" -msgstr "Não foi possível carregar o grupo" - -#: lib/RT/SavedSearch.pm:121 -#. ($privacy) -msgid "Could not load object for %1" -msgstr "Não foi possível carregar objeto para %1" - -#: lib/RT/SavedSearch.pm:199 -msgid "Could not load search attribute" -msgstr "Não foi possível carregar atributo de busca" - -#: lib/RT/Queue_Overlay.pm:763 -#. ($args{'Type'}) -msgid "Could not make that principal a %1 for this queue" -msgstr "Não foi possível fazer deste usuário/grupo um %1 desta fila" - -#: lib/RT/Ticket_Overlay.pm:1446 -#. ($self->loc($args{'Type'})) -msgid "Could not make that principal a %1 for this ticket" -msgstr "Não foi possível fazer deste usuário/grupo um %1 deste tíquete" - -#: lib/RT/Queue_Overlay.pm:862 -#. ($args{'Type'}) -msgid "Could not remove that principal as a %1 for this queue" -msgstr "Não foi possível remover este usuário/grupo como um %1 desta fila" - -#: NOT FOUND IN SOURCE -msgid "Could not remove that principal as a %1 for this ticket" -msgstr "Não foi possível remover este usuário/grupo como um %1 deste tíquete" - -#: lib/RT/User_Overlay.pm:193 -msgid "Could not set user info" -msgstr "Não foi possível definir informações sobre usuário" - -#: lib/RT/Transaction_Overlay.pm:161 -msgid "Couldn't add attachment" -msgstr "Não foi possível adicionar anexo" - -#: lib/RT/Group_Overlay.pm:1005 -msgid "Couldn't add member to group" -msgstr "Não foi possível adicionar o membro ao grupo" - -#: lib/RT/Record.pm:1741 lib/RT/Record.pm:1793 -#. ($Msg) -msgid "Couldn't create a transaction: %1" -msgstr "Não foi possível criar uma transação: %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't figure out what to do from gpg's reply\\n" -msgstr "Não sei o que fazer com a resposta do gpg\\n" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find group\\n" -msgstr "Não encontrei o grupo\\n" - -#: lib/RT/Record.pm:970 -msgid "Couldn't find row" -msgstr "Não foi possível encontrar o registro" - -#: lib/RT/Group_Overlay.pm:979 -msgid "Couldn't find that principal" -msgstr "Não foi possível encontrar este usuário/grupo" - -#: lib/RT/CustomField_Overlay.pm:412 -msgid "Couldn't find that value" -msgstr "Não foi possível encontrar este valor" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find that watcher" -msgstr "Não foi possível encontrar este observador" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find user\\n" -msgstr "Não foi possível encontrar o usuário\\n" - -#: lib/RT/CurrentUser.pm:147 -#. ($self->Id) -msgid "Couldn't load %1 from the users database.\\n" -msgstr "Não foi possível carregar %1 do banco de dados de usuários.\\n" - -#: html/Admin/CustomFields/UserRights.html:151 -#. ($id) -msgid "Couldn't load Class %1" -msgstr "Não foi possível carregar Classe %1" - -#: html/Admin/CustomFields/GroupRights.html:109 -#. ($id) -msgid "Couldn't load CustomField %1" -msgstr "Não foi possível carregar CampoPersonalizado %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load KeywordSelects." -msgstr "Não foi possível carregar os KeywordSelects." - -#: NOT FOUND IN SOURCE -msgid "Couldn't load RT config file '%1' %2" -msgstr "Não foi possível carregar o arquivo de configuração do RT '%1' %2" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load Scrips." -msgstr "Não foi possível carregar os Scrips." - -#: lib/RT/Ticket_Overlay.pm:2018 -#. ($self->Id) -msgid "Couldn't load copy of ticket #%1." -msgstr "Não foi possível carregar cópia do tíquete #%1." - -#: html/Admin/Groups/GroupRights.html:111 html/Admin/Groups/UserRights.html:98 -#. ($id) -msgid "Couldn't load group %1" -msgstr "Não foi possível carregar o grupo %1" - -#: lib/RT/Link_Overlay.pm:204 lib/RT/Link_Overlay.pm:213 lib/RT/Link_Overlay.pm:240 -msgid "Couldn't load link" -msgstr "Não foi possível carregar o vínculo" - -#: html/Admin/Elements/ObjectCustomFields:85 html/Admin/Queues/CustomFields.html:61 html/Admin/Users/CustomFields.html:61 -#. ($id) -msgid "Couldn't load object %1" -msgstr "Não foi possível carregar objeto %1" - -#: html/Admin/Queues/People.html:144 -#. ($id) -msgid "Couldn't load queue" -msgstr "Não foi possível carregar a fila" - -# -#: html/Admin/Queues/GroupRights.html:124 html/Admin/Queues/UserRights.html:95 -#. ($id) -msgid "Couldn't load queue %1" -msgstr "Não foi possível carregar a fila %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load scrip" -msgstr "Não foi possível carregar o scrip" - -#: html/Admin/Elements/EditScrip:128 html/Admin/Elements/EditScrip:169 -#. ($id) -msgid "Couldn't load scrip #%1" -msgstr "Não foi possível carregar scrip #%1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load template" -msgstr "Não foi possível carregar o modelo" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load that user (%1)" -msgstr "Não foi possível carregar este usuário (%1)" - -# -#: html/SelfService/Display.html:160 lib/RT/Action/CreateTickets.pm:682 -#. ($id) -msgid "Couldn't load ticket '%1'" -msgstr "Não foi possível carregar o tíquete '%1'" - -#: lib/RT/Ticket_Overlay.pm:2646 -#. ($args{'URI'}) -msgid "Couldn't resolve '%1' into a URI." -msgstr "Não foi possível resolver '%1' dentro de uma URI." - -#: html/Admin/Users/Modify.html:176 html/User/Prefs.html:155 -msgid "Country" -msgstr "País" - -#: html/Admin/Elements/CreateUserCalled:49 html/Admin/Elements/EditCustomField:86 html/Admin/Elements/EditScrip:135 html/Admin/Queues/Template.html:68 html/Elements/QuickCreate:67 html/Ticket/Create.html:170 html/Ticket/Create.html:237 -msgid "Create" -msgstr "Criar" - -#: etc/initialdata:135 -msgid "Create Tickets" -msgstr "Criar Tíquetes" - -#: html/Admin/CustomFields/Modify.html:152 html/Admin/Elements/EditCustomField:98 -msgid "Create a CustomField" -msgstr "Criar um CampoPersonalizado" - -#: html/Admin/Queues/CustomField.html:71 -#. ($QueueObj->Name()) -msgid "Create a CustomField for queue %1" -msgstr "Criar um Campo Personalizado para a fila %1" - -#: NOT FOUND IN SOURCE -msgid "Create a CustomField that applies to all queues" -msgstr "Criar um Campo Personalizado para todas as filas" - -#: NOT FOUND IN SOURCE -msgid "Create a new Custom Field" -msgstr "Criar um novo Campo Personalizado" - -#: NOT FOUND IN SOURCE -msgid "Create a new global Scrip" -msgstr "Criar um novo Scrip global" - -#: NOT FOUND IN SOURCE -msgid "Create a new global scrip" -msgstr "Criar um novo scrip global" - -#: html/Admin/Groups/Modify.html:105 html/Admin/Groups/Modify.html:131 -msgid "Create a new group" -msgstr "Criar um novo grupo" - -#: html/User/Groups/Modify.html:115 html/User/Groups/Modify.html:90 -msgid "Create a new personal group" -msgstr "Criar um novo grupo pessoal" - -#: NOT FOUND IN SOURCE -msgid "Create a new queue" -msgstr "Criar uma nova fila" - -#: NOT FOUND IN SOURCE -msgid "Create a new scrip" -msgstr "Criar um novo scrip" - -#: NOT FOUND IN SOURCE -msgid "Create a new template" -msgstr "Criar um novo modelo" - -#: html/Ticket/Create.html:49 html/Ticket/Create.html:53 html/Ticket/Create.html:62 -msgid "Create a new ticket" -msgstr "Criar um novo tíquete" - -#: html/Admin/Users/Modify.html:256 html/Admin/Users/Modify.html:318 -msgid "Create a new user" -msgstr "Criar um novo usuário" - -#: html/Admin/Queues/Modify.html:127 -msgid "Create a queue" -msgstr "Criar uma fila" - -#: NOT FOUND IN SOURCE -msgid "Create a queue called" -msgstr "Criar uma fila chamada" - -#: NOT FOUND IN SOURCE -msgid "Create a request" -msgstr "Criar uma requisição" - -#: html/Admin/Queues/Scrip.html:91 -#. ($QueueObj->Name) -msgid "Create a scrip for queue %1" -msgstr "Criar um scrip para a fila %1" - -#: html/Admin/Global/Template.html:92 html/Admin/Queues/Template.html:88 -msgid "Create a template" -msgstr "Criar um modelo" - -#: html/SelfService/Create.html:48 html/SelfService/CreateTicketInQueue.html:48 -msgid "Create a ticket" -msgstr "Criar um tíquete" - -#: NOT FOUND IN SOURCE -msgid "Create failed: %1 / %2 / %3 " -msgstr "Criação falhou: %1 / %2 / %3 " - -#: NOT FOUND IN SOURCE -msgid "Create failed: %1/%2/%3" -msgstr "Criação falhou: %1/%2/%3" - -# -#: etc/initialdata:137 -msgid "Create new tickets based on this scrip's template" -msgstr "Criar novos tíquetes baseados no modelo deste scrip" - -#: html/SelfService/Create.html:107 -msgid "Create ticket" -msgstr "Criar um tíquete" - -#: lib/RT/Queue_Overlay.pm:111 -msgid "Create tickets in this queue" -msgstr "Criar tíquetes nesta fila" - -#: lib/RT/CustomField_Overlay.pm:108 -msgid "Create, delete and modify custom fields" -msgstr "Criar, remover e modificar campos personalizados" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "Create, delete and modify queues" -msgstr "Criar, remover e modificar filas" - -#: NOT FOUND IN SOURCE -msgid "Create, delete and modify the members of any user's personal groups" -msgstr "Criar, remover e modificar os membros dos grupos pessoais de qualquer usuário" - -#: lib/RT/System.pm:82 -msgid "Create, delete and modify the members of personal groups" -msgstr "Criar, remover e modificar os membros de grupos pessoais" - -#: lib/RT/System.pm:83 -msgid "Create, delete and modify users" -msgstr "Criar, remover e modificar usuários" - -#: lib/RT/System.pm:89 -msgid "CreateSavedSearch" -msgstr "CriarBuscaSalva" - -# -#: lib/RT/Queue_Overlay.pm:111 -msgid "CreateTicket" -msgstr "CriarTiquete" - -#: html/Elements/SelectDateType:49 html/Ticket/Elements/ShowDates:50 lib/RT/Ticket_Overlay.pm:1171 -msgid "Created" -msgstr "Criado" - -#: html/Admin/CustomFields/Modify.html:165 html/Admin/Elements/EditCustomField:119 -#. ($CustomFieldObj->Name()) -msgid "Created CustomField %1" -msgstr "CampoPersonalizado %1 criado" - -#: html/Tools/Reports/Elements/Tabs:65 -msgid "Created in a date range" -msgstr "Criados em um intervalo de datas" - -#: NOT FOUND IN SOURCE -msgid "Created template %1" -msgstr "Modelo %1 criado" - -#: html/Tools/Reports/CreatedByDates.html:54 -msgid "Created tickets in period, grouped by status" -msgstr "Tíquetes criados no período, agrupados por estado" - -#: html/Search/Elements/PickBasics:104 -msgid "Creator" -msgstr "Criador" - -#: html/Elements/EditLinks:51 -msgid "Current Links" -msgstr "Relações atuais" - -# -#: html/Admin/Elements/EditScrips:53 -msgid "Current Scrips" -msgstr "Scrips Atuais" - -#: html/Admin/Groups/Members.html:62 html/User/Groups/Members.html:65 -msgid "Current members" -msgstr "Membros atuais" - -#: html/Admin/Elements/SelectRights:53 -msgid "Current rights" -msgstr "Direitos de acesso atuais" - -#: html/Search/Elements/EditQuery:49 -msgid "Current search" -msgstr "Busca atual" - -#: NOT FOUND IN SOURCE -msgid "Current search criteria" -msgstr "Critério de busca atual" - -#: html/Admin/Queues/People.html:64 html/Ticket/Elements/EditPeople:68 -msgid "Current watchers" -msgstr "Observadores atuais" - -#: NOT FOUND IN SOURCE -msgid "Custom Field #%1" -msgstr "Campo Personalizado #%1" - -#: html/Admin/Elements/SystemTabs:63 html/Admin/Elements/Tabs:64 html/Admin/Global/index.html:73 html/Admin/Users/Modify.html:209 html/Admin/index.html:79 html/Ticket/Elements/ShowSummary:58 -msgid "Custom Fields" -msgstr "Campos Personalizados" - -#: html/Admin/CustomFields/index.html:62 -#. ($lookup) -msgid "Custom Fields for %1" -msgstr "Campos Personalizados para %1" - -# -#: html/Admin/Elements/EditScrip:109 -msgid "Custom action cleanup code" -msgstr "Código de finalização de ação personalizada" - -# -#: html/Admin/Elements/EditScrip:105 -msgid "Custom action preparation code" -msgstr "Código de preparação de ação personalizada" - -# -#: html/Admin/Elements/EditScrip:101 -msgid "Custom condition" -msgstr "Condição personalizada" - -#: NOT FOUND IN SOURCE -msgid "Custom field %1 %2 %3" -msgstr "Campo personalizado %1 %2 %3" - -# -#: lib/RT/Tickets_Overlay.pm:2540 -#. ($CF->Name) -msgid "Custom field %1 has a value." -msgstr "Campo personalizado %1 tem um valor." - -# -#: lib/RT/Tickets_Overlay.pm:2536 -#. ($CF->Name) -msgid "Custom field %1 has no value." -msgstr "Campo personalizado %1 não tem valor." - -#: lib/RT/Record.pm:1614 lib/RT/Record.pm:1776 -#. ($args{'Field'}) -msgid "Custom field %1 not found" -msgstr "Campo personalizado %1 não encontrado" - -#: lib/RT/Report/Tickets.pm:120 lib/RT/Report/Tickets.pm:123 -#. ($cf) -#. ($obj->Name) -msgid "Custom field '%1'" -msgstr "Campo prsonalizado '%1'" - -#: NOT FOUND IN SOURCE -msgid "Custom field deleted" -msgstr "Campo personalizado removido" - -#: NOT FOUND IN SOURCE -msgid "Custom field not found" -msgstr "Campo personalizado não encontrado" - -#: lib/RT/CustomField_Overlay.pm:1160 -#. ($args{'Content'}, $self->Name) -msgid "Custom field value %1 could not be found for custom field %2" -msgstr "Valor de campo %1 não pôde ser encontrado para campo personalizado %2" - -#: NOT FOUND IN SOURCE -msgid "Custom field value changed from %1 to %2" -msgstr "O valor do campo personalizado foi mudado de %1 para %2" - -#: lib/RT/CustomField_Overlay.pm:422 -msgid "Custom field value could not be deleted" -msgstr "Valor do campo personalizado não pôde ser removido" - -#: lib/RT/CustomField_Overlay.pm:1172 -msgid "Custom field value could not be found" -msgstr "Valor de campo personalizado não pôde ser encontrado" - -#: lib/RT/CustomField_Overlay.pm:1174 lib/RT/CustomField_Overlay.pm:420 -msgid "Custom field value deleted" -msgstr "Valor do campo personalizado removido" - -#: html/Elements/SelectGroups:53 html/Elements/SelectUsers:53 lib/RT/Transaction_Overlay.pm:659 -msgid "CustomField" -msgstr "CampoPersonalizado" - -#: html/Prefs/MyRT.html:80 html/Prefs/Quicksearch.html:72 html/Prefs/Search.html:77 -msgid "Customize" -msgstr "Personalizar" - -#: NOT FOUND IN SOURCE -msgid "Data error" -msgstr "Erro de dado" - -#: html/SelfService/Display.html:63 html/Ticket/Create.html:205 html/Ticket/Elements/ShowSummary:91 html/Ticket/Elements/Tabs:118 html/Ticket/ModifyAll.html:67 -msgid "Dates" -msgstr "Datas" - -#: lib/RT/Date.pm:454 -msgid "Dec." -msgstr "Dez." - -#: NOT FOUND IN SOURCE -msgid "December" -msgstr "Dezembro" - -#: NOT FOUND IN SOURCE -msgid "Default Autoresponse Template" -msgstr "Modelo Padrão de RespostaAutomatica" - -#: etc/initialdata:222 -msgid "Default Autoresponse template" -msgstr "Modelo Padrão de RespostaAutomatica" - -#: html/Tools/Offline.html:63 -msgid "Default Queue" -msgstr "Fila Padrão" - -#: html/Tools/Offline.html:72 -msgid "Default Requestor" -msgstr "Requisitante Padrão" - -#: etc/initialdata:296 -msgid "Default admin comment template" -msgstr "Modelo padrão de comentário administrativo" - -#: etc/initialdata:275 -msgid "Default admin correspondence template" -msgstr "Modelo padrão de correspondência administrativa" - -#: etc/initialdata:287 -msgid "Default correspondence template" -msgstr "Modelo padrão de correspondência" - -#: etc/initialdata:253 -msgid "Default transaction template" -msgstr "Modelo padrão de transação" - -#: NOT FOUND IN SOURCE -msgid "Default: %1/%2 changed from %3 to %4" -msgstr "Padrão: %1/%2 mudou de %3 para %4" - -#: html/User/Delegation.html:48 html/User/Delegation.html:51 -msgid "Delegate rights" -msgstr "Delegar direitos de acesso" - -#: lib/RT/System.pm:86 -msgid "Delegate specific rights which have been granted to you." -msgstr "Delegar direitos específicos que foram outorgados a você." - -#: lib/RT/System.pm:86 -msgid "DelegateRights" -msgstr "DelegateRights" - -#: html/User/Elements/Tabs:61 -msgid "Delegation" -msgstr "Delegação" - -#: html/Admin/Elements/EditScrips:77 html/Search/Elements/EditFormat:105 html/Search/Elements/EditQuery:59 html/Search/Elements/EditSearches:65 html/Widgets/SelectionBox:212 -msgid "Delete" -msgstr "Remover" - -#: html/Admin/Elements/EditTemplates:81 -msgid "Delete Template" -msgstr "Remover Modelo" - -#: lib/RT/SavedSearch.pm:222 -#. ($msg) -msgid "Delete failed: %1" -msgstr "Remoção falhou: %1" - -#: html/Admin/Elements/EditScrips:76 -msgid "Delete selected scrips" -msgstr "Remover scrips selecionados" - -#: lib/RT/Queue_Overlay.pm:116 -msgid "Delete tickets" -msgstr "Remover tíquetes" - -#: html/Search/Bulk.html:161 -msgid "Delete values" -msgstr "Remover valores" - -#: lib/RT/Queue_Overlay.pm:116 -msgid "DeleteTicket" -msgstr "DeleteTicket" - -#: lib/RT/SavedSearch.pm:220 -msgid "Deleted search" -msgstr "Busca removida" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object could break referential integrity" -msgstr "Ao remover este objeto você pode quebrar a integridade referencial" - -#: lib/RT/Queue_Overlay.pm:396 -msgid "Deleting this object would break referential integrity" -msgstr "A remoção deste objeto quebra a integridade referencial" - -#: lib/RT/User_Overlay.pm:514 -msgid "Deleting this object would violate referential integrity" -msgstr "A remoção deste objeto viola a integridade referencial" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object would violate referential integrity." -msgstr "Remover este objeto violaria a integridade referencial" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object would violate referential integrity. That's bad." -msgstr "Remover este objeto violaria a integridade referencial. Isto é mau." - -#: html/Approvals/Elements/Approve:75 -msgid "Deny" -msgstr "Negar" - -#: html/Elements/EditLinks:141 html/Elements/EditLinks:68 html/Elements/ShowLinks:60 html/Ticket/Create.html:223 html/Ticket/Elements/BulkLinks:58 html/Ticket/Elements/ShowDependencies:55 -msgid "Depended on by" -msgstr "Dependem deste tíquete" - -#: NOT FOUND IN SOURCE -msgid "Dependencies: \\n" -msgstr "Dependências: \\n" - -#: lib/RT/Transaction_Overlay.pm:739 -#. ($value) -msgid "Dependency by %1 added" -msgstr "Dependência por %1 adicionada" - -#: lib/RT/Transaction_Overlay.pm:779 -#. ($value) -msgid "Dependency by %1 deleted" -msgstr "Dependência por %1 removida" - -#: lib/RT/Transaction_Overlay.pm:736 -#. ($value) -msgid "Dependency on %1 added" -msgstr "Dependência de %1 adicionada" - -#: lib/RT/Transaction_Overlay.pm:776 -#. ($value) -msgid "Dependency on %1 deleted" -msgstr "Dependência de %1 removida" - -#: html/Elements/EditLinks:137 html/Elements/EditLinks:59 html/Elements/SelectLinkType:50 html/Elements/ShowLinks:50 html/Ticket/Create.html:222 html/Ticket/Elements/BulkLinks:54 html/Ticket/Elements/ShowDependencies:48 -msgid "Depends on" -msgstr "Depende de" - -#: NOT FOUND IN SOURCE -msgid "DependsOn" -msgstr "DependeDe" - -#: html/Search/Elements/DisplayOptions:88 -msgid "Desc" -msgstr "" - -#: html/Elements/SelectSortOrder:58 -msgid "Descending" -msgstr "Descendente" - -#: html/SelfService/Create.html:102 html/Ticket/Create.html:154 -msgid "Describe the issue below" -msgstr "Descreva o problema abaixo" - -#: html/Admin/CustomFields/Modify.html:63 html/Admin/Elements/AddCustomFieldValue:59 html/Admin/Elements/EditCustomField:62 html/Admin/Elements/EditCustomFieldValues:58 html/Admin/Elements/EditScrip:57 html/Admin/Elements/ModifyTemplate:59 html/Admin/Groups/Modify.html:73 html/Admin/Queues/Modify.html:71 html/Search/Elements/EditSearches:58 html/User/Groups/Modify.html:72 -msgid "Description" -msgstr "Descrição" - -#: NOT FOUND IN SOURCE -msgid "Details" -msgstr "Detalhes" - -#: html/Search/Elements/EditFormat:73 html/Ticket/Elements/Tabs:110 -msgid "Display" -msgstr "Mostrar" - -#: lib/RT/Queue_Overlay.pm:95 -msgid "Display Access Control List" -msgstr "Mostrar Lista de Controle de Acesso" - -#: html/Search/Elements/DisplayOptions:48 -msgid "Display Columns" -msgstr "Mostrar Colunas" - -#: lib/RT/Queue_Overlay.pm:101 -msgid "Display Scrip templates for this queue" -msgstr "Mostrar os modelos de Scrip desta fila" - -#: lib/RT/Queue_Overlay.pm:104 -msgid "Display Scrips for this queue" -msgstr "Mostrar os Scrips desta fila" - -#: html/Ticket/Elements/ShowHistory:61 -msgid "Display mode" -msgstr "Modo de apresentação" - -#: lib/RT/Group_Overlay.pm:170 -msgid "Display saved searches for this group" -msgstr "Mostrar buscas salvas deste grupo" - -#: NOT FOUND IN SOURCE -msgid "Display ticket #%1" -msgstr "Apresentar o tíquete #%1" - -#: html/Elements/Footer:63 -msgid "Distributed under version 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> of the GNU GPL.</a>" -msgstr "Distribuido sob a versão 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> da GNU GPL.</a>" - -#: lib/RT/System.pm:77 -msgid "Do anything and everything" -msgstr "Fazer qualquer coisa" - -#: html/Elements/Refresh:53 -msgid "Don't refresh this page." -msgstr "Não recarregar esta página." - -#: NOT FOUND IN SOURCE -msgid "Don't show search results" -msgstr "Não mostrar resultados da busca" - -#: html/Ticket/Elements/ShowTransactionAttachments:84 -msgid "Download" -msgstr "Baixar" - -#: html/Admin/Groups/index.html:63 html/Admin/Users/index.html:66 -msgid "Download as a tab-delimited file" -msgstr "Baixar como um arquivo com campos delimitados por tabulação" - -#: html/Elements/SelectDateType:55 html/Ticket/Create.html:211 html/Ticket/Elements/EditDates:68 html/Ticket/Elements/Reminders:135 html/Ticket/Elements/ShowDates:66 lib/RT/Ticket_Overlay.pm:1175 -msgid "Due" -msgstr "Vencido" - -#: NOT FOUND IN SOURCE -msgid "Due date '%1' could not be parsed" -msgstr "A data de vencimento '%1' não pôde ser entendida" - -#: NOT FOUND IN SOURCE -msgid "ERROR: Couldn't load ticket '%1': %2.\\n" -msgstr "ERRO: Não foi possível carregar o tíquete '%1': %2.\\n" - -#: html/Elements/Quicksearch:50 html/Elements/ShowSearch:51 html/index.html:109 -msgid "Edit" -msgstr "Editar" - -#: NOT FOUND IN SOURCE -msgid "Edit Conditions" -msgstr "Editar Condições" - -#: html/Search/Bulk.html:151 -msgid "Edit Custom Fields" -msgstr "Editar Campos Personalizados" - -#: html/Admin/Elements/ObjectCustomFields:94 html/Admin/Queues/CustomFields.html:66 html/Admin/Users/CustomFields.html:66 -#. ($Object->Name) -msgid "Edit Custom Fields for %1" -msgstr "Editar Campos Personalizados para %1" - -#: html/Admin/Global/CustomFields/Groups.html:56 -msgid "Edit Custom Fields for all groups" -msgstr "Editar Campos Personalizados para todos os grupos" - -#: html/Admin/Global/CustomFields/Users.html:56 -msgid "Edit Custom Fields for all users" -msgstr "Editar Campos Personalizados para todos os usuários" - -#: html/Admin/Global/CustomFields/Queue-Tickets.html:56 html/Admin/Global/CustomFields/Queue-Transactions.html:56 -msgid "Edit Custom Fields for tickets in all queues" -msgstr "Editar Campos Personalizados para tíquetes em todas as filas" - -#: html/Search/Bulk.html:190 html/Ticket/ModifyLinks.html:59 -msgid "Edit Links" -msgstr "Editar Vínculos" - -#: html/Search/Edit.html:70 -msgid "Edit Query" -msgstr "Editar Consulta" - -#: html/Ticket/Elements/Tabs:216 -msgid "Edit Search" -msgstr "Editar Busca" - -#: html/Admin/Queues/Templates.html:65 -#. ($QueueObj->Name) -msgid "Edit Templates for queue %1" -msgstr "Editar Modelos para a fila %1" - -#: NOT FOUND IN SOURCE -msgid "Edit keywords" -msgstr "Editar palavras chave" - -#: lib/RT/Group_Overlay.pm:169 -msgid "Edit saved searches for this group" -msgstr "Editar buscas salvas deste grupo" - -#: NOT FOUND IN SOURCE -msgid "Edit scrips" -msgstr "Editar scrips" - -#: html/Admin/Elements/GlobalCustomFieldTabs:62 html/Admin/Global/index.html:69 -msgid "Edit system templates" -msgstr "Editar os modelos do sistema" - -#: NOT FOUND IN SOURCE -msgid "Edit templates for %1" -msgstr "Editar os modelos para %1" - -#: lib/RT/Group_Overlay.pm:169 -msgid "EditSavedSearches" -msgstr "EditBuscasSalvas" - -#: html/Admin/Queues/Modify.html:142 -#. ($QueueObj->Name) -msgid "Editing Configuration for queue %1" -msgstr "Editando a configuração para a fila %1" - -#: NOT FOUND IN SOURCE -msgid "Editing Configuration for user %1" -msgstr "Editando a configuração para o usuário %1" - -#: html/Admin/CustomFields/Modify.html:169 html/Admin/Elements/EditCustomField:122 -#. ($CustomFieldObj->Name()) -msgid "Editing CustomField %1" -msgstr "Editando o campo %1" - -#: html/Admin/Groups/Members.html:55 -#. ($Group->Name) -msgid "Editing membership for group %1" -msgstr "Editando afiliados do grupo %1" - -#: html/User/Groups/Members.html:152 -#. ($Group->Name) -msgid "Editing membership for personal group %1" -msgstr "Editando afiliados do grupo pessoal %1" - -#: NOT FOUND IN SOURCE -msgid "Editing template %1" -msgstr "Editando o modelo %1" - -#: lib/RT/Record.pm:1317 lib/RT/Record.pm:1394 lib/RT/Ticket_Overlay.pm:2521 lib/RT/Ticket_Overlay.pm:2611 -msgid "Either base or target must be specified" -msgstr "Você deve especificar a origem ou o destinatário" - -#: html/Admin/Users/Modify.html:76 html/Ticket/Elements/AddWatchers:79 html/User/Prefs.html:67 -msgid "Email" -msgstr "E-mail" - -#: lib/RT/User_Overlay.pm:237 -msgid "Email address in use" -msgstr "O endereço de e-mail já está em uso" - -#: NOT FOUND IN SOURCE -msgid "EmailAddress" -msgstr "Correio Eletrônico" - -#: NOT FOUND IN SOURCE -msgid "EmailEncoding" -msgstr "CodificaçãoDeE-mail" - -#: html/Admin/CustomFields/Modify.html:100 html/Admin/Elements/EditCustomField:74 -msgid "Enabled (Unchecking this box disables this custom field)" -msgstr "Ativo (Desmarcar esta caixa desativa este campo personalizado)" - -#: html/Admin/Groups/Modify.html:89 html/User/Groups/Modify.html:76 -msgid "Enabled (Unchecking this box disables this group)" -msgstr "Ativo (Desmarcar esta caixa desativa este grupo)" - -#: html/Admin/Queues/Modify.html:107 -msgid "Enabled (Unchecking this box disables this queue)" -msgstr "Ativa (Desmarcar esta caixa desativa esta fila" - -#: NOT FOUND IN SOURCE -msgid "Enabled Custom Fields" -msgstr "Campos Personalizados Habilitados" - -#: html/Admin/Queues/index.html:80 -msgid "Enabled Queues" -msgstr "Filas Ativas" - -#: html/Admin/Elements/EditCustomField:138 html/Admin/Groups/Modify.html:156 html/Admin/Users/Modify.html:354 html/User/Groups/Modify.html:140 -#. (loc_fuzzy($msg)) -msgid "Enabled status %1" -msgstr "Estado %1 ativado" - -#: html/Admin/CustomFields/Modify.html:187 html/Admin/Queues/Modify.html:164 -#. (loc_fuzzy($msg)) -msgid "Enabled status: %1" -msgstr "Ativado estado: %1" - -#: lib/RT/CustomField_Overlay.pm:66 -msgid "Enter multiple values" -msgstr "Informar valores múltiplos" - -#: html/Elements/EditLinks:127 -msgid "Enter objects or URIs to link objects to. Separate multiple entries with spaces." -msgstr "Informar objetos ou URIs para vincular aos objetos. Separar entradas múltiplas com espaço." - -#: lib/RT/CustomField_Overlay.pm:67 -msgid "Enter one value" -msgstr "Informar um valor" - -#: html/Elements/EditLinks:124 -msgid "Enter queues or URIs to link queues to. Separate multiple entries with spaces." -msgstr "Informar filas ou URIs para ligar às filas. Separar entradas múltiplas com espaço." - -#: html/Elements/EditLinks:120 html/Search/Bulk.html:191 -msgid "Enter tickets or URIs to link tickets to. Separate multiple entries with spaces." -msgstr "Informar identificadores de tíquete ou URIs que levam ao tíquete. Separar entradas mútiplas com espaço." - -#: lib/RT/CustomField_Overlay.pm:68 -msgid "Enter up to %1 values" -msgstr "Informar até %1 valores" - -#: html/Elements/Login:78 html/SelfService/Error.html:48 html/SelfService/Error.html:49 -msgid "Error" -msgstr "Erro" - -#: NOT FOUND IN SOURCE -msgid "Error adding watcher" -msgstr "Erro ao adicionar um observador" - -#: lib/RT/Queue_Overlay.pm:674 -msgid "Error in parameters to Queue->AddWatcher" -msgstr "Erro nos parâmetros para Queue->AddWatcher" - -#: NOT FOUND IN SOURCE -msgid "Error in parameters to Queue->DelWatcher" -msgstr "Erro nos parâmetros para Queue->DelWatcher" - -#: lib/RT/Queue_Overlay.pm:835 -msgid "Error in parameters to Queue->DeleteWatcher" -msgstr "Erro em parâmetros para Fila->RemoverObservador" - -#: lib/RT/Ticket_Overlay.pm:1374 -msgid "Error in parameters to Ticket->AddWatcher" -msgstr "Erro nos parâmetros para Ticket->AddWatcher" - -#: NOT FOUND IN SOURCE -msgid "Error in parameters to Ticket->DelWatcher" -msgstr "Erro nos parâmetros para Ticket->DelWatcher" - -#: lib/RT/Ticket_Overlay.pm:1540 -msgid "Error in parameters to Ticket->DeleteWatcher" -msgstr "Erro em parâmetros para Tíquete->RemoverObservador" - -#: bin/rt-crontool:287 -msgid "Escalate tickets" -msgstr "Escalonar tíquetes" - -#: html/Ticket/Elements/ShowBasics:59 -msgid "Estimated" -msgstr "Estimado" - -#: etc/initialdata:20 -msgid "Everyone" -msgstr "Todos" - -#: bin/rt-crontool:273 -msgid "Example:" -msgstr "Exemplo:" - -#: html/Admin/Users/Modify.html:101 -msgid "Extra info" -msgstr "Informação adicional" - -#: lib/RT/SavedSearch.pm:179 -msgid "Failed to create search attribute" -msgstr "Falha ao criar atributo de busca" - -#: lib/RT/User_Overlay.pm:378 -msgid "Failed to find 'Privileged' users pseudogroup." -msgstr "Não foi possível encontrar o pseudogrupo de usuários 'Privileged'." - -#: lib/RT/User_Overlay.pm:385 -msgid "Failed to find 'Unprivileged' users pseudogroup" -msgstr "Não foi possível encontrar o pseudogrupo de usuários 'Unprivileged'" - -#: bin/rt-crontool:208 -#. ($modname, $@) -msgid "Failed to load module %1. (%2)" -msgstr "Falha ao carregar o módulo %1. (%2)" - -#: lib/RT/SavedSearch.pm:154 -#. ($privacy) -msgid "Failed to load object for %1" -msgstr "Falha ao carregar objeto para %1" - -#: lib/RT/Date.pm:444 -msgid "Feb." -msgstr "Fev." - -#: NOT FOUND IN SOURCE -msgid "February" -msgstr "Fevereiro" - -#: html/Elements/SelectAttachmentField:52 -msgid "Filename" -msgstr "Nome de arquivo" - -#: lib/RT/CustomField_Overlay.pm:71 -msgid "Fill in multiple text areas" -msgstr "Preencher múltiplas áreas de texto" - -#: lib/RT/CustomField_Overlay.pm:76 -msgid "Fill in multiple wikitext areas" -msgstr "Preencher múltiplas áreas de texto wiki" - -#: lib/RT/CustomField_Overlay.pm:72 -msgid "Fill in one text area" -msgstr "Preencher uma única área de texto" - -#: lib/RT/CustomField_Overlay.pm:77 -msgid "Fill in one wikitext area" -msgstr "Preencher uma única [area de texto wiki" - -#: html/Admin/CustomFields/Modify.html:109 html/Admin/CustomFields/Modify.html:120 -msgid "Fill in this field with a URL." -msgstr "Preencher este campo com uma URL." - -#: lib/RT/CustomField_Overlay.pm:73 -msgid "Fill in up to %1 text areas" -msgstr "Preencher até %1 áreas de texto" - -#: lib/RT/CustomField_Overlay.pm:78 -msgid "Fill in up to %1 wikitext areas" -msgstr "Preencher at[e %1 áreas de texto wiki" - -#: html/Search/Elements/PickBasics:151 html/Ticket/Create.html:184 html/Ticket/Elements/EditBasics:99 lib/RT/Tickets_Overlay.pm:1957 -msgid "Final Priority" -msgstr "Prioridade Final" - -#: lib/RT/Ticket_Overlay.pm:1166 -msgid "FinalPriority" -msgstr "PrioridadeFinal" - -#: NOT FOUND IN SOURCE -msgid "Find group whose" -msgstr "Encontrar grupo que" - -#: html/Admin/Groups/index.html:74 html/Admin/Queues/People.html:84 html/Ticket/Elements/EditPeople:57 -msgid "Find groups whose" -msgstr "Encontrar grupos que" - -#: NOT FOUND IN SOURCE -msgid "Find new/open tickets" -msgstr "Encontrar tíquetes novos/abertos" - -#: html/Admin/Queues/People.html:80 html/Admin/Users/index.html:72 html/Ticket/Elements/EditPeople:53 -msgid "Find people whose" -msgstr "Encontrar pessoas que" - -#: html/Search/Results.html:149 -msgid "Find tickets" -msgstr "Encontrar tíquetes" - -#: NOT FOUND IN SOURCE -msgid "Finish Approval" -msgstr "Terminar Aprovação" - -#: html/Ticket/Elements/Tabs:83 -msgid "First" -msgstr "Primeiro" - -#: NOT FOUND IN SOURCE -msgid "First page" -msgstr "Primeira página" - -#: docs/design_docs/string-extraction-guide.txt:33 lib/RT/StyleGuide.pod:764 -msgid "Foo Bar Baz" -msgstr "" - -#: docs/design_docs/string-extraction-guide.txt:24 lib/RT/StyleGuide.pod:755 -msgid "Foo!" -msgstr "" - -#: html/Search/Bulk.html:85 -msgid "Force change" -msgstr "Forçar alteração" - -#: html/Search/Elements/EditFormat:54 -msgid "Format" -msgstr "Formato" - -#: html/Search/Results.html:147 -#. ($ticketcount) -msgid "Found %quant(%1,ticket)" -msgstr "Encontrado(s) %quant(%1,tíquete(s)" - -#: lib/RT/Record.pm:973 -msgid "Found Object" -msgstr "Objeto Encontrado" - -#: lib/RT/Date.pm:423 -msgid "Fri." -msgstr "Sex." - -#: html/Ticket/Elements/ShowHistory:68 html/Ticket/Elements/ShowHistory:74 -msgid "Full headers" -msgstr "Cabeçalhos completos" - -#: html/Tools/Offline.html:87 -msgid "Get template from file" -msgstr "Pegar modelo do arquivo" - -#: NOT FOUND IN SOURCE -msgid "Getting the current user from a pgp sig\\n" -msgstr "Obtendo o usuário corrente a partir de uma assinatura pgp\\n" - -#: lib/RT/Transaction_Overlay.pm:705 -#. ($New->Name) -msgid "Given to %1" -msgstr "Dado a %1" - -#: html/Admin/Elements/Tabs:67 html/Admin/index.html:84 -msgid "Global" -msgstr "" - -#: html/Admin/Elements/EditCustomFields:57 -msgid "Global Custom Fields" -msgstr "Campos Personalizados Globais" - -#: NOT FOUND IN SOURCE -msgid "Global Keyword Selections" -msgstr "Seleções de Palavras Chave Globais" - -#: NOT FOUND IN SOURCE -msgid "Global Scrips" -msgstr "Scrips Globais" - -#: html/Admin/Global/CustomFields/index.html:61 -msgid "Global custom field configuration" -msgstr "Configuração de campos personalizados globais" - -#: html/Admin/Global/MyRT.html:95 -#. ($pane) -msgid "Global portlet %1 saved." -msgstr "Portlet global %1 salvo." - -#: html/Admin/Elements/SelectTemplate:61 -#. (loc($Template->Name)) -msgid "Global template: %1" -msgstr "Modelo global: %1" - -#: NOT FOUND IN SOURCE -msgid "Go" -msgstr "Ir" - -#: html/Admin/CustomFields/index.html:82 html/Admin/Groups/index.html:69 html/Admin/Groups/index.html:75 html/Admin/Queues/People.html:82 html/Admin/Queues/People.html:86 html/Admin/Queues/index.html:68 html/Admin/Users/index.html:75 html/Approvals/index.html:54 html/Elements/RefreshHomepage:50 html/Search/Results.html:76 html/Search/Results.html:92 html/Ticket/Elements/EditPeople:55 html/Ticket/Elements/EditPeople:59 html/Tools/Offline.html:91 -msgid "Go!" -msgstr "Ir!" - -#: NOT FOUND IN SOURCE -msgid "Good pgp sig from %1\\n" -msgstr "Assinatura pgp válida de %1\\n" - -#: NOT FOUND IN SOURCE -msgid "Goto page" -msgstr "Ir para a página" - -#: html/Elements/GotoTicket:48 html/SelfService/Elements/GotoTicket:48 -msgid "Goto ticket" -msgstr "Ir para o tíquete" - -#: html/Ticket/Elements/AddWatchers:69 html/Ticket/Elements/ShowGroupMembers:57 html/User/Elements/DelegateRights:101 -msgid "Group" -msgstr "Grupo" - -#: NOT FOUND IN SOURCE -msgid "Group %1 %2: %3" -msgstr "Grupo %1 %2: %3" - -#: html/Admin/Elements/CustomFieldTabs:70 html/Admin/Elements/GroupTabs:68 html/Admin/Elements/QueueTabs:84 html/Admin/Elements/SystemTabs:67 html/Admin/Global/index.html:78 -msgid "Group Rights" -msgstr "Direitos de Acesso do Grupo" - -#: lib/RT/Group_Overlay.pm:985 -msgid "Group already has member" -msgstr "O grupo já tem um membro" - -#: NOT FOUND IN SOURCE -msgid "Group could not be created." -msgstr "O grupo não pôde ser criado." - -#: html/Admin/Groups/Modify.html:115 -#. ($create_msg) -msgid "Group could not be created: %1" -msgstr "O grupo não pôde ser criado: %1" - -#: lib/RT/Group_Overlay.pm:523 -msgid "Group created" -msgstr "Grupo criado" - -#: lib/RT/Group_Overlay.pm:1157 -msgid "Group has no such member" -msgstr "O grupo não contém este membro" - -#: lib/RT/Group_Overlay.pm:965 lib/RT/Queue_Overlay.pm:750 lib/RT/Queue_Overlay.pm:810 lib/RT/Ticket_Overlay.pm:1432 lib/RT/Ticket_Overlay.pm:1512 -msgid "Group not found" -msgstr "Grupo não encontrado" - -#: NOT FOUND IN SOURCE -msgid "Group not found.\\n" -msgstr "Grupo não encontrado.\\n" - -#: NOT FOUND IN SOURCE -msgid "Group not specified.\\n" -msgstr "Grupo não especificado.\\n" - -#: html/Admin/Elements/GlobalCustomFieldTabs:61 html/Admin/Elements/SelectNewGroupMembers:59 html/Admin/Elements/Tabs:58 html/Admin/Global/CustomFields/index.html:71 html/Admin/Groups/Members.html:88 html/Admin/Queues/People.html:106 html/Admin/Users/Memberships.html:55 html/Admin/index.html:69 html/User/Groups/Members.html:90 lib/RT/CustomField_Overlay.pm:1213 -msgid "Groups" -msgstr "Grupos" - -#: lib/RT/Group_Overlay.pm:991 -msgid "Groups can't be members of their members" -msgstr "Grupos não podem ser membros de seus próprios membros" - -#: html/Admin/Groups/index.html:88 -msgid "Groups matching search criteria" -msgstr "Grupos que satisfazem ao critério de busca" - -#: html/Ticket/Elements/ShowRequestor:79 -msgid "Groups this user belongs to" -msgstr "Grupos a que este usuário pertence" - -#: lib/RT/Interface/CLI.pm:96 lib/RT/Interface/CLI.pm:96 -msgid "Hello!" -msgstr "Olá!" - -#: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:771 -#. ($name) -msgid "Hello, %1" -msgstr "Olá, %1" - -#: html/Admin/Elements/GroupTabs:72 html/Admin/Elements/UserTabs:66 html/Ticket/Elements/ShowHistory:55 html/Ticket/Elements/Tabs:113 -msgid "History" -msgstr "Histórico" - -#: html/Admin/Groups/History.html:64 -#. ($GroupObj->Name) -msgid "History of the group %1" -msgstr "Histórico do grupo %1" - -#: html/Admin/Users/History.html:64 -#. ($UserObj->Name) -msgid "History of the user %1" -msgstr "Histórico do usuário %1" - -#: NOT FOUND IN SOURCE -msgid "HomePhone" -msgstr "Telefone Residencial" - -#: html/Elements/Tabs:68 -msgid "Homepage" -msgstr "Início" - -#: html/Elements/SelectTimeUnits:50 -msgid "Hours" -msgstr "Horas" - -#: lib/RT/Base.pm:135 -#. (6) -msgid "I have %quant(%1,concrete mixer)." -msgstr "Eu tenho %quant(%1,concrete mixer)." - -#: NOT FOUND IN SOURCE -msgid "I have [quant,_1,concrete mixer]." -msgstr "Tenho [quant,_1,concrete mixer]." - -#: html/Search/Build.html:466 lib/RT/Report/Tickets.pm:417 -msgid "I'm lost" -msgstr "Estou perdido" - -#: html/Ticket/Elements/ShowBasics:50 lib/RT/Tickets_Overlay.pm:1882 -msgid "Id" -msgstr "Identificador" - -#: html/Admin/Users/Modify.html:67 html/User/Prefs.html:62 -msgid "Identity" -msgstr "Identidade" - -#: etc/initialdata:429 -msgid "If an approval is rejected, reject the original and delete pending approvals" -msgstr "" -"Se uma aprovação não é concedida, rejeitar o original e remover aprovações " -"pendentes" - -#: html/Tools/Offline.html:76 -msgid "If no Requestor is specified, create tickets with this requestor." -msgstr "" -"Se nenhum Requisitante for especificado, criar tíquetes com este " -"requisitante." - -#: html/Tools/Offline.html:67 -msgid "If no queue is specified, create tickets in this queue." -msgstr "Se nenhuma fila for especificada, criar tíquetes nesta fila." - -#: bin/rt-crontool:269 -msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." -msgstr "Se esta ferramenta estiver com setgid, um usuário local mal-intecionado pode conseguir acesso administrativo sobre o RT." - -#: html/Admin/Queues/People.html:128 html/Ticket/Modify.html:62 html/Ticket/ModifyAll.html:130 html/Ticket/ModifyPeople.html:62 -msgid "If you've updated anything above, be sure to" -msgstr "Se você alterou qualquer coisa acima, não se esqueça de" - -#: lib/RT/Record.pm:964 -msgid "Illegal value for %1" -msgstr "Valor ilegal para %1" - -#: lib/RT/Record.pm:967 -msgid "Immutable field" -msgstr "Campo imutável" - -#: NOT FOUND IN SOURCE -msgid "Include disabled custom fields in listing." -msgstr "Incluir campoas personalizados desabilitados na listagem." - -#: html/Admin/Groups/index.html:67 -msgid "Include disabled groups in listing." -msgstr "Incluir grupos inativos na listagem." - -#: html/Admin/Queues/index.html:67 -msgid "Include disabled queues in listing." -msgstr "Incluir filas inativas na listagem." - -#: html/Admin/Users/index.html:73 -msgid "Include disabled users in search." -msgstr "Incluir usuários inativos na busca." - -#: html/Admin/CustomFields/Modify.html:115 -msgid "Include page" -msgstr "Incluir página" - -#: html/Search/Build.html:492 lib/RT/Report/Tickets.pm:443 -msgid "Incomplete Query" -msgstr "Consulta Incompleta" - -#: html/Search/Build.html:489 lib/RT/Report/Tickets.pm:440 -msgid "Incomplete query" -msgstr "Consulta incompleta" - -#: html/Search/Elements/PickBasics:150 lib/RT/Tickets_Overlay.pm:1932 -msgid "Initial Priority" -msgstr "Prioridade Inicial" - -#: lib/RT/Ticket_Overlay.pm:1165 lib/RT/Ticket_Overlay.pm:1167 -msgid "InitialPriority" -msgstr "InitialPriority" - -#: lib/RT/ScripAction_Overlay.pm:135 -msgid "Input error" -msgstr "Erro de entrada" - -#: html/Elements/ValidateCustomFields:70 lib/RT/CustomField_Overlay.pm:1024 lib/RT/CustomField_Overlay.pm:1165 -#. ($CF->FriendlyPattern) -#. ($self->FriendlyPattern) -msgid "Input must match %1" -msgstr "Entrada precisa satisfazer %1" - -#: NOT FOUND IN SOURCE -msgid "Interest noted" -msgstr "Interesse notado" - -#: lib/RT/Ticket_Overlay.pm:3531 -msgid "Internal Error" -msgstr "Erro Interno" - -#: lib/RT/Record.pm:315 -#. ($id->{error_message}) -msgid "Internal Error: %1" -msgstr "Erro Interno: %1" - -#: lib/RT/Group_Overlay.pm:670 -msgid "Invalid Group Type" -msgstr "Tipo Inválido de Grupo" - -#: lib/RT/Principal_Overlay.pm:163 -msgid "Invalid Right" -msgstr "Direito Inválido" - -#: NOT FOUND IN SOURCE -msgid "Invalid Type" -msgstr "Tipo Inválido" - -#: lib/RT/Record.pm:969 -msgid "Invalid data" -msgstr "Dado inválido" - -#: NOT FOUND IN SOURCE -msgid "Invalid owner. Defaulting to 'nobody'." -msgstr "Proprietário inválido. Usando 'nobody'." - -#: lib/RT/CustomField_Overlay.pm:210 lib/RT/CustomField_Overlay.pm:681 -#. ($msg) -msgid "Invalid pattern: %1" -msgstr "Padrão inválido: %1" - -#: lib/RT/Scrip_Overlay.pm:159 lib/RT/Template_Overlay.pm:246 -msgid "Invalid queue" -msgstr "Fila inválida" - -#: lib/RT/ACE_Overlay.pm:266 lib/RT/ACE_Overlay.pm:275 lib/RT/ACE_Overlay.pm:281 lib/RT/ACE_Overlay.pm:292 -msgid "Invalid right" -msgstr "Direito de acesso inválido" - -#: lib/RT/Record.pm:290 -#. ($key) -msgid "Invalid value for %1" -msgstr "Valor inválido para %1" - -#: lib/RT/Record.pm:1632 -msgid "Invalid value for custom field" -msgstr "Valor inválido para campo personalizado" - -#: lib/RT/Ticket_Overlay.pm:426 -msgid "Invalid value for status" -msgstr "Valor inválido para estado" - -#: bin/rt-crontool:270 -msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." -msgstr "É muito importante que usuários não privilegiados não tenham permissão para utilizar esta ferramenta." - -#: bin/rt-crontool:271 -msgid "It is suggested that you create a non-privileged unix user with the correct group membership and RT access to run this tool." -msgstr "Sugere-se a criação de um usuário Unix não privilegiado com a correta filiação a grupo e com acesso ao RT para executar utilizar esta ferramenta." - -#: bin/rt-crontool:233 -msgid "It takes several arguments:" -msgstr "Requer vários argumentos:" - -#: html/Search/Elements/EditFormat:87 -msgid "Italic" -msgstr "Itálico" - -#: NOT FOUND IN SOURCE -msgid "Items pending my approval" -msgstr "Itens requerendo minha aprovação" - -#: lib/RT/Date.pm:443 -msgid "Jan." -msgstr "Jan." - -#: NOT FOUND IN SOURCE -msgid "January" -msgstr "Janeiro" - -#: lib/RT/Group_Overlay.pm:168 -msgid "Join or leave this group" -msgstr "Entre ou deixe este grupo" - -#: lib/RT/Date.pm:449 -msgid "Jul." -msgstr "Jul." - -#: NOT FOUND IN SOURCE -msgid "July" -msgstr "Julho" - -#: html/Ticket/Elements/Tabs:127 -msgid "Jumbo" -msgstr "Jumbo" - -#: lib/RT/Date.pm:448 -msgid "Jun." -msgstr "Jun." - -#: NOT FOUND IN SOURCE -msgid "June" -msgstr "Junho" - -#: NOT FOUND IN SOURCE -msgid "Keyword" -msgstr "Palavra chave" - -#: NOT FOUND IN SOURCE -msgid "Lang" -msgstr "Líng" - -#: html/Admin/Users/Modify.html:96 html/User/Prefs.html:78 -msgid "Language" -msgstr "Língua" - -#: html/Search/Elements/EditFormat:81 -msgid "Large" -msgstr "Grande" - -#: html/Ticket/Elements/Tabs:98 -msgid "Last" -msgstr "Último" - -#: html/Ticket/Elements/EditDates:61 html/Ticket/Elements/ShowDates:62 -msgid "Last Contact" -msgstr "Último Contato" - -#: html/Elements/SelectDateType:52 -msgid "Last Contacted" -msgstr "Contactado em" - -#: NOT FOUND IN SOURCE -msgid "Last Notified" -msgstr "Notificado em" - -#: html/Elements/SelectDateType:53 -msgid "Last Updated" -msgstr "Atualizado em" - -#: NOT FOUND IN SOURCE -msgid "LastUpdated" -msgstr "LastUpdated" - -#: html/Search/Elements/PickBasics:105 -msgid "LastUpdatedBy" -msgstr "UltimaAtualizacaoPor" - -#: html/Ticket/Elements/ShowBasics:70 -msgid "Left" -msgstr "Resta" - -#: html/Admin/Users/Modify.html:111 -msgid "Let this user access RT" -msgstr "Deixar este usuário acessar RT" - -#: html/Admin/Users/Modify.html:115 -msgid "Let this user be granted rights" -msgstr "Deixar este usuário receber direitos de acesso adicionais" - -#: NOT FOUND IN SOURCE -msgid "Limiting owner to %1 %2" -msgstr "Limitando proprietário a %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Limiting queue to %1 %2" -msgstr "Limitando fila a %1 %2" - -#: html/Search/Elements/EditFormat:70 -msgid "Link" -msgstr "Vínculo" - -#: lib/RT/Record.pm:1328 -msgid "Link already exists" -msgstr "O vínculo já existe" - -#: lib/RT/Record.pm:1342 -msgid "Link could not be created" -msgstr "O vínculo não pôde ser criado" - -#: lib/RT/Record.pm:1348 -#. ($TransString) -msgid "Link created (%1)" -msgstr "Vínculo criado (%1)" - -#: lib/RT/Record.pm:1409 -#. ($TransString) -msgid "Link deleted (%1)" -msgstr "Vínculo removido (%1)" - -#: lib/RT/Record.pm:1415 -msgid "Link not found" -msgstr "Vínculo não encontrado" - -#: html/Ticket/ModifyLinks.html:48 html/Ticket/ModifyLinks.html:52 -#. ($Ticket->Id) -msgid "Link ticket #%1" -msgstr "Vincular o tíquete #%1" - -#: NOT FOUND IN SOURCE -msgid "Link ticket %1" -msgstr "Vincular o tíquete %1" - -#: html/Admin/CustomFields/Modify.html:104 -msgid "Link values to" -msgstr "Vincular valores a" - -#: lib/RT/Ticket_Overlay.pm:702 -msgid "Linking. Permission denied" -msgstr "Vinculando. Permissão negada" - -#: html/Ticket/Create.html:218 html/Ticket/Elements/ShowSummary:97 html/Ticket/Elements/Tabs:122 html/Ticket/ModifyAll.html:80 -msgid "Links" -msgstr "Vínculos" - -#: html/Search/Elements/EditSearches:77 -msgid "Load" -msgstr "Carregar" - -#: html/Search/Elements/EditSearches:75 -msgid "Load saved search:" -msgstr "Carregar buscas salvas:" - -#: lib/RT/System.pm:88 -msgid "LoadSavedSearch" -msgstr "CarregarBuscaSalva" - -#: html/Admin/Tools/Configuration.html:66 -msgid "Loaded perl modules" -msgstr "Módulos perl carregados" - -#: lib/RT/SavedSearch.pm:113 -#. ($self->Name) -msgid "Loaded search %1" -msgstr "Busca %1 carregada" - -#: html/Admin/Users/Modify.html:141 html/User/Prefs.html:128 -msgid "Location" -msgstr "Localização" - -#: NOT FOUND IN SOURCE -msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." -msgstr "" -"O diretório de log %1 não foi encontrado ou não pôde ser alterado.\\n RT não " -"pode funcionar desta maneira." - -#: html/Elements/Header:93 -#. ("<span>".$session{'CurrentUser'}->Name."</span>") -msgid "Logged in as %1" -msgstr "Assinado como %1" - -#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:102 html/Elements/Login:70 html/Elements/Login:86 lib/RT/StyleGuide.pod:795 -msgid "Login" -msgstr "Entrar" - -#: html/Elements/Header:103 -msgid "Logout" -msgstr "Sair" - -#: lib/RT/CustomField_Overlay.pm:935 -msgid "Lookup type mismatch" -msgstr "Tipo de consulta não corresponde" - -#: html/Search/Bulk.html:84 -msgid "Make Owner" -msgstr "Definir como proprietário" - -#: html/Search/Bulk.html:108 -msgid "Make Status" -msgstr "Definir o estado" - -#: html/Search/Bulk.html:116 -msgid "Make date Due" -msgstr "Definir o prazo final" - -#: html/Search/Bulk.html:118 -msgid "Make date Resolved" -msgstr "Definir a data de resolução" - -#: html/Search/Bulk.html:112 -msgid "Make date Started" -msgstr "Definir a data de iniciado" - -#: html/Search/Bulk.html:110 -msgid "Make date Starts" -msgstr "Definir a data início" - -#: html/Search/Bulk.html:114 -msgid "Make date Told" -msgstr "Definir a data de última alteração" - -#: html/Search/Bulk.html:104 -msgid "Make priority" -msgstr "Definir a prioridade" - -#: html/Search/Bulk.html:106 -msgid "Make queue" -msgstr "Definir a fila" - -#: html/Search/Bulk.html:102 -msgid "Make subject" -msgstr "Definir o assunto" - -#: lib/RT/Group_Overlay.pm:171 -msgid "Make this group visible to user" -msgstr "Fazer este grupo visível para o usuário" - -#: html/Admin/index.html:80 -msgid "Manage custom fields and custom field values" -msgstr "Gerenciar campos personalizados e valores de campos personalizados" - -#: html/Admin/index.html:71 -msgid "Manage groups and group membership" -msgstr "Administrar grupos e afiliações" - -#: html/Admin/index.html:87 -msgid "Manage properties and configuration which apply to all queues" -msgstr "Administrar propriedades e configurações aplicáveis a todas as filas" - -#: html/Admin/index.html:76 -msgid "Manage queues and queue-specific properties" -msgstr "Administrar filas e suas propriedades específicas" - -#: html/Admin/index.html:66 -msgid "Manage users and passwords" -msgstr "Administrar usuários e senhas" - -#: lib/RT/Date.pm:445 -msgid "Mar." -msgstr "Mar." - -#: NOT FOUND IN SOURCE -msgid "March" -msgstr "Março" - -#: NOT FOUND IN SOURCE -msgid "May" -msgstr "Maio" - -#: lib/RT/Date.pm:447 -msgid "May." -msgstr "Mai." - -#: lib/RT/Transaction_Overlay.pm:752 -#. ($value) -msgid "Member %1 added" -msgstr "Membro %1 adicionado" - -#: lib/RT/Transaction_Overlay.pm:792 -#. ($value) -msgid "Member %1 deleted" -msgstr "Membro %1 removido" - -#: lib/RT/Group_Overlay.pm:1002 -msgid "Member added" -msgstr "Membro adicionado" - -#: lib/RT/Group_Overlay.pm:1164 -msgid "Member deleted" -msgstr "Membro removido" - -#: lib/RT/Group_Overlay.pm:1168 -msgid "Member not deleted" -msgstr "Membro não removido" - -#: html/Elements/SelectLinkType:49 -msgid "Member of" -msgstr "Membro de" - -#: NOT FOUND IN SOURCE -msgid "MemberOf" -msgstr "MembroDe" - -#: html/Admin/Elements/GroupTabs:65 html/User/Elements/GroupTabs:65 -msgid "Members" -msgstr "Membros" - -#: lib/RT/Transaction_Overlay.pm:749 -#. ($value) -msgid "Membership in %1 added" -msgstr "Filiação em %1 adicionada" - -#: lib/RT/Transaction_Overlay.pm:789 -#. ($value) -msgid "Membership in %1 deleted" -msgstr "Filiação em %1 removida" - -#: html/Admin/Elements/UserTabs:63 -msgid "Memberships" -msgstr "Filiações" - -#: html/Admin/Users/Memberships.html:62 -#. ($UserObj->Name) -msgid "Memberships of the user %1" -msgstr "Filiações do usuário %1" - -#: lib/RT/Ticket_Overlay.pm:2905 -msgid "Merge Successful" -msgstr "União bem sucedida" - -#: lib/RT/Ticket_Overlay.pm:2783 -msgid "Merge failed. Couldn't set EffectiveId" -msgstr "União falhou. Não foi possível definir o EffectiveId" - -#: lib/RT/Ticket_Overlay.pm:2800 -msgid "Merge failed. Couldn't set Status" -msgstr "Fusão falhou. Não foi possível definir Estado." - -#: html/Elements/EditLinks:132 html/Ticket/Elements/BulkLinks:50 -msgid "Merge into" -msgstr "Unir a" - -#: lib/RT/Transaction_Overlay.pm:755 -#. ($value) -msgid "Merged into %1" -msgstr "Unido ao %1" - -#: html/Search/Bulk.html:145 html/Ticket/Update.html:120 -msgid "Message" -msgstr "Mensagem" - -#: html/Ticket/Elements/ShowTransactionAttachments:166 -msgid "Message body not shown because it is too large or is not plain text." -msgstr "Corpo da mensagem não mostrado porque é muito grande ou náo é um texto plano." - -#: lib/RT/Ticket_Overlay.pm:2454 -msgid "Message could not be recorded" -msgstr "Mensagem não pode ser gravada" - -#: lib/RT/Ticket_Overlay.pm:2457 -msgid "Message recorded" -msgstr "Mensagem gravada" - -#: html/Ticket/Elements/PreviewScrips:124 -msgid "Messages about this ticket will not be sent to..." -msgstr "Mensagens sobre este tíquete não serão enviadas para..." - -#: html/Elements/SelectTimeUnits:49 -msgid "Minutes" -msgstr "Minutos" - -#: html/Search/Build.html:496 lib/RT/Report/Tickets.pm:447 -msgid "Mismatched parentheses" -msgstr "Parênteses sem correspondente" - -#: lib/RT/Record.pm:971 -msgid "Missing a primary key?: %1" -msgstr "Faltando uma chave primária?: %1" - -#: html/Admin/Users/Modify.html:196 html/User/Prefs.html:94 -msgid "Mobile" -msgstr "Móvel" - -#: NOT FOUND IN SOURCE -msgid "MobilePhone" -msgstr "Celular" - -#: lib/RT/Queue_Overlay.pm:96 -msgid "Modify Access Control List" -msgstr "Modificar Lista de Controle de Acesso" - -#: NOT FOUND IN SOURCE -msgid "Modify Custom Field %1" -msgstr "Modificar o campo personalizado %1" - -#: html/Admin/Elements/ObjectCustomFields:98 -#. (loc(lc($FriendlySubTypes)), loc(lc($Types))) -msgid "Modify Custom Fields which apply to %1 for all %2" -msgstr "Modificar Campos Personalizados que se aplicam a %1 para todos %2" - -#: html/Admin/Elements/ObjectCustomFields:100 -#. (loc(lc($Types))) -msgid "Modify Custom Fields which apply to all %1" -msgstr "Modificar Campos Personalizados que se aplicam a todos %1" - -#: NOT FOUND IN SOURCE -msgid "Modify Custom Fields which apply to all queues" -msgstr "Modificar Campos Personalizados que se aplicam a todas as filas" - -#: html/Admin/Global/GroupRights.html:108 html/Admin/Groups/GroupRights.html:96 html/Admin/Queues/GroupRights.html:109 -msgid "Modify Group Rights" -msgstr "Modificar Direitos de Grupo" - -#: html/Admin/Groups/Members.html:107 html/User/Groups/Members.html:103 -msgid "Modify Members" -msgstr "Modificar Membros" - -#: html/User/Delegation.html:60 -msgid "Modify Rights" -msgstr "Modificar Direitos" - -#: lib/RT/Queue_Overlay.pm:99 -msgid "Modify Scrip templates for this queue" -msgstr "Modificar modelos de Scrip desta fila" - -#: lib/RT/Queue_Overlay.pm:102 -msgid "Modify Scrips for this queue" -msgstr "Modificar Scrips desta fila" - -#: NOT FOUND IN SOURCE -msgid "Modify System ACLS" -msgstr "Modificar ACLs do Sistema" - -#: NOT FOUND IN SOURCE -msgid "Modify Template %1" -msgstr "Modificar Esquema %1" - -#: html/Admin/Global/UserRights.html:77 html/Admin/Groups/UserRights.html:78 html/Admin/Queues/UserRights.html:77 -msgid "Modify User Rights" -msgstr "Modificar Direitos de Usuário" - -#: html/Admin/Queues/CustomField.html:68 -#. ($QueueObj->Name()) -msgid "Modify a CustomField for queue %1" -msgstr "Modificar um Campo Personalizado para a fila %1" - -#: NOT FOUND IN SOURCE -msgid "Modify a CustomField that applies to all queues" -msgstr "Modificar um Campo Personalizado que se aplica a todas as filas" - -#: html/Admin/Queues/Scrip.html:84 -#. ($QueueObj->Name) -msgid "Modify a scrip for queue %1" -msgstr "Modificar um scrip para a fila %1" - -#: html/Admin/Global/Scrip.html:77 -msgid "Modify a scrip that applies to all queues" -msgstr "Modificar um scrip aplicável a todas as filas" - -#: html/Admin/CustomFields/Objects.html:92 -#. ($CF->Name) -msgid "Modify associated objects for %1" -msgstr "Modificar objetos associados a %1" - -#: NOT FOUND IN SOURCE -msgid "Modify dates for # %1" -msgstr "Modificar datas para # %1" - -#: html/Ticket/ModifyDates.html:48 html/Ticket/ModifyDates.html:52 -#. ($TicketObj->Id) -msgid "Modify dates for #%1" -msgstr "Modificar as datas para #%1" - -#: html/Ticket/ModifyDates.html:59 -#. ($TicketObj->Id) -msgid "Modify dates for ticket # %1" -msgstr "Modificar as datas para o tíquete # %1" - -#: html/Admin/Elements/GlobalCustomFieldTabs:67 html/Admin/Global/index.html:74 -msgid "Modify global custom fields" -msgstr "Modificar campos personalizados globais" - -#: html/Admin/Elements/GlobalCustomFieldTabs:72 html/Admin/Global/GroupRights.html:48 html/Admin/Global/GroupRights.html:51 html/Admin/Global/index.html:79 -msgid "Modify global group rights" -msgstr "Modificar direitos de acesso globais de grupo" - -#: html/Admin/Global/GroupRights.html:56 -msgid "Modify global group rights." -msgstr "Modificar direitos de acesso globais de grupo." - -#: NOT FOUND IN SOURCE -msgid "Modify global rights for groups" -msgstr "Modificar direitos globais para grupos" - -#: NOT FOUND IN SOURCE -msgid "Modify global rights for users" -msgstr "Modificar direitos globais para usuários" - -#: NOT FOUND IN SOURCE -msgid "Modify global scrips" -msgstr "Modificar scrips globais" - -#: html/Admin/Global/UserRights.html:48 html/Admin/Global/UserRights.html:51 html/Admin/Global/index.html:83 -msgid "Modify global user rights" -msgstr "Modificar direitos de acesso globais de usuário" - -#: html/Admin/Global/UserRights.html:56 -msgid "Modify global user rights." -msgstr "Modificar direitos de acesso globais de usuário." - -#: lib/RT/Group_Overlay.pm:165 -msgid "Modify group metadata or delete group" -msgstr "Modificar metadados do grupo ou removê-lo" - -#: html/Admin/CustomFields/GroupRights.html:166 -#. ($CustomFieldObj->Name) -msgid "Modify group rights for custom field %1" -msgstr "Modificar direitos de grupo para campo personalizado %1" - -#: html/Admin/Groups/GroupRights.html:48 html/Admin/Groups/GroupRights.html:52 html/Admin/Groups/GroupRights.html:58 -#. ($GroupObj->Name) -msgid "Modify group rights for group %1" -msgstr "Modificar os direitos de acesso do grupo %1" - -#: html/Admin/Queues/GroupRights.html:48 html/Admin/Queues/GroupRights.html:52 -#. ($QueueObj->Name) -msgid "Modify group rights for queue %1" -msgstr "Modificar os direitos de acesso de grupo para a fila %1" - -#: lib/RT/Group_Overlay.pm:167 -msgid "Modify membership roster for this group" -msgstr "Modificar afiliados deste grupo" - -#: lib/RT/System.pm:84 -msgid "Modify one's own RT account" -msgstr "Modificar sua própria conta RT" - -#: html/Admin/Queues/People.html:48 html/Admin/Queues/People.html:52 -#. ($QueueObj->Name) -msgid "Modify people related to queue %1" -msgstr "Modificar as pessoas relacionadas à fila %1" - -#: html/Ticket/ModifyPeople.html:48 html/Ticket/ModifyPeople.html:52 html/Ticket/ModifyPeople.html:59 -#. ($Ticket->id) -#. ($Ticket->Id) -msgid "Modify people related to ticket #%1" -msgstr "Modificar as pessoas relacionadas ao tíquete #%1" - -#: html/Admin/Queues/Scrips.html:69 -#. ($QueueObj->Name) -msgid "Modify scrips for queue %1" -msgstr "Modificar os scrips da fila %1" - -#: html/Admin/Elements/GlobalCustomFieldTabs:58 html/Admin/Global/Scrips.html:67 html/Admin/Global/index.html:65 -msgid "Modify scrips which apply to all queues" -msgstr "Modificar scrips aplicáveis a todas as filas" - -#: html/Admin/Global/Template.html:104 html/Admin/Global/Template.html:48 html/Admin/Global/Template.html:53 html/Admin/Queues/Template.html:101 -#. (loc($TemplateObj->Name())) -#. ($TemplateObj->id) -msgid "Modify template %1" -msgstr "Modificar o modelo %1" - -#: html/Admin/Global/Templates.html:67 -msgid "Modify templates which apply to all queues" -msgstr "Modificar modelos que se aplicam a todas as filas" - -#: html/Admin/Global/index.html:87 -msgid "Modify the default \"RT at a glance\" view" -msgstr "Modificar \"RT por alto\" default" - -#: html/Admin/Groups/Modify.html:125 html/User/Groups/Modify.html:109 -#. ($Group->Name) -msgid "Modify the group %1" -msgstr "Modificar o grupo %1" - -#: lib/RT/Queue_Overlay.pm:97 -msgid "Modify the queue watchers" -msgstr "Modificar os observadores da fila" - -#: html/Admin/Users/Modify.html:313 -#. ($UserObj->Name) -msgid "Modify the user %1" -msgstr "Modificar o usuário %1" - -#: html/Ticket/ModifyAll.html:60 -#. ($Ticket->Id) -msgid "Modify ticket # %1" -msgstr "Modificar o tíquete # %1" - -#: html/Ticket/Modify.html:48 html/Ticket/Modify.html:51 html/Ticket/Modify.html:57 -#. ($TicketObj->Id) -msgid "Modify ticket #%1" -msgstr "Modificar o tíquete #%1" - -#: lib/RT/Queue_Overlay.pm:115 -msgid "Modify tickets" -msgstr "Modificar tíquetes" - -#: html/Admin/CustomFields/UserRights.html:159 -#. ($CustomFieldObj->Name) -msgid "Modify user rights for custom field %1" -msgstr "Modificar direitos de usuário para campo customizado %1" - -#: html/Admin/Groups/UserRights.html:48 html/Admin/Groups/UserRights.html:52 html/Admin/Groups/UserRights.html:58 -#. ($GroupObj->Name) -msgid "Modify user rights for group %1" -msgstr "Modificar os direitos de acesso de usuário para o grupo %1" - -#: html/Admin/Queues/UserRights.html:48 html/Admin/Queues/UserRights.html:52 -#. ($QueueObj->Name) -msgid "Modify user rights for queue %1" -msgstr "Modificar os direitos de acesso de usuário para a fila %1" - -#: NOT FOUND IN SOURCE -msgid "Modify watchers for queue '%1'" -msgstr "Modificar os observadores para a fila '%1'" - -#: lib/RT/Queue_Overlay.pm:96 -msgid "ModifyACL" -msgstr "ModificarACL" - -#: lib/RT/CustomField_Overlay.pm:110 -msgid "ModifyCustomField" -msgstr "ModificarCampoPersonalizado" - -#: lib/RT/Group_Overlay.pm:168 -msgid "ModifyOwnMembership" -msgstr "ModificarFiliaçãoPrópria" - -#: lib/RT/Queue_Overlay.pm:97 -msgid "ModifyQueueWatchers" -msgstr "ModificarObservadoresdaFila" - -#: lib/RT/Queue_Overlay.pm:102 -msgid "ModifyScrips" -msgstr "ModificarScrips" - -#: lib/RT/System.pm:84 -msgid "ModifySelf" -msgstr "AutoModificar-se" - -#: lib/RT/Queue_Overlay.pm:99 -msgid "ModifyTemplate" -msgstr "ModificarModelo" - -#: lib/RT/Queue_Overlay.pm:115 -msgid "ModifyTicket" -msgstr "ModificarTiquete" - -#: lib/RT/Date.pm:419 -msgid "Mon." -msgstr "Seg." - -#: html/Ticket/Elements/ShowRequestor:63 -#. ($name) -msgid "More about %1" -msgstr "Mais sobre %1" - -#: html/Admin/Elements/PickCustomFields:85 -msgid "Move down" -msgstr "Descer" - -#: html/Admin/Elements/PickCustomFields:77 -msgid "Move up" -msgstr "Subir" - -#: html/Admin/Elements/SelectSingleOrMultiple:50 -msgid "Multiple" -msgstr "Múltiplo" - -#: lib/RT/User_Overlay.pm:228 -msgid "Must specify 'Name' attribute" -msgstr "Necessário especificar atributo 'Nome'" - -#: html/SelfService/Elements/MyRequests:79 -#. ($friendly_status) -msgid "My %1 tickets" -msgstr "Meus %1 primeiros tíquetes" - -#: NOT FOUND IN SOURCE -msgid "My Approvals" -msgstr "Minhas Aprovações" - -#: html/Tools/Elements/Tabs:65 -msgid "My Day" -msgstr "Meu Dia" - -#: html/Approvals/index.html:48 html/Approvals/index.html:49 -msgid "My approvals" -msgstr "Minhas aprovações" - -#: html/Search/Elements/SearchPrivacy:52 html/Search/Elements/SelectSearchObject:55 html/Search/Elements/SelectSearchesForObjects:56 -msgid "My saved searches" -msgstr "Minhas buscas salvas" - -#: html/Admin/CustomFields/Modify.html:60 html/Admin/Elements/AddCustomFieldValue:55 html/Admin/Elements/EditCustomField:57 html/Admin/Elements/EditCustomFieldValues:57 html/Admin/Elements/ModifyTemplate:51 html/Admin/Groups/Modify.html:67 html/Search/Bulk.html:159 html/User/Groups/Modify.html:67 -msgid "Name" -msgstr "Nome" - -#: lib/RT/User_Overlay.pm:235 -msgid "Name in use" -msgstr "Nome em uso" - -#: NOT FOUND IN SOURCE -msgid "Need approval from system administrator" -msgstr "Precisa de aprovação do administrador do sistema" - -#: html/Ticket/Elements/ShowDates:75 -msgid "Never" -msgstr "Nunca" - -#: NOT FOUND IN SOURCE -msgid "New" -msgstr "Novo" - -#: html/Elements/EditLinks:118 -msgid "New Links" -msgstr "Novos Vínculos" - -#: html/Admin/Users/Modify.html:121 html/User/Prefs.html:111 -msgid "New Password" -msgstr "Nova Senha" - -#: etc/initialdata:332 -msgid "New Pending Approval" -msgstr "Nova Aprovação Pendente" - -#: html/Ticket/Elements/Tabs:214 -msgid "New Search" -msgstr "Nova busca" - -#: html/Admin/Elements/CustomFieldTabs:95 html/Admin/Queues/CustomField.html:75 -msgid "New custom field" -msgstr "Novo campo personalizado" - -#: html/Admin/Elements/GroupTabs:79 html/User/Elements/GroupTabs:75 -msgid "New group" -msgstr "Novo grupo" - -#: html/SelfService/Prefs.html:55 -msgid "New password" -msgstr "Nova senha" - -#: lib/RT/User_Overlay.pm:818 -msgid "New password notification sent" -msgstr "Notificação de nova senha enviada" - -#: html/Admin/Elements/QueueTabs:97 -msgid "New queue" -msgstr "Nova fila" - -#: html/Ticket/Elements/Reminders:120 -msgid "New reminder:" -msgstr "Novo lembrete:" - -#: NOT FOUND IN SOURCE -msgid "New request" -msgstr "Nova requisição" - -#: html/Admin/Elements/SelectRights:67 -msgid "New rights" -msgstr "Novos direitos de acesso" - -#: html/Admin/Global/Scrip.html:65 html/Admin/Global/Scrips.html:62 html/Admin/Queues/Scrip.html:73 html/Admin/Queues/Scrips.html:78 -msgid "New scrip" -msgstr "Novo scrip" - -#: NOT FOUND IN SOURCE -msgid "New search" -msgstr "Nova busca" - -#: html/Admin/Global/Template.html:83 html/Admin/Global/Templates.html:62 html/Admin/Queues/Template.html:81 html/Admin/Queues/Templates.html:73 -msgid "New template" -msgstr "Novo modelo" - -#: html/SelfService/Elements/Tabs:87 html/SelfService/Elements/Tabs:91 -msgid "New ticket" -msgstr "Novo tíquete" - -#: lib/RT/Ticket_Overlay.pm:2760 -msgid "New ticket doesn't exist" -msgstr "O novo tíquete não existe" - -#: html/Admin/Elements/UserTabs:83 -msgid "New user" -msgstr "Novo usuário" - -#: html/Admin/Elements/CreateUserCalled:49 -msgid "New user called" -msgstr "Novo usuário chamado" - -#: html/Admin/Queues/People.html:78 html/Ticket/Elements/EditPeople:52 -msgid "New watchers" -msgstr "Novos observadores" - -#: NOT FOUND IN SOURCE -msgid "New window setting" -msgstr "Abrir nova janela" - -#: html/Helpers/CalPopup.html:60 html/Ticket/Elements/Tabs:94 -msgid "Next" -msgstr "Próximo" - -#: html/Elements/TicketList:108 -msgid "Next Page" -msgstr "Próxima Página" - -#: NOT FOUND IN SOURCE -msgid "Next page" -msgstr "Próxima página" - -#: NOT FOUND IN SOURCE -msgid "NickName" -msgstr "Apelido" - -#: html/Admin/Users/Modify.html:86 html/User/Prefs.html:74 -msgid "Nickname" -msgstr "Apelido" - -#: html/Admin/CustomFields/UserRights.html:147 -msgid "No Class defined" -msgstr "Nenhuma Classe definida" - -#: html/Admin/CustomFields/Modify.html:168 html/Admin/Elements/EditCustomField:121 -msgid "No CustomField" -msgstr "Não há Campo Personalizado" - -#: html/Admin/CustomFields/GroupRights.html:105 -msgid "No CustomField defined" -msgstr "Nenhum Campo Personalizado definido" - -#: html/Admin/Groups/GroupRights.html:107 html/Admin/Groups/UserRights.html:94 -msgid "No Group defined" -msgstr "Não há Grupo definido" - -#: lib/RT/Tickets_Overlay_SQL.pm:484 -msgid "No Query" -msgstr "Nenhuma Consulta" - -#: html/Admin/Queues/GroupRights.html:120 html/Admin/Queues/UserRights.html:91 -msgid "No Queue defined" -msgstr "Não há Fila definida" - -#: bin/rt-crontool:75 -msgid "No RT user found. Please consult your RT administrator.\\n" -msgstr "Nenhum usuário RT foi encontrado. Favor consultar o administrador do RT.\\n" - -#: html/Admin/Global/Template.html:102 html/Admin/Queues/Template.html:99 -msgid "No Template" -msgstr "Não há Modelo" - -#: NOT FOUND IN SOURCE -msgid "No Ticket specified. Aborting ticket " -msgstr "Não há Tíquete especificado. Abortando o tíquete " - -#: NOT FOUND IN SOURCE -msgid "No Ticket specified. Aborting ticket modifications\\n\\n" -msgstr "Não há Tíquete especificado. Abortando modificações no tíquete\\n\\n" - -#: html/Approvals/Elements/Approve:79 -msgid "No action" -msgstr "Não há ação" - -#: lib/RT/Record.pm:966 -msgid "No column specified" -msgstr "Não há coluna especificada" - -#: NOT FOUND IN SOURCE -msgid "No command found\\n" -msgstr "Comando não encontrado\\n" - -#: html/Ticket/Elements/ShowRequestor:70 -msgid "No comment entered about this user" -msgstr "Não há comentário sobre este usuário" - -#: NOT FOUND IN SOURCE -msgid "No correspondence attached" -msgstr "Não há nenhum arquivo anexado" - -#: lib/RT/Action/Generic.pm:187 lib/RT/Condition/Generic.pm:199 lib/RT/Search/ActiveTicketsInQueue.pm:79 lib/RT/Search/Generic.pm:136 lib/RT/Search/Googleish.pm:90 -#. (ref $self) -msgid "No description for %1" -msgstr "Não há descrição para %1" - -#: lib/RT/Users_Overlay.pm:192 -msgid "No group specified" -msgstr "Não há grupo especificado" - -#: html/Admin/Groups/index.html:54 -msgid "No groups matching search criteria found." -msgstr "Nenhum grupo satisfaz o critério de busca." - -#: lib/RT/Ticket_Overlay.pm:2395 -msgid "No message attached" -msgstr "Nenhuma mensagem anexada" - -#: lib/RT/User_Overlay.pm:1036 -msgid "No password set" -msgstr "Não há senha especificada" - -#: lib/RT/Queue_Overlay.pm:363 -msgid "No permission to create queues" -msgstr "Não há permissão para criar filas" - -#: lib/RT/Ticket_Overlay.pm:422 -#. ($QueueObj->Name) -msgid "No permission to create tickets in the queue '%1'" -msgstr "Sem permissão para criar tíquetes na fila '%1'" - -#: lib/RT/User_Overlay.pm:188 -msgid "No permission to create users" -msgstr "Sem permissão para criar usuários" - -#: html/SelfService/Display.html:210 -msgid "No permission to display that ticket" -msgstr "Sem permissão para mostrar o tíquete" - -#: lib/RT/SavedSearch.pm:158 -msgid "No permission to save system-wide searches" -msgstr "Sem permissão para salvar buscas com abrangência em todo sistema" - -#: html/SelfService/Update.html:119 -msgid "No permission to view update ticket" -msgstr "sem permissão para ver modificar o tíquete" - -#: lib/RT/Queue_Overlay.pm:797 lib/RT/Ticket_Overlay.pm:1491 -msgid "No principal specified" -msgstr "Não há usuário/grupo especificado" - -#: html/Admin/Queues/People.html:177 html/Admin/Queues/People.html:187 -msgid "No principals selected." -msgstr "Não há usuário/grupo selecionado." - -#: html/Admin/Queues/index.html:59 -msgid "No queues matching search criteria found." -msgstr "Nenhuma fila satisfaz o critério de busca." - -#: html/Admin/Elements/SelectRights:108 -msgid "No rights found" -msgstr "Nenhum direito encontrado" - -#: html/Admin/Elements/SelectRights:55 -msgid "No rights granted." -msgstr "Nenhum direito outorgado." - -#: lib/RT/SavedSearch.pm:198 -msgid "No search loaded" -msgstr "Nenhuma busca carregada" - -#: html/Search/Bulk.html:234 -msgid "No search to operate on." -msgstr "Não há busca a realizar" - -#: html/Elements/RT__Ticket/ColumnMap:139 html/Search/Results.rdf:80 -msgid "No subject" -msgstr "Sem assunto" - -#: NOT FOUND IN SOURCE -msgid "No ticket id specified" -msgstr "Nenhum identificador de tíquete especificado" - -#: html/Search/Chart:101 -msgid "No tickets found." -msgstr "Nenhum tíquete encontrado." - -#: lib/RT/Transaction_Overlay.pm:549 lib/RT/Transaction_Overlay.pm:586 -msgid "No transaction type specified" -msgstr "Não há tipo de transação especificada" - -#: NOT FOUND IN SOURCE -msgid "No user or email address specified" -msgstr "Não há usuário ou endereço de e-mail especificado" - -#: html/Admin/Users/index.html:57 -msgid "No users matching search criteria found." -msgstr "Nenhum usuário satisfaz o critério de busca." - -#: lib/RT/Record.pm:963 -msgid "No value sent to _Set!\\n" -msgstr "Nenhum valor enviado a _Set!\\n" - -#: html/Elements/QuickCreate:61 -msgid "Nobody" -msgstr "Ninguém" - -#: lib/RT/Record.pm:968 -msgid "Nonexistant field?" -msgstr "Campo inexistente?" - -#: html/Search/Chart:149 html/Search/Elements/Chart:90 -msgid "Not Set" -msgstr "Nao Definido" - -#: NOT FOUND IN SOURCE -msgid "Not logged in" -msgstr "Não logado" - -#: html/Elements/Header:98 -msgid "Not logged in." -msgstr "Não entrou." - -#: lib/RT/Date.pm:399 -msgid "Not set" -msgstr "Não definido" - -#: html/NoAuth/Reminder.html:50 -msgid "Not yet implemented." -msgstr "Ainda não implementado." - -#: NOT FOUND IN SOURCE -msgid "Not yet implemented...." -msgstr "Ainda não implementado..." - -#: html/Approvals/Elements/Approve:83 -msgid "Notes" -msgstr "Anotações" - -#: lib/RT/User_Overlay.pm:821 -msgid "Notification could not be sent" -msgstr "A notificação não pôde ser enviada" - -#: etc/initialdata:101 -msgid "Notify AdminCcs" -msgstr "Notificar AdminCcs" - -#: etc/initialdata:97 -msgid "Notify AdminCcs as Comment" -msgstr "Notificar AdminCcs como Comentário" - -#: etc/initialdata:93 etc/upgrade/3.1.17/content:6 -msgid "Notify Ccs" -msgstr "Notificar Ccs" - -#: etc/initialdata:89 etc/upgrade/3.1.17/content:2 -msgid "Notify Ccs as Comment" -msgstr "Notificar Ccs como Comentário" - -#: etc/initialdata:128 -msgid "Notify Other Recipients" -msgstr "Notificar Outros Destinatários" - -#: etc/initialdata:124 -msgid "Notify Other Recipients as Comment" -msgstr "Notificar Outros Destinatários como Comentário" - -#: etc/initialdata:85 -msgid "Notify Owner" -msgstr "Notificar Proprietário" - -#: etc/initialdata:81 -msgid "Notify Owner as Comment" -msgstr "Notificar Proprietário como Comentário" - -#: etc/initialdata:376 -msgid "Notify Owner of their rejected ticket" -msgstr "Notificar Proprietário sobre seus tíquetes rejeitados" - -#: etc/initialdata:365 -msgid "Notify Owner of their ticket has been approved by all approvers" -msgstr "Notificar Proprietário que todas as aprovações foram concedidas a seu tíquete" - -#: etc/initialdata:353 -msgid "Notify Owner of their ticket has been approved by some approver" -msgstr "Notificar Proprietário que seu alguma aprovação foi concedida a seu tíquete" - -#: etc/initialdata:334 -msgid "Notify Owners and AdminCcs of new items pending their approval" -msgstr "" -"Notificar Proprietários e AdminCcs sobre novos itens dependendo de suas " -"aprovações" - -#: etc/initialdata:77 -msgid "Notify Requestors" -msgstr "Notificar Requisitantes" - -#: etc/initialdata:111 -msgid "Notify Requestors and Ccs" -msgstr "Notificar Requisitantes e Ccs" - -#: etc/initialdata:106 -msgid "Notify Requestors and Ccs as Comment" -msgstr "Notificar Requisitantes e Ccs como Comentário" - -#: etc/initialdata:120 -msgid "Notify Requestors, Ccs and AdminCcs" -msgstr "Notificar Requisitantes, Ccs e AdminCcs" - -#: etc/initialdata:116 -msgid "Notify Requestors, Ccs and AdminCcs as Comment" -msgstr "Notificar Requisitantes, Ccs e AdminCcs como Comentário" - -#: lib/RT/Date.pm:453 -msgid "Nov." -msgstr "Nov." - -#: NOT FOUND IN SOURCE -msgid "November" -msgstr "Novembro" - -#: html/Search/Elements/SelectAndOr:49 -msgid "OR" -msgstr "OU" - -#: lib/RT/Record.pm:329 -msgid "Object could not be created" -msgstr "Objeto não pôde ser criado" - -#: lib/RT/Record.pm:130 -msgid "Object could not be deleted" -msgstr "Objeto não pode ser removido" - -#: lib/RT/Record.pm:348 -msgid "Object created" -msgstr "Objeto criado" - -#: lib/RT/Record.pm:127 -msgid "Object deleted" -msgstr "Objeto removido" - -#: html/Admin/CustomFields/Objects.html:74 html/Admin/Elements/ObjectCustomFields:65 -#. ($ObjectType) -#. ($LookupType) -msgid "Object of type %1 cannot take custom fields" -msgstr "Objeto do tipo %1 não aceitam campos customizados" - -#: lib/RT/CustomField_Overlay.pm:970 -msgid "Object type mismatch" -msgstr "Tipo de objeto não corresponde" - -#: lib/RT/Date.pm:452 -msgid "Oct." -msgstr "Out." - -#: NOT FOUND IN SOURCE -msgid "October" -msgstr "Outubro" - -#: html/Tools/Elements/Tabs:57 -msgid "Offline" -msgstr "Offline" - -#: html/Tools/Offline.html:51 -msgid "Offline edits" -msgstr "Edições offline" - -#: html/Tools/Offline.html:48 -msgid "Offline upload" -msgstr "Envio offline" - -#: html/Elements/SelectDateRelation:58 -msgid "On" -msgstr "Em" - -#: lib/RT/Transaction_Overlay.pm:349 -#. ($self->CreatedAsString(), $self->CreatorObj->Name()) -msgid "On %1, %2 wrote:" -msgstr "Em %1, %2 escreveu:" - -#: etc/initialdata:163 -msgid "On Comment" -msgstr "Num Comentário" - -#: etc/initialdata:156 -msgid "On Correspond" -msgstr "Numa Correspondência" - -#: etc/initialdata:145 -msgid "On Create" -msgstr "Na Criação" - -#: etc/initialdata:184 -msgid "On Owner Change" -msgstr "Na Mudança de Proprietário" - -#: etc/initialdata:177 etc/upgrade/3.1.17/content:15 -msgid "On Priority Change" -msgstr "Na Mudança de Prioridade" - -#: etc/initialdata:192 -msgid "On Queue Change" -msgstr "Na Mudança de Fila" - -#: etc/initialdata:198 -msgid "On Resolve" -msgstr "Na Resolução" - -#: etc/initialdata:169 -msgid "On Status Change" -msgstr "Na Mudança de Estado" - -#: etc/initialdata:150 -msgid "On Transaction" -msgstr "Numa Transação" - -#: html/Approvals/Elements/PendingMyApproval:72 -#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter' id='CreatedAfter' />") -msgid "Only show approvals for requests created after %1" -msgstr "Só mostrar aprovações para requisições criadas depois de %1" - -#: html/Approvals/Elements/PendingMyApproval:70 -#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore' id='CreatedBefore' />") -msgid "Only show approvals for requests created before %1" -msgstr "Só mostrar aprovações para requisições criadas antes de %1" - -#: html/Admin/CustomFields/index.html:77 -msgid "Only show custom fields for:" -msgstr "Somente mostrar campos personalizados para:" - -#: NOT FOUND IN SOURCE -msgid "Open" -msgstr "Aberto" - -#: etc/initialdata:139 -msgid "Open Tickets" -msgstr "Abrir Tíquetes" - -#: html/Ticket/Elements/Tabs:162 -msgid "Open it" -msgstr "Abrir" - -#: NOT FOUND IN SOURCE -msgid "Open requests" -msgstr "Requisições abertas" - -#: html/SelfService/Elements/Tabs:78 html/SelfService/index.html:48 -msgid "Open tickets" -msgstr "Abrir tíquetes" - -#: NOT FOUND IN SOURCE -msgid "Open tickets (from listing) in a new window" -msgstr "Abrir tíquetes (da listagem) em uma nova janela" - -#: NOT FOUND IN SOURCE -msgid "Open tickets (from listing) in another window" -msgstr "Abrir tíquetes (da listagem) em outra janela" - -#: etc/initialdata:140 -msgid "Open tickets on correspondence" -msgstr "Abrir tíquetes na correspondência" - -#: html/Prefs/MyRT.html:72 -msgid "Options" -msgstr "Opções" - -#: html/Search/Elements/DisplayOptions:61 -msgid "Order by" -msgstr "Ordenado por" - -#: NOT FOUND IN SOURCE -msgid "Ordering and sorting" -msgstr "Requisitando e ordenando" - -#: html/Admin/Users/Modify.html:144 html/User/Prefs.html:131 -msgid "Organization" -msgstr "Organização" - -#: html/Approvals/Elements/Approve:55 -#. ($approving->Id, $approving->Subject) -msgid "Originating ticket: #%1" -msgstr "Tíquete originador: #%1" - -#: lib/RT/Transaction_Overlay.pm:643 -msgid "Outgoing email about a comment recorded" -msgstr "E-mail de saida sobre um comentário gravado" - -#: lib/RT/Transaction_Overlay.pm:647 -msgid "Outgoing email recorded" -msgstr "E-mail de saida gravado" - -#: html/Admin/Queues/Modify.html:92 -msgid "Over time, priority moves toward" -msgstr "Após a data, a prioridade tende a" - -#: lib/RT/Queue_Overlay.pm:114 -msgid "Own tickets" -msgstr "Próprios tíquetes" - -#: lib/RT/Queue_Overlay.pm:114 -msgid "OwnTicket" -msgstr "OwnTicket" - -#: etc/initialdata:38 html/Elements/QuickCreate:58 html/Search/Elements/PickBasics:103 html/Ticket/Create.html:74 html/Ticket/Elements/EditBasics:63 html/Ticket/Elements/EditPeople:66 html/Ticket/Elements/EditPeople:67 html/Ticket/Elements/Reminders:131 html/Ticket/Elements/ShowPeople:50 html/Ticket/Update.html:64 lib/RT/ACE_Overlay.pm:112 lib/RT/Tickets_Overlay.pm:2122 -msgid "Owner" -msgstr "Proprietário" - -#: NOT FOUND IN SOURCE -msgid "Owner changed from %1 to %2" -msgstr "Proprietário mudou de %1 para %2" - -#: lib/RT/Ticket_Overlay.pm:507 -msgid "Owner could not be set." -msgstr "Proprietário não pode ser definido." - -#: lib/RT/Transaction_Overlay.pm:693 -#. ($Old->Name , $New->Name) -msgid "Owner forcibly changed from %1 to %2" -msgstr "Proprietário mudado à força de %1 para %2" - -#: NOT FOUND IN SOURCE -msgid "Owner is" -msgstr "O proprietário é" - -#: html/Elements/TicketList:82 -#. ($Page, $pages) -msgid "Page %1 of %2" -msgstr "Página %1 de %2" - -#: html/Admin/Users/Modify.html:201 html/User/Prefs.html:98 -msgid "Pager" -msgstr "Pager" - -#: NOT FOUND IN SOURCE -msgid "PagerPhone" -msgstr "Telefone do Pager" - -#: NOT FOUND IN SOURCE -msgid "Parent" -msgstr "Pai" - -#: html/Elements/EditLinks:145 html/Elements/EditLinks:77 html/Elements/ShowLinks:70 html/Ticket/Create.html:224 html/Ticket/Elements/BulkLinks:62 -msgid "Parents" -msgstr "Pais" - -#: html/Elements/Login:97 html/User/Prefs.html:107 -msgid "Password" -msgstr "Senha" - -#: html/NoAuth/Reminder.html:48 -msgid "Password Reminder" -msgstr "Lembrete de Senha" - -#: lib/RT/Transaction_Overlay.pm:802 lib/RT/User_Overlay.pm:1047 -msgid "Password changed" -msgstr "Senha trocada" - -#: lib/RT/User_Overlay.pm:1039 lib/RT/User_Overlay.pm:216 -#. ($RT::MinimumPasswordLength) -msgid "Password needs to be at least %1 characters long" -msgstr "Senhas precisam ter no mínimo %1 caracteres" - -#: lib/RT/User_Overlay.pm:1046 -msgid "Password set" -msgstr "Senha definida" - -#: NOT FOUND IN SOURCE -msgid "Password too short" -msgstr "Senha muito curta" - -#: html/User/Prefs.html:242 -#. (loc_fuzzy($msg)) -msgid "Password: %1" -msgstr "Senha: %1" - -#: lib/RT/User_Overlay.pm:1032 -msgid "Password: Permission Denied" -msgstr "Senha: Permissão Negada" - -#: html/Admin/Users/Modify.html:368 -msgid "Passwords do not match." -msgstr "Senhas não coincidem." - -#: html/User/Prefs.html:244 -msgid "Passwords do not match. Your password has not been changed" -msgstr "Senhas não coincidem. Sua senha não foi mudada" - -#: html/Ticket/Elements/ShowSummary:64 html/Ticket/Elements/Tabs:121 html/Ticket/ModifyAll.html:74 -msgid "People" -msgstr "Pessoas" - -#: etc/initialdata:133 -msgid "Perform a user-defined action" -msgstr "Realizar uma ação definida pelo usuário" - -#: html/Admin/Tools/Configuration.html:96 -msgid "Perl configuration" -msgstr "Configuração perl" - -#: lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:582 lib/RT/ACE_Overlay.pm:592 lib/RT/ACE_Overlay.pm:602 lib/RT/ACE_Overlay.pm:667 lib/RT/Attribute_Overlay.pm:160 lib/RT/Attribute_Overlay.pm:166 lib/RT/Attribute_Overlay.pm:407 lib/RT/Attribute_Overlay.pm:416 lib/RT/Attribute_Overlay.pm:429 lib/RT/CurrentUser.pm:118 lib/RT/CurrentUser.pm:127 lib/RT/CustomField_Overlay.pm:1020 lib/RT/CustomField_Overlay.pm:1141 lib/RT/CustomField_Overlay.pm:1284 lib/RT/CustomField_Overlay.pm:174 lib/RT/CustomField_Overlay.pm:191 lib/RT/CustomField_Overlay.pm:202 lib/RT/CustomField_Overlay.pm:377 lib/RT/CustomField_Overlay.pm:406 lib/RT/CustomField_Overlay.pm:766 lib/RT/CustomField_Overlay.pm:939 lib/RT/CustomField_Overlay.pm:974 lib/RT/Group_Overlay.pm:1119 lib/RT/Group_Overlay.pm:1123 lib/RT/Group_Overlay.pm:1132 lib/RT/Group_Overlay.pm:1242 lib/RT/Group_Overlay.pm:1246 lib/RT/Group_Overlay.pm:1252 lib/RT/Group_Overlay.pm:447 lib/RT/Group_Overlay.pm:544 lib/RT/Group_Overlay.pm:622 lib/RT/Group_Overlay.pm:630 lib/RT/Group_Overlay.pm:728 lib/RT/Group_Overlay.pm:732 lib/RT/Group_Overlay.pm:738 lib/RT/Group_Overlay.pm:924 lib/RT/Group_Overlay.pm:928 lib/RT/Group_Overlay.pm:941 lib/RT/Queue_Overlay.pm:1056 lib/RT/Queue_Overlay.pm:142 lib/RT/Queue_Overlay.pm:160 lib/RT/Queue_Overlay.pm:659 lib/RT/Queue_Overlay.pm:669 lib/RT/Queue_Overlay.pm:683 lib/RT/Queue_Overlay.pm:821 lib/RT/Queue_Overlay.pm:830 lib/RT/Queue_Overlay.pm:843 lib/RT/Scrip_Overlay.pm:151 lib/RT/Scrip_Overlay.pm:162 lib/RT/Scrip_Overlay.pm:226 lib/RT/Scrip_Overlay.pm:540 lib/RT/Template_Overlay.pm:110 lib/RT/Template_Overlay.pm:279 lib/RT/Ticket_Overlay.pm:1359 lib/RT/Ticket_Overlay.pm:1369 lib/RT/Ticket_Overlay.pm:1383 lib/RT/Ticket_Overlay.pm:1524 lib/RT/Ticket_Overlay.pm:1534 lib/RT/Ticket_Overlay.pm:1548 lib/RT/Ticket_Overlay.pm:1665 lib/RT/Ticket_Overlay.pm:1985 lib/RT/Ticket_Overlay.pm:2128 lib/RT/Ticket_Overlay.pm:2298 lib/RT/Ticket_Overlay.pm:2348 lib/RT/Ticket_Overlay.pm:2528 lib/RT/Ticket_Overlay.pm:2541 lib/RT/Ticket_Overlay.pm:2617 lib/RT/Ticket_Overlay.pm:2630 lib/RT/Ticket_Overlay.pm:2751 lib/RT/Ticket_Overlay.pm:2765 lib/RT/Ticket_Overlay.pm:3016 lib/RT/Ticket_Overlay.pm:3027 lib/RT/Ticket_Overlay.pm:3033 lib/RT/Ticket_Overlay.pm:3250 lib/RT/Ticket_Overlay.pm:3254 lib/RT/Ticket_Overlay.pm:3397 lib/RT/Ticket_Overlay.pm:3525 lib/RT/Transaction_Overlay.pm:537 lib/RT/Transaction_Overlay.pm:544 lib/RT/Transaction_Overlay.pm:572 lib/RT/Transaction_Overlay.pm:579 lib/RT/User_Overlay.pm:1178 lib/RT/User_Overlay.pm:1858 lib/RT/User_Overlay.pm:371 lib/RT/User_Overlay.pm:737 lib/RT/User_Overlay.pm:776 -msgid "Permission Denied" -msgstr "Permissão Negada" - -#: lib/RT/Template_Overlay.pm:240 lib/RT/Template_Overlay.pm:249 -msgid "Permission denied" -msgstr "Permissão negada" - -#: lib/RT/Template_Overlay.pm:379 -msgid "Permissions denied" -msgstr "Permissões negadas" - -#: html/User/Elements/Tabs:58 -msgid "Personal Groups" -msgstr "Grupos Pessoais" - -#: html/User/Groups/index.html:53 html/User/Groups/index.html:63 -msgid "Personal groups" -msgstr "Grupos pessoais" - -#: html/User/Elements/DelegateRights:60 -msgid "Personal groups:" -msgstr "Grupos pessoais:" - -#: html/Admin/Users/Modify.html:183 html/User/Prefs.html:83 -msgid "Phone numbers" -msgstr "Telefones" - -#: html/Elements/Header:95 html/Elements/Tabs:94 html/SelfService/Elements/Tabs:98 html/SelfService/Prefs.html:48 html/User/Prefs.html:48 html/User/Prefs.html:51 -msgid "Preferences" -msgstr "Preferências" - -#: html/Admin/Users/MyRT.html:122 -#. ($pane, $UserObj->Name) -msgid "Preferences %1 for user %2 ." -msgstr "Preferências %1 para usuário %2." - -#: html/Prefs/MyRT.html:143 -#. ($pane) -msgid "Preferences saved for %1." -msgstr "Preferências salvas para %1." - -#: NOT FOUND IN SOURCE -msgid "Prefs" -msgstr "Prefs" - -#: lib/RT/Action/Generic.pm:197 -msgid "Prepare Stubbed" -msgstr "Preparação Abortada" - -#: html/Helpers/CalPopup.html:58 html/Ticket/Elements/Tabs:86 -msgid "Prev" -msgstr "Anterior" - -#: html/Elements/TicketList:105 -msgid "Previous Page" -msgstr "Página Anterior" - -#: NOT FOUND IN SOURCE -msgid "Previous page" -msgstr "Página anterior" - -#: lib/RT/ACE_Overlay.pm:159 lib/RT/ACE_Overlay.pm:241 lib/RT/ACE_Overlay.pm:571 -#. ($args{'PrincipalId'}) -msgid "Principal %1 not found." -msgstr "Usuário/Grupo %1 não encontrado." - -#: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:183 html/Ticket/Elements/EditBasics:94 html/Ticket/Elements/ShowBasics:74 lib/RT/Tickets_Overlay.pm:1906 -msgid "Priority" -msgstr "Prioridade" - -#: html/Admin/Queues/Modify.html:88 -msgid "Priority starts at" -msgstr "A prioridade inicia em" - -#: html/Search/Elements/EditSearches:52 -msgid "Privacy:" -msgstr "Privacidade:" - -#: etc/initialdata:25 -msgid "Privileged" -msgstr "Privilegiado" - -#: html/Admin/Users/Modify.html:346 html/User/Prefs.html:233 -#. (loc_fuzzy($msg)) -msgid "Privileged status: %1" -msgstr "Estado privilegiado: %1" - -#: html/Admin/Users/index.html:104 -msgid "Privileged users" -msgstr "Usuários privilegiados" - -#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 -msgid "Pseudogroup for internal use" -msgstr "Falso-grupo para uso interno" - -#: html/Search/Build.html:123 -msgid "Query Builder" -msgstr "Construtor de Consulta" - -#: html/Search/Elements/Chart:103 -msgid "Query:" -msgstr "Consulta:" - -#: html/Elements/QueueSummary:50 html/Elements/QuickCreate:56 html/Search/Elements/PickBasics:73 html/SelfService/Create.html:56 html/Ticket/Create.html:64 html/Ticket/Elements/EditBasics:59 html/Ticket/Elements/ShowBasics:78 html/Tools/Reports/CreatedByDates.html:87 html/Tools/Reports/ResolvedByDates.html:88 html/Tools/Reports/ResolvedByOwner.html:68 html/User/Elements/DelegateRights:103 lib/RT/Tickets_Overlay.pm:1733 -msgid "Queue" -msgstr "Fila" - -#: html/Admin/Queues/CustomField.html:65 html/Admin/Queues/Scrip.html:63 html/Admin/Queues/Scrips.html:71 html/Admin/Queues/Templates.html:67 -#. ($id) -#. ($Queue) -msgid "Queue %1 not found" -msgstr "Fila %1 não encontrada" - -#: NOT FOUND IN SOURCE -msgid "Queue '%1' not found\\n" -msgstr "A fila '%1' não foi encontrada\\n" - -#: NOT FOUND IN SOURCE -msgid "Queue Keyword Selections" -msgstr "Seleções de Palavras-chave da Fila" - -#: html/Admin/Queues/Modify.html:66 -msgid "Queue Name" -msgstr "Nome da Fila" - -#: NOT FOUND IN SOURCE -msgid "Queue Scrips" -msgstr "Scrips da Fila" - -#: lib/RT/Queue_Overlay.pm:367 -msgid "Queue already exists" -msgstr "A fila já existe" - -#: lib/RT/Queue_Overlay.pm:376 lib/RT/Queue_Overlay.pm:382 -msgid "Queue could not be created" -msgstr "A fila não pôde ser criada" - -#: html/Ticket/Create.html:318 lib/t/regression/01ticket_link_searching.t:17 -msgid "Queue could not be loaded." -msgstr "A fila não pôde ser carregada" - -#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:386 lib/RT/StyleGuide.pod:807 -msgid "Queue created" -msgstr "Fila criada" - -#: NOT FOUND IN SOURCE -msgid "Queue is not specified." -msgstr "A fila não foi especificada." - -#: html/SelfService/Display.html:128 lib/RT/CustomField_Overlay.pm:199 -msgid "Queue not found" -msgstr "Fila não encontrada" - -#: html/Admin/Elements/Tabs:61 html/Admin/index.html:74 -msgid "Queues" -msgstr "Filas" - -#: html/Elements/MyAdminQueues:48 -msgid "Queues I administer" -msgstr "Filas que eu administro" - -#: html/Elements/MySupportQueues:48 -msgid "Queues I'm an AdminCc for" -msgstr "Filas nas quais sou AdminCc" - -#: html/Elements/Quicksearch:49 html/Prefs/Elements/Tabs:60 html/Prefs/Quicksearch.html:72 -msgid "Quick search" -msgstr "Busca rápida" - -#: html/Elements/QuickCreate:49 -msgid "Quick ticket creation" -msgstr "Criação rápida de tíquete" - -#: html/Search/Results.html:83 -msgid "RSS" -msgstr "RSS" - -#: docs/design_docs/string-extraction-guide.txt:70 lib/RT/StyleGuide.pod:794 -#. ($RT::VERSION, $RT::rtname) -msgid "RT %1 for %2" -msgstr "RT %1 para %2" - -#: NOT FOUND IN SOURCE -msgid "RT %1. Copyright 1996-%1 Jesse Vincent <jesse\\@bestpractical.com>\\n" -msgstr "" -"RT %1. Direitos reservados 1996-%1 Jesse Vincent <jesse\\@bestpractical.com>" -"\\n" - -#: NOT FOUND IN SOURCE -msgid "RT %1. Copyright 1996-2002 Jesse Vincent <jesse\\@bestpractical.com>\\n" -msgstr "" -"RT %1. Direitos reservados 1996-2002 Jesse Vincent <jesse\\\\@bestpractical." -"com>\\\\n" - -#: html/Admin/index.html:48 html/Admin/index.html:49 -msgid "RT Administration" -msgstr "Administração do RT" - -#: NOT FOUND IN SOURCE -msgid "RT Authentication error." -msgstr "Erro de autenticação no RT." - -#: NOT FOUND IN SOURCE -msgid "RT Bounce: %1" -msgstr "Ricochete do RT: %1" - -#: NOT FOUND IN SOURCE -msgid "RT Configuration error" -msgstr "Erro de configuração do RT" - -#: NOT FOUND IN SOURCE -msgid "RT Critical error. Message not recorded!" -msgstr "Erro crítico no RT. A mensagem não foi registrada!" - -#: html/Elements/Error:65 html/SelfService/Error.html:64 -msgid "RT Error" -msgstr "Erro no RT" - -#: NOT FOUND IN SOURCE -msgid "RT Received mail (%1) from itself." -msgstr "O RT recebeu e-mail (%1) dele mesmo." - -#: NOT FOUND IN SOURCE -msgid "RT Recieved mail (%1) from itself." -msgstr "O RT recebeu e-mail (%1) dele mesmo." - -#: html/SelfService/Elements/Tabs:72 html/SelfService/Elements/Tabs:74 -msgid "RT Self Service" -msgstr "Auto-Serviço RT" - -#: NOT FOUND IN SOURCE -msgid "RT Self Service / Closed Tickets" -msgstr "Auto-serviço do RT / Tíquetes Fechados" - -#: html/Admin/Tools/Configuration.html:75 -msgid "RT Variables" -msgstr "Variáveis RT" - -#: html/Admin/Elements/SystemTabs:73 html/Admin/Elements/UserTabs:69 html/Admin/Global/MyRT.html:48 html/Admin/Global/MyRT.html:51 html/Admin/Global/MyRT.html:59 html/Admin/Global/index.html:86 html/Admin/Users/MyRT.html:68 html/Prefs/MyRT.html:68 html/Prefs/MyRT.html:80 html/User/Elements/Tabs:67 html/index.html:1 html/index.html:77 -msgid "RT at a glance" -msgstr "RT por alto" - -#: html/Admin/Users/MyRT.html:77 -#. ($UserObj->Name) -msgid "RT at a glance for the user %1" -msgstr "RT por alto para o usuário %1" - -#: html/Admin/CustomFields/Modify.html:119 -msgid "RT can include content from another web service when showing this custom field." -msgstr "RT pode incluir o conteúdo de algum outro serviço web quando estiver mostrando este campo personalizado." - -#: html/Admin/CustomFields/Modify.html:108 -msgid "RT can make this custom field's values into hyperlinks to another service." -msgstr "" -"RT pode transformar estes valores de campo customizado em hiperlinks para " -"outro serviço." - -#: NOT FOUND IN SOURCE -msgid "RT couldn't authenticate you" -msgstr "O RT não pôde autenticá-lo" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't find requestor via its external database lookup" -msgstr "" -"O RT não pôde encontrar o requisitante através de consulta ao banco de dados " -"externo" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't find the queue: %1" -msgstr "O RT não pôde encontrar a fila: %1" - -#: html/Elements/SetupSessionCookie:102 -msgid "RT couldn't store your session." -msgstr "RT não pode armazenar sua sessão." - -#: NOT FOUND IN SOURCE -msgid "RT couldn't validate this PGP signature. \\n" -msgstr "O RT não pôde validar esta assinatura PGP. \\n" - -#: html/Elements/Logo:51 html/Elements/PageLayout:176 -#. ($RT::rtname) -msgid "RT for %1" -msgstr "RT para %1" - -#: NOT FOUND IN SOURCE -msgid "RT for %1: %2" -msgstr "RT para %1: %2" - -#: NOT FOUND IN SOURCE -msgid "RT has proccessed your commands" -msgstr "O RT processou seus comandos" - -#: NOT FOUND IN SOURCE -msgid "RT thinks this message may be a bounce" -msgstr "O RT crê que esta mensagem seja um ricochete" - -#: html/Search/Simple.html:62 -msgid "RT will look for anything else you enter in ticket subjects." -msgstr "" -"RT vai procurar por qualquer outra coisa que você informar nos assuntos dos " -"tíquetes." - -#: NOT FOUND IN SOURCE -msgid "RT will process this message as if it were unsigned.\\n" -msgstr "O RT vai processar esta mensagem como se não fosse assinada.\\n" - -#: html/Admin/CustomFields/Modify.html:110 html/Admin/CustomFields/Modify.html:121 -msgid "RT will replace <tt>__id__</tt> and <tt>__CustomField__</tt> with the record id and custom field value, respectively" -msgstr "RT vai substituir <tt>__id__</tt> e <tt>__CustomField__</tt> respectivamente com o id do registro e o valor do campo personalizado" - -#: html/Admin/Users/Modify.html:81 html/User/Prefs.html:71 -msgid "Real Name" -msgstr "Nome real" - -#: NOT FOUND IN SOURCE -msgid "RealName" -msgstr "NomeReal" - -#: lib/RT/Transaction_Overlay.pm:746 -#. ($value) -msgid "Reference by %1 added" -msgstr "Referenciado por %1 adicionado" - -#: lib/RT/Transaction_Overlay.pm:786 -#. ($value) -msgid "Reference by %1 deleted" -msgstr "Referenciado por %1 removido" - -#: lib/RT/Transaction_Overlay.pm:743 -#. ($value) -msgid "Reference to %1 added" -msgstr "Referência a %1 adicionada" - -#: lib/RT/Transaction_Overlay.pm:783 -#. ($value) -msgid "Reference to %1 deleted" -msgstr "Referência a %1 removida" - -#: html/Elements/EditLinks:104 html/Elements/EditLinks:157 html/Elements/ShowLinks:94 html/Ticket/Create.html:227 html/Ticket/Elements/BulkLinks:74 -msgid "Referred to by" -msgstr "Referenciado por" - -#: html/Elements/EditLinks:153 html/Elements/EditLinks:95 html/Elements/SelectLinkType:51 html/Elements/ShowLinks:84 html/Ticket/Create.html:226 html/Ticket/Elements/BulkLinks:70 -msgid "Refers to" -msgstr "Faz referência a" - -#: NOT FOUND IN SOURCE -msgid "RefersTo" -msgstr "FazReferenciaA" - -#: NOT FOUND IN SOURCE -msgid "Refine" -msgstr "Refinar" - -#: NOT FOUND IN SOURCE -msgid "Refine search" -msgstr "Refinar a busca" - -#: html/Elements/Refresh:59 -#. ($value/60) -msgid "Refresh this page every %1 minutes." -msgstr "Recarregar esta página a cada %1 minutos." - -#: lib/RT/Transaction_Overlay.pm:832 -#. ($ticket->Subject) -msgid "Reminder '%1' added" -msgstr "Lembrete '%1' adicionado" - -#: lib/RT/Transaction_Overlay.pm:845 -#. ($ticket->Subject) -msgid "Reminder '%1' completed" -msgstr "Lembrete '%1' completado" - -#: lib/RT/Transaction_Overlay.pm:838 -#. ($ticket->Subject) -msgid "Reminder '%1' reopened" -msgstr "Lembrete '%1' reaberto" - -#: html/Ticket/Reminders.html:48 -#. ($Ticket->Id) -msgid "Reminder ticket #%1" -msgstr "Lembrete tíquete #%1" - -#: html/Elements/MyReminders:50 html/Ticket/Elements/ShowSummary:77 html/Ticket/Elements/Tabs:124 html/Ticket/Reminders.html:54 -msgid "Reminders" -msgstr "Lembretes" - -#: html/Ticket/Reminders.html:52 -#. ($Ticket->Id) -msgid "Reminders for ticket #%1" -msgstr "Lembretes para tíquete #%1" - -#: html/Search/Bulk.html:96 -msgid "Remove AdminCc" -msgstr "Remover AdminCc" - -#: html/Search/Bulk.html:92 -msgid "Remove Cc" -msgstr "Remover Cc" - -#: html/Search/Bulk.html:88 -msgid "Remove Requestor" -msgstr "Remover Requisitante" - -#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:149 -msgid "Reply" -msgstr "Responder" - -#: html/Admin/Queues/Modify.html:74 -msgid "Reply Address" -msgstr "Endereço para Resposta" - -#: html/Search/Bulk.html:131 html/Ticket/ModifyAll.html:96 html/Ticket/Update.html:80 -msgid "Reply to requestors" -msgstr "Responder para requisitantes" - -#: lib/RT/Queue_Overlay.pm:112 -msgid "Reply to tickets" -msgstr "Responder aos tíquetes" - -#: lib/RT/Queue_Overlay.pm:112 -msgid "ReplyToTicket" -msgstr "ReplyToTicket" - -#: html/Tools/Elements/Tabs:61 html/Tools/Reports/index.html:48 html/Tools/Reports/index.html:49 -msgid "Reports" -msgstr "Relatórios" - -#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:113 -msgid "Requestor" -msgstr "Requisitante" - -#: NOT FOUND IN SOURCE -msgid "Requestor email address" -msgstr "Endereço eletrônico do requisitante" - -#: NOT FOUND IN SOURCE -msgid "Requestor(s)" -msgstr "Requisitante(s)" - -#: NOT FOUND IN SOURCE -msgid "RequestorAddresses" -msgstr "RequestorAddresses" - -#: html/SelfService/Create.html:65 html/Ticket/Create.html:82 html/Ticket/Elements/EditPeople:71 html/Ticket/Elements/ShowPeople:54 -msgid "Requestors" -msgstr "Requisitantes" - -#: html/Admin/Queues/Modify.html:98 -msgid "Requests should be due in" -msgstr "A requisições vencem em" - -#: lib/RT/Attribute_Overlay.pm:148 -#. ('Object') -msgid "Required parameter '%1' not specified" -msgstr "Parâmetro '%1' requerido e não especificado" - -#: html/Elements/Submit:85 -msgid "Reset" -msgstr "Restaurar" - -#: html/Admin/Users/MyRT.html:62 html/Prefs/MyRT.html:62 -msgid "Reset to default" -msgstr "Voltar para padrão" - -#: html/Admin/Users/Modify.html:186 html/User/Prefs.html:86 -msgid "Residence" -msgstr "Residência" - -#: html/Ticket/Elements/Tabs:158 -msgid "Resolve" -msgstr "Resolver" - -#: html/Ticket/Update.html:158 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Resolve ticket #%1 (%2)" -msgstr "Resolver tíquete #%1 (%2)" - -#: etc/initialdata:323 html/Elements/SelectDateType:51 lib/RT/Ticket_Overlay.pm:1174 -msgid "Resolved" -msgstr "Resolvido" - -#: html/Tools/Reports/Elements/Tabs:57 -msgid "Resolved by owner" -msgstr "Resolvidos por proprietário" - -#: html/Tools/Reports/Elements/Tabs:61 -msgid "Resolved in date range" -msgstr "Resolvidos num intervalo de datas" - -#: html/Tools/Reports/ResolvedByDates.html:54 -msgid "Resolved tickets in period, grouped by owner" -msgstr "Tíquetes resolvidos no período, agrupados por proprietário" - -#: html/Tools/Reports/ResolvedByOwner.html:52 -msgid "Resolved tickets, grouped by owner" -msgstr "Tíquetes resolvidos, agrupados por proprietário" - -#: NOT FOUND IN SOURCE -msgid "Response to requestors" -msgstr "Resposta aos requisitantes" - -#: html/Elements/ListActions:48 html/Search/Elements/NewListActions:49 -msgid "Results" -msgstr "Resultados" - -#: NOT FOUND IN SOURCE -msgid "Results per page" -msgstr "Resultados por página" - -#: html/Admin/Users/Modify.html:128 html/User/Prefs.html:118 -msgid "Retype Password" -msgstr "Confirmar a Senha" - -#: html/Search/Elements/EditSearches:63 -msgid "Revert" -msgstr "Reverter" - -#: NOT FOUND IN SOURCE -msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" -msgstr "Direito de acesso %1 não encontrado para %2 %3 referente a %4 (%5)\\n" - -#: lib/RT/ACE_Overlay.pm:632 -msgid "Right Delegated" -msgstr "Direito de Acesso Delegado" - -#: lib/RT/ACE_Overlay.pm:322 -msgid "Right Granted" -msgstr "Direito de Acesso Outorgado" - -#: lib/RT/ACE_Overlay.pm:180 -msgid "Right Loaded" -msgstr "Direito de Acesso Carregado" - -#: lib/RT/ACE_Overlay.pm:697 lib/RT/ACE_Overlay.pm:718 -msgid "Right could not be revoked" -msgstr "Direito de acesso não pôde ser revogado" - -#: html/User/Delegation.html:87 -msgid "Right not found" -msgstr "Direito de acesso não encontrado" - -#: lib/RT/ACE_Overlay.pm:562 lib/RT/ACE_Overlay.pm:657 -msgid "Right not loaded." -msgstr "Direito de acesso não carregado." - -#: lib/RT/ACE_Overlay.pm:714 -msgid "Right revoked" -msgstr "Direito de acesso revogado" - -#: html/Admin/Elements/UserTabs:72 -msgid "Rights" -msgstr "Direitos de Acesso" - -#: html/Admin/CustomFields/GroupRights.html:131 lib/RT/Interface/Web.pm:987 -#. ($object_type) -msgid "Rights could not be granted for %1" -msgstr "Direitos de acesso não puderam ser outorgados a %1" - -#: html/Admin/CustomFields/GroupRights.html:158 lib/RT/Interface/Web.pm:1016 -#. ($object_type) -msgid "Rights could not be revoked for %1" -msgstr "Direitos de acesso não puderam ser revogados de %1" - -#: html/Admin/Global/GroupRights.html:74 html/Admin/Queues/GroupRights.html:76 -msgid "Roles" -msgstr "Papéis" - -#: NOT FOUND IN SOURCE -msgid "RootApproval" -msgstr "RootApproval" - -#: html/Prefs/MyRT.html:74 -msgid "Rows per box" -msgstr "Linhas por caixa" - -#: html/Search/Elements/DisplayOptions:95 -msgid "Rows per page" -msgstr "Linhas por página" - -#: lib/RT/Date.pm:424 -msgid "Sat." -msgstr "Sáb." - -#: html/Prefs/MyRT.html:74 html/Prefs/Quicksearch.html:66 html/Prefs/Search.html:71 html/Prefs/Search.html:71 html/Search/Elements/EditSearches:72 html/Widgets/SelectionBox:222 -msgid "Save" -msgstr "Salvar" - -#: html/Admin/Global/Template.html:69 html/Admin/Groups/Modify.html:94 html/Admin/Queues/Modify.html:113 html/Admin/Queues/People.html:128 html/Admin/Users/Modify.html:243 html/Prefs/Quicksearch.html:66 html/Prefs/SearchOptions.html:65 html/SelfService/Prefs.html:60 html/Ticket/Modify.html:62 html/Ticket/ModifyAll.html:129 html/Ticket/ModifyDates.html:62 html/Ticket/ModifyLinks.html:63 html/Ticket/ModifyPeople.html:62 html/User/Groups/Modify.html:79 -msgid "Save Changes" -msgstr "Salvar as Alterações" - -#: html/User/Prefs.html:183 -msgid "Save Preferences" -msgstr "Salvar Preferências" - -#: html/Ticket/Elements/PreviewScrips:133 -msgid "Save changes" -msgstr "Salvar as alterações" - -#: lib/RT/SavedSearch.pm:175 -#. ($name) -msgid "Saved search %1" -msgstr "Busca salva %1" - -#: html/Admin/Elements/ListGlobalScrips:62 html/Admin/Global/Scrip.html:79 html/Admin/Queues/Scrip.html:86 -#. ($scrip->Id) -#. ($id) -msgid "Scrip #%1" -msgstr "Scrip #%1" - -#: lib/RT/Scrip_Overlay.pm:205 -msgid "Scrip Created" -msgstr "Scrip Criado" - -#: html/Admin/Elements/EditScrip:54 -msgid "Scrip Fields" -msgstr "Campos de Scrip" - -#: html/Admin/Elements/EditScrips:111 -msgid "Scrip deleted" -msgstr "Scrip removido" - -#: html/Admin/Elements/QueueTabs:69 html/Admin/Elements/SystemTabs:56 html/Admin/Global/index.html:64 -msgid "Scrips" -msgstr "Scrips" - -#: NOT FOUND IN SOURCE -msgid "Scrips for %1\\n" -msgstr "Scrips para %1\\n" - -#: html/Admin/Queues/Scrips.html:57 -msgid "Scrips which apply to all queues" -msgstr "Scrips aplicáveis a todas as filas" - -#: html/Elements/SimpleSearch:50 html/Search/Simple.html:67 -msgid "Search" -msgstr "Buscar" - -#: NOT FOUND IN SOURCE -msgid "Search Criteria" -msgstr "Critérios de Busca" - -#: html/Prefs/SearchOptions.html:49 html/Prefs/SearchOptions.html:52 -msgid "Search Preferences" -msgstr "Buscar Preferências" - -#: lib/RT/SavedSearch.pm:117 -msgid "Search attribute load failure" -msgstr "Falha na carga de atributos de busca" - -#: html/Approvals/Elements/PendingMyApproval:61 -msgid "Search for approvals" -msgstr "Buscar por aprovações" - -#: html/Search/Simple.html:77 -msgid "Search for tickets" -msgstr "Busca por tíquetes" - -#: html/Search/Simple.html:59 -msgid "Search for tickets. Enter <strong>id</strong> numbers, <strong>queues</strong> by name, Owners by <strong>username</strong> and Requestors by <strong>email address</strong>. RT will look for anything else you enter in ticket bodies and attachments." -msgstr "Busca por tíquetes. Informar <strong>id</strong> por número, <strong>filas</strong> por nome, Proprietários por <strong>nomedeusuário</strong> e Requisitantes por <strong>endereço de e-email</strong>. RT vai procurar por qualquer outra coisa no corpo e anexos dos tíquetes." - -#: html/User/Elements/Tabs:64 -msgid "Search options" -msgstr "Opções de busca" - -#: html/Search/Chart.html:58 -#. ($PrimaryGroupBy) -msgid "Search results grouped by %1" -msgstr "Resultados da busca agrupado por %1" - -#: lib/RT/SavedSearch.pm:205 -#. ($msg) -msgid "Search update: %1" -msgstr "Busca atualizada: %1" - -#: html/Search/Simple.html:61 -msgid "Searching the full text of every ticket can take a long time, but if you need to do it, you can search for any word in full ticket history for any word by typing <b>fulltext:<i>word</i></b>." -msgstr "Pesquisar o texto completo de todos os tíquetes pode gastar muito tempo, mas se você precisa disto, é possível procurar por qualquer palavra no histórico completo do tíquete teclando <b>fulltext:<i>palavra</i></b>." - -#: bin/rt-crontool:267 -msgid "Security:" -msgstr "Segurança:" - -#: html/Elements/ShowCustomFields:102 -msgid "See also:" -msgstr "Ver também:" - -#: lib/RT/CustomField_Overlay.pm:107 -msgid "See custom fields" -msgstr "Ver campos personalizados" - -#: lib/RT/Queue_Overlay.pm:108 -msgid "See exact outgoing email messages and their recipeients" -msgstr "Ver mensagens de saída e destinatários" - -#: lib/RT/Queue_Overlay.pm:106 -msgid "See ticket private commentary" -msgstr "Ver comentários privados do tíquete" - -#: lib/RT/Queue_Overlay.pm:105 -msgid "See ticket summaries" -msgstr "Ver sumários de tíquetes" - -#: lib/RT/CustomField_Overlay.pm:107 -msgid "SeeCustomField" -msgstr "VerCampoPersonalizado" - -#: lib/RT/Group_Overlay.pm:171 -msgid "SeeGroup" -msgstr "VerGrupo" - -#: lib/RT/Queue_Overlay.pm:93 -msgid "SeeQueue" -msgstr "SeeQueue" - -#: html/Admin/CustomFields/index.html:48 html/Admin/CustomFields/index.html:51 -msgid "Select a Custom Field" -msgstr "Selecionar um Campo Personalizado" - -#: html/Admin/Groups/index.html:80 -msgid "Select a group" -msgstr "Selecionar um grupo" - -#: html/Admin/Queues/index.html:56 -msgid "Select a queue" -msgstr "Selecionar uma fila" - -#: html/SelfService/CreateTicketInQueue.html:50 -msgid "Select a queue for your new ticket" -msgstr "Selecionar uma fila para seu novo tíquete" - -#: html/Admin/Users/index.html:48 html/Admin/Users/index.html:51 html/Admin/Users/index.html:54 -msgid "Select a user" -msgstr "Selecionar um usuário" - -#: html/Admin/Elements/CustomFieldTabs:92 -msgid "Select custom field" -msgstr "Selecionar um campo personalizado" - -#: html/Admin/Global/CustomFields/index.html:72 -msgid "Select custom fields for all user groups" -msgstr "Selecionar campos personalizados para todos grupos de usuário" - -#: html/Admin/Global/CustomFields/index.html:67 -msgid "Select custom fields for all users" -msgstr "Selecionar campos personalizados para todos usuários" - -#: html/Admin/Global/CustomFields/index.html:78 -msgid "Select custom fields for tickets in all queues" -msgstr "Selecionar campos personalizados para todas filas" - -#: html/Admin/Global/CustomFields/index.html:85 -msgid "Select custom fields for transactions on tickets in all queues" -msgstr "" -"Selecionar campos personalizados para transações em tíquetes de todas as " -"filas" - -#: html/Admin/Elements/GroupTabs:77 html/User/Elements/GroupTabs:73 -msgid "Select group" -msgstr "Selecionar um grupo" - -#: lib/RT/CustomField_Overlay.pm:61 -msgid "Select multiple values" -msgstr "Selecionar valores múltiplos" - -#: lib/RT/CustomField_Overlay.pm:62 -msgid "Select one value" -msgstr "Selecionar um valor" - -#: html/Admin/Elements/QueueTabs:94 -msgid "Select queue" -msgstr "Selecionar uma fila" - -#: html/Prefs/Quicksearch.html:55 -msgid "Select queues to be displayed on the \"RT at a glance\" page" -msgstr "Selecionar filas a serem mostradas na página \"RT por alto\"" - -#: html/Admin/Global/Scrip.html:61 html/Admin/Global/Scrips.html:59 html/Admin/Queues/Scrip.html:69 html/Admin/Queues/Scrips.html:75 -msgid "Select scrip" -msgstr "Selecionar um scrip" - -#: html/Admin/Global/Template.html:80 html/Admin/Global/Templates.html:59 html/Admin/Queues/Template.html:78 html/Admin/Queues/Templates.html:70 -msgid "Select template" -msgstr "Selecionar um modelo" - -#: lib/RT/CustomField_Overlay.pm:63 -msgid "Select up to %1 values" -msgstr "Selecionar até %1 valores" - -#: html/Admin/Elements/UserTabs:80 -msgid "Select user" -msgstr "Selecionar um usuário" - -#: NOT FOUND IN SOURCE -msgid "SelectMultiple" -msgstr "SelectMultiple" - -#: NOT FOUND IN SOURCE -msgid "SelectSingle" -msgstr "SelectSingle" - -#: html/Admin/Elements/EditCustomFields:60 -msgid "Selected Custom Fields" -msgstr "Selecionar Campos Personalizados" - -#: html/Admin/CustomFields/Objects.html:61 -msgid "Selected objects" -msgstr "Selecionar Objetos" - -#: html/Widgets/SelectionBox:220 -msgid "Selections modified. Please save your changes" -msgstr "Seleções mudadas.Por favor, salve suas alterações" - -#: NOT FOUND IN SOURCE -msgid "Self Service" -msgstr "Auto-serviço" - -#: etc/initialdata:121 -msgid "Send mail to all watchers" -msgstr "Enviar mensagem a todos os observadores" - -#: etc/initialdata:117 -msgid "Send mail to all watchers as a \"comment\"" -msgstr "Enviar mensagem a todos os observadores como um \"comentário\"" - -#: etc/initialdata:112 -msgid "Send mail to requestors and Ccs" -msgstr "Enviar mensagem aos requisitantes e Ccs" - -#: etc/initialdata:107 -msgid "Send mail to requestors and Ccs as a comment" -msgstr "Enviar mensagem aos requisitantes e Ccs como um comentário" - -#: etc/initialdata:78 -msgid "Sends a message to the requestors" -msgstr "Envia uma mensagem aos requisitantes" - -#: etc/initialdata:125 etc/initialdata:129 -msgid "Sends mail to explicitly listed Ccs and Bccs" -msgstr "Envia uma mensagem aos Ccs e Bccs explicitamente listados" - -#: etc/initialdata:94 etc/upgrade/3.1.17/content:7 -msgid "Sends mail to the Ccs" -msgstr "Envie mail para os Ccs" - -#: etc/initialdata:90 etc/upgrade/3.1.17/content:3 -msgid "Sends mail to the Ccs as a comment" -msgstr "Envie mail para os Ccs como um comentário" - -#: etc/initialdata:102 -msgid "Sends mail to the administrative Ccs" -msgstr "Envia uma mensagem aos Ccs administrativos" - -#: etc/initialdata:98 -msgid "Sends mail to the administrative Ccs as a comment" -msgstr "Envia uma mensagem aos Ccs administrativos como um comentário" - -#: etc/initialdata:82 etc/initialdata:86 -msgid "Sends mail to the owner" -msgstr "Envia uma mensagem ao proprietário" - -#: lib/RT/Date.pm:451 -msgid "Sep." -msgstr "Set." - -#: NOT FOUND IN SOURCE -msgid "September" -msgstr "Setembro" - -#: html/Ticket/Elements/ShowTransaction:158 -msgid "Show" -msgstr "Mostrar" - -#: NOT FOUND IN SOURCE -msgid "Show Approvals" -msgstr "Mostrar Aprovações" - -#: html/Search/Elements/EditFormat:58 -msgid "Show Columns" -msgstr "Mostrar Colunas" - -#: html/Ticket/Elements/Tabs:222 -msgid "Show Results" -msgstr "Mostrar os Resultados" - -#: html/Approvals/Elements/PendingMyApproval:66 -msgid "Show approved requests" -msgstr "Mostrar requisições aprovadas" - -#: html/Ticket/Create.html:390 -msgid "Show basics" -msgstr "Mostrar o sumário" - -#: html/Approvals/Elements/PendingMyApproval:67 -msgid "Show denied requests" -msgstr "Mostrar requisições negadas" - -#: html/Ticket/Create.html:393 -msgid "Show details" -msgstr "Mostrar os detalhes" - -#: html/Approvals/Elements/PendingMyApproval:65 -msgid "Show pending requests" -msgstr "Mostrar requisições pendentes" - -#: html/Approvals/Elements/PendingMyApproval:68 -msgid "Show requests awaiting other approvals" -msgstr "Mostrar requisições aguardando outras aprovações" - -#: NOT FOUND IN SOURCE -msgid "Show ticket private commentary" -msgstr "Mostrar comentário privado do tíquete" - -#: NOT FOUND IN SOURCE -msgid "Show ticket summaries" -msgstr "Mostrar sumários do tíquete" - -#: lib/RT/Queue_Overlay.pm:95 -msgid "ShowACL" -msgstr "MostrarACL" - -#: lib/RT/System.pm:87 -msgid "ShowConfigTab" -msgstr "MostarAbaDeConfiguracao" - -#: lib/RT/Queue_Overlay.pm:108 -msgid "ShowOutgoingEmail" -msgstr "MostrarE-maildeSaida" - -#: lib/RT/Group_Overlay.pm:170 -msgid "ShowSavedSearches" -msgstr "MostrarBuscasSalvas" - -#: lib/RT/Queue_Overlay.pm:104 -msgid "ShowScrips" -msgstr "MostrarScrips" - -#: lib/RT/Queue_Overlay.pm:101 -msgid "ShowTemplate" -msgstr "MostrarModelo" - -#: lib/RT/Queue_Overlay.pm:105 -msgid "ShowTicket" -msgstr "MostrarTiquete" - -#: lib/RT/Queue_Overlay.pm:106 -msgid "ShowTicketComments" -msgstr "MostrarComentariosdeTiquete" - -#: lib/RT/Queue_Overlay.pm:109 -msgid "Sign up as a ticket Requestor or ticket or queue Cc" -msgstr "Cadastrar como um Requisitante de tíquete ou um Cc de tíquete ou fila" - -#: lib/RT/Queue_Overlay.pm:110 -msgid "Sign up as a ticket or queue AdminCc" -msgstr "Cadastrar como um AdminCC de tíquete ou fila" - -#: html/Admin/Users/Modify.html:234 html/User/Prefs.html:170 -msgid "Signature" -msgstr "Assinatura" - -#: NOT FOUND IN SOURCE -msgid "Signed in as %1" -msgstr "Assinado como %1" - -#: html/Elements/Tabs:71 -msgid "Simple Search" -msgstr "Busca Simples" - -#: html/Admin/Elements/SelectSingleOrMultiple:49 -msgid "Single" -msgstr "Único" - -#: html/Search/Elements/EditFormat:77 -msgid "Size" -msgstr "Tamanho" - -#: html/Elements/Header:91 -msgid "Skip Menu" -msgstr "Saltar Menu" - -#: html/Search/Elements/EditFormat:80 -msgid "Small" -msgstr "Pequeno" - -#: html/Admin/CustomFields/Modify.html:122 -msgid "Some browsers may only load content from the same domain as your RT server." -msgstr "" -"Alguns navegadores somente carregam conteúdo do mesmo domínio que seu " -"servidor RT." - -#: html/Admin/Elements/AddCustomFieldValue:51 html/Admin/Elements/EditCustomFieldValues:56 -msgid "Sort" -msgstr "Ordenar" - -#: NOT FOUND IN SOURCE -msgid "Sort key" -msgstr "Chave de ordenação" - -#: NOT FOUND IN SOURCE -msgid "Sort results by" -msgstr "Ordenar os resultados por" - -#: NOT FOUND IN SOURCE -msgid "SortOrder" -msgstr "Ordenação" - -#: html/Admin/Elements/EditScrip:80 -msgid "Stage" -msgstr "Estágio" - -#: NOT FOUND IN SOURCE -msgid "Stalled" -msgstr "Pendente" - -#: NOT FOUND IN SOURCE -msgid "Start page" -msgstr "Página inicial" - -#: html/Elements/SelectDateType:50 html/Ticket/Elements/EditDates:55 html/Ticket/Elements/ShowDates:58 -msgid "Started" -msgstr "Iniciado" - -#: NOT FOUND IN SOURCE -msgid "Started date '%1' could not be parsed" -msgstr "A data de iníciado '%1' não pôde ser compreendida" - -#: html/Elements/SelectDateType:54 html/Ticket/Create.html:210 html/Ticket/Elements/EditDates:50 html/Ticket/Elements/ShowDates:54 -msgid "Starts" -msgstr "Inicia" - -#: NOT FOUND IN SOURCE -msgid "Starts By" -msgstr "Inicia Por" - -#: NOT FOUND IN SOURCE -msgid "Starts date '%1' could not be parsed" -msgstr "A data de início '%1' não pôde ser compreendida" - -#: html/Admin/Users/Modify.html:165 html/User/Prefs.html:147 -msgid "State" -msgstr "Estado" - -#: html/Search/Elements/PickBasics:89 html/SelfService/Update.html:59 html/Ticket/Create.html:68 html/Ticket/Elements/EditBasics:55 html/Ticket/Elements/ShowBasics:54 html/Ticket/Update.html:61 html/Tools/MyDay.html:70 lib/RT/Ticket_Overlay.pm:1168 lib/RT/Tickets_Overlay.pm:1767 -msgid "Status" -msgstr "Estado" - -#: etc/initialdata:309 -msgid "Status Change" -msgstr "Mudança de Estado" - -#: NOT FOUND IN SOURCE -msgid "Status changed from %1 to %2" -msgstr "Estado mudado de %1 para %2" - -#: NOT FOUND IN SOURCE -msgid "StatusChange" -msgstr "MudancadeEstado" - -#: html/Ticket/Elements/Tabs:180 -msgid "Steal" -msgstr "Roubar" - -#: lib/RT/Queue_Overlay.pm:119 -msgid "Steal tickets" -msgstr "Roubar tíquetes" - -#: lib/RT/Queue_Overlay.pm:119 -msgid "StealTicket" -msgstr "RoubarTiquete" - -#: lib/RT/Transaction_Overlay.pm:699 -#. ($Old->Name) -msgid "Stolen from %1" -msgstr "Roubado de %1" - -#: NOT FOUND IN SOURCE -msgid "Stolen from %1 " -msgstr "Roubado de %1 " - -#: html/Search/Elements/EditFormat:83 -msgid "Style" -msgstr "Estilo" - -#: html/Elements/QuickCreate:54 html/Elements/SelectAttachmentField:49 html/Search/Bulk.html:134 html/SelfService/Create.html:81 html/SelfService/Update.html:67 html/Ticket/Create.html:110 html/Ticket/Elements/EditBasics:50 html/Ticket/Elements/Reminders:127 html/Ticket/ModifyAll.html:102 html/Ticket/Update.html:84 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:1849 -msgid "Subject" -msgstr "Assunto" - -#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:813 lib/RT/Transaction_Overlay.pm:721 -#. ($self->Data) -msgid "Subject changed to %1" -msgstr "Assunto mudou para %1" - -#: html/Elements/Submit:77 -msgid "Submit" -msgstr "Enviar" - -#: NOT FOUND IN SOURCE -msgid "Submit Workflow" -msgstr "Enviar Workflow" - -#: lib/RT/Group_Overlay.pm:776 -msgid "Succeeded" -msgstr "Deu certo" - -#: lib/RT/Date.pm:425 -msgid "Sun." -msgstr "Dom." - -#: lib/RT/System.pm:77 -msgid "SuperUser" -msgstr "SuperUsuário" - -#: html/User/Elements/DelegateRights:100 -msgid "System" -msgstr "Sistema" - -#: html/Admin/Elements/ToolTabs:56 html/Admin/Tools/Configuration.html:50 -msgid "System Configuration" -msgstr "Configuração do Sistema" - -#: html/Admin/CustomFields/GroupRights.html:130 html/Admin/CustomFields/GroupRights.html:157 html/Admin/CustomFields/UserRights.html:100 html/Admin/CustomFields/UserRights.html:130 html/Admin/Elements/SelectRights:108 lib/RT/ACE_Overlay.pm:586 lib/RT/Interface/Web.pm:1015 lib/RT/Interface/Web.pm:986 -msgid "System Error" -msgstr "Erro do Sistema" - -#: NOT FOUND IN SOURCE -msgid "System Error. Right not granted." -msgstr "Erro de sistema. Direito não outorgado." - -#: NOT FOUND IN SOURCE -msgid "System Error. right not granted" -msgstr "Erro de sistema. direito não outorgado" - -#: lib/RT/Transaction_Overlay.pm:226 lib/RT/Transaction_Overlay.pm:232 -#. ($msg) -msgid "System Error: %1" -msgstr "Erro do Sistema: %1" - -#: html/Admin/Tools/index.html:49 -msgid "System Tools" -msgstr "Ferramentas do Sistema" - -#: lib/RT/ACE_Overlay.pm:635 -msgid "System error. Right not delegated." -msgstr "Erro do sistema. Direito de acesso não delegado." - -#: lib/RT/ACE_Overlay.pm:165 lib/RT/ACE_Overlay.pm:230 lib/RT/ACE_Overlay.pm:325 -msgid "System error. Right not granted." -msgstr "Erro do sistema. Direito de acesso não outorgado." - -#: NOT FOUND IN SOURCE -msgid "System error. Unable to grant rights." -msgstr "Erro de sistema. Não é possível outorgar direitos de acesso." - -#: html/Admin/CustomFields/GroupRights.html:60 html/Admin/Global/GroupRights.html:58 html/Admin/Groups/GroupRights.html:60 html/Admin/Queues/GroupRights.html:59 -msgid "System groups" -msgstr "Grupos do sistema" - -#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 -msgid "SystemRolegroup for internal use" -msgstr "SystemRolegroup para uso interno" - -#: lib/RT/CurrentUser.pm:359 -msgid "TEST_STRING" -msgstr "" - -#: etc/initialdata:603 html/Search/Elements/EditFormat:74 html/Ticket/Elements/Tabs:172 -msgid "Take" -msgstr "Tomar" - -#: lib/RT/Queue_Overlay.pm:117 -msgid "Take tickets" -msgstr "Tomar tíquetes" - -#: lib/RT/Queue_Overlay.pm:117 -msgid "TakeTicket" -msgstr "TomarTiquete" - -#: lib/RT/Transaction_Overlay.pm:684 -msgid "Taken" -msgstr "Tomado" - -#: html/Admin/Elements/EditScrip:73 html/Tools/Offline.html:80 -msgid "Template" -msgstr "Modelo" - -# -#: html/Admin/Global/Template.html:114 html/Admin/Queues/Template.html:115 -#. ($TemplateObj->Id()) -msgid "Template #%1" -msgstr "Modelo #%1" - -#: html/Admin/Elements/EditTemplates:112 -msgid "Template deleted" -msgstr "Modelo removido" - -#: lib/RT/Scrip_Overlay.pm:178 -msgid "Template is mandatory argument" -msgstr "Modelo é um argumento obrigatório" - -#: lib/RT/Scrip_Overlay.pm:182 -msgid "Template not found" -msgstr "Modelo não encontrado" - -#: NOT FOUND IN SOURCE -msgid "Template not found\\n" -msgstr "Modelo não encontrado\\n" - -#: lib/RT/Template_Overlay.pm:346 -msgid "Template parsed" -msgstr "Modelo processado" - -#: lib/RT/Template_Overlay.pm:398 -msgid "Template parsing error" -msgstr "Erro de análise gramatical do modelo" - -#: html/Admin/Elements/QueueTabs:72 html/Admin/Elements/SystemTabs:59 html/Admin/Global/index.html:68 -msgid "Templates" -msgstr "Modelos" - -#: NOT FOUND IN SOURCE -msgid "Templates for %1\\n" -msgstr "Modelos de %1\\n" - -#: lib/RT/CustomField_Overlay.pm:946 lib/RT/Record.pm:962 -msgid "That is already the current value" -msgstr "Este já é o valor atual" - -#: lib/RT/CustomField_Overlay.pm:415 -msgid "That is not a value for this custom field" -msgstr "Este não é um valor para este campo personalizado" - -#: lib/RT/Ticket_Overlay.pm:1996 -msgid "That is the same value" -msgstr "Este é o mesmo valor" - -#: lib/RT/ACE_Overlay.pm:307 lib/RT/ACE_Overlay.pm:616 -msgid "That principal already has that right" -msgstr "Este usuário/grupo já tem este direito." - -#: lib/RT/Queue_Overlay.pm:755 -#. ($args{'Type'}) -msgid "That principal is already a %1 for this queue" -msgstr "Este usuário/grupo já é um %1 desta fila" - -#: lib/RT/Ticket_Overlay.pm:1437 -#. ($self->loc($args{'Type'})) -msgid "That principal is already a %1 for this ticket" -msgstr "Este usuário/grupo já é um %1 deste tíquete" - -#: lib/RT/Queue_Overlay.pm:854 -#. ($args{'Type'}) -msgid "That principal is not a %1 for this queue" -msgstr "Este usuário/grupo não é um %1 desta fila" - -#: NOT FOUND IN SOURCE -msgid "That principal is not a %1 for this ticket" -msgstr "Este principal não é um %1 deste tíquete" - -#: lib/RT/Ticket_Overlay.pm:1992 -msgid "That queue does not exist" -msgstr "Esta fila não existe" - -#: lib/RT/Ticket_Overlay.pm:3259 -msgid "That ticket has unresolved dependencies" -msgstr "Este tíquete tem dependências não resolvidas" - -#: NOT FOUND IN SOURCE -msgid "That user already has that right" -msgstr "Este usuário já tem este direito de acesso" - -#: lib/RT/Action/CreateTickets.pm:712 lib/RT/Ticket_Overlay.pm:3062 -msgid "That user already owns that ticket" -msgstr "Este usuário já possui este tíquete" - -#: lib/RT/Ticket_Overlay.pm:3005 -msgid "That user does not exist" -msgstr "Este usuário não existe" - -#: lib/RT/User_Overlay.pm:391 -msgid "That user is already privileged" -msgstr "Este usuário já tem privilégios" - -#: lib/RT/User_Overlay.pm:412 -msgid "That user is already unprivileged" -msgstr "Este usuário já não tem privilégios" - -#: lib/RT/User_Overlay.pm:404 -msgid "That user is now privileged" -msgstr "Este usuário agora tem privilégios" - -#: lib/RT/User_Overlay.pm:425 -msgid "That user is now unprivileged" -msgstr "Este usuário agora não tem privilégios" - -#: NOT FOUND IN SOURCE -msgid "That user is now unprivilegedileged" -msgstr "Este usuário agora é não privilegiado" - -#: lib/RT/Ticket_Overlay.pm:3055 -msgid "That user may not own tickets in that queue" -msgstr "Este usuário não pode possuir tíquetes nesta fila" - -#: lib/RT/Link_Overlay.pm:235 -msgid "That's not a numerical id" -msgstr "Este não é um identificador numérico" - -#: html/SelfService/Display.html:55 html/Ticket/Create.html:179 html/Ticket/Elements/ShowSummary:51 -msgid "The Basics" -msgstr "Sumário" - -#: lib/RT/ACE_Overlay.pm:114 -msgid "The CC of a ticket" -msgstr "O CC de um tíquete" - -#: lib/RT/ACE_Overlay.pm:115 -msgid "The administrative CC of a ticket" -msgstr "O CC administrativo de um tíquete" - -#: NOT FOUND IN SOURCE -msgid "The comment has been recorded" -msgstr "O comentário foi registrado" - -#: bin/rt-crontool:277 -msgid "The following command will find all active tickets in the queue 'general' and set their priority to 99 if they haven't been touched in 4 hours:" -msgstr "O seguinte comando procurará por todos os tíquetes ativos na fila 'geral' e alterar sua prioridade para 99 se eles não tiverem sido alterados há 4 horas:" - -#: NOT FOUND IN SOURCE -msgid "The following commands were not proccessed:\\n\\n" -msgstr "Os seguintes comandos não foram processados:\\n\\n" - -#: lib/RT/Record.pm:965 -msgid "The new value has been set." -msgstr "O novo valor foi atribuído." - -#: lib/RT/ACE_Overlay.pm:112 -msgid "The owner of a ticket" -msgstr "O proprietário de um tíquete" - -#: lib/RT/ACE_Overlay.pm:113 -msgid "The requestor of a ticket" -msgstr "O requisitante de um tíquete" - -#: html/Admin/Elements/EditUserComments:49 -msgid "These comments aren't generally visible to the user" -msgstr "Estes comandos geralmente não estão visíveis para o usuário" - -#: lib/RT/CustomField_Overlay.pm:981 -msgid "This custom field does not apply to that object" -msgstr "Este campo personalizado não se aplica a este objeto" - -#: html/Admin/Tools/Configuration.html:52 -msgid "This feature is only available to system administrators" -msgstr "Esta função só está disponível para administradores do sistema" - -#: html/Ticket/Elements/PreviewScrips:98 -msgid "This message will be sent to..." -msgstr "Esta mensagem será enviada para..." - -#: NOT FOUND IN SOURCE -msgid "This ticket %1 %2 (%3)\\n" -msgstr "Este tíquete %1 %2 (%3)\\n" - -#: bin/rt-crontool:268 -msgid "This tool allows the user to run arbitrary perl modules from within RT." -msgstr "" -"Esta ferramenta permite o usuário invocar módulos Perl arbitrários de dentro " -"do RT." - -#: lib/RT/Transaction_Overlay.pm:327 -msgid "This transaction appears to have no content" -msgstr "Parece que esta transação não tem conteúdo" - -#: html/Ticket/Elements/ShowRequestor:72 -#. ($rows) -msgid "This user's %1 highest priority tickets" -msgstr "Os %1 tíquetes mais prioritários deste usuário" - -#: NOT FOUND IN SOURCE -msgid "This user's 25 highest priority tickets" -msgstr "Os 25 tíquetes de mais alta prioridade deste usuário" - -#: lib/RT/Date.pm:422 -msgid "Thu." -msgstr "Qui." - -#: NOT FOUND IN SOURCE -msgid "Ticket" -msgstr "Tíquete" - -#: NOT FOUND IN SOURCE -msgid "Ticket # %1 %2" -msgstr "Tíquete # %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Ticket # %1 Jumbo update: %2" -msgstr "Tíquete # %1 atualização jumbo: %2" - -#: html/Ticket/ModifyAll.html:48 html/Ticket/ModifyAll.html:52 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket #%1 Jumbo update: %2" -msgstr "Tíquete #%1 Atualização jumbo: %2" - -#: html/Approvals/Elements/ShowDependency:69 -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Ticket #%1: %2" -msgstr "Tíquete #%1: %2" - -#: lib/RT/Action/CreateTickets.pm:1352 lib/RT/Action/CreateTickets.pm:1361 lib/RT/Action/CreateTickets.pm:607 lib/RT/Action/CreateTickets.pm:731 lib/RT/Action/CreateTickets.pm:743 -#. ($T::Tickets{$template_id}->Id) -#. ($T::Tickets{$template_id}->id) -#. ($ticket->Id) -msgid "Ticket %1" -msgstr "Tíquete %1" - -#: lib/RT/Ticket_Overlay.pm:757 lib/RT/Ticket_Overlay.pm:777 -#. ($self->Id, $QueueObj->Name) -msgid "Ticket %1 created in queue '%2'" -msgstr "Tíquete %1 criado na fila '%2'" - -#: NOT FOUND IN SOURCE -msgid "Ticket %1 loaded\\n" -msgstr "Tíquete %1 carregado\\n" - -#: html/Search/Bulk.html:379 html/Tools/MyDay.html:103 html/Tools/MyDay.html:94 html/Tools/MyDay.html:97 -#. ($Ticket->Id, $_) -#. ($id, $msg) -msgid "Ticket %1: %2" -msgstr "Tíquete %1: %2" - -#: html/Admin/Elements/QueueTabs:76 -msgid "Ticket Custom Fields" -msgstr "Campos Personalizados do Tíquete" - -#: html/Ticket/History.html:48 html/Ticket/History.html:51 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket History # %1 %2" -msgstr "Histórico do Tíquete # %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Ticket Id" -msgstr "Identificador do tíquete" - -#: etc/initialdata:324 -msgid "Ticket Resolved" -msgstr "Tíquete Resolvido" - -#: html/Admin/Elements/GlobalCustomFieldTabs:71 html/Admin/Global/CustomFields/index.html:83 lib/RT/CustomField_Overlay.pm:1210 -msgid "Ticket Transactions" -msgstr "Transações do Tíquete" - -#: NOT FOUND IN SOURCE -msgid "Ticket attachment" -msgstr "Arquivo anexo do tíquete" - -#: lib/RT/Tickets_Overlay.pm:2036 -msgid "Ticket content" -msgstr "Conteúdo do tíquete" - -#: lib/RT/Tickets_Overlay.pm:2085 -msgid "Ticket content type" -msgstr "Tipo do conteúdo do tíquete" - -#: lib/RT/Ticket_Overlay.pm:605 lib/RT/Ticket_Overlay.pm:619 lib/RT/Ticket_Overlay.pm:630 lib/RT/Ticket_Overlay.pm:765 -msgid "Ticket could not be created due to an internal error" -msgstr "O tíquete não pôde ser criado devido a um erro interno" - -#: html/Ticket/Create.html:246 -msgid "Ticket could not be loaded" -msgstr "Tíquete não pode ser carregado" - -#: NOT FOUND IN SOURCE -msgid "Ticket created" -msgstr "Tíquete criado" - -#: NOT FOUND IN SOURCE -msgid "Ticket creation failed" -msgstr "A criação do tíquete falhou" - -#: NOT FOUND IN SOURCE -msgid "Ticket deleted" -msgstr "Tíquete removido" - -#: NOT FOUND IN SOURCE -msgid "Ticket id not found" -msgstr "Id de tíquete não encontrado" - -#: NOT FOUND IN SOURCE -msgid "Ticket killed" -msgstr "Tíquete destruído" - -#: html/Ticket/Display.html:57 -msgid "Ticket metadata" -msgstr "Metadados do tíquete" - -#: NOT FOUND IN SOURCE -msgid "Ticket not found" -msgstr "Tíquete não encontrado" - -#: etc/initialdata:310 -msgid "Ticket status changed" -msgstr "O estado do tíquete mudou" - -#: NOT FOUND IN SOURCE -msgid "Ticket watchers" -msgstr "Observadores do tíquete" - -#: lib/RT/Search/FromSQL.pm:84 -#. (ref $self) -msgid "TicketSQL search module" -msgstr "Módulo de busca TiqueteSQL" - -#: html/Admin/Elements/GlobalCustomFieldTabs:66 html/Admin/Global/CustomFields/index.html:77 html/Elements/Tabs:74 html/Search/Chart:113 html/Search/Elements/Chart:111 lib/RT/CustomField_Overlay.pm:1209 -msgid "Tickets" -msgstr "Tíquetes" - -#: NOT FOUND IN SOURCE -msgid "Tickets %1 %2" -msgstr "Tíquetes %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Tickets %1 by %2" -msgstr "Tíquetes %1 por %2" - -#: html/Tools/Reports/CreatedByDates.html:88 -msgid "Tickets created after" -msgstr "Tíquetes criados depois de" - -#: html/Tools/Reports/CreatedByDates.html:90 -msgid "Tickets created before" -msgstr "Tíquetes criados antes de" - -#: NOT FOUND IN SOURCE -msgid "Tickets from %1" -msgstr "Tíquetes de %1" - -#: html/Tools/Reports/ResolvedByDates.html:89 -msgid "Tickets resolved after" -msgstr "Tíquetes resolvidos depois de" - -#: html/Tools/Reports/ResolvedByDates.html:91 -msgid "Tickets resolved before" -msgstr "Tíquetes resolvidos antes de" - -#: html/Approvals/Elements/ShowDependency:50 -msgid "Tickets which depend on this approval:" -msgstr "Tíquetes dependentes desta aprovação:" - -#: html/Search/Elements/PickBasics:136 html/Ticket/Create.html:185 html/Ticket/Elements/EditBasics:74 -msgid "Time Estimated" -msgstr "Tempo Estimado" - -#: html/Search/Elements/PickBasics:137 html/Ticket/Create.html:198 html/Ticket/Elements/EditBasics:87 lib/RT/Tickets_Overlay.pm:2007 -msgid "Time Left" -msgstr "Tempo Restante" - -#: html/Search/Elements/PickBasics:135 html/Ticket/Create.html:191 html/Ticket/Elements/EditBasics:80 lib/RT/Tickets_Overlay.pm:1982 -msgid "Time Worked" -msgstr "Tempo Trabalhado" - -#: NOT FOUND IN SOURCE -msgid "Time left" -msgstr "Tempo restante" - -#: html/Elements/Footer:53 -msgid "Time to display" -msgstr "Tempo de apresentação" - -#: NOT FOUND IN SOURCE -msgid "Time worked" -msgstr "Tempo trabalhado" - -#: NOT FOUND IN SOURCE -msgid "TimeLeft" -msgstr "TempoRestanrte" - -#: lib/RT/Ticket_Overlay.pm:1169 -msgid "TimeWorked" -msgstr "TempoTrabalhado" - -#: html/Search/Elements/EditFormat:76 -msgid "Title" -msgstr "Título" - -#: NOT FOUND IN SOURCE -msgid "To generate a diff of this commit:" -msgstr "Para gerar as diferenças desta transação" - -#: NOT FOUND IN SOURCE -msgid "To generate a diff of this commit:\\n" -msgstr "Para gerar as diferenças desta transação:\\n" - -#: html/Elements/Footer:64 -#. ('<a href="mailto:sales@bestpractical.com">sales@bestpractical.com</a>') -msgid "To inquire about support, training, custom development or licensing, please contact %1." -msgstr "Para pedir informações sobre suporte, treinamento, desenvolvimento personalizado ou licenciamento, por favor, contacte %1." - -#: lib/RT/Ticket_Overlay.pm:1172 -msgid "Told" -msgstr "Última atualização" - -#: html/Admin/Elements/Tabs:70 html/Admin/index.html:90 html/Elements/Tabs:77 html/Tools/index.html:48 html/Tools/index.html:51 -msgid "Tools" -msgstr "Ferramentas" - -#: html/Search/Elements/Chart:132 -msgid "Total" -msgstr "Total" - -#: etc/initialdata:252 -msgid "Transaction" -msgstr "Transação" - -#: lib/RT/Transaction_Overlay.pm:826 -#. ($self->Data) -msgid "Transaction %1 purged" -msgstr "Transação %1 removida" - -#: lib/RT/Transaction_Overlay.pm:185 -msgid "Transaction Created" -msgstr "Transação Criada" - -#: html/Admin/Elements/QueueTabs:80 -msgid "Transaction Custom Fields" -msgstr "Campos Personalizados da Transação" - -#: NOT FOUND IN SOURCE -msgid "Transaction->Create couldn't, as you didn't specify a ticket id" -msgstr "Transaction->Create não foi feito, já que você não especificou um id de tíquete" - -#: lib/RT/Transaction_Overlay.pm:130 -msgid "Transaction->Create couldn't, as you didn't specify an object type and id" -msgstr "Transaction->Create não foi feito, já que você não especificou um tipo de objeto e id de tíquete" - -#: lib/RT/Transaction_Overlay.pm:891 -msgid "Transactions are immutable" -msgstr "Transações são imutáveis" - -#: NOT FOUND IN SOURCE -msgid "Trying to delete a right: %1" -msgstr "Tentando remover um direito de acesso: %1" - -#: lib/RT/Date.pm:420 -msgid "Tue." -msgstr "Ter." - -#: html/Admin/CustomFields/Modify.html:68 html/Admin/Elements/EditCustomField:67 html/Ticket/Elements/AddWatchers:56 html/Ticket/Elements/AddWatchers:67 html/Ticket/Elements/AddWatchers:77 lib/RT/Ticket_Overlay.pm:1170 lib/RT/Tickets_Overlay.pm:1821 -msgid "Type" -msgstr "Tipo" - -#: lib/RT/ScripCondition_Overlay.pm:130 -msgid "Unimplemented" -msgstr "Não implementado" - -#: html/Admin/Users/Modify.html:91 -msgid "Unix login" -msgstr "Usuário Unix" - -#: NOT FOUND IN SOURCE -msgid "UnixUsername" -msgstr "NomeUsuárioUnix" - -#: lib/RT/Attachment_Overlay.pm:291 lib/RT/Record.pm:863 -#. ($ContentEncoding) -#. ($self->ContentEncoding) -msgid "Unknown ContentEncoding %1" -msgstr "Codificação de conteúdo desconhecida %1" - -#: NOT FOUND IN SOURCE -msgid "Unknown field: $key" -msgstr "Campo desconhecido: $key" - -#: html/Search/Build.html:461 lib/RT/Report/Tickets.pm:412 -#. ($key) -msgid "Unknown field: %1" -msgstr "Campo desconhecido: %1" - -#: html/Elements/SelectResultsPerPage:60 -msgid "Unlimited" -msgstr "Ilimitado" - -#: html/Search/Elements/SelectSearchesForObjects:66 -msgid "Unnamed search" -msgstr "Busca sen nome" - -#: etc/initialdata:32 -msgid "Unprivileged" -msgstr "Não privilegiado" - -#: html/Admin/Elements/EditCustomFields:62 -msgid "Unselected Custom Fields" -msgstr "Campos Personalizados não selecionados" - -#: html/Admin/CustomFields/Objects.html:63 -msgid "Unselected objects" -msgstr "Objetos não selecionados" - -#: lib/RT/Transaction_Overlay.pm:680 -msgid "Untaken" -msgstr "Não tomado" - -#: html/Admin/Elements/EditScrip:130 html/Elements/RT__Ticket/ColumnMap:304 html/Search/Bulk.html:195 html/Search/Bulk.html:77 -msgid "Update" -msgstr "Atualizar" - -#: NOT FOUND IN SOURCE -msgid "Update ID" -msgstr "Identificador de atualização" - -#: html/Ticket/Update.html:137 -msgid "Update Ticket" -msgstr "Atualizar Tíquete" - -#: html/Search/Bulk.html:128 html/Ticket/ModifyAll.html:89 html/Ticket/Update.html:74 -msgid "Update Type" -msgstr "Tipo de atualização" - -#: NOT FOUND IN SOURCE -msgid "Update all these tickets at once" -msgstr "Atualizar todos estes tíquetes de uma vez" - -#: NOT FOUND IN SOURCE -msgid "Update email" -msgstr "Atualizar e-mail" - -#: html/Search/Bulk.html:202 html/Search/Results.html:80 -msgid "Update multiple tickets" -msgstr "Atualizar múltiplos tíquetes" - -#: NOT FOUND IN SOURCE -msgid "Update name" -msgstr "Atualizar nome" - -#: lib/RT/Action/CreateTickets.pm:752 lib/RT/Interface/Web.pm:606 -msgid "Update not recorded." -msgstr "Atualização não registrada." - -#: NOT FOUND IN SOURCE -msgid "Update selected tickets" -msgstr "Atualizar os tíquetes selecionados" - -#: NOT FOUND IN SOURCE -msgid "Update signature" -msgstr "Atualizar assinatura" - -#: html/Ticket/ModifyAll.html:86 -msgid "Update ticket" -msgstr "Atualizar o tíquete" - -#: NOT FOUND IN SOURCE -msgid "Update ticket # %1" -msgstr "Atualizar o tíquete # %1" - -#: html/SelfService/Update.html:114 html/SelfService/Update.html:49 -#. ($Ticket->id) -msgid "Update ticket #%1" -msgstr "Atualizar o tíquete #%1" - -#: html/Ticket/Update.html:160 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Update ticket #%1 (%2)" -msgstr "Atualizar tíquete #%1 (%2)" - -#: lib/RT/Action/CreateTickets.pm:750 lib/RT/Interface/Web.pm:605 -msgid "Update type was neither correspondence nor comment." -msgstr "O tipo da atualização não foi nem correspondência e nem comentário." - -#: html/Elements/SelectDateType:56 html/Ticket/Elements/ShowDates:74 lib/RT/CustomField_Overlay.pm:1287 lib/RT/Ticket_Overlay.pm:1173 -msgid "Updated" -msgstr "Atualizado" - -#: html/Tools/Offline.html:95 -msgid "Upload" -msgstr "Enviar" - -#: lib/RT/CustomField_Overlay.pm:86 -msgid "Upload multiple files" -msgstr "Enviar múltiplos arquivos" - -#: lib/RT/CustomField_Overlay.pm:81 -msgid "Upload multiple images" -msgstr "Enviar múltiplas imagens" - -#: lib/RT/CustomField_Overlay.pm:87 -msgid "Upload one file" -msgstr "Enviar um arquivo" - -#: lib/RT/CustomField_Overlay.pm:82 -msgid "Upload one image" -msgstr "Enviar uma imagem" - -#: lib/RT/CustomField_Overlay.pm:88 -msgid "Upload up to %1 files" -msgstr "Enviar até %1 arquivos" - -#: lib/RT/CustomField_Overlay.pm:83 -msgid "Upload up to %1 images" -msgstr "Enviar até %1 imagens" - -#: html/Tools/Offline.html:95 -msgid "Upload your changes" -msgstr "Enviar suas alterações" - -#: html/Admin/index.html:92 -msgid "Use other RT administrative tools" -msgstr "Usar outras ferramentas administrativas RT" - -#: NOT FOUND IN SOURCE -msgid "User %1 %2: %3\\n" -msgstr "Usuário %1 %2: %3\\n" - -#: NOT FOUND IN SOURCE -msgid "User %1 Password: %2\\n" -msgstr "Usuário %1 Senha: %2\\n" - -#: lib/RT/Ticket_Overlay.pm:508 -#. ($args{'Owner'}) -msgid "User '%1' could not be found." -msgstr "Usuário '%1' não encontrado." - -#: NOT FOUND IN SOURCE -msgid "User '%1' not found" -msgstr "Usuário '%1' não encontrado" - -#: NOT FOUND IN SOURCE -msgid "User '%1' not found\\n" -msgstr "Usuário '%1' não encontrado\\n" - -#: etc/initialdata:132 etc/initialdata:206 -msgid "User Defined" -msgstr "Definido pelo Usuário" - -#: html/Admin/Elements/EditScrip:95 -msgid "User Defined conditions and actions" -msgstr "Condições e ações definidas pelo usuário" - -#: NOT FOUND IN SOURCE -msgid "User ID" -msgstr "Identificador de usuário" - -#: NOT FOUND IN SOURCE -msgid "User Id" -msgstr "Identificador do usuário" - -#: html/Admin/Elements/CustomFieldTabs:74 html/Admin/Elements/GroupTabs:70 html/Admin/Elements/QueueTabs:87 html/Admin/Elements/SystemTabs:70 html/Admin/Global/index.html:82 -msgid "User Rights" -msgstr "Direitos de Acesso de Usuário" - -#: html/Admin/Users/Modify.html:305 -#. ($msg) -msgid "User could not be created: %1" -msgstr "O usuário não pôde ser criado: %1" - -#: lib/RT/User_Overlay.pm:332 -msgid "User created" -msgstr "Usuário criado" - -#: html/Admin/CustomFields/GroupRights.html:76 html/Admin/Global/GroupRights.html:90 html/Admin/Groups/GroupRights.html:77 html/Admin/Queues/GroupRights.html:92 -msgid "User defined groups" -msgstr "Grupos definidos pelo usuário" - -#: lib/RT/User_Overlay.pm:594 lib/RT/User_Overlay.pm:614 -msgid "User loaded" -msgstr "Usuário carregado" - -#: NOT FOUND IN SOURCE -msgid "User notified" -msgstr "Usuário notificado" - -#: NOT FOUND IN SOURCE -msgid "User view" -msgstr "Visualização de usuário" - -#: html/Admin/Groups/index.html:105 -msgid "User-defined groups" -msgstr "Grupos definidos pelo usuário" - -#: html/Admin/Users/Modify.html:71 html/Elements/Login:92 html/Ticket/Elements/AddWatchers:58 -msgid "Username" -msgstr "Nome de usuário" - -#: html/Admin/Elements/GlobalCustomFieldTabs:57 html/Admin/Elements/SelectNewGroupMembers:49 html/Admin/Elements/Tabs:55 html/Admin/Global/CustomFields/index.html:66 html/Admin/Groups/Members.html:78 html/Admin/Queues/People.html:91 html/Admin/index.html:64 html/User/Groups/Members.html:81 lib/RT/CustomField_Overlay.pm:1211 -msgid "Users" -msgstr "Usuários" - -#: html/Admin/Users/index.html:87 -msgid "Users matching search criteria" -msgstr "Usuários que satisfazem o critério de busca" - -#: bin/rt-crontool:136 -#. ($transaction->id) -msgid "Using transaction #%1..." -msgstr "Usando transação #%1" - -#: lib/RT/Tickets_Overlay_SQL.pm:530 -msgid "Valid Query" -msgstr "Consulta Válida" - -#: html/Admin/CustomFields/Modify.html:82 -msgid "Validation" -msgstr "Validação" - -#: NOT FOUND IN SOURCE -msgid "ValueOfQueue" -msgstr "Valor da fila" - -#: html/Admin/CustomFields/Modify.html:132 html/Admin/Elements/EditCustomField:80 -msgid "Values" -msgstr "Valores" - -#: lib/RT/Queue_Overlay.pm:109 -msgid "Watch" -msgstr "Observar" - -#: lib/RT/Queue_Overlay.pm:110 -msgid "WatchAsAdminCc" -msgstr "ObservarcomoAdminCC" - -#: NOT FOUND IN SOURCE -msgid "Watcher loaded" -msgstr "Observador carregado" - -#: html/Admin/Elements/QueueTabs:65 -msgid "Watchers" -msgstr "Observadores" - -#: NOT FOUND IN SOURCE -msgid "WebEncoding" -msgstr "Codificação de Web" - -#: lib/RT/Date.pm:421 -msgid "Wed." -msgstr "Qua." - -#: html/Tools/MyDay.html:80 -msgid "What I did today" -msgstr "O que eu fiz hoje" - -#: etc/initialdata:521 -msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" -msgstr "Quando todas as aprovações de um tíquete forem concedidas, adicionar uma correspondência ao tíquete original" - -#: etc/initialdata:485 -msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" -msgstr "Quando uma aprovação for concedida a um tíquete, adicionar uma correspondência ao tíquete original" - -#: etc/initialdata:146 -msgid "When a ticket is created" -msgstr "Quando um tíquete é criado" - -#: etc/initialdata:418 -msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" -msgstr "Quando um tíquete de aprovação é criado, notificar o Proprietário e o AdminCc do ítem aguardando por aprovação" - -#: etc/initialdata:151 -msgid "When anything happens" -msgstr "Quando qualquer coisa acontecer" - -#: etc/initialdata:199 -msgid "Whenever a ticket is resolved" -msgstr "Sempre que um tíquete for resolvido" - -#: etc/initialdata:185 -msgid "Whenever a ticket's owner changes" -msgstr "Sempre que mudar o proprietário de um tíquete" - -#: etc/initialdata:178 etc/upgrade/3.1.17/content:16 -msgid "Whenever a ticket's priority changes" -msgstr "Sempre que a prioridade de um tíquete for mudada" - -#: etc/initialdata:193 -msgid "Whenever a ticket's queue changes" -msgstr "Sempre que um tíquete mudar de fila" - -#: etc/initialdata:170 -msgid "Whenever a ticket's status changes" -msgstr "Sempre que o estado de um tíquete mudar" - -#: etc/initialdata:207 -msgid "Whenever a user-defined condition occurs" -msgstr "Sempre que ocorrer uma condição definida por usuário" - -#: etc/initialdata:164 -msgid "Whenever comments come in" -msgstr "Sempre que um novo comentário é adicionado" - -#: etc/initialdata:157 -msgid "Whenever correspondence comes in" -msgstr "Sempre que uma nova correspondência é adicionada" - -#: html/Admin/Users/Modify.html:191 html/User/Prefs.html:90 -msgid "Work" -msgstr "Trabalho" - -#: html/Search/Results.html:84 -msgid "Work offline" -msgstr "Trabalhar offline" - -#: NOT FOUND IN SOURCE -msgid "WorkPhone" -msgstr "Telefone de trabalho" - -#: html/Ticket/Elements/ShowBasics:65 html/Ticket/Update.html:66 html/Tools/MyDay.html:65 -msgid "Worked" -msgstr "Trabalhado" - -#: lib/RT/Ticket_Overlay.pm:3166 -msgid "You already own this ticket" -msgstr "Você já é proprietário deste tíquete" - -#: html/autohandler:216 html/autohandler:224 -msgid "You are not an authorized user" -msgstr "Você não é um usuário autorizado" - -#: html/Prefs/Search.html:58 -msgid "You can also edit the predefined search itself" -msgstr "Você também pode editar as buscas pré-definidas" - -#: lib/RT/Ticket_Overlay.pm:3048 -msgid "You can only reassign tickets that you own or that are unowned" -msgstr "Você só pode reatribuir seus próprios tíquetes ou aqueles que não têm dono" - -#: lib/RT/Ticket_Overlay.pm:3044 -msgid "You can only take tickets that are unowned" -msgstr "Você apenas pode pegar tíquetes que não tem dono" - -#: NOT FOUND IN SOURCE -msgid "You don't have permission to view that ticket.\\n" -msgstr "Você não tem permissão para ver este tíquete.\\n" - -#: docs/design_docs/string-extraction-guide.txt:47 lib/RT/StyleGuide.pod:778 -#. ($num, $queue) -msgid "You found %1 tickets in queue %2" -msgstr "Você encontrou %1 tíquetes na fila %2" - -#: html/NoAuth/Logout.html:54 -msgid "You have been logged out of RT." -msgstr "Você foi desconectado do RT." - -#: html/SelfService/Display.html:135 -msgid "You have no permission to create tickets in that queue." -msgstr "Você não tem permissão para criar tíquetes nesta fila." - -#: lib/RT/Ticket_Overlay.pm:2005 -msgid "You may not create requests in that queue." -msgstr "Você não pode criar requisições nesta fila." - -#: html/NoAuth/Logout.html:58 -msgid "You're welcome to login again" -msgstr "Volte sempre" - -#: NOT FOUND IN SOURCE -msgid "Your %1 requests" -msgstr "Suas %1 requisições" - -#: NOT FOUND IN SOURCE -msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" -msgstr "" -"Seu administrador do RT configurou erradamente os endereços eletrônicos que " -"invocam o RT" - -#: etc/initialdata:502 -msgid "Your request has been approved by %1. Other approvals may still be pending." -msgstr "" -"Sua requisição foi aprovada por %1. Outras aprovações ainda podem estar " -"pendentes." - -#: etc/initialdata:540 -msgid "Your request has been approved." -msgstr "Sua requisição foi aprovada." - -#: NOT FOUND IN SOURCE -msgid "Your request was rejected" -msgstr "Sua requisição foi rejeitada" - -#: etc/initialdata:445 -msgid "Your request was rejected." -msgstr "Sua requisição foi rejeitada." - -#: html/autohandler:253 -msgid "Your username or password is incorrect" -msgstr "Nome de usuário ou senha incorretos" - -#: html/Admin/Users/Modify.html:171 html/User/Prefs.html:151 -msgid "Zip" -msgstr "CEP" - -#: NOT FOUND IN SOURCE -msgid "[no subject]" -msgstr "[sem assunto]" - -#: html/Search/Elements/DisplayOptions:67 -msgid "[none]" -msgstr "[nenhum]" - -#: lib/RT/System.pm:89 -msgid "allow creation of saved searches" -msgstr "permite a criação de buscas salvas" - -#: lib/RT/System.pm:88 -msgid "allow loading of saved searches" -msgstr "permite a carga de buscas salvas" - -#: html/User/Elements/DelegateRights:82 -#. ($right->PrincipalObj->Object->SelfDescription) -msgid "as granted to %1" -msgstr "como outorgado a %1" - -#: html/Search/Results.html:85 -msgid "chart" -msgstr "gráfico" - -#: html/SelfService/Closed.html:51 -msgid "closed" -msgstr "fechado" - -#: html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectMatch:57 -msgid "contains" -msgstr "contém" - -#: NOT FOUND IN SOURCE -msgid "content" -msgstr "conteúdo" - -#: NOT FOUND IN SOURCE -msgid "correspondence (probably) not sent" -msgstr "correspondência (provavelmente) não enviada" - -#: NOT FOUND IN SOURCE -msgid "correspondence sent" -msgstr "correspondência enviada" - -#: html/Admin/Queues/Modify.html:100 lib/RT/Date.pm:348 -msgid "days" -msgstr "dias" - -#: NOT FOUND IN SOURCE -msgid "dead" -msgstr "morto" - -#: NOT FOUND IN SOURCE -msgid "delete" -msgstr "remover" - -#: lib/RT/Queue_Overlay.pm:89 -msgid "deleted" -msgstr "removido" - -#: html/Search/Elements/PickBasics:63 -msgid "does not match" -msgstr "não satisfaz" - -#: html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectMatch:58 -msgid "doesn't contain" -msgstr "não contém" - -#: html/Elements/SelectEqualityOperator:61 -msgid "equal to" -msgstr "igual a" - -#: html/Search/Build.html:553 -msgid "error: can't move down" -msgstr "erro: não pode mover para baixo" - -#: html/Search/Build.html:575 -msgid "error: can't move left" -msgstr "erro: não pode mover para a esquerda" - -#: html/Search/Build.html:534 -msgid "error: can't move up" -msgstr "erro: não pode mover para cima" - -#: html/Search/Build.html:618 -msgid "error: nothing to delete" -msgstr "erro: nada para remover" - -#: html/Search/Build.html:539 html/Search/Build.html:558 html/Search/Build.html:580 html/Search/Build.html:609 -msgid "error: nothing to move" -msgstr "erro: nada para mover" - -#: html/Search/Build.html:636 -msgid "error: nothing to toggle" -msgstr "erro: nada para alternar" - -#: NOT FOUND IN SOURCE -msgid "false" -msgstr "falso" - -#: NOT FOUND IN SOURCE -msgid "filename" -msgstr "nome do arquivo" - -#: html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectEqualityOperator:61 -msgid "greater than" -msgstr "maior que" - -#: lib/RT/Group_Overlay.pm:216 -#. ($self->Name) -msgid "group '%1'" -msgstr "grupo '%1'" - -#: html/Search/Results.html:90 -#. ($m->scomp('Elements/SelectGroupBy', Name => 'PrimaryGroupBy', Query => $Query)) -msgid "grouped by %1" -msgstr "agrupado por %1" - -#: lib/RT/Date.pm:344 -msgid "hours" -msgstr "horas" - -#: html/Search/Elements/PickBasics:50 -msgid "id" -msgstr "identificador" - -#: html/Elements/SelectBoolean:55 html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectMatch:59 html/Search/Elements/PickBasics:164 html/Search/Elements/PickBasics:76 html/Search/Elements/PickBasics:92 html/Search/Elements/PickCFs:55 -msgid "is" -msgstr "é" - -#: html/Elements/SelectBoolean:59 html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectMatch:60 html/Search/Elements/PickBasics:165 html/Search/Elements/PickBasics:77 html/Search/Elements/PickBasics:93 html/Search/Elements/PickCFs:56 -msgid "isn't" -msgstr "não é" - -#: html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectEqualityOperator:61 -msgid "less than" -msgstr "menor que" - -#: html/Search/Elements/PickBasics:62 -msgid "matches" -msgstr "satisfazem" - -#: lib/RT/Date.pm:340 -msgid "min" -msgstr "" - -#: html/Tools/MyDay.html:65 -msgid "minutes" -msgstr "minutos" - -#: NOT FOUND IN SOURCE -msgid "modifications\\n\\n" -msgstr "modificações\\n\\n" - -#: lib/RT/Date.pm:356 -msgid "months" -msgstr "meses" - -#: lib/RT/Queue_Overlay.pm:84 -msgid "new" -msgstr "novo" - -#: html/Admin/Elements/PickCustomFields:66 html/Admin/Elements/PickObjects:67 -msgid "no name" -msgstr "sem nome" - -#: html/Admin/Elements/EditScrips:66 -msgid "no value" -msgstr "sem valor" - -#: html/Admin/Elements/EditQueueWatchers:50 html/Ticket/Elements/EditWatchers:51 -msgid "none" -msgstr "nenhum" - -#: html/Elements/SelectEqualityOperator:61 -msgid "not equal to" -msgstr "diferente de" - -#: NOT FOUND IN SOURCE -msgid "notlike" -msgstr "diferente" - -#: html/SelfService/Elements/MyRequests:78 lib/RT/Queue_Overlay.pm:85 -msgid "open" -msgstr "aberto" - -#: lib/RT/Group_Overlay.pm:221 -#. ($self->Name, $user->Name) -msgid "personal group '%1' for user '%2'" -msgstr "grupo pessoal '%1' para o usuário '%2'" - -#: lib/RT/Group_Overlay.pm:229 -#. ($queue->Name, $self->Type) -msgid "queue %1 %2" -msgstr "fila %1 %2" - -#: lib/RT/Queue_Overlay.pm:88 -msgid "rejected" -msgstr "rejeitado" - -#: lib/RT/Queue_Overlay.pm:87 -msgid "resolved" -msgstr "resolvido" - -#: lib/RT/Date.pm:336 -msgid "sec" -msgstr "seg" - -#: lib/RT/System.pm:87 -msgid "show Configuration tab" -msgstr "mostrar aba de Configuração" - -#: html/Search/Results.html:82 -msgid "spreadsheet" -msgstr "planilha" - -#: lib/RT/Queue_Overlay.pm:86 -msgid "stalled" -msgstr "pendente" - -#: html/Search/Results.html:91 -#. ($m->scomp('Elements/SelectChartType', Name => 'ChartStyle')) -msgid "style: %1" -msgstr "Estilo: %1" - -#: html/Prefs/MyRT.html:95 -msgid "summary rows" -msgstr "linhas do sumário" - -#: lib/RT/Group_Overlay.pm:224 -#. ($self->Type) -msgid "system %1" -msgstr "sistema %1" - -#: lib/RT/Group_Overlay.pm:235 -#. ($self->Type) -msgid "system group '%1'" -msgstr "grupo do sistema '%1'" - -#: html/Elements/Error:66 html/SelfService/Error.html:65 -msgid "the calling component did not specify why" -msgstr "o componente chamador não especificou por que" - -#: lib/RT/Group_Overlay.pm:232 -#. ($self->Instance, $self->Type) -msgid "ticket #%1 %2" -msgstr "tíquete #%1 %2" - -#: NOT FOUND IN SOURCE -msgid "true" -msgstr "verdadeiro" - -#: lib/RT/Group_Overlay.pm:238 -#. ($self->Id) -msgid "undescribed group %1" -msgstr "grupo %1 sem descrição " - -#: NOT FOUND IN SOURCE -msgid "undescripbed group %1" -msgstr "grupo sem descrição %1" - -#: lib/RT/Group_Overlay.pm:213 -#. ($user->Object->Name) -msgid "user %1" -msgstr "usuário %1" - -#: lib/RT/Date.pm:352 -msgid "weeks" -msgstr "semanas" - -#: NOT FOUND IN SOURCE -msgid "with template %1" -msgstr "com modelo %1" - -#: lib/RT/Date.pm:360 -msgid "years" -msgstr "anos" - diff --git a/rt/lib/RT/I18N/pt_pt.po b/rt/lib/RT/I18N/pt_pt.po deleted file mode 100644 index fa32e0e33..000000000 --- a/rt/lib/RT/I18N/pt_pt.po +++ /dev/null @@ -1,5194 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: RT 3.5.x\n" -"PO-Revision-Date: 2008-05-12 12:00-0000\n" -"Last-Translator: RICARDO OLIVEIRA <rmo@eurotux.com>\n" -"Language-Team: rt-devel <rt-devel@lists.bestpractical.com>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: html/Widgets/SavedSearch:117 -#. ($self->{CurrentSearch}{Object}->Description) -msgid " %1 deleted." -msgstr " %1 apagado" - -#: html/Widgets/SavedSearch:94 -#. ($self->{CurrentSearch}{Description}, $args->{Description}) -msgid " %1 renamed to %2." -msgstr " %1 alterado para %2." - -#: html/Widgets/SavedSearch:107 -#. ($args->{Description}) -msgid " %1 saved." -msgstr " %1 gravado" - -#: html/Approvals/Elements/Approve:50 html/Approvals/Elements/ShowDependency:73 html/SelfService/Display.html:48 html/Ticket/Display.html:49 html/Ticket/Display.html:53 -#. ($Ticket->id, $Ticket->Subject) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -#. ($ticket->Id, $ticket->Subject) -#. ($TicketObj->Id, $TicketObj->Subject) -msgid "#%1: %2" -msgstr "#%1: %2" - -#: html/Elements/ShowSearch:116 -msgid "$1" -msgstr "$1" - -#: lib/RT/Record.pm:957 -#. ($label) -msgid "$prefix %1" -msgstr "$prefix %1" - -#: lib/RT/URI/fsck_com_rt.pm:258 -#. ($self->ObjectType, $self->Object->Id) -msgid "%1 #%2" -msgstr "%1 #%2" - -#: lib/RT/Date.pm:367 -#. ($s, $time_unit) -msgid "%1 %2" -msgstr "%1 %2" - -#: lib/RT/Tickets_Overlay.pm:1684 -#. ($args{'FIELD'}, $args{'OPERATOR'}, $args{'VALUE'}) -msgid "%1 %2 %3" -msgstr "" - -#: lib/RT/Date.pm:403 -#. ($self->GetWeekday($wday), $self->GetMonth($mon), map {sprintf "%02d", $_} ($mday, $hour, $min, $sec), ($year+1900)) -msgid "%1 %2 %3 %4:%5:%6 %7" -msgstr "%1 %2 %3 %4:%5:%6 %7" - -#: lib/RT/Record.pm:1707 lib/RT/Transaction_Overlay.pm:668 lib/RT/Transaction_Overlay.pm:711 -#. ($cf->Name, $new_value->Content) -#. ($field, $self->NewValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 added" -msgstr "%1 %2 adicionado" - -#: lib/RT/Date.pm:364 -#. ($s, $time_unit) -msgid "%1 %2 ago" -msgstr "há %1 %2" - -#: lib/RT/Record.pm:1714 lib/RT/Transaction_Overlay.pm:675 -#. ($cf->Name, $old_content, $new_value->Content) -#. ($field, $self->OldValue, $self->NewValue) -msgid "%1 %2 changed to %3" -msgstr "%1 %2 alterado para %3" - -#: lib/RT/Record.pm:1711 lib/RT/Transaction_Overlay.pm:671 lib/RT/Transaction_Overlay.pm:717 -#. ($cf->Name, $old_value->Content) -#. ($field, $self->OldValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 deleted" -msgstr "%1 %2 apagado" - -#: html/Admin/Elements/EditScrips:67 html/Admin/Elements/ListGlobalScrips:65 html/Ticket/Elements/PreviewScrips:105 -#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) -msgid "%1 %2 with template %3" -msgstr "" - -#: html/Ticket/Elements/ShowAttachments:74 -#. ($rev->CreatedAsString, $size, $rev->CreatorObj->Name) -msgid "%1 (%2) by %3" -msgstr "%1 (%2) por %3" - -#: html/SelfService/Update.html:62 html/Ticket/Elements/EditBasics:110 html/Ticket/Update.html:63 html/Ticket/Update.html:65 html/Tools/MyDay.html:71 -#. (loc($DefaultStatus)) -#. (loc($Ticket->Status())) -#. (loc($TicketObj->Status)) -#. ($TicketObj->OwnerObj->Name()) -msgid "%1 (Unchanged)" -msgstr "%1 (inalterado)" - -#: bin/rt-crontool:239 bin/rt-crontool:246 bin/rt-crontool:252 -#. ("--search-argument", "--search") -#. ("--condition-argument", "--condition") -#. ("--action-argument", "--action") -msgid "%1 - An argument to pass to %2" -msgstr "" - -#: bin/rt-crontool:264 -#. ("--verbose") -msgid "%1 - Output status updates to STDOUT" -msgstr "" - -#: bin/rt-crontool:255 -#. ("--template-id") -msgid "%1 - Specify id of the template you want to use" -msgstr "" - -#: bin/rt-crontool:258 -#. ("--transaction") -msgid "%1 - Specify if you want to use either 'first' or 'last' transaction" -msgstr "" - -#: bin/rt-crontool:249 -#. ("--action") -msgid "%1 - Specify the action module you want to use" -msgstr "" - -#: bin/rt-crontool:243 -#. ("--condition") -msgid "%1 - Specify the condition module you want to use" -msgstr "" - -#: bin/rt-crontool:236 -#. ("--search") -msgid "%1 - Specify the search module you want to use" -msgstr "" - -#: bin/rt-crontool:261 -#. ("--transaction-type") -msgid "%1 - Specify the type of a transaction you want to use" -msgstr "%1 - Especifique o tipo de transacção que quer usar" - -#: html/Elements/Footer:58 -#. ('»|«', $RT::VERSION, '2006', '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',) -msgid "%1 RT %2 Copyright 1996-%3 %4." -msgstr "" - -#: lib/RT/ScripAction_Overlay.pm:152 -#. ($self->Id) -msgid "%1 ScripAction loaded" -msgstr "" - -#: lib/RT/Record.pm:1744 -#. ($args{'Value'}, $cf->Name) -msgid "%1 added as a value for %2" -msgstr "%1 adicionado como valor de %2" - -#: lib/RT/Link_Overlay.pm:146 lib/RT/Link_Overlay.pm:153 -#. ($args{'Base'}) -#. ($args{'Target'}) -msgid "%1 appears to be a local object, but can't be found in the database" -msgstr "" - -#: html/Ticket/Elements/ShowDates:75 lib/RT/Transaction_Overlay.pm:552 -#. ($self->BriefDescription , $self->CreatorObj->Name) -#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) -msgid "%1 by %2" -msgstr "%1 por %2" - -#: lib/RT/Record.pm:534 lib/RT/Transaction_Overlay.pm:619 lib/RT/Transaction_Overlay.pm:809 lib/RT/Transaction_Overlay.pm:818 lib/RT/Transaction_Overlay.pm:821 -#. ($args{'Field'}, ( $old_val ? "'$old_val'" : $self->loc("(no value)") ), '"' . $self->__Value( $args{'Field'}) . '"') -#. ($self->Field, ( $self->OldValue ? "'" . $self->OldValue . "'" : $no_value ), "'" . $self->NewValue . "'") -#. ($self->Field , $q1->Name , $q2->Name) -#. ($self->Field, $t2->AsString, $t1->AsString) -#. ($self->Field, ($self->OldValue? "'".$self->OldValue ."'" : $self->loc("(no value)")) , "'". $self->NewValue."'") -msgid "%1 changed from %2 to %3" -msgstr "%1 alterado de %2 para %3" - -#: html/Search/Build.html:215 -#. ($Description) -msgid "%1 copy" -msgstr "cópia %1" - -#: lib/RT/Record.pm:961 -msgid "%1 could not be set to %2." -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2789 -#. ($self) -msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:592 -#. ($obj_type) -msgid "%1 created" -msgstr "%1 criado" - -#: lib/RT/Transaction_Overlay.pm:597 -#. ($obj_type) -msgid "%1 deleted" -msgstr "%1 apagado" - -#: etc/initialdata:593 -msgid "%1 highest priority tickets I own" -msgstr "%1 tickets com maior prioridade da minha responsabilidade" - -#: bin/rt-crontool:231 -#. ($0) -msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." -msgstr "" - -#: lib/RT/Queue_Overlay.pm:867 -#. ($principal->Object->Name, $args{'Type'}) -msgid "%1 is no longer a %2 for this queue." -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1576 -#. ($principal->Object->Name, $args{'Type'}) -msgid "%1 is no longer a %2 for this ticket." -msgstr "" - -#: lib/RT/Record.pm:1801 -#. ($TransactionObj->OldValue, $cf->Name) -msgid "%1 is no longer a value for custom field %2" -msgstr "" - -#: html/Ticket/Elements/ShowTime:49 html/Ticket/Elements/ShowTime:51 -#. ($minutes) -msgid "%1 min" -msgstr "%1 min" - -#: etc/initialdata:601 -msgid "%1 newest unowned tickets" -msgstr "%1 tickets mais recentes sem responsável atribuído" - -#: lib/RT/CustomField_Overlay.pm:896 -msgid "%1 objects" -msgstr "" - -#: html/User/Elements/DelegateRights:99 -#. (loc($ObjectType =~ /^RT::(.*)$/)) -msgid "%1 rights" -msgstr "" - -#: lib/RT/Action/ResolveMembers.pm:65 -#. (ref $self) -msgid "%1 will resolve all members of a resolved group ticket." -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:897 -msgid "%1's %2 objects" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:898 -msgid "%1's %2's %3 objects" -msgstr "" - -#: html/Search/Elements/SearchPrivacy:54 html/Search/Elements/SelectSearchObject:57 html/Search/Elements/SelectSearchesForObjects:59 -#. ($object->Name) -#. ($Object->Name) -msgid "%1's saved searches" -msgstr "Pesquisas gravadas de %1" - -#: lib/RT/Transaction_Overlay.pm:502 -#. ($self) -msgid "%1: no attachment specified" -msgstr "%1: anexo não especificado" - -#: html/Ticket/Elements/ShowTransactionAttachments:80 -#. ($size) -msgid "%1b" -msgstr "" - -#: html/Ticket/Elements/ShowTransactionAttachments:77 -#. (int( $size / 102.4 ) / 10) -msgid "%1k" -msgstr "" - -#: html/Ticket/Elements/ShowTime:51 -#. (sprintf("%.1f",$minutes / 60)) -msgid "%quant(%1,hour)" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1144 -#. ($args{'Status'}) -msgid "'%1' is an invalid value for status" -msgstr "" - -#: html/Admin/Elements/EditCustomFieldValues:52 html/Admin/Elements/EditQueueWatchers:52 html/Admin/Elements/EditScrips:58 html/Admin/Elements/EditTemplates:59 html/Admin/Groups/Members.html:75 html/Elements/EditLinks:56 html/Ticket/Elements/EditPeople:69 html/User/Groups/Members.html:78 -msgid "(Check box to delete)" -msgstr "(Seleccione caixa para apagar)" - -#: html/Ticket/Elements/PreviewScrips:101 -msgid "(Check boxes to disable notifications to the listed recipients)" -msgstr "(Seleccione caixas para desactivar notificações para os destinatários listados)" - -#: html/Ticket/Elements/PreviewScrips:125 -msgid "(Check boxes to enable notifications to the listed recipients)" -msgstr "(Seleccione caixas para activar notificações para os destinatários listados)" - -#: html/Ticket/Create.html:221 -msgid "(Enter ticket ids or URLs, separated with spaces)" -msgstr "(Insira identificadores de tickets, separados por espaços)" - -#: html/Admin/Queues/Modify.html:77 html/Admin/Queues/Modify.html:83 -#. ($RT::CorrespondAddress) -#. ($RT::CommentAddress) -msgid "(If left blank, will default to %1)" -msgstr "(Por omissão será %1)" - -#: html/Admin/Elements/EditCustomFields:76 html/Admin/Elements/ListGlobalCustomFields:55 -msgid "(No custom fields)" -msgstr "" - -#: html/Admin/Groups/Members.html:73 html/User/Groups/Members.html:76 -msgid "(No members)" -msgstr "(Sem membros)" - -#: html/Admin/Elements/EditScrips:55 html/Admin/Elements/ListGlobalScrips:50 -msgid "(No scrips)" -msgstr "" - -#: html/Admin/Elements/EditTemplates:54 -msgid "(No templates)" -msgstr "" - -#: html/Admin/Elements/PickCustomFields:49 html/Admin/Elements/PickObjects:49 -msgid "(None)" -msgstr "(Nada)" - -#: html/Ticket/Update.html:92 -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)" -msgstr "" - -#: html/Ticket/Create.html:105 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <strong>will</strong> receive future updates.)" -msgstr "" - -#: html/Ticket/Update.html:88 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)" -msgstr "" - -#: html/Ticket/Create.html:95 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <strong>will</strong> receive future updates.)" -msgstr "" - -#: html/Admin/Elements/EditScrip:98 -msgid "(Use these fields when you choose 'User Defined' for a condition or action)" -msgstr "" - -#: html/Ticket/Elements/EditWatchers:62 html/Ticket/Elements/ShowUserEntry:55 -msgid "(Will not be sent email)" -msgstr "(Não vai ser enviado email)" - -#: html/Tools/MyDay.html:53 -#. ($session{'CurrentUser'}->Name) -msgid "(displaying new and open tickets for %1)" -msgstr "(mostrar tickets novos e abertos de %1)" - -#: html/Admin/Groups/index.html:59 html/User/Groups/index.html:56 -msgid "(empty)" -msgstr "(vazio)" - -#: html/Admin/Users/index.html:62 -msgid "(no name listed)" -msgstr "(sem nome)" - -#: html/Admin/Elements/SelectRights:74 html/Elements/EditCustomFieldSelect:71 html/Elements/SelectCustomFieldValue:53 html/Elements/ShowCustomFields:56 html/Search/Chart:134 html/Search/Elements/Chart:78 lib/RT/Transaction_Overlay.pm:612 -msgid "(no value)" -msgstr "(sem valor)" - -#: html/Admin/Elements/EditCustomFieldValues:49 -msgid "(no values)" -msgstr "(sem valores)" - -#: html/Elements/EditLinks:133 html/Ticket/Elements/BulkLinks:51 -msgid "(only one ticket)" -msgstr "(apenas um ticket)" - -#: html/Elements/RT__Ticket/ColumnMap:151 -msgid "(pending approval)" -msgstr "(aprovações pendentes)" - -#: html/Elements/RT__Ticket/ColumnMap:154 -msgid "(pending other Collection)" -msgstr "" - -#: html/Admin/Users/Modify.html:73 -msgid "(required)" -msgstr "(obrigatório)" - -#: html/Ticket/Elements/ShowTransactionAttachments:84 -msgid "(untitled)" -msgstr "" - -#: html/Ticket/Elements/Reminders:135 -msgid "(yyyy/mm/dd)" -msgstr "" - -#: html/Elements/EditCustomFieldSelect:59 -msgid "-" -msgstr "" - -#: bin/rt-crontool:97 -msgid "--transaction argument could be only 'first' or 'last'" -msgstr "" - -#: html/Ticket/Elements/ShowBasics:55 -msgid "<% $Ticket->Status%>" -msgstr "<% $Ticket->Status%>" - -#: html/Elements/SelectTicketTypes:50 -msgid "<% $_ %>" -msgstr "<% $_ %>" - -#: html/Search/Elements/SelectLinks:50 -msgid "<%$_%>" -msgstr "<%$_%>" - -#: html/Search/Elements/DisplayOptions:75 -msgid "<%$field%>" -msgstr "<%$field%>" - -#: html/Elements/CreateTicket:49 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" class=\"button\" value=\"New ticket in\" /> %1" -msgstr "<input type=\"submit\" class=\"button\" value=\"Novo Pedido em\" /> %1" - -#: docs/design_docs/string-extraction-guide.txt:54 lib/RT/StyleGuide.pod:785 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" value=\"New ticket in\"> %1" -msgstr "<input type=\"submit\" value=\"Novo Pedido em\"> %1" - -#: etc/initialdata:218 -msgid "A blank template" -msgstr "Template em branco" - -#: html/Admin/Users/Modify.html:375 -msgid "A password was not set, so user won't be able to login." -msgstr "Password não foi definida, portanto o utilizador não vai conseguir efectuar login." - -#: lib/RT/ACE_Overlay.pm:176 lib/RT/Principal_Overlay.pm:221 -msgid "ACE not found" -msgstr "" - -#: lib/RT/ACE_Overlay.pm:855 -msgid "ACEs can only be created and deleted." -msgstr "" - -#: html/Search/Elements/SelectAndOr:48 -msgid "AND" -msgstr "E" - -#: html/User/Elements/Tabs:55 -msgid "About me" -msgstr "Sobre mim" - -#: html/Admin/Users/Modify.html:108 -msgid "Access control" -msgstr "Controle de Acesso" - -#: html/Admin/Elements/EditScrip:67 -msgid "Action" -msgstr "Acção" - -#: lib/RT/Scrip_Overlay.pm:174 -#. ($args{'ScripAction'}) -msgid "Action %1 not found" -msgstr "Acção %1 não encontrada" - -#: bin/rt-crontool:173 -msgid "Action committed.\\n" -msgstr "" - -#: lib/RT/Scrip_Overlay.pm:170 -msgid "Action is mandatory argument" -msgstr "" - -#: bin/rt-crontool:169 -msgid "Action prepared..." -msgstr "" - -#: html/Search/Build.html:87 -msgid "Add" -msgstr "Adicionar" - -#: html/Search/Bulk.html:94 -msgid "Add AdminCc" -msgstr "Adicionar AdminCc" - -#: html/Search/Bulk.html:90 -msgid "Add Cc" -msgstr "Adicionar Cc" - -#: html/Search/Elements/EditFormat:51 -msgid "Add Columns" -msgstr "Adicionar colunas" - -#: html/Search/Elements/PickCriteria:48 -msgid "Add Criteria" -msgstr "Adicionar critérios" - -#: html/Ticket/Create.html:149 html/Ticket/Update.html:118 -msgid "Add More Files" -msgstr "Adicionar mais ficheiros" - -#: html/Search/Bulk.html:86 -msgid "Add Requestor" -msgstr "" - -#: html/Admin/Elements/AddCustomFieldValue:48 -msgid "Add Value" -msgstr "" - -#: html/Admin/Global/Scrip.html:85 -msgid "Add a scrip which will apply to all queues" -msgstr "" - -#: html/Search/Build.html:111 html/Search/Build.html:96 -msgid "Add and Search" -msgstr "Adicionar e pesquisar" - -#: html/Search/Bulk.html:126 -msgid "Add comments or replies to selected tickets" -msgstr "Adicionar comentários ou respostas aos tickets seleccionados" - -#: html/Admin/Groups/Members.html:65 html/User/Groups/Members.html:62 -msgid "Add members" -msgstr "Adicionar membros" - -#: html/Admin/Queues/People.html:89 html/Ticket/Elements/AddWatchers:51 -msgid "Add new watchers" -msgstr "Adicionar novos watchers" - -#: html/Search/Build.html:87 -msgid "Add these terms to your search" -msgstr "Adicionar estes termos à sua pesquisa" - -#: html/Search/Bulk.html:160 -msgid "Add values" -msgstr "Adicionar valores" - -#: lib/RT/CustomField_Overlay.pm:110 -msgid "Add, delete and modify custom field values for objects" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:758 -#. ($args{'Type'}) -msgid "Added principal as a %1 for this queue" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1448 -#. ($self->loc($args{'Type'})) -msgid "Added principal as a %1 for this ticket" -msgstr "" - -#: html/Admin/Users/Modify.html:149 html/User/Prefs.html:135 -msgid "Address1" -msgstr "Endereço (1)" - -#: html/Admin/Users/Modify.html:154 html/User/Prefs.html:139 -msgid "Address2" -msgstr "Endereço (2)" - -#: html/Ticket/Create.html:100 -msgid "Admin Cc" -msgstr "" - -#: etc/initialdata:295 -msgid "Admin Comment" -msgstr "Comentário de Admin" - -#: etc/initialdata:274 -msgid "Admin Correspondence" -msgstr "" - -#: html/Admin/Queues/index.html:48 html/Admin/Queues/index.html:51 -msgid "Admin queues" -msgstr "" - -#: html/Admin/Global/index.html:49 html/Admin/Global/index.html:51 -msgid "Admin/Global configuration" -msgstr "" - -#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:62 lib/RT/ACE_Overlay.pm:115 -msgid "AdminCc" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:108 -msgid "AdminCustomField" -msgstr "" - -#: lib/RT/Group_Overlay.pm:165 -msgid "AdminGroup" -msgstr "" - -#: lib/RT/Group_Overlay.pm:167 -msgid "AdminGroupMembership" -msgstr "" - -#: lib/RT/System.pm:82 -msgid "AdminOwnPersonalGroups" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "AdminQueue" -msgstr "" - -#: lib/RT/System.pm:83 -msgid "AdminUsers" -msgstr "" - -#: html/Admin/Queues/People.html:71 html/Ticket/Elements/EditPeople:77 -msgid "Administrative Cc" -msgstr "" - -#: html/Ticket/Elements/Tabs:218 -msgid "Advanced" -msgstr "Avançado" - -#: html/Elements/SelectDateRelation:59 -msgid "After" -msgstr "" - -#: html/Search/Elements/PickCriteria:54 -msgid "Aggregator" -msgstr "Agregador" - -#: etc/initialdata:363 -msgid "All Approvals Passed" -msgstr "Todas as aprovações tratadas" - -#: html/Admin/Queues/index.html:77 -msgid "All Queues" -msgstr "Todas as Queues" - -#: html/Search/Elements/EditQuery:58 -msgid "And/Or" -msgstr "E/Ou" - -#: html/Admin/CustomFields/Modify.html:75 html/Admin/Elements/CustomFieldTabs:85 -msgid "Applies to" -msgstr "Aplica-se a" - -#: html/Search/Edit.html:66 -msgid "Apply" -msgstr "Aplicar" - -#: html/Search/Edit.html:66 -msgid "Apply your changes" -msgstr "Aplicar as alterações" - -#: html/Elements/Tabs:80 -msgid "Approval" -msgstr "Aprovação" - -#: html/Approvals/Display.html:67 html/Approvals/Elements/ShowDependency:65 html/Approvals/index.html:88 -#. ($Ticket->Id, $Ticket->Subject) -#. ($ticket->id, $msg) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Approval #%1: %2" -msgstr "Aprovação #%1: %2" - -#: html/Approvals/index.html:77 -#. ($ticket->Id) -msgid "Approval #%1: Notes not recorded due to a system error" -msgstr "" - -#: html/Approvals/index.html:75 -#. ($ticket->Id) -msgid "Approval #%1: Notes recorded" -msgstr "" - -#: etc/initialdata:351 -msgid "Approval Passed" -msgstr "" - -#: etc/initialdata:374 -msgid "Approval Rejected" -msgstr "" - -#: html/Approvals/Elements/Approve:71 -msgid "Approve" -msgstr "" - -#: etc/initialdata:504 etc/initialdata:506 -#. (# loc $note) -msgid "Approver's notes: %1" -msgstr "" - -#: lib/RT/Date.pm:446 -msgid "Apr." -msgstr "Apr" - -#: html/Search/Elements/DisplayOptions:83 -msgid "Asc" -msgstr "Asc" - -#: html/Elements/SelectSortOrder:58 -msgid "Ascending" -msgstr "Ascendente" - -#: lib/RT/Queue_Overlay.pm:98 -msgid "Assign and remove custom fields" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:98 -msgid "AssignCustomFields" -msgstr "" - -#: html/Search/Bulk.html:144 html/SelfService/Update.html:89 html/Ticket/ModifyAll.html:117 html/Ticket/Update.html:118 -msgid "Attach" -msgstr "Anexar" - -#: html/SelfService/Create.html:94 html/Ticket/Create.html:145 -msgid "Attach file" -msgstr "Anexar ficheiro" - -#: html/SelfService/Update.html:77 html/Ticket/Create.html:133 html/Ticket/Update.html:96 -msgid "Attached file" -msgstr "Ficheiro anexo" - -#: html/Ticket/ShowEmailRecord.html:54 html/Ticket/ShowEmailRecord.html:58 html/Ticket/ShowEmailRecord.html:61 -#. ($Attachment) -msgid "Attachment '%1' could not be loaded" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:510 -msgid "Attachment created" -msgstr "Anexo criado" - -#: lib/RT/Tickets_Overlay.pm:2134 -msgid "Attachment filename" -msgstr "" - -#: html/Ticket/Elements/ShowAttachments:49 -msgid "Attachments" -msgstr "Anexos" - -#: lib/RT/Attributes_Overlay.pm:173 -msgid "Attribute Deleted" -msgstr "" - -#: lib/RT/Date.pm:450 -msgid "Aug." -msgstr "Aug" - -#: etc/initialdata:221 -msgid "Autoreply" -msgstr "Resposta automática" - -#: etc/initialdata:72 -msgid "Autoreply To Requestors" -msgstr "Resposta automática para utilizadores" - -#: html/Widgets/SelectionBox:191 -msgid "Available" -msgstr "Disponível" - -#: html/Admin/Elements/CustomFieldTabs:67 html/Admin/Elements/GroupTabs:62 html/Admin/Elements/QueueTabs:62 html/Admin/Elements/UserTabs:60 html/Ticket/Elements/Tabs:115 html/User/Elements/GroupTabs:61 -msgid "Basics" -msgstr "Informação básica" - -#: html/Ticket/Update.html:90 -msgid "Bcc" -msgstr "Bcc" - -#: html/Admin/CustomFields/GroupRights.html:93 html/Admin/CustomFields/UserRights.html:76 html/Admin/Elements/EditScrip:91 -msgid "Be sure to save your changes" -msgstr "" - -#: html/Elements/SelectDateRelation:57 lib/RT/CurrentUser.pm:363 -msgid "Before" -msgstr "Antes" - -#: html/Elements/Logo:49 -msgid "Best Practical Solutions, LLC corporate logo" -msgstr "" - -#: etc/initialdata:217 -msgid "Blank" -msgstr "Branco" - -#: html/Search/Elements/EditFormat:86 -msgid "Bold" -msgstr "" - -#: html/Search/Results.html:81 -msgid "Bookmarkable link" -msgstr "" - -#: html/Ticket/Elements/ShowHistory:66 html/Ticket/Elements/ShowHistory:71 -msgid "Brief headers" -msgstr "" - -#: html/Ticket/Elements/Tabs:228 -msgid "Bulk Update" -msgstr "Actualização em bloco" - -#: lib/RT/User_Overlay.pm:1855 -msgid "Can not modify system users" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:93 -msgid "Can this principal see this queue" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:382 -msgid "Can't add a custom field value without a name" -msgstr "" - -#: html/Admin/CustomFields/Objects.html:88 -#. ($Class) -msgid "Can't find a collection class for '%1'" -msgstr "" - -#: html/Search/Build.html:288 -msgid "Can't find a saved search to work with" -msgstr "Impossível encontrar a pesquisa gravada definida" - -#: lib/RT/Link_Overlay.pm:161 -msgid "Can't link a ticket to itself" -msgstr "" - -#: html/Widgets/SavedSearch:110 -#. (loc($self->{SearchType})) -msgid "Can't save %1" -msgstr "" - -#: html/Search/Build.html:292 -msgid "Can't save this search" -msgstr "Não é possível gravar esta pesquisa" - -#: lib/RT/Record.pm:1304 lib/RT/Record.pm:1380 -msgid "Can't specifiy both base and target" -msgstr "" - -#: html/autohandler:206 -#. ($msg) -msgid "Cannot create user: %1" -msgstr "Não é possível criar utilizador: %1" - -#: html/Admin/Elements/AddCustomFieldValue:64 html/Admin/Elements/EditCustomFieldValues:60 -msgid "Category" -msgstr "Categoria" - -#: etc/initialdata:50 html/Admin/Queues/People.html:67 html/SelfService/Create.html:73 html/Ticket/Create.html:90 html/Ticket/Elements/EditPeople:74 html/Ticket/Elements/ShowPeople:58 html/Ticket/Update.html:85 lib/RT/ACE_Overlay.pm:114 -msgid "Cc" -msgstr "" - -#: html/SelfService/Prefs.html:54 -msgid "Change password" -msgstr "Mudar password" - -#: html/Elements/Submit:80 -msgid "Check All" -msgstr "Seleccionar todos" - -#: html/SelfService/Update.html:80 html/Ticket/Create.html:136 html/Ticket/Update.html:99 -msgid "Check box to delete" -msgstr "Seleccione caixa para apagar" - -#: html/Admin/Elements/SelectRights:57 -msgid "Check box to revoke right" -msgstr "" - -#: html/Elements/EditLinks:149 html/Elements/EditLinks:86 html/Elements/ShowLinks:80 html/Ticket/Create.html:226 html/Ticket/Elements/BulkLinks:66 -msgid "Children" -msgstr "Filhos" - -#: html/NoAuth/js/util.js:203 -msgid "Choose a date" -msgstr "Escolha uma data" - -#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:143 -msgid "City" -msgstr "Cidade" - -#: html/Widgets/SelectionBox:214 -msgid "Clear" -msgstr "" - -#: html/Elements/Submit:82 -msgid "Clear All" -msgstr "Limpar todos" - -#: html/Helpers/CalPopup.html:53 -msgid "Close window" -msgstr "Fechar janela" - -#: html/Ticket/Elements/ShowDates:70 -msgid "Closed" -msgstr "Fechado" - -#: html/SelfService/Closed.html:48 html/SelfService/Elements/Tabs:81 -msgid "Closed tickets" -msgstr "Tickets fechados" - -#: lib/RT/CustomField_Overlay.pm:91 -msgid "Combobox: Select or enter multiple values" -msgstr "Seleccione ou insira valores múltiplos" - -#: lib/RT/CustomField_Overlay.pm:92 -msgid "Combobox: Select or enter one value" -msgstr "Seleccione ou insira um valor" - -#: lib/RT/CustomField_Overlay.pm:93 -msgid "Combobox: Select or enter up to %1 values" -msgstr "Seleccione ou insira até %1 valores" - -#: html/Ticket/Elements/ShowTransaction:193 html/Ticket/Elements/Tabs:187 -msgid "Comment" -msgstr "Comentário" - -#: html/Admin/Queues/Modify.html:81 -msgid "Comment Address" -msgstr "Morada de Comentário" - -#: lib/RT/Queue_Overlay.pm:113 -msgid "Comment on tickets" -msgstr "Comentar tickets" - -#: lib/RT/Queue_Overlay.pm:113 -msgid "CommentOnTicket" -msgstr "" - -#: html/Tools/MyDay.html:67 -msgid "Comments" -msgstr "Comentários" - -#: html/Ticket/ModifyAll.html:93 html/Ticket/Update.html:77 -msgid "Comments (Not sent to requestors)" -msgstr "Comentários (não so enviados para utilizadores)" - -#: html/Search/Bulk.html:130 -msgid "Comments (not sent to requestors)" -msgstr "Comentários (não so enviados para utilizadores)" - -#: html/Admin/Users/Modify.html:229 html/Ticket/Elements/ShowRequestor:69 -msgid "Comments about this user" -msgstr "Comentários sobre este utilizador" - -#: lib/RT/Transaction_Overlay.pm:655 -msgid "Comments added" -msgstr "Comentários adicionados" - -#: lib/RT/Action/Generic.pm:177 -msgid "Commit Stubbed" -msgstr "" - -#: html/Admin/Elements/EditScrip:61 -msgid "Condition" -msgstr "Condição" - -#: lib/RT/Scrip_Overlay.pm:186 -msgid "Condition is mandatory argument" -msgstr "Condição é argumento obrigatório" - -#: bin/rt-crontool:153 -msgid "Condition matches..." -msgstr "" - -#: lib/RT/Scrip_Overlay.pm:190 -msgid "Condition not found" -msgstr "" - -#: html/Elements/Tabs:87 -msgid "Configuration" -msgstr "Configuração" - -#: html/SelfService/Prefs.html:56 -msgid "Confirm" -msgstr "Confirmar" - -#: html/Admin/Elements/ModifyTemplate:67 html/Elements/SelectAttachmentField:50 html/Ticket/ModifyAll.html:121 -msgid "Content" -msgstr "Conteúdo" - -#: html/Elements/SelectAttachmentField:51 -msgid "Content-Type" -msgstr "" - -#: html/Search/Elements/EditSearches:67 -msgid "Copy" -msgstr "Copiar" - -#: etc/initialdata:286 -msgid "Correspondence" -msgstr "Correspondência" - -#: lib/RT/Transaction_Overlay.pm:651 -msgid "Correspondence added" -msgstr "Correspondência adicionada" - -#: lib/RT/Record.pm:1682 lib/RT/Record.pm:1729 -#. ($value_msg) -msgid "Could not add new custom field value: %1" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:3062 lib/RT/Ticket_Overlay.pm:3070 lib/RT/Ticket_Overlay.pm:3087 -msgid "Could not change owner. " -msgstr "Não foi possível alterar responsável" - -#: html/Admin/CustomFields/Modify.html:163 -#. ($msg) -msgid "Could not create CustomField" -msgstr "" - -#: html/Admin/Elements/EditCustomField:115 -#. ($msg) -msgid "Could not create CustomField: %1" -msgstr "" - -#: html/User/Groups/Modify.html:100 lib/RT/Group_Overlay.pm:496 lib/RT/Group_Overlay.pm:503 -msgid "Could not create group" -msgstr "" - -#: html/Admin/Global/Template.html:94 html/Admin/Queues/Template.html:95 -#. ($msg) -msgid "Could not create template: %1" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1077 lib/RT/Ticket_Overlay.pm:409 -msgid "Could not create ticket. Queue not set" -msgstr "Não é possível criar pedido. Especifique uma fila." - -#: lib/RT/User_Overlay.pm:257 lib/RT/User_Overlay.pm:271 lib/RT/User_Overlay.pm:280 lib/RT/User_Overlay.pm:289 lib/RT/User_Overlay.pm:298 lib/RT/User_Overlay.pm:312 lib/RT/User_Overlay.pm:322 lib/RT/User_Overlay.pm:498 -msgid "Could not create user" -msgstr "Não foi possível criar utilizador" - -#: lib/RT/Queue_Overlay.pm:737 lib/RT/Ticket_Overlay.pm:1416 -msgid "Could not find or create that user" -msgstr "Não foi possível criar ou encontrar esse utilizador" - -#: lib/RT/Queue_Overlay.pm:804 lib/RT/Ticket_Overlay.pm:1497 -msgid "Could not find that principal" -msgstr "" - -#: html/Admin/CustomFields/Objects.html:71 -msgid "Could not load CustomField %1" -msgstr "" - -#: html/Admin/Groups/Members.html:114 html/User/Groups/Members.html:113 html/User/Groups/Modify.html:105 -msgid "Could not load group" -msgstr "" - -#: lib/RT/SavedSearch.pm:121 -#. ($privacy) -msgid "Could not load object for %1" -msgstr "" - -#: lib/RT/SavedSearch.pm:199 -msgid "Could not load search attribute" -msgstr "Não é possível carregar o atributo da pesquisa" - -#: lib/RT/Queue_Overlay.pm:756 -#. ($args{'Type'}) -msgid "Could not make that principal a %1 for this queue" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1437 -#. ($self->loc($args{'Type'})) -msgid "Could not make that principal a %1 for this ticket" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:864 -#. ($args{'Type'}) -msgid "Could not remove that principal as a %1 for this queue" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1564 -#. ($args{'Type'}) -msgid "Could not remove that principal as a %1 for this ticket" -msgstr "" - -#: lib/RT/User_Overlay.pm:193 -msgid "Could not set user info" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:161 -msgid "Couldn't add attachment" -msgstr "Não foi possível adicionar anexo" - -#: lib/RT/Group_Overlay.pm:1005 -msgid "Couldn't add member to group" -msgstr "Não foi possível adicionar membro a grupo" - -#: lib/RT/Record.pm:1741 lib/RT/Record.pm:1793 -#. ($Msg) -msgid "Couldn't create a transaction: %1" -msgstr "Não foi possível criar uma transacção: %1" - -#: lib/RT/Record.pm:970 -msgid "Couldn't find row" -msgstr "" - -#: lib/RT/Group_Overlay.pm:979 -msgid "Couldn't find that principal" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:412 -msgid "Couldn't find that value" -msgstr "" - -#: lib/RT/CurrentUser.pm:147 -#. ($self->Id) -msgid "Couldn't load %1 from the users database.\\n" -msgstr "" - -#: html/Admin/CustomFields/UserRights.html:151 -#. ($id) -msgid "Couldn't load Class %1" -msgstr "" - -#: html/Admin/CustomFields/GroupRights.html:109 -#. ($id) -msgid "Couldn't load CustomField %1" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2009 -#. ($self->Id) -msgid "Couldn't load copy of ticket #%1." -msgstr "" - -#: html/Admin/Groups/GroupRights.html:111 html/Admin/Groups/UserRights.html:98 -#. ($id) -msgid "Couldn't load group %1" -msgstr "" - -#: lib/RT/Link_Overlay.pm:204 lib/RT/Link_Overlay.pm:213 lib/RT/Link_Overlay.pm:240 -msgid "Couldn't load link" -msgstr "" - -#: html/Admin/Elements/ObjectCustomFields:85 html/Admin/Queues/CustomFields.html:61 html/Admin/Users/CustomFields.html:61 -#. ($id) -msgid "Couldn't load object %1" -msgstr "" - -#: html/Admin/Queues/People.html:144 -#. ($id) -msgid "Couldn't load queue" -msgstr "" - -#: html/Admin/Queues/GroupRights.html:124 html/Admin/Queues/UserRights.html:95 -#. ($id) -msgid "Couldn't load queue %1" -msgstr "" - -#: html/Admin/Elements/EditScrip:128 html/Admin/Elements/EditScrip:169 -#. ($id) -msgid "Couldn't load scrip #%1" -msgstr "" - -#: html/SelfService/Display.html:160 lib/RT/Action/CreateTickets.pm:682 -#. ($id) -msgid "Couldn't load ticket '%1'" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2637 -#. ($args{'URI'}) -msgid "Couldn't resolve '%1' into a URI." -msgstr "" - -#: lib/RT/Link_Overlay.pm:113 -#. ($args{'Base'}) -msgid "Couldn't resolve base '%1' into a URI." -msgstr "" - -#: lib/RT/Link_Overlay.pm:128 -#. ($args{'Target'}) -msgid "Couldn't resolve target '%1' into a URI." -msgstr "" - -#: html/Admin/Users/Modify.html:176 html/User/Prefs.html:155 -msgid "Country" -msgstr "País" - -#: html/Admin/Elements/CreateUserCalled:49 html/Admin/Elements/EditCustomField:86 html/Admin/Elements/EditScrip:135 html/Admin/Global/Template.html:67 html/Admin/Queues/Template.html:68 html/Elements/QuickCreate:67 html/Ticket/Create.html:171 html/Ticket/Create.html:238 -msgid "Create" -msgstr "Criar" - -#: etc/initialdata:135 -msgid "Create Tickets" -msgstr "Criar tickets" - -#: html/Admin/CustomFields/Modify.html:152 html/Admin/Elements/EditCustomField:98 -msgid "Create a CustomField" -msgstr "" - -#: html/Admin/Queues/CustomField.html:71 -#. ($QueueObj->Name()) -msgid "Create a CustomField for queue %1" -msgstr "" - -#: html/Admin/Groups/Modify.html:105 html/Admin/Groups/Modify.html:131 -msgid "Create a new group" -msgstr "Criar novo grupo" - -#: html/User/Groups/Modify.html:115 html/User/Groups/Modify.html:90 -msgid "Create a new personal group" -msgstr "" - -#: html/Ticket/Create.html:49 html/Ticket/Create.html:53 html/Ticket/Create.html:62 -msgid "Create a new ticket" -msgstr "Criar novo ticket" - -#: html/Admin/Users/Modify.html:256 html/Admin/Users/Modify.html:318 -msgid "Create a new user" -msgstr "Criar novo utilizador" - -#: html/Admin/Queues/Modify.html:127 -msgid "Create a queue" -msgstr "Criar queue" - -#: html/Admin/Queues/Scrip.html:91 -#. ($QueueObj->Name) -msgid "Create a scrip for queue %1" -msgstr "" - -#: html/Admin/Global/Template.html:87 html/Admin/Queues/Template.html:88 -msgid "Create a template" -msgstr "Criar template" - -#: html/SelfService/Create.html:48 html/SelfService/CreateTicketInQueue.html:48 -msgid "Create a ticket" -msgstr "Criar ticket" - -#: etc/initialdata:137 -msgid "Create new tickets based on this scrip's template" -msgstr "Criar novo pedido baseado num modelo existente" - -#: html/SelfService/Create.html:107 -msgid "Create ticket" -msgstr "Criar ticket" - -#: lib/RT/Queue_Overlay.pm:111 -msgid "Create tickets in this queue" -msgstr "Criar tickets nesta queue" - -#: lib/RT/CustomField_Overlay.pm:108 -msgid "Create, delete and modify custom fields" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "Create, delete and modify queues" -msgstr "" - -#: lib/RT/System.pm:82 -msgid "Create, delete and modify the members of personal groups" -msgstr "" - -#: lib/RT/System.pm:83 -msgid "Create, delete and modify users" -msgstr "" - -#: lib/RT/System.pm:89 -msgid "CreateSavedSearch" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:111 -msgid "CreateTicket" -msgstr "" - -#: html/Elements/SelectDateType:49 html/Ticket/Elements/ShowDates:50 lib/RT/Ticket_Overlay.pm:1171 -msgid "Created" -msgstr "Criado" - -#: html/Admin/CustomFields/Modify.html:165 html/Admin/Elements/EditCustomField:119 -#. ($CustomFieldObj->Name()) -msgid "Created CustomField %1" -msgstr "Campo Personalisado %1 criado" - -#: html/Tools/Reports/Elements/Tabs:65 -msgid "Created in a date range" -msgstr "" - -#: html/Tools/Reports/CreatedByDates.html:54 -msgid "Created tickets in period, grouped by status" -msgstr "Pedidos criados dentro de um periodo de tempo, agrupados por estado" - -#: html/Search/Elements/PickBasics:104 -msgid "Creator" -msgstr "" - -#: html/Elements/EditLinks:51 -msgid "Current Links" -msgstr "Links actuais" - -#: html/Admin/Elements/EditScrips:53 -msgid "Current Scrips" -msgstr "" - -#: html/Admin/Groups/Members.html:62 html/User/Groups/Members.html:65 -msgid "Current members" -msgstr "Membros actuais" - -#: html/Admin/Elements/SelectRights:53 -msgid "Current rights" -msgstr "Direitos actuais" - -#: html/Search/Elements/EditQuery:49 -msgid "Current search" -msgstr "Pesquisa actual" - -#: html/Admin/Queues/People.html:64 html/Ticket/Elements/EditPeople:68 -msgid "Current watchers" -msgstr "" - -#: html/Admin/Elements/SystemTabs:63 html/Admin/Elements/Tabs:64 html/Admin/Global/index.html:73 html/Admin/Users/Modify.html:209 html/Admin/index.html:79 html/Ticket/Elements/ShowSummary:58 -msgid "Custom Fields" -msgstr "" - -#: html/Admin/CustomFields/index.html:62 -#. ($lookup) -msgid "Custom Fields for %1" -msgstr "" - -#: html/Admin/Elements/EditScrip:109 -msgid "Custom action cleanup code" -msgstr "" - -#: html/Admin/Elements/EditScrip:105 -msgid "Custom action preparation code" -msgstr "" - -#: html/Admin/Elements/EditScrip:101 -msgid "Custom condition" -msgstr "" - -#: lib/RT/Tickets_Overlay.pm:2619 -#. ($CF->Name, $args{OPERATOR}, $args{VALUE}) -msgid "Custom field %1 %2 %3" -msgstr "" - -#: lib/RT/Record.pm:1625 -#. ($args{'Field'}) -msgid "Custom field %1 does not apply to this object" -msgstr "" - -#: lib/RT/Tickets_Overlay.pm:2613 -#. ($CF->Name) -msgid "Custom field %1 has a value." -msgstr "" - -#: lib/RT/Tickets_Overlay.pm:2609 -#. ($CF->Name) -msgid "Custom field %1 has no value." -msgstr "" - -#: lib/RT/Record.pm:1614 lib/RT/Record.pm:1776 -#. ($args{'Field'}) -msgid "Custom field %1 not found" -msgstr "" - -#: lib/RT/Report/Tickets.pm:120 lib/RT/Report/Tickets.pm:123 -#. ($cf) -#. ($obj->Name) -msgid "Custom field '%1'" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:1160 -#. ($args{'Content'}, $self->Name) -msgid "Custom field value %1 could not be found for custom field %2" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:422 -msgid "Custom field value could not be deleted" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:1172 -msgid "Custom field value could not be found" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:1174 lib/RT/CustomField_Overlay.pm:420 -msgid "Custom field value deleted" -msgstr "" - -#: html/Elements/SelectGroups:53 html/Elements/SelectUsers:53 lib/RT/Transaction_Overlay.pm:659 -msgid "CustomField" -msgstr "" - -#: html/Prefs/MyRT.html:80 html/Prefs/Quicksearch.html:72 html/Prefs/Search.html:77 -msgid "Customize" -msgstr "" - -#: html/SelfService/Display.html:63 html/Ticket/Create.html:206 html/Ticket/Elements/ShowSummary:91 html/Ticket/Elements/Tabs:118 html/Ticket/ModifyAll.html:67 -msgid "Dates" -msgstr "Datas" - -#: lib/RT/Date.pm:454 -msgid "Dec." -msgstr "Dec" - -#: etc/initialdata:222 -msgid "Default Autoresponse template" -msgstr "" - -#: html/Tools/Offline.html:63 -msgid "Default Queue" -msgstr "Queue por omissão" - -#: html/Tools/Offline.html:72 -msgid "Default Requestor" -msgstr "" - -#: etc/initialdata:296 -msgid "Default admin comment template" -msgstr "" - -#: etc/initialdata:275 -msgid "Default admin correspondence template" -msgstr "" - -#: etc/initialdata:287 -msgid "Default correspondence template" -msgstr "" - -#: etc/initialdata:253 -msgid "Default transaction template" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:637 -#. ($type, $self->Field, ( $self->OldValue ? "'" . $self->OldValue . "'" : $self->loc("(no value)") ), "'" . $self->NewValue . "'") -msgid "Default: %1/%2 changed from %3 to %4" -msgstr "" - -#: html/User/Delegation.html:48 html/User/Delegation.html:51 -msgid "Delegate rights" -msgstr "" - -#: lib/RT/System.pm:86 -msgid "Delegate specific rights which have been granted to you." -msgstr "" - -#: lib/RT/System.pm:86 -msgid "DelegateRights" -msgstr "" - -#: html/User/Elements/Tabs:61 -msgid "Delegation" -msgstr "" - -#: html/Admin/Elements/EditScrips:77 html/Search/Elements/EditFormat:105 html/Search/Elements/EditQuery:59 html/Search/Elements/EditSearches:65 html/Widgets/SelectionBox:212 -msgid "Delete" -msgstr "Apagar" - -#: html/Admin/Elements/EditTemplates:81 -msgid "Delete Template" -msgstr "Apagar template" - -#: lib/RT/SavedSearch.pm:222 -#. ($msg) -msgid "Delete failed: %1" -msgstr "" - -#: html/Admin/Elements/EditScrips:76 -msgid "Delete selected scrips" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:116 -msgid "Delete tickets" -msgstr "Apagar tickets" - -#: html/Search/Bulk.html:161 -msgid "Delete values" -msgstr "Apagar valores" - -#: lib/RT/Queue_Overlay.pm:116 -msgid "DeleteTicket" -msgstr "" - -#: lib/RT/SavedSearch.pm:220 -msgid "Deleted search" -msgstr "Pesquisa apagada" - -#: lib/RT/Queue_Overlay.pm:396 -msgid "Deleting this object would break referential integrity" -msgstr "" - -#: lib/RT/User_Overlay.pm:514 -msgid "Deleting this object would violate referential integrity" -msgstr "" - -#: html/Approvals/Elements/Approve:75 -msgid "Deny" -msgstr "" - -#: html/Elements/EditLinks:141 html/Elements/EditLinks:68 html/Elements/ShowLinks:60 html/Ticket/Create.html:224 html/Ticket/Elements/BulkLinks:58 html/Ticket/Elements/ShowDependencies:55 -msgid "Depended on by" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:739 -#. ($value) -msgid "Dependency by %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:779 -#. ($value) -msgid "Dependency by %1 deleted" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:736 -#. ($value) -msgid "Dependency on %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:776 -#. ($value) -msgid "Dependency on %1 deleted" -msgstr "" - -#: html/Elements/EditLinks:137 html/Elements/EditLinks:59 html/Elements/SelectLinkType:50 html/Elements/ShowLinks:50 html/Ticket/Create.html:223 html/Ticket/Elements/BulkLinks:54 html/Ticket/Elements/ShowDependencies:48 -msgid "Depends on" -msgstr "" - -#: html/Search/Elements/DisplayOptions:88 -msgid "Desc" -msgstr "" - -#: html/Elements/SelectSortOrder:58 -msgid "Descending" -msgstr "Descendente" - -#: html/SelfService/Create.html:102 html/Ticket/Create.html:154 -msgid "Describe the issue below" -msgstr "Descreva o pedido, abaixo" - -#: html/Admin/CustomFields/Modify.html:63 html/Admin/Elements/AddCustomFieldValue:59 html/Admin/Elements/EditCustomField:62 html/Admin/Elements/EditCustomFieldValues:58 html/Admin/Elements/EditScrip:57 html/Admin/Elements/ModifyTemplate:59 html/Admin/Groups/Modify.html:73 html/Admin/Queues/Modify.html:71 html/Search/Elements/EditSearches:58 html/User/Groups/Modify.html:72 -msgid "Description" -msgstr "Descrição" - -#: html/Search/Elements/EditFormat:73 html/Ticket/Elements/Tabs:110 -msgid "Display" -msgstr "Mostrar" - -#: lib/RT/Queue_Overlay.pm:95 -msgid "Display Access Control List" -msgstr "" - -#: html/Search/Elements/DisplayOptions:48 -msgid "Display Columns" -msgstr "Visualizar Colunas" - -#: lib/RT/Queue_Overlay.pm:101 -msgid "Display Scrip templates for this queue" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:104 -msgid "Display Scrips for this queue" -msgstr "" - -#: html/Ticket/Elements/ShowHistory:61 -msgid "Display mode" -msgstr "Modo de visualização" - -#: lib/RT/Group_Overlay.pm:170 -msgid "Display saved searches for this group" -msgstr "Visualizar a pesquisa gravada para este grupo" - -#: html/Elements/Footer:63 -msgid "Distributed under version 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> of the GNU GPL.</a>" -msgstr "" - -#: lib/RT/System.pm:77 -msgid "Do anything and everything" -msgstr "" - -#: html/Elements/Refresh:53 -msgid "Don't refresh this page." -msgstr "" - -#: html/Ticket/Elements/ShowTransactionAttachments:84 -msgid "Download" -msgstr "Descarregar" - -#: html/Admin/Groups/index.html:63 html/Admin/Users/index.html:66 -msgid "Download as a tab-delimited file" -msgstr "Descarregar num ficheiro separado por tabs" - -#: html/Elements/SelectDateType:55 html/Ticket/Create.html:212 html/Ticket/Elements/EditDates:68 html/Ticket/Elements/Reminders:135 html/Ticket/Elements/ShowDates:66 lib/RT/Ticket_Overlay.pm:1175 -msgid "Due" -msgstr "Prazo" - -#: html/Elements/Quicksearch:50 html/Elements/ShowSearch:51 html/index.html:109 -msgid "Edit" -msgstr "Editar" - -#: html/Search/Bulk.html:151 -msgid "Edit Custom Fields" -msgstr "Editar Campos Personalizados" - -#: html/Admin/Elements/ObjectCustomFields:94 html/Admin/Queues/CustomFields.html:66 html/Admin/Users/CustomFields.html:66 -#. ($Object->Name) -msgid "Edit Custom Fields for %1" -msgstr "Editar Campos Personalizados de %1" - -#: html/Admin/Global/CustomFields/Groups.html:56 -msgid "Edit Custom Fields for all groups" -msgstr "Editar Campos Personalizados para todos os grupos" - -#: html/Admin/Global/CustomFields/Users.html:56 -msgid "Edit Custom Fields for all users" -msgstr "Editar Campos Personalizados para todos os utilizadores" - -#: html/Admin/Global/CustomFields/Queue-Tickets.html:56 html/Admin/Global/CustomFields/Queue-Transactions.html:56 -msgid "Edit Custom Fields for tickets in all queues" -msgstr "Editar \"Campos Personalizados\" para todos os pedidos" - -#: html/Search/Bulk.html:190 html/Ticket/ModifyLinks.html:59 -msgid "Edit Links" -msgstr "Editar ligações" - -#: html/Search/Edit.html:70 -msgid "Edit Query" -msgstr "Editar Pesquisa" - -#: html/Ticket/Elements/Tabs:216 -msgid "Edit Search" -msgstr "Editar Pesquisa" - -#: html/Admin/Queues/Templates.html:65 -#. ($QueueObj->Name) -msgid "Edit Templates for queue %1" -msgstr "" - -#: lib/RT/Group_Overlay.pm:169 -msgid "Edit saved searches for this group" -msgstr "Editar Pesquisas para este grupo" - -#: html/Admin/Elements/GlobalCustomFieldTabs:62 html/Admin/Global/index.html:69 -msgid "Edit system templates" -msgstr "Editar modelos de sistema" - -#: lib/RT/Group_Overlay.pm:169 -msgid "EditSavedSearches" -msgstr "" - -#: html/Admin/Queues/Modify.html:142 -#. ($QueueObj->Name) -msgid "Editing Configuration for queue %1" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:169 html/Admin/Elements/EditCustomField:122 -#. ($CustomFieldObj->Name()) -msgid "Editing CustomField %1" -msgstr "" - -#: html/Admin/Groups/Members.html:57 -#. ($Group->Name) -msgid "Editing membership for group %1" -msgstr "" - -#: html/User/Groups/Members.html:152 -#. ($Group->Name) -msgid "Editing membership for personal group %1" -msgstr "" - -#: lib/RT/Record.pm:1317 lib/RT/Record.pm:1394 lib/RT/Ticket_Overlay.pm:2512 lib/RT/Ticket_Overlay.pm:2602 -msgid "Either base or target must be specified" -msgstr "" - -#: html/Admin/Users/Modify.html:76 html/Ticket/Elements/AddWatchers:79 html/User/Prefs.html:67 -msgid "Email" -msgstr "Email" - -#: lib/RT/User_Overlay.pm:237 -msgid "Email address in use" -msgstr "Endereço de email já utilizado" - -#: html/Admin/CustomFields/Modify.html:100 html/Admin/Elements/EditCustomField:74 -msgid "Enabled (Unchecking this box disables this custom field)" -msgstr "Activo (remover selecção desta caixa desactiva este campo)" - -#: html/Admin/Groups/Modify.html:89 html/User/Groups/Modify.html:76 -msgid "Enabled (Unchecking this box disables this group)" -msgstr "Activo (remover selecção desta caixa desactiva este grupo)" - -#: html/Admin/Queues/Modify.html:107 -msgid "Enabled (Unchecking this box disables this queue)" -msgstr "Activo (remover selecção desta caixa desactiva esta queue)" - -#: html/Admin/Queues/index.html:80 -msgid "Enabled Queues" -msgstr "Queues activas" - -#: html/Admin/Elements/EditCustomField:138 html/Admin/Groups/Modify.html:156 html/Admin/Users/Modify.html:354 html/User/Groups/Modify.html:140 -#. (loc_fuzzy($msg)) -msgid "Enabled status %1" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:187 html/Admin/Queues/Modify.html:164 -#. (loc_fuzzy($msg)) -msgid "Enabled status: %1" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:66 -msgid "Enter multiple values" -msgstr "" - -#: html/Elements/EditLinks:127 -msgid "Enter objects or URIs to link objects to. Separate multiple entries with spaces." -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:67 -msgid "Enter one value" -msgstr "Inserir um valor" - -#: html/Elements/EditLinks:124 -msgid "Enter queues or URIs to link queues to. Separate multiple entries with spaces." -msgstr "Escreva as filas ou URIs para ligar as filas. Separe várias entradas com espaços." - -#: html/Elements/EditLinks:120 html/Search/Bulk.html:191 -msgid "Enter tickets or URIs to link tickets to. Separate multiple entries with spaces." -msgstr "Escreva o número dos pedidos ou URIs para ligar os pedidos. Separe várias entradas com espaços." - -#: lib/RT/CustomField_Overlay.pm:68 -msgid "Enter up to %1 values" -msgstr "Inserir até %1 valores" - -#: html/Elements/Login:78 html/SelfService/Error.html:48 html/SelfService/Error.html:49 -msgid "Error" -msgstr "Erro" - -#: lib/RT/Queue_Overlay.pm:681 -msgid "Error in parameters to Queue->AddWatcher" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:837 -msgid "Error in parameters to Queue->DeleteWatcher" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1376 -msgid "Error in parameters to Ticket->AddWatcher" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1531 -msgid "Error in parameters to Ticket->DeleteWatcher" -msgstr "" - -#: html/Search/Build.html:390 -#. ($val, $token, $string) -msgid "Error near ->%1<- expecting a %2 in '%3'" -msgstr "" - -#: bin/rt-crontool:287 -msgid "Escalate tickets" -msgstr "" - -#: html/Ticket/Elements/ShowBasics:59 -msgid "Estimated" -msgstr "Estimado" - -#: etc/initialdata:20 -msgid "Everyone" -msgstr "Todos" - -#: bin/rt-crontool:273 -msgid "Example:" -msgstr "Exemplo:" - -#: html/Admin/Users/Modify.html:101 -msgid "Extra info" -msgstr "Informação adicional" - -#: lib/RT/SavedSearch.pm:179 -msgid "Failed to create search attribute" -msgstr "" - -#: lib/RT/User_Overlay.pm:378 -msgid "Failed to find 'Privileged' users pseudogroup." -msgstr "" - -#: lib/RT/User_Overlay.pm:385 -msgid "Failed to find 'Unprivileged' users pseudogroup" -msgstr "" - -#: bin/rt-crontool:208 -#. ($modname, $@) -msgid "Failed to load module %1. (%2)" -msgstr "" - -#: lib/RT/SavedSearch.pm:154 -#. ($privacy) -msgid "Failed to load object for %1" -msgstr "" - -#: lib/RT/Date.pm:444 -msgid "Feb." -msgstr "Feb" - -#: html/Elements/SelectAttachmentField:52 -msgid "Filename" -msgstr "Ficheiro" - -#: lib/RT/CustomField_Overlay.pm:71 -msgid "Fill in multiple text areas" -msgstr "Preencher múltiplas áreas de texto" - -#: lib/RT/CustomField_Overlay.pm:76 -msgid "Fill in multiple wikitext areas" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:72 -msgid "Fill in one text area" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:77 -msgid "Fill in one wikitext area" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:109 html/Admin/CustomFields/Modify.html:120 -msgid "Fill in this field with a URL." -msgstr "Preencha este campo com um URL" - -#: lib/RT/CustomField_Overlay.pm:73 -msgid "Fill in up to %1 text areas" -msgstr "Preencha até %1 áreas de texto" - -#: lib/RT/CustomField_Overlay.pm:78 -msgid "Fill in up to %1 wikitext areas" -msgstr "" - -#: html/Search/Elements/PickBasics:151 html/Ticket/Create.html:185 html/Ticket/Elements/EditBasics:99 lib/RT/Tickets_Overlay.pm:2030 -msgid "Final Priority" -msgstr "Prioridade final" - -#: lib/RT/Ticket_Overlay.pm:1166 -msgid "FinalPriority" -msgstr "" - -#: html/Admin/Groups/index.html:74 html/Admin/Queues/People.html:84 html/Ticket/Elements/EditPeople:57 -msgid "Find groups whose" -msgstr "Encontrar grupos cujo" - -#: html/Admin/Queues/People.html:80 html/Admin/Users/index.html:72 html/Ticket/Elements/EditPeople:53 -msgid "Find people whose" -msgstr "Encontrar pessoas cujo" - -#: html/Search/Results.html:149 -msgid "Find tickets" -msgstr "Encontrar tickets" - -#: html/Ticket/Elements/Tabs:83 -msgid "First" -msgstr "Primeiro" - -#: docs/design_docs/string-extraction-guide.txt:33 lib/RT/StyleGuide.pod:764 -msgid "Foo Bar Baz" -msgstr "" - -#: docs/design_docs/string-extraction-guide.txt:24 lib/RT/StyleGuide.pod:755 -msgid "Foo!" -msgstr "" - -#: html/Search/Bulk.html:85 -msgid "Force change" -msgstr "Forçar alteraçao" - -#: html/Search/Elements/EditFormat:54 -msgid "Format" -msgstr "" - -#: html/Search/Results.html:147 -#. ($ticketcount) -msgid "Found %quant(%1,ticket)" -msgstr "" - -#: lib/RT/Record.pm:973 -msgid "Found Object" -msgstr "" - -#: lib/RT/Date.pm:423 -msgid "Fri." -msgstr "Fri" - -#: html/Ticket/Elements/ShowHistory:68 html/Ticket/Elements/ShowHistory:74 -msgid "Full headers" -msgstr "Cabeçalhos completos" - -#: html/Tools/Offline.html:87 -msgid "Get template from file" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:705 -#. ($New->Name) -msgid "Given to %1" -msgstr "" - -#: html/Admin/Elements/Tabs:67 html/Admin/index.html:84 -msgid "Global" -msgstr "" - -#: html/Admin/Elements/EditCustomFields:57 -msgid "Global Custom Fields" -msgstr "" - -#: html/Admin/Global/CustomFields/index.html:61 -msgid "Global custom field configuration" -msgstr "" - -#: html/Admin/Global/MyRT.html:95 -#. ($pane) -msgid "Global portlet %1 saved." -msgstr "" - -#: html/Admin/Elements/SelectTemplate:61 -#. (loc($Template->Name)) -msgid "Global template: %1" -msgstr "" - -#: html/Admin/CustomFields/index.html:82 html/Admin/Groups/index.html:69 html/Admin/Groups/index.html:75 html/Admin/Queues/People.html:82 html/Admin/Queues/People.html:86 html/Admin/Queues/index.html:68 html/Admin/Users/index.html:75 html/Approvals/index.html:54 html/Elements/RefreshHomepage:50 html/Search/Results.html:76 html/Search/Results.html:92 html/Ticket/Elements/EditPeople:55 html/Ticket/Elements/EditPeople:59 html/Tools/Offline.html:91 -msgid "Go!" -msgstr "" - -#: html/Elements/GotoTicket:48 html/SelfService/Elements/GotoTicket:48 -msgid "Goto ticket" -msgstr "Ir para ticket" - -#: html/Ticket/Elements/AddWatchers:69 html/Ticket/Elements/ShowGroupMembers:57 html/User/Elements/DelegateRights:101 -msgid "Group" -msgstr "Grupo" - -#: html/Admin/Elements/CustomFieldTabs:70 html/Admin/Elements/GroupTabs:68 html/Admin/Elements/QueueTabs:84 html/Admin/Elements/SystemTabs:67 html/Admin/Global/index.html:78 -msgid "Group Rights" -msgstr "Direitos do grupo" - -#: lib/RT/Group_Overlay.pm:985 -msgid "Group already has member" -msgstr "Grupo já tem membro" - -#: html/Admin/Groups/Modify.html:115 -#. ($create_msg) -msgid "Group could not be created: %1" -msgstr "Grupo não pôde ser criado: %1" - -#: lib/RT/Group_Overlay.pm:523 -msgid "Group created" -msgstr "Grupo criado" - -#: lib/RT/Group_Overlay.pm:1157 -msgid "Group has no such member" -msgstr "O grupo não tem esse membro" - -#: lib/RT/Group_Overlay.pm:965 lib/RT/Queue_Overlay.pm:743 lib/RT/Queue_Overlay.pm:810 lib/RT/Ticket_Overlay.pm:1423 lib/RT/Ticket_Overlay.pm:1503 -msgid "Group not found" -msgstr "Grupo não encontrado" - -#: html/Admin/Elements/GlobalCustomFieldTabs:61 html/Admin/Elements/SelectNewGroupMembers:59 html/Admin/Elements/Tabs:58 html/Admin/Global/CustomFields/index.html:71 html/Admin/Groups/Members.html:88 html/Admin/Queues/People.html:106 html/Admin/Users/Memberships.html:55 html/Admin/index.html:69 html/User/Groups/Members.html:90 lib/RT/CustomField_Overlay.pm:1213 -msgid "Groups" -msgstr "Grupos" - -#: lib/RT/Group_Overlay.pm:991 -msgid "Groups can't be members of their members" -msgstr "Grupos não podem ser membros dos seus membros" - -#: html/Admin/Groups/index.html:88 -msgid "Groups matching search criteria" -msgstr "Grupos que preenchem critérios" - -#: html/Ticket/Elements/ShowRequestor:79 -msgid "Groups this user belongs to" -msgstr "Grupos a que este utilizador pertence" - -#: lib/RT/Interface/CLI.pm:96 lib/RT/Interface/CLI.pm:96 -msgid "Hello!" -msgstr "Olá!" - -#: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:771 -#. ($name) -msgid "Hello, %1" -msgstr "Olá, %1" - -#: html/Admin/Elements/GroupTabs:72 html/Admin/Elements/UserTabs:66 html/Ticket/Elements/ShowHistory:55 html/Ticket/Elements/Tabs:113 -msgid "History" -msgstr "Histórico" - -#: html/Admin/Groups/History.html:64 -#. ($GroupObj->Name) -msgid "History of the group %1" -msgstr "Histórico do grupo %1" - -#: html/Admin/Users/History.html:64 -#. ($UserObj->Name) -msgid "History of the user %1" -msgstr "Histórico do utilizador %1" - -#: html/Elements/Tabs:68 -msgid "Homepage" -msgstr "Home" - -#: html/Elements/SelectTimeUnits:50 -msgid "Hours" -msgstr "Horas" - -#: lib/RT/Base.pm:135 -#. (6) -msgid "I have %quant(%1,concrete mixer)." -msgstr "" - -#: html/Search/Build.html:466 lib/RT/Report/Tickets.pm:415 -msgid "I'm lost" -msgstr "Estou perdido" - -#: html/Ticket/Elements/ShowBasics:50 lib/RT/Tickets_Overlay.pm:1955 -msgid "Id" -msgstr "Id" - -#: html/Admin/Users/Modify.html:67 html/User/Prefs.html:62 -msgid "Identity" -msgstr "Identidade" - -#: etc/initialdata:429 -msgid "If an approval is rejected, reject the original and delete pending approvals" -msgstr "" - -#: html/Tools/Offline.html:76 -msgid "If no Requestor is specified, create tickets with this requestor." -msgstr "Se nenhum Requerente for especificado, criar um pedido sem Requerente." - -#: html/Tools/Offline.html:67 -msgid "If no queue is specified, create tickets in this queue." -msgstr "Se nenhuma queue foi definida, criar tickets nesta queue" - -#: bin/rt-crontool:269 -msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." -msgstr "" - -#: html/Admin/Queues/People.html:128 html/Ticket/Modify.html:62 html/Ticket/ModifyAll.html:130 html/Ticket/ModifyPeople.html:62 -msgid "If you've updated anything above, be sure to" -msgstr "Se actualizou algo acima, certifique-se que" - -#: lib/RT/Record.pm:964 -msgid "Illegal value for %1" -msgstr "" - -#: lib/RT/Record.pm:967 -msgid "Immutable field" -msgstr "" - -#: html/Admin/Groups/index.html:67 -msgid "Include disabled groups in listing." -msgstr "Incluir grupos desactivados na listagem" - -#: html/Admin/Queues/index.html:67 -msgid "Include disabled queues in listing." -msgstr "Incluir queues desactivadas na listagem" - -#: html/Admin/Users/index.html:73 -msgid "Include disabled users in search." -msgstr "Incluir utilizadores desactivados na listagem" - -#: html/Admin/CustomFields/Modify.html:115 -msgid "Include page" -msgstr "Incluir página" - -#: html/Search/Build.html:492 lib/RT/Report/Tickets.pm:441 -msgid "Incomplete Query" -msgstr "Query incompleta" - -#: html/Search/Build.html:489 lib/RT/Report/Tickets.pm:438 -msgid "Incomplete query" -msgstr "Query incompleta" - -#: html/Search/Elements/PickBasics:150 lib/RT/Tickets_Overlay.pm:2005 -msgid "Initial Priority" -msgstr "Prioridade Inicial" - -#: lib/RT/Ticket_Overlay.pm:1165 lib/RT/Ticket_Overlay.pm:1167 -msgid "InitialPriority" -msgstr "" - -#: lib/RT/ScripAction_Overlay.pm:135 -msgid "Input error" -msgstr "" - -#: html/Elements/ValidateCustomFields:70 lib/RT/CustomField_Overlay.pm:1024 lib/RT/CustomField_Overlay.pm:1165 -#. ($self->FriendlyPattern) -#. ($CF->FriendlyPattern) -msgid "Input must match %1" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:3522 -msgid "Internal Error" -msgstr "Erro interno" - -#: lib/RT/Record.pm:315 -#. ($id->{error_message}) -msgid "Internal Error: %1" -msgstr "Erro interno: %1" - -#: lib/RT/Group_Overlay.pm:670 -msgid "Invalid Group Type" -msgstr "" - -#: lib/RT/Principal_Overlay.pm:163 -msgid "Invalid Right" -msgstr "Direito Inválido" - -#: lib/RT/Record.pm:969 -msgid "Invalid data" -msgstr "Dados Inválidos" - -#: lib/RT/CustomField_Overlay.pm:210 lib/RT/CustomField_Overlay.pm:681 -#. ($msg) -msgid "Invalid pattern: %1" -msgstr "Padrão inválido: %1" - -#: lib/RT/Scrip_Overlay.pm:159 lib/RT/Template_Overlay.pm:246 -msgid "Invalid queue" -msgstr "Queue inválida" - -#: lib/RT/ACE_Overlay.pm:266 lib/RT/ACE_Overlay.pm:275 lib/RT/ACE_Overlay.pm:281 lib/RT/ACE_Overlay.pm:292 -msgid "Invalid right" -msgstr "Direito inválido" - -#: lib/RT/Record.pm:290 -#. ($key) -msgid "Invalid value for %1" -msgstr "Valor inválido para %1" - -#: lib/RT/Record.pm:1632 -msgid "Invalid value for custom field" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:426 -msgid "Invalid value for status" -msgstr "Valor inválido para estado" - -#: bin/rt-crontool:270 -msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." -msgstr "É muito importante que os utilizadores não privilegiados não possam executar esta ferramenta." - -#: bin/rt-crontool:271 -msgid "It is suggested that you create a non-privileged unix user with the correct group membership and RT access to run this tool." -msgstr "É sugerido que crie um utilizador não privilegiado com o grupo correcto e acesso ao RT para utilizar esta ferramenta." - -#: bin/rt-crontool:233 -msgid "It takes several arguments:" -msgstr "Necessários vários argumentos:" - -#: html/Search/Elements/EditFormat:87 -msgid "Italic" -msgstr "Itálico" - -#: lib/RT/Date.pm:443 -msgid "Jan." -msgstr "Jan" - -#: lib/RT/Group_Overlay.pm:168 -msgid "Join or leave this group" -msgstr "" - -#: lib/RT/Date.pm:449 -msgid "Jul." -msgstr "Jul" - -#: html/Ticket/Elements/Tabs:127 -msgid "Jumbo" -msgstr "" - -#: lib/RT/Date.pm:448 -msgid "Jun." -msgstr "Jun" - -#: html/Admin/Users/Modify.html:96 html/User/Prefs.html:78 -msgid "Language" -msgstr "Língua" - -#: html/Search/Elements/EditFormat:81 -msgid "Large" -msgstr "" - -#: html/Ticket/Elements/Tabs:98 -msgid "Last" -msgstr "Último" - -#: html/Ticket/Elements/EditDates:61 html/Ticket/Elements/ShowDates:62 -msgid "Last Contact" -msgstr "Último Contacto" - -#: html/Elements/SelectDateType:52 -msgid "Last Contacted" -msgstr "" - -#: html/Elements/SelectDateType:53 -msgid "Last Updated" -msgstr "Última actualização" - -#: html/Search/Elements/PickBasics:105 -msgid "LastUpdatedBy" -msgstr "" - -#: html/Ticket/Elements/ShowBasics:70 -msgid "Left" -msgstr "Restante" - -#: html/Admin/Users/Modify.html:111 -msgid "Let this user access RT" -msgstr "Permitir que este utilizador aceda ao RT" - -#: html/Admin/Users/Modify.html:115 -msgid "Let this user be granted rights" -msgstr "Permitir que este utilizador tenha direitos" - -#: html/Search/Elements/EditFormat:70 -msgid "Link" -msgstr "Ligação" - -#: lib/RT/Record.pm:1328 -msgid "Link already exists" -msgstr "Ligação já existe" - -#: lib/RT/Record.pm:1342 -msgid "Link could not be created" -msgstr "Ligação não pôde ser criada" - -#: lib/RT/Record.pm:1348 -#. ($TransString) -msgid "Link created (%1)" -msgstr "Ligação criada (%1)" - -#: lib/RT/Record.pm:1409 -#. ($TransString) -msgid "Link deleted (%1)" -msgstr "Ligação apagada (%1)" - -#: lib/RT/Record.pm:1415 -msgid "Link not found" -msgstr "Ligação não encontrada" - -#: html/Ticket/ModifyLinks.html:48 html/Ticket/ModifyLinks.html:52 -#. ($Ticket->Id) -msgid "Link ticket #%1" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:104 -msgid "Link values to" -msgstr "Ligar valores a" - -#: lib/RT/Ticket_Overlay.pm:702 -msgid "Linking. Permission denied" -msgstr "Ligação. Permissão negada" - -#: html/Ticket/Create.html:219 html/Ticket/Elements/ShowSummary:97 html/Ticket/Elements/Tabs:122 html/Ticket/ModifyAll.html:80 -msgid "Links" -msgstr "Ligações" - -#: html/Search/Elements/EditSearches:77 -msgid "Load" -msgstr "Carregar" - -#: html/Search/Elements/EditSearches:75 -msgid "Load saved search:" -msgstr "Carregar pesquisa gravada:" - -#: lib/RT/System.pm:88 -msgid "LoadSavedSearch" -msgstr "" - -#: html/Admin/Tools/Configuration.html:66 -msgid "Loaded perl modules" -msgstr "Módulos perl carregados" - -#: lib/RT/SavedSearch.pm:113 -#. ($self->Name) -msgid "Loaded search %1" -msgstr "Pesquisa %1 carregada" - -#: html/Admin/Users/Modify.html:141 html/User/Prefs.html:128 -msgid "Location" -msgstr "Localização" - -#: html/Elements/Header:93 -#. ("<span>".$session{'CurrentUser'}->Name."</span>") -msgid "Logged in as %1" -msgstr "Ligado como %1" - -#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:102 html/Elements/Login:70 html/Elements/Login:86 lib/RT/StyleGuide.pod:795 -msgid "Login" -msgstr "Entrar" - -#: html/Elements/Header:103 -msgid "Logout" -msgstr "Sair" - -#: lib/RT/CustomField_Overlay.pm:935 -msgid "Lookup type mismatch" -msgstr "" - -#: html/Search/Bulk.html:84 -msgid "Make Owner" -msgstr "Definir Proprietário" - -#: html/Search/Bulk.html:108 -msgid "Make Status" -msgstr "Definir estado" - -#: html/Search/Bulk.html:116 -msgid "Make date Due" -msgstr "Definir data como prazo" - -#: html/Search/Bulk.html:118 -msgid "Make date Resolved" -msgstr "" - -#: html/Search/Bulk.html:112 -msgid "Make date Started" -msgstr "" - -#: html/Search/Bulk.html:110 -msgid "Make date Starts" -msgstr "" - -#: html/Search/Bulk.html:114 -msgid "Make date Told" -msgstr "" - -#: html/Search/Bulk.html:104 -msgid "Make priority" -msgstr "Definir prioridade" - -#: html/Search/Bulk.html:106 -msgid "Make queue" -msgstr "" - -#: html/Search/Bulk.html:102 -msgid "Make subject" -msgstr "Definir assunto" - -#: lib/RT/Group_Overlay.pm:171 -msgid "Make this group visible to user" -msgstr "" - -#: html/Admin/index.html:80 -msgid "Manage custom fields and custom field values" -msgstr "" - -#: html/Admin/index.html:71 -msgid "Manage groups and group membership" -msgstr "Gerir grupos e membros de grupos" - -#: html/Admin/index.html:87 -msgid "Manage properties and configuration which apply to all queues" -msgstr "Gerir propriedades e configuração que se aplica a todas as queues" - -#: html/Admin/index.html:76 -msgid "Manage queues and queue-specific properties" -msgstr "Gerir queues e propriedades específicas das queues" - -#: html/Admin/index.html:66 -msgid "Manage users and passwords" -msgstr "Gerir utilizadores e passwords" - -#: lib/RT/Date.pm:445 -msgid "Mar." -msgstr "Mar" - -#: lib/RT/Date.pm:447 -msgid "May." -msgstr "May" - -#: lib/RT/Transaction_Overlay.pm:752 -#. ($value) -msgid "Member %1 added" -msgstr "Membro %1 adicionado" - -#: lib/RT/Transaction_Overlay.pm:792 -#. ($value) -msgid "Member %1 deleted" -msgstr "Membro %1 apagado" - -#: lib/RT/Group_Overlay.pm:1002 -msgid "Member added" -msgstr "Membro adicionado" - -#: lib/RT/Group_Overlay.pm:1164 -msgid "Member deleted" -msgstr "Membro apagado" - -#: lib/RT/Group_Overlay.pm:1168 -msgid "Member not deleted" -msgstr "Membro não apagado" - -#: html/Elements/SelectLinkType:49 -msgid "Member of" -msgstr "Membro de" - -#: html/Admin/Elements/GroupTabs:65 html/User/Elements/GroupTabs:65 -msgid "Members" -msgstr "Membros" - -#: lib/RT/Transaction_Overlay.pm:749 -#. ($value) -msgid "Membership in %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:789 -#. ($value) -msgid "Membership in %1 deleted" -msgstr "" - -#: html/Admin/Elements/UserTabs:63 -msgid "Memberships" -msgstr "" - -#: html/Admin/Users/Memberships.html:62 -#. ($UserObj->Name) -msgid "Memberships of the user %1" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2896 -msgid "Merge Successful" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2774 -msgid "Merge failed. Couldn't set EffectiveId" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:2791 -msgid "Merge failed. Couldn't set Status" -msgstr "" - -#: html/Elements/EditLinks:132 html/Ticket/Elements/BulkLinks:50 -msgid "Merge into" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:755 -#. ($value) -msgid "Merged into %1" -msgstr "" - -#: html/Search/Bulk.html:145 html/Ticket/Update.html:120 -msgid "Message" -msgstr "Mensagem" - -#: html/Ticket/Elements/ShowTransactionAttachments:166 -msgid "Message body not shown because it is too large or is not plain text." -msgstr "Corpo da mensagem não apresentado porque é grande demais ou não é texto" - -#: lib/RT/Ticket_Overlay.pm:2445 -msgid "Message could not be recorded" -msgstr "Mensagem não pôde ser gravada" - -#: lib/RT/Ticket_Overlay.pm:2448 -msgid "Message recorded" -msgstr "Mensagem gravada" - -#: html/Ticket/Elements/PreviewScrips:124 -msgid "Messages about this ticket will not be sent to..." -msgstr "Mensagens sobre este ticket não serão enviadas a..." - -#: html/Elements/SelectTimeUnits:49 -msgid "Minutes" -msgstr "Minutos" - -#: html/Search/Build.html:496 lib/RT/Report/Tickets.pm:445 -msgid "Mismatched parentheses" -msgstr "" - -#: lib/RT/Record.pm:971 -msgid "Missing a primary key?: %1" -msgstr "" - -#: html/Admin/Users/Modify.html:196 html/User/Prefs.html:94 -msgid "Mobile" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:96 -msgid "Modify Access Control List" -msgstr "Alterar Lista de Controle de Acessos" - -#: html/Admin/Elements/ObjectCustomFields:98 -#. (loc(lc($FriendlySubTypes)), loc(lc($Types))) -msgid "Modify Custom Fields which apply to %1 for all %2" -msgstr "" - -#: html/Admin/Elements/ObjectCustomFields:100 -#. (loc(lc($Types))) -msgid "Modify Custom Fields which apply to all %1" -msgstr "" - -#: html/Admin/Global/GroupRights.html:108 html/Admin/Groups/GroupRights.html:96 html/Admin/Queues/GroupRights.html:109 -msgid "Modify Group Rights" -msgstr "Alterar Direitos de Grupo" - -#: html/Admin/Groups/Members.html:107 html/User/Groups/Members.html:103 -msgid "Modify Members" -msgstr "Alterar Membros" - -#: html/User/Delegation.html:60 -msgid "Modify Rights" -msgstr "Alterar Direitos" - -#: lib/RT/Queue_Overlay.pm:99 -msgid "Modify Scrip templates for this queue" -msgstr "Alterar templates dos Scrips para esta queue" - -#: lib/RT/Queue_Overlay.pm:102 -msgid "Modify Scrips for this queue" -msgstr "Alterar Scrips para esta queue" - -#: html/Admin/Global/UserRights.html:76 html/Admin/Groups/UserRights.html:78 html/Admin/Queues/UserRights.html:77 -msgid "Modify User Rights" -msgstr "Alterar Direitos de Utilizadores" - -#: html/Admin/Queues/CustomField.html:68 -#. ($QueueObj->Name()) -msgid "Modify a CustomField for queue %1" -msgstr "" - -#: html/Admin/Queues/Scrip.html:84 -#. ($QueueObj->Name) -msgid "Modify a scrip for queue %1" -msgstr "Alterar uma scrip da queue %1" - -#: html/Admin/Global/Scrip.html:77 -msgid "Modify a scrip that applies to all queues" -msgstr "Alterar uma scrip que se aplica a todas as queues" - -#: html/Admin/CustomFields/Objects.html:92 -#. ($CF->Name) -msgid "Modify associated objects for %1" -msgstr "" - -#: html/Ticket/ModifyDates.html:48 html/Ticket/ModifyDates.html:52 -#. ($TicketObj->Id) -msgid "Modify dates for #%1" -msgstr "Alterar datas de #%1" - -#: html/Ticket/ModifyDates.html:59 -#. ($TicketObj->Id) -msgid "Modify dates for ticket # %1" -msgstr "Alterar datas do ticket # %1" - -#: html/Admin/Elements/GlobalCustomFieldTabs:67 html/Admin/Global/index.html:74 -msgid "Modify global custom fields" -msgstr "" - -#: html/Admin/Elements/GlobalCustomFieldTabs:72 html/Admin/Global/GroupRights.html:48 html/Admin/Global/GroupRights.html:51 html/Admin/Global/index.html:79 -msgid "Modify global group rights" -msgstr "Alterar direitos de grupo globais" - -#: html/Admin/Global/GroupRights.html:56 -msgid "Modify global group rights." -msgstr "Alterar direitos de grupo globais" - -#: html/Admin/Global/UserRights.html:48 html/Admin/Global/UserRights.html:51 html/Admin/Global/index.html:83 -msgid "Modify global user rights" -msgstr "Alterar direitos de utilizador globais" - -#: html/Admin/Global/UserRights.html:56 -msgid "Modify global user rights." -msgstr "Alterar direitos de utilizador globais" - -#: lib/RT/Group_Overlay.pm:165 -msgid "Modify group metadata or delete group" -msgstr "" - -#: html/Admin/CustomFields/GroupRights.html:113 -#. ($CustomFieldObj->Name) -msgid "Modify group rights for custom field %1" -msgstr "" - -#: html/Admin/Groups/GroupRights.html:48 html/Admin/Groups/GroupRights.html:52 html/Admin/Groups/GroupRights.html:58 -#. ($GroupObj->Name) -msgid "Modify group rights for group %1" -msgstr "Alterar direitos de grupo para o grupo %1" - -#: html/Admin/Queues/GroupRights.html:48 html/Admin/Queues/GroupRights.html:52 -#. ($QueueObj->Name) -msgid "Modify group rights for queue %1" -msgstr "Alterar direitos de grupo para a queue %1" - -#: lib/RT/Group_Overlay.pm:167 -msgid "Modify membership roster for this group" -msgstr "" - -#: lib/RT/System.pm:84 -msgid "Modify one's own RT account" -msgstr "" - -#: html/Admin/Queues/People.html:48 html/Admin/Queues/People.html:52 -#. ($QueueObj->Name) -msgid "Modify people related to queue %1" -msgstr "Alterar pessoas relacionadas com a queue %1" - -#: html/Ticket/ModifyPeople.html:48 html/Ticket/ModifyPeople.html:52 html/Ticket/ModifyPeople.html:59 -#. ($Ticket->id) -#. ($Ticket->Id) -msgid "Modify people related to ticket #%1" -msgstr "Alterar pessoas relacionadas com o ticket %1" - -#: html/Admin/Queues/Scrips.html:69 -#. ($QueueObj->Name) -msgid "Modify scrips for queue %1" -msgstr "Alterar scrips da queue %1" - -#: html/Admin/Elements/GlobalCustomFieldTabs:58 html/Admin/Global/Scrips.html:67 html/Admin/Global/index.html:65 -msgid "Modify scrips which apply to all queues" -msgstr "Alterar scrips que se aplicam a todas as queues" - -#: html/Admin/Global/Template.html:100 html/Admin/Queues/Template.html:101 -#. (loc($TemplateObj->Name())) -msgid "Modify template %1" -msgstr "Alterar template %1" - -#: html/Admin/Global/Templates.html:67 -msgid "Modify templates which apply to all queues" -msgstr "Alterar templates que se aplicam a todas as queues" - -#: html/Admin/Global/index.html:87 -msgid "Modify the default \"RT at a glance\" view" -msgstr "Alterar a página principal" - -#: html/Admin/Groups/Modify.html:125 html/User/Groups/Modify.html:109 -#. ($Group->Name) -msgid "Modify the group %1" -msgstr "Alterar o grupo %1" - -#: lib/RT/Queue_Overlay.pm:97 -msgid "Modify the queue watchers" -msgstr "" - -#: html/Admin/Users/Modify.html:313 -#. ($UserObj->Name) -msgid "Modify the user %1" -msgstr "Alterar o utilizador %1" - -#: html/Ticket/ModifyAll.html:60 -#. ($Ticket->Id) -msgid "Modify ticket # %1" -msgstr "Alterar o ticket # %1" - -#: html/Ticket/Modify.html:48 html/Ticket/Modify.html:51 html/Ticket/Modify.html:57 -#. ($TicketObj->Id) -msgid "Modify ticket #%1" -msgstr "Alterar ticket # %1" - -#: lib/RT/Queue_Overlay.pm:115 -msgid "Modify tickets" -msgstr "Alterar tickets" - -#: html/Admin/CustomFields/UserRights.html:159 -#. ($CustomFieldObj->Name) -msgid "Modify user rights for custom field %1" -msgstr "" - -#: html/Admin/Groups/UserRights.html:48 html/Admin/Groups/UserRights.html:52 html/Admin/Groups/UserRights.html:58 -#. ($GroupObj->Name) -msgid "Modify user rights for group %1" -msgstr "Alterar direitos de utilizadores para o grupo %1" - -#: html/Admin/Queues/UserRights.html:48 html/Admin/Queues/UserRights.html:52 -#. ($QueueObj->Name) -msgid "Modify user rights for queue %1" -msgstr "Alterar direitos de utilizador para a queue %1" - -#: lib/RT/Queue_Overlay.pm:96 -msgid "ModifyACL" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:110 -msgid "ModifyCustomField" -msgstr "" - -#: lib/RT/Group_Overlay.pm:168 -msgid "ModifyOwnMembership" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:97 -msgid "ModifyQueueWatchers" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:102 -msgid "ModifyScrips" -msgstr "" - -#: lib/RT/System.pm:84 -msgid "ModifySelf" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:99 -msgid "ModifyTemplate" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:115 -msgid "ModifyTicket" -msgstr "" - -#: lib/RT/Date.pm:419 -msgid "Mon." -msgstr "Mon" - -#: html/Ticket/Elements/ShowRequestor:63 -#. ($name) -msgid "More about %1" -msgstr "Mais sobre %1" - -#: html/Admin/Elements/PickCustomFields:85 -msgid "Move down" -msgstr "Mover para baixo" - -#: html/Admin/Elements/PickCustomFields:77 -msgid "Move up" -msgstr "Mover para cima" - -#: html/Admin/Elements/SelectSingleOrMultiple:50 -msgid "Multiple" -msgstr "Múltiplo" - -#: lib/RT/User_Overlay.pm:228 -msgid "Must specify 'Name' attribute" -msgstr "" - -#: html/SelfService/Elements/MyRequests:79 -#. ($friendly_status) -msgid "My %1 tickets" -msgstr "Os meus %1 tickets" - -#: html/Tools/Elements/Tabs:65 -msgid "My Day" -msgstr "" - -#: html/Approvals/index.html:48 html/Approvals/index.html:49 -msgid "My approvals" -msgstr "As minhas aprovações" - -#: html/Search/Elements/SearchPrivacy:52 html/Search/Elements/SelectSearchObject:55 html/Search/Elements/SelectSearchesForObjects:56 -msgid "My saved searches" -msgstr "As minhas pesquisas guardadas" - -#: html/Admin/CustomFields/Modify.html:60 html/Admin/Elements/AddCustomFieldValue:55 html/Admin/Elements/EditCustomField:57 html/Admin/Elements/EditCustomFieldValues:57 html/Admin/Elements/ModifyTemplate:51 html/Admin/Groups/Modify.html:67 html/Search/Bulk.html:159 html/User/Groups/Modify.html:67 -msgid "Name" -msgstr "Nome" - -#: lib/RT/User_Overlay.pm:235 -msgid "Name in use" -msgstr "Nome em utilização" - -#: html/Ticket/Elements/ShowDates:75 -msgid "Never" -msgstr "Nunca" - -#: html/Elements/EditLinks:118 -msgid "New Links" -msgstr "Novas Ligações" - -#: html/Admin/Users/Modify.html:121 html/User/Prefs.html:111 -msgid "New Password" -msgstr "Nova Password" - -#: etc/initialdata:332 -msgid "New Pending Approval" -msgstr "Novas aprovações pendentes" - -#: html/Ticket/Elements/Tabs:214 -msgid "New Search" -msgstr "Nova Pesquisa" - -#: html/Admin/Elements/CustomFieldTabs:95 html/Admin/Queues/CustomField.html:75 -msgid "New custom field" -msgstr "" - -#: html/Admin/Elements/GroupTabs:79 html/User/Elements/GroupTabs:75 -msgid "New group" -msgstr "Novo grupo" - -#: html/SelfService/Prefs.html:55 -msgid "New password" -msgstr "Nova password" - -#: lib/RT/User_Overlay.pm:818 -msgid "New password notification sent" -msgstr "" - -#: html/Admin/Elements/QueueTabs:97 -msgid "New queue" -msgstr "Nova queue" - -#: html/Ticket/Elements/Reminders:120 -msgid "New reminder:" -msgstr "Nova Nota" - -#: html/Admin/Elements/SelectRights:67 -msgid "New rights" -msgstr "Novos direitos" - -#: html/Admin/Global/Scrip.html:65 html/Admin/Global/Scrips.html:62 html/Admin/Queues/Scrip.html:73 html/Admin/Queues/Scrips.html:78 -msgid "New scrip" -msgstr "Novo scrip" - -#: html/Admin/Global/Template.html:80 html/Admin/Global/Templates.html:62 html/Admin/Queues/Template.html:81 html/Admin/Queues/Templates.html:73 -msgid "New template" -msgstr "Novo template" - -#: html/SelfService/Elements/Tabs:87 html/SelfService/Elements/Tabs:91 -msgid "New ticket" -msgstr "Novo ticket" - -#: lib/RT/Ticket_Overlay.pm:2751 -msgid "New ticket doesn't exist" -msgstr "Novo ticket não existe" - -#: html/Admin/Elements/UserTabs:83 -msgid "New user" -msgstr "Novo utilizador" - -#: html/Admin/Elements/CreateUserCalled:49 -msgid "New user called" -msgstr "Novo utilizador chamado" - -#: html/Admin/Queues/People.html:78 html/Ticket/Elements/EditPeople:52 -msgid "New watchers" -msgstr "" - -#: html/Helpers/CalPopup.html:60 html/Ticket/Elements/Tabs:94 -msgid "Next" -msgstr "Próximo" - -#: html/Elements/TicketList:108 -msgid "Next Page" -msgstr "Próxima Página" - -#: html/Admin/Users/Modify.html:86 html/User/Prefs.html:74 -msgid "Nickname" -msgstr "Nick" - -#: html/Admin/CustomFields/UserRights.html:147 -msgid "No Class defined" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:168 html/Admin/Elements/EditCustomField:121 -msgid "No CustomField" -msgstr "" - -#: html/Admin/CustomFields/GroupRights.html:105 -msgid "No CustomField defined" -msgstr "" - -#: html/Admin/Groups/GroupRights.html:107 html/Admin/Groups/UserRights.html:94 -msgid "No Group defined" -msgstr "Sem Grupo definido" - -#: lib/RT/Tickets_Overlay_SQL.pm:484 -msgid "No Query" -msgstr "" - -#: html/Admin/Queues/GroupRights.html:120 html/Admin/Queues/UserRights.html:91 -msgid "No Queue defined" -msgstr "" - -#: bin/rt-crontool:75 -msgid "No RT user found. Please consult your RT administrator.\\n" -msgstr "" - -#: html/Admin/Global/Template.html:98 html/Admin/Queues/Template.html:99 -msgid "No Template" -msgstr "" - -#: html/Approvals/Elements/Approve:79 -msgid "No action" -msgstr "" - -#: lib/RT/Record.pm:966 -msgid "No column specified" -msgstr "" - -#: html/Ticket/Elements/ShowRequestor:70 -msgid "No comment entered about this user" -msgstr "" - -#: lib/RT/Action/Generic.pm:187 lib/RT/Condition/Generic.pm:199 lib/RT/Search/ActiveTicketsInQueue.pm:79 lib/RT/Search/Generic.pm:136 lib/RT/Search/Googleish.pm:90 -#. (ref $self) -msgid "No description for %1" -msgstr "Sem descrição para %1" - -#: lib/RT/Users_Overlay.pm:192 -msgid "No group specified" -msgstr "Grupo não especificado" - -#: html/Admin/Groups/index.html:54 -msgid "No groups matching search criteria found." -msgstr "Nenhum grupo verificou o critério de pesquisa especificado." - -#: lib/RT/Ticket_Overlay.pm:2386 -msgid "No message attached" -msgstr "Sem mensagem anexada" - -#: lib/RT/User_Overlay.pm:1036 -msgid "No password set" -msgstr "Password não definida" - -#: lib/RT/Queue_Overlay.pm:363 -msgid "No permission to create queues" -msgstr "Sem permissão para criar queues" - -#: lib/RT/Ticket_Overlay.pm:1090 lib/RT/Ticket_Overlay.pm:422 -#. ($QueueObj->Name) -msgid "No permission to create tickets in the queue '%1'" -msgstr "Sem permissão para criar tickets na queue '%1'" - -#: lib/RT/User_Overlay.pm:188 -msgid "No permission to create users" -msgstr "Sem permissão para criar utilizadores" - -#: html/SelfService/Display.html:210 -msgid "No permission to display that ticket" -msgstr "Sem permissão para ver esse ticket" - -#: lib/RT/SavedSearch.pm:158 -msgid "No permission to save system-wide searches" -msgstr "Não tem permissão para gravar uma pesquisa de sistema" - -#: html/SelfService/Update.html:119 -msgid "No permission to view update ticket" -msgstr "Sem permissão para ver ou actualizar esse ticket" - -#: lib/RT/Ticket_Overlay.pm:1482 -msgid "No principal specified" -msgstr "" - -#: html/Admin/Queues/People.html:177 html/Admin/Queues/People.html:187 -msgid "No principals selected." -msgstr "" - -#: html/Admin/Queues/index.html:59 -msgid "No queues matching search criteria found." -msgstr "Nenhuma fila verificou os critérios de pesquisa especificados" - -#: html/Admin/Elements/SelectRights:108 -msgid "No rights found" -msgstr "" - -#: html/Admin/Elements/SelectRights:55 -msgid "No rights granted." -msgstr "" - -#: lib/RT/SavedSearch.pm:198 -msgid "No search loaded" -msgstr "Nenhuma pesquisa carregada" - -#: html/Search/Bulk.html:234 -msgid "No search to operate on." -msgstr "Nenhuma pesquisa possível" - -#: html/Elements/RT__Ticket/ColumnMap:139 html/Search/Results.rdf:80 -msgid "No subject" -msgstr "Sem assunto" - -#: html/Search/Chart:101 -msgid "No tickets found." -msgstr "Tickets não encontrados" - -#: lib/RT/Transaction_Overlay.pm:549 lib/RT/Transaction_Overlay.pm:586 -msgid "No transaction type specified" -msgstr "" - -#: html/Admin/Users/index.html:57 -msgid "No users matching search criteria found." -msgstr "Nenhum proprietário verificou o critério de pesquisa." - -#: lib/RT/Record.pm:963 -msgid "No value sent to _Set!\\n" -msgstr "" - -#: html/Elements/QuickCreate:61 -msgid "Nobody" -msgstr "Nobody" - -#: lib/RT/Record.pm:968 -msgid "Nonexistant field?" -msgstr "" - -#: html/Search/Chart:149 html/Search/Elements/Chart:90 -msgid "Not Set" -msgstr "Não definido" - -#: html/Elements/Header:98 -msgid "Not logged in." -msgstr "Desligado" - -#: lib/RT/Date.pm:399 -msgid "Not set" -msgstr "" - -#: html/NoAuth/Reminder.html:50 -msgid "Not yet implemented." -msgstr "" - -#: html/Approvals/Elements/Approve:83 -msgid "Notes" -msgstr "" - -#: lib/RT/User_Overlay.pm:821 -msgid "Notification could not be sent" -msgstr "Notificação não pôde ser enviada" - -#: etc/initialdata:101 -msgid "Notify AdminCcs" -msgstr "" - -#: etc/initialdata:97 -msgid "Notify AdminCcs as Comment" -msgstr "Notificar AdminCCS como Comentário" - -#: etc/initialdata:93 etc/upgrade/3.1.17/content:6 -msgid "Notify Ccs" -msgstr "" - -#: etc/initialdata:89 etc/upgrade/3.1.17/content:2 -msgid "Notify Ccs as Comment" -msgstr "Notificar CCs como Comentário" - -#: etc/initialdata:128 -msgid "Notify Other Recipients" -msgstr "" - -#: etc/initialdata:124 -msgid "Notify Other Recipients as Comment" -msgstr "Notificar outros recipientes como comentário" - -#: etc/initialdata:85 -msgid "Notify Owner" -msgstr "Notificar Proprietário" - -#: etc/initialdata:81 -msgid "Notify Owner as Comment" -msgstr "Notificar Proprietário como comentário" - -#: etc/initialdata:376 -msgid "Notify Owner of their rejected ticket" -msgstr "" - -#: etc/initialdata:365 -msgid "Notify Owner of their ticket has been approved by all approvers" -msgstr "" - -#: etc/initialdata:353 -msgid "Notify Owner of their ticket has been approved by some approver" -msgstr "" - -#: etc/initialdata:334 -msgid "Notify Owners and AdminCcs of new items pending their approval" -msgstr "" - -#: etc/initialdata:77 -msgid "Notify Requestors" -msgstr "Notificar Requerentes" - -#: etc/initialdata:111 -msgid "Notify Requestors and Ccs" -msgstr "Notificar Requerentes e CCs" - -#: etc/initialdata:106 -msgid "Notify Requestors and Ccs as Comment" -msgstr "Notificar Requerentes e CCs como comentário" - -#: etc/initialdata:120 -msgid "Notify Requestors, Ccs and AdminCcs" -msgstr "Notificar Requerentes, CCs e AdminCCs" - -#: etc/initialdata:116 -msgid "Notify Requestors, Ccs and AdminCcs as Comment" -msgstr "Notificar Requerentes, CCs e AdminCCs como comentário" - -#: lib/RT/Date.pm:453 -msgid "Nov." -msgstr "Nov" - -#: html/Search/Elements/SelectAndOr:49 -msgid "OR" -msgstr "OU" - -#: lib/RT/Record.pm:329 -msgid "Object could not be created" -msgstr "" - -#: lib/RT/Record.pm:130 -msgid "Object could not be deleted" -msgstr "" - -#: lib/RT/Record.pm:348 -msgid "Object created" -msgstr "" - -#: lib/RT/Record.pm:127 -msgid "Object deleted" -msgstr "Objecto apagado" - -#: html/Admin/CustomFields/Objects.html:74 html/Admin/Elements/ObjectCustomFields:65 -#. ($ObjectType) -#. ($LookupType) -msgid "Object of type %1 cannot take custom fields" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:970 -msgid "Object type mismatch" -msgstr "" - -#: lib/RT/Date.pm:452 -msgid "Oct." -msgstr "Oct" - -#: html/Tools/Elements/Tabs:57 -msgid "Offline" -msgstr "Offline" - -#: html/Tools/Offline.html:51 -msgid "Offline edits" -msgstr "" - -#: html/Tools/Offline.html:48 -msgid "Offline upload" -msgstr "" - -#: html/Elements/SelectDateRelation:58 -msgid "On" -msgstr "Em" - -#: lib/RT/Transaction_Overlay.pm:349 -#. ($self->CreatedAsString(), $self->CreatorObj->Name()) -msgid "On %1, %2 wrote:" -msgstr "" - -#: etc/initialdata:163 -msgid "On Comment" -msgstr "Em comentário" - -#: etc/initialdata:156 -msgid "On Correspond" -msgstr "Em Resposta" - -#: etc/initialdata:145 -msgid "On Create" -msgstr "Em Criação" - -#: etc/initialdata:184 -msgid "On Owner Change" -msgstr "Em Alteração de Dono" - -#: etc/initialdata:177 etc/upgrade/3.1.17/content:15 -msgid "On Priority Change" -msgstr "Em Alteração de Prioridade" - -#: etc/initialdata:192 -msgid "On Queue Change" -msgstr "Em Alteração de Queue" - -#: etc/initialdata:198 -msgid "On Resolve" -msgstr "Em Resolução" - -#: etc/initialdata:169 -msgid "On Status Change" -msgstr "Em Alteração de Estado" - -#: etc/initialdata:150 -msgid "On Transaction" -msgstr "Em Transacção" - -#: html/Approvals/Elements/PendingMyApproval:72 -#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter' id='CreatedAfter' />") -msgid "Only show approvals for requests created after %1" -msgstr "" - -#: html/Approvals/Elements/PendingMyApproval:70 -#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore' id='CreatedBefore' />") -msgid "Only show approvals for requests created before %1" -msgstr "" - -#: html/Admin/CustomFields/index.html:77 -msgid "Only show custom fields for:" -msgstr "" - -#: etc/initialdata:139 -msgid "Open Tickets" -msgstr "Tickets Abertos" - -#: html/Ticket/Elements/Tabs:162 -msgid "Open it" -msgstr "Abrir" - -#: html/SelfService/Elements/Tabs:78 html/SelfService/index.html:48 -msgid "Open tickets" -msgstr "Tickets Abertos" - -#: etc/initialdata:140 -msgid "Open tickets on correspondence" -msgstr "Abrir Tickets em resposta" - -#: html/Prefs/MyRT.html:72 -msgid "Options" -msgstr "Opções" - -#: html/Search/Elements/DisplayOptions:61 -msgid "Order by" -msgstr "Ordenar por" - -#: html/Admin/Users/Modify.html:144 html/User/Prefs.html:131 -msgid "Organization" -msgstr "Organização" - -#: html/Approvals/Elements/Approve:55 -#. ($approving->Id, $approving->Subject) -msgid "Originating ticket: #%1" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:643 -msgid "Outgoing email about a comment recorded" -msgstr "Registado email sobre um comentário" - -#: lib/RT/Transaction_Overlay.pm:647 -msgid "Outgoing email recorded" -msgstr "Registado email" - -#: html/Admin/Queues/Modify.html:92 -msgid "Over time, priority moves toward" -msgstr "Com o passar do tempo, a prioridade altera-se para" - -#: lib/RT/Queue_Overlay.pm:114 -msgid "Own tickets" -msgstr "Próprios tickets" - -#: lib/RT/Queue_Overlay.pm:114 -msgid "OwnTicket" -msgstr "" - -#: etc/initialdata:38 html/Elements/QuickCreate:58 html/Search/Elements/PickBasics:103 html/Ticket/Create.html:74 html/Ticket/Elements/EditBasics:63 html/Ticket/Elements/EditPeople:66 html/Ticket/Elements/EditPeople:67 html/Ticket/Elements/Reminders:131 html/Ticket/Elements/ShowPeople:50 html/Ticket/Update.html:64 lib/RT/ACE_Overlay.pm:112 lib/RT/Tickets_Overlay.pm:2195 -msgid "Owner" -msgstr "Dono" - -#: lib/RT/Ticket_Overlay.pm:539 -#. ($Owner->Name) -msgid "Owner '%1' does not have rights to own this ticket." -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:3100 -#. ($OldOwnerObj->Name, $NewOwnerObj->Name) -msgid "Owner changed from %1 to %2" -msgstr "Dono alterado de %1 para %2" - -#: lib/RT/Ticket_Overlay.pm:507 -msgid "Owner could not be set." -msgstr "Dono não pôde ser definido." - -#: lib/RT/Transaction_Overlay.pm:693 -#. ($Old->Name , $New->Name) -msgid "Owner forcibly changed from %1 to %2" -msgstr "Proprietário forçado de %1 para %2" - -#: html/Elements/TicketList:82 -#. ($Page, $pages) -msgid "Page %1 of %2" -msgstr "Página %1 de %2" - -#: html/Admin/Users/Modify.html:201 html/User/Prefs.html:98 -msgid "Pager" -msgstr "" - -#: html/Elements/EditLinks:145 html/Elements/EditLinks:77 html/Elements/ShowLinks:70 html/Ticket/Create.html:225 html/Ticket/Elements/BulkLinks:62 -msgid "Parents" -msgstr "" - -#: html/Elements/Login:97 html/User/Prefs.html:107 -msgid "Password" -msgstr "Password" - -#: html/NoAuth/Reminder.html:48 -msgid "Password Reminder" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:802 lib/RT/User_Overlay.pm:1047 -msgid "Password changed" -msgstr "Password alterada" - -#: lib/RT/User_Overlay.pm:1039 lib/RT/User_Overlay.pm:216 -#. ($RT::MinimumPasswordLength) -msgid "Password needs to be at least %1 characters long" -msgstr "A Password tem de ter pelo menos %1 caracteres" - -#: lib/RT/User_Overlay.pm:1046 -msgid "Password set" -msgstr "Password definida" - -#: html/User/Prefs.html:242 -#. (loc_fuzzy($msg)) -msgid "Password: %1" -msgstr "Password: %1" - -#: lib/RT/User_Overlay.pm:1032 -msgid "Password: Permission Denied" -msgstr "Password: Permissão Negada" - -#: html/Admin/Users/Modify.html:368 -msgid "Passwords do not match." -msgstr "As passwords não coincidem." - -#: html/User/Prefs.html:244 -msgid "Passwords do not match. Your password has not been changed" -msgstr "As passwords não coincidem. A sua password não foi alterada" - -#: html/Ticket/Elements/ShowSummary:64 html/Ticket/Elements/Tabs:121 html/Ticket/ModifyAll.html:74 -msgid "People" -msgstr "Pessoas" - -#: etc/initialdata:133 -msgid "Perform a user-defined action" -msgstr "" - -#: html/Admin/Tools/Configuration.html:96 -msgid "Perl configuration" -msgstr "" - -#: lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:582 lib/RT/ACE_Overlay.pm:592 lib/RT/ACE_Overlay.pm:602 lib/RT/ACE_Overlay.pm:667 lib/RT/Attribute_Overlay.pm:160 lib/RT/Attribute_Overlay.pm:166 lib/RT/Attribute_Overlay.pm:407 lib/RT/Attribute_Overlay.pm:416 lib/RT/Attribute_Overlay.pm:429 lib/RT/CurrentUser.pm:118 lib/RT/CurrentUser.pm:127 lib/RT/CustomField_Overlay.pm:1020 lib/RT/CustomField_Overlay.pm:1141 lib/RT/CustomField_Overlay.pm:1284 lib/RT/CustomField_Overlay.pm:174 lib/RT/CustomField_Overlay.pm:191 lib/RT/CustomField_Overlay.pm:202 lib/RT/CustomField_Overlay.pm:377 lib/RT/CustomField_Overlay.pm:406 lib/RT/CustomField_Overlay.pm:766 lib/RT/CustomField_Overlay.pm:939 lib/RT/CustomField_Overlay.pm:974 lib/RT/Group_Overlay.pm:1119 lib/RT/Group_Overlay.pm:1123 lib/RT/Group_Overlay.pm:1132 lib/RT/Group_Overlay.pm:1242 lib/RT/Group_Overlay.pm:1246 lib/RT/Group_Overlay.pm:1252 lib/RT/Group_Overlay.pm:447 lib/RT/Group_Overlay.pm:544 lib/RT/Group_Overlay.pm:622 lib/RT/Group_Overlay.pm:630 lib/RT/Group_Overlay.pm:728 lib/RT/Group_Overlay.pm:732 lib/RT/Group_Overlay.pm:738 lib/RT/Group_Overlay.pm:924 lib/RT/Group_Overlay.pm:928 lib/RT/Group_Overlay.pm:941 lib/RT/Queue_Overlay.pm:1058 lib/RT/Queue_Overlay.pm:142 lib/RT/Queue_Overlay.pm:160 lib/RT/Queue_Overlay.pm:685 lib/RT/Queue_Overlay.pm:823 lib/RT/Queue_Overlay.pm:832 lib/RT/Queue_Overlay.pm:845 lib/RT/Scrip_Overlay.pm:151 lib/RT/Scrip_Overlay.pm:162 lib/RT/Scrip_Overlay.pm:226 lib/RT/Scrip_Overlay.pm:540 lib/RT/Template_Overlay.pm:110 lib/RT/Template_Overlay.pm:279 lib/RT/Ticket_Overlay.pm:1380 lib/RT/Ticket_Overlay.pm:1515 lib/RT/Ticket_Overlay.pm:1525 lib/RT/Ticket_Overlay.pm:1539 lib/RT/Ticket_Overlay.pm:1656 lib/RT/Ticket_Overlay.pm:1976 lib/RT/Ticket_Overlay.pm:2119 lib/RT/Ticket_Overlay.pm:2289 lib/RT/Ticket_Overlay.pm:2339 lib/RT/Ticket_Overlay.pm:2519 lib/RT/Ticket_Overlay.pm:2532 lib/RT/Ticket_Overlay.pm:2608 lib/RT/Ticket_Overlay.pm:2621 lib/RT/Ticket_Overlay.pm:2742 lib/RT/Ticket_Overlay.pm:2756 lib/RT/Ticket_Overlay.pm:3007 lib/RT/Ticket_Overlay.pm:3018 lib/RT/Ticket_Overlay.pm:3024 lib/RT/Ticket_Overlay.pm:3241 lib/RT/Ticket_Overlay.pm:3245 lib/RT/Ticket_Overlay.pm:3388 lib/RT/Ticket_Overlay.pm:3516 lib/RT/Transaction_Overlay.pm:537 lib/RT/Transaction_Overlay.pm:544 lib/RT/Transaction_Overlay.pm:572 lib/RT/Transaction_Overlay.pm:579 lib/RT/User_Overlay.pm:1178 lib/RT/User_Overlay.pm:1858 lib/RT/User_Overlay.pm:371 lib/RT/User_Overlay.pm:737 lib/RT/User_Overlay.pm:776 -msgid "Permission Denied" -msgstr "Permissão Negada" - -#: lib/RT/Template_Overlay.pm:240 lib/RT/Template_Overlay.pm:249 -msgid "Permission denied" -msgstr "Permissão Negada" - -#: lib/RT/Template_Overlay.pm:379 -msgid "Permissions denied" -msgstr "Permissão Negada" - -#: html/User/Elements/Tabs:58 -msgid "Personal Groups" -msgstr "Grupos Pessoais" - -#: html/User/Groups/index.html:53 html/User/Groups/index.html:63 -msgid "Personal groups" -msgstr "Grupos Pessoais" - -#: html/User/Elements/DelegateRights:60 -msgid "Personal groups:" -msgstr "Grupos Pessoais:" - -#: html/Admin/Users/Modify.html:183 html/User/Prefs.html:83 -msgid "Phone numbers" -msgstr "Números de telefone" - -#: html/Elements/Header:95 html/Elements/Tabs:94 html/SelfService/Elements/Tabs:98 html/SelfService/Prefs.html:48 html/User/Prefs.html:48 html/User/Prefs.html:51 -msgid "Preferences" -msgstr "Preferências" - -#: html/Admin/Users/MyRT.html:122 -#. ($pane, $UserObj->Name) -msgid "Preferences %1 for user %2 ." -msgstr "Preferências %1 para utilizador %2 ." - -#: html/Prefs/MyRT.html:143 -#. ($pane) -msgid "Preferences saved for %1." -msgstr "Preferências gravadas para %1." - -#: lib/RT/Action/Generic.pm:197 -msgid "Prepare Stubbed" -msgstr "" - -#: html/Helpers/CalPopup.html:58 html/Ticket/Elements/Tabs:86 -msgid "Prev" -msgstr "" - -#: html/Elements/TicketList:105 -msgid "Previous Page" -msgstr "Página Anterior" - -#: lib/RT/ACE_Overlay.pm:159 lib/RT/ACE_Overlay.pm:241 lib/RT/ACE_Overlay.pm:571 -#. ($args{'PrincipalId'}) -msgid "Principal %1 not found." -msgstr "" - -#: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:184 html/Ticket/Elements/EditBasics:94 html/Ticket/Elements/ShowBasics:74 lib/RT/Tickets_Overlay.pm:1979 -msgid "Priority" -msgstr "Prioridade" - -#: html/Admin/Queues/Modify.html:88 -msgid "Priority starts at" -msgstr "Prioridade começa em" - -#: html/Search/Elements/EditSearches:52 -msgid "Privacy:" -msgstr "Privacidade:" - -#: etc/initialdata:25 -msgid "Privileged" -msgstr "Privilegiados" - -#: html/Admin/Users/Modify.html:346 html/User/Prefs.html:233 -#. (loc_fuzzy($msg)) -msgid "Privileged status: %1" -msgstr "" - -#: html/Admin/Users/index.html:104 -msgid "Privileged users" -msgstr "Utilizadores privilegiados" - -#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 -msgid "Pseudogroup for internal use" -msgstr "" - -#: html/Search/Build.html:123 -msgid "Query Builder" -msgstr "Construtor de Pesquisas" - -#: html/Search/Elements/Chart:103 -msgid "Query:" -msgstr "Pesquisa" - -#: html/Elements/QueueSummary:50 html/Elements/QuickCreate:56 html/Search/Elements/PickBasics:73 html/SelfService/Create.html:56 html/Ticket/Create.html:64 html/Ticket/Elements/EditBasics:59 html/Ticket/Elements/ShowBasics:78 html/Tools/Reports/CreatedByDates.html:87 html/Tools/Reports/ResolvedByDates.html:88 html/Tools/Reports/ResolvedByOwner.html:68 html/User/Elements/DelegateRights:103 lib/RT/Tickets_Overlay.pm:1806 -msgid "Queue" -msgstr "Queue" - -#: html/Admin/Queues/CustomField.html:65 html/Admin/Queues/Scrip.html:63 html/Admin/Queues/Scrips.html:71 html/Admin/Queues/Templates.html:67 -#. ($Queue) -#. ($id) -msgid "Queue %1 not found" -msgstr "Queue %1 não encontrada" - -#: html/Admin/Queues/Modify.html:66 -msgid "Queue Name" -msgstr "Nome da Queue" - -#: lib/RT/Queue_Overlay.pm:367 -msgid "Queue already exists" -msgstr "Essa Queue já existe" - -#: lib/RT/Queue_Overlay.pm:376 lib/RT/Queue_Overlay.pm:382 -msgid "Queue could not be created" -msgstr "A Queue não pôde ser criada" - -#: html/Ticket/Create.html:319 lib/t/regression/01ticket_link_searching.t:17 -msgid "Queue could not be loaded." -msgstr "" - -#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:386 lib/RT/StyleGuide.pod:807 -msgid "Queue created" -msgstr "Queue criada" - -#: html/SelfService/Display.html:128 lib/RT/CustomField_Overlay.pm:199 -msgid "Queue not found" -msgstr "Queue não encontrada" - -#: html/Admin/Elements/Tabs:61 html/Admin/index.html:74 -msgid "Queues" -msgstr "Queues" - -#: html/Elements/MyAdminQueues:48 -msgid "Queues I administer" -msgstr "" - -#: html/Elements/MySupportQueues:48 -msgid "Queues I'm an AdminCc for" -msgstr "" - -#: html/Elements/Quicksearch:49 html/Prefs/Elements/Tabs:60 html/Prefs/Quicksearch.html:72 -msgid "Quick search" -msgstr "Pesquisa rápida" - -#: html/Elements/QuickCreate:49 -msgid "Quick ticket creation" -msgstr "Criação de tickets rápida" - -#: html/Search/Results.html:83 -msgid "RSS" -msgstr "RSS" - -#: docs/design_docs/string-extraction-guide.txt:70 lib/RT/StyleGuide.pod:794 -#. ($RT::VERSION, $RT::rtname) -msgid "RT %1 for %2" -msgstr "RT %1 para %2" - -#: html/Admin/index.html:48 html/Admin/index.html:49 -msgid "RT Administration" -msgstr "Administração RT" - -#: html/Elements/Error:65 html/SelfService/Error.html:64 -msgid "RT Error" -msgstr "Erro RT" - -#: html/SelfService/Elements/Tabs:72 html/SelfService/Elements/Tabs:74 -msgid "RT Self Service" -msgstr "RT Self Service" - -#: html/Admin/Tools/Configuration.html:75 -msgid "RT Variables" -msgstr "" - -#: html/Admin/Elements/SystemTabs:73 html/Admin/Elements/UserTabs:69 html/Admin/Global/MyRT.html:48 html/Admin/Global/MyRT.html:51 html/Admin/Global/MyRT.html:59 html/Admin/Global/index.html:86 html/Admin/Users/MyRT.html:68 html/Prefs/MyRT.html:68 html/Prefs/MyRT.html:80 html/User/Elements/Tabs:67 html/index.html:1 html/index.html:77 -msgid "RT at a glance" -msgstr "RT no geral" - -#: html/Admin/Users/MyRT.html:77 -#. ($UserObj->Name) -msgid "RT at a glance for the user %1" -msgstr "\"RT no geral\" do utilizador %1" - -#: html/Admin/CustomFields/Modify.html:119 -msgid "RT can include content from another web service when showing this custom field." -msgstr "" - -#: html/Admin/CustomFields/Modify.html:108 -msgid "RT can make this custom field's values into hyperlinks to another service." -msgstr "" - -#: html/Elements/SetupSessionCookie:102 -msgid "RT couldn't store your session." -msgstr "" - -#: html/Elements/Logo:51 html/Elements/PageLayout:176 -#. ($RT::rtname) -msgid "RT for %1" -msgstr "RT para %1" - -#: html/Search/Simple.html:62 -msgid "RT will look for anything else you enter in ticket subjects." -msgstr "" - -#: html/Admin/CustomFields/Modify.html:110 html/Admin/CustomFields/Modify.html:121 -msgid "RT will replace <tt>__id__</tt> and <tt>__CustomField__</tt> with the record id and custom field value, respectively" -msgstr "" - -#: html/Admin/Users/Modify.html:81 html/User/Prefs.html:71 -msgid "Real Name" -msgstr "Nome" - -#: html/Tools/MyDay.html:76 -msgid "Record all updates" -msgstr "Gravar todas as actualizações" - -#: lib/RT/Transaction_Overlay.pm:746 -#. ($value) -msgid "Reference by %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:786 -#. ($value) -msgid "Reference by %1 deleted" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:743 -#. ($value) -msgid "Reference to %1 added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:783 -#. ($value) -msgid "Reference to %1 deleted" -msgstr "" - -#: html/Elements/EditLinks:104 html/Elements/EditLinks:157 html/Elements/ShowLinks:94 html/Ticket/Create.html:228 html/Ticket/Elements/BulkLinks:74 -msgid "Referred to by" -msgstr "Referido por" - -#: html/Elements/EditLinks:153 html/Elements/EditLinks:95 html/Elements/SelectLinkType:51 html/Elements/ShowLinks:84 html/Ticket/Create.html:227 html/Ticket/Elements/BulkLinks:70 -msgid "Refers to" -msgstr "Refere-se a" - -#: html/Elements/Refresh:59 -#. ($value/60) -msgid "Refresh this page every %1 minutes." -msgstr "Refrescar esta pagina de %1 em %1 minutos." - -#: lib/RT/Transaction_Overlay.pm:832 -#. ($ticket->Subject) -msgid "Reminder '%1' added" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:845 -#. ($ticket->Subject) -msgid "Reminder '%1' completed" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:838 -#. ($ticket->Subject) -msgid "Reminder '%1' reopened" -msgstr "" - -#: html/Ticket/Reminders.html:48 -#. ($Ticket->Id) -msgid "Reminder ticket #%1" -msgstr "" - -#: html/Elements/MyReminders:50 html/Ticket/Elements/ShowSummary:77 html/Ticket/Elements/Tabs:124 html/Ticket/Reminders.html:54 -msgid "Reminders" -msgstr "Lembretes" - -#: html/Ticket/Reminders.html:52 -#. ($Ticket->Id) -msgid "Reminders for ticket #%1" -msgstr "Notas para o pedido #%1" - -#: html/Search/Bulk.html:96 -msgid "Remove AdminCc" -msgstr "" - -#: html/Search/Bulk.html:92 -msgid "Remove Cc" -msgstr "" - -#: html/Search/Bulk.html:88 -msgid "Remove Requestor" -msgstr "" - -#: html/Ticket/Elements/ShowTransaction:182 html/Ticket/Elements/Tabs:149 -msgid "Reply" -msgstr "Responder" - -#: html/Admin/Queues/Modify.html:74 -msgid "Reply Address" -msgstr "Endereço de Resposta" - -#: html/Search/Bulk.html:131 html/Ticket/ModifyAll.html:96 html/Ticket/Update.html:80 -msgid "Reply to requestors" -msgstr "Responder aos Requerentes" - -#: lib/RT/Queue_Overlay.pm:112 -msgid "Reply to tickets" -msgstr "Resposta a tickets" - -#: lib/RT/Queue_Overlay.pm:112 -msgid "ReplyToTicket" -msgstr "" - -#: html/Tools/Elements/Tabs:61 html/Tools/Reports/index.html:48 html/Tools/Reports/index.html:49 -msgid "Reports" -msgstr "Relatórios" - -#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:113 -msgid "Requestor" -msgstr "" - -#: html/SelfService/Create.html:65 html/Ticket/Create.html:82 html/Ticket/Elements/EditPeople:71 html/Ticket/Elements/ShowPeople:54 -msgid "Requestors" -msgstr "Requerentes" - -#: html/Admin/Queues/Modify.html:98 -msgid "Requests should be due in" -msgstr "" - -#: lib/RT/Attribute_Overlay.pm:148 -#. ('Object') -msgid "Required parameter '%1' not specified" -msgstr "" - -#: html/Elements/Submit:85 -msgid "Reset" -msgstr "" - -#: html/Admin/Users/MyRT.html:62 html/Prefs/MyRT.html:62 -msgid "Reset to default" -msgstr "" - -#: html/Admin/Users/Modify.html:186 html/User/Prefs.html:86 -msgid "Residence" -msgstr "Residência" - -#: html/Ticket/Elements/Tabs:158 -msgid "Resolve" -msgstr "Resolver" - -#: html/Ticket/Update.html:158 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Resolve ticket #%1 (%2)" -msgstr "Resolver ticket #%1 (%2)" - -#: etc/initialdata:323 html/Elements/SelectDateType:51 lib/RT/Ticket_Overlay.pm:1174 -msgid "Resolved" -msgstr "Resolvido" - -#: html/Tools/Reports/Elements/Tabs:57 -msgid "Resolved by owner" -msgstr "Resolvido pelo dono" - -#: html/Tools/Reports/Elements/Tabs:61 -msgid "Resolved in date range" -msgstr "Resolvido dentro do intervalo de datas" - -#: html/Tools/Reports/ResolvedByDates.html:54 -msgid "Resolved tickets in period, grouped by owner" -msgstr "Tickets resolvidos no período, agrupados por dono" - -#: html/Tools/Reports/ResolvedByOwner.html:52 -msgid "Resolved tickets, grouped by owner" -msgstr "Tickets resolvidos, agrupados por dono" - -#: html/Elements/ListActions:48 html/Search/Elements/NewListActions:49 -msgid "Results" -msgstr "Resultados" - -#: html/Admin/Users/Modify.html:128 html/User/Prefs.html:118 -msgid "Retype Password" -msgstr "Repita Password" - -#: html/Search/Elements/EditSearches:63 -msgid "Revert" -msgstr "" - -#: lib/RT/ACE_Overlay.pm:632 -msgid "Right Delegated" -msgstr "" - -#: lib/RT/ACE_Overlay.pm:322 -msgid "Right Granted" -msgstr "Direito concedido" - -#: lib/RT/ACE_Overlay.pm:180 -msgid "Right Loaded" -msgstr "" - -#: lib/RT/ACE_Overlay.pm:697 lib/RT/ACE_Overlay.pm:718 -msgid "Right could not be revoked" -msgstr "" - -#: html/User/Delegation.html:87 -msgid "Right not found" -msgstr "Direito não encontrado" - -#: lib/RT/ACE_Overlay.pm:562 lib/RT/ACE_Overlay.pm:657 -msgid "Right not loaded." -msgstr "" - -#: lib/RT/ACE_Overlay.pm:714 -msgid "Right revoked" -msgstr "" - -#: html/Admin/Elements/UserTabs:72 -msgid "Rights" -msgstr "Direitos" - -#: html/Admin/CustomFields/UserRights.html:102 lib/RT/Interface/Web.pm:992 -#. ($object_type) -msgid "Rights could not be granted for %1" -msgstr "" - -#: html/Admin/CustomFields/UserRights.html:132 lib/RT/Interface/Web.pm:1021 -#. ($object_type) -msgid "Rights could not be revoked for %1" -msgstr "" - -#: html/Admin/Global/GroupRights.html:74 html/Admin/Queues/GroupRights.html:76 -msgid "Roles" -msgstr "Perfis" - -#: html/Prefs/MyRT.html:74 -msgid "Rows per box" -msgstr "Linhas por caixa" - -#: html/Search/Elements/DisplayOptions:95 -msgid "Rows per page" -msgstr "Linhas por página" - -#: lib/RT/Date.pm:424 -msgid "Sat." -msgstr "Sat" - -#: html/Prefs/MyRT.html:74 html/Prefs/Quicksearch.html:66 html/Prefs/Search.html:71 html/Prefs/Search.html:71 html/Search/Elements/EditSearches:72 html/Widgets/SelectionBox:222 -msgid "Save" -msgstr "Gravar" - -#: html/Admin/Groups/Modify.html:94 html/Admin/Queues/Modify.html:113 html/Admin/Queues/People.html:128 html/Admin/Users/Modify.html:243 html/Prefs/Quicksearch.html:66 html/Prefs/SearchOptions.html:65 html/SelfService/Prefs.html:60 html/Ticket/Modify.html:62 html/Ticket/ModifyAll.html:129 html/Ticket/ModifyDates.html:62 html/Ticket/ModifyLinks.html:63 html/Ticket/ModifyPeople.html:62 html/User/Groups/Modify.html:79 -msgid "Save Changes" -msgstr "Gravar Alterações" - -#: html/User/Prefs.html:183 -msgid "Save Preferences" -msgstr "Gravar Preferências" - -#: html/Ticket/Elements/PreviewScrips:133 -msgid "Save changes" -msgstr "Gravar alterações" - -#: lib/RT/SavedSearch.pm:175 -#. ($name) -msgid "Saved search %1" -msgstr "Pesquisa gravada %1" - -#: html/Search/Elements/EditSearches:102 html/Widgets/SavedSearch:154 -msgid "Saved searches" -msgstr "" - -#: html/Admin/Elements/ListGlobalScrips:62 html/Admin/Global/Scrip.html:79 html/Admin/Queues/Scrip.html:86 -#. ($scrip->Id) -#. ($id) -msgid "Scrip #%1" -msgstr "" - -#: lib/RT/Scrip_Overlay.pm:205 -msgid "Scrip Created" -msgstr "" - -#: html/Admin/Elements/EditScrip:54 -msgid "Scrip Fields" -msgstr "" - -#: html/Admin/Elements/EditScrips:111 -msgid "Scrip deleted" -msgstr "" - -#: html/Admin/Elements/QueueTabs:69 html/Admin/Elements/SystemTabs:56 html/Admin/Global/index.html:64 -msgid "Scrips" -msgstr "" - -#: html/Admin/Queues/Scrips.html:57 -msgid "Scrips which apply to all queues" -msgstr "" - -#: html/Elements/SimpleSearch:50 html/Search/Simple.html:67 -msgid "Search" -msgstr "Procurar" - -#: html/Prefs/SearchOptions.html:49 html/Prefs/SearchOptions.html:52 -msgid "Search Preferences" -msgstr "Preferências de pesquisa" - -#: lib/RT/SavedSearch.pm:117 -msgid "Search attribute load failure" -msgstr "Erro a carregar o atributo de pesquisa" - -#: html/Approvals/Elements/PendingMyApproval:61 -msgid "Search for approvals" -msgstr "Procurar nas aprovações" - -#: html/Search/Simple.html:77 -msgid "Search for tickets" -msgstr "Procurar tickets" - -#: html/Search/Simple.html:59 -msgid "Search for tickets. Enter <strong>id</strong> numbers, <strong>queues</strong> by name, Owners by <strong>username</strong> and Requestors by <strong>email address</strong>." -msgstr "" - -#: html/User/Elements/Tabs:64 -msgid "Search options" -msgstr "Opções de pesquisa" - -#: html/Search/Chart.html:58 -#. ($PrimaryGroupBy) -msgid "Search results grouped by %1" -msgstr "Resultados de pesquisa agrupados por %1" - -#: lib/RT/SavedSearch.pm:205 -#. ($msg) -msgid "Search update: %1" -msgstr "Actualização de pesquisa: %1" - -#: html/Search/Simple.html:61 -msgid "Searching the full text of every ticket can take a long time, but if you need to do it, you can search for any word in full ticket history for any word by typing <b>fulltext:<i>word</i></b>." -msgstr "Procurar com o texto completo pode levar muito tempo a realizar, mas se for realmente necessário, pode efectuar uma pesquisa por qualquer palavra no historial do pedido ao especificar <b>fulltext:<i>palavra</i></b>." - -#: bin/rt-crontool:267 -msgid "Security:" -msgstr "Segurança:" - -#: html/Elements/ShowCustomFields:102 -msgid "See also:" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:107 -msgid "See custom fields" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:108 -msgid "See exact outgoing email messages and their recipeients" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:106 -msgid "See ticket private commentary" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:105 -msgid "See ticket summaries" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:107 -msgid "SeeCustomField" -msgstr "" - -#: lib/RT/Group_Overlay.pm:171 -msgid "SeeGroup" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:93 -msgid "SeeQueue" -msgstr "" - -#: html/Admin/CustomFields/index.html:48 html/Admin/CustomFields/index.html:51 -msgid "Select a Custom Field" -msgstr "" - -#: html/Admin/Groups/index.html:80 -msgid "Select a group" -msgstr "Escolha um grupo" - -#: html/Admin/Queues/index.html:56 -msgid "Select a queue" -msgstr "Escolha uma queue" - -#: html/SelfService/CreateTicketInQueue.html:50 -msgid "Select a queue for your new ticket" -msgstr "Escolha uma queue para o novo ticket" - -#: html/Admin/Users/index.html:48 html/Admin/Users/index.html:51 html/Admin/Users/index.html:54 -msgid "Select a user" -msgstr "Escolha um utilizador" - -#: html/Admin/Elements/CustomFieldTabs:92 -msgid "Select custom field" -msgstr "" - -#: html/Admin/Global/CustomFields/index.html:72 -msgid "Select custom fields for all user groups" -msgstr "" - -#: html/Admin/Global/CustomFields/index.html:67 -msgid "Select custom fields for all users" -msgstr "" - -#: html/Admin/Global/CustomFields/index.html:78 -msgid "Select custom fields for tickets in all queues" -msgstr "Seleccioned os \"Campos Personalizados\" para os pedidos em todas as filas" - -#: html/Admin/Global/CustomFields/index.html:85 -msgid "Select custom fields for transactions on tickets in all queues" -msgstr "" - -#: html/Admin/Elements/GroupTabs:77 html/User/Elements/GroupTabs:73 -msgid "Select group" -msgstr "Escolha grupo" - -#: lib/RT/CustomField_Overlay.pm:61 -msgid "Select multiple values" -msgstr "Escolha múltiplos valores" - -#: lib/RT/CustomField_Overlay.pm:62 -msgid "Select one value" -msgstr "Escolha um valor" - -#: html/Admin/Elements/QueueTabs:94 -msgid "Select queue" -msgstr "Escolha a queue" - -#: html/Prefs/Quicksearch.html:55 -msgid "Select queues to be displayed on the \"RT at a glance\" page" -msgstr "Escolha queues para apresentação na página principal" - -#: html/Admin/Global/Scrip.html:61 html/Admin/Global/Scrips.html:59 html/Admin/Queues/Scrip.html:69 html/Admin/Queues/Scrips.html:75 -msgid "Select scrip" -msgstr "" - -#: html/Admin/Global/Template.html:77 html/Admin/Global/Templates.html:59 html/Admin/Queues/Template.html:78 html/Admin/Queues/Templates.html:70 -msgid "Select template" -msgstr "Escolha template" - -#: lib/RT/CustomField_Overlay.pm:63 -msgid "Select up to %1 values" -msgstr "" - -#: html/Admin/Elements/UserTabs:80 -msgid "Select user" -msgstr "Escolha utilizador" - -#: html/Admin/Elements/EditCustomFields:60 -msgid "Selected Custom Fields" -msgstr "" - -#: html/Admin/CustomFields/Objects.html:61 -msgid "Selected objects" -msgstr "" - -#: html/Widgets/SelectionBox:220 -msgid "Selections modified. Please save your changes" -msgstr "" - -#: etc/initialdata:121 -msgid "Send mail to all watchers" -msgstr "Enviar email para todos os watchers" - -#: etc/initialdata:117 -msgid "Send mail to all watchers as a \"comment\"" -msgstr "Enviar email para todos os watchers como um comentário" - -#: etc/initialdata:112 -msgid "Send mail to requestors and Ccs" -msgstr "" - -#: etc/initialdata:107 -msgid "Send mail to requestors and Ccs as a comment" -msgstr "" - -#: etc/initialdata:78 -msgid "Sends a message to the requestors" -msgstr "" - -#: etc/initialdata:125 etc/initialdata:129 -msgid "Sends mail to explicitly listed Ccs and Bccs" -msgstr "" - -#: etc/initialdata:94 etc/upgrade/3.1.17/content:7 -msgid "Sends mail to the Ccs" -msgstr "" - -#: etc/initialdata:90 etc/upgrade/3.1.17/content:3 -msgid "Sends mail to the Ccs as a comment" -msgstr "" - -#: etc/initialdata:102 -msgid "Sends mail to the administrative Ccs" -msgstr "" - -#: etc/initialdata:98 -msgid "Sends mail to the administrative Ccs as a comment" -msgstr "" - -#: etc/initialdata:82 etc/initialdata:86 -msgid "Sends mail to the owner" -msgstr "Enviar email para o dono" - -#: lib/RT/Date.pm:451 -msgid "Sep." -msgstr "Sep" - -#: html/Ticket/Elements/ShowTransaction:161 -msgid "Show" -msgstr "Mostrar" - -#: html/Search/Elements/EditFormat:58 -msgid "Show Columns" -msgstr "" - -#: html/Ticket/Elements/Tabs:222 -msgid "Show Results" -msgstr "Mostrar Resultados" - -#: html/Approvals/Elements/PendingMyApproval:66 -msgid "Show approved requests" -msgstr "" - -#: html/Ticket/Create.html:391 -msgid "Show basics" -msgstr "Mostrar informação básica" - -#: html/Approvals/Elements/PendingMyApproval:67 -msgid "Show denied requests" -msgstr "" - -#: html/Ticket/Create.html:394 -msgid "Show details" -msgstr "Mostrar detalhes" - -#: html/Approvals/Elements/PendingMyApproval:65 -msgid "Show pending requests" -msgstr "Mostrar pedidos pendentes" - -#: html/Approvals/Elements/PendingMyApproval:68 -msgid "Show requests awaiting other approvals" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:95 -msgid "ShowACL" -msgstr "" - -#: lib/RT/System.pm:87 -msgid "ShowConfigTab" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:108 -msgid "ShowOutgoingEmail" -msgstr "" - -#: lib/RT/Group_Overlay.pm:170 -msgid "ShowSavedSearches" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:104 -msgid "ShowScrips" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:101 -msgid "ShowTemplate" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:105 -msgid "ShowTicket" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:106 -msgid "ShowTicketComments" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:109 -msgid "Sign up as a ticket Requestor or ticket or queue Cc" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:110 -msgid "Sign up as a ticket or queue AdminCc" -msgstr "" - -#: html/Admin/Users/Modify.html:234 html/User/Prefs.html:170 -msgid "Signature" -msgstr "Assinatura" - -#: html/Elements/Tabs:71 -msgid "Simple Search" -msgstr "Pesquisa Simples" - -#: html/Admin/Elements/SelectSingleOrMultiple:49 -msgid "Single" -msgstr "" - -#: html/Search/Elements/EditFormat:77 -msgid "Size" -msgstr "Tamanho" - -#: html/Elements/Header:91 -msgid "Skip Menu" -msgstr "" - -#: html/Search/Elements/EditFormat:80 -msgid "Small" -msgstr "Pequeno" - -#: html/Admin/CustomFields/Modify.html:122 -msgid "Some browsers may only load content from the same domain as your RT server." -msgstr "" - -#: html/Admin/Elements/AddCustomFieldValue:51 html/Admin/Elements/EditCustomFieldValues:56 -msgid "Sort" -msgstr "Ordenar" - -#: html/Admin/Elements/EditScrip:80 -msgid "Stage" -msgstr "" - -#: html/Elements/SelectDateType:50 html/Ticket/Elements/EditDates:55 html/Ticket/Elements/ShowDates:58 -msgid "Started" -msgstr "Iniciado" - -#: html/Elements/SelectDateType:54 html/Ticket/Create.html:211 html/Ticket/Elements/EditDates:50 html/Ticket/Elements/ShowDates:54 -msgid "Starts" -msgstr "Começa" - -#: html/Admin/Users/Modify.html:165 html/User/Prefs.html:147 -msgid "State" -msgstr "Estado" - -#: html/Search/Elements/PickBasics:89 html/SelfService/Update.html:59 html/Ticket/Create.html:68 html/Ticket/Elements/EditBasics:55 html/Ticket/Elements/ShowBasics:54 html/Ticket/Update.html:61 html/Tools/MyDay.html:70 lib/RT/Ticket_Overlay.pm:1168 lib/RT/Tickets_Overlay.pm:1840 -msgid "Status" -msgstr "Estado" - -#: etc/initialdata:309 -msgid "Status Change" -msgstr "Alteração de Estado" - -#: lib/RT/Transaction_Overlay.pm:605 -#. ("'" . $self->loc( $self->OldValue ) . "'", "'" . $self->loc( $self->NewValue ) . "'") -msgid "Status changed from %1 to %2" -msgstr "Alteração de estado de %1 para %2" - -#: html/Ticket/Elements/Tabs:180 -msgid "Steal" -msgstr "Roubar" - -#: lib/RT/Queue_Overlay.pm:119 -msgid "Steal tickets" -msgstr "Roubar tickets" - -#: lib/RT/Queue_Overlay.pm:119 -msgid "StealTicket" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:699 -#. ($Old->Name) -msgid "Stolen from %1" -msgstr "Roubado de %1" - -#: html/Search/Elements/EditFormat:83 -msgid "Style" -msgstr "" - -#: html/Elements/QuickCreate:54 html/Elements/SelectAttachmentField:49 html/Search/Bulk.html:134 html/SelfService/Create.html:81 html/SelfService/Update.html:67 html/Ticket/Create.html:110 html/Ticket/Elements/EditBasics:50 html/Ticket/Elements/Reminders:127 html/Ticket/ModifyAll.html:102 html/Ticket/Update.html:84 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:1922 -msgid "Subject" -msgstr "Assunto" - -#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:813 lib/RT/Transaction_Overlay.pm:721 -#. ($self->Data) -msgid "Subject changed to %1" -msgstr "Assunto alterado para %1" - -#: html/Elements/Submit:77 -msgid "Submit" -msgstr "Enviar" - -#: lib/RT/Group_Overlay.pm:776 -msgid "Succeeded" -msgstr "" - -#: lib/RT/Date.pm:425 -msgid "Sun." -msgstr "Sun" - -#: lib/RT/System.pm:77 -msgid "SuperUser" -msgstr "" - -#: html/User/Elements/DelegateRights:100 -msgid "System" -msgstr "" - -#: html/Admin/Elements/ToolTabs:56 html/Admin/Tools/Configuration.html:50 -msgid "System Configuration" -msgstr "Configuração de Sistema" - -#: html/Admin/CustomFields/UserRights.html:100 html/Admin/CustomFields/UserRights.html:130 html/Admin/Elements/SelectRights:108 lib/RT/ACE_Overlay.pm:586 lib/RT/Interface/Web.pm:1020 lib/RT/Interface/Web.pm:991 -msgid "System Error" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:226 lib/RT/Transaction_Overlay.pm:232 -#. ($msg) -msgid "System Error: %1" -msgstr "" - -#: html/Admin/Tools/index.html:49 -msgid "System Tools" -msgstr "Ferramentas de Sistema" - -#: lib/RT/ACE_Overlay.pm:635 -msgid "System error. Right not delegated." -msgstr "" - -#: lib/RT/ACE_Overlay.pm:165 lib/RT/ACE_Overlay.pm:230 lib/RT/ACE_Overlay.pm:325 -msgid "System error. Right not granted." -msgstr "" - -#: html/Admin/CustomFields/GroupRights.html:60 html/Admin/Global/GroupRights.html:58 html/Admin/Groups/GroupRights.html:60 html/Admin/Queues/GroupRights.html:59 -msgid "System groups" -msgstr "Grupos de sistema" - -#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 -msgid "SystemRolegroup for internal use" -msgstr "" - -#: lib/RT/CurrentUser.pm:359 -msgid "TEST_STRING" -msgstr "" - -#: etc/initialdata:603 html/Search/Elements/EditFormat:74 html/Ticket/Elements/Tabs:172 -msgid "Take" -msgstr "Tomar" - -#: lib/RT/Queue_Overlay.pm:117 -msgid "Take tickets" -msgstr "Tomar pedidos" - -#: lib/RT/Queue_Overlay.pm:117 -msgid "TakeTicket" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:684 -msgid "Taken" -msgstr "" - -#: html/Admin/Elements/EditScrip:73 html/Tools/Offline.html:80 -msgid "Template" -msgstr "Template" - -#: html/Admin/Global/Template.html:110 html/Admin/Queues/Template.html:115 -#. ($TemplateObj->Id()) -msgid "Template #%1" -msgstr "Template $%1" - -#: html/Admin/Elements/EditTemplates:112 -msgid "Template deleted" -msgstr "Template apagado" - -#: lib/RT/Scrip_Overlay.pm:178 -msgid "Template is mandatory argument" -msgstr "" - -#: lib/RT/Scrip_Overlay.pm:182 -msgid "Template not found" -msgstr "" - -#: lib/RT/Template_Overlay.pm:346 -msgid "Template parsed" -msgstr "" - -#: lib/RT/Template_Overlay.pm:398 -msgid "Template parsing error" -msgstr "" - -#: html/Admin/Elements/QueueTabs:72 html/Admin/Elements/SystemTabs:59 html/Admin/Global/index.html:68 -msgid "Templates" -msgstr "Templates" - -#: lib/RT/CustomField_Overlay.pm:946 lib/RT/Record.pm:962 -msgid "That is already the current value" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:415 -msgid "That is not a value for this custom field" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1987 -msgid "That is the same value" -msgstr "" - -#: lib/RT/ACE_Overlay.pm:307 lib/RT/ACE_Overlay.pm:616 -msgid "That principal already has that right" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:748 -#. ($args{'Type'}) -msgid "That principal is already a %1 for this queue" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1428 -#. ($self->loc($args{'Type'})) -msgid "That principal is already a %1 for this ticket" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:856 -#. ($args{'Type'}) -msgid "That principal is not a %1 for this queue" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1550 -#. ($args{'Type'}) -msgid "That principal is not a %1 for this ticket" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1983 -msgid "That queue does not exist" -msgstr "Essa queue não existe" - -#: lib/RT/Ticket_Overlay.pm:3250 -msgid "That ticket has unresolved dependencies" -msgstr "" - -#: lib/RT/Action/CreateTickets.pm:712 lib/RT/Ticket_Overlay.pm:3053 -msgid "That user already owns that ticket" -msgstr "Esse utilizador já é dono desse ticket" - -#: lib/RT/Ticket_Overlay.pm:2996 -msgid "That user does not exist" -msgstr "Esse utilizador não existe" - -#: lib/RT/User_Overlay.pm:391 -msgid "That user is already privileged" -msgstr "" - -#: lib/RT/User_Overlay.pm:412 -msgid "That user is already unprivileged" -msgstr "" - -#: lib/RT/User_Overlay.pm:404 -msgid "That user is now privileged" -msgstr "" - -#: lib/RT/User_Overlay.pm:425 -msgid "That user is now unprivileged" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:3046 -msgid "That user may not own tickets in that queue" -msgstr "Esse utilizador não pode ser dono de tickets nessa queue" - -#: lib/RT/Link_Overlay.pm:235 -msgid "That's not a numerical id" -msgstr "" - -#: html/SelfService/Display.html:55 html/Ticket/Create.html:180 html/Ticket/Elements/ShowSummary:51 -msgid "The Basics" -msgstr "O Básico" - -#: lib/RT/ACE_Overlay.pm:114 -msgid "The CC of a ticket" -msgstr "" - -#: lib/RT/ACE_Overlay.pm:115 -msgid "The administrative CC of a ticket" -msgstr "" - -#: bin/rt-crontool:277 -msgid "The following command will find all active tickets in the queue 'general' and set their priority to 99 if they haven't been touched in 4 hours:" -msgstr "" - -#: lib/RT/Record.pm:965 -msgid "The new value has been set." -msgstr "" - -#: lib/RT/ACE_Overlay.pm:112 -msgid "The owner of a ticket" -msgstr "O dono de um ticket" - -#: lib/RT/ACE_Overlay.pm:113 -msgid "The requestor of a ticket" -msgstr "" - -#: html/Admin/Elements/EditUserComments:49 -msgid "These comments aren't generally visible to the user" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:981 -msgid "This custom field does not apply to that object" -msgstr "" - -#: html/Admin/Tools/Configuration.html:52 -msgid "This feature is only available to system administrators" -msgstr "Esta funcionalidade está disponível apenas para os administradores do sistema" - -#: html/Elements/SetupSessionCookie:106 -#. ($RT::MasonSessionDir) -msgid "This may mean that that the directory '%1' isn't writable or a database table is missing or corrupt." -msgstr "" - -#: html/Ticket/Elements/PreviewScrips:98 -msgid "This message will be sent to..." -msgstr "Esta mensagem será enviada para..." - -#: bin/rt-crontool:268 -msgid "This tool allows the user to run arbitrary perl modules from within RT." -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:327 -msgid "This transaction appears to have no content" -msgstr "Esta transacção não parece ter conteúdo" - -#: html/Ticket/Elements/ShowRequestor:72 -#. ($rows) -msgid "This user's %1 highest priority tickets" -msgstr "%1 tickets deste utilizador com maior prioridade" - -#: lib/RT/Date.pm:422 -msgid "Thu." -msgstr "Thu" - -#: html/Ticket/ModifyAll.html:48 html/Ticket/ModifyAll.html:52 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket #%1 Jumbo update: %2" -msgstr "" - -#: html/Approvals/Elements/ShowDependency:69 -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Ticket #%1: %2" -msgstr "Ticket #%1: %2" - -#: lib/RT/Action/CreateTickets.pm:1352 lib/RT/Action/CreateTickets.pm:1361 lib/RT/Action/CreateTickets.pm:607 lib/RT/Action/CreateTickets.pm:731 lib/RT/Action/CreateTickets.pm:743 -#. ($T::Tickets{$template_id}->Id) -#. ($T::Tickets{$template_id}->id) -#. ($ticket->Id) -msgid "Ticket %1" -msgstr "Ticket %1" - -#: lib/RT/Ticket_Overlay.pm:757 lib/RT/Ticket_Overlay.pm:777 -#. ($self->Id, $QueueObj->Name) -msgid "Ticket %1 created in queue '%2'" -msgstr "Ticket %1 criado na queue '%2'" - -#: html/Search/Bulk.html:380 html/Tools/MyDay.html:103 html/Tools/MyDay.html:94 html/Tools/MyDay.html:97 -#. ($Ticket->Id, $_) -#. ($id, $msg) -msgid "Ticket %1: %2" -msgstr "Ticket %1: %2" - -#: html/Admin/Elements/QueueTabs:76 -msgid "Ticket Custom Fields" -msgstr "" - -#: html/Ticket/History.html:48 html/Ticket/History.html:51 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket History # %1 %2" -msgstr "Histórico do ticket # %1 %2" - -#: etc/initialdata:324 -msgid "Ticket Resolved" -msgstr "Ticket Resolvido" - -#: html/Admin/Elements/GlobalCustomFieldTabs:71 html/Admin/Global/CustomFields/index.html:83 lib/RT/CustomField_Overlay.pm:1210 -msgid "Ticket Transactions" -msgstr "Transacções do ticket" - -#: lib/RT/Tickets_Overlay.pm:2109 -msgid "Ticket content" -msgstr "Conteúdo do ticket" - -#: lib/RT/Tickets_Overlay.pm:2158 -msgid "Ticket content type" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:605 lib/RT/Ticket_Overlay.pm:619 lib/RT/Ticket_Overlay.pm:630 lib/RT/Ticket_Overlay.pm:765 -msgid "Ticket could not be created due to an internal error" -msgstr "" - -#: html/Ticket/Create.html:247 -msgid "Ticket could not be loaded" -msgstr "" - -#: html/Ticket/Display.html:57 -msgid "Ticket metadata" -msgstr "" - -#: etc/initialdata:310 -msgid "Ticket status changed" -msgstr "Estado do ticket alterado" - -#: lib/RT/Search/FromSQL.pm:84 -#. (ref $self) -msgid "TicketSQL search module" -msgstr "" - -#: html/Admin/Elements/GlobalCustomFieldTabs:66 html/Admin/Global/CustomFields/index.html:77 html/Elements/Tabs:74 html/Search/Chart:113 html/Search/Elements/Chart:111 lib/RT/CustomField_Overlay.pm:1209 -msgid "Tickets" -msgstr "Tickets" - -#: lib/RT/Tickets_Overlay.pm:2350 -#. ($self->loc( $args{'TYPE'} ), ( $args{'BASE'} || $args{'TICKET'} )) -msgid "Tickets %1 %2" -msgstr "Tickets %1 %2" - -#: lib/RT/Tickets_Overlay.pm:2302 -#. ($self->loc( $args{'TYPE'} ), ( $args{'TARGET'} || $args{'TICKET'} )) -msgid "Tickets %1 by %2" -msgstr "Tickets %1 por %2" - -#: html/Tools/Reports/CreatedByDates.html:88 -msgid "Tickets created after" -msgstr "Tickets criados depois de" - -#: html/Tools/Reports/CreatedByDates.html:90 -msgid "Tickets created before" -msgstr "Tickets criados antes de" - -#: html/Tools/Reports/ResolvedByDates.html:89 -msgid "Tickets resolved after" -msgstr "Tickets resolvidos depois de" - -#: html/Tools/Reports/ResolvedByDates.html:91 -msgid "Tickets resolved before" -msgstr "Tickets resolvidos antes de" - -#: html/Approvals/Elements/ShowDependency:50 -msgid "Tickets which depend on this approval:" -msgstr "Pedidos que dependem desta aprovação" - -#: html/Search/Elements/PickBasics:136 html/Ticket/Create.html:186 html/Ticket/Elements/EditBasics:74 -msgid "Time Estimated" -msgstr "Tempo previsto" - -#: html/Search/Elements/PickBasics:137 html/Ticket/Create.html:199 html/Ticket/Elements/EditBasics:87 lib/RT/Tickets_Overlay.pm:2080 -msgid "Time Left" -msgstr "Tempo disponível" - -#: html/Search/Elements/PickBasics:135 html/Ticket/Create.html:192 html/Ticket/Elements/EditBasics:80 lib/RT/Tickets_Overlay.pm:2055 -msgid "Time Worked" -msgstr "Tempo de trabalho" - -#: html/Elements/Footer:53 -msgid "Time to display" -msgstr "Tempo usado para disponibilizar página" - -#: lib/RT/Ticket_Overlay.pm:1169 -msgid "TimeWorked" -msgstr "" - -#: html/Search/Elements/EditFormat:76 -msgid "Title" -msgstr "" - -#: html/Elements/Footer:64 -#. ('<a href="mailto:sales@bestpractical.com">sales@bestpractical.com</a>') -msgid "To inquire about support, training, custom development or licensing, please contact %1." -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:1172 -msgid "Told" -msgstr "" - -#: html/Admin/Elements/Tabs:70 html/Admin/index.html:90 html/Elements/Tabs:77 html/Tools/index.html:48 html/Tools/index.html:51 -msgid "Tools" -msgstr "Ferramentas" - -#: html/Search/Elements/Chart:132 -msgid "Total" -msgstr "Total" - -#: etc/initialdata:252 -msgid "Transaction" -msgstr "Transacção" - -#: lib/RT/Transaction_Overlay.pm:826 -#. ($self->Data) -msgid "Transaction %1 purged" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:185 -msgid "Transaction Created" -msgstr "Transacção Criada" - -#: html/Admin/Elements/QueueTabs:80 -msgid "Transaction Custom Fields" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:130 -msgid "Transaction->Create couldn't, as you didn't specify an object type and id" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:891 -msgid "Transactions are immutable" -msgstr "" - -#: lib/RT/Date.pm:420 -msgid "Tue." -msgstr "Tue" - -#: html/Admin/CustomFields/Modify.html:68 html/Admin/Elements/EditCustomField:67 html/Ticket/Elements/AddWatchers:56 html/Ticket/Elements/AddWatchers:67 html/Ticket/Elements/AddWatchers:77 lib/RT/Ticket_Overlay.pm:1170 lib/RT/Tickets_Overlay.pm:1894 -msgid "Type" -msgstr "Tipo" - -#: lib/RT/ScripCondition_Overlay.pm:130 -msgid "Unimplemented" -msgstr "" - -#: html/Admin/Users/Modify.html:91 -msgid "Unix login" -msgstr "" - -#: lib/RT/Attachment_Overlay.pm:291 lib/RT/Record.pm:863 -#. ($self->ContentEncoding) -#. ($ContentEncoding) -msgid "Unknown ContentEncoding %1" -msgstr "" - -#: html/Search/Build.html:461 lib/RT/Report/Tickets.pm:410 -#. ($key) -msgid "Unknown field: %1" -msgstr "" - -#: html/Elements/SelectResultsPerPage:60 -msgid "Unlimited" -msgstr "" - -#: html/Search/Elements/SelectSearchesForObjects:66 -msgid "Unnamed search" -msgstr "Procura sem nome" - -#: etc/initialdata:32 -msgid "Unprivileged" -msgstr "" - -#: html/Admin/Elements/EditCustomFields:62 -msgid "Unselected Custom Fields" -msgstr "" - -#: html/Admin/CustomFields/Objects.html:63 -msgid "Unselected objects" -msgstr "" - -#: lib/RT/Transaction_Overlay.pm:680 -msgid "Untaken" -msgstr "" - -#: html/Admin/Elements/EditScrip:130 html/Elements/RT__Ticket/ColumnMap:304 html/Search/Bulk.html:195 html/Search/Bulk.html:77 -msgid "Update" -msgstr "Actualizar" - -#: html/Ticket/Update.html:137 -msgid "Update Ticket" -msgstr "Actualizar Ticket" - -#: html/Search/Bulk.html:128 html/Ticket/ModifyAll.html:89 html/Ticket/Update.html:74 -msgid "Update Type" -msgstr "Tipo de actualização" - -#: html/Search/Bulk.html:202 html/Search/Results.html:80 -msgid "Update multiple tickets" -msgstr "Actualizar múltiplos tickets" - -#: lib/RT/Action/CreateTickets.pm:752 lib/RT/Interface/Web.pm:611 -msgid "Update not recorded." -msgstr "" - -#: html/Ticket/ModifyAll.html:86 -msgid "Update ticket" -msgstr "Actualizar ticket" - -#: html/SelfService/Update.html:114 html/SelfService/Update.html:49 -#. ($Ticket->id) -msgid "Update ticket #%1" -msgstr "Actualizar ticket #%1" - -#: html/Ticket/Update.html:160 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Update ticket #%1 (%2)" -msgstr "Actualizar ticket #%1 (%2)" - -#: lib/RT/Action/CreateTickets.pm:750 lib/RT/Interface/Web.pm:610 -msgid "Update type was neither correspondence nor comment." -msgstr "" - -#: html/Elements/SelectDateType:56 html/Ticket/Elements/ShowDates:74 lib/RT/CustomField_Overlay.pm:1287 lib/RT/Ticket_Overlay.pm:1173 -msgid "Updated" -msgstr "Actualizado" - -#: html/Tools/Offline.html:95 -msgid "Upload" -msgstr "Carregar" - -#: lib/RT/CustomField_Overlay.pm:86 -msgid "Upload multiple files" -msgstr "Carregar múltiplos ficheiros" - -#: lib/RT/CustomField_Overlay.pm:81 -msgid "Upload multiple images" -msgstr "Carregar múltiplas imagens" - -#: lib/RT/CustomField_Overlay.pm:87 -msgid "Upload one file" -msgstr "Carregar um ficheiro" - -#: lib/RT/CustomField_Overlay.pm:82 -msgid "Upload one image" -msgstr "Carregar uma imagem" - -#: lib/RT/CustomField_Overlay.pm:88 -msgid "Upload up to %1 files" -msgstr "Carregar até %1 ficheiros" - -#: lib/RT/CustomField_Overlay.pm:83 -msgid "Upload up to %1 images" -msgstr "Carregar até %1 imagens" - -#: html/Tools/Offline.html:95 -msgid "Upload your changes" -msgstr "" - -#: html/Admin/index.html:92 -msgid "Use other RT administrative tools" -msgstr "Utilizar outras ferramentas administrativas do RT" - -#: lib/RT/Ticket_Overlay.pm:508 -#. ($args{'Owner'}) -msgid "User '%1' could not be found." -msgstr "Utilizador '%1' não encontrado" - -#: etc/initialdata:132 etc/initialdata:206 -msgid "User Defined" -msgstr "" - -#: html/Admin/Elements/EditScrip:95 -msgid "User Defined conditions and actions" -msgstr "" - -#: html/Admin/Elements/CustomFieldTabs:74 html/Admin/Elements/GroupTabs:70 html/Admin/Elements/QueueTabs:87 html/Admin/Elements/SystemTabs:70 html/Admin/Global/index.html:82 -msgid "User Rights" -msgstr "Direitos de utilizador" - -#: lib/RT/Interface/Web.pm:1392 -#. ($cf->Name, ref $args{'Object'}, $args{'Object'}->id) -msgid "User asked for an unknown update type for custom field %1 for %2 object #%3" -msgstr "" - -#: html/Admin/Users/Modify.html:305 -#. ($msg) -msgid "User could not be created: %1" -msgstr "Utilizador não criado: %1" - -#: lib/RT/User_Overlay.pm:332 -msgid "User created" -msgstr "Utilizador criado" - -#: html/Admin/CustomFields/GroupRights.html:76 html/Admin/Global/GroupRights.html:90 html/Admin/Groups/GroupRights.html:77 html/Admin/Queues/GroupRights.html:92 -msgid "User defined groups" -msgstr "" - -#: lib/RT/User_Overlay.pm:594 lib/RT/User_Overlay.pm:614 -msgid "User loaded" -msgstr "Utilizador carregado" - -#: html/Admin/Groups/index.html:105 -msgid "User-defined groups" -msgstr "Grupos definidos por utilizadores" - -#: html/Admin/Users/Modify.html:71 html/Elements/Login:92 html/Ticket/Elements/AddWatchers:58 -msgid "Username" -msgstr "Username" - -#: html/Admin/Elements/GlobalCustomFieldTabs:57 html/Admin/Elements/SelectNewGroupMembers:49 html/Admin/Elements/Tabs:55 html/Admin/Global/CustomFields/index.html:66 html/Admin/Groups/Members.html:78 html/Admin/Queues/People.html:91 html/Admin/index.html:64 html/User/Groups/Members.html:81 lib/RT/CustomField_Overlay.pm:1211 -msgid "Users" -msgstr "Utilizadores" - -#: html/Admin/Users/index.html:87 -msgid "Users matching search criteria" -msgstr "Utilizadores que verificam o critério de pesquisa" - -#: bin/rt-crontool:136 -#. ($transaction->id) -msgid "Using transaction #%1..." -msgstr "" - -#: lib/RT/Tickets_Overlay_SQL.pm:530 -msgid "Valid Query" -msgstr "Query válida" - -#: html/Admin/CustomFields/Modify.html:82 -msgid "Validation" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:132 html/Admin/Elements/EditCustomField:80 -msgid "Values" -msgstr "Valores" - -#: lib/RT/Queue_Overlay.pm:109 -msgid "Watch" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:110 -msgid "WatchAsAdminCc" -msgstr "" - -#: html/Admin/Elements/QueueTabs:65 -msgid "Watchers" -msgstr "" - -#: lib/RT/Date.pm:421 -msgid "Wed." -msgstr "Wed" - -#: html/Tools/MyDay.html:80 -msgid "What I did today" -msgstr "" - -#: etc/initialdata:521 -msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" -msgstr "" - -#: etc/initialdata:485 -msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" -msgstr "" - -#: etc/initialdata:146 -msgid "When a ticket is created" -msgstr "Quando um ticket é criado" - -#: etc/initialdata:418 -msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" -msgstr "" - -#: etc/initialdata:151 -msgid "When anything happens" -msgstr "Quando algo acontece" - -#: etc/initialdata:199 -msgid "Whenever a ticket is resolved" -msgstr "Quando um ticket é resolvido" - -#: etc/initialdata:185 -msgid "Whenever a ticket's owner changes" -msgstr "" - -#: etc/initialdata:178 etc/upgrade/3.1.17/content:16 -msgid "Whenever a ticket's priority changes" -msgstr "" - -#: etc/initialdata:193 -msgid "Whenever a ticket's queue changes" -msgstr "" - -#: etc/initialdata:170 -msgid "Whenever a ticket's status changes" -msgstr "" - -#: etc/initialdata:207 -msgid "Whenever a user-defined condition occurs" -msgstr "" - -#: etc/initialdata:164 -msgid "Whenever comments come in" -msgstr "" - -#: etc/initialdata:157 -msgid "Whenever correspondence comes in" -msgstr "" - -#: html/Admin/Users/Modify.html:191 html/User/Prefs.html:90 -msgid "Work" -msgstr "" - -#: html/Search/Results.html:84 -msgid "Work offline" -msgstr "" - -#: html/Ticket/Elements/ShowBasics:65 html/Ticket/Update.html:66 html/Tools/MyDay.html:65 -msgid "Worked" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:3157 -msgid "You already own this ticket" -msgstr "Este ticket já é seu" - -#: html/autohandler:216 html/autohandler:224 -msgid "You are not an authorized user" -msgstr "" - -#: html/Prefs/Search.html:58 -msgid "You can also edit the predefined search itself" -msgstr "Também pode editar a própria procura personalizada" - -#: lib/RT/Ticket_Overlay.pm:3039 -msgid "You can only reassign tickets that you own or that are unowned" -msgstr "Só pode atribuir um pedido que seja seu ou que não proprietário" - -#: lib/RT/Ticket_Overlay.pm:3035 -msgid "You can only take tickets that are unowned" -msgstr "Só pode responsabilizar-se por tickets que não têm dono" - -#: docs/design_docs/string-extraction-guide.txt:47 lib/RT/StyleGuide.pod:778 -#. ($num, $queue) -msgid "You found %1 tickets in queue %2" -msgstr "Encontrou %1 tickets na queue %2" - -#: html/NoAuth/Logout.html:54 -msgid "You have been logged out of RT." -msgstr "Saiu do RT" - -#: html/SelfService/Display.html:135 -msgid "You have no permission to create tickets in that queue." -msgstr "Não tem permissão para criar tickets nessa queue." - -#: lib/RT/Ticket_Overlay.pm:1996 -msgid "You may not create requests in that queue." -msgstr "Não pode criar pedidos nessa queue" - -#: html/NoAuth/Logout.html:58 -msgid "You're welcome to login again" -msgstr "" - -#: etc/initialdata:502 etc/initialdata:504 -#. (# loc $self->TransactionObj->CreatorObj->Name,) -msgid "Your request has been approved by %1. Other approvals may still be pending." -msgstr "" - -#: etc/initialdata:540 -msgid "Your request has been approved." -msgstr "" - -#: etc/initialdata:445 -msgid "Your request was rejected." -msgstr "" - -#: html/autohandler:253 -msgid "Your username or password is incorrect" -msgstr "Login ou password errados" - -#: html/Admin/Users/Modify.html:171 html/User/Prefs.html:151 -msgid "Zip" -msgstr "Código Postal" - -#: html/Search/Elements/DisplayOptions:67 -msgid "[none]" -msgstr "" - -#: lib/RT/System.pm:89 -msgid "allow creation of saved searches" -msgstr "" - -#: lib/RT/System.pm:88 -msgid "allow loading of saved searches" -msgstr "" - -#: html/User/Elements/DelegateRights:82 -#. ($right->PrincipalObj->Object->SelfDescription) -msgid "as granted to %1" -msgstr "" - -#: html/Search/Results.html:85 -msgid "chart" -msgstr "" - -#: html/SelfService/Closed.html:51 -msgid "closed" -msgstr "fechado" - -#: html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectMatch:57 -msgid "contains" -msgstr "contém" - -#: lib/RT/Report/Tickets.pm:347 -msgid "current: $current, want $want, Error near ->$val<- expecting a $token in '$string'\\n" -msgstr "" - -#: html/Admin/Queues/Modify.html:100 lib/RT/Date.pm:348 -msgid "days" -msgstr "dias" - -#: lib/RT/Queue_Overlay.pm:89 -msgid "deleted" -msgstr "apagado" - -#: html/Search/Elements/PickBasics:63 -msgid "does not match" -msgstr "" - -#: html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectMatch:58 -msgid "doesn't contain" -msgstr "não contém" - -#: html/Elements/SelectEqualityOperator:61 -msgid "equal to" -msgstr "igual a" - -#: html/Search/Build.html:553 -msgid "error: can't move down" -msgstr "" - -#: html/Search/Build.html:575 -msgid "error: can't move left" -msgstr "" - -#: html/Search/Build.html:534 -msgid "error: can't move up" -msgstr "" - -#: html/Search/Build.html:618 -msgid "error: nothing to delete" -msgstr "" - -#: html/Search/Build.html:539 html/Search/Build.html:558 html/Search/Build.html:580 html/Search/Build.html:609 -msgid "error: nothing to move" -msgstr "" - -#: html/Search/Build.html:636 -msgid "error: nothing to toggle" -msgstr "" - -#: html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectEqualityOperator:61 -msgid "greater than" -msgstr "maior do que" - -#: lib/RT/Group_Overlay.pm:216 -#. ($self->Name) -msgid "group '%1'" -msgstr "grupo '%1'" - -#: html/Search/Results.html:90 -#. ($m->scomp('Elements/SelectGroupBy', Name => 'PrimaryGroupBy', Query => $Query)) -msgid "grouped by %1" -msgstr "agrupado por %1" - -#: lib/RT/Date.pm:344 -msgid "hours" -msgstr "horas" - -#: html/Search/Elements/PickBasics:50 -msgid "id" -msgstr "id" - -#: html/Elements/SelectBoolean:55 html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectMatch:59 html/Search/Elements/PickBasics:164 html/Search/Elements/PickBasics:76 html/Search/Elements/PickBasics:92 html/Search/Elements/PickCFs:55 -msgid "is" -msgstr "é" - -#: html/Elements/SelectBoolean:59 html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectMatch:60 html/Search/Elements/PickBasics:165 html/Search/Elements/PickBasics:77 html/Search/Elements/PickBasics:93 html/Search/Elements/PickCFs:56 -msgid "isn't" -msgstr "não é" - -#: html/Elements/SelectCustomFieldOperator:61 html/Elements/SelectEqualityOperator:61 -msgid "less than" -msgstr "menos do que" - -#: html/Search/Elements/PickBasics:62 -msgid "matches" -msgstr "coincide" - -#: lib/RT/Date.pm:340 -msgid "min" -msgstr "" - -#: html/Tools/MyDay.html:65 -msgid "minutes" -msgstr "minutos" - -#: lib/RT/Date.pm:356 -msgid "months" -msgstr "meses" - -#: lib/RT/Queue_Overlay.pm:84 -msgid "new" -msgstr "novo" - -#: html/Admin/Elements/PickCustomFields:66 html/Admin/Elements/PickObjects:67 -msgid "no name" -msgstr "sem nome" - -#: html/Admin/Elements/EditScrips:66 -msgid "no value" -msgstr "sem valor" - -#: html/Admin/Elements/EditQueueWatchers:50 html/Ticket/Elements/EditWatchers:51 -msgid "none" -msgstr "nenhum" - -#: html/Elements/SelectEqualityOperator:61 -msgid "not equal to" -msgstr "diferente de" - -#: html/SelfService/Elements/MyRequests:78 lib/RT/Queue_Overlay.pm:85 -msgid "open" -msgstr "aberto" - -#: lib/RT/Group_Overlay.pm:221 -#. ($self->Name, $user->Name) -msgid "personal group '%1' for user '%2'" -msgstr "" - -#: lib/RT/Group_Overlay.pm:229 -#. ($queue->Name, $self->Type) -msgid "queue %1 %2" -msgstr "queue %1 %2" - -#: lib/RT/Queue_Overlay.pm:88 -msgid "rejected" -msgstr "rejeitado" - -#: lib/RT/Queue_Overlay.pm:87 -msgid "resolved" -msgstr "resolvido" - -#: lib/RT/Date.pm:336 -msgid "sec" -msgstr "" - -#: lib/RT/System.pm:87 -msgid "show Configuration tab" -msgstr "" - -#: html/Search/Results.html:82 -msgid "spreadsheet" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:86 -msgid "stalled" -msgstr "pendente" - -#: html/Search/Results.html:91 -#. ($m->scomp('Elements/SelectChartType', Name => 'ChartStyle')) -msgid "style: %1" -msgstr "" - -#: html/Prefs/MyRT.html:95 -msgid "summary rows" -msgstr "linhas de sumário" - -#: lib/RT/Group_Overlay.pm:224 -#. ($self->Type) -msgid "system %1" -msgstr "" - -#: lib/RT/Group_Overlay.pm:235 -#. ($self->Type) -msgid "system group '%1'" -msgstr "" - -#: html/Elements/Error:66 html/SelfService/Error.html:65 -msgid "the calling component did not specify why" -msgstr "" - -#: lib/RT/Group_Overlay.pm:232 -#. ($self->Instance, $self->Type) -msgid "ticket #%1 %2" -msgstr "ticket #%1 %2" - -#: lib/RT/Group_Overlay.pm:238 -#. ($self->Id) -msgid "undescribed group %1" -msgstr "grupo indefinido %1" - -#: lib/RT/Group_Overlay.pm:213 -#. ($user->Object->Name) -msgid "user %1" -msgstr "utilizador %1" - -#: lib/RT/Date.pm:352 -msgid "weeks" -msgstr "semanas" - -#: lib/RT/Date.pm:360 -msgid "years" -msgstr "anos" - diff --git a/rt/lib/RT/I18N/zh_cn.po b/rt/lib/RT/I18N/zh_cn.po deleted file mode 100644 index 23dae6f0b..000000000 --- a/rt/lib/RT/I18N/zh_cn.po +++ /dev/null @@ -1,8423 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: RT 3.6.x\n" -"PO-Revision-Date: 2007-12-09 13:05+0800\n" -"Last-Translator: Audrey Tang <cpan@audreyt.org>\n" -"Language-Team: rt-devel <rt-devel@lists.bestpractical.com>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: html/Widgets/SavedSearch:70 -#. ($self->{CurrentSearch}{Object}->Description) -msgid " %1 deleted." -msgstr " 已删除 %1。" - -#: html/Widgets/SavedSearch:47 -#. ($self->{CurrentSearch}{Description}, $args->{Description}) -msgid " %1 renamed to %2." -msgstr " %1 已更名为 %2。" - -#: html/Widgets/SavedSearch:60 -#. ($args->{Description}) -msgid " %1 saved." -msgstr " %1 已储存。" - -#: NOT FOUND IN SOURCE -msgid "#" -msgstr "#" - -#: NOT FOUND IN SOURCE -msgid "#%1" -msgstr "#%1" - -#: html/Approvals/Elements/Approve:48 html/Approvals/Elements/ShowDependency:71 html/SelfService/Display.html:46 html/Ticket/Display.html:47 html/Ticket/Display.html:51 -#. ($Ticket->id, $Ticket->Subject) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -#. ($ticket->Id, $ticket->Subject) -#. ($TicketObj->Id, $TicketObj->Subject) -msgid "#%1: %2" -msgstr "#%1: %2" - -#: html/Elements/ShowSearch:105 -msgid "$1" -msgstr "$1" - -#: lib/RT/Record.pm:940 -#. ($label) -msgid "$prefix %1" -msgstr "$prefix %1" - -#: NOT FOUND IN SOURCE -msgid "%*(%1,group ticket)" -msgstr "%*(%1) 件参与的申请单" - -#: NOT FOUND IN SOURCE -msgid "%*(%1,ticket) due" -msgstr "%*(%1) 件限期完成的申请单" - -#: NOT FOUND IN SOURCE -msgid "%*(%1,unresolved ticket)" -msgstr "%*(%1) 件尚未解决的申请单" - -#: lib/RT/URI/fsck_com_rt.pm:256 -#. ($self->ObjectType, $self->Object->Id) -msgid "%1 #%2" -msgstr "%1 #%2" - -#: lib/RT/Date.pm:365 -#. ($s, $time_unit) -msgid "%1 %2" -msgstr "%1 %2" - -#: NOT FOUND IN SOURCE -msgid "%1 %2 %3" -msgstr "%1 %2 %3" - -#: lib/RT/Date.pm:401 -#. ($self->GetWeekday($wday), $self->GetMonth($mon), map {sprintf "%02d", $_} ($mday, $hour, $min, $sec), ($year+1900)) -msgid "%1 %2 %3 %4:%5:%6 %7" -msgstr "%7-%2-%3 %4:%5:%6 %1" - -#: lib/RT/Record.pm:1685 lib/RT/Transaction_Overlay.pm:647 lib/RT/Transaction_Overlay.pm:690 -#. ($cf->Name, $new_value->Content) -#. ($field, $self->NewValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 added" -msgstr "%2 已新增为 %1" - -#: lib/RT/Date.pm:362 -#. ($s, $time_unit) -msgid "%1 %2 ago" -msgstr "%1 %2 之前" - -#: lib/RT/Record.pm:1692 lib/RT/Transaction_Overlay.pm:654 -#. ($cf->Name, $old_content, $new_value->Content) -#. ($field, $self->OldValue, $self->NewValue) -msgid "%1 %2 changed to %3" -msgstr "%1 已从 %2 改为 %3" - -#: lib/RT/Record.pm:1689 lib/RT/Transaction_Overlay.pm:650 lib/RT/Transaction_Overlay.pm:696 -#. ($cf->Name, $old_value->Content) -#. ($field, $self->OldValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 deleted" -msgstr "%2 已自 %1 删除" - -#: NOT FOUND IN SOURCE -msgid "%1 %2 of group %3" -msgstr "%3 群组的 %1 %2" - -#: html/Admin/Elements/EditScrips:65 html/Admin/Elements/ListGlobalScrips:63 html/Ticket/Elements/PreviewScrips:103 -#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) -msgid "%1 %2 with template %3" -msgstr "条件:%1 | 动作:%2 | 模板:%3" - -#: NOT FOUND IN SOURCE -msgid "%1 (%2) %3 this ticket\\n" -msgstr "%1 (%2) %3 这份申请单\\n" - -#: html/Ticket/Elements/ShowAttachments:72 -#. ($rev->CreatedAsString, $size, $rev->CreatorObj->Name) -msgid "%1 (%2) by %3" -msgstr "%1 (%2) - %3" - -#: html/SelfService/Update.html:60 html/Ticket/Elements/EditBasics:108 html/Ticket/Update.html:61 html/Ticket/Update.html:63 html/Tools/MyDay.html:66 -#. (loc($DefaultStatus)) -#. (loc($Ticket->Status())) -#. (loc($TicketObj->Status)) -#. ($TicketObj->OwnerObj->Name()) -msgid "%1 (Unchanged)" -msgstr "%1 (未更改)" - -#: NOT FOUND IN SOURCE -msgid "%1 - %2 shown" -msgstr "显示第 %1 - %2 笔" - -#: bin/rt-crontool:237 bin/rt-crontool:244 bin/rt-crontool:250 -#. ("--search-argument", "--search") -#. ("--condition-argument", "--condition") -#. ("--action-argument", "--action") -msgid "%1 - An argument to pass to %2" -msgstr "%1 - 传递给 %2 的一个参数" - -#: bin/rt-crontool:262 -#. ("--verbose") -msgid "%1 - Output status updates to STDOUT" -msgstr "%1 - 将更新状态输出到 STDOUT" - -#: bin/rt-crontool:253 -#. ("--template-id") -msgid "%1 - Specify id of the template you want to use" -msgstr "%1 - 指定欲使用的模板编号" - -#: bin/rt-crontool:256 -#. ("--transaction") -msgid "%1 - Specify if you want to use either 'first' or 'last' tarnsaction" -msgstr "%1 - 指定欲使用的更动为 'first' (第一项) 或 'last' (最后一项)" - -#: bin/rt-crontool:247 -#. ("--action") -msgid "%1 - Specify the action module you want to use" -msgstr "%1 - 指定欲使用的动作模块" - -#: bin/rt-crontool:241 -#. ("--condition") -msgid "%1 - Specify the condition module you want to use" -msgstr "%1 - 指定欲使用的条件模块" - -#: bin/rt-crontool:234 -#. ("--search") -msgid "%1 - Specify the search module you want to use" -msgstr "%1 - 指定欲使用的查询模块" - -#: bin/rt-crontool:259 -#. ("--transaction-type") -msgid "%1 - Specify the type of a transaction you want to use" -msgstr "%1 - 指定欲使用的更动类别" - -#: html/Elements/Footer:56 -#. ('»|«', $RT::VERSION, '2006', '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',) -msgid "%1 RT %2 Copyright 1996-%3 %4." -msgstr "%1 RT %2 版,%4 版权所有,1996-%3。" - -#: lib/RT/ScripAction_Overlay.pm:150 -#. ($self->Id) -msgid "%1 ScripAction loaded" -msgstr "加载手续 %1" - -#: NOT FOUND IN SOURCE -msgid "%1 Total" -msgstr "共 %1 笔" - -#: lib/RT/Record.pm:1722 -#. ($args{'Value'}, $cf->Name) -msgid "%1 added as a value for %2" -msgstr "新增 %1 作为 %2 的值" - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on" -msgstr "别名 %1 需要可用的申请单编号" - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on " -msgstr "别名 %1 需要可用的申请单编号 " - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on (from %2) %3" -msgstr "别名 %1 需要可用的申请单编号以处理 %3(出自 %2)" - -#: lib/RT/Link_Overlay.pm:144 lib/RT/Link_Overlay.pm:151 -#. ($args{'Base'}) -#. ($args{'Target'}) -msgid "%1 appears to be a local object, but can't be found in the database" -msgstr "%1 看来是个本地对象,却不在数据库里" - -#: html/Ticket/Elements/ShowDates:73 lib/RT/Transaction_Overlay.pm:531 -#. ($self->BriefDescription , $self->CreatorObj->Name) -#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) -msgid "%1 by %2" -msgstr "%1 (%2)" - -#: lib/RT/Transaction_Overlay.pm:788 lib/RT/Transaction_Overlay.pm:797 lib/RT/Transaction_Overlay.pm:800 -#. ($self->Field , $q1->Name , $q2->Name) -#. ($self->Field, $t2->AsString, $t1->AsString) -#. ($self->Field, ($self->OldValue? "'".$self->OldValue ."'" : $self->loc("(no value)")) , "'". $self->NewValue."'") -msgid "%1 changed from %2 to %3" -msgstr "%1 的值从 %2 改为 %3" - -#: html/Search/Build.html:213 -#. ($Description) -msgid "%1 copy" -msgstr "%1 复制" - -#: lib/RT/Record.pm:944 -msgid "%1 could not be set to %2." -msgstr "无法将 %1 设定为 %2。" - -#: NOT FOUND IN SOURCE -msgid "%1 couldn't init a transaction (%2)\\n" -msgstr "%1 无法初始更新 (%2)\\n" - -#: lib/RT/Ticket_Overlay.pm:2787 -#. ($self) -msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." -msgstr "%1 无法将现况设成已解决。RT 数据库内容可能不一致。" - -#: lib/RT/Transaction_Overlay.pm:571 -#. ($obj_type) -msgid "%1 created" -msgstr "已建立 %1" - -#: lib/RT/Transaction_Overlay.pm:576 -#. ($obj_type) -msgid "%1 deleted" -msgstr "已删除 %1" - -#: etc/initialdata:593 -msgid "%1 highest priority tickets I own" -msgstr "前 %1 份待处理申请单" - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets I own..." -msgstr "前 %1 份待处理申请单..." - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets I requested..." -msgstr "前 %1 份送出的申请单..." - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets pending my approval..." -msgstr "前 %1 份待签核申请单..." - -#: bin/rt-crontool:229 -#. ($0) -msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." -msgstr "%1 是从外部排程程序(如 cron)来对申请单进行操作的工具。" - -#: lib/RT/Queue_Overlay.pm:863 -#. ($principal->Object->Name, $args{'Type'}) -msgid "%1 is no longer a %2 for this queue." -msgstr "%1 已不再是此表单的 %2。" - -#: NOT FOUND IN SOURCE -msgid "%1 is no longer a %2 for this ticket." -msgstr "%1 已不再是此申请单的 %2。" - -#: NOT FOUND IN SOURCE -msgid "%1 is no longer a value for custom field %2" -msgstr "%1 已不再是自订字段 %2 的值。" - -#: NOT FOUND IN SOURCE -msgid "%1 isn't a valid Queue id." -msgstr "%1 不是一个合法的表单编号。" - -#: html/Ticket/Elements/ShowTime:47 html/Ticket/Elements/ShowTime:49 -#. ($minutes) -msgid "%1 min" -msgstr "%1 分钟" - -#: etc/initialdata:601 -msgid "%1 newest unowned tickets" -msgstr "前 %1 份待认领的申请单" - -#: NOT FOUND IN SOURCE -msgid "%1 not shown" -msgstr "没有显示 %1" - -#: lib/RT/CustomField_Overlay.pm:893 -msgid "%1 objects" -msgstr "%1 对象" - -#: NOT FOUND IN SOURCE -msgid "%1 recent tickets I own..." -msgstr "最新 %1 份待处理申请单..." - -#: NOT FOUND IN SOURCE -msgid "%1 recent tickets I requested..." -msgstr "最新 %1 份送出的申请单..." - -#: NOT FOUND IN SOURCE -msgid "%1 result(s) found" -msgstr "找到 %1 项结果" - -#: html/User/Elements/DelegateRights:97 -#. (loc($ObjectType =~ /^RT::(.*)$/)) -msgid "%1 rights" -msgstr "%1权限" - -#: NOT FOUND IN SOURCE -msgid "%1 succeeded\\n" -msgstr "%1 完成\\n" - -#: NOT FOUND IN SOURCE -msgid "%1 type unknown for $MessageId" -msgstr "不知道 $MessageID 的 %1 类别" - -#: NOT FOUND IN SOURCE -msgid "%1 type unknown for %2" -msgstr "不知道 %2 的 %1 类别" - -#: NOT FOUND IN SOURCE -msgid "%1 was created without a CurrentUser\\n" -msgstr "%1 新增时未指定现行使用者" - -#: lib/RT/Action/ResolveMembers.pm:63 -#. (ref $self) -msgid "%1 will resolve all members of a resolved group ticket." -msgstr "%1 会解决在已解决群组里成员的申请单。" - -#: NOT FOUND IN SOURCE -msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." -msgstr "如果 %1 起始申请单依赖于某个链接,或是某个链接的成员,它将会被延宕。" - -#: lib/RT/CustomField_Overlay.pm:894 -msgid "%1's %2 objects" -msgstr "%1 内的 %2 对象" - -#: lib/RT/CustomField_Overlay.pm:895 -msgid "%1's %2's %3 objects" -msgstr "%1 内的 %2 的 %3 对象" - -#: html/Search/Elements/SearchPrivacy:52 html/Search/Elements/SelectSearchObject:55 html/Search/Elements/SelectSearchesForObjects:57 -#. ($object->Name) -#. ($Object->Name) -msgid "%1's saved searches" -msgstr "%1 的预存查询" - -#: lib/RT/Transaction_Overlay.pm:481 -#. ($self) -msgid "%1: no attachment specified" -msgstr "%1:未指定附件" - -#: html/Ticket/Elements/ShowTransactionAttachments:78 -#. ($size) -msgid "%1b" -msgstr "%1 字节" - -#: html/Ticket/Elements/ShowTransactionAttachments:75 -#. (int( $size / 102.4 ) / 10) -msgid "%1k" -msgstr "%1k 字节" - -#: html/Ticket/Elements/ShowTime:49 -#. (sprintf("%.1f",$minutes / 60)) -msgid "%quant(%1,hour)" -msgstr "%1 小时" - -#: NOT FOUND IN SOURCE -msgid "%quant(%1,result) found" -msgstr "找到 %1 项结果" - -#: lib/RT/Ticket_Overlay.pm:1142 -#. ($args{'Status'}) -msgid "'%1' is an invalid value for status" -msgstr "'%1' 不是一个合法的状态值" - -#: NOT FOUND IN SOURCE -msgid "'%1' not a recognized action. " -msgstr "'%1'为无法辨识的动作。 " - -#: NOT FOUND IN SOURCE -msgid "(Check box to delete group member)" -msgstr "(点选欲删除的成员)" - -#: NOT FOUND IN SOURCE -msgid "(Check box to delete scrip)" -msgstr "(点选欲删除的手续)" - -#: html/Admin/Elements/EditCustomFieldValues:50 html/Admin/Elements/EditQueueWatchers:50 html/Admin/Elements/EditScrips:56 html/Admin/Elements/EditTemplates:57 html/Admin/Groups/Members.html:73 html/Elements/EditLinks:54 html/Ticket/Elements/EditPeople:67 html/User/Groups/Members.html:76 -msgid "(Check box to delete)" -msgstr "(点选欲删除的项目)" - -#: NOT FOUND IN SOURCE -msgid "(Check boxes to delete)" -msgstr "(点选欲删除的项目)" - -#: html/Ticket/Elements/PreviewScrips:99 -msgid "(Check boxes to disable notifications to the listed recipients)" -msgstr "(点选欲停用通知的收件人)" - -#: html/Ticket/Elements/PreviewScrips:123 -msgid "(Check boxes to enable notifications to the listed recipients)" -msgstr "(点选欲启用通知的收件人)" - -#: html/Ticket/Create.html:218 -msgid "(Enter ticket ids or URLs, separated with spaces)" -msgstr "(键入申请单编号或网址,以空白分隔)" - -#: html/Admin/Queues/Modify.html:75 html/Admin/Queues/Modify.html:81 -#. ($RT::CorrespondAddress) -#. ($RT::CommentAddress) -msgid "(If left blank, will default to %1)" -msgstr "(如果留白, 则预设为 %1)" - -#: NOT FOUND IN SOURCE -msgid "(No Value)" -msgstr "(没有值)" - -#: html/Admin/Elements/EditCustomFields:74 html/Admin/Elements/ListGlobalCustomFields:53 -msgid "(No custom fields)" -msgstr "(没有自订字段)" - -#: html/Admin/Groups/Members.html:71 html/User/Groups/Members.html:74 -msgid "(No members)" -msgstr "(没有成员)" - -#: html/Admin/Elements/EditScrips:53 html/Admin/Elements/ListGlobalScrips:48 -msgid "(No scrips)" -msgstr "(没有手续)" - -#: html/Admin/Elements/EditTemplates:52 -msgid "(No templates)" -msgstr "没有模板" - -#: NOT FOUND IN SOURCE -msgid "(No workflows)" -msgstr "没有流程" - -#: html/Admin/Elements/PickCustomFields:47 html/Admin/Elements/PickObjects:47 -msgid "(None)" -msgstr "(无)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)" -msgstr "(送出本份更新的密件副本给名单上以逗号隔开的电子邮件地址。这<b>不会</b>更改后续的收件者名单。)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will recieve future updates.)" -msgstr "(送出本份更新的密件副本给名单上以逗号隔开的电子邮件地址。这<b>不会</b>更改后续的收件者名单。)" - -#: html/Ticket/Update.html:90 -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)" -msgstr "(送出本份更新的密件副本给名单上以逗号隔开的电子邮件地址。这<strong>不会</strong>更改后续的收件者名单。)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <b>will</b> receive future updates.)" -msgstr "(送出本份更新的副本给名单上以逗号隔开的管理员电子邮件地址。这<b>将会</b>更改后续的收件者名单。)" - -#: html/Ticket/Create.html:103 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <strong>will</strong> receive future updates.)" -msgstr "(送出本份更新的副本给名单上以逗号隔开的管理员电子邮件地址。这<strong>将会</strong>更改后续的收件者名单。)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)" -msgstr "(送出本份更新的副本给名单上以逗号隔开的电子邮件地址。这<b>不会</b>更改后续的收件者名单。)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will recieve future updates.)" -msgstr "(送出本份更新的副本给名单上以逗号隔开的电子邮件地址。这<b>不会</b>更改后续的收件者名单。)" - -#: html/Ticket/Update.html:86 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)" -msgstr "(送出本份更新的副本给名单上以逗号隔开的电子邮件地址。这<strong>不会</strong>更改后续的收件者名单。)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <b>will</b> receive future updates.)" -msgstr "(送出本份更新的副本给名单上以逗号隔开的电子邮件地址。这<b>将会</b>更改后续的收件者名单。)" - -#: html/Ticket/Create.html:93 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <strong>will</strong> receive future updates.)" -msgstr "(送出本份更新的副本给名单上以逗号隔开的电子邮件地址。这<strong>将会</strong>更改后续的收件者名单。)" - -#: html/Admin/Elements/EditScrip:96 -msgid "(Use these fields when you choose 'User Defined' for a condition or action)" -msgstr "(当条件或动作设为‘使用者自订’时,请填入这些字段)" - -#: html/Ticket/Elements/EditWatchers:60 html/Ticket/Elements/ShowUserEntry:53 -msgid "(Will not be sent email)" -msgstr "(不会收到邮件)" - -#: NOT FOUND IN SOURCE -msgid "(default delegate)" -msgstr "(预设代理人)" - -#: NOT FOUND IN SOURCE -msgid "(delete)" -msgstr "(删除)" - -#: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54 -msgid "(empty)" -msgstr "(空白)" - -#: NOT FOUND IN SOURCE -msgid "(new)" -msgstr "(新增)" - -#: html/Admin/Users/index.html:60 -msgid "(no name listed)" -msgstr "(没有列出姓名)" - -#: NOT FOUND IN SOURCE -msgid "(no subject)" -msgstr "(没有主题)" - -#: html/Admin/Elements/SelectRights:72 html/Elements/EditCustomFieldSelect:69 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:54 html/Search/Chart:56 html/Search/Elements/Chart:76 lib/RT/Transaction_Overlay.pm:591 -msgid "(no value)" -msgstr "(无)" - -#: html/Admin/Elements/EditCustomFieldValues:47 -msgid "(no values)" -msgstr "(没有值)" - -#: html/Elements/EditLinks:132 html/Ticket/Elements/BulkLinks:49 -msgid "(only one ticket)" -msgstr "(仅能指定一份申请单)" - -#: html/Elements/RT__Ticket/ColumnMap:149 -msgid "(pending approval)" -msgstr "(等待签核)" - -#: html/Elements/RT__Ticket/ColumnMap:152 -msgid "(pending other Collection)" -msgstr "(等待其它集合)" - -#: NOT FOUND IN SOURCE -msgid "(pending other tickets)" -msgstr "(等待其它申请单)" - -#: NOT FOUND IN SOURCE -msgid "(requestor's group)" -msgstr "(申请人所属)" - -#: html/Admin/Users/Modify.html:71 -msgid "(required)" -msgstr "(必填)" - -#: html/Ticket/Elements/ShowTransactionAttachments:82 -msgid "(untitled)" -msgstr "(未命名)" - -#: html/Ticket/Elements/Reminders:133 -msgid "(yyyy/mm/dd)" -msgstr "(yyyy/mm/dd)" - -#: NOT FOUND IN SOURCE -msgid "*" -msgstr "★" - -#: html/Elements/EditCustomFieldSelect:57 -msgid "-" -msgstr "-" - -#: bin/rt-crontool:95 -msgid "--transaction argument could be only 'first' or 'last'" -msgstr "--transaction 的值仅能为 'first' 或 'last'" - -#: NOT FOUND IN SOURCE -msgid ":" -msgstr ":" - -#: html/Ticket/Elements/ShowBasics:53 -msgid "<% $Ticket->Status%>" -msgstr "<% $Ticket->Status%>" - -#: html/Elements/SelectTicketTypes:48 -msgid "<% $_ %>" -msgstr "<% $_ %>" - -#: html/Search/Elements/SelectLinks:48 -msgid "<%$_%>" -msgstr "<%$_%>" - -#: html/Search/Elements/DisplayOptions:73 -msgid "<%$field%>" -msgstr "<%$field%>" - -#: html/Elements/CreateTicket:47 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" class=\"button\" value=\"New ticket in\" /> %1" -msgstr "<input type=\"submit\" class=\"button\" value=\"提出申请单\" /> %1" - -#: docs/design_docs/string-extraction-guide.txt:54 lib/RT/StyleGuide.pod:787 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" value=\"New ticket in\"> %1" -msgstr "<input type=\"submit\" value=\"提出申请单\"> %1" - -#: etc/initialdata:218 -msgid "A blank template" -msgstr "空白模板" - -#: html/Admin/Users/Modify.html:371 -msgid "A password was not set, so user won't be able to login." -msgstr "口令没有设定,因此该使用者将无法登入。" - -#: NOT FOUND IN SOURCE -msgid "ACE Deleted" -msgstr "ACE 已删除" - -#: NOT FOUND IN SOURCE -msgid "ACE Loaded" -msgstr "ACE 已加载" - -#: NOT FOUND IN SOURCE -msgid "ACE could not be deleted" -msgstr "无法删除 ACE" - -#: NOT FOUND IN SOURCE -msgid "ACE could not be found" -msgstr "找不到 ACE" - -#: lib/RT/ACE_Overlay.pm:174 lib/RT/Principal_Overlay.pm:219 -msgid "ACE not found" -msgstr "找不到 ACE 设定" - -#: lib/RT/ACE_Overlay.pm:853 -msgid "ACEs can only be created and deleted." -msgstr "祇能新增或删除 ACE 设定。" - -#: NOT FOUND IN SOURCE -msgid "ACLEquivalence" -msgstr "ACLEquivalence" - -#: html/Search/Elements/SelectAndOr:46 -msgid "AND" -msgstr "AND" - -#: NOT FOUND IN SOURCE -msgid "Aborting to avoid unintended ticket modifications.\\n" -msgstr "离开以免不小心更改到申请单。\\n" - -#: NOT FOUND IN SOURCE -msgid "About Me" -msgstr "个人信息" - -#: html/User/Elements/Tabs:53 -msgid "About me" -msgstr "个人信息" - -#: NOT FOUND IN SOURCE -msgid "Access Right" -msgstr "系统使用登录权限" - -#: html/Admin/Users/Modify.html:106 -msgid "Access control" -msgstr "存取权限" - -#: html/Admin/Elements/EditScrip:65 -msgid "Action" -msgstr "动作" - -#: lib/RT/Scrip_Overlay.pm:172 -#. ($args{'ScripAction'}) -msgid "Action %1 not found" -msgstr "动作 %1 找不到" - -#: NOT FOUND IN SOURCE -msgid "Action committed." -msgstr "动作执行完毕" - -#: bin/rt-crontool:171 -msgid "Action committed.\\n" -msgstr "动作执行完毕。\\n" - -#: lib/RT/Scrip_Overlay.pm:168 -msgid "Action is mandatory argument" -msgstr "动作为必填字段" - -#: bin/rt-crontool:167 -msgid "Action prepared..." -msgstr "动作准备完毕..." - -#: NOT FOUND IN SOURCE -msgid "Activated Date" -msgstr "申请激活时间" - -#: html/Search/Build.html:85 -msgid "Add" -msgstr "新增" - -#: html/Search/Bulk.html:92 -msgid "Add AdminCc" -msgstr "新增管理员副本收件人" - -#: html/Search/Bulk.html:88 -msgid "Add Cc" -msgstr "新增副本收件人" - -#: html/Search/Elements/EditFormat:49 -msgid "Add Columns" -msgstr "新增字段" - -#: html/Search/Elements/PickCriteria:46 -msgid "Add Criteria" -msgstr "新增条件" - -#: NOT FOUND IN SOURCE -msgid "Add Entry" -msgstr "新增列" - -#: html/Ticket/Create.html:147 html/Ticket/Update.html:116 -msgid "Add More Files" -msgstr "新增更多附件" - -#: NOT FOUND IN SOURCE -msgid "Add Next State" -msgstr "新增下一项关卡" - -#: html/Search/Bulk.html:84 -msgid "Add Requestor" -msgstr "新增申请人" - -#: html/Admin/Elements/AddCustomFieldValue:46 -msgid "Add Value" -msgstr "新增字段值" - -#: NOT FOUND IN SOURCE -msgid "Add a Scrip to this queue" -msgstr "新增此表单的手续" - -#: NOT FOUND IN SOURCE -msgid "Add a Scrip which will apply to all queues" -msgstr "新增适用于所有表单的手续" - -#: NOT FOUND IN SOURCE -msgid "Add a keyword selection to this queue" -msgstr "新增此表单的关键词" - -#: NOT FOUND IN SOURCE -msgid "Add a new a global scrip" -msgstr "新增全域手续" - -#: NOT FOUND IN SOURCE -msgid "Add a scrip to this queue" -msgstr "新增一道手续到此表单" - -#: html/Admin/Global/Scrip.html:83 -msgid "Add a scrip which will apply to all queues" -msgstr "新增一道用于所有表单的手续" - -#: NOT FOUND IN SOURCE -msgid "Add additional criteria" -msgstr "新增查询条件" - -#: html/Search/Build.html:109 html/Search/Build.html:94 -msgid "Add and Search" -msgstr "新增并开始查询" - -#: html/Search/Bulk.html:124 -msgid "Add comments or replies to selected tickets" -msgstr "新增评论或回复到指定的申请单" - -#: html/Admin/Groups/Members.html:63 html/User/Groups/Members.html:60 -msgid "Add members" -msgstr "新增成员" - -#: html/Admin/Queues/People.html:87 html/Ticket/Elements/AddWatchers:49 -msgid "Add new watchers" -msgstr "新增视察员" - -#: html/Search/Build.html:85 -msgid "Add these terms to your search" -msgstr "将这些条件加进查询内" - -#: html/Search/Bulk.html:158 -msgid "Add values" -msgstr "新增值" - -#: lib/RT/CustomField_Overlay.pm:108 -msgid "Add, delete and modify custom field values for objects" -msgstr "新增、删除及修改对象的自订字段值" - -#: NOT FOUND IN SOURCE -msgid "AddNextState" -msgstr "新增下一项关卡" - -#: lib/RT/Queue_Overlay.pm:763 -#. ($args{'Type'}) -msgid "Added principal as a %1 for this queue" -msgstr "单位已新增为此表单的 %1" - -#: lib/RT/Ticket_Overlay.pm:1455 -#. ($self->loc($args{'Type'})) -msgid "Added principal as a %1 for this ticket" -msgstr "单位已新增为此申请单的 %1" - -#: NOT FOUND IN SOURCE -msgid "Additional Hints" -msgstr "额外提示" - -#: html/Admin/Users/Modify.html:146 html/User/Prefs.html:133 -msgid "Address1" -msgstr "住址" - -#: html/Admin/Users/Modify.html:151 html/User/Prefs.html:137 -msgid "Address2" -msgstr "住址(续)" - -#: NOT FOUND IN SOURCE -msgid "Adjust Blinking Rate" -msgstr "调整闪烁速度快慢" - -#: NOT FOUND IN SOURCE -msgid "Admin" -msgstr "管理员" - -#: html/Ticket/Create.html:98 -msgid "Admin Cc" -msgstr "管理员副本" - -#: etc/initialdata:295 -msgid "Admin Comment" -msgstr "管理员评论" - -#: etc/initialdata:274 -msgid "Admin Correspondence" -msgstr "管理员回复" - -#: NOT FOUND IN SOURCE -msgid "Admin Rights" -msgstr "管理员权限" - -#: html/Admin/Queues/index.html:46 html/Admin/Queues/index.html:49 -msgid "Admin queues" -msgstr "表单管理" - -#: NOT FOUND IN SOURCE -msgid "Admin users" -msgstr "使用者管理" - -#: html/Admin/Global/index.html:47 html/Admin/Global/index.html:49 -msgid "Admin/Global configuration" -msgstr "管理/全域设定" - -#: NOT FOUND IN SOURCE -msgid "Admin/Groups" -msgstr "管理/群组" - -#: NOT FOUND IN SOURCE -msgid "Admin/Queue/Basics" -msgstr "管理/表单/基本信息" - -#: NOT FOUND IN SOURCE -msgid "AdminAddress" -msgstr "管理员 Email" - -#: NOT FOUND IN SOURCE -msgid "AdminAllPersonalGroups" -msgstr "管理所有代理人群组" - -#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:60 lib/RT/ACE_Overlay.pm:113 -msgid "AdminCc" -msgstr "管理员副本" - -msgid "AdminCc.EmailAddress" -msgstr "管理员副本: 电子邮件信箱" - -msgid "Cc.EmailAddress" -msgstr "副本: 电子邮件信箱" - -msgid "Requestor.EmailAddress" -msgstr "申请人: 电子邮件信箱" - -msgid "Custom.Ownership" -msgstr "自订: 承办状态" - -#: NOT FOUND IN SOURCE -msgid "AdminComment" -msgstr "管理员评论" - -#: NOT FOUND IN SOURCE -msgid "AdminCorrespondence" -msgstr "管理员回复" - -#: lib/RT/CustomField_Overlay.pm:106 -msgid "AdminCustomField" -msgstr "管理自订字段" - -#: NOT FOUND IN SOURCE -msgid "AdminCustomFields" -msgstr "管理自订字段" - -#: lib/RT/Group_Overlay.pm:163 -msgid "AdminGroup" -msgstr "管理群组" - -#: NOT FOUND IN SOURCE -msgid "AdminGroupDescription" -msgstr "管理群组描述" - -#: lib/RT/Group_Overlay.pm:165 -msgid "AdminGroupMembership" -msgstr "管理群组成员" - -#: NOT FOUND IN SOURCE -msgid "AdminGroupName" -msgstr "管理群组名称" - -#: NOT FOUND IN SOURCE -msgid "AdminGroupPermission" -msgstr "管理群组权限" - -#: NOT FOUND IN SOURCE -msgid "AdminGroupStatus" -msgstr "管理群组状态" - -#: lib/RT/System.pm:80 -msgid "AdminOwnPersonalGroups" -msgstr "管理代理人群组" - -#: lib/RT/Queue_Overlay.pm:92 -msgid "AdminQueue" -msgstr "管理表单" - -#: lib/RT/System.pm:81 -msgid "AdminUsers" -msgstr "管理使用者" - -#: NOT FOUND IN SOURCE -msgid "Administrative" -msgstr "行政类" - -#: html/Admin/Queues/People.html:69 html/Ticket/Elements/EditPeople:75 -msgid "Administrative Cc" -msgstr "管理员副本" - -#: NOT FOUND IN SOURCE -msgid "Admins" -msgstr "主管" - -#: html/Ticket/Elements/Tabs:216 -msgid "Advanced" -msgstr "进阶" - -#: NOT FOUND IN SOURCE -msgid "Advanced Search" -msgstr "进阶查询" - -#: NOT FOUND IN SOURCE -msgid "Advanced Search Criteria" -msgstr "进阶查询条件" - -#: html/Elements/SelectDateRelation:57 -msgid "After" -msgstr "晚于" - -#: NOT FOUND IN SOURCE -msgid "Age" -msgstr "经历时间" - -#: html/Search/Elements/PickCriteria:52 -msgid "Aggregator" -msgstr "结合方式" - -#: NOT FOUND IN SOURCE -msgid "Alias" -msgstr "执行其它流程" - -#: NOT FOUND IN SOURCE -msgid "Alias for" -msgstr "相当于" - -#: NOT FOUND IN SOURCE -msgid "All" -msgstr "全部" - -#: etc/initialdata:363 -msgid "All Approvals Passed" -msgstr "完成全部签核" - -#: NOT FOUND IN SOURCE -msgid "All Condition" -msgstr "所有条件" - -#: NOT FOUND IN SOURCE -msgid "All Custom Fields" -msgstr "所有自订字段" - -#: html/Admin/Queues/index.html:75 -msgid "All Queues" -msgstr "所有表单" - -#: NOT FOUND IN SOURCE -msgid "All Users" -msgstr "全体员工" - -#: NOT FOUND IN SOURCE -msgid "All done! Now you can proceed to %1." -msgstr "处理完毕!您现在可以继续进行 %1。" - -#: NOT FOUND IN SOURCE -msgid "Allowance Request" -msgstr "福利补助申请" - -#: NOT FOUND IN SOURCE -msgid "Always sends a message to the requestors independent of message sender" -msgstr "无论寄件来源为何,一律寄信给申请人" - -#: NOT FOUND IN SOURCE -msgid "Amount" -msgstr "数额" - -#: html/Search/Elements/EditQuery:56 -msgid "And/Or" -msgstr "AND/OR" - -#: NOT FOUND IN SOURCE -msgid "Any Condition" -msgstr "任意条件" - -#: NOT FOUND IN SOURCE -msgid "Applies To" -msgstr "套用于" - -#: html/Admin/CustomFields/Modify.html:73 html/Admin/Elements/CustomFieldTabs:83 -msgid "Applies to" -msgstr "套用于" - -#: html/Search/Edit.html:64 -msgid "Apply" -msgstr "套用" - -#: NOT FOUND IN SOURCE -msgid "Apply Template" -msgstr "引用模板" - -#: html/Search/Edit.html:64 -msgid "Apply your changes" -msgstr "套用更动" - -#: html/Elements/Tabs:77 -msgid "Approval" -msgstr "签核" - -#: html/Approvals/Display.html:65 html/Approvals/Elements/ShowDependency:63 html/Approvals/index.html:86 -#. ($Ticket->Id, $Ticket->Subject) -#. ($ticket->id, $msg) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Approval #%1: %2" -msgstr "签核单 #%1:%2" - -#: html/Approvals/index.html:75 -#. ($ticket->Id) -msgid "Approval #%1: Notes not recorded due to a system error" -msgstr "签核单 #%1:系统错误,记录失败" - -#: html/Approvals/index.html:73 -#. ($ticket->Id) -msgid "Approval #%1: Notes recorded" -msgstr "签核单 #%1:记录完毕" - -#: NOT FOUND IN SOURCE -msgid "Approval Details" -msgstr "签核细节" - -#: NOT FOUND IN SOURCE -msgid "Approval Due" -msgstr "签核时限" - -#: NOT FOUND IN SOURCE -msgid "Approval Notes" -msgstr "签核意见" - -#: etc/initialdata:351 -msgid "Approval Passed" -msgstr "完成某项签核" - -#: etc/initialdata:374 -msgid "Approval Rejected" -msgstr "驳回某项签核" - -#: NOT FOUND IN SOURCE -msgid "Approval Result" -msgstr "签核结果" - -#: NOT FOUND IN SOURCE -msgid "Approval Status" -msgstr "核准结果" - -#: NOT FOUND IN SOURCE -msgid "Approval Type" -msgstr "签核种类" - -#: NOT FOUND IN SOURCE -msgid "Approval diagram" -msgstr "签核流程" - -#: html/Approvals/Elements/Approve:69 -msgid "Approve" -msgstr "核准" - -#: NOT FOUND IN SOURCE -msgid "Approver" -msgstr "签核人" - -#: NOT FOUND IN SOURCE -msgid "Approver Setting" -msgstr "执行签核人设定" - -#: etc/initialdata:504 -msgid "Approver's notes: %1" -msgstr "签核备注:%1" - -#: NOT FOUND IN SOURCE -msgid "Apr" -msgstr "四月" - -#: lib/RT/Date.pm:444 -msgid "Apr." -msgstr "04" - -#: NOT FOUND IN SOURCE -msgid "April" -msgstr "四月" - -#: NOT FOUND IN SOURCE -msgid "Are you sure to delete checked items?" -msgstr "您确定要删除?" - -#: html/Search/Elements/DisplayOptions:81 -msgid "Asc" -msgstr "递增" - -#: html/Elements/SelectSortOrder:56 -msgid "Ascending" -msgstr "递增" - -#: lib/RT/Queue_Overlay.pm:96 -msgid "Assign and remove custom fields" -msgstr "指派及移除自订字段" - -#: lib/RT/Queue_Overlay.pm:96 -msgid "AssignCustomFields" -msgstr "指派自订字段" - -#: html/Search/Bulk.html:142 html/SelfService/Update.html:87 html/Ticket/ModifyAll.html:115 html/Ticket/Update.html:116 -msgid "Attach" -msgstr "附件" - -#: html/SelfService/Create.html:92 html/Ticket/Create.html:143 -msgid "Attach file" -msgstr "附加档案" - -#: html/SelfService/Update.html:75 html/Ticket/Create.html:131 html/Ticket/Update.html:94 -msgid "Attached file" -msgstr "现有附件" - -#: html/Ticket/ShowEmailRecord.html:52 html/Ticket/ShowEmailRecord.html:56 html/Ticket/ShowEmailRecord.html:59 -#. ($Attachment) -msgid "Attachment '%1' could not be loaded" -msgstr "无法加载附件 '%1'" - -#: lib/RT/Transaction_Overlay.pm:489 -msgid "Attachment created" -msgstr "附件新增完毕" - -#: lib/RT/Tickets_Overlay.pm:1945 -msgid "Attachment filename" -msgstr "附件档名" - -#: html/Ticket/Elements/ShowAttachments:47 -msgid "Attachments" -msgstr "附件" - -#: lib/RT/Attributes_Overlay.pm:171 -msgid "Attribute Deleted" -msgstr "已删除该属性" - -#: NOT FOUND IN SOURCE -msgid "Attributes" -msgstr "属性" - -#: NOT FOUND IN SOURCE -msgid "Aug" -msgstr "八月" - -#: lib/RT/Date.pm:448 -msgid "Aug." -msgstr "08" - -#: NOT FOUND IN SOURCE -msgid "August" -msgstr "八月" - -#: NOT FOUND IN SOURCE -msgid "AuthSystem" -msgstr "认证方式" - -#: NOT FOUND IN SOURCE -msgid "AutoReject" -msgstr "自动驳回表单" - -#: NOT FOUND IN SOURCE -msgid "AutoResolve" -msgstr "自动完成表单处理" - -#: etc/initialdata:221 -msgid "Autoreply" -msgstr "自动回复" - -#: etc/initialdata:72 -msgid "Autoreply To Requestors" -msgstr "自动对申请人回复" - -#: NOT FOUND IN SOURCE -msgid "AutoreplyToRequestors" -msgstr "自动对申请人回复" - -#: html/Widgets/SelectionBox:185 -msgid "Available" -msgstr "可用" - -#: NOT FOUND IN SOURCE -msgid "Available Columns" -msgstr "可用的字段:" - -#: NOT FOUND IN SOURCE -msgid "Available Rights:" -msgstr "权限项目列表:" - -#: NOT FOUND IN SOURCE -msgid "Back to Homepage" -msgstr "回到首页" - -#: NOT FOUND IN SOURCE -msgid "Back to Previous" -msgstr "回上页" - -#: NOT FOUND IN SOURCE -msgid "Bad PGP Signature: %1\\n" -msgstr "错误的 PGP 签章:%1\\n" - -#: NOT FOUND IN SOURCE -msgid "Bad attachment id. Couldn't find attachment '%1'\\n" -msgstr "错误的附件编号。无法找到附件 '%1'\\n" - -#: NOT FOUND IN SOURCE -msgid "Bad data in %1" -msgstr "%1 的数据错误" - -#: NOT FOUND IN SOURCE -msgid "Bad transaction number for attachment. %1 should be %2\\n" -msgstr "附件的处理号码错误。%1 应为 %2\\n" - -#: html/Admin/Elements/CustomFieldTabs:65 html/Admin/Elements/GroupTabs:60 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/UserTabs:58 html/Ticket/Elements/Tabs:113 html/User/Elements/GroupTabs:59 -msgid "Basics" -msgstr "基本信息" - -#: NOT FOUND IN SOURCE -msgid "Batch Approval" -msgstr "批次签核" - -#: html/Ticket/Update.html:88 -msgid "Bcc" -msgstr "密件副本" - -#: html/Admin/CustomFields/GroupRights.html:91 html/Admin/CustomFields/UserRights.html:74 html/Admin/Elements/EditScrip:89 -msgid "Be sure to save your changes" -msgstr "请别忘了储存修改。" - -#: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:361 -msgid "Before" -msgstr "早于" - -#: NOT FOUND IN SOURCE -msgid "Begin Approval" -msgstr "开始签核" - -#: NOT FOUND IN SOURCE -msgid "Begin From " -msgstr "起始日" - -#: html/Elements/Logo:47 -msgid "Best Practical Solutions, LLC corporate logo" -msgstr "Best Practical Solutions, LLC 公司识别图案" - -#: NOT FOUND IN SOURCE -msgid "Binary" -msgstr "档案" - -#: NOT FOUND IN SOURCE -msgid "Birthday" -msgstr "生日" - -#: etc/initialdata:217 -msgid "Blank" -msgstr "空白模板" - -#: html/Search/Elements/EditFormat:84 -msgid "Bold" -msgstr "粗体" - -#: NOT FOUND IN SOURCE -msgid "Bookmarkable URL for this search" -msgstr "将查询结果转为可放入书签的网址" - -#: html/Search/Results.html:79 -msgid "Bookmarkable link" -msgstr "可放入书签的网址" - -#: html/Ticket/Elements/ShowHistory:64 html/Ticket/Elements/ShowHistory:69 -msgid "Brief headers" -msgstr "精简标头档" - -#: html/Ticket/Elements/Tabs:227 -msgid "Bulk Update" -msgstr "整批更新" - -#: NOT FOUND IN SOURCE -msgid "Bulk ticket update" -msgstr "整批更新申请单" - -#: NOT FOUND IN SOURCE -msgid "Business Unit" -msgstr "事业部" - -#: NOT FOUND IN SOURCE -msgid "Business Unit:" -msgstr "事业部:" - -#: lib/RT/User_Overlay.pm:1853 -msgid "Can not modify system users" -msgstr "无法更改系统使用者" - -#: lib/RT/Queue_Overlay.pm:91 -msgid "Can this principal see this queue" -msgstr "该单位是否能查阅此表单" - -#: lib/RT/CustomField_Overlay.pm:379 -msgid "Can't add a custom field value without a name" -msgstr "不能新增没有名称的自订字段值" - -#: html/Admin/CustomFields/Objects.html:86 -#. ($Class) -msgid "Can't find a collection class for '%1'" -msgstr "找不到‘%1’的集合类别" - -#: html/Search/Build.html:286 -msgid "Can't find a saved search to work with" -msgstr "找不到预存查询" - -#: lib/RT/Link_Overlay.pm:159 -msgid "Can't link a ticket to itself" -msgstr "申请单不能链接自己。" - -#: NOT FOUND IN SOURCE -msgid "Can't merge into a merged ticket. You should never get this error" -msgstr "不能整合进已整合过的申请单。这个错误不该发生。" - -#: html/Widgets/SavedSearch:63 -#. (loc($self->{SearchType})) -msgid "Can't save %1" -msgstr "无法储存 %1" - -#: html/Search/Build.html:290 -msgid "Can't save this search" -msgstr "无法储存此项查询" - -#: lib/RT/Record.pm:1282 lib/RT/Record.pm:1358 -msgid "Can't specifiy both base and target" -msgstr "不能同时指定起始申请单与目的申请单" - -#: NOT FOUND IN SOURCE -msgid "Cancel" -msgstr "取消" - -#: html/autohandler:204 -#. ($msg) -msgid "Cannot create user: %1" -msgstr "无法新增使用者:%1" - -#: NOT FOUND IN SOURCE -msgid "Cannot login: Your system clock differs from server's by %1 seconds!" -msgstr "您的系统时钟和服务器相差 %1 秒,无法登入!" - -#: NOT FOUND IN SOURCE -msgid "Card No." -msgstr "卡号" - -#: NOT FOUND IN SOURCE -msgid "Categories" -msgstr "分类管理" - -#: html/Admin/Elements/AddCustomFieldValue:62 html/Admin/Elements/EditCustomFieldValues:58 -msgid "Category" -msgstr "分类" - -#: etc/initialdata:50 html/Admin/Queues/People.html:65 html/SelfService/Create.html:71 html/Ticket/Create.html:88 html/Ticket/Elements/EditPeople:72 html/Ticket/Elements/ShowPeople:56 html/Ticket/Update.html:83 lib/RT/ACE_Overlay.pm:112 -msgid "Cc" -msgstr "副本" - -#: NOT FOUND IN SOURCE -msgid "Cc Type" -msgstr "副本类别" - -#: NOT FOUND IN SOURCE -msgid "Chairperson's Office" -msgstr "董事长室" - -#: NOT FOUND IN SOURCE -msgid "Change Ticket" -msgstr "修改申请单" - -#: html/SelfService/Prefs.html:52 -msgid "Change password" -msgstr "更改口令" - -#: NOT FOUND IN SOURCE -msgid "ChangeOwnerUI" -msgstr "可否选择表单承办人" - -#: html/Elements/Submit:78 -msgid "Check All" -msgstr "全部选取" - -#: html/SelfService/Update.html:78 html/Ticket/Create.html:134 html/Ticket/Update.html:97 -msgid "Check box to delete" -msgstr "选择欲删除的项目" - -#: html/Admin/Elements/SelectRights:55 -msgid "Check box to revoke right" -msgstr "选择欲撤消的权利" - -#: html/Elements/EditLinks:148 html/Elements/EditLinks:85 html/Elements/ShowLinks:78 html/Ticket/Create.html:223 html/Ticket/Elements/BulkLinks:64 -msgid "Children" -msgstr "子申请单" - -#: NOT FOUND IN SOURCE -msgid "Chinese Name" -msgstr "中文姓名" - -#: NOT FOUND IN SOURCE -msgid "Chinese/English" -msgstr "中英文" - -#: html/NoAuth/js/util.js:201 -msgid "Choose a date" -msgstr "选择日期" - -#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:141 -msgid "City" -msgstr "所在城市" - -#: NOT FOUND IN SOURCE -msgid "ClassicUI" -msgstr "传统接口" - -#: html/Elements/Submit:80 -msgid "Clear All" -msgstr "全部清除" - -#: html/Helpers/CalPopup.html:51 -msgid "Close window" -msgstr "关闭窗口" - -#: html/Ticket/Elements/ShowDates:68 -msgid "Closed" -msgstr "已解决" - -#: NOT FOUND IN SOURCE -msgid "Closed Tickets" -msgstr "已解决的申请单" - -#: html/SelfService/Closed.html:46 html/SelfService/Elements/Tabs:78 -msgid "Closed tickets" -msgstr "已解决的申请单" - -#: NOT FOUND IN SOURCE -msgid "Code" -msgstr "执行程序码" - -#: lib/RT/CustomField_Overlay.pm:89 -msgid "Combobox: Select or enter multiple values" -msgstr "下拉文字框:选择或键入多重项目" - -#: lib/RT/CustomField_Overlay.pm:90 -msgid "Combobox: Select or enter one value" -msgstr "下拉文字框:选择或键入单一项目" - -#: lib/RT/CustomField_Overlay.pm:91 -msgid "Combobox: Select or enter up to %1 values" -msgstr "下拉文字框:选择或键入最多 %1 个项目" - -#: NOT FOUND IN SOURCE -msgid "Command not understood!\\n" -msgstr "指令无法辨识!\\n" - -#: html/Ticket/Elements/ShowTransaction:190 html/Ticket/Elements/Tabs:185 -msgid "Comment" -msgstr "评论" - -#: html/Admin/Queues/Modify.html:79 -msgid "Comment Address" -msgstr "评论电子邮件地址" - -#: NOT FOUND IN SOURCE -msgid "Comment not recorded" -msgstr "评论未被纪录" - -#: lib/RT/Queue_Overlay.pm:111 -msgid "Comment on tickets" -msgstr "对申请单提出评论" - -#: lib/RT/Queue_Overlay.pm:111 -msgid "CommentOnTicket" -msgstr "评论申请单" - -#: NOT FOUND IN SOURCE -msgid "Comments" -msgstr "评论" - -#: html/Ticket/ModifyAll.html:91 html/Ticket/Update.html:75 -msgid "Comments (Not sent to requestors)" -msgstr "评论(不送给申请人)" - -#: html/Search/Bulk.html:128 -msgid "Comments (not sent to requestors)" -msgstr "评论(不送给申请人)" - -#: NOT FOUND IN SOURCE -msgid "Comments about %1" -msgstr "对 %1 的评论" - -#: html/Admin/Users/Modify.html:225 html/Ticket/Elements/ShowRequestor:67 -msgid "Comments about this user" -msgstr "使用者描述" - -#: lib/RT/Transaction_Overlay.pm:634 -msgid "Comments added" -msgstr "新增评论完毕" - -#: NOT FOUND IN SOURCE -msgid "Commit" -msgstr "确认" - -#: lib/RT/Action/Generic.pm:175 -msgid "Commit Stubbed" -msgstr "消除更动完毕" - -#: NOT FOUND IN SOURCE -msgid "Company Name" -msgstr "公司名称" - -#: NOT FOUND IN SOURCE -msgid "CompanySpecific" -msgstr "各公司独立显示" - -#: NOT FOUND IN SOURCE -msgid "Compile Restrictions" -msgstr "设定查询条件" - -#: html/Admin/Elements/EditScrip:59 -msgid "Condition" -msgstr "条件" - -#: lib/RT/Scrip_Overlay.pm:184 -msgid "Condition is mandatory argument" -msgstr "条件是必填字段" - -#: bin/rt-crontool:151 -msgid "Condition matches..." -msgstr "符合条件..." - -#: lib/RT/Scrip_Overlay.pm:188 -msgid "Condition not found" -msgstr "未找到符合的现况" - -#: html/Elements/Tabs:84 -msgid "Configuration" -msgstr "设定" - -#: html/SelfService/Prefs.html:54 -msgid "Confirm" -msgstr "确认口令" - -#: NOT FOUND IN SOURCE -msgid "Confirm Password" -msgstr "口令确认" - -#: NOT FOUND IN SOURCE -msgid "Confirm Submit" -msgstr "确定送出" - -#: NOT FOUND IN SOURCE -msgid "Contact System Administrator" -msgstr "连络系统管理员" - -#: NOT FOUND IN SOURCE -msgid "ContactInfoSystem" -msgstr "连络信息系统" - -#: NOT FOUND IN SOURCE -msgid "Contacted date '%1' could not be parsed" -msgstr "无法解读联络日期 '%1'" - -#: html/Admin/Elements/ModifyTemplate:65 html/Elements/SelectAttachmentField:48 html/Ticket/ModifyAll.html:119 -msgid "Content" -msgstr "内容" - -#: html/Elements/SelectAttachmentField:49 -msgid "Content-Type" -msgstr "内容类型" - -#: NOT FOUND IN SOURCE -msgid "Coould not create group" -msgstr "无法新增群组" - -#: html/Search/Elements/EditSearches:65 -msgid "Copy" -msgstr "复制" - -#: NOT FOUND IN SOURCE -msgid "Copy Field From:" -msgstr "欲复制字段:" - -#: etc/initialdata:286 -msgid "Correspondence" -msgstr "回复" - -#: NOT FOUND IN SOURCE -msgid "Correspondence Address" -msgstr "申请单回复地址" - -#: lib/RT/Transaction_Overlay.pm:630 -msgid "Correspondence added" -msgstr "新增申请单回复" - -#: NOT FOUND IN SOURCE -msgid "Correspondence not recorded" -msgstr "未纪录申请单回复" - -#: NOT FOUND IN SOURCE -msgid "Could not add new custom field value for ticket. " -msgstr "不能新增自订字段的值。" - -#: NOT FOUND IN SOURCE -msgid "Could not add new custom field value for ticket. %1 " -msgstr "不能新增自订字段的值。%1 " - -#: lib/RT/Record.pm:1707 -msgid "Could not add new custom field value. " -msgstr "不能新增自订字段的值。" - -#: lib/RT/Record.pm:1660 -#. (, $value_msg) -msgid "Could not add new custom field value. %1 " -msgstr "不能新增自订字段的值。%1 " - -#: lib/RT/Ticket_Overlay.pm:3048 lib/RT/Ticket_Overlay.pm:3056 lib/RT/Ticket_Overlay.pm:3073 -msgid "Could not change owner. " -msgstr "不能更改承办人。" - -#: html/Admin/CustomFields/Modify.html:161 -#. ($msg) -msgid "Could not create CustomField" -msgstr "无法新增自订字段" - -#: html/Admin/Elements/EditCustomField:113 -#. ($msg) -msgid "Could not create CustomField: %1" -msgstr "无法新增自订字段:%1" - -#: NOT FOUND IN SOURCE -msgid "Could not create Scrip" -msgstr "无法建立讯息通知" - -#: NOT FOUND IN SOURCE -msgid "Could not create Template" -msgstr "无法建立通知模板" - -#: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:494 lib/RT/Group_Overlay.pm:501 -msgid "Could not create group" -msgstr "无法新增群组" - -#: NOT FOUND IN SOURCE -msgid "Could not create item" -msgstr "无法新增项目" - -#: html/Admin/Global/Template.html:96 html/Admin/Queues/Template.html:93 -#. ($msg) -msgid "Could not create template: %1" -msgstr "无法新增模板:%1" - -#: lib/RT/Ticket_Overlay.pm:1075 lib/RT/Ticket_Overlay.pm:407 -msgid "Could not create ticket. Queue not set" -msgstr "无法新增申请单。尚未指定表单。" - -#: lib/RT/User_Overlay.pm:255 lib/RT/User_Overlay.pm:269 lib/RT/User_Overlay.pm:278 lib/RT/User_Overlay.pm:287 lib/RT/User_Overlay.pm:296 lib/RT/User_Overlay.pm:310 lib/RT/User_Overlay.pm:320 lib/RT/User_Overlay.pm:496 -msgid "Could not create user" -msgstr "无法新增使用者" - -#: NOT FOUND IN SOURCE -msgid "Could not create watcher for requestor" -msgstr "无法为申请人新增视察员" - -#: NOT FOUND IN SOURCE -msgid "Could not create workflow: %1" -msgstr "无法新增流程:%1" - -#: NOT FOUND IN SOURCE -msgid "Could not find a ticket with id %1" -msgstr "找不到编号 %1 的申请单" - -#: NOT FOUND IN SOURCE -msgid "Could not find group %1." -msgstr "找不到群组 %1。" - -#: lib/RT/Queue_Overlay.pm:741 lib/RT/Ticket_Overlay.pm:1423 -msgid "Could not find or create that user" -msgstr "找不到或无法新增该名使用者" - -#: lib/RT/Queue_Overlay.pm:802 lib/RT/Ticket_Overlay.pm:1504 -msgid "Could not find that principal" -msgstr "找不到该单位" - -#: NOT FOUND IN SOURCE -msgid "Could not find user %1." -msgstr "找不到使用者 %1。" - -#: html/Admin/CustomFields/Objects.html:69 -msgid "Could not load CustomField %1" -msgstr "无法加载字段 %1" - -#: html/Admin/Groups/Members.html:112 html/User/Groups/Members.html:111 html/User/Groups/Modify.html:103 -msgid "Could not load group" -msgstr "无法加载群组" - -#: lib/RT/SavedSearch.pm:119 -#. ($privacy) -msgid "Could not load object for %1" -msgstr "无法为 %1 加载对象" - -#: lib/RT/SavedSearch.pm:197 -msgid "Could not load search attribute" -msgstr "无法加载查询属性" - -#: lib/RT/Queue_Overlay.pm:761 -#. ($args{'Type'}) -msgid "Could not make that principal a %1 for this queue" -msgstr "无法将该单位设为此表单的 %1。" - -#: lib/RT/Ticket_Overlay.pm:1444 -#. ($self->loc($args{'Type'})) -msgid "Could not make that principal a %1 for this ticket" -msgstr "无法将该单位设为此申请单的 %1。" - -#: lib/RT/Queue_Overlay.pm:860 -#. ($args{'Type'}) -msgid "Could not remove that principal as a %1 for this queue" -msgstr "无法将单位 %1 从表单移除。" - -#: NOT FOUND IN SOURCE -msgid "Could not remove that principal as a %1 for this ticket" -msgstr "无法将单位 %1 从申请单移除。" - -#: lib/RT/User_Overlay.pm:191 -msgid "Could not set user info" -msgstr "无法设定使用者信息" - -#: lib/RT/Transaction_Overlay.pm:159 -msgid "Couldn't add attachment" -msgstr "无法新增附件" - -#: lib/RT/Group_Overlay.pm:1003 -msgid "Couldn't add member to group" -msgstr "无法新增成员至群组" - -#: lib/RT/Record.pm:1719 lib/RT/Record.pm:1771 -#. ($Msg) -msgid "Couldn't create a transaction: %1" -msgstr "无法新增更动报告" - -#: NOT FOUND IN SOURCE -msgid "Couldn't figure out what to do from gpg's reply\\n" -msgstr "无法从 gpg 回函辨识出该采取的行动\\n" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find group\\n" -msgstr "找不到群组\\n" - -#: lib/RT/Record.pm:953 -msgid "Couldn't find row" -msgstr "找不到此列数据" - -#: lib/RT/Group_Overlay.pm:977 -msgid "Couldn't find that principal" -msgstr "找不到该单位" - -#: lib/RT/CustomField_Overlay.pm:409 -msgid "Couldn't find that value" -msgstr "找不到该值" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find that watcher" -msgstr "找不到该视察员" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find user\\n" -msgstr "找不到使用者\\n" - -#: lib/RT/CurrentUser.pm:145 -#. ($self->Id) -msgid "Couldn't load %1 from the users database.\\n" -msgstr "无法从使用者数据库加载 %1。\\n" - -#: html/Admin/CustomFields/UserRights.html:149 -#. ($id) -msgid "Couldn't load Class %1" -msgstr "无法加载类别 %1" - -#: html/Admin/CustomFields/GroupRights.html:107 -#. ($id) -msgid "Couldn't load CustomField %1" -msgstr "无法加载自订字段 %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load KeywordSelects." -msgstr "无法加载 KeywordSelects。" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load RT config file '%1' %2" -msgstr "无法加载 RT 设定档 '%1' %2" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load Scrips." -msgstr "无法加载手续。" - -#: lib/RT/Ticket_Overlay.pm:2016 -#. ($self->Id) -msgid "Couldn't load copy of ticket #%1." -msgstr "无法加载申请单 %1 的复本。" - -#: html/Admin/Groups/GroupRights.html:109 html/Admin/Groups/UserRights.html:96 -#. ($id) -msgid "Couldn't load group %1" -msgstr "无法加载手续 %1" - -#: lib/RT/Link_Overlay.pm:202 lib/RT/Link_Overlay.pm:211 lib/RT/Link_Overlay.pm:238 -msgid "Couldn't load link" -msgstr "无法加载链接。" - -#: html/Admin/Elements/ObjectCustomFields:83 html/Admin/Queues/CustomFields.html:59 html/Admin/Users/CustomFields.html:59 -#. ($id) -msgid "Couldn't load object %1" -msgstr "无法加载对象 %1" - -#: html/Admin/Queues/People.html:142 -#. ($id) -msgid "Couldn't load queue" -msgstr "无法加载表单" - -#: html/Admin/Queues/GroupRights.html:122 html/Admin/Queues/UserRights.html:93 -#. ($id) -msgid "Couldn't load queue %1" -msgstr "无法加载表单 %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load scrip" -msgstr "无法加载手续" - -#: html/Admin/Elements/EditScrip:126 html/Admin/Elements/EditScrip:167 -#. ($id) -msgid "Couldn't load scrip #%1" -msgstr "无法加载手续 %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load template" -msgstr "无法加载模板" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load that user (%1)" -msgstr "无法加载该名使用者(%1)" - -#: html/SelfService/Display.html:158 lib/RT/Action/CreateTickets.pm:680 -#. ($id) -msgid "Couldn't load ticket '%1'" -msgstr "无法加载申请单 '%1'" - -#: lib/RT/Ticket_Overlay.pm:2643 -#. ($args{'URI'}) -msgid "Couldn't resolve '%1' into a URI." -msgstr "无法将‘%1’解读为网址" - -#: html/Admin/Users/Modify.html:173 html/User/Prefs.html:153 -msgid "Country" -msgstr "国家" - -#: html/Admin/Elements/CreateUserCalled:47 html/Admin/Elements/EditCustomField:84 html/Admin/Elements/EditScrip:133 html/Admin/Queues/Template.html:66 html/Elements/QuickCreate:65 html/Ticket/Create.html:168 html/Ticket/Create.html:235 -msgid "Create" -msgstr "新增" - -#: NOT FOUND IN SOURCE -msgid "Create Subgroup:" -msgstr "新增子群组:" - -#: etc/initialdata:135 -msgid "Create Tickets" -msgstr "新增申请单" - -#: NOT FOUND IN SOURCE -msgid "Create User:" -msgstr "新增成员:" - -#: html/Admin/CustomFields/Modify.html:150 html/Admin/Elements/EditCustomField:96 -msgid "Create a CustomField" -msgstr "新增自订字段" - -#: html/Admin/Queues/CustomField.html:69 -#. ($QueueObj->Name()) -msgid "Create a CustomField for queue %1" -msgstr "为 %1 表单新增自订字段" - -#: NOT FOUND IN SOURCE -msgid "Create a CustomField that applies to all queues" -msgstr "为 %1 表单新增自订字段" - -#: NOT FOUND IN SOURCE -msgid "Create a new Custom Field" -msgstr "新增自订字段" - -#: NOT FOUND IN SOURCE -msgid "Create a new global Scrip" -msgstr "新增全域手续" - -#: NOT FOUND IN SOURCE -msgid "Create a new global scrip" -msgstr "新增全域手续" - -#: html/Admin/Groups/Modify.html:125 html/Admin/Groups/Modify.html:99 -msgid "Create a new group" -msgstr "新增群组" - -#: html/User/Groups/Modify.html:113 html/User/Groups/Modify.html:88 -msgid "Create a new personal group" -msgstr "新增代理人群组" - -#: NOT FOUND IN SOURCE -msgid "Create a new queue" -msgstr "新增表单" - -#: NOT FOUND IN SOURCE -msgid "Create a new scrip" -msgstr "新增手续" - -#: NOT FOUND IN SOURCE -msgid "Create a new template" -msgstr "新增模板" - -#: html/Ticket/Create.html:47 html/Ticket/Create.html:51 html/Ticket/Create.html:60 -msgid "Create a new ticket" -msgstr "新增申请单" - -#: html/Admin/Users/Modify.html:252 html/Admin/Users/Modify.html:314 -msgid "Create a new user" -msgstr "新增使用者" - -#: NOT FOUND IN SOURCE -msgid "Create a new workflow" -msgstr "新增流程" - -#: html/Admin/Queues/Modify.html:125 -msgid "Create a queue" -msgstr "新增表单" - -#: NOT FOUND IN SOURCE -msgid "Create a queue called" -msgstr "新增表单名称" - -#: NOT FOUND IN SOURCE -msgid "Create a request" -msgstr "提出申请" - -#: html/Admin/Queues/Scrip.html:89 -#. ($QueueObj->Name) -msgid "Create a scrip for queue %1" -msgstr "为 %1 表单新增手续" - -#: html/Admin/Global/Template.html:90 html/Admin/Queues/Template.html:86 -msgid "Create a template" -msgstr "新增模板" - -#: html/SelfService/Create.html:46 html/SelfService/CreateTicketInQueue.html:46 -msgid "Create a ticket" -msgstr "提出申请单" - -#: NOT FOUND IN SOURCE -msgid "Create a workflow" -msgstr "新增流程" - -#: NOT FOUND IN SOURCE -msgid "Create failed: %1 / %2 / %3 " -msgstr "新增失败:%1 / %2 / %3" - -#: NOT FOUND IN SOURCE -msgid "Create failed: %1/%2/%3" -msgstr "新增失败:%1/%2/%3" - -#: NOT FOUND IN SOURCE -msgid "Create new item" -msgstr "建立新项目" - -#: etc/initialdata:137 -msgid "Create new tickets based on this scrip's template" -msgstr "依据此项手续内的模版,新增申请单" - -#: html/SelfService/Create.html:105 -msgid "Create ticket" -msgstr "新增申请单" - -#: lib/RT/Queue_Overlay.pm:109 -msgid "Create tickets in this queue" -msgstr "在此表单中新增申请单" - -#: lib/RT/CustomField_Overlay.pm:106 -msgid "Create, delete and modify custom fields" -msgstr "新增、删除及更改自订字段" - -#: lib/RT/Queue_Overlay.pm:92 -msgid "Create, delete and modify queues" -msgstr "新增、删除及更改表单" - -#: NOT FOUND IN SOURCE -msgid "Create, delete and modify the members of any user's personal groups" -msgstr "新增、删除及更改任何使用者的代理人群组" - -#: lib/RT/System.pm:80 -msgid "Create, delete and modify the members of personal groups" -msgstr "新增、删除及更改代理人群组" - -#: lib/RT/System.pm:81 -msgid "Create, delete and modify users" -msgstr "新增、删除及更改使用者" - -#: lib/RT/System.pm:87 -msgid "CreateSavedSearch" -msgstr "新增预存查询" - -#: lib/RT/Queue_Overlay.pm:109 -msgid "CreateTicket" -msgstr "新增申请单" - -#: html/Elements/SelectDateType:47 html/Ticket/Elements/ShowDates:48 lib/RT/Ticket_Overlay.pm:1169 -msgid "Created" -msgstr "新增日" - -#: html/Admin/CustomFields/Modify.html:163 html/Admin/Elements/EditCustomField:117 -#. ($CustomFieldObj->Name()) -msgid "Created CustomField %1" -msgstr "自订字段 %1 新增成功" - -#: html/Tools/Reports/Elements/Tabs:63 -msgid "Created in a date range" -msgstr "在指定日期内建立" - -#: NOT FOUND IN SOURCE -msgid "Created template %1" -msgstr "模板 %1 新增成功" - -#: html/Tools/Reports/CreatedByDates.html:52 -msgid "Created tickets in period, grouped by status" -msgstr "在指定日期内建立的申请单,依状态分组" - -#: NOT FOUND IN SOURCE -msgid "Created workflow %1" -msgstr "流程 %1 新增成功" - -#: html/Search/Elements/PickBasics:102 -msgid "Creator" -msgstr "建立者" - -#: NOT FOUND IN SOURCE -msgid "Currency" -msgstr "币别" - -#: NOT FOUND IN SOURCE -msgid "Current Approval Info" -msgstr "截至目前签核信息" - -#: NOT FOUND IN SOURCE -msgid "Current Custom Fields" -msgstr "现有自订字段" - -#: NOT FOUND IN SOURCE -msgid "Current Groups:" -msgstr "现有群组列表:" - -#: html/Elements/EditLinks:49 -msgid "Current Links" -msgstr "现有关系" - -#: NOT FOUND IN SOURCE -msgid "Current Rights:" -msgstr "现有权限:" - -#: html/Admin/Elements/EditScrips:51 -msgid "Current Scrips" -msgstr "现有手续" - -#: NOT FOUND IN SOURCE -msgid "Current Status" -msgstr "目前状态" - -#: NOT FOUND IN SOURCE -msgid "Current Templates" -msgstr "现有模板" - -#: NOT FOUND IN SOURCE -msgid "Current Watchers" -msgstr "现有视察员" - -#: html/Admin/Groups/Members.html:60 html/User/Groups/Members.html:63 -msgid "Current members" -msgstr "现有成员" - -#: html/Admin/Elements/SelectRights:51 -msgid "Current rights" -msgstr "现有权限" - -#: html/Search/Elements/EditQuery:47 -msgid "Current search" -msgstr "现有查询条件" - -#: NOT FOUND IN SOURCE -msgid "Current search criteria" -msgstr "现有查询条件" - -#: html/Admin/Queues/People.html:62 html/Ticket/Elements/EditPeople:66 -msgid "Current watchers" -msgstr "现有视察员" - -#: NOT FOUND IN SOURCE -msgid "Custom Field #%1" -msgstr "自订字段 #%1" - -#: html/Admin/Elements/SystemTabs:61 html/Admin/Elements/Tabs:62 html/Admin/Global/index.html:71 html/Admin/Users/Modify.html:205 html/Admin/index.html:77 html/Ticket/Elements/ShowSummary:56 -msgid "Custom Fields" -msgstr "自订字段" - -#: html/Admin/CustomFields/index.html:60 -#. ($lookup) -msgid "Custom Fields for %1" -msgstr "%1 的自订字段" - -#: NOT FOUND IN SOURCE -msgid "Custom Fields which apply to all queues" -msgstr "适用于所有表单的自订字段" - -#: html/Admin/Elements/EditScrip:107 -msgid "Custom action cleanup code" -msgstr "动作后执行程序" - -#: html/Admin/Elements/EditScrip:103 -msgid "Custom action preparation code" -msgstr "动作前执行程序" - -#: html/Admin/Elements/EditScrip:99 -msgid "Custom condition" -msgstr "自订条件" - -#: NOT FOUND IN SOURCE -msgid "Custom field %1 %2 %3" -msgstr "自订字段 %1 %2 %3" - -#: NOT FOUND IN SOURCE -msgid "Custom field %1 does not apply to this object" -msgstr "自订字段 %1 不适用于此对象" - -#: lib/RT/Tickets_Overlay.pm:2424 -#. ($CF->Name) -msgid "Custom field %1 has a value." -msgstr "自订字段 %1 已有值" - -#: lib/RT/Tickets_Overlay.pm:2420 -#. ($CF->Name) -msgid "Custom field %1 has no value." -msgstr "自订字段 %1 没有值" - -#: lib/RT/Record.pm:1592 lib/RT/Record.pm:1754 -#. ($args{'Field'}) -msgid "Custom field %1 not found" -msgstr "找不到自订字段 %1" - -#: lib/RT/Report/Tickets.pm:118 lib/RT/Report/Tickets.pm:121 -#. ($cf) -#. ($obj->Name) -msgid "Custom field '%1'" -msgstr "自订字段‘%1’" - -#: NOT FOUND IN SOURCE -msgid "Custom field deleted" -msgstr "自订字段已删除" - -#: NOT FOUND IN SOURCE -msgid "Custom field not found" -msgstr "找不到自订字段" - -#: lib/RT/CustomField_Overlay.pm:1157 -#. ($args{'Content'}, $self->Name) -msgid "Custom field value %1 could not be found for custom field %2" -msgstr "无法从自订字段 %2 中找到 %1 这个字段值" - -#: NOT FOUND IN SOURCE -msgid "Custom field value changed from %1 to %2" -msgstr "自订字段值从 %1 改为 %2" - -#: lib/RT/CustomField_Overlay.pm:419 -msgid "Custom field value could not be deleted" -msgstr "无法删除自订字段值" - -#: lib/RT/CustomField_Overlay.pm:1169 -msgid "Custom field value could not be found" -msgstr "找不到自订字段值" - -#: lib/RT/CustomField_Overlay.pm:1171 lib/RT/CustomField_Overlay.pm:417 -msgid "Custom field value deleted" -msgstr "自订字段值删除成功" - -#: html/Elements/SelectGroups:51 html/Elements/SelectUsers:51 lib/RT/Transaction_Overlay.pm:638 -msgid "CustomField" -msgstr "自订字段" - -#: html/Prefs/MyRT.html:78 html/Prefs/Quicksearch.html:70 html/Prefs/Search.html:75 -msgid "Customize" -msgstr "自订" - -#: NOT FOUND IN SOURCE -msgid "Data error" -msgstr "数据错误" - -#: NOT FOUND IN SOURCE -msgid "DatabaseBindRemote" -msgstr "容许外部联机" - -#: NOT FOUND IN SOURCE -msgid "DatabaseName" -msgstr "MySQL数据库" - -#: NOT FOUND IN SOURCE -msgid "Date of Departure" -msgstr "出发日期" - -#: html/SelfService/Display.html:61 html/Ticket/Create.html:203 html/Ticket/Elements/ShowSummary:83 html/Ticket/Elements/Tabs:116 html/Ticket/ModifyAll.html:65 -msgid "Dates" -msgstr "日期" - -#: NOT FOUND IN SOURCE -msgid "Dec" -msgstr "十二月" - -#: lib/RT/Date.pm:452 -msgid "Dec." -msgstr "12" - -#: NOT FOUND IN SOURCE -msgid "December" -msgstr "十二月" - -#: NOT FOUND IN SOURCE -msgid "Default Approval" -msgstr "预设签核" - -#: NOT FOUND IN SOURCE -msgid "Default Autoresponse Template" -msgstr "预设自动响应模板" - -#: etc/initialdata:222 -msgid "Default Autoresponse template" -msgstr "预设自动响应模板" - -#: html/Tools/Offline.html:61 -msgid "Default Queue" -msgstr "预设表单" - -#: html/Tools/Offline.html:70 -msgid "Default Requestor" -msgstr "预设申请人" - -#: NOT FOUND IN SOURCE -msgid "Default Value" -msgstr "预设值" - -#: etc/initialdata:296 -msgid "Default admin comment template" -msgstr "预设管理员评论模板" - -#: etc/initialdata:275 -msgid "Default admin correspondence template" -msgstr "预设管理员回复模板" - -#: etc/initialdata:287 -msgid "Default correspondence template" -msgstr "预设回复模板" - -#: etc/initialdata:253 -msgid "Default transaction template" -msgstr "预设更动模板" - -#: NOT FOUND IN SOURCE -msgid "Default: %1/%2 changed from %3 to %4" -msgstr "预设:%1/%2 已自 %3 改为 %4" - -#: NOT FOUND IN SOURCE -msgid "DefaultApproval" -msgstr "预设签核" - -#: html/User/Delegation.html:46 html/User/Delegation.html:49 -msgid "Delegate rights" -msgstr "代理人权限" - -#: lib/RT/System.pm:84 -msgid "Delegate specific rights which have been granted to you." -msgstr "将拥有的权限委托他人代理" - -#: lib/RT/System.pm:84 -msgid "DelegateRights" -msgstr "设定代理人" - -#: NOT FOUND IN SOURCE -msgid "Delegated Approval" -msgstr "代理签核" - -#: NOT FOUND IN SOURCE -msgid "Delegated Queue" -msgstr "代理表单名称" - -#: NOT FOUND IN SOURCE -msgid "Delegated Queue:" -msgstr "代理表单:" - -#: NOT FOUND IN SOURCE -msgid "Delegated Type" -msgstr "代理表单种类" - -#: NOT FOUND IN SOURCE -msgid "Delegates" -msgstr "代理人" - -#: NOT FOUND IN SOURCE -msgid "Delegates Enabled Status" -msgstr "代理激活状态" - -#: NOT FOUND IN SOURCE -msgid "Delegates Info" -msgstr "代理人信息" - -#: NOT FOUND IN SOURCE -msgid "Delegates Period" -msgstr "代理期间" - -#: NOT FOUND IN SOURCE -msgid "Delegates Permission Setting" -msgstr "代理权限设定" - -#: NOT FOUND IN SOURCE -msgid "Delegates Permission:" -msgstr "代理权限:" - -#: NOT FOUND IN SOURCE -msgid "Delegates Setting" -msgstr "代理人设定" - -#: NOT FOUND IN SOURCE -msgid "Delegates Status" -msgstr "代理状态" - -#: html/User/Elements/Tabs:59 -msgid "Delegation" -msgstr "代理人权限" - -#: NOT FOUND IN SOURCE -msgid "Delegation Groups" -msgstr "代理人群组" - -#: NOT FOUND IN SOURCE -msgid "Delegation Rights" -msgstr "代理人权限" - -#: html/Admin/Elements/EditScrips:75 html/Search/Elements/EditFormat:103 html/Search/Elements/EditQuery:57 html/Search/Elements/EditSearches:63 html/Widgets/SelectionBox:204 -msgid "Delete" -msgstr "删除" - -#: html/Admin/Elements/EditTemplates:79 -msgid "Delete Template" -msgstr "删除模板" - -#: lib/RT/SavedSearch.pm:220 -#. ($msg) -msgid "Delete failed: %1" -msgstr "删除失败:%1" - -#: html/Admin/Elements/EditScrips:74 -msgid "Delete selected scrips" -msgstr "删除指定的手续" - -#: lib/RT/Queue_Overlay.pm:114 -msgid "Delete tickets" -msgstr "删除申请单" - -#: html/Search/Bulk.html:159 -msgid "Delete values" -msgstr "删除值" - -#: lib/RT/Queue_Overlay.pm:114 -msgid "DeleteTicket" -msgstr "删除申请单" - -#: lib/RT/SavedSearch.pm:218 -msgid "Deleted search" -msgstr "已删除的搜寻" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object could break referential integrity" -msgstr "删除此对象可能破坏参考完整性" - -#: lib/RT/Queue_Overlay.pm:394 -msgid "Deleting this object would break referential integrity" -msgstr "删除此对象可能破坏参考完整性" - -#: lib/RT/User_Overlay.pm:512 -msgid "Deleting this object would violate referential integrity" -msgstr "删除此对象会违反参考完整性" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object would violate referential integrity." -msgstr "删除此对象会违反参考完整性" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object would violate referential integrity. That's bad." -msgstr "删除此对象会违反参考完整性" - -#: html/Approvals/Elements/Approve:73 -msgid "Deny" -msgstr "驳回" - -#: NOT FOUND IN SOURCE -msgid "Department" -msgstr "部门" - -#: NOT FOUND IN SOURCE -msgid "Department ID" -msgstr "部门代码" - -#: NOT FOUND IN SOURCE -msgid "Department Name" -msgstr "部门名称" - -#: NOT FOUND IN SOURCE -msgid "Department's" -msgstr "部门之" - -#: NOT FOUND IN SOURCE -msgid "Departure Details" -msgstr "差旅明细" - -#: NOT FOUND IN SOURCE -msgid "Departure From" -msgstr "差旅起始日" - -#: NOT FOUND IN SOURCE -msgid "Departure Request" -msgstr "请假单" - -#: NOT FOUND IN SOURCE -msgid "Departure Until" -msgstr "差旅截止日" - -#: html/Elements/EditLinks:140 html/Elements/EditLinks:66 html/Elements/ShowLinks:58 html/Ticket/Create.html:221 html/Ticket/Elements/BulkLinks:56 html/Ticket/Elements/ShowDependencies:53 -msgid "Depended on by" -msgstr "可接续处理的申请单" - -#: NOT FOUND IN SOURCE -msgid "Dependencies: \\n" -msgstr "附属性:\\n" - -#: lib/RT/Transaction_Overlay.pm:718 -#. ($value) -msgid "Dependency by %1 added" -msgstr "已加入可接续处理的申请单 %1" - -#: lib/RT/Transaction_Overlay.pm:758 -#. ($value) -msgid "Dependency by %1 deleted" -msgstr "已移除可接续处理的申请单 %1" - -#: lib/RT/Transaction_Overlay.pm:715 -#. ($value) -msgid "Dependency on %1 added" -msgstr "已加入需先处理的申请单 %1" - -#: lib/RT/Transaction_Overlay.pm:755 -#. ($value) -msgid "Dependency on %1 deleted" -msgstr "已移除需先处理的申请单 %1" - -#: html/Elements/EditLinks:136 html/Elements/EditLinks:57 html/Elements/SelectLinkType:48 html/Elements/ShowLinks:48 html/Ticket/Create.html:220 html/Ticket/Elements/BulkLinks:52 html/Ticket/Elements/ShowDependencies:46 -msgid "Depends on" -msgstr "需先处理" - -#: NOT FOUND IN SOURCE -msgid "DependsOn" -msgstr "需先处理" - -#: html/Search/Elements/DisplayOptions:86 -msgid "Desc" -msgstr "递减" - -#: html/Elements/SelectSortOrder:56 -msgid "Descending" -msgstr "递减" - -#: html/SelfService/Create.html:100 html/Ticket/Create.html:152 -msgid "Describe the issue below" -msgstr "在以下字段描述主题" - -#: html/Admin/CustomFields/Modify.html:61 html/Admin/Elements/AddCustomFieldValue:57 html/Admin/Elements/EditCustomField:60 html/Admin/Elements/EditCustomFieldValues:56 html/Admin/Elements/EditScrip:55 html/Admin/Elements/ModifyTemplate:57 html/Admin/Groups/Modify.html:71 html/Admin/Queues/Modify.html:69 html/Search/Elements/EditSearches:56 html/User/Groups/Modify.html:70 -msgid "Description" -msgstr "描述" - -#: NOT FOUND IN SOURCE -msgid "Description of Responsibility" -msgstr "经办业务说明" - -#: NOT FOUND IN SOURCE -msgid "Description:" -msgstr "描述:" - -#: NOT FOUND IN SOURCE -msgid "Details" -msgstr "细节" - -#: NOT FOUND IN SOURCE -msgid "Direct" -msgstr "直接" - -#: NOT FOUND IN SOURCE -msgid "Disability" -msgstr "残障身分" - -#: NOT FOUND IN SOURCE -msgid "Disability Type" -msgstr "残障类别" - -#: NOT FOUND IN SOURCE -msgid "Disabled" -msgstr "停用" - -#: html/Search/Elements/EditFormat:71 html/Ticket/Elements/Tabs:108 -msgid "Display" -msgstr "显示内容" - -#: lib/RT/Queue_Overlay.pm:93 -msgid "Display Access Control List" -msgstr "显示权限控制清单" - -#: html/Search/Elements/DisplayOptions:46 -msgid "Display Columns" -msgstr "显示字段" - -#: lib/RT/Queue_Overlay.pm:99 -msgid "Display Scrip templates for this queue" -msgstr "显示此表单的模板" - -#: lib/RT/Queue_Overlay.pm:102 -msgid "Display Scrips for this queue" -msgstr "显示此表单的手续" - -#: html/Ticket/Elements/ShowHistory:59 -msgid "Display mode" -msgstr "显示模式" - -#: lib/RT/Group_Overlay.pm:168 -msgid "Display saved searches for this group" -msgstr "显示此群组的预存查询" - -#: NOT FOUND IN SOURCE -msgid "Display ticket #%1" -msgstr "显示第%1号申请单" - -#: html/Elements/Footer:61 -msgid "Distributed under version 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> of the GNU GPL.</a>" -msgstr "依 <a href=\"http://www.gnu.org/copyleft/gpl.html\">GNU 通用公共授权</a> 第二版散布。" - -#: lib/RT/System.pm:75 -msgid "Do anything and everything" -msgstr "允许一切操作" - -#: html/Elements/Refresh:51 -msgid "Don't refresh this page." -msgstr "不更新此页面。" - -#: NOT FOUND IN SOURCE -msgid "Don't show search results" -msgstr "不显示查询结果" - -#: NOT FOUND IN SOURCE -msgid "Done" -msgstr "完成" - -#: NOT FOUND IN SOURCE -msgid "Down" -msgstr "下一页" - -#: html/Ticket/Elements/ShowTransactionAttachments:82 -msgid "Download" -msgstr "下载" - -#: html/Admin/Groups/index.html:61 html/Admin/Users/index.html:64 -msgid "Download as a tab-delimited file" -msgstr "下载以 Tab 分隔的档案" - -#: NOT FOUND IN SOURCE -msgid "Dr." -msgstr "博士" - -#: html/Elements/SelectDateType:53 html/Ticket/Create.html:209 html/Ticket/Elements/EditDates:66 html/Ticket/Elements/Reminders:133 html/Ticket/Elements/ShowDates:64 lib/RT/Ticket_Overlay.pm:1173 -msgid "Due" -msgstr "到期日" - -#: NOT FOUND IN SOURCE -msgid "Due Date" -msgstr "截止日" - -#: NOT FOUND IN SOURCE -msgid "Due date '%1' could not be parsed" -msgstr "无法解读日期 '%1'" - -#: NOT FOUND IN SOURCE -msgid "ERROR: Couldn't load ticket '%1': %2.\\n" -msgstr "无法加载申请单 '%1':%2.\\n" - -#: html/Elements/Quicksearch:48 html/Elements/ShowSearch:49 html/index.html:107 -msgid "Edit" -msgstr "编辑" - -#: NOT FOUND IN SOURCE -msgid "Edit Conditions" -msgstr "编辑前置条件" - -#: html/Search/Bulk.html:149 -msgid "Edit Custom Fields" -msgstr "编辑自订字段" - -#: html/Admin/Elements/ObjectCustomFields:92 html/Admin/Queues/CustomFields.html:64 html/Admin/Users/CustomFields.html:64 -#. ($Object->Name) -msgid "Edit Custom Fields for %1" -msgstr "编辑 %1 的自订字段" - -#: html/Admin/Global/CustomFields/Groups.html:54 -msgid "Edit Custom Fields for all groups" -msgstr "编辑适用于所有群组的自订字段" - -#: html/Admin/Global/CustomFields/Users.html:54 -msgid "Edit Custom Fields for all users" -msgstr "编辑适用于所有使用者的自订字段" - -#: NOT FOUND IN SOURCE -msgid "Edit Custom Fields for queue %1" -msgstr "编辑表单 %1 的自订字段" - -#: html/Admin/Global/CustomFields/Queue-Tickets.html:54 html/Admin/Global/CustomFields/Queue-Transactions.html:54 -msgid "Edit Custom Fields for tickets in all queues" -msgstr "编辑适用于所有表单内申请单的自订字段" - -#: html/Search/Bulk.html:188 html/Ticket/ModifyLinks.html:57 -msgid "Edit Links" -msgstr "编辑申请单关系" - -#: html/Search/Edit.html:68 -msgid "Edit Query" -msgstr "编辑查询" - -#: html/Ticket/Elements/Tabs:214 -msgid "Edit Search" -msgstr "编辑查询" - -#: NOT FOUND IN SOURCE -msgid "Edit Subgroups" -msgstr "新增/维护子群组" - -#: html/Admin/Queues/Templates.html:63 -#. ($QueueObj->Name) -msgid "Edit Templates for queue %1" -msgstr "编辑表单 %1 的模板" - -#: NOT FOUND IN SOURCE -msgid "Edit Workflows for queue %1" -msgstr "编辑表单 %1 的流程" - -#: NOT FOUND IN SOURCE -msgid "Edit keywords" -msgstr "编辑关键词" - -#: lib/RT/Group_Overlay.pm:167 -msgid "Edit saved searches for this group" -msgstr "编辑此群组的预存查询" - -#: NOT FOUND IN SOURCE -msgid "Edit scrips" -msgstr "编辑手续" - -#: html/Admin/Elements/GlobalCustomFieldTabs:60 html/Admin/Global/index.html:67 -msgid "Edit system templates" -msgstr "编辑全域模板" - -#: NOT FOUND IN SOURCE -msgid "Edit system workflows" -msgstr "编辑全域流程" - -#: NOT FOUND IN SOURCE -msgid "Edit templates for %1" -msgstr "编辑 %1 的模板" - -#: NOT FOUND IN SOURCE -msgid "Edit workflows for %1" -msgstr "编辑 %1 的流程" - -#: lib/RT/Group_Overlay.pm:167 -msgid "EditSavedSearches" -msgstr "编辑预存查询" - -#: html/Admin/Queues/Modify.html:140 -#. ($QueueObj->Name) -msgid "Editing Configuration for queue %1" -msgstr "编辑表单 %1 的设定" - -#: NOT FOUND IN SOURCE -msgid "Editing Configuration for user %1" -msgstr "编辑使用者 %1 的设定" - -#: html/Admin/CustomFields/Modify.html:167 html/Admin/Elements/EditCustomField:120 -#. ($CustomFieldObj->Name()) -msgid "Editing CustomField %1" -msgstr "编辑自订字段 %1" - -#: html/Admin/Groups/Members.html:53 -#. ($Group->Name) -msgid "Editing membership for group %1" -msgstr "编辑群组 %1 的成员信息" - -#: html/User/Groups/Members.html:150 -#. ($Group->Name) -msgid "Editing membership for personal group %1" -msgstr "编辑代理人群组 %1 的成员信息" - -#: NOT FOUND IN SOURCE -msgid "Editing template %1" -msgstr "编辑模板 %1" - -#: NOT FOUND IN SOURCE -msgid "Editing workflow %1" -msgstr "编辑流程 %1" - -#: NOT FOUND IN SOURCE -msgid "Education" -msgstr "最高学历" - -#: NOT FOUND IN SOURCE -msgid "EffectiveId" -msgstr "有效编号" - -#: lib/RT/Record.pm:1295 lib/RT/Record.pm:1372 lib/RT/Ticket_Overlay.pm:2518 lib/RT/Ticket_Overlay.pm:2608 -msgid "Either base or target must be specified" -msgstr "需要指定起始申请单或目的申请单" - -#: html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65 -msgid "Email" -msgstr "电子邮件信箱" - -#: NOT FOUND IN SOURCE -msgid "Email Address" -msgstr "电子邮件信箱" - -#: lib/RT/User_Overlay.pm:235 -msgid "Email address in use" -msgstr "此电子邮件信箱已被使用" - -#: NOT FOUND IN SOURCE -msgid "EmailAddress" -msgstr "电子邮件信箱地址" - -#: NOT FOUND IN SOURCE -msgid "EmailEncoding" -msgstr "电子邮件文字编码方式" - -#: NOT FOUND IN SOURCE -msgid "Embark Date" -msgstr "外籍员工入境日" - -#: NOT FOUND IN SOURCE -msgid "Embarked Date" -msgstr "抵达日期" - -#: NOT FOUND IN SOURCE -msgid "Embarked Location" -msgstr "抵达地点" - -#: NOT FOUND IN SOURCE -msgid "Enable Delegates" -msgstr "代理激活" - -#: html/Admin/CustomFields/Modify.html:98 html/Admin/Elements/EditCustomField:72 -msgid "Enabled (Unchecking this box disables this custom field)" -msgstr "启用(取消勾选将停用此自订字段)" - -#: html/Admin/Groups/Modify.html:84 html/User/Groups/Modify.html:74 -msgid "Enabled (Unchecking this box disables this group)" -msgstr "启用(取消勾选将停用此群组)" - -#: html/Admin/Queues/Modify.html:105 -msgid "Enabled (Unchecking this box disables this queue)" -msgstr "启用(取消勾选将停用此表单)" - -#: NOT FOUND IN SOURCE -msgid "Enabled Custom Fields" -msgstr "已启用的自订字段" - -#: NOT FOUND IN SOURCE -msgid "Enabled Date" -msgstr "启用日期" - -#: NOT FOUND IN SOURCE -msgid "Enabled Date:" -msgstr "激活日期:" - -#: html/Admin/Queues/index.html:78 -msgid "Enabled Queues" -msgstr "已启用的表单" - -#: NOT FOUND IN SOURCE -msgid "Enabled Status" -msgstr "启用状态" - -#: html/Admin/Elements/EditCustomField:136 html/Admin/Groups/Modify.html:150 html/Admin/Users/Modify.html:350 html/User/Groups/Modify.html:138 -#. (loc_fuzzy($msg)) -msgid "Enabled status %1" -msgstr "启用状态 %1" - -#: html/Admin/CustomFields/Modify.html:185 html/Admin/Queues/Modify.html:162 -#. (loc_fuzzy($msg)) -msgid "Enabled status: %1" -msgstr "启用状态: %1" - -#: NOT FOUND IN SOURCE -msgid "End of Trial" -msgstr "试用期满日" - -#: NOT FOUND IN SOURCE -msgid "English Name" -msgstr "英文姓名" - -#: lib/RT/CustomField_Overlay.pm:64 -msgid "Enter multiple values" -msgstr "键入多重项目" - -#: html/Elements/EditLinks:126 -msgid "Enter objects or URIs to link objects to. Separate multiple entries with spaces." -msgstr "键入欲将对象连结至的对象或 URI。项目之间请以空白隔开。" - -#: NOT FOUND IN SOURCE -msgid "Enter one or more conditions below to search for users" -msgstr "键入下列单一或复式条件,查询用户数据" - -#: lib/RT/CustomField_Overlay.pm:65 -msgid "Enter one value" -msgstr "键入单一项目" - -#: html/Elements/EditLinks:123 -msgid "Enter queues or URIs to link queues to. Separate multiple entries with spaces." -msgstr "键入欲将表单连结至的对象或 URI。项目之间请以空白隔开。" - -#: html/Elements/EditLinks:119 html/Search/Bulk.html:189 -msgid "Enter tickets or URIs to link tickets to. Separate multiple entries with spaces." -msgstr "键入申请单可链接到的申请单编号或网址。项目之间请以空白隔开。" - -#: lib/RT/CustomField_Overlay.pm:66 -msgid "Enter up to %1 values" -msgstr "键入最多 %1 个项目" - -#: NOT FOUND IN SOURCE -msgid "EntryBoolean" -msgstr "是非填表" - -#: NOT FOUND IN SOURCE -msgid "EntryDate" -msgstr "日期填表" - -#: NOT FOUND IN SOURCE -msgid "EntryExternal" -msgstr "系统填表" - -#: NOT FOUND IN SOURCE -msgid "EntryFreeform" -msgstr "输入填表" - -#: NOT FOUND IN SOURCE -msgid "EntryMultiple" -msgstr "多选填表" - -#: NOT FOUND IN SOURCE -msgid "EntryNumber" -msgstr "数值填表" - -#: NOT FOUND IN SOURCE -msgid "EntrySelect" -msgstr "单选填表" - -#: NOT FOUND IN SOURCE -msgid "EntryTime" -msgstr "时间填表" - -#: html/Elements/Login:76 html/SelfService/Error.html:46 html/SelfService/Error.html:47 -msgid "Error" -msgstr "错误" - -#: NOT FOUND IN SOURCE -msgid "Error adding watcher" -msgstr "新增视察员失败" - -#: lib/RT/Queue_Overlay.pm:672 -msgid "Error in parameters to Queue->AddWatcher" -msgstr "表单->新增视察员的参数有误" - -#: lib/RT/Queue_Overlay.pm:833 -msgid "Error in parameters to Queue->DeleteWatcher" -msgstr "表单->删除视察员的参数有误" - -#: lib/RT/Ticket_Overlay.pm:1372 -msgid "Error in parameters to Ticket->AddWatcher" -msgstr "申请单->新增视察员的参数有误" - -#: lib/RT/Ticket_Overlay.pm:1538 -msgid "Error in parameters to Ticket->DeleteWatcher" -msgstr "申请单->删除视察员的参数有误" - -#: bin/rt-crontool:285 -msgid "Escalate tickets" -msgstr "调整申请单优先等级" - -#: NOT FOUND IN SOURCE -msgid "Estimate" -msgstr "预计" - -#: html/Ticket/Elements/ShowBasics:57 -msgid "Estimated" -msgstr "预计" - -#: etc/initialdata:20 -msgid "Everyone" -msgstr "所有人" - -#: bin/rt-crontool:271 -msgid "Example:" -msgstr "范例:" - -#: NOT FOUND IN SOURCE -msgid "Existing user renamed from %1 to %2" -msgstr "现有使用者 %1 已改名为 %2" - -#: NOT FOUND IN SOURCE -msgid "Export" -msgstr "汇出" - -#: NOT FOUND IN SOURCE -msgid "ExternalAuthId" -msgstr "外部认证帐号" - -#: NOT FOUND IN SOURCE -msgid "ExternalContactInfoId" -msgstr "外部联络方式帐号" - -#: NOT FOUND IN SOURCE -msgid "ExternalDatabaseDSN" -msgstr "外部数据库连结字符串" - -#: NOT FOUND IN SOURCE -msgid "ExternalDatabasePass" -msgstr "外部数据库口令" - -#: NOT FOUND IN SOURCE -msgid "ExternalDatabaseUser" -msgstr "外部数据库用户" - -#: NOT FOUND IN SOURCE -msgid "ExternalURL" -msgstr "外部接口网址" - -#: html/Admin/Users/Modify.html:99 -msgid "Extra info" -msgstr "备注" - -#: lib/RT/SavedSearch.pm:177 -msgid "Failed to create search attribute" -msgstr "查询属性建立失败" - -#: lib/RT/User_Overlay.pm:376 -msgid "Failed to find 'Privileged' users pseudogroup." -msgstr "找不到‘内部成员’虚拟群组的使用者。" - -#: lib/RT/User_Overlay.pm:383 -msgid "Failed to find 'Unprivileged' users pseudogroup" -msgstr "找不到‘非内部成员’虚拟群组的使用者。" - -#: bin/rt-crontool:206 -#. ($modname, $@) -msgid "Failed to load module %1. (%2)" -msgstr "无法加载模块 %1。(%2)" - -#: lib/RT/SavedSearch.pm:152 -#. ($privacy) -msgid "Failed to load object for %1" -msgstr "无法为 %1 加载对象。" - -#: NOT FOUND IN SOURCE -msgid "Feb" -msgstr "二月" - -#: lib/RT/Date.pm:442 -msgid "Feb." -msgstr "02" - -#: NOT FOUND IN SOURCE -msgid "February" -msgstr "二月" - -#: NOT FOUND IN SOURCE -msgid "Female" -msgstr "女" - -#: NOT FOUND IN SOURCE -msgid "Field Content:" -msgstr "字段内容:" - -#: NOT FOUND IN SOURCE -msgid "Field Description" -msgstr "字段描述" - -#: NOT FOUND IN SOURCE -msgid "Field Name" -msgstr "字段名称" - -#: NOT FOUND IN SOURCE -msgid "Field Type" -msgstr "字段类别" - -#: html/Elements/SelectAttachmentField:50 -msgid "Filename" -msgstr "档名" - -#: lib/RT/CustomField_Overlay.pm:69 -msgid "Fill in multiple text areas" -msgstr "填入多个文字框" - -#: lib/RT/CustomField_Overlay.pm:74 -msgid "Fill in multiple wikitext areas" -msgstr "填入多个 Wiki 文字框" - -#: lib/RT/CustomField_Overlay.pm:70 -msgid "Fill in one text area" -msgstr "填入一个文字框" - -#: lib/RT/CustomField_Overlay.pm:75 -msgid "Fill in one wikitext area" -msgstr "填入一个 Wiki 文字框" - -#: html/Admin/CustomFields/Modify.html:107 html/Admin/CustomFields/Modify.html:118 -msgid "Fill in this field with a URL." -msgstr "填入一个网址" - -#: lib/RT/CustomField_Overlay.pm:71 -msgid "Fill in up to %1 text areas" -msgstr "填入最多 %1 个文字框" - -#: lib/RT/CustomField_Overlay.pm:76 -msgid "Fill in up to %1 wikitext areas" -msgstr "填入最多 %1 个 Wiki 文字框" - -#: NOT FOUND IN SOURCE -msgid "Filter" -msgstr "筛选" - -#: NOT FOUND IN SOURCE -msgid "Filter people" -msgstr "对象筛选" - -#: NOT FOUND IN SOURCE -msgid "Filtered list:" -msgstr "筛选列表:" - -#: NOT FOUND IN SOURCE -msgid "Fin" -msgstr "最终" - -#: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:182 html/Ticket/Elements/EditBasics:97 lib/RT/Tickets_Overlay.pm:1841 -msgid "Final Priority" -msgstr "最终顺位" - -#: lib/RT/Ticket_Overlay.pm:1164 -msgid "FinalPriority" -msgstr "最终顺位" - -#: NOT FOUND IN SOURCE -msgid "Financial Department:" -msgstr "财务部:" - -#: NOT FOUND IN SOURCE -msgid "Find group whose" -msgstr "寻找群组的" - -#: html/Admin/Groups/index.html:72 html/Admin/Queues/People.html:82 html/Ticket/Elements/EditPeople:55 -msgid "Find groups whose" -msgstr "寻找群组的" - -#: NOT FOUND IN SOURCE -msgid "Find new/open tickets" -msgstr "寻找/开启申请单" - -#: html/Admin/Queues/People.html:78 html/Admin/Users/index.html:70 html/Ticket/Elements/EditPeople:51 -msgid "Find people whose" -msgstr "寻找人员的" - -#: NOT FOUND IN SOURCE -msgid "Find queues whose" -msgstr "寻找表单的" - -#: html/Search/Results.html:147 -msgid "Find tickets" -msgstr "寻找申请单" - -#: NOT FOUND IN SOURCE -msgid "Finish Approval" -msgstr "签核完毕" - -#: html/Ticket/Elements/Tabs:81 -msgid "First" -msgstr "第一项" - -#: NOT FOUND IN SOURCE -msgid "First page" -msgstr "第一页" - -#: NOT FOUND IN SOURCE -msgid "First-" -msgstr "一" - -#: NOT FOUND IN SOURCE -msgid "First-level Admins" -msgstr "一阶主管" - -#: NOT FOUND IN SOURCE -msgid "First-level Users" -msgstr "一阶主管员工" - -#: NOT FOUND IN SOURCE -msgid "Fixed shift" -msgstr "固定班" - -#: docs/design_docs/string-extraction-guide.txt:33 lib/RT/StyleGuide.pod:766 -msgid "Foo Bar Baz" -msgstr "甲 乙 丙" - -#: docs/design_docs/string-extraction-guide.txt:24 lib/RT/StyleGuide.pod:757 -msgid "Foo!" -msgstr "甲!" - -#: html/Search/Bulk.html:83 -msgid "Force change" -msgstr "强制更换" - -#: NOT FOUND IN SOURCE -msgid "Form Processing" -msgstr "电子表单作业区" - -#: html/Search/Elements/EditFormat:52 -msgid "Format" -msgstr "格式" - -#: html/Search/Results.html:145 -#. ($ticketcount) -msgid "Found %quant(%1,ticket)" -msgstr "找到 %1 张申请单" - -#: lib/RT/Record.pm:956 -msgid "Found Object" -msgstr "已找到对象" - -#: NOT FOUND IN SOURCE -msgid "Fourth-" -msgstr "四" - -#: NOT FOUND IN SOURCE -msgid "Freeform" -msgstr "输入" - -#: NOT FOUND IN SOURCE -msgid "FreeformContactInfo" -msgstr "联络方式" - -#: NOT FOUND IN SOURCE -msgid "FreeformDate" -msgstr "日期输入" - -#: NOT FOUND IN SOURCE -msgid "FreeformExternal" -msgstr "系统字段" - -#: NOT FOUND IN SOURCE -msgid "FreeformMultiple" -msgstr "多重输入" - -#: NOT FOUND IN SOURCE -msgid "FreeformNumber" -msgstr "数值输入" - -#: NOT FOUND IN SOURCE -msgid "FreeformPassword" -msgstr "口令输入" - -#: NOT FOUND IN SOURCE -msgid "FreeformSingle" -msgstr "单一输入" - -#: NOT FOUND IN SOURCE -msgid "FreeformTime" -msgstr "时间输入" - -#: NOT FOUND IN SOURCE -msgid "Fri" -msgstr "星期五" - -#: lib/RT/Date.pm:421 -msgid "Fri." -msgstr "星期五" - -#: html/Ticket/Elements/ShowHistory:66 html/Ticket/Elements/ShowHistory:72 -msgid "Full headers" -msgstr "完整标头档" - -#: NOT FOUND IN SOURCE -msgid "Gecos" -msgstr "登入帐号" - -#: NOT FOUND IN SOURCE -msgid "Gender" -msgstr "性别" - -#: html/Tools/Offline.html:85 -msgid "Get template from file" -msgstr "取出档案里的模板" - -#: NOT FOUND IN SOURCE -msgid "Getting the current user from a pgp sig\\n" -msgstr "取得目前使用者的 pgp 签章\\n" - -#: lib/RT/Transaction_Overlay.pm:684 -#. ($New->Name) -msgid "Given to %1" -msgstr "交予 %1" - -#: html/Admin/Elements/Tabs:65 html/Admin/index.html:82 -msgid "Global" -msgstr "全域设定" - -#: NOT FOUND IN SOURCE -msgid "Global Approval" -msgstr "全域签核" - -#: html/Admin/Elements/EditCustomFields:55 -msgid "Global Custom Fields" -msgstr "全域自订字段" - -#: NOT FOUND IN SOURCE -msgid "Global Keyword Selections" -msgstr "全域关键词选取" - -#: NOT FOUND IN SOURCE -msgid "Global Rights:" -msgstr "拥有全域权限列表:" - -#: NOT FOUND IN SOURCE -msgid "Global Scrips" -msgstr "全域手续" - -#: NOT FOUND IN SOURCE -msgid "Global Setup" -msgstr "全域设定" - -#: html/Admin/Global/CustomFields/index.html:59 -msgid "Global custom field configuration" -msgstr "全域自订字段设定" - -#: html/Admin/Global/MyRT.html:48 -#. ($pane) -msgid "Global portlet %1 saved." -msgstr "成功储存全域入口组件 %1。" - -#: html/Admin/Elements/SelectTemplate:59 -#. (loc($Template->Name)) -msgid "Global template: %1" -msgstr "全域模板:%1" - -#: NOT FOUND IN SOURCE -msgid "GlobalApproval" -msgstr "全域签核" - -#: html/Admin/CustomFields/index.html:80 html/Search/Results.html:90 html/Tools/Offline.html:89 -msgid "Go" -msgstr "执行" - -#: html/Admin/Groups/index.html:67 html/Admin/Groups/index.html:73 html/Admin/Queues/People.html:80 html/Admin/Queues/People.html:84 html/Admin/Queues/index.html:66 html/Admin/Users/index.html:73 html/Elements/RefreshHomepage:48 html/Search/Results.html:74 html/Ticket/Elements/EditPeople:53 html/Ticket/Elements/EditPeople:57 -msgid "Go!" -msgstr "执行" - -#: NOT FOUND IN SOURCE -msgid "Good pgp sig from %1\\n" -msgstr "%1 的 pgp 签章是正确的\\n" - -#: NOT FOUND IN SOURCE -msgid "Goto page" -msgstr "到页面" - -#: html/Elements/GotoTicket:46 html/SelfService/Elements/GotoTicket:46 -msgid "Goto ticket" -msgstr "跳到申请单" - -#: NOT FOUND IN SOURCE -msgid "Grand" -msgstr "上" - -#: html/Ticket/Elements/AddWatchers:67 html/Ticket/Elements/ShowGroupMembers:55 html/User/Elements/DelegateRights:99 -msgid "Group" -msgstr "群组" - -#: NOT FOUND IN SOURCE -msgid "Group %1 %2: %3" -msgstr "群组 %1 %2:%3" - -#: NOT FOUND IN SOURCE -msgid "Group Admin" -msgstr "群组管理员" - -#: NOT FOUND IN SOURCE -msgid "Group Description" -msgstr "群组描述" - -#: NOT FOUND IN SOURCE -msgid "Group Management" -msgstr "群组管理" - -#: NOT FOUND IN SOURCE -msgid "Group Members" -msgstr "群组成员" - -#: NOT FOUND IN SOURCE -msgid "Group Name" -msgstr "群组名称" - -#: NOT FOUND IN SOURCE -msgid "Group Name:" -msgstr "群组名称:" - -#: html/Admin/Elements/CustomFieldTabs:68 html/Admin/Elements/GroupTabs:66 html/Admin/Elements/QueueTabs:82 html/Admin/Elements/SystemTabs:65 html/Admin/Global/index.html:76 -msgid "Group Rights" -msgstr "群组权限" - -#: NOT FOUND IN SOURCE -msgid "Group Rights:" -msgstr "拥有群组权限列表:" - -#: NOT FOUND IN SOURCE -msgid "Group Setup" -msgstr "群组设定" - -#: NOT FOUND IN SOURCE -msgid "Group Status" -msgstr "群组状态" - -#: lib/RT/Group_Overlay.pm:983 -msgid "Group already has member" -msgstr "群组内已有此成员" - -#: NOT FOUND IN SOURCE -msgid "Group could not be created." -msgstr "无法新增群组" - -#: html/Admin/Groups/Modify.html:109 -#. ($create_msg) -msgid "Group could not be created: %1" -msgstr "无法新增群组:%1" - -#: lib/RT/Group_Overlay.pm:521 -msgid "Group created" -msgstr "群组新增完毕" - -#: NOT FOUND IN SOURCE -msgid "Group created: %1" -msgstr "群组 %1 新增完毕" - -#: lib/RT/Group_Overlay.pm:1155 -msgid "Group has no such member" -msgstr "群组没有这个成员" - -#: lib/RT/Group_Overlay.pm:963 lib/RT/Queue_Overlay.pm:748 lib/RT/Queue_Overlay.pm:808 lib/RT/Ticket_Overlay.pm:1430 lib/RT/Ticket_Overlay.pm:1510 -msgid "Group not found" -msgstr "找不到群组" - -#: NOT FOUND IN SOURCE -msgid "Group not found.\\n" -msgstr "找不到群组。\\n" - -#: NOT FOUND IN SOURCE -msgid "Group not specified.\\n" -msgstr "未指定群组。\\n" - -#: NOT FOUND IN SOURCE -msgid "Group redescribed from %1 to %2" -msgstr "群组描述 %1 已改为 %2" - -#: NOT FOUND IN SOURCE -msgid "Group renamed from %1 to %2" -msgstr "群组 %1 已改名为 %2" - -#: NOT FOUND IN SOURCE -msgid "Group with Queue Rights" -msgstr "拥有表单权限群组" - -#: NOT FOUND IN SOURCE -msgid "Group's" -msgstr "群组之" - -#: NOT FOUND IN SOURCE -msgid "Group:" -msgstr "群组:" - -#: html/Admin/Elements/GlobalCustomFieldTabs:59 html/Admin/Elements/SelectNewGroupMembers:57 html/Admin/Elements/Tabs:56 html/Admin/Global/CustomFields/index.html:69 html/Admin/Groups/Members.html:86 html/Admin/Queues/People.html:104 html/Admin/Users/Memberships.html:53 html/Admin/index.html:67 html/User/Groups/Members.html:88 lib/RT/CustomField_Overlay.pm:1210 -msgid "Groups" -msgstr "群组" - -#: lib/RT/Group_Overlay.pm:989 -msgid "Groups can't be members of their members" -msgstr "不能将群组设为群组内成员" - -#: html/Admin/Groups/index.html:86 -msgid "Groups matching search criteria" -msgstr "符合查询条件的群组" - -#: html/Ticket/Elements/ShowRequestor:77 -msgid "Groups this user belongs to" -msgstr "使用者所属的群组" - -#: NOT FOUND IN SOURCE -msgid "Groups with Global Rights" -msgstr "拥有全域权限群组" - -#: NOT FOUND IN SOURCE -msgid "HRMSDefined" -msgstr "组织架构" - -#: NOT FOUND IN SOURCE -msgid "HTML Attributes" -msgstr "HTML 属性" - -#: NOT FOUND IN SOURCE -msgid "Health Insurance" -msgstr "健保补助身份" - -#: lib/RT/Interface/CLI.pm:94 lib/RT/Interface/CLI.pm:94 -msgid "Hello!" -msgstr "嗨!" - -#: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:773 -#. ($name) -msgid "Hello, %1" -msgstr "嗨,%1" - -#: NOT FOUND IN SOURCE -msgid "Help" -msgstr "说明" - -#: NOT FOUND IN SOURCE -msgid "Help Desks" -msgstr "各项业务窗口" - -#: NOT FOUND IN SOURCE -msgid "Hidden" -msgstr "隐藏" - -#: html/Admin/Elements/GroupTabs:70 html/Admin/Elements/UserTabs:64 html/Ticket/Elements/ShowHistory:53 html/Ticket/Elements/Tabs:111 -msgid "History" -msgstr "纪录" - -#: html/Admin/Groups/History.html:62 -#. ($GroupObj->Name) -msgid "History of the group %1" -msgstr "群组 %1 的纪录" - -#: html/Admin/Users/History.html:62 -#. ($UserObj->Name) -msgid "History of the user %1" -msgstr "使用者 %1 的纪录" - -#: NOT FOUND IN SOURCE -msgid "HomePhone" -msgstr "住处电话" - -#: html/Elements/Tabs:65 -msgid "Homepage" -msgstr "主页" - -#: NOT FOUND IN SOURCE -msgid "Hotel Expense" -msgstr "住宿费" - -#: html/Elements/SelectTimeUnits:48 -msgid "Hours" -msgstr "小时" - -#: lib/RT/Base.pm:119 -#. (6) -msgid "I have %quant(%1,concrete mixer)." -msgstr "我有 %quant(%1,份固体搅拌器)。" - -#: html/Search/Build.html:460 lib/RT/Report/Tickets.pm:415 -msgid "I'm lost" -msgstr "我昏了" - -#: NOT FOUND IN SOURCE -msgid "ID Number" -msgstr "身分证号" - -#: NOT FOUND IN SOURCE -msgid "ID Type" -msgstr "身分类别" - -#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1766 -msgid "Id" -msgstr "编号" - -#: html/Admin/Users/Modify.html:65 html/User/Prefs.html:60 -msgid "Identity" -msgstr "身份" - -#: etc/initialdata:429 -msgid "If an approval is rejected, reject the original and delete pending approvals" -msgstr "若签核单遭到驳回,则连带驳回原申请单,并删除其它相关的待签核事项" - -#: html/Tools/Offline.html:74 -msgid "If no Requestor is specified, create tickets with this requestor." -msgstr "若没有指定申请者,则以此使用者作为申请者" - -#: html/Tools/Offline.html:65 -msgid "If no queue is specified, create tickets in this queue." -msgstr "申请单若没有指定表单,则将它新增在此表单内" - -#: bin/rt-crontool:267 -msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." -msgstr "如果此工具程序为 setgid,恶意的本地端用户即能由此取得 RT 的管理员权限。" - -#: html/Admin/Queues/People.html:126 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:128 html/Ticket/ModifyPeople.html:60 -msgid "If you've updated anything above, be sure to" -msgstr "若您已更新以上数据,请记得按一下" - -#: lib/RT/Record.pm:947 -msgid "Illegal value for %1" -msgstr "%1 的值错误" - -#: NOT FOUND IN SOURCE -msgid "Image" -msgstr "图片" - -#: lib/RT/Record.pm:950 -msgid "Immutable field" -msgstr "此字段值不可更动" - -#: NOT FOUND IN SOURCE -msgid "Import" -msgstr "汇入" - -#: NOT FOUND IN SOURCE -msgid "Include disabled custom fields in listing." -msgstr "列出停用的自订字段" - -#: html/Admin/Groups/index.html:65 -msgid "Include disabled groups in listing." -msgstr "列出停用的群组" - -#: html/Admin/Queues/index.html:65 -msgid "Include disabled queues in listing." -msgstr "列出停用的表单" - -#: html/Admin/Users/index.html:71 -msgid "Include disabled users in search." -msgstr "列出停用的使用者" - -#: html/Admin/CustomFields/Modify.html:113 -msgid "Include page" -msgstr "引入页面" - -#: html/Search/Build.html:486 lib/RT/Report/Tickets.pm:441 -msgid "Incomplete Query" -msgstr "不完整的查询" - -#: html/Search/Build.html:483 lib/RT/Report/Tickets.pm:438 -msgid "Incomplete query" -msgstr "不完整的查询" - -#: NOT FOUND IN SOURCE -msgid "Indirect Employee" -msgstr "直接/间接员工" - -#: html/Search/Elements/PickBasics:148 lib/RT/Tickets_Overlay.pm:1816 -msgid "Initial Priority" -msgstr "初始优先顺位" - -#: lib/RT/Ticket_Overlay.pm:1163 lib/RT/Ticket_Overlay.pm:1165 -msgid "InitialPriority" -msgstr "初始优先顺位" - -#: lib/RT/ScripAction_Overlay.pm:133 -msgid "Input error" -msgstr "输入错误" - -#: html/Elements/ValidateCustomFields:68 lib/RT/CustomField_Overlay.pm:1021 lib/RT/CustomField_Overlay.pm:1162 -#. ($self->FriendlyPattern) -#. ($CF->FriendlyPattern) -msgid "Input must match %1" -msgstr "输入必须符合 %1" - -#: NOT FOUND IN SOURCE -msgid "Interest noted" -msgstr "登记成功" - -#: lib/RT/Ticket_Overlay.pm:3503 -msgid "Internal Error" -msgstr "内部错误" - -#: lib/RT/Record.pm:308 -#. ($id->{error_message}) -msgid "Internal Error: %1" -msgstr "内部错误:%1" - -#: lib/RT/Group_Overlay.pm:668 -msgid "Invalid Group Type" -msgstr "错误的群组类别" - -#: lib/RT/Principal_Overlay.pm:161 -msgid "Invalid Right" -msgstr "错误的权限" - -#: NOT FOUND IN SOURCE -msgid "Invalid Type" -msgstr "错误的类型" - -#: lib/RT/Record.pm:952 -msgid "Invalid data" -msgstr "错误的数据" - -#: NOT FOUND IN SOURCE -msgid "Invalid owner. Defaulting to 'nobody'." -msgstr "错误的承办人。改为预设承办人‘nobody’。" - -#: lib/RT/CustomField_Overlay.pm:207 lib/RT/CustomField_Overlay.pm:678 -#. ($msg) -msgid "Invalid pattern: %1" -msgstr "不合理的样式:%1" - -#: lib/RT/Scrip_Overlay.pm:157 lib/RT/Template_Overlay.pm:244 -msgid "Invalid queue" -msgstr "错误的表单" - -#: lib/RT/ACE_Overlay.pm:264 lib/RT/ACE_Overlay.pm:273 lib/RT/ACE_Overlay.pm:279 lib/RT/ACE_Overlay.pm:290 -msgid "Invalid right" -msgstr "错误的权限" - -#: lib/RT/Record.pm:283 -#. ($key) -msgid "Invalid value for %1" -msgstr "%1 的值错误" - -#: lib/RT/Record.pm:1610 -msgid "Invalid value for custom field" -msgstr "错误的自订字段值" - -#: lib/RT/Ticket_Overlay.pm:424 -msgid "Invalid value for status" -msgstr "错误的状态值" - -#: NOT FOUND IN SOURCE -msgid "IssueStatement" -msgstr "送出陈述" - -#: bin/rt-crontool:268 -msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." -msgstr "请绝对不要让未具权限的使用者执行此工具程序。" - -#: bin/rt-crontool:269 -msgid "It is suggested that you create a non-privileged unix user with the correct group membership and RT access to run this tool." -msgstr "建议您新增一个隶属于正确群组的低权限系统使用者,并以该身份执行此工具程序。" - -#: bin/rt-crontool:231 -msgid "It takes several arguments:" -msgstr "它接受下列参数:" - -#: html/Search/Elements/EditFormat:85 -msgid "Italic" -msgstr "斜体" - -#: NOT FOUND IN SOURCE -msgid "Item Name" -msgstr "品名" - -#: NOT FOUND IN SOURCE -msgid "Items" -msgstr "笔" - -#: NOT FOUND IN SOURCE -msgid "Items pending my approval" -msgstr "待签核项目" - -#: NOT FOUND IN SOURCE -msgid "Jan" -msgstr "一月" - -#: lib/RT/Date.pm:441 -msgid "Jan." -msgstr "01" - -#: NOT FOUND IN SOURCE -msgid "January" -msgstr "一月" - -#: NOT FOUND IN SOURCE -msgid "Job" -msgstr "职称" - -#: lib/RT/Group_Overlay.pm:166 -msgid "Join or leave this group" -msgstr "加入或离开此群组" - -#: NOT FOUND IN SOURCE -msgid "Jul" -msgstr "七月" - -#: lib/RT/Date.pm:447 -msgid "Jul." -msgstr "07" - -#: NOT FOUND IN SOURCE -msgid "July" -msgstr "七月" - -#: html/Ticket/Elements/Tabs:125 -msgid "Jumbo" -msgstr "全部信息" - -#: NOT FOUND IN SOURCE -msgid "Jun" -msgstr "六月" - -#: lib/RT/Date.pm:446 -msgid "Jun." -msgstr "06" - -#: NOT FOUND IN SOURCE -msgid "June" -msgstr "六月" - -#: NOT FOUND IN SOURCE -msgid "Keyword" -msgstr "关键词" - -#: NOT FOUND IN SOURCE -msgid "LabelAttachments" -msgstr "附件卷标" - -#: NOT FOUND IN SOURCE -msgid "LabelContent" -msgstr "内容卷标" - -#: NOT FOUND IN SOURCE -msgid "LabelSubject" -msgstr "主题卷标" - -#: NOT FOUND IN SOURCE -msgid "LabelURL" -msgstr "链接卷标" - -#: NOT FOUND IN SOURCE -msgid "Lang" -msgstr "使用语言" - -#: html/Admin/Users/Modify.html:94 html/User/Prefs.html:76 -msgid "Language" -msgstr "语言" - -#: html/Search/Elements/EditFormat:79 -msgid "Large" -msgstr "大" - -#: html/Ticket/Elements/Tabs:96 -msgid "Last" -msgstr "上次更新" - -#: html/Ticket/Elements/EditDates:59 html/Ticket/Elements/ShowDates:60 -msgid "Last Contact" -msgstr "上次联络" - -#: html/Elements/SelectDateType:50 -msgid "Last Contacted" -msgstr "上次联络日期" - -#: NOT FOUND IN SOURCE -msgid "Last Notified" -msgstr "上次通知" - -#: html/Elements/SelectDateType:51 -msgid "Last Updated" -msgstr "上次更新" - -#: NOT FOUND IN SOURCE -msgid "LastUpdated" -msgstr "上次更新" - -#: html/Search/Elements/PickBasics:103 -msgid "LastUpdatedBy" -msgstr "上次更新者" - -#: html/Ticket/Elements/ShowBasics:68 -msgid "Left" -msgstr "剩馀时间" - -#: html/Admin/Users/Modify.html:109 -msgid "Let this user access RT" -msgstr "允许这名使用者登入" - -#: html/Admin/Users/Modify.html:113 -msgid "Let this user be granted rights" -msgstr "内部成员(具有个人权限)" - -#: NOT FOUND IN SOURCE -msgid "Limiting owner to %1 %2" -msgstr "限制承办人为 %1 到%2" - -#: NOT FOUND IN SOURCE -msgid "Limiting queue to %1 %2" -msgstr "限制表单为 %1 到 %2" - -#: html/Search/Elements/EditFormat:68 -msgid "Link" -msgstr "链接" - -#: NOT FOUND IN SOURCE -msgid "Link a Queue" -msgstr "申请表单连结" - -#: lib/RT/Record.pm:1306 -msgid "Link already exists" -msgstr "此链接已存在" - -#: lib/RT/Record.pm:1320 -msgid "Link could not be created" -msgstr "无法新增链接" - -#: lib/RT/Record.pm:1326 -#. ($TransString) -msgid "Link created (%1)" -msgstr "链接(%1)新增完毕" - -#: lib/RT/Record.pm:1387 -#. ($TransString) -msgid "Link deleted (%1)" -msgstr "链接(%1)删除完毕" - -#: lib/RT/Record.pm:1393 -msgid "Link not found" -msgstr "找不到链接" - -#: html/Ticket/ModifyLinks.html:46 html/Ticket/ModifyLinks.html:50 -#. ($Ticket->Id) -msgid "Link ticket #%1" -msgstr "链接申请单 #%1" - -#: NOT FOUND IN SOURCE -msgid "Link ticket %1" -msgstr "链接申请单 %1" - -#: html/Admin/CustomFields/Modify.html:102 -msgid "Link values to" -msgstr "将值连结至" - -#: lib/RT/Ticket_Overlay.pm:700 -msgid "Linking. Permission denied" -msgstr "连结中。权限不足" - -#: html/Ticket/Create.html:216 html/Ticket/Elements/ShowSummary:89 html/Ticket/Elements/Tabs:120 html/Ticket/ModifyAll.html:78 -msgid "Links" -msgstr "链接" - -#: NOT FOUND IN SOURCE -msgid "List All Users" -msgstr "列出所有用户数据" - -#: html/Search/Elements/EditSearches:75 -msgid "Load" -msgstr "加载" - -#: html/Search/Elements/EditSearches:73 -msgid "Load saved search:" -msgstr "加载预存查询:" - -#: lib/RT/System.pm:86 -msgid "LoadSavedSearch" -msgstr "加载预存查询" - -#: html/Admin/Tools/Configuration.html:64 -msgid "Loaded perl modules" -msgstr "已加载的 Perl 模块" - -#: lib/RT/SavedSearch.pm:111 -#. ($self->Name) -msgid "Loaded search %1" -msgstr "已加载查询 %1" - -#: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126 -msgid "Location" -msgstr "位置" - -#: NOT FOUND IN SOURCE -msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." -msgstr "登入目录 %1 找不到或无法写入\\n。无法执行 RT。" - -#: NOT FOUND IN SOURCE -msgid "LogToFile" -msgstr "纪录等级" - -#: NOT FOUND IN SOURCE -msgid "LogToFileNamed" -msgstr "纪录档名" - -#: html/Elements/Header:91 -#. ("<span>".$session{'CurrentUser'}->Name."</span>") -msgid "Logged in as %1" -msgstr "使用者:%1" - -#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:100 html/Elements/Login:68 html/Elements/Login:84 lib/RT/StyleGuide.pod:797 -msgid "Login" -msgstr "登入" - -#: html/Elements/Header:101 -msgid "Logout" -msgstr "注销" - -#: NOT FOUND IN SOURCE -msgid "Long-term contractor" -msgstr "长期契约员工" - -#: lib/RT/CustomField_Overlay.pm:932 -msgid "Lookup type mismatch" -msgstr "对应的类别不符" - -#: html/Search/Bulk.html:82 -msgid "Make Owner" -msgstr "新增承办人" - -#: html/Search/Bulk.html:106 -msgid "Make Status" -msgstr "新增现况" - -#: html/Search/Bulk.html:114 -msgid "Make date Due" -msgstr "新增到期日" - -#: html/Search/Bulk.html:116 -msgid "Make date Resolved" -msgstr "新增解决日期" - -#: html/Search/Bulk.html:110 -msgid "Make date Started" -msgstr "新增实际起始日期" - -#: html/Search/Bulk.html:108 -msgid "Make date Starts" -msgstr "新增应起始日期" - -#: html/Search/Bulk.html:112 -msgid "Make date Told" -msgstr "新增报告日期" - -#: html/Search/Bulk.html:102 -msgid "Make priority" -msgstr "新增优先顺位" - -#: html/Search/Bulk.html:104 -msgid "Make queue" -msgstr "新增表单" - -#: html/Search/Bulk.html:100 -msgid "Make subject" -msgstr "新增主题" - -#: lib/RT/Group_Overlay.pm:169 -msgid "Make this group visible to user" -msgstr "让此群组能被使用者看见" - -#: NOT FOUND IN SOURCE -msgid "Male" -msgstr "男" - -#: html/Admin/index.html:78 -msgid "Manage custom fields and custom field values" -msgstr "管理自订字段及字段值" - -#: html/Admin/index.html:69 -msgid "Manage groups and group membership" -msgstr "管理群组及所属成员" - -#: html/Admin/index.html:85 -msgid "Manage properties and configuration which apply to all queues" -msgstr "管理适用于所有表单的属性与设定" - -#: html/Admin/index.html:74 -msgid "Manage queues and queue-specific properties" -msgstr "管理各表单及相关属性" - -#: html/Admin/index.html:64 -msgid "Manage users and passwords" -msgstr "管理使用者与口令" - -#: NOT FOUND IN SOURCE -msgid "Manager" -msgstr "经理" - -#: NOT FOUND IN SOURCE -msgid "Mar" -msgstr "三月" - -#: lib/RT/Date.pm:443 -msgid "Mar." -msgstr "03" - -#: NOT FOUND IN SOURCE -msgid "March" -msgstr "三月" - -#: NOT FOUND IN SOURCE -msgid "Marketing Department" -msgstr "行销部" - -#: NOT FOUND IN SOURCE -msgid "Match Pattern" -msgstr "符合样式" - -#: NOT FOUND IN SOURCE -msgid "May" -msgstr "五月" - -#: lib/RT/Date.pm:445 -msgid "May." -msgstr "05" - -#: lib/RT/Transaction_Overlay.pm:731 -#. ($value) -msgid "Member %1 added" -msgstr "成员 %1 新增完毕" - -#: lib/RT/Transaction_Overlay.pm:771 -#. ($value) -msgid "Member %1 deleted" -msgstr "成员 %1 删除完毕" - -#: lib/RT/Group_Overlay.pm:1000 -msgid "Member added" -msgstr "新增成员完毕" - -#: lib/RT/Group_Overlay.pm:1162 -msgid "Member deleted" -msgstr "成员已删除" - -#: lib/RT/Group_Overlay.pm:1166 -msgid "Member not deleted" -msgstr "成员未删除" - -#: html/Elements/SelectLinkType:47 -msgid "Member of" -msgstr "隶属于" - -#: NOT FOUND IN SOURCE -msgid "Member since" -msgstr "注册日期" - -#: NOT FOUND IN SOURCE -msgid "MemberOf" -msgstr "隶属于" - -#: html/Admin/Elements/GroupTabs:63 html/User/Elements/GroupTabs:63 -msgid "Members" -msgstr "成员" - -#: lib/RT/Transaction_Overlay.pm:728 -#. ($value) -msgid "Membership in %1 added" -msgstr "所属群组 %1 加入完毕" - -#: lib/RT/Transaction_Overlay.pm:768 -#. ($value) -msgid "Membership in %1 deleted" -msgstr "所属群组 %1 移除完毕" - -#: html/Admin/Elements/UserTabs:61 -msgid "Memberships" -msgstr "所属群组" - -#: html/Admin/Users/Memberships.html:60 -#. ($UserObj->Name) -msgid "Memberships of the user %1" -msgstr "使用者 %1 的所属群组" - -#: lib/RT/Ticket_Overlay.pm:2893 -msgid "Merge Successful" -msgstr "整合完毕" - -#: lib/RT/Ticket_Overlay.pm:2780 -msgid "Merge failed. Couldn't set EffectiveId" -msgstr "整合失败。无法设定 EffectiveId" - -#: lib/RT/Ticket_Overlay.pm:2788 -msgid "Merge failed. Couldn't set Status" -msgstr "整合失败。无法设定 Status" - -#: html/Elements/EditLinks:131 html/Ticket/Elements/BulkLinks:48 -msgid "Merge into" -msgstr "整合进" - -#: lib/RT/Transaction_Overlay.pm:734 -#. ($value) -msgid "Merged into %1" -msgstr "已整合进 %1" - -#: html/Search/Bulk.html:143 html/Ticket/Update.html:118 -msgid "Message" -msgstr "讯息" - -#: html/Ticket/Elements/ShowTransactionAttachments:164 -msgid "Message body not shown because it is too large or is not plain text." -msgstr "信件内文不是纯文字,因此无法显示。" - -#: lib/RT/Ticket_Overlay.pm:2451 -msgid "Message could not be recorded" -msgstr "无法纪录讯息" - -#: lib/RT/Ticket_Overlay.pm:2454 -msgid "Message recorded" -msgstr "讯息纪录成功" - -#: html/Ticket/Elements/PreviewScrips:122 -msgid "Messages about this ticket will not be sent to..." -msgstr "此申请单的相关讯息不会寄送给..." - -#: html/Elements/SelectTimeUnits:47 -msgid "Minutes" -msgstr "分钟" - -#: NOT FOUND IN SOURCE -msgid "Misc. Expense" -msgstr "杂费" - -#: html/Search/Build.html:490 lib/RT/Report/Tickets.pm:445 -msgid "Mismatched parentheses" -msgstr "未对齐的括号" - -#: lib/RT/Record.pm:954 -msgid "Missing a primary key?: %1" -msgstr "缺少主键值?(%1)" - -#: NOT FOUND IN SOURCE -msgid "Missing mandatory fields" -msgstr "缺少必填字段" - -#: html/Admin/Users/Modify.html:193 html/User/Prefs.html:92 -msgid "Mobile" -msgstr "行动电话" - -#: NOT FOUND IN SOURCE -msgid "MobilePhone" -msgstr "行动电话" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "Modify Access Control List" -msgstr "更改权限控制清单" - -#: html/Admin/Elements/ObjectCustomFields:96 -#. (loc(lc($FriendlySubTypes)), loc(lc($Types))) -msgid "Modify Custom Fields which apply to %1 for all %2" -msgstr "更改适用于 %1 内所有 %2 的自订字段" - -#: html/Admin/Elements/ObjectCustomFields:98 -#. (loc(lc($Types))) -msgid "Modify Custom Fields which apply to all %1" -msgstr "更改适用于所有%1的自订字段" - -#: NOT FOUND IN SOURCE -msgid "Modify Custom Fields which apply to all queues" -msgstr "更改适用于所有表单的自订字段" - -#: html/Admin/Global/GroupRights.html:106 html/Admin/Groups/GroupRights.html:94 html/Admin/Queues/GroupRights.html:107 -msgid "Modify Group Rights" -msgstr "更改群组权限" - -#: html/Admin/Groups/Members.html:105 html/User/Groups/Members.html:101 -msgid "Modify Members" -msgstr "更改成员" - -#: html/User/Delegation.html:58 -msgid "Modify Rights" -msgstr "更改权限" - -#: lib/RT/Queue_Overlay.pm:97 -msgid "Modify Scrip templates for this queue" -msgstr "更改此表单的模板" - -#: lib/RT/Queue_Overlay.pm:100 -msgid "Modify Scrips for this queue" -msgstr "更改此表单的手续" - -#: NOT FOUND IN SOURCE -msgid "Modify System ACLS" -msgstr "更改系统权限清单" - -#: NOT FOUND IN SOURCE -msgid "Modify Template %1" -msgstr "更改模板 %1" - -#: html/Admin/Global/UserRights.html:75 html/Admin/Groups/UserRights.html:76 html/Admin/Queues/UserRights.html:75 -msgid "Modify User Rights" -msgstr "更改使用者权限" - -#: NOT FOUND IN SOURCE -msgid "Modify Workflow" -msgstr "更改流程" - -#: html/Admin/Queues/CustomField.html:66 -#. ($QueueObj->Name()) -msgid "Modify a CustomField for queue %1" -msgstr "更改 %1 表单内的自订字段" - -#: NOT FOUND IN SOURCE -msgid "Modify a CustomField that applies to all queues" -msgstr "更改适用于所有表单的自订字段" - -#: html/Admin/Queues/Scrip.html:82 -#. ($QueueObj->Name) -msgid "Modify a scrip for queue %1" -msgstr "更改 %1 表单内的手续" - -#: html/Admin/Global/Scrip.html:75 -msgid "Modify a scrip that applies to all queues" -msgstr "更改适用于所有表单的手续" - -#: html/Admin/CustomFields/Objects.html:90 -#. ($CF->Name) -msgid "Modify associated objects for %1" -msgstr "更改适用 %1 的对象" - -#: NOT FOUND IN SOURCE -msgid "Modify dates for # %1" -msgstr "更改 # %1 的日期" - -#: html/Ticket/ModifyDates.html:46 html/Ticket/ModifyDates.html:50 -#. ($TicketObj->Id) -msgid "Modify dates for #%1" -msgstr "更改 #%1 的日期" - -#: html/Ticket/ModifyDates.html:57 -#. ($TicketObj->Id) -msgid "Modify dates for ticket # %1" -msgstr "更改申请单 # %1 的日期" - -#: html/Admin/Elements/GlobalCustomFieldTabs:65 html/Admin/Global/index.html:72 -msgid "Modify global custom fields" -msgstr "更改全域自订字段" - -#: html/Admin/Elements/GlobalCustomFieldTabs:70 html/Admin/Global/GroupRights.html:46 html/Admin/Global/GroupRights.html:49 html/Admin/Global/index.html:77 -msgid "Modify global group rights" -msgstr "更改全域设定的群组权限" - -#: html/Admin/Global/GroupRights.html:54 -msgid "Modify global group rights." -msgstr "更改全域设定的群组权限。" - -#: NOT FOUND IN SOURCE -msgid "Modify global rights for groups" -msgstr "更改全域设定的群组权限" - -#: NOT FOUND IN SOURCE -msgid "Modify global rights for users" -msgstr "更改全域设定的使用者权限" - -#: NOT FOUND IN SOURCE -msgid "Modify global scrips" -msgstr "更改全域手续" - -#: html/Admin/Global/UserRights.html:46 html/Admin/Global/UserRights.html:49 html/Admin/Global/index.html:81 -msgid "Modify global user rights" -msgstr "更改全域设定的使用者权限" - -#: html/Admin/Global/UserRights.html:54 -msgid "Modify global user rights." -msgstr "更改全域设定的使用者权限。" - -#: lib/RT/Group_Overlay.pm:163 -msgid "Modify group metadata or delete group" -msgstr "更改群组数据及删除群组" - -#: html/Admin/CustomFields/GroupRights.html:164 -#. ($CustomFieldObj->Name) -msgid "Modify group rights for custom field %1" -msgstr "更改自订字段 %1 的群组权限" - -#: html/Admin/Groups/GroupRights.html:46 html/Admin/Groups/GroupRights.html:50 html/Admin/Groups/GroupRights.html:56 -#. ($GroupObj->Name) -msgid "Modify group rights for group %1" -msgstr "更改群组 %1 的群组权限" - -#: html/Admin/Queues/GroupRights.html:46 html/Admin/Queues/GroupRights.html:50 -#. ($QueueObj->Name) -msgid "Modify group rights for queue %1" -msgstr "更改表单 %1 的群组权限" - -#: lib/RT/Group_Overlay.pm:165 -msgid "Modify membership roster for this group" -msgstr "更改此群组的成员名单" - -#: lib/RT/System.pm:82 -msgid "Modify one's own RT account" -msgstr "更改个人的帐号信息" - -#: html/Admin/Queues/People.html:46 html/Admin/Queues/People.html:50 -#. ($QueueObj->Name) -msgid "Modify people related to queue %1" -msgstr "更改链接到表单 %1 的人员" - -#: html/Ticket/ModifyPeople.html:46 html/Ticket/ModifyPeople.html:50 html/Ticket/ModifyPeople.html:57 -#. ($Ticket->id) -#. ($Ticket->Id) -msgid "Modify people related to ticket #%1" -msgstr "更改申请单 #%1 链接到的人员" - -#: html/Admin/Queues/Scrips.html:67 -#. ($QueueObj->Name) -msgid "Modify scrips for queue %1" -msgstr "更改表单 %1 的手续" - -#: html/Admin/Elements/GlobalCustomFieldTabs:56 html/Admin/Global/Scrips.html:65 html/Admin/Global/index.html:63 -msgid "Modify scrips which apply to all queues" -msgstr "更改适用于所有表单的手续" - -#: html/Admin/Global/Template.html:102 html/Admin/Global/Template.html:46 html/Admin/Global/Template.html:51 html/Admin/Queues/Template.html:99 -#. (loc($TemplateObj->Name())) -#. ($TemplateObj->id) -msgid "Modify template %1" -msgstr "更改模板 %1" - -#: html/Admin/Global/Templates.html:65 -msgid "Modify templates which apply to all queues" -msgstr "更改适用于所有表单的模板" - -#: html/Admin/Global/index.html:85 -msgid "Modify the default \"RT at a glance\" view" -msgstr "更改预设的‘RT 一览’检视" - -#: html/Admin/Groups/Modify.html:119 html/User/Groups/Modify.html:107 -#. ($Group->Name) -msgid "Modify the group %1" -msgstr "更改群组 %1" - -#: lib/RT/Queue_Overlay.pm:95 -msgid "Modify the queue watchers" -msgstr "更改表单视察员" - -#: html/Admin/Users/Modify.html:309 -#. ($UserObj->Name) -msgid "Modify the user %1" -msgstr "更改使用者 %1" - -#: html/Ticket/ModifyAll.html:58 -#. ($Ticket->Id) -msgid "Modify ticket # %1" -msgstr "更改申请单 # %1" - -#: html/Ticket/Modify.html:46 html/Ticket/Modify.html:49 html/Ticket/Modify.html:55 -#. ($TicketObj->Id) -msgid "Modify ticket #%1" -msgstr "更改申请单 # %1" - -#: lib/RT/Queue_Overlay.pm:113 -msgid "Modify tickets" -msgstr "更改申请单" - -#: html/Admin/CustomFields/UserRights.html:157 -#. ($CustomFieldObj->Name) -msgid "Modify user rights for custom field %1" -msgstr "更改自订字段 %1 的使用者权限" - -#: html/Admin/Groups/UserRights.html:46 html/Admin/Groups/UserRights.html:50 html/Admin/Groups/UserRights.html:56 -#. ($GroupObj->Name) -msgid "Modify user rights for group %1" -msgstr "更改群组 %1 的使用者权限" - -#: html/Admin/Queues/UserRights.html:46 html/Admin/Queues/UserRights.html:50 -#. ($QueueObj->Name) -msgid "Modify user rights for queue %1" -msgstr "更改表单 %1 的使用者权限" - -#: NOT FOUND IN SOURCE -msgid "Modify watchers for queue '%1'" -msgstr "更改 '%1' 的视察员" - -#: NOT FOUND IN SOURCE -msgid "Modify workflow %1" -msgstr "更改流程 %1" - -#: NOT FOUND IN SOURCE -msgid "Modify workflows which apply to all queues" -msgstr "更改适用于所有表单的流程" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "ModifyACL" -msgstr "更改权限清单" - -#: lib/RT/CustomField_Overlay.pm:108 -msgid "ModifyCustomField" -msgstr "更改自订字段" - -#: lib/RT/Group_Overlay.pm:166 -msgid "ModifyOwnMembership" -msgstr "更改自己是否属于某群组" - -#: lib/RT/Queue_Overlay.pm:95 -msgid "ModifyQueueWatchers" -msgstr "更改表单视察员" - -#: lib/RT/Queue_Overlay.pm:100 -msgid "ModifyScrips" -msgstr "更改手续" - -#: lib/RT/System.pm:82 -msgid "ModifySelf" -msgstr "更改个人帐号" - -#: lib/RT/Queue_Overlay.pm:97 -msgid "ModifyTemplate" -msgstr "更改模板" - -#: lib/RT/Queue_Overlay.pm:113 -msgid "ModifyTicket" -msgstr "更改申请单" - -#: NOT FOUND IN SOURCE -msgid "Mon" -msgstr "星期一" - -#: lib/RT/Date.pm:417 -msgid "Mon." -msgstr "星期一" - -#: NOT FOUND IN SOURCE -msgid "More" -msgstr "更多" - -#: html/Ticket/Elements/ShowRequestor:61 -#. ($name) -msgid "More about %1" -msgstr "关于 %1 的进一步信息" - -#: NOT FOUND IN SOURCE -msgid "Morning Shift" -msgstr "早班" - -#: NOT FOUND IN SOURCE -msgid "Move" -msgstr "移动" - -#: NOT FOUND IN SOURCE -msgid "Move All" -msgstr "全移" - -#: html/Admin/Elements/PickCustomFields:83 -msgid "Move down" -msgstr "下移" - -#: html/Admin/Elements/PickCustomFields:75 -msgid "Move up" -msgstr "上移" - -#: html/Admin/Elements/SelectSingleOrMultiple:48 -msgid "Multiple" -msgstr "多重" - -#: lib/RT/User_Overlay.pm:226 -msgid "Must specify 'Name' attribute" -msgstr "必须指定 'Name' 的属性" - -#: html/SelfService/Elements/MyRequests:57 -#. ($friendly_status) -msgid "My %1 tickets" -msgstr "我的 %1 申请单" - -#: NOT FOUND IN SOURCE -msgid "My Approvals" -msgstr "表单签核" - -#: html/Tools/Elements/Tabs:63 -msgid "My Day" -msgstr "今日事" - -#: NOT FOUND IN SOURCE -msgid "My Requests" -msgstr "表单申请追踪" - -#: NOT FOUND IN SOURCE -msgid "My Tickets" -msgstr "表单处理" - -#: html/Approvals/index.html:46 html/Approvals/index.html:47 -msgid "My approvals" -msgstr "表单签核" - -#: html/Search/Elements/SearchPrivacy:50 html/Search/Elements/SelectSearchObject:53 html/Search/Elements/SelectSearchesForObjects:54 -msgid "My saved searches" -msgstr "我的预存查询" - -#: html/Admin/CustomFields/Modify.html:58 html/Admin/Elements/AddCustomFieldValue:53 html/Admin/Elements/EditCustomField:55 html/Admin/Elements/EditCustomFieldValues:55 html/Admin/Elements/ModifyTemplate:49 html/Admin/Groups/Modify.html:65 html/Search/Bulk.html:157 html/User/Groups/Modify.html:65 -msgid "Name" -msgstr "名称" - -#: lib/RT/User_Overlay.pm:233 -msgid "Name in use" -msgstr "帐号已有人使用" - -#: NOT FOUND IN SOURCE -msgid "Nationality" -msgstr "国籍" - -#: NOT FOUND IN SOURCE -msgid "Need approval from system administrator" -msgstr "需先由系统管理员进行批准" - -#: html/Ticket/Elements/ShowDates:73 -msgid "Never" -msgstr "从未更动" - -#: NOT FOUND IN SOURCE -msgid "New" -msgstr "新建立" - -#: html/Elements/EditLinks:117 -msgid "New Links" -msgstr "新增关系" - -#: html/Admin/Users/Modify.html:119 html/User/Prefs.html:109 -msgid "New Password" -msgstr "新的口令" - -#: etc/initialdata:332 -msgid "New Pending Approval" -msgstr "新的待签核事项" - -#: NOT FOUND IN SOURCE -msgid "New Query" -msgstr "新增查询" - -#: NOT FOUND IN SOURCE -msgid "New Request" -msgstr "表单申请" - -#: html/Ticket/Elements/Tabs:212 -msgid "New Search" -msgstr "新增查询" - -#: NOT FOUND IN SOURCE -msgid "New Watchers" -msgstr "新增视察员" - -#: html/Admin/Elements/CustomFieldTabs:93 html/Admin/Queues/CustomField.html:73 -msgid "New custom field" -msgstr "新增自订字段" - -#: html/Admin/Elements/GroupTabs:77 html/User/Elements/GroupTabs:73 -msgid "New group" -msgstr "新增群组" - -#: html/SelfService/Prefs.html:53 -msgid "New password" -msgstr "新的口令" - -#: lib/RT/User_Overlay.pm:816 -msgid "New password notification sent" -msgstr "送出新口令通知" - -#: html/Admin/Elements/QueueTabs:95 -msgid "New queue" -msgstr "新增表单" - -#: html/Ticket/Elements/Reminders:118 -msgid "New reminder:" -msgstr "新增提醒项目:" - -#: NOT FOUND IN SOURCE -msgid "New request" -msgstr "提出申请单" - -#: html/Admin/Elements/SelectRights:65 -msgid "New rights" -msgstr "新增权限" - -#: html/Admin/Global/Scrip.html:63 html/Admin/Global/Scrips.html:60 html/Admin/Queues/Scrip.html:71 html/Admin/Queues/Scrips.html:76 -msgid "New scrip" -msgstr "新增手续" - -#: NOT FOUND IN SOURCE -msgid "New search" -msgstr "重新查询" - -#: html/Admin/Global/Template.html:81 html/Admin/Global/Templates.html:60 html/Admin/Queues/Template.html:79 html/Admin/Queues/Templates.html:71 -msgid "New template" -msgstr "新增模板" - -#: html/SelfService/Elements/Tabs:84 html/SelfService/Elements/Tabs:88 -msgid "New ticket" -msgstr "提出申请单" - -#: lib/RT/Ticket_Overlay.pm:2757 -msgid "New ticket doesn't exist" -msgstr "没有新申请单" - -#: html/Admin/Elements/UserTabs:81 -msgid "New user" -msgstr "新增使用者" - -#: html/Admin/Elements/CreateUserCalled:47 -msgid "New user called" -msgstr "新使用者名字" - -#: html/Admin/Queues/People.html:76 html/Ticket/Elements/EditPeople:50 -msgid "New watchers" -msgstr "新视察员" - -#: NOT FOUND IN SOURCE -msgid "New window setting" -msgstr "更新窗口设定" - -#: NOT FOUND IN SOURCE -msgid "New workflow" -msgstr "新增流程" - -#: html/Helpers/CalPopup.html:58 html/Ticket/Elements/Tabs:92 -msgid "Next" -msgstr "下一项" - -#: html/Elements/TicketList:104 -msgid "Next Page" -msgstr "下一页" - -#: NOT FOUND IN SOURCE -msgid "Next page" -msgstr "下一页" - -#: NOT FOUND IN SOURCE -msgid "NickName" -msgstr "昵称" - -#: html/Admin/Users/Modify.html:84 html/User/Prefs.html:72 -msgid "Nickname" -msgstr "昵称" - -#: NOT FOUND IN SOURCE -msgid "Night Shift" -msgstr "小夜班" - -#: NOT FOUND IN SOURCE -msgid "No" -msgstr "否" - -#: html/Admin/CustomFields/UserRights.html:145 -msgid "No Class defined" -msgstr "尚未定义类别" - -#: html/Admin/CustomFields/Modify.html:166 html/Admin/Elements/EditCustomField:119 -msgid "No CustomField" -msgstr "无自订字段" - -#: html/Admin/CustomFields/GroupRights.html:103 -msgid "No CustomField defined" -msgstr "尚未定义自订字段" - -#: html/Admin/Groups/GroupRights.html:105 html/Admin/Groups/UserRights.html:92 -msgid "No Group defined" -msgstr "尚未定义群组" - -#: lib/RT/Tickets_Overlay_SQL.pm:482 -msgid "No Query" -msgstr "没有查询" - -#: html/Admin/Queues/GroupRights.html:118 html/Admin/Queues/UserRights.html:89 -msgid "No Queue defined" -msgstr "尚未定义表单" - -#: bin/rt-crontool:73 -msgid "No RT user found. Please consult your RT administrator.\\n" -msgstr "找不到 RT 使用者。请向 RT 管理员查询。\\n" - -#: html/Admin/Global/Template.html:100 html/Admin/Queues/Template.html:97 -msgid "No Template" -msgstr "没有模板" - -#: NOT FOUND IN SOURCE -msgid "No Ticket specified. Aborting ticket " -msgstr "未指定申请单。退出申请单 " - -#: NOT FOUND IN SOURCE -msgid "No Ticket specified. Aborting ticket modifications\\n\\n" -msgstr "未指定申请单。退出申请单更改\\n\\n" - -#: NOT FOUND IN SOURCE -msgid "No Workflow" -msgstr "没有流程" - -#: html/Approvals/Elements/Approve:77 -msgid "No action" -msgstr "暂不处理" - -#: lib/RT/Record.pm:949 -msgid "No column specified" -msgstr "未指定字段" - -#: NOT FOUND IN SOURCE -msgid "No command found\\n" -msgstr "找不到命令" - -#: html/Ticket/Elements/ShowRequestor:68 -msgid "No comment entered about this user" -msgstr "没有对这名使用者的评论" - -#: NOT FOUND IN SOURCE -msgid "No correspondence attached" -msgstr "没有附上申请单回复" - -#: lib/RT/Action/Generic.pm:185 lib/RT/Condition/Generic.pm:197 lib/RT/Search/ActiveTicketsInQueue.pm:77 lib/RT/Search/Generic.pm:134 lib/RT/Search/Googleish.pm:78 -#. (ref $self) -msgid "No description for %1" -msgstr "没有对 %1 的描述" - -#: lib/RT/Users_Overlay.pm:190 -msgid "No group specified" -msgstr "未指定群组" - -#: html/Admin/Groups/index.html:52 -msgid "No groups matching search criteria found." -msgstr "找不到符合查询条件的群组。" - -#: lib/RT/Ticket_Overlay.pm:2393 -msgid "No message attached" -msgstr "没有附上讯息" - -#: lib/RT/User_Overlay.pm:1034 -msgid "No password set" -msgstr "没有设定口令" - -#: lib/RT/Queue_Overlay.pm:361 -msgid "No permission to create queues" -msgstr "没有新增表单的权限" - -#: lib/RT/Ticket_Overlay.pm:420 -#. ($QueueObj->Name) -msgid "No permission to create tickets in the queue '%1'" -msgstr "没有在表单 '%1' 新增申请单的权限" - -#: lib/RT/User_Overlay.pm:186 -msgid "No permission to create users" -msgstr "没有新增使用者的权限" - -#: html/SelfService/Display.html:167 -msgid "No permission to display that ticket" -msgstr "没有显示该申请单的权限" - -#: lib/RT/SavedSearch.pm:156 -msgid "No permission to save system-wide searches" -msgstr "没有储存全域预存查询的权限" - -#: html/SelfService/Update.html:117 -msgid "No permission to view update ticket" -msgstr "没有检视申请单更新的权限" - -#: lib/RT/Queue_Overlay.pm:795 lib/RT/Ticket_Overlay.pm:1489 -msgid "No principal specified" -msgstr "未指定单位" - -#: html/Admin/Queues/People.html:175 html/Admin/Queues/People.html:185 -msgid "No principals selected." -msgstr "未指定单位。" - -#: NOT FOUND IN SOURCE -msgid "No protocol specified in %1" -msgstr "%1 内未指定协议" - -#: html/Admin/Queues/index.html:57 -msgid "No queues matching search criteria found." -msgstr "找不到符合查询条件的表单。" - -#: html/Admin/Elements/SelectRights:106 -msgid "No rights found" -msgstr "找不到权限" - -#: html/Admin/Elements/SelectRights:53 -msgid "No rights granted." -msgstr "没有选定权限" - -#: lib/RT/SavedSearch.pm:196 -msgid "No search loaded" -msgstr "尚未加载查询" - -#: html/Search/Bulk.html:232 -msgid "No search to operate on." -msgstr "没有要进行的查询" - -#: html/Elements/RT__Ticket/ColumnMap:137 html/Search/Results.rdf:78 -msgid "No subject" -msgstr "没有标题" - -#: NOT FOUND IN SOURCE -msgid "No ticket id specified" -msgstr "未指定申请单编号" - -#: lib/RT/Transaction_Overlay.pm:528 lib/RT/Transaction_Overlay.pm:565 -msgid "No transaction type specified" -msgstr "未指定更动报告类别" - -#: NOT FOUND IN SOURCE -msgid "No user or email address specified" -msgstr "未指定使用者或电子邮件地址" - -#: html/Admin/Users/index.html:55 -msgid "No users matching search criteria found." -msgstr "找不到符合查询条件的使用者。" - -#: NOT FOUND IN SOURCE -msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" -msgstr "找不到合格的 RT 使用者。RT cvs 处理器已停用。请向 RT 管理者询问。\\n" - -#: lib/RT/Record.pm:946 -msgid "No value sent to _Set!\\n" -msgstr "_Set 没有收到任何值!\\n" - -#: html/Elements/QuickCreate:59 -msgid "Nobody" -msgstr "没有人" - -#: lib/RT/Record.pm:951 -msgid "Nonexistant field?" -msgstr "字段不存在?" - -#: NOT FOUND IN SOURCE -msgid "Normal Users" -msgstr "一般用户群组" - -#: html/Search/Chart:71 html/Search/Elements/Chart:88 -msgid "Not Set" -msgstr "未设定" - -#: NOT FOUND IN SOURCE -msgid "Not configured to fetch the content from a %1 in %2" -msgstr "未设定成从 %2 内撷取 %1" - -#: NOT FOUND IN SOURCE -msgid "Not logged in" -msgstr "尚未登入" - -#: html/Elements/Header:96 -msgid "Not logged in." -msgstr "尚未登入" - -#: lib/RT/Date.pm:397 -msgid "Not set" -msgstr "尚未设定" - -#: html/NoAuth/Reminder.html:48 -msgid "Not yet implemented." -msgstr "尚未完工。" - -#: NOT FOUND IN SOURCE -msgid "Not yet implemented...." -msgstr "尚未完工..." - -#: html/Approvals/Elements/Approve:81 -msgid "Notes" -msgstr "备注" - -#: NOT FOUND IN SOURCE -msgid "Notes:" -msgstr "备注:" - -#: lib/RT/User_Overlay.pm:819 -msgid "Notification could not be sent" -msgstr "无法送出通知" - -#: etc/initialdata:101 -msgid "Notify AdminCcs" -msgstr "通知管理员副本收件人" - -#: etc/initialdata:97 -msgid "Notify AdminCcs as Comment" -msgstr "以评论方式通知管理员副本收件人" - -#: etc/initialdata:93 etc/upgrade/3.1.17/content:6 -msgid "Notify Ccs" -msgstr "通知副本收件人" - -#: etc/initialdata:89 etc/upgrade/3.1.17/content:2 -msgid "Notify Ccs as Comment" -msgstr "以评论方式通知副本收件人" - -#: etc/initialdata:128 -msgid "Notify Other Recipients" -msgstr "通知其它收件人" - -#: etc/initialdata:124 -msgid "Notify Other Recipients as Comment" -msgstr "以评论方式通知其它收件人" - -#: etc/initialdata:85 -msgid "Notify Owner" -msgstr "通知承办人" - -#: etc/initialdata:81 -msgid "Notify Owner as Comment" -msgstr "以评论方式通知承办人" - -#: etc/initialdata:376 -msgid "Notify Owner of their rejected ticket" -msgstr "通知承办人申请单已驳回" - -#: etc/initialdata:365 -msgid "Notify Owner of their ticket has been approved by all approvers" -msgstr "通知承办人申请单已完成全部签核" - -#: etc/initialdata:353 -msgid "Notify Owner of their ticket has been approved by some approver" -msgstr "通知承办人申请单已完成某项签核" - -#: etc/initialdata:334 -msgid "Notify Owners and AdminCcs of new items pending their approval" -msgstr "整理待签核事项,通知承办人及管理员副本收件人" - -#: etc/initialdata:77 -msgid "Notify Requestors" -msgstr "通知申请人" - -#: etc/initialdata:111 -msgid "Notify Requestors and Ccs" -msgstr "通知申请人及副本收件人" - -#: etc/initialdata:106 -msgid "Notify Requestors and Ccs as Comment" -msgstr "以评论方式通知申请人及副本收件人" - -#: etc/initialdata:120 -msgid "Notify Requestors, Ccs and AdminCcs" -msgstr "通知申请人、副本及管理员副本收件人" - -#: etc/initialdata:116 -msgid "Notify Requestors, Ccs and AdminCcs as Comment" -msgstr "以评论方式通知申请人、副本及管理员副本收件人" - -#: NOT FOUND IN SOURCE -msgid "Notify people:" -msgstr "通知对象" - -#: NOT FOUND IN SOURCE -msgid "Nov" -msgstr "十一月" - -#: lib/RT/Date.pm:451 -msgid "Nov." -msgstr "11" - -#: NOT FOUND IN SOURCE -msgid "November" -msgstr "十一月" - -#: NOT FOUND IN SOURCE -msgid "OIN104" -msgstr "104eHRMS 接口" - -#: NOT FOUND IN SOURCE -msgid "OK" -msgstr "确定" - -#: html/Search/Elements/SelectAndOr:47 -msgid "OR" -msgstr "OR" - -#: lib/RT/Record.pm:322 -msgid "Object could not be created" -msgstr "无法新增对象" - -#: lib/RT/Record.pm:123 -msgid "Object could not be deleted" -msgstr "无法删除对象" - -#: lib/RT/Record.pm:341 -msgid "Object created" -msgstr "对象新增完毕" - -#: lib/RT/Record.pm:120 -msgid "Object deleted" -msgstr "对象删除完毕" - -#: html/Admin/CustomFields/Objects.html:72 html/Admin/Elements/ObjectCustomFields:63 -#. ($ObjectType) -#. ($LookupType) -msgid "Object of type %1 cannot take custom fields" -msgstr "自订字段不适用于类别为 %1 的对象" - -#: lib/RT/CustomField_Overlay.pm:967 -msgid "Object type mismatch" -msgstr "对象类别不符" - -#: NOT FOUND IN SOURCE -msgid "Occupation Status" -msgstr "在职状态" - -#: NOT FOUND IN SOURCE -msgid "Oct" -msgstr "十月" - -#: lib/RT/Date.pm:450 -msgid "Oct." -msgstr "10" - -#: NOT FOUND IN SOURCE -msgid "October" -msgstr "十月" - -#: NOT FOUND IN SOURCE -msgid "Office Phone" -msgstr "办公室电话" - -#: html/Tools/Elements/Tabs:55 -msgid "Offline" -msgstr "离线" - -#: html/Tools/Offline.html:49 -msgid "Offline edits" -msgstr "离线编辑" - -#: html/Tools/Offline.html:46 -msgid "Offline upload" -msgstr "离线上载" - -#: html/Elements/SelectDateRelation:56 -msgid "On" -msgstr "等于" - -#: lib/RT/Transaction_Overlay.pm:326 -#. ($self->CreatedAsString(), $self->CreatorObj->Name()) -msgid "On %1, %2 wrote:" -msgstr "在 %1 时,%2 写到:" - -#: NOT FOUND IN SOURCE -msgid "On Change" -msgstr "更改申请单时" - -#: etc/initialdata:163 -msgid "On Comment" -msgstr "评论时" - -#: etc/initialdata:156 -msgid "On Correspond" -msgstr "回复申请单时" - -#: etc/initialdata:145 -msgid "On Create" -msgstr "新增申请单时" - -#: etc/initialdata:184 -msgid "On Owner Change" -msgstr "承办人改变时" - -#: etc/initialdata:177 etc/upgrade/3.1.17/content:15 -msgid "On Priority Change" -msgstr "优先顺位改变时" - -#: etc/initialdata:192 -msgid "On Queue Change" -msgstr "表单改变时" - -#: etc/initialdata:198 -msgid "On Resolve" -msgstr "解决申请单时" - -#: etc/initialdata:169 -msgid "On Status Change" -msgstr "现况改变时" - -#: etc/initialdata:150 -msgid "On Transaction" -msgstr "发生更动时" - -#: html/Approvals/Elements/PendingMyApproval:70 -#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter' id='CreatedAfter' />") -msgid "Only show approvals for requests created after %1" -msgstr "仅显示 %1 之后新增的申请单" - -#: html/Approvals/Elements/PendingMyApproval:68 -#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore' id='CreatedBefore' />") -msgid "Only show approvals for requests created before %1" -msgstr "仅显示 %1 之前新增的申请单" - -#: html/Admin/CustomFields/index.html:75 -msgid "Only show custom fields for:" -msgstr "仅显示适用于下列项目的自订字段:" - -#: NOT FOUND IN SOURCE -msgid "Open" -msgstr "开启" - -#: html/SelfService/index.html:46 -msgid "Open Tickets" -msgstr "开启申请单" - -#: html/Ticket/Elements/Tabs:160 -msgid "Open it" -msgstr "开启" - -#: html/SelfService/Elements/Tabs:75 -msgid "Open tickets" -msgstr "开启的申请单" - -#: NOT FOUND IN SOURCE -msgid "Open tickets (from listing) in a new window" -msgstr "在新窗口开启(列表的)申请单" - -#: NOT FOUND IN SOURCE -msgid "Open tickets (from listing) in another window" -msgstr "在另一个窗口开启(列表的)申请单" - -#: etc/initialdata:140 -msgid "Open tickets on correspondence" -msgstr "收到回复时即开启申请单" - -#: NOT FOUND IN SOURCE -msgid "Opened Tickets" -msgstr "已申请运行中表单" - -#: NOT FOUND IN SOURCE -msgid "Opinion" -msgstr "意见" - -#: NOT FOUND IN SOURCE -msgid "Option Description" -msgstr "选项描述" - -#: NOT FOUND IN SOURCE -msgid "Option Name" -msgstr "选项名称" - -#: html/Prefs/MyRT.html:70 -msgid "Options" -msgstr "选项" - -#: html/Search/Elements/DisplayOptions:59 -msgid "Order by" -msgstr "排序方式" - -#: NOT FOUND IN SOURCE -msgid "Ordering and sorting" -msgstr "顺序与排序方式" - -#: html/Admin/Users/Modify.html:141 html/User/Prefs.html:129 -msgid "Organization" -msgstr "组织名称" - -#: NOT FOUND IN SOURCE -msgid "Organization:" -msgstr "组织:" - -#: html/Approvals/Elements/Approve:53 -#. ($approving->Id, $approving->Subject) -msgid "Originating ticket: #%1" -msgstr "原申请单:#%1" - -#: NOT FOUND IN SOURCE -msgid "Other comma-delimited email addresses" -msgstr "其它e-mail帐号 (仅e-mail通知;多笔帐号请用逗号','区隔)" - -#: NOT FOUND IN SOURCE -msgid "Out of range" -msgstr "期限外" - -#: lib/RT/Transaction_Overlay.pm:622 -msgid "Outgoing email about a comment recorded" -msgstr "已纪录发送的评论邮件" - -#: lib/RT/Transaction_Overlay.pm:626 -msgid "Outgoing email recorded" -msgstr "已纪录发送的邮件" - -#: html/Admin/Queues/Modify.html:90 -msgid "Over time, priority moves toward" -msgstr "优先顺位随时间增加调整为" - -#: NOT FOUND IN SOURCE -msgid "Override current custom fields with fields from %1" -msgstr "以 %1 表单的自订字段取代现有字段" - -#: NOT FOUND IN SOURCE -msgid "Override global rights" -msgstr "取代全域权限" - -#: NOT FOUND IN SOURCE -msgid "OverrideGlobalACL status %1" -msgstr "取代全域权限 %1" - -#: NOT FOUND IN SOURCE -msgid "Overview" -msgstr "总览" - -#: lib/RT/Queue_Overlay.pm:112 -msgid "Own tickets" -msgstr "承办申请单" - -#: lib/RT/Queue_Overlay.pm:112 -msgid "OwnTicket" -msgstr "承办申请单" - -#: etc/initialdata:38 html/Elements/QuickCreate:56 html/Search/Elements/PickBasics:101 html/Ticket/Create.html:72 html/Ticket/Elements/EditBasics:61 html/Ticket/Elements/EditPeople:64 html/Ticket/Elements/EditPeople:65 html/Ticket/Elements/Reminders:129 html/Ticket/Elements/ShowPeople:48 html/Ticket/Update.html:62 lib/RT/ACE_Overlay.pm:110 lib/RT/Tickets_Overlay.pm:2006 -msgid "Owner" -msgstr "承办人" - -#: NOT FOUND IN SOURCE -msgid "Owner changed from %1 to %2" -msgstr "承办人已从 %1 改为 %2" - -#: lib/RT/Ticket_Overlay.pm:505 -msgid "Owner could not be set." -msgstr "无法设定承办人。" - -#: lib/RT/Transaction_Overlay.pm:672 -#. ($Old->Name , $New->Name) -msgid "Owner forcibly changed from %1 to %2" -msgstr "强制将承办人从 %1 改为 %2" - -#: NOT FOUND IN SOURCE -msgid "Owner is" -msgstr "承办人" - -#: NOT FOUND IN SOURCE -msgid "Owner's Phone" -msgstr "承办人电话" - -#: NOT FOUND IN SOURCE -msgid "Page #" -msgstr " " - -#: html/Elements/TicketList:78 -#. ($Page, int($TotalFound/$Rows)+$oddRows) -msgid "Page %1 of %2" -msgstr "第 %1/%2 页" - -#: html/Admin/Users/Modify.html:198 html/User/Prefs.html:96 -msgid "Pager" -msgstr "呼叫器" - -#: NOT FOUND IN SOURCE -msgid "PagerPhone" -msgstr "呼叫器号码" - -#: NOT FOUND IN SOURCE -msgid "Parameter" -msgstr "呼叫参数" - -#: NOT FOUND IN SOURCE -msgid "Parent" -msgstr "上级" - -#: html/Elements/EditLinks:144 html/Elements/EditLinks:76 html/Elements/ShowLinks:68 html/Ticket/Create.html:222 html/Ticket/Elements/BulkLinks:60 -msgid "Parents" -msgstr "母申请单" - -#: NOT FOUND IN SOURCE -msgid "Park Space" -msgstr "停车位申请" - -#: html/Elements/Login:95 html/User/Prefs.html:105 -msgid "Password" -msgstr "口令" - -#: html/NoAuth/Reminder.html:46 -msgid "Password Reminder" -msgstr "口令提示" - -#: lib/RT/Transaction_Overlay.pm:781 lib/RT/User_Overlay.pm:1045 -msgid "Password changed" -msgstr "口令更改完毕" - -#: lib/RT/User_Overlay.pm:1037 lib/RT/User_Overlay.pm:214 -#. ($RT::MinimumPasswordLength) -msgid "Password needs to be at least %1 characters long" -msgstr "口令长度至少必须为 %1 个字元" - -#: lib/RT/User_Overlay.pm:1044 -msgid "Password set" -msgstr "口令已设定" - -#: NOT FOUND IN SOURCE -msgid "Password too short" -msgstr "口令太短" - -#: html/User/Prefs.html:240 -#. (loc_fuzzy($msg)) -msgid "Password: %1" -msgstr "口令:%1" - -#: lib/RT/User_Overlay.pm:1030 -msgid "Password: Permission Denied" -msgstr "口令:权限不足" - -#: html/Admin/Users/Modify.html:364 -msgid "Passwords do not match." -msgstr "口令确认失败。" - -#: html/User/Prefs.html:242 -msgid "Passwords do not match. Your password has not been changed" -msgstr "口令确认失败。您的口令并未改变。" - -#: NOT FOUND IN SOURCE -msgid "Pelase select a queue" -msgstr "请选择表单名称" - -#: NOT FOUND IN SOURCE -msgid "Pending Approval" -msgstr "等待签核" - -#: html/Ticket/Elements/ShowSummary:62 html/Ticket/Elements/Tabs:119 html/Ticket/ModifyAll.html:72 -msgid "People" -msgstr "人员" - -#: NOT FOUND IN SOURCE -msgid "People with Queue Rights" -msgstr "拥有表单权限人员" - -#: etc/initialdata:133 -msgid "Perform a user-defined action" -msgstr "执行使用者自订的动作" - -#: html/Admin/Tools/Configuration.html:94 -msgid "Perl configuration" -msgstr "Perl 设定" - -#: lib/RT/ACE_Overlay.pm:251 lib/RT/ACE_Overlay.pm:257 lib/RT/ACE_Overlay.pm:580 lib/RT/ACE_Overlay.pm:590 lib/RT/ACE_Overlay.pm:600 lib/RT/ACE_Overlay.pm:665 lib/RT/Attribute_Overlay.pm:158 lib/RT/Attribute_Overlay.pm:164 lib/RT/Attribute_Overlay.pm:405 lib/RT/Attribute_Overlay.pm:414 lib/RT/Attribute_Overlay.pm:427 lib/RT/CurrentUser.pm:116 lib/RT/CurrentUser.pm:125 lib/RT/CustomField_Overlay.pm:1017 lib/RT/CustomField_Overlay.pm:1138 lib/RT/CustomField_Overlay.pm:1281 lib/RT/CustomField_Overlay.pm:172 lib/RT/CustomField_Overlay.pm:189 lib/RT/CustomField_Overlay.pm:200 lib/RT/CustomField_Overlay.pm:374 lib/RT/CustomField_Overlay.pm:403 lib/RT/CustomField_Overlay.pm:763 lib/RT/CustomField_Overlay.pm:936 lib/RT/CustomField_Overlay.pm:971 lib/RT/Group_Overlay.pm:1117 lib/RT/Group_Overlay.pm:1121 lib/RT/Group_Overlay.pm:1130 lib/RT/Group_Overlay.pm:1240 lib/RT/Group_Overlay.pm:1244 lib/RT/Group_Overlay.pm:1250 lib/RT/Group_Overlay.pm:445 lib/RT/Group_Overlay.pm:542 lib/RT/Group_Overlay.pm:620 lib/RT/Group_Overlay.pm:628 lib/RT/Group_Overlay.pm:726 lib/RT/Group_Overlay.pm:730 lib/RT/Group_Overlay.pm:736 lib/RT/Group_Overlay.pm:922 lib/RT/Group_Overlay.pm:926 lib/RT/Group_Overlay.pm:939 lib/RT/Queue_Overlay.pm:1054 lib/RT/Queue_Overlay.pm:140 lib/RT/Queue_Overlay.pm:158 lib/RT/Queue_Overlay.pm:657 lib/RT/Queue_Overlay.pm:667 lib/RT/Queue_Overlay.pm:681 lib/RT/Queue_Overlay.pm:819 lib/RT/Queue_Overlay.pm:828 lib/RT/Queue_Overlay.pm:841 lib/RT/Scrip_Overlay.pm:149 lib/RT/Scrip_Overlay.pm:160 lib/RT/Scrip_Overlay.pm:224 lib/RT/Scrip_Overlay.pm:538 lib/RT/Template_Overlay.pm:108 lib/RT/Template_Overlay.pm:277 lib/RT/Ticket_Overlay.pm:1357 lib/RT/Ticket_Overlay.pm:1367 lib/RT/Ticket_Overlay.pm:1381 lib/RT/Ticket_Overlay.pm:1522 lib/RT/Ticket_Overlay.pm:1532 lib/RT/Ticket_Overlay.pm:1546 lib/RT/Ticket_Overlay.pm:1663 lib/RT/Ticket_Overlay.pm:1983 lib/RT/Ticket_Overlay.pm:2126 lib/RT/Ticket_Overlay.pm:2296 lib/RT/Ticket_Overlay.pm:2346 lib/RT/Ticket_Overlay.pm:2525 lib/RT/Ticket_Overlay.pm:2538 lib/RT/Ticket_Overlay.pm:2614 lib/RT/Ticket_Overlay.pm:2627 lib/RT/Ticket_Overlay.pm:2748 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2990 lib/RT/Ticket_Overlay.pm:3000 lib/RT/Ticket_Overlay.pm:3005 lib/RT/Ticket_Overlay.pm:3224 lib/RT/Ticket_Overlay.pm:3228 lib/RT/Ticket_Overlay.pm:3371 lib/RT/Ticket_Overlay.pm:3497 lib/RT/Transaction_Overlay.pm:516 lib/RT/Transaction_Overlay.pm:523 lib/RT/Transaction_Overlay.pm:551 lib/RT/Transaction_Overlay.pm:558 lib/RT/User_Overlay.pm:1176 lib/RT/User_Overlay.pm:1856 lib/RT/User_Overlay.pm:369 lib/RT/User_Overlay.pm:735 lib/RT/User_Overlay.pm:774 -msgid "Permission Denied" -msgstr "权限不足" - -#: NOT FOUND IN SOURCE -msgid "Permission Settings" -msgstr "权限设定" - -#: lib/RT/Template_Overlay.pm:238 lib/RT/Template_Overlay.pm:247 -msgid "Permission denied" -msgstr "权限不足" - -#: lib/RT/Template_Overlay.pm:372 -msgid "Permissions denied" -msgstr "权限不足" - -#: NOT FOUND IN SOURCE -msgid "Permitted Queues:" -msgstr "拥有权限表单列表:" - -#: NOT FOUND IN SOURCE -msgid "Personal" -msgstr "代理人群组" - -#: html/User/Elements/Tabs:56 -msgid "Personal Groups" -msgstr "代理人群组" - -#: NOT FOUND IN SOURCE -msgid "Personal Homepage" -msgstr "个人首页" - -#: NOT FOUND IN SOURCE -msgid "Personal Todo" -msgstr "私人待办事项" - -#: html/User/Groups/index.html:51 html/User/Groups/index.html:61 -msgid "Personal groups" -msgstr "代理人群组" - -#: html/User/Elements/DelegateRights:58 -msgid "Personal groups:" -msgstr "代理人群组:" - -#: NOT FOUND IN SOURCE -msgid "PersonalHomepage" -msgstr "个人首页" - -#: NOT FOUND IN SOURCE -msgid "Phase 1: Create/Rename Groups (%1)" -msgstr "第一阶段:群组建立及改名 (%1)" - -#: NOT FOUND IN SOURCE -msgid "Phase 2: Disable/Enable Groups (%1)" -msgstr "第二阶段:群组停用及启用 (%1)" - -#: NOT FOUND IN SOURCE -msgid "Phase 3: Create/Rename Users (%1)" -msgstr "第三阶段:使用者建立及改名 (%1)" - -#: NOT FOUND IN SOURCE -msgid "Phase 4: Disable/Enable Users (%1)" -msgstr "第四阶段:使用者停用及启用 (%1)" - -#: NOT FOUND IN SOURCE -msgid "Phone" -msgstr "电话" - -#: NOT FOUND IN SOURCE -msgid "Phone number" -msgstr "电话号码" - -#: html/Admin/Users/Modify.html:180 html/User/Prefs.html:81 -msgid "Phone numbers" -msgstr "电话号码" - -#: NOT FOUND IN SOURCE -msgid "Pick" -msgstr "挑选" - -#: NOT FOUND IN SOURCE -msgid "Place of Departure" -msgstr "出发地点" - -#: NOT FOUND IN SOURCE -msgid "Placeholder" -msgstr "尚未完工" - -#: NOT FOUND IN SOURCE -msgid "Please Select" -msgstr "请选择" - -#: NOT FOUND IN SOURCE -msgid "Please check items to be deleted first." -msgstr "请先选中要删除的对象" - -#: NOT FOUND IN SOURCE -msgid "Please select a group" -msgstr "请选择群组" - -#: NOT FOUND IN SOURCE -msgid "Please select a queue's workflow" -msgstr "请选择表单流程" - -#: NOT FOUND IN SOURCE -msgid "Please select one of the category types above." -msgstr "请从上面选择一项分类。" - -#: NOT FOUND IN SOURCE -msgid "Please select role" -msgstr "请选择角色" - -#: NOT FOUND IN SOURCE -msgid "Policy" -msgstr "经营规章" - -#: NOT FOUND IN SOURCE -msgid "Position" -msgstr "职务" - -#: NOT FOUND IN SOURCE -msgid "Position Level" -msgstr "职等" - -#: NOT FOUND IN SOURCE -msgid "Position Name" -msgstr "职务名称" - -#: NOT FOUND IN SOURCE -msgid "Position Number" -msgstr "职务代码" - -#: NOT FOUND IN SOURCE -msgid "Position Rank" -msgstr "职级" - -#: NOT FOUND IN SOURCE -msgid "Pref" -msgstr "偏好" - -#: html/Elements/Header:93 html/Elements/Tabs:91 html/SelfService/Elements/Tabs:95 html/SelfService/Prefs.html:46 html/User/Prefs.html:46 html/User/Prefs.html:49 -msgid "Preferences" -msgstr "偏好" - -#: html/Admin/Users/MyRT.html:75 -#. ($pane, $UserObj->Name) -msgid "Preferences %1 for user %2 ." -msgstr "使用者 %2 的 %1 偏好。" - -#: html/Prefs/MyRT.html:141 -#. ($pane) -msgid "Preferences saved for %1." -msgstr "成功储存 %1 的偏好。" - -#: NOT FOUND IN SOURCE -msgid "Prefs" -msgstr "个人信息" - -#: lib/RT/Action/Generic.pm:195 -msgid "Prepare Stubbed" -msgstr "预备动作完毕" - -#: html/Helpers/CalPopup.html:56 html/Ticket/Elements/Tabs:84 -msgid "Prev" -msgstr "上一项" - -#: html/Elements/TicketList:101 -msgid "Previous Page" -msgstr "上一页" - -#: NOT FOUND IN SOURCE -msgid "Previous page" -msgstr "前一页" - -#: NOT FOUND IN SOURCE -msgid "Pri" -msgstr "优先顺位" - -#: lib/RT/ACE_Overlay.pm:157 lib/RT/ACE_Overlay.pm:239 lib/RT/ACE_Overlay.pm:569 -#. ($args{'PrincipalId'}) -msgid "Principal %1 not found." -msgstr "找不到单位 %1。" - -#: html/Search/Elements/PickBasics:147 html/Ticket/Create.html:181 html/Ticket/Elements/EditBasics:92 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1790 -msgid "Priority" -msgstr "优先顺位" - -#: html/Admin/Queues/Modify.html:86 -msgid "Priority starts at" -msgstr "优先顺位起始值" - -#: html/Search/Elements/EditSearches:50 -msgid "Privacy:" -msgstr "隐私设定:" - -#: etc/initialdata:25 -msgid "Privileged" -msgstr "内部成员" - -#: html/Admin/Users/Modify.html:342 html/User/Prefs.html:231 -#. (loc_fuzzy($msg)) -msgid "Privileged status: %1" -msgstr "内部成员状态:%1" - -#: html/Admin/Users/index.html:102 -msgid "Privileged users" -msgstr "内部成员" - -#: NOT FOUND IN SOURCE -msgid "Process Status" -msgstr "处理状态" - -#: NOT FOUND IN SOURCE -msgid "Project" -msgstr "项目" - -#: NOT FOUND IN SOURCE -msgid "Project Name" -msgstr "项目名称" - -#: NOT FOUND IN SOURCE -msgid "Projects" -msgstr "项目" - -#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 -msgid "Pseudogroup for internal use" -msgstr "内部用的虚拟群组" - -#: NOT FOUND IN SOURCE -msgid "Public Description" -msgstr "公开说明" - -#: NOT FOUND IN SOURCE -msgid "Public Info" -msgstr "公开信息" - -#: NOT FOUND IN SOURCE -msgid "Public Service" -msgstr "公共事务区" - -#: NOT FOUND IN SOURCE -msgid "Purging stale data: %1" -msgstr "移除过期数据: %1" - -#: NOT FOUND IN SOURCE -msgid "Query" -msgstr "查询" - -#: html/Search/Build.html:121 -msgid "Query Builder" -msgstr "建立查询" - -#: html/Search/Elements/Chart:101 -msgid "Query:" -msgstr "查询:" - -#: html/Elements/QueueSummary:48 html/Elements/QuickCreate:54 html/Search/Elements/PickBasics:71 html/SelfService/Create.html:54 html/Ticket/Create.html:62 html/Ticket/Elements/EditBasics:57 html/Ticket/Elements/ShowBasics:76 html/Tools/Reports/CreatedByDates.html:85 html/Tools/Reports/ResolvedByDates.html:86 html/Tools/Reports/ResolvedByOwner.html:66 html/User/Elements/DelegateRights:101 lib/RT/Tickets_Overlay.pm:1617 -msgid "Queue" -msgstr "表单" - -#: html/Admin/Queues/CustomField.html:63 html/Admin/Queues/Scrip.html:61 html/Admin/Queues/Scrips.html:69 html/Admin/Queues/Templates.html:65 -#. ($Queue) -#. ($id) -msgid "Queue %1 not found" -msgstr "找不到表单 %1" - -#: NOT FOUND IN SOURCE -msgid "Queue '%1' not found\\n" -msgstr "找不到表单 '%1'\\n" - -#: NOT FOUND IN SOURCE -msgid "Queue Keyword Selections" -msgstr "表单关键词选取" - -#: html/Admin/Queues/Modify.html:64 -msgid "Queue Name" -msgstr "表单名称" - -#: NOT FOUND IN SOURCE -msgid "Queue Owner" -msgstr "业务承办人" - -#: NOT FOUND IN SOURCE -msgid "Queue Priority" -msgstr "优先等级" - -#: NOT FOUND IN SOURCE -msgid "Queue Rights" -msgstr "表单权限" - -#: NOT FOUND IN SOURCE -msgid "Queue Scrips" -msgstr "表单手续" - -#: NOT FOUND IN SOURCE -msgid "Queue Setup" -msgstr "表单设定" - -#: lib/RT/Queue_Overlay.pm:365 -msgid "Queue already exists" -msgstr "表单已存在" - -#: lib/RT/Queue_Overlay.pm:374 lib/RT/Queue_Overlay.pm:380 -msgid "Queue could not be created" -msgstr "无法新增表单" - -#: html/Ticket/Create.html:244 lib/t/regression/01ticket_link_searching.t:17 -msgid "Queue could not be loaded." -msgstr "无法加载表单" - -#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:384 lib/RT/StyleGuide.pod:809 -msgid "Queue created" -msgstr "表单新增完毕" - -#: NOT FOUND IN SOURCE -msgid "Queue is not specified." -msgstr "未指定表单。" - -#: html/SelfService/Display.html:126 lib/RT/CustomField_Overlay.pm:197 -msgid "Queue not found" -msgstr "找不到表单" - -#: html/Admin/Elements/Tabs:59 html/Admin/index.html:72 -msgid "Queues" -msgstr "表单" - -#: html/Elements/MyAdminQueues:46 -msgid "Queues I administer" -msgstr "由我管理的表单" - -#: html/Elements/MySupportQueues:46 -msgid "Queues I'm an AdminCc for" -msgstr "管理员副本有我的表单" - -#: NOT FOUND IN SOURCE -msgid "Quick Search" -msgstr "表单现况" - -#: html/Elements/Quicksearch:47 html/Prefs/Elements/Tabs:58 html/Prefs/Quicksearch.html:70 -msgid "Quick search" -msgstr "表单一览" - -#: html/Elements/QuickCreate:47 -msgid "Quick ticket creation" -msgstr "快速建立申请单" - -#: html/Search/Results.html:81 -msgid "RSS" -msgstr "RSS" - -#: NOT FOUND IN SOURCE -msgid "RT %1" -msgstr "RT %1" - -#: docs/design_docs/string-extraction-guide.txt:70 lib/RT/StyleGuide.pod:796 -#. ($RT::VERSION, $RT::rtname) -msgid "RT %1 for %2" -msgstr "%2:RT %1 版" - -#: NOT FOUND IN SOURCE -msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." -msgstr "RT %1 版,<a href=\"http://bestpractical.com\">Best Practical Solutions 公司</a>出品。" - -#: NOT FOUND IN SOURCE -msgid "RT %1. Copyright 1996-%1 Jesse Vincent <jesse\\@bestpractical.com>\\n" -msgstr "RT %1。版权所有 1996-%1 Jesse Vincent <jesse\\@bestpractical.com>\\n" - -#: NOT FOUND IN SOURCE -msgid "RT %1. Copyright 1996-2002 Jesse Vincent <jesse\\@bestpractical.com>\\n" -msgstr "RT %1。版权所有 1996-2002 Jesse Vincent <jesse\\@bestpractical.com>\\n" - -#: html/Admin/index.html:46 html/Admin/index.html:47 -msgid "RT Administration" -msgstr "RT 管理页面" - -#: NOT FOUND IN SOURCE -msgid "RT Authentication error." -msgstr "RT 认证错误。" - -#: NOT FOUND IN SOURCE -msgid "RT Bounce: %1" -msgstr "RT 退信:%1" - -#: NOT FOUND IN SOURCE -msgid "RT Configuration error" -msgstr "RT 设定错误" - -#: NOT FOUND IN SOURCE -msgid "RT Critical error. Message not recorded!" -msgstr "RT 致命错误。讯息未被纪录。" - -#: html/Elements/Error:63 html/SelfService/Error.html:62 -msgid "RT Error" -msgstr "RT 错误" - -#: NOT FOUND IN SOURCE -msgid "RT Received mail (%1) from itself." -msgstr "RT 收到从自己寄出的邮件 (%1)。" - -#: NOT FOUND IN SOURCE -msgid "RT Recieved mail (%1) from itself." -msgstr "RT 收到从自己寄出的邮件 (%1)。" - -#: NOT FOUND IN SOURCE -msgid "RT Self Service" -msgstr "RT 自助服务" - -#: html/Admin/Tools/Configuration.html:73 -msgid "RT Variables" -msgstr "RT 的变数" - -#: html/Admin/Elements/SystemTabs:71 html/Admin/Elements/UserTabs:67 html/Admin/Global/MyRT.html:1 html/Admin/Global/MyRT.html:12 html/Admin/Global/MyRT.html:4 html/Admin/Global/index.html:84 html/Admin/Users/MyRT.html:21 html/Prefs/MyRT.html:66 html/Prefs/MyRT.html:78 html/User/Elements/Tabs:65 html/index.html:1 html/index.html:75 -msgid "RT at a glance" -msgstr "RT 一览" - -#: html/Admin/Users/MyRT.html:30 -#. ($UserObj->Name) -msgid "RT at a glance for the user %1" -msgstr "使用者 %1 的 RT 一览" - -#: html/Admin/CustomFields/Modify.html:117 -msgid "RT can include content from another web service when showing this custom field." -msgstr "RT 可于显示此自订字段时引入其它网站的内容" - -#: html/Admin/CustomFields/Modify.html:106 -msgid "RT can make this custom field's values into hyperlinks to another service." -msgstr "RT 可将此自订字段的值视为连往其它网站的超链接" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't authenticate you" -msgstr "RT 无法认证您的身份" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't find requestor via its external database lookup" -msgstr "RT 无法从外部数据库查询找到申请人信息" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't find the queue: %1" -msgstr "RT 找不到表单:%1" - -#: html/Elements/SetupSessionCookie:100 -msgid "RT couldn't store your session." -msgstr "RT 无法储存您的登入阶段。" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't validate this PGP signature. \\n" -msgstr "RT 无法确认这个 PGP 签章。\\n" - -#: html/Elements/Logo:49 html/Elements/PageLayout:172 -#. ($RT::rtname) -msgid "RT for %1" -msgstr "%1 专用流程系统" - -#: NOT FOUND IN SOURCE -msgid "RT for %1: %2" -msgstr "%1 专用 RT 系统:%2" - -#: NOT FOUND IN SOURCE -msgid "RT has proccessed your commands" -msgstr "RT 已执行您的命令" - -#: NOT FOUND IN SOURCE -msgid "RT is © Copyright 1996-%1 Jesse Vincent <jesse@bestpractical.com>. It is distributed under <a href=\"http://www.gnu.org/copyleft/gpl.html\">Version 2 of the GNU General Public License.</a>" -msgstr "RT 版权所有 1996-%1 Jesse Vincent <jesse@bestpractical.com>。<br>本软体依 <a href=\"http://www.gnu.org/copyleft/gpl.html\">GNU 通用公共授权第二版</a> 散布。" - -#: NOT FOUND IN SOURCE -msgid "RT thinks this message may be a bounce" -msgstr "RT 认为这可能是退信" - -#: html/Search/Simple.html:58 -msgid "RT will look for anything else you enter in ticket subjects." -msgstr "RT 会在申请单主旨内搜寻将您键入的任何其它字样" - -#: NOT FOUND IN SOURCE -msgid "RT will process this message as if it were unsigned.\\n" -msgstr "RT 以未签章方式处理这封邮件。\\n" - -#: html/Admin/CustomFields/Modify.html:108 html/Admin/CustomFields/Modify.html:119 -msgid "RT will replace <tt>__id__</tt> and <tt>__CustomField__</tt> with the record id and custom field value, respectively" -msgstr "RT 会将 <tt>__id__</tt> 及 <tt>__CustomField__</tt> 置换成纪录编号及自订字段" - -#: NOT FOUND IN SOURCE -msgid "RT's email command mode requires PGP authentication. Either you didn't sign your message, or your signature could not be verified." -msgstr "RT 的电子邮件命令模式须要 PGP 认证。您可能没有签章,或是您的签章无法辨识。" - -#: NOT FOUND IN SOURCE -msgid "RT::Queue-Role" -msgstr "表单运行角色" - -#: NOT FOUND IN SOURCE -msgid "RT::System-Role" -msgstr "系统运行角色" - -#: NOT FOUND IN SOURCE -msgid "RT::Ticket-Role" -msgstr "申请单运行角色" - -#: NOT FOUND IN SOURCE -msgid "RT_System" -msgstr "系统讯息" - -#: NOT FOUND IN SOURCE -msgid "Read Only" -msgstr "只读" - -#: html/Admin/Users/Modify.html:79 html/User/Prefs.html:69 -msgid "Real Name" -msgstr "真实姓名" - -#: NOT FOUND IN SOURCE -msgid "RealName" -msgstr "真实姓名" - -#: NOT FOUND IN SOURCE -msgid "Really reject this ticket?" -msgstr "您确定要驳回这张申请单吗?" - -#: lib/RT/Transaction_Overlay.pm:725 -#. ($value) -msgid "Reference by %1 added" -msgstr "已加入 %1 为参考本申请单" - -#: lib/RT/Transaction_Overlay.pm:765 -#. ($value) -msgid "Reference by %1 deleted" -msgstr "已移除 %1 为参考本申请单" - -#: lib/RT/Transaction_Overlay.pm:722 -#. ($value) -msgid "Reference to %1 added" -msgstr "已加入参考申请单 %1" - -#: lib/RT/Transaction_Overlay.pm:762 -#. ($value) -msgid "Reference to %1 deleted" -msgstr "已移除参考申请单 %1" - -#: html/Elements/EditLinks:103 html/Elements/EditLinks:156 html/Elements/ShowLinks:92 html/Ticket/Create.html:225 html/Ticket/Elements/BulkLinks:72 -msgid "Referred to by" -msgstr "被参考" - -#: html/Elements/EditLinks:152 html/Elements/EditLinks:94 html/Elements/SelectLinkType:49 html/Elements/ShowLinks:82 html/Ticket/Create.html:224 html/Ticket/Elements/BulkLinks:68 -msgid "Refers to" -msgstr "参考" - -#: NOT FOUND IN SOURCE -msgid "RefersTo" -msgstr "参考" - -#: NOT FOUND IN SOURCE -msgid "Refine" -msgstr "在结果范围内查询" - -#: NOT FOUND IN SOURCE -msgid "Refine search" -msgstr "调整查询条件" - -#: NOT FOUND IN SOURCE -msgid "Refresh" -msgstr "更新" - -#: html/Elements/Refresh:57 -#. ($value/60) -msgid "Refresh this page every %1 minutes." -msgstr "每 %1 分钟更新页面" - -#: lib/RT/Transaction_Overlay.pm:811 -#. ($ticket->Subject) -msgid "Reminder '%1' added" -msgstr "已建立提醒项目‘%1’" - -#: lib/RT/Transaction_Overlay.pm:824 -#. ($ticket->Subject) -msgid "Reminder '%1' completed" -msgstr "已完成提醒项目‘%1’" - -#: lib/RT/Transaction_Overlay.pm:817 -#. ($ticket->Subject) -msgid "Reminder '%1' reopened" -msgstr "已重新开启提醒项目‘%1’" - -#: html/Ticket/Reminders.html:46 -#. ($Ticket->Id) -msgid "Reminder ticket #%1" -msgstr "提醒项目 #%1" - -#: html/Elements/MyReminders:48 html/Ticket/Elements/ShowSummary:75 html/Ticket/Elements/Tabs:122 html/Ticket/Reminders.html:52 -msgid "Reminders" -msgstr "提醒项目" - -#: html/Ticket/Reminders.html:50 -#. ($Ticket->Id) -msgid "Reminders for ticket #%1" -msgstr "申请单 #%1 的提醒项目" - -#: NOT FOUND IN SOURCE -msgid "Remove" -msgstr "移除" - -#: html/Search/Bulk.html:94 -msgid "Remove AdminCc" -msgstr "移除管理员副本" - -#: html/Search/Bulk.html:90 -msgid "Remove Cc" -msgstr "移除副本" - -#: html/Search/Bulk.html:86 -msgid "Remove Requestor" -msgstr "移除申请人" - -#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:147 -msgid "Reply" -msgstr "回复" - -#: html/Admin/Queues/Modify.html:72 -msgid "Reply Address" -msgstr "回复地址" - -#: html/Search/Bulk.html:129 html/Ticket/ModifyAll.html:94 html/Ticket/Update.html:78 -msgid "Reply to requestors" -msgstr "回复申请人" - -#: lib/RT/Queue_Overlay.pm:110 -msgid "Reply to tickets" -msgstr "对申请单进行回复" - -#: lib/RT/Queue_Overlay.pm:110 -msgid "ReplyToTicket" -msgstr "回复申请单" - -#: NOT FOUND IN SOURCE -msgid "Report to Duty" -msgstr "上下班刷卡" - -#: NOT FOUND IN SOURCE -msgid "Reported on" -msgstr "到职日期" - -#: html/Tools/Elements/Tabs:59 html/Tools/Reports/index.html:46 html/Tools/Reports/index.html:47 -msgid "Reports" -msgstr "报表" - -#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:111 -msgid "Requestor" -msgstr "申请人" - -#: NOT FOUND IN SOURCE -msgid "Requestor email address" -msgstr "申请人电子邮件信箱地址" - -#: NOT FOUND IN SOURCE -msgid "Requestor's" -msgstr "申请人所属之第上" - -#: NOT FOUND IN SOURCE -msgid "Requestor's Dept." -msgstr "申请人所属部门之" - -#: NOT FOUND IN SOURCE -msgid "Requestor's Phone" -msgstr "申请人电话" - -#: NOT FOUND IN SOURCE -msgid "Requestor(s)" -msgstr "申请人" - -#: NOT FOUND IN SOURCE -msgid "RequestorAddresses" -msgstr "申请人地址" - -#: html/SelfService/Create.html:63 html/Ticket/Create.html:80 html/Ticket/Elements/EditPeople:69 html/Ticket/Elements/ShowPeople:52 -msgid "Requestors" -msgstr "申请人" - -#: html/Admin/Queues/Modify.html:96 -msgid "Requests should be due in" -msgstr "申请单处理期限" - -#: lib/RT/Attribute_Overlay.pm:146 -#. ('Object') -msgid "Required parameter '%1' not specified" -msgstr "未指定必要的参数‘%1’" - -#: html/Elements/Submit:83 -msgid "Reset" -msgstr "重设" - -#: html/Admin/Users/MyRT.html:15 html/Prefs/MyRT.html:60 -msgid "Reset to default" -msgstr "重设为预设值" - -#: html/Admin/Users/Modify.html:183 html/User/Prefs.html:84 -msgid "Residence" -msgstr "住处" - -#: NOT FOUND IN SOURCE -msgid "Resolution" -msgstr "解决状态" - -#: html/Ticket/Elements/Tabs:156 -msgid "Resolve" -msgstr "解决" - -#: html/Ticket/Update.html:156 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Resolve ticket #%1 (%2)" -msgstr "解决申请单 #%1 (%2)" - -#: etc/initialdata:323 html/Elements/SelectDateType:49 lib/RT/Ticket_Overlay.pm:1172 -msgid "Resolved" -msgstr "已解决" - -#: html/Tools/Reports/Elements/Tabs:55 -msgid "Resolved by owner" -msgstr "已由承办人解决" - -#: html/Tools/Reports/Elements/Tabs:59 -msgid "Resolved in date range" -msgstr "已在指定日期内解决" - -#: html/Tools/Reports/ResolvedByDates.html:52 -msgid "Resolved tickets in period, grouped by owner" -msgstr "已在指定日期内内解决,依承办人分组" - -#: html/Tools/Reports/ResolvedByOwner.html:50 -msgid "Resolved tickets, grouped by owner" -msgstr "已解决的申请单,依承办人分组" - -#: NOT FOUND IN SOURCE -msgid "Response to requestors" -msgstr "回复申请人" - -#: NOT FOUND IN SOURCE -msgid "Responsibility Type" -msgstr "责任区分" - -#: html/Elements/ListActions:46 html/Search/Elements/NewListActions:47 -msgid "Results" -msgstr "结果" - -#: NOT FOUND IN SOURCE -msgid "Results per page" -msgstr "每页列出几笔结果" - -#: html/Admin/Users/Modify.html:126 html/User/Prefs.html:116 -msgid "Retype Password" -msgstr "再次输入口令" - -#: html/Search/Elements/EditSearches:61 -msgid "Revert" -msgstr "复原" - -#: NOT FOUND IN SOURCE -msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" -msgstr "在 %4 (%5) 的范围内找不到 %2 %3 的 %1 权限\\n" - -#: lib/RT/ACE_Overlay.pm:630 -msgid "Right Delegated" -msgstr "权限代理完毕" - -#: lib/RT/ACE_Overlay.pm:320 -msgid "Right Granted" -msgstr "权限设定完毕" - -#: lib/RT/ACE_Overlay.pm:178 -msgid "Right Loaded" -msgstr "权限加载完毕" - -#: lib/RT/ACE_Overlay.pm:695 lib/RT/ACE_Overlay.pm:716 -msgid "Right could not be revoked" -msgstr "无法撤消权限" - -#: html/User/Delegation.html:85 -msgid "Right not found" -msgstr "找不到权限" - -#: lib/RT/ACE_Overlay.pm:560 lib/RT/ACE_Overlay.pm:655 -msgid "Right not loaded." -msgstr "权限并未加载。" - -#: lib/RT/ACE_Overlay.pm:712 -msgid "Right revoked" -msgstr "权限撤消完毕" - -#: html/Admin/Elements/UserTabs:70 -msgid "Rights" -msgstr "权限及代理人" - -#: html/Admin/CustomFields/GroupRights.html:129 lib/RT/Interface/Web.pm:961 -#. ($object_type) -msgid "Rights could not be granted for %1" -msgstr "无法将权限赋予 %1" - -#: html/Admin/CustomFields/GroupRights.html:156 lib/RT/Interface/Web.pm:990 -#. ($object_type) -msgid "Rights could not be revoked for %1" -msgstr "无法撤消 %1 的权限" - -#: NOT FOUND IN SOURCE -msgid "Role Members" -msgstr "角色成员" - -#: NOT FOUND IN SOURCE -msgid "Role Name" -msgstr "角色名称" - -#: html/Admin/Global/GroupRights.html:72 html/Admin/Queues/GroupRights.html:74 -msgid "Roles" -msgstr "角色" - -#: NOT FOUND IN SOURCE -msgid "RootApproval" -msgstr "交由系统管理员签核" - -#: html/Prefs/MyRT.html:72 -msgid "Rows per box" -msgstr "每格笔数" - -#: html/Search/Elements/DisplayOptions:93 -msgid "Rows per page" -msgstr "每页笔数" - -#: NOT FOUND IN SOURCE -msgid "Run Approval" -msgstr "签核执行" - -#: NOT FOUND IN SOURCE -msgid "SMTPDebug" -msgstr "SMTP 侦错纪录" - -#: NOT FOUND IN SOURCE -msgid "SMTPFrom" -msgstr "SMTP 寄件地址" - -#: NOT FOUND IN SOURCE -msgid "SMTPServer" -msgstr "SMTP 服务器" - -#: NOT FOUND IN SOURCE -msgid "Sat" -msgstr "星期六" - -#: lib/RT/Date.pm:422 -msgid "Sat." -msgstr "星期六" - -#: html/Prefs/MyRT.html:72 html/Prefs/Quicksearch.html:64 html/Prefs/Search.html:69 html/Prefs/Search.html:69 html/Search/Elements/EditSearches:70 html/Widgets/SelectionBox:211 -msgid "Save" -msgstr "储存" - -#: html/Admin/Global/Template.html:67 html/Admin/Groups/Modify.html:88 html/Admin/Queues/Modify.html:111 html/Admin/Queues/People.html:126 html/Admin/Users/Modify.html:239 html/Prefs/Quicksearch.html:64 html/Prefs/SearchOptions.html:63 html/SelfService/Prefs.html:58 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:127 html/Ticket/ModifyDates.html:60 html/Ticket/ModifyLinks.html:61 html/Ticket/ModifyPeople.html:60 html/User/Groups/Modify.html:77 -msgid "Save Changes" -msgstr "储存更改" - -#: html/User/Prefs.html:181 -msgid "Save Preferences" -msgstr "储存偏好" - -#: html/Ticket/Elements/PreviewScrips:131 -msgid "Save changes" -msgstr "储存更改" - -#: lib/RT/SavedSearch.pm:173 -#. ($name) -msgid "Saved search %1" -msgstr "成功储存查询:%1" - -#: NOT FOUND IN SOURCE -msgid "Saved searches" -msgstr "预存查询" - -#: html/Admin/Elements/ListGlobalScrips:60 html/Admin/Global/Scrip.html:77 html/Admin/Queues/Scrip.html:84 -#. ($scrip->Id) -#. ($id) -msgid "Scrip #%1" -msgstr "手续 #%1" - -#: NOT FOUND IN SOURCE -msgid "Scrip Action" -msgstr "讯息通知动作" - -#: NOT FOUND IN SOURCE -msgid "Scrip Condition" -msgstr "讯息通知条件" - -#: lib/RT/Scrip_Overlay.pm:203 -msgid "Scrip Created" -msgstr "手续新增完毕" - -#: html/Admin/Elements/EditScrip:52 -msgid "Scrip Fields" -msgstr "手续字段" - -#: NOT FOUND IN SOURCE -msgid "Scrip Name" -msgstr "讯息名称" - -#: html/Admin/Elements/EditScrips:109 -msgid "Scrip deleted" -msgstr "手续删除完毕" - -#: html/Admin/Elements/QueueTabs:67 html/Admin/Elements/SystemTabs:54 html/Admin/Global/index.html:62 -msgid "Scrips" -msgstr "手续" - -#: NOT FOUND IN SOURCE -msgid "Scrips " -msgstr "讯息通知" - -#: NOT FOUND IN SOURCE -msgid "Scrips for %1\\n" -msgstr "%1 的手续\\n" - -#: html/Admin/Queues/Scrips.html:55 -msgid "Scrips which apply to all queues" -msgstr "适用于所有表单的手续" - -#: html/Elements/SimpleSearch:48 html/Search/Simple.html:63 -msgid "Search" -msgstr "查询" - -#: NOT FOUND IN SOURCE -msgid "Search Criteria" -msgstr "查询条件" - -#: html/Prefs/SearchOptions.html:47 html/Prefs/SearchOptions.html:50 -msgid "Search Preferences" -msgstr "搜寻偏好" - -#: lib/RT/SavedSearch.pm:115 -msgid "Search attribute load failure" -msgstr "搜寻属性加载失败" - -#: html/Approvals/Elements/PendingMyApproval:59 -msgid "Search for approvals" -msgstr "签核单查询" - -#: html/Search/Simple.html:67 -msgid "Search for tickets" -msgstr "申请单查询" - -#: html/Search/Simple.html:55 -msgid "Search for tickets. Enter <strong>id</strong> numbers, <strong>queues</strong> by name, Owners by <strong>username</strong> and Requestors by <strong>email address</strong>. RT will look for anything else you enter in ticket bodies and attachments." -msgstr "搜寻申请单。请键入<strong>编号</strong>、<strong>表单名称</strong>、承办人的<strong>使用者名称</strong>、或申请人的<strong>电子邮件地址</strong>。以上格式之外的文字,则会在申请单内文及附件内检索。" - -#: html/User/Elements/Tabs:62 -msgid "Search options" -msgstr "搜寻选项" - -#: html/Search/Chart.html:56 -#. ($PrimaryGroupBy) -msgid "Search results grouped by %1" -msgstr "搜寻结果,依 %1 分组" - -#: lib/RT/SavedSearch.pm:203 -#. ($msg) -msgid "Search update: %1" -msgstr "更新查询:%1" - -#: NOT FOUND IN SOURCE -msgid "Searches can't be associated with that kind of object" -msgstr "不能对此类对象进行查询" - -#: html/Search/Simple.html:57 -msgid "Searching the full text of every ticket can take a long time, but if you need to do it, you can search for any word in full ticket history for any word by typing <b>fulltext:<i>word</i></b>." -msgstr "对所有申请单的全文进行检索,可能会需要很久的时间。但如果您真的有需要,可键入 <b>fulltext:<i>文字</i></b> 来搜寻申请单的所有纪录。" - -#: NOT FOUND IN SOURCE -msgid "Second-" -msgstr "二" - -#: NOT FOUND IN SOURCE -msgid "Second-level Users" -msgstr "二阶主管员工" - -#: bin/rt-crontool:265 -msgid "Security:" -msgstr "安全性:" - -#: html/Elements/ShowCustomFields:98 -msgid "See also:" -msgstr "参见:" - -#: lib/RT/CustomField_Overlay.pm:105 -msgid "See custom fields" -msgstr "查阅自订字段" - -#: lib/RT/Queue_Overlay.pm:106 -msgid "See exact outgoing email messages and their recipeients" -msgstr "查阅送出的电子邮件及收件人" - -#: lib/RT/Queue_Overlay.pm:104 -msgid "See ticket private commentary" -msgstr "查阅申请单内的私人评论" - -#: lib/RT/Queue_Overlay.pm:103 -msgid "See ticket summaries" -msgstr "查阅申请单总览" - -#: lib/RT/CustomField_Overlay.pm:105 -msgid "SeeCustomField" -msgstr "查阅自订字段" - -#: lib/RT/Group_Overlay.pm:169 -msgid "SeeGroup" -msgstr "查阅群组" - -#: lib/RT/Queue_Overlay.pm:91 -msgid "SeeQueue" -msgstr "查阅表单" - -#: NOT FOUND IN SOURCE -msgid "Select" -msgstr "选择" - -#: NOT FOUND IN SOURCE -msgid "Select All" -msgstr "全选" - -#: html/Admin/CustomFields/index.html:46 html/Admin/CustomFields/index.html:49 -msgid "Select a Custom Field" -msgstr "选择自订字段" - -#: html/Admin/Groups/index.html:78 -msgid "Select a group" -msgstr "选择群组" - -#: html/Admin/Queues/index.html:54 -msgid "Select a queue" -msgstr "选择表单" - -#: html/SelfService/CreateTicketInQueue.html:48 -msgid "Select a queue for your new ticket" -msgstr "为您新的申请单选择一个表单" - -#: NOT FOUND IN SOURCE -msgid "Select a queue to link to" -msgstr "请选择欲连结表单" - -#: html/Admin/Users/index.html:46 html/Admin/Users/index.html:49 html/Admin/Users/index.html:52 -msgid "Select a user" -msgstr "选择使用者" - -#: html/Admin/Elements/CustomFieldTabs:90 -msgid "Select custom field" -msgstr "选择自订字段" - -#: html/Admin/Global/CustomFields/index.html:70 -msgid "Select custom fields for all user groups" -msgstr "选择适用于所有使用者群组的自订字段" - -#: html/Admin/Global/CustomFields/index.html:65 -msgid "Select custom fields for all users" -msgstr "选择适用于所有使用者的自订字段" - -#: html/Admin/Global/CustomFields/index.html:76 -msgid "Select custom fields for tickets in all queues" -msgstr "选择适用于所有表单内申请单的自订字段" - -#: html/Admin/Global/CustomFields/index.html:83 -msgid "Select custom fields for transactions on tickets in all queues" -msgstr "选择适用于所有表单内申请单之更动的自订字段" - -#: html/Admin/Elements/GroupTabs:75 html/User/Elements/GroupTabs:71 -msgid "Select group" -msgstr "选择群组" - -#: lib/RT/CustomField_Overlay.pm:59 -msgid "Select multiple values" -msgstr "选择多重项目" - -#: lib/RT/CustomField_Overlay.pm:60 -msgid "Select one value" -msgstr "选择单一项目" - -#: html/Admin/Elements/QueueTabs:92 -msgid "Select queue" -msgstr "选择表单" - -#: html/Prefs/Quicksearch.html:53 -msgid "Select queues to be displayed on the \"RT at a glance\" page" -msgstr "选择要在‘RT 一览’页面显示的表单" - -#: html/Admin/Global/Scrip.html:59 html/Admin/Global/Scrips.html:57 html/Admin/Queues/Scrip.html:67 html/Admin/Queues/Scrips.html:73 -msgid "Select scrip" -msgstr "选择手续" - -#: html/Admin/Global/Template.html:78 html/Admin/Global/Templates.html:57 html/Admin/Queues/Template.html:76 html/Admin/Queues/Templates.html:68 -msgid "Select template" -msgstr "选择模板" - -#: lib/RT/CustomField_Overlay.pm:61 -msgid "Select up to %1 values" -msgstr "选择最多 %1 个值" - -#: html/Admin/Elements/UserTabs:78 -msgid "Select user" -msgstr "选择使用者" - -#: NOT FOUND IN SOURCE -msgid "Select workflow" -msgstr "选择流程" - -#: NOT FOUND IN SOURCE -msgid "SelectExternal" -msgstr "系统选项" - -#: NOT FOUND IN SOURCE -msgid "SelectMultiple" -msgstr "多重选项" - -#: NOT FOUND IN SOURCE -msgid "SelectSingle" -msgstr "单一选项" - -#: html/Admin/Elements/EditCustomFields:58 -msgid "Selected Custom Fields" -msgstr "已选取的自订字段" - -#: html/Admin/CustomFields/Objects.html:59 -msgid "Selected objects" -msgstr "已选取的对象" - -#: NOT FOUND IN SOURCE -msgid "Selected users:" -msgstr "已选取的使用者:" - -#: html/Widgets/SelectionBox:209 -msgid "Selections modified. Please save your changes" -msgstr "选取的项目已更改。请储存您的更动" - -#: NOT FOUND IN SOURCE -msgid "Self Service" -msgstr "自助服务" - -#: etc/initialdata:121 -msgid "Send mail to all watchers" -msgstr "寄信给所有视察员" - -#: etc/initialdata:117 -msgid "Send mail to all watchers as a \"comment\"" -msgstr "以评论方式寄信给所有视察员" - -#: etc/initialdata:112 -msgid "Send mail to requestors and Ccs" -msgstr "寄信给申请人及副本收件人" - -#: etc/initialdata:107 -msgid "Send mail to requestors and Ccs as a comment" -msgstr "以评论方式寄信给申请人及副本收件人" - -#: etc/initialdata:78 -msgid "Sends a message to the requestors" -msgstr "寄信给申请人" - -#: etc/initialdata:125 etc/initialdata:129 -msgid "Sends mail to explicitly listed Ccs and Bccs" -msgstr "寄信给特定的副本及密件副本收件人" - -#: etc/initialdata:94 etc/upgrade/3.1.17/content:7 -msgid "Sends mail to the Ccs" -msgstr "寄信给副本收件人" - -#: etc/initialdata:90 etc/upgrade/3.1.17/content:3 -msgid "Sends mail to the Ccs as a comment" -msgstr "以评论方式寄信给副本收件人" - -#: etc/initialdata:102 -msgid "Sends mail to the administrative Ccs" -msgstr "寄信给管理员副本收件人" - -#: etc/initialdata:98 -msgid "Sends mail to the administrative Ccs as a comment" -msgstr "以评论寄信给管理员副本收件人" - -#: etc/initialdata:82 etc/initialdata:86 -msgid "Sends mail to the owner" -msgstr "寄信给申请人" - -#: NOT FOUND IN SOURCE -msgid "Sep" -msgstr "九月" - -#: lib/RT/Date.pm:449 -msgid "Sep." -msgstr "09" - -#: NOT FOUND IN SOURCE -msgid "September" -msgstr "九月" - -#: NOT FOUND IN SOURCE -msgid "Setting %1's 'Disabled' property to %2" -msgstr "%1 的‘停用’属性已设为 %2" - -#: NOT FOUND IN SOURCE -msgid "Shift Type" -msgstr "班别属性" - -#: html/Ticket/Elements/ShowTransaction:158 -msgid "Show" -msgstr "显示" - -#: html/Approvals/index.html:52 -msgid "Show Approvals" -msgstr "显示待签核申请单" - -#: html/Search/Elements/EditFormat:56 -msgid "Show Columns" -msgstr "显示字段" - -#: html/Ticket/Elements/Tabs:220 -msgid "Show Results" -msgstr "显示结果" - -#: html/Approvals/Elements/PendingMyApproval:64 -msgid "Show approved requests" -msgstr "显示已批准的签核单" - -#: html/Ticket/Create.html:316 -msgid "Show basics" -msgstr "显示基本信息" - -#: html/Approvals/Elements/PendingMyApproval:65 -msgid "Show denied requests" -msgstr "显示已驳回的签核单" - -#: html/Ticket/Create.html:319 -msgid "Show details" -msgstr "显示细节" - -#: html/Approvals/Elements/PendingMyApproval:63 -msgid "Show pending requests" -msgstr "显示待处理的签核单" - -#: html/Approvals/Elements/PendingMyApproval:66 -msgid "Show requests awaiting other approvals" -msgstr "显示尚待他人批准的签核单" - -#: NOT FOUND IN SOURCE -msgid "Show ticket private commentary" -msgstr "显示申请单内的私人评论" - -#: NOT FOUND IN SOURCE -msgid "Show ticket summaries" -msgstr "显示申请单摘要" - -#: lib/RT/Queue_Overlay.pm:93 -msgid "ShowACL" -msgstr "显示权限清单" - -#: lib/RT/System.pm:85 -msgid "ShowConfigTab" -msgstr "显示设定页签" - -#: lib/RT/Queue_Overlay.pm:106 -msgid "ShowOutgoingEmail" -msgstr "显示寄送邮件" - -#: lib/RT/Group_Overlay.pm:168 -msgid "ShowSavedSearches" -msgstr "显示预存查询" - -#: lib/RT/Queue_Overlay.pm:102 -msgid "ShowScrips" -msgstr "显示手续" - -#: lib/RT/Queue_Overlay.pm:99 -msgid "ShowTemplate" -msgstr "显示模板" - -#: lib/RT/Queue_Overlay.pm:103 -msgid "ShowTicket" -msgstr "显示申请单" - -#: lib/RT/Queue_Overlay.pm:104 -msgid "ShowTicketComments" -msgstr "显示申请单的评论" - -#: lib/RT/Queue_Overlay.pm:107 -msgid "Sign up as a ticket Requestor or ticket or queue Cc" -msgstr "登记成为申请人或副本收件人" - -#: lib/RT/Queue_Overlay.pm:108 -msgid "Sign up as a ticket or queue AdminCc" -msgstr "登记成为管理员副本收件人" - -#: html/Admin/Users/Modify.html:230 html/User/Prefs.html:168 -msgid "Signature" -msgstr "签名档" - -#: NOT FOUND IN SOURCE -msgid "Signed in as %1" -msgstr "使用者:%1" - -#: html/Elements/Tabs:68 -msgid "Simple Search" -msgstr "简易查询" - -#: html/Admin/Elements/SelectSingleOrMultiple:47 -msgid "Single" -msgstr "单一" - -#: html/Search/Elements/EditFormat:75 -msgid "Size" -msgstr "大小" - -#: html/Elements/Header:89 -msgid "Skip Menu" -msgstr "略过选单" - -#: html/Search/Elements/EditFormat:78 -msgid "Small" -msgstr "小" - -#: html/Admin/CustomFields/Modify.html:120 -msgid "Some browsers may only load content from the same domain as your RT server." -msgstr "某些浏览器只允许加载和 RT 服务器同一个网域的内容。" - -#: html/Admin/Elements/AddCustomFieldValue:49 html/Admin/Elements/EditCustomFieldValues:54 -msgid "Sort" -msgstr "顺序" - -#: NOT FOUND IN SOURCE -msgid "Sort key" -msgstr "排序方式" - -#: NOT FOUND IN SOURCE -msgid "Sort results by" -msgstr "结果排序方式" - -#: NOT FOUND IN SOURCE -msgid "SortOrder" -msgstr "排序顺序" - -#: html/Admin/Elements/EditScrip:78 -msgid "Stage" -msgstr "关卡" - -#: NOT FOUND IN SOURCE -msgid "Stage Action" -msgstr "关卡运行动作" - -#: NOT FOUND IN SOURCE -msgid "Stage Condition" -msgstr "关卡运行条件" - -#: NOT FOUND IN SOURCE -msgid "Stalled" -msgstr "延宕" - -#: NOT FOUND IN SOURCE -msgid "Start page" -msgstr "首页" - -#: html/Elements/SelectDateType:48 html/Ticket/Elements/EditDates:53 html/Ticket/Elements/ShowDates:56 -msgid "Started" -msgstr "实际起始日" - -#: NOT FOUND IN SOURCE -msgid "Started date '%1' could not be parsed" -msgstr "无法解读起始日期 '%1" - -#: html/Elements/SelectDateType:52 html/Ticket/Create.html:208 html/Ticket/Elements/EditDates:48 html/Ticket/Elements/ShowDates:52 -msgid "Starts" -msgstr "应起始日" - -msgid "StartsRelative" -msgstr "应起始日(相对值)" - -msgid "StartedRelative" -msgstr "实际起始日(相对值)" - -msgid "CreatedRelative" -msgstr "实际新增日(相对值)" - -msgid "LastUpdatedRelative" -msgstr "上次更新(相对值)" - -msgid "ToldRelative" -msgstr "告知日(相对值)" - -msgid "DueRelative" -msgstr "到期日(相对值)" - -msgid "ResolvedRelative" -msgstr "解决日(相对值)" - -msgid "ReferredToBy" -msgstr "被参考" - -msgid "DependedOnBy" -msgstr "可接续处理" - -#: NOT FOUND IN SOURCE -msgid "Starts By" -msgstr "应起始日" - -#: NOT FOUND IN SOURCE -msgid "Starts date '%1' could not be parsed" -msgstr "无法解读起始日期 '%1" - -#: html/Admin/Users/Modify.html:162 html/User/Prefs.html:145 -msgid "State" -msgstr "州" - -#: html/Search/Elements/PickBasics:87 html/SelfService/Update.html:57 html/Ticket/Create.html:66 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:52 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:1651 -msgid "Status" -msgstr "现况" - -msgid "ExtendedStatus" -msgstr "额外现况" - -#: etc/initialdata:309 -msgid "Status Change" -msgstr "现况改变时" - -#: NOT FOUND IN SOURCE -msgid "Status changed from %1 to %2" -msgstr "现况从 %1 改为 %2" - -#: NOT FOUND IN SOURCE -msgid "StatusChange" -msgstr "现况改变时" - -#: html/Ticket/Elements/Tabs:178 -msgid "Steal" -msgstr "强制更换承办人" - -#: lib/RT/Queue_Overlay.pm:117 -msgid "Steal tickets" -msgstr "强制承办申请单" - -#: lib/RT/Queue_Overlay.pm:117 -msgid "StealTicket" -msgstr "强制承办申请单" - -#: lib/RT/Transaction_Overlay.pm:678 -#. ($Old->Name) -msgid "Stolen from %1" -msgstr "承办人从 %1 强制更换" - -#: NOT FOUND IN SOURCE -msgid "Stolen from %1 " -msgstr "承办人从 %1 强制更换 " - -#: html/Search/Elements/EditFormat:81 -msgid "Style" -msgstr "样式" - -#: NOT FOUND IN SOURCE -msgid "Subgroup" -msgstr "子群组" - -#: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:132 html/SelfService/Create.html:79 html/SelfService/Update.html:65 html/Ticket/Create.html:108 html/Ticket/Elements/EditBasics:48 html/Ticket/Elements/Reminders:125 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:82 lib/RT/Ticket_Overlay.pm:1162 lib/RT/Tickets_Overlay.pm:1733 -msgid "Subject" -msgstr "主题" - -#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm:700 -#. ($self->Data) -msgid "Subject changed to %1" -msgstr "标题已改为 %1" - -#: html/Elements/Submit:75 -msgid "Submit" -msgstr "送出" - -#: NOT FOUND IN SOURCE -msgid "Submit Workflow" -msgstr "送出流程" - -#: lib/RT/Group_Overlay.pm:774 -msgid "Succeeded" -msgstr "设定成功" - -#: NOT FOUND IN SOURCE -msgid "Sun" -msgstr "星期日" - -#: lib/RT/Date.pm:423 -msgid "Sun." -msgstr "星期日" - -#: lib/RT/System.pm:75 -msgid "SuperUser" -msgstr "系统管理员" - -#: NOT FOUND IN SOURCE -msgid "Sync now" -msgstr "执行同步" - -#: NOT FOUND IN SOURCE -msgid "Sync104HRMS" -msgstr "自动同步104HRMS" - -#: NOT FOUND IN SOURCE -msgid "Synchronizing HRMS data. This may take a while..." -msgstr "正在同步化 HRMS 人事系统数据。请稍待..." - -#: html/User/Elements/DelegateRights:98 -msgid "System" -msgstr "系统" - -#: html/Admin/Elements/ToolTabs:54 html/Admin/Tools/Configuration.html:48 -msgid "System Configuration" -msgstr "系统设定" - -#: NOT FOUND IN SOURCE -msgid "System Defined" -msgstr "系统定义" - -#: html/Admin/CustomFields/GroupRights.html:128 html/Admin/CustomFields/GroupRights.html:155 html/Admin/CustomFields/UserRights.html:128 html/Admin/CustomFields/UserRights.html:98 html/Admin/Elements/SelectRights:106 lib/RT/ACE_Overlay.pm:584 lib/RT/Interface/Web.pm:960 lib/RT/Interface/Web.pm:989 -msgid "System Error" -msgstr "系统错误" - -#: NOT FOUND IN SOURCE -msgid "System Error. Right not granted." -msgstr "系统错误。设定权限失败。" - -#: NOT FOUND IN SOURCE -msgid "System Error. right not granted" -msgstr "系统错误。设定权限失败。" - -#: lib/RT/Transaction_Overlay.pm:224 lib/RT/Transaction_Overlay.pm:230 -#. ($msg) -msgid "System Error: %1" -msgstr "系统错误:%1" - -#: NOT FOUND IN SOURCE -msgid "System Rights" -msgstr "系统权限" - -#: html/Admin/Tools/index.html:47 -msgid "System Tools" -msgstr "系统工具" - -#: lib/RT/ACE_Overlay.pm:633 -msgid "System error. Right not delegated." -msgstr "系统错误。权限代理失败。" - -#: lib/RT/ACE_Overlay.pm:163 lib/RT/ACE_Overlay.pm:228 lib/RT/ACE_Overlay.pm:323 lib/RT/ACE_Overlay.pm:920 -msgid "System error. Right not granted." -msgstr "系统错误。设定权限失败。" - -#: NOT FOUND IN SOURCE -msgid "System error. Unable to grant rights." -msgstr "系统错误。无法设定权限。" - -#: html/Admin/CustomFields/GroupRights.html:58 html/Admin/Global/GroupRights.html:56 html/Admin/Groups/GroupRights.html:58 html/Admin/Queues/GroupRights.html:57 -msgid "System groups" -msgstr "系统群组" - -#: NOT FOUND IN SOURCE -msgid "SystemInternal" -msgstr "系统内部用" - -#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 -msgid "SystemRolegroup for internal use" -msgstr "内部使用的系统角色群组" - -#: lib/RT/CurrentUser.pm:357 -msgid "TEST_STRING" -msgstr "TEST_STRING" - -#: NOT FOUND IN SOURCE -msgid "TabbedUI" -msgstr "页签接口" - -#: etc/initialdata:603 html/Search/Elements/EditFormat:72 html/Ticket/Elements/Tabs:170 -msgid "Take" -msgstr "受理" - -#: lib/RT/Queue_Overlay.pm:115 -msgid "Take tickets" -msgstr "自行承办申请单" - -#: lib/RT/Queue_Overlay.pm:115 -msgid "TakeTicket" -msgstr "自行承办申请单" - -#: lib/RT/Transaction_Overlay.pm:663 -msgid "Taken" -msgstr "已受理" - -#: NOT FOUND IN SOURCE -msgid "Task" -msgstr "工作事项" - -#: html/Admin/Elements/EditScrip:71 html/Tools/Offline.html:78 -msgid "Template" -msgstr "模板" - -#: html/Admin/Global/Template.html:112 html/Admin/Queues/Template.html:113 -#. ($TemplateObj->Id()) -msgid "Template #%1" -msgstr "模板 #%1" - -#: NOT FOUND IN SOURCE -msgid "Template Content" -msgstr "通知模板内容" - -#: NOT FOUND IN SOURCE -msgid "Template Description" -msgstr "通知模板描述" - -#: NOT FOUND IN SOURCE -msgid "Template Name" -msgstr "通知模板名称" - -#: html/Admin/Elements/EditTemplates:110 -msgid "Template deleted" -msgstr "模板已删除" - -#: lib/RT/Scrip_Overlay.pm:176 -msgid "Template is mandatory argument" -msgstr "模板是必填字段" - -#: lib/RT/Scrip_Overlay.pm:180 -msgid "Template not found" -msgstr "找不到模板" - -#: NOT FOUND IN SOURCE -msgid "Template not found\\n" -msgstr "找不到模板\\n" - -#: lib/RT/Template_Overlay.pm:343 -msgid "Template parsed" -msgstr "模板剖析完毕" - -#: lib/RT/Template_Overlay.pm:391 -msgid "Template parsing error" -msgstr "模板剖析错误" - -#: html/Admin/Elements/QueueTabs:70 html/Admin/Elements/SystemTabs:57 html/Admin/Global/index.html:66 -msgid "Templates" -msgstr "模板" - -#: NOT FOUND IN SOURCE -msgid "Templates " -msgstr "通知模板" - -#: NOT FOUND IN SOURCE -msgid "Templates for %1\\n" -msgstr "找不到 %1 的模板\\n" - -#: NOT FOUND IN SOURCE -msgid "Text" -msgstr "文字" - -#: lib/RT/CustomField_Overlay.pm:943 lib/RT/Record.pm:945 -msgid "That is already the current value" -msgstr "已经是目前字段的值" - -#: lib/RT/CustomField_Overlay.pm:412 -msgid "That is not a value for this custom field" -msgstr "这不是该自订字段的值" - -#: lib/RT/Ticket_Overlay.pm:1994 -msgid "That is the same value" -msgstr "同样的值" - -#: lib/RT/ACE_Overlay.pm:305 lib/RT/ACE_Overlay.pm:614 -msgid "That principal already has that right" -msgstr "这项单位已经拥有该权限" - -#: lib/RT/Queue_Overlay.pm:753 -#. ($args{'Type'}) -msgid "That principal is already a %1 for this queue" -msgstr "这项单位已经是这个表单的 %1" - -#: lib/RT/Ticket_Overlay.pm:1435 -#. ($self->loc($args{'Type'})) -msgid "That principal is already a %1 for this ticket" -msgstr "这项单位已经是这份申请单的 %1" - -#: lib/RT/Queue_Overlay.pm:852 -#. ($args{'Type'}) -msgid "That principal is not a %1 for this queue" -msgstr "这项单位不是这个表单的 %1" - -#: NOT FOUND IN SOURCE -msgid "That principal is not a %1 for this ticket" -msgstr "这项单位不是这份申请单的 %1" - -#: lib/RT/Ticket_Overlay.pm:1990 -msgid "That queue does not exist" -msgstr "此表单不存在" - -#: lib/RT/Ticket_Overlay.pm:3233 -msgid "That ticket has unresolved dependencies" -msgstr "这份申请单有尚未解决的附属申请单" - -#: NOT FOUND IN SOURCE -msgid "That user already has that right" -msgstr "使用者已具有该项权限" - -#: lib/RT/Action/CreateTickets.pm:710 lib/RT/Ticket_Overlay.pm:3037 -msgid "That user already owns that ticket" -msgstr "该使用者已经承办这份申请单" - -#: lib/RT/Ticket_Overlay.pm:3012 -msgid "That user does not exist" -msgstr "使用者不存在" - -#: lib/RT/User_Overlay.pm:389 -msgid "That user is already privileged" -msgstr "这名使用者已经是内部成员" - -#: lib/RT/User_Overlay.pm:410 -msgid "That user is already unprivileged" -msgstr "这名使用者属于非内部成员群组" - -#: lib/RT/User_Overlay.pm:402 -msgid "That user is now privileged" -msgstr "使用者加入内部成员群组完毕" - -#: lib/RT/User_Overlay.pm:423 -msgid "That user is now unprivileged" -msgstr "这名使用者已加入非内部成员群组" - -#: NOT FOUND IN SOURCE -msgid "That user is now unprivilegedileged" -msgstr "这名使用者已加入非内部成员群组" - -#: lib/RT/Ticket_Overlay.pm:3031 -msgid "That user may not own tickets in that queue" -msgstr "使用者可能没有承办表单里的申请单" - -#: lib/RT/Link_Overlay.pm:233 -msgid "That's not a numerical id" -msgstr "这不是一个数字编号" - -#: html/SelfService/Display.html:53 html/Ticket/Create.html:177 html/Ticket/Elements/ShowSummary:49 -msgid "The Basics" -msgstr "基本信息" - -#: lib/RT/ACE_Overlay.pm:112 -msgid "The CC of a ticket" -msgstr "申请单的副本收件人" - -#: lib/RT/ACE_Overlay.pm:113 -msgid "The administrative CC of a ticket" -msgstr "申请单的管理员副本收件人" - -#: NOT FOUND IN SOURCE -msgid "The comment has been recorded" -msgstr "评论已被纪录" - -#: bin/rt-crontool:275 -msgid "The following command will find all active tickets in the queue 'general' and set their priority to 99 if they haven't been touched in 4 hours:" -msgstr "下列命令会找到 'general' 表单内所有运作中的申请单,并将其中 4 小时内未处理的申请单优先程度设为 99:" - -#: NOT FOUND IN SOURCE -msgid "The following commands were not proccessed:\\n\\n" -msgstr "以下命令未被执行:\\n\\n" - -#: lib/RT/Record.pm:948 -msgid "The new value has been set." -msgstr "新的字段值设定完成。" - -#: lib/RT/ACE_Overlay.pm:110 -msgid "The owner of a ticket" -msgstr "申请单的承办人" - -#: lib/RT/ACE_Overlay.pm:111 -msgid "The requestor of a ticket" -msgstr "申请单的申请人" - -#: html/Admin/Elements/EditUserComments:47 -msgid "These comments aren't generally visible to the user" -msgstr "该使用者不会看见这些评论" - -#: NOT FOUND IN SOURCE -msgid "Third-" -msgstr "三" - -#: lib/RT/CustomField_Overlay.pm:978 -msgid "This custom field does not apply to that object" -msgstr "此自订字段不适用于该对象" - -#: html/Admin/Tools/Configuration.html:50 -msgid "This feature is only available to system administrators" -msgstr "此项功能仅限系统管理员使用" - -#: html/Ticket/Elements/PreviewScrips:96 -msgid "This message will be sent to..." -msgstr "此讯息会寄给..." - -#: NOT FOUND IN SOURCE -msgid "This ticket %1 %2 (%3)\\n" -msgstr "申请单 %1 %2 (%3)\\n" - -#: bin/rt-crontool:266 -msgid "This tool allows the user to run arbitrary perl modules from within RT." -msgstr "此工具程序会让使用者经由 RT 执行任意命令。" - -#: lib/RT/Transaction_Overlay.pm:301 -msgid "This transaction appears to have no content" -msgstr "此项更动报告没有内容" - -#: html/Ticket/Elements/ShowRequestor:70 -#. ($rows) -msgid "This user's %1 highest priority tickets" -msgstr "使用者送出的前 %1 份优先处理申请单" - -#: NOT FOUND IN SOURCE -msgid "This user's 25 highest priority tickets" -msgstr "使用者送出的前 25 份优先处理申请单" - -#: NOT FOUND IN SOURCE -msgid "Thu" -msgstr "星期四" - -#: lib/RT/Date.pm:420 -msgid "Thu." -msgstr "星期四" - -#: NOT FOUND IN SOURCE -msgid "Ticket" -msgstr "申请单" - -#: NOT FOUND IN SOURCE -msgid "Ticket # %1 %2" -msgstr "申请单 # %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Ticket # %1 Jumbo update: %2" -msgstr "更新申请单 # %1 的全部信息:%2" - -#: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket #%1 Jumbo update: %2" -msgstr "更新申请单 #%1 的全部信息:%2" - -#: html/Approvals/Elements/ShowDependency:67 -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Ticket #%1: %2" -msgstr "申请单 #%1: %2" - -#: lib/RT/Action/CreateTickets.pm:1350 lib/RT/Action/CreateTickets.pm:1359 lib/RT/Action/CreateTickets.pm:605 lib/RT/Action/CreateTickets.pm:729 lib/RT/Action/CreateTickets.pm:741 -#. ($T::Tickets{$template_id}->Id) -#. ($T::Tickets{$template_id}->id) -#. ($ticket->Id) -msgid "Ticket %1" -msgstr "申请单 %1" - -#: lib/RT/Ticket_Overlay.pm:755 lib/RT/Ticket_Overlay.pm:775 -#. ($self->Id, $QueueObj->Name) -msgid "Ticket %1 created in queue '%2'" -msgstr "申请单 #%1 成功新增于 '%2' 表单" - -#: NOT FOUND IN SOURCE -msgid "Ticket %1 loaded\\n" -msgstr "加载申请单 %1\\n" - -#: html/Search/Bulk.html:377 -#. ($Ticket->Id, $_) -msgid "Ticket %1: %2" -msgstr "申请单 %1:%2" - -#: html/Admin/Elements/QueueTabs:74 -msgid "Ticket Custom Fields" -msgstr "申请单的自订字段" - -#: NOT FOUND IN SOURCE -msgid "Ticket Due" -msgstr "表单处理期限" - -#: html/Ticket/History.html:46 html/Ticket/History.html:49 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket History # %1 %2" -msgstr "申请单处理纪录 # %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Ticket ID" -msgstr "单号" - -#: NOT FOUND IN SOURCE -msgid "Ticket Id" -msgstr "申请单编号" - -#: NOT FOUND IN SOURCE -msgid "Ticket Processing Due" -msgstr "表单运行期限" - -#: etc/initialdata:324 -msgid "Ticket Resolved" -msgstr "申请单已解决" - -#: html/Admin/Elements/GlobalCustomFieldTabs:69 html/Admin/Global/CustomFields/index.html:81 lib/RT/CustomField_Overlay.pm:1207 -msgid "Ticket Transactions" -msgstr "申请单的更动" - -#: NOT FOUND IN SOURCE -msgid "Ticket Type" -msgstr "表单种类" - -#: NOT FOUND IN SOURCE -msgid "Ticket attachment" -msgstr "申请单附件" - -#: lib/RT/Tickets_Overlay.pm:1920 -msgid "Ticket content" -msgstr "申请单内容" - -#: lib/RT/Tickets_Overlay.pm:1969 -msgid "Ticket content type" -msgstr "申请单内容类别" - -#: lib/RT/Ticket_Overlay.pm:603 lib/RT/Ticket_Overlay.pm:617 lib/RT/Ticket_Overlay.pm:628 lib/RT/Ticket_Overlay.pm:763 -msgid "Ticket could not be created due to an internal error" -msgstr "内部错误,无法新增申请单" - -#: NOT FOUND IN SOURCE -msgid "Ticket created" -msgstr "申请单新增完毕" - -#: NOT FOUND IN SOURCE -msgid "Ticket creation failed" -msgstr "申请单新增失败" - -#: NOT FOUND IN SOURCE -msgid "Ticket deleted" -msgstr "申请单删除完毕" - -#: NOT FOUND IN SOURCE -msgid "Ticket id not found" -msgstr "找不到申请单编号" - -#: NOT FOUND IN SOURCE -msgid "Ticket killed" -msgstr "申请单删除完毕" - -#: html/Ticket/Display.html:55 -msgid "Ticket metadata" -msgstr "申请单的描述信息" - -#: NOT FOUND IN SOURCE -msgid "Ticket not found" -msgstr "找不到申请单" - -#: etc/initialdata:310 -msgid "Ticket status changed" -msgstr "申请单现况已改变" - -#: NOT FOUND IN SOURCE -msgid "Ticket watchers" -msgstr "申请单视察员" - -#: lib/RT/Search/FromSQL.pm:82 -#. (ref $self) -msgid "TicketSQL search module" -msgstr "TicketSQL 查询模块" - -#: html/Admin/Elements/GlobalCustomFieldTabs:64 html/Admin/Global/CustomFields/index.html:75 html/Elements/Tabs:71 html/Search/Elements/Chart:109 lib/RT/CustomField_Overlay.pm:1206 -msgid "Tickets" -msgstr "申请单" - -#: NOT FOUND IN SOURCE -msgid "Tickets %1 %2" -msgstr "申请单 %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Tickets %1 by %2" -msgstr "申请单 %1 (%2)" - -#: NOT FOUND IN SOURCE -msgid "Tickets I own" -msgstr "待处理的申请单" - -#: NOT FOUND IN SOURCE -msgid "Tickets I requested" -msgstr "送出的申请单" - -msgid "CreatedBy" -msgstr "建立人" - -#: html/Tools/Reports/CreatedByDates.html:86 -msgid "Tickets created after" -msgstr "申请单建立起始日" - -#: html/Tools/Reports/CreatedByDates.html:88 -msgid "Tickets created before" -msgstr "申请单建立截止日" - -#: NOT FOUND IN SOURCE -msgid "Tickets from %1" -msgstr "%1 的申请单" - -#: html/Tools/Reports/ResolvedByDates.html:87 -msgid "Tickets resolved after" -msgstr "申请单解决起始日" - -#: html/Tools/Reports/ResolvedByDates.html:89 -msgid "Tickets resolved before" -msgstr "申请单解决截止日" - -#: html/Approvals/Elements/ShowDependency:48 -msgid "Tickets which depend on this approval:" -msgstr "批准之后,可接续处理:" - -#: html/Search/Elements/PickBasics:134 html/Ticket/Create.html:183 html/Ticket/Elements/EditBasics:72 -msgid "Time Estimated" -msgstr "预计时间" - -msgid "TimeEstimated" -msgstr "预计时间" - -#: html/Search/Elements/PickBasics:135 html/Ticket/Create.html:196 html/Ticket/Elements/EditBasics:85 -msgid "Time Left" -msgstr "剩馀时间" - -#: html/Search/Elements/PickBasics:133 html/Ticket/Create.html:189 html/Ticket/Elements/EditBasics:78 -msgid "Time Worked" -msgstr "处理时间" - -#: lib/RT/Tickets_Overlay.pm:1891 -msgid "Time left" -msgstr "剩馀时间" - -#: html/Elements/Footer:51 -msgid "Time to display" -msgstr "显示时间" - -#: lib/RT/Tickets_Overlay.pm:1866 -msgid "Time worked" -msgstr "已处理时间" - -#: NOT FOUND IN SOURCE -msgid "TimeLeft" -msgstr "剩馀时间" - -#: lib/RT/Ticket_Overlay.pm:1167 -msgid "TimeWorked" -msgstr "已处理时间" - -#: html/Search/Elements/EditFormat:74 -msgid "Title" -msgstr "标题" - -msgid "QueueName" -msgstr "表单名称" - -msgid "OwnerName" -msgstr "承办人名称" - -msgid "<blank>" -msgstr "<留空>" - -msgid "NEWLINE" -msgstr "(换列)" - -#: NOT FOUND IN SOURCE -msgid "To generate a diff of this commit:" -msgstr "产生这次更动的差异档:" - -#: NOT FOUND IN SOURCE -msgid "To generate a diff of this commit:\\n" -msgstr "产生这次更动的差异档:\\n" - -#: html/Elements/Footer:62 -#. ('<a href="mailto:sales@bestpractical.com">sales@bestpractical.com</a>') -msgid "To inquire about support, training, custom development or licensing, please contact %1." -msgstr "如果有支持、教育训练及定制开发的需要,请连络 %1。" - -#: NOT FOUND IN SOURCE -msgid "Todo" -msgstr "待办事项" - -#: lib/RT/Ticket_Overlay.pm:1170 -msgid "Told" -msgstr "告知日" - -#: html/Admin/Elements/Tabs:68 html/Admin/index.html:88 html/Elements/Tabs:74 html/Tools/index.html:46 html/Tools/index.html:49 -msgid "Tools" -msgstr "工具" - -#: html/Search/Elements/Chart:130 -msgid "Total" -msgstr "页" - -#: etc/initialdata:252 -msgid "Transaction" -msgstr "更动" - -#: lib/RT/Transaction_Overlay.pm:805 -#. ($self->Data) -msgid "Transaction %1 purged" -msgstr "清除更动报告 %1" - -#: lib/RT/Transaction_Overlay.pm:183 -msgid "Transaction Created" -msgstr "更动报告已新增" - -#: html/Admin/Elements/QueueTabs:78 -msgid "Transaction Custom Fields" -msgstr "更动的自订字段" - -#: NOT FOUND IN SOURCE -msgid "Transaction->Create couldn't, as you didn't specify a ticket id" -msgstr "未指定申请单编号,无法新增更动" - -#: lib/RT/Transaction_Overlay.pm:128 -msgid "Transaction->Create couldn't, as you didn't specify an object type and id" -msgstr "未指定对象类别及编号,无法新增更动" - -#: NOT FOUND IN SOURCE -msgid "TransactionBatch" -msgstr "批次更动时" - -#: NOT FOUND IN SOURCE -msgid "TransactionCreate" -msgstr "新增更动时" - -#: lib/RT/Transaction_Overlay.pm:870 -msgid "Transactions are immutable" -msgstr "不可更改更动报告" - -#: NOT FOUND IN SOURCE -msgid "Transfer to" -msgstr "移交给" - -#: NOT FOUND IN SOURCE -msgid "Trying to delete a right: %1" -msgstr "试图删除某项权限:%1" - -#: NOT FOUND IN SOURCE -msgid "Tue" -msgstr "星期二" - -#: lib/RT/Date.pm:418 -msgid "Tue." -msgstr "星期二" - -#: html/Admin/CustomFields/Modify.html:66 html/Admin/Elements/EditCustomField:65 html/Ticket/Elements/AddWatchers:54 html/Ticket/Elements/AddWatchers:65 html/Ticket/Elements/AddWatchers:75 lib/RT/Ticket_Overlay.pm:1168 lib/RT/Tickets_Overlay.pm:1705 -msgid "Type" -msgstr "类别" - -#: lib/RT/ScripCondition_Overlay.pm:128 -msgid "Unimplemented" -msgstr "尚无实作" - -#: html/Admin/Users/Modify.html:89 -msgid "Unix login" -msgstr "外部系统登入帐号" - -#: NOT FOUND IN SOURCE -msgid "UnixUsername" -msgstr "外部系统登入帐号" - -#: lib/RT/Attachment_Overlay.pm:289 lib/RT/Record.pm:861 -#. ($self->ContentEncoding) -#. ($ContentEncoding) -msgid "Unknown ContentEncoding %1" -msgstr "不可解的内容文字编码方式 %1" - -#: html/Search/Build.html:455 lib/RT/Report/Tickets.pm:410 -msgid "Unknown field: %1" -msgstr "未知的字段:%1" - -#: html/Elements/SelectResultsPerPage:58 -msgid "Unlimited" -msgstr "全数显示" - -#: html/Search/Elements/SelectSearchesForObjects:64 -msgid "Unnamed search" -msgstr "未命名的查询" - -#: etc/initialdata:32 -msgid "Unprivileged" -msgstr "非内部成员" - -#: html/Admin/Elements/EditCustomFields:60 -msgid "Unselected Custom Fields" -msgstr "未选取的自订字段" - -#: html/Admin/CustomFields/Objects.html:61 -msgid "Unselected objects" -msgstr "未选取的对象" - -#: lib/RT/Transaction_Overlay.pm:659 -msgid "Untaken" -msgstr "未被受理" - -#: NOT FOUND IN SOURCE -msgid "Untitled search" -msgstr "未命名的查询" - -#: NOT FOUND IN SOURCE -msgid "Up" -msgstr "上一页" - -#: html/Admin/Elements/EditScrip:128 html/Elements/RT__Ticket/ColumnMap:302 html/Search/Bulk.html:193 html/Search/Bulk.html:75 -msgid "Update" -msgstr "处理" - -#: NOT FOUND IN SOURCE -msgid "Update All" -msgstr "全部更新" - -#: NOT FOUND IN SOURCE -msgid "Update ID" -msgstr "更新编号" - -#: html/Ticket/Update.html:135 -msgid "Update Ticket" -msgstr "更新申请单" - -#: html/Search/Bulk.html:126 html/Ticket/ModifyAll.html:87 html/Ticket/Update.html:72 -msgid "Update Type" -msgstr "更新类别" - -#: NOT FOUND IN SOURCE -msgid "Update all these tickets at once" -msgstr "整批更新申请单" - -#: NOT FOUND IN SOURCE -msgid "Update email" -msgstr "更新电子邮件信箱" - -#: html/Search/Bulk.html:200 html/Search/Results.html:78 -msgid "Update multiple tickets" -msgstr "批次更新申请单" - -#: NOT FOUND IN SOURCE -msgid "Update name" -msgstr "更新帐号" - -#: lib/RT/Action/CreateTickets.pm:750 lib/RT/Interface/Web.pm:584 -msgid "Update not recorded." -msgstr "更新未被记录" - -#: NOT FOUND IN SOURCE -msgid "Update selected tickets" -msgstr "更新选择的申请单" - -#: NOT FOUND IN SOURCE -msgid "Update signature" -msgstr "更新签章" - -#: html/Ticket/ModifyAll.html:84 -msgid "Update ticket" -msgstr "更新申请单" - -#: NOT FOUND IN SOURCE -msgid "Update ticket # %1" -msgstr "更新申请单 # %1" - -#: html/SelfService/Update.html:112 html/SelfService/Update.html:47 -#. ($Ticket->id) -msgid "Update ticket #%1" -msgstr "更新申请单 #%1" - -#: html/Ticket/Update.html:158 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Update ticket #%1 (%2)" -msgstr "更新申请单 #%1 (%2)" - -#: lib/RT/Action/CreateTickets.pm:748 lib/RT/Interface/Web.pm:583 -msgid "Update type was neither correspondence nor comment." -msgstr "更新的内容并非申请单回复也不是评论" - -#: html/Elements/SelectDateType:54 html/Ticket/Elements/ShowDates:72 lib/RT/CustomField_Overlay.pm:1284 lib/RT/Ticket_Overlay.pm:1171 -msgid "Updated" -msgstr "前次更新" - -#: html/Tools/Offline.html:93 -msgid "Upload" -msgstr "上载" - -#: lib/RT/CustomField_Overlay.pm:84 -msgid "Upload multiple files" -msgstr "上载多个档案" - -#: lib/RT/CustomField_Overlay.pm:79 -msgid "Upload multiple images" -msgstr "上载多份图片" - -#: lib/RT/CustomField_Overlay.pm:85 -msgid "Upload one file" -msgstr "上载一个档案" - -#: lib/RT/CustomField_Overlay.pm:80 -msgid "Upload one image" -msgstr "上载一份图片" - -#: lib/RT/CustomField_Overlay.pm:86 -msgid "Upload up to %1 files" -msgstr "上载最多 %1 个档案" - -#: lib/RT/CustomField_Overlay.pm:81 -msgid "Upload up to %1 images" -msgstr "上载最多 %1 份图片" - -#: html/Tools/Offline.html:93 -msgid "Upload your changes" -msgstr "上载您的更动" - -#: html/Admin/index.html:90 -msgid "Use other RT administrative tools" -msgstr "使用其它的 RT 管理工具" - -#: NOT FOUND IN SOURCE -msgid "User" -msgstr "使用者" - -#: NOT FOUND IN SOURCE -msgid "User %1 %2: %3\\n" -msgstr "使用者 %1 %2:%3\\n" - -#: NOT FOUND IN SOURCE -msgid "User %1 Password: %2\\n" -msgstr "使用者 %1 口令:%2\\n" - -#: lib/RT/Ticket_Overlay.pm:506 -#. ($args{'Owner'}) -msgid "User '%1' could not be found." -msgstr "找不到使用者 '%1'。" - -#: NOT FOUND IN SOURCE -msgid "User '%1' not found" -msgstr "找不到使用者 '%1'" - -#: NOT FOUND IN SOURCE -msgid "User '%1' not found\\n" -msgstr "找不到使用者 '%1'\\n" - -#: etc/initialdata:132 etc/initialdata:206 -msgid "User Defined" -msgstr "使用者自订" - -#: html/Admin/Elements/EditScrip:93 -msgid "User Defined conditions and actions" -msgstr "使用者自订的条件及动作" - -#: NOT FOUND IN SOURCE -msgid "User ID" -msgstr "使用者 ID" - -#: NOT FOUND IN SOURCE -msgid "User Id" -msgstr "使用者 ID" - -#: NOT FOUND IN SOURCE -msgid "User Number" -msgstr "员工编号" - -#: html/Admin/Elements/CustomFieldTabs:72 html/Admin/Elements/GroupTabs:68 html/Admin/Elements/QueueTabs:85 html/Admin/Elements/SystemTabs:68 html/Admin/Global/index.html:80 -msgid "User Rights" -msgstr "使用者权限" - -#: NOT FOUND IN SOURCE -msgid "User Setup" -msgstr "使用者设定" - -#: NOT FOUND IN SOURCE -msgid "User Shift" -msgstr "员工班别" - -#: NOT FOUND IN SOURCE -msgid "User asked for an unknown update type for custom field %1 for %2 object #%3" -msgstr "使用者试图在 %2 对象 #%3 的自订字段 %1 上执行未知的更新操作" - -#: html/Admin/Users/Modify.html:301 -#. ($msg) -msgid "User could not be created: %1" -msgstr "无法新增使用者:%1" - -#: lib/RT/User_Overlay.pm:330 -msgid "User created" -msgstr "使用者新增完毕" - -#: NOT FOUND IN SOURCE -msgid "User created: %1" -msgstr "使用者 %1 新增完毕" - -#: NOT FOUND IN SOURCE -msgid "User created: %1 (%2)" -msgstr "使用者 %1 (%2) 新增完毕" - -#: html/Admin/CustomFields/GroupRights.html:74 html/Admin/Global/GroupRights.html:88 html/Admin/Groups/GroupRights.html:75 html/Admin/Queues/GroupRights.html:90 -msgid "User defined groups" -msgstr "使用者定义的群组" - -#: lib/RT/User_Overlay.pm:592 lib/RT/User_Overlay.pm:612 -msgid "User loaded" -msgstr "已加载使用者" - -#: NOT FOUND IN SOURCE -msgid "User notified" -msgstr "已通知使用者" - -#: NOT FOUND IN SOURCE -msgid "User renamed from %1 to %2" -msgstr "使用者 %1 已改名为 %2" - -#: NOT FOUND IN SOURCE -msgid "User view" -msgstr "使用者私人数据" - -#: html/Admin/Groups/index.html:103 -msgid "User-defined groups" -msgstr "使用者自定群组" - -#: NOT FOUND IN SOURCE -msgid "UserDefined" -msgstr "使用者自定" - -#: html/Admin/Users/Modify.html:69 html/Elements/Login:90 html/Ticket/Elements/AddWatchers:56 -msgid "Username" -msgstr "帐号" - -#: html/Admin/Elements/GlobalCustomFieldTabs:55 html/Admin/Elements/SelectNewGroupMembers:47 html/Admin/Elements/Tabs:53 html/Admin/Global/CustomFields/index.html:64 html/Admin/Groups/Members.html:76 html/Admin/Queues/People.html:89 html/Admin/index.html:62 html/User/Groups/Members.html:79 lib/RT/CustomField_Overlay.pm:1208 -msgid "Users" -msgstr "使用者" - -#: html/Admin/Users/index.html:85 -msgid "Users matching search criteria" -msgstr "符合查询条件的使用者" - -#: bin/rt-crontool:134 -#. ($transaction->id) -msgid "Using transaction #%1..." -msgstr "使用更动 #%1..." - -#: lib/RT/Tickets_Overlay_SQL.pm:528 -msgid "Valid Query" -msgstr "合理的查询" - -#: html/Admin/CustomFields/Modify.html:80 -msgid "Validation" -msgstr "验证" - -#: NOT FOUND IN SOURCE -msgid "ValueOfQueue" -msgstr "选择表单" - -#: html/Admin/CustomFields/Modify.html:130 html/Admin/Elements/EditCustomField:78 -msgid "Values" -msgstr "字段值" - -#: NOT FOUND IN SOURCE -msgid "View log" -msgstr "检视纪录档" - -#: lib/RT/Queue_Overlay.pm:107 -msgid "Watch" -msgstr "视察" - -#: lib/RT/Queue_Overlay.pm:108 -msgid "WatchAsAdminCc" -msgstr "以管理员副本收件人身份视察" - -#: NOT FOUND IN SOURCE -msgid "Watcher loaded" -msgstr "成功加载视察员信息" - -#: html/Admin/Elements/QueueTabs:63 -msgid "Watchers" -msgstr "视察员" - -#: NOT FOUND IN SOURCE -msgid "WebEncoding" -msgstr "网页文字编码方式" - -#: NOT FOUND IN SOURCE -msgid "Wed" -msgstr "星期三" - -#: lib/RT/Date.pm:419 -msgid "Wed." -msgstr "星期三" - -#: html/Tools/MyDay.html:75 -msgid "What I did today" -msgstr "今日工作一览" - -#: etc/initialdata:521 -msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" -msgstr "当申请单通过所有签核后,将此讯息回复到原申请单" - -#: etc/initialdata:485 -msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" -msgstr "当申请单通过某项签核后,将此讯息回复到原申请单" - -#: etc/initialdata:146 -msgid "When a ticket is created" -msgstr "新增申请单时" - -#: etc/initialdata:418 -msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" -msgstr "签核单新增之后,通知应受理的承办人及管理员副本收件人" - -#: etc/initialdata:151 -msgid "When anything happens" -msgstr "当任何事情发生时" - -#: etc/initialdata:199 -msgid "Whenever a ticket is resolved" -msgstr "当申请单解决时" - -#: etc/initialdata:185 -msgid "Whenever a ticket's owner changes" -msgstr "当申请单更换承办人时" - -#: etc/initialdata:178 etc/upgrade/3.1.17/content:16 -msgid "Whenever a ticket's priority changes" -msgstr "当申请单的优先顺序改变时" - -#: etc/initialdata:193 -msgid "Whenever a ticket's queue changes" -msgstr "当申请单更换表单时" - -#: etc/initialdata:170 -msgid "Whenever a ticket's status changes" -msgstr "当申请单更新现况时" - -#: etc/initialdata:207 -msgid "Whenever a user-defined condition occurs" -msgstr "当使用者自订的情况发生时" - -#: etc/initialdata:164 -msgid "Whenever comments come in" -msgstr "当评论送达时" - -#: etc/initialdata:157 -msgid "Whenever correspondence comes in" -msgstr "当回复送达时" - -#: html/Admin/Users/Modify.html:188 html/User/Prefs.html:88 -msgid "Work" -msgstr "公司" - -#: html/Search/Results.html:82 -msgid "Work offline" -msgstr "离线工作" - -#: NOT FOUND IN SOURCE -msgid "WorkPhone" -msgstr "公司电话" - -#: html/Ticket/Elements/ShowBasics:63 html/Ticket/Update.html:64 -msgid "Worked" -msgstr "处理时间" - -#: NOT FOUND IN SOURCE -msgid "Workflow #%1" -msgstr "流程 #%1" - -#: NOT FOUND IN SOURCE -msgid "Workflow Begin" -msgstr "流程开始" - -#: NOT FOUND IN SOURCE -msgid "Workflow End" -msgstr "流程结束" - -#: NOT FOUND IN SOURCE -msgid "Workflow deleted" -msgstr "流程已删除" - -#: NOT FOUND IN SOURCE -msgid "Workflows" -msgstr "流程" - -#: NOT FOUND IN SOURCE -msgid "Writable" -msgstr "可读写" - -#: NOT FOUND IN SOURCE -msgid "XXX CHANGEME You are not an authorized user" -msgstr "XXX CHANGEME 您是未经授权的使用者" - -#: NOT FOUND IN SOURCE -msgid "Yes" -msgstr "是" - -#: lib/RT/Ticket_Overlay.pm:3140 -msgid "You already own this ticket" -msgstr "您已是这份申请单的承办人" - -#: html/autohandler:214 html/autohandler:222 -msgid "You are not an authorized user" -msgstr "您不是被授权的使用者" - -#: NOT FOUND IN SOURCE -msgid "You can access it with the Download button on the right." -msgstr "您可以按右方的‘下载’键来取得。" - -#: html/Prefs/Search.html:56 -msgid "You can also edit the predefined search itself" -msgstr "您也可以直接编辑预先定义的搜寻方式" - -#: lib/RT/Ticket_Overlay.pm:3025 -msgid "You can only reassign tickets that you own or that are unowned" -msgstr "祇能重新指派您所承办或是没有承办人的申请单" - -#: lib/RT/Ticket_Overlay.pm:3021 -msgid "You can only take tickets that are unowned" -msgstr "您祇能受理尚无承办人的申请单" - -#: NOT FOUND IN SOURCE -msgid "You don't have permission to view that ticket.\\n" -msgstr "您没有看那份申请单的权限。\\n" - -#: docs/design_docs/string-extraction-guide.txt:47 lib/RT/StyleGuide.pod:780 -#. ($num, $queue) -msgid "You found %1 tickets in queue %2" -msgstr "您会在表单 %2 找到 %1 的申请单" - -#: html/NoAuth/Logout.html:52 -msgid "You have been logged out of RT." -msgstr "您已注销 RT。" - -#: html/SelfService/Display.html:133 -msgid "You have no permission to create tickets in that queue." -msgstr "您没有在该表单新增申请单的权限。" - -#: lib/RT/Ticket_Overlay.pm:2003 -msgid "You may not create requests in that queue." -msgstr "您不能在该表单中提出申请。" - -#: NOT FOUND IN SOURCE -msgid "You need to restart the Request Tracker service for saved changes to take effect." -msgstr "您必须重新激活 Request Tracker 服务,储存的更动才会生效。" - -#: html/NoAuth/Logout.html:56 -msgid "You're welcome to login again" -msgstr "欢迎下次再来" - -#: NOT FOUND IN SOURCE -msgid "Your %1 requests" -msgstr "您提出的 %1 申请单" - -#: NOT FOUND IN SOURCE -msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" -msgstr "RT 管理员可能设错了由 RT 寄出的邮件收件人标头档" - -#: etc/initialdata:502 -msgid "Your request has been approved by %1. Other approvals may still be pending." -msgstr "申请单已由 %1 批准。可能还有其它待签核的步骤。" - -#: etc/initialdata:540 -msgid "Your request has been approved." -msgstr "您的申请单已完成签核程序。" - -#: NOT FOUND IN SOURCE -msgid "Your request was rejected" -msgstr "您的申请单已被驳回" - -#: NOT FOUND IN SOURCE -msgid "Your request was rejected by %1." -msgstr "您的申请单已被 %1 驳回。" - -#: etc/initialdata:445 -msgid "Your request was rejected." -msgstr "您的申请单已被驳回。" - -#: html/autohandler:251 -msgid "Your username or password is incorrect" -msgstr "您的帐号或口令有误" - -#: html/Admin/Users/Modify.html:168 html/User/Prefs.html:149 -msgid "Zip" -msgstr "邮政编码" - -#: NOT FOUND IN SOURCE -msgid "[no subject]" -msgstr "[没有标题]" - -msgid "[none]" -msgstr "[无]" - -#: NOT FOUND IN SOURCE -msgid "ago" -msgstr "过期" - -#: NOT FOUND IN SOURCE -msgid "alert" -msgstr "急讯" - -#: lib/RT/System.pm:87 -msgid "allow creation of saved searches" -msgstr "允许建立预存查询" - -#: lib/RT/System.pm:86 -msgid "allow loading of saved searches" -msgstr "允许加载预存查询" - -#: NOT FOUND IN SOURCE -msgid "approving" -msgstr "待签核" - -#: html/User/Elements/DelegateRights:80 -#. ($right->PrincipalObj->Object->SelfDescription) -msgid "as granted to %1" -msgstr "权限同 %1" - -#: html/Search/Results.html:83 -msgid "chart" -msgstr "图表" - -#: html/SelfService/Closed.html:49 -msgid "closed" -msgstr "已解决" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:55 -msgid "contains" -msgstr "包含" - -#: NOT FOUND IN SOURCE -msgid "content" -msgstr "内容" - -#: NOT FOUND IN SOURCE -msgid "content-type" -msgstr "类型" - -#: NOT FOUND IN SOURCE -msgid "correspondence (probably) not sent" -msgstr "申请单回复(可能)未送出" - -#: NOT FOUND IN SOURCE -msgid "correspondence sent" -msgstr "申请单回复已送出" - -#: NOT FOUND IN SOURCE -msgid "critical" -msgstr "严重" - -#: html/Admin/Queues/Modify.html:98 lib/RT/Date.pm:346 -msgid "days" -msgstr "天" - -#: NOT FOUND IN SOURCE -msgid "dead" -msgstr "拒绝处理" - -#: NOT FOUND IN SOURCE -msgid "debug" -msgstr "侦错" - -#: NOT FOUND IN SOURCE -msgid "delete" -msgstr "删除" - -#: lib/RT/Queue_Overlay.pm:87 -msgid "deleted" -msgstr "已删除" - -#: html/Search/Elements/PickBasics:61 -msgid "does not match" -msgstr "不符合" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:56 -msgid "doesn't contain" -msgstr "不包含" - -#: NOT FOUND IN SOURCE -msgid "email address" -msgstr "电子邮件信箱" - -#: NOT FOUND IN SOURCE -msgid "emergency" -msgstr "危难" - -#: html/Elements/SelectEqualityOperator:59 -msgid "equal to" -msgstr "等于" - -#: NOT FOUND IN SOURCE -msgid "error" -msgstr "错误" - -#: html/Search/Build.html:547 -msgid "error: can't move down" -msgstr "错误:无法下移" - -#: html/Search/Build.html:569 -msgid "error: can't move left" -msgstr "错误:无法左移" - -#: html/Search/Build.html:528 -msgid "error: can't move up" -msgstr "错误:无法上移" - -#: html/Search/Build.html:612 -msgid "error: nothing to delete" -msgstr "错误:没有可删除的对象" - -#: html/Search/Build.html:533 html/Search/Build.html:552 html/Search/Build.html:574 html/Search/Build.html:603 -msgid "error: nothing to move" -msgstr "错误:没有可移动的对象" - -#: html/Search/Build.html:630 -msgid "error: nothing to toggle" -msgstr "错误:没有可切换的对象" - -#: NOT FOUND IN SOURCE -msgid "false" -msgstr "假" - -#: NOT FOUND IN SOURCE -msgid "filename" -msgstr "档名" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59 -msgid "greater than" -msgstr "大于" - -#: lib/RT/Group_Overlay.pm:214 -#. ($self->Name) -msgid "group '%1'" -msgstr "群组 '%1'" - -#: html/Search/Results.html:88 -#. ($m->scomp('Elements/SelectGroupBy', Name => 'PrimaryGroupBy', Query => $Query)) -msgid "grouped by %1" -msgstr "依 %1 分组" - -#: lib/RT/Date.pm:342 -msgid "hours" -msgstr "小时" - -#: html/Search/Elements/PickBasics:48 -msgid "id" -msgstr "编号" - -#: NOT FOUND IN SOURCE -msgid "info" -msgstr "信息" - -#: html/Elements/SelectBoolean:53 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:57 html/Search/Elements/PickBasics:162 html/Search/Elements/PickBasics:74 html/Search/Elements/PickBasics:90 html/Search/Elements/PickCFs:53 -msgid "is" -msgstr "是" - -#: html/Elements/SelectBoolean:57 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:58 html/Search/Elements/PickBasics:163 html/Search/Elements/PickBasics:75 html/Search/Elements/PickBasics:91 html/Search/Elements/PickCFs:54 -msgid "isn't" -msgstr "不是" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59 -msgid "less than" -msgstr "小于" - -#: NOT FOUND IN SOURCE -msgid "level Admin" -msgstr "层主管" - -#: html/Search/Elements/PickBasics:60 -msgid "matches" -msgstr "符合" - -#: lib/RT/Date.pm:338 -msgid "min" -msgstr "分" - -#: NOT FOUND IN SOURCE -msgid "minutes" -msgstr "分钟" - -#: NOT FOUND IN SOURCE -msgid "modifications\\n\\n" -msgstr "更改\\n\\n" - -#: lib/RT/Date.pm:354 -msgid "months" -msgstr "月" - -#: lib/RT/Queue_Overlay.pm:82 -msgid "new" -msgstr "新建立" - -#: html/Admin/Elements/PickCustomFields:64 html/Admin/Elements/PickObjects:65 -msgid "no name" -msgstr "没有名称" - -#: html/Admin/Elements/EditScrips:64 -msgid "no value" -msgstr "没有值" - -#: html/Admin/Elements/EditQueueWatchers:48 html/Ticket/Elements/EditWatchers:49 -msgid "none" -msgstr "无" - -#: html/Elements/SelectEqualityOperator:59 -msgid "not equal to" -msgstr "不等于" - -#: NOT FOUND IN SOURCE -msgid "notice" -msgstr "提示" - -#: NOT FOUND IN SOURCE -msgid "notlike" -msgstr "不符合" - -#: NOT FOUND IN SOURCE -msgid "number" -msgstr "号" - -#: html/SelfService/Elements/MyRequests:82 lib/RT/Queue_Overlay.pm:83 -msgid "open" -msgstr "开启" - -#: NOT FOUND IN SOURCE -msgid "opened" -msgstr "已开启" - -#: lib/RT/Group_Overlay.pm:219 -#. ($self->Name, $user->Name) -msgid "personal group '%1' for user '%2'" -msgstr "使用者‘%2’的‘%1’代理人群组" - -#: lib/RT/Group_Overlay.pm:227 -#. ($queue->Name, $self->Type) -msgid "queue %1 %2" -msgstr "表单 %1 %2" - -#: lib/RT/Queue_Overlay.pm:86 -msgid "rejected" -msgstr "已驳回" - -#: lib/RT/Queue_Overlay.pm:85 -msgid "resolved" -msgstr "已处理" - -#: NOT FOUND IN SOURCE -msgid "rtname" -msgstr "服务器名称" - -#: lib/RT/Date.pm:334 -msgid "sec" -msgstr "秒" - -#: lib/RT/System.pm:85 -msgid "show Configuration tab" -msgstr "显示设定页签" - -#: html/Search/Results.html:80 -msgid "spreadsheet" -msgstr "电子表格" - -#: lib/RT/Queue_Overlay.pm:84 -msgid "stalled" -msgstr "延宕" - -#: html/Search/Results.html:89 -#. ($m->scomp('Elements/SelectChartType', Name => 'ChartStyle')) -msgid "style: %1" -msgstr "样式:%1" - -#: html/Prefs/MyRT.html:93 -msgid "summary rows" -msgstr "加总列" - -#: lib/RT/Group_Overlay.pm:222 -#. ($self->Type) -msgid "system %1" -msgstr "系统 %1" - -#: lib/RT/Group_Overlay.pm:233 -#. ($self->Type) -msgid "system group '%1'" -msgstr "系统群组 '%1'" - -#: html/Elements/Error:64 html/SelfService/Error.html:63 -msgid "the calling component did not specify why" -msgstr "呼叫组件未指明原因" - -#: NOT FOUND IN SOURCE -msgid "ticket #%1" -msgstr "申请单 #%1" - -#: lib/RT/Group_Overlay.pm:230 -#. ($self->Instance, $self->Type) -msgid "ticket #%1 %2" -msgstr "申请单 #%1 %2" - -#: NOT FOUND IN SOURCE -msgid "till" -msgstr "至" - -#: NOT FOUND IN SOURCE -msgid "to" -msgstr "到" - -#: NOT FOUND IN SOURCE -msgid "true" -msgstr "真" - -#: lib/RT/Group_Overlay.pm:236 -#. ($self->Id) -msgid "undescribed group %1" -msgstr "没有描述的群组 %1" - -#: NOT FOUND IN SOURCE -msgid "unresolved" -msgstr "未处理" - -#: lib/RT/Group_Overlay.pm:211 -#. ($user->Object->Name) -msgid "user %1" -msgstr "使用者 %1" - -#: NOT FOUND IN SOURCE -msgid "warning" -msgstr "警告" - -#: lib/RT/Date.pm:350 -msgid "weeks" -msgstr "周" - -#: NOT FOUND IN SOURCE -msgid "with template %1" -msgstr "模板:%1" - -#: lib/RT/Date.pm:358 -msgid "years" -msgstr "年" - -msgid "Press 'Esc' to close this window." -msgstr "按 'Esc' 键可关闭本窗口。" - -msgid "HasMember" -msgstr "拥有成员" - -msgid "LinkedTo" -msgstr "连结至" - -msgid "Watcher" -msgstr "视察员" - -msgid "(displaying new and open tickets for %1)" -msgstr "(显示 %1 名下新建立及开启中的申请单)" diff --git a/rt/lib/RT/I18N/zh_tw.po b/rt/lib/RT/I18N/zh_tw.po deleted file mode 100644 index 7552a6bdf..000000000 --- a/rt/lib/RT/I18N/zh_tw.po +++ /dev/null @@ -1,8360 +0,0 @@ -# -msgid "" -msgstr "" -"Project-Id-Version: RT 3.6.x\n" -"PO-Revision-Date: 2007-12-09 13:05+0800\n" -"Last-Translator: Audrey Tang <cpan@audreyt.org>\n" -"Language-Team: rt-devel <rt-devel@lists.bestpractical.com>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: html/Widgets/SavedSearch:70 -#. ($self->{CurrentSearch}{Object}->Description) -msgid " %1 deleted." -msgstr "" - -#: html/Widgets/SavedSearch:47 -#. ($self->{CurrentSearch}{Description}, $args->{Description}) -msgid " %1 renamed to %2." -msgstr "" - -#: html/Widgets/SavedSearch:60 -#. ($args->{Description}) -msgid " %1 saved." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "#" -msgstr "#" - -#: NOT FOUND IN SOURCE -msgid "#%1" -msgstr "#%1" - -#: html/Approvals/Elements/Approve:48 html/Approvals/Elements/ShowDependency:71 html/SelfService/Display.html:46 html/Ticket/Display.html:47 html/Ticket/Display.html:51 -#. ($Ticket->id, $Ticket->Subject) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -#. ($ticket->Id, $ticket->Subject) -#. ($TicketObj->Id, $TicketObj->Subject) -msgid "#%1: %2" -msgstr "#%1: %2" - -#: html/Elements/ShowSearch:105 -msgid "$1" -msgstr "$1" - -#: lib/RT/Record.pm:940 -#. ($label) -msgid "$prefix %1" -msgstr "$prefix %1" - -#: NOT FOUND IN SOURCE -msgid "%*(%1,group ticket)" -msgstr "%*(%1) 件參與的申請單" - -#: NOT FOUND IN SOURCE -msgid "%*(%1,ticket) due" -msgstr "%*(%1) 件限期完成的申請單" - -#: NOT FOUND IN SOURCE -msgid "%*(%1,unresolved ticket)" -msgstr "%*(%1) 件尚未解決的申請單" - -#: lib/RT/URI/fsck_com_rt.pm:256 -#. ($self->ObjectType, $self->Object->Id) -msgid "%1 #%2" -msgstr "%1 #%2" - -#: lib/RT/Date.pm:365 -#. ($s, $time_unit) -msgid "%1 %2" -msgstr "%1 %2" - -#: NOT FOUND IN SOURCE -msgid "%1 %2 %3" -msgstr "%1 %2 %3" - -#: lib/RT/Date.pm:401 -#. ($self->GetWeekday($wday), $self->GetMonth($mon), map {sprintf "%02d", $_} ($mday, $hour, $min, $sec), ($year+1900)) -msgid "%1 %2 %3 %4:%5:%6 %7" -msgstr "%7-%2-%3 %4:%5:%6 %1" - -#: lib/RT/Record.pm:1685 lib/RT/Transaction_Overlay.pm:647 lib/RT/Transaction_Overlay.pm:690 -#. ($cf->Name, $new_value->Content) -#. ($field, $self->NewValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 added" -msgstr "%2 已新增為 %1" - -#: lib/RT/Date.pm:362 -#. ($s, $time_unit) -msgid "%1 %2 ago" -msgstr "%1 %2 之前" - -#: lib/RT/Record.pm:1692 lib/RT/Transaction_Overlay.pm:654 -#. ($cf->Name, $old_content, $new_value->Content) -#. ($field, $self->OldValue, $self->NewValue) -msgid "%1 %2 changed to %3" -msgstr "%1 已從 %2 改為 %3" - -#: lib/RT/Record.pm:1689 lib/RT/Transaction_Overlay.pm:650 lib/RT/Transaction_Overlay.pm:696 -#. ($cf->Name, $old_value->Content) -#. ($field, $self->OldValue) -#. ($self->Field, $principal->Object->Name) -msgid "%1 %2 deleted" -msgstr "%2 已自 %1 刪除" - -#: NOT FOUND IN SOURCE -msgid "%1 %2 of group %3" -msgstr "%3 群組的 %1 %2" - -#: html/Admin/Elements/EditScrips:65 html/Admin/Elements/ListGlobalScrips:63 html/Ticket/Elements/PreviewScrips:103 -#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) -msgid "%1 %2 with template %3" -msgstr "條件:%1 | 動作:%2 | 範本:%3" - -#: NOT FOUND IN SOURCE -msgid "%1 (%2) %3 this ticket\\n" -msgstr "%1 (%2) %3 這份申請單\\n" - -#: html/Ticket/Elements/ShowAttachments:72 -#. ($rev->CreatedAsString, $size, $rev->CreatorObj->Name) -msgid "%1 (%2) by %3" -msgstr "%1 (%2) - %3" - -#: html/SelfService/Update.html:60 html/Ticket/Elements/EditBasics:108 html/Ticket/Update.html:61 html/Ticket/Update.html:63 html/Tools/MyDay.html:66 -#. (loc($DefaultStatus)) -#. (loc($Ticket->Status())) -#. (loc($TicketObj->Status)) -#. ($TicketObj->OwnerObj->Name()) -msgid "%1 (Unchanged)" -msgstr "%1 (未更改)" - -#: NOT FOUND IN SOURCE -msgid "%1 - %2 shown" -msgstr "顯示第 %1 - %2 筆" - -#: bin/rt-crontool:237 bin/rt-crontool:244 bin/rt-crontool:250 -#. ("--search-argument", "--search") -#. ("--condition-argument", "--condition") -#. ("--action-argument", "--action") -msgid "%1 - An argument to pass to %2" -msgstr "%1 - 傳遞給 %2 的一個參數" - -#: bin/rt-crontool:262 -#. ("--verbose") -msgid "%1 - Output status updates to STDOUT" -msgstr "%1 - 將更新狀態輸出到 STDOUT" - -#: bin/rt-crontool:253 -#. ("--template-id") -msgid "%1 - Specify id of the template you want to use" -msgstr "%1 - 指定欲使用的範本編號" - -#: bin/rt-crontool:256 -#. ("--transaction") -msgid "%1 - Specify if you want to use either 'first' or 'last' tarnsaction" -msgstr "%1 - 指定欲使用的更動為 'first' (第一項) 或 'last' (最後一項)" - -#: bin/rt-crontool:247 -#. ("--action") -msgid "%1 - Specify the action module you want to use" -msgstr "%1 - 指定欲使用的動作模組" - -#: bin/rt-crontool:241 -#. ("--condition") -msgid "%1 - Specify the condition module you want to use" -msgstr "%1 - 指定欲使用的條件模組" - -#: bin/rt-crontool:234 -#. ("--search") -msgid "%1 - Specify the search module you want to use" -msgstr "%1 - 指定欲使用的查詢模組" - -#: bin/rt-crontool:259 -#. ("--transaction-type") -msgid "%1 - Specify the type of a transaction you want to use" -msgstr "%1 - 指定欲使用的更動類別" - -#: html/Elements/Footer:56 -#. ('»|«', $RT::VERSION, '2006', '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',) -msgid "%1 RT %2 Copyright 1996-%3 %4." -msgstr "%1 RT %2 版,%4 版權所有,1996-%3。" - -#: lib/RT/ScripAction_Overlay.pm:150 -#. ($self->Id) -msgid "%1 ScripAction loaded" -msgstr "載入手續 %1" - -#: NOT FOUND IN SOURCE -msgid "%1 Total" -msgstr "共 %1 筆" - -#: lib/RT/Record.pm:1722 -#. ($args{'Value'}, $cf->Name) -msgid "%1 added as a value for %2" -msgstr "新增 %1 作為 %2 的值" - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on" -msgstr "別名 %1 需要可用的申請單編號" - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on " -msgstr "別名 %1 需要可用的申請單編號 " - -#: NOT FOUND IN SOURCE -msgid "%1 aliases require a TicketId to work on (from %2) %3" -msgstr "別名 %1 需要可用的申請單編號以處理 %3(出自 %2)" - -#: lib/RT/Link_Overlay.pm:144 lib/RT/Link_Overlay.pm:151 -#. ($args{'Base'}) -#. ($args{'Target'}) -msgid "%1 appears to be a local object, but can't be found in the database" -msgstr "%1 看來是個本地物件,卻不在資料庫裡" - -#: html/Ticket/Elements/ShowDates:73 lib/RT/Transaction_Overlay.pm:531 -#. ($self->BriefDescription , $self->CreatorObj->Name) -#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) -msgid "%1 by %2" -msgstr "%1 (%2)" - -#: lib/RT/Transaction_Overlay.pm:788 lib/RT/Transaction_Overlay.pm:797 lib/RT/Transaction_Overlay.pm:800 -#. ($self->Field , $q1->Name , $q2->Name) -#. ($self->Field, $t2->AsString, $t1->AsString) -#. ($self->Field, ($self->OldValue? "'".$self->OldValue ."'" : $self->loc("(no value)")) , "'". $self->NewValue."'") -msgid "%1 changed from %2 to %3" -msgstr "%1 的值從 %2 改為 %3" - -#: html/Search/Build.html:213 -#. ($Description) -msgid "%1 copy" -msgstr "%1 複製" - -#: lib/RT/Record.pm:944 -msgid "%1 could not be set to %2." -msgstr "無法將 %1 設定為 %2。" - -#: NOT FOUND IN SOURCE -msgid "%1 couldn't init a transaction (%2)\\n" -msgstr "%1 無法初始更新 (%2)\\n" - -#: lib/RT/Ticket_Overlay.pm:2787 -#. ($self) -msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." -msgstr "%1 無法將現況設成已解決。RT 資料庫內容可能不一致。" - -#: lib/RT/Transaction_Overlay.pm:571 -#. ($obj_type) -msgid "%1 created" -msgstr "已建立 %1" - -#: lib/RT/Transaction_Overlay.pm:576 -#. ($obj_type) -msgid "%1 deleted" -msgstr "已刪除 %1" - -#: etc/initialdata:593 -msgid "%1 highest priority tickets I own" -msgstr "前 %1 份待處理申請單" - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets I own..." -msgstr "前 %1 份待處理申請單..." - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets I requested..." -msgstr "前 %1 份送出的申請單..." - -#: NOT FOUND IN SOURCE -msgid "%1 highest priority tickets pending my approval..." -msgstr "前 %1 份待簽核申請單..." - -#: bin/rt-crontool:229 -#. ($0) -msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." -msgstr "%1 是從外部排程程式(如 cron)來對申請單進行操作的工具。" - -#: lib/RT/Queue_Overlay.pm:863 -#. ($principal->Object->Name, $args{'Type'}) -msgid "%1 is no longer a %2 for this queue." -msgstr "%1 已不再是此表單的 %2。" - -#: NOT FOUND IN SOURCE -msgid "%1 is no longer a %2 for this ticket." -msgstr "%1 已不再是此申請單的 %2。" - -#: NOT FOUND IN SOURCE -msgid "%1 is no longer a value for custom field %2" -msgstr "%1 已不再是自訂欄位 %2 的值。" - -#: NOT FOUND IN SOURCE -msgid "%1 isn't a valid Queue id." -msgstr "%1 不是一個合法的表單編號。" - -#: html/Ticket/Elements/ShowTime:47 html/Ticket/Elements/ShowTime:49 -#. ($minutes) -msgid "%1 min" -msgstr "%1 分鐘" - -#: etc/initialdata:601 -msgid "%1 newest unowned tickets" -msgstr "前 %1 份待認領的申請單" - -#: NOT FOUND IN SOURCE -msgid "%1 not shown" -msgstr "沒有顯示 %1" - -#: lib/RT/CustomField_Overlay.pm:893 -msgid "%1 objects" -msgstr "%1 物件" - -#: NOT FOUND IN SOURCE -msgid "%1 recent tickets I own..." -msgstr "最新 %1 份待處理申請單..." - -#: NOT FOUND IN SOURCE -msgid "%1 recent tickets I requested..." -msgstr "最新 %1 份送出的申請單..." - -#: NOT FOUND IN SOURCE -msgid "%1 result(s) found" -msgstr "找到 %1 項結果" - -#: html/User/Elements/DelegateRights:97 -#. (loc($ObjectType =~ /^RT::(.*)$/)) -msgid "%1 rights" -msgstr "%1權限" - -#: NOT FOUND IN SOURCE -msgid "%1 succeeded\\n" -msgstr "%1 完成\\n" - -#: NOT FOUND IN SOURCE -msgid "%1 type unknown for $MessageId" -msgstr "不知道 $MessageID 的 %1 類別" - -#: NOT FOUND IN SOURCE -msgid "%1 type unknown for %2" -msgstr "不知道 %2 的 %1 類別" - -#: NOT FOUND IN SOURCE -msgid "%1 was created without a CurrentUser\\n" -msgstr "%1 新增時未指定現行使用者" - -#: lib/RT/Action/ResolveMembers.pm:63 -#. (ref $self) -msgid "%1 will resolve all members of a resolved group ticket." -msgstr "%1 會解決在已解決群組裡成員的申請單。" - -#: NOT FOUND IN SOURCE -msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." -msgstr "如果 %1 起始申請單依賴於某個鏈結,或是某個鏈結的成員,它將會被延宕。" - -#: lib/RT/CustomField_Overlay.pm:894 -msgid "%1's %2 objects" -msgstr "%1 內的 %2 物件" - -#: lib/RT/CustomField_Overlay.pm:895 -msgid "%1's %2's %3 objects" -msgstr "%1 內的 %2 的 %3 物件" - -#: html/Search/Elements/SearchPrivacy:52 html/Search/Elements/SelectSearchObject:55 html/Search/Elements/SelectSearchesForObjects:57 -#. ($object->Name) -#. ($Object->Name) -msgid "%1's saved searches" -msgstr "%1 已儲存的查詢" - -#: lib/RT/Transaction_Overlay.pm:481 -#. ($self) -msgid "%1: no attachment specified" -msgstr "%1:未指定附件" - -#: html/Ticket/Elements/ShowTransactionAttachments:78 -#. ($size) -msgid "%1b" -msgstr "%1 位元組" - -#: html/Ticket/Elements/ShowTransactionAttachments:75 -#. (int( $size / 102.4 ) / 10) -msgid "%1k" -msgstr "%1k 位元組" - -#: html/Ticket/Elements/ShowTime:49 -#. (sprintf("%.1f",$minutes / 60)) -msgid "%quant(%1,hour)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "%quant(%1,result) found" -msgstr "找到 %1 項結果" - -#: lib/RT/Ticket_Overlay.pm:1142 -#. ($args{'Status'}) -msgid "'%1' is an invalid value for status" -msgstr "'%1' 不是一個合法的狀態值" - -#: NOT FOUND IN SOURCE -msgid "'%1' not a recognized action. " -msgstr "'%1'為無法辨識的動作。 " - -#: NOT FOUND IN SOURCE -msgid "(Check box to delete group member)" -msgstr "(點選欲刪除的成員)" - -#: NOT FOUND IN SOURCE -msgid "(Check box to delete scrip)" -msgstr "(點選欲刪除的手續)" - -#: html/Admin/Elements/EditCustomFieldValues:50 html/Admin/Elements/EditQueueWatchers:50 html/Admin/Elements/EditScrips:56 html/Admin/Elements/EditTemplates:57 html/Admin/Groups/Members.html:73 html/Elements/EditLinks:54 html/Ticket/Elements/EditPeople:67 html/User/Groups/Members.html:76 -msgid "(Check box to delete)" -msgstr "(點選欲刪除的項目)" - -#: NOT FOUND IN SOURCE -msgid "(Check boxes to delete)" -msgstr "(點選欲刪除的項目)" - -#: html/Ticket/Elements/PreviewScrips:99 -msgid "(Check boxes to disable notifications to the listed recipients)" -msgstr "(點選欲停用通知的收件人)" - -#: html/Ticket/Elements/PreviewScrips:123 -msgid "(Check boxes to enable notifications to the listed recipients)" -msgstr "(點選欲啟用通知的收件人)" - -#: html/Ticket/Create.html:218 -msgid "(Enter ticket ids or URLs, separated with spaces)" -msgstr "(鍵入申請單編號或網址,以空白分隔)" - -#: html/Admin/Queues/Modify.html:75 html/Admin/Queues/Modify.html:81 -#. ($RT::CorrespondAddress) -#. ($RT::CommentAddress) -msgid "(If left blank, will default to %1)" -msgstr "(如果留白, 則預設為 %1)" - -#: NOT FOUND IN SOURCE -msgid "(No Value)" -msgstr "(沒有值)" - -#: html/Admin/Elements/EditCustomFields:74 html/Admin/Elements/ListGlobalCustomFields:53 -msgid "(No custom fields)" -msgstr "(沒有自訂欄位)" - -#: html/Admin/Groups/Members.html:71 html/User/Groups/Members.html:74 -msgid "(No members)" -msgstr "(沒有成員)" - -#: html/Admin/Elements/EditScrips:53 html/Admin/Elements/ListGlobalScrips:48 -msgid "(No scrips)" -msgstr "(沒有手續)" - -#: html/Admin/Elements/EditTemplates:52 -msgid "(No templates)" -msgstr "沒有範本" - -#: NOT FOUND IN SOURCE -msgid "(No workflows)" -msgstr "沒有流程" - -#: html/Admin/Elements/PickCustomFields:47 html/Admin/Elements/PickObjects:47 -msgid "(None)" -msgstr "(無)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)" -msgstr "(送出本份更新的密件副本給名單上以逗號隔開的電子郵件位址。這<b>不會</b>更改後續的收件者名單。)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will recieve future updates.)" -msgstr "(送出本份更新的密件副本給名單上以逗號隔開的電子郵件位址。這<b>不會</b>更改後續的收件者名單。)" - -#: html/Ticket/Update.html:90 -msgid "(Sends a blind carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <b>will</b> receive future updates.)" -msgstr "(送出本份更新的副本給名單上以逗號隔開的管理員電子郵件位址。這<b>將會</b>更改後續的收件者名單。)" - -#: html/Ticket/Create.html:103 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of administrative email addresses. These people <strong>will</strong> receive future updates.)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will receive future updates.)" -msgstr "(送出本份更新的副本給名單上以逗號隔開的電子郵件位址。這<b>不會</b>更改後續的收件者名單。)" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will recieve future updates.)" -msgstr "(送出本份更新的副本給名單上以逗號隔開的電子郵件位址。這<b>不會</b>更改後續的收件者名單。)" - -#: html/Ticket/Update.html:86 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. Does <strong>not</strong> change who will receive future updates.)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <b>will</b> receive future updates.)" -msgstr "(送出本份更新的副本給名單上以逗號隔開的電子郵件位址。這<b>將會</b>更改後續的收件者名單。)" - -#: html/Ticket/Create.html:93 -msgid "(Sends a carbon-copy of this update to a comma-delimited list of email addresses. These people <strong>will</strong> receive future updates.)" -msgstr "" - -#: html/Admin/Elements/EditScrip:96 -msgid "(Use these fields when you choose 'User Defined' for a condition or action)" -msgstr "(當條件或動作設為「使用者自訂」時,請填入這些欄位)" - -#: html/Ticket/Elements/EditWatchers:60 html/Ticket/Elements/ShowUserEntry:53 -msgid "(Will not be sent email)" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "(default delegate)" -msgstr "(預設代理人)" - -#: NOT FOUND IN SOURCE -msgid "(delete)" -msgstr "(刪除)" - -#: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54 -msgid "(empty)" -msgstr "(空白)" - -#: NOT FOUND IN SOURCE -msgid "(new)" -msgstr "(新增)" - -#: html/Admin/Users/index.html:60 -msgid "(no name listed)" -msgstr "(沒有列出姓名)" - -#: NOT FOUND IN SOURCE -msgid "(no subject)" -msgstr "(沒有主題)" - -#: html/Admin/Elements/SelectRights:72 html/Elements/EditCustomFieldSelect:69 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:54 html/Search/Chart:56 html/Search/Elements/Chart:76 lib/RT/Transaction_Overlay.pm:591 -msgid "(no value)" -msgstr "(無)" - -#: html/Admin/Elements/EditCustomFieldValues:47 -msgid "(no values)" -msgstr "(沒有值)" - -#: html/Elements/EditLinks:132 html/Ticket/Elements/BulkLinks:49 -msgid "(only one ticket)" -msgstr "(僅能指定一份申請單)" - -#: html/Elements/RT__Ticket/ColumnMap:149 -msgid "(pending approval)" -msgstr "(等待簽核)" - -#: html/Elements/RT__Ticket/ColumnMap:152 -msgid "(pending other Collection)" -msgstr "(等待其他集合)" - -#: NOT FOUND IN SOURCE -msgid "(pending other tickets)" -msgstr "(等待其他申請單)" - -#: NOT FOUND IN SOURCE -msgid "(requestor's group)" -msgstr "(申請人所屬)" - -#: html/Admin/Users/Modify.html:71 -msgid "(required)" -msgstr "(必填)" - -#: html/Ticket/Elements/ShowTransactionAttachments:82 -msgid "(untitled)" -msgstr "(未命名)" - -#: html/Ticket/Elements/Reminders:133 -msgid "(yyyy/mm/dd)" -msgstr "(yyyy/mm/dd)" - -#: NOT FOUND IN SOURCE -msgid "*" -msgstr "★" - -#: html/Elements/EditCustomFieldSelect:57 -msgid "-" -msgstr "-" - -#: bin/rt-crontool:95 -msgid "--transaction argument could be only 'first' or 'last'" -msgstr "--transaction 的值僅能為 'first' 或 'last'" - -#: NOT FOUND IN SOURCE -msgid ":" -msgstr ":" - -#: html/Ticket/Elements/ShowBasics:53 -msgid "<% $Ticket->Status%>" -msgstr "<% $Ticket->Status%>" - -#: html/Elements/SelectTicketTypes:48 -msgid "<% $_ %>" -msgstr "<% $_ %>" - -#: html/Search/Elements/SelectLinks:48 -msgid "<%$_%>" -msgstr "<%$_%>" - -#: html/Search/Elements/DisplayOptions:73 -msgid "<%$field%>" -msgstr "<%$field%>" - -#: html/Elements/CreateTicket:47 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" class=\"button\" value=\"New ticket in\" /> %1" -msgstr "<input type=\"submit\" class=\"button\" value=\"提出申請單\" /> %1" - -#: docs/design_docs/string-extraction-guide.txt:54 lib/RT/StyleGuide.pod:787 -#. ($m->scomp('/Elements/SelectNewTicketQueue')) -msgid "<input type=\"submit\" value=\"New ticket in\"> %1" -msgstr "<input type=\"submit\" value=\"提出申請單\"> %1" - -#: etc/initialdata:218 -msgid "A blank template" -msgstr "空白範本" - -#: html/Admin/Users/Modify.html:371 -msgid "A password was not set, so user won't be able to login." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "ACE Deleted" -msgstr "ACE 已刪除" - -#: NOT FOUND IN SOURCE -msgid "ACE Loaded" -msgstr "ACE 已載入" - -#: NOT FOUND IN SOURCE -msgid "ACE could not be deleted" -msgstr "無法刪除 ACE" - -#: NOT FOUND IN SOURCE -msgid "ACE could not be found" -msgstr "找不到 ACE" - -#: lib/RT/ACE_Overlay.pm:174 lib/RT/Principal_Overlay.pm:219 -msgid "ACE not found" -msgstr "找不到 ACE 設定" - -#: lib/RT/ACE_Overlay.pm:853 -msgid "ACEs can only be created and deleted." -msgstr "祇能新增或刪除 ACE 設定。" - -#: NOT FOUND IN SOURCE -msgid "ACLEquivalence" -msgstr "ACLEquivalence" - -#: html/Search/Elements/SelectAndOr:46 -msgid "AND" -msgstr "AND" - -#: NOT FOUND IN SOURCE -msgid "Aborting to avoid unintended ticket modifications.\\n" -msgstr "離開以免不小心更改到申請單。\\n" - -#: NOT FOUND IN SOURCE -msgid "About Me" -msgstr "個人資訊" - -#: html/User/Elements/Tabs:53 -msgid "About me" -msgstr "個人資訊" - -#: NOT FOUND IN SOURCE -msgid "Access Right" -msgstr "系統使用登錄權限" - -#: html/Admin/Users/Modify.html:106 -msgid "Access control" -msgstr "存取權限" - -#: html/Admin/Elements/EditScrip:65 -msgid "Action" -msgstr "動作" - -#: lib/RT/Scrip_Overlay.pm:172 -#. ($args{'ScripAction'}) -msgid "Action %1 not found" -msgstr "動作 %1 找不到" - -#: NOT FOUND IN SOURCE -msgid "Action committed." -msgstr "動作執行完畢" - -#: bin/rt-crontool:171 -msgid "Action committed.\\n" -msgstr "動作執行完畢。\\n" - -#: lib/RT/Scrip_Overlay.pm:168 -msgid "Action is mandatory argument" -msgstr "" - -#: bin/rt-crontool:167 -msgid "Action prepared..." -msgstr "動作準備完畢..." - -#: NOT FOUND IN SOURCE -msgid "Activated Date" -msgstr "申請啟動時間" - -#: html/Search/Build.html:85 -msgid "Add" -msgstr "新增" - -#: html/Search/Bulk.html:92 -msgid "Add AdminCc" -msgstr "新增管理員副本收件人" - -#: html/Search/Bulk.html:88 -msgid "Add Cc" -msgstr "新增副本收件人" - -#: html/Search/Elements/EditFormat:49 -msgid "Add Columns" -msgstr "" - -#: html/Search/Elements/PickCriteria:46 -msgid "Add Criteria" -msgstr "新增條件" - -#: NOT FOUND IN SOURCE -msgid "Add Entry" -msgstr "新增列" - -#: html/Ticket/Create.html:147 html/Ticket/Update.html:116 -msgid "Add More Files" -msgstr "新增更多附件" - -#: NOT FOUND IN SOURCE -msgid "Add Next State" -msgstr "新增下一項關卡" - -#: html/Search/Bulk.html:84 -msgid "Add Requestor" -msgstr "新增申請人" - -#: html/Admin/Elements/AddCustomFieldValue:46 -msgid "Add Value" -msgstr "新增欄位值" - -#: NOT FOUND IN SOURCE -msgid "Add a Scrip to this queue" -msgstr "新增此表單的手續" - -#: NOT FOUND IN SOURCE -msgid "Add a Scrip which will apply to all queues" -msgstr "新增適用於所有表單的手續" - -#: NOT FOUND IN SOURCE -msgid "Add a keyword selection to this queue" -msgstr "新增此表單的關鍵字" - -#: NOT FOUND IN SOURCE -msgid "Add a new a global scrip" -msgstr "新增全域手續" - -#: NOT FOUND IN SOURCE -msgid "Add a scrip to this queue" -msgstr "新增一道手續到此表單" - -#: html/Admin/Global/Scrip.html:83 -msgid "Add a scrip which will apply to all queues" -msgstr "新增一道用於所有表單的手續" - -#: NOT FOUND IN SOURCE -msgid "Add additional criteria" -msgstr "新增查詢條件" - -#: html/Search/Build.html:109 html/Search/Build.html:94 -msgid "Add and Search" -msgstr "" - -#: html/Search/Bulk.html:124 -msgid "Add comments or replies to selected tickets" -msgstr "新增評論或回覆到指定的申請單" - -#: html/Admin/Groups/Members.html:63 html/User/Groups/Members.html:60 -msgid "Add members" -msgstr "新增成員" - -#: html/Admin/Queues/People.html:87 html/Ticket/Elements/AddWatchers:49 -msgid "Add new watchers" -msgstr "新增視察員" - -#: html/Search/Build.html:85 -msgid "Add these terms to your search" -msgstr "" - -#: html/Search/Bulk.html:158 -msgid "Add values" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:108 -msgid "Add, delete and modify custom field values for objects" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "AddNextState" -msgstr "新增下一項關卡" - -#: lib/RT/Queue_Overlay.pm:763 -#. ($args{'Type'}) -msgid "Added principal as a %1 for this queue" -msgstr "單位已新增為此表單的 %1" - -#: lib/RT/Ticket_Overlay.pm:1455 -#. ($self->loc($args{'Type'})) -msgid "Added principal as a %1 for this ticket" -msgstr "單位已新增為此申請單的 %1" - -#: NOT FOUND IN SOURCE -msgid "Additional Hints" -msgstr "額外提示" - -#: html/Admin/Users/Modify.html:146 html/User/Prefs.html:133 -msgid "Address1" -msgstr "住址" - -#: html/Admin/Users/Modify.html:151 html/User/Prefs.html:137 -msgid "Address2" -msgstr "住址(續)" - -#: NOT FOUND IN SOURCE -msgid "Adjust Blinking Rate" -msgstr "調整閃爍速度快慢" - -#: NOT FOUND IN SOURCE -msgid "Admin" -msgstr "管理員" - -#: html/Ticket/Create.html:98 -msgid "Admin Cc" -msgstr "管理員副本" - -#: etc/initialdata:295 -msgid "Admin Comment" -msgstr "管理員評論" - -#: etc/initialdata:274 -msgid "Admin Correspondence" -msgstr "管理員回覆" - -#: NOT FOUND IN SOURCE -msgid "Admin Rights" -msgstr "管理員權限" - -#: html/Admin/Queues/index.html:46 html/Admin/Queues/index.html:49 -msgid "Admin queues" -msgstr "表單管理" - -#: NOT FOUND IN SOURCE -msgid "Admin users" -msgstr "使用者管理" - -#: html/Admin/Global/index.html:47 html/Admin/Global/index.html:49 -msgid "Admin/Global configuration" -msgstr "管理/全域設定" - -#: NOT FOUND IN SOURCE -msgid "Admin/Groups" -msgstr "管理/群組" - -#: NOT FOUND IN SOURCE -msgid "Admin/Queue/Basics" -msgstr "管理/表單/基本資訊" - -#: NOT FOUND IN SOURCE -msgid "AdminAddress" -msgstr "管理員 Email" - -#: NOT FOUND IN SOURCE -msgid "AdminAllPersonalGroups" -msgstr "管理所有代理人群組" - -#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:60 lib/RT/ACE_Overlay.pm:113 -msgid "AdminCc" -msgstr "管理員副本" - -#: NOT FOUND IN SOURCE -msgid "AdminComment" -msgstr "管理員評論" - -#: NOT FOUND IN SOURCE -msgid "AdminCorrespondence" -msgstr "管理員回覆" - -#: lib/RT/CustomField_Overlay.pm:106 -msgid "AdminCustomField" -msgstr "管理自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "AdminCustomFields" -msgstr "管理自訂欄位" - -#: lib/RT/Group_Overlay.pm:163 -msgid "AdminGroup" -msgstr "管理群組" - -#: NOT FOUND IN SOURCE -msgid "AdminGroupDescription" -msgstr "管理群組描述" - -#: lib/RT/Group_Overlay.pm:165 -msgid "AdminGroupMembership" -msgstr "管理群組成員" - -#: NOT FOUND IN SOURCE -msgid "AdminGroupName" -msgstr "管理群組名稱" - -#: NOT FOUND IN SOURCE -msgid "AdminGroupPermission" -msgstr "管理群組權限" - -#: NOT FOUND IN SOURCE -msgid "AdminGroupStatus" -msgstr "管理群組狀態" - -#: lib/RT/System.pm:80 -msgid "AdminOwnPersonalGroups" -msgstr "管理代理人群組" - -#: lib/RT/Queue_Overlay.pm:92 -msgid "AdminQueue" -msgstr "管理表單" - -#: lib/RT/System.pm:81 -msgid "AdminUsers" -msgstr "管理使用者" - -#: NOT FOUND IN SOURCE -msgid "Administrative" -msgstr "行政類" - -#: html/Admin/Queues/People.html:69 html/Ticket/Elements/EditPeople:75 -msgid "Administrative Cc" -msgstr "管理員副本" - -#: NOT FOUND IN SOURCE -msgid "Admins" -msgstr "主管" - -#: html/Ticket/Elements/Tabs:216 -msgid "Advanced" -msgstr "進階" - -#: NOT FOUND IN SOURCE -msgid "Advanced Search" -msgstr "進階查詢" - -#: NOT FOUND IN SOURCE -msgid "Advanced Search Criteria" -msgstr "進階查詢條件" - -#: html/Elements/SelectDateRelation:57 -msgid "After" -msgstr "晚於" - -#: NOT FOUND IN SOURCE -msgid "Age" -msgstr "經歷時間" - -#: html/Search/Elements/PickCriteria:52 -msgid "Aggregator" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Alias" -msgstr "執行其他流程" - -#: NOT FOUND IN SOURCE -msgid "Alias for" -msgstr "相當於" - -#: NOT FOUND IN SOURCE -msgid "All" -msgstr "全部" - -#: etc/initialdata:363 -msgid "All Approvals Passed" -msgstr "完成全部簽核" - -#: NOT FOUND IN SOURCE -msgid "All Condition" -msgstr "所有條件" - -#: NOT FOUND IN SOURCE -msgid "All Custom Fields" -msgstr "所有自訂欄位" - -#: html/Admin/Queues/index.html:75 -msgid "All Queues" -msgstr "所有表單" - -#: NOT FOUND IN SOURCE -msgid "All Users" -msgstr "全體員工" - -#: NOT FOUND IN SOURCE -msgid "All done! Now you can proceed to %1." -msgstr "處理完畢!您現在可以繼續進行 %1。" - -#: NOT FOUND IN SOURCE -msgid "Allowance Request" -msgstr "福利補助申請" - -#: NOT FOUND IN SOURCE -msgid "Always sends a message to the requestors independent of message sender" -msgstr "無論寄件來源為何,一律寄信給申請人" - -#: NOT FOUND IN SOURCE -msgid "Amount" -msgstr "數額" - -#: html/Search/Elements/EditQuery:56 -msgid "And/Or" -msgstr "AND/OR" - -#: NOT FOUND IN SOURCE -msgid "Any Condition" -msgstr "任意條件" - -#: NOT FOUND IN SOURCE -msgid "Applies To" -msgstr "套用於" - -#: html/Admin/CustomFields/Modify.html:73 html/Admin/Elements/CustomFieldTabs:83 -msgid "Applies to" -msgstr "套用於" - -#: html/Search/Edit.html:64 -msgid "Apply" -msgstr "套用" - -#: NOT FOUND IN SOURCE -msgid "Apply Template" -msgstr "引用範本" - -#: html/Search/Edit.html:64 -msgid "Apply your changes" -msgstr "套用更動" - -#: html/Elements/Tabs:77 -msgid "Approval" -msgstr "簽核" - -#: html/Approvals/Display.html:65 html/Approvals/Elements/ShowDependency:63 html/Approvals/index.html:86 -#. ($Ticket->Id, $Ticket->Subject) -#. ($ticket->id, $msg) -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Approval #%1: %2" -msgstr "簽核單 #%1:%2" - -#: html/Approvals/index.html:75 -#. ($ticket->Id) -msgid "Approval #%1: Notes not recorded due to a system error" -msgstr "簽核單 #%1:系統錯誤,記錄失敗" - -#: html/Approvals/index.html:73 -#. ($ticket->Id) -msgid "Approval #%1: Notes recorded" -msgstr "簽核單 #%1:記錄完畢" - -#: NOT FOUND IN SOURCE -msgid "Approval Details" -msgstr "簽核細節" - -#: NOT FOUND IN SOURCE -msgid "Approval Due" -msgstr "簽核時限" - -#: NOT FOUND IN SOURCE -msgid "Approval Notes" -msgstr "簽核意見" - -#: etc/initialdata:351 -msgid "Approval Passed" -msgstr "完成某項簽核" - -#: etc/initialdata:374 -msgid "Approval Rejected" -msgstr "駁回某項簽核" - -#: NOT FOUND IN SOURCE -msgid "Approval Result" -msgstr "簽核結果" - -#: NOT FOUND IN SOURCE -msgid "Approval Status" -msgstr "核准結果" - -#: NOT FOUND IN SOURCE -msgid "Approval Type" -msgstr "簽核種類" - -#: NOT FOUND IN SOURCE -msgid "Approval diagram" -msgstr "簽核流程" - -#: html/Approvals/Elements/Approve:69 -msgid "Approve" -msgstr "核准" - -#: NOT FOUND IN SOURCE -msgid "Approver" -msgstr "簽核人" - -#: NOT FOUND IN SOURCE -msgid "Approver Setting" -msgstr "執行簽核人設定" - -#: etc/initialdata:504 -msgid "Approver's notes: %1" -msgstr "簽核備註:%1" - -#: NOT FOUND IN SOURCE -msgid "Apr" -msgstr "四月" - -#: lib/RT/Date.pm:444 -msgid "Apr." -msgstr "04" - -#: NOT FOUND IN SOURCE -msgid "April" -msgstr "四月" - -#: NOT FOUND IN SOURCE -msgid "Are you sure to delete checked items?" -msgstr "您確定要刪除?" - -#: html/Search/Elements/DisplayOptions:81 -msgid "Asc" -msgstr "" - -#: html/Elements/SelectSortOrder:56 -msgid "Ascending" -msgstr "遞增" - -#: lib/RT/Queue_Overlay.pm:96 -msgid "Assign and remove custom fields" -msgstr "指派及移除自訂欄位" - -#: lib/RT/Queue_Overlay.pm:96 -msgid "AssignCustomFields" -msgstr "指派自訂欄位" - -#: html/Search/Bulk.html:142 html/SelfService/Update.html:87 html/Ticket/ModifyAll.html:115 html/Ticket/Update.html:116 -msgid "Attach" -msgstr "附件" - -#: html/SelfService/Create.html:92 html/Ticket/Create.html:143 -msgid "Attach file" -msgstr "附加檔案" - -#: html/SelfService/Update.html:75 html/Ticket/Create.html:131 html/Ticket/Update.html:94 -msgid "Attached file" -msgstr "現有附件" - -#: html/Ticket/ShowEmailRecord.html:52 html/Ticket/ShowEmailRecord.html:56 html/Ticket/ShowEmailRecord.html:59 -#. ($Attachment) -msgid "Attachment '%1' could not be loaded" -msgstr "無法載入附件 '%1'" - -#: lib/RT/Transaction_Overlay.pm:489 -msgid "Attachment created" -msgstr "附件新增完畢" - -#: lib/RT/Tickets_Overlay.pm:1945 -msgid "Attachment filename" -msgstr "附件檔名" - -#: html/Ticket/Elements/ShowAttachments:47 -msgid "Attachments" -msgstr "附件" - -#: lib/RT/Attributes_Overlay.pm:171 -msgid "Attribute Deleted" -msgstr "已刪除該屬性" - -#: NOT FOUND IN SOURCE -msgid "Attributes" -msgstr "屬性" - -#: NOT FOUND IN SOURCE -msgid "Aug" -msgstr "八月" - -#: lib/RT/Date.pm:448 -msgid "Aug." -msgstr "08" - -#: NOT FOUND IN SOURCE -msgid "August" -msgstr "八月" - -#: NOT FOUND IN SOURCE -msgid "AuthSystem" -msgstr "認證方式" - -#: NOT FOUND IN SOURCE -msgid "AutoReject" -msgstr "自動駁回表單" - -#: NOT FOUND IN SOURCE -msgid "AutoResolve" -msgstr "自動完成表單處理" - -#: etc/initialdata:221 -msgid "Autoreply" -msgstr "自動回覆" - -#: etc/initialdata:72 -msgid "Autoreply To Requestors" -msgstr "自動對申請人回覆" - -#: NOT FOUND IN SOURCE -msgid "AutoreplyToRequestors" -msgstr "自動對申請人回覆" - -#: html/Widgets/SelectionBox:185 -msgid "Available" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Available Columns" -msgstr "可用的欄位:" - -#: NOT FOUND IN SOURCE -msgid "Available Rights:" -msgstr "權限項目列表:" - -#: NOT FOUND IN SOURCE -msgid "Back to Homepage" -msgstr "回到首頁" - -#: NOT FOUND IN SOURCE -msgid "Back to Previous" -msgstr "回上頁" - -#: NOT FOUND IN SOURCE -msgid "Bad PGP Signature: %1\\n" -msgstr "錯誤的 PGP 簽章:%1\\n" - -#: NOT FOUND IN SOURCE -msgid "Bad attachment id. Couldn't find attachment '%1'\\n" -msgstr "錯誤的附件編號。無法找到附件 '%1'\\n" - -#: NOT FOUND IN SOURCE -msgid "Bad data in %1" -msgstr "%1 的資料錯誤" - -#: NOT FOUND IN SOURCE -msgid "Bad transaction number for attachment. %1 should be %2\\n" -msgstr "附件的處理號碼錯誤。%1 應為 %2\\n" - -#: html/Admin/Elements/CustomFieldTabs:65 html/Admin/Elements/GroupTabs:60 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/UserTabs:58 html/Ticket/Elements/Tabs:113 html/User/Elements/GroupTabs:59 -msgid "Basics" -msgstr "基本資訊" - -#: NOT FOUND IN SOURCE -msgid "Batch Approval" -msgstr "批次簽核" - -#: html/Ticket/Update.html:88 -msgid "Bcc" -msgstr "密件副本" - -#: html/Admin/CustomFields/GroupRights.html:91 html/Admin/CustomFields/UserRights.html:74 html/Admin/Elements/EditScrip:89 -msgid "Be sure to save your changes" -msgstr "請別忘了儲存修改。" - -#: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:361 -msgid "Before" -msgstr "早於" - -#: NOT FOUND IN SOURCE -msgid "Begin Approval" -msgstr "開始簽核" - -#: NOT FOUND IN SOURCE -msgid "Begin From " -msgstr "起始日" - -#: html/Elements/Logo:47 -msgid "Best Practical Solutions, LLC corporate logo" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Binary" -msgstr "檔案" - -#: NOT FOUND IN SOURCE -msgid "Birthday" -msgstr "生日" - -#: etc/initialdata:217 -msgid "Blank" -msgstr "空白範本" - -#: html/Search/Elements/EditFormat:84 -msgid "Bold" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Bookmarkable URL for this search" -msgstr "將查詢結果轉為可放入書籤的網址" - -#: html/Search/Results.html:79 -msgid "Bookmarkable link" -msgstr "可放入書籤的網址" - -#: html/Ticket/Elements/ShowHistory:64 html/Ticket/Elements/ShowHistory:69 -msgid "Brief headers" -msgstr "精簡標頭檔" - -#: html/Ticket/Elements/Tabs:227 -msgid "Bulk Update" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Bulk ticket update" -msgstr "更新整批申請單" - -#: NOT FOUND IN SOURCE -msgid "Business Unit" -msgstr "事業部" - -#: NOT FOUND IN SOURCE -msgid "Business Unit:" -msgstr "事業部:" - -#: lib/RT/User_Overlay.pm:1853 -msgid "Can not modify system users" -msgstr "無法更改系統使用者" - -#: lib/RT/Queue_Overlay.pm:91 -msgid "Can this principal see this queue" -msgstr "該單位是否能查閱此表單" - -#: lib/RT/CustomField_Overlay.pm:379 -msgid "Can't add a custom field value without a name" -msgstr "不能新增沒有名稱的自訂欄位值" - -#: html/Admin/CustomFields/Objects.html:86 -#. ($Class) -msgid "Can't find a collection class for '%1'" -msgstr "" - -#: html/Search/Build.html:286 -msgid "Can't find a saved search to work with" -msgstr "找不到已儲存的查詢" - -#: lib/RT/Link_Overlay.pm:159 -msgid "Can't link a ticket to itself" -msgstr "申請單不能鏈結自己。" - -#: NOT FOUND IN SOURCE -msgid "Can't merge into a merged ticket. You should never get this error" -msgstr "不能整合進已整合過的申請單。這個錯誤不該發生。" - -#: html/Widgets/SavedSearch:63 -#. (loc($self->{SearchType})) -msgid "Can't save %1" -msgstr "無法儲存 %1" - -#: html/Search/Build.html:290 -msgid "Can't save this search" -msgstr "無法儲存此項查詢" - -#: lib/RT/Record.pm:1282 lib/RT/Record.pm:1358 -msgid "Can't specifiy both base and target" -msgstr "不能同時指定起始申請單與目的申請單" - -#: NOT FOUND IN SOURCE -msgid "Cancel" -msgstr "取消" - -#: html/autohandler:204 -#. ($msg) -msgid "Cannot create user: %1" -msgstr "無法新增使用者:%1" - -#: NOT FOUND IN SOURCE -msgid "Cannot login: Your system clock differs from server's by %1 seconds!" -msgstr "您的系統時鐘和伺服器相差 %1 秒,無法登入!" - -#: NOT FOUND IN SOURCE -msgid "Card No." -msgstr "卡號" - -#: NOT FOUND IN SOURCE -msgid "Categories" -msgstr "分類管理" - -#: html/Admin/Elements/AddCustomFieldValue:62 html/Admin/Elements/EditCustomFieldValues:58 -msgid "Category" -msgstr "分類" - -#: etc/initialdata:50 html/Admin/Queues/People.html:65 html/SelfService/Create.html:71 html/Ticket/Create.html:88 html/Ticket/Elements/EditPeople:72 html/Ticket/Elements/ShowPeople:56 html/Ticket/Update.html:83 lib/RT/ACE_Overlay.pm:112 -msgid "Cc" -msgstr "副本" - -#: NOT FOUND IN SOURCE -msgid "Cc Type" -msgstr "副本類別" - -#: NOT FOUND IN SOURCE -msgid "Chairperson's Office" -msgstr "董事長室" - -#: NOT FOUND IN SOURCE -msgid "Change Ticket" -msgstr "修改申請單" - -#: html/SelfService/Prefs.html:52 -msgid "Change password" -msgstr "更改密碼" - -#: NOT FOUND IN SOURCE -msgid "ChangeOwnerUI" -msgstr "可否選擇表單承辦人" - -#: html/Elements/Submit:78 -msgid "Check All" -msgstr "全部選取" - -#: html/SelfService/Update.html:78 html/Ticket/Create.html:134 html/Ticket/Update.html:97 -msgid "Check box to delete" -msgstr "選擇欲刪除的項目" - -#: html/Admin/Elements/SelectRights:55 -msgid "Check box to revoke right" -msgstr "選擇欲撤消的權利" - -#: html/Elements/EditLinks:148 html/Elements/EditLinks:85 html/Elements/ShowLinks:78 html/Ticket/Create.html:223 html/Ticket/Elements/BulkLinks:64 -msgid "Children" -msgstr "子申請單" - -#: NOT FOUND IN SOURCE -msgid "Chinese Name" -msgstr "中文姓名" - -#: NOT FOUND IN SOURCE -msgid "Chinese/English" -msgstr "中英文" - -#: html/NoAuth/js/util.js:201 -msgid "Choose a date" -msgstr "" - -#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:141 -msgid "City" -msgstr "所在城市" - -#: NOT FOUND IN SOURCE -msgid "ClassicUI" -msgstr "傳統介面" - -#: html/Elements/Submit:80 -msgid "Clear All" -msgstr "全部清除" - -#: html/Helpers/CalPopup.html:51 -msgid "Close window" -msgstr "關閉視窗" - -#: html/Ticket/Elements/ShowDates:68 -msgid "Closed" -msgstr "已解決" - -#: NOT FOUND IN SOURCE -msgid "Closed Tickets" -msgstr "已解決的申請單" - -#: html/SelfService/Closed.html:46 html/SelfService/Elements/Tabs:78 -msgid "Closed tickets" -msgstr "已解決的申請單" - -#: NOT FOUND IN SOURCE -msgid "Code" -msgstr "執行程式碼" - -#: lib/RT/CustomField_Overlay.pm:89 -msgid "Combobox: Select or enter multiple values" -msgstr "下拉文字框:選擇或鍵入多重項目" - -#: lib/RT/CustomField_Overlay.pm:90 -msgid "Combobox: Select or enter one value" -msgstr "下拉文字框:選擇或鍵入單一項目" - -#: lib/RT/CustomField_Overlay.pm:91 -msgid "Combobox: Select or enter up to %1 values" -msgstr "下拉文字框:選擇或鍵入最多 %1 個項目" - -#: NOT FOUND IN SOURCE -msgid "Command not understood!\\n" -msgstr "指令無法辨識!\\n" - -#: html/Ticket/Elements/ShowTransaction:190 html/Ticket/Elements/Tabs:185 -msgid "Comment" -msgstr "評論" - -#: html/Admin/Queues/Modify.html:79 -msgid "Comment Address" -msgstr "評論電子郵件地址" - -#: NOT FOUND IN SOURCE -msgid "Comment not recorded" -msgstr "評論未被紀錄" - -#: lib/RT/Queue_Overlay.pm:111 -msgid "Comment on tickets" -msgstr "對申請單提出評論" - -#: lib/RT/Queue_Overlay.pm:111 -msgid "CommentOnTicket" -msgstr "評論申請單" - -#: NOT FOUND IN SOURCE -msgid "Comments" -msgstr "評論" - -#: html/Ticket/ModifyAll.html:91 html/Ticket/Update.html:75 -msgid "Comments (Not sent to requestors)" -msgstr "評論(不送給申請人)" - -#: html/Search/Bulk.html:128 -msgid "Comments (not sent to requestors)" -msgstr "評論(不送給申請人)" - -#: NOT FOUND IN SOURCE -msgid "Comments about %1" -msgstr "對 %1 的評論" - -#: html/Admin/Users/Modify.html:225 html/Ticket/Elements/ShowRequestor:67 -msgid "Comments about this user" -msgstr "使用者描述" - -#: lib/RT/Transaction_Overlay.pm:634 -msgid "Comments added" -msgstr "新增評論完畢" - -#: NOT FOUND IN SOURCE -msgid "Commit" -msgstr "確認" - -#: lib/RT/Action/Generic.pm:175 -msgid "Commit Stubbed" -msgstr "消除更動完畢" - -#: NOT FOUND IN SOURCE -msgid "Company Name" -msgstr "公司名稱" - -#: NOT FOUND IN SOURCE -msgid "CompanySpecific" -msgstr "各公司獨立顯示" - -#: NOT FOUND IN SOURCE -msgid "Compile Restrictions" -msgstr "設定查詢條件" - -#: html/Admin/Elements/EditScrip:59 -msgid "Condition" -msgstr "條件" - -#: lib/RT/Scrip_Overlay.pm:184 -msgid "Condition is mandatory argument" -msgstr "條件是必填欄位" - -#: bin/rt-crontool:151 -msgid "Condition matches..." -msgstr "符合條件..." - -#: lib/RT/Scrip_Overlay.pm:188 -msgid "Condition not found" -msgstr "未找到符合的現況" - -#: html/Elements/Tabs:84 -msgid "Configuration" -msgstr "設定" - -#: html/SelfService/Prefs.html:54 -msgid "Confirm" -msgstr "確認密碼" - -#: NOT FOUND IN SOURCE -msgid "Confirm Password" -msgstr "密碼確認" - -#: NOT FOUND IN SOURCE -msgid "Confirm Submit" -msgstr "確定送出" - -#: NOT FOUND IN SOURCE -msgid "Contact System Administrator" -msgstr "連絡系統管理員" - -#: NOT FOUND IN SOURCE -msgid "ContactInfoSystem" -msgstr "連絡資訊系統" - -#: NOT FOUND IN SOURCE -msgid "Contacted date '%1' could not be parsed" -msgstr "無法解讀聯絡日期 '%1'" - -#: html/Admin/Elements/ModifyTemplate:65 html/Elements/SelectAttachmentField:48 html/Ticket/ModifyAll.html:119 -msgid "Content" -msgstr "內容" - -#: html/Elements/SelectAttachmentField:49 -msgid "Content-Type" -msgstr "內容類型" - -#: NOT FOUND IN SOURCE -msgid "Coould not create group" -msgstr "無法新增群組" - -#: html/Search/Elements/EditSearches:65 -msgid "Copy" -msgstr "複製" - -#: NOT FOUND IN SOURCE -msgid "Copy Field From:" -msgstr "欲複製欄位:" - -#: etc/initialdata:286 -msgid "Correspondence" -msgstr "回覆" - -#: NOT FOUND IN SOURCE -msgid "Correspondence Address" -msgstr "申請單回覆地址" - -#: lib/RT/Transaction_Overlay.pm:630 -msgid "Correspondence added" -msgstr "新增申請單回覆" - -#: NOT FOUND IN SOURCE -msgid "Correspondence not recorded" -msgstr "未紀錄申請單回覆" - -#: NOT FOUND IN SOURCE -msgid "Could not add new custom field value for ticket. " -msgstr "不能新增自訂欄位的值。" - -#: NOT FOUND IN SOURCE -msgid "Could not add new custom field value for ticket. %1 " -msgstr "不能新增自訂欄位的值。%1 " - -#: lib/RT/Record.pm:1707 -msgid "Could not add new custom field value. " -msgstr "不能新增自訂欄位的值。" - -#: lib/RT/Record.pm:1660 -#. (, $value_msg) -msgid "Could not add new custom field value. %1 " -msgstr "不能新增自訂欄位的值。%1 " - -#: lib/RT/Ticket_Overlay.pm:3048 lib/RT/Ticket_Overlay.pm:3056 lib/RT/Ticket_Overlay.pm:3073 -msgid "Could not change owner. " -msgstr "不能更改承辦人。" - -#: html/Admin/CustomFields/Modify.html:161 -#. ($msg) -msgid "Could not create CustomField" -msgstr "無法新增自訂欄位" - -#: html/Admin/Elements/EditCustomField:113 -#. ($msg) -msgid "Could not create CustomField: %1" -msgstr "無法新增自訂欄位:%1" - -#: NOT FOUND IN SOURCE -msgid "Could not create Scrip" -msgstr "無法建立訊息通知" - -#: NOT FOUND IN SOURCE -msgid "Could not create Template" -msgstr "無法建立通知範本" - -#: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:494 lib/RT/Group_Overlay.pm:501 -msgid "Could not create group" -msgstr "無法新增群組" - -#: NOT FOUND IN SOURCE -msgid "Could not create item" -msgstr "無法新增項目" - -#: html/Admin/Global/Template.html:96 html/Admin/Queues/Template.html:93 -#. ($msg) -msgid "Could not create template: %1" -msgstr "無法新增範本:%1" - -#: lib/RT/Ticket_Overlay.pm:1075 lib/RT/Ticket_Overlay.pm:407 -msgid "Could not create ticket. Queue not set" -msgstr "無法新增申請單。尚未指定表單。" - -#: lib/RT/User_Overlay.pm:255 lib/RT/User_Overlay.pm:269 lib/RT/User_Overlay.pm:278 lib/RT/User_Overlay.pm:287 lib/RT/User_Overlay.pm:296 lib/RT/User_Overlay.pm:310 lib/RT/User_Overlay.pm:320 lib/RT/User_Overlay.pm:496 -msgid "Could not create user" -msgstr "無法新增使用者" - -#: NOT FOUND IN SOURCE -msgid "Could not create watcher for requestor" -msgstr "無法為申請人新增視察員" - -#: NOT FOUND IN SOURCE -msgid "Could not create workflow: %1" -msgstr "無法新增流程:%1" - -#: NOT FOUND IN SOURCE -msgid "Could not find a ticket with id %1" -msgstr "找不到編號 %1 的申請單" - -#: NOT FOUND IN SOURCE -msgid "Could not find group %1." -msgstr "找不到群組 %1。" - -#: lib/RT/Queue_Overlay.pm:741 lib/RT/Ticket_Overlay.pm:1423 -msgid "Could not find or create that user" -msgstr "找不到或無法新增該名使用者" - -#: lib/RT/Queue_Overlay.pm:802 lib/RT/Ticket_Overlay.pm:1504 -msgid "Could not find that principal" -msgstr "找不到該單位" - -#: NOT FOUND IN SOURCE -msgid "Could not find user %1." -msgstr "找不到使用者 %1。" - -#: html/Admin/CustomFields/Objects.html:69 -msgid "Could not load CustomField %1" -msgstr "無法載入欄位 %1" - -#: html/Admin/Groups/Members.html:112 html/User/Groups/Members.html:111 html/User/Groups/Modify.html:103 -msgid "Could not load group" -msgstr "無法載入群組" - -#: lib/RT/SavedSearch.pm:119 -#. ($privacy) -msgid "Could not load object for %1" -msgstr "無法為 %1 載入物件" - -#: lib/RT/SavedSearch.pm:197 -msgid "Could not load search attribute" -msgstr "無法載入查詢屬性" - -#: lib/RT/Queue_Overlay.pm:761 -#. ($args{'Type'}) -msgid "Could not make that principal a %1 for this queue" -msgstr "無法將該單位設為此表單的 %1。" - -#: lib/RT/Ticket_Overlay.pm:1444 -#. ($self->loc($args{'Type'})) -msgid "Could not make that principal a %1 for this ticket" -msgstr "無法將該單位設為此申請單的 %1。" - -#: lib/RT/Queue_Overlay.pm:860 -#. ($args{'Type'}) -msgid "Could not remove that principal as a %1 for this queue" -msgstr "無法將單位 %1 從表單移除。" - -#: NOT FOUND IN SOURCE -msgid "Could not remove that principal as a %1 for this ticket" -msgstr "無法將單位 %1 從申請單移除。" - -#: lib/RT/User_Overlay.pm:191 -msgid "Could not set user info" -msgstr "無法設定使用者資訊" - -#: lib/RT/Transaction_Overlay.pm:159 -msgid "Couldn't add attachment" -msgstr "無法新增附件" - -#: lib/RT/Group_Overlay.pm:1003 -msgid "Couldn't add member to group" -msgstr "無法新增成員至群組" - -#: lib/RT/Record.pm:1719 lib/RT/Record.pm:1771 -#. ($Msg) -msgid "Couldn't create a transaction: %1" -msgstr "無法新增更動報告" - -#: NOT FOUND IN SOURCE -msgid "Couldn't figure out what to do from gpg's reply\\n" -msgstr "無法從 gpg 回函辨識出該採取的行動\\n" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find group\\n" -msgstr "找不到群組\\n" - -#: lib/RT/Record.pm:953 -msgid "Couldn't find row" -msgstr "找不到此列資料" - -#: lib/RT/Group_Overlay.pm:977 -msgid "Couldn't find that principal" -msgstr "找不到該單位" - -#: lib/RT/CustomField_Overlay.pm:409 -msgid "Couldn't find that value" -msgstr "找不到該值" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find that watcher" -msgstr "找不到該視察員" - -#: NOT FOUND IN SOURCE -msgid "Couldn't find user\\n" -msgstr "找不到使用者\\n" - -#: lib/RT/CurrentUser.pm:145 -#. ($self->Id) -msgid "Couldn't load %1 from the users database.\\n" -msgstr "無法從使用者資料庫載入 %1。\\n" - -#: html/Admin/CustomFields/UserRights.html:149 -#. ($id) -msgid "Couldn't load Class %1" -msgstr "無法載入類別 %1" - -#: html/Admin/CustomFields/GroupRights.html:107 -#. ($id) -msgid "Couldn't load CustomField %1" -msgstr "無法載入自訂欄位 %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load KeywordSelects." -msgstr "無法載入 KeywordSelects。" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load RT config file '%1' %2" -msgstr "無法載入 RT 設定檔 '%1' %2" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load Scrips." -msgstr "無法載入手續。" - -#: lib/RT/Ticket_Overlay.pm:2016 -#. ($self->Id) -msgid "Couldn't load copy of ticket #%1." -msgstr "" - -#: html/Admin/Groups/GroupRights.html:109 html/Admin/Groups/UserRights.html:96 -#. ($id) -msgid "Couldn't load group %1" -msgstr "無法載入手續 %1" - -#: lib/RT/Link_Overlay.pm:202 lib/RT/Link_Overlay.pm:211 lib/RT/Link_Overlay.pm:238 -msgid "Couldn't load link" -msgstr "無法載入鏈結。" - -#: html/Admin/Elements/ObjectCustomFields:83 html/Admin/Queues/CustomFields.html:59 html/Admin/Users/CustomFields.html:59 -#. ($id) -msgid "Couldn't load object %1" -msgstr "無法載入物件 %1" - -#: html/Admin/Queues/People.html:142 -#. ($id) -msgid "Couldn't load queue" -msgstr "無法載入表單" - -#: html/Admin/Queues/GroupRights.html:122 html/Admin/Queues/UserRights.html:93 -#. ($id) -msgid "Couldn't load queue %1" -msgstr "無法載入表單 %1" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load scrip" -msgstr "無法載入手續" - -#: html/Admin/Elements/EditScrip:126 html/Admin/Elements/EditScrip:167 -#. ($id) -msgid "Couldn't load scrip #%1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load template" -msgstr "無法載入範本" - -#: NOT FOUND IN SOURCE -msgid "Couldn't load that user (%1)" -msgstr "無法載入該名使用者(%1)" - -#: html/SelfService/Display.html:158 lib/RT/Action/CreateTickets.pm:680 -#. ($id) -msgid "Couldn't load ticket '%1'" -msgstr "無法載入申請單 '%1'" - -#: lib/RT/Ticket_Overlay.pm:2643 -#. ($args{'URI'}) -msgid "Couldn't resolve '%1' into a URI." -msgstr "" - -#: html/Admin/Users/Modify.html:173 html/User/Prefs.html:153 -msgid "Country" -msgstr "國家" - -#: html/Admin/Elements/CreateUserCalled:47 html/Admin/Elements/EditCustomField:84 html/Admin/Elements/EditScrip:133 html/Admin/Queues/Template.html:66 html/Elements/QuickCreate:65 html/Ticket/Create.html:168 html/Ticket/Create.html:235 -msgid "Create" -msgstr "新增" - -#: NOT FOUND IN SOURCE -msgid "Create Subgroup:" -msgstr "新增子群組:" - -#: etc/initialdata:135 -msgid "Create Tickets" -msgstr "新增申請單" - -#: NOT FOUND IN SOURCE -msgid "Create User:" -msgstr "新增成員:" - -#: html/Admin/CustomFields/Modify.html:150 html/Admin/Elements/EditCustomField:96 -msgid "Create a CustomField" -msgstr "新增自訂欄位" - -#: html/Admin/Queues/CustomField.html:69 -#. ($QueueObj->Name()) -msgid "Create a CustomField for queue %1" -msgstr "為 %1 表單新增自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Create a CustomField that applies to all queues" -msgstr "為 %1 表單新增自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Create a new Custom Field" -msgstr "新增自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Create a new global Scrip" -msgstr "新增全域手續" - -#: NOT FOUND IN SOURCE -msgid "Create a new global scrip" -msgstr "新增全域手續" - -#: html/Admin/Groups/Modify.html:125 html/Admin/Groups/Modify.html:99 -msgid "Create a new group" -msgstr "新增群組" - -#: html/User/Groups/Modify.html:113 html/User/Groups/Modify.html:88 -msgid "Create a new personal group" -msgstr "新增代理人群組" - -#: NOT FOUND IN SOURCE -msgid "Create a new queue" -msgstr "新增表單" - -#: NOT FOUND IN SOURCE -msgid "Create a new scrip" -msgstr "新增手續" - -#: NOT FOUND IN SOURCE -msgid "Create a new template" -msgstr "新增範本" - -#: html/Ticket/Create.html:47 html/Ticket/Create.html:51 html/Ticket/Create.html:60 -msgid "Create a new ticket" -msgstr "新增申請單" - -#: html/Admin/Users/Modify.html:252 html/Admin/Users/Modify.html:314 -msgid "Create a new user" -msgstr "新增使用者" - -#: NOT FOUND IN SOURCE -msgid "Create a new workflow" -msgstr "新增流程" - -#: html/Admin/Queues/Modify.html:125 -msgid "Create a queue" -msgstr "新增表單" - -#: NOT FOUND IN SOURCE -msgid "Create a queue called" -msgstr "新增表單名稱" - -#: NOT FOUND IN SOURCE -msgid "Create a request" -msgstr "提出申請" - -#: html/Admin/Queues/Scrip.html:89 -#. ($QueueObj->Name) -msgid "Create a scrip for queue %1" -msgstr "為 %1 表單新增手續" - -#: html/Admin/Global/Template.html:90 html/Admin/Queues/Template.html:86 -msgid "Create a template" -msgstr "新增範本" - -#: html/SelfService/Create.html:46 html/SelfService/CreateTicketInQueue.html:46 -msgid "Create a ticket" -msgstr "提出申請單" - -#: NOT FOUND IN SOURCE -msgid "Create a workflow" -msgstr "新增流程" - -#: NOT FOUND IN SOURCE -msgid "Create failed: %1 / %2 / %3 " -msgstr "新增失敗:%1 / %2 / %3" - -#: NOT FOUND IN SOURCE -msgid "Create failed: %1/%2/%3" -msgstr "新增失敗:%1/%2/%3" - -#: NOT FOUND IN SOURCE -msgid "Create new item" -msgstr "建立新項目" - -#: etc/initialdata:137 -msgid "Create new tickets based on this scrip's template" -msgstr "依據此項手續內的模版,新增申請單" - -#: html/SelfService/Create.html:105 -msgid "Create ticket" -msgstr "新增申請單" - -#: lib/RT/Queue_Overlay.pm:109 -msgid "Create tickets in this queue" -msgstr "在此表單中新增申請單" - -#: lib/RT/CustomField_Overlay.pm:106 -msgid "Create, delete and modify custom fields" -msgstr "新增、刪除及更改自訂欄位" - -#: lib/RT/Queue_Overlay.pm:92 -msgid "Create, delete and modify queues" -msgstr "新增、刪除及更改表單" - -#: NOT FOUND IN SOURCE -msgid "Create, delete and modify the members of any user's personal groups" -msgstr "新增、刪除及更改任何使用者的代理人群組" - -#: lib/RT/System.pm:80 -msgid "Create, delete and modify the members of personal groups" -msgstr "新增、刪除及更改代理人群組" - -#: lib/RT/System.pm:81 -msgid "Create, delete and modify users" -msgstr "新增、刪除及更改使用者" - -#: lib/RT/System.pm:87 -msgid "CreateSavedSearch" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:109 -msgid "CreateTicket" -msgstr "新增申請單" - -#: html/Elements/SelectDateType:47 html/Ticket/Elements/ShowDates:48 lib/RT/Ticket_Overlay.pm:1169 -msgid "Created" -msgstr "新增日" - -#: html/Admin/CustomFields/Modify.html:163 html/Admin/Elements/EditCustomField:117 -#. ($CustomFieldObj->Name()) -msgid "Created CustomField %1" -msgstr "自訂欄位 %1 新增成功" - -#: html/Tools/Reports/Elements/Tabs:63 -msgid "Created in a date range" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Created template %1" -msgstr "範本 %1 新增成功" - -#: html/Tools/Reports/CreatedByDates.html:52 -msgid "Created tickets in period, grouped by status" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Created workflow %1" -msgstr "流程 %1 新增成功" - -#: html/Search/Elements/PickBasics:102 -msgid "Creator" -msgstr "建立者" - -#: NOT FOUND IN SOURCE -msgid "Currency" -msgstr "幣別" - -#: NOT FOUND IN SOURCE -msgid "Current Approval Info" -msgstr "截至目前簽核資訊" - -#: NOT FOUND IN SOURCE -msgid "Current Custom Fields" -msgstr "現有自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Current Groups:" -msgstr "現有群組列表:" - -#: html/Elements/EditLinks:49 -msgid "Current Links" -msgstr "現有關係" - -#: NOT FOUND IN SOURCE -msgid "Current Rights:" -msgstr "現有權限:" - -#: html/Admin/Elements/EditScrips:51 -msgid "Current Scrips" -msgstr "現有手續" - -#: NOT FOUND IN SOURCE -msgid "Current Status" -msgstr "目前狀態" - -#: NOT FOUND IN SOURCE -msgid "Current Templates" -msgstr "現有範本" - -#: NOT FOUND IN SOURCE -msgid "Current Watchers" -msgstr "現有視察員" - -#: html/Admin/Groups/Members.html:60 html/User/Groups/Members.html:63 -msgid "Current members" -msgstr "現有成員" - -#: html/Admin/Elements/SelectRights:51 -msgid "Current rights" -msgstr "現有權限" - -#: html/Search/Elements/EditQuery:47 -msgid "Current search" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Current search criteria" -msgstr "現有查詢條件" - -#: html/Admin/Queues/People.html:62 html/Ticket/Elements/EditPeople:66 -msgid "Current watchers" -msgstr "現有視察員" - -#: NOT FOUND IN SOURCE -msgid "Custom Field #%1" -msgstr "自訂欄位 #%1" - -#: html/Admin/Elements/SystemTabs:61 html/Admin/Elements/Tabs:62 html/Admin/Global/index.html:71 html/Admin/Users/Modify.html:205 html/Admin/index.html:77 html/Ticket/Elements/ShowSummary:56 -msgid "Custom Fields" -msgstr "自訂欄位" - -#: html/Admin/CustomFields/index.html:60 -#. ($lookup) -msgid "Custom Fields for %1" -msgstr "%1 的自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Custom Fields which apply to all queues" -msgstr "適用於所有表單的自訂欄位" - -#: html/Admin/Elements/EditScrip:107 -msgid "Custom action cleanup code" -msgstr "動作後執行程式" - -#: html/Admin/Elements/EditScrip:103 -msgid "Custom action preparation code" -msgstr "動作前執行程式" - -#: html/Admin/Elements/EditScrip:99 -msgid "Custom condition" -msgstr "自訂條件" - -#: NOT FOUND IN SOURCE -msgid "Custom field %1 %2 %3" -msgstr "自訂欄位 %1 %2 %3" - -#: NOT FOUND IN SOURCE -msgid "Custom field %1 does not apply to this object" -msgstr "自訂欄位 %1 不適用於此物件" - -#: lib/RT/Tickets_Overlay.pm:2424 -#. ($CF->Name) -msgid "Custom field %1 has a value." -msgstr "自訂欄位 %1 已有值" - -#: lib/RT/Tickets_Overlay.pm:2420 -#. ($CF->Name) -msgid "Custom field %1 has no value." -msgstr "自訂欄位 %1 沒有值" - -#: lib/RT/Record.pm:1592 lib/RT/Record.pm:1754 -#. ($args{'Field'}) -msgid "Custom field %1 not found" -msgstr "找不到自訂欄位 %1" - -#: lib/RT/Report/Tickets.pm:118 lib/RT/Report/Tickets.pm:121 -#. ($cf) -#. ($obj->Name) -msgid "Custom field '%1'" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Custom field deleted" -msgstr "自訂欄位已刪除" - -#: NOT FOUND IN SOURCE -msgid "Custom field not found" -msgstr "找不到自訂欄位" - -#: lib/RT/CustomField_Overlay.pm:1157 -#. ($args{'Content'}, $self->Name) -msgid "Custom field value %1 could not be found for custom field %2" -msgstr "無法從自訂欄位 %2 中找到 %1 這個欄位值" - -#: NOT FOUND IN SOURCE -msgid "Custom field value changed from %1 to %2" -msgstr "自訂欄位值從 %1 改為 %2" - -#: lib/RT/CustomField_Overlay.pm:419 -msgid "Custom field value could not be deleted" -msgstr "無法刪除自訂欄位值" - -#: lib/RT/CustomField_Overlay.pm:1169 -msgid "Custom field value could not be found" -msgstr "找不到自訂欄位值" - -#: lib/RT/CustomField_Overlay.pm:1171 lib/RT/CustomField_Overlay.pm:417 -msgid "Custom field value deleted" -msgstr "自訂欄位值刪除成功" - -#: html/Elements/SelectGroups:51 html/Elements/SelectUsers:51 lib/RT/Transaction_Overlay.pm:638 -msgid "CustomField" -msgstr "自訂欄位" - -#: html/Prefs/MyRT.html:78 html/Prefs/Quicksearch.html:70 html/Prefs/Search.html:75 -msgid "Customize" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Data error" -msgstr "資料錯誤" - -#: NOT FOUND IN SOURCE -msgid "DatabaseBindRemote" -msgstr "容許外部連線" - -#: NOT FOUND IN SOURCE -msgid "DatabaseName" -msgstr "MySQL資料庫" - -#: NOT FOUND IN SOURCE -msgid "Date of Departure" -msgstr "出發日期" - -#: html/SelfService/Display.html:61 html/Ticket/Create.html:203 html/Ticket/Elements/ShowSummary:83 html/Ticket/Elements/Tabs:116 html/Ticket/ModifyAll.html:65 -msgid "Dates" -msgstr "日期" - -#: NOT FOUND IN SOURCE -msgid "Dec" -msgstr "十二月" - -#: lib/RT/Date.pm:452 -msgid "Dec." -msgstr "12" - -#: NOT FOUND IN SOURCE -msgid "December" -msgstr "十二月" - -#: NOT FOUND IN SOURCE -msgid "Default Approval" -msgstr "預設簽核" - -#: NOT FOUND IN SOURCE -msgid "Default Autoresponse Template" -msgstr "預設自動回應範本" - -#: etc/initialdata:222 -msgid "Default Autoresponse template" -msgstr "預設自動回應範本" - -#: html/Tools/Offline.html:61 -msgid "Default Queue" -msgstr "預設表單" - -#: html/Tools/Offline.html:70 -msgid "Default Requestor" -msgstr "預設申請人" - -#: NOT FOUND IN SOURCE -msgid "Default Value" -msgstr "預設值" - -#: etc/initialdata:296 -msgid "Default admin comment template" -msgstr "預設管理員評論範本" - -#: etc/initialdata:275 -msgid "Default admin correspondence template" -msgstr "預設管理員回覆範本" - -#: etc/initialdata:287 -msgid "Default correspondence template" -msgstr "預設回覆範本" - -#: etc/initialdata:253 -msgid "Default transaction template" -msgstr "預設更動範本" - -#: NOT FOUND IN SOURCE -msgid "Default: %1/%2 changed from %3 to %4" -msgstr "預設:%1/%2 已自 %3 改為 %4" - -#: NOT FOUND IN SOURCE -msgid "DefaultApproval" -msgstr "預設簽核" - -#: html/User/Delegation.html:46 html/User/Delegation.html:49 -msgid "Delegate rights" -msgstr "代理人權限" - -#: lib/RT/System.pm:84 -msgid "Delegate specific rights which have been granted to you." -msgstr "將擁有的權限委託他人代理" - -#: lib/RT/System.pm:84 -msgid "DelegateRights" -msgstr "設定代理人" - -#: NOT FOUND IN SOURCE -msgid "Delegated Approval" -msgstr "代理簽核" - -#: NOT FOUND IN SOURCE -msgid "Delegated Queue" -msgstr "代理表單名稱" - -#: NOT FOUND IN SOURCE -msgid "Delegated Queue:" -msgstr "代理表單:" - -#: NOT FOUND IN SOURCE -msgid "Delegated Type" -msgstr "代理表單種類" - -#: NOT FOUND IN SOURCE -msgid "Delegates" -msgstr "代理人" - -#: NOT FOUND IN SOURCE -msgid "Delegates Enabled Status" -msgstr "代理啟動狀態" - -#: NOT FOUND IN SOURCE -msgid "Delegates Info" -msgstr "代理人資訊" - -#: NOT FOUND IN SOURCE -msgid "Delegates Period" -msgstr "代理期間" - -#: NOT FOUND IN SOURCE -msgid "Delegates Permission Setting" -msgstr "代理權限設定" - -#: NOT FOUND IN SOURCE -msgid "Delegates Permission:" -msgstr "代理權限:" - -#: NOT FOUND IN SOURCE -msgid "Delegates Setting" -msgstr "代理人設定" - -#: NOT FOUND IN SOURCE -msgid "Delegates Status" -msgstr "代理狀態" - -#: html/User/Elements/Tabs:59 -msgid "Delegation" -msgstr "代理人權限" - -#: NOT FOUND IN SOURCE -msgid "Delegation Groups" -msgstr "代理人群組" - -#: NOT FOUND IN SOURCE -msgid "Delegation Rights" -msgstr "代理人權限" - -#: html/Admin/Elements/EditScrips:75 html/Search/Elements/EditFormat:103 html/Search/Elements/EditQuery:57 html/Search/Elements/EditSearches:63 html/Widgets/SelectionBox:204 -msgid "Delete" -msgstr "刪除" - -#: html/Admin/Elements/EditTemplates:79 -msgid "Delete Template" -msgstr "刪除範本" - -#: lib/RT/SavedSearch.pm:220 -#. ($msg) -msgid "Delete failed: %1" -msgstr "" - -#: html/Admin/Elements/EditScrips:74 -msgid "Delete selected scrips" -msgstr "刪除指定的手續" - -#: lib/RT/Queue_Overlay.pm:114 -msgid "Delete tickets" -msgstr "刪除申請單" - -#: html/Search/Bulk.html:159 -msgid "Delete values" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:114 -msgid "DeleteTicket" -msgstr "刪除申請單" - -#: lib/RT/SavedSearch.pm:218 -msgid "Deleted search" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object could break referential integrity" -msgstr "刪除此物件可能破壞參考完整性" - -#: lib/RT/Queue_Overlay.pm:394 -msgid "Deleting this object would break referential integrity" -msgstr "刪除此物件可能破壞參考完整性" - -#: lib/RT/User_Overlay.pm:512 -msgid "Deleting this object would violate referential integrity" -msgstr "刪除此物件會違反參考完整性" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object would violate referential integrity." -msgstr "刪除此物件會違反參考完整性" - -#: NOT FOUND IN SOURCE -msgid "Deleting this object would violate referential integrity. That's bad." -msgstr "刪除此物件會違反參考完整性" - -#: html/Approvals/Elements/Approve:73 -msgid "Deny" -msgstr "駁回" - -#: NOT FOUND IN SOURCE -msgid "Department" -msgstr "部門" - -#: NOT FOUND IN SOURCE -msgid "Department ID" -msgstr "部門代碼" - -#: NOT FOUND IN SOURCE -msgid "Department Name" -msgstr "部門名稱" - -#: NOT FOUND IN SOURCE -msgid "Department's" -msgstr "部門之" - -#: NOT FOUND IN SOURCE -msgid "Departure Details" -msgstr "差旅明細" - -#: NOT FOUND IN SOURCE -msgid "Departure From" -msgstr "差旅起始日" - -#: NOT FOUND IN SOURCE -msgid "Departure Request" -msgstr "請假單" - -#: NOT FOUND IN SOURCE -msgid "Departure Until" -msgstr "差旅截止日" - -#: html/Elements/EditLinks:140 html/Elements/EditLinks:66 html/Elements/ShowLinks:58 html/Ticket/Create.html:221 html/Ticket/Elements/BulkLinks:56 html/Ticket/Elements/ShowDependencies:53 -msgid "Depended on by" -msgstr "可接續處理的申請單" - -#: NOT FOUND IN SOURCE -msgid "Dependencies: \\n" -msgstr "附屬性:\\n" - -#: lib/RT/Transaction_Overlay.pm:718 -#. ($value) -msgid "Dependency by %1 added" -msgstr "已加入可接續處理的申請單 %1" - -#: lib/RT/Transaction_Overlay.pm:758 -#. ($value) -msgid "Dependency by %1 deleted" -msgstr "已移除可接續處理的申請單 %1" - -#: lib/RT/Transaction_Overlay.pm:715 -#. ($value) -msgid "Dependency on %1 added" -msgstr "已加入需先處理的申請單 %1" - -#: lib/RT/Transaction_Overlay.pm:755 -#. ($value) -msgid "Dependency on %1 deleted" -msgstr "已移除需先處理的申請單 %1" - -#: html/Elements/EditLinks:136 html/Elements/EditLinks:57 html/Elements/SelectLinkType:48 html/Elements/ShowLinks:48 html/Ticket/Create.html:220 html/Ticket/Elements/BulkLinks:52 html/Ticket/Elements/ShowDependencies:46 -msgid "Depends on" -msgstr "需先處理" - -#: NOT FOUND IN SOURCE -msgid "DependsOn" -msgstr "需先處理" - -#: html/Search/Elements/DisplayOptions:86 -msgid "Desc" -msgstr "" - -#: html/Elements/SelectSortOrder:56 -msgid "Descending" -msgstr "遞減" - -#: html/SelfService/Create.html:100 html/Ticket/Create.html:152 -msgid "Describe the issue below" -msgstr "在以下欄位描述主題" - -#: html/Admin/CustomFields/Modify.html:61 html/Admin/Elements/AddCustomFieldValue:57 html/Admin/Elements/EditCustomField:60 html/Admin/Elements/EditCustomFieldValues:56 html/Admin/Elements/EditScrip:55 html/Admin/Elements/ModifyTemplate:57 html/Admin/Groups/Modify.html:71 html/Admin/Queues/Modify.html:69 html/Search/Elements/EditSearches:56 html/User/Groups/Modify.html:70 -msgid "Description" -msgstr "描述" - -#: NOT FOUND IN SOURCE -msgid "Description of Responsibility" -msgstr "經辦業務說明" - -#: NOT FOUND IN SOURCE -msgid "Description:" -msgstr "描述:" - -#: NOT FOUND IN SOURCE -msgid "Details" -msgstr "細節" - -#: NOT FOUND IN SOURCE -msgid "Direct" -msgstr "直接" - -#: NOT FOUND IN SOURCE -msgid "Disability" -msgstr "殘障身分" - -#: NOT FOUND IN SOURCE -msgid "Disability Type" -msgstr "殘障類別" - -#: NOT FOUND IN SOURCE -msgid "Disabled" -msgstr "停用" - -#: html/Search/Elements/EditFormat:71 html/Ticket/Elements/Tabs:108 -msgid "Display" -msgstr "顯示內容" - -#: lib/RT/Queue_Overlay.pm:93 -msgid "Display Access Control List" -msgstr "顯示權限控制清單" - -#: html/Search/Elements/DisplayOptions:46 -msgid "Display Columns" -msgstr "顯示欄位" - -#: lib/RT/Queue_Overlay.pm:99 -msgid "Display Scrip templates for this queue" -msgstr "顯示此表單的範本" - -#: lib/RT/Queue_Overlay.pm:102 -msgid "Display Scrips for this queue" -msgstr "顯示此表單的手續" - -#: html/Ticket/Elements/ShowHistory:59 -msgid "Display mode" -msgstr "顯示模式" - -#: lib/RT/Group_Overlay.pm:168 -msgid "Display saved searches for this group" -msgstr "顯示此群組已儲存的查詢" - -#: NOT FOUND IN SOURCE -msgid "Display ticket #%1" -msgstr "顯示第%1號申請單" - -#: html/Elements/Footer:61 -msgid "Distributed under version 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> of the GNU GPL.</a>" -msgstr "依 <a href=\"http://www.gnu.org/copyleft/gpl.html\">GNU 通用公共授權</a> 第二版散布。" - -#: lib/RT/System.pm:75 -msgid "Do anything and everything" -msgstr "允許一切操作" - -#: html/Elements/Refresh:51 -msgid "Don't refresh this page." -msgstr "不更新此頁面。" - -#: NOT FOUND IN SOURCE -msgid "Don't show search results" -msgstr "不顯示查詢結果" - -#: NOT FOUND IN SOURCE -msgid "Done" -msgstr "完成" - -#: NOT FOUND IN SOURCE -msgid "Down" -msgstr "下一頁" - -#: html/Ticket/Elements/ShowTransactionAttachments:82 -msgid "Download" -msgstr "下載" - -#: html/Admin/Groups/index.html:61 html/Admin/Users/index.html:64 -msgid "Download as a tab-delimited file" -msgstr "下載以 Tab 分隔的檔案" - -#: NOT FOUND IN SOURCE -msgid "Dr." -msgstr "博士" - -#: html/Elements/SelectDateType:53 html/Ticket/Create.html:209 html/Ticket/Elements/EditDates:66 html/Ticket/Elements/Reminders:133 html/Ticket/Elements/ShowDates:64 lib/RT/Ticket_Overlay.pm:1173 -msgid "Due" -msgstr "到期日" - -#: NOT FOUND IN SOURCE -msgid "Due Date" -msgstr "截止日" - -#: NOT FOUND IN SOURCE -msgid "Due date '%1' could not be parsed" -msgstr "無法解讀日期 '%1'" - -#: NOT FOUND IN SOURCE -msgid "ERROR: Couldn't load ticket '%1': %2.\\n" -msgstr "無法載入申請單 '%1':%2.\\n" - -#: html/Elements/Quicksearch:48 html/Elements/ShowSearch:49 html/index.html:107 -msgid "Edit" -msgstr "編輯" - -#: NOT FOUND IN SOURCE -msgid "Edit Conditions" -msgstr "編輯前置條件" - -#: html/Search/Bulk.html:149 -msgid "Edit Custom Fields" -msgstr "" - -#: html/Admin/Elements/ObjectCustomFields:92 html/Admin/Queues/CustomFields.html:64 html/Admin/Users/CustomFields.html:64 -#. ($Object->Name) -msgid "Edit Custom Fields for %1" -msgstr "編輯 %1 的自訂欄位" - -#: html/Admin/Global/CustomFields/Groups.html:54 -msgid "Edit Custom Fields for all groups" -msgstr "" - -#: html/Admin/Global/CustomFields/Users.html:54 -msgid "Edit Custom Fields for all users" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Edit Custom Fields for queue %1" -msgstr "編輯表單 %1 的自訂欄位" - -#: html/Admin/Global/CustomFields/Queue-Tickets.html:54 html/Admin/Global/CustomFields/Queue-Transactions.html:54 -msgid "Edit Custom Fields for tickets in all queues" -msgstr "" - -#: html/Search/Bulk.html:188 html/Ticket/ModifyLinks.html:57 -msgid "Edit Links" -msgstr "編輯申請單關係" - -#: html/Search/Edit.html:68 -msgid "Edit Query" -msgstr "編輯查詢" - -#: html/Ticket/Elements/Tabs:214 -msgid "Edit Search" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Edit Subgroups" -msgstr "新增/維護子群組" - -#: html/Admin/Queues/Templates.html:63 -#. ($QueueObj->Name) -msgid "Edit Templates for queue %1" -msgstr "編輯表單 %1 的範本" - -#: NOT FOUND IN SOURCE -msgid "Edit Workflows for queue %1" -msgstr "編輯表單 %1 的流程" - -#: NOT FOUND IN SOURCE -msgid "Edit keywords" -msgstr "編輯關鍵字" - -#: lib/RT/Group_Overlay.pm:167 -msgid "Edit saved searches for this group" -msgstr "編輯此群組已儲存的查詢" - -#: NOT FOUND IN SOURCE -msgid "Edit scrips" -msgstr "編輯手續" - -#: html/Admin/Elements/GlobalCustomFieldTabs:60 html/Admin/Global/index.html:67 -msgid "Edit system templates" -msgstr "編輯全域範本" - -#: NOT FOUND IN SOURCE -msgid "Edit system workflows" -msgstr "編輯全域流程" - -#: NOT FOUND IN SOURCE -msgid "Edit templates for %1" -msgstr "編輯 %1 的範本" - -#: NOT FOUND IN SOURCE -msgid "Edit workflows for %1" -msgstr "編輯 %1 的流程" - -#: lib/RT/Group_Overlay.pm:167 -msgid "EditSavedSearches" -msgstr "編輯已儲存的查詢" - -#: html/Admin/Queues/Modify.html:140 -#. ($QueueObj->Name) -msgid "Editing Configuration for queue %1" -msgstr "編輯表單 %1 的設定" - -#: NOT FOUND IN SOURCE -msgid "Editing Configuration for user %1" -msgstr "編輯使用者 %1 的設定" - -#: html/Admin/CustomFields/Modify.html:167 html/Admin/Elements/EditCustomField:120 -#. ($CustomFieldObj->Name()) -msgid "Editing CustomField %1" -msgstr "編輯自訂欄位 %1" - -#: html/Admin/Groups/Members.html:53 -#. ($Group->Name) -msgid "Editing membership for group %1" -msgstr "編輯群組 %1 的成員資訊" - -#: html/User/Groups/Members.html:150 -#. ($Group->Name) -msgid "Editing membership for personal group %1" -msgstr "編輯代理人群組 %1 的成員資訊" - -#: NOT FOUND IN SOURCE -msgid "Editing template %1" -msgstr "編輯範本 %1" - -#: NOT FOUND IN SOURCE -msgid "Editing workflow %1" -msgstr "編輯流程 %1" - -#: NOT FOUND IN SOURCE -msgid "Education" -msgstr "最高學歷" - -#: NOT FOUND IN SOURCE -msgid "EffectiveId" -msgstr "有效編號" - -#: lib/RT/Record.pm:1295 lib/RT/Record.pm:1372 lib/RT/Ticket_Overlay.pm:2518 lib/RT/Ticket_Overlay.pm:2608 -msgid "Either base or target must be specified" -msgstr "需要指定起始申請單或目的申請單" - -#: html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65 -msgid "Email" -msgstr "電子郵件信箱" - -#: NOT FOUND IN SOURCE -msgid "Email Address" -msgstr "電子郵件信箱" - -#: lib/RT/User_Overlay.pm:235 -msgid "Email address in use" -msgstr "此電子郵件信箱已被使用" - -#: NOT FOUND IN SOURCE -msgid "EmailAddress" -msgstr "電子郵件信箱位址" - -#: NOT FOUND IN SOURCE -msgid "EmailEncoding" -msgstr "電子郵件文字編碼方式" - -#: NOT FOUND IN SOURCE -msgid "Embark Date" -msgstr "外籍員工入境日" - -#: NOT FOUND IN SOURCE -msgid "Embarked Date" -msgstr "抵達日期" - -#: NOT FOUND IN SOURCE -msgid "Embarked Location" -msgstr "抵達地點" - -#: NOT FOUND IN SOURCE -msgid "Enable Delegates" -msgstr "代理啟動" - -#: html/Admin/CustomFields/Modify.html:98 html/Admin/Elements/EditCustomField:72 -msgid "Enabled (Unchecking this box disables this custom field)" -msgstr "啟用(取消勾選將停用此自訂欄位)" - -#: html/Admin/Groups/Modify.html:84 html/User/Groups/Modify.html:74 -msgid "Enabled (Unchecking this box disables this group)" -msgstr "啟用(取消勾選將停用此群組)" - -#: html/Admin/Queues/Modify.html:105 -msgid "Enabled (Unchecking this box disables this queue)" -msgstr "啟用(取消勾選將停用此表單)" - -#: NOT FOUND IN SOURCE -msgid "Enabled Custom Fields" -msgstr "已啟用的自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Enabled Date" -msgstr "啟用日期" - -#: NOT FOUND IN SOURCE -msgid "Enabled Date:" -msgstr "啟動日期:" - -#: html/Admin/Queues/index.html:78 -msgid "Enabled Queues" -msgstr "已啟用的表單" - -#: NOT FOUND IN SOURCE -msgid "Enabled Status" -msgstr "啟用狀態" - -#: html/Admin/Elements/EditCustomField:136 html/Admin/Groups/Modify.html:150 html/Admin/Users/Modify.html:350 html/User/Groups/Modify.html:138 -#. (loc_fuzzy($msg)) -msgid "Enabled status %1" -msgstr "啟用狀態 %1" - -#: html/Admin/CustomFields/Modify.html:185 html/Admin/Queues/Modify.html:162 -#. (loc_fuzzy($msg)) -msgid "Enabled status: %1" -msgstr "啟用狀態: %1" - -#: NOT FOUND IN SOURCE -msgid "End of Trial" -msgstr "試用期滿日" - -#: NOT FOUND IN SOURCE -msgid "English Name" -msgstr "英文姓名" - -#: lib/RT/CustomField_Overlay.pm:64 -msgid "Enter multiple values" -msgstr "鍵入多重項目" - -#: html/Elements/EditLinks:126 -msgid "Enter objects or URIs to link objects to. Separate multiple entries with spaces." -msgstr "鍵入欲將物件連結至的物件或 URI。項目之間請以空白隔開。" - -#: NOT FOUND IN SOURCE -msgid "Enter one or more conditions below to search for users" -msgstr "鍵入下列單一或複式條件,查詢用戶資料" - -#: lib/RT/CustomField_Overlay.pm:65 -msgid "Enter one value" -msgstr "鍵入單一項目" - -#: html/Elements/EditLinks:123 -msgid "Enter queues or URIs to link queues to. Separate multiple entries with spaces." -msgstr "鍵入欲將表單連結至的物件或 URI。項目之間請以空白隔開。" - -#: html/Elements/EditLinks:119 html/Search/Bulk.html:189 -msgid "Enter tickets or URIs to link tickets to. Separate multiple entries with spaces." -msgstr "鍵入申請單可鏈結到的申請單編號或網址。項目之間請以空白隔開。" - -#: lib/RT/CustomField_Overlay.pm:66 -msgid "Enter up to %1 values" -msgstr "鍵入最多 %1 個項目" - -#: NOT FOUND IN SOURCE -msgid "EntryBoolean" -msgstr "是非填表" - -#: NOT FOUND IN SOURCE -msgid "EntryDate" -msgstr "日期填表" - -#: NOT FOUND IN SOURCE -msgid "EntryExternal" -msgstr "系統填表" - -#: NOT FOUND IN SOURCE -msgid "EntryFreeform" -msgstr "輸入填表" - -#: NOT FOUND IN SOURCE -msgid "EntryMultiple" -msgstr "多選填表" - -#: NOT FOUND IN SOURCE -msgid "EntryNumber" -msgstr "數值填表" - -#: NOT FOUND IN SOURCE -msgid "EntrySelect" -msgstr "單選填表" - -#: NOT FOUND IN SOURCE -msgid "EntryTime" -msgstr "時間填表" - -#: html/Elements/Login:76 html/SelfService/Error.html:46 html/SelfService/Error.html:47 -msgid "Error" -msgstr "錯誤" - -#: NOT FOUND IN SOURCE -msgid "Error adding watcher" -msgstr "新增視察員失敗" - -#: lib/RT/Queue_Overlay.pm:672 -msgid "Error in parameters to Queue->AddWatcher" -msgstr "表單->新增視察員的參數有誤" - -#: lib/RT/Queue_Overlay.pm:833 -msgid "Error in parameters to Queue->DeleteWatcher" -msgstr "表單->刪除視察員的參數有誤" - -#: lib/RT/Ticket_Overlay.pm:1372 -msgid "Error in parameters to Ticket->AddWatcher" -msgstr "申請單->新增視察員的參數有誤" - -#: lib/RT/Ticket_Overlay.pm:1538 -msgid "Error in parameters to Ticket->DeleteWatcher" -msgstr "申請單->刪除視察員的參數有誤" - -#: bin/rt-crontool:285 -msgid "Escalate tickets" -msgstr "調整申請單優先等級" - -#: NOT FOUND IN SOURCE -msgid "Estimate" -msgstr "預計" - -#: html/Ticket/Elements/ShowBasics:57 -msgid "Estimated" -msgstr "預計" - -#: etc/initialdata:20 -msgid "Everyone" -msgstr "所有人" - -#: bin/rt-crontool:271 -msgid "Example:" -msgstr "範例:" - -#: NOT FOUND IN SOURCE -msgid "Existing user renamed from %1 to %2" -msgstr "現有使用者 %1 已改名為 %2" - -#: NOT FOUND IN SOURCE -msgid "Export" -msgstr "匯出" - -#: NOT FOUND IN SOURCE -msgid "ExternalAuthId" -msgstr "外部認證帳號" - -#: NOT FOUND IN SOURCE -msgid "ExternalContactInfoId" -msgstr "外部聯絡方式帳號" - -#: NOT FOUND IN SOURCE -msgid "ExternalDatabaseDSN" -msgstr "外部資料庫連結字串" - -#: NOT FOUND IN SOURCE -msgid "ExternalDatabasePass" -msgstr "外部資料庫密碼" - -#: NOT FOUND IN SOURCE -msgid "ExternalDatabaseUser" -msgstr "外部資料庫用戶" - -#: NOT FOUND IN SOURCE -msgid "ExternalURL" -msgstr "外部介面網址" - -#: html/Admin/Users/Modify.html:99 -msgid "Extra info" -msgstr "備註" - -#: lib/RT/SavedSearch.pm:177 -msgid "Failed to create search attribute" -msgstr "查詢屬性建立失敗" - -#: lib/RT/User_Overlay.pm:376 -msgid "Failed to find 'Privileged' users pseudogroup." -msgstr "找不到「內部成員」虛擬群組的使用者。" - -#: lib/RT/User_Overlay.pm:383 -msgid "Failed to find 'Unprivileged' users pseudogroup" -msgstr "找不到「非內部成員」虛擬群組的使用者。" - -#: bin/rt-crontool:206 -#. ($modname, $@) -msgid "Failed to load module %1. (%2)" -msgstr "無法載入模組 %1. (%2)" - -#: lib/RT/SavedSearch.pm:152 -#. ($privacy) -msgid "Failed to load object for %1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Feb" -msgstr "二月" - -#: lib/RT/Date.pm:442 -msgid "Feb." -msgstr "02" - -#: NOT FOUND IN SOURCE -msgid "February" -msgstr "二月" - -#: NOT FOUND IN SOURCE -msgid "Female" -msgstr "女" - -#: NOT FOUND IN SOURCE -msgid "Field Content:" -msgstr "欄位內容:" - -#: NOT FOUND IN SOURCE -msgid "Field Description" -msgstr "欄位描述" - -#: NOT FOUND IN SOURCE -msgid "Field Name" -msgstr "欄位名稱" - -#: NOT FOUND IN SOURCE -msgid "Field Type" -msgstr "欄位類別" - -#: html/Elements/SelectAttachmentField:50 -msgid "Filename" -msgstr "檔名" - -#: lib/RT/CustomField_Overlay.pm:69 -msgid "Fill in multiple text areas" -msgstr "填入多個文字框" - -#: lib/RT/CustomField_Overlay.pm:74 -msgid "Fill in multiple wikitext areas" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:70 -msgid "Fill in one text area" -msgstr "填入一個文字框" - -#: lib/RT/CustomField_Overlay.pm:75 -msgid "Fill in one wikitext area" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:107 html/Admin/CustomFields/Modify.html:118 -msgid "Fill in this field with a URL." -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:71 -msgid "Fill in up to %1 text areas" -msgstr "填入最多 %1 個文字框" - -#: lib/RT/CustomField_Overlay.pm:76 -msgid "Fill in up to %1 wikitext areas" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Filter" -msgstr "篩選" - -#: NOT FOUND IN SOURCE -msgid "Filter people" -msgstr "對象篩選" - -#: NOT FOUND IN SOURCE -msgid "Filtered list:" -msgstr "篩選列表:" - -#: NOT FOUND IN SOURCE -msgid "Fin" -msgstr "最終" - -#: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:182 html/Ticket/Elements/EditBasics:97 lib/RT/Tickets_Overlay.pm:1841 -msgid "Final Priority" -msgstr "最終順位" - -#: lib/RT/Ticket_Overlay.pm:1164 -msgid "FinalPriority" -msgstr "最終順位" - -#: NOT FOUND IN SOURCE -msgid "Financial Department:" -msgstr "財務部:" - -#: NOT FOUND IN SOURCE -msgid "Find group whose" -msgstr "尋找群組的" - -#: html/Admin/Groups/index.html:72 html/Admin/Queues/People.html:82 html/Ticket/Elements/EditPeople:55 -msgid "Find groups whose" -msgstr "尋找群組的" - -#: NOT FOUND IN SOURCE -msgid "Find new/open tickets" -msgstr "尋找/開啟申請單" - -#: html/Admin/Queues/People.html:78 html/Admin/Users/index.html:70 html/Ticket/Elements/EditPeople:51 -msgid "Find people whose" -msgstr "尋找人員的" - -#: NOT FOUND IN SOURCE -msgid "Find queues whose" -msgstr "尋找表單的" - -#: html/Search/Results.html:147 -msgid "Find tickets" -msgstr "尋找申請單" - -#: NOT FOUND IN SOURCE -msgid "Finish Approval" -msgstr "簽核完畢" - -#: html/Ticket/Elements/Tabs:81 -msgid "First" -msgstr "第一項" - -#: NOT FOUND IN SOURCE -msgid "First page" -msgstr "第一頁" - -#: NOT FOUND IN SOURCE -msgid "First-" -msgstr "一" - -#: NOT FOUND IN SOURCE -msgid "First-level Admins" -msgstr "一階主管" - -#: NOT FOUND IN SOURCE -msgid "First-level Users" -msgstr "一階主管員工" - -#: NOT FOUND IN SOURCE -msgid "Fixed shift" -msgstr "固定班" - -#: docs/design_docs/string-extraction-guide.txt:33 lib/RT/StyleGuide.pod:766 -msgid "Foo Bar Baz" -msgstr "甲 乙 丙" - -#: docs/design_docs/string-extraction-guide.txt:24 lib/RT/StyleGuide.pod:757 -msgid "Foo!" -msgstr "甲!" - -#: html/Search/Bulk.html:83 -msgid "Force change" -msgstr "強制更換" - -#: NOT FOUND IN SOURCE -msgid "Form Processing" -msgstr "電子表單作業區" - -#: html/Search/Elements/EditFormat:52 -msgid "Format" -msgstr "" - -#: html/Search/Results.html:145 -#. ($ticketcount) -msgid "Found %quant(%1,ticket)" -msgstr "找到 %1 張申請單" - -#: lib/RT/Record.pm:956 -msgid "Found Object" -msgstr "已找到物件" - -#: NOT FOUND IN SOURCE -msgid "Fourth-" -msgstr "四" - -#: NOT FOUND IN SOURCE -msgid "Freeform" -msgstr "輸入" - -#: NOT FOUND IN SOURCE -msgid "FreeformContactInfo" -msgstr "聯絡方式" - -#: NOT FOUND IN SOURCE -msgid "FreeformDate" -msgstr "日期輸入" - -#: NOT FOUND IN SOURCE -msgid "FreeformExternal" -msgstr "系統欄位" - -#: NOT FOUND IN SOURCE -msgid "FreeformMultiple" -msgstr "多重輸入" - -#: NOT FOUND IN SOURCE -msgid "FreeformNumber" -msgstr "數值輸入" - -#: NOT FOUND IN SOURCE -msgid "FreeformPassword" -msgstr "密碼輸入" - -#: NOT FOUND IN SOURCE -msgid "FreeformSingle" -msgstr "單一輸入" - -#: NOT FOUND IN SOURCE -msgid "FreeformTime" -msgstr "時間輸入" - -#: NOT FOUND IN SOURCE -msgid "Fri" -msgstr "星期五" - -#: lib/RT/Date.pm:421 -msgid "Fri." -msgstr "星期五" - -#: html/Ticket/Elements/ShowHistory:66 html/Ticket/Elements/ShowHistory:72 -msgid "Full headers" -msgstr "完整標頭檔" - -#: NOT FOUND IN SOURCE -msgid "Gecos" -msgstr "登入帳號" - -#: NOT FOUND IN SOURCE -msgid "Gender" -msgstr "性別" - -#: html/Tools/Offline.html:85 -msgid "Get template from file" -msgstr "取出檔案裡的範本" - -#: NOT FOUND IN SOURCE -msgid "Getting the current user from a pgp sig\\n" -msgstr "取得目前使用者的 pgp 簽章\\n" - -#: lib/RT/Transaction_Overlay.pm:684 -#. ($New->Name) -msgid "Given to %1" -msgstr "交予 %1" - -#: html/Admin/Elements/Tabs:65 html/Admin/index.html:82 -msgid "Global" -msgstr "全域設定" - -#: NOT FOUND IN SOURCE -msgid "Global Approval" -msgstr "全域簽核" - -#: html/Admin/Elements/EditCustomFields:55 -msgid "Global Custom Fields" -msgstr "全域自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Global Keyword Selections" -msgstr "全域關鍵字選取" - -#: NOT FOUND IN SOURCE -msgid "Global Rights:" -msgstr "擁有全域權限列表:" - -#: NOT FOUND IN SOURCE -msgid "Global Scrips" -msgstr "全域手續" - -#: NOT FOUND IN SOURCE -msgid "Global Setup" -msgstr "全域設定" - -#: html/Admin/Global/CustomFields/index.html:59 -msgid "Global custom field configuration" -msgstr "" - -#: html/Admin/Global/MyRT.html:48 -#. ($pane) -msgid "Global portlet %1 saved." -msgstr "" - -#: html/Admin/Elements/SelectTemplate:59 -#. (loc($Template->Name)) -msgid "Global template: %1" -msgstr "全域範本:%1" - -#: NOT FOUND IN SOURCE -msgid "GlobalApproval" -msgstr "全域簽核" - -#: html/Admin/CustomFields/index.html:80 html/Search/Results.html:90 html/Tools/Offline.html:89 -msgid "Go" -msgstr "執行" - -#: html/Admin/Groups/index.html:67 html/Admin/Groups/index.html:73 html/Admin/Queues/People.html:80 html/Admin/Queues/People.html:84 html/Admin/Queues/index.html:66 html/Admin/Users/index.html:73 html/Elements/RefreshHomepage:48 html/Search/Results.html:74 html/Ticket/Elements/EditPeople:53 html/Ticket/Elements/EditPeople:57 -msgid "Go!" -msgstr "執行" - -#: NOT FOUND IN SOURCE -msgid "Good pgp sig from %1\\n" -msgstr "%1 的 pgp 簽章是正確的\\n" - -#: NOT FOUND IN SOURCE -msgid "Goto page" -msgstr "到頁面" - -#: html/Elements/GotoTicket:46 html/SelfService/Elements/GotoTicket:46 -msgid "Goto ticket" -msgstr "跳到申請單" - -#: NOT FOUND IN SOURCE -msgid "Grand" -msgstr "上" - -#: html/Ticket/Elements/AddWatchers:67 html/Ticket/Elements/ShowGroupMembers:55 html/User/Elements/DelegateRights:99 -msgid "Group" -msgstr "群組" - -#: NOT FOUND IN SOURCE -msgid "Group %1 %2: %3" -msgstr "群組 %1 %2:%3" - -#: NOT FOUND IN SOURCE -msgid "Group Admin" -msgstr "群組管理員" - -#: NOT FOUND IN SOURCE -msgid "Group Description" -msgstr "群組描述" - -#: NOT FOUND IN SOURCE -msgid "Group Management" -msgstr "群組管理" - -#: NOT FOUND IN SOURCE -msgid "Group Members" -msgstr "群組成員" - -#: NOT FOUND IN SOURCE -msgid "Group Name" -msgstr "群組名稱" - -#: NOT FOUND IN SOURCE -msgid "Group Name:" -msgstr "群組名稱:" - -#: html/Admin/Elements/CustomFieldTabs:68 html/Admin/Elements/GroupTabs:66 html/Admin/Elements/QueueTabs:82 html/Admin/Elements/SystemTabs:65 html/Admin/Global/index.html:76 -msgid "Group Rights" -msgstr "群組權限" - -#: NOT FOUND IN SOURCE -msgid "Group Rights:" -msgstr "擁有群組權限列表:" - -#: NOT FOUND IN SOURCE -msgid "Group Setup" -msgstr "群組設定" - -#: NOT FOUND IN SOURCE -msgid "Group Status" -msgstr "群組狀態" - -#: lib/RT/Group_Overlay.pm:983 -msgid "Group already has member" -msgstr "群組內已有此成員" - -#: NOT FOUND IN SOURCE -msgid "Group could not be created." -msgstr "無法新增群組" - -#: html/Admin/Groups/Modify.html:109 -#. ($create_msg) -msgid "Group could not be created: %1" -msgstr "無法新增群組:%1" - -#: lib/RT/Group_Overlay.pm:521 -msgid "Group created" -msgstr "群組新增完畢" - -#: NOT FOUND IN SOURCE -msgid "Group created: %1" -msgstr "群組 %1 新增完畢" - -#: lib/RT/Group_Overlay.pm:1155 -msgid "Group has no such member" -msgstr "群組沒有這個成員" - -#: lib/RT/Group_Overlay.pm:963 lib/RT/Queue_Overlay.pm:748 lib/RT/Queue_Overlay.pm:808 lib/RT/Ticket_Overlay.pm:1430 lib/RT/Ticket_Overlay.pm:1510 -msgid "Group not found" -msgstr "找不到群組" - -#: NOT FOUND IN SOURCE -msgid "Group not found.\\n" -msgstr "找不到群組。\\n" - -#: NOT FOUND IN SOURCE -msgid "Group not specified.\\n" -msgstr "未指定群組。\\n" - -#: NOT FOUND IN SOURCE -msgid "Group redescribed from %1 to %2" -msgstr "群組描述 %1 已改為 %2" - -#: NOT FOUND IN SOURCE -msgid "Group renamed from %1 to %2" -msgstr "群組 %1 已改名為 %2" - -#: NOT FOUND IN SOURCE -msgid "Group with Queue Rights" -msgstr "擁有表單權限群組" - -#: NOT FOUND IN SOURCE -msgid "Group's" -msgstr "群組之" - -#: NOT FOUND IN SOURCE -msgid "Group:" -msgstr "群組:" - -#: html/Admin/Elements/GlobalCustomFieldTabs:59 html/Admin/Elements/SelectNewGroupMembers:57 html/Admin/Elements/Tabs:56 html/Admin/Global/CustomFields/index.html:69 html/Admin/Groups/Members.html:86 html/Admin/Queues/People.html:104 html/Admin/Users/Memberships.html:53 html/Admin/index.html:67 html/User/Groups/Members.html:88 lib/RT/CustomField_Overlay.pm:1210 -msgid "Groups" -msgstr "群組" - -#: lib/RT/Group_Overlay.pm:989 -msgid "Groups can't be members of their members" -msgstr "不能將群組設為群組內成員" - -#: html/Admin/Groups/index.html:86 -msgid "Groups matching search criteria" -msgstr "符合查詢條件的群組" - -#: html/Ticket/Elements/ShowRequestor:77 -msgid "Groups this user belongs to" -msgstr "使用者所屬的群組" - -#: NOT FOUND IN SOURCE -msgid "Groups with Global Rights" -msgstr "擁有全域權限群組" - -#: NOT FOUND IN SOURCE -msgid "HRMSDefined" -msgstr "組織架構" - -#: NOT FOUND IN SOURCE -msgid "HTML Attributes" -msgstr "HTML 屬性" - -#: NOT FOUND IN SOURCE -msgid "Health Insurance" -msgstr "健保補助身份" - -#: lib/RT/Interface/CLI.pm:94 lib/RT/Interface/CLI.pm:94 -msgid "Hello!" -msgstr "嗨!" - -#: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:773 -#. ($name) -msgid "Hello, %1" -msgstr "嗨,%1" - -#: NOT FOUND IN SOURCE -msgid "Help" -msgstr "說明" - -#: NOT FOUND IN SOURCE -msgid "Help Desks" -msgstr "各項業務窗口" - -#: NOT FOUND IN SOURCE -msgid "Hidden" -msgstr "隱藏" - -#: html/Admin/Elements/GroupTabs:70 html/Admin/Elements/UserTabs:64 html/Ticket/Elements/ShowHistory:53 html/Ticket/Elements/Tabs:111 -msgid "History" -msgstr "紀錄" - -#: html/Admin/Groups/History.html:62 -#. ($GroupObj->Name) -msgid "History of the group %1" -msgstr "群組 %1 的紀錄" - -#: html/Admin/Users/History.html:62 -#. ($UserObj->Name) -msgid "History of the user %1" -msgstr "使用者 %1 的紀錄" - -#: NOT FOUND IN SOURCE -msgid "HomePhone" -msgstr "住處電話" - -#: html/Elements/Tabs:65 -msgid "Homepage" -msgstr "主頁" - -#: NOT FOUND IN SOURCE -msgid "Hotel Expense" -msgstr "住宿費" - -#: html/Elements/SelectTimeUnits:48 -msgid "Hours" -msgstr "" - -#: lib/RT/Base.pm:119 -#. (6) -msgid "I have %quant(%1,concrete mixer)." -msgstr "我有 %quant(%1,份固體攪拌器)。" - -#: html/Search/Build.html:460 lib/RT/Report/Tickets.pm:415 -msgid "I'm lost" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "ID Number" -msgstr "身分證號" - -#: NOT FOUND IN SOURCE -msgid "ID Type" -msgstr "身分類別" - -#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1766 -msgid "Id" -msgstr "編號" - -#: html/Admin/Users/Modify.html:65 html/User/Prefs.html:60 -msgid "Identity" -msgstr "身份" - -#: etc/initialdata:429 -msgid "If an approval is rejected, reject the original and delete pending approvals" -msgstr "若簽核單遭到駁回,則連帶駁回原申請單,並刪除其他相關的待簽核事項" - -#: html/Tools/Offline.html:74 -msgid "If no Requestor is specified, create tickets with this requestor." -msgstr "若沒有指定申請者,則以此使用者作為申請者" - -#: html/Tools/Offline.html:65 -msgid "If no queue is specified, create tickets in this queue." -msgstr "申請單若沒有指定表單,則將它新增在此表單內" - -#: bin/rt-crontool:267 -msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." -msgstr "如果此工具程式為 setgid,惡意的本地端用戶即能由此取得 RT 的管理員權限。" - -#: html/Admin/Queues/People.html:126 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:128 html/Ticket/ModifyPeople.html:60 -msgid "If you've updated anything above, be sure to" -msgstr "若您已更新以上資料,請記得按一下" - -#: lib/RT/Record.pm:947 -msgid "Illegal value for %1" -msgstr "%1 的值錯誤" - -#: NOT FOUND IN SOURCE -msgid "Image" -msgstr "圖片" - -#: lib/RT/Record.pm:950 -msgid "Immutable field" -msgstr "此欄位值不可更動" - -#: NOT FOUND IN SOURCE -msgid "Import" -msgstr "匯入" - -#: NOT FOUND IN SOURCE -msgid "Include disabled custom fields in listing." -msgstr "列出停用的自訂欄位" - -#: html/Admin/Groups/index.html:65 -msgid "Include disabled groups in listing." -msgstr "列出停用的群組" - -#: html/Admin/Queues/index.html:65 -msgid "Include disabled queues in listing." -msgstr "列出停用的表單" - -#: html/Admin/Users/index.html:71 -msgid "Include disabled users in search." -msgstr "列出停用的使用者" - -#: html/Admin/CustomFields/Modify.html:113 -msgid "Include page" -msgstr "" - -#: html/Search/Build.html:486 lib/RT/Report/Tickets.pm:441 -msgid "Incomplete Query" -msgstr "" - -#: html/Search/Build.html:483 lib/RT/Report/Tickets.pm:438 -msgid "Incomplete query" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Indirect Employee" -msgstr "直接/間接員工" - -#: html/Search/Elements/PickBasics:148 lib/RT/Tickets_Overlay.pm:1816 -msgid "Initial Priority" -msgstr "初始優先順位" - -#: lib/RT/Ticket_Overlay.pm:1163 lib/RT/Ticket_Overlay.pm:1165 -msgid "InitialPriority" -msgstr "初始優先順位" - -#: lib/RT/ScripAction_Overlay.pm:133 -msgid "Input error" -msgstr "輸入錯誤" - -#: html/Elements/ValidateCustomFields:68 lib/RT/CustomField_Overlay.pm:1021 lib/RT/CustomField_Overlay.pm:1162 -#. ($self->FriendlyPattern) -#. ($CF->FriendlyPattern) -msgid "Input must match %1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Interest noted" -msgstr "登記成功" - -#: lib/RT/Ticket_Overlay.pm:3503 -msgid "Internal Error" -msgstr "內部錯誤" - -#: lib/RT/Record.pm:308 -#. ($id->{error_message}) -msgid "Internal Error: %1" -msgstr "內部錯誤:%1" - -#: lib/RT/Group_Overlay.pm:668 -msgid "Invalid Group Type" -msgstr "錯誤的群組類別" - -#: lib/RT/Principal_Overlay.pm:161 -msgid "Invalid Right" -msgstr "錯誤的權限" - -#: NOT FOUND IN SOURCE -msgid "Invalid Type" -msgstr "錯誤的類型" - -#: lib/RT/Record.pm:952 -msgid "Invalid data" -msgstr "錯誤的資料" - -#: NOT FOUND IN SOURCE -msgid "Invalid owner. Defaulting to 'nobody'." -msgstr "錯誤的承辦人。改為預設承辦人「nobody」。" - -#: lib/RT/CustomField_Overlay.pm:207 lib/RT/CustomField_Overlay.pm:678 -#. ($msg) -msgid "Invalid pattern: %1" -msgstr "" - -#: lib/RT/Scrip_Overlay.pm:157 lib/RT/Template_Overlay.pm:244 -msgid "Invalid queue" -msgstr "錯誤的表單" - -#: lib/RT/ACE_Overlay.pm:264 lib/RT/ACE_Overlay.pm:273 lib/RT/ACE_Overlay.pm:279 lib/RT/ACE_Overlay.pm:290 -msgid "Invalid right" -msgstr "錯誤的權限" - -#: lib/RT/Record.pm:283 -#. ($key) -msgid "Invalid value for %1" -msgstr "%1 的值錯誤" - -#: lib/RT/Record.pm:1610 -msgid "Invalid value for custom field" -msgstr "錯誤的自訂欄位值" - -#: lib/RT/Ticket_Overlay.pm:424 -msgid "Invalid value for status" -msgstr "錯誤的狀態值" - -#: NOT FOUND IN SOURCE -msgid "IssueStatement" -msgstr "送出陳述" - -#: bin/rt-crontool:268 -msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." -msgstr "請絕對不要讓未具權限的使用者執行此工具程式。" - -#: bin/rt-crontool:269 -msgid "It is suggested that you create a non-privileged unix user with the correct group membership and RT access to run this tool." -msgstr "建議您新增一個隸屬於正確群組的低權限系統使用者,並以該身份執行此工具程式。" - -#: bin/rt-crontool:231 -msgid "It takes several arguments:" -msgstr "它接受下列參數:" - -#: html/Search/Elements/EditFormat:85 -msgid "Italic" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Item Name" -msgstr "品名" - -#: NOT FOUND IN SOURCE -msgid "Items" -msgstr "筆" - -#: NOT FOUND IN SOURCE -msgid "Items pending my approval" -msgstr "待簽核項目" - -#: NOT FOUND IN SOURCE -msgid "Jan" -msgstr "一月" - -#: lib/RT/Date.pm:441 -msgid "Jan." -msgstr "01" - -#: NOT FOUND IN SOURCE -msgid "January" -msgstr "一月" - -#: NOT FOUND IN SOURCE -msgid "Job" -msgstr "職稱" - -#: lib/RT/Group_Overlay.pm:166 -msgid "Join or leave this group" -msgstr "加入或離開此群組" - -#: NOT FOUND IN SOURCE -msgid "Jul" -msgstr "七月" - -#: lib/RT/Date.pm:447 -msgid "Jul." -msgstr "07" - -#: NOT FOUND IN SOURCE -msgid "July" -msgstr "七月" - -#: html/Ticket/Elements/Tabs:125 -msgid "Jumbo" -msgstr "全部資訊" - -#: NOT FOUND IN SOURCE -msgid "Jun" -msgstr "六月" - -#: lib/RT/Date.pm:446 -msgid "Jun." -msgstr "06" - -#: NOT FOUND IN SOURCE -msgid "June" -msgstr "六月" - -#: NOT FOUND IN SOURCE -msgid "Keyword" -msgstr "關鍵字" - -#: NOT FOUND IN SOURCE -msgid "LabelAttachments" -msgstr "附件標籤" - -#: NOT FOUND IN SOURCE -msgid "LabelContent" -msgstr "內容標籤" - -#: NOT FOUND IN SOURCE -msgid "LabelSubject" -msgstr "主題標籤" - -#: NOT FOUND IN SOURCE -msgid "LabelURL" -msgstr "鏈結標籤" - -#: NOT FOUND IN SOURCE -msgid "Lang" -msgstr "使用語言" - -#: html/Admin/Users/Modify.html:94 html/User/Prefs.html:76 -msgid "Language" -msgstr "語言" - -#: html/Search/Elements/EditFormat:79 -msgid "Large" -msgstr "" - -#: html/Ticket/Elements/Tabs:96 -msgid "Last" -msgstr "上次更新" - -#: html/Ticket/Elements/EditDates:59 html/Ticket/Elements/ShowDates:60 -msgid "Last Contact" -msgstr "上次聯絡" - -#: html/Elements/SelectDateType:50 -msgid "Last Contacted" -msgstr "上次聯絡日期" - -#: NOT FOUND IN SOURCE -msgid "Last Notified" -msgstr "上次通知" - -#: html/Elements/SelectDateType:51 -msgid "Last Updated" -msgstr "上次更新" - -#: NOT FOUND IN SOURCE -msgid "LastUpdated" -msgstr "上次更新" - -#: html/Search/Elements/PickBasics:103 -msgid "LastUpdatedBy" -msgstr "上次更新者" - -#: html/Ticket/Elements/ShowBasics:68 -msgid "Left" -msgstr "剩餘時間" - -#: html/Admin/Users/Modify.html:109 -msgid "Let this user access RT" -msgstr "允許這名使用者登入" - -#: html/Admin/Users/Modify.html:113 -msgid "Let this user be granted rights" -msgstr "內部成員(具有個人權限)" - -#: NOT FOUND IN SOURCE -msgid "Limiting owner to %1 %2" -msgstr "限制承辦人為 %1 到%2" - -#: NOT FOUND IN SOURCE -msgid "Limiting queue to %1 %2" -msgstr "限制表單為 %1 到 %2" - -#: html/Search/Elements/EditFormat:68 -msgid "Link" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Link a Queue" -msgstr "申請表單連結" - -#: lib/RT/Record.pm:1306 -msgid "Link already exists" -msgstr "此鏈結已存在" - -#: lib/RT/Record.pm:1320 -msgid "Link could not be created" -msgstr "無法新增鏈結" - -#: lib/RT/Record.pm:1326 -#. ($TransString) -msgid "Link created (%1)" -msgstr "鏈結(%1)新增完畢" - -#: lib/RT/Record.pm:1387 -#. ($TransString) -msgid "Link deleted (%1)" -msgstr "鏈結(%1)刪除完畢" - -#: lib/RT/Record.pm:1393 -msgid "Link not found" -msgstr "找不到鏈結" - -#: html/Ticket/ModifyLinks.html:46 html/Ticket/ModifyLinks.html:50 -#. ($Ticket->Id) -msgid "Link ticket #%1" -msgstr "鏈結申請單 #%1" - -#: NOT FOUND IN SOURCE -msgid "Link ticket %1" -msgstr "鏈結申請單 %1" - -#: html/Admin/CustomFields/Modify.html:102 -msgid "Link values to" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:700 -msgid "Linking. Permission denied" -msgstr "" - -#: html/Ticket/Create.html:216 html/Ticket/Elements/ShowSummary:89 html/Ticket/Elements/Tabs:120 html/Ticket/ModifyAll.html:78 -msgid "Links" -msgstr "鏈結" - -#: NOT FOUND IN SOURCE -msgid "List All Users" -msgstr "列出所有用戶資料" - -#: html/Search/Elements/EditSearches:75 -msgid "Load" -msgstr "載入" - -#: html/Search/Elements/EditSearches:73 -msgid "Load saved search:" -msgstr "載入已儲存的查詢:" - -#: lib/RT/System.pm:86 -msgid "LoadSavedSearch" -msgstr "" - -#: html/Admin/Tools/Configuration.html:64 -msgid "Loaded perl modules" -msgstr "已載入的 Perl 模組" - -#: lib/RT/SavedSearch.pm:111 -#. ($self->Name) -msgid "Loaded search %1" -msgstr "" - -#: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126 -msgid "Location" -msgstr "位置" - -#: NOT FOUND IN SOURCE -msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." -msgstr "登入目錄 %1 找不到或無法寫入\\n。無法執行 RT。" - -#: NOT FOUND IN SOURCE -msgid "LogToFile" -msgstr "紀錄等級" - -#: NOT FOUND IN SOURCE -msgid "LogToFileNamed" -msgstr "紀錄檔名" - -#: html/Elements/Header:91 -#. ("<span>".$session{'CurrentUser'}->Name."</span>") -msgid "Logged in as %1" -msgstr "使用者:%1" - -#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:100 html/Elements/Login:68 html/Elements/Login:84 lib/RT/StyleGuide.pod:797 -msgid "Login" -msgstr "登入" - -#: html/Elements/Header:101 -msgid "Logout" -msgstr "登出" - -#: NOT FOUND IN SOURCE -msgid "Long-term contractor" -msgstr "長期契約員工" - -#: lib/RT/CustomField_Overlay.pm:932 -msgid "Lookup type mismatch" -msgstr "對應的類別不符" - -#: html/Search/Bulk.html:82 -msgid "Make Owner" -msgstr "新增承辦人" - -#: html/Search/Bulk.html:106 -msgid "Make Status" -msgstr "新增現況" - -#: html/Search/Bulk.html:114 -msgid "Make date Due" -msgstr "新增到期日" - -#: html/Search/Bulk.html:116 -msgid "Make date Resolved" -msgstr "新增解決日期" - -#: html/Search/Bulk.html:110 -msgid "Make date Started" -msgstr "新增實際起始日期" - -#: html/Search/Bulk.html:108 -msgid "Make date Starts" -msgstr "新增應起始日期" - -#: html/Search/Bulk.html:112 -msgid "Make date Told" -msgstr "新增報告日期" - -#: html/Search/Bulk.html:102 -msgid "Make priority" -msgstr "新增優先順位" - -#: html/Search/Bulk.html:104 -msgid "Make queue" -msgstr "新增表單" - -#: html/Search/Bulk.html:100 -msgid "Make subject" -msgstr "新增主題" - -#: lib/RT/Group_Overlay.pm:169 -msgid "Make this group visible to user" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Male" -msgstr "男" - -#: html/Admin/index.html:78 -msgid "Manage custom fields and custom field values" -msgstr "管理自訂欄位及欄位值" - -#: html/Admin/index.html:69 -msgid "Manage groups and group membership" -msgstr "管理群組及所屬成員" - -#: html/Admin/index.html:85 -msgid "Manage properties and configuration which apply to all queues" -msgstr "管理適用於所有表單的屬性與設定" - -#: html/Admin/index.html:74 -msgid "Manage queues and queue-specific properties" -msgstr "管理各表單及相關屬性" - -#: html/Admin/index.html:64 -msgid "Manage users and passwords" -msgstr "管理使用者與密碼" - -#: NOT FOUND IN SOURCE -msgid "Manager" -msgstr "經理" - -#: NOT FOUND IN SOURCE -msgid "Mar" -msgstr "三月" - -#: lib/RT/Date.pm:443 -msgid "Mar." -msgstr "03" - -#: NOT FOUND IN SOURCE -msgid "March" -msgstr "三月" - -#: NOT FOUND IN SOURCE -msgid "Marketing Department" -msgstr "行銷部" - -#: NOT FOUND IN SOURCE -msgid "Match Pattern" -msgstr "符合樣式" - -#: NOT FOUND IN SOURCE -msgid "May" -msgstr "五月" - -#: lib/RT/Date.pm:445 -msgid "May." -msgstr "05" - -#: lib/RT/Transaction_Overlay.pm:731 -#. ($value) -msgid "Member %1 added" -msgstr "成員 %1 新增完畢" - -#: lib/RT/Transaction_Overlay.pm:771 -#. ($value) -msgid "Member %1 deleted" -msgstr "成員 %1 刪除完畢" - -#: lib/RT/Group_Overlay.pm:1000 -msgid "Member added" -msgstr "新增成員完畢" - -#: lib/RT/Group_Overlay.pm:1162 -msgid "Member deleted" -msgstr "成員已刪除" - -#: lib/RT/Group_Overlay.pm:1166 -msgid "Member not deleted" -msgstr "成員未刪除" - -#: html/Elements/SelectLinkType:47 -msgid "Member of" -msgstr "隸屬於" - -#: NOT FOUND IN SOURCE -msgid "Member since" -msgstr "註冊日期" - -#: NOT FOUND IN SOURCE -msgid "MemberOf" -msgstr "隸屬於" - -#: html/Admin/Elements/GroupTabs:63 html/User/Elements/GroupTabs:63 -msgid "Members" -msgstr "成員" - -#: lib/RT/Transaction_Overlay.pm:728 -#. ($value) -msgid "Membership in %1 added" -msgstr "所屬群組 %1 加入完畢" - -#: lib/RT/Transaction_Overlay.pm:768 -#. ($value) -msgid "Membership in %1 deleted" -msgstr "所屬群組 %1 移除完畢" - -#: html/Admin/Elements/UserTabs:61 -msgid "Memberships" -msgstr "所屬群組" - -#: html/Admin/Users/Memberships.html:60 -#. ($UserObj->Name) -msgid "Memberships of the user %1" -msgstr "使用者 %1 的所屬群組" - -#: lib/RT/Ticket_Overlay.pm:2893 -msgid "Merge Successful" -msgstr "整合完畢" - -#: lib/RT/Ticket_Overlay.pm:2780 -msgid "Merge failed. Couldn't set EffectiveId" -msgstr "整合失敗。無法設定 EffectiveId" - -#: lib/RT/Ticket_Overlay.pm:2788 -msgid "Merge failed. Couldn't set Status" -msgstr "" - -#: html/Elements/EditLinks:131 html/Ticket/Elements/BulkLinks:48 -msgid "Merge into" -msgstr "整合進" - -#: lib/RT/Transaction_Overlay.pm:734 -#. ($value) -msgid "Merged into %1" -msgstr "已整合進 %1" - -#: html/Search/Bulk.html:143 html/Ticket/Update.html:118 -msgid "Message" -msgstr "訊息" - -#: html/Ticket/Elements/ShowTransactionAttachments:164 -msgid "Message body not shown because it is too large or is not plain text." -msgstr "信件內文不是純文字,因此無法顯示。" - -#: lib/RT/Ticket_Overlay.pm:2451 -msgid "Message could not be recorded" -msgstr "無法紀錄訊息" - -#: lib/RT/Ticket_Overlay.pm:2454 -msgid "Message recorded" -msgstr "訊息紀錄成功" - -#: html/Ticket/Elements/PreviewScrips:122 -msgid "Messages about this ticket will not be sent to..." -msgstr "此申請單的相關訊息不會寄送給..." - -#: html/Elements/SelectTimeUnits:47 -msgid "Minutes" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Misc. Expense" -msgstr "雜費" - -#: html/Search/Build.html:490 lib/RT/Report/Tickets.pm:445 -msgid "Mismatched parentheses" -msgstr "未對齊的括號" - -#: lib/RT/Record.pm:954 -msgid "Missing a primary key?: %1" -msgstr "缺少主鍵值?(%1)" - -#: NOT FOUND IN SOURCE -msgid "Missing mandatory fields" -msgstr "缺少必填欄位" - -#: html/Admin/Users/Modify.html:193 html/User/Prefs.html:92 -msgid "Mobile" -msgstr "行動電話" - -#: NOT FOUND IN SOURCE -msgid "MobilePhone" -msgstr "行動電話" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "Modify Access Control List" -msgstr "更改權限控制清單" - -#: html/Admin/Elements/ObjectCustomFields:96 -#. (loc(lc($FriendlySubTypes)), loc(lc($Types))) -msgid "Modify Custom Fields which apply to %1 for all %2" -msgstr "更改適用於 %1 內所有 %2 的自訂欄位" - -#: html/Admin/Elements/ObjectCustomFields:98 -#. (loc(lc($Types))) -msgid "Modify Custom Fields which apply to all %1" -msgstr "更改適用於所有%1的自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Modify Custom Fields which apply to all queues" -msgstr "更改適用於所有表單的自訂欄位" - -#: html/Admin/Global/GroupRights.html:106 html/Admin/Groups/GroupRights.html:94 html/Admin/Queues/GroupRights.html:107 -msgid "Modify Group Rights" -msgstr "更改群組權限" - -#: html/Admin/Groups/Members.html:105 html/User/Groups/Members.html:101 -msgid "Modify Members" -msgstr "更改成員" - -#: html/User/Delegation.html:58 -msgid "Modify Rights" -msgstr "更改權限" - -#: lib/RT/Queue_Overlay.pm:97 -msgid "Modify Scrip templates for this queue" -msgstr "更改此表單的範本" - -#: lib/RT/Queue_Overlay.pm:100 -msgid "Modify Scrips for this queue" -msgstr "更改此表單的手續" - -#: NOT FOUND IN SOURCE -msgid "Modify System ACLS" -msgstr "更改系統權限清單" - -#: NOT FOUND IN SOURCE -msgid "Modify Template %1" -msgstr "更改範本 %1" - -#: html/Admin/Global/UserRights.html:75 html/Admin/Groups/UserRights.html:76 html/Admin/Queues/UserRights.html:75 -msgid "Modify User Rights" -msgstr "更改使用者權限" - -#: NOT FOUND IN SOURCE -msgid "Modify Workflow" -msgstr "更改流程" - -#: html/Admin/Queues/CustomField.html:66 -#. ($QueueObj->Name()) -msgid "Modify a CustomField for queue %1" -msgstr "更改 %1 表單內的自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Modify a CustomField that applies to all queues" -msgstr "更改適用於所有表單的自訂欄位" - -#: html/Admin/Queues/Scrip.html:82 -#. ($QueueObj->Name) -msgid "Modify a scrip for queue %1" -msgstr "更改 %1 表單內的手續" - -#: html/Admin/Global/Scrip.html:75 -msgid "Modify a scrip that applies to all queues" -msgstr "更改適用於所有表單的手續" - -#: html/Admin/CustomFields/Objects.html:90 -#. ($CF->Name) -msgid "Modify associated objects for %1" -msgstr "更改適用 %1 的物件" - -#: NOT FOUND IN SOURCE -msgid "Modify dates for # %1" -msgstr "更改 # %1 的日期" - -#: html/Ticket/ModifyDates.html:46 html/Ticket/ModifyDates.html:50 -#. ($TicketObj->Id) -msgid "Modify dates for #%1" -msgstr "更改 #%1 的日期" - -#: html/Ticket/ModifyDates.html:57 -#. ($TicketObj->Id) -msgid "Modify dates for ticket # %1" -msgstr "更改申請單 # %1 的日期" - -#: html/Admin/Elements/GlobalCustomFieldTabs:65 html/Admin/Global/index.html:72 -msgid "Modify global custom fields" -msgstr "更改全域自訂欄位" - -#: html/Admin/Elements/GlobalCustomFieldTabs:70 html/Admin/Global/GroupRights.html:46 html/Admin/Global/GroupRights.html:49 html/Admin/Global/index.html:77 -msgid "Modify global group rights" -msgstr "更改全域設定的群組權限" - -#: html/Admin/Global/GroupRights.html:54 -msgid "Modify global group rights." -msgstr "更改全域設定的群組權限。" - -#: NOT FOUND IN SOURCE -msgid "Modify global rights for groups" -msgstr "更改全域設定的群組權限" - -#: NOT FOUND IN SOURCE -msgid "Modify global rights for users" -msgstr "更改全域設定的使用者權限" - -#: NOT FOUND IN SOURCE -msgid "Modify global scrips" -msgstr "更改全域手續" - -#: html/Admin/Global/UserRights.html:46 html/Admin/Global/UserRights.html:49 html/Admin/Global/index.html:81 -msgid "Modify global user rights" -msgstr "更改全域設定的使用者權限" - -#: html/Admin/Global/UserRights.html:54 -msgid "Modify global user rights." -msgstr "更改全域設定的使用者權限。" - -#: lib/RT/Group_Overlay.pm:163 -msgid "Modify group metadata or delete group" -msgstr "更改群組資料及刪除群組" - -#: html/Admin/CustomFields/GroupRights.html:164 -#. ($CustomFieldObj->Name) -msgid "Modify group rights for custom field %1" -msgstr "更改自訂欄位 %1 的群組權限" - -#: html/Admin/Groups/GroupRights.html:46 html/Admin/Groups/GroupRights.html:50 html/Admin/Groups/GroupRights.html:56 -#. ($GroupObj->Name) -msgid "Modify group rights for group %1" -msgstr "更改群組 %1 的群組權限" - -#: html/Admin/Queues/GroupRights.html:46 html/Admin/Queues/GroupRights.html:50 -#. ($QueueObj->Name) -msgid "Modify group rights for queue %1" -msgstr "更改表單 %1 的群組權限" - -#: lib/RT/Group_Overlay.pm:165 -msgid "Modify membership roster for this group" -msgstr "更改此群組的成員名單" - -#: lib/RT/System.pm:82 -msgid "Modify one's own RT account" -msgstr "更改個人的帳號資訊" - -#: html/Admin/Queues/People.html:46 html/Admin/Queues/People.html:50 -#. ($QueueObj->Name) -msgid "Modify people related to queue %1" -msgstr "更改鏈結到表單 %1 的人員" - -#: html/Ticket/ModifyPeople.html:46 html/Ticket/ModifyPeople.html:50 html/Ticket/ModifyPeople.html:57 -#. ($Ticket->id) -#. ($Ticket->Id) -msgid "Modify people related to ticket #%1" -msgstr "更改申請單 #%1 鏈結到的人員" - -#: html/Admin/Queues/Scrips.html:67 -#. ($QueueObj->Name) -msgid "Modify scrips for queue %1" -msgstr "更改表單 %1 的手續" - -#: html/Admin/Elements/GlobalCustomFieldTabs:56 html/Admin/Global/Scrips.html:65 html/Admin/Global/index.html:63 -msgid "Modify scrips which apply to all queues" -msgstr "更改適用於所有表單的手續" - -#: html/Admin/Global/Template.html:102 html/Admin/Global/Template.html:46 html/Admin/Global/Template.html:51 html/Admin/Queues/Template.html:99 -#. (loc($TemplateObj->Name())) -#. ($TemplateObj->id) -msgid "Modify template %1" -msgstr "更改範本 %1" - -#: html/Admin/Global/Templates.html:65 -msgid "Modify templates which apply to all queues" -msgstr "更改適用於所有表單的範本" - -#: html/Admin/Global/index.html:85 -msgid "Modify the default \"RT at a glance\" view" -msgstr "更改預設的「RT 一覽」檢視" - -#: html/Admin/Groups/Modify.html:119 html/User/Groups/Modify.html:107 -#. ($Group->Name) -msgid "Modify the group %1" -msgstr "更改群組 %1" - -#: lib/RT/Queue_Overlay.pm:95 -msgid "Modify the queue watchers" -msgstr "更改表單視察員" - -#: html/Admin/Users/Modify.html:309 -#. ($UserObj->Name) -msgid "Modify the user %1" -msgstr "更改使用者 %1" - -#: html/Ticket/ModifyAll.html:58 -#. ($Ticket->Id) -msgid "Modify ticket # %1" -msgstr "更改申請單 # %1" - -#: html/Ticket/Modify.html:46 html/Ticket/Modify.html:49 html/Ticket/Modify.html:55 -#. ($TicketObj->Id) -msgid "Modify ticket #%1" -msgstr "更改申請單 # %1" - -#: lib/RT/Queue_Overlay.pm:113 -msgid "Modify tickets" -msgstr "更改申請單" - -#: html/Admin/CustomFields/UserRights.html:157 -#. ($CustomFieldObj->Name) -msgid "Modify user rights for custom field %1" -msgstr "更改自訂欄位 %1 的使用者權限" - -#: html/Admin/Groups/UserRights.html:46 html/Admin/Groups/UserRights.html:50 html/Admin/Groups/UserRights.html:56 -#. ($GroupObj->Name) -msgid "Modify user rights for group %1" -msgstr "更改群組 %1 的使用者權限" - -#: html/Admin/Queues/UserRights.html:46 html/Admin/Queues/UserRights.html:50 -#. ($QueueObj->Name) -msgid "Modify user rights for queue %1" -msgstr "更改表單 %1 的使用者權限" - -#: NOT FOUND IN SOURCE -msgid "Modify watchers for queue '%1'" -msgstr "更改 '%1' 的視察員" - -#: NOT FOUND IN SOURCE -msgid "Modify workflow %1" -msgstr "更改流程 %1" - -#: NOT FOUND IN SOURCE -msgid "Modify workflows which apply to all queues" -msgstr "更改適用於所有表單的流程" - -#: lib/RT/Queue_Overlay.pm:94 -msgid "ModifyACL" -msgstr "更改權限清單" - -#: lib/RT/CustomField_Overlay.pm:108 -msgid "ModifyCustomField" -msgstr "更改自訂欄位" - -#: lib/RT/Group_Overlay.pm:166 -msgid "ModifyOwnMembership" -msgstr "更改自己是否屬於某群組" - -#: lib/RT/Queue_Overlay.pm:95 -msgid "ModifyQueueWatchers" -msgstr "更改表單視察員" - -#: lib/RT/Queue_Overlay.pm:100 -msgid "ModifyScrips" -msgstr "更改手續" - -#: lib/RT/System.pm:82 -msgid "ModifySelf" -msgstr "更改個人帳號" - -#: lib/RT/Queue_Overlay.pm:97 -msgid "ModifyTemplate" -msgstr "更改範本" - -#: lib/RT/Queue_Overlay.pm:113 -msgid "ModifyTicket" -msgstr "更改申請單" - -#: NOT FOUND IN SOURCE -msgid "Mon" -msgstr "星期一" - -#: lib/RT/Date.pm:417 -msgid "Mon." -msgstr "星期一" - -#: NOT FOUND IN SOURCE -msgid "More" -msgstr "更多" - -#: html/Ticket/Elements/ShowRequestor:61 -#. ($name) -msgid "More about %1" -msgstr "關於 %1 的進一步資訊" - -#: NOT FOUND IN SOURCE -msgid "Morning Shift" -msgstr "早班" - -#: NOT FOUND IN SOURCE -msgid "Move" -msgstr "移動" - -#: NOT FOUND IN SOURCE -msgid "Move All" -msgstr "全移" - -#: html/Admin/Elements/PickCustomFields:83 -msgid "Move down" -msgstr "下移" - -#: html/Admin/Elements/PickCustomFields:75 -msgid "Move up" -msgstr "上移" - -#: html/Admin/Elements/SelectSingleOrMultiple:48 -msgid "Multiple" -msgstr "多重" - -#: lib/RT/User_Overlay.pm:226 -msgid "Must specify 'Name' attribute" -msgstr "必須指定 'Name' 的屬性" - -#: html/SelfService/Elements/MyRequests:57 -#. ($friendly_status) -msgid "My %1 tickets" -msgstr "我的 %1 申請單" - -#: NOT FOUND IN SOURCE -msgid "My Approvals" -msgstr "表單簽核" - -#: html/Tools/Elements/Tabs:63 -msgid "My Day" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "My Requests" -msgstr "表單申請追蹤" - -#: NOT FOUND IN SOURCE -msgid "My Tickets" -msgstr "表單處理" - -#: html/Approvals/index.html:46 html/Approvals/index.html:47 -msgid "My approvals" -msgstr "表單簽核" - -#: html/Search/Elements/SearchPrivacy:50 html/Search/Elements/SelectSearchObject:53 html/Search/Elements/SelectSearchesForObjects:54 -msgid "My saved searches" -msgstr "我已儲存的查詢" - -#: html/Admin/CustomFields/Modify.html:58 html/Admin/Elements/AddCustomFieldValue:53 html/Admin/Elements/EditCustomField:55 html/Admin/Elements/EditCustomFieldValues:55 html/Admin/Elements/ModifyTemplate:49 html/Admin/Groups/Modify.html:65 html/Search/Bulk.html:157 html/User/Groups/Modify.html:65 -msgid "Name" -msgstr "名稱" - -#: lib/RT/User_Overlay.pm:233 -msgid "Name in use" -msgstr "帳號已有人使用" - -#: NOT FOUND IN SOURCE -msgid "Nationality" -msgstr "國籍" - -#: NOT FOUND IN SOURCE -msgid "Need approval from system administrator" -msgstr "需先由系統管理員進行批准" - -#: html/Ticket/Elements/ShowDates:73 -msgid "Never" -msgstr "從未更動" - -#: NOT FOUND IN SOURCE -msgid "New" -msgstr "新建立" - -#: html/Elements/EditLinks:117 -msgid "New Links" -msgstr "新增關係" - -#: html/Admin/Users/Modify.html:119 html/User/Prefs.html:109 -msgid "New Password" -msgstr "新的密碼" - -#: etc/initialdata:332 -msgid "New Pending Approval" -msgstr "新的待簽核事項" - -#: NOT FOUND IN SOURCE -msgid "New Query" -msgstr "新增查詢" - -#: NOT FOUND IN SOURCE -msgid "New Request" -msgstr "表單申請" - -#: html/Ticket/Elements/Tabs:212 -msgid "New Search" -msgstr "新增查詢" - -#: NOT FOUND IN SOURCE -msgid "New Watchers" -msgstr "新增視察員" - -#: html/Admin/Elements/CustomFieldTabs:93 html/Admin/Queues/CustomField.html:73 -msgid "New custom field" -msgstr "新增自訂欄位" - -#: html/Admin/Elements/GroupTabs:77 html/User/Elements/GroupTabs:73 -msgid "New group" -msgstr "新增群組" - -#: html/SelfService/Prefs.html:53 -msgid "New password" -msgstr "新的密碼" - -#: lib/RT/User_Overlay.pm:816 -msgid "New password notification sent" -msgstr "送出新密碼通知" - -#: html/Admin/Elements/QueueTabs:95 -msgid "New queue" -msgstr "新增表單" - -#: html/Ticket/Elements/Reminders:118 -msgid "New reminder:" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "New request" -msgstr "提出申請單" - -#: html/Admin/Elements/SelectRights:65 -msgid "New rights" -msgstr "新增權限" - -#: html/Admin/Global/Scrip.html:63 html/Admin/Global/Scrips.html:60 html/Admin/Queues/Scrip.html:71 html/Admin/Queues/Scrips.html:76 -msgid "New scrip" -msgstr "新增手續" - -#: NOT FOUND IN SOURCE -msgid "New search" -msgstr "重新查詢" - -#: html/Admin/Global/Template.html:81 html/Admin/Global/Templates.html:60 html/Admin/Queues/Template.html:79 html/Admin/Queues/Templates.html:71 -msgid "New template" -msgstr "新增範本" - -#: html/SelfService/Elements/Tabs:84 html/SelfService/Elements/Tabs:88 -msgid "New ticket" -msgstr "提出申請單" - -#: lib/RT/Ticket_Overlay.pm:2757 -msgid "New ticket doesn't exist" -msgstr "沒有新申請單" - -#: html/Admin/Elements/UserTabs:81 -msgid "New user" -msgstr "新增使用者" - -#: html/Admin/Elements/CreateUserCalled:47 -msgid "New user called" -msgstr "新使用者名字" - -#: html/Admin/Queues/People.html:76 html/Ticket/Elements/EditPeople:50 -msgid "New watchers" -msgstr "新視察員" - -#: NOT FOUND IN SOURCE -msgid "New window setting" -msgstr "更新視窗設定" - -#: NOT FOUND IN SOURCE -msgid "New workflow" -msgstr "新增流程" - -#: html/Helpers/CalPopup.html:58 html/Ticket/Elements/Tabs:92 -msgid "Next" -msgstr "下一項" - -#: html/Elements/TicketList:104 -msgid "Next Page" -msgstr "下一頁" - -#: NOT FOUND IN SOURCE -msgid "Next page" -msgstr "下一頁" - -#: NOT FOUND IN SOURCE -msgid "NickName" -msgstr "暱稱" - -#: html/Admin/Users/Modify.html:84 html/User/Prefs.html:72 -msgid "Nickname" -msgstr "暱稱" - -#: NOT FOUND IN SOURCE -msgid "Night Shift" -msgstr "小夜班" - -#: NOT FOUND IN SOURCE -msgid "No" -msgstr "否" - -#: html/Admin/CustomFields/UserRights.html:145 -msgid "No Class defined" -msgstr "尚未定義類別" - -#: html/Admin/CustomFields/Modify.html:166 html/Admin/Elements/EditCustomField:119 -msgid "No CustomField" -msgstr "無自訂欄位" - -#: html/Admin/CustomFields/GroupRights.html:103 -msgid "No CustomField defined" -msgstr "尚未定義自訂欄位" - -#: html/Admin/Groups/GroupRights.html:105 html/Admin/Groups/UserRights.html:92 -msgid "No Group defined" -msgstr "尚未定義群組" - -#: lib/RT/Tickets_Overlay_SQL.pm:482 -msgid "No Query" -msgstr "沒有查詢" - -#: html/Admin/Queues/GroupRights.html:118 html/Admin/Queues/UserRights.html:89 -msgid "No Queue defined" -msgstr "尚未定義表單" - -#: bin/rt-crontool:73 -msgid "No RT user found. Please consult your RT administrator.\\n" -msgstr "找不到 RT 使用者。請向 RT 管理員查詢。\\n" - -#: html/Admin/Global/Template.html:100 html/Admin/Queues/Template.html:97 -msgid "No Template" -msgstr "沒有範本" - -#: NOT FOUND IN SOURCE -msgid "No Ticket specified. Aborting ticket " -msgstr "未指定申請單。退出申請單 " - -#: NOT FOUND IN SOURCE -msgid "No Ticket specified. Aborting ticket modifications\\n\\n" -msgstr "未指定申請單。退出申請單更改\\n\\n" - -#: NOT FOUND IN SOURCE -msgid "No Workflow" -msgstr "沒有流程" - -#: html/Approvals/Elements/Approve:77 -msgid "No action" -msgstr "暫不處理" - -#: lib/RT/Record.pm:949 -msgid "No column specified" -msgstr "未指定欄位" - -#: NOT FOUND IN SOURCE -msgid "No command found\\n" -msgstr "找不到命令" - -#: html/Ticket/Elements/ShowRequestor:68 -msgid "No comment entered about this user" -msgstr "沒有對這名使用者的評論" - -#: NOT FOUND IN SOURCE -msgid "No correspondence attached" -msgstr "沒有附上申請單回覆" - -#: lib/RT/Action/Generic.pm:185 lib/RT/Condition/Generic.pm:197 lib/RT/Search/ActiveTicketsInQueue.pm:77 lib/RT/Search/Generic.pm:134 lib/RT/Search/Googleish.pm:78 -#. (ref $self) -msgid "No description for %1" -msgstr "沒有對 %1 的描述" - -#: lib/RT/Users_Overlay.pm:190 -msgid "No group specified" -msgstr "未指定群組" - -#: html/Admin/Groups/index.html:52 -msgid "No groups matching search criteria found." -msgstr "找不到符合查詢條件的群組。" - -#: lib/RT/Ticket_Overlay.pm:2393 -msgid "No message attached" -msgstr "沒有附上訊息" - -#: lib/RT/User_Overlay.pm:1034 -msgid "No password set" -msgstr "沒有設定密碼" - -#: lib/RT/Queue_Overlay.pm:361 -msgid "No permission to create queues" -msgstr "沒有新增表單的權限" - -#: lib/RT/Ticket_Overlay.pm:420 -#. ($QueueObj->Name) -msgid "No permission to create tickets in the queue '%1'" -msgstr "沒有在表單 '%1' 新增申請單的權限" - -#: lib/RT/User_Overlay.pm:186 -msgid "No permission to create users" -msgstr "沒有新增使用者的權限" - -#: html/SelfService/Display.html:167 -msgid "No permission to display that ticket" -msgstr "沒有顯示該申請單的權限" - -#: lib/RT/SavedSearch.pm:156 -msgid "No permission to save system-wide searches" -msgstr "沒有儲存全域預存查詢的權限" - -#: html/SelfService/Update.html:117 -msgid "No permission to view update ticket" -msgstr "沒有檢視申請單更新的權限" - -#: lib/RT/Queue_Overlay.pm:795 lib/RT/Ticket_Overlay.pm:1489 -msgid "No principal specified" -msgstr "未指定單位" - -#: html/Admin/Queues/People.html:175 html/Admin/Queues/People.html:185 -msgid "No principals selected." -msgstr "未指定單位。" - -#: NOT FOUND IN SOURCE -msgid "No protocol specified in %1" -msgstr "%1 內未指定協定" - -#: html/Admin/Queues/index.html:57 -msgid "No queues matching search criteria found." -msgstr "找不到符合查詢條件的表單。" - -#: html/Admin/Elements/SelectRights:106 -msgid "No rights found" -msgstr "找不到權限" - -#: html/Admin/Elements/SelectRights:53 -msgid "No rights granted." -msgstr "沒有選定權限" - -#: lib/RT/SavedSearch.pm:196 -msgid "No search loaded" -msgstr "尚未載入查詢" - -#: html/Search/Bulk.html:232 -msgid "No search to operate on." -msgstr "沒有要進行的查詢" - -#: html/Elements/RT__Ticket/ColumnMap:137 html/Search/Results.rdf:78 -msgid "No subject" -msgstr "沒有標題" - -#: NOT FOUND IN SOURCE -msgid "No ticket id specified" -msgstr "未指定申請單編號" - -#: lib/RT/Transaction_Overlay.pm:528 lib/RT/Transaction_Overlay.pm:565 -msgid "No transaction type specified" -msgstr "未指定更動報告類別" - -#: NOT FOUND IN SOURCE -msgid "No user or email address specified" -msgstr "未指定使用者或電子郵件地址" - -#: html/Admin/Users/index.html:55 -msgid "No users matching search criteria found." -msgstr "找不到符合查詢條件的使用者。" - -#: NOT FOUND IN SOURCE -msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" -msgstr "找不到合格的 RT 使用者。RT cvs 處理器已停用。請向 RT 管理者詢問。\\n" - -#: lib/RT/Record.pm:946 -msgid "No value sent to _Set!\\n" -msgstr "_Set 沒有收到任何值!\\n" - -#: html/Elements/QuickCreate:59 -msgid "Nobody" -msgstr "沒有人" - -#: lib/RT/Record.pm:951 -msgid "Nonexistant field?" -msgstr "欄位不存在?" - -#: NOT FOUND IN SOURCE -msgid "Normal Users" -msgstr "一般用戶群組" - -#: html/Search/Chart:71 html/Search/Elements/Chart:88 -msgid "Not Set" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Not configured to fetch the content from a %1 in %2" -msgstr "未設定成從 %2 內擷取 %1" - -#: NOT FOUND IN SOURCE -msgid "Not logged in" -msgstr "尚未登入" - -#: html/Elements/Header:96 -msgid "Not logged in." -msgstr "尚未登入" - -#: lib/RT/Date.pm:397 -msgid "Not set" -msgstr "尚未設定" - -#: html/NoAuth/Reminder.html:48 -msgid "Not yet implemented." -msgstr "尚未完工。" - -#: NOT FOUND IN SOURCE -msgid "Not yet implemented...." -msgstr "尚未完工..." - -#: html/Approvals/Elements/Approve:81 -msgid "Notes" -msgstr "備註" - -#: NOT FOUND IN SOURCE -msgid "Notes:" -msgstr "備註:" - -#: lib/RT/User_Overlay.pm:819 -msgid "Notification could not be sent" -msgstr "無法送出通知" - -#: etc/initialdata:101 -msgid "Notify AdminCcs" -msgstr "通知管理員副本收件人" - -#: etc/initialdata:97 -msgid "Notify AdminCcs as Comment" -msgstr "以評論方式通知管理員副本收件人" - -#: etc/initialdata:93 etc/upgrade/3.1.17/content:6 -msgid "Notify Ccs" -msgstr "通知副本收件人" - -#: etc/initialdata:89 etc/upgrade/3.1.17/content:2 -msgid "Notify Ccs as Comment" -msgstr "以評論方式通知副本收件人" - -#: etc/initialdata:128 -msgid "Notify Other Recipients" -msgstr "通知其他收件人" - -#: etc/initialdata:124 -msgid "Notify Other Recipients as Comment" -msgstr "以評論方式通知其他收件人" - -#: etc/initialdata:85 -msgid "Notify Owner" -msgstr "通知承辦人" - -#: etc/initialdata:81 -msgid "Notify Owner as Comment" -msgstr "以評論方式通知承辦人" - -#: etc/initialdata:376 -msgid "Notify Owner of their rejected ticket" -msgstr "通知承辦人申請單已駁回" - -#: etc/initialdata:365 -msgid "Notify Owner of their ticket has been approved by all approvers" -msgstr "通知承辦人申請單已完成全部簽核" - -#: etc/initialdata:353 -msgid "Notify Owner of their ticket has been approved by some approver" -msgstr "通知承辦人申請單已完成某項簽核" - -#: etc/initialdata:334 -msgid "Notify Owners and AdminCcs of new items pending their approval" -msgstr "整理待簽核事項,通知承辦人及管理員副本收件人" - -#: etc/initialdata:77 -msgid "Notify Requestors" -msgstr "通知申請人" - -#: etc/initialdata:111 -msgid "Notify Requestors and Ccs" -msgstr "通知申請人及副本收件人" - -#: etc/initialdata:106 -msgid "Notify Requestors and Ccs as Comment" -msgstr "以評論方式通知申請人及副本收件人" - -#: etc/initialdata:120 -msgid "Notify Requestors, Ccs and AdminCcs" -msgstr "通知申請人、副本及管理員副本收件人" - -#: etc/initialdata:116 -msgid "Notify Requestors, Ccs and AdminCcs as Comment" -msgstr "以評論方式通知申請人、副本及管理員副本收件人" - -#: NOT FOUND IN SOURCE -msgid "Notify people:" -msgstr "通知對象" - -#: NOT FOUND IN SOURCE -msgid "Nov" -msgstr "十一月" - -#: lib/RT/Date.pm:451 -msgid "Nov." -msgstr "11" - -#: NOT FOUND IN SOURCE -msgid "November" -msgstr "十一月" - -#: NOT FOUND IN SOURCE -msgid "OIN104" -msgstr "104eHRMS 介面" - -#: NOT FOUND IN SOURCE -msgid "OK" -msgstr "確定" - -#: html/Search/Elements/SelectAndOr:47 -msgid "OR" -msgstr "OR" - -#: lib/RT/Record.pm:322 -msgid "Object could not be created" -msgstr "無法新增物件" - -#: lib/RT/Record.pm:123 -msgid "Object could not be deleted" -msgstr "" - -#: lib/RT/Record.pm:341 -msgid "Object created" -msgstr "物件新增完畢" - -#: lib/RT/Record.pm:120 -msgid "Object deleted" -msgstr "" - -#: html/Admin/CustomFields/Objects.html:72 html/Admin/Elements/ObjectCustomFields:63 -#. ($ObjectType) -#. ($LookupType) -msgid "Object of type %1 cannot take custom fields" -msgstr "自訂欄位不適用於類別為 %1 的物件" - -#: lib/RT/CustomField_Overlay.pm:967 -msgid "Object type mismatch" -msgstr "物件類別不符" - -#: NOT FOUND IN SOURCE -msgid "Occupation Status" -msgstr "在職狀態" - -#: NOT FOUND IN SOURCE -msgid "Oct" -msgstr "十月" - -#: lib/RT/Date.pm:450 -msgid "Oct." -msgstr "10" - -#: NOT FOUND IN SOURCE -msgid "October" -msgstr "十月" - -#: NOT FOUND IN SOURCE -msgid "Office Phone" -msgstr "辦公室電話" - -#: html/Tools/Elements/Tabs:55 -msgid "Offline" -msgstr "離線" - -#: html/Tools/Offline.html:49 -msgid "Offline edits" -msgstr "離線編輯" - -#: html/Tools/Offline.html:46 -msgid "Offline upload" -msgstr "離線上載" - -#: html/Elements/SelectDateRelation:56 -msgid "On" -msgstr "等於" - -#: lib/RT/Transaction_Overlay.pm:326 -#. ($self->CreatedAsString(), $self->CreatorObj->Name()) -msgid "On %1, %2 wrote:" -msgstr "在 %1 時,%2 寫到:" - -#: NOT FOUND IN SOURCE -msgid "On Change" -msgstr "更改申請單時" - -#: etc/initialdata:163 -msgid "On Comment" -msgstr "評論時" - -#: etc/initialdata:156 -msgid "On Correspond" -msgstr "回覆申請單時" - -#: etc/initialdata:145 -msgid "On Create" -msgstr "新增申請單時" - -#: etc/initialdata:184 -msgid "On Owner Change" -msgstr "承辦人改變時" - -#: etc/initialdata:177 etc/upgrade/3.1.17/content:15 -msgid "On Priority Change" -msgstr "優先順位改變時" - -#: etc/initialdata:192 -msgid "On Queue Change" -msgstr "表單改變時" - -#: etc/initialdata:198 -msgid "On Resolve" -msgstr "解決申請單時" - -#: etc/initialdata:169 -msgid "On Status Change" -msgstr "現況改變時" - -#: etc/initialdata:150 -msgid "On Transaction" -msgstr "發生更動時" - -#: html/Approvals/Elements/PendingMyApproval:70 -#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter' id='CreatedAfter' />") -msgid "Only show approvals for requests created after %1" -msgstr "僅顯示 %1 之後新增的申請單" - -#: html/Approvals/Elements/PendingMyApproval:68 -#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore' id='CreatedBefore' />") -msgid "Only show approvals for requests created before %1" -msgstr "僅顯示 %1 之前新增的申請單" - -#: html/Admin/CustomFields/index.html:75 -msgid "Only show custom fields for:" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Open" -msgstr "開啟" - -#: html/SelfService/index.html:46 -msgid "Open Tickets" -msgstr "" - -#: html/Ticket/Elements/Tabs:160 -msgid "Open it" -msgstr "開啟" - -#: html/SelfService/Elements/Tabs:75 -msgid "Open tickets" -msgstr "開啟的申請單" - -#: NOT FOUND IN SOURCE -msgid "Open tickets (from listing) in a new window" -msgstr "在新視窗開啟(列表的)申請單" - -#: NOT FOUND IN SOURCE -msgid "Open tickets (from listing) in another window" -msgstr "在另一個視窗開啟(列表的)申請單" - -#: etc/initialdata:140 -msgid "Open tickets on correspondence" -msgstr "收到回覆時即開啟申請單" - -#: NOT FOUND IN SOURCE -msgid "Opened Tickets" -msgstr "已申請運行中表單" - -#: NOT FOUND IN SOURCE -msgid "Opinion" -msgstr "意見" - -#: NOT FOUND IN SOURCE -msgid "Option Description" -msgstr "選項描述" - -#: NOT FOUND IN SOURCE -msgid "Option Name" -msgstr "選項名稱" - -#: html/Prefs/MyRT.html:70 -msgid "Options" -msgstr "" - -#: html/Search/Elements/DisplayOptions:59 -msgid "Order by" -msgstr "排序方式" - -#: NOT FOUND IN SOURCE -msgid "Ordering and sorting" -msgstr "順序與排序方式" - -#: html/Admin/Users/Modify.html:141 html/User/Prefs.html:129 -msgid "Organization" -msgstr "組織名稱" - -#: NOT FOUND IN SOURCE -msgid "Organization:" -msgstr "組織:" - -#: html/Approvals/Elements/Approve:53 -#. ($approving->Id, $approving->Subject) -msgid "Originating ticket: #%1" -msgstr "原申請單:#%1" - -#: NOT FOUND IN SOURCE -msgid "Other comma-delimited email addresses" -msgstr "其他e-mail帳號 (僅e-mail通知;多筆帳號請用逗號','區隔)" - -#: NOT FOUND IN SOURCE -msgid "Out of range" -msgstr "期限外" - -#: lib/RT/Transaction_Overlay.pm:622 -msgid "Outgoing email about a comment recorded" -msgstr "已紀錄發送的評論郵件" - -#: lib/RT/Transaction_Overlay.pm:626 -msgid "Outgoing email recorded" -msgstr "已紀錄發送的郵件" - -#: html/Admin/Queues/Modify.html:90 -msgid "Over time, priority moves toward" -msgstr "優先順位隨時間增加調整為" - -#: NOT FOUND IN SOURCE -msgid "Override current custom fields with fields from %1" -msgstr "以 %1 表單的自訂欄位取代現有欄位" - -#: NOT FOUND IN SOURCE -msgid "Override global rights" -msgstr "取代全域權限" - -#: NOT FOUND IN SOURCE -msgid "OverrideGlobalACL status %1" -msgstr "取代全域權限 %1" - -#: NOT FOUND IN SOURCE -msgid "Overview" -msgstr "總覽" - -#: lib/RT/Queue_Overlay.pm:112 -msgid "Own tickets" -msgstr "承辦申請單" - -#: lib/RT/Queue_Overlay.pm:112 -msgid "OwnTicket" -msgstr "承辦申請單" - -#: etc/initialdata:38 html/Elements/QuickCreate:56 html/Search/Elements/PickBasics:101 html/Ticket/Create.html:72 html/Ticket/Elements/EditBasics:61 html/Ticket/Elements/EditPeople:64 html/Ticket/Elements/EditPeople:65 html/Ticket/Elements/Reminders:129 html/Ticket/Elements/ShowPeople:48 html/Ticket/Update.html:62 lib/RT/ACE_Overlay.pm:110 lib/RT/Tickets_Overlay.pm:2006 -msgid "Owner" -msgstr "承辦人" - -#: NOT FOUND IN SOURCE -msgid "Owner changed from %1 to %2" -msgstr "承辦人已從 %1 改為 %2" - -#: lib/RT/Ticket_Overlay.pm:505 -msgid "Owner could not be set." -msgstr "無法設定承辦人。" - -#: lib/RT/Transaction_Overlay.pm:672 -#. ($Old->Name , $New->Name) -msgid "Owner forcibly changed from %1 to %2" -msgstr "強制將承辦人從 %1 改為 %2" - -#: NOT FOUND IN SOURCE -msgid "Owner is" -msgstr "承辦人" - -#: NOT FOUND IN SOURCE -msgid "Owner's Phone" -msgstr "承辦人電話" - -#: NOT FOUND IN SOURCE -msgid "Page #" -msgstr " " - -#: html/Elements/TicketList:78 -#. ($Page, int($TotalFound/$Rows)+$oddRows) -msgid "Page %1 of %2" -msgstr "第 %1/%2 頁" - -#: html/Admin/Users/Modify.html:198 html/User/Prefs.html:96 -msgid "Pager" -msgstr "呼叫器" - -#: NOT FOUND IN SOURCE -msgid "PagerPhone" -msgstr "呼叫器號碼" - -#: NOT FOUND IN SOURCE -msgid "Parameter" -msgstr "呼叫參數" - -#: NOT FOUND IN SOURCE -msgid "Parent" -msgstr "上級" - -#: html/Elements/EditLinks:144 html/Elements/EditLinks:76 html/Elements/ShowLinks:68 html/Ticket/Create.html:222 html/Ticket/Elements/BulkLinks:60 -msgid "Parents" -msgstr "母申請單" - -#: NOT FOUND IN SOURCE -msgid "Park Space" -msgstr "停車位申請" - -#: html/Elements/Login:95 html/User/Prefs.html:105 -msgid "Password" -msgstr "密碼" - -#: html/NoAuth/Reminder.html:46 -msgid "Password Reminder" -msgstr "密碼提示" - -#: lib/RT/Transaction_Overlay.pm:781 lib/RT/User_Overlay.pm:1045 -msgid "Password changed" -msgstr "" - -#: lib/RT/User_Overlay.pm:1037 lib/RT/User_Overlay.pm:214 -#. ($RT::MinimumPasswordLength) -msgid "Password needs to be at least %1 characters long" -msgstr "密碼長度至少必須為 %1 個字元" - -#: lib/RT/User_Overlay.pm:1044 -msgid "Password set" -msgstr "密碼已設定" - -#: NOT FOUND IN SOURCE -msgid "Password too short" -msgstr "密碼太短" - -#: html/User/Prefs.html:240 -#. (loc_fuzzy($msg)) -msgid "Password: %1" -msgstr "密碼:%1" - -#: lib/RT/User_Overlay.pm:1030 -msgid "Password: Permission Denied" -msgstr "" - -#: html/Admin/Users/Modify.html:364 -msgid "Passwords do not match." -msgstr "密碼確認失敗。" - -#: html/User/Prefs.html:242 -msgid "Passwords do not match. Your password has not been changed" -msgstr "密碼確認失敗。您的密碼並未改變。" - -#: NOT FOUND IN SOURCE -msgid "Pelase select a queue" -msgstr "請選擇表單名稱" - -#: NOT FOUND IN SOURCE -msgid "Pending Approval" -msgstr "等待簽核" - -#: html/Ticket/Elements/ShowSummary:62 html/Ticket/Elements/Tabs:119 html/Ticket/ModifyAll.html:72 -msgid "People" -msgstr "人員" - -#: NOT FOUND IN SOURCE -msgid "People with Queue Rights" -msgstr "擁有表單權限人員" - -#: etc/initialdata:133 -msgid "Perform a user-defined action" -msgstr "執行使用者自訂的動作" - -#: html/Admin/Tools/Configuration.html:94 -msgid "Perl configuration" -msgstr "Perl 設定" - -#: lib/RT/ACE_Overlay.pm:251 lib/RT/ACE_Overlay.pm:257 lib/RT/ACE_Overlay.pm:580 lib/RT/ACE_Overlay.pm:590 lib/RT/ACE_Overlay.pm:600 lib/RT/ACE_Overlay.pm:665 lib/RT/Attribute_Overlay.pm:158 lib/RT/Attribute_Overlay.pm:164 lib/RT/Attribute_Overlay.pm:405 lib/RT/Attribute_Overlay.pm:414 lib/RT/Attribute_Overlay.pm:427 lib/RT/CurrentUser.pm:116 lib/RT/CurrentUser.pm:125 lib/RT/CustomField_Overlay.pm:1017 lib/RT/CustomField_Overlay.pm:1138 lib/RT/CustomField_Overlay.pm:1281 lib/RT/CustomField_Overlay.pm:172 lib/RT/CustomField_Overlay.pm:189 lib/RT/CustomField_Overlay.pm:200 lib/RT/CustomField_Overlay.pm:374 lib/RT/CustomField_Overlay.pm:403 lib/RT/CustomField_Overlay.pm:763 lib/RT/CustomField_Overlay.pm:936 lib/RT/CustomField_Overlay.pm:971 lib/RT/Group_Overlay.pm:1117 lib/RT/Group_Overlay.pm:1121 lib/RT/Group_Overlay.pm:1130 lib/RT/Group_Overlay.pm:1240 lib/RT/Group_Overlay.pm:1244 lib/RT/Group_Overlay.pm:1250 lib/RT/Group_Overlay.pm:445 lib/RT/Group_Overlay.pm:542 lib/RT/Group_Overlay.pm:620 lib/RT/Group_Overlay.pm:628 lib/RT/Group_Overlay.pm:726 lib/RT/Group_Overlay.pm:730 lib/RT/Group_Overlay.pm:736 lib/RT/Group_Overlay.pm:922 lib/RT/Group_Overlay.pm:926 lib/RT/Group_Overlay.pm:939 lib/RT/Queue_Overlay.pm:1054 lib/RT/Queue_Overlay.pm:140 lib/RT/Queue_Overlay.pm:158 lib/RT/Queue_Overlay.pm:657 lib/RT/Queue_Overlay.pm:667 lib/RT/Queue_Overlay.pm:681 lib/RT/Queue_Overlay.pm:819 lib/RT/Queue_Overlay.pm:828 lib/RT/Queue_Overlay.pm:841 lib/RT/Scrip_Overlay.pm:149 lib/RT/Scrip_Overlay.pm:160 lib/RT/Scrip_Overlay.pm:224 lib/RT/Scrip_Overlay.pm:538 lib/RT/Template_Overlay.pm:108 lib/RT/Template_Overlay.pm:277 lib/RT/Ticket_Overlay.pm:1357 lib/RT/Ticket_Overlay.pm:1367 lib/RT/Ticket_Overlay.pm:1381 lib/RT/Ticket_Overlay.pm:1522 lib/RT/Ticket_Overlay.pm:1532 lib/RT/Ticket_Overlay.pm:1546 lib/RT/Ticket_Overlay.pm:1663 lib/RT/Ticket_Overlay.pm:1983 lib/RT/Ticket_Overlay.pm:2126 lib/RT/Ticket_Overlay.pm:2296 lib/RT/Ticket_Overlay.pm:2346 lib/RT/Ticket_Overlay.pm:2525 lib/RT/Ticket_Overlay.pm:2538 lib/RT/Ticket_Overlay.pm:2614 lib/RT/Ticket_Overlay.pm:2627 lib/RT/Ticket_Overlay.pm:2748 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2990 lib/RT/Ticket_Overlay.pm:3000 lib/RT/Ticket_Overlay.pm:3005 lib/RT/Ticket_Overlay.pm:3224 lib/RT/Ticket_Overlay.pm:3228 lib/RT/Ticket_Overlay.pm:3371 lib/RT/Ticket_Overlay.pm:3497 lib/RT/Transaction_Overlay.pm:516 lib/RT/Transaction_Overlay.pm:523 lib/RT/Transaction_Overlay.pm:551 lib/RT/Transaction_Overlay.pm:558 lib/RT/User_Overlay.pm:1176 lib/RT/User_Overlay.pm:1856 lib/RT/User_Overlay.pm:369 lib/RT/User_Overlay.pm:735 lib/RT/User_Overlay.pm:774 -msgid "Permission Denied" -msgstr "權限不足" - -#: NOT FOUND IN SOURCE -msgid "Permission Settings" -msgstr "權限設定" - -#: lib/RT/Template_Overlay.pm:238 lib/RT/Template_Overlay.pm:247 -msgid "Permission denied" -msgstr "" - -#: lib/RT/Template_Overlay.pm:372 -msgid "Permissions denied" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Permitted Queues:" -msgstr "擁有權限表單列表:" - -#: NOT FOUND IN SOURCE -msgid "Personal" -msgstr "代理人群組" - -#: html/User/Elements/Tabs:56 -msgid "Personal Groups" -msgstr "代理人群組" - -#: NOT FOUND IN SOURCE -msgid "Personal Homepage" -msgstr "個人首頁" - -#: NOT FOUND IN SOURCE -msgid "Personal Todo" -msgstr "私人待辦事項" - -#: html/User/Groups/index.html:51 html/User/Groups/index.html:61 -msgid "Personal groups" -msgstr "代理人群組" - -#: html/User/Elements/DelegateRights:58 -msgid "Personal groups:" -msgstr "代理人群組:" - -#: NOT FOUND IN SOURCE -msgid "PersonalHomepage" -msgstr "個人首頁" - -#: NOT FOUND IN SOURCE -msgid "Phase 1: Create/Rename Groups (%1)" -msgstr "第一階段:群組建立及改名 (%1)" - -#: NOT FOUND IN SOURCE -msgid "Phase 2: Disable/Enable Groups (%1)" -msgstr "第二階段:群組停用及啟用 (%1)" - -#: NOT FOUND IN SOURCE -msgid "Phase 3: Create/Rename Users (%1)" -msgstr "第三階段:使用者建立及改名 (%1)" - -#: NOT FOUND IN SOURCE -msgid "Phase 4: Disable/Enable Users (%1)" -msgstr "第四階段:使用者停用及啟用 (%1)" - -#: NOT FOUND IN SOURCE -msgid "Phone" -msgstr "電話" - -#: NOT FOUND IN SOURCE -msgid "Phone number" -msgstr "電話號碼" - -#: html/Admin/Users/Modify.html:180 html/User/Prefs.html:81 -msgid "Phone numbers" -msgstr "電話號碼" - -#: NOT FOUND IN SOURCE -msgid "Pick" -msgstr "挑選" - -#: NOT FOUND IN SOURCE -msgid "Place of Departure" -msgstr "出發地點" - -#: NOT FOUND IN SOURCE -msgid "Placeholder" -msgstr "尚未完工" - -#: NOT FOUND IN SOURCE -msgid "Please Select" -msgstr "請選擇" - -#: NOT FOUND IN SOURCE -msgid "Please check items to be deleted first." -msgstr "請先選中要刪除的對象" - -#: NOT FOUND IN SOURCE -msgid "Please select a group" -msgstr "請選擇群組" - -#: NOT FOUND IN SOURCE -msgid "Please select a queue's workflow" -msgstr "請選擇表單流程" - -#: NOT FOUND IN SOURCE -msgid "Please select one of the category types above." -msgstr "請從上面選擇一項分類。" - -#: NOT FOUND IN SOURCE -msgid "Please select role" -msgstr "請選擇角色" - -#: NOT FOUND IN SOURCE -msgid "Policy" -msgstr "經營規章" - -#: NOT FOUND IN SOURCE -msgid "Position" -msgstr "職務" - -#: NOT FOUND IN SOURCE -msgid "Position Level" -msgstr "職等" - -#: NOT FOUND IN SOURCE -msgid "Position Name" -msgstr "職務名稱" - -#: NOT FOUND IN SOURCE -msgid "Position Number" -msgstr "職務代碼" - -#: NOT FOUND IN SOURCE -msgid "Position Rank" -msgstr "職級" - -#: NOT FOUND IN SOURCE -msgid "Pref" -msgstr "偏好" - -#: html/Elements/Header:93 html/Elements/Tabs:91 html/SelfService/Elements/Tabs:95 html/SelfService/Prefs.html:46 html/User/Prefs.html:46 html/User/Prefs.html:49 -msgid "Preferences" -msgstr "偏好" - -#: html/Admin/Users/MyRT.html:75 -#. ($pane, $UserObj->Name) -msgid "Preferences %1 for user %2 ." -msgstr "使用者 %2 的 %1 偏好。" - -#: html/Prefs/MyRT.html:141 -#. ($pane) -msgid "Preferences saved for %1." -msgstr "成功儲存 %1 的偏好。" - -#: NOT FOUND IN SOURCE -msgid "Prefs" -msgstr "個人資訊" - -#: lib/RT/Action/Generic.pm:195 -msgid "Prepare Stubbed" -msgstr "預備動作完畢" - -#: html/Helpers/CalPopup.html:56 html/Ticket/Elements/Tabs:84 -msgid "Prev" -msgstr "上一項" - -#: html/Elements/TicketList:101 -msgid "Previous Page" -msgstr "上一頁" - -#: NOT FOUND IN SOURCE -msgid "Previous page" -msgstr "前一頁" - -#: NOT FOUND IN SOURCE -msgid "Pri" -msgstr "優先順位" - -#: lib/RT/ACE_Overlay.pm:157 lib/RT/ACE_Overlay.pm:239 lib/RT/ACE_Overlay.pm:569 -#. ($args{'PrincipalId'}) -msgid "Principal %1 not found." -msgstr "找不到單位 %1。" - -#: html/Search/Elements/PickBasics:147 html/Ticket/Create.html:181 html/Ticket/Elements/EditBasics:92 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1790 -msgid "Priority" -msgstr "優先順位" - -#: html/Admin/Queues/Modify.html:86 -msgid "Priority starts at" -msgstr "優先順位起始值" - -#: html/Search/Elements/EditSearches:50 -msgid "Privacy:" -msgstr "隱私設定:" - -#: etc/initialdata:25 -msgid "Privileged" -msgstr "內部成員" - -#: html/Admin/Users/Modify.html:342 html/User/Prefs.html:231 -#. (loc_fuzzy($msg)) -msgid "Privileged status: %1" -msgstr "內部成員狀態:%1" - -#: html/Admin/Users/index.html:102 -msgid "Privileged users" -msgstr "內部成員" - -#: NOT FOUND IN SOURCE -msgid "Process Status" -msgstr "處理狀態" - -#: NOT FOUND IN SOURCE -msgid "Project" -msgstr "專案" - -#: NOT FOUND IN SOURCE -msgid "Project Name" -msgstr "專案名稱" - -#: NOT FOUND IN SOURCE -msgid "Projects" -msgstr "專案" - -#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 -msgid "Pseudogroup for internal use" -msgstr "內部用的虛擬群組" - -#: NOT FOUND IN SOURCE -msgid "Public Description" -msgstr "公開說明" - -#: NOT FOUND IN SOURCE -msgid "Public Info" -msgstr "公開資訊" - -#: NOT FOUND IN SOURCE -msgid "Public Service" -msgstr "公共事務區" - -#: NOT FOUND IN SOURCE -msgid "Purging stale data: %1" -msgstr "移除過期資料: %1" - -#: NOT FOUND IN SOURCE -msgid "Query" -msgstr "查詢" - -#: html/Search/Build.html:121 -msgid "Query Builder" -msgstr "建立查詢" - -#: html/Search/Elements/Chart:101 -msgid "Query:" -msgstr "" - -#: html/Elements/QueueSummary:48 html/Elements/QuickCreate:54 html/Search/Elements/PickBasics:71 html/SelfService/Create.html:54 html/Ticket/Create.html:62 html/Ticket/Elements/EditBasics:57 html/Ticket/Elements/ShowBasics:76 html/Tools/Reports/CreatedByDates.html:85 html/Tools/Reports/ResolvedByDates.html:86 html/Tools/Reports/ResolvedByOwner.html:66 html/User/Elements/DelegateRights:101 lib/RT/Tickets_Overlay.pm:1617 -msgid "Queue" -msgstr "表單" - -#: html/Admin/Queues/CustomField.html:63 html/Admin/Queues/Scrip.html:61 html/Admin/Queues/Scrips.html:69 html/Admin/Queues/Templates.html:65 -#. ($Queue) -#. ($id) -msgid "Queue %1 not found" -msgstr "找不到表單 %1" - -#: NOT FOUND IN SOURCE -msgid "Queue '%1' not found\\n" -msgstr "找不到表單 '%1'\\n" - -#: NOT FOUND IN SOURCE -msgid "Queue Keyword Selections" -msgstr "表單關鍵字選取" - -#: html/Admin/Queues/Modify.html:64 -msgid "Queue Name" -msgstr "表單名稱" - -#: NOT FOUND IN SOURCE -msgid "Queue Owner" -msgstr "業務承辦人" - -#: NOT FOUND IN SOURCE -msgid "Queue Priority" -msgstr "優先等級" - -#: NOT FOUND IN SOURCE -msgid "Queue Rights" -msgstr "表單權限" - -#: NOT FOUND IN SOURCE -msgid "Queue Scrips" -msgstr "表單手續" - -#: NOT FOUND IN SOURCE -msgid "Queue Setup" -msgstr "表單設定" - -#: lib/RT/Queue_Overlay.pm:365 -msgid "Queue already exists" -msgstr "表單已存在" - -#: lib/RT/Queue_Overlay.pm:374 lib/RT/Queue_Overlay.pm:380 -msgid "Queue could not be created" -msgstr "無法新增表單" - -#: html/Ticket/Create.html:244 lib/t/regression/01ticket_link_searching.t:17 -msgid "Queue could not be loaded." -msgstr "無法載入表單" - -#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:384 lib/RT/StyleGuide.pod:809 -msgid "Queue created" -msgstr "表單新增完畢" - -#: NOT FOUND IN SOURCE -msgid "Queue is not specified." -msgstr "未指定表單。" - -#: html/SelfService/Display.html:126 lib/RT/CustomField_Overlay.pm:197 -msgid "Queue not found" -msgstr "找不到表單" - -#: html/Admin/Elements/Tabs:59 html/Admin/index.html:72 -msgid "Queues" -msgstr "表單" - -#: html/Elements/MyAdminQueues:46 -msgid "Queues I administer" -msgstr "" - -#: html/Elements/MySupportQueues:46 -msgid "Queues I'm an AdminCc for" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Quick Search" -msgstr "表單現況" - -#: html/Elements/Quicksearch:47 html/Prefs/Elements/Tabs:58 html/Prefs/Quicksearch.html:70 -msgid "Quick search" -msgstr "表單一覽" - -#: html/Elements/QuickCreate:47 -msgid "Quick ticket creation" -msgstr "快速建立申請單" - -#: html/Search/Results.html:81 -msgid "RSS" -msgstr "RSS" - -#: NOT FOUND IN SOURCE -msgid "RT %1" -msgstr "RT %1" - -#: docs/design_docs/string-extraction-guide.txt:70 lib/RT/StyleGuide.pod:796 -#. ($RT::VERSION, $RT::rtname) -msgid "RT %1 for %2" -msgstr "%2:RT %1 版" - -#: NOT FOUND IN SOURCE -msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." -msgstr "RT %1 版,<a href=\"http://bestpractical.com\">Best Practical Solutions 公司</a>出品。" - -#: NOT FOUND IN SOURCE -msgid "RT %1. Copyright 1996-%1 Jesse Vincent <jesse\\@bestpractical.com>\\n" -msgstr "RT %1。版權所有 1996-%1 Jesse Vincent <jesse\\@bestpractical.com>\\n" - -#: NOT FOUND IN SOURCE -msgid "RT %1. Copyright 1996-2002 Jesse Vincent <jesse\\@bestpractical.com>\\n" -msgstr "RT %1。版權所有 1996-2002 Jesse Vincent <jesse\\@bestpractical.com>\\n" - -#: html/Admin/index.html:46 html/Admin/index.html:47 -msgid "RT Administration" -msgstr "RT 管理頁面" - -#: NOT FOUND IN SOURCE -msgid "RT Authentication error." -msgstr "RT 認證錯誤。" - -#: NOT FOUND IN SOURCE -msgid "RT Bounce: %1" -msgstr "RT 退信:%1" - -#: NOT FOUND IN SOURCE -msgid "RT Configuration error" -msgstr "RT 設定錯誤" - -#: NOT FOUND IN SOURCE -msgid "RT Critical error. Message not recorded!" -msgstr "RT 致命錯誤。訊息未被紀錄。" - -#: html/Elements/Error:63 html/SelfService/Error.html:62 -msgid "RT Error" -msgstr "RT 錯誤" - -#: NOT FOUND IN SOURCE -msgid "RT Received mail (%1) from itself." -msgstr "RT 收到從自己寄出的郵件 (%1)。" - -#: NOT FOUND IN SOURCE -msgid "RT Recieved mail (%1) from itself." -msgstr "RT 收到從自己寄出的郵件 (%1)。" - -#: NOT FOUND IN SOURCE -msgid "RT Self Service / Closed Tickets" -msgstr "RT 自助服務/已解決的申請單" - -#: html/Admin/Tools/Configuration.html:73 -msgid "RT Variables" -msgstr "RT 的變數" - -#: html/Admin/Elements/SystemTabs:71 html/Admin/Elements/UserTabs:67 html/Admin/Global/MyRT.html:1 html/Admin/Global/MyRT.html:12 html/Admin/Global/MyRT.html:4 html/Admin/Global/index.html:84 html/Admin/Users/MyRT.html:21 html/Prefs/MyRT.html:66 html/Prefs/MyRT.html:78 html/User/Elements/Tabs:65 html/index.html:1 html/index.html:75 -msgid "RT at a glance" -msgstr "RT 一覽" - -#: html/Admin/Users/MyRT.html:30 -#. ($UserObj->Name) -msgid "RT at a glance for the user %1" -msgstr "使用者 %1 的 RT 一覽" - -#: html/Admin/CustomFields/Modify.html:117 -msgid "RT can include content from another web service when showing this custom field." -msgstr "RT 可於顯示此自訂欄位時引入其他網站的內容" - -#: html/Admin/CustomFields/Modify.html:106 -msgid "RT can make this custom field's values into hyperlinks to another service." -msgstr "RT 可將此自訂欄位的值視為連往其他網站的超鏈結" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't authenticate you" -msgstr "RT 無法認證您的身份" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't find requestor via its external database lookup" -msgstr "RT 無法從外部資料庫查詢找到申請人資訊" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't find the queue: %1" -msgstr "RT 找不到表單:%1" - -#: html/Elements/SetupSessionCookie:100 -msgid "RT couldn't store your session." -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "RT couldn't validate this PGP signature. \\n" -msgstr "RT 無法確認這個 PGP 簽章。\\n" - -#: html/Elements/Logo:49 html/Elements/PageLayout:172 -#. ($RT::rtname) -msgid "RT for %1" -msgstr "%1 專用流程系統" - -#: NOT FOUND IN SOURCE -msgid "RT for %1: %2" -msgstr "%1 專用 RT 系統:%2" - -#: NOT FOUND IN SOURCE -msgid "RT has proccessed your commands" -msgstr "RT 已執行您的命令" - -#: NOT FOUND IN SOURCE -msgid "RT is © Copyright 1996-%1 Jesse Vincent <jesse@bestpractical.com>. It is distributed under <a href=\"http://www.gnu.org/copyleft/gpl.html\">Version 2 of the GNU General Public License.</a>" -msgstr "RT 版權所有 1996-%1 Jesse Vincent <jesse@bestpractical.com>。<br>本軟體依 <a href=\"http://www.gnu.org/copyleft/gpl.html\">GNU 通用公共授權第二版</a> 散佈。" - -#: NOT FOUND IN SOURCE -msgid "RT thinks this message may be a bounce" -msgstr "RT 認為這可能是退信" - -#: html/Search/Simple.html:58 -msgid "RT will look for anything else you enter in ticket subjects." -msgstr "RT 會在申請單主旨內搜尋將您鍵入的任何其他字樣" - -#: NOT FOUND IN SOURCE -msgid "RT will process this message as if it were unsigned.\\n" -msgstr "RT 以未簽章方式處理這封郵件。\\n" - -#: html/Admin/CustomFields/Modify.html:108 html/Admin/CustomFields/Modify.html:119 -msgid "RT will replace <tt>__id__</tt> and <tt>__CustomField__</tt> with the record id and custom field value, respectively" -msgstr "RT 會將 <tt>__id__</tt> 及 <tt>__CustomField__</tt> 置換成紀錄編號及自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "RT's email command mode requires PGP authentication. Either you didn't sign your message, or your signature could not be verified." -msgstr "RT 的電子郵件命令模式須要 PGP 認證。您可能沒有簽章,或是您的簽章無法辨識。" - -#: NOT FOUND IN SOURCE -msgid "RT::Queue-Role" -msgstr "表單運行角色" - -#: NOT FOUND IN SOURCE -msgid "RT::System-Role" -msgstr "系統運行角色" - -#: NOT FOUND IN SOURCE -msgid "RT::Ticket-Role" -msgstr "申請單運行角色" - -#: NOT FOUND IN SOURCE -msgid "RT_System" -msgstr "系統訊息" - -#: NOT FOUND IN SOURCE -msgid "Read Only" -msgstr "唯讀" - -#: html/Admin/Users/Modify.html:79 html/User/Prefs.html:69 -msgid "Real Name" -msgstr "真實姓名" - -#: NOT FOUND IN SOURCE -msgid "RealName" -msgstr "真實姓名" - -#: NOT FOUND IN SOURCE -msgid "Really reject this ticket?" -msgstr "您確定要駁回這張申請單嗎?" - -#: lib/RT/Transaction_Overlay.pm:725 -#. ($value) -msgid "Reference by %1 added" -msgstr "已加入 %1 為參考本申請單" - -#: lib/RT/Transaction_Overlay.pm:765 -#. ($value) -msgid "Reference by %1 deleted" -msgstr "已移除 %1 為參考本申請單" - -#: lib/RT/Transaction_Overlay.pm:722 -#. ($value) -msgid "Reference to %1 added" -msgstr "已加入參考申請單 %1" - -#: lib/RT/Transaction_Overlay.pm:762 -#. ($value) -msgid "Reference to %1 deleted" -msgstr "已移除參考申請單 %1" - -#: html/Elements/EditLinks:103 html/Elements/EditLinks:156 html/Elements/ShowLinks:92 html/Ticket/Create.html:225 html/Ticket/Elements/BulkLinks:72 -msgid "Referred to by" -msgstr "被參考" - -#: html/Elements/EditLinks:152 html/Elements/EditLinks:94 html/Elements/SelectLinkType:49 html/Elements/ShowLinks:82 html/Ticket/Create.html:224 html/Ticket/Elements/BulkLinks:68 -msgid "Refers to" -msgstr "參考" - -#: NOT FOUND IN SOURCE -msgid "RefersTo" -msgstr "參考" - -#: NOT FOUND IN SOURCE -msgid "Refine" -msgstr "在結果範圍內查詢" - -#: NOT FOUND IN SOURCE -msgid "Refine search" -msgstr "調整查詢條件" - -#: NOT FOUND IN SOURCE -msgid "Refresh" -msgstr "更新" - -#: html/Elements/Refresh:57 -#. ($value/60) -msgid "Refresh this page every %1 minutes." -msgstr "每 %1 分鐘更新頁面" - -#: lib/RT/Transaction_Overlay.pm:811 -#. ($ticket->Subject) -msgid "Reminder '%1' added" -msgstr "已建立提醒項目「%1」" - -#: lib/RT/Transaction_Overlay.pm:824 -#. ($ticket->Subject) -msgid "Reminder '%1' completed" -msgstr "已完成提醒項目「%1」" - -#: lib/RT/Transaction_Overlay.pm:817 -#. ($ticket->Subject) -msgid "Reminder '%1' reopened" -msgstr "已重新開啟提醒項目「%1」" - -#: html/Ticket/Reminders.html:46 -#. ($Ticket->Id) -msgid "Reminder ticket #%1" -msgstr "提醒項目 #%1" - -#: html/Elements/MyReminders:48 html/Ticket/Elements/ShowSummary:75 html/Ticket/Elements/Tabs:122 html/Ticket/Reminders.html:52 -msgid "Reminders" -msgstr "" - -#: html/Ticket/Reminders.html:50 -#. ($Ticket->Id) -msgid "Reminders for ticket #%1" -msgstr "申請單 #%1 的提醒項目" - -#: NOT FOUND IN SOURCE -msgid "Remove" -msgstr "移除" - -#: html/Search/Bulk.html:94 -msgid "Remove AdminCc" -msgstr "移除管理員副本" - -#: html/Search/Bulk.html:90 -msgid "Remove Cc" -msgstr "移除副本" - -#: html/Search/Bulk.html:86 -msgid "Remove Requestor" -msgstr "移除申請人" - -#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:147 -msgid "Reply" -msgstr "回覆" - -#: html/Admin/Queues/Modify.html:72 -msgid "Reply Address" -msgstr "回覆地址" - -#: html/Search/Bulk.html:129 html/Ticket/ModifyAll.html:94 html/Ticket/Update.html:78 -msgid "Reply to requestors" -msgstr "回覆申請人" - -#: lib/RT/Queue_Overlay.pm:110 -msgid "Reply to tickets" -msgstr "對申請單進行回覆" - -#: lib/RT/Queue_Overlay.pm:110 -msgid "ReplyToTicket" -msgstr "回覆申請單" - -#: NOT FOUND IN SOURCE -msgid "Report to Duty" -msgstr "上下班刷卡" - -#: NOT FOUND IN SOURCE -msgid "Reported on" -msgstr "到職日期" - -#: html/Tools/Elements/Tabs:59 html/Tools/Reports/index.html:46 html/Tools/Reports/index.html:47 -msgid "Reports" -msgstr "" - -#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:111 -msgid "Requestor" -msgstr "申請人" - -#: NOT FOUND IN SOURCE -msgid "Requestor email address" -msgstr "申請人電子郵件信箱位址" - -#: NOT FOUND IN SOURCE -msgid "Requestor's" -msgstr "申請人所屬之第上" - -#: NOT FOUND IN SOURCE -msgid "Requestor's Dept." -msgstr "申請人所屬部門之" - -#: NOT FOUND IN SOURCE -msgid "Requestor's Phone" -msgstr "申請人電話" - -#: NOT FOUND IN SOURCE -msgid "Requestor(s)" -msgstr "申請人" - -#: NOT FOUND IN SOURCE -msgid "RequestorAddresses" -msgstr "申請人地址" - -#: html/SelfService/Create.html:63 html/Ticket/Create.html:80 html/Ticket/Elements/EditPeople:69 html/Ticket/Elements/ShowPeople:52 -msgid "Requestors" -msgstr "申請人" - -#: html/Admin/Queues/Modify.html:96 -msgid "Requests should be due in" -msgstr "申請單處理期限" - -#: lib/RT/Attribute_Overlay.pm:146 -#. ('Object') -msgid "Required parameter '%1' not specified" -msgstr "未指定必要的參數「%1」" - -#: html/Elements/Submit:83 -msgid "Reset" -msgstr "重設" - -#: html/Admin/Users/MyRT.html:15 html/Prefs/MyRT.html:60 -msgid "Reset to default" -msgstr "" - -#: html/Admin/Users/Modify.html:183 html/User/Prefs.html:84 -msgid "Residence" -msgstr "住處" - -#: NOT FOUND IN SOURCE -msgid "Resolution" -msgstr "解決狀態" - -#: html/Ticket/Elements/Tabs:156 -msgid "Resolve" -msgstr "解決" - -#: html/Ticket/Update.html:156 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Resolve ticket #%1 (%2)" -msgstr "解決申請單 #%1 (%2)" - -#: etc/initialdata:323 html/Elements/SelectDateType:49 lib/RT/Ticket_Overlay.pm:1172 -msgid "Resolved" -msgstr "已解決" - -#: html/Tools/Reports/Elements/Tabs:55 -msgid "Resolved by owner" -msgstr "" - -#: html/Tools/Reports/Elements/Tabs:59 -msgid "Resolved in date range" -msgstr "" - -#: html/Tools/Reports/ResolvedByDates.html:52 -msgid "Resolved tickets in period, grouped by owner" -msgstr "" - -#: html/Tools/Reports/ResolvedByOwner.html:50 -msgid "Resolved tickets, grouped by owner" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Response to requestors" -msgstr "回覆申請人" - -#: NOT FOUND IN SOURCE -msgid "Responsibility Type" -msgstr "責任區分" - -#: html/Elements/ListActions:46 html/Search/Elements/NewListActions:47 -msgid "Results" -msgstr "結果" - -#: NOT FOUND IN SOURCE -msgid "Results per page" -msgstr "每頁列出幾筆結果" - -#: html/Admin/Users/Modify.html:126 html/User/Prefs.html:116 -msgid "Retype Password" -msgstr "再次輸入密碼" - -#: html/Search/Elements/EditSearches:61 -msgid "Revert" -msgstr "復原" - -#: NOT FOUND IN SOURCE -msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" -msgstr "在 %4 (%5) 的範圍內找不到 %2 %3 的 %1 權限\\n" - -#: lib/RT/ACE_Overlay.pm:630 -msgid "Right Delegated" -msgstr "權限代理完畢" - -#: lib/RT/ACE_Overlay.pm:320 -msgid "Right Granted" -msgstr "權限設定完畢" - -#: lib/RT/ACE_Overlay.pm:178 -msgid "Right Loaded" -msgstr "權限載入完畢" - -#: lib/RT/ACE_Overlay.pm:695 lib/RT/ACE_Overlay.pm:716 -msgid "Right could not be revoked" -msgstr "無法撤消權限" - -#: html/User/Delegation.html:85 -msgid "Right not found" -msgstr "找不到權限" - -#: lib/RT/ACE_Overlay.pm:560 lib/RT/ACE_Overlay.pm:655 -msgid "Right not loaded." -msgstr "權限並未載入。" - -#: lib/RT/ACE_Overlay.pm:712 -msgid "Right revoked" -msgstr "權限撤消完畢" - -#: html/Admin/Elements/UserTabs:70 -msgid "Rights" -msgstr "權限及代理人" - -#: html/Admin/CustomFields/GroupRights.html:129 lib/RT/Interface/Web.pm:961 -#. ($object_type) -msgid "Rights could not be granted for %1" -msgstr "無法將權限賦予 %1" - -#: html/Admin/CustomFields/GroupRights.html:156 lib/RT/Interface/Web.pm:990 -#. ($object_type) -msgid "Rights could not be revoked for %1" -msgstr "無法撤消 %1 的權限" - -#: NOT FOUND IN SOURCE -msgid "Role Members" -msgstr "角色成員" - -#: NOT FOUND IN SOURCE -msgid "Role Name" -msgstr "角色名稱" - -#: html/Admin/Global/GroupRights.html:72 html/Admin/Queues/GroupRights.html:74 -msgid "Roles" -msgstr "角色" - -#: NOT FOUND IN SOURCE -msgid "RootApproval" -msgstr "交由系統管理員簽核" - -#: html/Prefs/MyRT.html:72 -msgid "Rows per box" -msgstr "" - -#: html/Search/Elements/DisplayOptions:93 -msgid "Rows per page" -msgstr "每頁筆數" - -#: NOT FOUND IN SOURCE -msgid "Run Approval" -msgstr "簽核執行" - -#: NOT FOUND IN SOURCE -msgid "SMTPDebug" -msgstr "SMTP 偵錯紀錄" - -#: NOT FOUND IN SOURCE -msgid "SMTPFrom" -msgstr "SMTP 寄件位址" - -#: NOT FOUND IN SOURCE -msgid "SMTPServer" -msgstr "SMTP 伺服器" - -#: NOT FOUND IN SOURCE -msgid "Sat" -msgstr "星期六" - -#: lib/RT/Date.pm:422 -msgid "Sat." -msgstr "星期六" - -#: html/Prefs/MyRT.html:72 html/Prefs/Quicksearch.html:64 html/Prefs/Search.html:69 html/Prefs/Search.html:69 html/Search/Elements/EditSearches:70 html/Widgets/SelectionBox:211 -msgid "Save" -msgstr "儲存" - -#: html/Admin/Global/Template.html:67 html/Admin/Groups/Modify.html:88 html/Admin/Queues/Modify.html:111 html/Admin/Queues/People.html:126 html/Admin/Users/Modify.html:239 html/Prefs/Quicksearch.html:64 html/Prefs/SearchOptions.html:63 html/SelfService/Prefs.html:58 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:127 html/Ticket/ModifyDates.html:60 html/Ticket/ModifyLinks.html:61 html/Ticket/ModifyPeople.html:60 html/User/Groups/Modify.html:77 -msgid "Save Changes" -msgstr "儲存更改" - -#: html/User/Prefs.html:181 -msgid "Save Preferences" -msgstr "儲存偏好" - -#: html/Ticket/Elements/PreviewScrips:131 -msgid "Save changes" -msgstr "儲存更改" - -#: lib/RT/SavedSearch.pm:173 -#. ($name) -msgid "Saved search %1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Saved searches" -msgstr "已儲存的查詢" - -#: html/Admin/Elements/ListGlobalScrips:60 html/Admin/Global/Scrip.html:77 html/Admin/Queues/Scrip.html:84 -#. ($scrip->Id) -#. ($id) -msgid "Scrip #%1" -msgstr "手續 #%1" - -#: NOT FOUND IN SOURCE -msgid "Scrip Action" -msgstr "訊息通知動作" - -#: NOT FOUND IN SOURCE -msgid "Scrip Condition" -msgstr "訊息通知條件" - -#: lib/RT/Scrip_Overlay.pm:203 -msgid "Scrip Created" -msgstr "手續新增完畢" - -#: html/Admin/Elements/EditScrip:52 -msgid "Scrip Fields" -msgstr "手續欄位" - -#: NOT FOUND IN SOURCE -msgid "Scrip Name" -msgstr "訊息名稱" - -#: html/Admin/Elements/EditScrips:109 -msgid "Scrip deleted" -msgstr "手續刪除完畢" - -#: html/Admin/Elements/QueueTabs:67 html/Admin/Elements/SystemTabs:54 html/Admin/Global/index.html:62 -msgid "Scrips" -msgstr "手續" - -#: NOT FOUND IN SOURCE -msgid "Scrips " -msgstr "訊息通知" - -#: NOT FOUND IN SOURCE -msgid "Scrips for %1\\n" -msgstr "%1 的手續\\n" - -#: html/Admin/Queues/Scrips.html:55 -msgid "Scrips which apply to all queues" -msgstr "適用於所有表單的手續" - -#: html/Elements/SimpleSearch:48 html/Search/Simple.html:63 -msgid "Search" -msgstr "查詢" - -#: NOT FOUND IN SOURCE -msgid "Search Criteria" -msgstr "查詢條件" - -#: html/Prefs/SearchOptions.html:47 html/Prefs/SearchOptions.html:50 -msgid "Search Preferences" -msgstr "" - -#: lib/RT/SavedSearch.pm:115 -msgid "Search attribute load failure" -msgstr "搜尋屬性載入失敗" - -#: html/Approvals/Elements/PendingMyApproval:59 -msgid "Search for approvals" -msgstr "簽核單查詢" - -#: html/Search/Simple.html:67 -msgid "Search for tickets" -msgstr "" - -#: html/Search/Simple.html:55 -msgid "Search for tickets. Enter <strong>id</strong> numbers, <strong>queues</strong> by name, Owners by <strong>username</strong> and Requestors by <strong>email address</strong>. RT will look for anything else you enter in ticket bodies and attachments." -msgstr "搜尋申請單。請鍵入<strong>編號</strong>、<strong>表單名稱</strong>、承辦人的<strong>使用者名稱</strong>、或申請人的<strong>電子郵件地址</strong>。以上格式之外的文字,則會在申請單內文及附件內檢索。" - -#: html/User/Elements/Tabs:62 -msgid "Search options" -msgstr "" - -#: html/Search/Chart.html:56 -#. ($PrimaryGroupBy) -msgid "Search results grouped by %1" -msgstr "搜尋結果,依 %1 分組" - -#: lib/RT/SavedSearch.pm:203 -#. ($msg) -msgid "Search update: %1" -msgstr "更新查詢:%1" - -#: NOT FOUND IN SOURCE -msgid "Searches can't be associated with that kind of object" -msgstr "不能對此類物件進行查詢" - -#: html/Search/Simple.html:57 -msgid "Searching the full text of every ticket can take a long time, but if you need to do it, you can search for any word in full ticket history for any word by typing <b>fulltext:<i>word</i></b>." -msgstr "對所有申請單的全文進行檢索,可能會需要很久的時間。但如果您真的有需要,可鍵入 <b>fulltext:<i>文字</i></b> 來搜尋申請單的所有紀錄。" - -#: NOT FOUND IN SOURCE -msgid "Second-" -msgstr "二" - -#: NOT FOUND IN SOURCE -msgid "Second-level Users" -msgstr "二階主管員工" - -#: bin/rt-crontool:265 -msgid "Security:" -msgstr "安全性:" - -#: html/Elements/ShowCustomFields:98 -msgid "See also:" -msgstr "" - -#: lib/RT/CustomField_Overlay.pm:105 -msgid "See custom fields" -msgstr "查閱自訂欄位" - -#: lib/RT/Queue_Overlay.pm:106 -msgid "See exact outgoing email messages and their recipeients" -msgstr "查閱送出的電子郵件及收件人" - -#: lib/RT/Queue_Overlay.pm:104 -msgid "See ticket private commentary" -msgstr "查閱申請單內的私人評論" - -#: lib/RT/Queue_Overlay.pm:103 -msgid "See ticket summaries" -msgstr "查閱申請單總覽" - -#: lib/RT/CustomField_Overlay.pm:105 -msgid "SeeCustomField" -msgstr "查閱自訂欄位" - -#: lib/RT/Group_Overlay.pm:169 -msgid "SeeGroup" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:91 -msgid "SeeQueue" -msgstr "查閱表單" - -#: NOT FOUND IN SOURCE -msgid "Select" -msgstr "選擇" - -#: NOT FOUND IN SOURCE -msgid "Select All" -msgstr "全選" - -#: html/Admin/CustomFields/index.html:46 html/Admin/CustomFields/index.html:49 -msgid "Select a Custom Field" -msgstr "選擇自訂欄位" - -#: html/Admin/Groups/index.html:78 -msgid "Select a group" -msgstr "選擇群組" - -#: html/Admin/Queues/index.html:54 -msgid "Select a queue" -msgstr "選擇表單" - -#: html/SelfService/CreateTicketInQueue.html:48 -msgid "Select a queue for your new ticket" -msgstr "為您新的申請單選擇一個表單" - -#: NOT FOUND IN SOURCE -msgid "Select a queue to link to" -msgstr "請選擇欲連結表單" - -#: html/Admin/Users/index.html:46 html/Admin/Users/index.html:49 html/Admin/Users/index.html:52 -msgid "Select a user" -msgstr "選擇使用者" - -#: html/Admin/Elements/CustomFieldTabs:90 -msgid "Select custom field" -msgstr "選擇自訂欄位" - -#: html/Admin/Global/CustomFields/index.html:70 -msgid "Select custom fields for all user groups" -msgstr "選擇適用於所有使用者群組的自訂欄位" - -#: html/Admin/Global/CustomFields/index.html:65 -msgid "Select custom fields for all users" -msgstr "選擇適用於所有使用者的自訂欄位" - -#: html/Admin/Global/CustomFields/index.html:76 -msgid "Select custom fields for tickets in all queues" -msgstr "選擇適用於所有表單內申請單的自訂欄位" - -#: html/Admin/Global/CustomFields/index.html:83 -msgid "Select custom fields for transactions on tickets in all queues" -msgstr "選擇適用於所有表單內申請單之更動的自訂欄位" - -#: html/Admin/Elements/GroupTabs:75 html/User/Elements/GroupTabs:71 -msgid "Select group" -msgstr "選擇群組" - -#: lib/RT/CustomField_Overlay.pm:59 -msgid "Select multiple values" -msgstr "選擇多重項目" - -#: lib/RT/CustomField_Overlay.pm:60 -msgid "Select one value" -msgstr "選擇單一項目" - -#: html/Admin/Elements/QueueTabs:92 -msgid "Select queue" -msgstr "選擇表單" - -#: html/Prefs/Quicksearch.html:53 -msgid "Select queues to be displayed on the \"RT at a glance\" page" -msgstr "" - -#: html/Admin/Global/Scrip.html:59 html/Admin/Global/Scrips.html:57 html/Admin/Queues/Scrip.html:67 html/Admin/Queues/Scrips.html:73 -msgid "Select scrip" -msgstr "選擇手續" - -#: html/Admin/Global/Template.html:78 html/Admin/Global/Templates.html:57 html/Admin/Queues/Template.html:76 html/Admin/Queues/Templates.html:68 -msgid "Select template" -msgstr "選擇範本" - -#: lib/RT/CustomField_Overlay.pm:61 -msgid "Select up to %1 values" -msgstr "選擇最多 %1 個值" - -#: html/Admin/Elements/UserTabs:78 -msgid "Select user" -msgstr "選擇使用者" - -#: NOT FOUND IN SOURCE -msgid "Select workflow" -msgstr "選擇流程" - -#: NOT FOUND IN SOURCE -msgid "SelectExternal" -msgstr "系統選項" - -#: NOT FOUND IN SOURCE -msgid "SelectMultiple" -msgstr "多重選項" - -#: NOT FOUND IN SOURCE -msgid "SelectSingle" -msgstr "單一選項" - -#: html/Admin/Elements/EditCustomFields:58 -msgid "Selected Custom Fields" -msgstr "已選取的自訂欄位" - -#: html/Admin/CustomFields/Objects.html:59 -msgid "Selected objects" -msgstr "已選取的物件" - -#: NOT FOUND IN SOURCE -msgid "Selected users:" -msgstr "已選取的使用者:" - -#: html/Widgets/SelectionBox:209 -msgid "Selections modified. Please save your changes" -msgstr "選取的項目已更改。請儲存您的更動" - -#: NOT FOUND IN SOURCE -msgid "Self Service" -msgstr "自助服務" - -#: etc/initialdata:121 -msgid "Send mail to all watchers" -msgstr "寄信給所有視察員" - -#: etc/initialdata:117 -msgid "Send mail to all watchers as a \"comment\"" -msgstr "以評論方式寄信給所有視察員" - -#: etc/initialdata:112 -msgid "Send mail to requestors and Ccs" -msgstr "寄信給申請人及副本收件人" - -#: etc/initialdata:107 -msgid "Send mail to requestors and Ccs as a comment" -msgstr "以評論方式寄信給申請人及副本收件人" - -#: etc/initialdata:78 -msgid "Sends a message to the requestors" -msgstr "寄信給申請人" - -#: etc/initialdata:125 etc/initialdata:129 -msgid "Sends mail to explicitly listed Ccs and Bccs" -msgstr "寄信給特定的副本及密件副本收件人" - -#: etc/initialdata:94 etc/upgrade/3.1.17/content:7 -msgid "Sends mail to the Ccs" -msgstr "寄信給副本收件人" - -#: etc/initialdata:90 etc/upgrade/3.1.17/content:3 -msgid "Sends mail to the Ccs as a comment" -msgstr "以評論方式寄信給副本收件人" - -#: etc/initialdata:102 -msgid "Sends mail to the administrative Ccs" -msgstr "寄信給管理員副本收件人" - -#: etc/initialdata:98 -msgid "Sends mail to the administrative Ccs as a comment" -msgstr "以評論寄信給管理員副本收件人" - -#: etc/initialdata:82 etc/initialdata:86 -msgid "Sends mail to the owner" -msgstr "寄信給申請人" - -#: NOT FOUND IN SOURCE -msgid "Sep" -msgstr "九月" - -#: lib/RT/Date.pm:449 -msgid "Sep." -msgstr "09" - -#: NOT FOUND IN SOURCE -msgid "September" -msgstr "九月" - -#: NOT FOUND IN SOURCE -msgid "Setting %1's 'Disabled' property to %2" -msgstr "%1 的「停用」屬性已設為 %2" - -#: NOT FOUND IN SOURCE -msgid "Shift Type" -msgstr "班別屬性" - -#: html/Ticket/Elements/ShowTransaction:158 -msgid "Show" -msgstr "顯示" - -#: html/Approvals/index.html:52 -msgid "Show Approvals" -msgstr "顯示待簽核申請單" - -#: html/Search/Elements/EditFormat:56 -msgid "Show Columns" -msgstr "顯示欄位" - -#: html/Ticket/Elements/Tabs:220 -msgid "Show Results" -msgstr "顯示結果" - -#: html/Approvals/Elements/PendingMyApproval:64 -msgid "Show approved requests" -msgstr "顯示已批准的簽核單" - -#: html/Ticket/Create.html:316 -msgid "Show basics" -msgstr "顯示基本資訊" - -#: html/Approvals/Elements/PendingMyApproval:65 -msgid "Show denied requests" -msgstr "顯示已駁回的簽核單" - -#: html/Ticket/Create.html:319 -msgid "Show details" -msgstr "顯示細節" - -#: html/Approvals/Elements/PendingMyApproval:63 -msgid "Show pending requests" -msgstr "顯示待處理的簽核單" - -#: html/Approvals/Elements/PendingMyApproval:66 -msgid "Show requests awaiting other approvals" -msgstr "顯示尚待他人批准的簽核單" - -#: NOT FOUND IN SOURCE -msgid "Show ticket private commentary" -msgstr "顯示申請單內的私人評論" - -#: NOT FOUND IN SOURCE -msgid "Show ticket summaries" -msgstr "顯示申請單摘要" - -#: lib/RT/Queue_Overlay.pm:93 -msgid "ShowACL" -msgstr "顯示權限清單" - -#: lib/RT/System.pm:85 -msgid "ShowConfigTab" -msgstr "" - -#: lib/RT/Queue_Overlay.pm:106 -msgid "ShowOutgoingEmail" -msgstr "顯示寄送郵件" - -#: lib/RT/Group_Overlay.pm:168 -msgid "ShowSavedSearches" -msgstr "顯示已儲存的查詢" - -#: lib/RT/Queue_Overlay.pm:102 -msgid "ShowScrips" -msgstr "顯示手續" - -#: lib/RT/Queue_Overlay.pm:99 -msgid "ShowTemplate" -msgstr "顯示範本" - -#: lib/RT/Queue_Overlay.pm:103 -msgid "ShowTicket" -msgstr "顯示申請單" - -#: lib/RT/Queue_Overlay.pm:104 -msgid "ShowTicketComments" -msgstr "顯示申請單的評論" - -#: lib/RT/Queue_Overlay.pm:107 -msgid "Sign up as a ticket Requestor or ticket or queue Cc" -msgstr "登記成為申請人或副本收件人" - -#: lib/RT/Queue_Overlay.pm:108 -msgid "Sign up as a ticket or queue AdminCc" -msgstr "登記成為管理員副本收件人" - -#: html/Admin/Users/Modify.html:230 html/User/Prefs.html:168 -msgid "Signature" -msgstr "簽名檔" - -#: NOT FOUND IN SOURCE -msgid "Signed in as %1" -msgstr "使用者:%1" - -#: html/Elements/Tabs:68 -msgid "Simple Search" -msgstr "" - -#: html/Admin/Elements/SelectSingleOrMultiple:47 -msgid "Single" -msgstr "單一" - -#: html/Search/Elements/EditFormat:75 -msgid "Size" -msgstr "" - -#: html/Elements/Header:89 -msgid "Skip Menu" -msgstr "略過選單" - -#: html/Search/Elements/EditFormat:78 -msgid "Small" -msgstr "" - -#: html/Admin/CustomFields/Modify.html:120 -msgid "Some browsers may only load content from the same domain as your RT server." -msgstr "某些瀏覽器只允許載入和 RT 伺服器同一個網域的內容。" - -#: html/Admin/Elements/AddCustomFieldValue:49 html/Admin/Elements/EditCustomFieldValues:54 -msgid "Sort" -msgstr "順序" - -#: NOT FOUND IN SOURCE -msgid "Sort key" -msgstr "排序方式" - -#: NOT FOUND IN SOURCE -msgid "Sort results by" -msgstr "結果排序方式" - -#: NOT FOUND IN SOURCE -msgid "SortOrder" -msgstr "排序順序" - -#: html/Admin/Elements/EditScrip:78 -msgid "Stage" -msgstr "關卡" - -#: NOT FOUND IN SOURCE -msgid "Stage Action" -msgstr "關卡運行動作" - -#: NOT FOUND IN SOURCE -msgid "Stage Condition" -msgstr "關卡運行條件" - -#: NOT FOUND IN SOURCE -msgid "Stalled" -msgstr "延宕" - -#: NOT FOUND IN SOURCE -msgid "Start page" -msgstr "首頁" - -#: html/Elements/SelectDateType:48 html/Ticket/Elements/EditDates:53 html/Ticket/Elements/ShowDates:56 -msgid "Started" -msgstr "實際起始日" - -#: NOT FOUND IN SOURCE -msgid "Started date '%1' could not be parsed" -msgstr "無法解讀起始日期 '%1" - -#: html/Elements/SelectDateType:52 html/Ticket/Create.html:208 html/Ticket/Elements/EditDates:48 html/Ticket/Elements/ShowDates:52 -msgid "Starts" -msgstr "應起始日" - -#: NOT FOUND IN SOURCE -msgid "Starts By" -msgstr "應起始日" - -#: NOT FOUND IN SOURCE -msgid "Starts date '%1' could not be parsed" -msgstr "無法解讀起始日期 '%1" - -#: html/Admin/Users/Modify.html:162 html/User/Prefs.html:145 -msgid "State" -msgstr "州" - -#: html/Search/Elements/PickBasics:87 html/SelfService/Update.html:57 html/Ticket/Create.html:66 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:52 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:1651 -msgid "Status" -msgstr "現況" - -#: etc/initialdata:309 -msgid "Status Change" -msgstr "現況改變時" - -#: NOT FOUND IN SOURCE -msgid "Status changed from %1 to %2" -msgstr "現況從 %1 改為 %2" - -#: NOT FOUND IN SOURCE -msgid "StatusChange" -msgstr "現況改變時" - -#: html/Ticket/Elements/Tabs:178 -msgid "Steal" -msgstr "強制更換承辦人" - -#: lib/RT/Queue_Overlay.pm:117 -msgid "Steal tickets" -msgstr "強制承辦申請單" - -#: lib/RT/Queue_Overlay.pm:117 -msgid "StealTicket" -msgstr "強制承辦申請單" - -#: lib/RT/Transaction_Overlay.pm:678 -#. ($Old->Name) -msgid "Stolen from %1" -msgstr "承辦人從 %1 強制更換" - -#: NOT FOUND IN SOURCE -msgid "Stolen from %1 " -msgstr "承辦人從 %1 強制更換 " - -#: html/Search/Elements/EditFormat:81 -msgid "Style" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Subgroup" -msgstr "子群組" - -#: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:132 html/SelfService/Create.html:79 html/SelfService/Update.html:65 html/Ticket/Create.html:108 html/Ticket/Elements/EditBasics:48 html/Ticket/Elements/Reminders:125 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:82 lib/RT/Ticket_Overlay.pm:1162 lib/RT/Tickets_Overlay.pm:1733 -msgid "Subject" -msgstr "主題" - -#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm:700 -#. ($self->Data) -msgid "Subject changed to %1" -msgstr "標題已改為 %1" - -#: html/Elements/Submit:75 -msgid "Submit" -msgstr "送出" - -#: NOT FOUND IN SOURCE -msgid "Submit Workflow" -msgstr "送出流程" - -#: lib/RT/Group_Overlay.pm:774 -msgid "Succeeded" -msgstr "設定成功" - -#: NOT FOUND IN SOURCE -msgid "Sun" -msgstr "星期日" - -#: lib/RT/Date.pm:423 -msgid "Sun." -msgstr "星期日" - -#: lib/RT/System.pm:75 -msgid "SuperUser" -msgstr "系統管理員" - -#: NOT FOUND IN SOURCE -msgid "Sync now" -msgstr "執行同步" - -#: NOT FOUND IN SOURCE -msgid "Sync104HRMS" -msgstr "自動同步104HRMS" - -#: NOT FOUND IN SOURCE -msgid "Synchronizing HRMS data. This may take a while..." -msgstr "正在同步化 HRMS 人事系統資料。請稍待..." - -#: html/User/Elements/DelegateRights:98 -msgid "System" -msgstr "系統" - -#: html/Admin/Elements/ToolTabs:54 html/Admin/Tools/Configuration.html:48 -msgid "System Configuration" -msgstr "系統設定" - -#: NOT FOUND IN SOURCE -msgid "System Defined" -msgstr "系統定義" - -#: html/Admin/CustomFields/GroupRights.html:128 html/Admin/CustomFields/GroupRights.html:155 html/Admin/CustomFields/UserRights.html:128 html/Admin/CustomFields/UserRights.html:98 html/Admin/Elements/SelectRights:106 lib/RT/ACE_Overlay.pm:584 lib/RT/Interface/Web.pm:960 lib/RT/Interface/Web.pm:989 -msgid "System Error" -msgstr "系統錯誤" - -#: NOT FOUND IN SOURCE -msgid "System Error. Right not granted." -msgstr "系統錯誤。設定權限失敗。" - -#: NOT FOUND IN SOURCE -msgid "System Error. right not granted" -msgstr "系統錯誤。設定權限失敗。" - -#: lib/RT/Transaction_Overlay.pm:224 lib/RT/Transaction_Overlay.pm:230 -#. ($msg) -msgid "System Error: %1" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "System Rights" -msgstr "系統權限" - -#: html/Admin/Tools/index.html:47 -msgid "System Tools" -msgstr "系統工具" - -#: lib/RT/ACE_Overlay.pm:633 -msgid "System error. Right not delegated." -msgstr "系統錯誤。權限代理失敗。" - -#: lib/RT/ACE_Overlay.pm:163 lib/RT/ACE_Overlay.pm:228 lib/RT/ACE_Overlay.pm:323 lib/RT/ACE_Overlay.pm:920 -msgid "System error. Right not granted." -msgstr "系統錯誤。設定權限失敗。" - -#: NOT FOUND IN SOURCE -msgid "System error. Unable to grant rights." -msgstr "系統錯誤。無法設定權限。" - -#: html/Admin/CustomFields/GroupRights.html:58 html/Admin/Global/GroupRights.html:56 html/Admin/Groups/GroupRights.html:58 html/Admin/Queues/GroupRights.html:57 -msgid "System groups" -msgstr "系統群組" - -#: NOT FOUND IN SOURCE -msgid "SystemInternal" -msgstr "系統內部用" - -#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 -msgid "SystemRolegroup for internal use" -msgstr "內部使用的系統角色群組" - -#: lib/RT/CurrentUser.pm:357 -msgid "TEST_STRING" -msgstr "TEST_STRING" - -#: NOT FOUND IN SOURCE -msgid "TabbedUI" -msgstr "頁籤介面" - -#: etc/initialdata:603 html/Search/Elements/EditFormat:72 html/Ticket/Elements/Tabs:170 -msgid "Take" -msgstr "受理" - -#: lib/RT/Queue_Overlay.pm:115 -msgid "Take tickets" -msgstr "自行承辦申請單" - -#: lib/RT/Queue_Overlay.pm:115 -msgid "TakeTicket" -msgstr "自行承辦申請單" - -#: lib/RT/Transaction_Overlay.pm:663 -msgid "Taken" -msgstr "已受理" - -#: NOT FOUND IN SOURCE -msgid "Task" -msgstr "工作事項" - -#: html/Admin/Elements/EditScrip:71 html/Tools/Offline.html:78 -msgid "Template" -msgstr "範本" - -#: html/Admin/Global/Template.html:112 html/Admin/Queues/Template.html:113 -#. ($TemplateObj->Id()) -msgid "Template #%1" -msgstr "範本 #%1" - -#: NOT FOUND IN SOURCE -msgid "Template Content" -msgstr "通知範本內容" - -#: NOT FOUND IN SOURCE -msgid "Template Description" -msgstr "通知範本描述" - -#: NOT FOUND IN SOURCE -msgid "Template Name" -msgstr "通知範本名稱" - -#: html/Admin/Elements/EditTemplates:110 -msgid "Template deleted" -msgstr "範本已刪除" - -#: lib/RT/Scrip_Overlay.pm:176 -msgid "Template is mandatory argument" -msgstr "" - -#: lib/RT/Scrip_Overlay.pm:180 -msgid "Template not found" -msgstr "找不到範本" - -#: NOT FOUND IN SOURCE -msgid "Template not found\\n" -msgstr "找不到範本\\n" - -#: lib/RT/Template_Overlay.pm:343 -msgid "Template parsed" -msgstr "範本剖析完畢" - -#: lib/RT/Template_Overlay.pm:391 -msgid "Template parsing error" -msgstr "" - -#: html/Admin/Elements/QueueTabs:70 html/Admin/Elements/SystemTabs:57 html/Admin/Global/index.html:66 -msgid "Templates" -msgstr "範本" - -#: NOT FOUND IN SOURCE -msgid "Templates " -msgstr "通知範本" - -#: NOT FOUND IN SOURCE -msgid "Templates for %1\\n" -msgstr "找不到 %1 的範本\\n" - -#: NOT FOUND IN SOURCE -msgid "Text" -msgstr "文字" - -#: lib/RT/CustomField_Overlay.pm:943 lib/RT/Record.pm:945 -msgid "That is already the current value" -msgstr "已經是目前欄位的值" - -#: lib/RT/CustomField_Overlay.pm:412 -msgid "That is not a value for this custom field" -msgstr "這不是該自訂欄位的值" - -#: lib/RT/Ticket_Overlay.pm:1994 -msgid "That is the same value" -msgstr "同樣的值" - -#: lib/RT/ACE_Overlay.pm:305 lib/RT/ACE_Overlay.pm:614 -msgid "That principal already has that right" -msgstr "這項單位已經擁有該權限" - -#: lib/RT/Queue_Overlay.pm:753 -#. ($args{'Type'}) -msgid "That principal is already a %1 for this queue" -msgstr "這項單位已經是這個表單的 %1" - -#: lib/RT/Ticket_Overlay.pm:1435 -#. ($self->loc($args{'Type'})) -msgid "That principal is already a %1 for this ticket" -msgstr "這項單位已經是這份申請單的 %1" - -#: lib/RT/Queue_Overlay.pm:852 -#. ($args{'Type'}) -msgid "That principal is not a %1 for this queue" -msgstr "這項單位不是這個表單的 %1" - -#: NOT FOUND IN SOURCE -msgid "That principal is not a %1 for this ticket" -msgstr "這項單位不是這份申請單的 %1" - -#: lib/RT/Ticket_Overlay.pm:1990 -msgid "That queue does not exist" -msgstr "此表單不存在" - -#: lib/RT/Ticket_Overlay.pm:3233 -msgid "That ticket has unresolved dependencies" -msgstr "這份申請單有尚未解決的附屬申請單" - -#: NOT FOUND IN SOURCE -msgid "That user already has that right" -msgstr "使用者已具有該項權限" - -#: lib/RT/Action/CreateTickets.pm:710 lib/RT/Ticket_Overlay.pm:3037 -msgid "That user already owns that ticket" -msgstr "該使用者已經承辦這份申請單" - -#: lib/RT/Ticket_Overlay.pm:3012 -msgid "That user does not exist" -msgstr "使用者不存在" - -#: lib/RT/User_Overlay.pm:389 -msgid "That user is already privileged" -msgstr "這名使用者已經是內部成員" - -#: lib/RT/User_Overlay.pm:410 -msgid "That user is already unprivileged" -msgstr "這名使用者屬於非內部成員群組" - -#: lib/RT/User_Overlay.pm:402 -msgid "That user is now privileged" -msgstr "使用者加入內部成員群組完畢" - -#: lib/RT/User_Overlay.pm:423 -msgid "That user is now unprivileged" -msgstr "這名使用者已加入非內部成員群組" - -#: NOT FOUND IN SOURCE -msgid "That user is now unprivilegedileged" -msgstr "這名使用者已加入非內部成員群組" - -#: lib/RT/Ticket_Overlay.pm:3031 -msgid "That user may not own tickets in that queue" -msgstr "使用者可能沒有承辦表單裡的申請單" - -#: lib/RT/Link_Overlay.pm:233 -msgid "That's not a numerical id" -msgstr "這不是一個數字編號" - -#: html/SelfService/Display.html:53 html/Ticket/Create.html:177 html/Ticket/Elements/ShowSummary:49 -msgid "The Basics" -msgstr "基本資訊" - -#: lib/RT/ACE_Overlay.pm:112 -msgid "The CC of a ticket" -msgstr "申請單的副本收件人" - -#: lib/RT/ACE_Overlay.pm:113 -msgid "The administrative CC of a ticket" -msgstr "申請單的管理員副本收件人" - -#: NOT FOUND IN SOURCE -msgid "The comment has been recorded" -msgstr "評論已被紀錄" - -#: bin/rt-crontool:275 -msgid "The following command will find all active tickets in the queue 'general' and set their priority to 99 if they haven't been touched in 4 hours:" -msgstr "下列命令會找到 'general' 表單內所有運作中的申請單,並將其中 4 小時內未處理的申請單優先程度設為 99:" - -#: NOT FOUND IN SOURCE -msgid "The following commands were not proccessed:\\n\\n" -msgstr "以下命令未被執行:\\n\\n" - -#: lib/RT/Record.pm:948 -msgid "The new value has been set." -msgstr "新的欄位值設定完成。" - -#: lib/RT/ACE_Overlay.pm:110 -msgid "The owner of a ticket" -msgstr "申請單的承辦人" - -#: lib/RT/ACE_Overlay.pm:111 -msgid "The requestor of a ticket" -msgstr "申請單的申請人" - -#: html/Admin/Elements/EditUserComments:47 -msgid "These comments aren't generally visible to the user" -msgstr "該使用者不會看見這些評論" - -#: NOT FOUND IN SOURCE -msgid "Third-" -msgstr "三" - -#: lib/RT/CustomField_Overlay.pm:978 -msgid "This custom field does not apply to that object" -msgstr "此自訂欄位不適用於該物件" - -#: html/Admin/Tools/Configuration.html:50 -msgid "This feature is only available to system administrators" -msgstr "此項功能僅限系統管理員使用" - -#: html/Ticket/Elements/PreviewScrips:96 -msgid "This message will be sent to..." -msgstr "此訊息會寄給..." - -#: NOT FOUND IN SOURCE -msgid "This ticket %1 %2 (%3)\\n" -msgstr "申請單 %1 %2 (%3)\\n" - -#: bin/rt-crontool:266 -msgid "This tool allows the user to run arbitrary perl modules from within RT." -msgstr "此工具程式會讓使用者經由 RT 執行任意命令。" - -#: lib/RT/Transaction_Overlay.pm:301 -msgid "This transaction appears to have no content" -msgstr "此項更動報告沒有內容" - -#: html/Ticket/Elements/ShowRequestor:70 -#. ($rows) -msgid "This user's %1 highest priority tickets" -msgstr "使用者送出的前 %1 份優先處理申請單" - -#: NOT FOUND IN SOURCE -msgid "This user's 25 highest priority tickets" -msgstr "使用者送出的前 25 份優先處理申請單" - -#: NOT FOUND IN SOURCE -msgid "Thu" -msgstr "星期四" - -#: lib/RT/Date.pm:420 -msgid "Thu." -msgstr "星期四" - -#: NOT FOUND IN SOURCE -msgid "Ticket" -msgstr "申請單" - -#: NOT FOUND IN SOURCE -msgid "Ticket # %1 %2" -msgstr "申請單 # %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Ticket # %1 Jumbo update: %2" -msgstr "更新申請單 # %1 的全部資訊:%2" - -#: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket #%1 Jumbo update: %2" -msgstr "更新申請單 #%1 的全部資訊:%2" - -#: html/Approvals/Elements/ShowDependency:67 -#. ($link->BaseObj->Id, $link->BaseObj->Subject) -msgid "Ticket #%1: %2" -msgstr "申請單 #%1: %2" - -#: lib/RT/Action/CreateTickets.pm:1350 lib/RT/Action/CreateTickets.pm:1359 lib/RT/Action/CreateTickets.pm:605 lib/RT/Action/CreateTickets.pm:729 lib/RT/Action/CreateTickets.pm:741 -#. ($T::Tickets{$template_id}->Id) -#. ($T::Tickets{$template_id}->id) -#. ($ticket->Id) -msgid "Ticket %1" -msgstr "申請單 %1" - -#: lib/RT/Ticket_Overlay.pm:755 lib/RT/Ticket_Overlay.pm:775 -#. ($self->Id, $QueueObj->Name) -msgid "Ticket %1 created in queue '%2'" -msgstr "申請單 #%1 成功新增於 '%2' 表單" - -#: NOT FOUND IN SOURCE -msgid "Ticket %1 loaded\\n" -msgstr "載入申請單 %1\\n" - -#: html/Search/Bulk.html:377 -#. ($Ticket->Id, $_) -msgid "Ticket %1: %2" -msgstr "申請單 %1:%2" - -#: html/Admin/Elements/QueueTabs:74 -msgid "Ticket Custom Fields" -msgstr "申請單的自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Ticket Due" -msgstr "表單處理期限" - -#: html/Ticket/History.html:46 html/Ticket/History.html:49 -#. ($Ticket->Id, $Ticket->Subject) -msgid "Ticket History # %1 %2" -msgstr "申請單處理紀錄 # %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Ticket ID" -msgstr "單號" - -#: NOT FOUND IN SOURCE -msgid "Ticket Id" -msgstr "申請單編號" - -#: NOT FOUND IN SOURCE -msgid "Ticket Processing Due" -msgstr "表單運行期限" - -#: etc/initialdata:324 -msgid "Ticket Resolved" -msgstr "申請單已解決" - -#: html/Admin/Elements/GlobalCustomFieldTabs:69 html/Admin/Global/CustomFields/index.html:81 lib/RT/CustomField_Overlay.pm:1207 -msgid "Ticket Transactions" -msgstr "申請單的更動" - -#: NOT FOUND IN SOURCE -msgid "Ticket Type" -msgstr "表單種類" - -#: NOT FOUND IN SOURCE -msgid "Ticket attachment" -msgstr "申請單附件" - -#: lib/RT/Tickets_Overlay.pm:1920 -msgid "Ticket content" -msgstr "申請單內容" - -#: lib/RT/Tickets_Overlay.pm:1969 -msgid "Ticket content type" -msgstr "申請單內容類別" - -#: lib/RT/Ticket_Overlay.pm:603 lib/RT/Ticket_Overlay.pm:617 lib/RT/Ticket_Overlay.pm:628 lib/RT/Ticket_Overlay.pm:763 -msgid "Ticket could not be created due to an internal error" -msgstr "內部錯誤,無法新增申請單" - -#: NOT FOUND IN SOURCE -msgid "Ticket created" -msgstr "申請單新增完畢" - -#: NOT FOUND IN SOURCE -msgid "Ticket creation failed" -msgstr "申請單新增失敗" - -#: NOT FOUND IN SOURCE -msgid "Ticket deleted" -msgstr "申請單刪除完畢" - -#: NOT FOUND IN SOURCE -msgid "Ticket id not found" -msgstr "找不到申請單編號" - -#: NOT FOUND IN SOURCE -msgid "Ticket killed" -msgstr "申請單刪除完畢" - -#: html/Ticket/Display.html:55 -msgid "Ticket metadata" -msgstr "申請單的描述資訊" - -#: NOT FOUND IN SOURCE -msgid "Ticket not found" -msgstr "找不到申請單" - -#: etc/initialdata:310 -msgid "Ticket status changed" -msgstr "申請單現況已改變" - -#: NOT FOUND IN SOURCE -msgid "Ticket watchers" -msgstr "申請單視察員" - -#: lib/RT/Search/FromSQL.pm:82 -#. (ref $self) -msgid "TicketSQL search module" -msgstr "" - -#: html/Admin/Elements/GlobalCustomFieldTabs:64 html/Admin/Global/CustomFields/index.html:75 html/Elements/Tabs:71 html/Search/Elements/Chart:109 lib/RT/CustomField_Overlay.pm:1206 -msgid "Tickets" -msgstr "申請單" - -#: NOT FOUND IN SOURCE -msgid "Tickets %1 %2" -msgstr "申請單 %1 %2" - -#: NOT FOUND IN SOURCE -msgid "Tickets %1 by %2" -msgstr "申請單 %1 (%2)" - -#: NOT FOUND IN SOURCE -msgid "Tickets I own" -msgstr "待處理的申請單" - -#: NOT FOUND IN SOURCE -msgid "Tickets I requested" -msgstr "送出的申請單" - -#: html/Tools/Reports/CreatedByDates.html:86 -msgid "Tickets created after" -msgstr "" - -#: html/Tools/Reports/CreatedByDates.html:88 -msgid "Tickets created before" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "Tickets from %1" -msgstr "%1 的申請單" - -#: html/Tools/Reports/ResolvedByDates.html:87 -msgid "Tickets resolved after" -msgstr "" - -#: html/Tools/Reports/ResolvedByDates.html:89 -msgid "Tickets resolved before" -msgstr "" - -#: html/Approvals/Elements/ShowDependency:48 -msgid "Tickets which depend on this approval:" -msgstr "批准之後,可接續處理:" - -#: html/Search/Elements/PickBasics:134 html/Ticket/Create.html:183 html/Ticket/Elements/EditBasics:72 -msgid "Time Estimated" -msgstr "預計時間" - -#: html/Search/Elements/PickBasics:135 html/Ticket/Create.html:196 html/Ticket/Elements/EditBasics:85 -msgid "Time Left" -msgstr "剩餘時間" - -#: html/Search/Elements/PickBasics:133 html/Ticket/Create.html:189 html/Ticket/Elements/EditBasics:78 -msgid "Time Worked" -msgstr "處理時間" - -#: lib/RT/Tickets_Overlay.pm:1891 -msgid "Time left" -msgstr "剩餘時間" - -#: html/Elements/Footer:51 -msgid "Time to display" -msgstr "顯示時間" - -#: lib/RT/Tickets_Overlay.pm:1866 -msgid "Time worked" -msgstr "已處理時間" - -#: NOT FOUND IN SOURCE -msgid "TimeLeft" -msgstr "剩餘時間" - -#: lib/RT/Ticket_Overlay.pm:1167 -msgid "TimeWorked" -msgstr "已處理時間" - -#: html/Search/Elements/EditFormat:74 -msgid "Title" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "To generate a diff of this commit:" -msgstr "產生這次更動的差異檔:" - -#: NOT FOUND IN SOURCE -msgid "To generate a diff of this commit:\\n" -msgstr "產生這次更動的差異檔:\\n" - -#: html/Elements/Footer:62 -#. ('<a href="mailto:sales@bestpractical.com">sales@bestpractical.com</a>') -msgid "To inquire about support, training, custom development or licensing, please contact %1." -msgstr "如果有支援、教育訓練及定製開發的需要,請連絡 %1。" - -#: NOT FOUND IN SOURCE -msgid "Todo" -msgstr "待辦事項" - -#: lib/RT/Ticket_Overlay.pm:1170 -msgid "Told" -msgstr "告知日期" - -#: html/Admin/Elements/Tabs:68 html/Admin/index.html:88 html/Elements/Tabs:74 html/Tools/index.html:46 html/Tools/index.html:49 -msgid "Tools" -msgstr "工具" - -#: html/Search/Elements/Chart:130 -msgid "Total" -msgstr "頁" - -#: etc/initialdata:252 -msgid "Transaction" -msgstr "更動" - -#: lib/RT/Transaction_Overlay.pm:805 -#. ($self->Data) -msgid "Transaction %1 purged" -msgstr "清除更動報告 %1" - -#: lib/RT/Transaction_Overlay.pm:183 -msgid "Transaction Created" -msgstr "更動報告已新增" - -#: html/Admin/Elements/QueueTabs:78 -msgid "Transaction Custom Fields" -msgstr "更動的自訂欄位" - -#: NOT FOUND IN SOURCE -msgid "Transaction->Create couldn't, as you didn't specify a ticket id" -msgstr "未指定申請單編號,無法新增更動" - -#: lib/RT/Transaction_Overlay.pm:128 -msgid "Transaction->Create couldn't, as you didn't specify an object type and id" -msgstr "未指定物件類別及編號,無法新增更動" - -#: NOT FOUND IN SOURCE -msgid "TransactionBatch" -msgstr "批次更動時" - -#: NOT FOUND IN SOURCE -msgid "TransactionCreate" -msgstr "新增更動時" - -#: lib/RT/Transaction_Overlay.pm:870 -msgid "Transactions are immutable" -msgstr "不可更改更動報告" - -#: NOT FOUND IN SOURCE -msgid "Transfer to" -msgstr "移交給" - -#: NOT FOUND IN SOURCE -msgid "Trying to delete a right: %1" -msgstr "試圖刪除某項權限:%1" - -#: NOT FOUND IN SOURCE -msgid "Tue" -msgstr "星期二" - -#: lib/RT/Date.pm:418 -msgid "Tue." -msgstr "星期二" - -#: html/Admin/CustomFields/Modify.html:66 html/Admin/Elements/EditCustomField:65 html/Ticket/Elements/AddWatchers:54 html/Ticket/Elements/AddWatchers:65 html/Ticket/Elements/AddWatchers:75 lib/RT/Ticket_Overlay.pm:1168 lib/RT/Tickets_Overlay.pm:1705 -msgid "Type" -msgstr "類別" - -#: lib/RT/ScripCondition_Overlay.pm:128 -msgid "Unimplemented" -msgstr "尚無實作" - -#: html/Admin/Users/Modify.html:89 -msgid "Unix login" -msgstr "外部系統登入帳號" - -#: NOT FOUND IN SOURCE -msgid "UnixUsername" -msgstr "外部系統登入帳號" - -#: lib/RT/Attachment_Overlay.pm:289 lib/RT/Record.pm:861 -#. ($self->ContentEncoding) -#. ($ContentEncoding) -msgid "Unknown ContentEncoding %1" -msgstr "不可解的內容文字編碼方式 %1" - -#: html/Search/Build.html:455 lib/RT/Report/Tickets.pm:410 -msgid "Unknown field: $key" -msgstr "" - -#: html/Elements/SelectResultsPerPage:58 -msgid "Unlimited" -msgstr "全數顯示" - -#: html/Search/Elements/SelectSearchesForObjects:64 -msgid "Unnamed search" -msgstr "未命名的查詢" - -#: etc/initialdata:32 -msgid "Unprivileged" -msgstr "非內部成員" - -#: html/Admin/Elements/EditCustomFields:60 -msgid "Unselected Custom Fields" -msgstr "未選取的自訂欄位" - -#: html/Admin/CustomFields/Objects.html:61 -msgid "Unselected objects" -msgstr "未選取的物件" - -#: lib/RT/Transaction_Overlay.pm:659 -msgid "Untaken" -msgstr "未被受理" - -#: NOT FOUND IN SOURCE -msgid "Untitled search" -msgstr "未命名的查詢" - -#: NOT FOUND IN SOURCE -msgid "Up" -msgstr "上一頁" - -#: html/Admin/Elements/EditScrip:128 html/Elements/RT__Ticket/ColumnMap:302 html/Search/Bulk.html:193 html/Search/Bulk.html:75 -msgid "Update" -msgstr "處理" - -#: NOT FOUND IN SOURCE -msgid "Update All" -msgstr "全部更新" - -#: NOT FOUND IN SOURCE -msgid "Update ID" -msgstr "更新編號" - -#: html/Ticket/Update.html:135 -msgid "Update Ticket" -msgstr "更新申請單" - -#: html/Search/Bulk.html:126 html/Ticket/ModifyAll.html:87 html/Ticket/Update.html:72 -msgid "Update Type" -msgstr "更新類別" - -#: NOT FOUND IN SOURCE -msgid "Update all these tickets at once" -msgstr "整批更新申請單" - -#: NOT FOUND IN SOURCE -msgid "Update email" -msgstr "更新電子郵件信箱" - -#: html/Search/Bulk.html:200 html/Search/Results.html:78 -msgid "Update multiple tickets" -msgstr "批次更新申請單" - -#: NOT FOUND IN SOURCE -msgid "Update name" -msgstr "更新帳號" - -#: lib/RT/Action/CreateTickets.pm:750 lib/RT/Interface/Web.pm:584 -msgid "Update not recorded." -msgstr "更新未被記錄" - -#: NOT FOUND IN SOURCE -msgid "Update selected tickets" -msgstr "更新選擇的申請單" - -#: NOT FOUND IN SOURCE -msgid "Update signature" -msgstr "更新簽章" - -#: html/Ticket/ModifyAll.html:84 -msgid "Update ticket" -msgstr "更新申請單" - -#: NOT FOUND IN SOURCE -msgid "Update ticket # %1" -msgstr "更新申請單 # %1" - -#: html/SelfService/Update.html:112 html/SelfService/Update.html:47 -#. ($Ticket->id) -msgid "Update ticket #%1" -msgstr "更新申請單 #%1" - -#: html/Ticket/Update.html:158 -#. ($TicketObj->id, $TicketObj->Subject) -msgid "Update ticket #%1 (%2)" -msgstr "更新申請單 #%1 (%2)" - -#: lib/RT/Action/CreateTickets.pm:748 lib/RT/Interface/Web.pm:583 -msgid "Update type was neither correspondence nor comment." -msgstr "更新的內容並非申請單回覆也不是評論" - -#: html/Elements/SelectDateType:54 html/Ticket/Elements/ShowDates:72 lib/RT/CustomField_Overlay.pm:1284 lib/RT/Ticket_Overlay.pm:1171 -msgid "Updated" -msgstr "前次更新" - -#: html/Tools/Offline.html:93 -msgid "Upload" -msgstr "上載" - -#: lib/RT/CustomField_Overlay.pm:84 -msgid "Upload multiple files" -msgstr "上載多個檔案" - -#: lib/RT/CustomField_Overlay.pm:79 -msgid "Upload multiple images" -msgstr "上載多份圖片" - -#: lib/RT/CustomField_Overlay.pm:85 -msgid "Upload one file" -msgstr "上載一個檔案" - -#: lib/RT/CustomField_Overlay.pm:80 -msgid "Upload one image" -msgstr "上載一份圖片" - -#: lib/RT/CustomField_Overlay.pm:86 -msgid "Upload up to %1 files" -msgstr "上載最多 %1 個檔案" - -#: lib/RT/CustomField_Overlay.pm:81 -msgid "Upload up to %1 images" -msgstr "上載最多 %1 份圖片" - -#: html/Tools/Offline.html:93 -msgid "Upload your changes" -msgstr "上載您的更動" - -#: html/Admin/index.html:90 -msgid "Use other RT administrative tools" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "User" -msgstr "使用者" - -#: NOT FOUND IN SOURCE -msgid "User %1 %2: %3\\n" -msgstr "使用者 %1 %2:%3\\n" - -#: NOT FOUND IN SOURCE -msgid "User %1 Password: %2\\n" -msgstr "使用者 %1 密碼:%2\\n" - -#: lib/RT/Ticket_Overlay.pm:506 -#. ($args{'Owner'}) -msgid "User '%1' could not be found." -msgstr "找不到使用者 '%1'。" - -#: NOT FOUND IN SOURCE -msgid "User '%1' not found" -msgstr "找不到使用者 '%1'" - -#: NOT FOUND IN SOURCE -msgid "User '%1' not found\\n" -msgstr "找不到使用者 '%1'\\n" - -#: etc/initialdata:132 etc/initialdata:206 -msgid "User Defined" -msgstr "使用者自訂" - -#: html/Admin/Elements/EditScrip:93 -msgid "User Defined conditions and actions" -msgstr "使用者自訂的條件及動作" - -#: NOT FOUND IN SOURCE -msgid "User ID" -msgstr "使用者 ID" - -#: NOT FOUND IN SOURCE -msgid "User Id" -msgstr "使用者 ID" - -#: NOT FOUND IN SOURCE -msgid "User Number" -msgstr "員工編號" - -#: html/Admin/Elements/CustomFieldTabs:72 html/Admin/Elements/GroupTabs:68 html/Admin/Elements/QueueTabs:85 html/Admin/Elements/SystemTabs:68 html/Admin/Global/index.html:80 -msgid "User Rights" -msgstr "使用者權限" - -#: NOT FOUND IN SOURCE -msgid "User Setup" -msgstr "使用者設定" - -#: NOT FOUND IN SOURCE -msgid "User Shift" -msgstr "員工班別" - -#: NOT FOUND IN SOURCE -msgid "User asked for an unknown update type for custom field %1 for %2 object #%3" -msgstr "使用者試圖在 %2 物件 #%3 的自訂欄位 %1 上執行未知的更新操作" - -#: html/Admin/Users/Modify.html:301 -#. ($msg) -msgid "User could not be created: %1" -msgstr "無法新增使用者:%1" - -#: lib/RT/User_Overlay.pm:330 -msgid "User created" -msgstr "使用者新增完畢" - -#: NOT FOUND IN SOURCE -msgid "User created: %1" -msgstr "使用者 %1 新增完畢" - -#: NOT FOUND IN SOURCE -msgid "User created: %1 (%2)" -msgstr "使用者 %1 (%2) 新增完畢" - -#: html/Admin/CustomFields/GroupRights.html:74 html/Admin/Global/GroupRights.html:88 html/Admin/Groups/GroupRights.html:75 html/Admin/Queues/GroupRights.html:90 -msgid "User defined groups" -msgstr "使用者定義的群組" - -#: lib/RT/User_Overlay.pm:592 lib/RT/User_Overlay.pm:612 -msgid "User loaded" -msgstr "已載入使用者" - -#: NOT FOUND IN SOURCE -msgid "User notified" -msgstr "已通知使用者" - -#: NOT FOUND IN SOURCE -msgid "User renamed from %1 to %2" -msgstr "使用者 %1 已改名為 %2" - -#: NOT FOUND IN SOURCE -msgid "User view" -msgstr "使用者私人資料" - -#: html/Admin/Groups/index.html:103 -msgid "User-defined groups" -msgstr "使用者自定群組" - -#: NOT FOUND IN SOURCE -msgid "UserDefined" -msgstr "使用者自定" - -#: html/Admin/Users/Modify.html:69 html/Elements/Login:90 html/Ticket/Elements/AddWatchers:56 -msgid "Username" -msgstr "帳號" - -#: html/Admin/Elements/GlobalCustomFieldTabs:55 html/Admin/Elements/SelectNewGroupMembers:47 html/Admin/Elements/Tabs:53 html/Admin/Global/CustomFields/index.html:64 html/Admin/Groups/Members.html:76 html/Admin/Queues/People.html:89 html/Admin/index.html:62 html/User/Groups/Members.html:79 lib/RT/CustomField_Overlay.pm:1208 -msgid "Users" -msgstr "使用者" - -#: html/Admin/Users/index.html:85 -msgid "Users matching search criteria" -msgstr "符合查詢條件的使用者" - -#: bin/rt-crontool:134 -#. ($transaction->id) -msgid "Using transaction #%1..." -msgstr "使用更動 #%1..." - -#: lib/RT/Tickets_Overlay_SQL.pm:528 -msgid "Valid Query" -msgstr "合理的查詢" - -#: html/Admin/CustomFields/Modify.html:80 -msgid "Validation" -msgstr "驗證" - -#: NOT FOUND IN SOURCE -msgid "ValueOfQueue" -msgstr "選擇表單" - -#: html/Admin/CustomFields/Modify.html:130 html/Admin/Elements/EditCustomField:78 -msgid "Values" -msgstr "欄位值" - -#: NOT FOUND IN SOURCE -msgid "View log" -msgstr "檢視紀錄檔" - -#: lib/RT/Queue_Overlay.pm:107 -msgid "Watch" -msgstr "視察" - -#: lib/RT/Queue_Overlay.pm:108 -msgid "WatchAsAdminCc" -msgstr "以管理員副本收件人身份視察" - -#: NOT FOUND IN SOURCE -msgid "Watcher loaded" -msgstr "成功載入視察員資訊" - -#: html/Admin/Elements/QueueTabs:63 -msgid "Watchers" -msgstr "視察員" - -#: NOT FOUND IN SOURCE -msgid "WebEncoding" -msgstr "網頁文字編碼方式" - -#: NOT FOUND IN SOURCE -msgid "Wed" -msgstr "星期三" - -#: lib/RT/Date.pm:419 -msgid "Wed." -msgstr "星期三" - -#: html/Tools/MyDay.html:75 -msgid "What I did today" -msgstr "" - -#: etc/initialdata:521 -msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" -msgstr "當申請單通過所有簽核後,將此訊息回覆到原申請單" - -#: etc/initialdata:485 -msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" -msgstr "當申請單通過某項簽核後,將此訊息回覆到原申請單" - -#: etc/initialdata:146 -msgid "When a ticket is created" -msgstr "新增申請單時" - -#: etc/initialdata:418 -msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" -msgstr "簽核單新增之後,通知應受理的承辦人及管理員副本收件人" - -#: etc/initialdata:151 -msgid "When anything happens" -msgstr "當任何事情發生時" - -#: etc/initialdata:199 -msgid "Whenever a ticket is resolved" -msgstr "當申請單解決時" - -#: etc/initialdata:185 -msgid "Whenever a ticket's owner changes" -msgstr "當申請單更換承辦人時" - -#: etc/initialdata:178 etc/upgrade/3.1.17/content:16 -msgid "Whenever a ticket's priority changes" -msgstr "當申請單的優先順序改變時" - -#: etc/initialdata:193 -msgid "Whenever a ticket's queue changes" -msgstr "當申請單更換表單時" - -#: etc/initialdata:170 -msgid "Whenever a ticket's status changes" -msgstr "當申請單更新現況時" - -#: etc/initialdata:207 -msgid "Whenever a user-defined condition occurs" -msgstr "當使用者自訂的情況發生時" - -#: etc/initialdata:164 -msgid "Whenever comments come in" -msgstr "當評論送達時" - -#: etc/initialdata:157 -msgid "Whenever correspondence comes in" -msgstr "當回覆送達時" - -#: html/Admin/Users/Modify.html:188 html/User/Prefs.html:88 -msgid "Work" -msgstr "公司" - -#: html/Search/Results.html:82 -msgid "Work offline" -msgstr "離線工作" - -#: NOT FOUND IN SOURCE -msgid "WorkPhone" -msgstr "公司電話" - -#: html/Ticket/Elements/ShowBasics:63 html/Ticket/Update.html:64 -msgid "Worked" -msgstr "處理時間" - -#: NOT FOUND IN SOURCE -msgid "Workflow #%1" -msgstr "流程 #%1" - -#: NOT FOUND IN SOURCE -msgid "Workflow Begin" -msgstr "流程開始" - -#: NOT FOUND IN SOURCE -msgid "Workflow End" -msgstr "流程結束" - -#: NOT FOUND IN SOURCE -msgid "Workflow deleted" -msgstr "流程已刪除" - -#: NOT FOUND IN SOURCE -msgid "Workflows" -msgstr "流程" - -#: NOT FOUND IN SOURCE -msgid "Writable" -msgstr "可讀寫" - -#: NOT FOUND IN SOURCE -msgid "XXX CHANGEME You are not an authorized user" -msgstr "XXX CHANGEME 您是未經授權的使用者" - -#: NOT FOUND IN SOURCE -msgid "Yes" -msgstr "是" - -#: lib/RT/Ticket_Overlay.pm:3140 -msgid "You already own this ticket" -msgstr "您已是這份申請單的承辦人" - -#: html/autohandler:214 html/autohandler:222 -msgid "You are not an authorized user" -msgstr "您不是被授權的使用者" - -#: NOT FOUND IN SOURCE -msgid "You can access it with the Download button on the right." -msgstr "您可以按右方的「下載」鍵來取得。" - -#: html/Prefs/Search.html:56 -msgid "You can also edit the predefined search itself" -msgstr "" - -#: lib/RT/Ticket_Overlay.pm:3025 -msgid "You can only reassign tickets that you own or that are unowned" -msgstr "祇能重新指派您所承辦或是沒有承辦人的申請單" - -#: lib/RT/Ticket_Overlay.pm:3021 -msgid "You can only take tickets that are unowned" -msgstr "" - -#: NOT FOUND IN SOURCE -msgid "You don't have permission to view that ticket.\\n" -msgstr "您沒有看那份申請單的權限。\\n" - -#: docs/design_docs/string-extraction-guide.txt:47 lib/RT/StyleGuide.pod:780 -#. ($num, $queue) -msgid "You found %1 tickets in queue %2" -msgstr "您會在表單 %2 找到 %1 的申請單" - -#: html/NoAuth/Logout.html:52 -msgid "You have been logged out of RT." -msgstr "您已登出 RT。" - -#: html/SelfService/Display.html:133 -msgid "You have no permission to create tickets in that queue." -msgstr "您沒有在該表單新增申請單的權限。" - -#: lib/RT/Ticket_Overlay.pm:2003 -msgid "You may not create requests in that queue." -msgstr "您不能在該表單中提出申請。" - -#: NOT FOUND IN SOURCE -msgid "You need to restart the Request Tracker service for saved changes to take effect." -msgstr "您必須重新啟動 Request Tracker 服務,儲存的更動纔會生效。" - -#: html/NoAuth/Logout.html:56 -msgid "You're welcome to login again" -msgstr "歡迎下次再來" - -#: NOT FOUND IN SOURCE -msgid "Your %1 requests" -msgstr "您提出的 %1 申請單" - -#: NOT FOUND IN SOURCE -msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" -msgstr "RT 管理員可能設錯了由 RT 寄出的郵件收件人標頭檔" - -#: etc/initialdata:502 -msgid "Your request has been approved by %1. Other approvals may still be pending." -msgstr "申請單已由 %1 批准。可能還有其他待簽核的步驟。" - -#: etc/initialdata:540 -msgid "Your request has been approved." -msgstr "您的申請單已完成簽核程序。" - -#: NOT FOUND IN SOURCE -msgid "Your request was rejected" -msgstr "您的申請單已被駁回" - -#: NOT FOUND IN SOURCE -msgid "Your request was rejected by %1." -msgstr "您的申請單已被 %1 駁回。" - -#: etc/initialdata:445 -msgid "Your request was rejected." -msgstr "您的申請單已被駁回。" - -#: html/autohandler:251 -msgid "Your username or password is incorrect" -msgstr "您的帳號或密碼有誤" - -#: html/Admin/Users/Modify.html:168 html/User/Prefs.html:149 -msgid "Zip" -msgstr "郵遞區號" - -#: NOT FOUND IN SOURCE -msgid "[no subject]" -msgstr "[沒有標題]" - -#: NOT FOUND IN SOURCE -msgid "ago" -msgstr "過期" - -#: NOT FOUND IN SOURCE -msgid "alert" -msgstr "急訊" - -#: lib/RT/System.pm:87 -msgid "allow creation of saved searches" -msgstr "允許建立預存查詢" - -#: lib/RT/System.pm:86 -msgid "allow loading of saved searches" -msgstr "允許載入預存查詢" - -#: NOT FOUND IN SOURCE -msgid "approving" -msgstr "待簽核" - -#: html/User/Elements/DelegateRights:80 -#. ($right->PrincipalObj->Object->SelfDescription) -msgid "as granted to %1" -msgstr "權限同 %1" - -#: html/Search/Results.html:83 -msgid "chart" -msgstr "" - -#: html/SelfService/Closed.html:49 -msgid "closed" -msgstr "已解決" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:55 -msgid "contains" -msgstr "包含" - -#: NOT FOUND IN SOURCE -msgid "content" -msgstr "內容" - -#: NOT FOUND IN SOURCE -msgid "content-type" -msgstr "類型" - -#: NOT FOUND IN SOURCE -msgid "correspondence (probably) not sent" -msgstr "申請單回覆(可能)未送出" - -#: NOT FOUND IN SOURCE -msgid "correspondence sent" -msgstr "申請單回覆已送出" - -#: NOT FOUND IN SOURCE -msgid "critical" -msgstr "嚴重" - -#: html/Admin/Queues/Modify.html:98 lib/RT/Date.pm:346 -msgid "days" -msgstr "天" - -#: NOT FOUND IN SOURCE -msgid "dead" -msgstr "拒絕處理" - -#: NOT FOUND IN SOURCE -msgid "debug" -msgstr "偵錯" - -#: NOT FOUND IN SOURCE -msgid "delete" -msgstr "刪除" - -#: lib/RT/Queue_Overlay.pm:87 -msgid "deleted" -msgstr "已刪除" - -#: html/Search/Elements/PickBasics:61 -msgid "does not match" -msgstr "不符合" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:56 -msgid "doesn't contain" -msgstr "不包含" - -#: NOT FOUND IN SOURCE -msgid "email address" -msgstr "電子郵件信箱" - -#: NOT FOUND IN SOURCE -msgid "emergency" -msgstr "危難" - -#: html/Elements/SelectEqualityOperator:59 -msgid "equal to" -msgstr "等於" - -#: NOT FOUND IN SOURCE -msgid "error" -msgstr "錯誤" - -#: html/Search/Build.html:547 -msgid "error: can't move down" -msgstr "錯誤:無法下移" - -#: html/Search/Build.html:569 -msgid "error: can't move left" -msgstr "錯誤:無法左移" - -#: html/Search/Build.html:528 -msgid "error: can't move up" -msgstr "錯誤:無法上移" - -#: html/Search/Build.html:612 -msgid "error: nothing to delete" -msgstr "錯誤:沒有可刪除的對象" - -#: html/Search/Build.html:533 html/Search/Build.html:552 html/Search/Build.html:574 html/Search/Build.html:603 -msgid "error: nothing to move" -msgstr "錯誤:沒有可移動的對象" - -#: html/Search/Build.html:630 -msgid "error: nothing to toggle" -msgstr "錯誤:沒有可切換的對象" - -#: NOT FOUND IN SOURCE -msgid "false" -msgstr "假" - -#: NOT FOUND IN SOURCE -msgid "filename" -msgstr "檔名" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59 -msgid "greater than" -msgstr "大於" - -#: lib/RT/Group_Overlay.pm:214 -#. ($self->Name) -msgid "group '%1'" -msgstr "群組 '%1'" - -#: html/Search/Results.html:88 -#. ($m->scomp('Elements/SelectGroupBy', Name => 'PrimaryGroupBy', Query => $Query)) -msgid "grouped by %1" -msgstr "依 %1 分組" - -#: lib/RT/Date.pm:342 -msgid "hours" -msgstr "小時" - -#: html/Search/Elements/PickBasics:48 -msgid "id" -msgstr "編號" - -#: NOT FOUND IN SOURCE -msgid "info" -msgstr "資訊" - -#: html/Elements/SelectBoolean:53 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:57 html/Search/Elements/PickBasics:162 html/Search/Elements/PickBasics:74 html/Search/Elements/PickBasics:90 html/Search/Elements/PickCFs:53 -msgid "is" -msgstr "是" - -#: html/Elements/SelectBoolean:57 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:58 html/Search/Elements/PickBasics:163 html/Search/Elements/PickBasics:75 html/Search/Elements/PickBasics:91 html/Search/Elements/PickCFs:54 -msgid "isn't" -msgstr "不是" - -#: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59 -msgid "less than" -msgstr "小於" - -#: NOT FOUND IN SOURCE -msgid "level Admin" -msgstr "層主管" - -#: html/Search/Elements/PickBasics:60 -msgid "matches" -msgstr "符合" - -#: lib/RT/Date.pm:338 -msgid "min" -msgstr "分" - -#: NOT FOUND IN SOURCE -msgid "minutes" -msgstr "分鐘" - -#: NOT FOUND IN SOURCE -msgid "modifications\\n\\n" -msgstr "更改\\n\\n" - -#: lib/RT/Date.pm:354 -msgid "months" -msgstr "月" - -#: lib/RT/Queue_Overlay.pm:82 -msgid "new" -msgstr "新建立" - -#: html/Admin/Elements/PickCustomFields:64 html/Admin/Elements/PickObjects:65 -msgid "no name" -msgstr "沒有名稱" - -#: html/Admin/Elements/EditScrips:64 -msgid "no value" -msgstr "沒有值" - -#: html/Admin/Elements/EditQueueWatchers:48 html/Ticket/Elements/EditWatchers:49 -msgid "none" -msgstr "無" - -#: html/Elements/SelectEqualityOperator:59 -msgid "not equal to" -msgstr "不等於" - -#: NOT FOUND IN SOURCE -msgid "notice" -msgstr "提示" - -#: NOT FOUND IN SOURCE -msgid "notlike" -msgstr "不符合" - -#: NOT FOUND IN SOURCE -msgid "number" -msgstr "號" - -#: html/SelfService/Elements/MyRequests:82 lib/RT/Queue_Overlay.pm:83 -msgid "open" -msgstr "開啟" - -#: NOT FOUND IN SOURCE -msgid "opened" -msgstr "已開啟" - -#: lib/RT/Group_Overlay.pm:219 -#. ($self->Name, $user->Name) -msgid "personal group '%1' for user '%2'" -msgstr "使用者「%2」的「%1」代理人群組" - -#: lib/RT/Group_Overlay.pm:227 -#. ($queue->Name, $self->Type) -msgid "queue %1 %2" -msgstr "表單 %1 %2" - -#: lib/RT/Queue_Overlay.pm:86 -msgid "rejected" -msgstr "已駁回" - -#: lib/RT/Queue_Overlay.pm:85 -msgid "resolved" -msgstr "已處理" - -#: NOT FOUND IN SOURCE -msgid "rtname" -msgstr "伺服器名稱" - -#: lib/RT/Date.pm:334 -msgid "sec" -msgstr "秒" - -#: lib/RT/System.pm:85 -msgid "show Configuration tab" -msgstr "顯示設定頁籤" - -#: html/Search/Results.html:80 -msgid "spreadsheet" -msgstr "試算表" - -#: lib/RT/Queue_Overlay.pm:84 -msgid "stalled" -msgstr "延宕" - -#: html/Search/Results.html:89 -#. ($m->scomp('Elements/SelectChartType', Name => 'ChartStyle')) -msgid "style: %1" -msgstr "" - -#: html/Prefs/MyRT.html:93 -msgid "summary rows" -msgstr "加總列" - -#: lib/RT/Group_Overlay.pm:222 -#. ($self->Type) -msgid "system %1" -msgstr "系統 %1" - -#: lib/RT/Group_Overlay.pm:233 -#. ($self->Type) -msgid "system group '%1'" -msgstr "系統群組 '%1'" - -#: html/Elements/Error:64 html/SelfService/Error.html:63 -msgid "the calling component did not specify why" -msgstr "呼叫元件未指明原因" - -#: NOT FOUND IN SOURCE -msgid "ticket #%1" -msgstr "申請單 #%1" - -#: lib/RT/Group_Overlay.pm:230 -#. ($self->Instance, $self->Type) -msgid "ticket #%1 %2" -msgstr "申請單 #%1 %2" - -#: NOT FOUND IN SOURCE -msgid "till" -msgstr "至" - -#: NOT FOUND IN SOURCE -msgid "to" -msgstr "到" - -#: NOT FOUND IN SOURCE -msgid "true" -msgstr "真" - -#: lib/RT/Group_Overlay.pm:236 -#. ($self->Id) -msgid "undescribed group %1" -msgstr "沒有描述的群組 %1" - -#: NOT FOUND IN SOURCE -msgid "unresolved" -msgstr "未處理" - -#: lib/RT/Group_Overlay.pm:211 -#. ($user->Object->Name) -msgid "user %1" -msgstr "使用者 %1" - -#: NOT FOUND IN SOURCE -msgid "warning" -msgstr "警告" - -#: lib/RT/Date.pm:350 -msgid "weeks" -msgstr "週" - -#: NOT FOUND IN SOURCE -msgid "with template %1" -msgstr "範本:%1" - -#: lib/RT/Date.pm:358 -msgid "years" -msgstr "年" - -msgid "Press 'Esc' to close this window." -msgstr "按 'Esc' 鍵可關閉本視窗。" - -msgid "HasMember" -msgstr "擁有成員" - -msgid "LinkedTo" -msgstr "連結至" - -msgid "Watcher" -msgstr "視察員" - -msgid "(displaying new and open tickets for %1)" -msgstr "(顯示 %1 名下新建立及開啟中的申請單)" diff --git a/rt/lib/RT/Interface/CLI.pm b/rt/lib/RT/Interface/CLI.pm index a910fb48a..ec0e877b4 100644 --- a/rt/lib/RT/Interface/CLI.pm +++ b/rt/lib/RT/Interface/CLI.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. # -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK use strict; use RT; @@ -54,12 +29,14 @@ package RT::Interface::CLI; BEGIN { - use base 'Exporter'; - use vars qw ($VERSION @EXPORT @EXPORT_OK %EXPORT_TAGS); + use Exporter (); + use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); # set the version for version checking - $VERSION = do { my @r = (q$Revision: 1.1.1.8 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker - + $VERSION = do { my @r = (q$Revision: 1.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker + + @ISA = qw(Exporter); + # your exported package globals go here, # as well as any optionally exported functions @EXPORT_OK = qw(&CleanEnv @@ -99,6 +76,11 @@ BEGIN { =head1 METHODS +=begin testing + +ok(require RT::Interface::CLI); + +=end testing =cut @@ -220,7 +202,7 @@ sub GetMessageContent { if ($edit) { unless ($ENV{'EDITOR'}) { - $RT::Logger->crit('No $EDITOR variable defined'); + $RT::Logger->crit('No $EDITOR variable defined'. "\n"); return undef; } system ($ENV{'EDITOR'}, $filename); @@ -243,7 +225,7 @@ sub debug { my $val = shift; my ($debug); if ($val) { - $RT::Logger->debug($val); + $RT::Logger->debug($val."\n"); if ($debug) { print STDERR "$val\n"; } diff --git a/rt/lib/RT/Interface/Email.pm b/rt/lib/RT/Interface/Email.pm index e0815fbe2..7eec0502f 100755 --- a/rt/lib/RT/Interface/Email.pm +++ b/rt/lib/RT/Interface/Email.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,72 +14,50 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK package RT::Interface::Email; use strict; -use warnings; - -use Email::Address; +use Mail::Address; use MIME::Entity; use RT::EmailParser; -use File::Temp; -use UNIVERSAL::require; -use Mail::Mailer (); -BEGIN { - use base 'Exporter'; - use vars qw ( @EXPORT_OK); +BEGIN { + use Exporter (); + use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); + # set the version for version checking - our $VERSION = 2.0; - + $VERSION = do { my @r = (q$Revision: 1.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker + + @ISA = qw(Exporter); + # your exported package globals go here, # as well as any optionally exported functions - @EXPORT_OK = qw( - &CreateUser - &GetMessageContent - &CheckForLoops - &CheckForSuspiciousSender - &CheckForAutoGenerated - &CheckForBounce - &MailError - &ParseCcAddressesFromHead - &ParseSenderAddressFromHead - &ParseErrorsToAddressFromHead - &ParseAddressFromHeader - &Gateway); + @EXPORT_OK = qw( + &CreateUser + &GetMessageContent + &CheckForLoops + &CheckForSuspiciousSender + &CheckForAutoGenerated + &MailError + &ParseCcAddressesFromHead + &ParseSenderAddressFromHead + &ParseErrorsToAddressFromHead + &ParseAddressFromHeader + &Gateway); } =head1 NAME - RT::Interface::Email - helper functions for parsing email sent to RT + RT::Interface::CLI - helper functions for creating a commandline RT interface =head1 SYNOPSIS @@ -97,1612 +69,425 @@ BEGIN { =head1 DESCRIPTION +=begin testing +ok(require RT::Interface::Email); -=head1 METHODS +=end testing -=head2 CheckForLoops HEAD -Takes a HEAD object of L<MIME::Head> class and returns true if the -message's been sent by this RT instance. Uses "X-RT-Loop-Prevention" -field of the head for test. +=head1 METHODS =cut -sub CheckForLoops { - my $head = shift; - # If this instance of RT sent it our, we don't want to take it in +# {{{ sub CheckForLoops + +sub CheckForLoops { + my $head = shift; + + #If this instance of RT sent it our, we don't want to take it in my $RTLoop = $head->get("X-RT-Loop-Prevention") || ""; - chomp ($RTLoop); # remove that newline - if ( $RTLoop eq RT->Config->Get('rtname') ) { - return 1; + chomp ($RTLoop); #remove that newline + if ($RTLoop eq "$RT::rtname") { + return (1); } - + # TODO: We might not trap the case where RT instance A sends a mail # to RT instance B which sends a mail to ... - return undef; + return (undef); } -=head2 CheckForSuspiciousSender HEAD - -Takes a HEAD object of L<MIME::Head> class and returns true if sender -is suspicious. Suspicious means mailer daemon. +# }}} -See also L</ParseSenderAddressFromHead>. - -=cut +# {{{ sub CheckForSuspiciousSender sub CheckForSuspiciousSender { my $head = shift; #if it's from a postmaster or mailer daemon, it's likely a bounce. - + #TODO: better algorithms needed here - there is no standards for #bounces, so it's very difficult to separate them from anything #else. At the other hand, the Return-To address is only ment to be #used as an error channel, we might want to put up a separate #Return-To address which is treated differently. - + #TODO: search through the whole email and find the right Ticket ID. - my ( $From, $junk ) = ParseSenderAddressFromHead($head); - - if ( ( $From =~ /^mailer-daemon\@/i ) - or ( $From =~ /^postmaster\@/i ) - or ( $From eq "" )) - { - return (1); - + my ($From, $junk) = ParseSenderAddressFromHead($head); + + if (($From =~ /^mailer-daemon/i) or + ($From =~ /^postmaster/i)){ + return (1); + } + + return (undef); - return undef; } -=head2 CheckForAutoGenerated HEAD - -Takes a HEAD object of L<MIME::Head> class and returns true if message -is autogenerated. Checks 'Precedence' and 'X-FC-Machinegenerated' -fields of the head in tests. - -=cut +# }}} +# {{{ sub CheckForAutoGenerated sub CheckForAutoGenerated { my $head = shift; - - my $Precedence = $head->get("Precedence") || ""; - if ( $Precedence =~ /^(bulk|junk)/i ) { - return (1); - } - - # Per RFC3834, any Auto-Submitted header which is not "no" means - # it is auto-generated. - my $AutoSubmitted = $head->get("Auto-Submitted") || ""; - if ( length $AutoSubmitted and $AutoSubmitted ne "no" ) { - return (1); + + my $Precedence = $head->get("Precedence") || "" ; + if ($Precedence =~ /^(bulk|junk)/i) { + return (1); } - - # First Class mailer uses this as a clue. - my $FCJunk = $head->get("X-FC-Machinegenerated") || ""; - if ( $FCJunk =~ /^true/i ) { - return (1); + else { + return (0); } - - return (0); } +# }}} -sub CheckForBounce { - my $head = shift; - - my $ReturnPath = $head->get("Return-path") || ""; - return ( $ReturnPath =~ /<>/ ); -} - - -=head2 MailError PARAM HASH - -Sends an error message. Takes a param hash: - -=over 4 - -=item From - sender's address, by default is 'CorrespondAddress'; - -=item To - recipient, by default is 'OwnerEmail'; - -=item Bcc - optional Bcc recipients; - -=item Subject - subject of the message, default is 'There has been an error'; - -=item Explanation - main content of the error, default value is 'Unexplained error'; - -=item MIMEObj - optional MIME entity that's attached to the error mail, as well we -add 'In-Reply-To' field to the error that points to this message. - -=item Attach - optional text that attached to the error as 'message/rfc822' part. - -=item LogLevel - log level under which we should write explanation message into the -log, by default we log it as critical. - -=back - -=cut +# {{{ sub MailError sub MailError { - my %args = ( - To => RT->Config->Get('OwnerEmail'), - Bcc => undef, - From => RT->Config->Get('CorrespondAddress'), - Subject => 'There has been an error', - Explanation => 'Unexplained error', - MIMEObj => undef, - Attach => undef, - LogLevel => 'crit', - @_ - ); - - $RT::Logger->log( - level => $args{'LogLevel'}, - message => $args{'Explanation'} - ) if $args{'LogLevel'}; - - # the colons are necessary to make ->build include non-standard headers - my %entity_args = ( - Type => "multipart/mixed", - From => $args{'From'}, - Bcc => $args{'Bcc'}, - To => $args{'To'}, - Subject => $args{'Subject'}, - 'X-RT-Loop-Prevention:' => RT->Config->Get('rtname'), - ); - - # only set precedence if the sysadmin wants us to - if (defined(RT->Config->Get('DefaultErrorMailPrecedence'))) { - $entity_args{'Precedence:'} = RT->Config->Get('DefaultErrorMailPrecedence'); - } - - my $entity = MIME::Entity->build(%entity_args); - SetInReplyTo( Message => $entity, InReplyTo => $args{'MIMEObj'} ); - - $entity->attach( Data => $args{'Explanation'} . "\n" ); - - if ( $args{'MIMEObj'} ) { - $args{'MIMEObj'}->sync_headers; - $entity->add_part( $args{'MIMEObj'} ); - } - - if ( $args{'Attach'} ) { - $entity->attach( Data => $args{'Attach'}, Type => 'message/rfc822' ); - - } - - SendEmail( Entity => $entity, Bounce => 1 ); -} - - -=head2 SendEmail Entity => undef, [ Bounce => 0, Ticket => undef, Transaction => undef ] - -Sends an email (passed as a L<MIME::Entity> object C<ENTITY>) using -RT's outgoing mail configuration. If C<BOUNCE> is passed, and is a -true value, the message will be marked as an autogenerated error, if -possible. Sets Date field of the head to now if it's not set. - -If the C<X-RT-Squelch> header is set to any true value, the mail will -not be sent. One use is to let extensions easily cancel outgoing mail. - -Ticket and Transaction arguments are optional. If Transaction is -specified and Ticket is not then ticket of the transaction is -used, but only if the transaction belongs to a ticket. - -Returns 1 on success, 0 on error or -1 if message has no recipients -and hasn't been sent. - -=head3 Signing and Encrypting - -This function as well signs and/or encrypts the message according to -headers of a transaction's attachment or properties of a ticket's queue. -To get full access to the configuration Ticket and/or Transaction -arguments must be provided, but you can force behaviour using Sign -and/or Encrypt arguments. - -The following precedence of arguments are used to figure out if -the message should be encrypted and/or signed: - -* if Sign or Encrypt argument is defined then its value is used - -* else if Transaction's first attachment has X-RT-Sign or X-RT-Encrypt -header field then it's value is used - -* else properties of a queue of the Ticket are used. - -=cut - -sub SendEmail { - my (%args) = ( - Entity => undef, - Bounce => 0, - Ticket => undef, - Transaction => undef, - @_, - ); - - my $TicketObj = $args{'Ticket'}; - my $TransactionObj = $args{'Transaction'}; - - foreach my $arg( qw(Entity Bounce) ) { - next unless defined $args{ lc $arg }; - - $RT::Logger->warning("'". lc($arg) ."' argument is deprecated, use '$arg' instead"); - $args{ $arg } = delete $args{ lc $arg }; - } - - unless ( $args{'Entity'} ) { - $RT::Logger->crit( "Could not send mail without 'Entity' object" ); - return 0; - } - - my $msgid = $args{'Entity'}->head->get('Message-ID') || ''; - chomp $msgid; + my %args = (To => $RT::OwnerEmail, + Bcc => undef, + From => $RT::CorrespondAddress, + Subject => 'There has been an error', + Explanation => 'Unexplained error', + MIMEObj => undef, + LogLevel => 'crit', + @_); + + + $RT::Logger->log(level => $args{'LogLevel'}, + message => $args{'Explanation'} + ); + my $entity = MIME::Entity->build( Type =>"multipart/mixed", + From => $args{'From'}, + Bcc => $args{'Bcc'}, + To => $args{'To'}, + Subject => $args{'Subject'}, + 'X-RT-Loop-Prevention' => $RT::rtname, + ); + + $entity->attach( Data => $args{'Explanation'}."\n"); - # If we don't have any recipients to send to, don't send a message; - unless ( $args{'Entity'}->head->get('To') - || $args{'Entity'}->head->get('Cc') - || $args{'Entity'}->head->get('Bcc') ) - { - $RT::Logger->info( $msgid . " No recipients found. Not sending." ); - return -1; - } - - if ($args{'Entity'}->head->get('X-RT-Squelch')) { - $RT::Logger->info( $msgid . " Squelch header found. Not sending." ); - return -1; + my $mimeobj = $args{'MIMEObj'}; + if ($mimeobj) { + $mimeobj->sync_headers(); + $entity->add_part($mimeobj); } - - if ( $TransactionObj && !$TicketObj - && $TransactionObj->ObjectType eq 'RT::Ticket' ) - { - $TicketObj = $TransactionObj->Object; - } - - if ( RT->Config->Get('GnuPG')->{'Enable'} ) { - my %crypt; - - my $attachment; - $attachment = $TransactionObj->Attachments->First - if $TransactionObj; - - foreach my $argument ( qw(Sign Encrypt) ) { - next if defined $args{ $argument }; - - if ( $attachment && defined $attachment->GetHeader("X-RT-$argument") ) { - $crypt{$argument} = $attachment->GetHeader("X-RT-$argument"); - } elsif ( $TicketObj ) { - $crypt{$argument} = $TicketObj->QueueObj->$argument(); - } - } - - my $res = SignEncrypt( %args, %crypt ); - return $res unless $res > 0; - } - - unless ( $args{'Entity'}->head->get('Date') ) { - require RT::Date; - my $date = RT::Date->new( $RT::SystemUser ); - $date->SetToNow; - $args{'Entity'}->head->set( 'Date', $date->RFC2822( Timezone => 'server' ) ); - } - - my $mail_command = RT->Config->Get('MailCommand'); - - if ($mail_command eq 'testfile') { - $Mail::Mailer::testfile::config{outfile} = File::Temp->new; - } - - # if it is a sub routine, we just return it; - return $mail_command->($args{'Entity'}) if UNIVERSAL::isa( $mail_command, 'CODE' ); - - if ( $mail_command eq 'sendmailpipe' ) { - my $path = RT->Config->Get('SendmailPath'); - my $args = RT->Config->Get('SendmailArguments'); - - # SetOutgoingMailFrom - if ( RT->Config->Get('SetOutgoingMailFrom') ) { - my $OutgoingMailAddress; - - if ($TicketObj) { - my $QueueName = $TicketObj->QueueObj->Name; - my $QueueAddressOverride = RT->Config->Get('OverrideOutgoingMailFrom')->{$QueueName}; - - if ($QueueAddressOverride) { - $OutgoingMailAddress = $QueueAddressOverride; - } else { - $OutgoingMailAddress = $TicketObj->QueueObj->CorrespondAddress; - } - } - - $OutgoingMailAddress ||= RT->Config->Get('OverrideOutgoingMailFrom')->{'Default'}; - - $args .= " -f $OutgoingMailAddress" - if $OutgoingMailAddress; - } - - # Set Bounce Arguments - $args .= ' '. RT->Config->Get('SendmailBounceArguments') if $args{'Bounce'}; - - # VERP - if ( $TransactionObj and - my $prefix = RT->Config->Get('VERPPrefix') and - my $domain = RT->Config->Get('VERPDomain') ) - { - my $from = $TransactionObj->CreatorObj->EmailAddress; - $from =~ s/@/=/g; - $from =~ s/\s//g; - $args .= " -f $prefix$from\@$domain"; - } - - eval { - # don't ignore CHLD signal to get proper exit code - local $SIG{'CHLD'} = 'DEFAULT'; - - open my $mail, "|$path $args" or die "couldn't execute program: $!"; - - # if something wrong with $mail->print we will get PIPE signal, handle it - local $SIG{'PIPE'} = sub { die "program unexpectedly closed pipe" }; - $args{'Entity'}->print($mail); - - unless ( close $mail ) { - die "close pipe failed: $!" if $!; # system error - # sendmail exit statuses mostly errors with data not software - # TODO: status parsing: core dump, exit on signal or EX_* - my $msg = "$msgid: `$path $args` exitted with code ". ($?>>8); - $msg = ", interrupted by signal ". ($?&127) if $?&127; - $RT::Logger->error( $msg ); - } - }; - if ( $@ ) { - $RT::Logger->crit( "$msgid: Could not send mail with command `$path $args`: " . $@ ); - return 0; - } - } - elsif ( $mail_command eq 'smtp' ) { - require Net::SMTP; - my $smtp = do { local $@; eval { Net::SMTP->new( - Host => RT->Config->Get('SMTPServer'), - Debug => RT->Config->Get('SMTPDebug'), - ) } }; - unless ( $smtp ) { - $RT::Logger->crit( "Could not connect to SMTP server."); - return 0; - } - - # duplicate head as we want drop Bcc field - my $head = $args{'Entity'}->head->dup; - my @recipients = map $_->address, map - Email::Address->parse($head->get($_)), qw(To Cc Bcc); - $head->delete('Bcc'); - - my $sender = RT->Config->Get('SMTPFrom') - || $args{'Entity'}->head->get('From'); - chomp $sender; - - my $status = $smtp->mail( $sender ) - && $smtp->recipient( @recipients ); - - if ( $status ) { - $smtp->data; - my $fh = $smtp->tied_fh; - $head->print( $fh ); - print $fh "\n"; - $args{'Entity'}->print_body( $fh ); - $smtp->dataend; - } - $smtp->quit; - - unless ( $status ) { - $RT::Logger->crit( "$msgid: Could not send mail via SMTP." ); - return 0; - } + + if ($RT::MailCommand eq 'sendmailpipe') { + open (MAIL, "|$RT::SendmailPath $RT::SendmailArguments") || return(0); + print MAIL $entity->as_string; + close(MAIL); } else { - local ($ENV{'MAILADDRESS'}, $ENV{'PERL_MAILERS'}); - - my @mailer_args = ($mail_command); - if ( $mail_command eq 'sendmail' ) { - $ENV{'PERL_MAILERS'} = RT->Config->Get('SendmailPath'); - push @mailer_args, split(/\s+/, RT->Config->Get('SendmailArguments')); - } - else { - push @mailer_args, RT->Config->Get('MailParams'); - } - - unless ( $args{'Entity'}->send( @mailer_args ) ) { - $RT::Logger->crit( "$msgid: Could not send mail." ); - return 0; - } - } - return 1; -} - -=head2 PrepareEmailUsingTemplate Template => '', Arguments => {} - -Loads a template. Parses it using arguments if it's not empty. -Returns a tuple (L<RT::Template> object, error message). - -Note that even if a template object is returned MIMEObj method -may return undef for empty templates. - -=cut - -sub PrepareEmailUsingTemplate { - my %args = ( - Template => '', - Arguments => {}, - @_ - ); - - my $template = RT::Template->new( $RT::SystemUser ); - $template->LoadGlobalTemplate( $args{'Template'} ); - unless ( $template->id ) { - return (undef, "Couldn't load template '". $args{'Template'} ."'"); - } - return $template if $template->IsEmpty; - - my ($status, $msg) = $template->Parse( %{ $args{'Arguments'} } ); - return (undef, $msg) unless $status; - - return $template; -} - -=head2 SendEmailUsingTemplate Template => '', Arguments => {}, From => CorrespondAddress, To => '', Cc => '', Bcc => '' - -Sends email using a template, takes name of template, arguments for it and recipients. - -=cut - -sub SendEmailUsingTemplate { - my %args = ( - Template => '', - Arguments => {}, - To => undef, - Cc => undef, - Bcc => undef, - From => RT->Config->Get('CorrespondAddress'), - InReplyTo => undef, - @_ - ); - - my ($template, $msg) = PrepareEmailUsingTemplate( %args ); - return (0, $msg) unless $template; - - my $mail = $template->MIMEObj; - unless ( $mail ) { - $RT::Logger->info("Message is not sent as template #". $template->id ." is empty"); - return -1; - } - - $mail->head->set( $_ => Encode::encode_utf8( $args{ $_ } ) ) - foreach grep defined $args{$_}, qw(To Cc Bcc From); - - SetInReplyTo( Message => $mail, InReplyTo => $args{'InReplyTo'} ); - - return SendEmail( Entity => $mail ); -} - -=head2 ForwardTransaction TRANSACTION, To => '', Cc => '', Bcc => '' - -Forwards transaction with all attachments as 'message/rfc822'. - -=cut - -sub ForwardTransaction { - my $txn = shift; - my %args = ( To => '', Cc => '', Bcc => '', @_ ); - - my $entity = $txn->ContentAsMIME; - - return SendForward( %args, Entity => $entity, Transaction => $txn ); -} - -=head2 ForwardTicket TICKET, To => '', Cc => '', Bcc => '' - -Forwards a ticket's Create and Correspond Transactions and their Attachments as 'message/rfc822'. - -=cut - -sub ForwardTicket { - my $ticket = shift; - my %args = ( To => '', Cc => '', Bcc => '', @_ ); - - my $txns = $ticket->Transactions; - $txns->Limit( - FIELD => 'Type', - VALUE => $_, - ) for qw(Create Correspond); - - my $entity = MIME::Entity->build( - Type => 'multipart/mixed', - ); - $entity->add_part( $_ ) foreach - map $_->ContentAsMIME, - @{ $txns->ItemsArrayRef }; - - return SendForward( %args, Entity => $entity, Ticket => $ticket, Template => 'Forward Ticket' ); -} - -=head2 SendForward Entity => undef, Ticket => undef, Transaction => undef, Template => undef, To => '', Cc => '', Bcc => '' - -Forwards an Entity representing Ticket or Transaction as 'message/rfc822'. Entity is wrapped into Template. - -=cut - -sub SendForward { - my (%args) = ( - Entity => undef, - Ticket => undef, - Transaction => undef, - Template => 'Forward', - To => '', Cc => '', Bcc => '', - @_ - ); - - my $txn = $args{'Transaction'}; - my $ticket = $args{'Ticket'}; - $ticket ||= $txn->Object if $txn; - - my $entity = $args{'Entity'}; - unless ( $entity ) { - require Carp; - $RT::Logger->error(Carp::longmess("No entity provided")); - return (0, $ticket->loc("Couldn't send email")); - } - - my ($template, $msg) = PrepareEmailUsingTemplate( - Template => $args{'Template'}, - Arguments => { - Ticket => $ticket, - Transaction => $txn, - }, - ); - - my $mail; - if ( $template ) { - $mail = $template->MIMEObj; - } else { - $RT::Logger->warning($msg); - } - unless ( $mail ) { - $RT::Logger->warning("Couldn't generate email using template '$args{Template}'"); - - my $description; - unless ( $args{'Transaction'} ) { - $description = 'This is forward of ticket #'. $ticket->id; - } else { - $description = 'This is forward of transaction #' - . $txn->id ." of a ticket #". $txn->ObjectId; - } - $mail = MIME::Entity->build( - Type => 'text/plain', - Data => $description, - ); - } - - $mail->head->set( $_ => EncodeToMIME( String => $args{$_} ) ) - foreach grep defined $args{$_}, qw(To Cc Bcc); - - $mail->attach( - Type => 'message/rfc822', - Disposition => 'attachment', - Description => 'forwarded message', - Data => $entity->as_string, - ); - - my $from; - my $subject = ''; - $subject = $txn->Subject if $txn; - $subject ||= $ticket->Subject if $ticket; - if ( RT->Config->Get('ForwardFromUser') ) { - $from = ($txn || $ticket)->CurrentUser->UserObj->EmailAddress; - } else { - # XXX: what if want to forward txn of other object than ticket? - $subject = AddSubjectTag( $subject, $ticket ); - $from = $ticket->QueueObj->CorrespondAddress - || RT->Config->Get('CorrespondAddress'); - } - $mail->head->set( Subject => EncodeToMIME( String => "Fwd: $subject" ) ); - $mail->head->set( From => EncodeToMIME( String => $from ) ); - - my $status = RT->Config->Get('ForwardFromUser') - # never sign if we forward from User - ? SendEmail( %args, Entity => $mail, Sign => 0 ) - : SendEmail( %args, Entity => $mail ); - return (0, $ticket->loc("Couldn't send email")) unless $status; - return (1, $ticket->loc("Send email successfully")); -} - -=head2 SignEncrypt Entity => undef, Sign => 0, Encrypt => 0 - -Signs and encrypts message using L<RT::Crypt::GnuPG>, but as well -handle errors with users' keys. - -If a recipient has no key or has other problems with it, then the -unction sends a error to him using 'Error: public key' template. -Also, notifies RT's owner using template 'Error to RT owner: public key' -to inform that there are problems with users' keys. Then we filter -all bad recipients and retry. - -Returns 1 on success, 0 on error and -1 if all recipients are bad and -had been filtered out. - -=cut - -sub SignEncrypt { - my %args = ( - Entity => undef, - Sign => 0, - Encrypt => 0, - @_ - ); - return 1 unless $args{'Sign'} || $args{'Encrypt'}; - - my $msgid = $args{'Entity'}->head->get('Message-ID') || ''; - chomp $msgid; - - $RT::Logger->debug("$msgid Signing message") if $args{'Sign'}; - $RT::Logger->debug("$msgid Encrypting message") if $args{'Encrypt'}; - - require RT::Crypt::GnuPG; - my %res = RT::Crypt::GnuPG::SignEncrypt( %args ); - return 1 unless $res{'exit_code'}; - - my @status = RT::Crypt::GnuPG::ParseStatus( $res{'status'} ); - - my @bad_recipients; - foreach my $line ( @status ) { - # if the passphrase fails, either you have a bad passphrase - # or gpg-agent has died. That should get caught in Create and - # Update, but at least throw an error here - if (($line->{'Operation'}||'') eq 'PassphraseCheck' - && $line->{'Status'} =~ /^(?:BAD|MISSING)$/ ) { - $RT::Logger->error( "$line->{'Status'} PASSPHRASE: $line->{'Message'}" ); - return 0; - } - next unless ($line->{'Operation'}||'') eq 'RecipientsCheck'; - next if $line->{'Status'} eq 'DONE'; - $RT::Logger->error( $line->{'Message'} ); - push @bad_recipients, $line; - } - return 0 unless @bad_recipients; - - $_->{'AddressObj'} = (Email::Address->parse( $_->{'Recipient'} ))[0] - foreach @bad_recipients; - - foreach my $recipient ( @bad_recipients ) { - my $status = SendEmailUsingTemplate( - To => $recipient->{'AddressObj'}->address, - Template => 'Error: public key', - Arguments => { - %$recipient, - TicketObj => $args{'Ticket'}, - TransactionObj => $args{'Transaction'}, - }, - ); - unless ( $status ) { - $RT::Logger->error("Couldn't send 'Error: public key'"); - } - } - - my $status = SendEmailUsingTemplate( - To => RT->Config->Get('OwnerEmail'), - Template => 'Error to RT owner: public key', - Arguments => { - BadRecipients => \@bad_recipients, - TicketObj => $args{'Ticket'}, - TransactionObj => $args{'Transaction'}, - }, - ); - unless ( $status ) { - $RT::Logger->error("Couldn't send 'Error to RT owner: public key'"); + $entity->send($RT::MailCommand, $RT::MailParams); } - - DeleteRecipientsFromHead( - $args{'Entity'}->head, - map $_->{'AddressObj'}->address, @bad_recipients - ); - - unless ( $args{'Entity'}->head->get('To') - || $args{'Entity'}->head->get('Cc') - || $args{'Entity'}->head->get('Bcc') ) - { - $RT::Logger->debug("$msgid No recipients that have public key, not sending"); - return -1; - } - - # redo without broken recipients - %res = RT::Crypt::GnuPG::SignEncrypt( %args ); - return 0 if $res{'exit_code'}; - - return 1; } -use MIME::Words (); +# }}} -=head2 EncodeToMIME - -Takes a hash with a String and a Charset. Returns the string encoded -according to RFC2047, using B (base64 based) encoding. - -String must be a perl string, octets are returned. - -If Charset is not provided then $EmailOutputEncoding config option -is used, or "latin-1" if that is not set. - -=cut - -sub EncodeToMIME { - my %args = ( - String => undef, - Charset => undef, - @_ - ); - my $value = $args{'String'}; - return $value unless $value; # 0 is perfect ascii - my $charset = $args{'Charset'} || RT->Config->Get('EmailOutputEncoding'); - my $encoding = 'B'; - - # using RFC2047 notation, sec 2. - # encoded-word = "=?" charset "?" encoding "?" encoded-text "?=" - - # An 'encoded-word' may not be more than 75 characters long - # - # MIME encoding increases 4/3*(number of bytes), and always in multiples - # of 4. Thus we have to find the best available value of bytes available - # for each chunk. - # - # First we get the integer max which max*4/3 would fit on space. - # Then we find the greater multiple of 3 lower or equal than $max. - my $max = int( - ( ( 75 - length( '=?' . $charset . '?' . $encoding . '?' . '?=' ) ) - * 3 - ) / 4 - ); - $max = int( $max / 3 ) * 3; - - chomp $value; - - if ( $max <= 0 ) { - - # gives an error... - $RT::Logger->crit("Can't encode! Charset or encoding too big."); - return ($value); - } - - return ($value) unless $value =~ /[^\x20-\x7e]/; - - $value =~ s/\s+$//; - - # we need perl string to split thing char by char - Encode::_utf8_on($value) unless Encode::is_utf8($value); - - my ( $tmp, @chunks ) = ( '', () ); - while ( length $value ) { - my $char = substr( $value, 0, 1, '' ); - my $octets = Encode::encode( $charset, $char ); - if ( length($tmp) + length($octets) > $max ) { - push @chunks, $tmp; - $tmp = ''; - } - $tmp .= $octets; - } - push @chunks, $tmp if length $tmp; - - # encode an join chuncks - $value = join "\n ", - map MIME::Words::encode_mimeword( $_, $encoding, $charset ), - @chunks; - return ($value); -} +# {{{ Create User sub CreateUser { - my ( $Username, $Address, $Name, $ErrorsTo, $entity ) = @_; - - my $NewUser = RT::User->new( $RT::SystemUser ); - - my ( $Val, $Message ) = $NewUser->Create( - Name => ( $Username || $Address ), - EmailAddress => $Address, - RealName => $Name, - Password => undef, - Privileged => 0, - Comments => 'Autocreated on ticket submission', - ); - + my ($Username, $Address, $Name, $ErrorsTo, $entity) = @_; + my $NewUser = RT::User->new($RT::SystemUser); + + # This data is tainted by some Very Broken mailers. + # (Sometimes they send raw ISO 8859-1 data here. fear that. + require Encode; + $Username = Encode::encode(utf8 => $Username, Encode::FB_PERLQQ()) if defined $Username; + $Name = Encode::encode(utf8 => $Name, Encode::FB_PERLQQ()) if defined $Name; + + my ($Val, $Message) = + $NewUser->Create(Name => ($Username || $Address), + EmailAddress => $Address, + RealName => $Name, + Password => undef, + Privileged => 0, + Comments => 'Autocreated on ticket submission' + ); + unless ($Val) { - + # Deal with the race condition of two account creations at once + # if ($Username) { $NewUser->LoadByName($Username); } - - unless ( $NewUser->Id ) { + + unless ($NewUser->Id) { $NewUser->LoadByEmail($Address); } - - unless ( $NewUser->Id ) { - MailError( - To => $ErrorsTo, - Subject => "User could not be created", - Explanation => - "User creation failed in mailgateway: $Message", - MIMEObj => $entity, - LogLevel => 'crit', - ); + + unless ($NewUser->Id) { + MailError( To => $ErrorsTo, + Subject => "User could not be created", + Explanation => "User creation failed in mailgateway: $Message", + MIMEObj => $entity, + LogLevel => 'crit' + ); } } #Load the new user object - my $CurrentUser = new RT::CurrentUser; - $CurrentUser->LoadByEmail( $Address ); + my $CurrentUser = RT::CurrentUser->new(); + $CurrentUser->LoadByEmail($Address); - unless ( $CurrentUser->id ) { - $RT::Logger->warning( - "Couldn't load user '$Address'." . "giving up" ); - MailError( - To => $ErrorsTo, - Subject => "User could not be loaded", - Explanation => - "User '$Address' could not be loaded in the mail gateway", - MIMEObj => $entity, - LogLevel => 'crit' - ); + unless ($CurrentUser->id) { + $RT::Logger->warning("Couldn't load user '$Address'.". "giving up"); + MailError( To => $ErrorsTo, + Subject => "User could not be loaded", + Explanation => "User '$Address' could not be loaded in the mail gateway", + MIMEObj => $entity, + LogLevel => 'crit' + ); } return $CurrentUser; } +# }}} +# {{{ ParseCcAddressesFromHead +=head2 ParseCcAddressesFromHead HASHREF - -=head2 ParseCcAddressesFromHead HASH - -Takes a hash containing QueueObj, Head and CurrentUser objects. -Returns a list of all email addresses in the To and Cc -headers b<except> the current Queue\'s email addresses, the CurrentUser\'s +Takes a hashref object containing QueueObj, Head and CurrentUser objects. +Returns a list of all email addresses in the To and Cc +headers b<except> the current Queue\'s email addresses, the CurrentUser\'s email address and anything that the configuration sub RT::IsRTAddress matches. =cut - + sub ParseCcAddressesFromHead { - my %args = ( - Head => undef, - QueueObj => undef, - CurrentUser => undef, - @_ - ); - - my $current_address = lc $args{'CurrentUser'}->EmailAddress; - my $user = $args{'CurrentUser'}->UserObj; - - return - grep $_ ne $current_address && !RT::EmailParser->IsRTAddress( $_ ), - map lc $user->CanonicalizeEmailAddress( $_->address ), - map Email::Address->parse( $args{'Head'}->get( $_ ) ), - qw(To Cc); + my %args = ( Head => undef, + QueueObj => undef, + CurrentUser => undef, + @_ ); + + my (@Addresses); + + my @ToObjs = Mail::Address->parse($args{'Head'}->get('To')); + my @CcObjs = Mail::Address->parse($args{'Head'}->get('Cc')); + + foreach my $AddrObj (@ToObjs, @CcObjs) { + my $Address = $AddrObj->address; + $Address = $args{'CurrentUser'}->UserObj->CanonicalizeEmailAddress($Address); + next if ($args{'CurrentUser'}->EmailAddress =~ /^$Address$/i); + next if ($args{'QueueObj'}->CorrespondAddress =~ /^$Address$/i); + next if ($args{'QueueObj'}->CommentAddress =~ /^$Address$/i); + next if (RT::EmailParser::IsRTAddress(undef, $Address)); + + push (@Addresses, $Address); + } + return (@Addresses); } +# }}} -=head2 ParseSenderAddressFromHead HEAD +# {{{ ParseSenderAdddressFromHead -Takes a MIME::Header object. Returns a tuple: (user@host, friendly name) +=head2 ParseSenderAddressFromHead + +Takes a MIME::Header object. Returns a tuple: (user@host, friendly name) of the From (evaluated in order of Reply-To:, From:, Sender) =cut sub ParseSenderAddressFromHead { my $head = shift; - #Figure out who's sending this message. - foreach my $header ('Reply-To', 'From', 'Sender') { - my $addr_line = $head->get($header) || next; - my ($addr, $name) = ParseAddressFromHeader( $addr_line ); - # only return if the address is not empty - return ($addr, $name) if $addr; - } - - return (undef, undef); + my $From = $head->get('Reply-To') || + $head->get('From') || + $head->get('Sender'); + return (ParseAddressFromHeader($From)); } +# }}} -=head2 ParseErrorsToAddressFromHead HEAD +# {{{ ParseErrorsToAdddressFromHead + +=head2 ParseErrorsToAddressFromHead Takes a MIME::Header object. Return a single value : user@host -of the From (evaluated in order of Return-path:,Errors-To:,Reply-To:, -From:, Sender) +of the From (evaluated in order of Errors-To:,Reply-To:, From:, Sender) =cut sub ParseErrorsToAddressFromHead { my $head = shift; - #Figure out who's sending this message. - foreach my $header ( 'Errors-To', 'Reply-To', 'From', 'Sender' ) { - - # If there's a header of that name - my $headerobj = $head->get($header); - if ($headerobj) { - my ( $addr, $name ) = ParseAddressFromHeader($headerobj); - - # If it's got actual useful content... - return ($addr) if ($addr); - } + foreach my $header ('Errors-To' , 'Reply-To', 'From', 'Sender' ) { + # If there's a header of that name + my $headerobj = $head->get($header); + if ($headerobj) { + my ($addr, $name ) = ParseAddressFromHeader($headerobj); + # If it's got actual useful content... + return ($addr) if ($addr); + } } } +# }}} - +# {{{ ParseAddressFromHeader =head2 ParseAddressFromHeader ADDRESS -Takes an address from C<$head->get('Line')> and returns a tuple: user@host, friendly name +Takes an address from $head->get('Line') and returns a tuple: user@host, friendly name =cut -sub ParseAddressFromHeader { - my $Addr = shift; - # Some broken mailers send: ""Vincent, Jesse"" <jesse@fsck.com>. Hate - $Addr =~ s/\"\"(.*?)\"\"/\"$1\"/g; - my @Addresses = RT::EmailParser->ParseEmailAddress($Addr); +sub ParseAddressFromHeader{ + my $Addr = shift; + + my @Addresses = Mail::Address->parse($Addr); + + my $AddrObj = $Addresses[0]; - my ($AddrObj) = grep ref $_, @Addresses; - unless ( $AddrObj ) { - return ( undef, undef ); + unless (ref($AddrObj)) { + return(undef,undef); } - - my $Name = ( $AddrObj->name || $AddrObj->phrase || $AddrObj->comment || $AddrObj->address ); - + + my $Name = ($AddrObj->phrase || $AddrObj->comment || $AddrObj->address); + #Lets take the from and load a user object. my $Address = $AddrObj->address; - return ( $Address, $Name ); -} - -=head2 DeleteRecipientsFromHead HEAD RECIPIENTS - -Gets a head object and list of addresses. -Deletes addresses from To, Cc or Bcc fields. - -=cut - -sub DeleteRecipientsFromHead { - my $head = shift; - my %skip = map { lc $_ => 1 } @_; - - foreach my $field ( qw(To Cc Bcc) ) { - $head->set( $field => - join ', ', map $_->format, grep !$skip{ lc $_->address }, - Email::Address->parse( $head->get( $field ) ) - ); - } -} - -sub GenMessageId { - my %args = ( - Ticket => undef, - Scrip => undef, - ScripAction => undef, - @_ - ); - my $org = RT->Config->Get('Organization'); - my $ticket_id = ( ref $args{'Ticket'}? $args{'Ticket'}->id : $args{'Ticket'} ) || 0; - my $scrip_id = ( ref $args{'Scrip'}? $args{'Scrip'}->id : $args{'Scrip'} ) || 0; - my $sent = ( ref $args{'ScripAction'}? $args{'ScripAction'}->{'_Message_ID'} : 0 ) || 0; - - return "<rt-". $RT::VERSION ."-". $$ ."-". CORE::time() ."-". int(rand(2000)) .'.' - . $ticket_id ."-". $scrip_id ."-". $sent ."@". $org .">" ; + return ($Address, $Name); } +# }}} -sub SetInReplyTo { - my %args = ( - Message => undef, - InReplyTo => undef, - Ticket => undef, - @_ - ); - return unless $args{'Message'} && $args{'InReplyTo'}; - - my $get_header = sub { - my @res; - if ( $args{'InReplyTo'}->isa('MIME::Entity') ) { - @res = $args{'InReplyTo'}->head->get( shift ); - } else { - @res = $args{'InReplyTo'}->GetHeader( shift ) || ''; - } - return grep length, map { split /\s+/m, $_ } grep defined, @res; - }; - - my @id = $get_header->('Message-ID'); - #XXX: custom header should begin with X- otherwise is violation of the standard - my @rtid = $get_header->('RT-Message-ID'); - my @references = $get_header->('References'); - unless ( @references ) { - @references = $get_header->('In-Reply-To'); - } - push @references, @id, @rtid; - if ( $args{'Ticket'} ) { - my $pseudo_ref = '<RT-Ticket-'. $args{'Ticket'}->id .'@'. RT->Config->Get('Organization') .'>'; - push @references, $pseudo_ref unless grep $_ eq $pseudo_ref, @references; - } - @references = splice @references, 4, -6 - if @references > 10; - - my $mail = $args{'Message'}; - $mail->head->set( 'In-Reply-To' => join ' ', @rtid? (@rtid) : (@id) ) if @id || @rtid; - $mail->head->set( 'References' => join ' ', @references ); -} -sub ParseTicketId { - my $Subject = shift; - - my $rtname = RT->Config->Get('rtname'); - my $test_name = RT->Config->Get('EmailSubjectTagRegex') || qr/\Q$rtname\E/i; - - my $id; - if ( $Subject =~ s/\[$test_name\s+\#(\d+)\s*\]//i ) { - $id = $1; - } else { - foreach my $tag ( RT->System->SubjectTag ) { - next unless $Subject =~ s/\[\Q$tag\E\s+\#(\d+)\s*\]//i; - $id = $1; - last; - } - } - return undef unless $id; - - $RT::Logger->debug("Found a ticket ID. It's $id"); - return $id; -} - -sub AddSubjectTag { - my $subject = shift; - my $ticket = shift; - unless ( ref $ticket ) { - my $tmp = RT::Ticket->new( $RT::SystemUser ); - $tmp->Load( $ticket ); - $ticket = $tmp; - } - my $id = $ticket->id; - my $queue_tag = $ticket->QueueObj->SubjectTag; - - my $tag_re = RT->Config->Get('EmailSubjectTagRegex'); - unless ( $tag_re ) { - my $tag = $queue_tag || RT->Config->Get('rtname'); - $tag_re = qr/\Q$tag\E/; - } elsif ( $queue_tag ) { - $tag_re = qr/$tag_re|\Q$queue_tag\E/; - } - return $subject if $subject =~ /\[$tag_re\s+#$id\]/; - - $subject =~ s/(\r\n|\n|\s)/ /gi; - chomp $subject; - return "[". ($queue_tag || RT->Config->Get('rtname')) ." #$id] $subject"; -} - - -=head2 Gateway ARGSREF - - -Takes parameters: - - action - queue - message +=head2 Gateway This performs all the "guts" of the mail rt-mailgate program, and is designed to be called from the web interface with a message, user object, and so on. -Can also take an optional 'ticket' parameter; this ticket id overrides -any ticket id found in the subject. - -Returns: - - An array of: - - (status code, message, optional ticket object) - - status code is a numeric value. - - for temporary failures, the status code should be -75 - - for permanent failures which are handled by RT, the status code - should be 0 - - for succces, the status code should be 1 - - - =cut -sub _LoadPlugins { - my @mail_plugins = @_; - - my @res; - foreach my $plugin (@mail_plugins) { - if ( ref($plugin) eq "CODE" ) { - push @res, $plugin; - } elsif ( !ref $plugin ) { - my $Class = $plugin; - $Class = "RT::Interface::Email::" . $Class - unless $Class =~ /^RT::Interface::Email::/; - $Class->require or - do { $RT::Logger->error("Couldn't load $Class: $@"); next }; - - no strict 'refs'; - unless ( defined *{ $Class . "::GetCurrentUser" }{CODE} ) { - $RT::Logger->crit( "No GetCurrentUser code found in $Class module"); - next; - } - push @res, $Class; - } else { - $RT::Logger->crit( "$plugin - is not class name or code reference"); - } - } - return @res; -} - sub Gateway { - my $argsref = shift; - my %args = ( - action => 'correspond', - queue => '1', - ticket => undef, - message => undef, - %$argsref - ); - - my $SystemTicket; - my $Right; + my %args = ( message => undef, + queue => 1, + action => 'correspond', + ticket => undef, + @_ ); # Validate the action - my ( $status, @actions ) = IsCorrectAction( $args{'action'} ); - unless ($status) { - return ( - -75, - "Invalid 'action' parameter " - . $actions[0] - . " for queue " - . $args{'queue'}, - undef - ); + unless ( $args{'action'} =~ /^(comment|correspond|action)$/ ) { + + # Can't safely loc this. What object do we loc around? + return ( 0, "Invalid 'action' parameter", undef ); } my $parser = RT::EmailParser->new(); - $parser->SmartParseMIMEEntityFromScalar( - Message => $args{'message'}, - Decode => 0, - Exact => 1, - ); + $parser->ParseMIMEEntityFromScalar( $args{'message'} ); my $Message = $parser->Entity(); - unless ($Message) { - MailError( - Subject => "RT Bounce: Unparseable message", - Explanation => "RT couldn't process the message below", - Attach => $args{'message'} - ); - - return ( 0, - "Failed to parse this message. Something is likely badly wrong with the message" - ); - } - - my @mail_plugins = grep $_, RT->Config->Get('MailPlugins'); - push @mail_plugins, "Auth::MailFrom" unless @mail_plugins; - @mail_plugins = _LoadPlugins( @mail_plugins ); - - my %skip_plugin; - foreach my $class( grep !ref, @mail_plugins ) { - # check if we should apply filter before decoding - my $check_cb = do { - no strict 'refs'; - *{ $class . "::ApplyBeforeDecode" }{CODE}; - }; - next unless defined $check_cb; - next unless $check_cb->( - Message => $Message, - RawMessageRef => \$args{'message'}, - ); + my $head = $Message->head; - $skip_plugin{ $class }++; + my ( $CurrentUser, $AuthStat, $status, $error ); - my $Code = do { - no strict 'refs'; - *{ $class . "::GetCurrentUser" }{CODE}; - }; - my ($status, $msg) = $Code->( - Message => $Message, - RawMessageRef => \$args{'message'}, - ); - next if $status > 0; - - if ( $status == -2 ) { - return (1, $msg, undef); - } elsif ( $status == -1 ) { - return (0, $msg, undef); - } - } - @mail_plugins = grep !$skip_plugin{"$_"}, @mail_plugins; - $parser->_DecodeBodies; - $parser->_PostProcessNewEntity; + my $ErrorsTo = ParseErrorsToAddressFromHead($head); - my $head = $Message->head; - my $ErrorsTo = ParseErrorsToAddressFromHead( $head ); - - my $MessageId = $head->get('Message-ID') - || "<no-message-id-". time . rand(2000) .'@'. RT->Config->Get('Organization') .'>'; + my $MessageId = $head->get('Message-Id') + || "<no-message-id-" . time . rand(2000) . "\@.$RT::Organization>"; #Pull apart the subject line my $Subject = $head->get('Subject') || ''; chomp $Subject; - - # {{{ Lets check for mail loops of various sorts. - my ($should_store_machine_generated_message, $IsALoop, $result); - ( $should_store_machine_generated_message, $ErrorsTo, $result, $IsALoop ) = - _HandleMachineGeneratedMail( - Message => $Message, - ErrorsTo => $ErrorsTo, - Subject => $Subject, - MessageId => $MessageId - ); - - # Do not pass loop messages to MailPlugins, to make sure the loop - # is broken, unless $RT::StoreLoops is set. - if ($IsALoop && !$should_store_machine_generated_message) { - return ( 0, $result, undef ); - } - # }}} - $args{'ticket'} ||= ParseTicketId( $Subject ); - $SystemTicket = RT::Ticket->new( $RT::SystemUser ); - $SystemTicket->Load( $args{'ticket'} ) if ( $args{'ticket'} ) ; - if ( $SystemTicket->id ) { - $Right = 'ReplyToTicket'; - } else { - $Right = 'CreateTicket'; + $args{'ticket'} ||= $parser->ParseTicketId($Subject); + + my $SystemTicket; + if ($args{'ticket'} ) { + $SystemTicket = RT::Ticket->new($RT::SystemUser); + $SystemTicket->Load($args{'ticket'}); } #Set up a queue object - my $SystemQueueObj = RT::Queue->new( $RT::SystemUser ); + my $SystemQueueObj = RT::Queue->new($RT::SystemUser); $SystemQueueObj->Load( $args{'queue'} ); - # We can safely have no queue of we have a known-good ticket - unless ( $SystemTicket->id || $SystemQueueObj->id ) { - return ( -75, "RT couldn't find the queue: " . $args{'queue'}, undef ); - } - - my ($AuthStat, $CurrentUser, $error) = GetAuthenticationLevel( - MailPlugins => \@mail_plugins, - Actions => \@actions, - Message => $Message, - RawMessageRef => \$args{message}, - SystemTicket => $SystemTicket, - SystemQueue => $SystemQueueObj, - ); - # {{{ If authentication fails and no new user was created, get out. - if ( !$CurrentUser || !$CurrentUser->id || $AuthStat == -1 ) { - - # If the plugins refused to create one, they lose. - unless ( $AuthStat == -1 ) { - _NoAuthorizedUserFound( - Right => $Right, - Message => $Message, - Requestor => $ErrorsTo, - Queue => $args{'queue'} - ); - - } - return ( 0, "Could not load a valid user", undef ); - } - - # If we got a user, but they don't have the right to say things - if ( $AuthStat == 0 ) { + # We can safely have no queue of we have a known-good ticket + unless ( $args{'ticket'} || $SystemQueueObj->id ) { MailError( - To => $ErrorsTo, - Subject => "Permission Denied", - Explanation => - "You do not have permission to communicate with RT", - MIMEObj => $Message - ); - return ( - 0, - "$ErrorsTo tried to submit a message to " - . $args{'Queue'} - . " without permission.", - undef - ); - } - - - unless ($should_store_machine_generated_message) { - return ( 0, $result, undef ); - } - - # if plugin's updated SystemTicket then update arguments - $args{'ticket'} = $SystemTicket->Id if $SystemTicket && $SystemTicket->Id; - - my $Ticket = RT::Ticket->new($CurrentUser); - - if ( !$args{'ticket'} && grep /^(comment|correspond)$/, @actions ) - { - - my @Cc; - my @Requestors = ( $CurrentUser->id ); - - if (RT->Config->Get('ParseNewMessageForTicketCcs')) { - @Cc = ParseCcAddressesFromHead( - Head => $head, - CurrentUser => $CurrentUser, - QueueObj => $SystemQueueObj - ); - } - - my ( $id, $Transaction, $ErrStr ) = $Ticket->Create( - Queue => $SystemQueueObj->Id, - Subject => $Subject, - Requestor => \@Requestors, - Cc => \@Cc, - MIMEObj => $Message - ); - if ( $id == 0 ) { - MailError( - To => $ErrorsTo, - Subject => "Ticket creation failed: $Subject", - Explanation => $ErrStr, - MIMEObj => $Message - ); - return ( 0, "Ticket creation failed: $ErrStr", $Ticket ); - } - - # strip comments&corresponds from the actions we don't need - # to record them if we've created the ticket just now - @actions = grep !/^(comment|correspond)$/, @actions; - $args{'ticket'} = $id; - - } elsif ( $args{'ticket'} ) { - - $Ticket->Load( $args{'ticket'} ); - unless ( $Ticket->Id ) { - my $error = "Could not find a ticket with id " . $args{'ticket'}; - MailError( - To => $ErrorsTo, - Subject => "Message not recorded: $Subject", - Explanation => $error, - MIMEObj => $Message - ); - - return ( 0, $error ); - } - $args{'ticket'} = $Ticket->id; - } else { - return ( 1, "Success", $Ticket ); + To => $RT::OwnerEmail, + Subject => "RT Bounce: $Subject", + Explanation => "RT couldn't find the queue: " . $args{'queue'}, + MIMEObj => $Message ); + return ( 0, "RT couldn't find the queue: " . $args{'queue'}, undef ); } - # }}} - - my $unsafe_actions = RT->Config->Get('UnsafeEmailCommands'); - foreach my $action (@actions) { - - # If the action is comment, add a comment. - if ( $action =~ /^(?:comment|correspond)$/i ) { - my $method = ucfirst lc $action; - my ( $status, $msg ) = $Ticket->$method( MIMEObj => $Message ); - unless ($status) { - - #Warn the sender that we couldn't actually submit the comment. - MailError( - To => $ErrorsTo, - Subject => "Message not recorded: $Subject", - Explanation => $msg, - MIMEObj => $Message - ); - return ( 0, "Message not recorded: $msg", $Ticket ); - } - } elsif ($unsafe_actions) { - my ( $status, $msg ) = _RunUnsafeAction( - Action => $action, - ErrorsTo => $ErrorsTo, - Message => $Message, - Ticket => $Ticket, - CurrentUser => $CurrentUser, - ); - return ($status, $msg, $Ticket) unless $status == 1; - } - } - return ( 1, "Success", $Ticket ); -} - -=head2 GetAuthenticationLevel - # Authentication Level - # -1 - Get out. this user has been explicitly declined + # -1 - Get out. this user has been explicitly declined # 0 - User may not do anything (Not used at the moment) # 1 - Normal user # 2 - User is allowed to specify status updates etc. a la enhanced-mailgate -=cut - -sub GetAuthenticationLevel { - my %args = ( - MailPlugins => [], - Actions => [], - Message => undef, - RawMessageRef => undef, - SystemTicket => undef, - SystemQueue => undef, - @_, - ); - - my ( $CurrentUser, $AuthStat, $error ); - - # Initalize AuthStat so comparisons work correctly - $AuthStat = -9999999; - - # if plugin returns AuthStat -2 we skip action - # NOTE: this is experimental API and it would be changed - my %skip_action = (); - + push @RT::MailPlugins, "Auth::MailFrom" unless @RT::MailPlugins; # Since this needs loading, no matter what - foreach (@{ $args{MailPlugins} }) { - my ($Code, $NewAuthStat); + + for (@RT::MailPlugins) { + my $Code; + my $NewAuthStat; if ( ref($_) eq "CODE" ) { $Code = $_; - } else { - no strict 'refs'; - $Code = *{ $_ . "::GetCurrentUser" }{CODE}; } - - foreach my $action (@{ $args{Actions} }) { - ( $CurrentUser, $NewAuthStat ) = $Code->( - Message => $args{Message}, - RawMessageRef => $args{RawMessageRef}, - CurrentUser => $CurrentUser, - AuthLevel => $AuthStat, - Action => $action, - Ticket => $args{SystemTicket}, - Queue => $args{SystemQueue}, - ); - -# You get the highest level of authentication you were assigned, unless you get the magic -1 -# If a module returns a "-1" then we discard the ticket, so. - $AuthStat = $NewAuthStat - if ( $NewAuthStat > $AuthStat or $NewAuthStat == -1 or $NewAuthStat == -2 ); - - last if $AuthStat == -1; - $skip_action{$action}++ if $AuthStat == -2; + else { + $_ = "RT::Interface::Email::$_" unless /^RT::Interface::Email::/; + eval "require $_;"; + if ($@) { + die ("Couldn't load module $_: $@"); + next; + } + no strict 'refs'; + if ( !defined( $Code = *{ $_ . "::GetCurrentUser" }{CODE} ) ) { + die ("No GetCurrentUser code found in $_ module"); + next; + } } - # strip actions we should skip - @{$args{Actions}} = grep !$skip_action{$_}, @{$args{Actions}} - if $AuthStat == -2; - last unless @{$args{Actions}}; + ( $CurrentUser, $NewAuthStat ) = $Code->( Message => $Message, + CurrentUser => $CurrentUser, + AuthLevel => $AuthStat, + Action => $args{'action'}, + Ticket => $SystemTicket, + Queue => $SystemQueueObj ); + # You get the highest level of authentication you were assigned. last if $AuthStat == -1; + $AuthStat = $NewAuthStat if $NewAuthStat > $AuthStat; } - return $AuthStat if !wantarray; - - return ($AuthStat, $CurrentUser, $error); -} - -sub _RunUnsafeAction { - my %args = ( - Action => undef, - ErrorsTo => undef, - Message => undef, - Ticket => undef, - CurrentUser => undef, - @_ - ); - - if ( $args{'Action'} =~ /^take$/i ) { - my ( $status, $msg ) = $args{'Ticket'}->SetOwner( $args{'CurrentUser'}->id ); - unless ($status) { - MailError( - To => $args{'ErrorsTo'}, - Subject => "Ticket not taken", - Explanation => $msg, - MIMEObj => $args{'Message'} - ); - return ( 0, "Ticket not taken" ); - } - } elsif ( $args{'Action'} =~ /^resolve$/i ) { - my ( $status, $msg ) = $args{'Ticket'}->SetStatus('resolved'); - unless ($status) { - - #Warn the sender that we couldn't actually submit the comment. - MailError( - To => $args{'ErrorsTo'}, - Subject => "Ticket not resolved", - Explanation => $msg, - MIMEObj => $args{'Message'} - ); - return ( 0, "Ticket not resolved" ); - } - } else { - return ( 0, "Not supported unsafe action $args{'Action'}", $args{'Ticket'} ); - } - return ( 1, "Success" ); -} - -=head2 _NoAuthorizedUserFound - -Emails the RT Owner and the requestor when the auth plugins return "No auth user found" - -=cut - -sub _NoAuthorizedUserFound { - my %args = ( - Right => undef, - Message => undef, - Requestor => undef, - Queue => undef, - @_ - ); - - # Notify the RT Admin of the failure. - MailError( - To => RT->Config->Get('OwnerEmail'), - Subject => "Could not load a valid user", - Explanation => <<EOT, -RT could not load a valid user, and RT's configuration does not allow -for the creation of a new user for this email (@{[$args{Requestor}]}). - -You might need to grant 'Everyone' the right '@{[$args{Right}]}' for the -queue @{[$args{'Queue'}]}. + # {{{ If authentication fails and no new user was created, get out. + if ( !$CurrentUser or !$CurrentUser->Id or $AuthStat == -1 ) { -EOT - MIMEObj => $args{'Message'}, - LogLevel => 'error' - ); - - # Also notify the requestor that his request has been dropped. - if ($args{'Requestor'} ne RT->Config->Get('OwnerEmail')) { - MailError( - To => $args{'Requestor'}, - Subject => "Could not load a valid user", - Explanation => <<EOT, + # If the plugins refused to create one, they lose. + MailError( + Subject => "Could not load a valid user", + Explanation => <<EOT, RT could not load a valid user, and RT's configuration does not allow for the creation of a new user for your email. +Your RT administrator needs to grant 'Everyone' the right 'CreateTicket' +for this queue. + EOT - MIMEObj => $args{'Message'}, - LogLevel => 'error' - ); + MIMEObj => $Message, + LogLevel => 'error' ) + unless $AuthStat == -1; + return ( 0, "Could not load a valid user", undef ); } -} - -=head2 _HandleMachineGeneratedMail - -Takes named params: - Message - ErrorsTo - Subject - -Checks the message to see if it's a bounce, if it looks like a loop, if it's autogenerated, etc. -Returns a triple of ("Should we continue (boolean)", "New value for $ErrorsTo", "Status message", -"This message appears to be a loop (boolean)" ); -=cut - -sub _HandleMachineGeneratedMail { - my %args = ( Message => undef, ErrorsTo => undef, Subject => undef, MessageId => undef, @_ ); - my $head = $args{'Message'}->head; - my $ErrorsTo = $args{'ErrorsTo'}; - - my $IsBounce = CheckForBounce($head); + # }}} + # {{{ Lets check for mail loops of various sorts. my $IsAutoGenerated = CheckForAutoGenerated($head); my $IsSuspiciousSender = CheckForSuspiciousSender($head); @@ -1711,77 +496,153 @@ sub _HandleMachineGeneratedMail { my $SquelchReplies = 0; - my $owner_mail = RT->Config->Get('OwnerEmail'); - #If the message is autogenerated, we need to know, so we can not # send mail to the sender - if ( $IsBounce || $IsSuspiciousSender || $IsAutoGenerated || $IsALoop ) { + if ( $IsSuspiciousSender || $IsAutoGenerated || $IsALoop ) { $SquelchReplies = 1; - $ErrorsTo = $owner_mail; + $ErrorsTo = $RT::OwnerEmail; } + # }}} + + # {{{ Drop it if it's disallowed + if ( $AuthStat == 0 ) { + MailError( + To => $ErrorsTo, + Subject => "Permission Denied", + Explanation => "You do not have permission to communicate with RT", + MIMEObj => $Message ); + } + + # }}} + # {{{ Warn someone if it's a loop + # Warn someone if it's a loop, before we drop it on the ground if ($IsALoop) { - $RT::Logger->crit("RT Received mail (".$args{MessageId}.") from itself."); + $RT::Logger->crit("RT Recieved mail ($MessageId) from itself."); #Should we mail it to RTOwner? - if ( RT->Config->Get('LoopsToRTOwner') ) { - MailError( - To => $owner_mail, - Subject => "RT Bounce: ".$args{'Subject'}, - Explanation => "RT thinks this message may be a bounce", - MIMEObj => $args{Message} - ); - } + if ($RT::LoopsToRTOwner) { + MailError( To => $RT::OwnerEmail, + Subject => "RT Bounce: $Subject", + Explanation => "RT thinks this message may be a bounce", + MIMEObj => $Message ); - #Do we actually want to store it? - return ( 0, $ErrorsTo, "Message Bounced", $IsALoop ) - unless RT->Config->Get('StoreLoops'); + #Do we actually want to store it? + return ( 0, "Message Bounced", undef ) unless ($RT::StoreLoops); + } } - # Squelch replies if necessary + # }}} + + # {{{ Squelch replies if necessary # Don't let the user stuff the RT-Squelch-Replies-To header. if ( $head->get('RT-Squelch-Replies-To') ) { - $head->add( - 'RT-Relocated-Squelch-Replies-To', - $head->get('RT-Squelch-Replies-To') - ); + $head->add( 'RT-Relocated-Squelch-Replies-To', + $head->get('RT-Squelch-Replies-To') ); $head->delete('RT-Squelch-Replies-To'); } if ($SquelchReplies) { + ## TODO: This is a hack. It should be some other way to + ## indicate that the transaction should be "silent". - # Squelch replies to the sender, and also leave a clue to - # allow us to squelch ALL outbound messages. This way we - # can punt the logic of "what to do when we get a bounce" - # to the scrip. We might want to notify nobody. Or just - # the RT Owner. Or maybe all Privileged watchers. my ( $Sender, $junk ) = ParseSenderAddressFromHead($head); - $head->add( 'RT-Squelch-Replies-To', $Sender ); - $head->add( 'RT-DetectedAutoGenerated', 'true' ); + $head->add( 'RT-Squelch-Replies-To', $Sender ); } - return ( 1, $ErrorsTo, "Handled machine detection", $IsALoop ); -} -=head2 IsCorrectAction + # }}} -Returns a list of valid actions we've found for this message + my $Ticket = RT::Ticket->new($CurrentUser); -=cut + # {{{ If we don't have a ticket Id, we're creating a new ticket + if ( !$args{'ticket'} ) { + + # {{{ Create a new ticket + + my @Cc; + my @Requestors = ( $CurrentUser->id ); + + if ($RT::ParseNewMessageForTicketCcs) { + @Cc = ParseCcAddressesFromHead( Head => $head, + CurrentUser => $CurrentUser, + QueueObj => $SystemQueueObj ); + } + + my ( $id, $Transaction, $ErrStr ) = $Ticket->Create( + Queue => $SystemQueueObj->Id, + Subject => $Subject, + Requestor => \@Requestors, + Cc => \@Cc, + MIMEObj => $Message ); + if ( $id == 0 ) { + MailError( To => $ErrorsTo, + Subject => "Ticket creation failed", + Explanation => $ErrStr, + MIMEObj => $Message ); + $RT::Logger->error("Create failed: $id / $Transaction / $ErrStr "); + return ( 0, "Ticket creation failed", $Ticket ); + } -sub IsCorrectAction { - my $action = shift; - my @actions = grep $_, split /-/, $action; - return ( 0, '(no value)' ) unless @actions; - foreach ( @actions ) { - return ( 0, $_ ) unless /^(?:comment|correspond|take|resolve)$/; + # }}} } - return ( 1, @actions ); + + # }}} + + # If the action is comment, add a comment. + elsif ( $args{'action'} =~ /^(comment|correspond)$/i ) { + $Ticket->Load($args{'ticket'}); + unless ( $Ticket->Id ) { + my $message = "Could not find a ticket with id ".$args{'ticket'}; + MailError( To => $ErrorsTo, + Subject => "Message not recorded", + Explanation => $message, + MIMEObj => $Message ); + + return ( 0, $message); + } + + my ( $status, $msg ); + if ( $args{'action'} =~ /^correspond$/ ) { + ( $status, $msg ) = $Ticket->Correspond( MIMEObj => $Message ); + } + else { + ( $status, $msg ) = $Ticket->Comment( MIMEObj => $Message ); + } + unless ($status) { + + #Warn the sender that we couldn't actually submit the comment. + MailError( To => $ErrorsTo, + Subject => "Message not recorded", + Explanation => $msg, + MIMEObj => $Message ); + return ( 0, "Message not recorded", $Ticket ); + } + } + + else { + + #Return mail to the sender with an error + MailError( To => $ErrorsTo, + Subject => "RT Configuration error", + Explanation => "'" + . $args{'action'} + . "' not a recognized action." + . " Your RT administrator has misconfigured " + . "the mail aliases which invoke RT", + MIMEObj => $Message ); + $RT::Logger->crit( $args{'action'} . " type unknown for $MessageId" ); + return ( 0, "Configuration error: " . $args{'action'} . " not a recognized action", $Ticket ); + + } + + +return ( 1, "Success", $Ticket ); } eval "require RT::Interface::Email_Vendor"; -die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Email_Vendor.pm} ); +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email_Vendor.pm}); eval "require RT::Interface::Email_Local"; -die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Email_Local.pm} ); +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email_Local.pm}); 1; diff --git a/rt/lib/RT/Interface/Web.pm b/rt/lib/RT/Interface/Web.pm index d6b854f4e..5097f54a4 100644 --- a/rt/lib/RT/Interface/Web.pm +++ b/rt/lib/RT/Interface/Web.pm @@ -1,792 +1,148 @@ -# BEGIN BPS TAGGED BLOCK {{{ -# -# COPYRIGHT: -# -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: -# +# BEGIN LICENSE BLOCK +# +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> +# +# (Except where explictly superceded by other copyright notices) +# # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have # been provided with this software, but in any event can be snarfed # from www.gnu.org. -# +# # This work is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. +# +# +# END LICENSE BLOCK ## Portions Copyright 2000 Tobias Brox <tobix@fsck.com> ## This is a library of static subs to be used by the Mason web ## interface to RT + =head1 NAME RT::Interface::Web +=begin testing -=cut - -use strict; -use warnings; +use_ok(RT::Interface::Web); -package RT::Interface::Web; - -use RT::SavedSearches; -use URI qw(); -use RT::Interface::Web::Session; -use Digest::MD5 (); -use Encode qw(); - -# {{{ EscapeUTF8 - -=head2 EscapeUTF8 SCALARREF - -does a css-busting but minimalist escaping of whatever html you're passing in. +=end testing =cut -sub EscapeUTF8 { - my $ref = shift; - return unless defined $$ref; - - $$ref =~ s/&/&/g; - $$ref =~ s/</</g; - $$ref =~ s/>/>/g; - $$ref =~ s/\(/(/g; - $$ref =~ s/\)/)/g; - $$ref =~ s/"/"/g; - $$ref =~ s/'/'/g; -} - -# }}} - -# {{{ EscapeURI - -=head2 EscapeURI SCALARREF - -Escapes URI component according to RFC2396 - -=cut -sub EscapeURI { - my $ref = shift; - return unless defined $$ref; - - use bytes; - $$ref =~ s/([^a-zA-Z0-9_.!~*'()-])/uc sprintf("%%%02X", ord($1))/eg; -} - -# }}} - -# {{{ WebCanonicalizeInfo +package RT::Interface::Web; +use strict; -=head2 WebCanonicalizeInfo(); -Different web servers set different environmental varibles. This -function must return something suitable for REMOTE_USER. By default, -just downcase $ENV{'REMOTE_USER'} -=cut - -sub WebCanonicalizeInfo { - return $ENV{'REMOTE_USER'} ? lc $ENV{'REMOTE_USER'} : $ENV{'REMOTE_USER'}; -} -# }}} -# {{{ WebExternalAutoInfo +# {{{ sub NewApacheHandler -=head2 WebExternalAutoInfo($user); +=head2 NewApacheHandler -Returns a hash of user attributes, used when WebExternalAuto is set. + Takes extra options to pass to HTML::Mason::ApacheHandler->new + Returns a new Mason::ApacheHandler object =cut -sub WebExternalAutoInfo { - my $user = shift; - - my %user_info; - - # default to making Privileged users, even if they specify - # some other default Attributes - if ( !$RT::AutoCreate - || ( ref($RT::AutoCreate) && not exists $RT::AutoCreate->{Privileged} ) ) - { - $user_info{'Privileged'} = 1; - } - - if ( $^O !~ /^(?:riscos|MacOS|MSWin32|dos|os2)$/ ) { - - # Populate fields with information from Unix /etc/passwd - - my ( $comments, $realname ) = ( getpwnam($user) )[ 5, 6 ]; - $user_info{'Comments'} = $comments if defined $comments; - $user_info{'RealName'} = $realname if defined $realname; - } elsif ( $^O eq 'MSWin32' and eval 'use Net::AdminMisc; 1' ) { - - # Populate fields with information from NT domain controller - } +sub NewApacheHandler { + require HTML::Mason::ApacheHandler; + my $ah = new HTML::Mason::ApacheHandler( + + comp_root => [ + [ local => $RT::MasonLocalComponentRoot ], + [ standard => $RT::MasonComponentRoot ] + ], + args_method => "CGI", + default_escape_flags => 'h', + allow_globals => [qw(%session)], + data_dir => "$RT::MasonDataDir", + @_ + ); - # and return the wad of stuff - return {%user_info}; + $ah->interp->set_escape( h => \&RT::Interface::Web::EscapeUTF8 ); + + return ($ah); } # }}} -sub HandleRequest { - my $ARGS = shift; - - $HTML::Mason::Commands::r->content_type("text/html; charset=utf-8"); - - $HTML::Mason::Commands::m->{'rt_base_time'} = [ Time::HiRes::gettimeofday() ]; - - # Roll back any dangling transactions from a previous failed connection - $RT::Handle->ForceRollback() if $RT::Handle->TransactionDepth; - - MaybeEnableSQLStatementLog(); - - # avoid reentrancy, as suggested by masonbook - local *HTML::Mason::Commands::session unless $HTML::Mason::Commands::m->is_subrequest; - - $HTML::Mason::Commands::m->autoflush( $HTML::Mason::Commands::m->request_comp->attr('AutoFlush') ) - if ( $HTML::Mason::Commands::m->request_comp->attr_exists('AutoFlush') ); - - DecodeARGS($ARGS); - PreprocessTimeUpdates($ARGS); - - MaybeShowInstallModePage(); - - $HTML::Mason::Commands::m->comp( '/Elements/SetupSessionCookie', %$ARGS ); - SendSessionCookie(); - $HTML::Mason::Commands::session{'CurrentUser'} = RT::CurrentUser->new() unless _UserLoggedIn(); - - MaybeShowNoAuthPage($ARGS); - - AttemptExternalAuth($ARGS) if RT->Config->Get('WebExternalAuthContinuous') or not _UserLoggedIn(); - - _ForceLogout() unless _UserLoggedIn(); - - # Process per-page authentication callbacks - $HTML::Mason::Commands::m->callback( %$ARGS, CallbackName => 'Auth', CallbackPage => '/autohandler' ); - - unless ( _UserLoggedIn() ) { - _ForceLogout(); - - # If the user is logging in, let's authenticate - if ( defined $ARGS->{user} && defined $ARGS->{pass} ) { - AttemptPasswordAuthentication($ARGS); - } else { - # if no credentials then show him login page - $HTML::Mason::Commands::m->comp( '/Elements/Login', %$ARGS ); - $HTML::Mason::Commands::m->abort; - } - } - - # now it applies not only to home page, but any dashboard that can be used as a workspace - $HTML::Mason::Commands::session{'home_refresh_interval'} = $ARGS->{'HomeRefreshInterval'} - if ( $ARGS->{'HomeRefreshInterval'} ); - - # Process per-page global callbacks - $HTML::Mason::Commands::m->callback( %$ARGS, CallbackName => 'Default', CallbackPage => '/autohandler' ); - - ShowRequestedPage($ARGS); - LogRecordedSQLStatements(); -} - -sub _ForceLogout { - - delete $HTML::Mason::Commands::session{'CurrentUser'}; -} - -sub _UserLoggedIn { - if ( $HTML::Mason::Commands::session{CurrentUser} && $HTML::Mason::Commands::session{'CurrentUser'}->id ) { - return 1; - } else { - return undef; - } - -} - -=head2 MaybeShowInstallModePage - -This function, called exclusively by RT's autohandler, dispatches -a request to RT's Installation workflow, only if Install Mode is enabled in the configuration file. - -If it serves a page, it stops mason processing. Otherwise, mason just keeps running through the autohandler - -=cut - -sub MaybeShowInstallModePage { - return unless RT->InstallMode; - - my $m = $HTML::Mason::Commands::m; - if ( $m->base_comp->path =~ RT->Config->Get('WebNoAuthRegex') ) { - $m->call_next(); - } elsif ( $m->request_comp->path !~ '^(/+)Install/' ) { - RT::Interface::Web::Redirect( RT->Config->Get('WebURL') . "Install/index.html" ); - } else { - $m->call_next(); - } - $m->abort(); -} - -=head2 MaybeShowNoAuthPage \%ARGS +# {{{ sub NewCGIHandler -This function, called exclusively by RT's autohandler, dispatches -a request to the page a user requested (but only if it matches the "noauth" regex. +=head2 NewCGIHandler -If it serves a page, it stops mason processing. Otherwise, mason just keeps running through the autohandler - -=cut - -sub MaybeShowNoAuthPage { - my $ARGS = shift; - - my $m = $HTML::Mason::Commands::m; - - return unless $m->base_comp->path =~ RT->Config->Get('WebNoAuthRegex'); - - # If it's a noauth file, don't ask for auth. - SendSessionCookie(); - $m->comp( { base_comp => $m->request_comp }, $m->fetch_next, %$ARGS ); - $m->abort; -} - -=head2 ShowRequestedPage \%ARGS - -This function, called exclusively by RT's autohandler, dispatches -a request to the page a user requested (making sure that unpriviled users -can only see self-service pages. - -=cut - -sub ShowRequestedPage { - my $ARGS = shift; - - my $m = $HTML::Mason::Commands::m; - - SendSessionCookie(); - - # If the user isn't privileged, they can only see SelfService - unless ( $HTML::Mason::Commands::session{'CurrentUser'}->Privileged ) { - - # if the user is trying to access a ticket, redirect them - if ( $m->request_comp->path =~ '^(/+)Ticket/Display.html' && $ARGS->{'id'} ) { - RT::Interface::Web::Redirect( RT->Config->Get('WebURL') . "SelfService/Display.html?id=" . $ARGS->{'id'} ); - } - - # otherwise, drop the user at the SelfService default page - elsif ( $m->base_comp->path !~ RT->Config->Get('SelfServiceRegex') ) { - RT::Interface::Web::Redirect( RT->Config->Get('WebURL') . "SelfService/" ); - } - - # if user is in SelfService dir let him do anything - else { - $m->comp( { base_comp => $m->request_comp }, $m->fetch_next, %$ARGS ); - } - } else { - $m->comp( { base_comp => $m->request_comp }, $m->fetch_next, %$ARGS ); - } - -} - -sub AttemptExternalAuth { - my $ARGS = shift; - - return unless ( RT->Config->Get('WebExternalAuth') ); - - my $user = $ARGS->{user}; - my $m = $HTML::Mason::Commands::m; - - # If RT is configured for external auth, let's go through and get REMOTE_USER - - # do we actually have a REMOTE_USER equivlent? - if ( RT::Interface::Web::WebCanonicalizeInfo() ) { - my $orig_user = $user; - - $user = RT::Interface::Web::WebCanonicalizeInfo(); - my $load_method = RT->Config->Get('WebExternalGecos') ? 'LoadByGecos' : 'Load'; - - if ( $^O eq 'MSWin32' and RT->Config->Get('WebExternalGecos') ) { - my $NodeName = Win32::NodeName(); - $user =~ s/^\Q$NodeName\E\\//i; - } - - InstantiateNewSession() unless _UserLoggedIn; - $HTML::Mason::Commands::session{'CurrentUser'} = RT::CurrentUser->new(); - $HTML::Mason::Commands::session{'CurrentUser'}->$load_method($user); - - if ( RT->Config->Get('WebExternalAuto') and not _UserLoggedIn() ) { - - # Create users on-the-fly - my $UserObj = RT::User->new($RT::SystemUser); - my ( $val, $msg ) = $UserObj->Create( - %{ ref RT->Config->Get('AutoCreate') ? RT->Config->Get('AutoCreate') : {} }, - Name => $user, - Gecos => $user, - ); - - if ($val) { - - # now get user specific information, to better create our user. - my $new_user_info = RT::Interface::Web::WebExternalAutoInfo($user); - - # set the attributes that have been defined. - foreach my $attribute ( $UserObj->WritableAttributes ) { - $m->callback( - Attribute => $attribute, - User => $user, - UserInfo => $new_user_info, - CallbackName => 'NewUser', - CallbackPage => '/autohandler' - ); - my $method = "Set$attribute"; - $UserObj->$method( $new_user_info->{$attribute} ) if defined $new_user_info->{$attribute}; - } - $HTML::Mason::Commands::session{'CurrentUser'}->Load($user); - } else { - - # we failed to successfully create the user. abort abort abort. - delete $HTML::Mason::Commands::session{'CurrentUser'}; - $m->comp( '/Elements/Login', %$ARGS, Error => HTML::Mason::Commands::loc( 'Cannot create user: [_1]', $msg ) ) - if RT->Config->Get('WebFallbackToInternalAuth');; - $m->abort(); - } - } - - if ( _UserLoggedIn() ) { - $m->callback( %$ARGS, CallbackName => 'ExternalAuthSuccessfulLogin', CallbackPage => '/autohandler' ); - } else { - delete $HTML::Mason::Commands::session{'CurrentUser'}; - $user = $orig_user; - - if ( RT->Config->Get('WebExternalOnly') ) { - $m->comp( '/Elements/Login', %$ARGS, Error => HTML::Mason::Commands::loc('You are not an authorized user') ); - $m->abort(); - } - } - } elsif ( RT->Config->Get('WebFallbackToInternalAuth') ) { - unless ( defined $HTML::Mason::Commands::session{'CurrentUser'} ) { - # XXX unreachable due to prior defaulting in HandleRequest (check c34d108) - $m->comp( '/Elements/Login', %$ARGS, Error => HTML::Mason::Commands::loc('You are not an authorized user') ); - $m->abort(); - } - } else { - - # WebExternalAuth is set, but we don't have a REMOTE_USER. abort - # XXX: we must return AUTH_REQUIRED status or we fallback to - # internal auth here too. - delete $HTML::Mason::Commands::session{'CurrentUser'} - if defined $HTML::Mason::Commands::session{'CurrentUser'}; - } -} - -sub AttemptPasswordAuthentication { - my $ARGS = shift; - my $user_obj = RT::CurrentUser->new(); - $user_obj->Load( $ARGS->{user} ); - - my $m = $HTML::Mason::Commands::m; - - unless ( $user_obj->id && $user_obj->IsPassword( $ARGS->{pass} ) ) { - $RT::Logger->error("FAILED LOGIN for @{[$ARGS->{user}]} from $ENV{'REMOTE_ADDR'}"); - $m->comp( '/Elements/Login', %$ARGS, Error => HTML::Mason::Commands::loc('Your username or password is incorrect'), ); - $m->callback( %$ARGS, CallbackName => 'FailedLogin', CallbackPage => '/autohandler' ); - $m->abort; - } - - $RT::Logger->info("Successful login for @{[$ARGS->{user}]} from $ENV{'REMOTE_ADDR'}"); - InstantiateNewSession(); - $HTML::Mason::Commands::session{'CurrentUser'} = $user_obj; - $m->callback( %$ARGS, CallbackName => 'SuccessfulLogin', CallbackPage => '/autohandler' ); -} - -=head2 LoadSessionFromCookie - -Load or setup a session cookie for the current user. + Returns a new Mason::CGIHandler object =cut -sub _SessionCookieName { - my $cookiename = "RT_SID_" . RT->Config->Get('rtname'); - $cookiename .= "." . $ENV{'SERVER_PORT'} if $ENV{'SERVER_PORT'}; - return $cookiename; -} - -sub LoadSessionFromCookie { - - my %cookies = CGI::Cookie->fetch; - my $cookiename = _SessionCookieName(); - my $SessionCookie = ( $cookies{$cookiename} ? $cookies{$cookiename}->value : undef ); - tie %HTML::Mason::Commands::session, 'RT::Interface::Web::Session', $SessionCookie; - unless ( $SessionCookie && $HTML::Mason::Commands::session{'_session_id'} eq $SessionCookie ) { - undef $cookies{$cookiename}; - } - if ( int RT->Config->Get('AutoLogoff') ) { - my $now = int( time / 60 ); - my $last_update = $HTML::Mason::Commands::session{'_session_last_update'} || 0; - - if ( $last_update && ( $now - $last_update - RT->Config->Get('AutoLogoff') ) > 0 ) { - InstantiateNewSession(); - } - - # save session on each request when AutoLogoff is turned on - $HTML::Mason::Commands::session{'_session_last_update'} = $now if $now != $last_update; - } -} - -sub InstantiateNewSession { - tied(%HTML::Mason::Commands::session)->delete if tied(%HTML::Mason::Commands::session); - tie %HTML::Mason::Commands::session, 'RT::Interface::Web::Session', undef; -} - -sub SendSessionCookie { - my $cookie = CGI::Cookie->new( - -name => _SessionCookieName(), - -value => $HTML::Mason::Commands::session{_session_id}, - -path => RT->Config->Get('WebPath'), - -secure => ( RT->Config->Get('WebSecureCookies') ? 1 : 0 ) +sub NewCGIHandler { + my %args = ( + @_ ); - $HTML::Mason::Commands::r->err_headers_out->{'Set-Cookie'} = $cookie->as_string; -} - -=head2 Redirect URL - -This routine ells the current user's browser to redirect to URL. -Additionally, it unties the user's currently active session, helping to avoid -A bug in Apache::Session 1.81 and earlier which clobbers sessions if we try to use -a cached DBI statement handle twice at the same time. - -=cut - -sub Redirect { - my $redir_to = shift; - untie $HTML::Mason::Commands::session; - my $uri = URI->new($redir_to); - my $server_uri = URI->new( RT->Config->Get('WebURL') ); - - # If the user is coming in via a non-canonical - # hostname, don't redirect them to the canonical host, - # it will just upset them (and invalidate their credentials) - # don't do this if $RT::CanoniaclRedirectURLs is true - if ( !RT->Config->Get('CanonicalizeRedirectURLs') - && $uri->host eq $server_uri->host - && $uri->port eq $server_uri->port ) - { - if ( defined $ENV{HTTPS} and $ENV{'HTTPS'} eq 'on' ) { - $uri->scheme('https'); - } else { - $uri->scheme('http'); - } - - # [rt3.fsck.com #12716] Apache recommends use of $SERVER_HOST - $uri->host( $ENV{'SERVER_HOST'} || $ENV{'HTTP_HOST'} ); - $uri->port( $ENV{'SERVER_PORT'} ); - } - - # not sure why, but on some systems without this call mason doesn't - # set status to 302, but 200 instead and people see blank pages - $HTML::Mason::Commands::r->status(302); - - # Perlbal expects a status message, but Mason's default redirect status - # doesn't provide one. See also rt.cpan.org #36689. - $HTML::Mason::Commands::m->redirect( $uri->canonical, "302 Found" ); - - $HTML::Mason::Commands::m->abort; -} - -=head2 StaticFileHeaders - -Send the browser a few headers to try to get it to (somewhat agressively) -cache RT's static Javascript and CSS files. - -This routine could really use _accurate_ heuristics. (XXX TODO) - -=cut - -sub StaticFileHeaders { - my $date = RT::Date->new($RT::SystemUser); - - # make cache public - $HTML::Mason::Commands::r->headers_out->{'Cache-Control'} = 'max-age=259200, public'; - - # Expire things in a month. - $date->Set( Value => time + 30 * 24 * 60 * 60 ); - $HTML::Mason::Commands::r->headers_out->{'Expires'} = $date->RFC2616; - - # if we set 'Last-Modified' then browser request a comp using 'If-Modified-Since' - # request, but we don't handle it and generate full reply again - # Last modified at server start time - # $date->Set( Value => $^T ); - # $HTML::Mason::Commands::r->headers_out->{'Last-Modified'} = $date->RFC2616; -} - -=head2 PathIsSafe - -Takes a C<< Path => path >> and returns a boolean indicating that -the path is safely within RT's control or not. The path I<must> be -relative. - -This function does not consult the filesystem at all; it is merely -a logical sanity checking of the path. This explicitly does not handle -symlinks; if you have symlinks in RT's webroot pointing outside of it, -then we assume you know what you are doing. - -=cut - -sub PathIsSafe { - my $self = shift; - my %args = @_; - my $path = $args{Path}; + my $handler = HTML::Mason::CGIHandler->new( + comp_root => [ + [ local => $RT::MasonLocalComponentRoot ], + [ standard => $RT::MasonComponentRoot ] + ], + data_dir => "$RT::MasonDataDir", + default_escape_flags => 'h', + allow_globals => [qw(%session)] + ); + - # Get File::Spec to clean up extra /s, ./, etc - my $cleaned_up = File::Spec->canonpath($path); + $handler->interp->set_escape( h => \&RT::Interface::Web::EscapeUTF8 ); - if (!defined($cleaned_up)) { - $RT::Logger->info("Rejecting path that canonpath doesn't understand: $path"); - return 0; - } - # Forbid too many ..s. We can't just sum then check because - # "../foo/bar/baz" should be illegal even though it has more - # downdirs than updirs. So as soon as we get a negative score - # (which means "breaking out" of the top level) we reject the path. - - my @components = split '/', $cleaned_up; - my $score = 0; - for my $component (@components) { - if ($component eq '..') { - $score--; - if ($score < 0) { - $RT::Logger->info("Rejecting unsafe path: $path"); - return 0; - } - } - elsif ($component eq '.' || $component eq '') { - # these two have no effect on $score - } - else { - $score++; - } - } + return ($handler); - return 1; } +# }}} -=head2 SendStaticFile -Takes a File => path and a Type => Content-type +# {{{ EscapeUTF8 -If Type isn't provided and File is an image, it will -figure out a sane Content-type, otherwise it will -send application/octet-stream +=head2 EscapeUTF8 SCALARREF -Will set caching headers using StaticFileHeaders +does a css-busting but minimalist escaping of whatever html you're passing in. =cut -sub SendStaticFile { - my $self = shift; - my %args = @_; - my $file = $args{File}; - my $type = $args{Type}; - my $relfile = $args{RelativeFile}; - - if (defined($relfile) && !$self->PathIsSafe(Path => $relfile)) { - $HTML::Mason::Commands::r->status(400); - $HTML::Mason::Commands::m->abort; - } - - $self->StaticFileHeaders(); - - unless ($type) { - if ( $file =~ /\.(gif|png|jpe?g)$/i ) { - $type = "image/$1"; - $type =~ s/jpg/jpeg/gi; - } - $type ||= "application/octet-stream"; - } - $HTML::Mason::Commands::r->content_type($type); - open my $fh, "<$file" or die "couldn't open file: $!"; - binmode($fh); - { - local $/ = \16384; - $HTML::Mason::Commands::m->out($_) while (<$fh>); - $HTML::Mason::Commands::m->flush_buffer; - } - close $fh; -} - -sub StripContent { - my %args = @_; - my $content = $args{Content}; - return '' unless $content; - - # Make the content have no 'weird' newlines in it - $content =~ s/\r+\n/\n/g; - - my $return_content = $content; - - my $html = $args{ContentType} && $args{ContentType} eq "text/html"; - my $sigonly = $args{StripSignature}; - - # massage content to easily detect if there's any real content - $content =~ s/\s+//g; # yes! remove all the spaces - if ( $html ) { - # remove html version of spaces and newlines - $content =~ s! !!g; - $content =~ s!<br/?>!!g; - } - - # Filter empty content when type is text/html - return '' if $html && $content !~ /\S/; - - # If we aren't supposed to strip the sig, just bail now. - return $return_content unless $sigonly; - - # Find the signature - my $sig = $args{'CurrentUser'}->UserObj->Signature || ''; - $sig =~ s/\s+//g; - - # Check for plaintext sig - return '' if not $html and $content =~ /^(--)?\Q$sig\E$/; - - # Check for html-formatted sig - RT::Interface::Web::EscapeUTF8( \$sig ); - return '' - if $html - and $content =~ m{^(?:<p>)?(--)?\Q$sig\E(?:</p>)?$}s; - - # Pass it through - return $return_content; -} - -sub DecodeARGS { - my $ARGS = shift; - - %{$ARGS} = map { - - # if they've passed multiple values, they'll be an array. if they've - # passed just one, a scalar whatever they are, mark them as utf8 - my $type = ref($_); - ( !$type ) - ? Encode::is_utf8($_) - ? $_ - : Encode::decode( 'UTF-8' => $_, Encode::FB_PERLQQ ) - : ( $type eq 'ARRAY' ) - ? [ map { ( ref($_) or Encode::is_utf8($_) ) ? $_ : Encode::decode( 'UTF-8' => $_, Encode::FB_PERLQQ ) } - @$_ ] - : ( $type eq 'HASH' ) - ? { map { ( ref($_) or Encode::is_utf8($_) ) ? $_ : Encode::decode( 'UTF-8' => $_, Encode::FB_PERLQQ ) } - %$_ } - : $_ - } %$ARGS; -} - -sub PreprocessTimeUpdates { - my $ARGS = shift; - - # Later in the code we use - # $m->comp( { base_comp => $m->request_comp }, $m->fetch_next, %ARGS ); - # instead of $m->call_next to avoid problems with UTF8 keys in arguments. - # The call_next method pass through original arguments and if you have - # an argument with unicode key then in a next component you'll get two - # records in the args hash: one with key without UTF8 flag and another - # with the flag, which may result into errors. "{ base_comp => $m->request_comp }" - # is copied from mason's source to get the same results as we get from - # call_next method, this feature is not documented, so we just leave it - # here to avoid possible side effects. - - # This code canonicalizes time inputs in hours into minutes - foreach my $field ( keys %$ARGS ) { - next unless $field =~ /^(.*)-TimeUnits$/i && $ARGS->{$1}; - my $local = $1; - $ARGS->{$local} =~ s{\b (?: (\d+) \s+ )? (\d+)/(\d+) \b} - {($1 || 0) + $3 ? $2 / $3 : 0}xe; - if ( $ARGS->{$field} && $ARGS->{$field} =~ /hours/i ) { - $ARGS->{$local} *= 60; - } - delete $ARGS->{$field}; - } - -} - -sub MaybeEnableSQLStatementLog { - - my $log_sql_statements = RT->Config->Get('StatementLog'); - - if ($log_sql_statements) { - $RT::Handle->ClearSQLStatementLog; - $RT::Handle->LogSQLStatements(1); - } +sub EscapeUTF8 { + my $ref = shift; + my $val = $$ref; + use bytes; + $val =~ s/&/&/g; + $val =~ s/</</g; + $val =~ s/>/>/g; + $val =~ s/\(/(/g; + $val =~ s/\)/)/g; + $val =~ s/"/"/g; + $val =~ s/'/'/g; + $$ref = $val; + Encode::_utf8_on($$ref); } -sub LogRecordedSQLStatements { - my $log_sql_statements = RT->Config->Get('StatementLog'); - - return unless ($log_sql_statements); - - my @log = $RT::Handle->SQLStatementLog; - $RT::Handle->ClearSQLStatementLog; - for my $stmt (@log) { - my ( $time, $sql, $bind, $duration ) = @{$stmt}; - my @bind; - if ( ref $bind ) { - @bind = @{$bind}; - } else { - - # Older DBIx-SB - $duration = $bind; - } - $RT::Logger->log( - level => $log_sql_statements, - message => "SQL(" - . sprintf( "%.6f", $duration ) - . "s): $sql;" - . ( @bind ? " [ bound values: @{[map{qq|'$_'|} @bind]} ]" : "" ) - ); - } +# }}} -} package HTML::Mason::Commands; - +use strict; use vars qw/$r $m %session/; + # {{{ loc =head2 loc ARRAY @@ -800,26 +156,19 @@ through sub loc { - if ( $session{'CurrentUser'} - && UNIVERSAL::can( $session{'CurrentUser'}, 'loc' ) ) - { - return ( $session{'CurrentUser'}->loc(@_) ); - } elsif ( - my $u = eval { - RT::CurrentUser->new(); - } - ) - { - return ( $u->loc(@_) ); - } else { - - # pathetic case -- SystemUser is gone. - return $_[0]; + if ($session{'CurrentUser'} && + UNIVERSAL::can($session{'CurrentUser'}, 'loc')){ + return($session{'CurrentUser'}->loc(@_)); + } + else { + my $u = RT::CurrentUser->new($RT::SystemUser); + return ($u->loc(@_)); } } # }}} + # {{{ loc_fuzzy =head2 loc_fuzzy STRING @@ -833,41 +182,40 @@ inside the lexicon file. =cut sub loc_fuzzy { - my $msg = shift; - - if ( $session{'CurrentUser'} - && UNIVERSAL::can( $session{'CurrentUser'}, 'loc' ) ) - { - return ( $session{'CurrentUser'}->loc_fuzzy($msg) ); - } else { - my $u = RT::CurrentUser->new( $RT::SystemUser->Id ); - return ( $u->loc_fuzzy($msg) ); + my $msg = shift; + + if ($session{'CurrentUser'} && + UNIVERSAL::can($session{'CurrentUser'}, 'loc')){ + return($session{'CurrentUser'}->loc_fuzzy($msg)); + } + else { + my $u = RT::CurrentUser->new($RT::SystemUser); + return ($u->loc_fuzzy($msg)); } } # }}} + # {{{ sub Abort # Error - calls Error and aborts sub Abort { - my $why = shift; - my %args = @_; - if ( $session{'ErrorDocument'} - && $session{'ErrorDocumentType'} ) - { - $r->content_type( $session{'ErrorDocumentType'} ); - $m->comp( $session{'ErrorDocument'}, Why => $why, %args ); + if ($session{'ErrorDocument'} && + $session{'ErrorDocumentType'}) { + $r->content_type($session{'ErrorDocumentType'}); + $m->comp($session{'ErrorDocument'} , Why => shift); $m->abort; - } else { - $m->comp( "/Elements/Error", Why => $why, %args ); + } + else { + $m->comp("/Elements/Error" , Why => shift); $m->abort; } } # }}} -# {{{ sub CreateTicket +# {{{ sub CreateTicket =head2 CreateTicket ARGS @@ -891,162 +239,80 @@ sub CreateTicket { Abort('You have no permission to create tickets in that queue.'); } - my $due; - if ( defined $ARGS{'Due'} and $ARGS{'Due'} =~ /\S/ ) { - $due = new RT::Date( $session{'CurrentUser'} ); - $due->Set( Format => 'unknown', Value => $ARGS{'Due'} ); - } - my $starts; - if ( defined $ARGS{'Starts'} and $ARGS{'Starts'} =~ /\S/ ) { - $starts = new RT::Date( $session{'CurrentUser'} ); - $starts->Set( Format => 'unknown', Value => $ARGS{'Starts'} ); - } + my $due = new RT::Date( $session{'CurrentUser'} ); + $due->Set( Format => 'unknown', Value => $ARGS{'Due'} ); + my $starts = new RT::Date( $session{'CurrentUser'} ); + $starts->Set( Format => 'unknown', Value => $ARGS{'Starts'} ); - my $sigless = RT::Interface::Web::StripContent( - Content => $ARGS{Content}, - ContentType => $ARGS{ContentType}, - StripSignature => 1, - CurrentUser => $session{'CurrentUser'}, - ); + my @Requestors = split ( /\s*,\s*/, $ARGS{'Requestors'} ); + my @Cc = split ( /\s*,\s*/, $ARGS{'Cc'} ); + my @AdminCc = split ( /\s*,\s*/, $ARGS{'AdminCc'} ); my $MIMEObj = MakeMIMEEntity( - Subject => $ARGS{'Subject'}, - From => $ARGS{'From'}, - Cc => $ARGS{'Cc'}, - Body => $sigless, - Type => $ARGS{'ContentType'}, + Subject => $ARGS{'Subject'}, + From => $ARGS{'From'}, + Cc => $ARGS{'Cc'}, + Body => $ARGS{'Content'}, ); - if ( $ARGS{'Attachments'} ) { - my $rv = $MIMEObj->make_multipart; - $RT::Logger->error("Couldn't make multipart message") - if !$rv || $rv !~ /^(?:DONE|ALREADY)$/; - - foreach ( values %{ $ARGS{'Attachments'} } ) { - unless ($_) { - $RT::Logger->error("Couldn't add empty attachemnt"); - next; - } - $MIMEObj->add_part($_); - } - } - - foreach my $argument (qw(Encrypt Sign)) { - $MIMEObj->head->add( - "X-RT-$argument" => Encode::encode_utf8( $ARGS{$argument} ) - ) if defined $ARGS{$argument}; + if ($ARGS{'Attachments'}) { + $MIMEObj->make_multipart; + $MIMEObj->add_part($_) foreach values %{$ARGS{'Attachments'}}; } my %create_args = ( - Type => $ARGS{'Type'} || 'ticket', - Queue => $ARGS{'Queue'}, - Owner => $ARGS{'Owner'}, - - # note: name change - Requestor => $ARGS{'Requestors'}, - Cc => $ARGS{'Cc'}, - AdminCc => $ARGS{'AdminCc'}, + Queue => $ARGS{'Queue'}, + Owner => $ARGS{'Owner'}, InitialPriority => $ARGS{'InitialPriority'}, FinalPriority => $ARGS{'FinalPriority'}, TimeLeft => $ARGS{'TimeLeft'}, - TimeEstimated => $ARGS{'TimeEstimated'}, + TimeEstimated => $ARGS{'TimeEstimated'}, TimeWorked => $ARGS{'TimeWorked'}, + Requestor => \@Requestors, + Cc => \@Cc, + AdminCc => \@AdminCc, Subject => $ARGS{'Subject'}, Status => $ARGS{'Status'}, - Due => $due ? $due->ISO : undef, - Starts => $starts ? $starts->ISO : undef, + Due => $due->ISO, + Starts => $starts->ISO, MIMEObj => $MIMEObj ); - - my @temp_squelch; - foreach my $type (qw(Requestor Cc AdminCc)) { - push @temp_squelch, map $_->address, Email::Address->parse( $create_args{$type} ) - if grep $_ eq $type || $_ eq ( $type . 's' ), @{ $ARGS{'SkipNotification'} || [] }; - - } - - if (@temp_squelch) { - require RT::Action::SendEmail; - RT::Action::SendEmail->SquelchMailTo( RT::Action::SendEmail->SquelchMailTo, @temp_squelch ); + foreach my $arg (%ARGS) { + if ($arg =~ /^CustomField-(\d+)(.*?)$/) { + next if ($arg =~ /-Magic$/); + $create_args{"CustomField-".$1} = $ARGS{"$arg"}; + } } - - if ( $ARGS{'AttachTickets'} ) { - require RT::Action::SendEmail; - RT::Action::SendEmail->AttachTickets( RT::Action::SendEmail->AttachTickets, - ref $ARGS{'AttachTickets'} - ? @{ $ARGS{'AttachTickets'} } - : ( $ARGS{'AttachTickets'} ) ); + my ( $id, $Trans, $ErrMsg ) = $Ticket->Create(%create_args); + unless ( $id && $Trans ) { + Abort($ErrMsg); } + my @linktypes = qw( DependsOn MemberOf RefersTo ); - foreach my $arg ( keys %ARGS ) { - next if $arg =~ /-(?:Magic|Category)$/; - - if ( $arg =~ /^Object-RT::Transaction--CustomField-/ ) { - $create_args{$arg} = $ARGS{$arg}; + foreach my $linktype (@linktypes) { + foreach my $luri ( split ( / /, $ARGS{"new-$linktype"} ) ) { + $luri =~ s/\s*$//; # Strip trailing whitespace + my ( $val, $msg ) = $Ticket->AddLink( + Target => $luri, + Type => $linktype + ); + push ( @Actions, $msg ) unless ($val); } - # Object-RT::Ticket--CustomField-3-Values - elsif ( $arg =~ /^Object-RT::Ticket--CustomField-(\d+)/ ) { - my $cfid = $1; - - my $cf = RT::CustomField->new( $session{'CurrentUser'} ); - $cf->Load($cfid); - unless ( $cf->id ) { - $RT::Logger->error( "Couldn't load custom field #" . $cfid ); - next; - } - - if ( $arg =~ /-Upload$/ ) { - $create_args{"CustomField-$cfid"} = _UploadedFile($arg); - next; - } - - my $type = $cf->Type; - - my @values = (); - if ( ref $ARGS{$arg} eq 'ARRAY' ) { - @values = @{ $ARGS{$arg} }; - } elsif ( $type =~ /text/i ) { - @values = ( $ARGS{$arg} ); - } else { - no warnings 'uninitialized'; - @values = split /\r*\n/, $ARGS{$arg}; - } - @values = grep length, map { - s/\r+\n/\n/g; - s/^\s+//; - s/\s+$//; - $_; - } - grep defined, @values; + foreach my $luri ( split ( / /, $ARGS{"$linktype-new"} ) ) { + my ( $val, $msg ) = $Ticket->AddLink( + Base => $luri, + Type => $linktype + ); - $create_args{"CustomField-$cfid"} = \@values; + push ( @Actions, $msg ) unless ($val); } } - # turn new link lists into arrays, and pass in the proper arguments - my %map = ( - 'new-DependsOn' => 'DependsOn', - 'DependsOn-new' => 'DependedOnBy', - 'new-MemberOf' => 'Parents', - 'MemberOf-new' => 'Children', - 'new-RefersTo' => 'RefersTo', - 'RefersTo-new' => 'ReferredToBy', - ); - foreach my $key ( keys %map ) { - next unless $ARGS{$key}; - $create_args{ $map{$key} } = [ grep $_, split ' ', $ARGS{$key} ]; - - } - - my ( $id, $Trans, $ErrMsg ) = $Ticket->Create(%create_args); - unless ($id) { - Abort($ErrMsg); - } - - push( @Actions, split( "\n", $ErrMsg ) ); + push ( @Actions, split("\n", $ErrMsg) ); unless ( $Ticket->CurrentUserHasRight('ShowTicket') ) { - Abort( "No permission to view newly created ticket #" . $Ticket->id . "." ); + Abort( "No permission to view newly created ticket #" + . $Ticket->id . "." ); } return ( $Ticket, @Actions ); @@ -1088,231 +354,370 @@ sub LoadTicket { # {{{ sub ProcessUpdateMessage -=head2 ProcessUpdateMessage - -Takes paramhash with fields ARGSRef, TicketObj and SkipSignatureOnly. - -Don't write message if it only contains current user's signature and -SkipSignatureOnly argument is true. Function anyway adds attachments -and updates time worked field even if skips message. The default value -is true. - -=cut - sub ProcessUpdateMessage { + #TODO document what else this takes. my %args = ( - ARGSRef => undef, - TicketObj => undef, - SkipSignatureOnly => 1, + ARGSRef => undef, + Actions => undef, + TicketObj => undef, @_ ); - if ( $args{ARGSRef}->{'UpdateAttachments'} - && !keys %{ $args{ARGSRef}->{'UpdateAttachments'} } ) - { - delete $args{ARGSRef}->{'UpdateAttachments'}; - } + #Make the update content have no 'weird' newlines in it + if ( $args{ARGSRef}->{'UpdateContent'} ) { - # Strip the signature - $args{ARGSRef}->{UpdateContent} = RT::Interface::Web::StripContent( - Content => $args{ARGSRef}->{UpdateContent}, - ContentType => $args{ARGSRef}->{UpdateContentType}, - StripSignature => $args{SkipSignatureOnly}, - CurrentUser => $args{'TicketObj'}->CurrentUser, - ); + if ( + $args{ARGSRef}->{'UpdateSubject'} eq $args{'TicketObj'}->Subject() ) + { + $args{ARGSRef}->{'UpdateSubject'} = undef; + } - # If, after stripping the signature, we have no message, move the - # UpdateTimeWorked into adjusted TimeWorked, so that a later - # ProcessBasics can deal -- then bail out. - if ( not $args{ARGSRef}->{'UpdateAttachments'} - and not length $args{ARGSRef}->{'UpdateContent'} ) - { - if ( $args{ARGSRef}->{'UpdateTimeWorked'} ) { - $args{ARGSRef}->{TimeWorked} = $args{TicketObj}->TimeWorked + delete $args{ARGSRef}->{'UpdateTimeWorked'}; + my $Message = MakeMIMEEntity( + Subject => $args{ARGSRef}->{'UpdateSubject'}, + Body => $args{ARGSRef}->{'UpdateContent'}, + ); + + if ($args{ARGSRef}->{'UpdateAttachments'}) { + $Message->make_multipart; + $Message->add_part($_) foreach values %{$args{ARGSRef}->{'UpdateAttachments'}}; } - return; - } - if ( $args{ARGSRef}->{'UpdateSubject'} eq $args{'TicketObj'}->Subject ) { - $args{ARGSRef}->{'UpdateSubject'} = undef; + ## TODO: Implement public comments + if ( $args{ARGSRef}->{'UpdateType'} =~ /^(private|public)$/ ) { + my ( $Transaction, $Description ) = $args{TicketObj}->Comment( + CcMessageTo => $args{ARGSRef}->{'UpdateCc'}, + BccMessageTo => $args{ARGSRef}->{'UpdateBcc'}, + MIMEObj => $Message, + TimeTaken => $args{ARGSRef}->{'UpdateTimeWorked'} + ); + push ( @{ $args{Actions} }, $Description ); + } + elsif ( $args{ARGSRef}->{'UpdateType'} eq 'response' ) { + my ( $Transaction, $Description ) = $args{TicketObj}->Correspond( + CcMessageTo => $args{ARGSRef}->{'UpdateCc'}, + BccMessageTo => $args{ARGSRef}->{'UpdateBcc'}, + MIMEObj => $Message, + TimeTaken => $args{ARGSRef}->{'UpdateTimeWorked'} + ); + push ( @{ $args{Actions} }, $Description ); + } + else { + push ( @{ $args{'Actions'} }, + loc("Update type was neither correspondence nor comment."). + " ". + loc("Update not recorded.") + ); + } } +} + +# }}} + +# {{{ sub MakeMIMEEntity + +=head2 MakeMIMEEntity PARAMHASH + +Takes a paramhash Subject, Body and AttachmentFieldName. - my $Message = MakeMIMEEntity( - Subject => $args{ARGSRef}->{'UpdateSubject'}, - Body => $args{ARGSRef}->{'UpdateContent'}, - Type => $args{ARGSRef}->{'UpdateContentType'}, + Returns a MIME::Entity. + +=cut + +sub MakeMIMEEntity { + + #TODO document what else this takes. + my %args = ( + Subject => undef, + From => undef, + Cc => undef, + Body => undef, + AttachmentFieldName => undef, + map Encode::encode_utf8($_), @_, ); - $Message->head->add( 'Message-ID' => Encode::encode_utf8( - RT::Interface::Email::GenMessageId( Ticket => $args{'TicketObj'} ) - ) ); - my $old_txn = RT::Transaction->new( $session{'CurrentUser'} ); - if ( $args{ARGSRef}->{'QuoteTransaction'} ) { - $old_txn->Load( $args{ARGSRef}->{'QuoteTransaction'} ); - } else { - $old_txn = $args{TicketObj}->Transactions->First(); - } + #Make the update content have no 'weird' newlines in it - if ( my $msg = $old_txn->Message->First ) { - RT::Interface::Email::SetInReplyTo( - Message => $Message, - InReplyTo => $msg + $args{'Body'} =~ s/\r\n/\n/gs; + my $Message; + { + # MIME::Head is not happy in utf-8 domain. This only happens + # when processing an incoming email (so far observed). + no utf8; + use bytes; + $Message = MIME::Entity->build( + Subject => $args{'Subject'} || "", + From => $args{'From'}, + Cc => $args{'Cc'}, + Data => [ $args{'Body'} ] ); } - if ( $args{ARGSRef}->{'UpdateAttachments'} ) { - $Message->make_multipart; - $Message->add_part($_) foreach values %{ $args{ARGSRef}->{'UpdateAttachments'} }; - } + my $cgi_object = $m->cgi_object; + + if (my $filehandle = $cgi_object->upload( $args{'AttachmentFieldName'} ) ) { + + + + use File::Temp qw(tempfile tempdir); - if ( $args{ARGSRef}->{'AttachTickets'} ) { - require RT::Action::SendEmail; - RT::Action::SendEmail->AttachTickets( RT::Action::SendEmail->AttachTickets, - ref $args{ARGSRef}->{'AttachTickets'} - ? @{ $args{ARGSRef}->{'AttachTickets'} } - : ( $args{ARGSRef}->{'AttachTickets'} ) ); + #foreach my $filehandle (@filenames) { + + my ( $fh, $temp_file ) = tempfile(); + + binmode $fh; #thank you, windows + my ($buffer); + while ( my $bytesread = read( $filehandle, $buffer, 4096 ) ) { + print $fh $buffer; } - my $bcc = $args{ARGSRef}->{'UpdateBcc'}; - my $cc = $args{ARGSRef}->{'UpdateCc'}; + my $uploadinfo = $cgi_object->uploadInfo($filehandle); - my %message_args = ( - CcMessageTo => $cc, - BccMessageTo => $bcc, - Sign => $args{ARGSRef}->{'Sign'}, - Encrypt => $args{ARGSRef}->{'Encrypt'}, - MIMEObj => $Message, - TimeTaken => $args{ARGSRef}->{'UpdateTimeWorked'} + # Prefer the cached name first over CGI.pm stringification. + my $filename = $RT::Mason::CGI::Filename; + $filename = "$filehandle" unless defined($filename); + + $filename =~ s#^.*[\\/]##; + + $Message->attach( + Path => $temp_file, + Filename => $filename, + Type => $uploadinfo->{'Content-Type'}, ); + close($fh); - my @temp_squelch; - foreach my $type (qw(Cc AdminCc)) { - if (grep $_ eq $type || $_ eq ( $type . 's' ), @{ $args{ARGSRef}->{'SkipNotification'} || [] }) { - push @temp_squelch, map $_->address, Email::Address->parse( $message_args{$type} ); - push @temp_squelch, $args{TicketObj}->$type->MemberEmailAddresses; - push @temp_squelch, $args{TicketObj}->QueueObj->$type->MemberEmailAddresses; - } - } - if (grep $_ eq 'Requestor' || $_ eq 'Requestors', @{ $args{ARGSRef}->{'SkipNotification'} || [] }) { - push @temp_squelch, map $_->address, Email::Address->parse( $message_args{Requestor} ); - push @temp_squelch, $args{TicketObj}->Requestors->MemberEmailAddresses; - } + # } - if (@temp_squelch) { - require RT::Action::SendEmail; - RT::Action::SendEmail->SquelchMailTo( RT::Action::SendEmail->SquelchMailTo, @temp_squelch ); } - unless ( $args{'ARGSRef'}->{'UpdateIgnoreAddressCheckboxes'} ) { - foreach my $key ( keys %{ $args{ARGSRef} } ) { - next unless $key =~ /^Update(Cc|Bcc)-(.*)$/; + $Message->make_singlepart(); + RT::I18N::SetMIMEEntityToUTF8($Message); # convert text parts into utf-8 - my $var = ucfirst($1) . 'MessageTo'; - my $value = $2; - if ( $message_args{$var} ) { - $message_args{$var} .= ", $value"; - } else { - $message_args{$var} = $value; - } - } - } + return ($Message); - my @results; - if ( $args{ARGSRef}->{'UpdateType'} =~ /^(private|public)$/ ) { - my ( $Transaction, $Description, $Object ) = $args{TicketObj}->Comment(%message_args); - push( @results, $Description ); - $Object->UpdateCustomFields( ARGSRef => $args{ARGSRef} ) if $Object; - } elsif ( $args{ARGSRef}->{'UpdateType'} eq 'response' ) { - my ( $Transaction, $Description, $Object ) = $args{TicketObj}->Correspond(%message_args); - push( @results, $Description ); - $Object->UpdateCustomFields( ARGSRef => $args{ARGSRef} ) if $Object; - } else { - push( @results, - loc("Update type was neither correspondence nor comment.") . " " . loc("Update not recorded.") ); - } - return @results; } # }}} -# {{{ sub MakeMIMEEntity +# {{{ sub ProcessSearchQuery -=head2 MakeMIMEEntity PARAMHASH +=head2 ProcessSearchQuery -Takes a paramhash Subject, Body and AttachmentFieldName. + Takes a form such as the one filled out in webrt/Search/Elements/PickRestriction and turns it into something that RT::Tickets can understand. -Also takes Form, Cc and Type as optional paramhash keys. +TODO Doc exactly what comes in the paramhash - Returns a MIME::Entity. =cut -sub MakeMIMEEntity { +sub ProcessSearchQuery { + my %args = @_; - #TODO document what else this takes. - my %args = ( - Subject => undef, - From => undef, - Cc => undef, - Body => undef, - AttachmentFieldName => undef, - Type => undef, - @_, - ); - my $Message = MIME::Entity->build( - Type => 'multipart/mixed', - map { $_ => Encode::encode_utf8( $args{ $_} ) } - grep defined $args{$_}, qw(Subject From Cc) - ); + ## TODO: The only parameter here is %ARGS. Maybe it would be + ## cleaner to load this parameter as $ARGS, and use $ARGS->{...} + ## instead of $args{ARGS}->{...} ? :) + + #Searches are sticky. + if ( defined $session{'tickets'} ) { + + # Reset the old search + $session{'tickets'}->GotoFirstItem; + } + else { + + # Init a new search + $session{'tickets'} = RT::Tickets->new( $session{'CurrentUser'} ); + } + + #Import a bookmarked search if we have one + if ( defined $args{ARGS}->{'Bookmark'} ) { + $session{'tickets'}->ThawLimits( $args{ARGS}->{'Bookmark'} ); + } + + # {{{ Goto next/prev page + if ( $args{ARGS}->{'GotoPage'} eq 'Next' ) { + $session{'tickets'}->NextPage; + } + elsif ( $args{ARGS}->{'GotoPage'} eq 'Prev' ) { + $session{'tickets'}->PrevPage; + } + elsif ( $args{ARGS}->{'GotoPage'} > 0 ) { + $session{'tickets'}->GotoPage( $args{ARGS}->{GotoPage} - 1 ); + } + + # }}} + + # {{{ Deal with limiting the search + + if ( $args{ARGS}->{'RefreshSearchInterval'} ) { + $session{'tickets_refresh_interval'} = + $args{ARGS}->{'RefreshSearchInterval'}; + } + + if ( $args{ARGS}->{'TicketsSortBy'} ) { + $session{'tickets_sort_by'} = $args{ARGS}->{'TicketsSortBy'}; + $session{'tickets_sort_order'} = $args{ARGS}->{'TicketsSortOrder'}; + $session{'tickets'}->OrderBy( + FIELD => $args{ARGS}->{'TicketsSortBy'}, + ORDER => $args{ARGS}->{'TicketsSortOrder'} + ); + } + + # }}} - if ( defined $args{'Body'} && length $args{'Body'} ) { + # {{{ Set the query limit + if ( defined $args{ARGS}->{'RowsPerPage'} ) { + $RT::Logger->debug( + "limiting to " . $args{ARGS}->{'RowsPerPage'} . " rows" ); - # Make the update content have no 'weird' newlines in it - $args{'Body'} =~ s/\r\n/\n/gs; + $session{'tickets_rows_per_page'} = $args{ARGS}->{'RowsPerPage'}; + $session{'tickets'}->RowsPerPage( $args{ARGS}->{'RowsPerPage'} ); + } + + # }}} + # {{{ Limit priority + if ( $args{ARGS}->{'ValueOfPriority'} ne '' ) { + $session{'tickets'}->LimitPriority( + VALUE => $args{ARGS}->{'ValueOfPriority'}, + OPERATOR => $args{ARGS}->{'PriorityOp'} + ); + } - $Message->attach( - Type => $args{'Type'} || 'text/plain', - Charset => 'UTF-8', - Data => $args{'Body'}, + # }}} + # {{{ Limit owner + if ( $args{ARGS}->{'ValueOfOwner'} ne '' ) { + $session{'tickets'}->LimitOwner( + VALUE => $args{ARGS}->{'ValueOfOwner'}, + OPERATOR => $args{ARGS}->{'OwnerOp'} ); } - if ( $args{'AttachmentFieldName'} ) { + # }}} + # {{{ Limit requestor email - my $cgi_object = $m->cgi_object; + if ( $args{ARGS}->{'ValueOfRequestor'} ne '' ) { + my $alias = $session{'tickets'}->LimitRequestor( + VALUE => $args{ARGS}->{'ValueOfRequestor'}, + OPERATOR => $args{ARGS}->{'RequestorOp'}, + ); + + } - if ( my $filehandle = $cgi_object->upload( $args{'AttachmentFieldName'} ) ) { + # }}} + # {{{ Limit Queue + if ( $args{ARGS}->{'ValueOfQueue'} ne '' ) { + $session{'tickets'}->LimitQueue( + VALUE => $args{ARGS}->{'ValueOfQueue'}, + OPERATOR => $args{ARGS}->{'QueueOp'} + ); + } - my ( @content, $buffer ); - while ( my $bytesread = read( $filehandle, $buffer, 4096 ) ) { - push @content, $buffer; + # }}} + # {{{ Limit Status + if ( $args{ARGS}->{'ValueOfStatus'} ne '' ) { + if ( ref( $args{ARGS}->{'ValueOfStatus'} ) ) { + foreach my $value ( @{ $args{ARGS}->{'ValueOfStatus'} } ) { + $session{'tickets'}->LimitStatus( + VALUE => $value, + OPERATOR => $args{ARGS}->{'StatusOp'}, + ); } + } + else { + $session{'tickets'}->LimitStatus( + VALUE => $args{ARGS}->{'ValueOfStatus'}, + OPERATOR => $args{ARGS}->{'StatusOp'}, + ); + } + + } - my $uploadinfo = $cgi_object->uploadInfo($filehandle); + # }}} + # {{{ Limit Subject + if ( $args{ARGS}->{'ValueOfSubject'} ne '' ) { + my $val = $args{ARGS}->{'ValueOfSubject'}; + if ($args{ARGS}->{'SubjectOp'} =~ /like/) { + $val = "%".$val."%"; + } + $session{'tickets'}->LimitSubject( + VALUE => $val, + OPERATOR => $args{ARGS}->{'SubjectOp'}, + ); + } - # Prefer the cached name first over CGI.pm stringification. - my $filename = $RT::Mason::CGI::Filename; - $filename = "$filehandle" unless defined $filename; - $filename = Encode::encode_utf8( $filename ); - $filename =~ s{^.*[\\/]}{}; + # }}} + # {{{ Limit Dates + if ( $args{ARGS}->{'ValueOfDate'} ne '' ) { + my $date = ParseDateToISO( $args{ARGS}->{'ValueOfDate'} ); + $args{ARGS}->{'DateType'} =~ s/_Date$//; - $Message->attach( - Type => $uploadinfo->{'Content-Type'}, - Filename => $filename, - Data => \@content, + if ( $args{ARGS}->{'DateType'} eq 'Updated' ) { + $session{'tickets'}->LimitTransactionDate( + VALUE => $date, + OPERATOR => $args{ARGS}->{'DateOp'}, ); - if ( !$args{'Subject'} && !( defined $args{'Body'} && length $args{'Body'} ) ) { - $Message->head->set( 'Subject' => $filename ); - } } + else { + $session{'tickets'}->LimitDate( FIELD => $args{ARGS}->{'DateType'}, + VALUE => $date, + OPERATOR => $args{ARGS}->{'DateOp'}, + ); + } + } + + # }}} + # {{{ Limit Content + if ( $args{ARGS}->{'ValueOfAttachmentField'} ne '' ) { + my $val = $args{ARGS}->{'ValueOfAttachmentField'}; + if ($args{ARGS}->{'AttachmentFieldOp'} =~ /like/) { + $val = "%".$val."%"; + } + $session{'tickets'}->Limit( + FIELD => $args{ARGS}->{'AttachmentField'}, + VALUE => $val, + OPERATOR => $args{ARGS}->{'AttachmentFieldOp'}, + ); } - $Message->make_singlepart; + # }}} - RT::I18N::SetMIMEEntityToUTF8($Message); # convert text parts into utf-8 + # {{{ Limit CustomFields + + foreach my $arg ( keys %{ $args{ARGS} } ) { + my $id; + if ( $arg =~ /^CustomField(\d+)$/ ) { + $id = $1; + } + else { + next; + } + next unless ( $args{ARGS}->{$arg} ); + + my $form = $args{ARGS}->{$arg}; + my $oper = $args{ARGS}->{ "CustomFieldOp" . $id }; + foreach my $value ( ref($form) ? @{$form} : ($form) ) { + my $quote = 1; + if ($oper =~ /like/i) { + $value = "%".$value."%"; + } + if ( $value =~ /^null$/i ) { + + #Don't quote the string 'null' + $quote = 0; + + # Convert the operator to something apropriate for nulls + $oper = 'IS' if ( $oper eq '=' ); + $oper = 'IS NOT' if ( $oper eq '!=' ); + } + $session{'tickets'}->LimitCustomField( CUSTOMFIELD => $id, + OPERATOR => $oper, + QUOTEVALUE => $quote, + VALUE => $value ); + } + } + + # }}} - return ($Message); } @@ -1330,7 +735,7 @@ Returns an ISO date and time in GMT sub ParseDateToISO { my $date = shift; - my $date_obj = RT::Date->new( $session{'CurrentUser'} ); + my $date_obj = RT::Date->new($session{'CurrentUser'}); $date_obj->Set( Format => 'unknown', Value => $date @@ -1340,56 +745,98 @@ sub ParseDateToISO { # }}} +# {{{ sub Config +# TODO: This might eventually read the cookies, user configuration +# information from the DB, queue configuration information from the +# DB, etc. + +sub Config { + my $args = shift; + my $key = shift; + return $args->{$key} || $RT::WebOptions{$key}; +} + +# }}} + # {{{ sub ProcessACLChanges sub ProcessACLChanges { my $ARGSref = shift; - #XXX: why don't we get ARGSref like in other Process* subs? + my %ARGS = %$ARGSref; - my @results; + my ( $ACL, @results ); - foreach my $arg ( keys %$ARGSref ) { - next unless ( $arg =~ /^(GrantRight|RevokeRight)-(\d+)-(.+?)-(\d+)$/ ); - my ( $method, $principal_id, $object_type, $object_id ) = ( $1, $2, $3, $4 ); + foreach my $arg (keys %ARGS) { + if ($arg =~ /GrantRight-(\d+)-(.*?)-(\d+)$/) { + my $principal_id = $1; + my $object_type = $2; + my $object_id = $3; + my $rights = $ARGS{$arg}; - my @rights; - if ( UNIVERSAL::isa( $ARGSref->{$arg}, 'ARRAY' ) ) { - @rights = @{ $ARGSref->{$arg} }; - } else { - @rights = $ARGSref->{$arg}; + my $principal = RT::Principal->new($session{'CurrentUser'}); + $principal->Load($principal_id); + + my $obj; + + if ($object_type eq 'RT::Queue') { + $obj = RT::Queue->new($session{'CurrentUser'}); + $obj->Load($object_id); + } elsif ($object_type eq 'RT::Group') { + $obj = RT::Group->new($session{'CurrentUser'}); + $obj->Load($object_id); + + } elsif ($object_type eq 'RT::System') { + $obj = $RT::System; + } else { + push (@results, loc("System Error"). + loc("Rights could not be granted for [_1]", $object_type)); + next; + } + + my @rights = ref($ARGS{$arg}) eq 'ARRAY' ? @{$ARGS{$arg}} : ($ARGS{$arg}); + foreach my $right (@rights) { + next unless ($right); + my ($val, $msg) = $principal->GrantRight(Object => $obj, Right => $right); + push (@results, $msg); + } } - @rights = grep $_, @rights; - next unless @rights; - - my $principal = RT::Principal->new( $session{'CurrentUser'} ); - $principal->Load($principal_id); - - my $obj; - if ( $object_type eq 'RT::System' ) { - $obj = $RT::System; - } elsif ( $RT::ACE::OBJECT_TYPES{$object_type} ) { - $obj = $object_type->new( $session{'CurrentUser'} ); - $obj->Load($object_id); - unless ( $obj->id ) { - $RT::Logger->error("couldn't load $object_type #$object_id"); + elsif ($arg =~ /RevokeRight-(\d+)-(.*?)-(\d+)-(.*?)$/) { + my $principal_id = $1; + my $object_type = $2; + my $object_id = $3; + my $right = $4; + + my $principal = RT::Principal->new($session{'CurrentUser'}); + $principal->Load($principal_id); + next unless ($right); + my $obj; + + if ($object_type eq 'RT::Queue') { + $obj = RT::Queue->new($session{'CurrentUser'}); + $obj->Load($object_id); + } elsif ($object_type eq 'RT::Group') { + $obj = RT::Group->new($session{'CurrentUser'}); + $obj->Load($object_id); + + } elsif ($object_type eq 'RT::System') { + $obj = $RT::System; + } else { + push (@results, loc("System Error"). + loc("Rights could not be revoked for [_1]", $object_type)); next; } - } else { - $RT::Logger->error("object type '$object_type' is incorrect"); - push( @results, loc("System Error") . ': ' . loc( "Rights could not be granted for [_1]", $object_type ) ); - next; + my ($val, $msg) = $principal->RevokeRight(Object => $obj, Right => $right); + push (@results, $msg); } - foreach my $right (@rights) { - my ( $val, $msg ) = $principal->$method( Object => $obj, Right => $right ); - push( @results, $msg ); - } + } return (@results); -} + + } # }}} @@ -1405,20 +852,59 @@ Returns an array of success/failure messages sub UpdateRecordObject { my %args = ( - ARGSRef => undef, - AttributesRef => undef, - Object => undef, + ARGSRef => undef, + AttributesRef => undef, + Object => undef, AttributePrefix => undef, @_ ); - my $Object = $args{'Object'}; - my @results = $Object->Update( - AttributesRef => $args{'AttributesRef'}, - ARGSRef => $args{'ARGSRef'}, - AttributePrefix => $args{'AttributePrefix'}, - ); + my (@results); + + my $object = $args{'Object'}; + my $attributes = $args{'AttributesRef'}; + my $ARGSRef = $args{'ARGSRef'}; + foreach my $attribute (@$attributes) { + my $value; + if ( defined $ARGSRef->{$attribute} ) { + $value = $ARGSRef->{$attribute}; + } + elsif ( + defined( $args{'AttributePrefix'} ) + && defined( + $ARGSRef->{ $args{'AttributePrefix'} . "-" . $attribute } + ) + ) { + $value = $ARGSRef->{ $args{'AttributePrefix'} . "-" . $attribute }; + + } else { + next; + } + $value =~ s/\r\n/\n/gs; + + if ($value ne $object->$attribute()){ + + my $method = "Set$attribute"; + my ( $code, $msg ) = $object->$method($value); + + push @results, loc($attribute) . ': ' . loc_fuzzy($msg); +=for loc + "[_1] could not be set to [_2].", # loc + "That is already the current value", # loc + "No value sent to _Set!\n", # loc + "Illegal value for [_1]", # loc + "The new value has been set.", # loc + "No column specified", # loc + "Immutable field", # loc + "Nonexistant field?", # loc + "Invalid data", # loc + "Couldn't find row", # loc + "Missing a primary key?: [_1]", # loc + "Found Object", # loc +=cut + }; + } return (@results); } @@ -1436,44 +922,37 @@ sub ProcessCustomFieldUpdates { my $Object = $args{'CustomFieldObj'}; my $ARGSRef = $args{'ARGSRef'}; - my @attribs = qw(Name Type Description Queue SortOrder); + my @attribs = qw( Name Type Description Queue SortOrder); my @results = UpdateRecordObject( AttributesRef => \@attribs, Object => $Object, ARGSRef => $ARGSRef ); - my $prefix = "CustomField-" . $Object->Id; - if ( $ARGSRef->{"$prefix-AddValue-Name"} ) { + if ( $ARGSRef->{ "CustomField-" . $Object->Id . "-AddValue-Name" } ) { + my ( $addval, $addmsg ) = $Object->AddValue( - Name => $ARGSRef->{"$prefix-AddValue-Name"}, - Description => $ARGSRef->{"$prefix-AddValue-Description"}, - SortOrder => $ARGSRef->{"$prefix-AddValue-SortOrder"}, + Name => + $ARGSRef->{ "CustomField-" . $Object->Id . "-AddValue-Name" }, + Description => $ARGSRef->{ "CustomField-" + . $Object->Id + . "-AddValue-Description" }, + SortOrder => $ARGSRef->{ "CustomField-" + . $Object->Id + . "-AddValue-SortOrder" }, ); - push( @results, $addmsg ); + push ( @results, $addmsg ); } - - my @delete_values - = ( ref $ARGSRef->{"$prefix-DeleteValue"} eq 'ARRAY' ) - ? @{ $ARGSRef->{"$prefix-DeleteValue"} } - : ( $ARGSRef->{"$prefix-DeleteValue"} ); - + my @delete_values = ( + ref $ARGSRef->{ 'CustomField-' . $Object->Id . '-DeleteValue' } eq + 'ARRAY' ) + ? @{ $ARGSRef->{ 'CustomField-' . $Object->Id . '-DeleteValue' } } + : ( $ARGSRef->{ 'CustomField-' . $Object->Id . '-DeleteValue' } ); foreach my $id (@delete_values) { next unless defined $id; my ( $err, $msg ) = $Object->DeleteValue($id); - push( @results, $msg ); + push ( @results, $msg ); } - - my $vals = $Object->Values(); - while ( my $cfv = $vals->Next() ) { - if ( my $so = $ARGSRef->{ "$prefix-SortOrder" . $cfv->Id } ) { - if ( $cfv->SortOrder != $so ) { - my ( $err, $msg ) = $cfv->SetSortOrder($so); - push( @results, $msg ); - } - } - } - return (@results); } @@ -1498,35 +977,30 @@ sub ProcessTicketBasics { my $TicketObj = $args{'TicketObj'}; my $ARGSRef = $args{'ARGSRef'}; - # {{{ Set basic fields + # {{{ Set basic fields my @attribs = qw( - Subject - FinalPriority - Priority - TimeEstimated - TimeWorked - TimeLeft - Type - Status - Queue + Subject + FinalPriority + Priority + TimeEstimated + TimeWorked + TimeLeft + Status + Queue ); if ( $ARGSRef->{'Queue'} and ( $ARGSRef->{'Queue'} !~ /^(\d+)$/ ) ) { my $tempqueue = RT::Queue->new($RT::SystemUser); $tempqueue->Load( $ARGSRef->{'Queue'} ); if ( $tempqueue->id ) { - $ARGSRef->{'Queue'} = $tempqueue->id; + $ARGSRef->{'Queue'} = $tempqueue->Id(); } } - # Status isn't a field that can be set to a null value. - # RT core complains if you try - delete $ARGSRef->{'Status'} unless $ARGSRef->{'Status'}; - my @results = UpdateRecordObject( AttributesRef => \@attribs, Object => $TicketObj, - ARGSRef => $ARGSRef, + ARGSRef => $ARGSRef ); # We special case owner changing, so we can use ForceOwnerChange @@ -1534,12 +1008,14 @@ sub ProcessTicketBasics { my ($ChownType); if ( $ARGSRef->{'ForceOwnerChange'} ) { $ChownType = "Force"; - } else { + } + else { $ChownType = "Give"; } - my ( $val, $msg ) = $TicketObj->SetOwner( $ARGSRef->{'Owner'}, $ChownType ); - push( @results, $msg ); + my ( $val, $msg ) = + $TicketObj->SetOwner( $ARGSRef->{'Owner'}, $ChownType ); + push ( @results, $msg ); } # }}} @@ -1549,217 +1025,142 @@ sub ProcessTicketBasics { # }}} -sub ProcessTicketCustomFieldUpdates { - my %args = @_; - $args{'Object'} = delete $args{'TicketObj'}; - my $ARGSRef = { %{ $args{'ARGSRef'} } }; +# {{{ Sub ProcessTicketCustomFieldUpdates - # Build up a list of objects that we want to work with - my %custom_fields_to_mod; - foreach my $arg ( keys %$ARGSRef ) { - if ( $arg =~ /^Ticket-(\d+-.*)/ ) { - $ARGSRef->{"Object-RT::Ticket-$1"} = delete $ARGSRef->{$arg}; - } elsif ( $arg =~ /^CustomField-(\d+-.*)/ ) { - $ARGSRef->{"Object-RT::Ticket--$1"} = delete $ARGSRef->{$arg}; - } - } +sub ProcessTicketCustomFieldUpdates { + my %args = ( + ARGSRef => undef, + @_ + ); - return ProcessObjectCustomFieldUpdates( %args, ARGSRef => $ARGSRef ); -} + my @results; -sub ProcessObjectCustomFieldUpdates { - my %args = @_; my $ARGSRef = $args{'ARGSRef'}; - my @results; - # Build up a list of objects that we want to work with + # Build up a list of tickets that we want to work with + my %tickets_to_mod; my %custom_fields_to_mod; - foreach my $arg ( keys %$ARGSRef ) { - - # format: Object-<object class>-<object id>-CustomField-<CF id>-<commands> - next unless $arg =~ /^Object-([\w:]+)-(\d*)-CustomField-(\d+)-(.*)$/; + foreach my $arg ( keys %{$ARGSRef} ) { + if ( $arg =~ /^Ticket-(\d+)-CustomField-(\d+)-/ ) { - # For each of those objects, find out what custom fields we want to work with. - $custom_fields_to_mod{$1}{ $2 || 0 }{$3}{$4} = $ARGSRef->{$arg}; - } - - # For each of those objects - foreach my $class ( keys %custom_fields_to_mod ) { - foreach my $id ( keys %{ $custom_fields_to_mod{$class} } ) { - my $Object = $args{'Object'}; - $Object = $class->new( $session{'CurrentUser'} ) - unless $Object && ref $Object eq $class; - - $Object->Load($id) unless ( $Object->id || 0 ) == $id; - unless ( $Object->id ) { - $RT::Logger->warning("Couldn't load object $class #$id"); - next; - } - - foreach my $cf ( keys %{ $custom_fields_to_mod{$class}{$id} } ) { - my $CustomFieldObj = RT::CustomField->new( $session{'CurrentUser'} ); - $CustomFieldObj->LoadById($cf); - unless ( $CustomFieldObj->id ) { - $RT::Logger->warning("Couldn't load custom field #$cf"); - next; - } - push @results, - _ProcessObjectCustomFieldUpdates( - Prefix => "Object-$class-$id-CustomField-$cf-", - Object => $Object, - CustomField => $CustomFieldObj, - ARGS => $custom_fields_to_mod{$class}{$id}{$cf}, - ); - } + # For each of those tickets, find out what custom fields we want to work with. + $custom_fields_to_mod{$1}{$2} = 1; } } - return @results; -} - -sub _ProcessObjectCustomFieldUpdates { - my %args = @_; - my $cf = $args{'CustomField'}; - my $cf_type = $cf->Type; - - # Remove blank Values since the magic field will take care of this. Sometimes - # the browser gives you a blank value which causes CFs to be processed twice - if ( defined $args{'ARGS'}->{'Values'} - && !length $args{'ARGS'}->{'Values'} - && $args{'ARGS'}->{'Values-Magic'} ) - { - delete $args{'ARGS'}->{'Values'}; - } - - my @results; - foreach my $arg ( keys %{ $args{'ARGS'} } ) { - # skip category argument - next if $arg eq 'Category'; + # For each of those tickets + foreach my $tick ( keys %custom_fields_to_mod ) { + my $Ticket = RT::Ticket->new( $session{'CurrentUser'} ); + $Ticket->Load($tick); - # since http won't pass in a form element with a null value, we need - # to fake it - if ( $arg eq 'Values-Magic' ) { + # For each custom field + foreach my $cf ( keys %{ $custom_fields_to_mod{$tick} } ) { - # We don't care about the magic, if there's really a values element; - next if defined $args{'ARGS'}->{'Value'} && length $args{'ARGS'}->{'Value'}; - next if defined $args{'ARGS'}->{'Values'} && length $args{'ARGS'}->{'Values'}; + my $CustomFieldObj = RT::CustomField->new($session{'CurrentUser'}); + $CustomFieldObj->LoadById($cf); - # "Empty" values does not mean anything for Image and Binary fields - next if $cf_type =~ /^(?:Image|Binary)$/; - - $arg = 'Values'; - $args{'ARGS'}->{'Values'} = undef; - } - - my @values = (); - if ( ref $args{'ARGS'}->{$arg} eq 'ARRAY' ) { - @values = @{ $args{'ARGS'}->{$arg} }; - } elsif ( $cf_type =~ /text/i ) { # Both Text and Wikitext - @values = ( $args{'ARGS'}->{$arg} ); - } else { - @values = split /\r*\n/, $args{'ARGS'}->{$arg} - if defined $args{'ARGS'}->{$arg}; - } - @values = grep length, map { - s/\r+\n/\n/g; - s/^\s+//; - s/\s+$//; - $_; - } - grep defined, @values; + foreach my $arg ( keys %{$ARGSRef} ) { + # since http won't pass in a form element with a null value, we need + # to fake it + if ($arg =~ /^(.*?)-Values-Magic$/ ) { + # We don't care about the magic, if there's really a values element; + next if (exists $ARGSRef->{$1.'-Values'}) ; - if ( $arg eq 'AddValue' || $arg eq 'Value' ) { - foreach my $value (@values) { - my ( $val, $msg ) = $args{'Object'}->AddCustomFieldValue( - Field => $cf->id, - Value => $value - ); - push( @results, $msg ); - } - } elsif ( $arg eq 'Upload' ) { - my $value_hash = _UploadedFile( $args{'Prefix'} . $arg ) or next; - my ( $val, $msg ) = $args{'Object'}->AddCustomFieldValue( %$value_hash, Field => $cf, ); - push( @results, $msg ); - } elsif ( $arg eq 'DeleteValues' ) { - foreach my $value (@values) { - my ( $val, $msg ) = $args{'Object'}->DeleteCustomFieldValue( - Field => $cf, - Value => $value, - ); - push( @results, $msg ); - } - } elsif ( $arg eq 'DeleteValueIds' ) { - foreach my $value (@values) { - my ( $val, $msg ) = $args{'Object'}->DeleteCustomFieldValue( - Field => $cf, - ValueId => $value, - ); - push( @results, $msg ); - } - } elsif ( $arg eq 'Values' && !$cf->Repeated ) { - my $cf_values = $args{'Object'}->CustomFieldValues( $cf->id ); - - my %values_hash; - foreach my $value (@values) { - if ( my $entry = $cf_values->HasEntry($value) ) { - $values_hash{ $entry->id } = 1; - next; + $arg = $1."-Values"; + $ARGSRef->{$1."-Values"} = undef; + } - - my ( $val, $msg ) = $args{'Object'}->AddCustomFieldValue( - Field => $cf, - Value => $value - ); - push( @results, $msg ); - $values_hash{$val} = 1 if $val; - } - - $cf_values->RedoSearch; - while ( my $cf_value = $cf_values->Next ) { - next if $values_hash{ $cf_value->id }; - - my ( $val, $msg ) = $args{'Object'}->DeleteCustomFieldValue( - Field => $cf, - ValueId => $cf_value->id - ); - push( @results, $msg ); - } - } elsif ( $arg eq 'Values' ) { - my $cf_values = $args{'Object'}->CustomFieldValues( $cf->id ); - - # keep everything up to the point of difference, delete the rest - my $delete_flag; - foreach my $old_cf ( @{ $cf_values->ItemsArrayRef } ) { - if ( !$delete_flag and @values and $old_cf->Content eq $values[0] ) { - shift @values; - next; + next unless ( $arg =~ /^Ticket-$tick-CustomField-$cf-/ ); + my @values = + ( ref( $ARGSRef->{$arg} ) eq 'ARRAY' ) + ? @{ $ARGSRef->{$arg} } + : ( $ARGSRef->{$arg} ); + if ( ( $arg =~ /-AddValue$/ ) || ( $arg =~ /-Value$/ ) ) { + foreach my $value (@values) { + next unless ($value); + my ( $val, $msg ) = $Ticket->AddCustomFieldValue( + Field => $cf, + Value => $value + ); + push ( @results, $msg ); + } + } + elsif ( $arg =~ /-DeleteValues$/ ) { + foreach my $value (@values) { + next unless ($value); + my ( $val, $msg ) = $Ticket->DeleteCustomFieldValue( + Field => $cf, + Value => $value + ); + push ( @results, $msg ); + } + } + elsif ( $arg =~ /-Values$/ and $CustomFieldObj->Type !~ /Entry/) { + my $cf_values = $Ticket->CustomFieldValues($cf); + + my %values_hash; + foreach my $value (@values) { + next unless ($value); + + # build up a hash of values that the new set has + $values_hash{$value} = 1; + + unless ( $cf_values->HasEntry($value) ) { + my ( $val, $msg ) = $Ticket->AddCustomFieldValue( + Field => $cf, + Value => $value + ); + push ( @results, $msg ); + } + + } + while ( my $cf_value = $cf_values->Next ) { + unless ( $values_hash{ $cf_value->Content } == 1 ) { + my ( $val, $msg ) = $Ticket->DeleteCustomFieldValue( + Field => $cf, + Value => $cf_value->Content + ); + push ( @results, $msg); + + } + + } + } + elsif ( $arg =~ /-Values$/ ) { + my $cf_values = $Ticket->CustomFieldValues($cf); + + # keep everything up to the point of difference, delete the rest + my $delete_flag; + foreach my $old_cf (@{$cf_values->ItemsArrayRef}) { + if (!$delete_flag and @values and $old_cf->Content eq $values[0]) { + shift @values; + next; + } + + $delete_flag ||= 1; + $old_cf->Delete; + } + + # now add/replace extra things, if any + foreach my $value (@values) { + my ( $val, $msg ) = $Ticket->AddCustomFieldValue( + Field => $cf, + Value => $value + ); + push ( @results, $msg ); + } + } + else { + push ( @results, "User asked for an unknown update type for custom field " . $cf->Name . " for ticket " . $Ticket->id ); } - - $delete_flag ||= 1; - $old_cf->Delete; - } - - # now add/replace extra things, if any - foreach my $value (@values) { - my ( $val, $msg ) = $args{'Object'}->AddCustomFieldValue( - Field => $cf, - Value => $value - ); - push( @results, $msg ); } - } else { - push( - @results, - loc("User asked for an unknown update type for custom field [_1] for [_2] object #[_3]", - $cf->Name, ref $args{'Object'}, - $args{'Object'}->id - ) - ); } + return (@results); } - return @results; } +# }}} + # {{{ sub ProcessTicketWatchers =head2 ProcessTicketWatchers ( TicketObj => $Ticket, ARGSRef => \%ARGS ); @@ -1779,31 +1180,29 @@ sub ProcessTicketWatchers { my $Ticket = $args{'TicketObj'}; my $ARGSRef = $args{'ARGSRef'}; - # Munge watchers + # {{{ Munge watchers foreach my $key ( keys %$ARGSRef ) { - # Delete deletable watchers - if ( $key =~ /^Ticket-DeleteWatcher-Type-(.*)-Principal-(\d+)$/ ) { - my ( $code, $msg ) = $Ticket->DeleteWatcher( - PrincipalId => $2, - Type => $1 - ); + # {{{ Delete deletable watchers + if ( ( $key =~ /^Ticket-DelWatcher-Type-(.*)-Principal-(\d+)$/ ) ) { + my ( $code, $msg ) = + $Ticket->DeleteWatcher(PrincipalId => $2, + Type => $1); push @results, $msg; } # Delete watchers in the simple style demanded by the bulk manipulator elsif ( $key =~ /^Delete(Requestor|Cc|AdminCc)$/ ) { - my ( $code, $msg ) = $Ticket->DeleteWatcher( - Email => $ARGSRef->{$key}, - Type => $1 - ); + my ( $code, $msg ) = $Ticket->DeleteWatcher( Type => $ARGSRef->{$key}, PrincipalId => $1 ); push @results, $msg; } - # Add new wathchers by email address - elsif ( ( $ARGSRef->{$key} || '' ) =~ /^(?:AdminCc|Cc|Requestor)$/ - and $key =~ /^WatcherTypeEmail(\d*)$/ ) + # }}} + + # Add new wathchers by email address + elsif ( ( $ARGSRef->{$key} =~ /^(AdminCc|Cc|Requestor)$/ ) + and ( $key =~ /^WatcherTypeEmail(\d*)$/ ) ) { #They're in this order because otherwise $1 gets clobbered :/ @@ -1824,21 +1223,18 @@ sub ProcessTicketWatchers { } # Add new watchers by owner - elsif ( $key =~ /^Ticket-AddWatcher-Principal-(\d*)$/ ) { - my $principal_id = $1; - my $form = $ARGSRef->{$key}; - foreach my $value ( ref($form) ? @{$form} : ($form) ) { - next unless $value =~ /^(?:AdminCc|Cc|Requestor)$/i; + elsif ( ( $ARGSRef->{$key} =~ /^(AdminCc|Cc|Requestor)$/ ) + and ( $key =~ /^Ticket-AddWatcher-Principal-(\d*)$/ ) ) { - my ( $code, $msg ) = $Ticket->AddWatcher( - Type => $value, - PrincipalId => $principal_id - ); - push @results, $msg; - } + #They're in this order because otherwise $1 gets clobbered :/ + my ( $code, $msg ) = + $Ticket->AddWatcher( Type => $ARGSRef->{$key}, PrincipalId => $1 ); + push @results, $msg; } - } + + # }}} + return (@results); } @@ -1866,33 +1262,33 @@ sub ProcessTicketDates { # {{{ Set date fields my @date_fields = qw( - Told - Resolved - Starts - Started - Due + Told + Resolved + Starts + Started + Due ); #Run through each field in this list. update the value if apropriate foreach my $field (@date_fields) { - next unless exists $ARGSRef->{ $field . '_Date' }; - next if $ARGSRef->{ $field . '_Date' } eq ''; - my ( $code, $msg ); my $DateObj = RT::Date->new( $session{'CurrentUser'} ); - $DateObj->Set( - Format => 'unknown', - Value => $ARGSRef->{ $field . '_Date' } - ); - my $obj = $field . "Obj"; - if ( ( defined $DateObj->Unix ) - and ( $DateObj->Unix != $Ticket->$obj()->Unix() ) ) - { - my $method = "Set$field"; - my ( $code, $msg ) = $Ticket->$method( $DateObj->ISO ); - push @results, "$msg"; + #If it's something other than just whitespace + if ( $ARGSRef->{ $field . '_Date' } ne '' ) { + $DateObj->Set( + Format => 'unknown', + Value => $ARGSRef->{ $field . '_Date' } + ); + my $obj = $field . "Obj"; + if ( ( defined $DateObj->Unix ) + and ( $DateObj->Unix ne $Ticket->$obj()->Unix() ) ) + { + my $method = "Set$field"; + my ( $code, $msg ) = $Ticket->$method( $DateObj->ISO ); + push @results, "$msg"; + } } } @@ -1911,39 +1307,13 @@ Returns an array of results messages. =cut sub ProcessTicketLinks { - my %args = ( - TicketObj => undef, - ARGSRef => undef, - @_ - ); + my %args = ( TicketObj => undef, + ARGSRef => undef, + @_ ); my $Ticket = $args{'TicketObj'}; my $ARGSRef = $args{'ARGSRef'}; - my (@results) = ProcessRecordLinks( RecordObj => $Ticket, ARGSRef => $ARGSRef ); - - #Merge if we need to - if ( $ARGSRef->{ $Ticket->Id . "-MergeInto" } ) { - $ARGSRef->{ $Ticket->Id . "-MergeInto" } =~ s/\s+//g; - my ( $val, $msg ) = $Ticket->MergeInto( $ARGSRef->{ $Ticket->Id . "-MergeInto" } ); - push @results, $msg; - } - - return (@results); -} - -# }}} - -sub ProcessRecordLinks { - my %args = ( - RecordObj => undef, - ARGSRef => undef, - @_ - ); - - my $Record = $args{'RecordObj'}; - my $ARGSRef = $args{'ARGSRef'}; - my (@results); # Delete links that are gone gone gone. @@ -1953,11 +1323,11 @@ sub ProcessRecordLinks { my $type = $2; my $target = $3; - my ( $val, $msg ) = $Record->DeleteLink( - Base => $base, - Type => $type, - Target => $target - ); + push @results, + "Trying to delete: Base: $base Target: $target Type $type"; + my ( $val, $msg ) = $Ticket->DeleteLink( Base => $base, + Type => $type, + Target => $target ); push @results, $msg; @@ -1968,138 +1338,40 @@ sub ProcessRecordLinks { my @linktypes = qw( DependsOn MemberOf RefersTo ); foreach my $linktype (@linktypes) { - if ( $ARGSRef->{ $Record->Id . "-$linktype" } ) { - $ARGSRef->{ $Record->Id . "-$linktype" } = join( ' ', @{ $ARGSRef->{ $Record->Id . "-$linktype" } } ) - if ref( $ARGSRef->{ $Record->Id . "-$linktype" } ); - - for my $luri ( split( / /, $ARGSRef->{ $Record->Id . "-$linktype" } ) ) { - next unless $luri; - $luri =~ s/\s+$//; # Strip trailing whitespace - my ( $val, $msg ) = $Record->AddLink( - Target => $luri, - Type => $linktype - ); + if ( $ARGSRef->{ $Ticket->Id . "-$linktype" } ) { + for my $luri ( split ( / /, $ARGSRef->{ $Ticket->Id . "-$linktype" } ) ) { + $luri =~ s/\s*$//; # Strip trailing whitespace + my ( $val, $msg ) = $Ticket->AddLink( Target => $luri, + Type => $linktype ); push @results, $msg; } } - if ( $ARGSRef->{ "$linktype-" . $Record->Id } ) { - $ARGSRef->{ "$linktype-" . $Record->Id } = join( ' ', @{ $ARGSRef->{ "$linktype-" . $Record->Id } } ) - if ref( $ARGSRef->{ "$linktype-" . $Record->Id } ); - - for my $luri ( split( / /, $ARGSRef->{ "$linktype-" . $Record->Id } ) ) { - next unless $luri; - my ( $val, $msg ) = $Record->AddLink( - Base => $luri, - Type => $linktype - ); + if ( $ARGSRef->{ "$linktype-" . $Ticket->Id } ) { + + for my $luri ( split ( / /, $ARGSRef->{ "$linktype-" . $Ticket->Id } ) ) { + my ( $val, $msg ) = $Ticket->AddLink( Base => $luri, + Type => $linktype ); push @results, $msg; } - } - } - - return (@results); -} - -=head2 _UploadedFile ( $arg ); - -Takes a CGI parameter name; if a file is uploaded under that name, -return a hash reference suitable for AddCustomFieldValue's use: -C<( Value => $filename, LargeContent => $content, ContentType => $type )>. - -Returns C<undef> if no files were uploaded in the C<$arg> field. - -=cut - -sub _UploadedFile { - my $arg = shift; - my $cgi_object = $m->cgi_object; - my $fh = $cgi_object->upload($arg) or return undef; - my $upload_info = $cgi_object->uploadInfo($fh); - - my $filename = "$fh"; - $filename =~ s#^.*[\\/]##; - binmode($fh); - - return { - Value => $filename, - LargeContent => do { local $/; scalar <$fh> }, - ContentType => $upload_info->{'Content-Type'}, - }; -} - -sub GetColumnMapEntry { - my %args = ( Map => {}, Name => '', Attribute => undef, @_ ); - - # deal with the simplest thing first - if ( $args{'Map'}{ $args{'Name'} } ) { - return $args{'Map'}{ $args{'Name'} }{ $args{'Attribute'} }; - } - - # complex things - elsif ( my ( $mainkey, $subkey ) = $args{'Name'} =~ /^(.*?)\.{(.+)}$/ ) { - return undef unless $args{'Map'}->{$mainkey}; - return $args{'Map'}{$mainkey}{ $args{'Attribute'} } - unless ref $args{'Map'}{$mainkey}{ $args{'Attribute'} } eq 'CODE'; - - return sub { $args{'Map'}{$mainkey}{ $args{'Attribute'} }->( @_, $subkey ) }; + } } - return undef; -} -sub ProcessColumnMapValue { - my $value = shift; - my %args = ( Arguments => [], Escape => 1, @_ ); - - if ( ref $value ) { - if ( UNIVERSAL::isa( $value, 'CODE' ) ) { - my @tmp = $value->( @{ $args{'Arguments'} } ); - return ProcessColumnMapValue( ( @tmp > 1 ? \@tmp : $tmp[0] ), %args ); - } elsif ( UNIVERSAL::isa( $value, 'ARRAY' ) ) { - return join '', map ProcessColumnMapValue( $_, %args ), @$value; - } elsif ( UNIVERSAL::isa( $value, 'SCALAR' ) ) { - return $$value; - } + #Merge if we need to + if ( $ARGSRef->{ $Ticket->Id . "-MergeInto" } ) { + my ( $val, $msg ) = + $Ticket->MergeInto( $ARGSRef->{ $Ticket->Id . "-MergeInto" } ); + push @results, $msg; } - return $m->interp->apply_escapes( $value, 'h' ) if $args{'Escape'}; - return $value; -} - -=head2 _load_container_object ( $type, $id ); - -Instantiate container object for saving searches. - -=cut - -sub _load_container_object { - my ( $obj_type, $obj_id ) = @_; - return RT::SavedSearch->new( $session{'CurrentUser'} )->_load_privacy_object( $obj_type, $obj_id ); + return (@results); } -=head2 _parse_saved_search ( $arg ); - -Given a serialization string for saved search, and returns the -container object and the search id. - -=cut - -sub _parse_saved_search { - my $spec = shift; - return unless $spec; - if ( $spec !~ /^(.*?)-(\d+)-SavedSearch-(\d+)$/ ) { - return; - } - my $obj_type = $1; - my $obj_id = $2; - my $search_id = $3; - - return ( _load_container_object( $obj_type, $obj_id ), $search_id ); -} +# }}} eval "require RT::Interface::Web_Vendor"; -die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Web_Vendor.pm} ); +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Web_Vendor.pm}); eval "require RT::Interface::Web_Local"; -die $@ if ( $@ && $@ !~ qr{^Can't locate RT/Interface/Web_Local.pm} ); +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Web_Local.pm}); 1; diff --git a/rt/lib/RT/Interface/Web_Vendor.pm b/rt/lib/RT/Interface/Web_Vendor.pm new file mode 100644 index 000000000..1999096a7 --- /dev/null +++ b/rt/lib/RT/Interface/Web_Vendor.pm @@ -0,0 +1,201 @@ +# Copyright (c) 2004 Ivan Kohler <ivan-rt@420.am> +# Copyright (c) 2008 Freeside Internet Services, Inc. +# +# This work is made available to you under the terms of Version 2 of +# the GNU General Public License. A copy of that license should have +# been provided with this software, but in any event can be snarfed +# from www.gnu.org. +# +# This work is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +=head1 NAME + +RT::Interface::Web_Vendor + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +Freeside vendor overlay for RT::Interface::Web. + +=begin testing + +use_ok(RT::Interface::Web_Vendor); + +=end testing + +=cut + +#package RT::Interface::Web; +#use strict; + +package HTML::Mason::Commands; +use strict; + +=head2 ProcessTicketCustomers + +=cut + +sub ProcessTicketCustomers { + my %args = ( + TicketObj => undef, + ARGSRef => undef, + Debug => 0, + @_ + ); + my @results = (); + + my $Ticket = $args{'TicketObj'}; + my $ARGSRef = $args{'ARGSRef'}; + my $Debug = $args{'Debug'}; + my $me = 'ProcessTicketCustomers'; + + ### false laziness w/RT::Interface::Web::ProcessTicketLinks + # Delete links that are gone gone gone. + foreach my $arg ( keys %$ARGSRef ) { + if ( $arg =~ /DeleteLink-(.*?)-(DependsOn|MemberOf|RefersTo)-(.*)$/ ) { + my $base = $1; + my $type = $2; + my $target = $3; + + push @results, + "Trying to delete: Base: $base Target: $target Type $type"; + my ( $val, $msg ) = $Ticket->DeleteLink( Base => $base, + Type => $type, + Target => $target ); + + push @results, $msg; + + } + + } + ### + + ### + #find new customers + ### + + my @custnums = map { /^Ticket-AddCustomer-(\d+)$/; $1 } + grep { /^Ticket-AddCustomer-(\d+)$/ && $ARGSRef->{$_} } + keys %$ARGSRef; + + #my @delete_custnums = + # map { /^Ticket-AddCustomer-(\d+)$/; $1 } + # grep { /^Ticket-AddCustomer-(\d+)$/ && $ARGSRef->{$_} } + # keys %$ARGSRef; + + ### + #figure out if we're going to auto-link requestors, and find them if so + ### + + my $num_cur_cust = $Ticket->Customers->Count; + my $num_new_cust = scalar(@custnums); + warn "$me: $num_cur_cust current customers / $num_new_cust new customers\n" + if $Debug; + + #if we're linking the first ticket to one customer + my $link_requestors = ( $num_cur_cust == 0 && $num_new_cust == 1 ); + warn "$me: adding a single customer to a previously customerless". + " ticket, so linking customers to requestor too\n" + if $Debug && $link_requestors; + + my @Requestors = (); + if ( $link_requestors ) { + + #find any requestors without customers + @Requestors = + grep { ! $_->Customers->Count } + @{ $Ticket->Requestors->UserMembersObj->ItemsArrayRef }; + + warn "$me: found ". scalar(@Requestors). " requestors without". + " customers; linking them\n" + if $Debug; + + } + + ### + #link ticket (and requestors) to customers + ### + + foreach my $custnum ( @custnums ) { + + my @link = ( 'Type' => 'MemberOf', + 'Target' => "freeside://freeside/cust_main/$custnum", + ); + + my( $val, $msg ) = $Ticket->AddLink(@link); + push @results, $msg; + + #add customer links to requestors + foreach my $Requestor ( @Requestors ) { + my( $val, $msg ) = $Requestor->AddLink(@link); + push @results, $msg; + warn "$me: linking requestor to custnum $custnum: $msg\n" + if $Debug > 1; + } + + } + + return @results; + +} + +#false laziness w/above... eventually it should go away in favor of this +sub ProcessObjectCustomers { + my %args = ( + Object => undef, + ARGSRef => undef, + @_ + ); + my @results = (); + + my $Object = $args{'Object'}; + my $ARGSRef = $args{'ARGSRef'}; + + ### false laziness w/RT::Interface::Web::ProcessTicketLinks + # Delete links that are gone gone gone. + foreach my $arg ( keys %$ARGSRef ) { + if ( $arg =~ /DeleteLink-(.*?)-(DependsOn|MemberOf|RefersTo)-(.*)$/ ) { + my $base = $1; + my $type = $2; + my $target = $3; + + push @results, + "Trying to delete: Base: $base Target: $target Type $type"; + my ( $val, $msg ) = $Object->DeleteLink( Base => $base, + Type => $type, + Target => $target ); + + push @results, $msg; + + } + + } + ### + + #my @delete_custnums = + # map { /^Object-AddCustomer-(\d+)$/; $1 } + # grep { /^Object-AddCustomer-(\d+)$/ && $ARGSRef->{$_} } + # keys %$ARGSRef; + + my @custnums = map { /^Object-AddCustomer-(\d+)$/; $1 } + grep { /^Object-AddCustomer-(\d+)$/ && $ARGSRef->{$_} } + keys %$ARGSRef; + + foreach my $custnum ( @custnums ) { + my( $val, $msg ) = + $Object->AddLink( 'Type' => 'MemberOf', + 'Target' => "freeside://freeside/cust_main/$custnum", + ); + push @results, $msg; + } + + return @results; + +} + +1; + diff --git a/rt/lib/RT/Link.pm b/rt/lib/RT/Link.pm index 0cab23790..962c378a8 100644 --- a/rt/lib/RT/Link.pm +++ b/rt/lib/RT/Link.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -86,7 +61,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -123,7 +98,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -132,14 +107,14 @@ Returns the current value of id. =cut -=head2 Base +=item Base Returns the current value of Base. (In the database, Base is stored as varchar(240).) -=head2 SetBase VALUE +=item SetBase VALUE Set Base to VALUE. @@ -150,14 +125,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Target +=item Target Returns the current value of Target. (In the database, Target is stored as varchar(240).) -=head2 SetTarget VALUE +=item SetTarget VALUE Set Target to VALUE. @@ -168,14 +143,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Type +=item Type Returns the current value of Type. (In the database, Type is stored as varchar(20).) -=head2 SetType VALUE +=item SetType VALUE Set Type to VALUE. @@ -186,14 +161,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 LocalTarget +=item LocalTarget Returns the current value of LocalTarget. (In the database, LocalTarget is stored as int(11).) -=head2 SetLocalTarget VALUE +=item SetLocalTarget VALUE Set LocalTarget to VALUE. @@ -204,14 +179,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 LocalBase +=item LocalBase Returns the current value of LocalBase. (In the database, LocalBase is stored as int(11).) -=head2 SetLocalBase VALUE +=item SetLocalBase VALUE Set LocalBase to VALUE. @@ -222,7 +197,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 LastUpdatedBy +=item LastUpdatedBy Returns the current value of LastUpdatedBy. (In the database, LastUpdatedBy is stored as int(11).) @@ -231,7 +206,7 @@ Returns the current value of LastUpdatedBy. =cut -=head2 LastUpdated +=item LastUpdated Returns the current value of LastUpdated. (In the database, LastUpdated is stored as datetime.) @@ -240,7 +215,7 @@ Returns the current value of LastUpdated. =cut -=head2 Creator +=item Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) @@ -249,7 +224,7 @@ Returns the current value of Creator. =cut -=head2 Created +=item Created Returns the current value of Created. (In the database, Created is stored as datetime.) @@ -259,29 +234,29 @@ Returns the current value of Created. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, Base => - {read => 1, write => 1, sql_type => 12, length => 240, is_blob => 0, is_numeric => 0, type => 'varchar(240)', default => ''}, + {read => 1, write => 1, type => 'varchar(240)', default => ''}, Target => - {read => 1, write => 1, sql_type => 12, length => 240, is_blob => 0, is_numeric => 0, type => 'varchar(240)', default => ''}, + {read => 1, write => 1, type => 'varchar(240)', default => ''}, Type => - {read => 1, write => 1, sql_type => 12, length => 20, is_blob => 0, is_numeric => 0, type => 'varchar(20)', default => ''}, + {read => 1, write => 1, type => 'varchar(20)', default => ''}, LocalTarget => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, LocalBase => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, LastUpdatedBy => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, LastUpdated => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, } }; @@ -313,7 +288,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Links.pm b/rt/lib/RT/Links.pm index ecf9643fd..7a1773af9 100644 --- a/rt/lib/RT/Links.pm +++ b/rt/lib/RT/Links.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::Link item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Queue.pm b/rt/lib/RT/Queue.pm index 183ab8f9f..b362c9f0d 100755 --- a/rt/lib/RT/Queue.pm +++ b/rt/lib/RT/Queue.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -86,7 +61,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -132,7 +107,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -141,14 +116,14 @@ Returns the current value of id. =cut -=head2 Name +=item Name Returns the current value of Name. (In the database, Name is stored as varchar(200).) -=head2 SetName VALUE +=item SetName VALUE Set Name to VALUE. @@ -159,14 +134,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Description +=item Description Returns the current value of Description. (In the database, Description is stored as varchar(255).) -=head2 SetDescription VALUE +=item SetDescription VALUE Set Description to VALUE. @@ -177,14 +152,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 CorrespondAddress +=item CorrespondAddress Returns the current value of CorrespondAddress. (In the database, CorrespondAddress is stored as varchar(120).) -=head2 SetCorrespondAddress VALUE +=item SetCorrespondAddress VALUE Set CorrespondAddress to VALUE. @@ -195,14 +170,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 CommentAddress +=item CommentAddress Returns the current value of CommentAddress. (In the database, CommentAddress is stored as varchar(120).) -=head2 SetCommentAddress VALUE +=item SetCommentAddress VALUE Set CommentAddress to VALUE. @@ -213,14 +188,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 InitialPriority +=item InitialPriority Returns the current value of InitialPriority. (In the database, InitialPriority is stored as int(11).) -=head2 SetInitialPriority VALUE +=item SetInitialPriority VALUE Set InitialPriority to VALUE. @@ -231,14 +206,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 FinalPriority +=item FinalPriority Returns the current value of FinalPriority. (In the database, FinalPriority is stored as int(11).) -=head2 SetFinalPriority VALUE +=item SetFinalPriority VALUE Set FinalPriority to VALUE. @@ -249,14 +224,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 DefaultDueIn +=item DefaultDueIn Returns the current value of DefaultDueIn. (In the database, DefaultDueIn is stored as int(11).) -=head2 SetDefaultDueIn VALUE +=item SetDefaultDueIn VALUE Set DefaultDueIn to VALUE. @@ -267,7 +242,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Creator +=item Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) @@ -276,7 +251,7 @@ Returns the current value of Creator. =cut -=head2 Created +=item Created Returns the current value of Created. (In the database, Created is stored as datetime.) @@ -285,7 +260,7 @@ Returns the current value of Created. =cut -=head2 LastUpdatedBy +=item LastUpdatedBy Returns the current value of LastUpdatedBy. (In the database, LastUpdatedBy is stored as int(11).) @@ -294,7 +269,7 @@ Returns the current value of LastUpdatedBy. =cut -=head2 LastUpdated +=item LastUpdated Returns the current value of LastUpdated. (In the database, LastUpdated is stored as datetime.) @@ -303,14 +278,14 @@ Returns the current value of LastUpdated. =cut -=head2 Disabled +=item Disabled Returns the current value of Disabled. (In the database, Disabled is stored as smallint(6).) -=head2 SetDisabled VALUE +=item SetDisabled VALUE Set Disabled to VALUE. @@ -322,35 +297,35 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, Name => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, + {read => 1, write => 1, type => 'varchar(200)', default => ''}, Description => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, CorrespondAddress => - {read => 1, write => 1, sql_type => 12, length => 120, is_blob => 0, is_numeric => 0, type => 'varchar(120)', default => ''}, + {read => 1, write => 1, type => 'varchar(120)', default => ''}, CommentAddress => - {read => 1, write => 1, sql_type => 12, length => 120, is_blob => 0, is_numeric => 0, type => 'varchar(120)', default => ''}, + {read => 1, write => 1, type => 'varchar(120)', default => ''}, InitialPriority => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, FinalPriority => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, DefaultDueIn => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, LastUpdatedBy => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, LastUpdated => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, Disabled => - {read => 1, write => 1, sql_type => 5, length => 6, is_blob => 0, is_numeric => 1, type => 'smallint(6)', default => '0'}, + {read => 1, write => 1, type => 'smallint(6)', default => '0'}, } }; @@ -382,7 +357,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Queues.pm b/rt/lib/RT/Queues.pm index 48f40f1e5..60aec9086 100755 --- a/rt/lib/RT/Queues.pm +++ b/rt/lib/RT/Queues.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::Queue item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Record.pm b/rt/lib/RT/Record.pm index 9ecad765b..4f38b0405 100755 --- a/rt/lib/RT/Record.pm +++ b/rt/lib/RT/Record.pm @@ -67,6 +67,7 @@ use strict; use warnings; use RT::Date; +use RT::I18N; use RT::User; use RT::Attributes; use Encode qw(); @@ -803,6 +804,7 @@ sub _DecodeLOB { elsif ( $ContentEncoding && $ContentEncoding ne 'none' ) { return ( $self->loc( "Unknown ContentEncoding [_1]", $ContentEncoding ) ); } + if ( RT::I18N::IsTextualContentType($ContentType) ) { $Content = Encode::decode_utf8($Content) unless Encode::is_utf8($Content); } @@ -1171,8 +1173,37 @@ sub DependsOn { # }}} +# {{{ Customers + +=head2 Customers + + This returns an RT::Links object which references all the customers that this object is a member of. + +=cut + +sub Customers { + my( $self, %opt ) = @_; + my $Debug = $opt{'Debug'}; + + unless ( $self->{'Customers'} ) { + $self->{'Customers'} = $self->MemberOf->Clone; + $self->{'Customers'}->Limit( + FIELD => 'Target', + OPERATOR => 'STARTSWITH', + VALUE => 'freeside://freeside/cust_main/', + ); + } + + warn "->Customers method called on $self; returning ". + ref($self->{'Customers'}). ' object' + if $Debug; + + return $self->{'Customers'}; +} + +# }}} # {{{ sub _Links @@ -1531,7 +1562,6 @@ sub CustomFields { $cfs->LimitToGlobalOrObjectId( $self->_LookupId( $self->CustomFieldLookupType ) ); - $cfs->ApplySortOrder; return $cfs; } diff --git a/rt/lib/RT/Scrip.pm b/rt/lib/RT/Scrip.pm index ecc47e923..a69dde04e 100755 --- a/rt/lib/RT/Scrip.pm +++ b/rt/lib/RT/Scrip.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -90,7 +65,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -145,7 +120,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -154,14 +129,14 @@ Returns the current value of id. =cut -=head2 Description +=item Description Returns the current value of Description. (In the database, Description is stored as varchar(255).) -=head2 SetDescription VALUE +=item SetDescription VALUE Set Description to VALUE. @@ -172,14 +147,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ScripCondition +=item ScripCondition Returns the current value of ScripCondition. (In the database, ScripCondition is stored as int(11).) -=head2 SetScripCondition VALUE +=item SetScripCondition VALUE Set ScripCondition to VALUE. @@ -190,7 +165,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ScripConditionObj +=item ScripConditionObj Returns the ScripCondition Object which has the id returned by ScripCondition @@ -204,14 +179,14 @@ sub ScripConditionObj { return($ScripCondition); } -=head2 ScripAction +=item ScripAction Returns the current value of ScripAction. (In the database, ScripAction is stored as int(11).) -=head2 SetScripAction VALUE +=item SetScripAction VALUE Set ScripAction to VALUE. @@ -222,7 +197,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ScripActionObj +=item ScripActionObj Returns the ScripAction Object which has the id returned by ScripAction @@ -236,14 +211,14 @@ sub ScripActionObj { return($ScripAction); } -=head2 ConditionRules +=item ConditionRules Returns the current value of ConditionRules. (In the database, ConditionRules is stored as text.) -=head2 SetConditionRules VALUE +=item SetConditionRules VALUE Set ConditionRules to VALUE. @@ -254,14 +229,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ActionRules +=item ActionRules Returns the current value of ActionRules. (In the database, ActionRules is stored as text.) -=head2 SetActionRules VALUE +=item SetActionRules VALUE Set ActionRules to VALUE. @@ -272,14 +247,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 CustomIsApplicableCode +=item CustomIsApplicableCode Returns the current value of CustomIsApplicableCode. (In the database, CustomIsApplicableCode is stored as text.) -=head2 SetCustomIsApplicableCode VALUE +=item SetCustomIsApplicableCode VALUE Set CustomIsApplicableCode to VALUE. @@ -290,14 +265,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 CustomPrepareCode +=item CustomPrepareCode Returns the current value of CustomPrepareCode. (In the database, CustomPrepareCode is stored as text.) -=head2 SetCustomPrepareCode VALUE +=item SetCustomPrepareCode VALUE Set CustomPrepareCode to VALUE. @@ -308,14 +283,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 CustomCommitCode +=item CustomCommitCode Returns the current value of CustomCommitCode. (In the database, CustomCommitCode is stored as text.) -=head2 SetCustomCommitCode VALUE +=item SetCustomCommitCode VALUE Set CustomCommitCode to VALUE. @@ -326,14 +301,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Stage +=item Stage Returns the current value of Stage. (In the database, Stage is stored as varchar(32).) -=head2 SetStage VALUE +=item SetStage VALUE Set Stage to VALUE. @@ -344,14 +319,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Queue +=item Queue Returns the current value of Queue. (In the database, Queue is stored as int(11).) -=head2 SetQueue VALUE +=item SetQueue VALUE Set Queue to VALUE. @@ -362,7 +337,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 QueueObj +=item QueueObj Returns the Queue Object which has the id returned by Queue @@ -376,14 +351,14 @@ sub QueueObj { return($Queue); } -=head2 Template +=item Template Returns the current value of Template. (In the database, Template is stored as int(11).) -=head2 SetTemplate VALUE +=item SetTemplate VALUE Set Template to VALUE. @@ -394,7 +369,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 TemplateObj +=item TemplateObj Returns the Template Object which has the id returned by Template @@ -408,7 +383,7 @@ sub TemplateObj { return($Template); } -=head2 Creator +=item Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) @@ -417,7 +392,7 @@ Returns the current value of Creator. =cut -=head2 Created +=item Created Returns the current value of Created. (In the database, Created is stored as datetime.) @@ -426,7 +401,7 @@ Returns the current value of Created. =cut -=head2 LastUpdatedBy +=item LastUpdatedBy Returns the current value of LastUpdatedBy. (In the database, LastUpdatedBy is stored as int(11).) @@ -435,7 +410,7 @@ Returns the current value of LastUpdatedBy. =cut -=head2 LastUpdated +=item LastUpdated Returns the current value of LastUpdated. (In the database, LastUpdated is stored as datetime.) @@ -445,41 +420,41 @@ Returns the current value of LastUpdated. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, Description => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, ScripCondition => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, ScripAction => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, ConditionRules => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''}, + {read => 1, write => 1, type => 'text', default => ''}, ActionRules => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''}, + {read => 1, write => 1, type => 'text', default => ''}, CustomIsApplicableCode => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''}, + {read => 1, write => 1, type => 'text', default => ''}, CustomPrepareCode => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''}, + {read => 1, write => 1, type => 'text', default => ''}, CustomCommitCode => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''}, + {read => 1, write => 1, type => 'text', default => ''}, Stage => - {read => 1, write => 1, sql_type => 12, length => 32, is_blob => 0, is_numeric => 0, type => 'varchar(32)', default => ''}, + {read => 1, write => 1, type => 'varchar(32)', default => ''}, Queue => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Template => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, LastUpdatedBy => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, LastUpdated => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, } }; @@ -511,7 +486,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/ScripAction.pm b/rt/lib/RT/ScripAction.pm index 87a2613f2..26824df5d 100755 --- a/rt/lib/RT/ScripAction.pm +++ b/rt/lib/RT/ScripAction.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -86,7 +61,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -120,7 +95,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -129,14 +104,14 @@ Returns the current value of id. =cut -=head2 Name +=item Name Returns the current value of Name. (In the database, Name is stored as varchar(200).) -=head2 SetName VALUE +=item SetName VALUE Set Name to VALUE. @@ -147,14 +122,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Description +=item Description Returns the current value of Description. (In the database, Description is stored as varchar(255).) -=head2 SetDescription VALUE +=item SetDescription VALUE Set Description to VALUE. @@ -165,14 +140,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ExecModule +=item ExecModule Returns the current value of ExecModule. (In the database, ExecModule is stored as varchar(60).) -=head2 SetExecModule VALUE +=item SetExecModule VALUE Set ExecModule to VALUE. @@ -183,14 +158,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Argument +=item Argument Returns the current value of Argument. (In the database, Argument is stored as varchar(255).) -=head2 SetArgument VALUE +=item SetArgument VALUE Set Argument to VALUE. @@ -201,7 +176,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Creator +=item Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) @@ -210,7 +185,7 @@ Returns the current value of Creator. =cut -=head2 Created +=item Created Returns the current value of Created. (In the database, Created is stored as datetime.) @@ -219,7 +194,7 @@ Returns the current value of Created. =cut -=head2 LastUpdatedBy +=item LastUpdatedBy Returns the current value of LastUpdatedBy. (In the database, LastUpdatedBy is stored as int(11).) @@ -228,7 +203,7 @@ Returns the current value of LastUpdatedBy. =cut -=head2 LastUpdated +=item LastUpdated Returns the current value of LastUpdated. (In the database, LastUpdated is stored as datetime.) @@ -238,27 +213,27 @@ Returns the current value of LastUpdated. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, Name => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, + {read => 1, write => 1, type => 'varchar(200)', default => ''}, Description => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, ExecModule => - {read => 1, write => 1, sql_type => 12, length => 60, is_blob => 0, is_numeric => 0, type => 'varchar(60)', default => ''}, + {read => 1, write => 1, type => 'varchar(60)', default => ''}, Argument => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, LastUpdatedBy => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, LastUpdated => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, } }; @@ -290,7 +265,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/ScripActions.pm b/rt/lib/RT/ScripActions.pm index 1f6fb9815..614ff374f 100755 --- a/rt/lib/RT/ScripActions.pm +++ b/rt/lib/RT/ScripActions.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::ScripAction item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/ScripCondition.pm b/rt/lib/RT/ScripCondition.pm index 072a24ae5..fe0aa2d5a 100755 --- a/rt/lib/RT/ScripCondition.pm +++ b/rt/lib/RT/ScripCondition.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -86,7 +61,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -123,7 +98,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -132,14 +107,14 @@ Returns the current value of id. =cut -=head2 Name +=item Name Returns the current value of Name. (In the database, Name is stored as varchar(200).) -=head2 SetName VALUE +=item SetName VALUE Set Name to VALUE. @@ -150,14 +125,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Description +=item Description Returns the current value of Description. (In the database, Description is stored as varchar(255).) -=head2 SetDescription VALUE +=item SetDescription VALUE Set Description to VALUE. @@ -168,14 +143,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ExecModule +=item ExecModule Returns the current value of ExecModule. (In the database, ExecModule is stored as varchar(60).) -=head2 SetExecModule VALUE +=item SetExecModule VALUE Set ExecModule to VALUE. @@ -186,14 +161,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Argument +=item Argument Returns the current value of Argument. (In the database, Argument is stored as varchar(255).) -=head2 SetArgument VALUE +=item SetArgument VALUE Set Argument to VALUE. @@ -204,14 +179,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ApplicableTransTypes +=item ApplicableTransTypes Returns the current value of ApplicableTransTypes. (In the database, ApplicableTransTypes is stored as varchar(60).) -=head2 SetApplicableTransTypes VALUE +=item SetApplicableTransTypes VALUE Set ApplicableTransTypes to VALUE. @@ -222,7 +197,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Creator +=item Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) @@ -231,7 +206,7 @@ Returns the current value of Creator. =cut -=head2 Created +=item Created Returns the current value of Created. (In the database, Created is stored as datetime.) @@ -240,7 +215,7 @@ Returns the current value of Created. =cut -=head2 LastUpdatedBy +=item LastUpdatedBy Returns the current value of LastUpdatedBy. (In the database, LastUpdatedBy is stored as int(11).) @@ -249,7 +224,7 @@ Returns the current value of LastUpdatedBy. =cut -=head2 LastUpdated +=item LastUpdated Returns the current value of LastUpdated. (In the database, LastUpdated is stored as datetime.) @@ -259,29 +234,29 @@ Returns the current value of LastUpdated. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, Name => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, + {read => 1, write => 1, type => 'varchar(200)', default => ''}, Description => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, ExecModule => - {read => 1, write => 1, sql_type => 12, length => 60, is_blob => 0, is_numeric => 0, type => 'varchar(60)', default => ''}, + {read => 1, write => 1, type => 'varchar(60)', default => ''}, Argument => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, ApplicableTransTypes => - {read => 1, write => 1, sql_type => 12, length => 60, is_blob => 0, is_numeric => 0, type => 'varchar(60)', default => ''}, + {read => 1, write => 1, type => 'varchar(60)', default => ''}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, LastUpdatedBy => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, LastUpdated => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, } }; @@ -313,7 +288,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/ScripConditions.pm b/rt/lib/RT/ScripConditions.pm index 43ea86d51..34f788d9c 100755 --- a/rt/lib/RT/ScripConditions.pm +++ b/rt/lib/RT/ScripConditions.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::ScripCondition item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Scrips.pm b/rt/lib/RT/Scrips.pm index 02d1019a3..a39443136 100755 --- a/rt/lib/RT/Scrips.pm +++ b/rt/lib/RT/Scrips.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::Scrip item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/SearchBuilder.pm b/rt/lib/RT/SearchBuilder.pm index 3bae0eea6..527952b67 100644 --- a/rt/lib/RT/SearchBuilder.pm +++ b/rt/lib/RT/SearchBuilder.pm @@ -65,7 +65,7 @@ package RT::SearchBuilder; use RT::Base; -use DBIx::SearchBuilder "1.40"; +use DBIx::SearchBuilder "1.50"; use strict; use warnings; @@ -93,9 +93,10 @@ Only find items that haven't been disabled sub LimitToEnabled { my $self = shift; - - $self->{'handled_disabled_column'} = 1; - $self->Limit( FIELD => 'Disabled', VALUE => '0' ); + + $self->Limit( FIELD => 'Disabled', + VALUE => '0', + OPERATOR => '=' ); } =head2 LimitToDeleted @@ -106,19 +107,12 @@ Only find items that have been deleted. sub LimitToDeleted { my $self = shift; - - $self->{'handled_disabled_column'} = $self->{'find_disabled_rows'} = 1; - $self->Limit( FIELD => 'Disabled', VALUE => '1' ); -} - -=head2 FindAllRows - -Find all matching rows, regardless of whether they are disabled or not - -=cut - -sub FindAllRows { - shift->{'find_disabled_rows'} = 1; + + $self->{'find_disabled_rows'} = 1; + $self->Limit( FIELD => 'Disabled', + OPERATOR => '=', + VALUE => '1' + ); } =head2 LimitAttribute PARAMHASH @@ -268,6 +262,16 @@ sub LimitCustomField { ); } +=head2 FindAllRows + +Find all matching rows, regardless of whether they are disabled or not + +=cut + +sub FindAllRows { + shift->{'find_disabled_rows'} = 1; +} + =head2 Limit PARAMHASH This Limit sub calls SUPER::Limit, but defaults "CASESENSITIVE" to 1, thus @@ -319,32 +323,6 @@ sub ItemsArrayRef { return $self->ItemsOrderBy($self->SUPER::ItemsArrayRef()); } -# make sure that Disabled rows never get seen unless -# we're explicitly trying to see them. - -sub _DoSearch { - my $self = shift; - - if ( $self->{'with_disabled_column'} - && !$self->{'handled_disabled_column'} - && !$self->{'find_disabled_rows'} - ) { - $self->LimitToEnabled; - } - return $self->SUPER::_DoSearch(@_); -} -sub _DoCount { - my $self = shift; - - if ( $self->{'with_disabled_column'} - && !$self->{'handled_disabled_column'} - && !$self->{'find_disabled_rows'} - ) { - $self->LimitToEnabled; - } - return $self->SUPER::_DoCount(@_); -} - eval "require RT::SearchBuilder_Vendor"; die $@ if ($@ && $@ !~ qr{^Can't locate RT/SearchBuilder_Vendor.pm}); eval "require RT::SearchBuilder_Local"; diff --git a/rt/lib/RT/Template.pm b/rt/lib/RT/Template.pm index f27a0c27e..f73ea3ed6 100755 --- a/rt/lib/RT/Template.pm +++ b/rt/lib/RT/Template.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -87,7 +62,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -130,7 +105,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -139,14 +114,14 @@ Returns the current value of id. =cut -=head2 Queue +=item Queue Returns the current value of Queue. (In the database, Queue is stored as int(11).) -=head2 SetQueue VALUE +=item SetQueue VALUE Set Queue to VALUE. @@ -157,7 +132,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 QueueObj +=item QueueObj Returns the Queue Object which has the id returned by Queue @@ -171,14 +146,14 @@ sub QueueObj { return($Queue); } -=head2 Name +=item Name Returns the current value of Name. (In the database, Name is stored as varchar(200).) -=head2 SetName VALUE +=item SetName VALUE Set Name to VALUE. @@ -189,14 +164,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Description +=item Description Returns the current value of Description. (In the database, Description is stored as varchar(255).) -=head2 SetDescription VALUE +=item SetDescription VALUE Set Description to VALUE. @@ -207,14 +182,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Type +=item Type Returns the current value of Type. (In the database, Type is stored as varchar(16).) -=head2 SetType VALUE +=item SetType VALUE Set Type to VALUE. @@ -225,14 +200,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Language +=item Language Returns the current value of Language. (In the database, Language is stored as varchar(16).) -=head2 SetLanguage VALUE +=item SetLanguage VALUE Set Language to VALUE. @@ -243,14 +218,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 TranslationOf +=item TranslationOf Returns the current value of TranslationOf. (In the database, TranslationOf is stored as int(11).) -=head2 SetTranslationOf VALUE +=item SetTranslationOf VALUE Set TranslationOf to VALUE. @@ -261,14 +236,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Content +=item Content Returns the current value of Content. (In the database, Content is stored as blob.) -=head2 SetContent VALUE +=item SetContent VALUE Set Content to VALUE. @@ -279,7 +254,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 LastUpdated +=item LastUpdated Returns the current value of LastUpdated. (In the database, LastUpdated is stored as datetime.) @@ -288,7 +263,7 @@ Returns the current value of LastUpdated. =cut -=head2 LastUpdatedBy +=item LastUpdatedBy Returns the current value of LastUpdatedBy. (In the database, LastUpdatedBy is stored as int(11).) @@ -297,7 +272,7 @@ Returns the current value of LastUpdatedBy. =cut -=head2 Creator +=item Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) @@ -306,7 +281,7 @@ Returns the current value of Creator. =cut -=head2 Created +=item Created Returns the current value of Created. (In the database, Created is stored as datetime.) @@ -316,33 +291,33 @@ Returns the current value of Created. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, Queue => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Name => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, + {read => 1, write => 1, type => 'varchar(200)', default => ''}, Description => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, Type => - {read => 1, write => 1, sql_type => 12, length => 16, is_blob => 0, is_numeric => 0, type => 'varchar(16)', default => ''}, + {read => 1, write => 1, type => 'varchar(16)', default => ''}, Language => - {read => 1, write => 1, sql_type => 12, length => 16, is_blob => 0, is_numeric => 0, type => 'varchar(16)', default => ''}, + {read => 1, write => 1, type => 'varchar(16)', default => ''}, TranslationOf => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Content => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'blob', default => ''}, + {read => 1, write => 1, type => 'blob', default => ''}, LastUpdated => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, LastUpdatedBy => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, } }; @@ -374,7 +349,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Templates.pm b/rt/lib/RT/Templates.pm index 898870249..37db84086 100755 --- a/rt/lib/RT/Templates.pm +++ b/rt/lib/RT/Templates.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::Template item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Ticket.pm b/rt/lib/RT/Ticket.pm index 4dcd189a8..2f075a20c 100755 --- a/rt/lib/RT/Ticket.pm +++ b/rt/lib/RT/Ticket.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# -# -# CONTRIBUTION SUBMISSION POLICY: +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) # -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -87,7 +62,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -141,7 +116,7 @@ sub Create { Resolved => '', Disabled => '0', - @_); + @_); $self->SUPER::Create( EffectiveId => $args{'EffectiveId'}, Queue => $args{'Queue'}, @@ -169,7 +144,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -178,14 +153,14 @@ Returns the current value of id. =cut -=head2 EffectiveId +=item EffectiveId Returns the current value of EffectiveId. (In the database, EffectiveId is stored as int(11).) -=head2 SetEffectiveId VALUE +=item SetEffectiveId VALUE Set EffectiveId to VALUE. @@ -196,14 +171,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Queue +=item Queue Returns the current value of Queue. (In the database, Queue is stored as int(11).) -=head2 SetQueue VALUE +=item SetQueue VALUE Set Queue to VALUE. @@ -214,7 +189,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 QueueObj +=item QueueObj Returns the Queue Object which has the id returned by Queue @@ -222,22 +197,20 @@ Returns the Queue Object which has the id returned by Queue =cut sub QueueObj { - my $self = shift; - my $Queue = RT::Queue->new($self->CurrentUser); - $Queue->Load($self->__Value('Queue')); - return($Queue); + my $self = shift; + my $Queue = RT::Queue->new($self->CurrentUser); + $Queue->Load($self->__Value('Queue')); + return($Queue); } - - -=head2 Type +=item Type Returns the current value of Type. (In the database, Type is stored as varchar(16).) -=head2 SetType VALUE +=item SetType VALUE Set Type to VALUE. @@ -248,14 +221,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 IssueStatement +=item IssueStatement Returns the current value of IssueStatement. (In the database, IssueStatement is stored as int(11).) -=head2 SetIssueStatement VALUE +=item SetIssueStatement VALUE Set IssueStatement to VALUE. @@ -266,14 +239,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Resolution +=item Resolution Returns the current value of Resolution. (In the database, Resolution is stored as int(11).) -=head2 SetResolution VALUE +=item SetResolution VALUE Set Resolution to VALUE. @@ -284,14 +257,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Owner +=item Owner Returns the current value of Owner. (In the database, Owner is stored as int(11).) -=head2 SetOwner VALUE +=item SetOwner VALUE Set Owner to VALUE. @@ -302,14 +275,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Subject +=item Subject Returns the current value of Subject. (In the database, Subject is stored as varchar(200).) -=head2 SetSubject VALUE +=item SetSubject VALUE Set Subject to VALUE. @@ -320,14 +293,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 InitialPriority +=item InitialPriority Returns the current value of InitialPriority. (In the database, InitialPriority is stored as int(11).) -=head2 SetInitialPriority VALUE +=item SetInitialPriority VALUE Set InitialPriority to VALUE. @@ -338,14 +311,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 FinalPriority +=item FinalPriority Returns the current value of FinalPriority. (In the database, FinalPriority is stored as int(11).) -=head2 SetFinalPriority VALUE +=item SetFinalPriority VALUE Set FinalPriority to VALUE. @@ -356,14 +329,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Priority +=item Priority Returns the current value of Priority. (In the database, Priority is stored as int(11).) -=head2 SetPriority VALUE +=item SetPriority VALUE Set Priority to VALUE. @@ -374,14 +347,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 TimeEstimated +=item TimeEstimated Returns the current value of TimeEstimated. (In the database, TimeEstimated is stored as int(11).) -=head2 SetTimeEstimated VALUE +=item SetTimeEstimated VALUE Set TimeEstimated to VALUE. @@ -392,14 +365,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 TimeWorked +=item TimeWorked Returns the current value of TimeWorked. (In the database, TimeWorked is stored as int(11).) -=head2 SetTimeWorked VALUE +=item SetTimeWorked VALUE Set TimeWorked to VALUE. @@ -410,14 +383,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Status +=item Status Returns the current value of Status. (In the database, Status is stored as varchar(10).) -=head2 SetStatus VALUE +=item SetStatus VALUE Set Status to VALUE. @@ -428,14 +401,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 TimeLeft +=item TimeLeft Returns the current value of TimeLeft. (In the database, TimeLeft is stored as int(11).) -=head2 SetTimeLeft VALUE +=item SetTimeLeft VALUE Set TimeLeft to VALUE. @@ -446,14 +419,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Told +=item Told Returns the current value of Told. (In the database, Told is stored as datetime.) -=head2 SetTold VALUE +=item SetTold VALUE Set Told to VALUE. @@ -464,14 +437,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Starts +=item Starts Returns the current value of Starts. (In the database, Starts is stored as datetime.) -=head2 SetStarts VALUE +=item SetStarts VALUE Set Starts to VALUE. @@ -482,14 +455,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Started +=item Started Returns the current value of Started. (In the database, Started is stored as datetime.) -=head2 SetStarted VALUE +=item SetStarted VALUE Set Started to VALUE. @@ -500,14 +473,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Due +=item Due Returns the current value of Due. (In the database, Due is stored as datetime.) -=head2 SetDue VALUE +=item SetDue VALUE Set Due to VALUE. @@ -518,14 +491,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Resolved +=item Resolved Returns the current value of Resolved. (In the database, Resolved is stored as datetime.) -=head2 SetResolved VALUE +=item SetResolved VALUE Set Resolved to VALUE. @@ -536,7 +509,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 LastUpdatedBy +=item LastUpdatedBy Returns the current value of LastUpdatedBy. (In the database, LastUpdatedBy is stored as int(11).) @@ -545,7 +518,7 @@ Returns the current value of LastUpdatedBy. =cut -=head2 LastUpdated +=item LastUpdated Returns the current value of LastUpdated. (In the database, LastUpdated is stored as datetime.) @@ -554,7 +527,7 @@ Returns the current value of LastUpdated. =cut -=head2 Creator +=item Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) @@ -563,7 +536,7 @@ Returns the current value of Creator. =cut -=head2 Created +=item Created Returns the current value of Created. (In the database, Created is stored as datetime.) @@ -572,14 +545,14 @@ Returns the current value of Created. =cut -=head2 Disabled +=item Disabled Returns the current value of Disabled. (In the database, Disabled is stored as smallint(6).) -=head2 SetDisabled VALUE +=item SetDisabled VALUE Set Disabled to VALUE. @@ -591,59 +564,59 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, EffectiveId => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Queue => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Type => - {read => 1, write => 1, sql_type => 12, length => 16, is_blob => 0, is_numeric => 0, type => 'varchar(16)', default => ''}, + {read => 1, write => 1, type => 'varchar(16)', default => ''}, IssueStatement => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Resolution => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Owner => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Subject => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => '[no subject]'}, + {read => 1, write => 1, type => 'varchar(200)', default => '[no subject]'}, InitialPriority => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, FinalPriority => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Priority => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, TimeEstimated => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, TimeWorked => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Status => - {read => 1, write => 1, sql_type => 12, length => 10, is_blob => 0, is_numeric => 0, type => 'varchar(10)', default => ''}, + {read => 1, write => 1, type => 'varchar(10)', default => ''}, TimeLeft => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Told => - {read => 1, write => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, write => 1, type => 'datetime', default => ''}, Starts => - {read => 1, write => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, write => 1, type => 'datetime', default => ''}, Started => - {read => 1, write => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, write => 1, type => 'datetime', default => ''}, Due => - {read => 1, write => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, write => 1, type => 'datetime', default => ''}, Resolved => - {read => 1, write => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, write => 1, type => 'datetime', default => ''}, LastUpdatedBy => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, LastUpdated => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, Disabled => - {read => 1, write => 1, sql_type => 5, length => 6, is_blob => 0, is_numeric => 1, type => 'smallint(6)', default => '0'}, + {read => 1, write => 1, type => 'smallint(6)', default => '0'}, } }; @@ -675,7 +648,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/TicketCustomFieldValue.pm b/rt/lib/RT/TicketCustomFieldValue.pm deleted file mode 100644 index 717647266..000000000 --- a/rt/lib/RT/TicketCustomFieldValue.pm +++ /dev/null @@ -1,308 +0,0 @@ -# {{{ BEGIN BPS TAGGED BLOCK -# -# COPYRIGHT: -# -# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# }}} END BPS TAGGED BLOCK -# Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) -# WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. -# -# !! DO NOT EDIT THIS FILE !! -# - -use strict; - - -=head1 NAME - -RT::TicketCustomFieldValue - - -=head1 SYNOPSIS - -=head1 DESCRIPTION - -=head1 METHODS - -=cut - -package RT::TicketCustomFieldValue; -use RT::Record; -use RT::CustomField; -use RT::Ticket; - - -use vars qw( @ISA ); -@ISA= qw( RT::Record ); - -sub _Init { - my $self = shift; - - $self->Table('TicketCustomFieldValues'); - $self->SUPER::_Init(@_); -} - - - - - -=head2 Create PARAMHASH - -Create takes a hash of values and creates a row in the database: - - int(11) 'Ticket'. - int(11) 'CustomField'. - varchar(255) 'Content'. - -=cut - - - - -sub Create { - my $self = shift; - my %args = ( - Ticket => '0', - CustomField => '0', - Content => '', - - @_); - $self->SUPER::Create( - Ticket => $args{'Ticket'}, - CustomField => $args{'CustomField'}, - Content => $args{'Content'}, -); - -} - - - -=head2 id - -Returns the current value of id. -(In the database, id is stored as int(11).) - - -=cut - - -=head2 Ticket - -Returns the current value of Ticket. -(In the database, Ticket is stored as int(11).) - - - -=head2 SetTicket VALUE - - -Set Ticket to VALUE. -Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -(In the database, Ticket will be stored as a int(11).) - - -=cut - - -=head2 TicketObj - -Returns the Ticket Object which has the id returned by Ticket - - -=cut - -sub TicketObj { - my $self = shift; - my $Ticket = RT::Ticket->new($self->CurrentUser); - $Ticket->Load($self->__Value('Ticket')); - return($Ticket); -} - -=head2 CustomField - -Returns the current value of CustomField. -(In the database, CustomField is stored as int(11).) - - - -=head2 SetCustomField VALUE - - -Set CustomField to VALUE. -Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -(In the database, CustomField will be stored as a int(11).) - - -=cut - - -=head2 CustomFieldObj - -Returns the CustomField Object which has the id returned by CustomField - - -=cut - -sub CustomFieldObj { - my $self = shift; - my $CustomField = RT::CustomField->new($self->CurrentUser); - $CustomField->Load($self->__Value('CustomField')); - return($CustomField); -} - -=head2 Content - -Returns the current value of Content. -(In the database, Content is stored as varchar(255).) - - - -=head2 SetContent VALUE - - -Set Content to VALUE. -Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -(In the database, Content will be stored as a varchar(255).) - - -=cut - - -=head2 Creator - -Returns the current value of Creator. -(In the database, Creator is stored as int(11).) - - -=cut - - -=head2 Created - -Returns the current value of Created. -(In the database, Created is stored as datetime.) - - -=cut - - -=head2 LastUpdatedBy - -Returns the current value of LastUpdatedBy. -(In the database, LastUpdatedBy is stored as int(11).) - - -=cut - - -=head2 LastUpdated - -Returns the current value of LastUpdated. -(In the database, LastUpdated is stored as datetime.) - - -=cut - - - -sub _CoreAccessible { - { - - id => - {read => 1, type => 'int(11)', default => ''}, - Ticket => - {read => 1, write => 1, type => 'int(11)', default => '0'}, - CustomField => - {read => 1, write => 1, type => 'int(11)', default => '0'}, - Content => - {read => 1, write => 1, type => 'varchar(255)', default => ''}, - Creator => - {read => 1, auto => 1, type => 'int(11)', default => '0'}, - Created => - {read => 1, auto => 1, type => 'datetime', default => ''}, - LastUpdatedBy => - {read => 1, auto => 1, type => 'int(11)', default => '0'}, - LastUpdated => - {read => 1, auto => 1, type => 'datetime', default => ''}, - - } -}; - - - eval "require RT::TicketCustomFieldValue_Overlay"; - if ($@ && $@ !~ qr{^Can't locate RT/TicketCustomFieldValue_Overlay.pm}) { - die $@; - }; - - eval "require RT::TicketCustomFieldValue_Vendor"; - if ($@ && $@ !~ qr{^Can't locate RT/TicketCustomFieldValue_Vendor.pm}) { - die $@; - }; - - eval "require RT::TicketCustomFieldValue_Local"; - if ($@ && $@ !~ qr{^Can't locate RT/TicketCustomFieldValue_Local.pm}) { - die $@; - }; - - - - -=head1 SEE ALSO - -This class allows "overlay" methods to be placed -into the following files _Overlay is for a System overlay by the original author, -_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations. - -These overlay files can contain new subs or subs to replace existing subs in this module. - -If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line - - no warnings qw(redefine); - -so that perl does not kick and scream when you redefine a subroutine or variable in your overlay. - -RT::TicketCustomFieldValue_Overlay, RT::TicketCustomFieldValue_Vendor, RT::TicketCustomFieldValue_Local - -=cut - - -1; diff --git a/rt/lib/RT/TicketCustomFieldValue_Overlay.pm b/rt/lib/RT/TicketCustomFieldValue_Overlay.pm deleted file mode 100644 index 270c5939a..000000000 --- a/rt/lib/RT/TicketCustomFieldValue_Overlay.pm +++ /dev/null @@ -1,74 +0,0 @@ -# {{{ BEGIN BPS TAGGED BLOCK -# -# COPYRIGHT: -# -# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# }}} END BPS TAGGED BLOCK -use strict; -no warnings qw(redefine); - - - -=head2 LoadByTicketContentAndCustomField { Ticket => TICKET, CustomField => CUSTOMFIELD, Content => CONTENT } - -Loads a custom field value by Ticket, Content and which CustomField it's tied to - -=cut - - -sub LoadByTicketContentAndCustomField { - my $self = shift; - my %args = ( Ticket => undef, - CustomField => undef, - Content => undef, - @_ - ); - - - $self->LoadByCols( Content => $args{'Content'}, - CustomField => $args{'CustomField'}, - Ticket => $args{'Ticket'}); - - -} - -1; diff --git a/rt/lib/RT/TicketCustomFieldValues.pm b/rt/lib/RT/TicketCustomFieldValues.pm deleted file mode 100644 index 2174afef3..000000000 --- a/rt/lib/RT/TicketCustomFieldValues.pm +++ /dev/null @@ -1,137 +0,0 @@ -# {{{ BEGIN BPS TAGGED BLOCK -# -# COPYRIGHT: -# -# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# }}} END BPS TAGGED BLOCK -# Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) -# WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. -# -# !! DO NOT EDIT THIS FILE !! -# - -use strict; - - -=head1 NAME - - RT::TicketCustomFieldValues -- Class Description - -=head1 SYNOPSIS - - use RT::TicketCustomFieldValues - -=head1 DESCRIPTION - - -=head1 METHODS - -=cut - -package RT::TicketCustomFieldValues; - -use RT::SearchBuilder; -use RT::TicketCustomFieldValue; - -use vars qw( @ISA ); -@ISA= qw(RT::SearchBuilder); - - -sub _Init { - my $self = shift; - $self->{'table'} = 'TicketCustomFieldValues'; - $self->{'primary_key'} = 'id'; - - - return ( $self->SUPER::_Init(@_) ); -} - - -=head2 NewItem - -Returns an empty new RT::TicketCustomFieldValue item - -=cut - -sub NewItem { - my $self = shift; - return(RT::TicketCustomFieldValue->new($self->CurrentUser)); -} - - eval "require RT::TicketCustomFieldValues_Overlay"; - if ($@ && $@ !~ qr{^Can't locate RT/TicketCustomFieldValues_Overlay.pm}) { - die $@; - }; - - eval "require RT::TicketCustomFieldValues_Vendor"; - if ($@ && $@ !~ qr{^Can't locate RT/TicketCustomFieldValues_Vendor.pm}) { - die $@; - }; - - eval "require RT::TicketCustomFieldValues_Local"; - if ($@ && $@ !~ qr{^Can't locate RT/TicketCustomFieldValues_Local.pm}) { - die $@; - }; - - - - -=head1 SEE ALSO - -This class allows "overlay" methods to be placed -into the following files _Overlay is for a System overlay by the original author, -_Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customizations. - -These overlay files can contain new subs or subs to replace existing subs in this module. - -If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line - - no warnings qw(redefine); - -so that perl does not kick and scream when you redefine a subroutine or variable in your overlay. - -RT::TicketCustomFieldValues_Overlay, RT::TicketCustomFieldValues_Vendor, RT::TicketCustomFieldValues_Local - -=cut - - -1; diff --git a/rt/lib/RT/TicketCustomFieldValues_Overlay.pm b/rt/lib/RT/TicketCustomFieldValues_Overlay.pm deleted file mode 100644 index 8cbaca574..000000000 --- a/rt/lib/RT/TicketCustomFieldValues_Overlay.pm +++ /dev/null @@ -1,108 +0,0 @@ -# {{{ BEGIN BPS TAGGED BLOCK -# -# COPYRIGHT: -# -# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: -# -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org. -# -# This work is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# -# CONTRIBUTION SUBMISSION POLICY: -# -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# }}} END BPS TAGGED BLOCK -use strict; -no warnings qw(redefine); - -# {{{ sub LimitToCustomField - -=head2 LimitToCustomField FIELD - -Limits the returned set to values for the custom field with Id FIELD - -=cut - -sub LimitToCustomField { - my $self = shift; - my $cf = shift; - return ($self->Limit( FIELD => 'CustomField', - VALUE => $cf, - OPERATOR => '=')); - -} - -# }}} - -# {{{ sub LimitToTicket - -=head2 LimitToTicket TICKETID - -Limits the returned set to values for the ticket with Id TICKETID - -=cut - -sub LimitToTicket { - my $self = shift; - my $ticket = shift; - return ($self->Limit( FIELD => 'Ticket', - VALUE => $ticket, - OPERATOR => '=')); - -} - -# }}} - - -=sub HasEntry VALUE - -Returns true if this CustomFieldValues collection has an entry with content that eq VALUE - -=cut - - -sub HasEntry { - my $self = shift; - my $value = shift; - - #TODO: this could cache and optimize a fair bit. - foreach my $item (@{$self->ItemsArrayRef}) { - return(1) if ($item->Content eq $value); - } - return undef; - -} - -1; - diff --git a/rt/lib/RT/Ticket_Overlay.pm b/rt/lib/RT/Ticket_Overlay.pm index 186853e76..f4664fd72 100644 --- a/rt/lib/RT/Ticket_Overlay.pm +++ b/rt/lib/RT/Ticket_Overlay.pm @@ -135,11 +135,6 @@ our %LINKDIRMAP = ( sub LINKTYPEMAP { return \%LINKTYPEMAP } sub LINKDIRMAP { return \%LINKDIRMAP } -our %MERGE_CACHE = ( - effective => {}, - merged => {}, -); - # {{{ sub Load =head2 Load @@ -153,46 +148,47 @@ Otherwise, returns the ticket id. sub Load { my $self = shift; my $id = shift; - $id = '' unless defined $id; - # TODO: modify this routine to look at EffectiveId and - # do the recursive load thing. be careful to cache all - # the interim tickets we try so we don't loop forever. + #TODO modify this routine to look at EffectiveId and do the recursive load + # thing. be careful to cache all the interim tickets we try so we don't loop forever. # FIXME: there is no TicketBaseURI option in config my $base_uri = RT->Config->Get('TicketBaseURI') || ''; #If it's a local URI, turn it into a ticket id - if ( $base_uri && $id =~ /^$base_uri(\d+)$/ ) { + if ( $base_uri && defined $id && $id =~ /^$base_uri(\d+)$/ ) { $id = $1; } - unless ( $id =~ /^\d+$/ ) { - $RT::Logger->debug("Tried to load a bogus ticket id: '$id'"); + #If it's a remote URI, we're going to punt for now + elsif ( $id =~ '://' ) { return (undef); } - $id = $MERGE_CACHE{'effective'}{ $id } - if $MERGE_CACHE{'effective'}{ $id }; + #If we have an integer URI, load the ticket + if ( defined $id && $id =~ /^\d+$/ ) { + my ($ticketid,$msg) = $self->LoadById($id); - my ($ticketid, $msg) = $self->LoadById( $id ); - unless ( $self->Id ) { - $RT::Logger->debug("$self tried to load a bogus ticket: $id"); + unless ($self->Id) { + $RT::Logger->debug("$self tried to load a bogus ticket: $id"); + return (undef); + } + } + + #It's not a URI. It's not a numerical ticket ID. Punt! + else { + $RT::Logger->debug("Tried to load a bogus ticket id: '$id'"); return (undef); } #If we're merged, resolve the merge. - if ( $self->EffectiveId && $self->EffectiveId != $self->Id ) { - $RT::Logger->debug( - "We found a merged ticket. " - . $self->id ."/". $self->EffectiveId - ); - my $real_id = $self->Load( $self->EffectiveId ); - $MERGE_CACHE{'effective'}{ $id } = $real_id; - return $real_id; + if ( ( $self->EffectiveId ) and ( $self->EffectiveId != $self->Id ) ) { + $RT::Logger->debug ("We found a merged ticket.". $self->id ."/".$self->EffectiveId); + return ( $self->Load( $self->EffectiveId ) ); } #Ok. we're loaded. lets get outa here. - return $self->Id; + return ( $self->Id ); + } # }}} @@ -560,6 +556,68 @@ sub Create { # }}} + # {{{ Deal with auto-customer association + + #unless we already have (a) customer(s)... + unless ( $self->Customers->Count ) { + + #first find any requestors with emails but *without* customer targets + my @NoCust_Requestors = + grep { $_->EmailAddress && ! $_->Customers->Count } + @{ $self->_Requestors->UserMembersObj->ItemsArrayRef }; + + for my $Requestor (@NoCust_Requestors) { + + #perhaps the stuff in here should be in a User method?? + my @Customers = + &RT::URI::freeside::email_search( email=>$Requestor->EmailAddress ); + + foreach my $custnum ( map $_->{'custnum'}, @Customers ) { + + ## false laziness w/RT/Interface/Web_Vendor.pm + my @link = ( 'Type' => 'MemberOf', + 'Target' => "freeside://freeside/cust_main/$custnum", + ); + + my( $val, $msg ) = $Requestor->_AddLink(@link); + #XXX should do something with $msg# push @non_fatal_errors, $msg; + + } + + } + + #find any requestors with customer targets + + my %cust_target = (); + + my @Requestors = + grep { $_->Customers->Count } + @{ $self->_Requestors->UserMembersObj->ItemsArrayRef }; + + foreach my $Requestor ( @Requestors ) { + foreach my $cust_link ( @{ $Requestor->Customers->ItemsArrayRef } ) { + $cust_target{ $cust_link->Target } = 1; + } + } + + #and then auto-associate this ticket with those customers + + foreach my $cust_target ( keys %cust_target ) { + + my @link = ( 'Type' => 'MemberOf', + #'Target' => "freeside://freeside/cust_main/$custnum", + 'Target' => $cust_target, + ); + + my( $val, $msg ) = $self->_AddLink(@link); + push @non_fatal_errors, $msg; + + } + + } + + # }}} + # {{{ Add all the custom fields foreach my $arg ( keys %args ) { @@ -646,7 +704,6 @@ sub Create { } else { $Owner = $DeferOwner; $self->__Set(Field => 'Owner', Value => $Owner->id); - } $self->OwnerGroup->_AddMember( PrincipalId => $Owner->PrincipalId, @@ -1103,20 +1160,12 @@ sub _AddWatcher { my $principal = RT::Principal->new($self->CurrentUser); if ($args{'Email'}) { - if ( RT::EmailParser->IsRTAddress( $args{'Email'} ) ) { - return (0, $self->loc("[_1] is an address RT receives mail at. Adding it as a '[_2]' would create a mail loop", $args{'Email'}, $self->loc($args{'Type'}))); - } my $user = RT::User->new($RT::SystemUser); my ($pid, $msg) = $user->LoadOrCreateByEmail( $args{'Email'} ); $args{'PrincipalId'} = $pid if $pid; } if ($args{'PrincipalId'}) { $principal->Load($args{'PrincipalId'}); - if ( $principal->id and $principal->IsUser and my $email = $principal->Object->EmailAddress ) { - return (0, $self->loc("[_1] is an address RT receives mail at. Adding it as a '[_2]' would create a mail loop", $email, $self->loc($args{'Type'}))) - if RT::EmailParser->IsRTAddress( $email ); - - } } @@ -1428,6 +1477,25 @@ sub Requestors { # }}} +# {{{ sub _Requestors + +=head2 _Requestors + +Private non-ACLed variant of Reqeustors so that we can look them up for the +purposes of customer auto-association during create. + +=cut + +sub _Requestors { + my $self = shift; + + my $group = RT::Group->new($RT::SystemUser); + $group->LoadTicketRoleGroup(Type => 'Requestor', Ticket => $self->Id); + return ($group); +} + +# }}} + # {{{ sub Cc =head2 Cc @@ -1628,9 +1696,8 @@ sub IsOwner { =head2 TransactionAddresses -Returns a composite hashref of the results of L<RT::Transaction/Addresses> for -all this ticket's Create, Comment or Correspond transactions. The keys are -stringified email addresses. Each value is an L<Email::Address> object. +Returns a composite hashref of the results of L<RT::Transaction/Addresses> for all this ticket's Create, Comment or Correspond transactions. +The keys are C<To>, C<Cc> and C<Bcc>. The values are lists of C<Email::Address> objects. NOTE: For performance reasons, this method might want to skip transactions and go straight for attachments. But to make that work right, we're going to need to go and walk around the access control in Attachment.pm's sub _Value. @@ -2163,13 +2230,13 @@ sub _RecordNote { my $addresses = join ', ', ( map { RT::User->CanonicalizeEmailAddress( $_->address ) } Email::Address->parse( $args{ $type . 'MessageTo' } ) ); - $args{'MIMEObj'}->head->add( 'RT-Send-' . $type, Encode::encode_utf8( $addresses ) ); + $args{'MIMEObj'}->head->add( 'RT-Send-' . $type, $addresses ); } } foreach my $argument (qw(Encrypt Sign)) { $args{'MIMEObj'}->head->add( - "X-RT-$argument" => Encode::encode_utf8( $args{ $argument } ) + "X-RT-$argument" => $args{ $argument } ) if defined $args{ $argument }; } @@ -2215,35 +2282,34 @@ sub _Links { my $field = shift; my $type = shift || ""; - my $cache_key = "$field$type"; - return $self->{ $cache_key } if $self->{ $cache_key }; - - my $links = $self->{ $cache_key } - = RT::Links->new( $self->CurrentUser ); - unless ( $self->CurrentUserHasRight('ShowTicket') ) { - $links->Limit( FIELD => 'id', VALUE => 0 ); - return $links; + unless ( $self->{"$field$type"} ) { + $self->{"$field$type"} = new RT::Links( $self->CurrentUser ); + + #not sure what this ACL was supposed to do... but returning the + # bare (unlimited) RT::Links certainly seems wrong, it causes the + # $Ticket->Customers method during creation to return results for every + # ticket... + #if ( $self->CurrentUserHasRight('ShowTicket') ) { + + # Maybe this ticket is a merged ticket + my $Tickets = new RT::Tickets( $self->CurrentUser ); + # at least to myself + $self->{"$field$type"}->Limit( FIELD => $field, + VALUE => $self->URI, + ENTRYAGGREGATOR => 'OR' ); + $Tickets->Limit( FIELD => 'EffectiveId', + VALUE => $self->EffectiveId ); + while (my $Ticket = $Tickets->Next) { + $self->{"$field$type"}->Limit( FIELD => $field, + VALUE => $Ticket->URI, + ENTRYAGGREGATOR => 'OR' ); + } + $self->{"$field$type"}->Limit( FIELD => 'Type', + VALUE => $type ) + if ($type); + #} } - - # Maybe this ticket is a merge ticket - my $limit_on = 'Local'. $field; - # at least to myself - $links->Limit( - FIELD => $limit_on, - VALUE => $self->id, - ENTRYAGGREGATOR => 'OR', - ); - $links->Limit( - FIELD => $limit_on, - VALUE => $_, - ENTRYAGGREGATOR => 'OR', - ) foreach $self->Merged; - $links->Limit( - FIELD => 'Type', - VALUE => $type, - ) if $type; - - return $links; + return ( $self->{"$field$type"} ); } # }}} @@ -2485,6 +2551,8 @@ sub _AddLink { MergeInto take the id of the ticket to merge this ticket into. + + =cut sub MergeInto { @@ -2496,7 +2564,7 @@ sub MergeInto { } # Load up the new ticket. - my $MergeInto = RT::Ticket->new($self->CurrentUser); + my $MergeInto = RT::Ticket->new($RT::SystemUser); $MergeInto->Load($ticket_id); # make sure it exists. @@ -2509,11 +2577,6 @@ sub MergeInto { return ( 0, $self->loc("Permission Denied") ); } - delete $MERGE_CACHE{'effective'}{ $self->id }; - delete @{ $MERGE_CACHE{'merged'} }{ - $ticket_id, $MergeInto->id, $self->id - }; - $RT::Handle->BeginTransaction(); # We use EffectiveId here even though it duplicates information from @@ -2663,22 +2726,18 @@ Returns list of tickets' ids that's been merged into this ticket. sub Merged { my $self = shift; - my $id = $self->id; - return @{ $MERGE_CACHE{'merged'}{ $id } } - if $MERGE_CACHE{'merged'}{ $id }; - - my $mergees = RT::Tickets->new( $self->CurrentUser ); + my $mergees = new RT::Tickets( $self->CurrentUser ); $mergees->Limit( FIELD => 'EffectiveId', - VALUE => $id, + OPERATOR => '=', + VALUE => $self->Id, ); $mergees->Limit( FIELD => 'id', OPERATOR => '!=', - VALUE => $id, + VALUE => $self->Id, ); - return @{ $MERGE_CACHE{'merged'}{ $id } ||= [] } - = map $_->id, @{ $mergees->ItemsArrayRef || [] }; + return map $_->id, @{ $mergees->ItemsArrayRef || [] }; } # }}} diff --git a/rt/lib/RT/Tickets.pm b/rt/lib/RT/Tickets.pm index d0699e599..b6b349144 100755 --- a/rt/lib/RT/Tickets.pm +++ b/rt/lib/RT/Tickets.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::Ticket item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Transaction.pm b/rt/lib/RT/Transaction.pm index 351e79d51..ca491a6c7 100755 --- a/rt/lib/RT/Transaction.pm +++ b/rt/lib/RT/Transaction.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -70,6 +45,7 @@ RT::Transaction package RT::Transaction; use RT::Record; +use RT::Ticket; use vars qw( @ISA ); @@ -86,21 +62,18 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: - varchar(64) 'ObjectType'. - int(11) 'ObjectId'. + int(11) 'EffectiveTicket'. + int(11) 'Ticket'. int(11) 'TimeTaken'. varchar(20) 'Type'. varchar(40) 'Field'. varchar(255) 'OldValue'. varchar(255) 'NewValue'. - varchar(255) 'ReferenceType'. - int(11) 'OldReference'. - int(11) 'NewReference'. - varchar(255) 'Data'. + varchar(100) 'Data'. =cut @@ -110,30 +83,24 @@ Create takes a hash of values and creates a row in the database: sub Create { my $self = shift; my %args = ( - ObjectType => '', - ObjectId => '0', + EffectiveTicket => '0', + Ticket => '0', TimeTaken => '0', Type => '', Field => '', OldValue => '', NewValue => '', - ReferenceType => '', - OldReference => '', - NewReference => '', Data => '', @_); $self->SUPER::Create( - ObjectType => $args{'ObjectType'}, - ObjectId => $args{'ObjectId'}, + EffectiveTicket => $args{'EffectiveTicket'}, + Ticket => $args{'Ticket'}, TimeTaken => $args{'TimeTaken'}, Type => $args{'Type'}, Field => $args{'Field'}, OldValue => $args{'OldValue'}, NewValue => $args{'NewValue'}, - ReferenceType => $args{'ReferenceType'}, - OldReference => $args{'OldReference'}, - NewReference => $args{'NewReference'}, Data => $args{'Data'}, ); @@ -141,7 +108,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -150,50 +117,64 @@ Returns the current value of id. =cut -=head2 ObjectType +=item EffectiveTicket -Returns the current value of ObjectType. -(In the database, ObjectType is stored as varchar(64).) +Returns the current value of EffectiveTicket. +(In the database, EffectiveTicket is stored as int(11).) -=head2 SetObjectType VALUE +=item SetEffectiveTicket VALUE -Set ObjectType to VALUE. +Set EffectiveTicket to VALUE. Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -(In the database, ObjectType will be stored as a varchar(64).) +(In the database, EffectiveTicket will be stored as a int(11).) =cut -=head2 ObjectId +=item Ticket -Returns the current value of ObjectId. -(In the database, ObjectId is stored as int(11).) +Returns the current value of Ticket. +(In the database, Ticket is stored as int(11).) -=head2 SetObjectId VALUE +=item SetTicket VALUE -Set ObjectId to VALUE. +Set Ticket to VALUE. Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -(In the database, ObjectId will be stored as a int(11).) +(In the database, Ticket will be stored as a int(11).) =cut -=head2 TimeTaken +=item TicketObj + +Returns the Ticket Object which has the id returned by Ticket + + +=cut + +sub TicketObj { + my $self = shift; + my $Ticket = RT::Ticket->new($self->CurrentUser); + $Ticket->Load($self->__Value('Ticket')); + return($Ticket); +} + +=item TimeTaken Returns the current value of TimeTaken. (In the database, TimeTaken is stored as int(11).) -=head2 SetTimeTaken VALUE +=item SetTimeTaken VALUE Set TimeTaken to VALUE. @@ -204,14 +185,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Type +=item Type Returns the current value of Type. (In the database, Type is stored as varchar(20).) -=head2 SetType VALUE +=item SetType VALUE Set Type to VALUE. @@ -222,14 +203,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Field +=item Field Returns the current value of Field. (In the database, Field is stored as varchar(40).) -=head2 SetField VALUE +=item SetField VALUE Set Field to VALUE. @@ -240,14 +221,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 OldValue +=item OldValue Returns the current value of OldValue. (In the database, OldValue is stored as varchar(255).) -=head2 SetOldValue VALUE +=item SetOldValue VALUE Set OldValue to VALUE. @@ -258,14 +239,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 NewValue +=item NewValue Returns the current value of NewValue. (In the database, NewValue is stored as varchar(255).) -=head2 SetNewValue VALUE +=item SetNewValue VALUE Set NewValue to VALUE. @@ -276,79 +257,25 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ReferenceType - -Returns the current value of ReferenceType. -(In the database, ReferenceType is stored as varchar(255).) - - - -=head2 SetReferenceType VALUE - - -Set ReferenceType to VALUE. -Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -(In the database, ReferenceType will be stored as a varchar(255).) - - -=cut - - -=head2 OldReference - -Returns the current value of OldReference. -(In the database, OldReference is stored as int(11).) - - - -=head2 SetOldReference VALUE - - -Set OldReference to VALUE. -Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -(In the database, OldReference will be stored as a int(11).) - - -=cut - - -=head2 NewReference - -Returns the current value of NewReference. -(In the database, NewReference is stored as int(11).) - - - -=head2 SetNewReference VALUE - - -Set NewReference to VALUE. -Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -(In the database, NewReference will be stored as a int(11).) - - -=cut - - -=head2 Data +=item Data Returns the current value of Data. -(In the database, Data is stored as varchar(255).) +(In the database, Data is stored as varchar(100).) -=head2 SetData VALUE +=item SetData VALUE Set Data to VALUE. Returns (1, 'Status message') on success and (0, 'Error Message') on failure. -(In the database, Data will be stored as a varchar(255).) +(In the database, Data will be stored as a varchar(100).) =cut -=head2 Creator +=item Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) @@ -357,7 +284,7 @@ Returns the current value of Creator. =cut -=head2 Created +=item Created Returns the current value of Created. (In the database, Created is stored as datetime.) @@ -367,37 +294,31 @@ Returns the current value of Created. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, - ObjectType => - {read => 1, write => 1, sql_type => 12, length => 64, is_blob => 0, is_numeric => 0, type => 'varchar(64)', default => ''}, - ObjectId => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, type => 'int(11)', default => ''}, + EffectiveTicket => + {read => 1, write => 1, type => 'int(11)', default => '0'}, + Ticket => + {read => 1, write => 1, type => 'int(11)', default => '0'}, TimeTaken => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, write => 1, type => 'int(11)', default => '0'}, Type => - {read => 1, write => 1, sql_type => 12, length => 20, is_blob => 0, is_numeric => 0, type => 'varchar(20)', default => ''}, + {read => 1, write => 1, type => 'varchar(20)', default => ''}, Field => - {read => 1, write => 1, sql_type => 12, length => 40, is_blob => 0, is_numeric => 0, type => 'varchar(40)', default => ''}, + {read => 1, write => 1, type => 'varchar(40)', default => ''}, OldValue => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, NewValue => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, - ReferenceType => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, - OldReference => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, - NewReference => - {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, write => 1, type => 'varchar(255)', default => ''}, Data => - {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''}, + {read => 1, write => 1, type => 'varchar(100)', default => ''}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, } }; @@ -429,7 +350,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Transaction_Overlay.pm b/rt/lib/RT/Transaction_Overlay.pm index 96ccf51d4..e51e5b50d 100644 --- a/rt/lib/RT/Transaction_Overlay.pm +++ b/rt/lib/RT/Transaction_Overlay.pm @@ -286,7 +286,7 @@ textual part (as defined in RT::I18N::IsTextualContentType). Otherwise, returns undef. Takes a paramhash. If the $args{'Quote'} parameter is set, wraps this message -at $args{'Wrap'}. $args{'Wrap'} defaults to 70. +at $args{'Wrap'}. $args{'Wrap'} defaults to $RT::MessageBoxWidth - 2 or 70. If $args{'Type'} is set to C<text/html>, this will return an HTML part of the message, if available. Otherwise it looks for a text/plain @@ -302,6 +302,7 @@ sub Content { Type => $PreferredContentType || 'text/plain', Quote => 0, Wrap => 70, + Wrap => ( $RT::MessageBoxWidth || 72 ) - 2, @_ ); @@ -346,7 +347,7 @@ sub Content { $max = length if length > $max; } - if ( $max > 76 ) { + if ( $max > $args{'Wrap'}+6 ) { # 76 ) { require Text::Wrapper; my $wrapper = new Text::Wrapper( columns => $args{'Wrap'}, diff --git a/rt/lib/RT/Transactions.pm b/rt/lib/RT/Transactions.pm index deae6ae27..23a475ac6 100755 --- a/rt/lib/RT/Transactions.pm +++ b/rt/lib/RT/Transactions.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::Transaction item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/URI/freeside.pm b/rt/lib/RT/URI/freeside.pm new file mode 100644 index 000000000..6194fd0cb --- /dev/null +++ b/rt/lib/RT/URI/freeside.pm @@ -0,0 +1,297 @@ +# BEGIN LICENSE BLOCK +# +# Copyright (c) 2004 Kristian Hoffmann <khoff@fire2wire.com> +# Based on the original RT::URI::base and RT::URI::fsck_com_rt. +# +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> +# +# (Except where explictly superceded by other copyright notices) +# +# This work is made available to you under the terms of Version 2 of +# the GNU General Public License. A copy of that license should have +# been provided with this software, but in any event can be snarfed +# from www.gnu.org. +# +# This work is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. +# +# +# END LICENSE BLOCK +package RT::URI::freeside; + +use base qw( RT::URI::base ); +use strict; +use vars qw( $IntegrationType $URL ); +use Carp qw( cluck ); + + +=head1 NAME + +RT::URI::freeside + +=head1 DESCRIPTION + +URI handler for Freeside URIs. See http://www.freeside.biz/ for more +information on Freeside. + + +=head1 Public subroutines + +=over 4 + +=item FreesideGetConfig CONFKEY + +Subroutine that returns the freeside's configuration value(s) for CONFKEY +as a scalar or list. + +=cut + +sub FreesideGetConfig { return undef; } + + +=item FreesideURL + +Returns the URL for freeside's web interface. + +=cut + +sub FreesideURL { return $URL; } + + +=item FreesideVersion + +Returns a string describing the freeside version being used. + +=cut + +sub FreesideVersion { return undef; } + + +=item smart_search + +A wrapper for the FS::cust_main::smart_search subroutine. + +=cut + +sub smart_search { return undef; } + + +=item small_custview + +A wrapper for the FS::CGI::small_custview subroutine. + +=cut + +sub small_custview { return 'Freeside integration error!</A>'; } + + +=back + +=head1 Private methods + +=over 4 + +=item _FreesideGetRecord + +Method returns a hashref of the freeside record referenced in the URI. +Must be called after ParseURI. + +=cut + +sub _FreesideGetRecord { return undef; } + + +=item _FreesideURIPrefix + +Method that returns the URI prefix for freeside URIs. + +=cut + +sub _FreesideURIPrefix { + + my $self = shift; + return($self->Scheme . '://freeside'); + +} + +=item _FreesideURILabel + +Method that returns a short string describing the customer referenced +in the URI. + +=cut + +sub _FreesideURILabel { + + my $self = shift; + + #$RT::Logger->debug("Called _FreesideURILabel()"); + + return unless (exists($self->{'fstable'}) and + exists($self->{'fspkey'})); + + my $label; + my ($table, $pkey) = ($self->{'fstable'}, $self->{'fspkey'}); + + #if ($table ne 'cust_main') { + # warn "FS::${table} not currently supported"; + # return; + #} + + my $rec = $self->_FreesideGetRecord(); + + if (ref($rec) eq 'HASH' && $table eq 'cust_main') { + my $name = $rec->{'last'} . ', ' . $rec->{'first'}; + $name = $rec->{'company'} . " ($name)" if $rec->{'company'}; + $label = "$pkey: $name"; + } elsif ( $table eq 'cust_svc' && ref($rec) && $rec->{'_object'} ) { + #Internal only + my($l,$v) = $rec->{'_object'}->label; + $label = "$l: $v"; + } else { + $label = "$pkey: $table"; + } + + if ($label and !$@) { + return($label); + } else { + return; + } + +} + +=item _FreesideURILabelLong + +Method that returns a longer string describing the customer referenced +in the URI. + +=cut + +sub _FreesideURILabelLong { + + my $self = shift; + + return $self->_FreesideURILabel(); + +} + +=back + +=head1 Public methods + +=over 4 + +=cut + +sub ParseURI { + my $self = shift; + my $uri = shift; + my ($table, $pkey); + + my $uriprefix = $self->_FreesideURIPrefix; + if ($uri =~ /^$uriprefix\/(\w+)\/(\d*)$/) { + + $table = $1; + $pkey = $2; + + unless ( $pkey ) { + cluck "bad URL $uri"; + return(undef); + } + + $self->{'scheme'} = $self->Scheme; + + } else { + return(undef); + } + + $self->{'uri'} = "${uriprefix}/${table}/${pkey}"; + $self->{'fstable'} = $table; + $self->{'fspkey'} = $pkey; + + + my $url = $self->FreesideURL(); + + if ($url ne '') { + $self->{'href'} = "${url}/view/${table}.cgi?${pkey}"; + } else { + $self->{'href'} = $self->{'uri'}; + } + + $self->{'uri'}; + +} + +sub Scheme { + my $self = shift; + return('freeside'); + +} + +sub HREF { + my $self = shift; + return($self->{'href'} || $self->{'uri'}); +} + +sub IsLocal { + my $self = shift; + return undef; +} + +=item AsString + +Return a "pretty" string representing the URI object. + +This is meant to be used like this: + + % $re = $uri->Resolver; + <A HREF="<% $re->HREF %>"><% $re->AsString %></A> + +=cut + +sub AsString { + my $self = shift; + my $prettystring; + if ($prettystring = $self->_FreesideURILabel) { + return $prettystring; + } else { + return $self->URI; + } +} + +=item AsStringLong + +Return a longer (HTML) string representing the URI object. + +=cut + +sub AsStringLong { + my $self = shift; + my $prettystring; + if ($prettystring = $self->_FreesideURILabelLong || $self->_FreesideURILabel){ + return $prettystring; + } else { + return $self->URI; + } +} + +$IntegrationType ||= 'Internal'; +eval "require RT::URI::freeside::${RT::URI::freeside::IntegrationType}"; +warn $@ if $@; +if ($@ && + $@ !~ qr(^Can't locate RT/URI/freeside/${RT::URI::freeside::IntegrationType}.pm)) { + die $@; +}; + +=back + +=cut + +1; diff --git a/rt/lib/RT/URI/freeside/Internal.pm b/rt/lib/RT/URI/freeside/Internal.pm new file mode 100644 index 000000000..bd7c42ccf --- /dev/null +++ b/rt/lib/RT/URI/freeside/Internal.pm @@ -0,0 +1,145 @@ +# BEGIN LICENSE BLOCK +# +# Copyright (c) 2004 Kristian Hoffmann <khoff@fire2wire.com> +# Based on the original RT::URI::base and RT::URI::fsck_com_rt. +# +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> +# +# (Except where explictly superceded by other copyright notices) +# +# This work is made available to you under the terms of Version 2 of +# the GNU General Public License. A copy of that license should have +# been provided with this software, but in any event can be snarfed +# from www.gnu.org. +# +# This work is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. +# +# +# END LICENSE BLOCK +# +use strict; +no warnings qw(redefine); + +#use vars qw($conf); + +use FS; +use FS::UID qw(dbh); +use FS::CGI qw(popurl); +use FS::UI::Web::small_custview qw(small_custview); +use FS::Conf; +use FS::Record qw(qsearchs qsearch dbdef); +use FS::cust_main; +use FS::cust_svc; + +=head1 NAME + +RT::URI::freeside::Internal + +=head1 DESCRIPTION + +Overlay for the RT::URI::freeside URI handler implementing the Internal integration type. + +See L<RT::URI::freeside> for public/private interface documentation. + +=cut + + + +sub _FreesideGetRecord { + + my $self = shift; + my ($table, $pkey) = ($self->{'fstable'}, $self->{'fspkey'}); + + $RT::Logger->debug("Called _FreesideGetRecord()"); + + #eval "use FS::$table;"; + + my $dbdef = dbdef; + unless ($dbdef) { + $RT::Logger->error("Using Internal freeside integration type, ". + "but it doesn't look like we're running under ". + "freeside's Mason handler."); + return; + } + + my $pkeyfield = $dbdef->table($table)->primary_key; + unless ($pkeyfield) { + $RT::Logger->error("No primary key for freeside table '$table'"); + return; + } + + my $fsrec = qsearchs($table, { $pkeyfield => $pkey }); + unless ($fsrec) { + $RT::Logger->error("Record with '$pkeyfield' == '$pkey' does " . + "not exist in table $table"); + return; + } + + return { $fsrec->hash, '_object' => $fsrec }; + +} + +sub FreesideVersion { + + return $FS::VERSION; + +} + +sub FreesideGetConfig { + + #$conf = new FS::Conf unless ref($conf); + my $conf = new FS::Conf; + + return scalar($conf->config(@_)); + +} + +sub smart_search { #Subroutine + + return map { { $_->hash } } &FS::cust_main::smart_search(@_); + +} + +sub email_search { #Subroutine + + return map { { $_->hash } } &FS::cust_main::email_search(@_); + +} + +sub small_custview { + + return &FS::UI::Web::small_custview::small_custview(@_); + +} + +sub _FreesideURILabelLong { + + my $self = shift; + + my $table = $self->{'fstable'}; + + if ( $table eq 'cust_main' ) { + + my $rec = $self->_FreesideGetRecord(); + return small_custview( $rec->{'_object'}, + scalar(FS::Conf->new->config('countrydefault')), + 1 #nobalance + ); + + } else { + + return $self->_FreesideURILabel(); + + } + +} + +1; diff --git a/rt/lib/RT/URI/freeside/XMLRPC.pm b/rt/lib/RT/URI/freeside/XMLRPC.pm new file mode 100644 index 000000000..916c20d7b --- /dev/null +++ b/rt/lib/RT/URI/freeside/XMLRPC.pm @@ -0,0 +1,122 @@ +# BEGIN LICENSE BLOCK +# +# Copyright (c) 2004 Kristian Hoffmann <khoff@fire2wire.com> +# Based on the original RT::URI::base and RT::URI::fsck_com_rt. +# +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> +# +# (Except where explictly superceded by other copyright notices) +# +# This work is made available to you under the terms of Version 2 of +# the GNU General Public License. A copy of that license should have +# been provided with this software, but in any event can be snarfed +# from www.gnu.org. +# +# This work is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. +# +# +# END LICENSE BLOCK + +use strict; +no warnings qw(redefine); + +use vars qw($XMLRPC_URL $_FS_VERSION); + +use Frontier::Client; + +=head1 NAME + +RT::URI::freeside::XMLRPC + +=head1 DESCRIPTION + +Overlay for the RT::URI::freeside URI handler implementing the XMLRPC integration type. + +See L<RT::URI::freeside> for public/private interface documentation. + +=cut + + +sub _XMLRPCRequest { #Subroutine + + my $method = shift; + my @args = @_; + + my $result; + eval { + my $server = new Frontier::Client ( url => $XMLRPC_URL ); + $result = $server->call($method, @args); + }; + + if (not $@ and ref($result) eq 'ARRAY') { + return (scalar(@$result) == 1) ? @$result[0] : @$result; + } else { + $RT::Logger->debug("Freeside XMLRPC: " . $result || $@); + return (); + } + +} + +sub _FreesideGetRecord { + + my $self = shift; + my ($table, $pkey) = ($self->{'fstable'}, $self->{'fspkey'}); + my $record; + + $RT::Logger->debug("Called XMLRPC::_FreesideGetRecord()"); + + #FIXME: Need a better way to get primary keys. + # Maybe create a method for it and cache them like version? + my %table_pkeys = ( + cust_main => 'custnum', + ); + + my $method = 'Record.qsearchs'; + my @args = ($table, { $table_pkeys{$table} => $pkey }); + my ($record) = &_XMLRPCRequest($method, @args); + + return $record; + +} + + +sub FreesideGetConfig { + + return _XMLRPCRequest('Conf.config', @_); + +} + + +sub FreesideVersion { + + return $_FS_VERSION if ($_FS_VERSION =~ /^\d+\.\d+\.\d+/); + + $RT::Logger->debug("Requesting freeside version..."); + ($_FS_VERSION) = &_XMLRPCRequest('version'); + $RT::Logger->debug("Cached freeside version: ${_FS_VERSION}"); + + return $_FS_VERSION; + +} + +sub smart_search { #Subroutine + + return _XMLRPCRequest('cust_main.smart_search', @_); + +} + +sub small_custview { + + return _XMLRPCRequest('Web.UI.small_custview.small_custview', @_); + +} + +1; diff --git a/rt/lib/RT/User.pm b/rt/lib/RT/User.pm index 6919cbafa..cbc10f5b4 100755 --- a/rt/lib/RT/User.pm +++ b/rt/lib/RT/User.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -86,7 +61,7 @@ sub _Init { -=head2 Create PARAMHASH +=item Create PARAMHASH Create takes a hash of values and creates a row in the database: @@ -195,7 +170,7 @@ sub Create { -=head2 id +=item id Returns the current value of id. (In the database, id is stored as int(11).) @@ -204,14 +179,14 @@ Returns the current value of id. =cut -=head2 Name +=item Name Returns the current value of Name. (In the database, Name is stored as varchar(200).) -=head2 SetName VALUE +=item SetName VALUE Set Name to VALUE. @@ -222,14 +197,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Password +=item Password Returns the current value of Password. (In the database, Password is stored as varchar(40).) -=head2 SetPassword VALUE +=item SetPassword VALUE Set Password to VALUE. @@ -240,14 +215,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Comments +=item Comments Returns the current value of Comments. (In the database, Comments is stored as blob.) -=head2 SetComments VALUE +=item SetComments VALUE Set Comments to VALUE. @@ -258,14 +233,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Signature +=item Signature Returns the current value of Signature. (In the database, Signature is stored as blob.) -=head2 SetSignature VALUE +=item SetSignature VALUE Set Signature to VALUE. @@ -276,14 +251,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 EmailAddress +=item EmailAddress Returns the current value of EmailAddress. (In the database, EmailAddress is stored as varchar(120).) -=head2 SetEmailAddress VALUE +=item SetEmailAddress VALUE Set EmailAddress to VALUE. @@ -294,14 +269,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 FreeformContactInfo +=item FreeformContactInfo Returns the current value of FreeformContactInfo. (In the database, FreeformContactInfo is stored as blob.) -=head2 SetFreeformContactInfo VALUE +=item SetFreeformContactInfo VALUE Set FreeformContactInfo to VALUE. @@ -312,14 +287,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Organization +=item Organization Returns the current value of Organization. (In the database, Organization is stored as varchar(200).) -=head2 SetOrganization VALUE +=item SetOrganization VALUE Set Organization to VALUE. @@ -330,14 +305,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 RealName +=item RealName Returns the current value of RealName. (In the database, RealName is stored as varchar(120).) -=head2 SetRealName VALUE +=item SetRealName VALUE Set RealName to VALUE. @@ -348,14 +323,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 NickName +=item NickName Returns the current value of NickName. (In the database, NickName is stored as varchar(16).) -=head2 SetNickName VALUE +=item SetNickName VALUE Set NickName to VALUE. @@ -366,14 +341,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Lang +=item Lang Returns the current value of Lang. (In the database, Lang is stored as varchar(16).) -=head2 SetLang VALUE +=item SetLang VALUE Set Lang to VALUE. @@ -384,14 +359,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 EmailEncoding +=item EmailEncoding Returns the current value of EmailEncoding. (In the database, EmailEncoding is stored as varchar(16).) -=head2 SetEmailEncoding VALUE +=item SetEmailEncoding VALUE Set EmailEncoding to VALUE. @@ -402,14 +377,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 WebEncoding +=item WebEncoding Returns the current value of WebEncoding. (In the database, WebEncoding is stored as varchar(16).) -=head2 SetWebEncoding VALUE +=item SetWebEncoding VALUE Set WebEncoding to VALUE. @@ -420,14 +395,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ExternalContactInfoId +=item ExternalContactInfoId Returns the current value of ExternalContactInfoId. (In the database, ExternalContactInfoId is stored as varchar(100).) -=head2 SetExternalContactInfoId VALUE +=item SetExternalContactInfoId VALUE Set ExternalContactInfoId to VALUE. @@ -438,14 +413,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ContactInfoSystem +=item ContactInfoSystem Returns the current value of ContactInfoSystem. (In the database, ContactInfoSystem is stored as varchar(30).) -=head2 SetContactInfoSystem VALUE +=item SetContactInfoSystem VALUE Set ContactInfoSystem to VALUE. @@ -456,14 +431,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 ExternalAuthId +=item ExternalAuthId Returns the current value of ExternalAuthId. (In the database, ExternalAuthId is stored as varchar(100).) -=head2 SetExternalAuthId VALUE +=item SetExternalAuthId VALUE Set ExternalAuthId to VALUE. @@ -474,14 +449,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 AuthSystem +=item AuthSystem Returns the current value of AuthSystem. (In the database, AuthSystem is stored as varchar(30).) -=head2 SetAuthSystem VALUE +=item SetAuthSystem VALUE Set AuthSystem to VALUE. @@ -492,14 +467,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Gecos +=item Gecos Returns the current value of Gecos. (In the database, Gecos is stored as varchar(16).) -=head2 SetGecos VALUE +=item SetGecos VALUE Set Gecos to VALUE. @@ -510,14 +485,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 HomePhone +=item HomePhone Returns the current value of HomePhone. (In the database, HomePhone is stored as varchar(30).) -=head2 SetHomePhone VALUE +=item SetHomePhone VALUE Set HomePhone to VALUE. @@ -528,14 +503,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 WorkPhone +=item WorkPhone Returns the current value of WorkPhone. (In the database, WorkPhone is stored as varchar(30).) -=head2 SetWorkPhone VALUE +=item SetWorkPhone VALUE Set WorkPhone to VALUE. @@ -546,14 +521,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 MobilePhone +=item MobilePhone Returns the current value of MobilePhone. (In the database, MobilePhone is stored as varchar(30).) -=head2 SetMobilePhone VALUE +=item SetMobilePhone VALUE Set MobilePhone to VALUE. @@ -564,14 +539,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 PagerPhone +=item PagerPhone Returns the current value of PagerPhone. (In the database, PagerPhone is stored as varchar(30).) -=head2 SetPagerPhone VALUE +=item SetPagerPhone VALUE Set PagerPhone to VALUE. @@ -582,14 +557,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Address1 +=item Address1 Returns the current value of Address1. (In the database, Address1 is stored as varchar(200).) -=head2 SetAddress1 VALUE +=item SetAddress1 VALUE Set Address1 to VALUE. @@ -600,14 +575,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Address2 +=item Address2 Returns the current value of Address2. (In the database, Address2 is stored as varchar(200).) -=head2 SetAddress2 VALUE +=item SetAddress2 VALUE Set Address2 to VALUE. @@ -618,14 +593,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 City +=item City Returns the current value of City. (In the database, City is stored as varchar(100).) -=head2 SetCity VALUE +=item SetCity VALUE Set City to VALUE. @@ -636,14 +611,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 State +=item State Returns the current value of State. (In the database, State is stored as varchar(100).) -=head2 SetState VALUE +=item SetState VALUE Set State to VALUE. @@ -654,14 +629,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Zip +=item Zip Returns the current value of Zip. (In the database, Zip is stored as varchar(16).) -=head2 SetZip VALUE +=item SetZip VALUE Set Zip to VALUE. @@ -672,14 +647,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Country +=item Country Returns the current value of Country. (In the database, Country is stored as varchar(50).) -=head2 SetCountry VALUE +=item SetCountry VALUE Set Country to VALUE. @@ -690,14 +665,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Timezone +=item Timezone Returns the current value of Timezone. (In the database, Timezone is stored as varchar(50).) -=head2 SetTimezone VALUE +=item SetTimezone VALUE Set Timezone to VALUE. @@ -708,14 +683,14 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 PGPKey +=item PGPKey Returns the current value of PGPKey. (In the database, PGPKey is stored as text.) -=head2 SetPGPKey VALUE +=item SetPGPKey VALUE Set PGPKey to VALUE. @@ -726,7 +701,7 @@ Returns (1, 'Status message') on success and (0, 'Error Message') on failure. =cut -=head2 Creator +=item Creator Returns the current value of Creator. (In the database, Creator is stored as int(11).) @@ -735,7 +710,7 @@ Returns the current value of Creator. =cut -=head2 Created +=item Created Returns the current value of Created. (In the database, Created is stored as datetime.) @@ -744,7 +719,7 @@ Returns the current value of Created. =cut -=head2 LastUpdatedBy +=item LastUpdatedBy Returns the current value of LastUpdatedBy. (In the database, LastUpdatedBy is stored as int(11).) @@ -753,7 +728,7 @@ Returns the current value of LastUpdatedBy. =cut -=head2 LastUpdated +=item LastUpdated Returns the current value of LastUpdated. (In the database, LastUpdated is stored as datetime.) @@ -763,77 +738,77 @@ Returns the current value of LastUpdated. -sub _CoreAccessible { +sub _ClassAccessible { { id => - {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, + {read => 1, type => 'int(11)', default => ''}, Name => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, + {read => 1, write => 1, type => 'varchar(200)', default => ''}, Password => - {read => 1, write => 1, sql_type => 12, length => 40, is_blob => 0, is_numeric => 0, type => 'varchar(40)', default => ''}, + {read => 1, write => 1, type => 'varchar(40)', default => ''}, Comments => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'blob', default => ''}, + {read => 1, write => 1, type => 'blob', default => ''}, Signature => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'blob', default => ''}, + {read => 1, write => 1, type => 'blob', default => ''}, EmailAddress => - {read => 1, write => 1, sql_type => 12, length => 120, is_blob => 0, is_numeric => 0, type => 'varchar(120)', default => ''}, + {read => 1, write => 1, type => 'varchar(120)', default => ''}, FreeformContactInfo => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'blob', default => ''}, + {read => 1, write => 1, type => 'blob', default => ''}, Organization => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, + {read => 1, write => 1, type => 'varchar(200)', default => ''}, RealName => - {read => 1, write => 1, sql_type => 12, length => 120, is_blob => 0, is_numeric => 0, type => 'varchar(120)', default => ''}, + {read => 1, write => 1, type => 'varchar(120)', default => ''}, NickName => - {read => 1, write => 1, sql_type => 12, length => 16, is_blob => 0, is_numeric => 0, type => 'varchar(16)', default => ''}, + {read => 1, write => 1, type => 'varchar(16)', default => ''}, Lang => - {read => 1, write => 1, sql_type => 12, length => 16, is_blob => 0, is_numeric => 0, type => 'varchar(16)', default => ''}, + {read => 1, write => 1, type => 'varchar(16)', default => ''}, EmailEncoding => - {read => 1, write => 1, sql_type => 12, length => 16, is_blob => 0, is_numeric => 0, type => 'varchar(16)', default => ''}, + {read => 1, write => 1, type => 'varchar(16)', default => ''}, WebEncoding => - {read => 1, write => 1, sql_type => 12, length => 16, is_blob => 0, is_numeric => 0, type => 'varchar(16)', default => ''}, + {read => 1, write => 1, type => 'varchar(16)', default => ''}, ExternalContactInfoId => - {read => 1, write => 1, sql_type => 12, length => 100, is_blob => 0, is_numeric => 0, type => 'varchar(100)', default => ''}, + {read => 1, write => 1, type => 'varchar(100)', default => ''}, ContactInfoSystem => - {read => 1, write => 1, sql_type => 12, length => 30, is_blob => 0, is_numeric => 0, type => 'varchar(30)', default => ''}, + {read => 1, write => 1, type => 'varchar(30)', default => ''}, ExternalAuthId => - {read => 1, write => 1, sql_type => 12, length => 100, is_blob => 0, is_numeric => 0, type => 'varchar(100)', default => ''}, + {read => 1, write => 1, type => 'varchar(100)', default => ''}, AuthSystem => - {read => 1, write => 1, sql_type => 12, length => 30, is_blob => 0, is_numeric => 0, type => 'varchar(30)', default => ''}, + {read => 1, write => 1, type => 'varchar(30)', default => ''}, Gecos => - {read => 1, write => 1, sql_type => 12, length => 16, is_blob => 0, is_numeric => 0, type => 'varchar(16)', default => ''}, + {read => 1, write => 1, type => 'varchar(16)', default => ''}, HomePhone => - {read => 1, write => 1, sql_type => 12, length => 30, is_blob => 0, is_numeric => 0, type => 'varchar(30)', default => ''}, + {read => 1, write => 1, type => 'varchar(30)', default => ''}, WorkPhone => - {read => 1, write => 1, sql_type => 12, length => 30, is_blob => 0, is_numeric => 0, type => 'varchar(30)', default => ''}, + {read => 1, write => 1, type => 'varchar(30)', default => ''}, MobilePhone => - {read => 1, write => 1, sql_type => 12, length => 30, is_blob => 0, is_numeric => 0, type => 'varchar(30)', default => ''}, + {read => 1, write => 1, type => 'varchar(30)', default => ''}, PagerPhone => - {read => 1, write => 1, sql_type => 12, length => 30, is_blob => 0, is_numeric => 0, type => 'varchar(30)', default => ''}, + {read => 1, write => 1, type => 'varchar(30)', default => ''}, Address1 => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, + {read => 1, write => 1, type => 'varchar(200)', default => ''}, Address2 => - {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''}, + {read => 1, write => 1, type => 'varchar(200)', default => ''}, City => - {read => 1, write => 1, sql_type => 12, length => 100, is_blob => 0, is_numeric => 0, type => 'varchar(100)', default => ''}, + {read => 1, write => 1, type => 'varchar(100)', default => ''}, State => - {read => 1, write => 1, sql_type => 12, length => 100, is_blob => 0, is_numeric => 0, type => 'varchar(100)', default => ''}, + {read => 1, write => 1, type => 'varchar(100)', default => ''}, Zip => - {read => 1, write => 1, sql_type => 12, length => 16, is_blob => 0, is_numeric => 0, type => 'varchar(16)', default => ''}, + {read => 1, write => 1, type => 'varchar(16)', default => ''}, Country => - {read => 1, write => 1, sql_type => 12, length => 50, is_blob => 0, is_numeric => 0, type => 'varchar(50)', default => ''}, + {read => 1, write => 1, type => 'varchar(50)', default => ''}, Timezone => - {read => 1, write => 1, sql_type => 12, length => 50, is_blob => 0, is_numeric => 0, type => 'varchar(50)', default => ''}, + {read => 1, write => 1, type => 'varchar(50)', default => ''}, PGPKey => - {read => 1, write => 1, sql_type => -4, length => 0, is_blob => 1, is_numeric => 0, type => 'text', default => ''}, + {read => 1, write => 1, type => 'text', default => ''}, Creator => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, Created => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, LastUpdatedBy => - {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, + {read => 1, auto => 1, type => 'int(11)', default => '0'}, LastUpdated => - {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, + {read => 1, auto => 1, type => 'datetime', default => ''}, } }; @@ -865,7 +840,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/User_Overlay.pm b/rt/lib/RT/User_Overlay.pm index 8582d784e..0f2856816 100644 --- a/rt/lib/RT/User_Overlay.pm +++ b/rt/lib/RT/User_Overlay.pm @@ -916,42 +916,6 @@ sub _GenerateRandomNextChar { return ($i); } -sub SafeSetPassword { - my $self = shift; - my %args = ( - Current => undef, - New => undef, - Confirmation => undef, - @_, - ); - return (1) unless defined $args{'New'} && length $args{'New'}; - - my %cond = $self->CurrentUserRequireToSetPassword; - - unless ( $cond{'CanSet'} ) { - return (0, $self->loc('You can not set password.') .' '. $cond{'Reason'} ); - } - - my $error = ''; - if ( $cond{'RequireCurrent'} && !$self->CurrentUser->IsPassword($args{'Current'}) ) { - if ( defined $args{'Current'} && length $args{'Current'} ) { - $error = $self->loc("Please enter your current password correctly."); - } - else { - $error = $self->loc("Please enter your current password."); - } - } elsif ( $args{'New'} ne $args{'Confirmation'} ) { - $error = $self->loc("Passwords do not match."); - } - - if ( $error ) { - $error .= ' '. $self->loc('Password has not been set.'); - return (0, $error); - } - - return $self->SetPassword( $args{'New'} ); -} - =head3 SetPassword Takes a string. Checks the string's length and sets this user's password @@ -1070,7 +1034,7 @@ sub IsPassword { } # if it's a historical password we say ok. - if ($self->__Value('Password') eq crypt(encode_utf8($value), $self->__Value('Password')) + if ($self->__Value('Password') eq crypt($value, $self->__Value('Password')) or $self->_GeneratePasswordBase64($value) eq $self->__Value('Password')) { # ...but upgrade the legacy password inplace. @@ -1083,35 +1047,6 @@ sub IsPassword { return (undef); } -sub CurrentUserRequireToSetPassword { - my $self = shift; - - my %res = ( - CanSet => 1, - Reason => '', - RequireCurrent => 1, - ); - - if ( RT->Config->Get('WebExternalAuth') - && !RT->Config->Get('WebFallbackToInternalAuth') - ) { - $res{'CanSet'} = 0; - $res{'Reason'} = $self->loc("External authentication enabled."); - } - elsif ( !$self->CurrentUser->HasPassword ) { - if ( $self->CurrentUser->id == ($self->id||0) ) { - # don't require current password if user has no - $res{'RequireCurrent'} = 0; - } - else { - $res{'CanSet'} = 0; - $res{'Reason'} = $self->loc("Your password is not set."); - } - } - - return %res; -} - =head3 AuthToken Returns an authentication string associated with the user. This @@ -1331,6 +1266,268 @@ sub OwnGroups { return $groups; } +# }}} + +# {{{ Links + +#much false laziness w/Ticket_Overlay.pm. now with RT 3.8! + +# A helper table for links mapping to make it easier +# to build and parse links between tickets + +use vars '%LINKDIRMAP'; + +%LINKDIRMAP = ( + MemberOf => { Base => 'MemberOf', + Target => 'HasMember', }, + RefersTo => { Base => 'RefersTo', + Target => 'ReferredToBy', }, + DependsOn => { Base => 'DependsOn', + Target => 'DependedOnBy', }, + MergedInto => { Base => 'MergedInto', + Target => 'MergedInto', }, + +); + +sub LINKDIRMAP { return \%LINKDIRMAP } + +#sub _Links { +# my $self = shift; +# +# #TODO: Field isn't the right thing here. but I ahave no idea what mnemonic --- +# #tobias meant by $f +# my $field = shift; +# my $type = shift || ""; +# +# unless ( $self->{"$field$type"} ) { +# $self->{"$field$type"} = new RT::Links( $self->CurrentUser ); +# if ( $self->CurrentUserHasRight('ShowTicket') ) { +# # Maybe this ticket is a merged ticket +# my $Tickets = new RT::Tickets( $self->CurrentUser ); +# # at least to myself +# $self->{"$field$type"}->Limit( FIELD => $field, +# VALUE => $self->URI, +# ENTRYAGGREGATOR => 'OR' ); +# $Tickets->Limit( FIELD => 'EffectiveId', +# VALUE => $self->EffectiveId ); +# while (my $Ticket = $Tickets->Next) { +# $self->{"$field$type"}->Limit( FIELD => $field, +# VALUE => $Ticket->URI, +# ENTRYAGGREGATOR => 'OR' ); +# } +# $self->{"$field$type"}->Limit( FIELD => 'Type', +# VALUE => $type ) +# if ($type); +# } +# } +# return ( $self->{"$field$type"} ); +#} + +=head2 DeleteLink + +Delete a link. takes a paramhash of Base, Target and Type. +Either Base or Target must be null. The null value will +be replaced with this ticket\'s id + +=cut + +sub DeleteLink { + my $self = shift; + my %args = ( + Base => undef, + Target => undef, + Type => undef, + @_ + ); + + unless ( $args{'Target'} || $args{'Base'} ) { + $RT::Logger->error("Base or Target must be specified\n"); + return ( 0, $self->loc('Either base or target must be specified') ); + } + + #check acls + my $right = 0; + $right++ if $self->CurrentUserHasRight('AdminUsers'); + if ( !$right && $RT::StrictLinkACL ) { + return ( 0, $self->loc("Permission Denied") ); + } + +# # If the other URI is an RT::Ticket, we want to make sure the user +# # can modify it too... +# my ($status, $msg, $other_ticket) = $self->__GetTicketFromURI( URI => $args{'Target'} || $args{'Base'} ); +# return (0, $msg) unless $status; +# if ( !$other_ticket || $other_ticket->CurrentUserHasRight('ModifyTicket') ) { +# $right++; +# } +# if ( ( !$RT::StrictLinkACL && $right == 0 ) || +# ( $RT::StrictLinkACL && $right < 2 ) ) +# { +# return ( 0, $self->loc("Permission Denied") ); +# } + + my ($val, $Msg) = $self->SUPER::_DeleteLink(%args); + + if ( !$val ) { + $RT::Logger->debug("Couldn't find that link\n"); + return ( 0, $Msg ); + } + + my ($direction, $remote_link); + + if ( $args{'Base'} ) { + $remote_link = $args{'Base'}; + $direction = 'Target'; + } + elsif ( $args{'Target'} ) { + $remote_link = $args{'Target'}; + $direction='Base'; + } + + if ( $args{'Silent'} ) { + return ( $val, $Msg ); + } + else { + my $remote_uri = RT::URI->new( $self->CurrentUser ); + $remote_uri->FromURI( $remote_link ); + + my ( $Trans, $Msg, $TransObj ) = $self->_NewTransaction( + Type => 'DeleteLink', + Field => $LINKDIRMAP{$args{'Type'}}->{$direction}, + OldValue => $remote_uri->URI || $remote_link, + TimeTaken => 0 + ); + + if ( $remote_uri->IsLocal ) { + + my $OtherObj = $remote_uri->Object; + my ( $val, $Msg ) = $OtherObj->_NewTransaction(Type => 'DeleteLink', + Field => $direction eq 'Target' ? $LINKDIRMAP{$args{'Type'}}->{Base} + : $LINKDIRMAP{$args{'Type'}}->{Target}, + OldValue => $self->URI, + ActivateScrips => ! $RT::LinkTransactionsRun1Scrip, + TimeTaken => 0 ); + } + + return ( $Trans, $Msg ); + } +} + +sub AddLink { + my $self = shift; + my %args = ( Target => '', + Base => '', + Type => '', + Silent => undef, + @_ ); + + unless ( $args{'Target'} || $args{'Base'} ) { + $RT::Logger->error("Base or Target must be specified\n"); + return ( 0, $self->loc('Either base or target must be specified') ); + } + + my $right = 0; + $right++ if $self->CurrentUserHasRight('AdminUsers'); + if ( !$right && $RT::StrictLinkACL ) { + return ( 0, $self->loc("Permission Denied") ); + } + +# # If the other URI is an RT::Ticket, we want to make sure the user +# # can modify it too... +# my ($status, $msg, $other_ticket) = $self->__GetTicketFromURI( URI => $args{'Target'} || $args{'Base'} ); +# return (0, $msg) unless $status; +# if ( !$other_ticket || $other_ticket->CurrentUserHasRight('ModifyTicket') ) { +# $right++; +# } +# if ( ( !$RT::StrictLinkACL && $right == 0 ) || +# ( $RT::StrictLinkACL && $right < 2 ) ) +# { +# return ( 0, $self->loc("Permission Denied") ); +# } + + return $self->_AddLink(%args); +} + +#sub __GetTicketFromURI { +# my $self = shift; +# my %args = ( URI => '', @_ ); +# +# # If the other URI is an RT::Ticket, we want to make sure the user +# # can modify it too... +# my $uri_obj = RT::URI->new( $self->CurrentUser ); +# $uri_obj->FromURI( $args{'URI'} ); +# +# unless ( $uri_obj->Resolver && $uri_obj->Scheme ) { +# my $msg = $self->loc( "Couldn't resolve '[_1]' into a URI.", $args{'URI'} ); +# $RT::Logger->warning( "$msg\n" ); +# return( 0, $msg ); +# } +# my $obj = $uri_obj->Resolver->Object; +# unless ( UNIVERSAL::isa($obj, 'RT::Ticket') && $obj->id ) { +# return (1, 'Found not a ticket', undef); +# } +# return (1, 'Found ticket', $obj); +#} + +=head2 _AddLink + +Private non-acled variant of AddLink so that links can be added during create. + +=cut + +sub _AddLink { + my $self = shift; + my %args = ( Target => '', + Base => '', + Type => '', + Silent => undef, + @_ ); + + my ($val, $msg, $exist) = $self->SUPER::_AddLink(%args); + return ($val, $msg) if !$val || $exist; + + my ($direction, $remote_link); + if ( $args{'Target'} ) { + $remote_link = $args{'Target'}; + $direction = 'Base'; + } elsif ( $args{'Base'} ) { + $remote_link = $args{'Base'}; + $direction = 'Target'; + } + + # Don't write the transaction if we're doing this on create + if ( $args{'Silent'} ) { + return ( $val, $msg ); + } + else { + my $remote_uri = RT::URI->new( $self->CurrentUser ); + $remote_uri->FromURI( $remote_link ); + + #Write the transaction + my ( $Trans, $Msg, $TransObj ) = + $self->_NewTransaction(Type => 'AddLink', + Field => $LINKDIRMAP{$args{'Type'}}->{$direction}, + NewValue => $remote_uri->URI || $remote_link, + TimeTaken => 0 ); + + if ( $remote_uri->IsLocal ) { + + my $OtherObj = $remote_uri->Object; + my ( $val, $Msg ) = $OtherObj->_NewTransaction(Type => 'AddLink', + Field => $direction eq 'Target' ? $LINKDIRMAP{$args{'Type'}}->{Base} + : $LINKDIRMAP{$args{'Type'}}->{Target}, + NewValue => $self->URI, + ActivateScrips => ! $RT::LinkTransactionsRun1Scrip, + TimeTaken => 0 ); + } + return ( $val, $Msg ); + } + +} + + + +# }}} + =head2 HasRight Shim around PrincipalObj->HasRight. See L<RT::Principal>. diff --git a/rt/lib/RT/Users.pm b/rt/lib/RT/Users.pm index 3a6eefff7..d58f69653 100755 --- a/rt/lib/RT/Users.pm +++ b/rt/lib/RT/Users.pm @@ -1,14 +1,8 @@ -# BEGIN BPS TAGGED BLOCK {{{ +# BEGIN LICENSE BLOCK # -# COPYRIGHT: +# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com> # -# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -# <jesse@bestpractical.com> -# -# (Except where explicitly superseded by other copyright notices) -# -# -# LICENSE: +# (Except where explictly superceded by other copyright notices) # # This work is made available to you under the terms of Version 2 of # the GNU General Public License. A copy of that license should have @@ -20,32 +14,13 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 or visit their web page on the internet at -# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -# +# Unless otherwise specified, all modifications, corrections or +# extensions to this work which alter its source code become the +# property of Best Practical Solutions, LLC when submitted for +# inclusion in the work. # -# CONTRIBUTION SUBMISSION POLICY: # -# (The following paragraph is not intended to limit the rights granted -# to you to modify and distribute this software under the terms of -# the GNU General Public License and is only of importance to you if -# you choose to contribute your changes and enhancements to the -# community by submitting them to Best Practical Solutions, LLC.) -# -# By intentionally submitting any modifications, corrections or -# derivatives to this work, or any other work intended for use with -# Request Tracker, to Best Practical Solutions, LLC, you confirm that -# you are the copyright holder for those contributions and you grant -# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -# royalty-free, perpetual, license to use, copy, create derivative -# works based on those contributions, and sublicense and distribute -# those contributions and any derivatives thereof. -# -# END BPS TAGGED BLOCK }}} - +# END LICENSE BLOCK # Autogenerated by DBIx::SearchBuilder factory (by <jesse@bestpractical.com>) # WARNING: THIS FILE IS AUTOGENERATED. ALL CHANGES TO THIS FILE WILL BE LOST. # @@ -89,7 +64,7 @@ sub _Init { } -=head2 NewItem +=item NewItem Returns an empty new RT::User item @@ -126,7 +101,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz These overlay files can contain new subs or subs to replace existing subs in this module. -Each of these files should begin with the line +If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line no warnings qw(redefine); diff --git a/rt/lib/RT/Users_Overlay.pm b/rt/lib/RT/Users_Overlay.pm index 4bd778376..32fb393cf 100644 --- a/rt/lib/RT/Users_Overlay.pm +++ b/rt/lib/RT/Users_Overlay.pm @@ -73,10 +73,11 @@ no warnings qw(redefine); sub _Init { my $self = shift; $self->{'table'} = 'Users'; - $self->{'primary_key'} = 'id'; - $self->{'with_disabled_column'} = 1; + $self->{'primary_key'} = 'id'; - my @result = $self->SUPER::_Init(@_); + + + my @result = $self->SUPER::_Init(@_); # By default, order by name $self->OrderBy( ALIAS => 'main', FIELD => 'Name', @@ -113,41 +114,46 @@ sub PrincipalsAlias { } -=head2 LimitToEnabled +# {{{ sub _DoSearch -Only find items that haven\'t been disabled +=head2 _DoSearch + + A subclass of DBIx::SearchBuilder::_DoSearch that makes sure that _Disabled rows never get seen unless +we're explicitly trying to see them. =cut -# XXX: should be generalized -sub LimitToEnabled { +sub _DoSearch { my $self = shift; - $self->{'handled_disabled_column'} = 1; - $self->Limit( - ALIAS => $self->PrincipalsAlias, - FIELD => 'Disabled', - VALUE => '0', - ); + #unless we really want to find disabled rows, make sure we\'re only finding enabled ones. + unless ( $self->{'find_disabled_rows'} ) { + $self->LimitToEnabled(); + } + return ( $self->SUPER::_DoSearch(@_) ); + } -=head2 LimitToDeleted +# }}} +# {{{ sub LimitToEnabled + +=head2 LimitToEnabled -Only find items that have been deleted. +Only find items that haven\'t been disabled =cut -sub LimitToDeleted { +# XXX: should be generalized +sub LimitToEnabled { my $self = shift; - - $self->{'handled_disabled_column'} = $self->{'find_disabled_rows'} = 1; - $self->Limit( - ALIAS => $self->PrincipalsAlias, - FIELD => 'Disabled', - VALUE => 1, - ); + + $self->Limit( ALIAS => $self->PrincipalsAlias, + FIELD => 'Disabled', + VALUE => '0', + OPERATOR => '=' ); } +# }}} # {{{ LimitToEmail @@ -372,17 +378,17 @@ sub WhoHaveRight { return (undef); } - my $from_role = $self->Clone; - $from_role->WhoHaveRoleRight( %args ); + my @from_role = $self->Clone->_WhoHaveRoleRightSplitted( %args ); my $from_group = $self->Clone; $from_group->WhoHaveGroupRight( %args ); #XXX: DIRTY HACK + use DBIx::SearchBuilder 1.50; #no version on ::Union :( use DBIx::SearchBuilder::Union; my $union = new DBIx::SearchBuilder::Union; + $union->add( $_ ) foreach @from_role; $union->add( $from_group ); - $union->add( $from_role ); %$self = %$union; bless $self, ref($union); @@ -404,14 +410,57 @@ sub WhoHaveRoleRight @_ ); + my $groups = $self->_JoinGroups( %args ); + my $acl = $self->_JoinACL( %args ); + + $self->Limit( ALIAS => $acl, + FIELD => 'PrincipalType', + VALUE => "$groups.Type", + QUOTEVALUE => 0, + ); + + # no system user + $self->Limit( ALIAS => $self->PrincipalsAlias, + FIELD => 'id', + OPERATOR => '!=', + VALUE => $RT::SystemUser->id + ); + my @objects = $self->_GetEquivObjects( %args ); - my @roles = RT::Principal->RolesWithRight( %args ); - unless ( @roles ) { - $self->_AddSubClause( "WhichRole", "(main.id = 0)" ); + unless ( @objects ) { + unless ( $args{'IncludeSystemRights'} ) { + $self->_AddSubClause( WhichObjects => "($acl.ObjectType != 'RT::System')" ); + } return; } + my ($groups_clauses, $acl_clauses) = $self->_RoleClauses( $groups, $acl, @objects ); + $self->_AddSubClause( "WhichObject", "(". join( ' OR ', @$groups_clauses ) .")" ); + $self->_AddSubClause( "WhichRole", "(". join( ' OR ', @$acl_clauses ) .")" ); + + return; +} + +sub _WhoHaveRoleRightSplitted { + my $self = shift; + my %args = ( + Right => undef, + Object => undef, + IncludeSystemRights => undef, + IncludeSuperusers => undef, + IncludeSubgroupMembers => 1, + EquivObjects => [ ], + @_ + ); + my $groups = $self->_JoinGroups( %args ); + my $acl = $self->_JoinACL( %args ); + + $self->Limit( ALIAS => $acl, + FIELD => 'PrincipalType', + VALUE => "$groups.Type", + QUOTEVALUE => 0, + ); # no system user $self->Limit( ALIAS => $self->PrincipalsAlias, @@ -420,21 +469,35 @@ sub WhoHaveRoleRight VALUE => $RT::SystemUser->id ); - $self->_AddSubClause( "WhichRole", "(". join( ' OR ', map "$groups.Type = '$_'", @roles ) .")" ); + my @objects = $self->_GetEquivObjects( %args ); + unless ( @objects ) { + unless ( $args{'IncludeSystemRights'} ) { + $self->_AddSubClause( WhichObjects => "($acl.ObjectType != 'RT::System')" ); + } + return $self; + } - my @groups_clauses = $self->_RoleClauses( $groups, @objects ); - $self->_AddSubClause( "WhichObject", "(". join( ' OR ', @groups_clauses ) .")" ) - if @groups_clauses; + my ($groups_clauses, $acl_clauses) = $self->_RoleClauses( $groups, $acl, @objects ); + $self->_AddSubClause( "WhichRole", "(". join( ' OR ', @$acl_clauses ) .")" ); + + my @res; + foreach ( @$groups_clauses ) { + my $tmp = $self->Clone; + $tmp->_AddSubClause( WhichObject => $_ ); + push @res, $tmp; + } - return; + return @res; } sub _RoleClauses { my $self = shift; my $groups = shift; + my $acl = shift; my @objects = @_; my @groups_clauses; + my @acl_clauses; foreach my $obj ( @objects ) { my $type = ref($obj)? ref($obj): $obj; my $id; @@ -446,8 +509,12 @@ sub _RoleClauses { # field to integer and drop this quotes. $role_clause .= " AND $groups.Instance = '$id'" if $id; push @groups_clauses, "($role_clause)"; + + my $object_clause = "$acl.ObjectType = '$type'"; + $object_clause .= " AND $acl.ObjectId = $id" if $id; + push @acl_clauses, "($object_clause)"; } - return @groups_clauses; + return (\@groups_clauses, \@acl_clauses); } # XXX: should be generalized |