diff options
Diffstat (limited to 'rt/lib')
114 files changed, 93021 insertions, 0 deletions
diff --git a/rt/lib/RT.pm.in b/rt/lib/RT.pm.in new file mode 100644 index 000000000..065734e2f --- /dev/null +++ b/rt/lib/RT.pm.in @@ -0,0 +1,304 @@ +# BEGIN LICENSE BLOCK +# +# Copyright (c) 1996-2002 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; +use strict; +use RT::I18N; +use RT::CurrentUser; +use RT::System; + +use vars qw($VERSION $System $SystemUser $Nobody $Handle $Logger + $CORE_CONFIG_FILE + $SITE_CONFIG_FILE + $VENDOR_CONFIG_FILE + $BasePath + $EtcPath + $VarPath + $LocalPath + $LocalEtcPath + $LocalLexiconPath + $LogDir + $MasonComponentRoot + $MasonLocalComponentRoot + $MasonDataDir + $MasonSessionDir +); + +$VERSION = '@RT_VERSION_MAJOR@.@RT_VERSION_MINOR@.@RT_VERSION_PATCH@'; +$CORE_CONFIG_FILE = "@CONFIG_FILE_PATH@/RT_Config.pm"; +$SITE_CONFIG_FILE = "@CONFIG_FILE_PATH@/RT_SiteConfig.pm"; + +$BasePath = '@RT_PATH@'; + +$EtcPath = '@RT_ETC_PATH@'; +$VarPath = '@RT_VAR_PATH@'; +$LocalPath = '@RT_LOCAL_PATH@'; +$LocalEtcPath = '@LOCAL_ETC_PATH@'; +$LocalLexiconPath = '@LOCAL_LEXICON_PATH@'; + +# $MasonComponentRoot is where your rt instance keeps its mason html files + +$MasonComponentRoot = '@MASON_HTML_PATH@'; + +# $MasonLocalComponentRoot is where your rt instance keeps its site-local +# mason html files. + +$MasonLocalComponentRoot = '@MASON_LOCAL_HTML_PATH@'; + +# $MasonDataDir Where mason keeps its datafiles + +$MasonDataDir = '@MASON_DATA_PATH@'; + +# RT needs to put session data (for preserving state between connections +# via the web interface) +$MasonSessionDir = '@MASON_SESSION_PATH@'; + + + +=head1 NAME + + RT - Request Tracker + +=head1 SYNOPSIS + + A fully featured request tracker package + +=head1 DESCRIPTION + + +=cut + +=item LoadConfig + +Load RT's config file. First, go after the core config file. +After that, try to load the vendor config. +After that, go after the site config. + +=cut + +sub LoadConfig { + local *Set = sub { $_[0] = $_[1] unless defined $_[0] }; + if ( -f "$SITE_CONFIG_FILE" ) { + require $SITE_CONFIG_FILE + || die ("Couldn't load RT config file '$SITE_CONFIG_FILE'\n$@"); + } + require $CORE_CONFIG_FILE + || die ("Couldn't load RT config file '$CORE_CONFIG_FILE'\n$@"); + RT::I18N->Init; +} + +=item Init + + Conenct to the database, set up logging. + +=cut + +sub Init { + require RT::Handle; + #Get a database connection + unless ($Handle && $Handle->dbh->ping) { + $Handle = RT::Handle->new(); + } + $Handle->Connect(); + + #RT's system user is a genuine database user. its id lives here + $SystemUser = new RT::CurrentUser(); + $SystemUser->LoadByName('RT_System'); + + #RT's "nobody user" is a genuine database user. its ID lives here. + $Nobody = new RT::CurrentUser(); + $Nobody->LoadByName('Nobody'); + + $System = RT::System->new(); + + InitLogging(); +} + +=head2 InitLogging + +Create the RT::Logger object. + +=cut +sub InitLogging { + + # We have to set the record seperator ($, man perlvar) + # or Log::Dispatch starts getting + # really pissy, as some other module we use unsets it. + + $, = ''; + use Log::Dispatch 1.6; + + unless ($RT::Logger) { + + $RT::Logger=Log::Dispatch->new(); + + if ($RT::LogToFile) { + + unless (-d $RT::LogDir && -w $RT::LogDir) { + # localizing here would be hard when we don't have a current user yet + # die $self->loc("Log directory [_1] not found or couldn't be written.\n RT can't run.", $RT::LogDir); + die ("Log directory $RT::LogDir not found or couldn't be written.\n RT can't run."); + } + + my $filename; + if ($RT::LogToFileNamed =~ m![/\\]!) { + # looks like an absolute path. + $filename = $RT::LogToFileNamed; + } + else { + $filename = "$RT::LogDir/$RT::LogToFileNamed"; + } + require Log::Dispatch::File; + + + $RT::Logger->add(Log::Dispatch::File->new + ( name=>'rtlog', + min_level=> $RT::LogToFile, + filename=> $filename, + mode=>'append', + callbacks => sub { my %p = @_; + my ($package, $filename, $line) = caller(5); + return "[".gmtime(time)."] [".$p{level}."]: $p{message} ($filename:$line)\n"} + + + + )); + } + if ($RT::LogToScreen) { + require Log::Dispatch::Screen; + $RT::Logger->add(Log::Dispatch::Screen->new + ( name => 'screen', + min_level => $RT::LogToScreen, + callbacks => sub { my %p = @_; + my ($package, $filename, $line) = caller(5); + return "[".gmtime(time)."] [".$p{level}."]: $p{message} ($filename:$line)\n" + }, + + stderr => 1 + )); + } + if ($RT::LogToSyslog) { + require Log::Dispatch::Syslog; + $RT::Logger->add(Log::Dispatch::Syslog->new + ( name => 'syslog', + ident => 'RT', + min_level => $RT::LogToSyslog, + callbacks => sub { my %p = @_; + my ($package, $filename, $line) = caller(5); + + # syswrite() cannot take utf8; turn it off here. + Encode::_utf8_off($p{message}); + + if ($p{level} eq 'debug') { + + return "$p{message}\n" } + else { + return "$p{message} ($filename:$line)\n"} + }, + + stderr => 1 + )); + } + + } + +# {{{ Signal handlers + +## This is the default handling of warnings and die'ings in the code +## (including other used modules - maybe except for errors catched by +## Mason). It will log all problems through the standard logging +## mechanism (see above). + +$SIG{__WARN__} = sub {$RT::Logger->warning($_[0])}; + +#When we call die, trap it and log->crit with the value of the die. + +$SIG{__DIE__} = sub { + unless ($^S || !defined $^S ) { + $RT::Handle->Rollback(); + $RT::Logger->crit("$_[0]"); + exit(-1); + } + else { + #Get out of here if we're in an eval + die $_[0]; + } +}; + +# }}} + +} + +# }}} + + +sub SystemUser { + return($SystemUser); +} + +sub Nobody { + return ($Nobody); +} + + +=head2 DropSetGIDPermissions + +Drops setgid permissions. + +=cut + +sub DropSetGIDPermissions { + # Now that we got the config read in, we have the database + # password and don't need to be setgid + # make the effective group the real group + $) = $(; +} + + +=head1 SYNOPSIS + +=head1 BUGS + +=head1 SEE ALSO + + +=begin testing + + +ok ($RT::Nobody->Name() eq 'Nobody', "Nobody is nobody"); +ok ($RT::Nobody->Name() ne 'root', "Nobody isn't named root"); +ok ($RT::SystemUser->Name() eq 'RT_System', "The system user is RT_System"); +ok ($RT::SystemUser->Name() ne 'noname', "The system user isn't noname"); + + +=end testing + +=cut + +eval "require RT_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT_Local.pm}); + +1; diff --git a/rt/lib/RT/ACE_Overlay.pm b/rt/lib/RT/ACE_Overlay.pm new file mode 100644 index 000000000..65e5a9c45 --- /dev/null +++ b/rt/lib/RT/ACE_Overlay.pm @@ -0,0 +1,907 @@ +# 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. +# +# 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 +=head1 SYNOPSIS + + use RT::ACE; + my $ace = new RT::ACE($CurrentUser); + + +=head1 DESCRIPTION + + + +=head1 METHODS + +=begin testing + +ok(require RT::ACE); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); +use RT::Principals; +use RT::Queues; +use RT::Groups; + +use vars qw ( + %LOWERCASERIGHTNAMES + %OBJECT_TYPES + %TICKET_METAPRINCIPALS +); + + +# {{{ Descriptions of rights + +=head1 Rights + +# Queue rights are the sort of queue rights that can only be granted +# to real people or groups + + +=begin testing + +my $Queue = RT::Queue->new($RT::SystemUser); + +is ($Queue->AvailableRights->{'DeleteTicket'} , 'Delete tickets', "Found the delete ticket right"); +is ($RT::System->AvailableRights->{'SuperUser'}, 'Do anything and everything', "Found the superuser right"); + + +=end testing + +=cut + + + + +# }}} + +# {{{ Descriptions of principals + +%TICKET_METAPRINCIPALS = ( + Owner => 'The owner of a ticket', # loc_pair + Requestor => 'The requestor of a ticket', # loc_pair + Cc => 'The CC of a ticket', # loc_pair + AdminCc => 'The administrative CC of a ticket', # loc_pair +); + +# }}} + + +# {{{ sub LoadByValues + +=head2 LoadByValues PARAMHASH + +Load an ACE by specifying a paramhash with the following fields: + + PrincipalId => undef, + PrincipalType => undef, + RightName => undef, + + And either: + + Object => undef, + + OR + + ObjectType => undef, + ObjectId => undef + +=cut + +sub LoadByValues { + my $self = shift; + my %args = ( PrincipalId => undef, + PrincipalType => undef, + RightName => undef, + Object => undef, + ObjectId => undef, + ObjectType => undef, + @_ ); + + my $princ_obj; + ( $princ_obj, $args{'PrincipalType'} ) = + $self->_CanonicalizePrincipal( $args{'PrincipalId'}, + $args{'PrincipalType'} ); + + unless ( $princ_obj->id ) { + return ( 0, + $self->loc( 'Principal [_1] not found.', $args{'PrincipalId'} ) + ); + } + + my ($object_type, $object_id); + + if ($args{'Object'} && UNIVERSAL::can($args{'Object'},'id')) { + $object_type = ref($args{'Object'}); + $object_id = $args{'Object'}->id; + } elsif ($args{'ObjectId'} || $args{'ObjectType'}) { + $object_type = $args{'ObjectType'}; + $object_id = $args{'ObjectId'}; + } else { + return ( 0, $self->loc("System error. Right not granted.") ); + } + + $self->LoadByCols( PrincipalId => $princ_obj->Id, + PrincipalType => $args{'PrincipalType'}, + RightName => $args{'RightName'}, + ObjectType => $object_type, + ObjectId => $object_id); + + #If we couldn't load it. + unless ( $self->Id ) { + return ( 0, $self->loc("ACE not found") ); + } + + # if we could + return ( $self->Id, $self->loc("Right Loaded") ); + +} + +# }}} + +# {{{ sub Create + +=head2 Create <PARAMS> + +PARAMS is a parameter hash with the following elements: + + PrincipalId => The id of an RT::Principal object + PrincipalType => "User" "Group" or any Role type + RightName => the name of a right. in any case + DelegatedBy => The Principal->Id of the user delegating the right + DelegatedFrom => The id of the ACE which this new ACE is delegated from + + + Either: + + Object => An object to create rights for. ususally, an RT::Queue or RT::Group + This should always be a DBIx::SearchBuilder::Record subclass + + OR + + ObjectType => the type of the object in question (ref ($object)) + ObjectId => the id of the object in question $object->Id + +=cut + +sub Create { + my $self = shift; + my %args = ( PrincipalId => undef, + PrincipalType => undef, + RightName => undef, + Object => $RT::System, + @_ ); + + # {{{ Validate the principal + my $princ_obj; + ( $princ_obj, $args{'PrincipalType'} ) = + $self->_CanonicalizePrincipal( $args{'PrincipalId'}, + $args{'PrincipalType'} ); + + unless ( $princ_obj->id ) { + return ( 0, + $self->loc( 'Principal [_1] not found.', $args{'PrincipalId'} ) + ); + } + + # }}} + + + if ($args{'Object'} && ($args{'ObjectId'} || $args{'ObjectType'})) { + use Carp; + $RT::Logger->crit(Carp::cluck("ACE::Create called with an ObjectType or an ObjectId")); + } + + + + unless ($args{'Object'} && UNIVERSAL::can($args{'Object'},'id')) { + return ( 0, $self->loc("System error. Right not granted.") ); + } + # {{{ Check the ACL + + if (ref( $args{'Object'}) eq 'RT::Group' ) { + unless ( $self->CurrentUser->HasRight( Object => $args{'Object'}, + Right => 'AdminGroup' ) + ) { + return ( 0, $self->loc('Permission Denied') ); + } + } + + else { + unless ( $self->CurrentUser->HasRight( Object => $args{'Object'}, Right => 'ModifyACL' )) { + return ( 0, $self->loc('Permission Denied') ); + } + } + # }}} + + # {{{ Canonicalize and check the right name + unless ( $args{'RightName'} ) { + return ( 0, $self->loc('Invalid right') ); + } + + $args{'RightName'} = $self->CanonicalizeRightName( $args{'RightName'} ); + + #check if it's a valid RightName + if ( ref ($args{'Object'} eq 'RT::Queue' )) { + unless ( exists $args{'Object'}->AvailableRights->{ $args{'RightName'} } ) { + $RT::Logger->warning("Couldn't validate right name". $args{'RightName'}); + return ( 0, $self->loc('Invalid right') ); + } + } + elsif ( ref ($args{'Object'} eq 'RT::Group' )) { + unless ( exists $args{'Object'}->AvailableRights->{ $args{'RightName'} } ) { + $RT::Logger->warning("Couldn't validate group right name". $args{'RightName'}); + return ( 0, $self->loc('Invalid right') ); + } + } + elsif ( ref ($args{'Object'} eq 'RT::System' )) { + my $q = RT::Queue->new($self->CurrentUser); + my $g = RT::Group->new($self->CurrentUser); + + unless (( exists $g->AvailableRights->{ $args{'RightName'} } ) + || ( exists $g->AvailableRights->{ $args{'RightName'} } ) + || ( exists $RT::System->AvailableRights->{ $args{'RightName'} } ) ) { + $RT::Logger->warning("Couldn't validate system right name - ". $args{'RightName'}); + return ( 0, $self->loc('Invalid right') ); + } + } + + unless ( $args{'RightName'} ) { + return ( 0, $self->loc('Invalid right') ); + } + # }}} + + # Make sure the right doesn't already exist. + $self->LoadByCols( PrincipalId => $princ_obj->id, + PrincipalType => $args{'PrincipalType'}, + RightName => $args{'RightName'}, + ObjectType => ref($args{'Object'}), + ObjectId => $args{'Object'}->id, + DelegatedBy => 0, + DelegatedFrom => 0 ); + if ( $self->Id ) { + return ( 0, $self->loc('That principal already has that right') ); + } + + my $id = $self->SUPER::Create( PrincipalId => $princ_obj->id, + PrincipalType => $args{'PrincipalType'}, + RightName => $args{'RightName'}, + ObjectType => ref( $args{'Object'} ), + ObjectId => $args{'Object'}->id, + DelegatedBy => 0, + DelegatedFrom => 0 ); + + #Clear the key cache. TODO someday we may want to just clear a little bit of the keycache space. + RT::Principal->_InvalidateACLCache(); + + if ( $id > 0 ) { + return ( $id, $self->loc('Right Granted') ); + } + else { + return ( 0, $self->loc('System error. Right not granted.') ); + } +} + +# }}} + +# {{{ sub Delegate + +=head2 Delegate <PARAMS> + +This routine delegates the current ACE to a principal specified by the +B<PrincipalId> parameter. + +Returns an error if the current user doesn't have the right to be delegated +or doesn't have the right to delegate rights. + +Always returns a tuple of (ReturnValue, Message) + +=begin testing + +use_ok(RT::User); +my $user_a = RT::User->new($RT::SystemUser); +$user_a->Create( Name => 'DelegationA', Privileged => 1); +ok ($user_a->Id, "Created delegation user a"); + +my $user_b = RT::User->new($RT::SystemUser); +$user_b->Create( Name => 'DelegationB', Privileged => 1); +ok ($user_b->Id, "Created delegation user b"); + + +use_ok(RT::Queue); +my $q = RT::Queue->new($RT::SystemUser); +$q->Create(Name =>'DelegationTest'); +ok ($q->Id, "Created a delegation test queue"); + + +#------ First, we test whether a user can delegate a right that's been granted to him personally +my ($val, $msg) = $user_a->PrincipalObj->GrantRight(Object => $RT::System, Right => 'AdminOwnPersonalGroups'); +ok($val, $msg); + +($val, $msg) = $user_a->PrincipalObj->GrantRight(Object =>$q, Right => 'OwnTicket'); +ok($val, $msg); + +ok($user_a->HasRight( Object => $RT::System, Right => 'AdminOwnPersonalGroups') ,"user a has the right 'AdminOwnPersonalGroups' directly"); + +my $a_delegates = RT::Group->new($user_a); +$a_delegates->CreatePersonalGroup(Name => 'Delegates'); +ok( $a_delegates->Id ,"user a creates a personal group 'Delegates'"); +ok( $a_delegates->AddMember($user_b->PrincipalId) ,"user a adds user b to personal group 'delegates'"); + +ok( !$user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b does not have the right to OwnTicket' in queue 'DelegationTest'"); +ok( $user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"user a has the right to 'OwnTicket' in queue 'DelegationTest'"); +ok(!$user_a->HasRight( Object => $RT::System, Right => 'DelegateRights') ,"user a does not have the right 'delegate rights'"); + + +my $own_ticket_ace = RT::ACE->new($user_a); +my $user_a_equiv_group = RT::Group->new($user_a); +$user_a_equiv_group->LoadACLEquivalenceGroup($user_a->PrincipalObj); +ok ($user_a_equiv_group->Id, "Loaded the user A acl equivalence group"); +my $user_b_equiv_group = RT::Group->new($user_b); +$user_b_equiv_group->LoadACLEquivalenceGroup($user_b->PrincipalObj); +ok ($user_b_equiv_group->Id, "Loaded the user B acl equivalence group"); +$own_ticket_ace->LoadByValues( PrincipalType => 'Group', PrincipalId => $user_a_equiv_group->PrincipalId, Object=>$q, RightName => 'OwnTicket'); + +ok ($own_ticket_ace->Id, "Found the ACE we want to test with for now"); + + +($val, $msg) = $own_ticket_ace->Delegate(PrincipalId => $a_delegates->PrincipalId) ; +ok( !$val ,"user a tries and fails to delegate the right 'ownticket' in queue 'DelegationTest' to personal group 'delegates' - $msg"); + + +($val, $msg) = $user_a->PrincipalObj->GrantRight( Right => 'DelegateRights'); +ok($val, "user a is granted the right to 'delegate rights' - $msg"); + +ok($user_a->HasRight( Object => $RT::System, Right => 'DelegateRights') ,"user a has the right 'AdminOwnPersonalGroups' directly"); + +($val, $msg) = $own_ticket_ace->Delegate(PrincipalId => $a_delegates->PrincipalId) ; + +ok( $val ,"user a tries and succeeds to delegate the right 'ownticket' in queue 'DelegationTest' to personal group 'delegates' - $msg"); +ok( $user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b has the right to own tickets in queue 'DelegationTest'"); +my $delegated_ace = RT::ACE->new($user_a); +$delegated_ace->LoadByValues ( Object => $q, RightName => 'OwnTicket', PrincipalType => 'Group', +PrincipalId => $a_delegates->PrincipalId, DelegatedBy => $user_a->PrincipalId, DelegatedFrom => $own_ticket_ace->Id); +ok ($delegated_ace->Id, "Found the delegated ACE"); + +ok( $a_delegates->DeleteMember($user_b->PrincipalId) ,"user a removes b from pg 'delegates'"); +ok( !$user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b does not have the right to own tickets in queue 'DelegationTest'"); +ok( $a_delegates->AddMember($user_b->PrincipalId) ,"user a adds user b to personal group 'delegates'"); +ok( $user_b->HasRight(Right => 'OwnTicket', Object=> $q) ,"user b has the right to own tickets in queue 'DelegationTest'"); +ok( $delegated_ace->Delete ,"user a revokes pg 'delegates' right to 'OwnTickets' in queue 'DelegationTest'"); +ok( ! $user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b does not have the right to own tickets in queue 'DelegationTest'"); + +($val, $msg) = $own_ticket_ace->Delegate(PrincipalId => $a_delegates->PrincipalId) ; +ok( $val ,"user a delegates pg 'delegates' right to 'OwnTickets' in queue 'DelegationTest' - $msg"); + +ok( $user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"user a does not have the right to own tickets in queue 'DelegationTest'"); + +($val, $msg) = $user_a->PrincipalObj->RevokeRight(Object=>$q, Right => 'OwnTicket'); +ok($val, "Revoked user a's right to own tickets in queue 'DelegationTest". $msg); + +ok( !$user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"user a does not have the right to own tickets in queue 'DelegationTest'"); + + ok( !$user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b does not have the right to own tickets in queue 'DelegationTest'"); + +($val, $msg) = $user_a->PrincipalObj->GrantRight(Object=>$q, Right => 'OwnTicket'); +ok($val, $msg); + + ok( $user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"user a has the right to own tickets in queue 'DelegationTest'"); + + ok( !$user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b does not have the right to own tickets in queue 'DelegationTest'"); + +# {{{ get back to a known clean state +($val, $msg) = $user_a->PrincipalObj->RevokeRight( Object => $q, Right => 'OwnTicket'); +ok($val, "Revoked user a's right to own tickets in queue 'DelegationTest -". $msg); +ok( !$user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"make sure that user a can't own tickets in queue 'DelegationTest'"); +# }}} + + +# {{{ Set up some groups and membership +my $del1 = RT::Group->new($RT::SystemUser); +($val, $msg) = $del1->CreateUserDefinedGroup(Name => 'Del1'); +ok( $val ,"create a group del1 - $msg"); + +my $del2 = RT::Group->new($RT::SystemUser); +($val, $msg) = $del2->CreateUserDefinedGroup(Name => 'Del2'); +ok( $val ,"create a group del2 - $msg"); +($val, $msg) = $del1->AddMember($del2->PrincipalId); +ok( $val,"make del2 a member of del1 - $msg"); + +my $del2a = RT::Group->new($RT::SystemUser); +($val, $msg) = $del2a->CreateUserDefinedGroup(Name => 'Del2a'); +ok( $val ,"create a group del2a - $msg"); +($val, $msg) = $del2->AddMember($del2a->PrincipalId); +ok($val ,"make del2a a member of del2 - $msg"); + +my $del2b = RT::Group->new($RT::SystemUser); +($val, $msg) = $del2b->CreateUserDefinedGroup(Name => 'Del2b'); +ok( $val ,"create a group del2b - $msg"); +($val, $msg) = $del2->AddMember($del2b->PrincipalId); +ok($val ,"make del2b a member of del2 - $msg"); + +($val, $msg) = $del2->AddMember($user_a->PrincipalId) ; +ok($val,"make 'user a' a member of del2 - $msg"); + +($val, $msg) = $del2b->AddMember($user_a->PrincipalId) ; +ok($val,"make 'user a' a member of del2b - $msg"); + +# }}} + +# {{{ Grant a right to a group and make sure that a submember can delegate the right and that it does not get yanked +# when a user is removed as a submember, when they're a sumember through another path +($val, $msg) = $del1->PrincipalObj->GrantRight( Object=> $q, Right => 'OwnTicket'); +ok( $val ,"grant del1 the right to 'OwnTicket' in queue 'DelegationTest' - $msg"); + +ok( $user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"make sure that user a can own tickets in queue 'DelegationTest'"); + +my $group_ace= RT::ACE->new($user_a); +$group_ace->LoadByValues( PrincipalType => 'Group', PrincipalId => $del1->PrincipalId, Object => $q, RightName => 'OwnTicket'); + +ok ($group_ace->Id, "Found the ACE we want to test with for now"); + +($val, $msg) = $group_ace->Delegate(PrincipalId => $a_delegates->PrincipalId); + +ok( $val ,"user a tries and succeeds to delegate the right 'ownticket' in queue 'DelegationTest' to personal group 'delegates' - $msg"); +ok( $user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b has the right to own tickets in queue 'DelegationTest'"); + + +($val, $msg) = $del2b->DeleteMember($user_a->PrincipalId); +ok( $val ,"remove user a from group del2b - $msg"); +ok( $user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"user a has the right to own tickets in queue 'DelegationTest'"); +ok( $user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b has the right to own tickets in queue 'DelegationTest'"); + +# }}} + +# {{{ When a user is removed froom a group by the only path they're in there by, make sure the delegations go away +($val, $msg) = $del2->DeleteMember($user_a->PrincipalId); +ok( $val ,"remove user a from group del2 - $msg"); +ok( !$user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"user a does not have the right to own tickets in queue 'DelegationTest' "); +ok( !$user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b does not have the right to own tickets in queue 'DelegationTest' "); +# }}} + +($val, $msg) = $del2->AddMember($user_a->PrincipalId); +ok( $val ,"make user a a member of group del2 - $msg"); + +($val, $msg) = $del2->PrincipalObj->GrantRight(Object=>$q, Right => 'OwnTicket'); +ok($val, "grant the right 'own tickets' in queue 'DelegationTest' to group del2 - $msg"); + +my $del2_right = RT::ACE->new($user_a); +$del2_right->LoadByValues( PrincipalId => $del2->PrincipalId, PrincipalType => 'Group', Object => $q, RightName => 'OwnTicket'); +ok ($del2_right->Id, "Found the right"); + +($val, $msg) = $del2_right->Delegate(PrincipalId => $a_delegates->PrincipalId); +ok( $val ,"user a tries and succeeds to delegate the right 'ownticket' in queue 'DelegationTest' gotten via del2 to personal group 'delegates' - $msg"); + +# They have it via del1 and del2 +ok( $user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"user b has the right to own tickets in queue 'DelegationTest'"); + + +($val, $msg) = $del2->PrincipalObj->RevokeRight(Object=>$q, Right => 'OwnTicket'); +ok($val, "revoke the right 'own tickets' in queue 'DelegationTest' to group del2 - $msg"); +ok( $user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"user a does has the right to own tickets in queue 'DelegationTest' via del1"); +ok( !$user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b does not have the right to own tickets in queue 'DelegationTest'"); + +($val, $msg) = $del2->PrincipalObj->GrantRight(Object=>$q, Right => 'OwnTicket'); +ok($val, "grant the right 'own tickets' in queue 'DelegationTest' to group del2 - $msg"); + + +$group_ace= RT::ACE->new($user_a); +$group_ace->LoadByValues( PrincipalType => 'Group', PrincipalId => $del1->PrincipalId, Object=>$q, RightName => 'OwnTicket'); + +ok ($group_ace->Id, "Found the ACE we want to test with for now"); + +($val, $msg) = $group_ace->Delegate(PrincipalId => $a_delegates->PrincipalId); + +ok( $val ,"user a tries and succeeds to delegate the right 'ownticket' in queue 'DelegationTest' to personal group 'delegates' - $msg"); + +ok( $user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b has the right to own tickets in queue 'DelegationTest'"); + +($val, $msg) = $del2->DeleteMember($user_a->PrincipalId); +ok( $val ,"remove user a from group del2 - $msg"); + +ok( !$user_a->HasRight(Right => 'OwnTicket', Object => $q) ,"user a does not have the right to own tickets in queue 'DelegationTest'"); + +ok( !$user_b->HasRight(Right => 'OwnTicket', Object => $q) ,"user b does not have the right to own tickets in queue 'DelegationTest'"); + + + +=end testing + +=cut + +sub Delegate { + my $self = shift; + my %args = ( PrincipalId => undef, + @_ ); + + unless ( $self->Id ) { + return ( 0, $self->loc("Right not loaded.") ); + } + my $princ_obj; + ( $princ_obj, $args{'PrincipalType'} ) = + $self->_CanonicalizePrincipal( $args{'PrincipalId'}, + $args{'PrincipalType'} ); + + unless ( $princ_obj->id ) { + return ( 0, + $self->loc( 'Principal [_1] not found.', $args{'PrincipalId'} ) + ); + } + + # }}} + + # {{{ Check the ACL + + # First, we check to se if the user is delegating rights and + # they have the permission to + unless ( $self->CurrentUser->HasRight(Right => 'DelegateRights', Object => $self->Object) ) { + return ( 0, $self->loc("Permission Denied") ); + } + + unless ( $self->PrincipalObj->IsGroup ) { + return ( 0, $self->loc("System Error") ); + } + unless ( $self->PrincipalObj->Object->HasMemberRecursively( + $self->CurrentUser->PrincipalObj + ) + ) { + return ( 0, $self->loc("Permission Denied") ); + } + + # }}} + + my $concurrency_check = RT::ACE->new($RT::SystemUser); + $concurrency_check->Load( $self->Id ); + unless ( $concurrency_check->Id ) { + $RT::Logger->crit( + "Trying to delegate a right which had already been deleted"); + return ( 0, $self->loc('Permission Denied') ); + } + + my $delegated_ace = RT::ACE->new( $self->CurrentUser ); + + # Make sure the right doesn't already exist. + $delegated_ace->LoadByCols( PrincipalId => $princ_obj->Id, + PrincipalType => 'Group', + RightName => $self->__Value('RightName'), + ObjectType => $self->__Value('ObjectType'), + ObjectId => $self->__Value('ObjectId'), + DelegatedBy => $self->CurrentUser->PrincipalId, + DelegatedFrom => $self->id ); + if ( $delegated_ace->Id ) { + return ( 0, $self->loc('That principal already has that right') ); + } + my $id = $delegated_ace->SUPER::Create( + PrincipalId => $princ_obj->Id, + PrincipalType => 'Group', # do we want to hardcode this? + RightName => $self->__Value('RightName'), + ObjectType => $self->__Value('ObjectType'), + ObjectId => $self->__Value('ObjectId'), + DelegatedBy => $self->CurrentUser->PrincipalId, + DelegatedFrom => $self->id ); + + #Clear the key cache. TODO someday we may want to just clear a little bit of the keycache space. + # TODO what about the groups key cache? + RT::Principal->_InvalidateACLCache(); + + if ( $id > 0 ) { + return ( $id, $self->loc('Right Delegated') ); + } + else { + return ( 0, $self->loc('System error. Right not delegated.') ); + } +} + +# }}} + +# {{{ sub Delete + +=head2 Delete { InsideTransaction => undef} + +Delete this object. This method should ONLY ever be called from RT::User or RT::Group (or from itself) +If this is being called from within a transaction, specify a true value for the parameter InsideTransaction. +Really, DBIx::SearchBuilder should use and/or fake subtransactions + +This routine will also recurse and delete any delegations of this right + +=cut + +sub Delete { + my $self = shift; + + unless ( $self->Id ) { + return ( 0, $self->loc('Right not loaded.') ); + } + + # A user can delete an ACE if the current user has the right to modify it and it's not a delegated ACE + # or if it's a delegated ACE and it was delegated by the current user + unless ( + ( $self->CurrentUser->HasRight(Right => 'ModifyACL', Object => $self->Object) + && $self->__Value('DelegatedBy') == 0 ) + || ( $self->__Value('DelegatedBy') == $self->CurrentUser->PrincipalId ) + ) { + return ( 0, $self->loc('Permission Denied') ); + } + $self->_Delete(@_); +} + +# Helper for Delete with no ACL check +sub _Delete { + my $self = shift; + my %args = ( InsideTransaction => undef, + @_ ); + + my $InsideTransaction = $args{'InsideTransaction'}; + + $RT::Handle->BeginTransaction() unless $InsideTransaction; + + my $delegated_from_this = RT::ACL->new($RT::SystemUser); + $delegated_from_this->Limit( FIELD => 'DelegatedFrom', + OPERATOR => '=', + VALUE => $self->Id ); + + my $delete_succeeded = 1; + my $submsg; + while ( my $delegated_ace = $delegated_from_this->Next ) { + ( $delete_succeeded, $submsg ) = + $delegated_ace->_Delete( InsideTransaction => 1 ); + last if ($delete_succeeded); + } + + unless ($delete_succeeded) { + $RT::Handle->Rollback() unless $InsideTransaction; + return ( 0, $self->loc('Right could not be revoked') ); + } + + my ( $val, $msg ) = $self->SUPER::Delete(@_); + + #Clear the key cache. TODO someday we may want to just clear a little bit of the keycache space. + # TODO what about the groups key cache? + RT::Principal->_InvalidateACLCache(); + + if ($val) { + $RT::Handle->Commit() unless $InsideTransaction; + return ( $val, $self->loc('Right revoked') ); + } + else { + $RT::Handle->Rollback() unless $InsideTransaction; + return ( 0, $self->loc('Right could not be revoked') ); + } +} + +# }}} + +# {{{ sub _BootstrapCreate + +=head2 _BootstrapCreate + +Grant a right with no error checking and no ACL. this is _only_ for +installation. If you use this routine without the author's explicit +written approval, he will hunt you down and make you spend eternity +translating mozilla's code into FORTRAN or intercal. + +If you think you need this routine, you've mistaken. + +=cut + +sub _BootstrapCreate { + my $self = shift; + my %args = (@_); + + # When bootstrapping, make sure we get the _right_ users + if ( $args{'UserId'} ) { + my $user = RT::User->new( $self->CurrentUser ); + $user->Load( $args{'UserId'} ); + delete $args{'UserId'}; + $args{'PrincipalId'} = $user->PrincipalId; + $args{'PrincipalType'} = 'User'; + } + + my $id = $self->SUPER::Create(%args); + + if ( $id > 0 ) { + return ($id); + } + else { + $RT::Logger->err('System error. right not granted.'); + return (undef); + } + +} + +# }}} + +# {{{ sub CanonicalizeRightName + +=head2 CanonicalizeRightName <RIGHT> + +Takes a queue or system right name in any case and returns it in +the correct case. If it's not found, will return undef. + +=cut + +sub CanonicalizeRightName { + my $self = shift; + my $right = shift; + $right = lc $right; + if ( exists $LOWERCASERIGHTNAMES{"$right"} ) { + return ( $LOWERCASERIGHTNAMES{"$right"} ); + } + else { + return (undef); + } +} + +# }}} + + +# {{{ sub Object + +=head2 Object + +If the object this ACE applies to is a queue, returns the queue object. +If the object this ACE applies to is a group, returns the group object. +If it's the system object, returns undef. + +If the user has no rights, returns undef. + +=cut + + + + +sub Object { + my $self = shift; + + my $appliesto_obj; + + if ($self->__Value('ObjectType') && $OBJECT_TYPES{$self->__Value('ObjectType')} ) { + $appliesto_obj = $self->__Value('ObjectType')->new($self->CurrentUser); + unless (ref( $appliesto_obj) eq $self->__Value('ObjectType')) { + return undef; + } + $appliesto_obj->Load( $self->__Value('ObjectId') ); + return ($appliesto_obj); + } + else { + $RT::Logger->warning( "$self -> Object called for an object " + . "of an unknown type:" + . $self->ObjectType ); + return (undef); + } +} + +# }}} + +# {{{ sub PrincipalObj + +=head2 PrincipalObj + +Returns the RT::Principal object for this ACE. + +=cut + +sub PrincipalObj { + my $self = shift; + + my $princ_obj = RT::Principal->new( $self->CurrentUser ); + $princ_obj->Load( $self->__Value('PrincipalId') ); + + unless ( $princ_obj->Id ) { + $RT::Logger->err( + "ACE " . $self->Id . " couldn't load its principal object" ); + } + return ($princ_obj); + +} + +# }}} + +# {{{ ACL related methods + +# {{{ sub _Set + +sub _Set { + my $self = shift; + return ( 0, $self->loc("ACEs can only be created and deleted.") ); +} + +# }}} + +# {{{ sub _Value + +sub _Value { + my $self = shift; + + if ( $self->__Value('DelegatedBy') eq $self->CurrentUser->PrincipalId ) { + return ( $self->__Value(@_) ); + } + elsif ( $self->PrincipalObj->IsGroup + && $self->PrincipalObj->Object->HasMemberRecursively( + $self->CurrentUser->PrincipalObj + ) + ) { + return ( $self->__Value(@_) ); + } + elsif ( $self->CurrentUser->HasRight(Right => 'ShowACL', Object => $self->Object) ) { + return ( $self->__Value(@_) ); + } + else { + return undef; + } +} + +# }}} + + +# }}} + +# {{{ _CanonicalizePrincipal + +=head2 _CanonicalizePrincipal (PrincipalId, PrincipalType) + +Takes a principal id and a principal type. + +If the principal is a user, resolves it to the proper acl equivalence group. +Returns a tuple of (RT::Principal, PrincipalType) for the principal we really want to work with + +=cut + +sub _CanonicalizePrincipal { + my $self = shift; + my $princ_id = shift; + my $princ_type = shift; + + my $princ_obj = RT::Principal->new($RT::SystemUser); + $princ_obj->Load($princ_id); + + unless ( $princ_obj->Id ) { + use Carp; + $RT::Logger->crit(Carp::cluck); + $RT::Logger->crit("Can't load a principal for id $princ_id"); + return ( $princ_obj, undef ); + } + + # Rights never get granted to users. they get granted to their + # ACL equivalence groups + if ( $princ_type eq 'User' ) { + my $equiv_group = RT::Group->new( $self->CurrentUser ); + $equiv_group->LoadACLEquivalenceGroup($princ_obj); + unless ( $equiv_group->Id ) { + $RT::Logger->crit( + "No ACL equiv group for princ " . $self->__Value('ObjectId') ); + return ( 0, $self->loc('System error. Right not granted.') ); + } + $princ_obj = $equiv_group->PrincipalObj(); + $princ_type = 'Group'; + + } + return ( $princ_obj, $princ_type ); +} + +# }}} +1; diff --git a/rt/lib/RT/ACL_Overlay.pm b/rt/lib/RT/ACL_Overlay.pm new file mode 100644 index 000000000..977577697 --- /dev/null +++ b/rt/lib/RT/ACL_Overlay.pm @@ -0,0 +1,295 @@ +# 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. +# +# 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 +=head1 NAME + + RT::ACL - collection of RT ACE objects + +=head1 SYNOPSIS + + use RT::ACL; +my $ACL = new RT::ACL($CurrentUser); + +=head1 DESCRIPTION + + +=head1 METHODS + +=begin testing + +ok(require RT::ACL); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + + +=head2 Next + +Hand out the next ACE that was found + +=cut + + +# {{{ LimitToObject + +=head2 LimitToObject $object + +Limit the ACL to rights for the object $object. It needs to be an RT::Record class. + +=cut + +sub LimitToObject { + my $self = shift; + my $obj = shift; + unless (defined($obj) && ref($obj) && UNIVERSAL::can($obj, 'id')) { + return undef; + } + $self->Limit(FIELD => 'ObjectType', OPERATOR=> '=', VALUE => ref($obj), ENTRYAGGREGATOR => 'OR'); + $self->Limit(FIELD => 'ObjectId', OPERATOR=> '=', VALUE => $obj->id, ENTRYAGGREGATOR => 'OR', QUOTEVALUE => 0); + +} + +# }}} + +# {{{ LimitToPrincipal + +=head2 LimitToPrincipal { Type => undef, Id => undef, IncludeGroupMembership => undef } + +Limit the ACL to the principal with PrincipalId Id and PrincipalType Type + +Id is not optional. +Type is. + +if IncludeGroupMembership => 1 is specified, ACEs which apply to the principal due to group membership will be included in the resultset. + + +=cut + +sub LimitToPrincipal { + my $self = shift; + my %args = ( Type => undef, + Id => undef, + IncludeGroupMembership => undef, + @_ ); + if ( $args{'IncludeGroupMembership'} ) { + my $cgm = $self->NewAlias('CachedGroupMembers'); + $self->Join( ALIAS1 => 'main', + FIELD1 => 'PrincipalId', + ALIAS2 => $cgm, + FIELD2 => 'GroupId' ); + $self->Limit( ALIAS => $cgm, + FIELD => 'MemberId', + OPERATOR => '=', + VALUE => $args{'Id'}, + ENTRYAGGREGATOR => 'OR' ); + } + else { + if ( defined $args{'Type'} ) { + $self->Limit( FIELD => 'PrincipalType', + OPERATOR => '=', + VALUE => $args{'Type'}, + ENTRYAGGREGATOR => 'OR' ); + } + # if the principal id points to a user, we really want to point + # to their ACL equivalence group. The machinations we're going through + # lead me to start to suspect that we really want users and groups + # to just be the same table. or _maybe_ that we want an object db. + my $princ = RT::Principal->new($RT::SystemUser); + $princ->Load($args{'PrincipalId'}); + if ($princ->PrincipalType eq 'User') { + my $group = RT::Group->new($RT::SystemUser); + $group->LoadACLEquivalenceGroup($princ); + $args{'PrincipalId'} = $group->PrincipalId; + } + $self->Limit( FIELD => 'PrincipalId', + OPERATOR => '=', + VALUE => $args{'Id'}, + ENTRYAGGREGATOR => 'OR' ); + } +} + +# }}} + + + +# {{{ ExcludeDelegatedRights + +=head2 ExcludeDelegatedRights + +Don't list rights which have been delegated. + +=cut + +sub ExcludeDelegatedRights { + my $self = shift; + $self->DelegatedBy(Id => 0); + $self->DelegatedFrom(Id => 0); +} +# }}} + +# {{{ DelegatedBy + +=head2 DelegatedBy { Id => undef } + +Limit the ACL to rights delegated by the principal whose Principal Id is +B<Id> + +Id is not optional. + +=cut + +sub DelegatedBy { + my $self = shift; + my %args = ( + Id => undef, + @_ + ); + $self->Limit( + FIELD => 'DelegatedBy', + OPERATOR => '=', + VALUE => $args{'Id'}, + ENTRYAGGREGATOR => 'OR' + ); + +} + +# }}} + +# {{{ DelegatedFrom + +=head2 DelegatedFrom { Id => undef } + +Limit the ACL to rights delegate from the ACE which has the Id specified +by the Id parameter. + +Id is not optional. + +=cut + +sub DelegatedFrom { + my $self = shift; + my %args = ( + Id => undef, + @_); + $self->Limit(FIELD => 'DelegatedFrom', OPERATOR=> '=', VALUE => $args{'Id'}, ENTRYAGGREGATOR => 'OR'); + +} + +# }}} + + +# {{{ sub Next +sub Next { + my $self = shift; + + my $ACE = $self->SUPER::Next(); + if ( ( defined($ACE) ) and ( ref($ACE) ) ) { + + if ( $self->CurrentUser->HasRight( Right => 'ShowACL', + Object => $ACE->Object ) + or $self->CurrentUser->HasRight( Right => 'ModifyACL', + Object => $ACE->Object ) + ) { + return ($ACE); + } + + #If the user doesn't have the right to show this ACE + else { + return ( $self->Next() ); + } + } + + #if there never was any ACE + else { + return (undef); + } + +} + +# }}} + + + +#wrap around _DoSearch so that we can build the hash of returned +#values +sub _DoSearch { + my $self = shift; + # $RT::Logger->debug("Now in ".$self."->_DoSearch"); + my $return = $self->SUPER::_DoSearch(@_); + # $RT::Logger->debug("In $self ->_DoSearch. return from SUPER::_DoSearch was $return\n"); + $self->_BuildHash(); + return ($return); +} + + +#Build a hash of this ACL's entries. +sub _BuildHash { + my $self = shift; + + while (my $entry = $self->Next) { + my $hashkey = $entry->ObjectType . "-" . $entry->ObjectId . "-" . $entry->RightName . "-" . $entry->PrincipalId . "-" . $entry->PrincipalType; + + $self->{'as_hash'}->{"$hashkey"} =1; + + } +} + + +# {{{ HasEntry + +=head2 HasEntry + +=cut + +sub HasEntry { + + my $self = shift; + my %args = ( RightScope => undef, + RightAppliesTo => undef, + RightName => undef, + PrincipalId => undef, + PrincipalType => undef, + @_ ); + + #if we haven't done the search yet, do it now. + $self->_DoSearch(); + + if ($self->{'as_hash'}->{ $args{'RightScope'} . "-" . + $args{'RightAppliesTo'} . "-" . + $args{'RightName'} . "-" . + $args{'PrincipalId'} . "-" . + $args{'PrincipalType'} + } == 1) { + return(1); + } + else { + return(undef); + } +} + +# }}} +1; diff --git a/rt/lib/RT/Action/AutoOpen.pm b/rt/lib/RT/Action/AutoOpen.pm new file mode 100644 index 000000000..ea6da1952 --- /dev/null +++ b/rt/lib/RT/Action/AutoOpen.pm @@ -0,0 +1,86 @@ +# 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. +# +# 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 +# This Action will open the BASE if a dependent is resolved. + +package RT::Action::AutoOpen; +require RT::Action::Generic; + +use strict; +use vars qw/@ISA/; +@ISA=qw(RT::Action::Generic); + +#Do what we need to do and send it out. + +#What does this type of Action does + +# {{{ sub Describe +sub Describe { + my $self = shift; + return (ref $self ); +} +# }}} + + +# {{{ sub Prepare +sub Prepare { + my $self = shift; + + # if the ticket is already open or the ticket is new and the message is more mail from the + # requestor, don't reopen it. + + if ( ( $self->TicketObj->Status eq 'open' ) + || ( ( $self->TicketObj->Status eq 'new' ) + && $self->TransactionObj->IsInbound ) + ) { + + return undef; + } + else { + return (1); + } +} +# }}} + +sub Commit { + my $self = shift; + my $oldstatus = $self->TicketObj->Status(); + $self->TicketObj->__Set( Field => 'Status', Value => 'open' ); + $self->TicketObj->_NewTransaction( + Type => 'Set', + Field => 'Status', + OldValue => $oldstatus, + NewValue => 'open', + Data => 'Ticket auto-opened on incoming correspondence' + ); + + + return(1); +} + +eval "require RT::Action::AutoOpen_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/AutoOpen_Vendor.pm}); +eval "require RT::Action::AutoOpen_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/AutoOpen_Local.pm}); + +1; diff --git a/rt/lib/RT/Action/CreateTickets.pm b/rt/lib/RT/Action/CreateTickets.pm new file mode 100644 index 000000000..0ab206771 --- /dev/null +++ b/rt/lib/RT/Action/CreateTickets.pm @@ -0,0 +1,564 @@ +# 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. +# +# 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::Action::CreateTickets; +require RT::Action::Generic; + +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Action::Generic); + +use MIME::Entity; + +=head1 NAME + + RT::Action::CreateTickets + +Create one or more tickets according to an externally supplied template. + + +=head1 SYNOPSIS + + ===Create-Ticket: codereview + Subject: Code review for {$Tickets{'TOP'}->Subject} + Depended-On-By: {$Tickets{'TOP'}->Id} + Content: Someone has created a ticket. you should review and approve it, + so they can finish their work + ENDOFCONTENT + +=head1 DESCRIPTION + + +Using the "CreateTickets" ScripAction and mandatory dependencies, RT now has +the ability to model complex workflow. When a ticket is created in a queue +that has a "CreateTickets" scripaction, that ScripAction parses its "Template" + + + +=head2 FORMAT + +CreateTickets uses the template as a template for an ordered set of tickets +to create. The basic format is as follows: + + + ===Create-Ticket: identifier + Param: Value + Param2: Value + Param3: Value + Content: Blah + blah + blah + ENDOFCONTENT + ===Create-Ticket: id2 + Param: Value + Content: Blah + ENDOFCONTENT + + +Each ===Create-Ticket: section is evaluated as its own +Text::Template object, which means that you can embed snippets +of perl inside the Text::Template using {} delimiters, but that +such sections absolutely can not span a ===Create-Ticket boundary. + +After each ticket is created, it's stuffed into a hash called %Tickets +so as to be available during the creation of other tickets during the same +ScripAction. The hash is prepopulated with the ticket which triggered the +ScripAction as $Tickets{'TOP'}; you can also access that ticket using the +shorthand $TOP. + +A simple example: + + ===Create-Ticket: codereview + Subject: Code review for {$Tickets{'TOP'}->Subject} + Depended-On-By: {$Tickets{'TOP'}->Id} + Content: Someone has created a ticket. you should review and approve it, + so they can finish their work + ENDOFCONTENT + + + +A convoluted example + + ===Create-Ticket: approval + { # Find out who the administrators of the group called "HR" + # of which the creator of this ticket is a member + my $name = "HR"; + + my $groups = RT::Groups->new($RT::SystemUser); + $groups->LimitToUserDefinedGroups(); + $groups->Limit(FIELD => "Name", OPERATOR => "=", VALUE => "$name"); + $groups->WithMember($TransactionObj->CreatorObj->Id); + + my $groupid = $groups->First->Id; + + my $adminccs = RT::Users->new($RT::SystemUser); + $adminccs->WhoHaveRight( + Right => "AdminGroup", + Object =>$groups->First, + IncludeSystemRights => undef, + IncludeSuperusers => 0, + IncludeSubgroupMembers => 0, + ); + + my @admins; + while (my $admin = $adminccs->Next) { + push (@admins, $admin->EmailAddress); + } + } + Queue: Approvals + Type: Approval + AdminCc: {join ("\nAdminCc: ",@admins) } + Depended-On-By: {$Tickets{"TOP"}->Id} + Refers-To: {$Tickets{"TOP"}->Id} + Subject: Approval for ticket: {$Tickets{"TOP"}->Id} - {$Tickets{"TOP"}->Subject} + Due: {time + 86400} + Content-Type: text/plain + Content: Your approval is requested for the ticket {$Tickets{"TOP"}->Id}: {$Tickets{"TOP"}->Subject} + Blah + Blah + ENDOFCONTENT + ===Create-Ticket: two + Subject: Manager approval + Depended-On-By: {$Tickets{"TOP"}->Id} + Refers-On: {$Tickets{"approval"}->Id} + Queue: Approvals + Content-Type: text/plain + Content: + Your approval is requred for this ticket, too. + ENDOFCONTENT + +=head2 Acceptable fields + +A complete list of acceptable fields for this beastie: + + + * Queue => Name or id# of a queue + Subject => A text string + ! Status => A valid status. defaults to 'new' + Due => Dates can be specified in seconds since the epoch + to be handled literally or in a semi-free textual + format which RT will attempt to parse. + + + + Starts => + Started => + Resolved => + Owner => Username or id of an RT user who can and should own + this ticket + + Requestor => Email address + + Cc => Email address + + AdminCc => Email address + TimeWorked => + TimeEstimated => + TimeLeft => + InitialPriority => + FinalPriority => + Type => + +! DependsOn => + +! DependedOnBy => + +! RefersTo => + +! ReferredToBy => + +! Members => + +! MemberOf => + Content => content. Can extend to multiple lines. Everything + within a template after a Content: header is treated + as content until we hit a line containing only + ENDOFCONTENT + ContentType => the content-type of the Content field + CustomField-<id#> => custom field value + +Fields marked with an * are required. + +Fields marked with a + man have multiple values, simply +by repeating the fieldname on a new line with an additional value. + +Fields marked with a ! are postponed to be processed after all +tickets in the same actions are created. Except for 'Status', those +field can also take a ticket name within the same action (i.e. +the identifiers after ==Create-Ticket), instead of raw Ticket ID +numbers. + +When parsed, field names are converted to lowercase and have -s stripped. +Refers-To, RefersTo, refersto, refers-to and r-e-f-er-s-tO will all +be treated as the same thing. + + +=begin testing + +ok (require RT::Action::CreateTickets); +use_ok(RT::Scrip); +use_ok(RT::Template); +use_ok(RT::ScripAction); +use_ok(RT::ScripCondition); +use_ok(RT::Ticket); + +my $approvalsq = RT::Queue->new($RT::SystemUser); +$approvalsq->Create(Name => 'Approvals'); +ok ($approvalsq->Id, "Created Approvals test queue"); + + +my $approvals = +'===Create-Ticket: approval +{ my $name = "HR"; + my $groups = RT::Groups->new($RT::SystemUser); + $groups->LimitToUserDefinedGroups(); + $groups->Limit(FIELD => "Name", OPERATOR => "=", VALUE => "$name"); + $groups->WithMember($Transaction->CreatorObj->Id); + + my $groupid = $groups->First->Id; + + my $adminccs = RT::Users->new($RT::SystemUser); + $adminccs->WhoHaveRight(Right => "AdminGroup", IncludeSystemRights => undef, IncludeSuperusers => 0, IncludeSubgroupMembers => 0, Object => $groups->First); + + my @admins; + while (my $admin = $adminccs->Next) { + push (@admins, $admin->EmailAddress); + } +} +Queue: Approvals +Type: Approval +AdminCc: {join ("\nAdminCc: ",@admins) } +Depended-On-By: {$Tickets{"TOP"}->Id} +Refers-To: {$Tickets{"TOP"}->Id} +Subject: Approval for ticket: {$Tickets{"TOP"}->Id} - {$Tickets{"TOP"}->Subject} +Due: {time + 86400} +Content-Type: text/plain +Content: Your approval is requested for the ticket {$Tickets{"TOP"}->Id}: {$Tickets{"TOP"}->Subject} +Blah +Blah +ENDOFCONTENT +===Create-Ticket: two +Subject: Manager approval. +Depends-On: {$Tickets{"approval"}->Id} +Queue: Approvals +Content-Type: text/plain +Content: +Your minion approved this ticket. you ok with that? +ENDOFCONTENT +'; + +ok ($approvals =~ /Content/, "Read in the approvals template"); + +my $apptemp = RT::Template->new($RT::SystemUser); +$apptemp->Create( Content => $approvals, Name => "Approvals", Queue => "0"); + +ok ($apptemp->Id); + +my $q = RT::Queue->new($RT::SystemUser); +$q->Create(Name => 'WorkflowTest'); +ok ($q->Id, "Created workflow test queue"); + +my $scrip = RT::Scrip->new($RT::SystemUser); +my ($sval, $smsg) =$scrip->Create( ScripCondition => 'On Transaction', + ScripAction => 'Create Tickets', + Template => 'Approvals', + Queue => $q->Id); +ok ($sval, $smsg); +ok ($scrip->Id, "Created the scrip"); +ok ($scrip->TemplateObj->Id, "Created the scrip template"); +ok ($scrip->ConditionObj->Id, "Created the scrip condition"); +ok ($scrip->ActionObj->Id, "Created the scrip action"); + +my $t = RT::Ticket->new($RT::SystemUser); +$t->Create(Subject => "Sample workflow test", + Owner => "root", + Queue => $q->Id); + + +=end testing + + +=head1 AUTHOR + +Jesse Vincent <jesse@bestpractical.com> + +=head1 SEE ALSO + +perl(1). + +=cut + +my %LINKTYPEMAP = ( + MemberOf => { Type => 'MemberOf', + Mode => 'Target', }, + Members => { Type => 'MemberOf', + Mode => 'Base', }, + HasMember => { Type => 'MemberOf', + Mode => 'Base', }, + RefersTo => { Type => 'RefersTo', + Mode => 'Target', }, + ReferredToBy => { Type => 'RefersTo', + Mode => 'Base', }, + DependsOn => { Type => 'DependsOn', + Mode => 'Target', }, + DependedOnBy => { Type => 'DependsOn', + Mode => 'Base', }, + +); + +# {{{ Scrip methods (Commit, Prepare) + +# {{{ sub Commit +#Do what we need to do and send it out. +sub Commit { + my $self = shift; + my (@links, @postponed); + + # XXX: cargo cult programming that works. i'll be back. + use bytes; + + # Create all the tickets we care about + return(1) unless $self->TicketObj->Type eq 'ticket'; + + %T::Tickets = (); + + foreach my $template_id ( @{ $self->{'template_order'} } ) { + $T::Tickets{'TOP'} = $T::TOP = $self->TicketObj; + $RT::Logger->debug("Workflow: processing $template_id of $T::TOP"); + + $T::ID = $template_id; + @T::AllID = @{ $self->{'template_order'} }; + + my $template = Text::Template->new( + TYPE => 'STRING', + SOURCE => $self->{'templates'}->{$template_id} + ); + + $RT::Logger->debug("Workflow: evaluating\n$self->{templates}{$template_id}"); + + my $err; + my $filled_in = $template->fill_in( PACKAGE => 'T', BROKEN => sub { + $err = { @_ }->{error}; + } ); + + $RT::Logger->debug("Workflow: yielding\n$filled_in"); + + if ($err) { + $RT::Logger->error("Ticket creation failed for ".$self->TicketObj->Id." ".$err); + while (my ($k, $v) = each %T::X) { + $RT::Logger->debug("Eliminating $template_id from ${k}'s parents."); + delete $v->{$template_id}; + } + next; + } + + my %args; + my @lines = ( split ( /\n/, $filled_in ) ); + while ( defined(my $line = shift @lines) ) { + if ( $line =~ /^(.*?):(?:\s+(.*))?$/ ) { + my $value = $2; + my $tag = lc ($1); + $tag =~ s/-//g; + + if (ref($args{$tag})) { #If it's an array, we want to push the value + push @{$args{$tag}}, $value; + } + elsif (defined ($args{$tag})) { #if we're about to get a second value, make it an array + $args{$tag} = [$args{$tag}, $value]; + } + else { #if there's nothing there, just set the value + $args{ $tag } = $value; + } + + if ( $tag eq 'content' ) { #just build up the content + # convert it to an array + $args{$tag} = defined($value) ? [ $value."\n" ] : []; + while ( defined(my $l = shift @lines) ) { + last if ($l =~ /^ENDOFCONTENT\s*$/) ; + push @{$args{'content'}}, $l."\n"; + } + } + } + } + + foreach my $date qw(due starts started resolved) { + my $dateobj = RT::Date->new($RT::SystemUser); + next unless $args{$date}; + if ($args{$date} =~ /^\d+$/) { + $dateobj->Set(Format => 'unix', Value => $args{$date}); + } else { + $dateobj->Set(Format => 'unknown', Value => $args{$date}); + } + $args{$date} = $dateobj->ISO; + } + my $mimeobj = MIME::Entity->new(); + $mimeobj->build(Type => $args{'contenttype'}, + Data => $args{'content'}); + # Now we have a %args to work with. + # Make sure we have at least the minimum set of + # reasonable data and do our thang + $T::Tickets{$template_id} ||= RT::Ticket->new($RT::SystemUser); + + # Deferred processing + push @links, ( + $T::Tickets{$template_id}, { + DependsOn => $args{'dependson'}, + DependedOnBy => $args{'dependedonby'}, + RefersTo => $args{'refersto'}, + ReferredToBy => $args{'referredtoby'}, + Members => $args{'members'}, + MemberOf => $args{'memberof'}, + } + ); + + push @postponed, ( + # Status is postponed so we don't violate dependencies + $T::Tickets{$template_id}, { + Status => $args{'status'}, + } + ); + + $args{'requestor'} ||= $self->TicketObj->Requestors->MemberEmailAddresses; + + my %ticketargs = ( Queue => $args{'queue'}, + Subject=> $args{'subject'}, + Status => 'new', + Due => $args{'due'}, + Starts => $args{'starts'}, + Started => $args{'started'}, + Resolved => $args{'resolved'}, + Owner => $args{'owner'}, + Requestor => $args{'requestor'}, + Cc => $args{'cc'}, + AdminCc=> $args{'admincc'}, + TimeWorked =>$args{'timeworked'}, + TimeEstimated =>$args{'timeestimated'}, + TimeLeft =>$args{'timeleft'}, + InitialPriority => $args{'initialpriority'}, + FinalPriority => $args{'finalpriority'}, + Type => $args{'type'}, + MIMEObj => $mimeobj); + + + foreach my $key (keys(%args)) { + $key =~ /^customfield-(\d+)$/ or next; + $ticketargs{ "CustomField-" . $1 } = $args{$key}; + } + + my ($id, $transid, $msg) = $T::Tickets{$template_id}->Create(%ticketargs); + if (!$id) { + $RT::Logger->error( + "Couldn't create related ticket $template_id for ". + $self->TicketObj->Id." ".$msg + ); + next; + } + + $RT::Logger->debug("Assigned $template_id with $id"); + $T::Tickets{$template_id}->SetOriginObj($self->TicketObj) + if $T::Tickets{$template_id}->can('SetOriginObj'); + } + + # postprocessing: add links + + while (my $ticket = shift(@links)) { + $RT::Logger->debug("Handling links for " . $ticket->Id); + my %args = %{shift(@links)}; + + foreach my $type ( keys %LINKTYPEMAP ) { + next unless (defined $args{$type}); + foreach my $link ( + ref( $args{$type} ) ? @{ $args{$type} } : ( $args{$type} ) ) + { + if (!exists $T::Tickets{$link}) { + $RT::Logger->debug("Skipping $type link for $link (non-existent)"); + next; + } + $RT::Logger->debug("Building $type link for $link: " . $T::Tickets{$link}->Id); + $link = $T::Tickets{$link}->Id; + + my ( $wval, $wmsg ) = $ticket->AddLink( + Type => $LINKTYPEMAP{$type}->{'Type'}, + $LINKTYPEMAP{$type}->{'Mode'} => $link, + Silent => 1 + ); + + $RT::Logger->warning("AddLink thru $link failed: $wmsg") unless $wval; + # push @non_fatal_errors, $wmsg unless ($wval); + } + + } + } + + # postponed actions -- Status only, currently + while (my $ticket = shift(@postponed)) { + $RT::Logger->debug("Handling postponed actions for $ticket"); + my %args = %{shift(@postponed)}; + + $ticket->SetStatus($args{Status}) if defined $args{Status}; + } + + return(1); +} +# }}} + +# {{{ sub Prepare + +sub Prepare { + my $self = shift; + + unless ($self->TemplateObj) { + $RT::Logger->warning("No template object handed to $self\n"); + } + + unless ($self->TransactionObj) { + $RT::Logger->warning("No transaction object handed to $self\n"); + + } + + unless ($self->TicketObj) { + $RT::Logger->warning("No ticket object handed to $self\n"); + + } + + + + +my $template_id; +foreach my $line (split(/\n/,$self->TemplateObj->Content)) { + if ($line =~ /^===Create-Ticket: (.*)$/) { + $template_id = $1; + push @{$self->{'template_order'}},$template_id; + } else { + $self->{'templates'}->{$template_id} .= $line."\n"; + } + + +} + + return 1; + +} + +# }}} + +# }}} + +eval "require RT::Action::CreateTickets_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/CreateTickets_Vendor.pm}); +eval "require RT::Action::CreateTickets_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/CreateTickets_Local.pm}); + +1; + diff --git a/rt/lib/RT/Action/EscalatePriority.pm b/rt/lib/RT/Action/EscalatePriority.pm new file mode 100644 index 000000000..7ed63ae01 --- /dev/null +++ b/rt/lib/RT/Action/EscalatePriority.pm @@ -0,0 +1,142 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Action::EscalatePriority + +=head1 DESCRIPTION + +EscalatePriority is a ScripAction which is NOT intended to be called per +transaction. It's intended to be called by an RT escalation daemon. +(The daemon is called escalator). + +EsclatePriority uses the following formula to change a ticket's priority: + + Priority = Priority + (( FinalPriority - Priority ) / ( DueDate-Today)) + +Unless the duedate is past, in which case priority gets bumped straight +to final priority. + +In this way, priority is either increased or decreased toward the final priority +as the ticket heads toward its due date. + + +=cut + + +package RT::Action::EscalatePriority; +require RT::Action::Generic; + +use strict; +use vars qw/@ISA/; +@ISA=qw(RT::Action::Generic); + +#Do what we need to do and send it out. + +#What does this type of Action does + +# {{{ sub Describe +sub Describe { + my $self = shift; + return (ref $self . " will move a ticket's priority toward its final priority."); +} +# }}} + + +# {{{ sub Prepare +sub Prepare { + my $self = shift; + + if ($self->TicketObj->Priority() == $self->TicketObj->FinalPriority()) { + # no update necessary. + return 0; + } + + #compute the number of days until the ticket is due + my $due = $self->TicketObj->DueObj(); + + + # If we don't have a due date, adjust the priority by one + # until we hit the final priority + if ($due->Unix() < 1) { + if ( $self->TicketObj->Priority > $self->TicketObj->FinalPriority ){ + $self->{'prio'} = ($self->TicketObj->Priority - 1); + return 1; + } + elsif ( $self->TicketObj->Priority < $self->TicketObj->FinalPriority ){ + $self->{'prio'} = ($self->TicketObj->Priority + 1); + return 1; + } + # otherwise the priority is at the final priority. we don't need to + # Continue + else { + return 0; + } + } + + # we've got a due date. now there are other things we should do + else { + my $diff_in_seconds = $due->Diff(time()); + my $diff_in_days = int( $diff_in_seconds / 86400); + + #if we haven't hit the due date yet + if ($diff_in_days > 0 ) { + + # compute the difference between the current priority and the + # final priority + + my $prio_delta = + $self->TicketObj->FinalPriority() - $self->TicketObj->Priority; + + my $inc_priority_by = int( $prio_delta / $diff_in_days ); + + #set the ticket's priority to that amount + $self->{'prio'} = $self->TicketObj->Priority + $inc_priority_by; + + } + #if $days is less than 1, set priority to final_priority + else { + $self->{'prio'} = $self->TicketObj->FinalPriority(); + } + + } + return 1; +} +# }}} + +sub Commit { + my $self = shift; + my ($val, $msg) = $self->TicketObj->SetPriority($self->{'prio'}); + + unless ($val) { + $RT::Logger->debug($self . " $msg\n"); + } +} + +eval "require RT::Action::EscalatePriority_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/EscalatePriority_Vendor.pm}); +eval "require RT::Action::EscalatePriority_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/EscalatePriority_Local.pm}); + +1; diff --git a/rt/lib/RT/Action/SetPriority.pm b/rt/lib/RT/Action/SetPriority.pm new file mode 100644 index 000000000..515eeb58c --- /dev/null +++ b/rt/lib/RT/Action/SetPriority.pm @@ -0,0 +1,61 @@ +# 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. +# +# 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::Action::SetPriority; +require RT::Action::Generic; + +use strict; +use vars qw/@ISA/; +@ISA=qw(RT::Action::Generic); + +#Do what we need to do and send it out. + +#What does this type of Action does + +# {{{ sub Describe +sub Describe { + my $self = shift; + return (ref $self . " will set a ticket's priority to the argument provided."); +} +# }}} + + +# {{{ sub Prepare +sub Prepare { + # nothing to prepare + return 1; +} +# }}} + +sub Commit { + my $self = shift; + $self->TicketObj->SetPriority($self->Argument); + +} + +eval "require RT::Action::SetPriority_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/SetPriority_Vendor.pm}); +eval "require RT::Action::SetPriority_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/SetPriority_Local.pm}); + +1; diff --git a/rt/lib/RT/Action/UserDefined.pm b/rt/lib/RT/Action/UserDefined.pm new file mode 100644 index 000000000..e2e3d72ce --- /dev/null +++ b/rt/lib/RT/Action/UserDefined.pm @@ -0,0 +1,71 @@ +# 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. +# +# 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::Action::UserDefined; +use RT::Action::Generic; + +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Action::Generic); + +=head2 Prepare + +This happens on every transaction. it's always applicable + +=cut + +sub Prepare { + my $self = shift; + my $retval = eval $self->ScripObj->CustomPrepareCode; + if ($@) { + $RT::Logger->error("Scrip ".$self->ScripObj->Id. " Prepare failed: ".$@); + return (undef); + } + return ($retval); +} + +=head2 Commit + +This happens on every transaction. it's always applicable + +=cut + +sub Commit { + my $self = shift; + my $retval = eval $self->ScripObj->CustomCommitCode; + if ($@) { + $RT::Logger->error("Scrip ".$self->ScripObj->Id. " Commit failed: ".$@); + return (undef); + } + return ($retval); +} + +eval "require RT::Action::UserDefined_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/UserDefined_Vendor.pm}); +eval "require RT::Action::UserDefined_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Action/UserDefined_Local.pm}); + +1; + diff --git a/rt/lib/RT/Attachment_Overlay.pm b/rt/lib/RT/Attachment_Overlay.pm new file mode 100644 index 000000000..d31aa75ad --- /dev/null +++ b/rt/lib/RT/Attachment_Overlay.pm @@ -0,0 +1,571 @@ +# 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. +# +# 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 +=head1 SYNOPSIS + + use RT::Attachment; + + +=head1 DESCRIPTION + +This module should never be instantiated directly by client code. it's an internal +module which should only be instantiated through exported APIs in Ticket, Queue and other +similar objects. + + +=head1 METHODS + + +=begin testing + +ok (require RT::Attachment); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +use MIME::Base64; +use MIME::QuotedPrint; + +# {{{ sub _ClassAccessible +sub _ClassAccessible { + { + TransactionId => { 'read'=>1, 'public'=>1, }, + MessageId => { 'read'=>1, }, + Parent => { 'read'=>1, }, + ContentType => { 'read'=>1, }, + Subject => { 'read'=>1, }, + Content => { 'read'=>1, }, + ContentEncoding => { 'read'=>1, }, + Headers => { 'read'=>1, }, + Filename => { 'read'=>1, }, + Creator => { 'read'=>1, 'auto'=>1, }, + Created => { 'read'=>1, 'auto'=>1, }, + }; +} +# }}} + +# {{{ sub TransactionObj + +=head2 TransactionObj + +Returns the transaction object asscoiated with this attachment. + +=cut + +sub TransactionObj { + require RT::Transaction; + my $self=shift; + unless (exists $self->{_TransactionObj}) { + $self->{_TransactionObj}=RT::Transaction->new($self->CurrentUser); + $self->{_TransactionObj}->Load($self->TransactionId); + } + return $self->{_TransactionObj}; +} + +# }}} + +# {{{ sub Create + +=head2 Create + +Create a new attachment. Takes a paramhash: + + 'Attachment' Should be a single MIME body with optional subparts + 'Parent' is an optional Parent RT::Attachment object + 'TransactionId' is the mandatory id of the Transaction this attachment is associated with.; + +=cut + +sub Create { + my $self = shift; + my ($id); + my %args = ( id => 0, + TransactionId => 0, + Parent => 0, + Attachment => undef, + @_ ); + + #For ease of reference + my $Attachment = $args{'Attachment'}; + + #if we didn't specify a ticket, we need to bail + if ( $args{'TransactionId'} == 0 ) { + $RT::Logger->crit( "RT::Attachment->Create couldn't, as you didn't specify a transaction\n" ); + return (0); + + } + + #If we possibly can, collapse it to a singlepart + $Attachment->make_singlepart; + + #Get the subject + my $Subject = $Attachment->head->get( 'subject', 0 ); + defined($Subject) or $Subject = ''; + chomp($Subject); + + #Get the filename + my $Filename = $Attachment->head->recommended_filename || eval { + ${ $Attachment->head->{mail_hdr_hash}{'Content-Disposition'}[0] } + =~ /^.*\bfilename="(.*)"$/ ? $1 : '' + }; + + if ( $Attachment->parts ) { + $id = $self->SUPER::Create( + TransactionId => $args{'TransactionId'}, + Parent => 0, + ContentType => $Attachment->mime_type, + Headers => $Attachment->head->as_string, + Subject => $Subject); + + foreach my $part ( $Attachment->parts ) { + my $SubAttachment = new RT::Attachment( $self->CurrentUser ); + $SubAttachment->Create( + TransactionId => $args{'TransactionId'}, + Parent => $id, + Attachment => $part, + ContentType => $Attachment->mime_type, + Headers => $Attachment->head->as_string(), + + ); + } + return ($id); + } + + #If it's not multipart + else { + + my $ContentEncoding = 'none'; + + my $Body = $Attachment->bodyhandle->as_string; + + #get the max attachment length from RT + my $MaxSize = $RT::MaxAttachmentSize; + + #if the current attachment contains nulls and the + #database doesn't support embedded nulls + + if ( $RT::AlwaysUseBase64 or + ( !$RT::Handle->BinarySafeBLOBs ) && ( $Body =~ /\x00/ ) ) { + + # set a flag telling us to mimencode the attachment + $ContentEncoding = 'base64'; + + #cut the max attchment size by 25% (for mime-encoding overhead. + $RT::Logger->debug("Max size is $MaxSize\n"); + $MaxSize = $MaxSize * 3 / 4; + # Some databases (postgres) can't handle non-utf8 data + } elsif ( !$RT::Handle->BinarySafeBLOBs + && $Attachment->mime_type !~ /text\/plain/gi + && !Encode::is_utf8( $Body, 1 ) ) { + $ContentEncoding = 'quoted-printable'; + } + + #if the attachment is larger than the maximum size + if ( ($MaxSize) and ( $MaxSize < length($Body) ) ) { + + # if we're supposed to truncate large attachments + if ($RT::TruncateLongAttachments) { + + # truncate the attachment to that length. + $Body = substr( $Body, 0, $MaxSize ); + + } + + # elsif we're supposed to drop large attachments on the floor, + elsif ($RT::DropLongAttachments) { + + # drop the attachment on the floor + $RT::Logger->info( "$self: Dropped an attachment of size " . length($Body) . "\n" . "It started: " . substr( $Body, 0, 60 ) . "\n" ); + return (undef); + } + } + + # if we need to mimencode the attachment + if ( $ContentEncoding eq 'base64' ) { + + # base64 encode the attachment + Encode::_utf8_off($Body); + $Body = MIME::Base64::encode_base64($Body); + + } elsif ($ContentEncoding eq 'quoted-printable') { + Encode::_utf8_off($Body); + $Body = MIME::QuotedPrint::encode($Body); + } + + + my $id = $self->SUPER::Create( TransactionId => $args{'TransactionId'}, + ContentType => $Attachment->mime_type, + ContentEncoding => $ContentEncoding, + Parent => $args{'Parent'}, + Headers => $Attachment->head->as_string, + Subject => $Subject, + Content => $Body, + Filename => $Filename, ); + return ($id); + } +} + +# }}} + + +=head2 Import + +Create an attachment exactly as specified in the named parameters. + +=cut + + +sub Import { + my $self = shift; + return($self->SUPER::Create(@_)); +} + +# {{{ sub Content + +=head2 Content + +Returns the attachment's content. if it's base64 encoded, decode it +before returning it. + +=cut + +sub Content { + my $self = shift; + my $decode_utf8 = (($self->ContentType eq 'text/plain') ? 1 : 0); + + if ( $self->ContentEncoding eq 'none' || ! $self->ContentEncoding ) { + return $self->_Value( + 'Content', + decode_utf8 => $decode_utf8, + ); + } elsif ( $self->ContentEncoding eq 'base64' ) { + return ( $decode_utf8 + ? Encode::decode_utf8(MIME::Base64::decode_base64($self->_Value('Content'))) + : MIME::Base64::decode_base64($self->_Value('Content')) + ); + } elsif ( $self->ContentEncoding eq 'quoted-printable' ) { + return ( $decode_utf8 + ? Encode::decode_utf8(MIME::QuotedPrint::decode($self->_Value('Content'))) + : MIME::QuotedPrint::decode($self->_Value('Content')) + ); + } else { + return( $self->loc("Unknown ContentEncoding [_1]", $self->ContentEncoding)); + } +} + + +# }}} + + +# {{{ sub OriginalContent + +=head2 OriginalContent + +Returns the attachment's content as octets before RT's mangling. +Currently, this just means restoring text/plain content back to its +original encoding. + +=cut + +sub OriginalContent { + my $self = shift; + + return $self->Content unless $self->ContentType eq 'text/plain'; + my $enc = $self->OriginalEncoding; + + my $content; + if ( $self->ContentEncoding eq 'none' || ! $self->ContentEncoding ) { + $content = $self->_Value('Content', decode_utf8 => 0); + } elsif ( $self->ContentEncoding eq 'base64' ) { + $content = MIME::Base64::decode_base64($self->_Value('Content', decode_utf8 => 0)); + } elsif ( $self->ContentEncoding eq 'quoted-printable' ) { + return MIME::QuotedPrint::decode($self->_Value('Content', decode_utf8 => 0)); + } else { + return( $self->loc("Unknown ContentEncoding [_1]", $self->ContentEncoding)); + } + + # Encode::_utf8_on($content); + if (!$enc or $enc eq 'utf8' or $enc eq 'utf-8') { + # If we somehow fail to do the decode, at least push out the raw bits + eval {return( Encode::decode_utf8($content))} || return ($content); + } + Encode::from_to($content, 'utf8' => $enc); + return $content; +} + +# }}} + + +# {{{ sub OriginalEncoding + +=head2 OriginalEncoding + +Returns the attachment's original encoding. + +=cut + +sub OriginalEncoding { + my $self = shift; + return $self->GetHeader('X-RT-Original-Encoding'); +} + +# }}} + +# {{{ sub Children + +=head2 Children + + Returns an RT::Attachments object which is preloaded with all Attachments objects with this Attachment\'s Id as their 'Parent' + +=cut + +sub Children { + my $self = shift; + + my $kids = new RT::Attachments($self->CurrentUser); + $kids->ChildrenOf($self->Id); + return($kids); +} + +# }}} + +# {{{ UTILITIES + +# {{{ sub Quote + + + +sub Quote { + my $self=shift; + my %args=(Reply=>undef, # Prefilled reply (i.e. from the KB/FAQ system) + @_); + + my ($quoted_content, $body, $headers); + my $max=0; + + # TODO: Handle Multipart/Mixed (eventually fix the link in the + # ShowHistory web template?) + if ($self->ContentType =~ m{^(text/plain|message)}i) { + $body=$self->Content; + + # Do we need any preformatting (wrapping, that is) of the message? + + # Remove quoted signature. + $body =~ s/\n-- \n(.*)$//s; + + # What's the longest line like? + foreach (split (/\n/,$body)) { + $max=length if ( length > $max); + } + + if ($max>76) { + require Text::Wrapper; + my $wrapper=new Text::Wrapper + ( + columns => 70, + body_start => ($max > 70*3 ? ' ' : ''), + par_start => '' + ); + $body=$wrapper->wrap($body); + } + + $body =~ s/^/> /gm; + + $body = '[' . $self->TransactionObj->CreatorObj->Name() . ' - ' . $self->TransactionObj->CreatedAsString() + . "]:\n\n" + . $body . "\n\n"; + + } else { + $body = "[Non-text message not quoted]\n\n"; + } + + $max=60 if $max<60; + $max=70 if $max>78; + $max+=2; + + return (\$body, $max); +} +# }}} + +# {{{ sub NiceHeaders - pulls out only the most relevant headers + +=head2 NiceHeaders + +Returns the To, From, Cc, Date and Subject headers. + +It is a known issue that this breaks if any of these headers are not +properly unfolded. + +=cut + +sub NiceHeaders { + my $self=shift; + my $hdrs=""; + for (split(/\n/,$self->Headers)) { + $hdrs.="$_\n" if /^(To|From|RT-Send-Cc|Cc|Date|Subject): /i + } + return $hdrs; +} +# }}} + +# {{{ sub Headers + +=head2 Headers + +Returns this object's headers as a string. This method specifically +removes the RT-Send-Bcc: header, so as to never reveal to whom RT sent a Bcc. +We need to record the RT-Send-Cc and RT-Send-Bcc values so that we can actually send +out mail. (The mailing rules are seperated from the ticket update code by +an abstraction barrier that makes it impossible to pass this data directly + +=cut + +sub Headers { + my $self = shift; + my $hdrs=""; + for (split(/\n/,$self->SUPER::Headers)) { + $hdrs.="$_\n" unless /^(RT-Send-Bcc): /i + } + return $hdrs; +} + + +# }}} + +# {{{ sub GetHeader + +=head2 GetHeader ( 'Tag') + +Returns the value of the header Tag as a string. This bypasses the weeding out +done in Headers() above. + +=cut + +sub GetHeader { + my $self = shift; + my $tag = shift; + foreach my $line (split(/\n/,$self->SUPER::Headers)) { + if ($line =~ /^\Q$tag\E:\s+(.*)$/i) { #if we find the header, return its value + return ($1); + } + } + + # we found no header. return an empty string + return undef; +} +# }}} + +# {{{ sub SetHeader + +=head2 SetHeader ( 'Tag', 'Value' ) + +Replace or add a Header to the attachment's headers. + +=cut + +sub SetHeader { + my $self = shift; + my $tag = shift; + my $newheader = ''; + + foreach my $line (split(/\n/,$self->SUPER::Headers)) { + if (defined $tag and $line =~ /^\Q$tag\E:\s+(.*)$/i) { + $newheader .= "$tag: $_[0]\n"; + undef $tag; + } + else { + $newheader .= "$line\n"; + } + } + + $newheader .= "$tag: $_[0]\n" if defined $tag; + $self->__Set( Field => 'Headers', Value => $newheader); +} +# }}} + +# {{{ sub _Value + +=head2 _Value + +Takes the name of a table column. +Returns its value as a string, if the user passes an ACL check + +=cut + +sub _Value { + + my $self = shift; + my $field = shift; + + + #if the field is public, return it. + if ($self->_Accessible($field, 'public')) { + #$RT::Logger->debug("Skipping ACL check for $field\n"); + return($self->__Value($field, @_)); + + } + + #If it's a comment, we need to be extra special careful + elsif ( (($self->TransactionObj->CurrentUserHasRight('ShowTicketComments')) and + ($self->TransactionObj->Type eq 'Comment') ) or + ($self->TransactionObj->CurrentUserHasRight('ShowTicket'))) { + return($self->__Value($field, @_)); + } + #if they ain't got rights to see, don't let em + else { + return(undef); + } + + +} + +# }}} + +sub ContentLength { + my $self = shift; + + unless ( (($self->TransactionObj->CurrentUserHasRight('ShowTicketComments')) and + ($self->TransactionObj->Type eq 'Comment') ) or + ($self->TransactionObj->CurrentUserHasRight('ShowTicket'))) { + return undef; + } + + if (my $len = $self->GetHeader('Content-Length')) { + return $len; + } + + { + use bytes; + my $len = length($self->Content); + $self->SetHeader('Content-Length' => $len); + return $len; + } +} + +# }}} + +1; diff --git a/rt/lib/RT/Attachments_Overlay.pm b/rt/lib/RT/Attachments_Overlay.pm new file mode 100644 index 000000000..ce94c9dfa --- /dev/null +++ b/rt/lib/RT/Attachments_Overlay.pm @@ -0,0 +1,116 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Attachments - a collection of RT::Attachment objects + +=head1 SYNOPSIS + + use RT::Attachments; + +=head1 DESCRIPTION + +This module should never be called directly by client code. it's an internal module which +should only be accessed through exported APIs in Ticket, Queue and other similar objects. + + +=head1 METHODS + + +=begin testing + +ok (require RT::Attachments); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +# {{{ sub _Init +sub _Init { + my $self = shift; + + $self->{'table'} = "Attachments"; + $self->{'primary_key'} = "id"; + return ( $self->SUPER::_Init(@_)); +} +# }}} + + +# {{{ sub ContentType + +=head2 ContentType (VALUE => 'text/plain', ENTRYAGGREGATOR => 'OR', OPERATOR => '=' ) + +Limit result set to attachments of ContentType 'TYPE'... + +=cut + + +sub ContentType { + my $self = shift; + my %args = ( VALUE => 'text/plain', + OPERATOR => '=', + ENTRYAGGREGATOR => 'OR', + @_); + + $self->Limit ( FIELD => 'ContentType', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + ENTRYAGGREGATOR => $args{'ENTRYAGGREGATOR'}); +} +# }}} + +# {{{ sub ChildrenOf + +=head2 ChildrenOf ID + +Limit result set to children of Attachment ID + +=cut + + +sub ChildrenOf { + my $self = shift; + my $attachment = shift; + $self->Limit ( FIELD => 'Parent', + VALUE => $attachment); +} +# }}} + +# {{{ sub NewItem +sub NewItem { + my $self = shift; + + use RT::Attachment; + my $item = new RT::Attachment($self->CurrentUser); + return($item); +} +# }}} + 1; + + + + diff --git a/rt/lib/RT/Base.pm b/rt/lib/RT/Base.pm new file mode 100644 index 000000000..3b2dcfd3d --- /dev/null +++ b/rt/lib/RT/Base.pm @@ -0,0 +1,97 @@ +# 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. +# +# 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::Base; +use Carp; + +use strict; +use vars qw(@EXPORT); + +@EXPORT=qw(loc CurrentUser); + +=head1 FUNCTIONS + + + +# {{{ sub CurrentUser + +=head2 CurrentUser + +If called with an argument, sets the current user to that user object. +This will affect ACL decisions, etc. +Returns the current user + +=cut + +sub CurrentUser { + my $self = shift; + + if (@_) { + $self->{'user'} = shift; + } + + unless ( $self->{'user'} ) { + $RT::Logger->err( + "$self was created without a CurrentUser\n" . Carp::cluck() ); + return (0); + die; + } + return ( $self->{'user'} ); +} + +# }}} + + + +=item loc LOC_STRING + +l is a method which takes a loc string +to this object's CurrentUser->LanguageHandle for localization. + +you call it like this: + + $self->loc("I have [quant,_1,concrete mixer].", 6); + +In english, this would return: + I have 6 concrete mixers. + + +=cut + +sub loc { + my $self = shift; + unless ($self->CurrentUser) { + use Carp; + Carp::confess("No currentuser"); + return ("Critical error:$self has no CurrentUser", $self); + } + return($self->CurrentUser->loc(@_)); +} + +eval "require RT::Base_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Base_Vendor.pm}); +eval "require RT::Base_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Base_Local.pm}); + + +1; diff --git a/rt/lib/RT/CachedGroupMember.pm b/rt/lib/RT/CachedGroupMember.pm new file mode 100644 index 000000000..fc3e1bf00 --- /dev/null +++ b/rt/lib/RT/CachedGroupMember.pm @@ -0,0 +1,258 @@ +# 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. +# +# 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 +# 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::CachedGroupMember + + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +=head1 METHODS + +=cut + +package RT::CachedGroupMember; +use RT::Record; + + +use vars qw( @ISA ); +@ISA= qw( RT::Record ); + +sub _Init { + my $self = shift; + + $self->Table('CachedGroupMembers'); + $self->SUPER::_Init(@_); +} + + + + + +=item Create PARAMHASH + +Create takes a hash of values and creates a row in the database: + + int(11) 'GroupId'. + int(11) 'MemberId'. + int(11) 'Via'. + int(11) 'ImmediateParentId'. + smallint(6) 'Disabled'. + +=cut + + + + +sub Create { + my $self = shift; + my %args = ( + GroupId => '', + MemberId => '', + Via => '', + ImmediateParentId => '', + Disabled => '0', + + @_); + $self->SUPER::Create( + GroupId => $args{'GroupId'}, + MemberId => $args{'MemberId'}, + Via => $args{'Via'}, + ImmediateParentId => $args{'ImmediateParentId'}, + Disabled => $args{'Disabled'}, +); + +} + + + +=item id + +Returns the current value of id. +(In the database, id is stored as int(11).) + + +=cut + + +=item GroupId + +Returns the current value of GroupId. +(In the database, GroupId is stored as int(11).) + + + +=item SetGroupId VALUE + + +Set GroupId to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, GroupId will be stored as a int(11).) + + +=cut + + +=item MemberId + +Returns the current value of MemberId. +(In the database, MemberId is stored as int(11).) + + + +=item SetMemberId VALUE + + +Set MemberId to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, MemberId will be stored as a int(11).) + + +=cut + + +=item Via + +Returns the current value of Via. +(In the database, Via is stored as int(11).) + + + +=item SetVia VALUE + + +Set Via to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Via will be stored as a int(11).) + + +=cut + + +=item ImmediateParentId + +Returns the current value of ImmediateParentId. +(In the database, ImmediateParentId is stored as int(11).) + + + +=item SetImmediateParentId VALUE + + +Set ImmediateParentId to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, ImmediateParentId will be stored as a int(11).) + + +=cut + + +=item Disabled + +Returns the current value of Disabled. +(In the database, Disabled is stored as smallint(6).) + + + +=item SetDisabled VALUE + + +Set Disabled to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Disabled will be stored as a smallint(6).) + + +=cut + + + +sub _ClassAccessible { + { + + id => + {read => 1, type => 'int(11)', default => ''}, + GroupId => + {read => 1, write => 1, type => 'int(11)', default => ''}, + MemberId => + {read => 1, write => 1, type => 'int(11)', default => ''}, + Via => + {read => 1, write => 1, type => 'int(11)', default => ''}, + ImmediateParentId => + {read => 1, write => 1, type => 'int(11)', default => ''}, + Disabled => + {read => 1, write => 1, type => 'smallint(6)', default => '0'}, + + } +}; + + + eval "require RT::CachedGroupMember_Overlay"; + if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMember_Overlay.pm}) { + die $@; + }; + + eval "require RT::CachedGroupMember_Vendor"; + if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMember_Vendor.pm}) { + die $@; + }; + + eval "require RT::CachedGroupMember_Local"; + if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMember_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::CachedGroupMember_Overlay, RT::CachedGroupMember_Vendor, RT::CachedGroupMember_Local + +=cut + + +1; diff --git a/rt/lib/RT/CachedGroupMember_Overlay.pm b/rt/lib/RT/CachedGroupMember_Overlay.pm new file mode 100644 index 000000000..f2dc86f0d --- /dev/null +++ b/rt/lib/RT/CachedGroupMember_Overlay.pm @@ -0,0 +1,323 @@ +# 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. +# +# 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); + +# {{{ Create + +=item Create PARAMHASH + +Create takes a hash of values and creates a row in the database: + + 'Group' is the "top level" group we're building the cache for. This is an + RT::Principal object + + 'Member' is the RT::Principal of the user or group we're adding + to the cache. + + 'ImmediateParent' is the RT::Principal of the group that this principal + belongs to to get here + + int(11) 'Via' is an internal reference to CachedGroupMembers->Id of + the "parent" record of this cached group member. It should be empty if this + member is a "direct" member of this group. (In that case, it will be set to this + cached group member's id after creation) + + This routine should _only_ be called by GroupMember->Create + +=cut + +sub Create { + my $self = shift; + my %args = ( Group => '', + Member => '', + ImmediateParent => '', + Via => '0', + Disabled => '0', + @_ ); + + unless ( $args{'Member'} + && UNIVERSAL::isa( $args{'Member'}, 'RT::Principal' ) + && $args{'Member'}->Id ) { + $RT::Logger->debug("$self->Create: bogus Member argument"); + } + + unless ( $args{'Group'} + && UNIVERSAL::isa( $args{'Group'}, 'RT::Principal' ) + && $args{'Group'}->Id ) { + $RT::Logger->debug("$self->Create: bogus Group argument"); + } + + unless ( $args{'ImmediateParent'} + && UNIVERSAL::isa( $args{'ImmediateParent'}, 'RT::Principal' ) + && $args{'ImmediateParent'}->Id ) { + $RT::Logger->debug("$self->Create: bogus ImmediateParent argument"); + } + + # If the parent group for this group member is disabled, it's disabled too, along with all its children + if ( $args{'ImmediateParent'}->Disabled ) { + $args{'Disabled'} = $args{'ImmediateParent'}->Disabled; + } + + my $id = $self->SUPER::Create( + GroupId => $args{'Group'}->Id, + MemberId => $args{'Member'}->Id, + ImmediateParentId => $args{'ImmediateParent'}->Id, + Disabled => $args{'Disabled'}, + Via => $args{'Via'}, ); + + unless ($id) { + $RT::Logger->warn( "Couldn't create " + . $args{'Member'} + . " as a cached member of " + . $args{'Group'}->Id . " via " + . $args{'Via'} ); + return (undef); #this will percolate up and bail out of the transaction + } + if ( $self->__Value('Via') == 0 ) { + my ( $vid, $vmsg ) = $self->__Set( Field => 'Via', Value => $id ); + unless ($vid) { + $RT::Logger->warn( "Due to a via error, couldn't create " + . $args{'Member'} + . " as a cached member of " + . $args{'Group'}->Id . " via " + . $args{'Via'} ); + return (undef) + ; #this will percolate up and bail out of the transaction + } + } + + if ( $args{'Member'}->IsGroup() ) { + my $GroupMembers = $args{'Member'}->Object->MembersObj(); + while ( my $member = $GroupMembers->Next() ) { + my $cached_member = + RT::CachedGroupMember->new( $self->CurrentUser ); + my $c_id = $cached_member->Create( + Group => $args{'Group'}, + Member => $member->MemberObj, + ImmediateParent => $args{'Member'}, + Disabled => $args{'Disabled'}, + Via => $id ); + unless ($c_id) { + return (undef); #percolate the error upwards. + # the caller will log an error and abort the transaction + } + + } + } + + return ($id); + +} + +# }}} + +# {{{ Delete + +=head2 Delete + +Deletes the current CachedGroupMember from the group it's in and cascades +the delete to all submembers. This routine could be completely excised if +mysql supported foreign keys with cascading deletes. + +=cut + +sub Delete { + my $self = shift; + + + my $member = $self->MemberObj(); + if ( $member->IsGroup ) { + my $deletable = RT::CachedGroupMembers->new( $self->CurrentUser ); + + $deletable->Limit( FIELD => 'id', + OPERATOR => '!=', + VALUE => $self->id ); + $deletable->Limit( FIELD => 'Via', + OPERATOR => '=', + VALUE => $self->id ); + + while ( my $kid = $deletable->Next ) { + my $kid_err = $kid->Delete(); + unless ($kid_err) { + $RT::Logger->error( + "Couldn't delete CachedGroupMember " . $kid->Id ); + return (undef); + } + } + } + my $err = $self->SUPER::Delete(); + unless ($err) { + $RT::Logger->error( "Couldn't delete CachedGroupMember " . $self->Id ); + return (undef); + } + + # Unless $self->GroupObj still has the member recursively $self->MemberObj + # (Since we deleted the database row above, $self no longer counts) + unless ( $self->GroupObj->Object->HasMemberRecursively( $self->MemberObj ) ) { + + + # Find all ACEs granted to $self->GroupId + my $acl = RT::ACL->new($RT::SystemUser); + $acl->LimitToPrincipal( Id => $self->GroupId ); + + + while ( my $this_ace = $acl->Next() ) { + # Find all ACEs which $self-MemberObj has delegated from $this_ace + my $delegations = RT::ACL->new($RT::SystemUser); + $delegations->DelegatedFrom( Id => $this_ace->Id ); + $delegations->DelegatedBy( Id => $self->MemberId ); + + # For each delegation + while ( my $delegation = $delegations->Next ) { + # WHACK IT + my $del_ret = $delegation->_Delete(InsideTransaction => 1); + unless ($del_ret) { + $RT::Logger->crit("Couldn't delete an ACL delegation that we know exists ". $delegation->Id); + return(undef); + } + } + } + } + return ($err); +} + +# }}} + +# {{{ SetDisabled + +=head2 SetDisabled + +SetDisableds the current CachedGroupMember from the group it's in and cascades +the SetDisabled to all submembers. This routine could be completely excised if +mysql supported foreign keys with cascading SetDisableds. + +=cut + +sub SetDisabled { + my $self = shift; + my $val = shift; + + my $err = $self->SUPER::SetDisabled($val); + unless ($err) { + $RT::Logger->error( "Couldn't SetDisabled CachedGroupMember " . $self->Id ); + return (undef); + } + + my $member = $self->MemberObj(); + if ( $member->IsGroup ) { + my $deletable = RT::CachedGroupMembers->new( $self->CurrentUser ); + + $deletable->Limit( FIELD => 'Via', OPERATOR => '=', VALUE => $self->id ); + $deletable->Limit( FIELD => 'id', OPERATOR => '!=', VALUE => $self->id ); + + while ( my $kid = $deletable->Next ) { + my $kid_err = $kid->SetDisabled($val ); + unless ($kid_err) { + $RT::Logger->error( "Couldn't SetDisabled CachedGroupMember " . $kid->Id ); + return (undef); + } + } + } + + # Unless $self->GroupObj still has the member recursively $self->MemberObj + # (Since we SetDisabledd the database row above, $self no longer counts) + unless ( $self->GroupObj->Object->HasMemberRecursively( $self->MemberObj ) ) { + # Find all ACEs granted to $self->GroupId + my $acl = RT::ACL->new($RT::SystemUser); + $acl->LimitToPrincipal( Id => $self->GroupId ); + + while ( my $this_ace = $acl->Next() ) { + # Find all ACEs which $self-MemberObj has delegated from $this_ace + my $delegations = RT::ACL->new($RT::SystemUser); + $delegations->DelegatedFrom( Id => $this_ace->Id ); + $delegations->DelegatedBy( Id => $self->MemberId ); + + # For each delegation, blow away the delegation + while ( my $delegation = $delegations->Next ) { + # WHACK IT + my $del_ret = $delegation->_Delete(InsideTransaction => 1); + unless ($del_ret) { + $RT::Logger->crit("Couldn't delete an ACL delegation that we know exists ". $delegation->Id); + return(undef); + } + } + } + } + return ($err); +} + +# }}} + +# {{{ GroupObj + +=head2 GroupObj + +Returns the RT::Principal object for this group Group + +=cut + +sub GroupObj { + my $self = shift; + my $principal = RT::Principal->new( $self->CurrentUser ); + $principal->Load( $self->GroupId ); + return ($principal); +} + +# }}} + +# {{{ ImmediateParentObj + +=head2 ImmediateParentObj + +Returns the RT::Principal object for this group ImmediateParent + +=cut + +sub ImmediateParentObj { + my $self = shift; + my $principal = RT::Principal->new( $self->CurrentUser ); + $principal->Load( $self->ImmediateParentId ); + return ($principal); +} + +# }}} + +# {{{ MemberObj + +=head2 MemberObj + +Returns the RT::Principal object for this group member + +=cut + +sub MemberObj { + my $self = shift; + my $principal = RT::Principal->new( $self->CurrentUser ); + $principal->Load( $self->MemberId ); + return ($principal); +} + +# }}} +1; diff --git a/rt/lib/RT/CachedGroupMembers.pm b/rt/lib/RT/CachedGroupMembers.pm new file mode 100644 index 000000000..b520f7b9c --- /dev/null +++ b/rt/lib/RT/CachedGroupMembers.pm @@ -0,0 +1,115 @@ +# 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. +# +# 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 +# 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::CachedGroupMembers -- Class Description + +=head1 SYNOPSIS + + use RT::CachedGroupMembers + +=head1 DESCRIPTION + + +=head1 METHODS + +=cut + +package RT::CachedGroupMembers; + +use RT::SearchBuilder; +use RT::CachedGroupMember; + +use vars qw( @ISA ); +@ISA= qw(RT::SearchBuilder); + + +sub _Init { + my $self = shift; + $self->{'table'} = 'CachedGroupMembers'; + $self->{'primary_key'} = 'id'; + + + return ( $self->SUPER::_Init(@_) ); +} + + +=item NewItem + +Returns an empty new RT::CachedGroupMember item + +=cut + +sub NewItem { + my $self = shift; + return(RT::CachedGroupMember->new($self->CurrentUser)); +} + + eval "require RT::CachedGroupMembers_Overlay"; + if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMembers_Overlay.pm}) { + die $@; + }; + + eval "require RT::CachedGroupMembers_Vendor"; + if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMembers_Vendor.pm}) { + die $@; + }; + + eval "require RT::CachedGroupMembers_Local"; + if ($@ && $@ !~ qr{^Can't locate RT/CachedGroupMembers_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::CachedGroupMembers_Overlay, RT::CachedGroupMembers_Vendor, RT::CachedGroupMembers_Local + +=cut + + +1; diff --git a/rt/lib/RT/CachedGroupMembers_Overlay.pm b/rt/lib/RT/CachedGroupMembers_Overlay.pm new file mode 100644 index 000000000..fd0fd9055 --- /dev/null +++ b/rt/lib/RT/CachedGroupMembers_Overlay.pm @@ -0,0 +1,148 @@ +# 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. +# +# 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 +=head1 NAME + + RT::CachedGroupMembers - a collection of RT::GroupMember objects + +=head1 SYNOPSIS + + use RT::CachedGroupMembers; + +=head1 DESCRIPTION + + +=head1 METHODS + + +=begin testing + +ok (require RT::CachedGroupMembers); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +# {{{ LimitToUsers + +=head2 LimitToUsers + +Limits this search object to users who are members of this group +This is really useful when you want to haave your UI seperate out +groups from users for display purposes + +=cut + +sub LimitToUsers { + my $self = shift; + + my $principals = $self->NewAlias('Principals'); + $self->Join( ALIAS1 => 'main', FIELD1 => 'MemberId', + ALIAS2 => $principals, FIELD2 =>'id'); + + $self->Limit( ALIAS => $principals, + FIELD => 'PrincipalType', + VALUE => 'User', + ENTRYAGGREGATOR => 'OR', + ); +} + +# }}} + + +# {{{ LimitToGroups + +=head2 LimitToGroups + +Limits this search object to Groups who are members of this group +This is really useful when you want to haave your UI seperate out +groups from users for display purposes + +=cut + +sub LimitToGroups { + my $self = shift; + + my $principals = $self->NewAlias('Principals'); + $self->Join( ALIAS1 => 'main', FIELD1 => 'MemberId', + ALIAS2 => $principals, FIELD2 =>'id'); + + $self->Limit( ALIAS => $principals, + FIELD => 'PrincipalType', + VALUE => 'Group', + ENTRYAGGREGATOR => 'OR', + ); +} + +# }}} + +# {{{ sub LimitToMembersOfGroup + +=head2 LimitToMembersOfGroup PRINCIPAL_ID + +Takes a Principal Id as its only argument. +Limits the current search principals which are _directly_ members +of the group which has PRINCIPAL_ID as its principal id. + +=cut + +sub LimitToMembersOfGroup { + my $self = shift; + my $group = shift; + + return ($self->Limit( + VALUE => $group, + FIELD => 'GroupId', + ENTRYAGGREGATOR => 'OR', + )); + +} +# }}} + +# {{{ sub LimitToGroupsWithMember + +=head2 LimitToGroupsWithMember PRINCIPAL_ID + +Takes a Principal Id as its only argument. +Limits the current search to groups which contain PRINCIPAL_ID as a member or submember. +This function gets used by GroupMember->Create to populate subgroups + +=cut + +sub LimitToGroupsWithMember { + my $self = shift; + my $member = shift; + + return ($self->Limit( + VALUE => $member, + FIELD => 'MemberId', + ENTRYAGGREGATOR => 'OR', + QUOTEVALUE => 0 + )); + +} +# }}} +1; diff --git a/rt/lib/RT/Condition/BeforeDue.pm b/rt/lib/RT/Condition/BeforeDue.pm new file mode 100644 index 000000000..7911fd80a --- /dev/null +++ b/rt/lib/RT/Condition/BeforeDue.pm @@ -0,0 +1,64 @@ +# 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. +# +# 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::Condition::BeforeDue; +require RT::Condition::Generic; + +use RT::Date; + +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Condition::Generic); + + +sub IsApplicable { + my $self = shift; + + # Parse date string. Format is "1d2h3m4s" for 1 day and 2 hours + # and 3 minutes and 4 seconds. + my %e; + foreach (qw(d h m s)) { + my @vals = $self->Argument =~ m/(\d+)$_/; + $e{$_} = pop @vals || 0; + } + my $elapse = $e{'d'} * 24*60*60 + $e{'h'} * 60*60 + $e{'m'} * 60 + $e{'s'}; + + my $cur = new RT::Date( $RT::SystemUser ); + $cur->SetToNow(); + my $due = $self->TicketObj->DueObj; + return (undef) if $due->Unix <= 0; + + my $diff = $due->Diff($cur); + if ( $diff >= 0 and $diff <= $elapse ) { + return(1); + } else { + return(undef); + } +} + +eval "require RT::Condition::BeforeDue_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/BeforeDue_Vendor.pm}); +eval "require RT::Condition::BeforeDue_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/BeforeDue_Local.pm}); + +1; diff --git a/rt/lib/RT/Condition/Overdue.pm b/rt/lib/RT/Condition/Overdue.pm new file mode 100644 index 000000000..3a4efe77f --- /dev/null +++ b/rt/lib/RT/Condition/Overdue.pm @@ -0,0 +1,68 @@ +# 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. +# +# 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 + + + +=head1 NAME + +RT::Condition::Overdue + +=head1 DESCRIPTION + +Returns true if the ticket we're operating on is overdue + +=cut + +package RT::Condition::Overdue; +require RT::Condition::Generic; + +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Condition::Generic); + + +=head2 IsApplicable + +If the due date is before "now" return true + +=cut + +sub IsApplicable { + my $self = shift; + if ($self->TicketObj->DueObj->Unix > 0 and + $self->TicketObj->DueObj->Unix < time()) { + return(1); + } + else { + return(undef); + } +} + +eval "require RT::Condition::Overdue_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Overdue_Vendor.pm}); +eval "require RT::Condition::Overdue_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/Overdue_Local.pm}); + +1; + diff --git a/rt/lib/RT/Condition/OwnerChange.pm b/rt/lib/RT/Condition/OwnerChange.pm new file mode 100644 index 000000000..e17f589e4 --- /dev/null +++ b/rt/lib/RT/Condition/OwnerChange.pm @@ -0,0 +1,102 @@ +# 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. +# +# 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::Condition::OwnerChange; +require RT::Condition::Generic; + +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Condition::Generic); + + +=head2 IsApplicable + +If we're changing the owner return true, otherwise return false + +=begin testing + +my $q = RT::Queue->new($RT::SystemUser); +$q->Create(Name =>'ownerChangeTest'); + +ok($q->Id, "Created a scriptest queue"); + +my $s1 = RT::Scrip->new($RT::SystemUser); +my ($val, $msg) =$s1->Create( Queue => $q->Id, + ScripAction => 'User Defined', + ScripCondition => 'On Owner Change', + CustomIsApplicableCode => '', + CustomPrepareCode => 'return 1', + CustomCommitCode => ' + $RT::Logger->crit("Before, prio is ".$self->TicketObj->Priority); + $self->TicketObj->SetPriority($self->TicketObj->Priority+1); + $RT::Logger->crit("After, prio is ".$self->TicketObj->Priority); + return(1); + ', + Template => 'Blank' + ); +ok($val,$msg); + +my $ticket = RT::Ticket->new($RT::SystemUser); +my ($tv,$ttv,$tm) = $ticket->Create(Queue => $q->Id, + Subject => "hair on fire", + InitialPriority => '20' + ); +ok($tv, $tm); +ok($ticket->SetOwner('root')); +is ($ticket->Priority , '21', "Ticket priority is set right"); +ok($ticket->Steal); +is ($ticket->Priority , '22', "Ticket priority is set right"); +ok($ticket->Untake); +is ($ticket->Priority , '23', "Ticket priority is set right"); +ok($ticket->Take); +is ($ticket->Priority , '24', "Ticket priority is set right"); + + + + + +=end testing + + +=cut + +sub IsApplicable { + my $self = shift; + if ($self->TransactionObj->Field eq 'Owner') { + return(1); + } + else { + return(undef); + } +} + +eval "require RT::Condition::OwnerChange_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/OwnerChange_Vendor.pm}); +eval "require RT::Condition::OwnerChange_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/OwnerChange_Local.pm}); + +1; + diff --git a/rt/lib/RT/Condition/PriorityExceeds.pm b/rt/lib/RT/Condition/PriorityExceeds.pm new file mode 100644 index 000000000..7737ca5a9 --- /dev/null +++ b/rt/lib/RT/Condition/PriorityExceeds.pm @@ -0,0 +1,57 @@ +# 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. +# +# 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::Condition::PriorityExceeds; +require RT::Condition::Generic; + +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Condition::Generic); + + +=head2 IsApplicable + +If the priority exceeds the argument value + +=cut + +sub IsApplicable { + my $self = shift; + if ($self->TicketObj->Priority > $self->Argument) { + return(1); + } + else { + return(undef); + } +} + +eval "require RT::Condition::PriorityExceeds_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/PriorityExceeds_Vendor.pm}); +eval "require RT::Condition::PriorityExceeds_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/PriorityExceeds_Local.pm}); + +1; + diff --git a/rt/lib/RT/Condition/QueueChange.pm b/rt/lib/RT/Condition/QueueChange.pm new file mode 100644 index 000000000..f3e646a00 --- /dev/null +++ b/rt/lib/RT/Condition/QueueChange.pm @@ -0,0 +1,57 @@ +# 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. +# +# 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::Condition::QueueChange; +require RT::Condition::Generic; + +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Condition::Generic); + + +=head2 IsApplicable + +If the queue has changed. + +=cut + +sub IsApplicable { + my $self = shift; + if ($self->TransactionObj->Field eq 'Queue') { + return(1); + } + else { + return(undef); + } +} + +eval "require RT::Condition::QueueChange_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/QueueChange_Vendor.pm}); +eval "require RT::Condition::QueueChange_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/QueueChange_Local.pm}); + +1; + diff --git a/rt/lib/RT/Condition/UserDefined.pm b/rt/lib/RT/Condition/UserDefined.pm new file mode 100644 index 000000000..eb829f0d1 --- /dev/null +++ b/rt/lib/RT/Condition/UserDefined.pm @@ -0,0 +1,57 @@ +# 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. +# +# 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::Condition::UserDefined; + +use RT::Condition::Generic; + +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Condition::Generic); + + +=head2 IsApplicable + +This happens on every transaction. it's always applicable + +=cut + +sub IsApplicable { + my $self = shift; + my $retval = eval $self->ScripObj->CustomIsApplicableCode; + if ($@) { + $RT::Logger->error("Scrip ".$self->ScripObj->Id. " IsApplicable failed: ".$@); + return (undef); + } + return ($retval); +} + +eval "require RT::Condition::UserDefined_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/UserDefined_Vendor.pm}); +eval "require RT::Condition::UserDefined_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Condition/UserDefined_Local.pm}); + +1; + diff --git a/rt/lib/RT/CustomField.pm b/rt/lib/RT/CustomField.pm new file mode 100644 index 000000000..cd40a3a92 --- /dev/null +++ b/rt/lib/RT/CustomField.pm @@ -0,0 +1,340 @@ +# 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. +# +# 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 +# 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::CustomField + + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +=head1 METHODS + +=cut + +package RT::CustomField; +use RT::Record; +use RT::Queue; + + +use vars qw( @ISA ); +@ISA= qw( RT::Record ); + +sub _Init { + my $self = shift; + + $self->Table('CustomFields'); + $self->SUPER::_Init(@_); +} + + + + + +=item Create PARAMHASH + +Create takes a hash of values and creates a row in the database: + + varchar(200) 'Name'. + varchar(200) 'Type'. + int(11) 'Queue'. + varchar(255) 'Description'. + int(11) 'SortOrder'. + smallint(6) 'Disabled'. + +=cut + + + + +sub Create { + my $self = shift; + my %args = ( + Name => '', + Type => '', + Queue => '0', + Description => '', + SortOrder => '0', + Disabled => '0', + + @_); + $self->SUPER::Create( + Name => $args{'Name'}, + Type => $args{'Type'}, + Queue => $args{'Queue'}, + Description => $args{'Description'}, + SortOrder => $args{'SortOrder'}, + Disabled => $args{'Disabled'}, +); + +} + + + +=item id + +Returns the current value of id. +(In the database, id is stored as int(11).) + + +=cut + + +=item Name + +Returns the current value of Name. +(In the database, Name is stored as varchar(200).) + + + +=item SetName VALUE + + +Set Name to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Name will be stored as a varchar(200).) + + +=cut + + +=item Type + +Returns the current value of Type. +(In the database, Type is stored as varchar(200).) + + + +=item SetType VALUE + + +Set Type to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Type will be stored as a varchar(200).) + + +=cut + + +=item Queue + +Returns the current value of Queue. +(In the database, Queue is stored as int(11).) + + + +=item SetQueue VALUE + + +Set Queue to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Queue will be stored as a int(11).) + + +=cut + + +=item QueueObj + +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); +} + +=item Description + +Returns the current value of Description. +(In the database, Description is stored as varchar(255).) + + + +=item SetDescription VALUE + + +Set Description to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Description will be stored as a varchar(255).) + + +=cut + + +=item SortOrder + +Returns the current value of SortOrder. +(In the database, SortOrder is stored as int(11).) + + + +=item SetSortOrder VALUE + + +Set SortOrder to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, SortOrder will be stored as a int(11).) + + +=cut + + +=item Creator + +Returns the current value of Creator. +(In the database, Creator is stored as int(11).) + + +=cut + + +=item Created + +Returns the current value of Created. +(In the database, Created is stored as datetime.) + + +=cut + + +=item LastUpdatedBy + +Returns the current value of LastUpdatedBy. +(In the database, LastUpdatedBy is stored as int(11).) + + +=cut + + +=item LastUpdated + +Returns the current value of LastUpdated. +(In the database, LastUpdated is stored as datetime.) + + +=cut + + +=item Disabled + +Returns the current value of Disabled. +(In the database, Disabled is stored as smallint(6).) + + + +=item SetDisabled VALUE + + +Set Disabled to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Disabled will be stored as a smallint(6).) + + +=cut + + + +sub _ClassAccessible { + { + + id => + {read => 1, type => 'int(11)', default => ''}, + Name => + {read => 1, write => 1, type => 'varchar(200)', default => ''}, + Type => + {read => 1, write => 1, type => 'varchar(200)', default => ''}, + Queue => + {read => 1, write => 1, type => 'int(11)', default => '0'}, + Description => + {read => 1, write => 1, type => 'varchar(255)', default => ''}, + SortOrder => + {read => 1, write => 1, type => 'int(11)', default => '0'}, + 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 => ''}, + Disabled => + {read => 1, write => 1, type => 'smallint(6)', default => '0'}, + + } +}; + + + eval "require RT::CustomField_Overlay"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomField_Overlay.pm}) { + die $@; + }; + + eval "require RT::CustomField_Vendor"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomField_Vendor.pm}) { + die $@; + }; + + eval "require RT::CustomField_Local"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomField_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::CustomField_Overlay, RT::CustomField_Vendor, RT::CustomField_Local + +=cut + + +1; diff --git a/rt/lib/RT/CustomFieldValue.pm b/rt/lib/RT/CustomFieldValue.pm new file mode 100644 index 000000000..f434b44fb --- /dev/null +++ b/rt/lib/RT/CustomFieldValue.pm @@ -0,0 +1,294 @@ +# 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. +# +# 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 +# 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::CustomFieldValue + + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +=head1 METHODS + +=cut + +package RT::CustomFieldValue; +use RT::Record; +use RT::CustomField; + + +use vars qw( @ISA ); +@ISA= qw( RT::Record ); + +sub _Init { + my $self = shift; + + $self->Table('CustomFieldValues'); + $self->SUPER::_Init(@_); +} + + + + + +=item Create PARAMHASH + +Create takes a hash of values and creates a row in the database: + + int(11) 'CustomField'. + varchar(200) 'Name'. + varchar(255) 'Description'. + int(11) 'SortOrder'. + +=cut + + + + +sub Create { + my $self = shift; + my %args = ( + CustomField => '0', + Name => '', + Description => '', + SortOrder => '0', + + @_); + $self->SUPER::Create( + CustomField => $args{'CustomField'}, + Name => $args{'Name'}, + Description => $args{'Description'}, + SortOrder => $args{'SortOrder'}, +); + +} + + + +=item id + +Returns the current value of id. +(In the database, id is stored as int(11).) + + +=cut + + +=item CustomField + +Returns the current value of CustomField. +(In the database, CustomField is stored as int(11).) + + + +=item 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 + + +=item 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); +} + +=item Name + +Returns the current value of Name. +(In the database, Name is stored as varchar(200).) + + + +=item SetName VALUE + + +Set Name to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Name will be stored as a varchar(200).) + + +=cut + + +=item Description + +Returns the current value of Description. +(In the database, Description is stored as varchar(255).) + + + +=item SetDescription VALUE + + +Set Description to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Description will be stored as a varchar(255).) + + +=cut + + +=item SortOrder + +Returns the current value of SortOrder. +(In the database, SortOrder is stored as int(11).) + + + +=item SetSortOrder VALUE + + +Set SortOrder to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, SortOrder will be stored as a int(11).) + + +=cut + + +=item Creator + +Returns the current value of Creator. +(In the database, Creator is stored as int(11).) + + +=cut + + +=item Created + +Returns the current value of Created. +(In the database, Created is stored as datetime.) + + +=cut + + +=item LastUpdatedBy + +Returns the current value of LastUpdatedBy. +(In the database, LastUpdatedBy is stored as int(11).) + + +=cut + + +=item LastUpdated + +Returns the current value of LastUpdated. +(In the database, LastUpdated is stored as datetime.) + + +=cut + + + +sub _ClassAccessible { + { + + id => + {read => 1, type => 'int(11)', default => ''}, + CustomField => + {read => 1, write => 1, type => 'int(11)', default => '0'}, + Name => + {read => 1, write => 1, type => 'varchar(200)', default => ''}, + Description => + {read => 1, write => 1, type => 'varchar(255)', default => ''}, + SortOrder => + {read => 1, write => 1, type => 'int(11)', default => '0'}, + 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::CustomFieldValue_Overlay"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValue_Overlay.pm}) { + die $@; + }; + + eval "require RT::CustomFieldValue_Vendor"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValue_Vendor.pm}) { + die $@; + }; + + eval "require RT::CustomFieldValue_Local"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValue_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::CustomFieldValue_Overlay, RT::CustomFieldValue_Vendor, RT::CustomFieldValue_Local + +=cut + + +1; diff --git a/rt/lib/RT/CustomFieldValues.pm b/rt/lib/RT/CustomFieldValues.pm new file mode 100644 index 000000000..0e792b1a2 --- /dev/null +++ b/rt/lib/RT/CustomFieldValues.pm @@ -0,0 +1,121 @@ +# 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. +# +# 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 +# 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::CustomFieldValues -- Class Description + +=head1 SYNOPSIS + + use RT::CustomFieldValues + +=head1 DESCRIPTION + + +=head1 METHODS + +=cut + +package RT::CustomFieldValues; + +use RT::SearchBuilder; +use RT::CustomFieldValue; + +use vars qw( @ISA ); +@ISA= qw(RT::SearchBuilder); + + +sub _Init { + my $self = shift; + $self->{'table'} = 'CustomFieldValues'; + $self->{'primary_key'} = 'id'; + + + + # By default, order by name + $self->OrderBy( ALIAS => 'main', + FIELD => 'SortOrder', + ORDER => 'ASC'); + + return ( $self->SUPER::_Init(@_) ); +} + + +=item NewItem + +Returns an empty new RT::CustomFieldValue item + +=cut + +sub NewItem { + my $self = shift; + return(RT::CustomFieldValue->new($self->CurrentUser)); +} + + eval "require RT::CustomFieldValues_Overlay"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues_Overlay.pm}) { + die $@; + }; + + eval "require RT::CustomFieldValues_Vendor"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues_Vendor.pm}) { + die $@; + }; + + eval "require RT::CustomFieldValues_Local"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomFieldValues_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::CustomFieldValues_Overlay, RT::CustomFieldValues_Vendor, RT::CustomFieldValues_Local + +=cut + + +1; diff --git a/rt/lib/RT/CustomFieldValues_Overlay.pm b/rt/lib/RT/CustomFieldValues_Overlay.pm new file mode 100644 index 000000000..0384db96c --- /dev/null +++ b/rt/lib/RT/CustomFieldValues_Overlay.pm @@ -0,0 +1,47 @@ +# 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. +# +# 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); + +# {{{ 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 => '=')); + +} + +# }}} + +1; + diff --git a/rt/lib/RT/CustomField_Overlay.pm b/rt/lib/RT/CustomField_Overlay.pm new file mode 100644 index 000000000..89ef88987 --- /dev/null +++ b/rt/lib/RT/CustomField_Overlay.pm @@ -0,0 +1,560 @@ +# 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. +# +# 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(@TYPES %TYPES); + +use RT::CustomFieldValues; +use RT::TicketCustomFieldValues; + +# Enumerate all valid types for this custom field +@TYPES = ( + 'SelectSingle', # loc + 'SelectMultiple', # loc + 'FreeformSingle', # loc + 'FreeformMultiple', # loc +); + +# Populate a hash of types of easier validation +for (@TYPES) { $TYPES{$_} = 1}; + + + + +=head1 NAME + + RT::CustomField_Overlay + +=head1 DESCRIPTION + +=head1 'CORE' METHODS + +=cut + + + +=head2 Create PARAMHASH + +Create takes a hash of values and creates a row in the database: + + varchar(200) 'Name'. + varchar(200) 'Type'. + int(11) 'Queue'. + varchar(255) 'Description'. + int(11) 'SortOrder'. + smallint(6) 'Disabled'. + +=cut + + + + +sub Create { + my $self = shift; + my %args = ( + Name => '', + Type => '', + Queue => '0', + Description => '', + SortOrder => '0', + Disabled => '0', + + @_); + + + + if ( ! $args{'Queue'} ) { + unless ( $self->CurrentUser->HasRight( Object => $RT::System, Right => 'AdminCustomFields') ) { + return ( 0, $self->loc('Permission Denied') ); + } + } + else { + my $queue = RT::Queue->new($self->CurrentUser); + $queue->Load($args{'Queue'}); + unless ($queue->Id) { + return (0, $self->loc("Queue not found")); + } + unless ( $queue->CurrentUserHasRight('AdminCustomFields') ) { + return ( 0, $self->loc('Permission Denied') ); + } + } + $self->SUPER::Create( + Name => $args{'Name'}, + Type => $args{'Type'}, + Queue => $args{'Queue'}, + Description => $args{'Description'}, + SortOrder => $args{'SortOrder'}, + Disabled => $args{'Disabled'}, +); + +} + + +# {{{ sub LoadByNameAndQueue + +=head2 LoadByNameAndQueue (Queue => QUEUEID, Name => NAME) + +Loads the Custom field named NAME for Queue QUEUE. If QUEUE is 0, +loads a global custom field + +=cut + +# Compatibility for API change after 3.0 beta 1 +*LoadNameAndQueue = \&LoadByNameAndQueue; + +sub LoadByNameAndQueue { + my $self = shift; + my %args = ( + Queue => undef, + Name => undef, + @_, + ); + + return ( $self->LoadByCols( Name => $args{'Name'}, Queue => $args{'Queue'} ) ); + +} + +# }}} + +# {{{ Dealing with custom field values + +=begin testing +use_ok(RT::CustomField); +ok(my $cf = RT::CustomField->new($RT::SystemUser)); +ok(my ($id, $msg)= $cf->Create( Name => 'TestingCF', + Queue => '0', + SortOrder => '1', + Description => 'A Testing custom field', + Type=> 'SelectSingle'), 'Created a global CustomField'); +ok($id != 0, 'Global custom field correctly created'); +ok ($cf->SingleValue); +ok($cf->Type eq 'SelectSingle'); + +ok($cf->SetType('SelectMultiple')); +ok($cf->Type eq 'SelectMultiple'); +ok(!$cf->SingleValue ); +ok(my ($bogus_val, $bogus_msg) = $cf->SetType('BogusType') , "Trying to set a custom field's type to a bogus type"); +ok($bogus_val == 0, "Unable to set a custom field's type to a bogus type"); + +ok(my $bad_cf = RT::CustomField->new($RT::SystemUser)); +ok(my ($bad_id, $bad_msg)= $cf->Create( Name => 'TestingCF-bad', + Queue => '0', + SortOrder => '1', + Description => 'A Testing custom field with a bogus Type', + Type=> 'SelectSingleton'), 'Created a global CustomField with a bogus type'); +ok($bad_id == 0, 'Global custom field correctly decided to not create a cf with a bogus type '); + +=end testing + +=cut + +# {{{ AddValue + +=head2 AddValue HASH + +Create a new value for this CustomField. Takes a paramhash containing the elements Name, Description and SortOrder + +=begin testing + +ok(my $cf = RT::CustomField->new($RT::SystemUser)); +$cf->Load(1); +ok($cf->Id == 1); +ok(my ($val,$msg) = $cf->AddValue(Name => 'foo' , Description => 'TestCFValue', SortOrder => '6')); +ok($val != 0); +ok (my ($delval, $delmsg) = $cf->DeleteValue($val)); +ok ($delval != 0); + +=end testing + +=cut + +sub AddValue { + my $self = shift; + my %args = ( Name => undef, + Description => undef, + SortOrder => undef, + @_ ); + + unless ($self->CurrentUserHasRight('AdminCustomFields')) { + return (0, $self->loc('Permission Denied')); + } + + unless ($args{'Name'}) { + return(0, $self->loc("Can't add a custom field value without a name")); + } + my $newval = RT::CustomFieldValue->new($self->CurrentUser); + return($newval->Create( + CustomField => $self->Id, + Name =>$args{'Name'}, + Description => ($args{'Description'} || ''), + SortOrder => ($args{'SortOrder'} || '0') + )); +} + + +# }}} + +# {{{ DeleteValue + +=head2 DeleteValue ID + +Deletes a value from this custom field by id. + +Does not remove this value for any article which has had it selected + +=cut + +sub DeleteValue { + my $self = shift; + my $id = shift; + unless ($self->CurrentUserHasRight('AdminCustomFields')) { + return (0, $self->loc('Permission Denied')); + } + + my $val_to_del = RT::CustomFieldValue->new($self->CurrentUser); + $val_to_del->Load($id); + unless ($val_to_del->Id) { + return (0, $self->loc("Couldn't find that value")); + } + unless ($val_to_del->CustomField == $self->Id) { + return (0, $self->loc("That is not a value for this custom field")); + } + + my $retval = $val_to_del->Delete(); + if ($retval) { + return ($retval, $self->loc("Custom field value deleted")); + } else { + return(0, $self->loc("Custom field value could not be deleted")); + } +} + +# }}} + +# {{{ Values + +=head2 Values FIELD + +Return a CustomFieldeValues object of all acceptable values for this Custom Field. + + +=cut + +sub Values { + my $self = shift; + + my $cf_values = RT::CustomFieldValues->new($self->CurrentUser); + if ( $self->__Value('Queue') == 0 || $self->CurrentUserHasRight( 'SeeQueue') ) { + $cf_values->LimitToCustomField($self->Id); + } + return ($cf_values); +} + +# }}} + +# }}} + +# {{{ Ticket related routines + +# {{{ ValuesForTicket + +=head2 ValuesForTicket TICKET + +Returns a RT::TicketCustomFieldValues object of this Field's values for TICKET. +TICKET is a ticket id. + + +=cut + +sub ValuesForTicket { + my $self = shift; + my $ticket_id = shift; + + my $values = new RT::TicketCustomFieldValues($self->CurrentUser); + $values->LimitToCustomField($self->Id); + $values->LimitToTicket($ticket_id); + + return ($values); +} + +# }}} + +# {{{ AddValueForTicket + +=head2 AddValueForTicket HASH + +Adds a custom field value for a ticket. Takes a param hash of Ticket and Content + +=cut + +sub AddValueForTicket { + my $self = shift; + my %args = ( Ticket => undef, + Content => undef, + @_ ); + + my $newval = RT::TicketCustomFieldValue->new($self->CurrentUser); + my $val = $newval->Create(Ticket => $args{'Ticket'}, + Content => $args{'Content'}, + CustomField => $self->Id); + + return($val); + +} + + +# }}} + +# {{{ DeleteValueForTicket + +=head2 DeleteValueForTicket HASH + +Adds a custom field value for a ticket. Takes a param hash of Ticket and Content + +=cut + +sub DeleteValueForTicket { + my $self = shift; + my %args = ( Ticket => undef, + Content => undef, + @_ ); + + my $oldval = RT::TicketCustomFieldValue->new($self->CurrentUser); + $oldval->LoadByTicketContentAndCustomField (Ticket => $args{'Ticket'}, + Content => $args{'Content'}, + CustomField => $self->Id ); + # check ot make sure we found it + unless ($oldval->Id) { + return(0, $self->loc("Custom field value [_1] could not be found for custom field [_2]", $args{'Content'}, $self->Name)); + } + # delete it + + my $ret = $oldval->Delete(); + unless ($ret) { + return(0, $self->loc("Custom field value could not be found")); + } + return(1, $self->loc("Custom field value deleted")); +} + + +# }}} +# }}} + + +=head2 ValidateQueue Queue + +Make sure that the queue specified is a valid queue name + +=cut + +sub ValidateQueue { + my $self = shift; + my $id = shift; + + if ($id eq '0') { # 0 means "Global" null would _not_ be ok. + return (1); + } + + my $q = RT::Queue->new($RT::SystemUser); + $q->Load($id); + unless ($q->id) { + return undef; + } + return (1); + + +} + + +# {{{ Types + +=head2 Types + +Retuns an array of the types of CustomField that are supported + +=cut + +sub Types { + return (@TYPES); +} + +# }}} + + +=head2 FriendlyType [TYPE] + +Returns a localized human-readable version of the custom field type. +If a custom field type is specified as the parameter, the friendly type for that type will be returned + +=cut + +sub FriendlyType { + my $self = shift; + + my $type = shift || $self->Type; + + if ( $type eq 'SelectSingle' ) { + return ( $self->loc('Select one value') ); + } + elsif ( $type eq 'SelectMultiple' ) { + return ( $self->loc('Select multiple values') ); + } + elsif ( $type eq 'FreeformSingle' ) { + return ( $self->loc('Enter one value') ); + } + elsif ( $type eq 'FreeformMultiple' ) { + return ( $self->loc('Enter multiple values') ); + } + else { + return ( $self->loc( $self->Type ) ); + } +} + + +=head2 ValidateType TYPE + +Takes a single string. returns true if that string is a value +type of custom field + +=begin testing + +ok(my $cf = RT::CustomField->new($RT::SystemUser)); +ok($cf->ValidateType('SelectSingle')); +ok($cf->ValidateType('SelectMultiple')); +ok(!$cf->ValidateType('SelectFooMultiple')); + +=end testing + +=cut + +sub ValidateType { + my $self = shift; + my $type = shift; + + if( $TYPES{$type}) { + return(1); + } + else { + return undef; + } +} + +# {{{ SingleValue + +=head2 SingleValue + +Returns true if this CustomField only accepts a single value. +Returns false if it accepts multiple values + +=cut + +sub SingleValue { + my $self = shift; + if ($self->Type =~ /Single$/) { + return 1; + } + else { + return undef; + } +} + +# }}} + +# {{{ sub CurrentUserHasRight + +=head2 CurrentUserHasRight RIGHT + +Helper function to call the custom field's queue's CurrentUserHasRight with the passed in args. + +=cut + +sub CurrentUserHasRight { + my $self = shift; + my $right = shift; + # if there's no queue, we want to know about a global right + if ( ( !defined $self->__Value('Queue') ) || ( $self->__Value('Queue') == 0 ) ) { + return $self->CurrentUser->HasRight( Object => $RT::System, Right => $right); + } else { + return ( $self->QueueObj->CurrentUserHasRight($right) ); + } +} + +# }}} + +# {{{ sub _Set + +sub _Set { + my $self = shift; + + unless ( $self->CurrentUserHasRight('AdminCustomFields') ) { + return ( 0, $self->loc('Permission Denied') ); + } + return ( $self->SUPER::_Set(@_) ); + +} + +# }}} + +# {{{ sub _Value + +=head2 _Value + +Takes the name of a table column. +Returns its value as a string, if the user passes an ACL check + +=cut + +sub _Value { + + my $self = shift; + my $field = shift; + + # We need to expose the queue so that we can do things like ACL checks + if ( $field eq 'Queue') { + return ( $self->SUPER::_Value($field) ); + } + + + #Anybody can see global custom fields, otherwise we need to do the rights check + unless ( $self->__Value('Queue') == 0 || $self->CurrentUserHasRight( 'SeeQueue') ) { + return (undef); + } + return ( $self->__Value($field) ); + +} + +# }}} +# {{{ sub SetDisabled + +=head2 SetDisabled + +Takes a boolean. +1 will cause this custom field to no longer be avaialble for tickets. +0 will re-enable this queue + +=cut + +# }}} + +1; diff --git a/rt/lib/RT/CustomFields.pm b/rt/lib/RT/CustomFields.pm new file mode 100644 index 000000000..3e47765e6 --- /dev/null +++ b/rt/lib/RT/CustomFields.pm @@ -0,0 +1,121 @@ +# 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. +# +# 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 +# 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::CustomFields -- Class Description + +=head1 SYNOPSIS + + use RT::CustomFields + +=head1 DESCRIPTION + + +=head1 METHODS + +=cut + +package RT::CustomFields; + +use RT::SearchBuilder; +use RT::CustomField; + +use vars qw( @ISA ); +@ISA= qw(RT::SearchBuilder); + + +sub _Init { + my $self = shift; + $self->{'table'} = 'CustomFields'; + $self->{'primary_key'} = 'id'; + + + + # By default, order by name + $self->OrderBy( ALIAS => 'main', + FIELD => 'SortOrder', + ORDER => 'ASC'); + + return ( $self->SUPER::_Init(@_) ); +} + + +=item NewItem + +Returns an empty new RT::CustomField item + +=cut + +sub NewItem { + my $self = shift; + return(RT::CustomField->new($self->CurrentUser)); +} + + eval "require RT::CustomFields_Overlay"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomFields_Overlay.pm}) { + die $@; + }; + + eval "require RT::CustomFields_Vendor"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomFields_Vendor.pm}) { + die $@; + }; + + eval "require RT::CustomFields_Local"; + if ($@ && $@ !~ qr{^Can't locate RT/CustomFields_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::CustomFields_Overlay, RT::CustomFields_Vendor, RT::CustomFields_Local + +=cut + + +1; diff --git a/rt/lib/RT/CustomFields_Overlay.pm b/rt/lib/RT/CustomFields_Overlay.pm new file mode 100644 index 000000000..97c7cb8df --- /dev/null +++ b/rt/lib/RT/CustomFields_Overlay.pm @@ -0,0 +1,135 @@ +# 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. +# +# 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 +=head1 NAME + + RT::CustomFields - a collection of RT CustomField objects + +=head1 SYNOPSIS + + use RT::CustomFields; + +=head1 DESCRIPTION + +=head1 METHODS + + +=begin testing + +ok (require RT::CustomFields); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + + +# {{{ sub LimitToGlobalOrQueue + +=item LimitToGlobalOrQueue QUEUEID + +Limits the set of custom fields found to global custom fields or those tied to the queue with ID QUEUEID + +=cut + +sub LimitToGlobalOrQueue { + my $self = shift; + my $queue = shift; + $self->LimitToQueue($queue); + $self->LimitToGlobal(); +} + +# }}} + +# {{{ sub LimitToQueue + +=head2 LimitToQueue QUEUEID + +Takes a queue id (numerical) as its only argument. Makes sure that +Scopes it pulls out apply to this queue (or another that you've selected with +another call to this method + +=cut + +sub LimitToQueue { + my $self = shift; + my $queue = shift; + + $self->Limit (ENTRYAGGREGATOR => 'OR', + FIELD => 'Queue', + VALUE => "$queue") + if defined $queue; + +} +# }}} + +# {{{ sub LimitToGlobal + +=head2 LimitToGlobal + +Makes sure that +Scopes it pulls out apply to all queues (or another that you've selected with +another call to this method or LimitToQueue + +=cut + + +sub LimitToGlobal { + my $self = shift; + + $self->Limit (ENTRYAGGREGATOR => 'OR', + FIELD => 'Queue', + VALUE => 0); + +} +# }}} + + +# {{{ sub _DoSearch + +=head2 _DoSearch + + A subclass of DBIx::SearchBuilder::_DoSearch that makes sure that _Disabled ro +ws never get seen unless +we're explicitly trying to see them. + +=cut + +sub _DoSearch { + my $self = shift; + + #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(@_)); + +} + +# }}} + +1; + diff --git a/rt/lib/RT/EmailParser.pm b/rt/lib/RT/EmailParser.pm new file mode 100644 index 000000000..49f3d5518 --- /dev/null +++ b/rt/lib/RT/EmailParser.pm @@ -0,0 +1,784 @@ +# 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. +# +# 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::EmailParser; + + +use base qw/RT::Base/; + +use strict; +use Mail::Address; +use MIME::Entity; +use MIME::Head; +use MIME::Parser; +use File::Temp qw/tempdir/; + +=head1 NAME + + RT::Interface::CLI - helper functions for creating a commandline RT interface + +=head1 SYNOPSIS + + +=head1 DESCRIPTION + + +=begin testing + +ok(require RT::EmailParser); + +=end testing + + +=head1 METHODS + +=head2 new + + +=cut + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless ($self, $class); + return $self; +} + + + +# {{{ sub debug + +sub debug { + my $val = shift; + my ($debug); + if ($val) { + $RT::Logger->debug( $val . "\n" ); + if ($debug) { + print STDERR "$val\n"; + } + } + if ($debug) { + return (1); + } +} + +# }}} + +# {{{ sub CheckForLoops + +sub CheckForLoops { + my $self = shift; + + my $head = $self->Head; + + #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 =~ /^$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); +} + +# }}} + +# {{{ sub CheckForSuspiciousSender + +sub CheckForSuspiciousSender { + my $self = 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 ) = $self->ParseSenderAddressFromHead(); + + if ( ( $From =~ /^mailer-daemon/i ) or ( $From =~ /^postmaster/i ) ) { + return (1); + + } + + return (undef); + +} + +# }}} + +# {{{ sub CheckForAutoGenerated +sub CheckForAutoGenerated { + my $self = shift; + my $head = $self->Head; + + my $Precedence = $head->get("Precedence") || ""; + if ( $Precedence =~ /^(bulk|junk)/i ) { + return (1); + } + else { + return (undef); + } +} + +# }}} + +# {{{ sub ParseMIMEEntityFromSTDIN + +sub ParseMIMEEntityFromSTDIN { + my $self = shift; + return $self->ParseMIMEEntityFromFileHandle(\*STDIN); +} + +# }}} + + +sub ParseMIMEEntityFromScalar { + my $self = shift; + my $message = shift; + + # Create a new parser object: + + my $parser = MIME::Parser->new(); + $self->_SetupMIMEParser($parser); + + + # TODO: XXX 3.0 we really need to wrap this in an eval { } + unless ( $self->{'entity'} = $parser->parse_data($message) ) { + # Try again, this time without extracting nested messages + $parser->extract_nested_messages(0); + unless ( $self->{'entity'} = $parser->parse_data($message) ) { + $RT::Logger->crit("couldn't parse MIME stream"); + return ( undef); + } + } + $self->_PostProcessNewEntity(); + return (1); +} + +# {{{ ParseMIMEEntityFromFilehandle *FH + +=head2 ParseMIMEEntityFromFilehandle *FH + +Parses a mime entity from a filehandle passed in as an argument + +=cut + +sub ParseMIMEEntityFromFileHandle { + my $self = shift; + my $filehandle = shift; + + # Create a new parser object: + + my $parser = MIME::Parser->new(); + $self->_SetupMIMEParser($parser); + + + # TODO: XXX 3.0 we really need to wrap this in an eval { } + + unless ( $self->{'entity'} = $parser->parse($filehandle) ) { + + # Try again, this time without extracting nested messages + $parser->extract_nested_messages(0); + unless ( $self->{'entity'} = $parser->parse($filehandle) ) { + $RT::Logger->crit("couldn't parse MIME stream"); + return ( undef); + } + } + $self->_PostProcessNewEntity(); + return (1); +} + +# }}} + +# {{{ _PostProcessNewEntity + +=head2 _PostProcessNewEntity + +cleans up and postprocesses a newly parsed MIME Entity + +=cut + +sub _PostProcessNewEntity { + my $self = shift; + + #Now we've got a parsed mime object. + + # try to convert text parts into utf-8 charset + RT::I18N::SetMIMEEntityToEncoding($self->{'entity'}, 'utf-8'); + + + # Unfold headers that are have embedded newlines + $self->Head->unfold; + + +} + +# }}} + +# {{{ sub ParseTicketId + +sub ParseTicketId { + my $self = shift; + + my $Subject = shift; + + if ( $Subject =~ s/\[$RT::rtname \#(\d+)\s*\]//i ) { + my $id = $1; + $RT::Logger->debug("Found a ticket ID. It's $id"); + return ($id); + } + else { + return (undef); + } +} + +# }}} + +# {{{ sub MailError + +=head2 MailError { } + + +# TODO this doesn't belong here. +# TODO doc this + + +=cut + + +sub MailError { + my $self = shift; + + 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" ); + + my $mimeobj = $args{'MIMEObj'}; + $mimeobj->sync_headers(); + $entity->add_part($mimeobj); + + if ( $RT::MailCommand eq 'sendmailpipe' ) { + open( MAIL, "|$RT::SendmailPath $RT::SendmailArguments" ) || return (0); + print MAIL $entity->as_string; + close(MAIL); + } + else { + $entity->send( $RT::MailCommand, $RT::MailParams ); + } +} + +# }}} + + + +# {{{ sub GetCurrentUser + +sub GetCurrentUser { + my $self = shift; + my $ErrorsTo = shift; + + my %UserInfo = (); + + #Suck the address of the sender out of the header + my ( $Address, $Name ) = $self->ParseSenderAddressFromHead(); + + my $tempuser = RT::User->new($RT::SystemUser); + + #This will apply local address canonicalization rules + $Address = $tempuser->CanonicalizeEmailAddress($Address); + + #If desired, synchronize with an external database + my $UserFoundInExternalDatabase = 0; + + # Username is the 'Name' attribute of the user that RT uses for things + # like authentication + my $Username = undef; + ( $UserFoundInExternalDatabase, %UserInfo ) = + $self->LookupExternalUserInfo( $Address, $Name ); + + $Address = $UserInfo{'EmailAddress'}; + $Username = $UserInfo{'Name'}; + + #Get us a currentuser object to work with. + my $CurrentUser = RT::CurrentUser->new(); + + # First try looking up by a username, if we got one from the external + # db lookup. Next, try looking up by email address. Failing that, + # try looking up by users who have this user's email address as their + # username. + + if ($Username) { + $CurrentUser->LoadByName($Username); + } + + unless ( $CurrentUser->Id ) { + $CurrentUser->LoadByEmail($Address); + } + + #If we can't get it by email address, try by name. + unless ( $CurrentUser->Id ) { + $CurrentUser->LoadByName($Address); + } + + unless ( $CurrentUser->Id ) { + + #If we couldn't load a user, determine whether to create a user + + # {{{ If we require an incoming address to be found in the external + # user database, reject the incoming message appropriately + if ( $RT::SenderMustExistInExternalDatabase + && !$UserFoundInExternalDatabase ) { + + my $Message = + "Sender's email address was not found in the user database."; + + # {{{ This code useful only if you've defined an AutoRejectRequest template + + require RT::Template; + my $template = new RT::Template($RT::Nobody); + $template->Load('AutoRejectRequest'); + $Message = $template->Content || $Message; + + # }}} + + MailError( + To => $ErrorsTo, + Subject => "Ticket Creation failed: user could not be created", + Explanation => $Message, + MIMEObj => $self->Entity, + LogLevel => 'notice' ); + + return ($CurrentUser); + + } + + # }}} + + else { + 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' + ); + + unless ($Val) { + + # Deal with the race condition of two account creations at once + # + if ($Username) { + $NewUser->LoadByName($Username); + } + + 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 => $self->Entity, + LogLevel => 'crit' ); + } + } + } + + #Load the new user object + $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 => $self->Entity, + LogLevel => 'crit' ); + + } + } + + return ($CurrentUser); + +} + +# }}} + + +# {{{ ParseCcAddressesFromHead + +=head2 ParseCcAddressesFromHead HASHREF + +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 $RTAddressRegexp matches. + +=cut + +sub ParseCcAddressesFromHead { + + my $self = shift; + + my %args = ( + QueueObj => undef, + CurrentUser => undef, + @_ + ); + + my (@Addresses); + + my @ToObjs = Mail::Address->parse( $self->Head->get('To') ); + my @CcObjs = Mail::Address->parse( $self->Head->get('Cc') ); + + foreach my $AddrObj ( @ToObjs, @CcObjs ) { + my $Address = $AddrObj->address; + my $user = RT::User->new($RT::SystemUser); + $Address = $user->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 ( IsRTAddress($Address) ); + + push ( @Addresses, $Address ); + } + return (@Addresses); +} + +# }}} + +# {{{ ParseSenderAdddressFromHead + +=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 $self = shift; + + #Figure out who's sending this message. + my $From = $self->Head->get('Reply-To') + || $self->Head->get('From') + || $self->Head->get('Sender'); + return ( $self->ParseAddressFromHeader($From) ); +} + +# }}} + +# {{{ ParseErrorsToAdddressFromHead + +=head2 ParseErrorsToAddressFromHead + +Takes a MIME::Header object. Return a single value : user@host +of the From (evaluated in order of Errors-To:,Reply-To:, From:, Sender) + +=cut + +sub ParseErrorsToAddressFromHead { + my $self = 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 = $self->Head->get($header); + if ($headerobj) { + my ( $addr, $name ) = $self->ParseAddressFromHeader($headerobj); + + # If it's got actual useful content... + return ($addr) if ($addr); + } + } +} + +# }}} + +# {{{ ParseAddressFromHeader + +=head2 ParseAddressFromHeader ADDRESS + +Takes an address from $self->Head->get('Line') and returns a tuple: user@host, friendly name + +=cut + +sub ParseAddressFromHeader { + my $self = shift; + my $Addr = shift; + + my @Addresses = Mail::Address->parse($Addr); + + my $AddrObj = $Addresses[0]; + + unless ( ref($AddrObj) ) { + return ( undef, undef ); + } + + my $Name = ( $AddrObj->phrase || $AddrObj->comment || $AddrObj->address ); + + #Lets take the from and load a user object. + my $Address = $AddrObj->address; + + return ( $Address, $Name ); +} + +# }}} + +# {{{ IsRTAddress + +=item IsRTaddress ADDRESS + +Takes a single parameter, an email address. +Returns true if that address matches the $RTAddressRegexp. +Returns false, otherwise. + +=begin testing + +is(RT::EmailParser::IsRTAddress("","rt\@example.com"),1, "Regexp matched rt address" ); +is(RT::EmailParser::IsRTAddress("","frt\@example.com"),undef, "Regexp didn't match non-rt address" ); + +=end testing + +=cut + +sub IsRTAddress { + my $self = shift; + my $address = shift; + + # Example: the following rule would tell RT not to Cc + # "tickets@noc.example.com" + if ( defined($RT::RTAddressRegexp) && + $address =~ /$RT::RTAddressRegexp/ ) { + return(1); + } else { + return (undef); + } +} + +# }}} + + +# {{{ CullRTAddresses + +=item CullRTAddresses ARRAY + +Takes a single argument, an array of email addresses. +Returns the same array with any IsRTAddress()es weeded out. + +=begin testing + +@before = ("rt\@example.com", "frt\@example.com"); +@after = ("frt\@example.com"); +ok(eq_array(RT::EmailParser::CullRTAddresses("",@before),@after), "CullRTAddresses only culls RT addresses"); + +=end testing + +=cut + +sub CullRTAddresses { + my $self = shift; + my @addresses= (@_); + my @addrlist; + + foreach my $addr( @addresses ) { + push (@addrlist, $addr) unless IsRTAddress("", $addr); + } + return (@addrlist); +} + +# }}} + + +# {{{ LookupExternalUserInfo + + +# LookupExternalUserInfo is a site-definable method for synchronizing +# incoming users with an external data source. +# +# This routine takes a tuple of EmailAddress and FriendlyName +# EmailAddress is the user's email address, ususally taken from +# an email message's From: header. +# FriendlyName is a freeform string, ususally taken from the "comment" +# portion of an email message's From: header. +# +# If you define an AutoRejectRequest template, RT will use this +# template for the rejection message. + + +=item LookupExternalUserInfo + + LookupExternalUserInfo is a site-definable method for synchronizing + incoming users with an external data source. + + This routine takes a tuple of EmailAddress and FriendlyName + EmailAddress is the user's email address, ususally taken from + an email message's From: header. + FriendlyName is a freeform string, ususally taken from the "comment" + portion of an email message's From: header. + + It returns (FoundInExternalDatabase, ParamHash); + + FoundInExternalDatabase must be set to 1 before return if the user was + found in the external database. + + ParamHash is a Perl parameter hash which can contain at least the following + fields. These fields are used to populate RT's users database when the user + is created + + EmailAddress is the email address that RT should use for this user. + Name is the 'Name' attribute RT should use for this user. + 'Name' is used for things like access control and user lookups. + RealName is what RT should display as the user's name when displaying + 'friendly' names + +=cut + +sub LookupExternalUserInfo { + my $self = shift; + my $EmailAddress = shift; + my $RealName = shift; + + my $FoundInExternalDatabase = 1; + my %params; + + #Name is the RT username you want to use for this user. + $params{'Name'} = $EmailAddress; + $params{'EmailAddress'} = $EmailAddress; + $params{'RealName'} = $RealName; + + # See RT's contributed code for examples. + # http://www.fsck.com/pub/rt/contrib/ + return ($FoundInExternalDatabase, %params); +} + +# }}} + +# {{{ Accessor methods for parsed email messages + +=head2 Head + +Return the parsed head from this message + +=cut + +sub Head { + my $self = shift; + return $self->Entity->head; +} + +=head2 Entity + +Return the parsed Entity from this message + +=cut + +sub Entity { + my $self = shift; + return $self->{'entity'}; +} + +# }}} +# {{{ _SetupMIMEParser + +=head2 _SetupMIMEParser $parser + +A private instance method which sets up a mime parser to do its job + +=cut + + + ## TODO: Does it make sense storing to disk at all? After all, we + ## need to put each msg as an in-core scalar before saving it to + ## the database, don't we? + + ## At the same time, we should make sure that we nuke attachments + ## Over max size and return them + +sub _SetupMIMEParser { + my $self = shift; + my $parser = shift; + my $AttachmentDir = File::Temp::tempdir( TMPDIR => 1, CLEANUP => 1 ); + + # Set up output directory for files: + $parser->output_dir("$AttachmentDir"); + + #If someone includes a message, don't extract it + $parser->extract_nested_messages(1); + + # Set up the prefix for files with auto-generated names: + $parser->output_prefix("part"); + + # If content length is <= 50000 bytes, store each msg as in-core scalar; + # Else, write to a disk file (the default action): + + $parser->output_to_core(50000); +} +# }}} + +eval "require RT::EmailParser_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/EmailParser_Vendor.pm}); +eval "require RT::EmailParser_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/EmailParser_Local.pm}); + +1; diff --git a/rt/lib/RT/GroupMember_Overlay.pm b/rt/lib/RT/GroupMember_Overlay.pm new file mode 100644 index 000000000..20949f017 --- /dev/null +++ b/rt/lib/RT/GroupMember_Overlay.pm @@ -0,0 +1,351 @@ +# 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. +# +# 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 +=head1 NAME + + RT::GroupMember - a member of an RT Group + +=head1 SYNOPSIS + +RT::GroupMember should never be called directly. It should ONLY +only be accessed through the helper functions in RT::Group; + +If you're operating on an RT::GroupMember object yourself, you B<ARE> +doing something wrong. + +=head1 DESCRIPTION + + + + +=head1 METHODS + + +=begin testing + +ok (require RT::GroupMember); + +=end testing + + +=cut + +use strict; +no warnings qw(redefine); +use RT::CachedGroupMembers; + +# {{{ sub Create + +=head2 Create { Group => undef, Member => undef } + +Add a Principal to the group Group. +if the Principal is a group, automatically inserts all +members of the principal into the cached members table recursively down. + +Both Group and Member are expected to be RT::Principal objects + +=cut + +sub Create { + my $self = shift; + my %args = ( + Group => undef, + Member => undef, + InsideTransaction => undef, + @_ + ); + + unless ($args{'Group'} && + UNIVERSAL::isa($args{'Group'}, 'RT::Principal') && + $args{'Group'}->Id ) { + + $RT::Logger->warning("GroupMember::Create called with a bogus Group arg"); + return (undef); + } + + unless($args{'Group'}->IsGroup) { + $RT::Logger->warning("Someone tried to add a member to a user instead of a group"); + return (undef); + } + + unless ($args{'Member'} && + UNIVERSAL::isa($args{'Member'}, 'RT::Principal') && + $args{'Member'}->Id) { + $RT::Logger->warning("GroupMember::Create called with a bogus Principal arg"); + return (undef); + } + + + #Clear the key cache. TODO someday we may want to just clear a little bit of the keycache space. + # TODO what about the groups key cache? + RT::Principal->_InvalidateACLCache(); + + $RT::Handle->BeginTransaction() unless ($args{'InsideTransaction'}); + + # We really need to make sure we don't add any members to this group + # that contain the group itself. that would, um, suck. + # (and recurse infinitely) Later, we can add code to check this in the + # cache and bail so we can support cycling directed graphs + + if ($args{'Member'}->IsGroup) { + my $member_object = $args{'Member'}->Object; + if ($member_object->HasMemberRecursively($args{'Group'})) { + $RT::Logger->debug("Adding that group would create a loop"); + return(undef); + } + elsif ( $args{'Member'}->Id == $args{'Group'}->Id) { + $RT::Logger->debug("Can't add a group to itself"); + return(undef); + } + } + + + my $id = $self->SUPER::Create( + GroupId => $args{'Group'}->Id, + MemberId => $args{'Member'}->Id + ); + + unless ($id) { + $RT::Handle->Rollback() unless ($args{'InsideTransaction'}); + return (undef); + } + + my $cached_member = RT::CachedGroupMember->new( $self->CurrentUser ); + my $cached_id = $cached_member->Create( + Member => $args{'Member'}, + Group => $args{'Group'}, + ImmediateParent => $args{'Group'}, + Via => '0' + ); + + + #When adding a member to a group, we need to go back + #and popuplate the CachedGroupMembers of all the groups that group is part of . + + my $cgm = RT::CachedGroupMembers->new( $self->CurrentUser ); + + # find things which have the current group as a member. + # $group is an RT::Principal for the group. + $cgm->LimitToGroupsWithMember( $args{'Group'}->Id ); + + while ( my $parent_member = $cgm->Next ) { + my $parent_id = $parent_member->MemberId; + my $via = $parent_member->Id; + my $group_id = $parent_member->GroupId; + + my $other_cached_member = + RT::CachedGroupMember->new( $self->CurrentUser ); + my $other_cached_id = $other_cached_member->Create( + Member => $args{'Member'}, + Group => $parent_member->GroupObj, + ImmediateParent => $parent_member->MemberObj, + Via => $parent_member->Id + ); + unless ($other_cached_id) { + $RT::Logger->err( "Couldn't add " . $args{'Member'} + . " as a submember of a supergroup" ); + $RT::Handle->Rollback() unless ($args{'InsideTransaction'}); + return (undef); + } + } + + unless ($cached_id) { + $RT::Handle->Rollback() unless ($args{'InsideTransaction'}); + return (undef); + } + + $RT::Handle->Commit() unless ($args{'InsideTransaction'}); + + return ($id); +} + +# }}} + +# {{{ sub _StashUser + +=head2 _StashUser PRINCIPAL + +Create { Group => undef, Member => undef } + +Creates an entry in the groupmembers table, which lists a user +as a member of himself. This makes ACL checks a whole bunch easier. +This happens once on user create and never ever gets yanked out. + +PRINCIPAL is expected to be an RT::Principal object for a user + +This routine expects to be called inside a transaction by RT::User->Create + +=cut + +sub _StashUser { + my $self = shift; + my %args = ( + Group => undef, + Member => undef, + @_ + ); + + #Clear the key cache. TODO someday we may want to just clear a little bit of the keycache space. + # TODO what about the groups key cache? + RT::Principal->_InvalidateACLCache(); + + + # We really need to make sure we don't add any members to this group + # that contain the group itself. that would, um, suck. + # (and recurse infinitely) Later, we can add code to check this in the + # cache and bail so we can support cycling directed graphs + + my $id = $self->SUPER::Create( + GroupId => $args{'Group'}->Id, + MemberId => $args{'Member'}->Id, + ); + + unless ($id) { + return (undef); + } + + my $cached_member = RT::CachedGroupMember->new( $self->CurrentUser ); + my $cached_id = $cached_member->Create( + Member => $args{'Member'}, + Group => $args{'Group'}, + ImmediateParent => $args{'Group'}, + Via => '0' + ); + + unless ($cached_id) { + return (undef); + } + + return ($id); +} + +# }}} + +# {{{ sub Delete + +=head2 Delete + +Takes no arguments. deletes the currently loaded member from the +group in question. + +Expects to be called _outside_ a transaction + +=cut + +sub Delete { + my $self = shift; + + + $RT::Handle->BeginTransaction(); + + # Find all occurrences of this member as a member of this group + # in the cache and nuke them, recursively. + + # The following code will delete all Cached Group members + # where this member's group is _not_ the primary group + # (Ie if we're deleting C as a member of B, and B happens to be + # a member of A, will delete C as a member of A without touching + # C as a member of B + + my $cached_submembers = RT::CachedGroupMembers->new( $self->CurrentUser ); + + $cached_submembers->Limit( + FIELD => 'MemberId', + OPERATOR => '=', + VALUE => $self->MemberObj->Id + ); + + $cached_submembers->Limit( + FIELD => 'ImmediateParentId', + OPERATOR => '=', + VALUE => $self->GroupObj->Id + ); + + #Clear the key cache. TODO someday we may want to just clear a little bit of the keycache space. + # TODO what about the groups key cache? + RT::Principal->_InvalidateACLCache(); + + + + + while ( my $item_to_del = $cached_submembers->Next() ) { + my $del_err = $item_to_del->Delete(); + unless ($del_err) { + $RT::Handle->Rollback(); + $RT::Logger->warning("Couldn't delete cached group submember ".$item_to_del->Id); + return (undef); + } + } + + my $err = $self->SUPER::Delete(); + unless ($err) { + $RT::Logger->warning("Couldn't delete cached group submember ".$self->Id); + $RT::Handle->Rollback(); + return (undef); + } + $RT::Handle->Commit(); + return ($err); + +} + +# }}} + +# {{{ sub MemberObj + +=head2 MemberObj + +Returns an RT::Principal object for the Principal specified by $self->PrincipalId + +=cut + +sub MemberObj { + my $self = shift; + unless ( defined( $self->{'Member_obj'} ) ) { + $self->{'Member_obj'} = RT::Principal->new( $self->CurrentUser ); + $self->{'Member_obj'}->Load( $self->MemberId ); + } + return ( $self->{'Member_obj'} ); +} + +# }}} + +# {{{ sub GroupObj + +=head2 GroupObj + +Returns an RT::Principal object for the Group specified in $self->GroupId + +=cut + +sub GroupObj { + my $self = shift; + unless ( defined( $self->{'Group_obj'} ) ) { + $self->{'Group_obj'} = RT::Principal->new( $self->CurrentUser ); + $self->{'Group_obj'}->Load( $self->GroupId ); + } + return ( $self->{'Group_obj'} ); +} + +# }}} + +1; diff --git a/rt/lib/RT/GroupMembers_Overlay.pm b/rt/lib/RT/GroupMembers_Overlay.pm new file mode 100644 index 000000000..1259fd61a --- /dev/null +++ b/rt/lib/RT/GroupMembers_Overlay.pm @@ -0,0 +1,126 @@ +# 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. +# +# 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 +=head1 NAME + + RT::GroupMembers - a collection of RT::GroupMember objects + +=head1 SYNOPSIS + + use RT::GroupMembers; + +=head1 DESCRIPTION + + +=head1 METHODS + + +=begin testing + +ok (require RT::GroupMembers); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +# {{{ LimitToUsers + +=head2 LimitToUsers + +Limits this search object to users who are members of this group. +This is really useful when you want to haave your UI seperate out +groups from users for display purposes + +=cut + +sub LimitToUsers { + my $self = shift; + + my $principals = $self->NewAlias('Principals'); + $self->Join( ALIAS1 => 'main', FIELD1 => 'MemberId', + ALIAS2 => $principals, FIELD2 =>'id'); + + $self->Limit( ALIAS => $principals, + FIELD => 'PrincipalType', + VALUE => 'User', + ENTRYAGGREGATOR => 'OR', + ); +} + +# }}} + + +# {{{ LimitToGroups + +=head2 LimitToGroups + +Limits this search object to Groups who are members of this group. +This is really useful when you want to haave your UI seperate out +groups from users for display purposes + +=cut + +sub LimitToGroups { + my $self = shift; + + my $principals = $self->NewAlias('Principals'); + $self->Join( ALIAS1 => 'main', FIELD1 => 'MemberId', + ALIAS2 => $principals, FIELD2 =>'id'); + + $self->Limit( ALIAS => $principals, + FIELD => 'PrincipalType', + VALUE => 'Group', + ENTRYAGGREGATOR => 'OR', + ); +} + +# }}} + +# {{{ sub LimitToMembersOfGroup + +=head2 LimitToMembersOfGroup PRINCIPAL_ID + +Takes a Principal Id as its only argument. +Limits the current search principals which are _directly_ members +of the group which has PRINCIPAL_ID as its principal id. + +=cut + +sub LimitToMembersOfGroup { + my $self = shift; + my $group = shift; + + return ($self->Limit( + VALUE => $group, + FIELD => 'GroupId', + ENTRYAGGREGATOR => 'OR', + QUOTEVALUE => 0 + )); + +} +# }}} + +1; diff --git a/rt/lib/RT/Group_Overlay.pm b/rt/lib/RT/Group_Overlay.pm new file mode 100644 index 000000000..92150255f --- /dev/null +++ b/rt/lib/RT/Group_Overlay.pm @@ -0,0 +1,1260 @@ +# 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. +# +# 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 +# Released under the terms of version 2 of the GNU Public License + +=head1 NAME + + RT::Group - RT\'s group object + +=head1 SYNOPSIS + + use RT::Group; +my $group = new RT::Group($CurrentUser); + +=head1 DESCRIPTION + +An RT group object. + +=head1 AUTHOR + +Jesse Vincent, jesse@bestpractical.com + +=head1 SEE ALSO + +RT + +=head1 METHODS + + +=begin testing + +# {{{ Tests +ok (require RT::Group); + +ok (my $group = RT::Group->new($RT::SystemUser), "instantiated a group object"); +ok (my ($id, $msg) = $group->CreateUserDefinedGroup( Name => 'TestGroup', Description => 'A test group', + ), 'Created a new group'); +ok ($id != 0, "Group id is $id"); +ok ($group->Name eq 'TestGroup', "The group's name is 'TestGroup'"); +my $ng = RT::Group->new($RT::SystemUser); + +ok($ng->LoadUserDefinedGroup('TestGroup'), "Loaded testgroup"); +ok(($ng->id == $group->id), "Loaded the right group"); + + +ok (($id,$msg) = $ng->AddMember('1'), "Added a member to the group"); +ok($id, $msg); +ok (($id,$msg) = $ng->AddMember('2' ), "Added a member to the group"); +ok($id, $msg); +ok (($id,$msg) = $ng->AddMember('3' ), "Added a member to the group"); +ok($id, $msg); + +# Group 1 now has members 1, 2 ,3 + +my $group_2 = RT::Group->new($RT::SystemUser); +ok (my ($id_2, $msg_2) = $group_2->CreateUserDefinedGroup( Name => 'TestGroup2', Description => 'A second test group'), , 'Created a new group'); +ok ($id_2 != 0, "Created group 2 ok- $msg_2 "); +ok (($id,$msg) = $group_2->AddMember($ng->PrincipalId), "Made TestGroup a member of testgroup2"); +ok($id, $msg); +ok (($id,$msg) = $group_2->AddMember('1' ), "Added member RT_System to the group TestGroup2"); +ok($id, $msg); + +# Group 2 how has 1, g1->{1, 2,3} + +my $group_3 = RT::Group->new($RT::SystemUser); +ok (($id_3, $msg) = $group_3->CreateUserDefinedGroup( Name => 'TestGroup3', Description => 'A second test group'), 'Created a new group'); +ok ($id_3 != 0, "Created group 3 ok - $msg"); +ok (($id,$msg) =$group_3->AddMember($group_2->PrincipalId), "Made TestGroup a member of testgroup2"); +ok($id, $msg); + +# g3 now has g2->{1, g1->{1,2,3}} + +my $principal_1 = RT::Principal->new($RT::SystemUser); +$principal_1->Load('1'); + +my $principal_2 = RT::Principal->new($RT::SystemUser); +$principal_2->Load('2'); + +ok (($id,$msg) = $group_3->AddMember('1' ), "Added member RT_System to the group TestGroup2"); +ok($id, $msg); + +# g3 now has 1, g2->{1, g1->{1,2,3}} + +ok($group_3->HasMember($principal_2) == undef, "group 3 doesn't have member 2"); +ok($group_3->HasMemberRecursively($principal_2), "group 3 has member 2 recursively"); +ok($ng->HasMember($principal_2) , "group ".$ng->Id." has member 2"); +my ($delid , $delmsg) =$ng->DeleteMember($principal_2->Id); +ok ($delid !=0, "Sucessfully deleted it-".$delid."-".$delmsg); + +#Gotta reload the group objects, since we've been messing with various internals. +# we shouldn't need to do this. +#$ng->LoadUserDefinedGroup('TestGroup'); +#$group_2->LoadUserDefinedGroup('TestGroup2'); +#$group_3->LoadUserDefinedGroup('TestGroup'); + +# G1 now has 1, 3 +# Group 2 how has 1, g1->{1, 3} +# g3 now has 1, g2->{1, g1->{1, 3}} + +ok(!$ng->HasMember($principal_2) , "group ".$ng->Id." no longer has member 2"); +ok($group_3->HasMemberRecursively($principal_2) == undef, "group 3 doesn't have member 2"); +ok($group_2->HasMemberRecursively($principal_2) == undef, "group 2 doesn't have member 2"); +ok($ng->HasMember($principal_2) == undef, "group 1 doesn't have member 2");; +ok($group_3->HasMemberRecursively($principal_2) == undef, "group 3 has member 2 recursively"); + +# }}} + +=end testing + + + +=cut + +use strict; +no warnings qw(redefine); + +use RT::Users; +use RT::GroupMembers; +use RT::Principals; +use RT::ACL; + +use vars qw/$RIGHTS/; + +$RIGHTS = { + AdminGroup => 'Modify group metadata or delete group', # loc_pair + AdminGroupMembership => + 'Modify membership roster for this group', # loc_pair + ModifyOwnMembership => 'Join or leave this group' # loc_pair +}; + +# Tell RT::ACE that this sort of object can get acls granted +$RT::ACE::OBJECT_TYPES{'RT::Group'} = 1; + + +# + +# TODO: This should be refactored out into an RT::ACLedObject or something +# stuff the rights into a hash of rights that can exist. + +foreach my $right ( keys %{$RIGHTS} ) { + $RT::ACE::LOWERCASERIGHTNAMES{ lc $right } = $right; +} + + +=head2 AvailableRights + +Returns a hash of available rights for this object. The keys are the right names and the values are a description of what the rights do + +=cut + +sub AvailableRights { + my $self = shift; + return($RIGHTS); +} + + +# {{{ sub SelfDescription + +=head2 SelfDescription + +Returns a user-readable description of what this group is for and what it's named. + +=cut + +sub SelfDescription { + my $self = shift; + if ($self->Domain eq 'ACLEquivalence') { + my $user = RT::Principal->new($self->CurrentUser); + $user->Load($self->Instance); + return $self->loc("user [_1]",$user->Object->Name); + } + elsif ($self->Domain eq 'UserDefined') { + return $self->loc("group '[_1]'",$self->Name); + } + elsif ($self->Domain eq 'Personal') { + my $user = RT::User->new($self->CurrentUser); + $user->Load($self->Instance); + return $self->loc("personal group '[_1]' for user '[_2]'",$self->Name, $user->Name); + } + elsif ($self->Domain eq 'RT::System-Role') { + return $self->loc("system [_1]",$self->Type); + } + elsif ($self->Domain eq 'RT::Queue-Role') { + my $queue = RT::Queue->new($self->CurrentUser); + $queue->Load($self->Instance); + return $self->loc("queue [_1] [_2]",$queue->Name, $self->Type); + } + elsif ($self->Domain eq 'RT::Ticket-Role') { + return $self->loc("ticket #[_1] [_2]",$self->Instance, $self->Type); + } + elsif ($self->Domain eq 'SystemInternal') { + return $self->loc("system group '[_1]'",$self->Type); + } + else { + return $self->loc("undescribed group [_1]",$self->Id); + } +} + +# }}} + +# {{{ sub Load + +=head2 Load ID + +Load a group object from the database. Takes a single argument. +If the argument is numerical, load by the column 'id'. Otherwise, +complain and return. + +=cut + +sub Load { + my $self = shift; + my $identifier = shift || return undef; + + #if it's an int, load by id. otherwise, load by name. + if ( $identifier !~ /\D/ ) { + $self->SUPER::LoadById($identifier); + } + else { + $RT::Logger->crit("Group -> Load called with a bogus argument"); + return undef; + } +} + +# }}} + +# {{{ sub LoadUserDefinedGroup + +=head2 LoadUserDefinedGroup NAME + +Loads a system group from the database. The only argument is +the group's name. + + +=cut + +sub LoadUserDefinedGroup { + my $self = shift; + my $identifier = shift; + + $self->LoadByCols( "Domain" => 'UserDefined', + "Name" => $identifier ); +} + +# }}} + +# {{{ sub LoadACLEquivalenceGroup + +=head2 LoadACLEquivalenceGroup PRINCIPAL + +Loads a user's acl equivalence group. Takes a principal object. +ACL equivalnce groups are used to simplify the acl system. Each user +has one group that only he is a member of. Rights granted to the user +are actually granted to that group. This greatly simplifies ACL checks. +While this results in a somewhat more complex setup when creating users +and granting ACLs, it _greatly_ simplifies acl checks. + + + +=cut + +sub LoadACLEquivalenceGroup { + my $self = shift; + my $princ = shift; + + $self->LoadByCols( "Domain" => 'ACLEquivalence', + "Type" => 'UserEquiv', + "Instance" => $princ->Id); +} + +# }}} + +# {{{ sub LoadPersonalGroup + +=head2 LoadPersonalGroup {Name => NAME, User => USERID} + +Loads a personal group from the database. + +=cut + +sub LoadPersonalGroup { + my $self = shift; + my %args = ( Name => undef, + User => undef, + @_); + + $self->LoadByCols( "Domain" => 'Personal', + "Instance" => $args{'User'}, + "Type" => '', + "Name" => $args{'Name'} ); +} + +# }}} + +# {{{ sub LoadSystemInternalGroup + +=head2 LoadSystemInternalGroup NAME + +Loads a Pseudo group from the database. The only argument is +the group's name. + + +=cut + +sub LoadSystemInternalGroup { + my $self = shift; + my $identifier = shift; + + $self->LoadByCols( "Domain" => 'SystemInternal', + "Instance" => '', + "Name" => '', + "Type" => $identifier ); +} + +# }}} + +# {{{ sub LoadTicketRoleGroup + +=head2 LoadTicketRoleGroup { Ticket => TICKET_ID, Type => TYPE } + +Loads a ticket group from the database. + +Takes a param hash with 2 parameters: + + Ticket is the TicketId we're curious about + Type is the type of Group we're trying to load: + Requestor, Cc, AdminCc, Owner + +=cut + +sub LoadTicketRoleGroup { + my $self = shift; + my %args = (Ticket => undef, + Type => undef, + @_); + $self->LoadByCols( Domain => 'RT::Ticket-Role', + Instance =>$args{'Ticket'}, + Type => $args{'Type'} + ); +} + +# }}} + +# {{{ sub LoadQueueRoleGroup + +=head2 LoadQueueRoleGroup { Queue => Queue_ID, Type => TYPE } + +Loads a Queue group from the database. + +Takes a param hash with 2 parameters: + + Queue is the QueueId we're curious about + Type is the type of Group we're trying to load: + Requestor, Cc, AdminCc, Owner + +=cut + +sub LoadQueueRoleGroup { + my $self = shift; + my %args = (Queue => undef, + Type => undef, + @_); + $self->LoadByCols( Domain => 'RT::Queue-Role', + Instance =>$args{'Queue'}, + Type => $args{'Type'} + ); +} + +# }}} + +# {{{ sub LoadSystemRoleGroup + +=head2 LoadSystemRoleGroup Type + +Loads a System group from the database. + +Takes a single param: Type + + Type is the type of Group we're trying to load: + Requestor, Cc, AdminCc, Owner + +=cut + +sub LoadSystemRoleGroup { + my $self = shift; + my $type = shift; + $self->LoadByCols( Domain => 'RT::System-Role', + Type => $type + ); +} + +# }}} + +# {{{ sub Create +=head2 Create + +You need to specify what sort of group you're creating by calling one of the other +Create_____ routines. + +=cut + +sub Create { + my $self = shift; + $RT::Logger->crit("Someone called RT::Group->Create. this method does not exist. someone's being evil"); + return(0,$self->loc('Permission Denied')); +} + +# }}} + +# {{{ sub _Create + +=head2 _Create + +Takes a paramhash with named arguments: Name, Description. + +Returns a tuple of (Id, Message). If id is 0, the create failed + +=cut + +sub _Create { + my $self = shift; + my %args = ( + Name => undef, + Description => undef, + Domain => undef, + Type => undef, + Instance => undef, + InsideTransaction => undef, + @_ + ); + + $RT::Handle->BeginTransaction() unless ($args{'InsideTransaction'}); + # Groups deal with principal ids, rather than user ids. + # When creating this group, set up a principal Id for it. + my $principal = RT::Principal->new( $self->CurrentUser ); + my $principal_id = $principal->Create( + PrincipalType => 'Group', + ObjectId => '0' + ); + $principal->__Set(Field => 'ObjectId', Value => $principal_id); + + + $self->SUPER::Create( + id => $principal_id, + Name => $args{'Name'}, + Description => $args{'Description'}, + Type => $args{'Type'}, + Domain => $args{'Domain'}, + Instance => $args{'Instance'} + ); + my $id = $self->Id; + unless ($id) { + return ( 0, $self->loc('Could not create group') ); + } + + # If we couldn't create a principal Id, get the fuck out. + unless ($principal_id) { + $RT::Handle->Rollback() unless ($args{'InsideTransaction'}); + $self->crit( "Couldn't create a Principal on new user create. Strange things are afoot at the circle K" ); + return ( 0, $self->loc('Could not create group') ); + } + + # Now we make the group a member of itself as a cached group member + # this needs to exist so that group ACL checks don't fall over. + # you're checking CachedGroupMembers to see if the principal in question + # is a member of the principal the rights have been granted too + + # in the ordinary case, this would fail badly because it would recurse and add all the members of this group as + # cached members. thankfully, we're creating the group now...so it has no members. + my $cgm = RT::CachedGroupMember->new($self->CurrentUser); + $cgm->Create(Group =>$self->PrincipalObj, Member => $self->PrincipalObj, ImmediateParent => $self->PrincipalObj); + + + + $RT::Handle->Commit() unless ($args{'InsideTransaction'}); + return ( $id, $self->loc("Group created") ); +} + +# }}} + +# {{{ CreateUserDefinedGroup + +=head2 CreateUserDefinedGroup { Name => "name", Description => "Description"} + +A helper subroutine which creates a system group + +Returns a tuple of (Id, Message). If id is 0, the create failed + +=cut + +sub CreateUserDefinedGroup { + my $self = shift; + + unless ( $self->CurrentUserHasRight('AdminGroup') ) { + $RT::Logger->warning( $self->CurrentUser->Name + . " Tried to create a group without permission." ); + return ( 0, $self->loc('Permission Denied') ); + } + + return($self->_Create( Domain => 'UserDefined', Type => '', Instance => '', @_)); +} + +# }}} + +# {{{ _CreateACLEquivalenceGroup + +=head2 _CreateACLEquivalenceGroup { Principal } + +A helper subroutine which creates a group containing only +an individual user. This gets used by the ACL system to check rights. +Yes, it denormalizes the data, but that's ok, as we totally win on performance. + +Returns a tuple of (Id, Message). If id is 0, the create failed + +=cut + +sub _CreateACLEquivalenceGroup { + my $self = shift; + my $princ = shift; + + my $id = $self->_Create( Domain => 'ACLEquivalence', + Type => 'UserEquiv', + Name => 'User '. $princ->Object->Id, + Description => 'ACL equiv. for user '.$princ->Object->Id, + Instance => $princ->Id, + InsideTransaction => 1); + unless ($id) { + $RT::Logger->crit("Couldn't create ACL equivalence group"); + return undef; + } + + # We use stashuser so we don't get transactions inside transactions + # and so we bypass all sorts of cruft we don't need + my $aclstash = RT::GroupMember->new($self->CurrentUser); + my ($stash_id, $add_msg) = $aclstash->_StashUser(Group => $self->PrincipalObj, + Member => $princ); + + unless ($stash_id) { + $RT::Logger->crit("Couldn't add the user to his own acl equivalence group:".$add_msg); + # We call super delete so we don't get acl checked. + $self->SUPER::Delete(); + return(undef); + } + return ($id); +} + +# }}} + +# {{{ CreatePersonalGroup + +=head2 CreatePersonalGroup { PrincipalId => PRINCIPAL_ID, Name => "name", Description => "Description"} + +A helper subroutine which creates a personal group. Generally, +personal groups are used for ACL delegation and adding to ticket roles +PrincipalId defaults to the current user's principal id. + +Returns a tuple of (Id, Message). If id is 0, the create failed + +=cut + +sub CreatePersonalGroup { + my $self = shift; + my %args = ( + Name => undef, + Description => undef, + PrincipalId => $self->CurrentUser->PrincipalId, + @_ + ); + + if ( $self->CurrentUser->PrincipalId == $args{'PrincipalId'} ) { + + unless ( $self->CurrentUserHasRight('AdminOwnPersonalGroups') ) { + $RT::Logger->warning( $self->CurrentUser->Name + . " Tried to create a group without permission." ); + return ( 0, $self->loc('Permission Denied') ); + } + + } + else { + unless ( $self->CurrentUserHasRight('AdminAllPersonalGroups') ) { + $RT::Logger->warning( $self->CurrentUser->Name + . " Tried to create a group without permission." ); + return ( 0, $self->loc('Permission Denied') ); + } + + } + + return ( + $self->_Create( + Domain => 'Personal', + Type => '', + Instance => $args{'PrincipalId'}, + Name => $args{'Name'}, + Description => $args{'Description'} + ) + ); +} + +# }}} + +# {{{ CreateRoleGroup + +=head2 CreateRoleGroup { Domain => DOMAIN, Type => TYPE, Instance => ID } + +A helper subroutine which creates a ticket group. (What RT 2.0 called Ticket watchers) +Type is one of ( "Requestor" || "Cc" || "AdminCc" || "Owner") +Domain is one of (RT::Ticket-Role || RT::Queue-Role || RT::System-Role) +Instance is the id of the ticket or queue in question + +This routine expects to be called from {Ticket||Queue}->CreateTicketGroups _inside of a transaction_ + +Returns a tuple of (Id, Message). If id is 0, the create failed + +=cut + +sub CreateRoleGroup { + my $self = shift; + my %args = ( Instance => undef, + Type => undef, + Domain => undef, + @_ ); + unless ( $args{'Type'} =~ /^(?:Cc|AdminCc|Requestor|Owner)$/ ) { + return ( 0, $self->loc("Invalid Group Type") ); + } + + + return ( $self->_Create( Domain => $args{'Domain'}, + Instance => $args{'Instance'}, + Type => $args{'Type'}, + InsideTransaction => 1 ) ); +} + +# }}} + +# {{{ sub Delete + +=head2 Delete + +Delete this object + +=cut + +sub Delete { + my $self = shift; + + unless ( $self->CurrentUserHasRight('AdminGroup') ) { + return ( 0, 'Permission Denied' ); + } + + $RT::Logger->crit("Deleting groups violates referential integrity until we go through and fix this"); + # TODO XXX + + # Remove the principal object + # Remove this group from anything it's a member of. + # Remove all cached members of this group + # Remove any rights granted to this group + # remove any rights delegated by way of this group + + return ( $self->SUPER::Delete(@_) ); +} + +# }}} + +=head2 SetDisabled BOOL + +If passed a positive value, this group will be disabled. No rights it commutes or grants will be honored. +It will not appear in most group listings. + +This routine finds all the cached group members that are members of this group (recursively) and disables them. +=cut + + # }}} + + sub SetDisabled { + my $self = shift; + my $val = shift; + if ($self->Domain eq 'Personal') { + if ($self->CurrentUser->PrincipalId == $self->Instance) { + unless ( $self->CurrentUserHasRight('AdminOwnPersonalGroups')) { + return ( 0, $self->loc('Permission Denied') ); + } + } else { + unless ( $self->CurrentUserHasRight('AdminAllPersonalGroups') ) { + return ( 0, $self->loc('Permission Denied') ); + } + } + } + else { + unless ( $self->CurrentUserHasRight('AdminGroup') ) { + return (0, $self->loc('Permission Denied')); + } + } + $RT::Handle->BeginTransaction(); + $self->PrincipalObj->SetDisabled($val); + + + + + # Find all occurrences of this member as a member of this group + # in the cache and nuke them, recursively. + + # The following code will delete all Cached Group members + # where this member's group is _not_ the primary group + # (Ie if we're deleting C as a member of B, and B happens to be + # a member of A, will delete C as a member of A without touching + # C as a member of B + + my $cached_submembers = RT::CachedGroupMembers->new( $self->CurrentUser ); + + $cached_submembers->Limit( FIELD => 'ImmediateParentId', OPERATOR => '=', VALUE => $self->Id); + + #Clear the key cache. TODO someday we may want to just clear a little bit of the keycache space. + # TODO what about the groups key cache? + RT::Principal->_InvalidateACLCache(); + + + + while ( my $item = $cached_submembers->Next() ) { + my $del_err = $item->SetDisabled($val); + unless ($del_err) { + $RT::Handle->Rollback(); + $RT::Logger->warning("Couldn't disable cached group submember ".$item->Id); + return (undef); + } + } + + $RT::Handle->Commit(); + return (1, $self->loc("Succeeded")); + +} + +# }}} + + + +sub Disabled { + my $self = shift; + $self->PrincipalObj->Disabled(@_); +} + + +# {{{ DeepMembersObj + +=head2 DeepMembersObj + +Returns an RT::CachedGroupMembers object of this group's members. + +=cut + +sub DeepMembersObj { + my $self = shift; + my $members_obj = RT::CachedGroupMembers->new( $self->CurrentUser ); + + #If we don't have rights, don't include any results + # TODO XXX WHY IS THERE NO ACL CHECK HERE? + $members_obj->LimitToMembersOfGroup( $self->PrincipalId ); + + return ( $members_obj ); + +} + +# }}} + +# {{{ UserMembersObj + +=head2 UserMembersObj + +Returns an RT::Users object of this group's members, including +all members of subgroups + +=cut + +sub UserMembersObj { + my $self = shift; + + my $users = RT::Users->new($self->CurrentUser); + + #If we don't have rights, don't include any results + # TODO XXX WHY IS THERE NO ACL CHECK HERE? + + my $principals = $users->NewAlias('Principals'); + + $users->Join(ALIAS1 => 'main', FIELD1 => 'id', + ALIAS2 => $principals, FIELD2 => 'ObjectId'); + $users->Limit(ALIAS =>$principals, + FIELD => 'PrincipalType', OPERATOR => '=', VALUE => 'User'); + + my $cached_members = $users->NewAlias('CachedGroupMembers'); + $users->Join(ALIAS1 => $cached_members, FIELD1 => 'MemberId', + ALIAS2 => $principals, FIELD2 => 'id'); + $users->Limit(ALIAS => $cached_members, + FIELD => 'GroupId', + OPERATOR => '=', + VALUE => $self->PrincipalId); + + + return ( $users); + +} + +# }}} + +# {{{ MembersObj + +=head2 MembersObj + +Returns an RT::CachedGroupMembers object of this group's members. + +=cut + +sub MembersObj { + my $self = shift; + my $members_obj = RT::GroupMembers->new( $self->CurrentUser ); + + #If we don't have rights, don't include any results + # TODO XXX WHY IS THERE NO ACL CHECK HERE? + $members_obj->LimitToMembersOfGroup( $self->PrincipalId ); + + return ( $members_obj ); + +} + +# }}} + +# {{{ MemberEmailAddresses + +=head2 MemberEmailAddresses + +Returns an array of the email addresses of all of this group's members + + +=cut + +sub MemberEmailAddresses { + my $self = shift; + + my %addresses; + my $members = $self->UserMembersObj(); + while (my $member = $members->Next) { + $addresses{$member->EmailAddress} = 1; + } + return(sort keys %addresses); +} + +# }}} + +# {{{ MemberEmailAddressesAsString + +=head2 MemberEmailAddressesAsString + +Returns a comma delimited string of the email addresses of all users +who are members of this group. + +=cut + + +sub MemberEmailAddressesAsString { + my $self = shift; + return (join(', ', $self->MemberEmailAddresses)); +} + +# }}} + +# {{{ AddMember + +=head2 AddMember PRINCIPAL_ID + +AddMember adds a principal to this group. It takes a single principal id. +Returns a two value array. the first value is true on successful +addition or 0 on failure. The second value is a textual status msg. + +=cut + +sub AddMember { + my $self = shift; + my $new_member = shift; + + + + if ($self->Domain eq 'Personal') { + if ($self->CurrentUser->PrincipalId == $self->Instance) { + unless ( $self->CurrentUserHasRight('AdminOwnPersonalGroups')) { + return ( 0, $self->loc('Permission Denied') ); + } + } else { + unless ( $self->CurrentUserHasRight('AdminAllPersonalGroups') ) { + return ( 0, $self->loc('Permission Denied') ); + } + } + } + + else { + # We should only allow membership changes if the user has the right + # to modify group membership or the user is the principal in question + # and the user has the right to modify his own membership + unless ( ($new_member == $self->CurrentUser->PrincipalId && + $self->CurrentUserHasRight('ModifyOwnMembership') ) || + $self->CurrentUserHasRight('AdminGroupMembership') ) { + #User has no permission to be doing this + return ( 0, $self->loc("Permission Denied") ); + } + + } + $self->_AddMember(PrincipalId => $new_member); +} + +# A helper subroutine for AddMember that bypasses the ACL checks +# this should _ONLY_ ever be called from Ticket/Queue AddWatcher +# when we want to deal with groups according to queue rights +# In the dim future, this will all get factored out and life +# will get better + +# takes a paramhash of { PrincipalId => undef, InsideTransaction } + +sub _AddMember { + my $self = shift; + my %args = ( PrincipalId => undef, + InsideTransaction => undef, + @_); + my $new_member = $args{'PrincipalId'}; + + unless ($self->Id) { + $RT::Logger->crit("Attempting to add a member to a group which wasn't loaded. 'oops'"); + return(0, $self->loc("Group not found")); + } + + unless ($new_member =~ /^\d+$/) { + $RT::Logger->crit("_AddMember called with a parameter that's not an integer."); + } + + + my $new_member_obj = RT::Principal->new( $self->CurrentUser ); + $new_member_obj->Load($new_member); + + + unless ( $new_member_obj->Id ) { + $RT::Logger->debug("Couldn't find that principal"); + return ( 0, $self->loc("Couldn't find that principal") ); + } + + if ( $self->HasMember( $new_member_obj ) ) { + + #User is already a member of this group. no need to add it + return ( 0, $self->loc("Group already has member") ); + } + if ( $new_member_obj->IsGroup && + $new_member_obj->Object->HasMemberRecursively($self->PrincipalObj) ) { + + #This group can't be made to be a member of itself + return ( 0, $self->loc("Groups can't be members of their members")); + } + + + my $member_object = RT::GroupMember->new( $self->CurrentUser ); + my $id = $member_object->Create( + Member => $new_member_obj, + Group => $self->PrincipalObj, + InsideTransaction => $args{'InsideTransaction'} + ); + if ($id) { + return ( 1, $self->loc("Member added") ); + } + else { + return(0, $self->loc("Couldn't add member to group")); + } +} +# }}} + +# {{{ HasMember + +=head2 HasMember RT::Principal + +Takes an RT::Principal object returns a GroupMember Id if that user is a +member of this group. +Returns undef if the user isn't a member of the group or if the current +user doesn't have permission to find out. Arguably, it should differentiate +between ACL failure and non membership. + +=cut + +sub HasMember { + my $self = shift; + my $principal = shift; + + + unless (UNIVERSAL::isa($principal,'RT::Principal')) { + $RT::Logger->crit("Group::HasMember was called with an argument that". + "isn't an RT::Principal. It's $principal"); + return(undef); + } + + my $member_obj = RT::GroupMember->new( $self->CurrentUser ); + $member_obj->LoadByCols( MemberId => $principal->id, + GroupId => $self->PrincipalId ); + + #If we have a member object + if ( defined $member_obj->id ) { + return ( $member_obj->id ); + } + + #If Load returns no objects, we have an undef id. + else { + #$RT::Logger->debug($self." does not contain principal ".$principal->id); + return (undef); + } +} + +# }}} + +# {{{ HasMemberRecursively + +=head2 HasMemberRecursively RT::Principal + +Takes an RT::Principal object and returns true if that user is a member of +this group. +Returns undef if the user isn't a member of the group or if the current +user doesn't have permission to find out. Arguably, it should differentiate +between ACL failure and non membership. + +=cut + +sub HasMemberRecursively { + my $self = shift; + my $principal = shift; + + unless (UNIVERSAL::isa($principal,'RT::Principal')) { + $RT::Logger->crit("Group::HasMemberRecursively was called with an argument that". + "isn't an RT::Principal. It's $principal"); + return(undef); + } + my $member_obj = RT::CachedGroupMember->new( $self->CurrentUser ); + $member_obj->LoadByCols( MemberId => $principal->Id, + GroupId => $self->PrincipalId , + Disabled => 0 + ); + + #If we have a member object + if ( defined $member_obj->id ) { + return ( 1); + } + + #If Load returns no objects, we have an undef id. + else { + return (undef); + } +} + +# }}} + +# {{{ DeleteMember + +=head2 DeleteMember PRINCIPAL_ID + +Takes the principal id of a current user or group. +If the current user has apropriate rights, +removes that GroupMember from this group. +Returns a two value array. the first value is true on successful +addition or 0 on failure. The second value is a textual status msg. + +=cut + +sub DeleteMember { + my $self = shift; + my $member_id = shift; + + + # We should only allow membership changes if the user has the right + # to modify group membership or the user is the principal in question + # and the user has the right to modify his own membership + + if ($self->Domain eq 'Personal') { + if ($self->CurrentUser->PrincipalId == $self->Instance) { + unless ( $self->CurrentUserHasRight('AdminOwnPersonalGroups')) { + return ( 0, $self->loc('Permission Denied') ); + } + } else { + unless ( $self->CurrentUserHasRight('AdminAllPersonalGroups') ) { + return ( 0, $self->loc('Permission Denied') ); + } + } + } + else { + unless ( (($member_id == $self->CurrentUser->PrincipalId) && + $self->CurrentUserHasRight('ModifyOwnMembership') ) || + $self->CurrentUserHasRight('AdminGroupMembership') ) { + #User has no permission to be doing this + return ( 0, $self->loc("Permission Denied") ); + } + } + $self->_DeleteMember($member_id); +} + +# A helper subroutine for DeleteMember that bypasses the ACL checks +# this should _ONLY_ ever be called from Ticket/Queue DeleteWatcher +# when we want to deal with groups according to queue rights +# In the dim future, this will all get factored out and life +# will get better + +sub _DeleteMember { + my $self = shift; + my $member_id = shift; + + my $member_obj = RT::GroupMember->new( $self->CurrentUser ); + + $member_obj->LoadByCols( MemberId => $member_id, + GroupId => $self->PrincipalId); + + + #If we couldn't load it, return undef. + unless ( $member_obj->Id() ) { + $RT::Logger->debug("Group has no member with that id"); + return ( 0,$self->loc( "Group has no such member" )); + } + + #Now that we've checked ACLs and sanity, delete the groupmember + my $val = $member_obj->Delete(); + + if ($val) { + return ( $val, $self->loc("Member deleted") ); + } + else { + $RT::Logger->debug("Failed to delete group ".$self->Id." member ". $member_id); + return ( 0, $self->loc("Member not deleted" )); + } +} + +# }}} + +# {{{ ACL Related routines + +# {{{ sub _Set +sub _Set { + my $self = shift; + + if ($self->Domain eq 'Personal') { + if ($self->CurrentUser->PrincipalId == $self->Instance) { + unless ( $self->CurrentUserHasRight('AdminOwnPersonalGroups')) { + return ( 0, $self->loc('Permission Denied') ); + } + } else { + unless ( $self->CurrentUserHasRight('AdminAllPersonalGroups') ) { + return ( 0, $self->loc('Permission Denied') ); + } + } + } + else { + unless ( $self->CurrentUserHasRight('AdminGroup') ) { + return ( 0, $self->loc('Permission Denied') ); + } + } + return ( $self->SUPER::_Set(@_) ); +} + +# }}} + + + + +=item CurrentUserHasRight RIGHTNAME + +Returns true if the current user has the specified right for this group. + + + TODO: we don't deal with membership visibility yet + +=cut + + +sub CurrentUserHasRight { + my $self = shift; + my $right = shift; + + + + if ($self->Id && + $self->CurrentUser->HasRight( Object => $self, + Right => $right )) { + return(1); + } + elsif ( $self->CurrentUser->HasRight(Object => $RT::System, Right => $right )) { + return (1); + } else { + return(undef); + } + +} + +# }}} + + + + +# {{{ Principal related routines + +=head2 PrincipalObj + +Returns the principal object for this user. returns an empty RT::Principal +if there's no principal object matching this user. +The response is cached. PrincipalObj should never ever change. + +=begin testing + +ok(my $u = RT::Group->new($RT::SystemUser)); +ok($u->Load(4), "Loaded the first user"); +ok($u->PrincipalObj->ObjectId == 4, "user 4 is the fourth principal"); +ok($u->PrincipalObj->PrincipalType eq 'Group' , "Principal 4 is a group"); + +=end testing + +=cut + + +sub PrincipalObj { + my $self = shift; + unless ($self->{'PrincipalObj'} && + ($self->{'PrincipalObj'}->ObjectId == $self->Id) && + ($self->{'PrincipalObj'}->PrincipalType eq 'Group')) { + + $self->{'PrincipalObj'} = RT::Principal->new($self->CurrentUser); + $self->{'PrincipalObj'}->LoadByCols('ObjectId' => $self->Id, + 'PrincipalType' => 'Group') ; + } + return($self->{'PrincipalObj'}); +} + + +=head2 PrincipalId + +Returns this user's PrincipalId + +=cut + +sub PrincipalId { + my $self = shift; + return $self->Id; +} + +# }}} +1; + diff --git a/rt/lib/RT/Groups_Overlay.pm b/rt/lib/RT/Groups_Overlay.pm new file mode 100644 index 000000000..3d2c660fe --- /dev/null +++ b/rt/lib/RT/Groups_Overlay.pm @@ -0,0 +1,298 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Groups - a collection of RT::Group objects + +=head1 SYNOPSIS + + use RT::Groups; + my $groups = $RT::Groups->new($CurrentUser); + $groups->LimitToReal(); + while (my $group = $groups->Next()) { + print $group->Id ." is a group id\n"; + } + +=head1 DESCRIPTION + + +=head1 METHODS + + +=begin testing + +ok (require RT::Groups); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + + +# {{{ sub _Init + +sub _Init { + my $self = shift; + $self->{'table'} = "Groups"; + $self->{'primary_key'} = "id"; + + $self->OrderBy( ALIAS => 'main', + FIELD => 'Name', + ORDER => 'ASC'); + + + return ( $self->SUPER::_Init(@_)); +} +# }}} + +# {{{ LimiToSystemInternalGroups + +=head2 LimitToSystemInternalGroups + +Return only SystemInternal Groups, such as "privileged" "unprivileged" and "everyone" + +=cut + + +sub LimitToSystemInternalGroups { + my $self = shift; + $self->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'SystemInternal'); + $self->Limit(FIELD => 'Instance', OPERATOR => '=', VALUE => ''); +} + + +# }}} + +# {{{ LimiToUserDefinedGroups + +=head2 LimitToUserDefined Groups + +Return only UserDefined Groups + +=cut + + +sub LimitToUserDefinedGroups { + my $self = shift; + $self->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'UserDefined'); + $self->Limit(FIELD => 'Instance', OPERATOR => '=', VALUE => ''); +} + + +# }}} + +# {{{ LimiToPersonalGroups + +=head2 LimitToPersonalGroupsFor PRINCIPAL_ID + +Return only Personal Groups for the user whose principal id +is PRINCIPAL_ID + +=cut + + +sub LimitToPersonalGroupsFor { + my $self = shift; + my $princ = shift; + + $self->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'Personal'); + $self->Limit( FIELD => 'Instance', + OPERATOR => '=', + VALUE => $princ, + ENTRY_AGGREGATOR => 'OR'); +} + + +# }}} + +# {{{ LimitToRolesForQueue + +=item LimitToRolesForQueue QUEUE_ID + +Limits the set of groups found to role groups for queue QUEUE_ID + +=cut + +sub LimitToRolesForQueue { + my $self = shift; + my $queue = shift; + $self->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'RT::Queue-Role'); + $self->Limit(FIELD => 'Instance', OPERATOR => '=', VALUE => $queue); +} + +# }}} + +# {{{ LimitToRolesForTicket + +=item LimitToRolesForTicket Ticket_ID + +Limits the set of groups found to role groups for Ticket Ticket_ID + +=cut + +sub LimitToRolesForTicket { + my $self = shift; + my $Ticket = shift; + $self->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'RT::Ticket-Role'); + $self->Limit(FIELD => 'Instance', OPERATOR => '=', VALUE => '$Ticket'); +} + +# }}} + +# {{{ LimitToRolesForSystem + +=item LimitToRolesForSystem System_ID + +Limits the set of groups found to role groups for System System_ID + +=cut + +sub LimitToRolesForSystem { + my $self = shift; + $self->Limit(FIELD => 'Domain', OPERATOR => '=', VALUE => 'RT::System-Role'); +} + +# }}} + +=head2 WithMember {PrincipalId => PRINCIPAL_ID, Recursively => undef} + +Limits the set of groups returned to groups which have +Principal PRINCIPAL_ID as a member + +=begin testing + +my $u = RT::User->new($RT::SystemUser); +$u->Create(Name => 'Membertests'); +my $g = RT::Group->new($RT::SystemUser); +my ($id, $msg) = $g->CreateUserDefinedGroup(Name => 'Membertests'); +ok ($id,$msg); + +my ($aid, $amsg) =$g->AddMember($u->id); +ok ($aid, $amsg); +ok($g->HasMember($u->PrincipalObj),"G has member u"); + +my $groups = RT::Groups->new($RT::SystemUser); +$groups->LimitToUserDefinedGroups(); +$groups->WithMember(PrincipalId => $u->id); +ok ($groups->Count == 1,"found the 1 group - " . $groups->Count); +ok ($groups->First->Id == $g->Id, "it's the right one"); + + + + +=end testing + + +=cut + +sub WithMember { + my $self = shift; + my %args = ( PrincipalId => undef, + Recursively => undef, + @_); + my $members; + + if ($args{'Recursively'}) { + $members = $self->NewAlias('CachedGroupMembers'); + } else { + $members = $self->NewAlias('GroupMembers'); + } + $self->Join(ALIAS1 => 'main', FIELD1 => 'id', + ALIAS2 => $members, FIELD2 => 'GroupId'); + + $self->Limit(ALIAS => $members, FIELD => 'MemberId', OPERATOR => '=', VALUE => $args{'PrincipalId'}); +} + + +sub WithRight { + my $self = shift; + my %args = ( Right => undef, + Object => => undef, + IncludeSystemRights => undef, + IncludeSuperusers => undef, + @_ ); + + my $groupprinc = $self->NewAlias('Principals'); + my $acl = $self->NewAlias('ACL'); + + # {{{ Find only rows where the right granted is the one we're looking up or _possibly_ superuser + $self->Limit( ALIAS => $acl, + FIELD => 'RightName', + OPERATOR => '=', + VALUE => $args{Right}, + ENTRYAGGREGATOR => 'OR' ); + + if ( $args{'IncludeSuperusers'} ) { + $self->Limit( ALIAS => $acl, + FIELD => 'RightName', + OPERATOR => '=', + VALUE => 'SuperUser', + ENTRYAGGREGATOR => 'OR' ); + } + # }}} + + my ($or_check_ticket_roles, $or_check_roles, $or_look_at_object); + + if ( defined $args{'Object'} ) { + if ( ref($args{'Object'}) eq 'RT::Ticket' ) { + $or_check_ticket_roles = + " OR ( main.Domain = 'RT::Ticket-Role' AND main.Instance = " . $args{'Object'}->Id . ") "; + + # If we're looking at ticket rights, we also want to look at the associated queue rights. + # this is a little bit hacky, but basically, now that we've done the ticket roles magic, + # we load the queue object and ask all the rest of our questions about the queue. + $args{'Object'} = $args{'Object'}->QueueObj; + } + # TODO XXX This really wants some refactoring + if ( ref($args{'Object'}) eq 'RT::Queue' ) { + $or_check_roles = + " OR ( ( (main.Domain = 'RT::Queue-Role' AND main.Instance = " . + $args{'Object'}->Id . ") $or_check_ticket_roles ) " . + " AND main.Type = $acl.PrincipalType AND main.id = $groupprinc.id) "; + } + + $or_look_at_object = + " OR ($acl.ObjectType = '" . ref($args{'Object'}) . "'" . + " AND $acl.ObjectId = " . $args{'Object'}->Id . ") "; + } + + $self->_AddSubClause( "WhichObject", "($acl.ObjectType = 'RT::System' $or_look_at_object)" ); + + $self->_AddSubClause( "WhichGroup", + qq{ + ( ( $acl.PrincipalId = $groupprinc.id + AND $acl.PrincipalType = 'Group' + AND ( main.Domain = 'SystemInternal' + OR main.Domain = 'UserDefined' + OR main.Domain = 'ACLEquivalence') + AND main.id = $groupprinc.id) + $or_check_roles) + } + ); +} + +1; + diff --git a/rt/lib/RT/I18N.pm b/rt/lib/RT/I18N.pm new file mode 100644 index 000000000..c013c219e --- /dev/null +++ b/rt/lib/RT/I18N.pm @@ -0,0 +1,430 @@ +# 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. +# +# 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 +=head1 NAME + +RT::I18N - a base class for localization of RT + +=cut + +package RT::I18N; + +use strict; +use Locale::Maketext 1.04; +use Locale::Maketext::Lexicon 0.25; +use base ('Locale::Maketext::Fuzzy'); +use vars qw( %Lexicon ); + +#If we're running on 5.6, we desperately need Encode::compat. But if we're on 5.8, we don't really need it. +BEGIN { if ($] < 5.007001) { +require Encode::compat; +} } +use Encode; + +use MIME::Entity; +use MIME::Head; + +# I decree that this project's first language is English. + +%Lexicon = ( + 'TEST_STRING' => 'Concrete Mixer', + + '__Content-Type' => 'text/plain; charset=utf-8', + + '_AUTO' => 1, + # That means that lookup failures can't happen -- if we get as far + # as looking for something in this lexicon, and we don't find it, + # then automagically set $Lexicon{$key} = $key, before possibly + # compiling it. + + # The exception is keys that start with "_" -- they aren't auto-makeable. + +); +# End of lexicon. + +=head2 Init + +Initializes the lexicons used for localization. + +=begin testing + +use_ok (RT::I18N); +ok(RT::I18N->Init); + +=end testing + +=cut + +sub Init { + # Load language-specific functions + foreach my $language ( glob(substr(__FILE__, 0, -3) . "/*.pm")) { + if ($language =~ /^([-\w.\/\\~:]+)$/) { + require $1; + } + else { + warn("$language is tainted. not loading"); + } + } + + my @lang = @RT::LexiconLanguages; + @lang = ('*') unless @lang; + + # Acquire all .po files and iterate them into lexicons + Locale::Maketext::Lexicon->import({ + _decode => 1, map { + $_ => [ + Gettext => (substr(__FILE__, 0, -3) . "/$_.po"), + Gettext => "$RT::LocalLexiconPath/*/$_.po", + ], + } @lang + }); + + return 1; +} + +=head2 encoding + +Returns the encoding of the current lexicon, as yanked out of __ContentType's "charset" field. +If it can't find anything, it returns 'ISO-8859-1' + +=begin testing + +ok(my $chinese = RT::I18N->get_handle('zh_tw')); +ok(UNIVERSAL::can($chinese, 'maketext')); +ok($chinese->maketext('__Content-Type') =~ /utf-8/i, "Found the utf-8 charset for traditional chinese in the string ".$chinese->maketext('__Content-Type')); +ok($chinese->encoding eq 'utf-8', "The encoding is 'utf-8' -".$chinese->encoding); + +ok(my $en = RT::I18N->get_handle('en')); +ok(UNIVERSAL::can($en, 'maketext')); +ok($en->encoding eq 'utf-8', "The encoding ".$en->encoding." is 'utf-8'"); + +=end testing + + +=cut + + +sub encoding { 'utf-8' } + +# {{{ SetMIMEEntityToUTF8 + +=head2 SetMIMEEntityToUTF8 $entity + +An utility method which will try to convert entity body into utf8. +It's now a wrap-up of SetMIMEEntityToEncoding($entity, 'utf-8'). + +=cut + +sub SetMIMEEntityToUTF8 { + RT::I18N::SetMIMEEntityToEncoding(shift, 'utf-8'); +} + +# }}} + +# {{{ SetMIMEEntityToEncoding + +=head2 SetMIMEEntityToEncoding $entity, $encoding + +An utility method which will try to convert entity body into specified +charset encoding (encoded as octets, *not* unicode-strings). It will +iterate all the entities in $entity, and try to convert each one into +specified charset if whose Content-Type is 'text/plain'. + +This method doesn't return anything meaningful. + +=cut + +sub SetMIMEEntityToEncoding { + my ( $entity, $enc, $preserve_words ) = ( shift, shift, shift ); + + #if ( $entity->is_multipart ) { + #$RT::Logger->crit("This entity is a multipart " . $entity->head->as_string); + SetMIMEEntityToEncoding( $_, $enc, $preserve_words ) foreach $entity->parts; + #} + + my $charset = _FindOrGuessCharset($entity) or return; + # one and only normalization + $charset = 'utf-8' if $charset eq 'utf8'; + $enc = 'utf-8' if $enc eq 'utf8'; + + SetMIMEHeadToEncoding($entity->head, $charset => $enc, $preserve_words); + + my $head = $entity->head; + + # convert at least MIME word encoded attachment filename + foreach my $attr (qw(content-type.name content-disposition.filename)) { + if ( my $name = $head->mime_attr($attr) and !$preserve_words ) { + $head->mime_attr( $attr => DecodeMIMEWordsToUTF8($name) ); + } + } + + # If this is a textual entity, we'd need to preserve its original encoding + $head->add( "X-RT-Original-Encoding" => $charset ) + if $head->mime_attr('content-type.charset') or $head->mime_type =~ /^text/; + + + return unless ( $head->mime_type =~ qr{^(text/plain|message/rfc822)$}i ); + + + my $body = $entity->bodyhandle; + + if ( $enc ne $charset && $body) { + my @lines = $body->as_lines or return; + + # {{{ Convert the body + eval { + $RT::Logger->debug("Converting '$charset' to '$enc' for ". $head->mime_type . " - ". $head->get('subject')); + + # NOTE:: see the comments at the end of the sub. + Encode::_utf8_off( $lines[$_] ) foreach ( 0 .. $#lines ); + Encode::from_to( $lines[$_], $charset => $enc ) for ( 0 .. $#lines ); + }; + + if ($@) { + $RT::Logger->error( "Encoding error: " . $@ . " defaulting to ISO-8859-1 -> UTF-8" ); + eval { + Encode::from_to( $lines[$_], 'iso-8859-1' => $enc ) foreach ( 0 .. $#lines ); + }; + if ($@) { + $RT::Logger->crit( "Totally failed to convert to utf-8: " . $@ . " I give up" ); + } + } + # }}} + + my $new_body = MIME::Body::InCore->new( \@lines ); + + # set up the new entity + $head->mime_attr( "content-type" => 'text/plain' ) + unless ( $head->mime_attr("content-type") ); + $head->mime_attr( "content-type.charset" => $enc ); + $entity->bodyhandle($new_body); + } +} + +# NOTES: Why Encode::_utf8_off before Encode::from_to +# +# All the strings in RT are utf-8 now. Quotes from Encode POD: +# +# [$length =] from_to($octets, FROM_ENC, TO_ENC [, CHECK]) +# ... The data in $octets must be encoded as octets and not as +# characters in Perl's internal format. ... +# +# Not turning off the UTF-8 flag in the string will prevent the string +# from conversion. + +# }}} + +# {{{ DecodeMIMEWordsToUTF8 + +=head2 DecodeMIMEWordsToUTF8 $raw + +An utility method which mimics MIME::Words::decode_mimewords, but only +limited functionality. This function returns an utf-8 string. + +It returns the decoded string, or the original string if it's not +encoded. Since the subroutine converts specified string into utf-8 +charset, it should not alter a subject written in English. + +Why not use MIME::Words directly? Because it fails in RT when I +tried. Maybe it's ok now. + +=cut + +sub DecodeMIMEWordsToUTF8 { + my $str = shift; + DecodeMIMEWordsToEncoding($str, 'utf-8'); +} + +sub DecodeMIMEWordsToEncoding { + my $str = shift; + my $enc = shift; + + + @_ = $str =~ m/([^=]*)=\?([^?]+)\?([QqBb])\?([^?]+)\?=([^=]*)/g; + + return ($str) unless (@_); + + $str = ""; + while (@_) { + my ($prefix, $charset, $encoding, $enc_str, $trailing) = + (shift, shift, shift, shift, shift); + + $trailing =~ s/\s?\t?$//; # Observed from Outlook Express + + if ($encoding eq 'Q' or $encoding eq 'q') { + use MIME::QuotedPrint; + $enc_str =~ tr/_/ /; # Observed from Outlook Express + $enc_str = decode_qp($enc_str); + } elsif ($encoding eq 'B' or $encoding eq 'b') { + use MIME::Base64; + $enc_str = decode_base64($enc_str); + } else { + $RT::Logger->warning("RT::I18N::DecodeMIMEWordsToCharset got a " . + "strange encoding: $encoding."); + } + + # now we have got a decoded subject, try to convert into the encoding + unless ($charset eq $enc) { + eval { Encode::from_to($enc_str, $charset, $enc) }; + if ($@) { + $charset = _GuessCharset( $enc_str ); + Encode::from_to($enc_str, $charset, $enc); + } + } + + $str .= $prefix . $enc_str . $trailing; + } + + return ($str) +} + +# }}} + +# {{{ _FindOrGuessCharset + +=head2 _FindOrGuessCharset MIME::Entity + +When handed a MIME::Entity will first attempt to read what charset the message is encoded in. Failing that, +will use Encode::Guess to try to figure it out + +=cut + +sub _FindOrGuessCharset { + my $entity = shift; + my $head = $entity->head; + + if ($head->mime_attr("content-type.charset")) { + return $head->mime_attr("content-type.charset"); + } + + if ( $head->mime_type =~ m{^text/}) { + my $body = $entity->bodyhandle or return; + return _GuessCharset( $head->as_string . $body->as_string ); + } + else { + # potentially binary data -- don't guess the body + return _GuessCharset( $head->as_string ); + } +} + +# }}} + + +# {{{ _GuessCharset + +=head2 _GuessCharset STRING + +use Encode::Guess to try to figure it out the string's encoding. + +=cut + +sub _GuessCharset { + my $fallback = 'iso-8859-1'; + my $charset; + + if ( @RT::EmailInputEncodings and eval { require Encode::Guess; 1 } ) { + Encode::Guess->set_suspects(@RT::EmailInputEncodings); + my $decoder = Encode::Guess->guess( $_[0] ); + + if ( ref $decoder ) { + $charset = $decoder->name; + $RT::Logger->debug("Guessed encoding: $charset"); + return $charset; + } + elsif ($decoder =~ /(\S+ or .+)/) { + my %matched = map { $_ => 1 } split(/ or /, $1); + return 'utf-8' if $matched{'utf8'}; # one and only normalization + + foreach my $suspect (@RT::EmailInputEncodings) { + next unless $matched{$suspect}; + $RT::Logger->debug("Encode::Guess ambiguous ($decoder); using $suspect"); + $charset = $suspect; + last; + } + } + else { + $RT::Logger->warning("Encode::Guess failed: $decoder; fallback to $fallback"); + } + } + else { + $RT::Logger->warning("Cannot Encode::Guess; fallback to $fallback"); + } + + return($charset || $fallback); +} + +# }}} + +# {{{ SetMIMEHeadToEncoding + +=head2 SetMIMEHeadToEncoding HEAD OLD_CHARSET NEW_CHARSET + +Converts a MIME Head from one encoding to another. This totally violates the RFC. +We should never need this. But, Surprise!, MUAs are badly broken and do this kind of stuff +all the time + + +=cut + +sub SetMIMEHeadToEncoding { + my ( $head, $charset, $enc, $preserve_words ) = ( shift, shift, shift, shift ); + + $charset = 'utf-8' if $charset eq 'utf8'; + $enc = 'utf-8' if $enc eq 'utf8'; + + return if $charset eq $enc and $preserve_words; + + foreach my $tag ( $head->tags ) { + my @values = $head->get_all($tag); + $head->delete($tag); + foreach my $value (@values) { + if ( $charset ne $enc ) { + + eval { + Encode::_utf8_off($value); + Encode::from_to( $value, $charset => $enc ); + }; + if ($@) { + $RT::Logger->error( "Encoding error: " . $@ + . " defaulting to ISO-8859-1 -> UTF-8" ); + eval { Encode::from_to( $value, 'iso-8859-1' => $enc ) }; + if ($@) { + $RT::Logger->crit( "Totally failed to convert to utf-8: " . $@ . " I give up" ); + } + } + } + $value = DecodeMIMEWordsToEncoding( $value, $enc ) unless $preserve_words; + $head->add( $tag, $value ); + } + } + +} +# }}} + +eval "require RT::I18N_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N_Vendor.pm}); +eval "require RT::I18N_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N_Local.pm}); + +1; # End of module. + diff --git a/rt/lib/RT/I18N/cs.pm b/rt/lib/RT/I18N/cs.pm new file mode 100644 index 000000000..36e2bc6af --- /dev/null +++ b/rt/lib/RT/I18N/cs.pm @@ -0,0 +1,68 @@ +package RT::I18N::cs; + +# # CZECH TRANSLATORS COMMENTS see Locale::Maketext::TPJ13 +# Obecne parametry musi byt docela slozite (v pripade Slavistickych jazyku) +# typu pocet, slovo, pad a rod +# +#pad 1., rod muzsky: +#0 krecku +#1 krecek +#2..4 krecci +#5.. krecku (nehodi se zde resit pravidlo mod 1,2,3,4 krom mod 11,12,13,14) +# +#0 kabatu +#1 kabat +#2..4 kabaty +#5 kabatu +# +# => Vyplati se udelat quant s parametry typu pocet, slovo1, slovo2..4, slovo5 a slovo0 +# + +sub quant { + my($handle, $num, @forms) = @_; + + return $num if @forms == 0; # what should this mean? + return $forms[3] if @forms > 3 and $num == 0; # special zeroth case + + # Normal case: + # Note that the formatting of $num is preserved. + #return( $handle->numf($num) . ' ' . $handle->numerate($num, @forms) ); + return( $handle->numerate($num, @forms) ); + # Most human languages put the number phrase before the qualified phrase. +} + + +sub numerate { + # return this lexical item in a form appropriate to this number + my($handle, $num, @forms) = @_; + my $s = ($num == 1); + + return '' unless @forms; + return + $s ? $forms[0] : + ( $num > 1 && $num < 5 ) ? $forms[1] : + $forms[2]; +} + +#-------------------------------------------------------------------------- + +sub numf { + my($handle, $num) = @_[0,1]; + if($num < 10_000_000_000 and $num > -10_000_000_000 and $num == int($num)) { + $num += 0; # Just use normal integer stringification. + # Specifically, don't let %G turn ten million into 1E+007 + } else { + $num = CORE::sprintf("%G", $num); + # "CORE::" is there to avoid confusion with the above sub sprintf. + } + while( $num =~ s/^([-+]?\d+)(\d{3})/$1,$2/s ) {1} # right from perlfaq5 + # The initial \d+ gobbles as many digits as it can, and then we + # backtrack so it un-eats the rightmost three, and then we + # insert the comma there. + + $num =~ tr<.,><,.> if ref($handle) and $handle->{'numf_comma'}; + # This is just a lame hack instead of using Number::Format + return $num; +} + +1; diff --git a/rt/lib/RT/I18N/cs.po b/rt/lib/RT/I18N/cs.po new file mode 100644 index 000000000..75f349595 --- /dev/null +++ b/rt/lib/RT/I18N/cs.po @@ -0,0 +1,4496 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: RT 3.0.0\n" +"POT-Creation-Date: 2002-05-02 11:36+0800\n" +"PO-Revision-Date: 2003-03-24 03:00+0800\n" +"Last-Translator: Jan Okrouhly <okrouhly@civ.zcu.cz>\n" +"Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 +msgid "#" +msgstr "#" + +#: html/Admin/Queues/Scrip.html:55 +#. ($QueueObj->id) +msgid "#%1" +msgstr "#%1" + +#: html/Approvals/Elements/ShowDependency:50 html/Ticket/Display.html:26 html/Ticket/Display.html:30 +#. ($Ticket->Id, $Ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "#%1: %2" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "%1 %2" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($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 %3.%2.%7 %4:%5:%6" + +#: lib/RT/Ticket_Overlay.pm:3438 lib/RT/Transaction_Overlay.pm:559 lib/RT/Transaction_Overlay.pm:601 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 added" +msgstr "%1 %2 pÅ™idáno" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "- %1 %2" + +#: lib/RT/Ticket_Overlay.pm:3444 lib/RT/Transaction_Overlay.pm:566 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1 %2 zmÄ›nÄ›no na %3" + +#: lib/RT/Ticket_Overlay.pm:3441 lib/RT/Transaction_Overlay.pm:562 lib/RT/Transaction_Overlay.pm:607 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 deleted" +msgstr "%1 %2 smazáno" + +#: html/Admin/Elements/EditScrips:44 html/Admin/Elements/ListGlobalScrips:28 +#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) +msgid "%1 %2 with template %3" +msgstr "%1 %2 se vzorem %3" + +#: NOT FOUND IN SOURCE +msgid "%1 (%2) %3 this ticket\\n" +msgstr "%1 (%2) %3 tento požadavek\\n" + +#: html/Search/Listing.html:57 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "%1. až %2. zobrazený" + +#: bin/rt-crontool:169 bin/rt-crontool:176 bin/rt-crontool:182 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - An argument to pass to %2" +msgstr "%1 - argument k pÅ™edánà %2" + +#: bin/rt-crontool:185 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "%1 - Výstupnà stav jde do STDOUT" + +#: bin/rt-crontool:179 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "%1 - Jaký akÄnà modul chcete použÃt" + +#: bin/rt-crontool:173 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "%1 - Jaký podmÃnkový modul chcete použÃt" + +#: bin/rt-crontool:166 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "%1 - Jaký vyhledávacà modul chcete použÃt" + +#: lib/RT/ScripAction_Overlay.pm:122 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "ScripAction %1 nahrána" + +#: lib/RT/Ticket_Overlay.pm:3471 +#. ($args{'Value'}, $cf->Name) +msgid "%1 added as a value for %2" +msgstr "%1 pÅ™idáno jako hodnota pro %2" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on" +msgstr "%1 aliasy vyžadujà k Äinnosti TicketId" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on (from %2) %3" +msgstr "%1 aliasy vyžadujà k Äinnosti TicketId (odesÃlatel %2) %3" + +#: lib/RT/Link_Overlay.pm:117 lib/RT/Link_Overlay.pm:124 +#. ($args{'Base'}) +#. ($args{'Target'}) +msgid "%1 appears to be a local object, but can't be found in the database" +msgstr "%1 vypadá jako lokálnà objekt, ale nenà v databázi" + +#: html/Ticket/Elements/ShowDates:52 lib/RT/Transaction_Overlay.pm:483 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%1 uživatelem %2" + +#: lib/RT/Transaction_Overlay.pm:537 lib/RT/Transaction_Overlay.pm:626 lib/RT/Transaction_Overlay.pm:635 lib/RT/Transaction_Overlay.pm:638 +#. ($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 zmÄ›nÄ›no z %2 na %3" + +#: lib/RT/Interface/Web.pm:857 +msgid "%1 could not be set to %2." +msgstr "%1 nemůže být nastaveno na %2." + +#: NOT FOUND IN SOURCE +msgid "%1 couldn't init a transaction (%2)\\n" +msgstr "%1 nemůže zaÄÃt transakci (%2)\\n" + +#: lib/RT/Ticket_Overlay.pm:2813 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1 nemůže nastavit stav na vyÅ™eÅ¡en. RT databáze může být nekonzistentnÃ." + +#: html/Elements/MyTickets:25 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "%1 nejdůležitÄ›jÅ¡Ãch požadavků, které vlastnÃm..." + +#: html/Elements/MyRequests:25 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "%1 nejdůležitÄ›jÅ¡Ãch požadavků, které žádám..." + +#: bin/rt-crontool:161 +#. ($0) +msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." +msgstr "%1 je nástroj zpracujÃcà požadavky z vnÄ›jÅ¡Ãho plánovacÃho nástroje jako je cron" + +#: lib/RT/Queue_Overlay.pm:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1 již nenà %2 této fronty." + +#: lib/RT/Ticket_Overlay.pm:1570 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 již nenà %2 tohoto požadavku." + +#: lib/RT/Ticket_Overlay.pm:3527 +#. ($args{'Value'}, $cf->Name) +msgid "%1 is no longer a value for custom field %2" +msgstr "%1 již nenà hodnotou uživatelské položky %2" + +#: NOT FOUND IN SOURCE +msgid "%1 isn't a valid Queue id." +msgstr "%1 nenà platným identifikátorem fronty." + +#: html/Ticket/Elements/ShowBasics:36 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 %quant(%1,minuta,minuty,minut,minut)" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "%1 nezobrazeno" + +#: html/User/Elements/DelegateRights:76 +#. (loc($ObjectType =~ /^RT::(.*)$/)) +msgid "%1 rights" +msgstr "práva %1" + +#: NOT FOUND IN SOURCE +msgid "%1 succeeded\\n" +msgstr "%1 provedeno\\n" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for $MessageId" +msgstr "typ %1 neznámý pro $MessageId" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for %2" +msgstr "typ %1 neznámý pro %2" + +#: lib/RT/Action/ResolveMembers.pm:42 +#. (ref $self) +msgid "%1 will resolve all members of a resolved group ticket." +msgstr "%1 vyÅ™ešà vÅ¡echny Äleny skupiny vyÅ™eÅ¡eného požadavku." + +#: NOT FOUND IN SOURCE +msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." +msgstr "%1 odložà [mÃstnÃ] BÃZI, je-li závislá [Äi Älenem] na spjatém požadavku." + +#: lib/RT/Transaction_Overlay.pm:435 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1: neudána pÅ™Ãloha" + +#: html/Ticket/Elements/ShowTransaction:102 +#. ($size) +msgid "%1b" +msgstr "%1 B" + +#: html/Ticket/Elements/ShowTransaction:99 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "%1 kB" + +#: lib/RT/Ticket_Overlay.pm:1140 +#. ($args{'Status'}) +msgid "'%1' is an invalid value for status" +msgstr "%1 je neplatnou hodnotou pro stav" + +#: NOT FOUND IN SOURCE +msgid "'%1' not a recognized action. " +msgstr "%1 je neznámá akce." + +#: NOT FOUND IN SOURCE +msgid "(Check box to delete scrip)" +msgstr "(ZatrhnÄ›te pro smazánà scripu)" + +#: html/Admin/Elements/EditQueueWatchers:29 html/Admin/Elements/EditScrips:35 html/Admin/Elements/EditTemplates:36 html/Admin/Groups/Members.html:52 html/Ticket/Elements/EditLinks:33 html/Ticket/Elements/EditPeople:46 html/User/Groups/Members.html:55 +msgid "(Check box to delete)" +msgstr "(ZatrhnÄ›te pro smazánÃ)" + +#: html/Ticket/Create.html:178 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(Zadejte identifikátory Äi URL požadavku, oddÄ›lené mezerami)" + +#: html/Admin/Queues/Modify.html:54 html/Admin/Queues/Modify.html:60 +#. ($RT::CorrespondAddress) +#. ($RT::CommentAddress) +msgid "(If left blank, will default to %1" +msgstr "(Pro prázdné pole se použije %1)" + +#: html/Admin/Elements/EditCustomFields:33 html/Admin/Elements/ListGlobalCustomFields:32 +msgid "(No custom fields)" +msgstr "(Žádné uživatelské položky)" + +#: html/Admin/Groups/Members.html:50 html/User/Groups/Members.html:53 +msgid "(No members)" +msgstr "(Žádnà Älenové)" + +#: html/Admin/Elements/EditScrips:32 html/Admin/Elements/ListGlobalScrips:32 +msgid "(No scrips)" +msgstr "Žádné scripy" + +#: html/Admin/Elements/EditTemplates:31 +msgid "(No templates)" +msgstr "(Žádné vzory)" + +#: html/Ticket/Update.html:85 +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 "(ZaÅ¡le skrytou kopii této aktualizace mezerami oddÄ›lenému seznamu e-mail adres. <b>Neovlivňuje</b> pÅ™Ãjemce budoucÃch aktualizacÃ.)" + +#: 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 "(ZaÅ¡le skrytou kopii této aktualizace mezerami oddÄ›lenému seznamu e-mail adres. <b>Neovlivňuje</b> pÅ™Ãjemce budoucÃch aktualizacÃ.)" + +#: html/Ticket/Create.html:79 +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 "(ZaÅ¡le kopii této aktualizace mezerami oddÄ›lenému seznamu e-mail adres. Tito lidé <b>budou</b> dostávat budoucà aktualizace.)" + +#: html/Ticket/Update.html:81 +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 "(ZaÅ¡le kopii této aktualizace mezerami oddÄ›lenému seznamu e-mail adres. <b>NemÄ›nÃ</b> pÅ™Ãjemce budoucÃch aktualizacÃ" + +#: 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 "(ZaÅ¡le kopii této aktualizace mezerami oddÄ›lenému seznamu e-mail adres. <b>Neovlivňuje</b> pÅ™Ãjemce budoucÃch aktualizacÃ.)" + +#: html/Ticket/Create.html:69 +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 "(ZaÅ¡le kopii této aktualizace mezerami oddÄ›lenému seznamu e-mail adres. Tito lidé <b>budou</b> dostávat budoucà aktualizace.)" + +#: html/Admin/Groups/index.html:33 html/User/Groups/index.html:33 +msgid "(empty)" +msgstr "(prázdná)" + +#: html/Admin/Users/index.html:39 +msgid "(no name listed)" +msgstr "žádné jméno nebylo vypsáno" + +#: html/Elements/MyRequests:43 html/Elements/MyTickets:45 +msgid "(no subject)" +msgstr "(bez pÅ™edmÄ›tu)" + +#: html/Admin/Elements/SelectRights:48 html/Elements/SelectCustomFieldValue:30 html/Ticket/Elements/EditCustomField:59 html/Ticket/Elements/ShowCustomFields:36 lib/RT/Transaction_Overlay.pm:536 +msgid "(no value)" +msgstr "(bez hodnoty)" + +#: html/Ticket/Elements/EditLinks:116 +msgid "(only one ticket)" +msgstr "(jen jeden požadavek)" + +#: html/Elements/MyRequests:52 html/Elements/MyTickets:55 +msgid "(pending approval)" +msgstr "(oÄekávájÃcà schválenÃ)" + +#: html/Elements/MyRequests:54 html/Elements/MyTickets:57 +msgid "(pending other tickets)" +msgstr "(jiné oÄekávajÃcà požadavky)" + +#: html/Admin/Users/Modify.html:50 +msgid "(required)" +msgstr "(povinné)" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "(untitled)" +msgstr "(nepojmenováno)" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I own..." +msgstr "25 mnou vlastnÄ›ných nejdůležitÄ›jÅ¡Ãch požadavků..." + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I requested..." +msgstr "25 mnou žádaných nejdůležitÄ›jÅ¡Ãch požadavků..." + +#: html/Ticket/Elements/ShowBasics:32 +msgid "<% $Ticket->Status%>" +msgstr "<% $Ticket->Status%>" + +#: html/Elements/SelectTicketTypes:27 +msgid "<% $_ %>" +msgstr "<% $_ %>" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:26 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"Nový požadavek v\"> %1" + +#: etc/initialdata:203 +msgid "A blank template" +msgstr "Prázdný vzor" + +#: lib/RT/ACE_Overlay.pm:157 lib/RT/Principal_Overlay.pm:181 +msgid "ACE not found" +msgstr "ACE nenalezeno" + +#: lib/RT/ACE_Overlay.pm:831 +msgid "ACEs can only be created and deleted." +msgstr "ACE mohou být jen vytvářeny nebo ruÅ¡eny." + +#: bin/rt-commit-handler:755 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "PÅ™eruÅ¡eno k zamezenà nežádoucÃch zmÄ›n požadavku.\\n" + +#: html/User/Elements/Tabs:32 +msgid "About me" +msgstr "O mnÄ›" + +#: html/Admin/Users/Modify.html:80 +msgid "Access control" +msgstr "ŘÃzenà pÅ™Ãstupu" + +#: html/Admin/Elements/EditScrip:57 +msgid "Action" +msgstr "Akce" + +#: lib/RT/Scrip_Overlay.pm:147 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "Akce %1 nenalezena" + +#: bin/rt-crontool:123 +msgid "Action committed." +msgstr "Akce provedena." + +#: bin/rt-crontool:119 +msgid "Action prepared..." +msgstr "Akce pÅ™ipravena..." + +#: html/Search/Bulk.html:92 +msgid "Add AdminCc" +msgstr "PÅ™idat AdminCc" + +#: html/Search/Bulk.html:90 +msgid "Add Cc" +msgstr "PÅ™idat Cc" + +#: html/Ticket/Create.html:114 html/Ticket/Update.html:100 +msgid "Add More Files" +msgstr "PÅ™idat dalšà soubory" + +#: html/Search/Bulk.html:88 +msgid "Add Requestor" +msgstr "PÅ™idat Žadatele" + +#: NOT FOUND IN SOURCE +msgid "Add a new a global scrip" +msgstr "PÅ™idat nový globálnà scrip" + +#: NOT FOUND IN SOURCE +msgid "Add a scrip to this queue" +msgstr "PÅ™idat scrip k této frontÄ›" + +#: html/Admin/Global/Scrip.html:55 +msgid "Add a scrip which will apply to all queues" +msgstr "PÅ™idat scrip do vÅ¡ech front" + +#: html/Search/Bulk.html:118 +msgid "Add comments or replies to selected tickets" +msgstr "PÅ™idat komentáře Äi odpovÄ›di k vybraným požadavkům" + +#: html/Admin/Groups/Members.html:42 html/User/Groups/Members.html:39 +msgid "Add members" +msgstr "PÅ™idat Äleny" + +#: html/Admin/Queues/People.html:66 html/Ticket/Elements/AddWatchers:28 +msgid "Add new watchers" +msgstr "PÅ™idat nové pozorovatele" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "PÅ™idatDalÅ¡ÃStav" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "Uživatel pÅ™idán do této fronty jako %1" + +#: lib/RT/Ticket_Overlay.pm:1454 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "Uživatel pÅ™idán k tomuto požadavku jako %1" + +#: html/Admin/Elements/ModifyUser:76 html/Admin/Users/Modify.html:122 html/User/Prefs.html:88 +msgid "Address1" +msgstr "Adresa1" + +#: html/Admin/Elements/ModifyUser:78 html/Admin/Users/Modify.html:127 html/User/Prefs.html:90 +msgid "Address2" +msgstr "Adresa2" + +#: html/Ticket/Create.html:74 +msgid "Admin Cc" +msgstr "Admin Cc" + +#: etc/initialdata:274 +msgid "Admin Comment" +msgstr "Administrativnà komentář" + +#: etc/initialdata:256 +msgid "Admin Correspondence" +msgstr "Administrativnà korespondence" + +#: html/Admin/Queues/index.html:25 html/Admin/Queues/index.html:28 +msgid "Admin queues" +msgstr "Správa/Front" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "Správa/Uživatelů" + +#: html/Admin/Global/index.html:26 html/Admin/Global/index.html:28 +msgid "Admin/Global configuration" +msgstr "Správa/Globálnà konfigurace" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "Správa/Skupin" + +#: html/Admin/Queues/Modify.html:25 html/Admin/Queues/Modify.html:29 +msgid "Admin/Queue/Basics" +msgstr "Správa/Front/ZákladnÃch údajů" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "Spravovat vÅ¡echny osobnà skupiny" + +#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:39 html/Ticket/Update.html:50 lib/RT/ACE_Overlay.pm:89 +msgid "AdminCc" +msgstr "AdminCc" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "AdminComment" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "AdminCorrespondence" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "AdminCustomFields" +msgstr "Spravovat uživatelem definované položky" + +#: lib/RT/Group_Overlay.pm:146 +msgid "AdminGroup" +msgstr "Spravovat skupinu" + +#: lib/RT/Group_Overlay.pm:148 +msgid "AdminGroupMembership" +msgstr "Spravovat Älenstvà ve skupinách" + +#: lib/RT/System.pm:59 +msgid "AdminOwnPersonalGroups" +msgstr "Spravovat vlastnà osobnà skupiny" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "AdminQueue" +msgstr "Spravovat frontu" + +#: lib/RT/System.pm:60 +msgid "AdminUsers" +msgstr "Spravovat uživatele" + +#: html/Admin/Queues/People.html:48 html/Ticket/Elements/EditPeople:54 +msgid "Administrative Cc" +msgstr "Administrativnà Cc" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "PokroÄilé VyhledávánÃ" + +#: html/Elements/SelectDateRelation:36 +msgid "After" +msgstr "Po" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "StářÃ" + +#: html/Admin/Elements/EditCustomFields:96 +msgid "All Custom Fields" +msgstr "VÅ¡echny uživatelské položky" + +#: html/Admin/Queues/index.html:53 +msgid "All Queues" +msgstr "VÅ¡echny Fronty" + +#: NOT FOUND IN SOURCE +msgid "Always sends a message to the requestors independent of message sender" +msgstr "Vždy posÃlá zprávu žadatelům nezávisle na odesÃlateli" + +#: html/Elements/Tabs:58 +msgid "Approval" +msgstr "SchvalovánÃ" + +#: html/Approvals/Display.html:46 html/Approvals/Elements/Approve:27 html/Approvals/Elements/ShowDependency:42 html/Approvals/index.html:65 +#. ($Ticket->Id, $Ticket->Subject) +#. ($ticket->id, $msg) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Approval #%1: %2" +msgstr "Schválenà #%1: $2" + +#: html/Approvals/index.html:54 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "Schválenà #$1: Poznámky neuloženy kvůli systémové chybÄ›" + +#: html/Approvals/index.html:52 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "Schválenà #%1: Poznámky uloženy" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "Detaily schválenÃ" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "Schvalovacà diagram" + +#: html/Approvals/Elements/Approve:45 +msgid "Approve" +msgstr "Schválit" + +#: etc/initialdata:431 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "Poznámky schvalovatele: %1" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "dub" + +#: html/Elements/SelectSortOrder:35 +msgid "Ascending" +msgstr "VzestupnÄ›" + +#: html/Search/Bulk.html:127 html/SelfService/Update.html:36 html/Ticket/ModifyAll.html:83 html/Ticket/Update.html:100 +msgid "Attach" +msgstr "PÅ™iložit" + +#: html/SelfService/Create.html:67 html/Ticket/Create.html:110 +msgid "Attach file" +msgstr "PÅ™ipojit soubor" + +#: html/Ticket/Create.html:98 html/Ticket/Update.html:89 +msgid "Attached file" +msgstr "PÅ™ipojený soubor" + +#: html/SelfService/Attachment/dhandler:36 +msgid "Attachment '%1' could not be loaded" +msgstr "PÅ™Ãloha '%1' nemůže být nahrána" + +#: lib/RT/Transaction_Overlay.pm:443 +msgid "Attachment created" +msgstr "PÅ™Ãloha vytvoÅ™ena" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "Jméno souboru pÅ™Ãlohy" + +#: html/Ticket/Elements/ShowAttachments:26 +msgid "Attachments" +msgstr "PÅ™Ãlohy" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "srp" + +#: html/Admin/Elements/ModifyUser:66 +msgid "AuthSystem" +msgstr "AuthSystem" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "Automatická odpovÄ›Ä" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "Automaticky odpovÄ›z žadatelům" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "Automatická odpovÄ›Ä Å¾adatelům" + +#: NOT FOUND IN SOURCE +msgid "Bad PGP Signature: %1\\n" +msgstr "Chybná PGP signatura: %1\\n" + +#: html/SelfService/Attachment/dhandler:40 +msgid "Bad attachment id. Couldn't find attachment '%1'\\n" +msgstr "Chybný identifikátor pÅ™Ãlohy. Nelze nalézt pÅ™Ãlohu'%1'\\n" + +#: bin/rt-commit-handler:827 +#. ($val) +msgid "Bad data in %1" +msgstr "Chybná data v %1" + +#: html/SelfService/Attachment/dhandler:43 +#. ($trans, $AttachmentObj->TransactionId()) +msgid "Bad transaction number for attachment. %1 should be %2\\n" +msgstr "Chybné ÄÃslo transakce u pÅ™Ãlohy. %1 má být %2\\n" + +#: html/Admin/Elements/GroupTabs:39 html/Admin/Elements/QueueTabs:39 html/Admin/Elements/UserTabs:38 html/Ticket/Elements/Tabs:90 html/User/Elements/GroupTabs:38 +msgid "Basics" +msgstr "Základnà údaje" + +#: html/Ticket/Update.html:83 +msgid "Bcc" +msgstr "Bcc" + +#: html/Admin/Elements/EditScrip:88 html/Admin/Global/GroupRights.html:85 html/Admin/Global/Template.html:46 html/Admin/Global/UserRights.html:54 html/Admin/Groups/GroupRights.html:73 html/Admin/Groups/Members.html:81 html/Admin/Groups/Modify.html:56 html/Admin/Groups/UserRights.html:55 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:45 html/Admin/Queues/UserRights.html:54 html/User/Groups/Modify.html:56 +msgid "Be sure to save your changes" +msgstr "Neopomeňte uložit vaÅ¡e zmÄ›ny" + +#: html/Elements/SelectDateRelation:34 lib/RT/CurrentUser.pm:322 +msgid "Before" +msgstr "PÅ™ed" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "ZaÄátek schvalovánÃ" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "Prázdný" + +#: html/Search/Listing.html:79 +msgid "Bookmarkable URL for this search" +msgstr "Uložitelné URL pro toto hledánÃ" + +#: html/Ticket/Elements/ShowHistory:39 html/Ticket/Elements/ShowHistory:45 +msgid "Brief headers" +msgstr "Zkrácené hlaviÄky" + +#: html/Search/Bulk.html:25 html/Search/Bulk.html:26 +msgid "Bulk ticket update" +msgstr "Hromadná úprava požadavků" + +#: lib/RT/User_Overlay.pm:1331 +msgid "Can not modify system users" +msgstr "Nelze mÄ›nit systémové uživatele" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Can this principal see this queue" +msgstr "Může tento uživatel vidÄ›t tuto frontu" + +#: lib/RT/CustomField_Overlay.pm:144 +msgid "Can't add a custom field value without a name" +msgstr "Uživatelské položce nelze pÅ™idat hodnotu beze jména" + +#: lib/RT/Link_Overlay.pm:132 +msgid "Can't link a ticket to itself" +msgstr "Požadavek nelze svázat se sebou samým" + +#: lib/RT/Ticket_Overlay.pm:2787 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "Nelze slouÄit do slouÄeného požadavku. To by se vám nemÄ›lo nikdy stát." + +#: lib/RT/Ticket_Overlay.pm:2605 lib/RT/Ticket_Overlay.pm:2674 +msgid "Can't specifiy both base and target" +msgstr "Nelze zadat zároveň zdroj i cÃl" + +#: html/autohandler:112 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "Nelze vytvoÅ™it uživatele: %1" + +#: etc/initialdata:50 html/Admin/Queues/People.html:44 html/SelfService/Create.html:51 html/SelfService/Display.html:50 html/Ticket/Create.html:64 html/Ticket/Elements/EditPeople:51 html/Ticket/Elements/ShowPeople:35 html/Ticket/Update.html:45 html/Ticket/Update.html:78 lib/RT/ACE_Overlay.pm:88 +msgid "Cc" +msgstr "Cc" + +#: html/SelfService/Prefs.html:31 +msgid "Change password" +msgstr "ZmÄ›na hesla" + +#: html/Ticket/Create.html:101 html/Ticket/Update.html:92 +msgid "Check box to delete" +msgstr "ZaÅ¡rtnutÃm odstranÃte" + +#: html/Admin/Elements/SelectRights:31 +msgid "Check box to revoke right" +msgstr "ZatrhnÄ›te k odebránà práva" + +#: html/Ticket/Create.html:183 html/Ticket/Elements/EditLinks:131 html/Ticket/Elements/EditLinks:69 html/Ticket/Elements/ShowLinks:51 +msgid "Children" +msgstr "Potomci" + +#: html/Admin/Elements/ModifyUser:80 html/Admin/Users/Modify.html:132 html/User/Prefs.html:92 +msgid "City" +msgstr "MÄ›sto" + +#: html/Ticket/Elements/ShowDates:47 +msgid "Closed" +msgstr "VyÅ™eÅ¡eno" + +#: html/SelfService/Elements/Tabs:60 +msgid "Closed requests" +msgstr "UzavÅ™ené požadavky" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "Neznámý pÅ™Ãkaz!\\n" + +#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:153 +msgid "Comment" +msgstr "Komentovat" + +#: html/Admin/Elements/ModifyQueue:45 html/Admin/Queues/Modify.html:58 +msgid "Comment Address" +msgstr "Adresa pro komentáře" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "Komentář nezaznamenán" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Comment on tickets" +msgstr "Komentovat požadavky" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "CommentOnTicket" +msgstr "Komentovat požadavky" + +#: html/Admin/Elements/ModifyUser:35 +msgid "Comments" +msgstr "Poznámky" + +#: html/Ticket/ModifyAll.html:70 html/Ticket/Update.html:70 +msgid "Comments (Not sent to requestors)" +msgstr "Komentář (NeposÃlá se žadatelům)" + +#: html/Search/Bulk.html:122 +msgid "Comments (not sent to requestors)" +msgstr "Komentář (nepoÅ¡le se žadatelům)" + +#: html/Elements/ViewUser:27 +#. ($name) +msgid "Comments about %1" +msgstr "Poznámky o %1" + +#: html/Admin/Users/Modify.html:185 html/Ticket/Elements/ShowRequestor:44 +msgid "Comments about this user" +msgstr "Poznámky o tomto uživateli" + +#: lib/RT/Transaction_Overlay.pm:545 +msgid "Comments added" +msgstr "Komentáře pÅ™idány" + +#: lib/RT/Action/Generic.pm:140 +msgid "Commit Stubbed" +msgstr "Commit v zárodku" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "Omezenà pÅ™ekladu" + +#: html/Admin/Elements/EditScrip:41 +msgid "Condition" +msgstr "PodmÃnka" + +#: bin/rt-crontool:109 +msgid "Condition matches..." +msgstr "PodmÃnky splnÄ›ny..." + +#: lib/RT/Scrip_Overlay.pm:160 +msgid "Condition not found" +msgstr "PodmÃnka nenalezena" + +#: html/Elements/Tabs:52 +msgid "Configuration" +msgstr "Správa" + +#: html/SelfService/Prefs.html:33 +msgid "Confirm" +msgstr "PotvrzenÃ" + +#: html/Admin/Elements/ModifyUser:60 +msgid "ContactInfoSystem" +msgstr "Kontaktnà informaÄnà systém" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "Datum kontaktu '%1' nemůže být rozpoznáno" + +#: html/Admin/Elements/ModifyTemplate:44 html/Ticket/ModifyAll.html:87 +msgid "Content" +msgstr "Obsah" + +#: etc/initialdata:266 +msgid "Correspondence" +msgstr "Korespondence" + +#: html/Admin/Elements/ModifyQueue:39 html/Admin/Queues/Modify.html:51 +msgid "Correspondence Address" +msgstr "Adresa pro korespondenci" + +#: lib/RT/Transaction_Overlay.pm:541 +msgid "Correspondence added" +msgstr "Korespondence zaznamenána" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "Korespondence nebyla zaznamenána" + +#: lib/RT/Ticket_Overlay.pm:3458 +msgid "Could not add new custom field value for ticket. " +msgstr "Nelze pÅ™idat novou hodnotu uživatelské položky požadavku. " + +#: lib/RT/Ticket_Overlay.pm:2963 lib/RT/Ticket_Overlay.pm:2971 lib/RT/Ticket_Overlay.pm:2987 +msgid "Could not change owner. " +msgstr "Nelze zmÄ›nit vlastnÃka. " + +#: html/Admin/Elements/EditCustomField:68 html/Admin/Elements/EditCustomFields:166 +#. ($msg) +msgid "Could not create CustomField" +msgstr "Nelze vytvoÅ™it Uživatelskou položku" + +#: html/User/Groups/Modify.html:77 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 +msgid "Could not create group" +msgstr "Nelze vytvoÅ™it skupinu" + +#: html/Admin/Global/Template.html:75 html/Admin/Queues/Template.html:72 +#. ($msg) +msgid "Could not create template: %1" +msgstr "Nelze vytvoÅ™it vzor: %1" + +#: lib/RT/Ticket_Overlay.pm:1073 lib/RT/Ticket_Overlay.pm:333 +msgid "Could not create ticket. Queue not set" +msgstr "Nelze vytvoÅ™it požadavek. Nenastavena fronta" + +#: lib/RT/User_Overlay.pm:208 lib/RT/User_Overlay.pm:220 lib/RT/User_Overlay.pm:238 lib/RT/User_Overlay.pm:414 +msgid "Could not create user" +msgstr "Nelze vytvoÅ™it uživatele" + +#: NOT FOUND IN SOURCE +msgid "Could not find a ticket with id %1" +msgstr "Nelze nalézt požadavek s identifikátorem %1" + +#: NOT FOUND IN SOURCE +msgid "Could not find group %1." +msgstr "Nelze nalézt skupinu %1." + +#: lib/RT/Queue_Overlay.pm:621 lib/RT/Ticket_Overlay.pm:1422 +msgid "Could not find or create that user" +msgstr "Tohoto uživatele nelze nalézt nebo vytvoÅ™it" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1501 +msgid "Could not find that principal" +msgstr "Nelze naléze tohoto uživatele" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "Nelze nalézt uživatele %1." + +#: html/Admin/Groups/Members.html:88 html/User/Groups/Members.html:90 html/User/Groups/Modify.html:82 +msgid "Could not load group" +msgstr "Nelze naÄÃst skupinu" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "Tento uživatel nemůže být %1 této fronty" + +#: lib/RT/Ticket_Overlay.pm:1443 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "Tento uživatel nemůže být %1 tohoto požadavku" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "Tento uživatel nemůže být odstranÄ›n jako %1 této fronty" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "Tento uživatel nemůže být odstranÄ›n jako %1 tohoto požadavku" + +#: lib/RT/Group_Overlay.pm:985 +msgid "Couldn't add member to group" +msgstr "Do skupiny nelze pÅ™idat Älena" + +#: lib/RT/Ticket_Overlay.pm:3468 lib/RT/Ticket_Overlay.pm:3524 +#. ($Msg) +msgid "Couldn't create a transaction: %1" +msgstr "Nelze vytvoÅ™it transakci: %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't figure out what to do from gpg's reply\\n" +msgstr "Nelze zjistit co dÄ›lat s gpg odpovÄ›dÃ\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find group\\n" +msgstr "Skupinu nelze nalézt\\n" + +#: lib/RT/Interface/Web.pm:866 +msgid "Couldn't find row" +msgstr "Nemohu nalézt sloupec" + +#: lib/RT/Group_Overlay.pm:959 +msgid "Couldn't find that principal" +msgstr "Tohoto uživatele nelze nalézt" + +#: lib/RT/CustomField_Overlay.pm:175 +msgid "Couldn't find that value" +msgstr "Tuto hodnotu nelze nalézt" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find user\\n" +msgstr "Uživatele nelze nalézt\\n" + +#: lib/RT/CurrentUser.pm:112 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "Z uživatelské databáze nelze naÄÃst %1.\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load RT config file '%1' %2" +msgstr "KonfiguraÄnà soubor RT '%1'nelze naÄÃst %2" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load Scrips." +msgstr "Scripy nelze naÄÃst." + +#: html/Admin/Groups/GroupRights.html:88 html/Admin/Groups/UserRights.html:75 +#. ($id) +msgid "Couldn't load group %1" +msgstr "Skupinu %1 nelze naÄÃst" + +#: lib/RT/Link_Overlay.pm:175 lib/RT/Link_Overlay.pm:184 lib/RT/Link_Overlay.pm:211 +msgid "Couldn't load link" +msgstr "Vazbu nelze naÄÃst" + +#: html/Admin/Elements/EditCustomFields:147 html/Admin/Queues/People.html:121 +#. ($id) +msgid "Couldn't load queue" +msgstr "Frontu nelze naÄÃst" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:72 +#. ($id) +msgid "Couldn't load queue %1" +msgstr "Frontu %1 nelze naÄÃst" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "Scrip nelze naÄÃst" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "Vzor nelze naÄÃst" + +#: html/Admin/Users/Prefs.html:79 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "Uživatele (%1) nelze naÄÃst" + +#: html/SelfService/Display.html:166 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "Požadavek '%1' nelze naÄÃst" + +#: html/Admin/Elements/ModifyUser:86 html/Admin/Users/Modify.html:149 html/User/Prefs.html:98 +msgid "Country" +msgstr "ZemÄ›" + +#: html/Admin/Elements/CreateUserCalled:26 html/Ticket/Create.html:135 html/Ticket/Create.html:195 +msgid "Create" +msgstr "VytvoÅ™it" + +#: etc/initialdata:128 +msgid "Create Tickets" +msgstr "VytvoÅ™it požadavky" + +#: html/Admin/Elements/EditCustomField:58 +msgid "Create a CustomField" +msgstr "VytvoÅ™it uživatelskou položku" + +#: html/Admin/Queues/CustomField.html:48 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "VytvoÅ™enà uživatelské položky pro frontu %1" + +#: html/Admin/Global/CustomField.html:48 +msgid "Create a CustomField which applies to all queues" +msgstr "VytvoÅ™enà uživatelské položky pro vÅ¡echny front" + +#: NOT FOUND IN SOURCE +msgid "Create a new Custom Field" +msgstr "VytvoÅ™it novou uživatelskou položku" + +#: NOT FOUND IN SOURCE +msgid "Create a new global scrip" +msgstr "VytvoÅ™it nový globálnà scrip" + +#: html/Admin/Groups/Modify.html:67 html/Admin/Groups/Modify.html:93 +msgid "Create a new group" +msgstr "VytvoÅ™it novou skupinu" + +#: html/User/Groups/Modify.html:67 html/User/Groups/Modify.html:92 +msgid "Create a new personal group" +msgstr "VytvoÅ™it novou vlastnà skupinu" + +#: NOT FOUND IN SOURCE +msgid "Create a new queue" +msgstr "VytvoÅ™it novou frontu" + +#: NOT FOUND IN SOURCE +msgid "Create a new scrip" +msgstr "VytvoÅ™it nový scrip" + +#: NOT FOUND IN SOURCE +msgid "Create a new template" +msgstr "VytvoÅ™it nový vzor" + +#: html/SelfService/Create.html:30 html/Ticket/Create.html:25 html/Ticket/Create.html:28 html/Ticket/Create.html:36 +msgid "Create a new ticket" +msgstr "VytvoÅ™enà nového požadavku" + +#: html/Admin/Users/Modify.html:214 html/Admin/Users/Modify.html:241 +msgid "Create a new user" +msgstr "VytvoÅ™it nového uživatele" + +#: html/Admin/Queues/Modify.html:103 +msgid "Create a queue" +msgstr "VytvoÅ™it frontu" + +#: NOT FOUND IN SOURCE +msgid "Create a queue called" +msgstr "VytvoÅ™it frontu nazvanou" + +#: html/SelfService/Create.html:25 html/SelfService/Create.html:27 +msgid "Create a request" +msgstr "VytvoÅ™it požadavek" + +#: html/Admin/Queues/Scrip.html:59 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "VytvoÅ™it scrips pro frontu %1" + +#: html/Admin/Global/Template.html:69 html/Admin/Queues/Template.html:65 +msgid "Create a template" +msgstr "VytvoÅ™it vzor" + +#: etc/initialdata:130 +msgid "Create new tickets based on this scrip's template" +msgstr "Vytvářet požadavky podle toho vzoru scripu" + +#: html/SelfService/Create.html:81 +msgid "Create ticket" +msgstr "VytvoÅ™it požadavek" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Create tickets in this queue" +msgstr "Vytvářet požadavky v této frontÄ›" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Create, delete and modify custom fields" +msgstr "Vytvářet, mazat a mÄ›nit uživatelen definované položky" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "Create, delete and modify queues" +msgstr "Vytvářet, mazat a mÄ›nit fronty" + +#: NOT FOUND IN SOURCE +msgid "Create, delete and modify the members of any user's personal groups" +msgstr "Vytvářet, mazat a mÄ›nit Äleny uživatelských osobnÃch skupin" + +#: lib/RT/System.pm:59 +msgid "Create, delete and modify the members of personal groups" +msgstr "Vytvářet, mazat a mÄ›nit Äleny osobnÃch skupin" + +#: lib/RT/System.pm:60 +msgid "Create, delete and modify users" +msgstr "Vytvářen, mazat a mÄ›nit uživatele" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "CreateTicket" +msgstr "VytvoÅ™it požadavek" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1167 +msgid "Created" +msgstr "VytvoÅ™eno" + +#: html/Admin/Elements/EditCustomField:71 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "Uživatelská položka %1 vytvoÅ™ena" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "Vzor %1 vytvoÅ™en" + +#: html/Ticket/Elements/EditLinks:28 +msgid "Current Relationships" +msgstr "Aktuálnà relace" + +#: html/Admin/Elements/EditScrips:30 +msgid "Current Scrips" +msgstr "Aktuálnà scripy" + +#: html/Admin/Groups/Members.html:39 html/User/Groups/Members.html:42 +msgid "Current members" +msgstr "Aktuálnà Älenové" + +#: html/Admin/Elements/SelectRights:29 +msgid "Current rights" +msgstr "Aktuálnà práva" + +#: html/Search/Listing.html:71 +msgid "Current search criteria" +msgstr "Aktuálnà vyhledávacà podmÃnky" + +#: html/Admin/Queues/People.html:41 html/Ticket/Elements/EditPeople:45 +msgid "Current watchers" +msgstr "Aktuálnà pozorovatelé" + +#: html/Admin/Global/CustomField.html:55 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "Uživatelská položka #%1" + +#: html/Admin/Elements/QueueTabs:53 html/Admin/Elements/SystemTabs:40 html/Admin/Global/index.html:50 html/Ticket/Elements/ShowSummary:35 +msgid "Custom Fields" +msgstr "Uživatelské položky" + +#: html/Admin/Elements/EditScrip:73 +msgid "Custom action cleanup code" +msgstr "ÄŒistÃcà kód uživatelské akce" + +#: html/Admin/Elements/EditScrip:65 +msgid "Custom action preparation code" +msgstr "PÅ™Ãpravný kód uživatelské akce" + +#: html/Admin/Elements/EditScrip:49 +msgid "Custom condition" +msgstr "Uživatelská podmÃnka" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "Užitavelská položka %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "Uživatelská položka %1 má hodnotu." + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "Uživatelská položka %1 nemá hodnotu." + +#: lib/RT/Ticket_Overlay.pm:3360 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "Uživatelská položka %1 nenalezena" + +#: html/Admin/Elements/EditCustomFields:197 +msgid "Custom field deleted" +msgstr "Uživatelská položka smazána" + +#: lib/RT/Ticket_Overlay.pm:3510 +msgid "Custom field not found" +msgstr "Uživatelská položka nenalezena" + +#: lib/RT/CustomField_Overlay.pm:283 +#. ($args{'Content'}, $self->Name) +msgid "Custom field value %1 could not be found for custom field %2" +msgstr "Hodnota %1 nemůže být nalezena v uživatelské položce %2" + +#: NOT FOUND IN SOURCE +msgid "Custom field value changed from %1 to %2" +msgstr "Hodnota uživatelské položky zmÄ›nÄ›na z %1 na %2" + +#: lib/RT/CustomField_Overlay.pm:185 +msgid "Custom field value could not be deleted" +msgstr "Hodnota uživatelské položky nemůže být smazána" + +#: lib/RT/CustomField_Overlay.pm:289 +msgid "Custom field value could not be found" +msgstr "Hodnota uživatelské položky nemůže být nalezena" + +#: lib/RT/CustomField_Overlay.pm:183 lib/RT/CustomField_Overlay.pm:291 +msgid "Custom field value deleted" +msgstr "Hodnota uživatelské položky smazána" + +#: lib/RT/Transaction_Overlay.pm:550 +msgid "CustomField" +msgstr "Uživatelská položka" + +#: html/Ticket/Create.html:161 html/Ticket/Elements/ShowSummary:53 html/Ticket/Elements/Tabs:93 html/Ticket/ModifyAll.html:44 +msgid "Dates" +msgstr "Datumy" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "pro" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "Implicitnà vzor automatické odpovÄ›di" + +#: etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "Implicitnà vzor automatické odpovÄ›di" + +#: etc/initialdata:275 +msgid "Default admin comment template" +msgstr "Implicitnà vzor administrativnÃho komentáře" + +#: etc/initialdata:257 +msgid "Default admin correspondence template" +msgstr "Implicitnà vzor administrativnà korespondence" + +#: etc/initialdata:267 +msgid "Default correspondence template" +msgstr "Implicitnà korespondenÄnà vzor" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "Implicitnà transakÄnà vzor" + +#: lib/RT/Transaction_Overlay.pm:645 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "DefaulnÃ: %1/%2 zmÄ›nÄ›no z %3 na %4" + +#: html/User/Delegation.html:25 html/User/Delegation.html:28 +msgid "Delegate rights" +msgstr "Delegovat práva" + +#: lib/RT/System.pm:63 +msgid "Delegate specific rights which have been granted to you." +msgstr "Delegovat specifická práva, která vám byla poskytnuta." + +#: lib/RT/System.pm:63 +msgid "DelegateRights" +msgstr "Delegovat práva" + +#: html/User/Elements/Tabs:38 +msgid "Delegation" +msgstr "PověřenÃ" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "Smazat" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "Delete tickets" +msgstr "Mazat požadavky" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "DeleteTicket" +msgstr "Smazat požadavek" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "Smazánà tohoto objektu mohlo poruÅ¡it referenÄnà integritu" + +#: lib/RT/Queue_Overlay.pm:292 +msgid "Deleting this object would break referential integrity" +msgstr "Smazánà tohoto objektu by mohlo poruÅ¡it referenÄnà integritu" + +#: lib/RT/User_Overlay.pm:430 +msgid "Deleting this object would violate referential integrity" +msgstr "Smazánà tohoto objektu by mohlo naruÅ¡it referenÄnà integritu" + +#: html/Approvals/Elements/Approve:46 +msgid "Deny" +msgstr "ZamÃtnout" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/EditLinks:123 html/Ticket/Elements/EditLinks:47 html/Ticket/Elements/ShowDependencies:32 html/Ticket/Elements/ShowLinks:35 +msgid "Depended on by" +msgstr "Je rekvizitou pro" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "Závistlosti: \\n" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:180 html/Ticket/Elements/EditLinks:119 html/Ticket/Elements/EditLinks:36 html/Ticket/Elements/ShowDependencies:25 html/Ticket/Elements/ShowLinks:27 +msgid "Depends on" +msgstr "ZávisejÃcà na" + +#: html/Elements/SelectSortOrder:35 +msgid "Descending" +msgstr "SestupnÄ›" + +#: html/SelfService/Create.html:75 html/Ticket/Create.html:119 +msgid "Describe the issue below" +msgstr "PopiÅ¡te pÅ™Ãpad nÞe" + +#: html/Admin/Elements/AddCustomFieldValue:27 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyQueue:36 html/Admin/Elements/ModifyTemplate:36 html/Admin/Groups/Modify.html:49 html/Admin/Queues/Modify.html:48 html/Elements/SelectGroups:27 html/User/Groups/Modify.html:49 +msgid "Description" +msgstr "Popis" + +#: html/SelfService/Elements/MyRequests:44 +msgid "Details" +msgstr "Podrobnosti" + +#: html/Ticket/Elements/Tabs:85 +msgid "Display" +msgstr "Zobrazit" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Display Access Control List" +msgstr "Zobrazit pÅ™Ãstupová práva" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Display Scrip templates for this queue" +msgstr "Zobrazovat scrips vzory pro tuto frontu" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Display Scrips for this queue" +msgstr "Zobrazovat scripy pro tuto frontu" + +#: html/Ticket/Elements/ShowHistory:35 +msgid "Display mode" +msgstr "Režim zobrazenÃ" + +#: html/SelfService/Display.html:25 html/SelfService/Display.html:29 +#. ($Ticket->id) +msgid "Display ticket #%1" +msgstr "Zobraz požadavek #%1" + +#: lib/RT/System.pm:54 +msgid "Do anything and everything" +msgstr "DÄ›lat cokoli a vÅ¡echno" + +#: html/Elements/Refresh:30 +msgid "Don't refresh this page." +msgstr "NeobÄerstvovat tuto stránku." + +#: html/Search/Elements/PickRestriction:114 +msgid "Don't show search results" +msgstr "Nezobrazit výsledky hledánÃ" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "Download" +msgstr "Stáhnout" + +#: html/Elements/SelectDateType:32 html/Ticket/Create.html:167 html/Ticket/Elements/EditDates:45 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1171 +msgid "Due" +msgstr "TermÃn dokonÄenÃ" + +#: NOT FOUND IN SOURCE +msgid "Due date '%1' could not be parsed" +msgstr "Datum termÃnu dokonÄenà '%1' nemůže být rozpoznán" + +#: bin/rt-commit-handler:754 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "CHYBA: Nelze naÄÃst požadavek '%1': %2.\\n" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "Upravit" + +#: html/Admin/Queues/CustomFields.html:45 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "Upravit uživatelské položky pro %1" + +#: html/Ticket/ModifyLinks.html:36 +msgid "Edit Relationships" +msgstr "Upravit relace" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "Upravit vzory pro frontu %1" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "Upravit scprips" + +#: html/Admin/Global/index.html:46 +msgid "Edit system templates" +msgstr "Úprava systémových vzorů" + +#: NOT FOUND IN SOURCE +msgid "Edit templates for %1" +msgstr "Upravit vzory pro %1" + +#: html/Admin/Elements/ModifyQueue:25 html/Admin/Queues/Modify.html:117 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "Úprava konfigurace pro frontu %1" + +#: html/Admin/Elements/ModifyUser:25 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "Úprava konfigurace pro uživatele %1" + +#: html/Admin/Elements/EditCustomField:74 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "Úprava uživatelské položky %1" + +#: html/Admin/Groups/Members.html:32 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "Úprava Älenstvà ve skupinÄ› %1" + +#: html/User/Groups/Members.html:129 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "Úprava Älenstvà ve vlastnà skupinÄ› %1" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "Úprava vzoru %1" + +#: lib/RT/Ticket_Overlay.pm:2615 lib/RT/Ticket_Overlay.pm:2683 +msgid "Either base or target must be specified" +msgstr "Zdroj Äi cÃl musà být zadány" + +#: html/Admin/Users/Modify.html:53 html/Admin/Users/Prefs.html:46 html/Elements/SelectUsers:27 html/Ticket/Elements/AddWatchers:56 html/User/Prefs.html:42 +msgid "Email" +msgstr "Email" + +#: lib/RT/User_Overlay.pm:188 +msgid "Email address in use" +msgstr "Email adresa je použita" + +#: html/Admin/Elements/ModifyUser:42 +msgid "EmailAddress" +msgstr "Email adresa" + +#: html/Admin/Elements/ModifyUser:54 +msgid "EmailEncoding" +msgstr "Kódovánà emailu" + +#: html/Admin/Elements/EditCustomField:36 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "Povolena (zruÅ¡enÃm zatrhnutà zablokujete tuto uživatelskou položky)" + +#: html/Admin/Groups/Modify.html:53 html/User/Groups/Modify.html:53 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "Povolena (zruÅ¡enÃm zatrhnutà zablokujete tuto skupinu)" + +#: html/Admin/Queues/Modify.html:84 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "Povoleno (zruÅ¡enà zatrhnutà zablokuje tuto frontu)" + +#: html/Admin/Elements/EditCustomFields:99 +msgid "Enabled Custom Fields" +msgstr "Povolené uživatelské položky" + +#: html/Admin/Queues/index.html:56 +msgid "Enabled Queues" +msgstr "Povolené fronty" + +#: html/Admin/Elements/EditCustomField:90 html/Admin/Groups/Modify.html:117 html/Admin/Queues/Modify.html:138 html/Admin/Users/Modify.html:283 html/User/Groups/Modify.html:117 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "Povolen stav %1" + +#: lib/RT/CustomField_Overlay.pm:361 +msgid "Enter multiple values" +msgstr "Vyplnit vÃce hodnot" + +#: lib/RT/CustomField_Overlay.pm:358 +msgid "Enter one value" +msgstr "Vyplnit jednu hodnotu" + +#: html/Ticket/Elements/EditLinks:112 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "Zadejte požadavky Äi URI se nimiž požadavky svázat. OddÄ›lte vÃce položek mezerami." + +#: html/Elements/Login:29 html/SelfService/Error.html:25 html/SelfService/Error.html:26 +msgid "Error" +msgstr "Chyba" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "Chyba v parametrech do Queue->AddWatcher" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "Chyba v parametrech do Queue->DelWatcher" + +#: lib/RT/Ticket_Overlay.pm:1356 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "Chyba v parametrech do Ticket->AddWatcher" + +#: lib/RT/Ticket_Overlay.pm:1532 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "Chyba v parametrech do Ticket->DelWatcher" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "Kdokoli" + +#: bin/rt-crontool:194 +msgid "Example:" +msgstr "PÅ™Ãklad:" + +#: html/Admin/Elements/ModifyUser:64 +msgid "ExternalAuthId" +msgstr "Identifikátor externà autentizace" + +#: html/Admin/Elements/ModifyUser:58 +msgid "ExternalContactInfoId" +msgstr "Identifikátor externÃho kontaktu" + +#: html/Admin/Users/Modify.html:73 +msgid "Extra info" +msgstr "Doplňkové údaje" + +#: lib/RT/User_Overlay.pm:302 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "Nepovedlo se nalézt uživatele 'Privilegované' pseudoskupiny." + +#: lib/RT/User_Overlay.pm:309 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "Nepovedlo se nalézt uživatele 'Neprivilegované' pseudoskupiny" + +#: bin/rt-crontool:138 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "Nepovedlo se nahrát modul %1. (%2)" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "úno" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "Kon" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:59 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "Koncová priorita" + +#: lib/RT/Ticket_Overlay.pm:1162 +msgid "FinalPriority" +msgstr "Koncová priorita" + +#: html/Admin/Queues/People.html:61 html/Ticket/Elements/EditPeople:34 +msgid "Find group whose" +msgstr "NajÃt skupiny které" + +#: html/Elements/Quicksearch:25 +msgid "Find new/open tickets" +msgstr "NajÃt nové/otevÅ™ené požadavky" + +#: html/Admin/Queues/People.html:57 html/Admin/Users/index.html:46 html/Ticket/Elements/EditPeople:30 +msgid "Find people whose" +msgstr "NajÃt ty, jejichž" + +#: html/Search/Listing.html:108 +msgid "Find tickets" +msgstr "Nalézt požadavky" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "ZávereÄné schválenÃ" + +#: html/Ticket/Elements/Tabs:58 +msgid "First" +msgstr "PrvnÃ" + +#: html/Search/Listing.html:41 +msgid "First page" +msgstr "Prvnà stránka" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "Foo Bar Baz" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "Foo!" + +#: html/Search/Bulk.html:87 +msgid "Force change" +msgstr "Vynutit zmÄ›nu" + +#: html/Search/Listing.html:106 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "Nalezen%quant(%1,,y,o) %numf(%1) %quant(%1,požadavek,požadavky,požadavků)" + +#: lib/RT/Interface/Web.pm:868 +msgid "Found Object" +msgstr "Nalezen objekt" + +#: html/Admin/Elements/ModifyUser:44 +msgid "FreeformContactInfo" +msgstr "Kontaktnà údaje ve volné podobÄ›" + +#: lib/RT/CustomField_Overlay.pm:38 +msgid "FreeformMultiple" +msgstr "Volná forma vÃcenásobnÄ›" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformSingle" +msgstr "Volná formu jedinkrát" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "pá" + +#: html/Ticket/Elements/ShowHistory:41 html/Ticket/Elements/ShowHistory:51 +msgid "Full headers" +msgstr "Celé hlaviÄky" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "Aktuálnà uživatel se zÃskává z PGP podpisu\\n" + +#: lib/RT/Transaction_Overlay.pm:595 +#. ($New->Name) +msgid "Given to %1" +msgstr "Dán %1" + +#: html/Admin/Elements/Tabs:41 html/Admin/index.html:38 +msgid "Global" +msgstr "GlobálnÃ" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "Globálnà Scrips" + +#: html/Admin/Elements/SelectTemplate:38 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "Globálnà vzor: %1" + +#: html/Admin/Elements/EditCustomFields:75 html/Admin/Queues/People.html:59 html/Admin/Queues/People.html:63 html/Admin/Queues/index.html:44 html/Admin/Users/index.html:49 html/Ticket/Elements/EditPeople:32 html/Ticket/Elements/EditPeople:36 html/index.html:41 +msgid "Go!" +msgstr "SpusÅ¥!" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "Správný PGP podpis od %1\\n" + +#: html/Search/Listing.html:50 +msgid "Goto page" +msgstr "PÅ™ejÃt na stránku" + +#: html/Elements/GotoTicket:25 html/SelfService/Elements/GotoTicket:25 +msgid "Goto ticket" +msgstr "PÅ™ejÃt na požadavek" + +#: html/Ticket/Elements/AddWatchers:46 html/User/Elements/DelegateRights:78 +msgid "Group" +msgstr "Skupina" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "Skupina %1 %2: %3" + +#: html/Admin/Elements/GroupTabs:45 html/Admin/Elements/QueueTabs:57 html/Admin/Elements/SystemTabs:44 html/Admin/Global/index.html:55 +msgid "Group Rights" +msgstr "Práva skupiny" + +#: lib/RT/Group_Overlay.pm:965 +msgid "Group already has member" +msgstr "Skupina již má Älena" + +#: html/Admin/Groups/Modify.html:77 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "Skupina nemůže být založena: %1" + +#: lib/RT/Group_Overlay.pm:497 +msgid "Group created" +msgstr "Skupina vytvoÅ™ena" + +#: lib/RT/Group_Overlay.pm:1133 +msgid "Group has no such member" +msgstr "Skupina nemá takového Älena" + +#: lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1429 lib/RT/Ticket_Overlay.pm:1507 +msgid "Group not found" +msgstr "Skupina nenalezena" + +#: NOT FOUND IN SOURCE +msgid "Group not found.\\n" +msgstr "Skupina nenalezena.\\n" + +#: NOT FOUND IN SOURCE +msgid "Group not specified.\\n" +msgstr "Skupina neudána.\\n" + +#: html/Admin/Elements/SelectNewGroupMembers:35 html/Admin/Elements/Tabs:35 html/Admin/Groups/Members.html:64 html/Admin/Queues/People.html:83 html/Admin/index.html:32 html/User/Groups/Members.html:67 +msgid "Groups" +msgstr "Skupiny" + +#: lib/RT/Group_Overlay.pm:971 +msgid "Groups can't be members of their members" +msgstr "Skupiny nemohou být svými Äleny" + +#: lib/RT/Interface/CLI.pm:73 lib/RT/Interface/CLI.pm:73 +msgid "Hello!" +msgstr "Ahoj!" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "Ahoj, %1" + +#: html/Ticket/Elements/ShowHistory:30 html/Ticket/Elements/Tabs:88 +msgid "History" +msgstr "Historie" + +#: html/Admin/Elements/ModifyUser:68 +msgid "HomePhone" +msgstr "Telefon domů" + +#: html/Elements/Tabs:46 +msgid "Homepage" +msgstr "Domovská stránka" + +#: lib/RT/Base.pm:74 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "Mám %quant(%1,mÃchaÄka,mÃchaÄky,mÃchaÄek)" + +#: NOT FOUND IN SOURCE +msgid "I have [quant,_1,concrete mixer]." +msgstr "I have [quant,_1,concrete mixer]." + +#msgstr "Mám [quant,_1,MÃchaÄku na beton,MÃchaÄky na beton,MÃchaÄek na beton]." +#: html/Ticket/Elements/ShowBasics:27 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "Identifikátor" + +#: html/Admin/Users/Modify.html:44 html/User/Prefs.html:39 +msgid "Identity" +msgstr "Identita" + +#: etc/upgrade/2.1.71:86 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "OdmÃtni původce a zruÅ¡ stávajÃcà schválenÃ, bylo-li zamÃtnuto schválenÃ" + +#: bin/rt-crontool:190 +msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." +msgstr "Byl-li tento nástroj setgid, mÃstnà uživatel jej mohl použit k zÃskanà administrativnÃho pÅ™Ãstupu k RT" + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "If you've updated anything above, be sure to" +msgstr "Pokud jste zmÄ›nili cokoli nahoÅ™e, nezapomeňte" + +#: lib/RT/Interface/Web.pm:860 +msgid "Illegal value for %1" +msgstr "Neplatná hodnota pro %1" + +#: lib/RT/Interface/Web.pm:863 +msgid "Immutable field" +msgstr "NemÄ›nitelná položka" + +#: html/Admin/Elements/EditCustomFields:74 +msgid "Include disabled custom fields in listing." +msgstr "Zahrnout do výpisu blokované uživatelské položky" + +#: html/Admin/Queues/index.html:43 +msgid "Include disabled queues in listing." +msgstr "Zahrnout blokované fronty do výpisu." + +#: html/Admin/Users/index.html:47 +msgid "Include disabled users in search." +msgstr "Zahrnout blokované uživatele do vyhledávánÃ." + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "PoÄáteÄnà priorita" + +#: lib/RT/Ticket_Overlay.pm:1161 lib/RT/Ticket_Overlay.pm:1163 +msgid "InitialPriority" +msgstr "PoÄáteÄnà priorita" + +#: lib/RT/ScripAction_Overlay.pm:105 +msgid "Input error" +msgstr "Chyba na vstupu" + +#: lib/RT/Ticket_Overlay.pm:3729 +msgid "Internal Error" +msgstr "VnitÅ™nà chyba" + +#: lib/RT/Record.pm:143 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "VnitÅ™nà chyba: %1" + +#: lib/RT/Group_Overlay.pm:644 +msgid "Invalid Group Type" +msgstr "Neplatný typ skupiny" + +#: lib/RT/Principal_Overlay.pm:128 +msgid "Invalid Right" +msgstr "Neplatné právo" + +#: lib/RT/Interface/Web.pm:865 +msgid "Invalid data" +msgstr "Neplatná data" + +#: lib/RT/Ticket_Overlay.pm:438 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "Neplatný vlastnÃk. Použije se 'nobody'." + +#: lib/RT/Scrip_Overlay.pm:134 lib/RT/Template_Overlay.pm:251 +msgid "Invalid queue" +msgstr "Neplatná fronta" + +#: lib/RT/ACE_Overlay.pm:244 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:270 lib/RT/ACE_Overlay.pm:275 +msgid "Invalid right" +msgstr "Neplatné právo" + +#: lib/RT/Record.pm:118 +#. ($key) +msgid "Invalid value for %1" +msgstr "Neplatná hodnota pro %1" + +#: lib/RT/Ticket_Overlay.pm:3367 +msgid "Invalid value for custom field" +msgstr "Neplatná hodnota pro uživatelskou položku" + +#: lib/RT/Ticket_Overlay.pm:345 +msgid "Invalid value for status" +msgstr "Neplatná hodnota pro stav" + +#: bin/rt-crontool:191 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "Je velmi důležité, aby neprivilegovanà uživatelé nemohli spustit tento nástroj." + +#: bin/rt-crontool:192 +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 "Pro spuÅ¡tÄ›nà tohoto nástroje se doporuÄuje založenà neprivilegovaného UNIX uživatele se správným skupinovým ÄlenstvÃm a pÅ™Ãstupem do RT." + +#: bin/rt-crontool:163 +msgid "It takes several arguments:" +msgstr "PoužÃvá nÄ›kolik parametrů:" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "VÄ›ci oÄekávajÃcà mé schválenÃ" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "led" + +#: lib/RT/Group_Overlay.pm:149 +msgid "Join or leave this group" +msgstr "PÅ™idat se Äi odebrat z této skupiny" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "Äec" + +#: html/Ticket/Elements/Tabs:99 +msgid "Jumbo" +msgstr "Maxi" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "Äen" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "KlÃÄové slovo" + +#: html/Admin/Elements/ModifyUser:52 +msgid "Lang" +msgstr "Jazyk" + +#: html/Ticket/Elements/Tabs:73 +msgid "Last" +msgstr "PoslednÃ" + +#: html/Ticket/Elements/EditDates:38 html/Ticket/Elements/ShowDates:39 +msgid "Last Contact" +msgstr "Poslednà kontakt" + +#: html/Elements/SelectDateType:29 +msgid "Last Contacted" +msgstr "Naposled kontaktován" + +#: html/Search/Elements/TicketHeader:41 +msgid "Last Notified" +msgstr "Naposled upozornÄ›n" + +#: html/Elements/SelectDateType:30 +msgid "Last Updated" +msgstr "Naposled aktualizován" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "Zbývá" + +#: html/Admin/Users/Modify.html:83 +msgid "Let this user access RT" +msgstr "Umožnit tomuto uživateli pÅ™Ãstup k RT" + +#: html/Admin/Users/Modify.html:87 +msgid "Let this user be granted rights" +msgstr "Umožnit dávat tomuto uživateli práva" + +#: NOT FOUND IN SOURCE +msgid "Limiting owner to %1 %2" +msgstr "VlastnÃk omezen na %1 %2" + +#: NOT FOUND IN SOURCE +msgid "Limiting queue to %1 %2" +msgstr "Fronta omezena na %1 %2" + +#: lib/RT/Ticket_Overlay.pm:2697 +msgid "Link already exists" +msgstr "Vazba již existuje" + +#: lib/RT/Ticket_Overlay.pm:2709 +msgid "Link could not be created" +msgstr "Vazba nemůže být vytvoÅ™ena" + +#: lib/RT/Ticket_Overlay.pm:2717 lib/RT/Ticket_Overlay.pm:2727 +#. ($TransString) +msgid "Link created (%1)" +msgstr "Vazba vytvoÅ™ena (%1)" + +#: lib/RT/Ticket_Overlay.pm:2638 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "Vazba zruÅ¡ena (%1)" + +#: lib/RT/Ticket_Overlay.pm:2644 +msgid "Link not found" +msgstr "Vazba nenalezena" + +#: html/Ticket/ModifyLinks.html:25 html/Ticket/ModifyLinks.html:29 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "Svázat požadavek #%1" + +#: html/Ticket/Elements/Tabs:97 +msgid "Links" +msgstr "Vazby" + +#: html/Admin/Users/Modify.html:114 html/User/Prefs.html:85 +msgid "Location" +msgstr "UmÃstÄ›nÃ" + +#: lib/RT.pm:158 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "Záznamový adresář %1 nenalezen nebo doň nemůže být zapisováno.\\ RT nemůže běžet." + +#: html/Elements/Header:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "PÅ™ihlášen jako %1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:25 html/Elements/Login:34 html/Elements/Login:45 +msgid "Login" +msgstr "PÅ™ihlásit" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "Odhlásit" + +#: html/Search/Bulk.html:86 +msgid "Make Owner" +msgstr "Nastavit vlastnÃka" + +#: html/Search/Bulk.html:102 +msgid "Make Status" +msgstr "Nastavit stav" + +#: html/Search/Bulk.html:109 +msgid "Make date Due" +msgstr "Nastavit datum termÃnu dokonÄenÃ" + +#: html/Search/Bulk.html:110 +msgid "Make date Resolved" +msgstr "Nastavit datum vyÅ™eÅ¡enÃ" + +#: html/Search/Bulk.html:107 +msgid "Make date Started" +msgstr "Nastavit datum, kdy zaÄal" + +#: html/Search/Bulk.html:106 +msgid "Make date Starts" +msgstr "Nastavit datum, kdy zaÄne" + +#: html/Search/Bulk.html:108 +msgid "Make date Told" +msgstr "Nastavit datum poslednÃho kontaktu" + +#: html/Search/Bulk.html:99 +msgid "Make priority" +msgstr "Nastavit prioritu" + +#: html/Search/Bulk.html:100 +msgid "Make queue" +msgstr "Nastavit frontu" + +#: html/Search/Bulk.html:98 +msgid "Make subject" +msgstr "Nastavit pÅ™edmÄ›t" + +#: html/Admin/index.html:33 +msgid "Manage groups and group membership" +msgstr "Správa skupin a Älenstvà v nich" + +#: html/Admin/index.html:39 +msgid "Manage properties and configuration which apply to all queues" +msgstr "Správa vlastnostà a konfiguracà platných ve vÅ¡ech frontách" + +#: html/Admin/index.html:36 +msgid "Manage queues and queue-specific properties" +msgstr "Správa front a jim pÅ™ÃsluÅ¡ných vlastnostÃ" + +#: html/Admin/index.html:30 +msgid "Manage users and passwords" +msgstr "Správa uživatelů a hesel" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "bÅ™e" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "kvÄ›" + +#: lib/RT/Group_Overlay.pm:982 +msgid "Member added" +msgstr "ÄŒlen pÅ™idán" + +#: lib/RT/Group_Overlay.pm:1140 +msgid "Member deleted" +msgstr "ÄŒlen odebrán" + +#: lib/RT/Group_Overlay.pm:1144 +msgid "Member not deleted" +msgstr "ÄŒlen neodebrán" + +#: html/Elements/SelectLinkType:26 +msgid "Member of" +msgstr "ÄŒlen" + +#: html/Admin/Elements/GroupTabs:42 html/User/Elements/GroupTabs:42 +msgid "Members" +msgstr "ÄŒlenové" + +#: lib/RT/Ticket_Overlay.pm:2843 +msgid "Merge Successful" +msgstr "SlouÄenà úspěšné" + +#: lib/RT/Ticket_Overlay.pm:2804 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "SlouÄenà se nepodaÅ™ilo. Nelze nastavit EffectiveId" + +#: html/Ticket/Elements/EditLinks:115 +msgid "Merge into" +msgstr "SlouÄit do" + +#: html/Ticket/Update.html:102 +msgid "Message" +msgstr "Zpráva" + +#: lib/RT/Interface/Web.pm:867 +msgid "Missing a primary key?: %1" +msgstr "Chybà primárnà klÃÄ?: %1" + +#: html/Admin/Users/Modify.html:169 html/User/Prefs.html:54 +msgid "Mobile" +msgstr "Mobilnà telefon" + +#: html/Admin/Elements/ModifyUser:72 +msgid "MobilePhone" +msgstr "Mobilnà telefon" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify Access Control List" +msgstr "Upravovat seznam pÅ™Ãstupových práv" + +#: NOT FOUND IN SOURCE +msgid "Modify Custom Field %1" +msgstr "Upravit uživatelskou položku %1" + +#: html/Admin/Global/CustomFields.html:44 html/Admin/Global/index.html:51 +msgid "Modify Custom Fields which apply to all queues" +msgstr "Úprava uživatelských položek pro vÅ¡echny fronty" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "Modify Scrip templates for this queue" +msgstr "Upravovat vzory scripů této fronty" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "Modify Scrips for this queue" +msgstr "Upravovat scripů této fronty" + +#: NOT FOUND IN SOURCE +msgid "Modify Template %1" +msgstr "Upravovat vzor %1" + +#: html/Admin/Queues/CustomField.html:45 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "Upravovat uživatelskou položku pro frontu %1" + +#: html/Admin/Global/CustomField.html:53 +msgid "Modify a CustomField which applies to all queues" +msgstr "Upravovat uživatelskou položku pro vÅ¡echny fronty" + +#: html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "Upravovat scrip pro frontu %1" + +#: html/Admin/Global/Scrip.html:48 +msgid "Modify a scrip which applies to all queues" +msgstr "Upravovat scrip platný ve vÅ¡ech frontách" + +#: html/Ticket/ModifyDates.html:25 html/Ticket/ModifyDates.html:29 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "Upravit datumy pro #%1" + +#: html/Ticket/ModifyDates.html:35 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "Úprav datumů pro požadavek # %1" + +#: html/Admin/Global/GroupRights.html:25 html/Admin/Global/GroupRights.html:28 html/Admin/Global/index.html:56 +msgid "Modify global group rights" +msgstr "Úprava globálnÃch skupinových práv" + +#: html/Admin/Global/GroupRights.html:33 +msgid "Modify global group rights." +msgstr "Úprava globálnÃch skupinových práv." + +#: NOT FOUND IN SOURCE +msgid "Modify global scrips" +msgstr "Úprava globálnÃch scrips" + +#: html/Admin/Global/UserRights.html:25 html/Admin/Global/UserRights.html:28 html/Admin/Global/index.html:60 +msgid "Modify global user rights" +msgstr "Úprava globálnÃch uživatelských práv" + +#: html/Admin/Global/UserRights.html:33 +msgid "Modify global user rights." +msgstr "Úprava globálnÃch uživatelských práv." + +#: lib/RT/Group_Overlay.pm:146 +msgid "Modify group metadata or delete group" +msgstr "Upravovat metadata skupiny nebo smazat skupinu" + +#: html/Admin/Groups/GroupRights.html:25 html/Admin/Groups/GroupRights.html:29 html/Admin/Groups/GroupRights.html:35 +#. ($GroupObj->Name) +msgid "Modify group rights for group %1" +msgstr "Úprava skupinových práv pro %1" + +#: html/Admin/Queues/GroupRights.html:25 html/Admin/Queues/GroupRights.html:29 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "Úprava skupinových práv pro frontu %1" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Modify membership roster for this group" +msgstr "Upravovat seznam Älenů pro tuto skupinu" + +#: lib/RT/System.pm:61 +msgid "Modify one's own RT account" +msgstr "Upravovat vlastnà RT úÄet" + +#: html/Admin/Queues/People.html:25 html/Admin/Queues/People.html:29 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "Úprava uživatelů fronty %1" + +#: html/Ticket/ModifyPeople.html:25 html/Ticket/ModifyPeople.html:29 html/Ticket/ModifyPeople.html:35 +#. ($Ticket->id) +#. ($Ticket->Id) +msgid "Modify people related to ticket #%1" +msgstr "Úprava uživatelů souvisejÃcÃch s požadavkem #%1" + +#: html/Admin/Queues/Scrips.html:44 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "Úprava scrips pro frontu %1" + +#: html/Admin/Global/Scrips.html:44 html/Admin/Global/index.html:42 +msgid "Modify scrips which apply to all queues" +msgstr "Upravovat scripy platné ve vÅ¡ech frontách" + +#: html/Admin/Global/Template.html:25 html/Admin/Global/Template.html:30 html/Admin/Global/Template.html:81 html/Admin/Queues/Template.html:78 +#. (loc($TemplateObj->Name())) +#. ($TemplateObj->id) +msgid "Modify template %1" +msgstr "Úprava vzoru %1" + +#: html/Admin/Global/Templates.html:44 +msgid "Modify templates which apply to all queues" +msgstr "Upravit vzory pro vÅ¡echny fronty" + +#: html/Admin/Groups/Modify.html:87 html/User/Groups/Modify.html:86 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "Úprava skupiny %1" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Modify the queue watchers" +msgstr "Upravovat pozorovatele fronty" + +#: html/Admin/Users/Modify.html:236 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "Úprava uživatele %1" + +#: html/Ticket/ModifyAll.html:37 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "Úprava požadavku # %1" + +#: html/Ticket/Modify.html:25 html/Ticket/Modify.html:28 html/Ticket/Modify.html:34 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "Úprava požadavku #%1" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Modify tickets" +msgstr "Upravovat požadavky" + +#: html/Admin/Groups/UserRights.html:25 html/Admin/Groups/UserRights.html:29 html/Admin/Groups/UserRights.html:35 +#. ($GroupObj->Name) +msgid "Modify user rights for group %1" +msgstr "Úprava uživatelských práv pro skupinu %1" + +#: html/Admin/Queues/UserRights.html:25 html/Admin/Queues/UserRights.html:29 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "Úprava skupinových práv pro frontu %1" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "Úprava pozorovatelů fronty '%1'" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyACL" +msgstr "Upravovat seznam pÅ™Ãstupových práv" + +#: lib/RT/Group_Overlay.pm:149 +msgid "ModifyOwnMembership" +msgstr "Upravovat Älenstvà ve skupinÄ›" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "ModifyQueueWatchers" +msgstr "Upravovat pozorovale fronty" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "ModifyScrips" +msgstr "Upravovat scripy" + +#: lib/RT/System.pm:61 +msgid "ModifySelf" +msgstr "Upravovat sebe" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "ModifyTemplate" +msgstr "Upravovat vzor" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "ModifyTicket" +msgstr "Upravovat požadavek" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "po" + +#: html/Ticket/Elements/ShowRequestor:42 +#. ($name) +msgid "More about %1" +msgstr "VÃce o %1" + +#: html/Admin/Elements/EditCustomFields:61 +msgid "Move down" +msgstr "Dát nÞe" + +#: html/Admin/Elements/EditCustomFields:53 +msgid "Move up" +msgstr "Dát výše" + +#: html/Admin/Elements/SelectSingleOrMultiple:27 +msgid "Multiple" +msgstr "VÃcenásobná" + +#: lib/RT/User_Overlay.pm:179 +msgid "Must specify 'Name' attribute" +msgstr "Nutno zadat atribut 'Jméno'" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "Mnou schválené" + +#: html/Approvals/index.html:25 html/Approvals/index.html:26 +msgid "My approvals" +msgstr "Mnou schválené" + +#: html/Admin/Elements/AddCustomFieldValue:26 html/Admin/Elements/EditCustomField:32 html/Admin/Elements/ModifyTemplate:28 html/Admin/Elements/ModifyUser:30 html/Admin/Groups/Modify.html:44 html/Elements/SelectGroups:26 html/Elements/SelectUsers:28 html/User/Groups/Modify.html:44 +msgid "Name" +msgstr "Jméno" + +#: lib/RT/User_Overlay.pm:186 +msgid "Name in use" +msgstr "Jméno je použito" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "Je tÅ™eba schválenà systémového správce" + +#: html/Ticket/Elements/ShowDates:52 +msgid "Never" +msgstr "Nikdy" + +#: html/Elements/Quicksearch:30 +msgid "New" +msgstr "Nové" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:93 html/User/Prefs.html:65 +msgid "New Password" +msgstr "Nové heslo" + +#: etc/initialdata:311 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "Nová probÃhajÃcà schválenÃ" + +#: html/Ticket/Elements/EditLinks:111 +msgid "New Relationships" +msgstr "Nové relace" + +#: html/Ticket/Elements/Tabs:36 +msgid "New Search" +msgstr "Nové vyhledávánÃ" + +#: html/Admin/Global/CustomField.html:41 html/Admin/Global/CustomFields.html:39 html/Admin/Queues/CustomField.html:52 html/Admin/Queues/CustomFields.html:40 +msgid "New custom field" +msgstr "VytvoÅ™it uživatelskou položku" + +#: html/Admin/Elements/GroupTabs:54 html/User/Elements/GroupTabs:52 +msgid "New group" +msgstr "Založit skupinu" + +#: html/SelfService/Prefs.html:32 +msgid "New password" +msgstr "Nové heslo" + +#: lib/RT/User_Overlay.pm:639 +msgid "New password notification sent" +msgstr "Oznámenà nového hesla zasláno" + +#: html/Admin/Elements/QueueTabs:70 +msgid "New queue" +msgstr "VytvoÅ™enà fronty" + +#: html/SelfService/Elements/Tabs:63 +msgid "New request" +msgstr "Nový požadavek" + +#: html/Admin/Elements/SelectRights:42 +msgid "New rights" +msgstr "Nová práva" + +#: html/Admin/Global/Scrip.html:40 html/Admin/Global/Scrips.html:39 html/Admin/Queues/Scrip.html:43 html/Admin/Queues/Scrips.html:53 +msgid "New scrip" +msgstr "VytovÅ™enà scripu" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "Nové vyhledánÃ" + +#: html/Admin/Global/Template.html:60 html/Admin/Global/Templates.html:39 html/Admin/Queues/Template.html:58 html/Admin/Queues/Templates.html:46 +msgid "New template" +msgstr "VytvoÅ™it vzor" + +#: lib/RT/Ticket_Overlay.pm:2771 +msgid "New ticket doesn't exist" +msgstr "Nový požadavek neexistuje" + +#: html/Admin/Elements/UserTabs:52 +msgid "New user" +msgstr "VytvoÅ™it uživatele" + +#: html/Admin/Elements/CreateUserCalled:26 +msgid "New user called" +msgstr "Nový uživatel jména" + +#: html/Admin/Queues/People.html:55 html/Ticket/Elements/EditPeople:29 +msgid "New watchers" +msgstr "Nový pozorovatel" + +#: html/Admin/Users/Prefs.html:42 +msgid "New window setting" +msgstr "Nové nastavenà okna" + +#: html/Ticket/Elements/Tabs:69 +msgid "Next" +msgstr "DalÅ¡Ã" + +#: html/Search/Listing.html:48 +msgid "Next page" +msgstr "Dalšà stránka" + +#: html/Admin/Elements/ModifyUser:50 +msgid "NickName" +msgstr "PÅ™ezdÃvka" + +#: html/Admin/Users/Modify.html:63 html/User/Prefs.html:46 +msgid "Nickname" +msgstr "PÅ™ezdÃvka" + +#: html/Admin/Elements/EditCustomField:73 html/Admin/Elements/EditCustomFields:105 +msgid "No CustomField" +msgstr "Žádná uživatelská položka" + +#: html/Admin/Groups/GroupRights.html:84 html/Admin/Groups/UserRights.html:71 +msgid "No Group defined" +msgstr "Nedefinována žádná skupina" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:68 +msgid "No Queue defined" +msgstr "Nedefinována žádná fronta" + +#: bin/rt-crontool:56 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "Žádný uživatel RT nenalezen. ProsÃm poraÄte se se správcem RT.\\n" + +#: html/Admin/Global/Template.html:79 html/Admin/Queues/Template.html:76 +msgid "No Template" +msgstr "Žádný vzor" + +#: bin/rt-commit-handler:764 +msgid "No Ticket specified. Aborting ticket " +msgstr "Neudán požadavek. PÅ™eruÅ¡uje se požadavek " + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "Neudán požadavek. PÅ™eruÅ¡ujà se úpravy požadavku\\n\\n" + +#: html/Approvals/Elements/Approve:47 +msgid "No action" +msgstr "bez akce" + +#: lib/RT/Interface/Web.pm:862 +msgid "No column specified" +msgstr "Neudán sloupec" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "PÅ™Ãkaz nenalezen\\n" + +#: html/Elements/ViewUser:36 html/Ticket/Elements/ShowRequestor:45 +msgid "No comment entered about this user" +msgstr "Poznámky k tomuto uživateli neudány" + +#: lib/RT/Ticket_Overlay.pm:2189 lib/RT/Ticket_Overlay.pm:2257 +msgid "No correspondence attached" +msgstr "Žádná pÅ™ipojená korespondence" + +#: lib/RT/Action/Generic.pm:150 lib/RT/Condition/Generic.pm:176 lib/RT/Search/ActiveTicketsInQueue.pm:56 lib/RT/Search/Generic.pm:113 +#. (ref $self) +msgid "No description for %1" +msgstr "Pro %1 nenà popis" + +#: lib/RT/Users_Overlay.pm:151 +msgid "No group specified" +msgstr "Neudána skupina" + +#: lib/RT/User_Overlay.pm:857 +msgid "No password set" +msgstr "Heslo nenastaveno" + +#: lib/RT/Queue_Overlay.pm:259 +msgid "No permission to create queues" +msgstr "Nedostatek práv k vytvářenà front" + +#: lib/RT/Ticket_Overlay.pm:341 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "Nedostatek práv k vytvářenà požadavků ve frontÄ› '%1'" + +#: lib/RT/User_Overlay.pm:151 +msgid "No permission to create users" +msgstr "Nedostatek práv k vytvářenà uživatelů" + +#: html/SelfService/Display.html:174 +msgid "No permission to display that ticket" +msgstr "Nedostatek práv k zobrazenà tohoto požadavku" + +#: html/SelfService/Update.html:55 +msgid "No permission to view update ticket" +msgstr "Nedostatek práv k zobrazenà aktualizace požadavku" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1488 +msgid "No principal specified" +msgstr "Nezadán uživatel" + +#: html/Admin/Queues/People.html:154 html/Admin/Queues/People.html:164 +msgid "No principals selected." +msgstr "Nevybráni uživatelé." + +#: html/Admin/Queues/index.html:35 +msgid "No queues matching search criteria found." +msgstr "Nenalezeny žádné fronty odpovÃdajÃcà vyhledávacà podmÃnce." + +#: html/Admin/Elements/SelectRights:81 +msgid "No rights found" +msgstr "Práva nenalezena" + +#: html/Admin/Elements/SelectRights:33 +msgid "No rights granted." +msgstr "NepÅ™idÄ›lena žádná práva." + +#: html/Search/Bulk.html:149 +msgid "No search to operate on." +msgstr "Bez vyhledánà nelze pracovat." + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "Neudán identifikátor požadavku" + +#: lib/RT/Transaction_Overlay.pm:480 lib/RT/Transaction_Overlay.pm:518 +msgid "No transaction type specified" +msgstr "Neudán typ transakce" + +#: html/Admin/Users/index.html:36 +msgid "No users matching search criteria found." +msgstr "Nenalezeni uživatelé odpovÃdajÃcà vyhledávacà podmÃnce" + +#: bin/rt-commit-handler:644 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "Nenalezen platný uživatel RT. OvladaÄ RT CVS uvolnÄ›n. ProsÃm poraÄte se se svým správcem RT.\\n" + +#: lib/RT/Interface/Web.pm:859 +msgid "No value sent to _Set!\\n" +msgstr "Žádná z hodnot nanastavena na _Set!\\n" + +#: html/Search/Elements/TicketRow:37 +msgid "Nobody" +msgstr "Nikdo" + +#: lib/RT/Interface/Web.pm:864 +msgid "Nonexistant field?" +msgstr "NeexistujÃcà položka" + +#: html/Elements/Login:99 +msgid "Not logged in" +msgstr "NepÅ™ihlášen" + +#: html/Elements/Header:59 html/SelfService/Elements/Header:58 +msgid "Not logged in." +msgstr "NepÅ™ihlášen." + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "Nenastaven" + +#: html/NoAuth/Reminder.html:27 +msgid "Not yet implemented." +msgstr "ZatÃm neimplementováno." + +#: html/Admin/Groups/Rights.html:25 +msgid "Not yet implemented...." +msgstr "ZatÃm neimplementováno..." + +#: html/Approvals/Elements/Approve:50 +msgid "Notes" +msgstr "Poznámky" + +#: lib/RT/User_Overlay.pm:642 +msgid "Notification could not be sent" +msgstr "UpozornÄ›nà nemůže být zasláno" + +#: etc/initialdata:94 +msgid "Notify AdminCcs" +msgstr "Zaslat vÅ¡em AdminCc" + +#: etc/initialdata:90 +msgid "Notify AdminCcs as Comment" +msgstr "Zaslat vÅ¡em AdminCc jako komentář" + +#: etc/initialdata:121 +msgid "Notify Other Recipients" +msgstr "Zaslat ostatnÃm pÅ™Ãjemcům" + +#: etc/initialdata:117 +msgid "Notify Other Recipients as Comment" +msgstr "Zaslat ostatnÃm pÅ™Ãjemcům jako komentář" + +#: etc/initialdata:86 +msgid "Notify Owner" +msgstr "Zaslat vlastnÃkovi" + +#: etc/initialdata:82 +msgid "Notify Owner as Comment" +msgstr "Zaslat vlastnÃkovi jako komentář" + +#: etc/initialdata:313 etc/upgrade/2.1.71:17 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "Zaslat vlastnÃkům a vÅ¡em AdminCc nové pÅ™Ãpady oÄekávajÃcà jejich schválenÃ" + +#: etc/initialdata:78 +msgid "Notify Requestors" +msgstr "Zaslat žadatelům" + +#: etc/initialdata:104 +msgid "Notify Requestors and Ccs" +msgstr "Zaslat žadatelům a vÅ¡em Cc" + +#: etc/initialdata:99 +msgid "Notify Requestors and Ccs as Comment" +msgstr "Zaslat žadatelům a vÅ¡em Cc jako komentář" + +#: etc/initialdata:113 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "Zaslat žadatelům, vÅ¡em Cc a vÅ¡em AdminCc" + +#: etc/initialdata:109 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "Zaslat žadatelům, vÄem Cc a vÄem AdminCc jako komentář" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "lis" + +#: lib/RT/Record.pm:157 +msgid "Object could not be created" +msgstr "Objekt nemůže být vytvoÅ™en" + +#: lib/RT/Record.pm:176 +msgid "Object created" +msgstr "Objekt vytvoÅ™en" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "Å™Ãj" + +#: html/Elements/SelectDateRelation:35 +msgid "On" +msgstr "Dne" + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "PÅ™i komentáři" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "PÅ™i korespondenci" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "PÅ™i založenÃ" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "PÅ™i zmÄ›nÄ› vlastnÃka" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "PÅ™i zmÄ›nÄ› fronty" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "PÅ™i vyÅ™eÅ¡enÃ" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "PÅ™i zmÄ›nÄ› stavu" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "PÅ™i transakci" + +#: html/Approvals/Elements/PendingMyApproval:50 +#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") +msgid "Only show approvals for requests created after %1" +msgstr "Zobrazit jen schvalovánà pro požadavky založené po %1" + +#: html/Approvals/Elements/PendingMyApproval:48 +#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") +msgid "Only show approvals for requests created before %1" +msgstr "Zobrazit jen schvalovánà pro požadavky založenà pÅ™ed %quant(%1)" + +#: html/Elements/Quicksearch:31 +msgid "Open" +msgstr "OtevÅ™ené" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "OtevÅ™Ãt" + +#: html/SelfService/Elements/Tabs:57 +msgid "Open requests" +msgstr "OtevÅ™ené požadavky" + +#: html/Admin/Users/Prefs.html:41 +msgid "Open tickets (from listing) in a new window" +msgstr "OtevÅ™Ãt požadavky (ze seznamu) v novém oknÄ›" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in another window" +msgstr "OtevÅ™Ãt požadavky (ze seznamu) v jiném oknÄ›" + +#: etc/initialdata:133 +msgid "Open tickets on correspondence" +msgstr "OtevÅ™Ãt požadavky pÅ™i korespondenci" + +#: html/Search/Elements/PickRestriction:101 +msgid "Ordering and sorting" +msgstr "Řazenà a tÅ™ÃdÄ›nÃ" + +#: html/Admin/Elements/ModifyUser:46 html/Admin/Users/Modify.html:117 html/Elements/SelectUsers:29 html/User/Prefs.html:86 +msgid "Organization" +msgstr "Organizace" + +#: html/Approvals/Elements/Approve:34 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "Původnà požadavek: #%1" + +#: html/Admin/Elements/ModifyQueue:55 html/Admin/Queues/Modify.html:69 +msgid "Over time, priority moves toward" +msgstr "ÄŒasem se priorita posouvá k" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Own tickets" +msgstr "Vlastnit požadavky" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "OwnTicket" +msgstr "Vlastnit požadavek" + +#: etc/initialdata:38 html/Elements/MyRequests:32 html/SelfService/Elements/MyRequests:30 html/Ticket/Create.html:48 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/EditPeople:44 html/Ticket/Elements/ShowPeople:27 html/Ticket/Update.html:63 lib/RT/ACE_Overlay.pm:86 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "VlastnÃk" + +#: lib/RT/Ticket_Overlay.pm:3004 +#. ($OldOwnerObj->Name, $NewOwnerObj->Name) +msgid "Owner changed from %1 to %2" +msgstr "VlastnÃk zmÄ›nÄ›n z %1 na %2" + +#: lib/RT/Transaction_Overlay.pm:584 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "VlastnÃk nucenÄ› zmÄ›nÄ›n z %1 na %2" + +#: html/Search/Elements/PickRestriction:31 +msgid "Owner is" +msgstr "VlastnÃk" + +#: html/Admin/Users/Modify.html:174 html/User/Prefs.html:56 +msgid "Pager" +msgstr "Pager" + +#: html/Admin/Elements/ModifyUser:74 +msgid "PagerPhone" +msgstr "ÄŒÃslo pageru" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/EditLinks:127 html/Ticket/Elements/EditLinks:58 html/Ticket/Elements/ShowLinks:43 +msgid "Parents" +msgstr "RodiÄe" + +#: html/Elements/Login:43 html/User/Prefs.html:61 +msgid "Password" +msgstr "Heslo" + +#: html/NoAuth/Reminder.html:25 +msgid "Password Reminder" +msgstr "PÅ™ipomÃnaÄ hesel" + +#: lib/RT/User_Overlay.pm:168 lib/RT/User_Overlay.pm:860 +msgid "Password too short" +msgstr "Heslo pÅ™ÃliÅ¡ krátké" + +#: html/Admin/Users/Modify.html:291 html/User/Prefs.html:172 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "Heslo: %1" + +#: html/Ticket/Elements/ShowSummary:43 html/Ticket/Elements/Tabs:96 html/Ticket/ModifyAll.html:51 +msgid "People" +msgstr "Uživatelé" + +#: etc/initialdata:126 +msgid "Perform a user-defined action" +msgstr "Provedenà uživatelem definované akce" + +#: lib/RT/ACE_Overlay.pm:231 lib/RT/ACE_Overlay.pm:237 lib/RT/ACE_Overlay.pm:563 lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:583 lib/RT/ACE_Overlay.pm:648 lib/RT/CurrentUser.pm:83 lib/RT/CurrentUser.pm:92 lib/RT/CustomField_Overlay.pm:445 lib/RT/CustomField_Overlay.pm:451 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1099 lib/RT/Group_Overlay.pm:1108 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1163 lib/RT/Group_Overlay.pm:1169 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:904 lib/RT/Group_Overlay.pm:908 lib/RT/Group_Overlay.pm:921 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:126 lib/RT/Scrip_Overlay.pm:137 lib/RT/Scrip_Overlay.pm:197 lib/RT/Scrip_Overlay.pm:430 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:88 lib/RT/Template_Overlay.pm:94 lib/RT/Ticket_Overlay.pm:1341 lib/RT/Ticket_Overlay.pm:1351 lib/RT/Ticket_Overlay.pm:1365 lib/RT/Ticket_Overlay.pm:1518 lib/RT/Ticket_Overlay.pm:1527 lib/RT/Ticket_Overlay.pm:1540 lib/RT/Ticket_Overlay.pm:1875 lib/RT/Ticket_Overlay.pm:2013 lib/RT/Ticket_Overlay.pm:2177 lib/RT/Ticket_Overlay.pm:2244 lib/RT/Ticket_Overlay.pm:2596 lib/RT/Ticket_Overlay.pm:2668 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2777 lib/RT/Ticket_Overlay.pm:2910 lib/RT/Ticket_Overlay.pm:3139 lib/RT/Ticket_Overlay.pm:3337 lib/RT/Ticket_Overlay.pm:3499 lib/RT/Ticket_Overlay.pm:3551 lib/RT/Ticket_Overlay.pm:3716 lib/RT/Transaction_Overlay.pm:468 lib/RT/Transaction_Overlay.pm:475 lib/RT/Transaction_Overlay.pm:504 lib/RT/Transaction_Overlay.pm:511 lib/RT/User_Overlay.pm:1334 lib/RT/User_Overlay.pm:562 lib/RT/User_Overlay.pm:597 lib/RT/User_Overlay.pm:853 lib/RT/User_Overlay.pm:941 +msgid "Permission Denied" +msgstr "PÅ™Ãstup nepovolen" + +#: html/User/Elements/Tabs:35 +msgid "Personal Groups" +msgstr "Osobnà skupiny" + +#: html/User/Groups/index.html:30 html/User/Groups/index.html:40 +msgid "Personal groups" +msgstr "Vlastnà skupiny" + +#: html/User/Elements/DelegateRights:37 +msgid "Personal groups:" +msgstr "Vlastnà skupiny:" + +#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:49 +msgid "Phone numbers" +msgstr "ÄŒÃsla telefonů" + +#: html/Admin/Users/Rights.html:25 +msgid "Placeholder" +msgstr "Zábor mÃsta" + +#: html/Elements/Header:52 html/Elements/Tabs:55 html/SelfService/Prefs.html:25 html/User/Prefs.html:25 html/User/Prefs.html:28 +msgid "Preferences" +msgstr "NastavenÃ" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "NastavenÃ" + +#: lib/RT/Action/Generic.pm:160 +msgid "Prepare Stubbed" +msgstr "Prepare v zárodku" + +#: html/Ticket/Elements/Tabs:61 +msgid "Prev" +msgstr "PÅ™edchozÃ" + +#: html/Search/Listing.html:44 +msgid "Previous page" +msgstr "PÅ™edchozà stránka" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "Pri" + +#: lib/RT/ACE_Overlay.pm:133 lib/RT/ACE_Overlay.pm:208 lib/RT/ACE_Overlay.pm:552 +#. ($args{'PrincipalId'}) +msgid "Principal %1 not found." +msgstr "Uživatel %1 nenalezen." + +#: html/Search/Elements/PickRestriction:54 html/SelfService/Display.html:76 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:54 html/Ticket/Elements/ShowBasics:39 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "Priorita" + +#: html/Admin/Elements/ModifyQueue:51 html/Admin/Queues/Modify.html:65 +msgid "Priority starts at" +msgstr "Priorita zaÄÃná na" + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "Privilegovaný" + +#: html/Admin/Users/Modify.html:271 html/User/Prefs.html:163 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "Privilegovaný stav: %1" + +#: html/Admin/Users/index.html:62 +msgid "Privileged users" +msgstr "Privilegovanà uživatelé" + +#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 +msgid "Pseudogroup for internal use" +msgstr "Pseudo skupina pro vnitÅ™nà použitÃ" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Elements/Quicksearch:29 html/Search/Elements/PickRestriction:46 html/SelfService/Create.html:35 html/SelfService/Display.html:68 html/Ticket/Create.html:38 html/Ticket/Elements/EditBasics:64 html/Ticket/Elements/ShowBasics:43 html/User/Elements/DelegateRights:80 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "Fronta" + +#: html/Admin/Queues/CustomField.html:42 html/Admin/Queues/Scrip.html:50 html/Admin/Queues/Scrips.html:46 html/Admin/Queues/Templates.html:43 +#. ($Queue) +#. ($id) +msgid "Queue %1 not found" +msgstr "Fronta %1 nenalezena" + +#: NOT FOUND IN SOURCE +msgid "Queue '%1' not found\\n" +msgstr "Fronta '%1' nenalezena\\n" + +#: html/Admin/Elements/ModifyQueue:31 html/Admin/Queues/Modify.html:43 +msgid "Queue Name" +msgstr "Název fronty" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "Scripy fronty" + +#: lib/RT/Queue_Overlay.pm:263 +msgid "Queue already exists" +msgstr "Fronta již existuje" + +#: lib/RT/Queue_Overlay.pm:272 lib/RT/Queue_Overlay.pm:278 +msgid "Queue could not be created" +msgstr "Fronta nemůže být vytvoÅ™ena" + +#: html/Ticket/Create.html:209 +msgid "Queue could not be loaded." +msgstr "Fronta nemůže být naÄtena." + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:282 +msgid "Queue created" +msgstr "Fronta vytvoÅ™ena" + +#: NOT FOUND IN SOURCE +msgid "Queue is not specified." +msgstr "Nenà zadána fronta." + +#: html/SelfService/Display.html:129 +msgid "Queue not found" +msgstr "Fronta nenalezena" + +#: html/Admin/Elements/Tabs:38 html/Admin/index.html:35 +msgid "Queues" +msgstr "Fronty" + +#: html/Elements/Login:34 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "RT %1" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "RT %1 pro %2" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." +msgstr "RT %1 od <a href=\"http://bestpractical.com\">Best Practival 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" + +#: html/Admin/index.html:25 html/Admin/index.html:26 +msgid "RT Administration" +msgstr "Správa RT" + +#: NOT FOUND IN SOURCE +msgid "RT Authentication error." +msgstr "AutentizaÄnà chyba RT." + +#: NOT FOUND IN SOURCE +msgid "RT Bounce: %1" +msgstr "RT Bounce: %1" + +#: NOT FOUND IN SOURCE +msgid "RT Configuration error" +msgstr "KonfiguraÄnà chyba RT" + +#: NOT FOUND IN SOURCE +msgid "RT Critical error. Message not recorded!" +msgstr "Kritická chyba RT. Zpráva nezaznamenána!" + +#: html/Elements/Error:41 html/SelfService/Error.html:41 +msgid "RT Error" +msgstr "Chyba RT" + +#: NOT FOUND IN SOURCE +msgid "RT Received mail (%1) from itself." +msgstr "RT pÅ™ijal poÅ¡tu (%1) od sebe samého." + +#: html/SelfService/Closed.html:25 +msgid "RT Self Service / Closed Tickets" +msgstr "RT Samoobsluha / UzavÅ™ené požadavky" + +#: html/index.html:25 html/index.html:28 +msgid "RT at a glance" +msgstr "RT v celé své záři" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't authenticate you" +msgstr "RT vás nemůže autentizovat" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find requestor via its external database lookup" +msgstr "RT nemůže nalézt žadatele pÅ™es hledánà v externà databázi" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find the queue: %1" +msgstr "RT nemůže nalézt frontu: %1" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "RT nemůže ověřit tento PGP podpis. \\n" + +#: html/Elements/PageLayout:26 +#. ($RT::rtname) +msgid "RT for %1" +msgstr "RT pro %1" + +#: NOT FOUND IN SOURCE +msgid "RT for %1: %2" +msgstr "RT pro %1: %2" + +#: NOT FOUND IN SOURCE +msgid "RT has proccessed your commands" +msgstr "RT zpracoval vaÅ¡e pÅ™Ãkazy" + +#: html/Elements/Login:83 +#. ('2003') +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 je © Copyright 1996-%1 Jesse Vincent <jesse@bestpractical.com>. Å ÃÅ™eno pod <a href=\"http://www.gnu.org/copyleft/gpl.html\">verzà 2 GNU General Public License.</a>" + +#: NOT FOUND IN SOURCE +msgid "RT thinks this message may be a bounce" +msgstr "RT bere tuto zprávu jako bounce" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +msgstr "RT zpracuje tuto zprávu tak, jako by byla nepodepsaná.\\n" + +#: 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 "Emailový pÅ™Ãkazový režim RT vyžaduje PGP autentizaci. Nepodepsal jste vaÅ¡i zprávu nebo váš podpis nemůže být ověřen." + +#: html/Admin/Users/Modify.html:58 html/Admin/Users/Prefs.html:52 html/User/Prefs.html:44 +msgid "Real Name" +msgstr "SkuteÄné jméno" + +#: html/Admin/Elements/ModifyUser:48 +msgid "RealName" +msgstr "SkuteÄné jméno" + +#: html/Ticket/Create.html:185 html/Ticket/Elements/EditLinks:139 html/Ticket/Elements/EditLinks:94 html/Ticket/Elements/ShowLinks:63 +msgid "Referred to by" +msgstr "Je odkazem z" + +#: html/Elements/SelectLinkType:28 html/Ticket/Create.html:184 html/Ticket/Elements/EditLinks:135 html/Ticket/Elements/EditLinks:80 html/Ticket/Elements/ShowLinks:55 +msgid "Refers to" +msgstr "Odkazuje na" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "Zjemnit" + +#: html/Search/Elements/PickRestriction:27 +msgid "Refine search" +msgstr "Zjemnit vyhledánÃ" + +#: html/Elements/Refresh:36 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "Obnovit tuto stránku %quant(%1,každou,každé,každých) %numf(%1) %quant(%1,minutu,minuty,minut)." + +#??? quant +#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:60 html/Ticket/ModifyAll.html:57 +msgid "Relationships" +msgstr "Vztahy" + +#: html/Search/Bulk.html:93 +msgid "Remove AdminCc" +msgstr "Odstranit AdminCc" + +#: html/Search/Bulk.html:91 +msgid "Remove Cc" +msgstr "Odstranit Cc" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "Odstranit žadatele" + +#: html/Ticket/Elements/ShowTransaction:173 html/Ticket/Elements/Tabs:122 +msgid "Reply" +msgstr "OdpovÄ›dÄ›t" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Reply to tickets" +msgstr "OdpovÄ›dÄ›t na požadavky" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "ReplyToTicket" +msgstr "OdpovÃdat na požadavky" + +#: etc/initialdata:44 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:87 +msgid "Requestor" +msgstr "Žadatel" + +#: html/Search/Elements/PickRestriction:38 +msgid "Requestor email address" +msgstr "Emailová adresa žadatele" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "Žadatel(é)" + +#: html/SelfService/Create.html:43 html/SelfService/Display.html:42 html/Ticket/Create.html:56 html/Ticket/Elements/EditPeople:48 html/Ticket/Elements/ShowPeople:31 +msgid "Requestors" +msgstr "Žadatelé" + +#: html/Admin/Elements/ModifyQueue:61 html/Admin/Queues/Modify.html:75 +msgid "Requests should be due in" +msgstr "Požadavky majà být vyÅ™eÅ¡eny do" + +#: html/Elements/Submit:62 +msgid "Reset" +msgstr "Vynulovat" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "BydliÅ¡tÄ›" + +#: html/Ticket/Elements/Tabs:132 +msgid "Resolve" +msgstr "VyÅ™eÅ¡it" + +#: html/Ticket/Update.html:133 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "VyÅ™eÅ¡enà požadavku #%1 (%2)" + +#: etc/initialdata:302 html/Elements/SelectDateType:28 lib/RT/Ticket_Overlay.pm:1170 +msgid "Resolved" +msgstr "VyÅ™eÅ¡en" + +#: html/Search/Bulk.html:123 html/Ticket/ModifyAll.html:73 html/Ticket/Update.html:73 +msgid "Response to requestors" +msgstr "OdpovÄ›Ä Å¾adatelům" + +#: html/Elements/ListActions:26 +msgid "Results" +msgstr "Výsledky" + +#: html/Search/Elements/PickRestriction:105 +msgid "Results per page" +msgstr "Výsledků na stránku" + +#: html/Admin/Elements/ModifyUser:33 html/Admin/Users/Modify.html:100 html/User/Prefs.html:72 +msgid "Retype Password" +msgstr "Zopakujte heslo" + +#: NOT FOUND IN SOURCE +msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" +msgstr "Nenalezeno právo %1 pro %2 %3 v mezÃch %4 (%5)" + +#: lib/RT/ACE_Overlay.pm:613 +msgid "Right Delegated" +msgstr "Právo delegováno" + +#: lib/RT/ACE_Overlay.pm:303 +msgid "Right Granted" +msgstr "Práva pÅ™idána" + +#: lib/RT/ACE_Overlay.pm:161 +msgid "Right Loaded" +msgstr "Právo naÄteno" + +#: lib/RT/ACE_Overlay.pm:678 lib/RT/ACE_Overlay.pm:693 +msgid "Right could not be revoked" +msgstr "Právo nemůže být odebráno" + +#: html/User/Delegation.html:64 +msgid "Right not found" +msgstr "Právo nenalezeno" + +#: lib/RT/ACE_Overlay.pm:543 lib/RT/ACE_Overlay.pm:638 +msgid "Right not loaded." +msgstr "Právo nenaÄteno." + +#: lib/RT/ACE_Overlay.pm:689 +msgid "Right revoked" +msgstr "Právo odebráno" + +#: html/Admin/Elements/UserTabs:41 +msgid "Rights" +msgstr "Práva" + +#: lib/RT/Interface/Web.pm:758 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "Práva pro %1 nemohou být pÅ™idÄ›lena" + +#: lib/RT/Interface/Web.pm:791 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "Práva nemohou být %1 odebrána" + +#: html/Admin/Global/GroupRights.html:51 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "Pravidla" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "KoÅ™enový schvalovatel" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "so" + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "Save Changes" +msgstr "Uložit zmÄ›ny" + +#: html/Ticket/ModifyLinks.html:39 +msgid "Save changes" +msgstr "Nezapomeňte uložit zmÄ›ny - " + +#: html/Admin/Global/Scrip.html:49 +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "Scrip #%1" + +#: lib/RT/Scrip_Overlay.pm:176 +msgid "Scrip Created" +msgstr "Scrip vytvoÅ™en" + +#: html/Admin/Elements/EditScrips:84 +msgid "Scrip deleted" +msgstr "Scrip smazán" + +#: html/Admin/Elements/QueueTabs:46 html/Admin/Elements/SystemTabs:33 html/Admin/Global/index.html:41 +msgid "Scrips" +msgstr "Scripy" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "Scripy fro %1\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "Scripy platné ve vÅ¡ech frontách" + +#: html/Elements/SimpleSearch:27 html/Search/Elements/PickRestriction:126 html/Ticket/Elements/Tabs:159 +msgid "Search" +msgstr "VyhledávánÃ" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "PodmÃnky vyhledávánÃ" + +#: html/Approvals/Elements/PendingMyApproval:39 +msgid "Search for approvals" +msgstr "Vyhledávánà schvalovánÃ" + +#: bin/rt-crontool:188 +msgid "Security:" +msgstr "ZabezpeÄnÃ:" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "SeeQueue" +msgstr "VidÄ›t frontu" + +#: html/Admin/Groups/index.html:40 +msgid "Select a group" +msgstr "VýbÄ›r skupiny" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "VýbÄ›r fronty" + +#: html/Admin/Users/index.html:25 html/Admin/Users/index.html:28 +msgid "Select a user" +msgstr "VýbÄ›r uživatele" + +#: html/Admin/Global/CustomField.html:38 html/Admin/Global/CustomFields.html:36 +msgid "Select custom field" +msgstr "Vybrat uživatelskou položku" + +#: html/Admin/Elements/GroupTabs:52 html/User/Elements/GroupTabs:50 +msgid "Select group" +msgstr "Vybrat skupinu" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Select multiple values" +msgstr "Vybrat vÃce hodnot" + +#: lib/RT/CustomField_Overlay.pm:352 +msgid "Select one value" +msgstr "Vybrat jednu hodnotu" + +#: html/Admin/Elements/QueueTabs:67 +msgid "Select queue" +msgstr "VýbÄ›r fronty" + +#: html/Admin/Global/Scrip.html:37 html/Admin/Global/Scrips.html:36 html/Admin/Queues/Scrip.html:40 html/Admin/Queues/Scrips.html:50 +msgid "Select scrip" +msgstr "VýbÄ›r scripu" + +#: html/Admin/Global/Template.html:57 html/Admin/Global/Templates.html:36 html/Admin/Queues/Template.html:55 +msgid "Select template" +msgstr "Vybrat vzor" + +#: html/Admin/Elements/UserTabs:49 +msgid "Select user" +msgstr "VýbÄ›r uživatele" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "SelectMultiple" +msgstr "VýbÄ›r vÃcenásobný" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectSingle" +msgstr "VýbÄ›t jedineÄný" + +#: html/SelfService/index.html:25 +msgid "Self Service" +msgstr "Samoobsluha" + +#: etc/initialdata:114 +msgid "Send mail to all watchers" +msgstr "Zaslat e-mail vÅ¡em pozorovatelům" + +#: etc/initialdata:110 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "Zaslat e-mail vÅ¡em pozorovatelům jako \"komentář\"" + +#: etc/initialdata:105 +msgid "Send mail to requestors and Ccs" +msgstr "Zaslat e-mail žadatelům a vÅ¡em Cc" + +#: etc/initialdata:100 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "Zaslat e-mail žadatelům a vÅ¡em Ccs jako komentář" + +#: etc/initialdata:79 +msgid "Sends a message to the requestors" +msgstr "PosÃlá zprávu vÅ¡em žadatelům" + +#: etc/initialdata:118 etc/initialdata:122 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "PosÃlá e-mail vÅ¡em pÅ™esnÄ› vyjmenovaným Cc a Bcc" + +#: etc/initialdata:95 +msgid "Sends mail to the administrative Ccs" +msgstr "PosÃlá e-mail vÅ¡em administrativnÃm Cc" + +#: etc/initialdata:91 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "PosÃlá e-mail vÅ¡em administrativnÃm Cc jako komentář" + +#: etc/initialdata:83 etc/initialdata:87 +msgid "Sends mail to the owner" +msgstr "PosÃlá e-mail vlastnÃkovi" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "zář" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "Zobrazit výsledky" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show approved requests" +msgstr "Zobrazit schválené požadavky" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show basics" +msgstr "Zobrazit základnà údaje" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show denied requests" +msgstr "Zobrazit odepÅ™ené požadavky" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show details" +msgstr "Zobrazit podrobnosti" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show pending requests" +msgstr "Zobrazit trvajÃcà požadavky" + +#: html/Approvals/Elements/PendingMyApproval:46 +msgid "Show requests awaiting other approvals" +msgstr "Zobrazit požadavky ÄekajÃcà na jejich schválenÃ" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Show ticket private commentary" +msgstr "Zobrazovat privátnà komentáře požadavku" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "Show ticket summaries" +msgstr "Zobrazovat výsledky požadavku" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ShowACL" +msgstr "Zobrazovat seznam pÅ™Ãstupových práv" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowScrips" +msgstr "Zobrazit scripy" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ShowTemplate" +msgstr "Zobrazit vzor" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "ShowTicket" +msgstr "Zobrazit požadavek" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "ShowTicketComments" +msgstr "Zobrazit komentáře požadavku" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "Být žadatelem Äi Cc požadavku Äi fronty" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "Být AdminCc požadavku nebo fronty" + +#: html/Admin/Elements/ModifyUser:39 html/Admin/Users/Modify.html:191 html/Admin/Users/Prefs.html:32 html/SelfService/Prefs.html:37 html/User/Prefs.html:112 +msgid "Signature" +msgstr "Podpis" + +#: html/SelfService/Elements/Header:52 +#. ($session{'CurrentUser'}->Name) +msgid "Signed in as %1" +msgstr "PÅ™Ãhlášen jako %1" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Single" +msgstr "Jednoduchá" + +#: html/Elements/Header:51 +msgid "Skip Menu" +msgstr "PÅ™eskoÄit menu" + +#: html/Admin/Elements/EditCustomFieldValues:31 +msgid "Sort key" +msgstr "TÅ™ÃdÃcà klÃÄ" + +#: html/Search/Elements/PickRestriction:109 +msgid "Sort results by" +msgstr "TÅ™Ãdit výsledky dle" + +#: html/Admin/Elements/AddCustomFieldValue:25 +msgid "SortOrder" +msgstr "TÅ™ÃdÃcà poÅ™adÃ" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "Odložené" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "Úvodnà stránka" + +#: html/Elements/SelectDateType:27 html/Ticket/Elements/EditDates:32 html/Ticket/Elements/ShowDates:35 +msgid "Started" +msgstr "ZapoÄato" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "Datum zapoÄetà '%1' nemůže být rozpoznáno" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:27 html/Ticket/Elements/ShowDates:31 +msgid "Starts" +msgstr "ZaÄÃná" + +#: NOT FOUND IN SOURCE +msgid "Starts By" +msgstr "ZaÄÃná" + +#: NOT FOUND IN SOURCE +msgid "Starts date '%1' could not be parsed" +msgstr "Datum zaÄÃnánà '%1' nemůže být rozpoznáno" + +#: html/Admin/Elements/ModifyUser:82 html/Admin/Users/Modify.html:138 html/User/Prefs.html:94 +msgid "State" +msgstr "Stát" + +#: html/Elements/MyRequests:31 html/Elements/MyTickets:31 html/Search/Elements/PickRestriction:74 html/SelfService/Display.html:59 html/SelfService/Elements/MyRequests:29 html/SelfService/Update.html:31 html/Ticket/Create.html:42 html/Ticket/Elements/EditBasics:38 html/Ticket/Elements/ShowBasics:31 html/Ticket/Update.html:60 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "Stav" + +#: etc/initialdata:288 +msgid "Status Change" +msgstr "ZmÄ›na Stavu" + +#: lib/RT/Transaction_Overlay.pm:530 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "Stav zmÄ›nÄ›n z %1 na %2" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "ZmÄ›na stavu" + +#: html/Ticket/Elements/Tabs:147 +msgid "Steal" +msgstr "VzÃt" + +#: lib/RT/Transaction_Overlay.pm:589 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "Vzato %1 " + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Search/Bulk.html:126 html/Search/Elements/PickRestriction:43 html/SelfService/Create.html:59 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:35 html/Ticket/Create.html:84 html/Ticket/Elements/EditBasics:28 html/Ticket/ModifyAll.html:79 html/Ticket/Update.html:77 lib/RT/Ticket_Overlay.pm:1160 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "PÅ™edmÄ›t" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:611 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "PÅ™edmÄ›t zmÄ›nÄ›n na %1" + +#: html/Elements/Submit:59 +msgid "Submit" +msgstr "Odeslat" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "Potvrdit model zpracovánÃ" + +#: lib/RT/Group_Overlay.pm:749 +msgid "Succeeded" +msgstr "Úspěšné" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "ne" + +#: lib/RT/System.pm:54 +msgid "SuperUser" +msgstr "Super uživatel" + +#: html/User/Elements/DelegateRights:77 +msgid "System" +msgstr "Systém" + +#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:567 lib/RT/Interface/Web.pm:757 lib/RT/Interface/Web.pm:790 +msgid "System Error" +msgstr "Systémová chyba" + +#: lib/RT/ACE_Overlay.pm:616 +msgid "System error. Right not delegated." +msgstr "Systémová chyba. Právo nedelegováno." + +#: lib/RT/ACE_Overlay.pm:146 lib/RT/ACE_Overlay.pm:223 lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:898 +msgid "System error. Right not granted." +msgstr "Systémová chyba. Právo nepÅ™idÄ›leno." + +#: html/Admin/Global/GroupRights.html:35 html/Admin/Groups/GroupRights.html:37 html/Admin/Queues/GroupRights.html:36 +msgid "System groups" +msgstr "Systémové skupiny" + +#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 +msgid "SystemRolegroup for internal use" +msgstr "Skupina systémovýh pravidel pro vnitÅ™nà použitÃ" + +#: lib/RT/CurrentUser.pm:320 +msgid "TEST_STRING" +msgstr "MÃchaÄka na beton" + +#: html/Ticket/Elements/Tabs:143 +msgid "Take" +msgstr "VzÃt" + +#: lib/RT/Transaction_Overlay.pm:575 +msgid "Taken" +msgstr "Vzatý" + +#: html/Admin/Elements/EditScrip:81 +msgid "Template" +msgstr "Vzor" + +#: html/Admin/Global/Template.html:91 html/Admin/Queues/Template.html:90 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "Vzor #%!" + +#: html/Admin/Elements/EditTemplates:89 +msgid "Template deleted" +msgstr "Vzor smazán" + +#: lib/RT/Scrip_Overlay.pm:153 +msgid "Template not found" +msgstr "Vzor nenalezen" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "Vzor nenalezen\\n" + +#: lib/RT/Template_Overlay.pm:347 +msgid "Template parsed" +msgstr "Vzor rozpoznán" + +#: html/Admin/Elements/QueueTabs:49 html/Admin/Elements/SystemTabs:36 html/Admin/Global/index.html:45 +msgid "Templates" +msgstr "Vzory" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "Vzory pro %1\\n" + +#: lib/RT/Interface/Web.pm:858 +msgid "That is already the current value" +msgstr "Toto je již aktuálnà hodnota" + +#: lib/RT/CustomField_Overlay.pm:178 +msgid "That is not a value for this custom field" +msgstr "Toto nenà hodnota pro tuto uživatelskou položku" + +#: lib/RT/Ticket_Overlay.pm:1886 +msgid "That is the same value" +msgstr "Toto je shodná hodnota" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "Tento uživatel je již v této frontÄ› %1" + +#: lib/RT/Ticket_Overlay.pm:1434 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "Tento uživatel je již u tohoto požadavku %1" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "Tento uživatel nenà v této frontÄ› %1" + +#: lib/RT/Ticket_Overlay.pm:1551 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "Tento uživatel nenà u tohoto požadavku %1" + +#: lib/RT/Ticket_Overlay.pm:1882 +msgid "That queue does not exist" +msgstr "Tata fronta neexistuje" + +#: lib/RT/Ticket_Overlay.pm:3143 +msgid "That ticket has unresolved dependencies" +msgstr "Tento požadavek má nevyÅ™eÅ¡ené závislosti" + +#: lib/RT/ACE_Overlay.pm:288 lib/RT/ACE_Overlay.pm:597 +msgid "That user already has that right" +msgstr "Tento uživatel již má toto právo" + +#: lib/RT/Ticket_Overlay.pm:2952 +msgid "That user already owns that ticket" +msgstr "Tento uživatel již tento požadavek vlastnÃ" + +#: lib/RT/Ticket_Overlay.pm:2918 +msgid "That user does not exist" +msgstr "Tento uživatel neexistuje" + +#: lib/RT/User_Overlay.pm:315 +msgid "That user is already privileged" +msgstr "Tento uživatel je již privilegován" + +#: lib/RT/User_Overlay.pm:332 +msgid "That user is already unprivileged" +msgstr "Tento uživatel je již neprivilegován" + +#: lib/RT/User_Overlay.pm:327 +msgid "That user is now privileged" +msgstr "Uživatel je nynà privilegován" + +#: lib/RT/User_Overlay.pm:344 +msgid "That user is now unprivileged" +msgstr "Uživatel je nynà neprivilegován" + +#: lib/RT/Ticket_Overlay.pm:2944 +msgid "That user may not own tickets in that queue" +msgstr "V této frontÄ› nemůže tento uživatel vlastnit požadavky" + +#: lib/RT/Link_Overlay.pm:206 +msgid "That's not a numerical id" +msgstr "Toto nenà ÄÃselný identifikátor" + +#: html/Ticket/Create.html:150 html/Ticket/Elements/ShowSummary:28 +msgid "The Basics" +msgstr "Základnà údaje" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The CC of a ticket" +msgstr "Cc požadavku" + +#: lib/RT/ACE_Overlay.pm:89 +msgid "The administrative CC of a ticket" +msgstr "Administrativnà Cc požadavku" + +#: lib/RT/Ticket_Overlay.pm:2213 +msgid "The comment has been recorded" +msgstr "Komentář byl zaznamenán" + +#: bin/rt-crontool:198 +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 "NásledujÃcà pÅ™Ãkaz najde vÅ¡echny aktivnà požadavky ve frontÄ› 'general' a nastavà jejich priority na 99, pokud nebyly tknuty poslednà 4 hodiny:" + +#: bin/rt-commit-handler:756 bin/rt-commit-handler:766 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "NásledujÃcà pÅ™Ãkazy nebyly zpracovány\\n\\n" + +#: lib/RT/Interface/Web.pm:861 +msgid "The new value has been set." +msgstr "Nová hodnota nastavena." + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The owner of a ticket" +msgstr "VlastnÃk požadavku" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The requestor of a ticket" +msgstr "Žadatel požadavku" + +#: html/Admin/Elements/EditUserComments:26 +msgid "These comments aren't generally visible to the user" +msgstr "Tyto komentáře nejsou běžnÄ› viditelné uživateli" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "Tento požadavek %1 %2 (%3)\\n" + +#: bin/rt-crontool:189 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "Tento nástroj umožňuje uživateli spustit libovolné perl moduly z RT." + +#: lib/RT/Transaction_Overlay.pm:253 +msgid "This transaction appears to have no content" +msgstr "Tato transakce vypadá, že nemá obsah" + +#: html/Ticket/Elements/ShowRequestor:47 +#. ($rows) +msgid "This user's %1 highest priority tickets" +msgstr "nejdůležitÄ›jÅ¡Ã%quant(%1, požadavek,požadavky,ch požadavků) tohoto uživatele" + +#: NOT FOUND IN SOURCE +msgid "This user's 25 highest priority tickets" +msgstr "25 nejdůležitÄ›jÅ¡Ãch požadavků tohoto uživatele" + +#: lib/RT/Date.pm:391 +msgid "Thu." +msgstr "Ät" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 %2" +msgstr "Požadavek # %1 %2" + +#: html/Ticket/ModifyAll.html:25 html/Ticket/ModifyAll.html:29 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "Maxi aktualizace požadavku #%1: %2" + +#: html/Approvals/Elements/ShowDependency:46 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "Požadavek #%1: %2" + +#: lib/RT/Ticket_Overlay.pm:608 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "Požadavek %1 vytvoÅ™en ve frontÄ› '%2'" + +#: bin/rt-commit-handler:760 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "Požadavek %1 naÄten\\n" + +#: html/Search/Bulk.html:181 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "Požadavek %1: %2" + +#: html/Ticket/History.html:25 html/Ticket/History.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "Historie požadavku # %1 %2" + +#: html/SelfService/Display.html:34 +msgid "Ticket Id" +msgstr "Identifikátor požadavku" + +#: etc/initialdata:303 +msgid "Ticket Resolved" +msgstr "Požadavek vyÅ™eÅ¡en" + +#: html/Search/Elements/PickRestriction:63 +msgid "Ticket attachment" +msgstr "PÅ™Ãloha požadavku" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "Obsah požadavku" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "Typ obsahu požadavku" + +#: lib/RT/Ticket_Overlay.pm:495 lib/RT/Ticket_Overlay.pm:597 +msgid "Ticket could not be created due to an internal error" +msgstr "Požadaven nemůže být vytvoÅ™en pro vnitÅ™nà chybu" + +#: lib/RT/Transaction_Overlay.pm:522 +msgid "Ticket created" +msgstr "Požadavek vytvoÅ™en" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "NezdaÅ™ilo se vytvoÅ™enà požadavku" + +#: lib/RT/Transaction_Overlay.pm:527 +msgid "Ticket deleted" +msgstr "Požadavek smazán" + +#: html/REST/1.0/modify:29 html/REST/1.0/update:34 +msgid "Ticket id not found" +msgstr "Id požadavku nenalezeno" + +#: html/REST/1.0/modify:36 html/REST/1.0/update:41 +msgid "Ticket not found" +msgstr "Požadavek nenalezen" + +#: etc/initialdata:289 +msgid "Ticket status changed" +msgstr "Stav požadavku zmÄ›nÄ›n" + +#: html/Ticket/Update.html:39 +msgid "Ticket watchers" +msgstr "Pozorovatelé požadavku" + +#: html/Elements/Tabs:49 +msgid "Tickets" +msgstr "Požadavky" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "Požadavky %1 %2" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "Požadavky %1 dle %2" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Tickets from %1" +msgstr "Požadavky z %1" + +#: html/Approvals/Elements/ShowDependency:27 +msgid "Tickets which depend on this approval:" +msgstr "Požadavky, které záležà na tomto schválenÃ:" + +#: html/Ticket/Create.html:157 html/Ticket/Elements/EditBasics:48 +msgid "Time Left" +msgstr "ZbývajÃcà Äas" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:43 +msgid "Time Worked" +msgstr "ÄŒas práce" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "ZbývajÃcà Äas" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "ÄŒas k zobrazenÃ" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "ÄŒas práce" + +#: lib/RT/Ticket_Overlay.pm:1165 +msgid "TimeWorked" +msgstr "ÄŒas práce" + +#: bin/rt-commit-handler:402 +msgid "To generate a diff of this commit:" +msgstr "VytvoÅ™it diff tohoto commitu:" + +#: bin/rt-commit-handler:391 +msgid "To generate a diff of this commit:\\n" +msgstr "VytvoÅ™it diff tohoto commitu:\\n" + +#: lib/RT/Ticket_Overlay.pm:1168 +msgid "Told" +msgstr "Poslednà kontakt" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "Transakce" + +#: lib/RT/Transaction_Overlay.pm:642 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "Transakce %1 vymazána" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "Transakce vytvoÅ™ena" + +#: lib/RT/Transaction_Overlay.pm:89 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "Bez udánà id požadavku nelze volat Transaction->Create" + +#: lib/RT/Transaction_Overlay.pm:701 +msgid "Transactions are immutable" +msgstr "Transakce jsou nemÄ›nné" + +#: NOT FOUND IN SOURCE +msgid "Trying to delete a right: %1" +msgstr "Pokus o smazánà práva: %1" + +#: lib/RT/Date.pm:389 +msgid "Tue." +msgstr "út" + +#: html/Admin/Elements/EditCustomField:34 html/Ticket/Elements/AddWatchers:33 html/Ticket/Elements/AddWatchers:44 html/Ticket/Elements/AddWatchers:54 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "typ" + +#: lib/RT/ScripCondition_Overlay.pm:104 +msgid "Unimplemented" +msgstr "Neimplementováno" + +#: html/Admin/Users/Modify.html:68 +msgid "Unix login" +msgstr "Unixový login" + +#: html/Admin/Elements/ModifyUser:62 +msgid "UnixUsername" +msgstr "Unixové uživatelské jméno" + +#: lib/RT/Attachment_Overlay.pm:265 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "Neznámé kódovánà obsahu %1" + +#: html/Elements/SelectResultsPerPage:37 +msgid "Unlimited" +msgstr "NeomezenÄ›" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "Neprivilegovaný" + +#: lib/RT/Transaction_Overlay.pm:571 +msgid "Untaken" +msgstr "Vrácen" + +#: html/Elements/MyTickets:64 html/Search/Bulk.html:33 +msgid "Update" +msgstr "Aktualizace" + +#: html/Admin/Users/Prefs.html:62 +msgid "Update ID" +msgstr "Identifikátor aktualizace" + +#: html/Search/Bulk.html:120 html/Ticket/ModifyAll.html:66 html/Ticket/Update.html:67 +msgid "Update Type" +msgstr "Typ aktualizace" + +#: html/Search/Listing.html:61 +msgid "Update all these tickets at once" +msgstr "Aktualizovat spoleÄnÄ› vÅ¡echny tyty požadavky" + +#: html/Admin/Users/Prefs.html:49 +msgid "Update email" +msgstr "Aktualizovat email" + +#: html/Admin/Users/Prefs.html:55 +msgid "Update name" +msgstr "Aktualizovat jméno" + +#: lib/RT/Interface/Web.pm:375 +msgid "Update not recorded." +msgstr "Aktualizace nezaznamenána" + +#: html/Search/Bulk.html:81 +msgid "Update selected tickets" +msgstr "Aktualizovat vybrané požadavky" + +#: html/Admin/Users/Prefs.html:36 +msgid "Update signature" +msgstr "Aktualizace podpisu" + +#: html/Ticket/ModifyAll.html:63 +msgid "Update ticket" +msgstr "Aktualizace požadavku" + +#: html/SelfService/Update.html:25 html/SelfService/Update.html:27 +#. ($Ticket->id) +msgid "Update ticket # %1" +msgstr "Aktualizace požadavku # %1" + +#: html/SelfService/Update.html:50 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "Aktualizace požadavku #%1" + +#: html/Ticket/Update.html:135 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "Aktualizace požadavku #%1 (%2)" + +#: lib/RT/Interface/Web.pm:373 +msgid "Update type was neither correspondence nor comment." +msgstr "Typ aktualizace nebyl ani korespondence ani komentář." + +#: html/Elements/SelectDateType:33 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1169 +msgid "Updated" +msgstr "Aktualizováno" + +#: NOT FOUND IN SOURCE +msgid "User %1 %2: %3\\n" +msgstr "Uživatel %1 %2: %3\\n" + +#: NOT FOUND IN SOURCE +msgid "User %1 Password: %2\\n" +msgstr "Heslo uživatele %1: %2\\n" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found" +msgstr "Uživatel '%1' nenalezen" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found\\n" +msgstr "Uživatel '%1' nenalezen\\n" + +#: etc/initialdata:125 etc/initialdata:191 +msgid "User Defined" +msgstr "Uživatelem definované" + +#: html/Admin/Users/Prefs.html:59 +msgid "User ID" +msgstr "Identifikátor uživatele" + +#: html/Elements/SelectUsers:26 +msgid "User Id" +msgstr "Identifikátor uživatele" + +#: html/Admin/Elements/GroupTabs:47 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/SystemTabs:47 html/Admin/Global/index.html:59 +msgid "User Rights" +msgstr "Práva uživatele" + +#: html/Admin/Users/Modify.html:226 +#. ($msg) +msgid "User could not be created: %1" +msgstr "Uživatel nemůže být vytvoÅ™en: %1" + +#: lib/RT/User_Overlay.pm:262 +msgid "User created" +msgstr "Uživatel vytvoÅ™en" + +#: html/Admin/Global/GroupRights.html:67 html/Admin/Groups/GroupRights.html:54 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "Uživatelem definované skupiny" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "Uživatel upozornÄ›n" + +#: html/Admin/Users/Prefs.html:25 html/Admin/Users/Prefs.html:29 +msgid "User view" +msgstr "Uživatelský pohled" + +#: html/Admin/Users/Modify.html:48 html/Elements/Login:42 html/Ticket/Elements/AddWatchers:35 +msgid "Username" +msgstr "Uživatelské jméno" + +#: html/Admin/Elements/SelectNewGroupMembers:26 html/Admin/Elements/Tabs:32 html/Admin/Groups/Members.html:55 html/Admin/Queues/People.html:68 html/Admin/index.html:29 html/User/Groups/Members.html:58 +msgid "Users" +msgstr "Uživatelé" + +#: html/Admin/Users/index.html:65 +msgid "Users matching search criteria" +msgstr "Uživatelé odpovÃdajÃcà podmÃnce vyhledánÃ" + +#: html/Search/Elements/PickRestriction:51 +msgid "ValueOfQueue" +msgstr "Hodnota fronty" + +#: html/Admin/Elements/EditCustomField:40 +msgid "Values" +msgstr "Hodnoty" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Watch" +msgstr "Být pozorovatelem" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "WatchAsAdminCc" +msgstr "Být AdminCc pozorovatelem" + +#: html/Admin/Elements/QueueTabs:42 +msgid "Watchers" +msgstr "Pozorovatelé" + +#: html/Admin/Elements/ModifyUser:56 +msgid "WebEncoding" +msgstr "Kódovánà WWW" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "st" + +#: etc/upgrade/2.1.71:161 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "PÅ™idat korespondenci k původnÃmu požadavku, pokud byl požadavek schválen vÅ¡emi" + +#: etc/upgrade/2.1.71:135 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "PÅ™idat korespondenci k původnÃmu požadavku, pokud byl požadavek kýmkoli schválen" + +#: etc/initialdata:138 +msgid "When a ticket is created" +msgstr "Když je požadavek vytvoÅ™en" + +#: etc/upgrade/2.1.71:79 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "Upozornit vlastnÃka a vÅ¡echny AdminCc, jejichž schválenà se oÄekává, pÅ™i vytvoÅ™enà schvalovaného požadavku" + +#: etc/initialdata:143 +msgid "When anything happens" +msgstr "Stane-li se cokoli" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "Je-li vyÅ™eÅ¡en požadavek" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "ZmÄ›nÃ-li se vlastnÃk požadavku" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "ZmÄ›nÃ-li se fronta požadavku" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "ZmÄ›nÃ-li se stav požadavku" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "SplnÃ-li se uživatelská podmÃnka" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "PÅ™ijde-li komentář" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "PÅ™ijde-li korespondence" + +#: html/Admin/Users/Modify.html:164 html/User/Prefs.html:52 +msgid "Work" +msgstr "ZamÄ›stnánÃ" + +#: html/Admin/Elements/ModifyUser:70 +msgid "WorkPhone" +msgstr "Telefon do zamÄ›stnánÃ" + +#: html/SelfService/Display.html:86 html/Ticket/Elements/ShowBasics:35 html/Ticket/Update.html:65 +msgid "Worked" +msgstr "Odpracováno" + +#: lib/RT/Ticket_Overlay.pm:3056 +msgid "You already own this ticket" +msgstr "Požadavek již vlastnÃte" + +#: html/autohandler:121 +msgid "You are not an authorized user" +msgstr "Nejste autorizovaný uživatel" + +#: lib/RT/Ticket_Overlay.pm:2930 +msgid "You can only reassign tickets that you own or that are unowned" +msgstr "Můžete pÅ™idÄ›lit pouze požadavky, které jsou vaÅ¡e nebo nejsou vlastnÄ›ny" + +#: NOT FOUND IN SOURCE +msgid "You don't have permission to view that ticket.\\n" +msgstr "Nemáte právo k zobrazenà tohoto požadavku.\\n" + +#: docs/design_docs/string-extraction-guide.txt:47 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "Nalezl jste %1 požadavků ve frontÄ› %2" + +#??? quant +#: html/NoAuth/Logout.html:31 html/REST/1.0/logout:25 +msgid "You have been logged out of RT." +msgstr "Byl jste odhlášen od RT." + +#: html/SelfService/Display.html:134 +msgid "You have no permission to create tickets in that queue." +msgstr "V této frontÄ› nemáte práva vytvářet požadavky." + +#: lib/RT/Ticket_Overlay.pm:1895 +msgid "You may not create requests in that queue." +msgstr "V této frontÄ› nemůžete vytvářet požadavky." + +#: html/NoAuth/Logout.html:36 +msgid "You're welcome to login again" +msgstr "Jste vÃtáni k dalÅ¡Ãmu pÅ™ihlášenÃ" + +#: html/SelfService/Elements/MyRequests:25 +#. ($friendly_status) +msgid "Your %1 requests" +msgstr "VaÅ¡ich %1 požadavků" + +#: NOT FOUND IN SOURCE +msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" +msgstr "Váš správce RT chybnÄ› nastavil poÅ¡tovnà aliasy, které volajà RT" + +#: etc/initialdata:429 etc/upgrade/2.1.71:146 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "Váš požadavek byl schválen uživatelem %1. Dalšà schválenà mohou být jeÅ¡tÄ› oÄekávána." + +#: etc/initialdata:463 etc/upgrade/2.1.71:180 +msgid "Your request has been approved." +msgstr "Váš požadavek byl schválen." + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "Váš požadavek byl odmÃtnut" + +#: etc/initialdata:384 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "Váš požadavek byl odmÃtnut." + +#: html/autohandler:136 html/autohandler:142 +msgid "Your username or password is incorrect" +msgstr "VaÅ¡e uživatelské jméno Äi heslo je nesprávné" + +#: html/Admin/Elements/ModifyUser:84 html/Admin/Users/Modify.html:144 html/User/Prefs.html:96 +msgid "Zip" +msgstr "PSÄŒ" + +#: html/User/Elements/DelegateRights:59 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "jak je dovoleno %1" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:34 +msgid "contains" +msgstr "obsahuje" + +#: html/Elements/SelectAttachmentField:26 +msgid "content" +msgstr "obsah" + +#: html/Elements/SelectAttachmentField:27 +msgid "content-type" +msgstr "typ obsahu" + +#: lib/RT/Ticket_Overlay.pm:2282 +msgid "correspondence (probably) not sent" +msgstr "korespondence (zÅ™ejmÄ›) neposlána" + +#: lib/RT/Ticket_Overlay.pm:2292 +msgid "correspondence sent" +msgstr "korespondence poslána" + +#: html/Admin/Elements/ModifyQueue:63 html/Admin/Queues/Modify.html:77 lib/RT/Date.pm:319 +msgid "days" +msgstr "dnů" + +#: html/Search/Listing.html:75 +msgid "delete" +msgstr "smazat" + +#: lib/RT/Queue_Overlay.pm:63 +msgid "deleted" +msgstr "smazán" + +#: html/Search/Elements/PickRestriction:68 +msgid "does not match" +msgstr "neodpovÃdá" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:35 +msgid "doesn't contain" +msgstr "neobsahuje" + +#: html/Elements/SelectEqualityOperator:38 +msgid "equal to" +msgstr "je rovno" + +#: html/Elements/SelectAttachmentField:28 +msgid "filename" +msgstr "název souboru" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "greater than" +msgstr "vÄ›tšà než" + +#: lib/RT/Group_Overlay.pm:194 +#. ($self->Name) +msgid "group '%1'" +msgstr "skupina '%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "hodin" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "Identifikátor" + +#: html/Elements/SelectBoolean:32 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "is" +msgstr "je" + +#: html/Elements/SelectBoolean:36 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:37 html/Search/Elements/PickRestriction:48 html/Search/Elements/PickRestriction:77 html/Search/Elements/PickRestriction:89 +msgid "isn't" +msgstr "nenÃ" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "less than" +msgstr "menšà než" + +#: html/Search/Elements/PickRestriction:67 +msgid "matches" +msgstr "odpovÃdá" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "min" + +#: html/Ticket/Update.html:66 +msgid "minutes" +msgstr "minut" + +#: bin/rt-commit-handler:765 +msgid "modifications\\n\\n" +msgstr "úpravy\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "mÄ›sÃců" + +#: lib/RT/Queue_Overlay.pm:58 +msgid "new" +msgstr "nový" + +#: html/Admin/Elements/EditScrips:43 +msgid "no value" +msgstr "znehodnotit" + +#: html/Ticket/Elements/EditWatchers:28 +msgid "none" +msgstr "žádný" + +#: html/Elements/SelectEqualityOperator:38 +msgid "not equal to" +msgstr "nenà rovno" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "open" +msgstr "otevÅ™ený" + +#: lib/RT/Group_Overlay.pm:199 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "vlastnà skupina '%1' pro uživatele '%2'" + +#: lib/RT/Group_Overlay.pm:207 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "fronta %1 %2" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "rejected" +msgstr "zamÃtnutý" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "resolved" +msgstr "vyÅ™eÅ¡ený" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "sek" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "stalled" +msgstr "odložený" + +#: lib/RT/Group_Overlay.pm:202 +#. ($self->Type) +msgid "system %1" +msgstr "systém %1" + +#: lib/RT/Group_Overlay.pm:213 +#. ($self->Type) +msgid "system group '%1'" +msgstr "systémová skupina '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:42 +msgid "the calling component did not specify why" +msgstr "volajÃcà komponenta neudala důvod" + +#: lib/RT/Group_Overlay.pm:210 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "požadavek #%1 %2" + +#: lib/RT/Group_Overlay.pm:216 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "nepopsaná skupina %1" + +#: NOT FOUND IN SOURCE +msgid "undescripbed group %1" +msgstr "nepopsaná skupina %1" + +#: lib/RT/Group_Overlay.pm:191 +#. ($user->Object->Name) +msgid "user %1" +msgstr "uživatel %1" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "týdnů" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "se vzorem %1" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "roků" + diff --git a/rt/lib/RT/I18N/de.po b/rt/lib/RT/I18N/de.po new file mode 100644 index 000000000..3595aad47 --- /dev/null +++ b/rt/lib/RT/I18N/de.po @@ -0,0 +1,4500 @@ +# German localization catalog for Request Tracker (RT) +# FIRST AUTHOR: Florian Bischof <flo@fxb.de>, May 2002 +# +msgid "" +msgstr "" +"Project-Id-Version: RT 2.1.54\n" +"POT-Creation-Date: 2002-06-22 06:06+0200\n" +"PO-Revision-Date: 2003-02-20 04:47+0200\n" +"Last-Translator: Florian Bischof <flo@fxb.de>\n" +"Language-Team: RT German <rt@fxb.de>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 +msgid "#" +msgstr "#" + +#: html/Admin/Queues/Scrip.html:55 +#. ($QueueObj->id) +msgid "#%1" +msgstr "" + +#: html/Approvals/Elements/ShowDependency:50 html/Ticket/Display.html:26 html/Ticket/Display.html:30 +#. ($Ticket->Id, $Ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "#%1: %2" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "%1 %2" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($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 %3. %2 %7, %4:%5:%6" + +#: lib/RT/Ticket_Overlay.pm:3438 lib/RT/Transaction_Overlay.pm:559 lib/RT/Transaction_Overlay.pm:601 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 added" +msgstr "%1 %2 hinzugefügt" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "vor %1 %2" + +#: lib/RT/Ticket_Overlay.pm:3444 lib/RT/Transaction_Overlay.pm:566 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1 %2 geändert in %3" + +#: lib/RT/Ticket_Overlay.pm:3441 lib/RT/Transaction_Overlay.pm:562 lib/RT/Transaction_Overlay.pm:607 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 deleted" +msgstr "%1 %2 gelöscht" + +#: html/Admin/Elements/EditScrips:44 html/Admin/Elements/ListGlobalScrips:28 +#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) +msgid "%1 %2 with template %3" +msgstr "%1 %2 mit der Vorlage %3" + +#: NOT FOUND IN SOURCE +msgid "%1 (%2) %3 this ticket\\n" +msgstr "%1 (%2) %3 dieses Ticket\\n" + +#: html/Search/Listing.html:57 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "%1 - %2 angezeigt" + +#: bin/rt-crontool:169 bin/rt-crontool:176 bin/rt-crontool:182 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - An argument to pass to %2" +msgstr "%1 - ein Argument zur Übergabe an %2" + +#: bin/rt-crontool:185 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "" + +#msgstr "%1 - Schreibe Statusupdates nach STDOUT" +#: bin/rt-crontool:179 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "%1 - Gebe an, welches Action-Modul benutzt werden soll" + +#: bin/rt-crontool:173 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "%1 - Gebe an, welches Condition-Modul benutzt werden soll" + +#: bin/rt-crontool:166 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "%1 - Gebe an, welches Search-Modul benutzt werden soll" + +#: lib/RT/ScripAction_Overlay.pm:122 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "ScripAction %1 geladen" + +#: lib/RT/Ticket_Overlay.pm:3471 +#. ($args{'Value'}, $cf->Name) +msgid "%1 added as a value for %2" +msgstr "%1 als Wert für %2 hinzugefügt" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on (from %2) %3" +msgstr "" + +#: lib/RT/Link_Overlay.pm:117 lib/RT/Link_Overlay.pm:124 +#. ($args{'Base'}) +#. ($args{'Target'}) +msgid "%1 appears to be a local object, but can't be found in the database" +msgstr "%1 konnte nicht in der Datenbank gefunden werden obwohl es ein lokales Objekt zu sein scheint" + +#: html/Ticket/Elements/ShowDates:52 lib/RT/Transaction_Overlay.pm:483 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "am %1 von %2" + +#: lib/RT/Transaction_Overlay.pm:537 lib/RT/Transaction_Overlay.pm:626 lib/RT/Transaction_Overlay.pm:635 lib/RT/Transaction_Overlay.pm:638 +#. ($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 von %2 in %3 geändert" + +#: lib/RT/Interface/Web.pm:857 +msgid "%1 could not be set to %2." +msgstr "%1 konnte nicht auf %2 gesetzt werden." + +#: NOT FOUND IN SOURCE +msgid "%1 couldn't init a transaction (%2)\\n" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2813 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1 konnte den Status nicht auf erledigt setzen. Die RT-Datenbank könnte inkonsistent sein." + +#: html/Elements/MyTickets:25 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "%1 mir zugewiesene Anfragen mit höchster Priorität..." + +#: html/Elements/MyRequests:25 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "Die %1 von mir ausgelösten Anfragen mit höchster Priorität" + +#: bin/rt-crontool:161 +#. ($0) +msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." +msgstr "%1 ist ein Werkzeug um Anfragen über externe Terminierungstools wie \"cron\" zu verarbeiten" + +#: lib/RT/Queue_Overlay.pm:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1 ist kein %2 dieses Stapels mehr." + +#: lib/RT/Ticket_Overlay.pm:1570 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 ist nicht mehr %2 dieser Anfrage." + +#: lib/RT/Ticket_Overlay.pm:3527 +#. ($args{'Value'}, $cf->Name) +msgid "%1 is no longer a value for custom field %2" +msgstr "%1 ist kein Wert des benutzerdefinierten Feldes %2 mehr" + +#: NOT FOUND IN SOURCE +msgid "%1 isn't a valid Queue id." +msgstr "%1 ist keine gültige Stapel-Id." + +#: html/Ticket/Elements/ShowBasics:36 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 Min" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "" + +#: html/User/Elements/DelegateRights:76 +#. (loc($ObjectType =~ /^RT::(.*)$/)) +msgid "%1 rights" +msgstr "%1 Rechte" + +#: NOT FOUND IN SOURCE +msgid "%1 succeeded\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for $MessageId" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for %2" +msgstr "" + +#: lib/RT/Action/ResolveMembers.pm:42 +#. (ref $self) +msgid "%1 will resolve all members of a resolved group ticket." +msgstr "%1 wird alle Mitglieder eines erledigten Gruppentickets erledigen." + +#: NOT FOUND IN SOURCE +msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:435 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1: kein Anhang angegeben" + +#: html/Ticket/Elements/ShowTransaction:102 +#. ($size) +msgid "%1b" +msgstr "%1b" + +#: html/Ticket/Elements/ShowTransaction:99 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "%1k" + +#: lib/RT/Ticket_Overlay.pm:1140 +#. ($args{'Status'}) +msgid "'%1' is an invalid value for status" +msgstr "'%1' ist ein ungültiger Wert für Status" + +#: NOT FOUND IN SOURCE +msgid "'%1' not a recognized action. " +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "(Check box to delete scrip)" +msgstr "(Markieren um Scrip zu löschen)" + +#: html/Admin/Elements/EditQueueWatchers:29 html/Admin/Elements/EditScrips:35 html/Admin/Elements/EditTemplates:36 html/Admin/Groups/Members.html:52 html/Ticket/Elements/EditLinks:33 html/Ticket/Elements/EditPeople:46 html/User/Groups/Members.html:55 +msgid "(Check box to delete)" +msgstr "(Markieren um zu löschen)" + +#: html/Ticket/Create.html:178 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(Gib Anfragenummern oder URLs getrennt durch Leerzeichen ein)" + +#: html/Admin/Queues/Modify.html:54 html/Admin/Queues/Modify.html:60 +#. ($RT::CorrespondAddress) +#. ($RT::CommentAddress) +msgid "(If left blank, will default to %1" +msgstr "(Bei Freilassen %1" + +#: html/Admin/Elements/EditCustomFields:33 html/Admin/Elements/ListGlobalCustomFields:32 +msgid "(No custom fields)" +msgstr "(Keine benutzerdefinierten Felder)" + +#: html/Admin/Groups/Members.html:50 html/User/Groups/Members.html:53 +msgid "(No members)" +msgstr "(Keine Mitglieder)" + +#: html/Admin/Elements/EditScrips:32 html/Admin/Elements/ListGlobalScrips:32 +msgid "(No scrips)" +msgstr "(Keine Scrips)" + +#: html/Admin/Elements/EditTemplates:31 +msgid "(No templates)" +msgstr "(Keine Vorlagen)" + +#: html/Ticket/Update.html:85 +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 "(Schickt eine Blindkopie dieser Aktualisierung an eine durch Komma getrennte Liste von E-Mail-Adressen. Ändert <b>nicht</b> wer künftig Aktualisierungen geschickt bekommt.)" + +#: 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 "" + +#: html/Ticket/Create.html:79 +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 "(Schickt eine Kopie dieser Aktualisierung an eine durch Komma getrennte Liste von administrativen E-Mail-Adressen. Diese <b>werden</b> künftig Aktualisierungen erhalten.)" + +#: html/Ticket/Update.html:81 +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 "(Schickt eine Kopie dieser Aktualisierung an eine durch Komma getrennte Liste von E-Mail-Adressen. Ändert <b>nicht</b> wer künftig Aktualisierungen geschickt bekommt.)" + +#: 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 "" + +#: html/Ticket/Create.html:69 +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 "(Schickt eine Kopie dieser Aktualisierung an eine durch Komma getrennte Liste von E-Mail-Adressen. Diese <b>werden</b> künftig Aktualisierungen erhalten.)" + +#: html/Admin/Groups/index.html:33 html/User/Groups/index.html:33 +msgid "(empty)" +msgstr "(leer)" + +#: html/Admin/Users/index.html:39 +msgid "(no name listed)" +msgstr "" + +#: html/Elements/MyRequests:43 html/Elements/MyTickets:45 +msgid "(no subject)" +msgstr "(kein Betreff)" + +#: html/Admin/Elements/SelectRights:48 html/Elements/SelectCustomFieldValue:30 html/Ticket/Elements/EditCustomField:59 html/Ticket/Elements/ShowCustomFields:36 lib/RT/Transaction_Overlay.pm:536 +msgid "(no value)" +msgstr "(keine Angabe)" + +#: html/Ticket/Elements/EditLinks:116 +msgid "(only one ticket)" +msgstr "(nur eine Anfrage)" + +#: html/Elements/MyRequests:52 html/Elements/MyTickets:55 +msgid "(pending approval)" +msgstr "(wartet auf Freigabe)" + +#: html/Elements/MyRequests:54 html/Elements/MyTickets:57 +msgid "(pending other tickets)" +msgstr "(wartet auf andere Anfragen)" + +#: html/Admin/Users/Modify.html:50 +msgid "(required)" +msgstr "(notwendig)" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "(untitled)" +msgstr "(unbenannt)" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I own..." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I requested..." +msgstr "" + +#: html/Ticket/Elements/ShowBasics:32 +msgid "<% $Ticket->Status%>" +msgstr "" + +#: html/Elements/SelectTicketTypes:27 +msgid "<% $_ %>" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:26 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"Neue Anfrage in\"> %1" + +#: etc/initialdata:203 +msgid "A blank template" +msgstr "Eine leere Vorlage" + +#: lib/RT/ACE_Overlay.pm:157 lib/RT/Principal_Overlay.pm:181 +msgid "ACE not found" +msgstr "ACE nicht gefunden" + +#: lib/RT/ACE_Overlay.pm:831 +msgid "ACEs can only be created and deleted." +msgstr "ACEs können nur erstellt und gelöscht werden." + +#: bin/rt-commit-handler:755 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "Breche ab um ungewünschte Veränderungen an der Anfrage zu verhindern.\\n" + +#: html/User/Elements/Tabs:32 +msgid "About me" +msgstr "Über mich" + +#: html/Admin/Users/Modify.html:80 +msgid "Access control" +msgstr "Zugriffskontrolle" + +#: html/Admin/Elements/EditScrip:57 +msgid "Action" +msgstr "Aktion" + +#: lib/RT/Scrip_Overlay.pm:147 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "Aktion %1 nicht gefunden" + +#: bin/rt-crontool:123 +msgid "Action committed." +msgstr "Aktion durchgeführt." + +#: bin/rt-crontool:119 +msgid "Action prepared..." +msgstr "Aktion vorbereitet..." + +#: html/Search/Bulk.html:92 +msgid "Add AdminCc" +msgstr "AdminCC hinzufügen" + +#: html/Search/Bulk.html:90 +msgid "Add Cc" +msgstr "CC hinzufügen" + +#: html/Ticket/Create.html:114 html/Ticket/Update.html:100 +msgid "Add More Files" +msgstr "Mehr Dateien anhängen" +msgstr "Weitere Dateien anhängen" + +#: html/Search/Bulk.html:88 +msgid "Add Requestor" +msgstr "Klient hinzufügen" + +#: NOT FOUND IN SOURCE +msgid "Add a new a global scrip" +msgstr "Erstelle ein neues globales Scrip" + +#: NOT FOUND IN SOURCE +msgid "Add a scrip to this queue" +msgstr "Erstelle ein Scrip für diesen Stapel" + +#: html/Admin/Global/Scrip.html:55 +msgid "Add a scrip which will apply to all queues" +msgstr "Scrip erstellen, das auf alle Stapel angewendet wird" + +#: html/Search/Bulk.html:118 +msgid "Add comments or replies to selected tickets" +msgstr "Füge den ausgewählten Anfragen Kommentare oder Antworten hinzu" + +#: html/Admin/Groups/Members.html:42 html/User/Groups/Members.html:39 +msgid "Add members" +msgstr "Mitglieder hinzufügen" + +#: html/Admin/Queues/People.html:66 html/Ticket/Elements/AddWatchers:28 +msgid "Add new watchers" +msgstr "Neue Beobachter hinzufügen" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "Habe einen Hauptverantwortlichen als %1 für diesen Stapel hinzugefügt" + +#: lib/RT/Ticket_Overlay.pm:1454 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "Habe einen Hauptverantwortlichen als %1 für diese Anfrage hinzugefügt" + +#: html/Admin/Elements/ModifyUser:76 html/Admin/Users/Modify.html:122 html/User/Prefs.html:88 +msgid "Address1" +msgstr "Adresse 1" + +#: html/Admin/Elements/ModifyUser:78 html/Admin/Users/Modify.html:127 html/User/Prefs.html:90 +msgid "Address2" +msgstr "Adresse 2" + +#: html/Ticket/Create.html:74 +msgid "Admin Cc" +msgstr "Admin CC" + +#: etc/initialdata:274 +msgid "Admin Comment" +msgstr "Admin Kommentar" + +#: etc/initialdata:256 +msgid "Admin Correspondence" +msgstr "Admin Korrespondenz" + +#: html/Admin/Queues/index.html:25 html/Admin/Queues/index.html:28 +msgid "Admin queues" +msgstr "Admin Stapel" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "" + +#: html/Admin/Global/index.html:26 html/Admin/Global/index.html:28 +msgid "Admin/Global configuration" +msgstr "Admin/Globale Einstellungen" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "" + +#: html/Admin/Queues/Modify.html:25 html/Admin/Queues/Modify.html:29 +msgid "Admin/Queue/Basics" +msgstr "Admin/Stapel/Basics" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "" + +#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:39 html/Ticket/Update.html:50 lib/RT/ACE_Overlay.pm:89 +msgid "AdminCc" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "AdminCustomFields" +msgstr "" + +#: lib/RT/Group_Overlay.pm:146 +msgid "AdminGroup" +msgstr "" + +#: lib/RT/Group_Overlay.pm:148 +msgid "AdminGroupMembership" +msgstr "" + +#: lib/RT/System.pm:59 +msgid "AdminOwnPersonalGroups" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "AdminQueue" +msgstr "" + +#: lib/RT/System.pm:60 +msgid "AdminUsers" +msgstr "" + +#: html/Admin/Queues/People.html:48 html/Ticket/Elements/EditPeople:54 +msgid "Administrative Cc" +msgstr "Administrative CC" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "Erweiterte Suche" + +#: html/Elements/SelectDateRelation:36 +msgid "After" +msgstr "Nach dem" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "Alter" + +#: html/Admin/Elements/EditCustomFields:96 +msgid "All Custom Fields" +msgstr "Alle benutzerdefinierten Felder" + +#: html/Admin/Queues/index.html:53 +msgid "All Queues" +msgstr "Alle Stapel" + +#: NOT FOUND IN SOURCE +msgid "Always sends a message to the requestors independent of message sender" +msgstr "" + +#: html/Elements/Tabs:58 +msgid "Approval" +msgstr "Freigabe" + +#: html/Approvals/Display.html:46 html/Approvals/Elements/Approve:27 html/Approvals/Elements/ShowDependency:42 html/Approvals/index.html:65 +#. ($Ticket->Id, $Ticket->Subject) +#. ($ticket->id, $msg) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Approval #%1: %2" +msgstr "Freigabe #%1: %2" + +#: html/Approvals/index.html:54 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "Freigabe #%1: Notiz wurde aufgrund eines Systemfehlers nicht vermerkt" + +#: html/Approvals/index.html:52 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "Freigabe #%1: Notiz vermerkt" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "" + +#: html/Approvals/Elements/Approve:45 +msgid "Approve" +msgstr "Freigeben" + +#: etc/initialdata:431 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "Notizen des Freigebenden: %1" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "Apr" + +#: html/Elements/SelectSortOrder:35 +msgid "Ascending" +msgstr "aufsteigend" + +#: html/Search/Bulk.html:127 html/SelfService/Update.html:36 html/Ticket/ModifyAll.html:83 html/Ticket/Update.html:100 +msgid "Attach" +msgstr "Anhängen" + +#: html/SelfService/Create.html:67 html/Ticket/Create.html:110 +msgid "Attach file" +msgstr "Datei anhängen" + +#: html/Ticket/Create.html:98 html/Ticket/Update.html:89 +msgid "Attached file" +msgstr "Dateianhang" + +#: html/SelfService/Attachment/dhandler:36 +msgid "Attachment '%1' could not be loaded" +msgstr "Anhang '%1' konnte nicht geladen werden" + +#: lib/RT/Transaction_Overlay.pm:443 +msgid "Attachment created" +msgstr "Anhang erstellt" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "Dateiname des Anhangs" + +#: html/Ticket/Elements/ShowAttachments:26 +msgid "Attachments" +msgstr "Anhänge" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "Aug" + +#: html/Admin/Elements/ModifyUser:66 +msgid "AuthSystem" +msgstr "AuthSystem" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "Autoreply" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "Autoreply an Klienten" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Bad PGP Signature: %1\\n" +msgstr "Fehlerhafte PGP-Signatur: %1\\n" + +#: html/SelfService/Attachment/dhandler:40 +msgid "Bad attachment id. Couldn't find attachment '%1'\\n" +msgstr "Fehlerhafte Anhangs-Id. Konnte Anhang '%1' nicht finden\\n" + +#: bin/rt-commit-handler:827 +#. ($val) +msgid "Bad data in %1" +msgstr "Fehlerhafte Daten in %1" + +#: html/SelfService/Attachment/dhandler:43 +#. ($trans, $AttachmentObj->TransactionId()) +msgid "Bad transaction number for attachment. %1 should be %2\\n" +msgstr "Fehlerhafte Transaktionsnummer für den Anhang. %1 solle %2 sein\\n" + +#: html/Admin/Elements/GroupTabs:39 html/Admin/Elements/QueueTabs:39 html/Admin/Elements/UserTabs:38 html/Ticket/Elements/Tabs:90 html/User/Elements/GroupTabs:38 +msgid "Basics" +msgstr "Grundlagen" + +#: html/Ticket/Update.html:83 +msgid "Bcc" +msgstr "BCC" + +#: html/Admin/Elements/EditScrip:88 html/Admin/Global/GroupRights.html:85 html/Admin/Global/Template.html:46 html/Admin/Global/UserRights.html:54 html/Admin/Groups/GroupRights.html:73 html/Admin/Groups/Members.html:81 html/Admin/Groups/Modify.html:56 html/Admin/Groups/UserRights.html:55 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:45 html/Admin/Queues/UserRights.html:54 html/User/Groups/Modify.html:56 +msgid "Be sure to save your changes" +msgstr "Denke daran, Deine Änderungen zu speichern" + +### wieder - Duzen??? +#: html/Elements/SelectDateRelation:34 lib/RT/CurrentUser.pm:322 +msgid "Before" +msgstr "vor dem" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "Leer" + +#: html/Search/Listing.html:79 +msgid "Bookmarkable URL for this search" +msgstr "Speicherbare URL für diese Suche" + +#: html/Ticket/Elements/ShowHistory:39 html/Ticket/Elements/ShowHistory:45 +msgid "Brief headers" +msgstr "Kurze Kopfzeilen" + +#: html/Search/Bulk.html:25 html/Search/Bulk.html:26 +msgid "Bulk ticket update" +msgstr "Massen Ticketupdate" + +#: lib/RT/User_Overlay.pm:1331 +msgid "Can not modify system users" +msgstr "Kann Systembenutzer nicht ändern" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Can this principal see this queue" +msgstr "Kann dieser Hauptverantwortliche diesen Stapel sehen" + +#: lib/RT/CustomField_Overlay.pm:144 +msgid "Can't add a custom field value without a name" +msgstr "Kann kein benutzerdefiniertes Feld ohne Namen hinzufügen" + +#: lib/RT/Link_Overlay.pm:132 +msgid "Can't link a ticket to itself" +msgstr "Kann kein Ticket auf sich selbst verweisen lassen!" + +#: lib/RT/Ticket_Overlay.pm:2787 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "Konnte das Ticket nicht in ein vereinigtes Ticket vereinigen. Diesen Fehler solltest du niemals sehen" + +#: lib/RT/Ticket_Overlay.pm:2605 lib/RT/Ticket_Overlay.pm:2674 +msgid "Can't specifiy both base and target" +msgstr "Du kannst nicht Basis und Ziel gleichzeitig angeben" + +#: html/autohandler:112 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "Kann Benutzer nicht anlegen: %1" + +#: etc/initialdata:50 html/Admin/Queues/People.html:44 html/SelfService/Create.html:51 html/SelfService/Display.html:50 html/Ticket/Create.html:64 html/Ticket/Elements/EditPeople:51 html/Ticket/Elements/ShowPeople:35 html/Ticket/Update.html:45 html/Ticket/Update.html:78 lib/RT/ACE_Overlay.pm:88 +msgid "Cc" +msgstr "CC" + +#: html/SelfService/Prefs.html:31 +msgid "Change password" +msgstr "Passwort ändern" + +#: html/Ticket/Create.html:101 html/Ticket/Update.html:92 +msgid "Check box to delete" +msgstr "Zum Löschen ankreuzen" + +#: html/Admin/Elements/SelectRights:31 +msgid "Check box to revoke right" +msgstr "Zum Entziehen einer Berechtigung ankreuzen" + +#: html/Ticket/Create.html:183 html/Ticket/Elements/EditLinks:131 html/Ticket/Elements/EditLinks:69 html/Ticket/Elements/ShowLinks:51 +msgid "Children" +msgstr "Kinder" + +#: html/Admin/Elements/ModifyUser:80 html/Admin/Users/Modify.html:132 html/User/Prefs.html:92 +msgid "City" +msgstr "Stadt" + +#: html/Ticket/Elements/ShowDates:47 +msgid "Closed" +msgstr "Geschlossen" + +#: html/SelfService/Elements/Tabs:60 +msgid "Closed requests" +msgstr "Geschossene Tickets" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:153 +msgid "Comment" +msgstr "Kommentar" + +#: html/Admin/Elements/ModifyQueue:45 html/Admin/Queues/Modify.html:58 +msgid "Comment Address" +msgstr "Kommentaradresse" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Comment on tickets" +msgstr "Kommentiere Tickets" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "CommentOnTicket" +msgstr "" + +#: html/Admin/Elements/ModifyUser:35 +msgid "Comments" +msgstr "Kommantare" + +#: html/Ticket/ModifyAll.html:70 html/Ticket/Update.html:70 +msgid "Comments (Not sent to requestors)" +msgstr "Kommentar (wird nicht an Klienten geschickt)" + +#: html/Search/Bulk.html:122 +msgid "Comments (not sent to requestors)" +msgstr "Kommentar (wird nicht an Klienten geschickt)" + +#: html/Elements/ViewUser:27 +#. ($name) +msgid "Comments about %1" +msgstr "Kommentar über %1" + +#: html/Admin/Users/Modify.html:185 html/Ticket/Elements/ShowRequestor:44 +msgid "Comments about this user" +msgstr "Kommentar zu diesen Benutzer" + +#: lib/RT/Transaction_Overlay.pm:545 +msgid "Comments added" +msgstr "Kommentar hinzugefügt" + +#: lib/RT/Action/Generic.pm:140 +msgid "Commit Stubbed" +msgstr "Übergabe abgehakt" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "" + +#: html/Admin/Elements/EditScrip:41 +msgid "Condition" +msgstr "Bedingung" + +#: bin/rt-crontool:109 +msgid "Condition matches..." +msgstr "Condition trifft zu..." + +#: lib/RT/Scrip_Overlay.pm:160 +msgid "Condition not found" +msgstr "Bedingung nicht gefunden" + +#: html/Elements/Tabs:52 +msgid "Configuration" +msgstr "Konfiguration" + +#: html/SelfService/Prefs.html:33 +msgid "Confirm" +msgstr "Bestätigen" + +#: html/Admin/Elements/ModifyUser:60 +msgid "ContactInfoSystem" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "" + +#: html/Admin/Elements/ModifyTemplate:44 html/Ticket/ModifyAll.html:87 +msgid "Content" +msgstr "Inhalt" + +#: etc/initialdata:266 +msgid "Correspondence" +msgstr "Korrespondenz" + +#: html/Admin/Elements/ModifyQueue:39 html/Admin/Queues/Modify.html:51 +msgid "Correspondence Address" +msgstr "Korrespondenzadresse" + +#: lib/RT/Transaction_Overlay.pm:541 +msgid "Correspondence added" +msgstr "Korrespondenz hinzugefügt" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3458 +msgid "Could not add new custom field value for ticket. " +msgstr "Konnte dem Ticket kein neues benutzerdefiniertes Feld hinzufügen. " + +#: lib/RT/Ticket_Overlay.pm:2963 lib/RT/Ticket_Overlay.pm:2971 lib/RT/Ticket_Overlay.pm:2987 +msgid "Could not change owner. " +msgstr "Konnte den Inhaber nicht ändern. " + +#: html/Admin/Elements/EditCustomField:68 html/Admin/Elements/EditCustomFields:166 +#. ($msg) +msgid "Could not create CustomField" +msgstr "Konnte benutzerdefiniertes Feld nicht anlegen" + +#: html/User/Groups/Modify.html:77 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 +msgid "Could not create group" +msgstr "Konnte Gruppe nicht anlegen" + +#: html/Admin/Global/Template.html:75 html/Admin/Queues/Template.html:72 +#. ($msg) +msgid "Could not create template: %1" +msgstr "Konnte Vorlage nicht anlegen: %1" + +#: lib/RT/Ticket_Overlay.pm:1073 lib/RT/Ticket_Overlay.pm:333 +msgid "Could not create ticket. Queue not set" +msgstr "Konnte Ticket nicht anlegen. Stapel nicht bestimmt" + +#: lib/RT/User_Overlay.pm:208 lib/RT/User_Overlay.pm:220 lib/RT/User_Overlay.pm:238 lib/RT/User_Overlay.pm:414 +msgid "Could not create user" +msgstr "Konnte Benutzer nicht anlegen" + +#: NOT FOUND IN SOURCE +msgid "Could not find a ticket with id %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Could not find group %1." +msgstr "" + +#: lib/RT/Queue_Overlay.pm:621 lib/RT/Ticket_Overlay.pm:1422 +msgid "Could not find or create that user" +msgstr "Konnte diesen Benutzer nicht finden oder anlegen" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1501 +msgid "Could not find that principal" +msgstr "Konnte diesen Hauptverantwortlichen nicht finden" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "" + +#: html/Admin/Groups/Members.html:88 html/User/Groups/Members.html:90 html/User/Groups/Modify.html:82 +msgid "Could not load group" +msgstr "Konnte die Gruppe nicht laden" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "Konnte den Hauptverantwortlichen nicht zu einen %1 dieses Stapels machen" + +#: lib/RT/Ticket_Overlay.pm:1443 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "Konnte diesen Hauptverantwortlichen nicht zu einem %1 dieses Tickets machen" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "Konnte diesen Hauptverantwortlichen nicht als %1 dieses Stapels entfernen" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "Konnte diesen Hauptverantwortlichen nicht als %1 dieses Tickets entfernen" + +#: lib/RT/Group_Overlay.pm:985 +msgid "Couldn't add member to group" +msgstr "Konnte Mitglied nicht der Gruppe hinzufügen" + +#: lib/RT/Ticket_Overlay.pm:3468 lib/RT/Ticket_Overlay.pm:3524 +#. ($Msg) +msgid "Couldn't create a transaction: %1" +msgstr "Konnte die Transaktion nicht anlegen: %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't figure out what to do from gpg's reply\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find group\\n" +msgstr "" + +#: lib/RT/Interface/Web.pm:866 +msgid "Couldn't find row" +msgstr "Konne Zeile nicht finden" + +#: lib/RT/Group_Overlay.pm:959 +msgid "Couldn't find that principal" +msgstr "Konnte diesen Hauptverantwortlichen nicht finden" + +#: lib/RT/CustomField_Overlay.pm:175 +msgid "Couldn't find that value" +msgstr "Konnte diesen Wert nicht finden" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find user\\n" +msgstr "" + +#: lib/RT/CurrentUser.pm:112 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "Konnte %1 nicht aus der Benutzerdatenbank laden.\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load RT config file '%1' %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load Scrips." +msgstr "" + +#: html/Admin/Groups/GroupRights.html:88 html/Admin/Groups/UserRights.html:75 +#. ($id) +msgid "Couldn't load group %1" +msgstr "Konnte Gruppe %1 nicht laden" + +#: lib/RT/Link_Overlay.pm:175 lib/RT/Link_Overlay.pm:184 lib/RT/Link_Overlay.pm:211 +msgid "Couldn't load link" +msgstr "Konnte den Verweis nicht laden" + +#: html/Admin/Elements/EditCustomFields:147 html/Admin/Queues/People.html:121 +#. ($id) +msgid "Couldn't load queue" +msgstr "Konnte den Stapel nicht laden" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:72 +#. ($id) +msgid "Couldn't load queue %1" +msgstr "Konnte den Stapel %1 nicht laden" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "" + +#: html/Admin/Users/Prefs.html:79 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "Konnte diesen Benutzer nicht laden (%1)" + +#: html/SelfService/Display.html:166 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "Konnte das Ticket '%1' nicht laden" + +#: html/Admin/Elements/ModifyUser:86 html/Admin/Users/Modify.html:149 html/User/Prefs.html:98 +msgid "Country" +msgstr "Land" + +#: html/Admin/Elements/CreateUserCalled:26 html/Ticket/Create.html:135 html/Ticket/Create.html:195 +msgid "Create" +msgstr "Erstellen" + +#: etc/initialdata:128 +msgid "Create Tickets" +msgstr "Erstelle Tickets" + +#: html/Admin/Elements/EditCustomField:58 +msgid "Create a CustomField" +msgstr "Erstelle ein benutzerdefiniertes Feld" + +#: html/Admin/Queues/CustomField.html:48 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "Erstelle ein benutzerdef. Feld für Stapel %1" + +#: html/Admin/Global/CustomField.html:48 +msgid "Create a CustomField which applies to all queues" +msgstr "Erstelle ein benutzerdef. Feld für alle Stapel" + +#: NOT FOUND IN SOURCE +msgid "Create a new Custom Field" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Create a new global scrip" +msgstr "" + +#: html/Admin/Groups/Modify.html:67 html/Admin/Groups/Modify.html:93 +msgid "Create a new group" +msgstr "Erstelle eine neue Gruppe" + +#: html/User/Groups/Modify.html:67 html/User/Groups/Modify.html:92 +msgid "Create a new personal group" +msgstr "Erstelle eine neue persönliche Gruppe" + +#: 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/SelfService/Create.html:30 html/Ticket/Create.html:25 html/Ticket/Create.html:28 html/Ticket/Create.html:36 +msgid "Create a new ticket" +msgstr "Erstelle ein neues Ticket" + +#: html/Admin/Users/Modify.html:214 html/Admin/Users/Modify.html:241 +msgid "Create a new user" +msgstr "Erstelle einen neuen Benutzer" + +#: html/Admin/Queues/Modify.html:103 +msgid "Create a queue" +msgstr "Erstelle einen Stapel" + +#: NOT FOUND IN SOURCE +msgid "Create a queue called" +msgstr "" + +#: html/SelfService/Create.html:25 html/SelfService/Create.html:27 +msgid "Create a request" +msgstr "Erstelle ein Ticket" + +#: html/Admin/Queues/Scrip.html:59 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "Erstelle ein Scrip für den Stapel %1" + +#: html/Admin/Global/Template.html:69 html/Admin/Queues/Template.html:65 +msgid "Create a template" +msgstr "Erstelle eine Vorlage" + +#: etc/initialdata:130 +msgid "Create new tickets based on this scrip's template" +msgstr "Erstelle neue Tickets basierend auf der Vorlage dieses Scrips" + +#: html/SelfService/Create.html:81 +msgid "Create ticket" +msgstr "Ticket erstellen" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Create tickets in this queue" +msgstr "Erstelle Tickets in diesem Stapel" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Create, delete and modify custom fields" +msgstr "Erstellen, löschen und modifizieren von benutzerdef. Felder" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "Create, delete and modify queues" +msgstr "Erstelle, lösche und modifiziere Stapel" + +#: NOT FOUND IN SOURCE +msgid "Create, delete and modify the members of any user's personal groups" +msgstr "" + +#: lib/RT/System.pm:59 +msgid "Create, delete and modify the members of personal groups" +msgstr "Erstellen, löschen und modifizieren von Mitgliedern persönlicher Gruppen" + +#: lib/RT/System.pm:60 +msgid "Create, delete and modify users" +msgstr "Erstellen, löschen und modifizieren von Benutzern" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "CreateTicket" +msgstr "" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1167 +msgid "Created" +msgstr "Angelegt" + +#: html/Admin/Elements/EditCustomField:71 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "Erstelle ein benutzerdefiniertes Feld %1" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "" + +#: html/Ticket/Elements/EditLinks:28 +msgid "Current Relationships" +msgstr "Momentane Beziehungen" + +#: html/Admin/Elements/EditScrips:30 +msgid "Current Scrips" +msgstr "Aktuelle Scrips" + +#: html/Admin/Groups/Members.html:39 html/User/Groups/Members.html:42 +msgid "Current members" +msgstr "Aktuelle Mitglieder" + +#: html/Admin/Elements/SelectRights:29 +msgid "Current rights" +msgstr "Aktuelle Rechte" + +#: html/Search/Listing.html:71 +msgid "Current search criteria" +msgstr "Aktuelle Suchkriterien" + +#: html/Admin/Queues/People.html:41 html/Ticket/Elements/EditPeople:45 +msgid "Current watchers" +msgstr "Aktuelle Beobachter" + +#: html/Admin/Global/CustomField.html:55 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "Benutzerdef. Feld #%1" + +#: html/Admin/Elements/QueueTabs:53 html/Admin/Elements/SystemTabs:40 html/Admin/Global/index.html:50 html/Ticket/Elements/ShowSummary:35 +msgid "Custom Fields" +msgstr "Benutzerdef. Felder" + +#: html/Admin/Elements/EditScrip:73 +msgid "Custom action cleanup code" +msgstr "Benutzerdefinierter Action-Cleanup-Code" + +#: html/Admin/Elements/EditScrip:65 +msgid "Custom action preparation code" +msgstr "Benutzerdefinierter Aktions-Vorbereitungs-Code" + +#: html/Admin/Elements/EditScrip:49 +msgid "Custom condition" +msgstr "Benutzerdefinierte Bedingung" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "Benutzerdefiniertes Feld %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "Benutzerdefiniertes Feld %1 hat einen Wert." + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "Benutzerdefiniertes Feld %1 hat keinen Wert." + +#: lib/RT/Ticket_Overlay.pm:3360 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "Benutzerdefiniertes Feld %1 nicht gefunden" + +#: html/Admin/Elements/EditCustomFields:197 +msgid "Custom field deleted" +msgstr "Benutzerdefiniertes Feld wurde gelöscht" + +#: lib/RT/Ticket_Overlay.pm:3510 +msgid "Custom field not found" +msgstr "Benutzerdefiniertes Feld nicht gefunden" + +#: lib/RT/CustomField_Overlay.pm:283 +#. ($args{'Content'}, $self->Name) +msgid "Custom field value %1 could not be found for custom field %2" +msgstr "Wert %1 des benutzerdefinierten Feldes %2 konnte nicht gefunden werden" + +#: NOT FOUND IN SOURCE +msgid "Custom field value changed from %1 to %2" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:185 +msgid "Custom field value could not be deleted" +msgstr "Wert des benutzerdefinierten Felds konnte nicht gelöscht werden" + +#: lib/RT/CustomField_Overlay.pm:289 +msgid "Custom field value could not be found" +msgstr "Wert des benutzerdefinierten Feldes konnte nicht gefunden werden" + +#: lib/RT/CustomField_Overlay.pm:183 lib/RT/CustomField_Overlay.pm:291 +msgid "Custom field value deleted" +msgstr "Wert des benutzerdefinierten Feldes gelöscht" + +#: lib/RT/Transaction_Overlay.pm:550 +msgid "CustomField" +msgstr "" + +#: html/Ticket/Create.html:161 html/Ticket/Elements/ShowSummary:53 html/Ticket/Elements/Tabs:93 html/Ticket/ModifyAll.html:44 +msgid "Dates" +msgstr "Datumsangaben" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "Dez" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "" + +#: etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "Standard Autoresponse-Vorlage" + +#: etc/initialdata:275 +msgid "Default admin comment template" +msgstr "Standard Admin-Kommentar-Vorlage" + +#: etc/initialdata:257 +msgid "Default admin correspondence template" +msgstr "Standard Admin-Korrespondenz-Vorlage" + +#: etc/initialdata:267 +msgid "Default correspondence template" +msgstr "Standard Korrespondenz-Vorlage" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "Standard Transaktions-Vorlage" + +#: lib/RT/Transaction_Overlay.pm:645 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "Standard: %1/%2 von \"%3\" in \"%4\" geändert." + +#: html/User/Delegation.html:25 html/User/Delegation.html:28 +msgid "Delegate rights" +msgstr "Rechte weitergeben" + +#: lib/RT/System.pm:63 +msgid "Delegate specific rights which have been granted to you." +msgstr "Dir gewährte Rechte weitergeben" + +#: lib/RT/System.pm:63 +msgid "DelegateRights" +msgstr "" + +#: html/User/Elements/Tabs:38 +msgid "Delegation" +msgstr "Rechteweitergabe" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "Delete tickets" +msgstr "Lösche Tickets" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "DeleteTicket" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "Löschen dieses Objektes kann die referenzielle Integrität gefährden" + +#: lib/RT/Queue_Overlay.pm:292 +msgid "Deleting this object would break referential integrity" +msgstr "Löschen dieses Objektes würde die referenzielle Integrität gefährden" + +#: lib/RT/User_Overlay.pm:430 +msgid "Deleting this object would violate referential integrity" +msgstr "Löschen dieses Objektes würde die referenzielle Integrität verletzen" + +#: html/Approvals/Elements/Approve:46 +msgid "Deny" +msgstr "Ablehnen" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/EditLinks:123 html/Ticket/Elements/EditLinks:47 html/Ticket/Elements/ShowDependencies:32 html/Ticket/Elements/ShowLinks:35 +msgid "Depended on by" +msgstr "Abhängig gemacht von" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:180 html/Ticket/Elements/EditLinks:119 html/Ticket/Elements/EditLinks:36 html/Ticket/Elements/ShowDependencies:25 html/Ticket/Elements/ShowLinks:27 +msgid "Depends on" +msgstr "Abhängig von" + +#: html/Elements/SelectSortOrder:35 +msgid "Descending" +msgstr "absteigend" + +#: html/SelfService/Create.html:75 html/Ticket/Create.html:119 +msgid "Describe the issue below" +msgstr "Beschreibe hier das Problem" + +#: html/Admin/Elements/AddCustomFieldValue:27 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyQueue:36 html/Admin/Elements/ModifyTemplate:36 html/Admin/Groups/Modify.html:49 html/Admin/Queues/Modify.html:48 html/Elements/SelectGroups:27 html/User/Groups/Modify.html:49 +msgid "Description" +msgstr "Beschreibung" + +#: html/SelfService/Elements/MyRequests:44 +msgid "Details" +msgstr "Details" + +#: html/Ticket/Elements/Tabs:85 +msgid "Display" +msgstr "Anzeigen" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Display Access Control List" +msgstr "Zeige Zugriffskontrollliste an" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Display Scrip templates for this queue" +msgstr "Zeige Scrip-Vorlagen für diesen Stapel" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Display Scrips for this queue" +msgstr "Zeige Scrips für diesen Stapel" + +#: html/Ticket/Elements/ShowHistory:35 +msgid "Display mode" +msgstr "Anzeigemodus" + +#: html/SelfService/Display.html:25 html/SelfService/Display.html:29 +#. ($Ticket->id) +msgid "Display ticket #%1" +msgstr "Zeige Ticket #%1 an" + +#: lib/RT/System.pm:54 +msgid "Do anything and everything" +msgstr "Mache irgend etwas und alles" + +#: html/Elements/Refresh:30 +msgid "Don't refresh this page." +msgstr "Seite nicht aktualisieren." + +#: html/Search/Elements/PickRestriction:114 +msgid "Don't show search results" +msgstr "Suchergebnisse nicht anzeigen" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "Download" +msgstr "Download" + +#: html/Elements/SelectDateType:32 html/Ticket/Create.html:167 html/Ticket/Elements/EditDates:45 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1171 +msgid "Due" +msgstr "Fällig" + +#: NOT FOUND IN SOURCE +msgid "Due date '%1' could not be parsed" +msgstr "" + +#: bin/rt-commit-handler:754 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "FEHLER: Konnte Ticket '%1' nicht laden: %2.\\n" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "" + +#: html/Admin/Queues/CustomFields.html:45 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "Bearbeite benutzerdefinierte Felder für %1" + +#: html/Ticket/ModifyLinks.html:36 +msgid "Edit Relationships" +msgstr "Bearbeite Beziehungen" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "Bearbeite Vorlagen für Stapel %1" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "" + +#: html/Admin/Global/index.html:46 +msgid "Edit system templates" +msgstr "Bearbeite Systemvorlagen" + +#: NOT FOUND IN SOURCE +msgid "Edit templates for %1" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:25 html/Admin/Queues/Modify.html:117 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "Bearbeite Konfiguration für den Stapel %1" + +#: html/Admin/Elements/ModifyUser:25 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "Bearbeite Konfiguration für Benutzer %1" + +#: html/Admin/Elements/EditCustomField:74 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "Bearbeite benutzerdefiniertes Feld %1" + +#: html/Admin/Groups/Members.html:32 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "Bearbeite Mitgliedschaft für die Gruppe %1" + +#: html/User/Groups/Members.html:129 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "Bearbeite Mitgliedschaft der persönlichen Gruppe %1" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2615 lib/RT/Ticket_Overlay.pm:2683 +msgid "Either base or target must be specified" +msgstr "Es muß entweder eine Basis oder ein Ziel angegeben werden" + +#: html/Admin/Users/Modify.html:53 html/Admin/Users/Prefs.html:46 html/Elements/SelectUsers:27 html/Ticket/Elements/AddWatchers:56 html/User/Prefs.html:42 +msgid "Email" +msgstr "E-Mail" + +#: lib/RT/User_Overlay.pm:188 +msgid "Email address in use" +msgstr "E-Mail-Adresse bereits in Gebrauch" + +#: html/Admin/Elements/ModifyUser:42 +msgid "EmailAddress" +msgstr "E-Mail-Adresse" + +### muss das überhaupt übersetzt werden??? +#: html/Admin/Elements/ModifyUser:54 +msgid "EmailEncoding" +msgstr "E-Mail-Kodierung" + +### muss das überhaupt übersetzt werden??? +#: html/Admin/Elements/EditCustomField:36 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "Aktiviert (Abwählen deaktiviert dieses benutzerdef. Feld)" + +#: html/Admin/Groups/Modify.html:53 html/User/Groups/Modify.html:53 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "Aktiviert (Abwählen deaktiviert diese Gruppe)" + +#: html/Admin/Queues/Modify.html:84 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "Aktiviert (Abwählen deaktiviert diesen Stapel)" + +#: html/Admin/Elements/EditCustomFields:99 +msgid "Enabled Custom Fields" +msgstr "Aktivierte benutzerdefinierte Felder" + +#: html/Admin/Queues/index.html:56 +msgid "Enabled Queues" +msgstr "Aktivierte Stapel" + +#: html/Admin/Elements/EditCustomField:90 html/Admin/Groups/Modify.html:117 html/Admin/Queues/Modify.html:138 html/Admin/Users/Modify.html:283 html/User/Groups/Modify.html:117 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "Status %1 aktiviert" + +#: lib/RT/CustomField_Overlay.pm:361 +msgid "Enter multiple values" +msgstr "Mehrere Werte eingeben" + +#: lib/RT/CustomField_Overlay.pm:358 +msgid "Enter one value" +msgstr "Einen Wert eingeben" + +#: html/Ticket/Elements/EditLinks:112 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "Ticketnummern oder URIs getrennt durch Leerzeichen eingeben." + +#: html/Elements/Login:29 html/SelfService/Error.html:25 html/SelfService/Error.html:26 +msgid "Error" +msgstr "Fehler" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "Fehler in den Parameter für Queue-AddWatcher" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "Fehler in den Paramter für Queue->DelWatcher" + +#: lib/RT/Ticket_Overlay.pm:1356 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "Fehler in den Parameter für Ticket->AddWatcher" + +#: lib/RT/Ticket_Overlay.pm:1532 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "Fehler in den Parameter für Ticket->DelWatcher" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "Everyone" + +#: bin/rt-crontool:194 +msgid "Example:" +msgstr "Beispiel:" + +#: html/Admin/Elements/ModifyUser:64 +msgid "ExternalAuthId" +msgstr "ExternalAuthId" + +#: html/Admin/Elements/ModifyUser:58 +msgid "ExternalContactInfoId" +msgstr "ExternalContactInfoId" + +#: html/Admin/Users/Modify.html:73 +msgid "Extra info" +msgstr "Zusatzinformationen" + +#: lib/RT/User_Overlay.pm:302 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "Konnte die Pseudogruppe 'Privileged' nicht finden." + +#: lib/RT/User_Overlay.pm:309 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "Failed to find 'Unprivileged' users pseudogroup" + +#: bin/rt-crontool:138 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "Konnte Modul %1 nicht laden. (%2)" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "Feb" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:59 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "Endpriorität" + +#: lib/RT/Ticket_Overlay.pm:1162 +msgid "FinalPriority" +msgstr "" + +#: html/Admin/Queues/People.html:61 html/Ticket/Elements/EditPeople:34 +msgid "Find group whose" +msgstr "Finde Gruppe wessen" + +#: html/Elements/Quicksearch:25 +msgid "Find new/open tickets" +msgstr "Finde neue/offene Tickets" + +#: html/Admin/Queues/People.html:57 html/Admin/Users/index.html:46 html/Ticket/Elements/EditPeople:30 +msgid "Find people whose" +msgstr "Finde Leute deren" + +#: html/Search/Listing.html:108 +msgid "Find tickets" +msgstr "Anfragen suchen" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "" + +#: html/Ticket/Elements/Tabs:58 +msgid "First" +msgstr "Erste" + +#: html/Search/Listing.html:41 +msgid "First page" +msgstr "Erste Seite" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "Foo Bar Baz" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "Foo!" + +#: html/Search/Bulk.html:87 +msgid "Force change" +msgstr "erzwinge Änderung" + +#: html/Search/Listing.html:106 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "%quant(%1,ticket) gefunden" + +#: lib/RT/Interface/Web.pm:868 +msgid "Found Object" +msgstr "Objekt gefunden" + +#: html/Admin/Elements/ModifyUser:44 +msgid "FreeformContactInfo" +msgstr "FreeformContactInfo" + +#: lib/RT/CustomField_Overlay.pm:38 +msgid "FreeformMultiple" +msgstr "FreieMehrfachauswahl" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformSingle" +msgstr "FreieEinzelauswahl" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "Fr" + +#: html/Ticket/Elements/ShowHistory:41 html/Ticket/Elements/ShowHistory:51 +msgid "Full headers" +msgstr "Alle Kopfzeilen" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:595 +#. ($New->Name) +msgid "Given to %1" +msgstr "An %1 gegeben" + +#: html/Admin/Elements/Tabs:41 html/Admin/index.html:38 +msgid "Global" +msgstr "Global" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "" + +#: html/Admin/Elements/SelectTemplate:38 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "Globale Vorlage: %1" + +#: html/Admin/Elements/EditCustomFields:75 html/Admin/Queues/People.html:59 html/Admin/Queues/People.html:63 html/Admin/Queues/index.html:44 html/Admin/Users/index.html:49 html/Ticket/Elements/EditPeople:32 html/Ticket/Elements/EditPeople:36 html/index.html:41 +msgid "Go!" +msgstr "Los!" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "" + +#: html/Search/Listing.html:50 +msgid "Goto page" +msgstr "Gehe zu Seite" + +#: html/Elements/GotoTicket:25 html/SelfService/Elements/GotoTicket:25 +msgid "Goto ticket" +msgstr "Zeig' Ticket" + +#: html/Ticket/Elements/AddWatchers:46 html/User/Elements/DelegateRights:78 +msgid "Group" +msgstr "Gruppe" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "" + +#: html/Admin/Elements/GroupTabs:45 html/Admin/Elements/QueueTabs:57 html/Admin/Elements/SystemTabs:44 html/Admin/Global/index.html:55 +msgid "Group Rights" +msgstr "Gruppenrechte" + +#: lib/RT/Group_Overlay.pm:965 +msgid "Group already has member" +msgstr "Gruppe hat bereits Mitglieder" + +#: html/Admin/Groups/Modify.html:77 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "Gruppe konnte nicht erstellt werden: %1" + +#: lib/RT/Group_Overlay.pm:497 +msgid "Group created" +msgstr "Gruppe angelegt" + +#: lib/RT/Group_Overlay.pm:1133 +msgid "Group has no such member" +msgstr "Gruppe hat kein solches Mitglied" + +#: lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1429 lib/RT/Ticket_Overlay.pm:1507 +msgid "Group not found" +msgstr "Gruppe nicht gefunden" + +#: NOT FOUND IN SOURCE +msgid "Group not found.\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Group not specified.\\n" +msgstr "" + +#: html/Admin/Elements/SelectNewGroupMembers:35 html/Admin/Elements/Tabs:35 html/Admin/Groups/Members.html:64 html/Admin/Queues/People.html:83 html/Admin/index.html:32 html/User/Groups/Members.html:67 +msgid "Groups" +msgstr "Gruppen" + +#: lib/RT/Group_Overlay.pm:971 +msgid "Groups can't be members of their members" +msgstr "Gruppen können nicht Mitglied eines ihrer Mitglieder sein" + +#: lib/RT/Interface/CLI.pm:73 lib/RT/Interface/CLI.pm:73 +msgid "Hello!" +msgstr "Hallo!" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "Hallo %1" + +#: html/Ticket/Elements/ShowHistory:30 html/Ticket/Elements/Tabs:88 +msgid "History" +msgstr "Historie" + +#: html/Admin/Elements/ModifyUser:68 +msgid "HomePhone" +msgstr "TelefonZuhause" + +#: html/Elements/Tabs:46 +msgid "Homepage" +msgstr "Start" + +#: lib/RT/Base.pm:74 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "I have [quant,_1,concrete mixer]." +msgstr "" + +#: html/Ticket/Elements/ShowBasics:27 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "Nr." + +#: html/Admin/Users/Modify.html:44 html/User/Prefs.html:39 +msgid "Identity" +msgstr "Identität" + +#: etc/upgrade/2.1.71:86 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "Wenn eine Freigabe abgewiesen wird, weise das Original ab und lösche wartende Freigaben" + +#: bin/rt-crontool:190 +msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." +msgstr "Wenn dieses Werkzeug 'setgid' wäre könnte ein feindlicher lokaler Benutzer dadurch administrativen Zugriff auf RT erlangen." + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "If you've updated anything above, be sure to" +msgstr "Wenn du irgend etwas aktualisiert hast, denke daran hier zu klicken" + +#: lib/RT/Interface/Web.pm:860 +msgid "Illegal value for %1" +msgstr "Unerlaubter Wert für %1" + +#: lib/RT/Interface/Web.pm:863 +msgid "Immutable field" +msgstr "Unveränderbares Feld" + +#: html/Admin/Elements/EditCustomFields:74 +msgid "Include disabled custom fields in listing." +msgstr "Zeige auch deaktivierte benutzerdefinierte Felder an." + +#: html/Admin/Queues/index.html:43 +msgid "Include disabled queues in listing." +msgstr "Zeige auch deaktivierte Stapel an." + +#: html/Admin/Users/index.html:47 +msgid "Include disabled users in search." +msgstr "Zeige deaktivierte Benutzer auch in der Suche an." + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "Anfängliche Priorität" + +#: lib/RT/Ticket_Overlay.pm:1161 lib/RT/Ticket_Overlay.pm:1163 +msgid "InitialPriority" +msgstr "" + +#: lib/RT/ScripAction_Overlay.pm:105 +msgid "Input error" +msgstr "Eingabefehler" + +#: lib/RT/Ticket_Overlay.pm:3729 +msgid "Internal Error" +msgstr "Interner Fehler" + +#: lib/RT/Record.pm:143 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "Internet Fehler: %1" + +#: lib/RT/Group_Overlay.pm:644 +msgid "Invalid Group Type" +msgstr "Ungültige Gruppenart" + +#: lib/RT/Principal_Overlay.pm:128 +msgid "Invalid Right" +msgstr "Ungültiges Recht" + +#: lib/RT/Interface/Web.pm:865 +msgid "Invalid data" +msgstr "Ungültige Daten" + +#: lib/RT/Ticket_Overlay.pm:438 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "Ungültiger Inhaber. Zurücksetzung auf 'nobody'." + +#: lib/RT/Scrip_Overlay.pm:134 lib/RT/Template_Overlay.pm:251 +msgid "Invalid queue" +msgstr "Ungültiger Stapel" + +#: lib/RT/ACE_Overlay.pm:244 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:270 lib/RT/ACE_Overlay.pm:275 +msgid "Invalid right" +msgstr "Ungültiges Recht" + +#: lib/RT/Record.pm:118 +#. ($key) +msgid "Invalid value for %1" +msgstr "Ungültiger Wert für %1" + +#: lib/RT/Ticket_Overlay.pm:3367 +msgid "Invalid value for custom field" +msgstr "Ungültiger Wert für das benutzerdefinierte Feld" + +#: lib/RT/Ticket_Overlay.pm:345 +msgid "Invalid value for status" +msgstr "Ungültiger Statuswert" + +#: bin/rt-crontool:191 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "Es ist sehr wichtig dass nichtprivilegierte Benutzer dieses Werkzeug nicht aufrufen können." + +#: bin/rt-crontool:192 +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 "Es wird empfohlen einen nichtprivilegierten Unix-User mit korrekter Gruppenzugehörigkeit zum Zugriff auf RT anzulegen um dieses Werkzeug aufzurufen." + +#: bin/rt-crontool:163 +msgid "It takes several arguments:" +msgstr "Es verarbeitet verschiedene Parameter:" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "Jan" + +#: lib/RT/Group_Overlay.pm:149 +msgid "Join or leave this group" +msgstr "Betrete oder verlasse diese Gruppe" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "Jul" + +#: html/Ticket/Elements/Tabs:99 +msgid "Jumbo" +msgstr "Alles" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "Jun" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "" + +#: html/Admin/Elements/ModifyUser:52 +msgid "Lang" +msgstr "Sprache" + +#: html/Ticket/Elements/Tabs:73 +msgid "Last" +msgstr "letzter Kontakt" + +#: html/Ticket/Elements/EditDates:38 html/Ticket/Elements/ShowDates:39 +msgid "Last Contact" +msgstr "Letzter Kontakt" + +#: html/Elements/SelectDateType:29 +msgid "Last Contacted" +msgstr "Zuletzt Kontaktiert" + +#: html/Search/Elements/TicketHeader:41 +msgid "Last Notified" +msgstr "Letzte Änderung" + +#: html/Elements/SelectDateType:30 +msgid "Last Updated" +msgstr "Zuletzt Aktualisiert" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "" + +#: html/Admin/Users/Modify.html:83 +msgid "Let this user access RT" +msgstr "Diesen Benutzer RT-Zugriff gewähren" + +#: html/Admin/Users/Modify.html:87 +msgid "Let this user be granted rights" +msgstr "Diesen Benutzer mehr Rechte gewähren" + +#: NOT FOUND IN SOURCE +msgid "Limiting owner to %1 %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Limiting queue to %1 %2" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2697 +msgid "Link already exists" +msgstr "Beziehung existiert bereits" + +#: lib/RT/Ticket_Overlay.pm:2709 +msgid "Link could not be created" +msgstr "Beziehung konnte nicht erstellt werden" + +#: lib/RT/Ticket_Overlay.pm:2717 lib/RT/Ticket_Overlay.pm:2727 +#. ($TransString) +msgid "Link created (%1)" +msgstr "Beziehung erstellt (%1)" + +#: lib/RT/Ticket_Overlay.pm:2638 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "Beziehung gelöscht (%1)" + +#: lib/RT/Ticket_Overlay.pm:2644 +msgid "Link not found" +msgstr "Beziehung nicht gefunden" + +#: html/Ticket/ModifyLinks.html:25 html/Ticket/ModifyLinks.html:29 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "Verweise auf Ticket #%1" + +#: html/Ticket/Elements/Tabs:97 +msgid "Links" +msgstr "Beziehungen" + +#: html/Admin/Users/Modify.html:114 html/User/Prefs.html:85 +msgid "Location" +msgstr "Adresse" + +#: lib/RT.pm:158 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "Log-Verzeichnis %1 nicht gefunden oder kein Schreibzugriff.\\n RT kann nicht starten." + +#: html/Elements/Header:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "Angemeldet als %1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:25 html/Elements/Login:34 html/Elements/Login:45 +msgid "Login" +msgstr "Anmelden" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "Abmelden" + +#: html/Search/Bulk.html:86 +msgid "Make Owner" +msgstr "Mach Inhaber" + +#: html/Search/Bulk.html:102 +msgid "Make Status" +msgstr "Mach Status" + +#: html/Search/Bulk.html:109 +msgid "Make date Due" +msgstr "Mach Fälligkeitsdatum" + +#: html/Search/Bulk.html:110 +msgid "Make date Resolved" +msgstr "Mach Erledigungsdatum" + +#: html/Search/Bulk.html:107 +msgid "Make date Started" +msgstr "Mach Datum gestartet" + +#: html/Search/Bulk.html:106 +msgid "Make date Starts" +msgstr "Mach Startdatum" + +#: html/Search/Bulk.html:108 +msgid "Make date Told" +msgstr "Mach Eingangsdatum" + +#: html/Search/Bulk.html:99 +msgid "Make priority" +msgstr "Mach Priorität" + +#: html/Search/Bulk.html:100 +msgid "Make queue" +msgstr "Mach Stapel" + +#: html/Search/Bulk.html:98 +msgid "Make subject" +msgstr "Betreff setzen" + +#: html/Admin/index.html:33 +msgid "Manage groups and group membership" +msgstr "Gruppen und Gruppenmitglieder verwalten" + +#: html/Admin/index.html:39 +msgid "Manage properties and configuration which apply to all queues" +msgstr "Eigenschaften und Einstellungen für alle Stapel verwalten" + +#: html/Admin/index.html:36 +msgid "Manage queues and queue-specific properties" +msgstr "Stapel und stapelspezifische Einstellungen verwalten" + +#: html/Admin/index.html:30 +msgid "Manage users and passwords" +msgstr "Benutzer und Passworte verwalten" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "Mär" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "Mai." + +#: lib/RT/Group_Overlay.pm:982 +msgid "Member added" +msgstr "Mitglied hinzugefügt" + +#: lib/RT/Group_Overlay.pm:1140 +msgid "Member deleted" +msgstr "Mitglied gelöscht" + +#: lib/RT/Group_Overlay.pm:1144 +msgid "Member not deleted" +msgstr "Mitglied nicht gelöscht" + +#: html/Elements/SelectLinkType:26 +msgid "Member of" +msgstr "Mitglied von" + +#: html/Admin/Elements/GroupTabs:42 html/User/Elements/GroupTabs:42 +msgid "Members" +msgstr "Mitglieder" + +#: lib/RT/Ticket_Overlay.pm:2843 +msgid "Merge Successful" +msgstr "Zusammenführung erfolgreich" + +#: lib/RT/Ticket_Overlay.pm:2804 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "Zusammenführung fehlgeschlagen. Konnte EffectiveId nicht setztn" + +#: html/Ticket/Elements/EditLinks:115 +msgid "Merge into" +msgstr "Zusammenführen in" + +#: html/Ticket/Update.html:102 +msgid "Message" +msgstr "Nachricht" + +#: lib/RT/Interface/Web.pm:867 +msgid "Missing a primary key?: %1" +msgstr "%1: Fehlt ein Primärschlüssel?" + +#: html/Admin/Users/Modify.html:169 html/User/Prefs.html:54 +msgid "Mobile" +msgstr "Mobil" + +#: html/Admin/Elements/ModifyUser:72 +msgid "MobilePhone" +msgstr "Mobiltelefon" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify Access Control List" +msgstr "Ändere Zugriffskontrollliste" + +#: NOT FOUND IN SOURCE +msgid "Modify Custom Field %1" +msgstr "" + +#: html/Admin/Global/CustomFields.html:44 html/Admin/Global/index.html:51 +msgid "Modify Custom Fields which apply to all queues" +msgstr "Ändere benutzdefinierte Felder für diesen Stapel" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "Modify Scrip templates for this queue" +msgstr "Ändere Scrip-Vorlagen für diesen Stapel" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "Modify Scrips for this queue" +msgstr "Ändere Scrips für diesen Stapel" + +#: NOT FOUND IN SOURCE +msgid "Modify Template %1" +msgstr "" + +#: html/Admin/Queues/CustomField.html:45 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "Ändere ein benutzerdefiniertes Feld für Stapel %1" + +#: html/Admin/Global/CustomField.html:53 +msgid "Modify a CustomField which applies to all queues" +msgstr "Ändere ein globales benutzerdefiniertes Feld" + +#: html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "Ändere ein Scrip für den Stapel %1" + +#: html/Admin/Global/Scrip.html:48 +msgid "Modify a scrip which applies to all queues" +msgstr "Ändere ein globales benutzerdefiniertes Feld" + +#: html/Ticket/ModifyDates.html:25 html/Ticket/ModifyDates.html:29 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "Ändere Datumsangaben für #%1" + +#: html/Ticket/ModifyDates.html:35 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "Ändere Datumsangaben für Ticket #%1" + +#: html/Admin/Global/GroupRights.html:25 html/Admin/Global/GroupRights.html:28 html/Admin/Global/index.html:56 +msgid "Modify global group rights" +msgstr "Ändere globale Gruppenrechte" + +#: html/Admin/Global/GroupRights.html:33 +msgid "Modify global group rights." +msgstr "Ändere globale Gruppenrechte." + +#: NOT FOUND IN SOURCE +msgid "Modify global scrips" +msgstr "" + +#: html/Admin/Global/UserRights.html:25 html/Admin/Global/UserRights.html:28 html/Admin/Global/index.html:60 +msgid "Modify global user rights" +msgstr "Ändere globale Benutzerrechte" + +#: html/Admin/Global/UserRights.html:33 +msgid "Modify global user rights." +msgstr "Ändere globale Benutzerrechte." + +#: lib/RT/Group_Overlay.pm:146 +msgid "Modify group metadata or delete group" +msgstr "Ändere Gruppen-Metadaten oder lösche die Gruppe" + +#: html/Admin/Groups/GroupRights.html:25 html/Admin/Groups/GroupRights.html:29 html/Admin/Groups/GroupRights.html:35 +#. ($GroupObj->Name) +msgid "Modify group rights for group %1" +msgstr "Ändere die Gruppenrechte der Gruppe %1" + +#: html/Admin/Queues/GroupRights.html:25 html/Admin/Queues/GroupRights.html:29 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "Ändere Gruppenrechte für Stapel %1" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Modify membership roster for this group" +msgstr "Ändere Mitgliedsverzeichnis dieser Gruppe" + +#: lib/RT/System.pm:61 +msgid "Modify one's own RT account" +msgstr "Ändere jemandens eigenen RT-Zugang" + +#: html/Admin/Queues/People.html:25 html/Admin/Queues/People.html:29 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "Ändere Leute bezogen auf Stapel %1" + +#: html/Ticket/ModifyPeople.html:25 html/Ticket/ModifyPeople.html:29 html/Ticket/ModifyPeople.html:35 +#. ($Ticket->id) +#. ($Ticket->Id) +msgid "Modify people related to ticket #%1" +msgstr "Ändere Personen des Tickets #%1" + +#: html/Admin/Queues/Scrips.html:44 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "Ändere Scrips für den Stapel %1" + +#: html/Admin/Global/Scrips.html:44 html/Admin/Global/index.html:42 +msgid "Modify scrips which apply to all queues" +msgstr "Ändere auf alle Stapel angewandte Scrips" + +#: html/Admin/Global/Template.html:25 html/Admin/Global/Template.html:30 html/Admin/Global/Template.html:81 html/Admin/Queues/Template.html:78 +#. (loc($TemplateObj->Name())) +#. ($TemplateObj->id) +msgid "Modify template %1" +msgstr "Ändere Vorlage %1" + +#: html/Admin/Global/Templates.html:44 +msgid "Modify templates which apply to all queues" +msgstr "Ändere globale Templates" + +#: html/Admin/Groups/Modify.html:87 html/User/Groups/Modify.html:86 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "Ändere Gruppe %1" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Modify the queue watchers" +msgstr "Ändere die Stapelbeobachter" + +#: html/Admin/Users/Modify.html:236 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "Ändere Benutzer %1" + +#: html/Ticket/ModifyAll.html:37 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "Ändere Ticket #%1" + +#: html/Ticket/Modify.html:25 html/Ticket/Modify.html:28 html/Ticket/Modify.html:34 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "Ändere Ticket #%1" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Modify tickets" +msgstr "Ändere Tickets" + +#: html/Admin/Groups/UserRights.html:25 html/Admin/Groups/UserRights.html:29 html/Admin/Groups/UserRights.html:35 +#. ($GroupObj->Name) +msgid "Modify user rights for group %1" +msgstr "Ändere Benutzerrechte für die Gruppe %1" + +#: html/Admin/Queues/UserRights.html:25 html/Admin/Queues/UserRights.html:29 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "Ändere Benutzerrechte für Stapel %1" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyACL" +msgstr "" + +#: lib/RT/Group_Overlay.pm:149 +msgid "ModifyOwnMembership" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "ModifyQueueWatchers" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "ModifyScrips" +msgstr "" + +#: lib/RT/System.pm:61 +msgid "ModifySelf" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "ModifyTemplate" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "ModifyTicket" +msgstr "" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "Mo" + +#: html/Ticket/Elements/ShowRequestor:42 +#. ($name) +msgid "More about %1" +msgstr "Mehr über %1" + +#: html/Admin/Elements/EditCustomFields:61 +msgid "Move down" +msgstr "Runter verschieben" + +#: html/Admin/Elements/EditCustomFields:53 +msgid "Move up" +msgstr "Hoch verschieben" + +#: html/Admin/Elements/SelectSingleOrMultiple:27 +msgid "Multiple" +msgstr "Mehrere" + +#: lib/RT/User_Overlay.pm:179 +msgid "Must specify 'Name' attribute" +msgstr "Du musst eine Angabe bei 'Name' machen" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "" + +#: html/Approvals/index.html:25 html/Approvals/index.html:26 +msgid "My approvals" +msgstr "Meine Freigaben" + +#: html/Admin/Elements/AddCustomFieldValue:26 html/Admin/Elements/EditCustomField:32 html/Admin/Elements/ModifyTemplate:28 html/Admin/Elements/ModifyUser:30 html/Admin/Groups/Modify.html:44 html/Elements/SelectGroups:26 html/Elements/SelectUsers:28 html/User/Groups/Modify.html:44 +msgid "Name" +msgstr "Name" + +#: lib/RT/User_Overlay.pm:186 +msgid "Name in use" +msgstr "Benutzername ist bereits in Gebrauch" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "" + +#: html/Ticket/Elements/ShowDates:52 +msgid "Never" +msgstr "Niemals" + +#: html/Elements/Quicksearch:30 +msgid "New" +msgstr "Neu" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:93 html/User/Prefs.html:65 +msgid "New Password" +msgstr "Neues Passwort" + +#: etc/initialdata:311 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "Neue wartende Freigaben" + +#: html/Ticket/Elements/EditLinks:111 +msgid "New Relationships" +msgstr "Neue Beziehungen" + +#: html/Ticket/Elements/Tabs:36 +msgid "New Search" +msgstr "Neue Suche" + +#: html/Admin/Global/CustomField.html:41 html/Admin/Global/CustomFields.html:39 html/Admin/Queues/CustomField.html:52 html/Admin/Queues/CustomFields.html:40 +msgid "New custom field" +msgstr "Neues benutzerdef. Feld" + +#: html/Admin/Elements/GroupTabs:54 html/User/Elements/GroupTabs:52 +msgid "New group" +msgstr "Neue Gruppe" + +#: html/SelfService/Prefs.html:32 +msgid "New password" +msgstr "Neues Passwort" + +#: lib/RT/User_Overlay.pm:639 +msgid "New password notification sent" +msgstr "Neue Passworterinnerung wurde verschickt" + +#: html/Admin/Elements/QueueTabs:70 +msgid "New queue" +msgstr "Neuer Stapel" + +#: html/SelfService/Elements/Tabs:63 +msgid "New request" +msgstr "Neues Ticket" + +#: html/Admin/Elements/SelectRights:42 +msgid "New rights" +msgstr "Neue Rechte" + +#: html/Admin/Global/Scrip.html:40 html/Admin/Global/Scrips.html:39 html/Admin/Queues/Scrip.html:43 html/Admin/Queues/Scrips.html:53 +msgid "New scrip" +msgstr "Neues Scrip" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "" + +#: html/Admin/Global/Template.html:60 html/Admin/Global/Templates.html:39 html/Admin/Queues/Template.html:58 html/Admin/Queues/Templates.html:46 +msgid "New template" +msgstr "Neue Vorlage" + +#: lib/RT/Ticket_Overlay.pm:2771 +msgid "New ticket doesn't exist" +msgstr "Neues Ticket existiert nicht" + +#: html/Admin/Elements/UserTabs:52 +msgid "New user" +msgstr "Neuer Benutzer" + +#: html/Admin/Elements/CreateUserCalled:26 +msgid "New user called" +msgstr "Neues Benutzer aufgerufen" + +#: html/Admin/Queues/People.html:55 html/Ticket/Elements/EditPeople:29 +msgid "New watchers" +msgstr "Neue Beobachter" + +#: html/Admin/Users/Prefs.html:42 +msgid "New window setting" +msgstr "Speichere Fenstereinstellungen" + +#: html/Ticket/Elements/Tabs:69 +msgid "Next" +msgstr "Nächste" + +#: html/Search/Listing.html:48 +msgid "Next page" +msgstr "Nächste Seite" + +#: html/Admin/Elements/ModifyUser:50 +msgid "NickName" +msgstr "Spitzname" + +#: html/Admin/Users/Modify.html:63 html/User/Prefs.html:46 +msgid "Nickname" +msgstr "Spitzname" + +#: html/Admin/Elements/EditCustomField:73 html/Admin/Elements/EditCustomFields:105 +msgid "No CustomField" +msgstr "Kein benutzerdefiniertes Feld" + +#: html/Admin/Groups/GroupRights.html:84 html/Admin/Groups/UserRights.html:71 +msgid "No Group defined" +msgstr "Keine Gruppe definiert" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:68 +msgid "No Queue defined" +msgstr "Kein Stapel vorhanden" + +#: bin/rt-crontool:56 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "Kein RT-Benutzer gefunden. Bitte kontaktiere Deinen RT-Administrator.\\n" + +#: html/Admin/Global/Template.html:79 html/Admin/Queues/Template.html:76 +msgid "No Template" +msgstr "Keine Vorlage" + +#: bin/rt-commit-handler:764 +msgid "No Ticket specified. Aborting ticket " +msgstr "Kein Ticket angegeben. Bereche Ticket ab " + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "" + +#: html/Approvals/Elements/Approve:47 +msgid "No action" +msgstr "Keine Aktion" + +#: lib/RT/Interface/Web.pm:862 +msgid "No column specified" +msgstr "Keine Spalte angegeben" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "" + +#: html/Elements/ViewUser:36 html/Ticket/Elements/ShowRequestor:45 +msgid "No comment entered about this user" +msgstr "Kein Kommentar über diesen Benutzer angegeben" + +#: lib/RT/Ticket_Overlay.pm:2189 lib/RT/Ticket_Overlay.pm:2257 +msgid "No correspondence attached" +msgstr "Keine Korrespondenz aufgezeichnet" + +#: lib/RT/Action/Generic.pm:150 lib/RT/Condition/Generic.pm:176 lib/RT/Search/ActiveTicketsInQueue.pm:56 lib/RT/Search/Generic.pm:113 +#. (ref $self) +msgid "No description for %1" +msgstr "Keine Beschreibung für %1 vorhanden" + +#: lib/RT/Users_Overlay.pm:151 +msgid "No group specified" +msgstr "Keine Gruppe angegeben" + +#: lib/RT/User_Overlay.pm:857 +msgid "No password set" +msgstr "Kein Passwort gesetzt" + +#: lib/RT/Queue_Overlay.pm:259 +msgid "No permission to create queues" +msgstr "Kein Recht Stapel anzulegen" + +#: lib/RT/Ticket_Overlay.pm:341 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "Kein Recht um Tickets im Stapel '%1' anzulegen" + +#: lib/RT/User_Overlay.pm:151 +msgid "No permission to create users" +msgstr "Kein Recht Benutzer anzulegen" + +#: html/SelfService/Display.html:174 +msgid "No permission to display that ticket" +msgstr "Kein Recht dieses Ticket anzuzeigen" + +#: html/SelfService/Update.html:55 +msgid "No permission to view update ticket" +msgstr "Kein Recht dieses Ticket zu aktualisieren" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1488 +msgid "No principal specified" +msgstr "Kein Hauptverantwortlicher angegeben" + +#: html/Admin/Queues/People.html:154 html/Admin/Queues/People.html:164 +msgid "No principals selected." +msgstr "Keine Hauptverantwortliche ausgewählt." + +#: html/Admin/Queues/index.html:35 +msgid "No queues matching search criteria found." +msgstr "Keine den Suchkriterien entsprechenden Stapel gefunden" + +#: html/Admin/Elements/SelectRights:81 +msgid "No rights found" +msgstr "Keine Rechte gefunden" + +#: html/Admin/Elements/SelectRights:33 +msgid "No rights granted." +msgstr "Keine Rechte gewährt." + +#: html/Search/Bulk.html:149 +msgid "No search to operate on." +msgstr "Keine Suchliste zum bearbeiten." + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:480 lib/RT/Transaction_Overlay.pm:518 +msgid "No transaction type specified" +msgstr "Kein Transaktionstyp angegeben" + +#: html/Admin/Users/index.html:36 +msgid "No users matching search criteria found." +msgstr "Keine auf die Suchkriterien passende Benutzer gefunden" + +#: bin/rt-commit-handler:644 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "Kein gültiger RT-Benutzer gefunden. RT CVS-Handler weggefallen. Bitte kontaktiere Deinen RT-Administrator.\\n" + +#: lib/RT/Interface/Web.pm:859 +msgid "No value sent to _Set!\\n" +msgstr "Kein Wert an _Set geschickt!\\n" + +#: html/Search/Elements/TicketRow:37 +msgid "Nobody" +msgstr "Niemand" + +#: lib/RT/Interface/Web.pm:864 +msgid "Nonexistant field?" +msgstr "Nichtexistierendes Feld?" + +#: html/Elements/Login:99 +msgid "Not logged in" +msgstr "Nicht angemeldet" + +#: html/Elements/Header:59 html/SelfService/Elements/Header:58 +msgid "Not logged in." +msgstr "Nicht angemeldet." + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "Nicht angegeben" + +#: html/NoAuth/Reminder.html:27 +msgid "Not yet implemented." +msgstr "Noch nicht implementiert." + +#: html/Admin/Groups/Rights.html:25 +msgid "Not yet implemented...." +msgstr "Noch nicht implementiert..." + +#: html/Approvals/Elements/Approve:50 +msgid "Notes" +msgstr "Bemerkungen" + +#: lib/RT/User_Overlay.pm:642 +msgid "Notification could not be sent" +msgstr "Benachrichtigung konnte nicht verschickt werden" + +#: etc/initialdata:94 +msgid "Notify AdminCcs" +msgstr "Benachrichtige AdminCCs" + +#: etc/initialdata:90 +msgid "Notify AdminCcs as Comment" +msgstr "Benachrichtige AdminCCs als Kommentar" + +#: etc/initialdata:121 +msgid "Notify Other Recipients" +msgstr "Benachrichtige andere Empfänger" + +#: etc/initialdata:117 +msgid "Notify Other Recipients as Comment" +msgstr "Benachrichtige andere Empfänger als Kommentar" + +#: etc/initialdata:86 +msgid "Notify Owner" +msgstr "Benachrichte Inhaber" + +#: etc/initialdata:82 +msgid "Notify Owner as Comment" +msgstr "Benachrichtige Inhaber als Kommentar" + +#: etc/initialdata:313 etc/upgrade/2.1.71:17 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "Benachrichtige Inhaber und AdminCCs neuer auf Freigabe wartende Anfragen" + +#: etc/initialdata:78 +msgid "Notify Requestors" +msgstr "Benachrichtige die Klienten" + +#: etc/initialdata:104 +msgid "Notify Requestors and Ccs" +msgstr "Benachrichtige die Klienten und CCs" + +#: etc/initialdata:99 +msgid "Notify Requestors and Ccs as Comment" +msgstr "Benachrichtige die Klienten und CCs als Kommentar" + +#: etc/initialdata:113 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "Benachrichtige die Klienten, CCs und AdminCCs" + +#: etc/initialdata:109 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "Benachrichtige die Klienten, CCs und AdminCCs als Kommentar" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "Nov" + +#: lib/RT/Record.pm:157 +msgid "Object could not be created" +msgstr "Objekt konnte nicht erstellt werden" + +#: lib/RT/Record.pm:176 +msgid "Object created" +msgstr "Objekt erstellt" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "Okt" + +#: html/Elements/SelectDateRelation:35 +msgid "On" +msgstr "am" + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "Bei Kommentar" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "Bei Korrespondenz" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "Bei Erstellen" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "Bei Eigentümerwechsel" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "Bei Stapelwechsel" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "Beim Erledigen" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "Bei Statuswechsel" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "Bei einer Transaktion" + +#: html/Approvals/Elements/PendingMyApproval:50 +#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") +msgid "Only show approvals for requests created after %1" +msgstr "Zeige nur Freigaben für nach dem %1 erstelle Anfragen" + +#: html/Approvals/Elements/PendingMyApproval:48 +#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") +msgid "Only show approvals for requests created before %1" +msgstr "Zeige nur Freigaben für vor dem %1 erstellte Anfragen" + +#: html/Elements/Quicksearch:31 +msgid "Open" +msgstr "Offen" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "Öffnen" + +#: html/SelfService/Elements/Tabs:57 +msgid "Open requests" +msgstr "Offene Anfragen" + +#: html/Admin/Users/Prefs.html:41 +msgid "Open tickets (from listing) in a new window" +msgstr "Öffne Anfragen (aus der Liste) in neuem Fenster" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in another window" +msgstr "Öffne Anfragen (aus der Liste) in ein anderes Fenster" + +#: etc/initialdata:133 +msgid "Open tickets on correspondence" +msgstr "Öffne Anfragen bei Korrespondenz" + +#: html/Search/Elements/PickRestriction:101 +msgid "Ordering and sorting" +msgstr "Sortierung und Reihenfolge" + +#: html/Admin/Elements/ModifyUser:46 html/Admin/Users/Modify.html:117 html/Elements/SelectUsers:29 html/User/Prefs.html:86 +msgid "Organization" +msgstr "Organisation" + +#: html/Approvals/Elements/Approve:34 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "Ursprüngliche Anfrage: #%1" + +#: html/Admin/Elements/ModifyQueue:55 html/Admin/Queues/Modify.html:69 +msgid "Over time, priority moves toward" +msgstr "Mit der Zeit steigt die Priorität auf" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Own tickets" +msgstr "Eigene Anfrage" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "OwnTicket" +msgstr "" + +#: etc/initialdata:38 html/Elements/MyRequests:32 html/SelfService/Elements/MyRequests:30 html/Ticket/Create.html:48 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/EditPeople:44 html/Ticket/Elements/ShowPeople:27 html/Ticket/Update.html:63 lib/RT/ACE_Overlay.pm:86 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "Inhaber" + +#: lib/RT/Ticket_Overlay.pm:3004 +#. ($OldOwnerObj->Name, $NewOwnerObj->Name) +msgid "Owner changed from %1 to %2" +msgstr "Inhaberwechsel von %1 zu %2" + +#: lib/RT/Transaction_Overlay.pm:584 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "Inhaber mit Gewalt von %1 in %2 geändert" + +#: html/Search/Elements/PickRestriction:31 +msgid "Owner is" +msgstr "Inhaber ist" + +#: html/Admin/Users/Modify.html:174 html/User/Prefs.html:56 +msgid "Pager" +msgstr "Pager" + +#: html/Admin/Elements/ModifyUser:74 +msgid "PagerPhone" +msgstr "PagerTelefon" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/EditLinks:127 html/Ticket/Elements/EditLinks:58 html/Ticket/Elements/ShowLinks:43 +msgid "Parents" +msgstr "Eltern" + +#: html/Elements/Login:43 html/User/Prefs.html:61 +msgid "Password" +msgstr "Passwort" + +#: html/NoAuth/Reminder.html:25 +msgid "Password Reminder" +msgstr "Passworterinnerung" + +#: lib/RT/User_Overlay.pm:168 lib/RT/User_Overlay.pm:860 +msgid "Password too short" +msgstr "Passwort ist zu kurz" + +#: html/Admin/Users/Modify.html:291 html/User/Prefs.html:172 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "Passwort: %1" + +#: html/Ticket/Elements/ShowSummary:43 html/Ticket/Elements/Tabs:96 html/Ticket/ModifyAll.html:51 +msgid "People" +msgstr "Personen" + +#: etc/initialdata:126 +msgid "Perform a user-defined action" +msgstr "Führe eine benutzerdefinierte Aktion aus" + +#: lib/RT/ACE_Overlay.pm:231 lib/RT/ACE_Overlay.pm:237 lib/RT/ACE_Overlay.pm:563 lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:583 lib/RT/ACE_Overlay.pm:648 lib/RT/CurrentUser.pm:83 lib/RT/CurrentUser.pm:92 lib/RT/CustomField_Overlay.pm:445 lib/RT/CustomField_Overlay.pm:451 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1099 lib/RT/Group_Overlay.pm:1108 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1163 lib/RT/Group_Overlay.pm:1169 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:904 lib/RT/Group_Overlay.pm:908 lib/RT/Group_Overlay.pm:921 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:126 lib/RT/Scrip_Overlay.pm:137 lib/RT/Scrip_Overlay.pm:197 lib/RT/Scrip_Overlay.pm:430 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:88 lib/RT/Template_Overlay.pm:94 lib/RT/Ticket_Overlay.pm:1341 lib/RT/Ticket_Overlay.pm:1351 lib/RT/Ticket_Overlay.pm:1365 lib/RT/Ticket_Overlay.pm:1518 lib/RT/Ticket_Overlay.pm:1527 lib/RT/Ticket_Overlay.pm:1540 lib/RT/Ticket_Overlay.pm:1875 lib/RT/Ticket_Overlay.pm:2013 lib/RT/Ticket_Overlay.pm:2177 lib/RT/Ticket_Overlay.pm:2244 lib/RT/Ticket_Overlay.pm:2596 lib/RT/Ticket_Overlay.pm:2668 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2777 lib/RT/Ticket_Overlay.pm:2910 lib/RT/Ticket_Overlay.pm:3139 lib/RT/Ticket_Overlay.pm:3337 lib/RT/Ticket_Overlay.pm:3499 lib/RT/Ticket_Overlay.pm:3551 lib/RT/Ticket_Overlay.pm:3716 lib/RT/Transaction_Overlay.pm:468 lib/RT/Transaction_Overlay.pm:475 lib/RT/Transaction_Overlay.pm:504 lib/RT/Transaction_Overlay.pm:511 lib/RT/User_Overlay.pm:1334 lib/RT/User_Overlay.pm:562 lib/RT/User_Overlay.pm:597 lib/RT/User_Overlay.pm:853 lib/RT/User_Overlay.pm:941 +msgid "Permission Denied" +msgstr "Zugriff verweigert" + +#: html/User/Elements/Tabs:35 +msgid "Personal Groups" +msgstr "Persönliche Gruppen" + +#: html/User/Groups/index.html:30 html/User/Groups/index.html:40 +msgid "Personal groups" +msgstr "Persönliche Gruppen" + +#: html/User/Elements/DelegateRights:37 +msgid "Personal groups:" +msgstr "Persönliche Gruppen:" + +#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:49 +msgid "Phone numbers" +msgstr "Telefonnummern" + +#: html/Admin/Users/Rights.html:25 +msgid "Placeholder" +msgstr "Platzhalter" + +#: html/Elements/Header:52 html/Elements/Tabs:55 html/SelfService/Prefs.html:25 html/User/Prefs.html:25 html/User/Prefs.html:28 +msgid "Preferences" +msgstr "Voreinstellungen" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "" + +#: lib/RT/Action/Generic.pm:160 +msgid "Prepare Stubbed" +msgstr "Vorbereitung abgehakt" + +#: html/Ticket/Elements/Tabs:61 +msgid "Prev" +msgstr "Vorherige" + +#: html/Search/Listing.html:44 +msgid "Previous page" +msgstr "Vorherige Seite" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:133 lib/RT/ACE_Overlay.pm:208 lib/RT/ACE_Overlay.pm:552 +#. ($args{'PrincipalId'}) +msgid "Principal %1 not found." +msgstr "Hauptverantwortlichen %1 nicht gefunden." + +#: html/Search/Elements/PickRestriction:54 html/SelfService/Display.html:76 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:54 html/Ticket/Elements/ShowBasics:39 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "Priorität" + +#: html/Admin/Elements/ModifyQueue:51 html/Admin/Queues/Modify.html:65 +msgid "Priority starts at" +msgstr "Priorität beginnt bei" + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "Privilegiert" + +#: html/Admin/Users/Modify.html:271 html/User/Prefs.html:163 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "Privilegierungsstatus: %1" + +#: html/Admin/Users/index.html:62 +msgid "Privileged users" +msgstr "Privilegierte Benutzer" + +#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 +msgid "Pseudogroup for internal use" +msgstr "Pseudogruppe für internen Gebrauch" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Elements/Quicksearch:29 html/Search/Elements/PickRestriction:46 html/SelfService/Create.html:35 html/SelfService/Display.html:68 html/Ticket/Create.html:38 html/Ticket/Elements/EditBasics:64 html/Ticket/Elements/ShowBasics:43 html/User/Elements/DelegateRights:80 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "Stapel" + +#: html/Admin/Queues/CustomField.html:42 html/Admin/Queues/Scrip.html:50 html/Admin/Queues/Scrips.html:46 html/Admin/Queues/Templates.html:43 +#. ($Queue) +#. ($id) +msgid "Queue %1 not found" +msgstr "Stapel %2 nicht gefunden" + +#: NOT FOUND IN SOURCE +msgid "Queue '%1' not found\\n" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:31 html/Admin/Queues/Modify.html:43 +msgid "Queue Name" +msgstr "Name des Stapels" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:263 +msgid "Queue already exists" +msgstr "Stapel existiert bereits" + +#: lib/RT/Queue_Overlay.pm:272 lib/RT/Queue_Overlay.pm:278 +msgid "Queue could not be created" +msgstr "Stapel konne nicht angelegt werden" + +#: html/Ticket/Create.html:209 +msgid "Queue could not be loaded." +msgstr "Stapel konnte nicht geladen werden" + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:282 +msgid "Queue created" +msgstr "Stapel angelegt" + +#: NOT FOUND IN SOURCE +msgid "Queue is not specified." +msgstr "" + +#: html/SelfService/Display.html:129 +msgid "Queue not found" +msgstr "Stapel nicht gefunden" + +#: html/Admin/Elements/Tabs:38 html/Admin/index.html:35 +msgid "Queues" +msgstr "Stapel" + +#: html/Elements/Login:34 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "RT %1" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "RT %1 für %2" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." +msgstr "RT %1 von <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 "" + +#: html/Admin/index.html:25 html/Admin/index.html:26 +msgid "RT Administration" +msgstr "RT Administration" + +#: NOT FOUND IN SOURCE +msgid "RT Authentication error." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT Bounce: %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT Configuration error" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT Critical error. Message not recorded!" +msgstr "" + +#: html/Elements/Error:41 html/SelfService/Error.html:41 +msgid "RT Error" +msgstr "RT Fehler" + +#: NOT FOUND IN SOURCE +msgid "RT Received mail (%1) from itself." +msgstr "" + +#: html/SelfService/Closed.html:25 +msgid "RT Self Service / Closed Tickets" +msgstr "RT Selbstbedienung / Geschlossene Anfragen" + +#: html/index.html:25 html/index.html:28 +msgid "RT at a glance" +msgstr "RT auf einen Blick" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't authenticate you" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find requestor via its external database lookup" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find the queue: %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "" + +#: html/Elements/PageLayout:26 +#. ($RT::rtname) +msgid "RT for %1" +msgstr "RT für %1" + +#: NOT FOUND IN SOURCE +msgid "RT for %1: %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT has proccessed your commands" +msgstr "RT hat Deine Befehle verarbeitet" + +#: html/Elements/Login:83 +#. ('2003') +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 © Copyright 1996-%1 Jesse Vincent <jesse@bestpractical.com>. Vertrieben unter der <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 "" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +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 "" + +#: html/Admin/Users/Modify.html:58 html/Admin/Users/Prefs.html:52 html/User/Prefs.html:44 +msgid "Real Name" +msgstr "Realer Name" + +#: html/Admin/Elements/ModifyUser:48 +msgid "RealName" +msgstr "RealerName" + +#: html/Ticket/Create.html:185 html/Ticket/Elements/EditLinks:139 html/Ticket/Elements/EditLinks:94 html/Ticket/Elements/ShowLinks:63 +msgid "Referred to by" +msgstr "Bezogen von" + +#: html/Elements/SelectLinkType:28 html/Ticket/Create.html:184 html/Ticket/Elements/EditLinks:135 html/Ticket/Elements/EditLinks:80 html/Ticket/Elements/ShowLinks:55 +msgid "Refers to" +msgstr "Bezieht sich auf" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "" + +#: html/Search/Elements/PickRestriction:27 +msgid "Refine search" +msgstr "Suche Verfeinen" + +#: html/Elements/Refresh:36 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "Seite alle %1 Minuten aktualisieren." + +#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:60 html/Ticket/ModifyAll.html:57 +msgid "Relationships" +msgstr "Beziehungen" + +#: html/Search/Bulk.html:93 +msgid "Remove AdminCc" +msgstr "Entferne AdminCC" + +#: html/Search/Bulk.html:91 +msgid "Remove Cc" +msgstr "Entferne CC" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "Entferne Klient" + +#: html/Ticket/Elements/ShowTransaction:173 html/Ticket/Elements/Tabs:122 +msgid "Reply" +msgstr "Antworten" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Reply to tickets" +msgstr "Antworte auf Anfragen" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "ReplyToTicket" +msgstr "" + +#: etc/initialdata:44 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:87 +msgid "Requestor" +msgstr "Klient" + +#: html/Search/Elements/PickRestriction:38 +msgid "Requestor email address" +msgstr "email-Adresse des Klienten" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "" + +#: html/SelfService/Create.html:43 html/SelfService/Display.html:42 html/Ticket/Create.html:56 html/Ticket/Elements/EditPeople:48 html/Ticket/Elements/ShowPeople:31 +msgid "Requestors" +msgstr "Klienten" + +#: html/Admin/Elements/ModifyQueue:61 html/Admin/Queues/Modify.html:75 +msgid "Requests should be due in" +msgstr "Anfragen sollten erlegt werden in" + +#: html/Elements/Submit:62 +msgid "Reset" +msgstr "Zurücksetzen" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "Zuhause" + +#: html/Ticket/Elements/Tabs:132 +msgid "Resolve" +msgstr "Erledigen" + +#: html/Ticket/Update.html:133 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "Erledige Anfrage Nr. %1 (%2)" + +#: etc/initialdata:302 html/Elements/SelectDateType:28 lib/RT/Ticket_Overlay.pm:1170 +msgid "Resolved" +msgstr "Erledigt" + +#: html/Search/Bulk.html:123 html/Ticket/ModifyAll.html:73 html/Ticket/Update.html:73 +msgid "Response to requestors" +msgstr "Antwort an alle Klienten" + +#: html/Elements/ListActions:26 +msgid "Results" +msgstr "Ergebnisse" + +#: html/Search/Elements/PickRestriction:105 +msgid "Results per page" +msgstr "Ergebnisse pro Seite" + +#: html/Admin/Elements/ModifyUser:33 html/Admin/Users/Modify.html:100 html/User/Prefs.html:72 +msgid "Retype Password" +msgstr "Passwort wiederholen" + +#: NOT FOUND IN SOURCE +msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:613 +msgid "Right Delegated" +msgstr "Recht delegiert" + +#: lib/RT/ACE_Overlay.pm:303 +msgid "Right Granted" +msgstr "Recht erteilt" + +#: lib/RT/ACE_Overlay.pm:161 +msgid "Right Loaded" +msgstr "Recht geladen" + +#: lib/RT/ACE_Overlay.pm:678 lib/RT/ACE_Overlay.pm:693 +msgid "Right could not be revoked" +msgstr "Recht konnte nicht zurückgezogen werden" + +#: html/User/Delegation.html:64 +msgid "Right not found" +msgstr "Recht nicht gefunden" + +#: lib/RT/ACE_Overlay.pm:543 lib/RT/ACE_Overlay.pm:638 +msgid "Right not loaded." +msgstr "Recht nicht gefunden." + +#: lib/RT/ACE_Overlay.pm:689 +msgid "Right revoked" +msgstr "Recht zurückgezogen" + +#: html/Admin/Elements/UserTabs:41 +msgid "Rights" +msgstr "Rechte" + +#: lib/RT/Interface/Web.pm:758 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "Rechte konnten für %1 nicht gewährt werden" + +#: lib/RT/Interface/Web.pm:791 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "Rechte konnten nicht für %1 entzogen werden" + +#: html/Admin/Global/GroupRights.html:51 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "Rollen" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "Sa" + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "Save Changes" +msgstr "Änderungen Sichern" + +#: html/Ticket/ModifyLinks.html:39 +msgid "Save changes" +msgstr "Änderungen Sichern" + +#: html/Admin/Global/Scrip.html:49 +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:176 +msgid "Scrip Created" +msgstr "Scrip angelegt" + +#: html/Admin/Elements/EditScrips:84 +msgid "Scrip deleted" +msgstr "Scrip gelöscht" + +#: html/Admin/Elements/QueueTabs:46 html/Admin/Elements/SystemTabs:33 html/Admin/Global/index.html:41 +msgid "Scrips" +msgstr "Scrips" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "Scrips für %1\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "Auf alle Stapel angewande Scrips" + +#: html/Elements/SimpleSearch:27 html/Search/Elements/PickRestriction:126 html/Ticket/Elements/Tabs:159 +msgid "Search" +msgstr "Suchen" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:39 +msgid "Search for approvals" +msgstr "Suche nach Freigaben" + +#: bin/rt-crontool:188 +msgid "Security:" +msgstr "Sicherheit:" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "SeeQueue" +msgstr "" + +#: html/Admin/Groups/index.html:40 +msgid "Select a group" +msgstr "Wähle eine Gruppe aus" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "" + +#: html/Admin/Users/index.html:25 html/Admin/Users/index.html:28 +msgid "Select a user" +msgstr "Wähle einen Benutzer aus" + +#: html/Admin/Global/CustomField.html:38 html/Admin/Global/CustomFields.html:36 +msgid "Select custom field" +msgstr "Wähle ein benutzerdef. Feld" + +#: html/Admin/Elements/GroupTabs:52 html/User/Elements/GroupTabs:50 +msgid "Select group" +msgstr "Wähle eine Gruppe" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Select multiple values" +msgstr "Wähle mehrere Werte" + +#: lib/RT/CustomField_Overlay.pm:352 +msgid "Select one value" +msgstr "Wähle einen Wert" + +#: html/Admin/Elements/QueueTabs:67 +msgid "Select queue" +msgstr "Wähle einen Stapel" + +#: html/Admin/Global/Scrip.html:37 html/Admin/Global/Scrips.html:36 html/Admin/Queues/Scrip.html:40 html/Admin/Queues/Scrips.html:50 +msgid "Select scrip" +msgstr "Wähle ein Scrip" + +#: html/Admin/Global/Template.html:57 html/Admin/Global/Templates.html:36 html/Admin/Queues/Template.html:55 +msgid "Select template" +msgstr "Wähle ein Template" + +#: html/Admin/Elements/UserTabs:49 +msgid "Select user" +msgstr "Wähle einen Benutzer" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "SelectMultiple" +msgstr "Mehrfachauswahlfeld" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectSingle" +msgstr "Einzelauswahlfeld" + +#: html/SelfService/index.html:25 +msgid "Self Service" +msgstr "Selbstbedienung" + +#: etc/initialdata:114 +msgid "Send mail to all watchers" +msgstr "Schicke eine Mail an alle Beobachter" + +#: etc/initialdata:110 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "Schicke eine Mail an alle Beobachter als \"Kommentar\"" + +#: etc/initialdata:105 +msgid "Send mail to requestors and Ccs" +msgstr "Schicke eine Mail an die Klienten und CCs" + +#: etc/initialdata:100 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "Schicke eine Mail an die Klienten und CCs als Kommentar" + +#: etc/initialdata:79 +msgid "Sends a message to the requestors" +msgstr "Schicke eine Mail an die Klienten" + +#: etc/initialdata:118 etc/initialdata:122 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "Schicke eine Mail an die direkt angegebenen CCs und BCCs" + +#: etc/initialdata:95 +msgid "Sends mail to the administrative Ccs" +msgstr "Schicke eine Mail an die administrativen CCs" + +#: etc/initialdata:91 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "Schicke eine Mail an die administrativen CCs als Kommentar" + +#: etc/initialdata:83 etc/initialdata:87 +msgid "Sends mail to the owner" +msgstr "Schicke eine Mail an den Inhaber" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "Sep" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show approved requests" +msgstr "Zeige freigegebene Anfragen" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show basics" +msgstr "Zeige Grundlagen" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show denied requests" +msgstr "Zeige abgelehnte Anfragen" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show details" +msgstr "Zeige Details" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show pending requests" +msgstr "Zeige schwebende Anfragen" + +#: html/Approvals/Elements/PendingMyApproval:46 +msgid "Show requests awaiting other approvals" +msgstr "Zeige auf andere Freigaben wartende Anfragen" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Show ticket private commentary" +msgstr "Zeige private Kommentare des Anfragen" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "Show ticket summaries" +msgstr "Zeige Kurzfassungen der Anfragen" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ShowACL" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowScrips" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ShowTemplate" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "ShowTicket" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "ShowTicketComments" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "Als Klient einer Anfrage oder Anfrage- bzw. Stapel-CC eintragen" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "Als Anfrage- oder Stapel-AdminCC eintragen" + +#: html/Admin/Elements/ModifyUser:39 html/Admin/Users/Modify.html:191 html/Admin/Users/Prefs.html:32 html/SelfService/Prefs.html:37 html/User/Prefs.html:112 +msgid "Signature" +msgstr "E-Mail-Signatur" + +#: html/SelfService/Elements/Header:52 +#. ($session{'CurrentUser'}->Name) +msgid "Signed in as %1" +msgstr "Angemeldet als %1" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Single" +msgstr "Einzel" + +#: html/Elements/Header:51 +msgid "Skip Menu" +msgstr "Überspringe Menü" + +#: html/Admin/Elements/EditCustomFieldValues:31 +msgid "Sort key" +msgstr "Sortierschlüssel" + +#: html/Search/Elements/PickRestriction:109 +msgid "Sort results by" +msgstr "Sortiere Ergebnisse nach" + +#: html/Admin/Elements/AddCustomFieldValue:25 +msgid "SortOrder" +msgstr "Sortierreihenfolge" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "" + +#: html/Elements/SelectDateType:27 html/Ticket/Elements/EditDates:32 html/Ticket/Elements/ShowDates:35 +msgid "Started" +msgstr "Begonnen" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:27 html/Ticket/Elements/ShowDates:31 +msgid "Starts" +msgstr "Beginnt" + +#: NOT FOUND IN SOURCE +msgid "Starts By" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Starts date '%1' could not be parsed" +msgstr "" + +#: html/Admin/Elements/ModifyUser:82 html/Admin/Users/Modify.html:138 html/User/Prefs.html:94 +msgid "State" +msgstr "Staat" + +#: html/Elements/MyRequests:31 html/Elements/MyTickets:31 html/Search/Elements/PickRestriction:74 html/SelfService/Display.html:59 html/SelfService/Elements/MyRequests:29 html/SelfService/Update.html:31 html/Ticket/Create.html:42 html/Ticket/Elements/EditBasics:38 html/Ticket/Elements/ShowBasics:31 html/Ticket/Update.html:60 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "Status" + +#: etc/initialdata:288 +msgid "Status Change" +msgstr "Ändere Status" + +#: lib/RT/Transaction_Overlay.pm:530 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "Status von %1 auf %2 geändert" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "" + +#: html/Ticket/Elements/Tabs:147 +msgid "Steal" +msgstr "Stehlen" + +#: lib/RT/Transaction_Overlay.pm:589 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "Gestohlen von %1 " + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Search/Bulk.html:126 html/Search/Elements/PickRestriction:43 html/SelfService/Create.html:59 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:35 html/Ticket/Create.html:84 html/Ticket/Elements/EditBasics:28 html/Ticket/ModifyAll.html:79 html/Ticket/Update.html:77 lib/RT/Ticket_Overlay.pm:1160 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "Betreff" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:611 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "Betreff wurde auf %1 geändert" + +#: html/Elements/Submit:59 +msgid "Submit" +msgstr "Übermitteln" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "" + +#: lib/RT/Group_Overlay.pm:749 +msgid "Succeeded" +msgstr "Geglückt" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "So" + +#: lib/RT/System.pm:54 +msgid "SuperUser" +msgstr "" + +#: html/User/Elements/DelegateRights:77 +msgid "System" +msgstr "System" + +#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:567 lib/RT/Interface/Web.pm:757 lib/RT/Interface/Web.pm:790 +msgid "System Error" +msgstr "Systemfehler" + +#: lib/RT/ACE_Overlay.pm:616 +msgid "System error. Right not delegated." +msgstr "Systemfehler. Recht nicht delegiert." + +#: lib/RT/ACE_Overlay.pm:146 lib/RT/ACE_Overlay.pm:223 lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:898 +msgid "System error. Right not granted." +msgstr "Systemfehler. Recht nicht gewährt." + +#: html/Admin/Global/GroupRights.html:35 html/Admin/Groups/GroupRights.html:37 html/Admin/Queues/GroupRights.html:36 +msgid "System groups" +msgstr "Systemgruppen" + +#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 +msgid "SystemRolegroup for internal use" +msgstr "SystemRolegroup für internen Gebrauch" + +#: lib/RT/CurrentUser.pm:320 +msgid "TEST_STRING" +msgstr "TEST_STRING" + +#: html/Ticket/Elements/Tabs:143 +msgid "Take" +msgstr "Übernehmen" + +#: lib/RT/Transaction_Overlay.pm:575 +msgid "Taken" +msgstr "Übernommen" + +#: html/Admin/Elements/EditScrip:81 +msgid "Template" +msgstr "Vorlage" + +#: html/Admin/Global/Template.html:91 html/Admin/Queues/Template.html:90 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "Vorlage #%1" + +#: html/Admin/Elements/EditTemplates:89 +msgid "Template deleted" +msgstr "Vorlage gelöscht" + +#: lib/RT/Scrip_Overlay.pm:153 +msgid "Template not found" +msgstr "Vorlage nicht gefunden" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "" + +#: lib/RT/Template_Overlay.pm:347 +msgid "Template parsed" +msgstr "Vorlagen eingelesen" + +#: html/Admin/Elements/QueueTabs:49 html/Admin/Elements/SystemTabs:36 html/Admin/Global/index.html:45 +msgid "Templates" +msgstr "Vorlagen" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "Vorlagen für %1\\n" + +#: lib/RT/Interface/Web.pm:858 +msgid "That is already the current value" +msgstr "Das ist bereits der aktuelle Wert" + +#: lib/RT/CustomField_Overlay.pm:178 +msgid "That is not a value for this custom field" +msgstr "Dies ist kein gültiger Wert für dieses benutzerdefinierte Feld" + +#: lib/RT/Ticket_Overlay.pm:1886 +msgid "That is the same value" +msgstr "Das ist der gleiche Wert" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "Dieser Hauptverantwortliche ist bereits ein %1 dieses Stapels" + +#: lib/RT/Ticket_Overlay.pm:1434 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "Dieser Hauptverantwortliche ist bereits ein %1 dieser Anfrage" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "Dieser Hauptverantwortliche ist nicht ein %1 dieses Stapels" + +#: lib/RT/Ticket_Overlay.pm:1551 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "Dieser Hauptverantwortliche ist nicht ein %1 dieser Anfrage" + +#: lib/RT/Ticket_Overlay.pm:1882 +msgid "That queue does not exist" +msgstr "Dieser Stapel existiert nicht" + +#: lib/RT/Ticket_Overlay.pm:3143 +msgid "That ticket has unresolved dependencies" +msgstr "Diese Anfrage hat ungelöste Abhängigkeiten" + +#: lib/RT/ACE_Overlay.pm:288 lib/RT/ACE_Overlay.pm:597 +msgid "That user already has that right" +msgstr "Dieser Benutzer hat dieses Recht bereits" + +#: lib/RT/Ticket_Overlay.pm:2952 +msgid "That user already owns that ticket" +msgstr "Diesem Benutzer gehört diese Anfrage bereits" + +#: lib/RT/Ticket_Overlay.pm:2918 +msgid "That user does not exist" +msgstr "Dieser Benutzer existiert nicht" + +#: lib/RT/User_Overlay.pm:315 +msgid "That user is already privileged" +msgstr "Dieser Benutzer ist bereits privilegiert" + +#: lib/RT/User_Overlay.pm:332 +msgid "That user is already unprivileged" +msgstr "Dieser Benutzer ist bereits ungeprivilegiert" + +#: lib/RT/User_Overlay.pm:327 +msgid "That user is now privileged" +msgstr "Dieser Benutzer ist jetzt privilegiert" + +#: lib/RT/User_Overlay.pm:344 +msgid "That user is now unprivileged" +msgstr "Dieser Benutzer ist jetzt unprivelegiert" + +#: lib/RT/Ticket_Overlay.pm:2944 +msgid "That user may not own tickets in that queue" +msgstr "Diesem Benutzer dürfen keine Anfragen aus diesen Stapel gehören" + +#: lib/RT/Link_Overlay.pm:206 +msgid "That's not a numerical id" +msgstr "Dies ist keine numerische Id" + +#: html/Ticket/Create.html:150 html/Ticket/Elements/ShowSummary:28 +msgid "The Basics" +msgstr "Grundlagen" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The CC of a ticket" +msgstr "Der CC einer Anfrage" + +#: lib/RT/ACE_Overlay.pm:89 +msgid "The administrative CC of a ticket" +msgstr "Der administrative CC einer Anfrage" + +#: lib/RT/Ticket_Overlay.pm:2213 +msgid "The comment has been recorded" +msgstr "Der Kommentar wurde aufgezeichnet" + +#: bin/rt-crontool:198 +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 "Das folgende Kommando wird alle aktiven Anfragen des Stapels 'general' finden und ihre Priorität auf 99 setzen, wenn sie innerhalb der letzten 4 Stunden nicht angefasst wurden:" + +#: bin/rt-commit-handler:756 bin/rt-commit-handler:766 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "Die folgenden Kommandos wurden nicht verarbeitet:\\n\\n" + +#: lib/RT/Interface/Web.pm:861 +msgid "The new value has been set." +msgstr "Der neue Wert wurde gesetzt." + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The owner of a ticket" +msgstr "Der Inhaber einer Anfrage" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The requestor of a ticket" +msgstr "Der Klient einer Anfrage" + +#: html/Admin/Elements/EditUserComments:26 +msgid "These comments aren't generally visible to the user" +msgstr "Diese Kommentare sind generell nicht für den Benutzer sichtbar" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "" + +#: bin/rt-crontool:189 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "Dieses Werkzeug erlaubt es Benutzern beliebige Perl-Module von RT aus aufzurufen." + +#: lib/RT/Transaction_Overlay.pm:253 +msgid "This transaction appears to have no content" +msgstr "Diese Transaktion scheint keinen Inhalt zu haben" + +#: html/Ticket/Elements/ShowRequestor:47 +#. ($rows) +msgid "This user's %1 highest priority tickets" +msgstr "Die %1 höchstpriorisiertesten Anfragen dieses Benutzers" + +#: NOT FOUND IN SOURCE +msgid "This user's 25 highest priority tickets" +msgstr "" + +#: lib/RT/Date.pm:391 +msgid "Thu." +msgstr "Do" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 %2" +msgstr "" + +#: html/Ticket/ModifyAll.html:25 html/Ticket/ModifyAll.html:29 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "Anfrage Nr. %1 Alles aktualisieren: %2" + +#: html/Approvals/Elements/ShowDependency:46 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "Anfrage Nr. %1: %2" + +#: lib/RT/Ticket_Overlay.pm:608 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "Anfrage %1 wurde in Anfrage '%2' angelegt" + +#: bin/rt-commit-handler:760 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "Anfrage %1 geladen\\n" + +#: html/Search/Bulk.html:181 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "Anfrage %1: %2" + +#: html/Ticket/History.html:25 html/Ticket/History.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "Verlauf von Anfrage Nr. %1 %2" + +#: html/SelfService/Display.html:34 +msgid "Ticket Id" +msgstr "Anfrage Nr." + +#: etc/initialdata:303 +msgid "Ticket Resolved" +msgstr "Anfrage erledigt" + +#: html/Search/Elements/PickRestriction:63 +msgid "Ticket attachment" +msgstr "Anhang der Anfrage" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "Inhalt der Anfrage" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "Art des Inhalts der Anfrage" + +#: lib/RT/Ticket_Overlay.pm:495 lib/RT/Ticket_Overlay.pm:597 +msgid "Ticket could not be created due to an internal error" +msgstr "Anfrage konnte aufgrund eines internen Fehlers nicht angelegt werden" + +#: lib/RT/Transaction_Overlay.pm:522 +msgid "Ticket created" +msgstr "Anfrage angelegt" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:527 +msgid "Ticket deleted" +msgstr "Anfrage gelöscht" + +#: html/REST/1.0/modify:29 html/REST/1.0/update:34 +msgid "Ticket id not found" +msgstr "Anfragenummer nicht gefunden" + +#: html/REST/1.0/modify:36 html/REST/1.0/update:41 +msgid "Ticket not found" +msgstr "Anfrage nicht gefunden" + +#: etc/initialdata:289 +msgid "Ticket status changed" +msgstr "Status der Anfrage geändert" + +#: html/Ticket/Update.html:39 +msgid "Ticket watchers" +msgstr "Beobachter der Anfrage" + +#: html/Elements/Tabs:49 +msgid "Tickets" +msgstr "Anfragen" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "Anfragen %1 %2" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "Anfragen %2 von %2" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Tickets from %1" +msgstr "Anfragen von %1" + +#: html/Approvals/Elements/ShowDependency:27 +msgid "Tickets which depend on this approval:" +msgstr "Anfragen, die von dieser Freigabe abhängen:" + +#: html/Ticket/Create.html:157 html/Ticket/Elements/EditBasics:48 +msgid "Time Left" +msgstr "Übrige Zeit" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:43 +msgid "Time Worked" +msgstr "Arbeitszeit" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "Übrige Zeit" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "Benötigte Zeit" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "Arbeitszeit" + +#: lib/RT/Ticket_Overlay.pm:1165 +msgid "TimeWorked" +msgstr "Gearbeitete Zeit" + +#: bin/rt-commit-handler:402 +msgid "To generate a diff of this commit:" +msgstr "Um ein 'diff' dieser Übergabe zu erstellen:" + +#: bin/rt-commit-handler:391 +msgid "To generate a diff of this commit:\\n" +msgstr "Um ein 'diff' dieser Übergabe zu erstellen:\\n" + +#: lib/RT/Ticket_Overlay.pm:1168 +msgid "Told" +msgstr "Eingegangen" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "Transaktion" + +#: lib/RT/Transaction_Overlay.pm:642 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "Transaktion %1 durchgeprügelt" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "Transaktion erstellt" + +#: lib/RT/Transaction_Overlay.pm:89 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "Transaction->Create konnte nicht ausgeführt werden da keine Ticketnummer angegeben wurde" + +#: lib/RT/Transaction_Overlay.pm:701 +msgid "Transactions are immutable" +msgstr "Transaktionen sind unveränderbar" + +#: NOT FOUND IN SOURCE +msgid "Trying to delete a right: %1" +msgstr "" + +#: lib/RT/Date.pm:389 +msgid "Tue." +msgstr "Di" + +#: html/Admin/Elements/EditCustomField:34 html/Ticket/Elements/AddWatchers:33 html/Ticket/Elements/AddWatchers:44 html/Ticket/Elements/AddWatchers:54 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "Typ" + +#: lib/RT/ScripCondition_Overlay.pm:104 +msgid "Unimplemented" +msgstr "Nicht implementiert" + +#: html/Admin/Users/Modify.html:68 +msgid "Unix login" +msgstr "Unix Login" + +#: html/Admin/Elements/ModifyUser:62 +msgid "UnixUsername" +msgstr "UnixBenutzername" + +#: lib/RT/Attachment_Overlay.pm:265 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "Unbekannte Inhalts-Kodierung %1" + +#: html/Elements/SelectResultsPerPage:37 +msgid "Unlimited" +msgstr "unbegrenzt" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "Unprivilegiert" + +#: lib/RT/Transaction_Overlay.pm:571 +msgid "Untaken" +msgstr "Zurückgegeben" + +#: html/Elements/MyTickets:64 html/Search/Bulk.html:33 +msgid "Update" +msgstr "Aktualisieren" + +#: html/Admin/Users/Prefs.html:62 +msgid "Update ID" +msgstr "Aktualisierungs-ID" + +#: html/Search/Bulk.html:120 html/Ticket/ModifyAll.html:66 html/Ticket/Update.html:67 +msgid "Update Type" +msgstr "Aktualisierungtyp" + +#: html/Search/Listing.html:61 +msgid "Update all these tickets at once" +msgstr "Aktualisiere alle diese Anfragen auf einmal" + +#: html/Admin/Users/Prefs.html:49 +msgid "Update email" +msgstr "Aktualisiere E-Mail" + +#: html/Admin/Users/Prefs.html:55 +msgid "Update name" +msgstr "Aktualisiere Name" + +#: lib/RT/Interface/Web.pm:375 +msgid "Update not recorded." +msgstr "Aktualisierung nicht aufgezeichnet." + +#: html/Search/Bulk.html:81 +msgid "Update selected tickets" +msgstr "Aktualisiere ausgewählte Anfragen" + +#: html/Admin/Users/Prefs.html:36 +msgid "Update signature" +msgstr "Aktualisiere Unterschrift" + +#: html/Ticket/ModifyAll.html:63 +msgid "Update ticket" +msgstr "Aktualisiere Anfrage" + +#: html/SelfService/Update.html:25 html/SelfService/Update.html:27 +#. ($Ticket->id) +msgid "Update ticket # %1" +msgstr "Aktualisiere Anfrage Nr. %1" + +#: html/SelfService/Update.html:50 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "Aktualisiere Anfrage Nr. %1" + +#: html/Ticket/Update.html:135 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "Aktualisiere Anfrage Nr. %1 (%2)" + +#: lib/RT/Interface/Web.pm:373 +msgid "Update type was neither correspondence nor comment." +msgstr "Aktualisierungstyp war weder Korrespondenz noch Kommentar." + +#: html/Elements/SelectDateType:33 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1169 +msgid "Updated" +msgstr "Aktualisiert" + +#: NOT FOUND IN SOURCE +msgid "User %1 %2: %3\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "User %1 Password: %2\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found\\n" +msgstr "" + +#: etc/initialdata:125 etc/initialdata:191 +msgid "User Defined" +msgstr "Benutzerdefiniert" + +#: html/Admin/Users/Prefs.html:59 +msgid "User ID" +msgstr "Benutzer-ID" + +#: html/Elements/SelectUsers:26 +msgid "User Id" +msgstr "Benutzername" + +#: html/Admin/Elements/GroupTabs:47 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/SystemTabs:47 html/Admin/Global/index.html:59 +msgid "User Rights" +msgstr "Benutzerrechte" + +#: html/Admin/Users/Modify.html:226 +#. ($msg) +msgid "User could not be created: %1" +msgstr "Benutzer konnte nicht angelegt werden: %1" + +#: lib/RT/User_Overlay.pm:262 +msgid "User created" +msgstr "Benutzer angelegt" + +#: html/Admin/Global/GroupRights.html:67 html/Admin/Groups/GroupRights.html:54 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "Benutzerdefinierte Gruppe" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "" + +#: html/Admin/Users/Prefs.html:25 html/Admin/Users/Prefs.html:29 +msgid "User view" +msgstr "Benutzeransicht" + +#: html/Admin/Users/Modify.html:48 html/Elements/Login:42 html/Ticket/Elements/AddWatchers:35 +msgid "Username" +msgstr "Benutzername" + +#: html/Admin/Elements/SelectNewGroupMembers:26 html/Admin/Elements/Tabs:32 html/Admin/Groups/Members.html:55 html/Admin/Queues/People.html:68 html/Admin/index.html:29 html/User/Groups/Members.html:58 +msgid "Users" +msgstr "Benutzer" + +#: html/Admin/Users/index.html:65 +msgid "Users matching search criteria" +msgstr "Auf diese Kriterien zutreffenede Benutzer" + +#: html/Search/Elements/PickRestriction:51 +msgid "ValueOfQueue" +msgstr "ValueOfQueue" + +#: html/Admin/Elements/EditCustomField:40 +msgid "Values" +msgstr "Werte" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Watch" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "WatchAsAdminCc" +msgstr "" + +#: html/Admin/Elements/QueueTabs:42 +msgid "Watchers" +msgstr "Beobachter" + +#: html/Admin/Elements/ModifyUser:56 +msgid "WebEncoding" +msgstr "Webkodierung" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "Mi" + +#: etc/upgrade/2.1.71:161 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "Füge Korrespondenz zum Originalticket, wenn eine Anfrage von allen Freigebenden freigegeben wurde" + +#: etc/upgrade/2.1.71:135 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "Füge Korrespondenz zum Originalticket wenn eine Anfrage von einem Freigebenden freigegeben wurde" + +#: etc/initialdata:138 +msgid "When a ticket is created" +msgstr "Wenn eine Afrage erstellt wird" + +#: etc/upgrade/2.1.71:79 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "Benachrichtige Inhaber und AdminCCs der auf Freigabe wartende Anfrage wenn ein Freigabeticket erstellt wurde" + +#: etc/initialdata:143 +msgid "When anything happens" +msgstr "Wenn irgendetwas passiert" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "Immer wenn eine Anfrage erledigt wird" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "Immer wenn der Eigentümer einer Anfrage wechselt" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "Immer wenn eine Anfrage den Stapel wechselt" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "Immer wenn sich der Status einer Anfrage ändert" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "Immer wenn eine benutzerdefinierte Bedingung auftritt" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "Immer wenn ein neuer Kommentar eingeht" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "Immer wenn neue Korrespondenz eingeht" + +#: html/Admin/Users/Modify.html:164 html/User/Prefs.html:52 +msgid "Work" +msgstr "Arbeit" + +#: html/Admin/Elements/ModifyUser:70 +msgid "WorkPhone" +msgstr "Arbeitstelefon" + +#: html/SelfService/Display.html:86 html/Ticket/Elements/ShowBasics:35 html/Ticket/Update.html:65 +msgid "Worked" +msgstr "Arbeitszeit" + +#: lib/RT/Ticket_Overlay.pm:3056 +msgid "You already own this ticket" +msgstr "Du besitzt diese Anfrage bereits" + +#: html/autohandler:121 +msgid "You are not an authorized user" +msgstr "Du bist kein authorisierter Benutzer" + +#: lib/RT/Ticket_Overlay.pm:2930 +msgid "You can only reassign tickets that you own or that are unowned" +msgstr "Du kannst nur Anfragen ohne Inhaber zuweisen" + +#: NOT FOUND IN SOURCE +msgid "You don't have permission to view that ticket.\\n" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:47 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "Du hast %1 Anfragen in Stapel %2 gefunden" + +#: html/NoAuth/Logout.html:31 html/REST/1.0/logout:25 +msgid "You have been logged out of RT." +msgstr "Du wurdest von RT abgemeldet." + +#: html/SelfService/Display.html:134 +msgid "You have no permission to create tickets in that queue." +msgstr "Du hast kein Recht, Anfragen in diesen Stapel anzulegen." + +#: lib/RT/Ticket_Overlay.pm:1895 +msgid "You may not create requests in that queue." +msgstr "Du darfst in diesem Stapel keine Anfragen erstellen" + +#: html/NoAuth/Logout.html:36 +msgid "You're welcome to login again" +msgstr "Du kannst dich gerne wieder anmelden" + +#: html/SelfService/Elements/MyRequests:25 +#. ($friendly_status) +msgid "Your %1 requests" +msgstr "Meine %1 Anfragen" + +#: NOT FOUND IN SOURCE +msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" +msgstr "" + +#: etc/initialdata:429 etc/upgrade/2.1.71:146 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "Deine Anfrage wurde von %1 freigegeben. Andere Freigaben können noch ausstehen." + +#: etc/initialdata:463 etc/upgrade/2.1.71:180 +msgid "Your request has been approved." +msgstr "Deine Anfrage wurde freigegeben." + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "" + +#: etc/initialdata:384 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "Deine Anfrage wurde abgewiesen" + +#: html/autohandler:136 html/autohandler:142 +msgid "Your username or password is incorrect" +msgstr "Dein Benutzername oder Passwort ist falsch" + +#: html/Admin/Elements/ModifyUser:84 html/Admin/Users/Modify.html:144 html/User/Prefs.html:96 +msgid "Zip" +msgstr "PLZ" + +#: html/User/Elements/DelegateRights:59 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "wie an %1 gewährt" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:34 +msgid "contains" +msgstr "enthält" + +#: html/Elements/SelectAttachmentField:26 +msgid "content" +msgstr "Inhalt" + +#: html/Elements/SelectAttachmentField:27 +msgid "content-type" +msgstr "content-type" + +#: lib/RT/Ticket_Overlay.pm:2282 +msgid "correspondence (probably) not sent" +msgstr "Korrepsondenz (möglicherweise) nicht verschickt" + +#: lib/RT/Ticket_Overlay.pm:2292 +msgid "correspondence sent" +msgstr "Korrespondenz verschickt" + +#: html/Admin/Elements/ModifyQueue:63 html/Admin/Queues/Modify.html:77 lib/RT/Date.pm:319 +msgid "days" +msgstr "Tage" + +#: html/Search/Listing.html:75 +msgid "delete" +msgstr "löschen" + +#: lib/RT/Queue_Overlay.pm:63 +msgid "deleted" +msgstr "gelöscht" + +#: html/Search/Elements/PickRestriction:68 +msgid "does not match" +msgstr "entspricht nicht" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:35 +msgid "doesn't contain" +msgstr "enthält nicht" + +#: html/Elements/SelectEqualityOperator:38 +msgid "equal to" +msgstr "entspricht" + +#: html/Elements/SelectAttachmentField:28 +msgid "filename" +msgstr "Dateiname" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "greater than" +msgstr "größer als" + +#: lib/RT/Group_Overlay.pm:194 +#. ($self->Name) +msgid "group '%1'" +msgstr "Gruppe '%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "Stunden" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "" + +#: html/Elements/SelectBoolean:32 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "is" +msgstr "ist" + +#: html/Elements/SelectBoolean:36 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:37 html/Search/Elements/PickRestriction:48 html/Search/Elements/PickRestriction:77 html/Search/Elements/PickRestriction:89 +msgid "isn't" +msgstr "ist nicht" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "less than" +msgstr "kleiner als" + +#: html/Search/Elements/PickRestriction:67 +msgid "matches" +msgstr "entspricht" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "Min" + +#: html/Ticket/Update.html:66 +msgid "minutes" +msgstr "Minuten" + +#: bin/rt-commit-handler:765 +msgid "modifications\\n\\n" +msgstr "Änderungen\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "Monate" + +#: lib/RT/Queue_Overlay.pm:58 +msgid "new" +msgstr "neu" + +#: html/Admin/Elements/EditScrips:43 +msgid "no value" +msgstr "kein Wert" + +#: html/Ticket/Elements/EditWatchers:28 +msgid "none" +msgstr "keine" + +#: html/Elements/SelectEqualityOperator:38 +msgid "not equal to" +msgstr "entspricht nicht" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "open" +msgstr "offen" + +#: lib/RT/Group_Overlay.pm:199 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "persönliche Gruppe '%1' für Benutzer '%2'" + +#: lib/RT/Group_Overlay.pm:207 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "Stapel %1 %2" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "rejected" +msgstr "abgewiesen" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "resolved" +msgstr "erledigt" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "Sek" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "stalled" +msgstr "zurückgestellt" + +#: lib/RT/Group_Overlay.pm:202 +#. ($self->Type) +msgid "system %1" +msgstr "System %1" + +#: lib/RT/Group_Overlay.pm:213 +#. ($self->Type) +msgid "system group '%1'" +msgstr "Systemgruppe '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:42 +msgid "the calling component did not specify why" +msgstr "die aufrufende Komponente gab nicht an warum" + +#: lib/RT/Group_Overlay.pm:210 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "Ticket #%1 %2" + +#: lib/RT/Group_Overlay.pm:216 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "unbeschriebene Gruppe %1" + +#: NOT FOUND IN SOURCE +msgid "undescripbed group %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:191 +#. ($user->Object->Name) +msgid "user %1" +msgstr "Benutzer %1" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "Wochen" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "Jahre" + diff --git a/rt/lib/RT/I18N/en.po b/rt/lib/RT/I18N/en.po new file mode 100644 index 000000000..ffdc5cce6 --- /dev/null +++ b/rt/lib/RT/I18N/en.po @@ -0,0 +1,88 @@ +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "Apr" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "Aug" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "Dec" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "Feb" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "Fri" + +#: html/Elements/Tabs:46 +msgid "Homepage" +msgstr "Home" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "Jan" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "Jul" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "Jun" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "Mar" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "May" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "Mon" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "Nov" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "Oct" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "Open" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "Home" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "Sat" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "Sep" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "Sun" + +#: lib/RT/Date.pm:391 +msgid "Thu." +msgstr "Thu" + +#: lib/RT/Date.pm:389 +msgid "Tue." +msgstr "Tue" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "Wed" + diff --git a/rt/lib/RT/I18N/es.po b/rt/lib/RT/I18N/es.po new file mode 100644 index 000000000..05006b12b --- /dev/null +++ b/rt/lib/RT/I18N/es.po @@ -0,0 +1,4749 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: RT 2.1.x\n" +"POT-Creation-Date: 2002-05-02 11:36+0800\n" +"PO-Revision-Date: 2003-03-23 12:38\n" +"Last-Translator: Tomà s Núñez Lirola <tomasnl@dsl.upc.es>\n" +"Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 +msgid "#" +msgstr "#" + +#: html/Admin/Queues/Scrip.html:55 +#. ($QueueObj->id) +msgid "#%1" +msgstr "#%1" + +#: html/Approvals/Elements/ShowDependency:50 html/Ticket/Display.html:26 html/Ticket/Display.html:30 +#. ($Ticket->Id, $Ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "#%1: %2" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "%1 %2" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($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:3438 lib/RT/Transaction_Overlay.pm:559 lib/RT/Transaction_Overlay.pm:601 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 added" +msgstr "Añadido %1 %2" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "Hace %1 %2" + +#: lib/RT/Ticket_Overlay.pm:3444 lib/RT/Transaction_Overlay.pm:566 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1 %2 ha cambiado a %3" + +#: lib/RT/Ticket_Overlay.pm:3441 lib/RT/Transaction_Overlay.pm:562 lib/RT/Transaction_Overlay.pm:607 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 deleted" +msgstr "%1 %2 borrado" + +#: html/Admin/Elements/EditScrips:44 html/Admin/Elements/ListGlobalScrips:28 +#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) +msgid "%1 %2 with template %3" +msgstr "%1 %2 con la plantilla %3" + +#: NOT FOUND IN SOURCE +msgid "%1 (%2) %3 this ticket\\n" +msgstr "%1 (%2) %3 este caso\\n" + +#: html/Search/Listing.html:57 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "%1 - %2 mostrados" + +#: bin/rt-crontool:169 bin/rt-crontool:176 bin/rt-crontool:182 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - An argument to pass to %2" +msgstr "%1 - Un parametro para pasar a %2" + +#: bin/rt-crontool:185 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "%1 - El estado de la salida actualiza STDOUT" + +#: bin/rt-crontool:179 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "%1 - Especifica el modulo de accion que quieres usar" + +#: bin/rt-crontool:173 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "%1 - Especifica el modulo de condicion que quieres usar" + +#: bin/rt-crontool:166 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "%1 - Especifica el modulo de busqueda que quieres usar" + +#: lib/RT/ScripAction_Overlay.pm:122 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "%1 ScripAction cargado" + +#: lib/RT/Ticket_Overlay.pm:3471 +#. ($args{'Value'}, $cf->Name) +msgid "%1 added as a value for %2" +msgstr "$1 añadido como un valor de %2" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on" +msgstr "%1 alias requieren un TicketId en el que trabajar" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on " +msgstr "%1 alias requieren un TicketId en el que trabajar " + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on (from %2) %3" +msgstr "%1 alias requieren un TicketId en el que trabajar (de %2) %3" + +#: lib/RT/Link_Overlay.pm:117 lib/RT/Link_Overlay.pm:124 +#. ($args{'Base'}) +#. ($args{'Target'}) +msgid "%1 appears to be a local object, but can't be found in the database" +msgstr "%1 parece ser un objeto local, pero no se encuentra en la base de datos" + +#: html/Ticket/Elements/ShowDates:52 lib/RT/Transaction_Overlay.pm:483 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%1 por %2" + +#: lib/RT/Transaction_Overlay.pm:537 lib/RT/Transaction_Overlay.pm:626 lib/RT/Transaction_Overlay.pm:635 lib/RT/Transaction_Overlay.pm:638 +#. ($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 ha cambiado de %2 a %3" + +#: lib/RT/Interface/Web.pm:857 +msgid "%1 could not be set to %2." +msgstr "%1 no se ha podido fijar a %2" + +#: NOT FOUND IN SOURCE +msgid "%1 couldn't init a transaction (%2)\\n" +msgstr "%1 no pudo iniciar una transacción (%2)\\n" + +#: lib/RT/Ticket_Overlay.pm:2813 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1 no pudo fijar el estado a resuelto. La base de datos de RT podrÃa ser inconsistente." + +#: html/Elements/MyTickets:25 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "Los %1 tickets de mayor prioridad que poseo... " + +#: html/Elements/MyRequests:25 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "Los %1 tickets de mayor prioridad que he pedido" + +#: bin/rt-crontool:161 +#. ($0) +msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." +msgstr "$1 es una herramienta para actuar sobre los tickets con una herramienta de planificacion externa, como crom" + +#: lib/RT/Queue_Overlay.pm:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1 ha dejado de ser un %2 para esta cola." + +#: lib/RT/Ticket_Overlay.pm:1570 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 ha dejado de ser un %2 para este ticket." + +#: lib/RT/Ticket_Overlay.pm:3527 +#. ($args{'Value'}, $cf->Name) +msgid "%1 is no longer a value for custom field %2" +msgstr "%1 ha dejado de ser un valor para campo personalizable %2" + +#: NOT FOUND IN SOURCE +msgid "%1 isn't a valid Queue id." +msgstr "%1 no es un identificador de Cola válido." + +#: html/Ticket/Elements/ShowBasics:36 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 min" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "%1 no mostrado" + +#: html/User/Elements/DelegateRights:76 +#. (loc($ObjectType =~ /^RT::(.*)$/)) +msgid "%1 rights" +msgstr "%1 privilegios" + +#: NOT FOUND IN SOURCE +msgid "%1 succeeded\\n" +msgstr "%1 exitoso\\n" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for $MessageId" +msgstr "%1 tipo desconocido para $MessageId" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for %2" +msgstr "%1 tipo desconocido para %2" + +#: NOT FOUND IN SOURCE +msgid "%1 was created without a CurrentUser\\n" +msgstr "%1 se creó sin CurrentUser\\n" + +#: lib/RT/Action/ResolveMembers.pm:42 +#. (ref $self) +msgid "%1 will resolve all members of a resolved group ticket." +msgstr "%1 resolverá todos los miembros de un grupo de tickets resueltos." + +#: NOT FOUND IN SOURCE +msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." +msgstr "%1 pondrá como pendiente una BASE [local] si es dependiente [o miembro] de una solicitud ligada." + +#: lib/RT/Transaction_Overlay.pm:435 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1: ningún archivo adjunto especificado" + +#: html/Ticket/Elements/ShowTransaction:102 +#. ($size) +msgid "%1b" +msgstr "%1b" + +#: html/Ticket/Elements/ShowTransaction:99 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "%1k" + +#: lib/RT/Ticket_Overlay.pm:1140 +#. ($args{'Status'}) +msgid "'%1' is an invalid value for status" +msgstr "'%1' es un valor inválido para el estado" + +#: NOT FOUND IN SOURCE +msgid "'%1' not a recognized action. " +msgstr "'%1' no es una acción reconocida. " + +#: NOT FOUND IN SOURCE +msgid "(Check box to delete group member)" +msgstr "(Marque la caja para borrar al miembro del grupo)" + +#: NOT FOUND IN SOURCE +msgid "(Check box to delete scrip)" +msgstr "(Marque la caja para borrar el scrip)" + +#: html/Admin/Elements/EditQueueWatchers:29 html/Admin/Elements/EditScrips:35 html/Admin/Elements/EditTemplates:36 html/Admin/Groups/Members.html:52 html/Ticket/Elements/EditLinks:33 html/Ticket/Elements/EditPeople:46 html/User/Groups/Members.html:55 +msgid "(Check box to delete)" +msgstr "(Marque la caja para borrar)" + +#: NOT FOUND IN SOURCE +msgid "(Check boxes to delete)" +msgstr "(Marque las cajas para borrar)" + +#: html/Ticket/Create.html:178 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(Introduzca los identificadores de ticket o URLs, separados por espacios)" + +#: html/Admin/Queues/Modify.html:54 html/Admin/Queues/Modify.html:60 +#. ($RT::CorrespondAddress) +#. ($RT::CommentAddress) +msgid "(If left blank, will default to %1" +msgstr "(Si se deja vacio, pasara por defecto a %1" + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "(Sin Valor)" + +#: html/Admin/Elements/EditCustomFields:33 html/Admin/Elements/ListGlobalCustomFields:32 +msgid "(No custom fields)" +msgstr "(No hay campos custom)" + +#: html/Admin/Groups/Members.html:50 html/User/Groups/Members.html:53 +msgid "(No members)" +msgstr "(Sin miembros)" + +#: html/Admin/Elements/EditScrips:32 html/Admin/Elements/ListGlobalScrips:32 +msgid "(No scrips)" +msgstr "(Sin scrips)" + +#: html/Admin/Elements/EditTemplates:31 +msgid "(No templates)" +msgstr "(Sin plantillas)" + +#: html/Ticket/Update.html:85 +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 "(Envia una copia oculta de esta actualizacion a una lista delimitada por comas de direcciones de email. <b>NO</b> cambia quien recibirá futuras actualizaciones)" + +#: 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 "(EnvÃa una copia oculta de esta actualización a una lista de direcciones de correo delimitada por comas. <b>No</b> cambia a quien recibirá futuras actualizaciones.)" + +#: html/Ticket/Create.html:79 +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 "(Envia una copia oculta de esta actualización a una lista delimitada por comas de direcciones de email administrativas. Estas personas <b>recibirán</b> las futuras actualizaciones.)" + +#: html/Ticket/Update.html:81 +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 "(Envia una copia oculta de esta actualización a una lista delimitada por comas de direcciones de email.<b>NO</b> cambia quien recibirá futuras actualizaciones." + +#: 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 "(Manda una copia de esta actualización a una lista de direcciones de correo delimitada por comas. <b>No</b> cambia a quien recibirá futuras actualizaciones.)" + +#: html/Ticket/Create.html:69 +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 "(Envia una copia de esta actualización a una lista de direcciones de correo delimitada por comas. Estas personas <b>recibirán</b> actualizaciones futuras." + +#: html/Admin/Groups/index.html:33 html/User/Groups/index.html:33 +msgid "(empty)" +msgstr "(vacÃo)" + +#: html/Admin/Users/index.html:39 +msgid "(no name listed)" +msgstr "(no hay nombres listados)" + +#: html/Elements/MyRequests:43 html/Elements/MyTickets:45 +msgid "(no subject)" +msgstr "(sin asunto)" + +#: html/Admin/Elements/SelectRights:48 html/Elements/SelectCustomFieldValue:30 html/Ticket/Elements/EditCustomField:59 html/Ticket/Elements/ShowCustomFields:36 lib/RT/Transaction_Overlay.pm:536 +msgid "(no value)" +msgstr "(sin valor)" + +#: html/Ticket/Elements/EditLinks:116 +msgid "(only one ticket)" +msgstr "(solo un ticket)" + +#: html/Elements/MyRequests:52 html/Elements/MyTickets:55 +msgid "(pending approval)" +msgstr "(pendiente de aprobacion)" + +#: html/Elements/MyRequests:54 html/Elements/MyTickets:57 +msgid "(pending other tickets)" +msgstr "(pendiente de otros tickets)" + +#: html/Admin/Users/Modify.html:50 +msgid "(required)" +msgstr "(requerido)" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "(untitled)" +msgstr "(sin titulo)" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I own..." +msgstr "Los 25 tickets de mayor prioridad que poseo..." + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I requested..." +msgstr "Los 25 tickets de mayor prioridad que he solicitado..." + +#: html/Ticket/Elements/ShowBasics:32 +msgid "<% $Ticket->Status%>" +msgstr "<% $Ticket->Status%>" + +#: html/Elements/SelectTicketTypes:27 +msgid "<% $_ %>" +msgstr "<% $_ %>" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:26 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"Nuevo ticket en\"> %1" + +#: etc/initialdata:203 +msgid "A blank template" +msgstr "Una plantilla en blanco" + +#: NOT FOUND IN SOURCE +msgid "ACE Deleted" +msgstr "ACE Borrado" + +#: NOT FOUND IN SOURCE +msgid "ACE Loaded" +msgstr "ACE Cargado" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be deleted" +msgstr "ACE no se pudo borrar" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be found" +msgstr "ACE no se encontró" + +#: lib/RT/ACE_Overlay.pm:157 lib/RT/Principal_Overlay.pm:181 +msgid "ACE not found" +msgstr "ACE no encontrado" + +#: lib/RT/ACE_Overlay.pm:831 +msgid "ACEs can only be created and deleted." +msgstr "ACEs solo pueden ser creadas o borradas." + +#: bin/rt-commit-handler:755 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "Abortando para prevenir modificaciones no intencionadas al ticket\\n" + +#: html/User/Elements/Tabs:32 +msgid "About me" +msgstr "Sobre mi" + +#: html/Admin/Users/Modify.html:80 +msgid "Access control" +msgstr "Control de acceso" + +#: html/Admin/Elements/EditScrip:57 +msgid "Action" +msgstr "Acción" + +#: lib/RT/Scrip_Overlay.pm:147 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "Acción %1 no encontrada" + +#: bin/rt-crontool:123 +msgid "Action committed." +msgstr "Action committed." + +#: bin/rt-crontool:119 +msgid "Action prepared..." +msgstr "Acción preparada..." + +#: html/Search/Bulk.html:92 +msgid "Add AdminCc" +msgstr "Añadir AdminCc" + +#: html/Search/Bulk.html:90 +msgid "Add Cc" +msgstr "Añadir Cc" + +#: html/Ticket/Create.html:114 html/Ticket/Update.html:100 +msgid "Add More Files" +msgstr "Añadir más archivos" + +#: html/Search/Bulk.html:88 +msgid "Add Requestor" +msgstr "Añadir solicitante" + +#: NOT FOUND IN SOURCE +msgid "Add a keyword selection to this queue" +msgstr "Añadir una seleccion de palabra clave a esta cola" + +#: NOT FOUND IN SOURCE +msgid "Add a new a global scrip" +msgstr "Añadir un nuevo scrip global" + +#: NOT FOUND IN SOURCE +msgid "Add a scrip to this queue" +msgstr "Añadir un scrip a esta cola" + +#: html/Admin/Global/Scrip.html:55 +msgid "Add a scrip which will apply to all queues" +msgstr "Añadir un scrip que se aplicará a todas las colas" + +#: html/Search/Bulk.html:118 +msgid "Add comments or replies to selected tickets" +msgstr "Añadir comentarios o respuestas a los tickets seleccionados" + +#: html/Admin/Groups/Members.html:42 html/User/Groups/Members.html:39 +msgid "Add members" +msgstr "Añadir miembro" + +#: html/Admin/Queues/People.html:66 html/Ticket/Elements/AddWatchers:28 +msgid "Add new watchers" +msgstr "Añadir nuevos observadores" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "AddNextState" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "Principal ha sido añadido como %1 para esta cola" + +#: lib/RT/Ticket_Overlay.pm:1454 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "Principal ha sido añadido como %1 para este ticket" + +#: html/Admin/Elements/ModifyUser:76 html/Admin/Users/Modify.html:122 html/User/Prefs.html:88 +msgid "Address1" +msgstr "Dirección 1" + +#: html/Admin/Elements/ModifyUser:78 html/Admin/Users/Modify.html:127 html/User/Prefs.html:90 +msgid "Address2" +msgstr "Dirección 2" + +#: html/Ticket/Create.html:74 +msgid "Admin Cc" +msgstr "Admin Cc" + +#: etc/initialdata:274 +msgid "Admin Comment" +msgstr "Admin Comment" + +#: etc/initialdata:256 +msgid "Admin Correspondence" +msgstr "Admin Correspondence" + +#: html/Admin/Queues/index.html:25 html/Admin/Queues/index.html:28 +msgid "Admin queues" +msgstr "Administración de colas" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "Administración de usuarios" + +#: html/Admin/Global/index.html:26 html/Admin/Global/index.html:28 +msgid "Admin/Global configuration" +msgstr "Adminsitración de la configuración global" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "Administración de Grupos" + +#: html/Admin/Queues/Modify.html:25 html/Admin/Queues/Modify.html:29 +msgid "Admin/Queue/Basics" +msgstr "Administración de una cola" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "AdminAllPersonalGroups" + +#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:39 html/Ticket/Update.html:50 lib/RT/ACE_Overlay.pm:89 +msgid "AdminCc" +msgstr "AdminCc" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "AdminComment" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "AdminCorrespondence" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "AdminCustomFields" +msgstr "AdminCustomFields" + +#: lib/RT/Group_Overlay.pm:146 +msgid "AdminGroup" +msgstr "AdminGroup" + +#: lib/RT/Group_Overlay.pm:148 +msgid "AdminGroupMembership" +msgstr "AdminGroupMembership" + +#: lib/RT/System.pm:59 +msgid "AdminOwnPersonalGroups" +msgstr "AdminOwnPersonalGroups" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "AdminQueue" +msgstr "AdminQueue" + +#: lib/RT/System.pm:60 +msgid "AdminUsers" +msgstr "AdminUsers" + +#: html/Admin/Queues/People.html:48 html/Ticket/Elements/EditPeople:54 +msgid "Administrative Cc" +msgstr "Cc Administrativa" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "Búsqueda avanzada" + +#: html/Elements/SelectDateRelation:36 +msgid "After" +msgstr "Después" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "Edad" + +#: html/Admin/Elements/EditCustomFields:96 +msgid "All Custom Fields" +msgstr "Todos los campos custom" + +#: html/Admin/Queues/index.html:53 +msgid "All Queues" +msgstr "Todas las colas" + +#: NOT FOUND IN SOURCE +msgid "Always sends a message to the requestors independent of message sender" +msgstr "Siempre envia un mensaje a los solicitantes independientemente del remitente del mensaje" + +#: html/Elements/Tabs:58 +msgid "Approval" +msgstr "Aprobacion" + +#: html/Approvals/Display.html:46 html/Approvals/Elements/Approve:27 html/Approvals/Elements/ShowDependency:42 html/Approvals/index.html:65 +#. ($Ticket->Id, $Ticket->Subject) +#. ($ticket->id, $msg) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Approval #%1: %2" +msgstr "Aprobacion #%1: %2" + +#: html/Approvals/index.html:54 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "Aprobación #%1: No se han guardado las notas debido a un error del sistema" + +#: html/Approvals/index.html:52 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "Aprobacion #%1: Notas guardadas" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "Detalles de la aprobación" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "Diagrama de la aprobación" + +#: html/Approvals/Elements/Approve:45 +msgid "Approve" +msgstr "Aprobar" + +#: etc/initialdata:431 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "Notas del aprobador: %1" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "Abr." + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "Abril" + +#: html/Elements/SelectSortOrder:35 +msgid "Ascending" +msgstr "Ascendente" + +#: html/Search/Bulk.html:127 html/SelfService/Update.html:36 html/Ticket/ModifyAll.html:83 html/Ticket/Update.html:100 +msgid "Attach" +msgstr "Adjunto" + +#: html/SelfService/Create.html:67 html/Ticket/Create.html:110 +msgid "Attach file" +msgstr "Adjuntar archivo" + +#: html/Ticket/Create.html:98 html/Ticket/Update.html:89 +msgid "Attached file" +msgstr "Archivo adjunto" + +#: html/SelfService/Attachment/dhandler:36 +msgid "Attachment '%1' could not be loaded" +msgstr "Archivo adjunto '%1' no pudo ser cargado" + +#: lib/RT/Transaction_Overlay.pm:443 +msgid "Attachment created" +msgstr "Archivo adjunto creado" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "Nombre del archivo adjunto" + +#: html/Ticket/Elements/ShowAttachments:26 +msgid "Attachments" +msgstr "Archivos adjuntos" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "Ago." + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "Agosto" + +#: html/Admin/Elements/ModifyUser:66 +msgid "AuthSystem" +msgstr "Sistema de autenticación" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "Autorespuesta" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "Autorespuesta a los solicitantes" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "AutoreplyToRequestors" + +#: NOT FOUND IN SOURCE +msgid "Bad PGP Signature: %1\\n" +msgstr "Firma PGP incorrecta: %1\\n" + +#: html/SelfService/Attachment/dhandler:40 +msgid "Bad attachment id. Couldn't find attachment '%1'\\n" +msgstr "Identificador de archivo adjunto erróneo. No se puede encontrar el archivo '%1'\\n" + +#: bin/rt-commit-handler:827 +#. ($val) +msgid "Bad data in %1" +msgstr "Datos incorrectos en %1" + +#: html/SelfService/Attachment/dhandler:43 +#. ($trans, $AttachmentObj->TransactionId()) +msgid "Bad transaction number for attachment. %1 should be %2\\n" +msgstr "Número de transacción incorrecta para el archivo adjunto. %1 debe ser %2\\n" + +#: html/Admin/Elements/GroupTabs:39 html/Admin/Elements/QueueTabs:39 html/Admin/Elements/UserTabs:38 html/Ticket/Elements/Tabs:90 html/User/Elements/GroupTabs:38 +msgid "Basics" +msgstr "Basicos" + +#: html/Ticket/Update.html:83 +msgid "Bcc" +msgstr "Bcc" + +#: html/Admin/Elements/EditScrip:88 html/Admin/Global/GroupRights.html:85 html/Admin/Global/Template.html:46 html/Admin/Global/UserRights.html:54 html/Admin/Groups/GroupRights.html:73 html/Admin/Groups/Members.html:81 html/Admin/Groups/Modify.html:56 html/Admin/Groups/UserRights.html:55 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:45 html/Admin/Queues/UserRights.html:54 html/User/Groups/Modify.html:56 +msgid "Be sure to save your changes" +msgstr "Asegúrese de salvar sus cambios" + +#: html/Elements/SelectDateRelation:34 lib/RT/CurrentUser.pm:322 +msgid "Before" +msgstr "Antes" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "Begin Approval" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "Vacio" + +#: html/Search/Listing.html:79 +msgid "Bookmarkable URL for this search" +msgstr "URL para guardar esta búsqueda en sus marcadores" + +#: html/Ticket/Elements/ShowHistory:39 html/Ticket/Elements/ShowHistory:45 +msgid "Brief headers" +msgstr "Encabezados breves" + +#: html/Search/Bulk.html:25 html/Search/Bulk.html:26 +msgid "Bulk ticket update" +msgstr "Actualización de varios tickets a la vez" + +#: lib/RT/User_Overlay.pm:1331 +msgid "Can not modify system users" +msgstr "No se pueden modificar los usuarios del sistema" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Can this principal see this queue" +msgstr "Can this principal see this queue" + +#: lib/RT/CustomField_Overlay.pm:144 +msgid "Can't add a custom field value without a name" +msgstr "No se puede agregar un campo personalizable si no tiene un nombre" + +#: lib/RT/Link_Overlay.pm:132 +msgid "Can't link a ticket to itself" +msgstr "No se puede ligar un ticket a sà mismo" + +#: lib/RT/Ticket_Overlay.pm:2787 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "No se puede fusionar dentro de un caso ya fusionado. Nunca deberia recibir este error" + +#: lib/RT/Ticket_Overlay.pm:2605 lib/RT/Ticket_Overlay.pm:2674 +msgid "Can't specifiy both base and target" +msgstr "No se puede especificar origen y destino al mismo tiempo" + +#: html/autohandler:112 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "No se puede crear el usuario: %1" + +#: etc/initialdata:50 html/Admin/Queues/People.html:44 html/SelfService/Create.html:51 html/SelfService/Display.html:50 html/Ticket/Create.html:64 html/Ticket/Elements/EditPeople:51 html/Ticket/Elements/ShowPeople:35 html/Ticket/Update.html:45 html/Ticket/Update.html:78 lib/RT/ACE_Overlay.pm:88 +msgid "Cc" +msgstr "Cc" + +#: html/SelfService/Prefs.html:31 +msgid "Change password" +msgstr "Cambiar contraseña" + +#: html/Ticket/Create.html:101 html/Ticket/Update.html:92 +msgid "Check box to delete" +msgstr "Check box to delete" + +#: html/Admin/Elements/SelectRights:31 +msgid "Check box to revoke right" +msgstr "Seleccione la caja para quitar el permiso" + +#: html/Ticket/Create.html:183 html/Ticket/Elements/EditLinks:131 html/Ticket/Elements/EditLinks:69 html/Ticket/Elements/ShowLinks:51 +msgid "Children" +msgstr "Hijo" + +#: html/Admin/Elements/ModifyUser:80 html/Admin/Users/Modify.html:132 html/User/Prefs.html:92 +msgid "City" +msgstr "Ciudad" + +#: html/Ticket/Elements/ShowDates:47 +msgid "Closed" +msgstr "Cerrado" + +#: html/SelfService/Elements/Tabs:60 +msgid "Closed requests" +msgstr "Solicitudes cerradas" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "No se entendió el comando!\\n" + +#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:153 +msgid "Comment" +msgstr "Comentario" + +#: html/Admin/Elements/ModifyQueue:45 html/Admin/Queues/Modify.html:58 +msgid "Comment Address" +msgstr "Dirección de comentario" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "Comentario no grabado" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Comment on tickets" +msgstr "Comentario sobre los tickets" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "CommentOnTicket" +msgstr "CommentOnTicket" + +#: html/Admin/Elements/ModifyUser:35 +msgid "Comments" +msgstr "Comentarios" + +#: html/Ticket/ModifyAll.html:70 html/Ticket/Update.html:70 +msgid "Comments (Not sent to requestors)" +msgstr "Comentarios (no se envÃan a los solicitantes)" + +#: html/Search/Bulk.html:122 +msgid "Comments (not sent to requestors)" +msgstr "Comentarios (no se envÃan a los solicitantes)" + +#: html/Elements/ViewUser:27 +#. ($name) +msgid "Comments about %1" +msgstr "Comentarios acerca de %1" + +#: html/Admin/Users/Modify.html:185 html/Ticket/Elements/ShowRequestor:44 +msgid "Comments about this user" +msgstr "Comentarios acerca de este usuario" + +#: lib/RT/Transaction_Overlay.pm:545 +msgid "Comments added" +msgstr "Comentarios añadidos" + +#: lib/RT/Action/Generic.pm:140 +msgid "Commit Stubbed" +msgstr "Acción realizada" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "Compilar restricciones" + +#: html/Admin/Elements/EditScrip:41 +msgid "Condition" +msgstr "Condición" + +#: bin/rt-crontool:109 +msgid "Condition matches..." +msgstr "La condicion coincide..." + +#: lib/RT/Scrip_Overlay.pm:160 +msgid "Condition not found" +msgstr "Condición no encontrada" + +#: html/Elements/Tabs:52 +msgid "Configuration" +msgstr "Configuración" + +#: html/SelfService/Prefs.html:33 +msgid "Confirm" +msgstr "Confirmar" + +#: html/Admin/Elements/ModifyUser:60 +msgid "ContactInfoSystem" +msgstr "Información de contacto" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "Fecha de contacto '%1' no pudo ser leida" + +#: html/Admin/Elements/ModifyTemplate:44 html/Ticket/ModifyAll.html:87 +msgid "Content" +msgstr "Contenido" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "No se pudo crear grupo" + +#: etc/initialdata:266 +msgid "Correspondence" +msgstr "Correspondencia" + +#: html/Admin/Elements/ModifyQueue:39 html/Admin/Queues/Modify.html:51 +msgid "Correspondence Address" +msgstr "Dirección de corresponencia" + +#: lib/RT/Transaction_Overlay.pm:541 +msgid "Correspondence added" +msgstr "Correspondencia agregada" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "Correspondencia no guardada" + +#: lib/RT/Ticket_Overlay.pm:3458 +msgid "Could not add new custom field value for ticket. " +msgstr "No se pudo añadir un nuevo valor de campo personalizable para el ticket. " + +#: NOT FOUND IN SOURCE +msgid "Could not add new custom field value for ticket. %1 " +msgstr "No se pudo añadir un nuevo valor de campo personalizable para el ticket. %1 " + +#: lib/RT/Ticket_Overlay.pm:2963 lib/RT/Ticket_Overlay.pm:2971 lib/RT/Ticket_Overlay.pm:2987 +msgid "Could not change owner. " +msgstr "No se pudo cambiar el propietario. " + +#: html/Admin/Elements/EditCustomField:68 html/Admin/Elements/EditCustomFields:166 +#. ($msg) +msgid "Could not create CustomField" +msgstr "No se puede crear un CampoPersonalizable" + +#: html/User/Groups/Modify.html:77 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 +msgid "Could not create group" +msgstr "No se pudo crear el grupo" + +#: html/Admin/Global/Template.html:75 html/Admin/Queues/Template.html:72 +#. ($msg) +msgid "Could not create template: %1" +msgstr "No se pudo crear la plantilla: %1" + +#: lib/RT/Ticket_Overlay.pm:1073 lib/RT/Ticket_Overlay.pm:333 +msgid "Could not create ticket. Queue not set" +msgstr "No se pudo crear el ticket. Cola no seleccionada" + +#: lib/RT/User_Overlay.pm:208 lib/RT/User_Overlay.pm:220 lib/RT/User_Overlay.pm:238 lib/RT/User_Overlay.pm:414 +msgid "Could not create user" +msgstr "No se pudo crear el usuario" + +#: NOT FOUND IN SOURCE +msgid "Could not create watcher for requestor" +msgstr "No se pudo crear un observador para el solicitante" + +#: NOT FOUND IN SOURCE +msgid "Could not find a ticket with id %1" +msgstr "No se pudo encontrar un ticket con identificador $1" + +#: NOT FOUND IN SOURCE +msgid "Could not find group %1." +msgstr "No se pudo encontrar el grupo %1." + +#: lib/RT/Queue_Overlay.pm:621 lib/RT/Ticket_Overlay.pm:1422 +msgid "Could not find or create that user" +msgstr "No se pudo encontrar o crear el usuario" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1501 +msgid "Could not find that principal" +msgstr "No se pudo encontrar ese principal" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "No se pudo encontrar el usuario %1." + +#: html/Admin/Groups/Members.html:88 html/User/Groups/Members.html:90 html/User/Groups/Modify.html:82 +msgid "Could not load group" +msgstr "No se puede cargar el grupo" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "No se pudo hacer ese principal un %1 para esta cola" + +#: lib/RT/Ticket_Overlay.pm:1443 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "No se pudo hacer ese principal un %1 para este ticket" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "No se pudo quitar ese principal como un %1 para esta cola" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "No se pudo quitar ese principal como un %1 para este ticket" + +#: lib/RT/Group_Overlay.pm:985 +msgid "Couldn't add member to group" +msgstr "No se pudo agregar el miembro al grupo" + +#: lib/RT/Ticket_Overlay.pm:3468 lib/RT/Ticket_Overlay.pm:3524 +#. ($Msg) +msgid "Couldn't create a transaction: %1" +msgstr "No se pudo crear la transacción: %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't figure out what to do from gpg's reply\\n" +msgstr "No se pudo averiguar que hacer a partir de la firma gpg de la respuesta" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find group\\n" +msgstr "No se pudo encontrar el grupo\\n" + +#: lib/RT/Interface/Web.pm:866 +msgid "Couldn't find row" +msgstr "No se pudo encontrar la fila" + +#: lib/RT/Group_Overlay.pm:959 +msgid "Couldn't find that principal" +msgstr "No pudo enconcontrar ese principal" + +#: lib/RT/CustomField_Overlay.pm:175 +msgid "Couldn't find that value" +msgstr "No se pudo encontrar ese valor" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find that watcher" +msgstr "No se pudo encontrar ese observador" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find user\\n" +msgstr "No se pudo encontrar el usuario\\n" + +#: lib/RT/CurrentUser.pm:112 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "No se pudo cargar %1 desde la base de datos de usuarios.\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load KeywordSelects." +msgstr "No se pudo cargar KeywordSelects" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load RT config file '%1' %2" +msgstr "No se pudo cargar el archivo de configuración de RT '%1' %2" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load Scrips." +msgstr "No se pudieron cargar los Scrips." + +#: html/Admin/Groups/GroupRights.html:88 html/Admin/Groups/UserRights.html:75 +#. ($id) +msgid "Couldn't load group %1" +msgstr "No se pudo cargar el grupo %1" + +#: lib/RT/Link_Overlay.pm:175 lib/RT/Link_Overlay.pm:184 lib/RT/Link_Overlay.pm:211 +msgid "Couldn't load link" +msgstr "No se puedo cargar el enlace" + +#: html/Admin/Elements/EditCustomFields:147 html/Admin/Queues/People.html:121 +#. ($id) +msgid "Couldn't load queue" +msgstr "No se pudo cargar la cola" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:72 +#. ($id) +msgid "Couldn't load queue %1" +msgstr "No se pudo cargar la cola %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "No se pudo cargar el scrip" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "No se pudo cargar la plantilla" + +#: html/Admin/Users/Prefs.html:79 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "No se pudo cargar ese usuario (%1)" + +#: html/SelfService/Display.html:166 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "No se pudo cargar el ticket '%1'" + +#: html/Admin/Elements/ModifyUser:86 html/Admin/Users/Modify.html:149 html/User/Prefs.html:98 +msgid "Country" +msgstr "PaÃs" + +#: html/Admin/Elements/CreateUserCalled:26 html/Ticket/Create.html:135 html/Ticket/Create.html:195 +msgid "Create" +msgstr "Crear" + +#: etc/initialdata:128 +msgid "Create Tickets" +msgstr "Crear Tickets" + +#: html/Admin/Elements/EditCustomField:58 +msgid "Create a CustomField" +msgstr "Crear CampoPersonalizable" + +#: html/Admin/Queues/CustomField.html:48 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "Crear un campo personalizables para la cola %1" + +#: html/Admin/Global/CustomField.html:48 +msgid "Create a CustomField which applies to all queues" +msgstr "Crear un campo personalizable que se aplique a todas las colas" + +#: NOT FOUND IN SOURCE +msgid "Create a new Custom Field" +msgstr "Crear un nuevo campo personalizable" + +#: NOT FOUND IN SOURCE +msgid "Create a new global scrip" +msgstr "Crear un nuevo scrip global" + +#: html/Admin/Groups/Modify.html:67 html/Admin/Groups/Modify.html:93 +msgid "Create a new group" +msgstr "Creat un nuevo grupo" + +#: html/User/Groups/Modify.html:67 html/User/Groups/Modify.html:92 +msgid "Create a new personal group" +msgstr "Crear un nuevo grupo personal" + +#: NOT FOUND IN SOURCE +msgid "Create a new queue" +msgstr "Crear una nueva cola" + +#: NOT FOUND IN SOURCE +msgid "Create a new scrip" +msgstr "Crear un nuevo scrip" + +#: NOT FOUND IN SOURCE +msgid "Create a new template" +msgstr "Crear una nueva plantilla" + +#: html/SelfService/Create.html:30 html/Ticket/Create.html:25 html/Ticket/Create.html:28 html/Ticket/Create.html:36 +msgid "Create a new ticket" +msgstr "Crear un nuevo ticket" + +#: html/Admin/Users/Modify.html:214 html/Admin/Users/Modify.html:241 +msgid "Create a new user" +msgstr "Crear un nuevo usuario" + +#: html/Admin/Queues/Modify.html:103 +msgid "Create a queue" +msgstr "Crear una cola" + +#: NOT FOUND IN SOURCE +msgid "Create a queue called" +msgstr "Crear una cola llamada " + +#: html/SelfService/Create.html:25 html/SelfService/Create.html:27 +msgid "Create a request" +msgstr "Crear una solicitud" + +#: html/Admin/Queues/Scrip.html:59 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "Crear un scrip para la cola %1" + +#: html/Admin/Global/Template.html:69 html/Admin/Queues/Template.html:65 +msgid "Create a template" +msgstr "Crear una plantilla" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1 / %2 / %3 " +msgstr "Creación fallida: %1 / %2 / %3 " + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1/%2/%3" +msgstr "Creación fallida: %1 / %2 / %3 " + +#: etc/initialdata:130 +msgid "Create new tickets based on this scrip's template" +msgstr "Crear nuevos tickets basados en esta plantilla de scrip" + +#: html/SelfService/Create.html:81 +msgid "Create ticket" +msgstr "Crear ticket" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Create tickets in this queue" +msgstr "Crear tickets en esta cola" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Create, delete and modify custom fields" +msgstr "Crear, borrar y modifical campos personalizables" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "Create, delete and modify queues" +msgstr "Crear, borrar y modificar colas" + +#: NOT FOUND IN SOURCE +msgid "Create, delete and modify the members of any user's personal groups" +msgstr "Crear, borrar y modificar los miembros de cualquier grupo personal de usuario" + +#: lib/RT/System.pm:59 +msgid "Create, delete and modify the members of personal groups" +msgstr "Crear, borrar y modificar los miembros de los grupos personales" + +#: lib/RT/System.pm:60 +msgid "Create, delete and modify users" +msgstr "Crear, borrar y modificar usuarios" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "CreateTicket" +msgstr "CreateTicket" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1167 +msgid "Created" +msgstr "Creado" + +#: html/Admin/Elements/EditCustomField:71 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "CampoPersonalizable %1 creado" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "Plantilla %1 creada" + +#: html/Ticket/Elements/EditLinks:28 +msgid "Current Relationships" +msgstr "Relaciones actuales" + +#: html/Admin/Elements/EditScrips:30 +msgid "Current Scrips" +msgstr "Scrips actuales" + +#: html/Admin/Groups/Members.html:39 html/User/Groups/Members.html:42 +msgid "Current members" +msgstr "Miembros actuales" + +#: html/Admin/Elements/SelectRights:29 +msgid "Current rights" +msgstr "Permisos actuales" + +#: html/Search/Listing.html:71 +msgid "Current search criteria" +msgstr "Criterio de busqueda actual" + +#: html/Admin/Queues/People.html:41 html/Ticket/Elements/EditPeople:45 +msgid "Current watchers" +msgstr "Observadores actuales" + +#: html/Admin/Global/CustomField.html:55 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "Campo personalizable #%1" + +#: html/Admin/Elements/QueueTabs:53 html/Admin/Elements/SystemTabs:40 html/Admin/Global/index.html:50 html/Ticket/Elements/ShowSummary:35 +msgid "Custom Fields" +msgstr "Campos personalizables" + +#: html/Admin/Elements/EditScrip:73 +msgid "Custom action cleanup code" +msgstr "Codigo de limpieza de accion personalizable" + +#: html/Admin/Elements/EditScrip:65 +msgid "Custom action preparation code" +msgstr "Codigo de preparacion de accion personalizable" + +#: html/Admin/Elements/EditScrip:49 +msgid "Custom condition" +msgstr "Condicion personalizable" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "Campo personalizado %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "Campo personalizado %1 tiene un valor." + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "Campo personalizado %1 no tiene un valor." + +#: lib/RT/Ticket_Overlay.pm:3360 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "Campo personalizado %1 no encontrado" + +#: html/Admin/Elements/EditCustomFields:197 +msgid "Custom field deleted" +msgstr "Campo personalizable borrado" + +#: lib/RT/Ticket_Overlay.pm:3510 +msgid "Custom field not found" +msgstr "Campo personalizado no encontrado" + +#: lib/RT/CustomField_Overlay.pm:283 +#. ($args{'Content'}, $self->Name) +msgid "Custom field value %1 could not be found for custom field %2" +msgstr "El valor del campo %1 no pudo ser encontrado para el campo %2" + +#: NOT FOUND IN SOURCE +msgid "Custom field value changed from %1 to %2" +msgstr "Valor del campo cambiado de %1 a %2" + +#: lib/RT/CustomField_Overlay.pm:185 +msgid "Custom field value could not be deleted" +msgstr "El valor del campo no pudo ser borrado" + +#: lib/RT/CustomField_Overlay.pm:289 +msgid "Custom field value could not be found" +msgstr "El valor del campo no pudo se encontrado" + +#: lib/RT/CustomField_Overlay.pm:183 lib/RT/CustomField_Overlay.pm:291 +msgid "Custom field value deleted" +msgstr "Valor del campo borrado" + +#: lib/RT/Transaction_Overlay.pm:550 +msgid "CustomField" +msgstr "CustomField" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "Error de datos" + +#: html/Ticket/Create.html:161 html/Ticket/Elements/ShowSummary:53 html/Ticket/Elements/Tabs:93 html/Ticket/ModifyAll.html:44 +msgid "Dates" +msgstr "Fechas" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "Dic." + +#: NOT FOUND IN SOURCE +msgid "December" +msgstr "Diciembre" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "Plantilla de autorespuesta por defecto" + +#: etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "Plantilla de autorespuesta por defect" + +#: etc/initialdata:275 +msgid "Default admin comment template" +msgstr "Plantilla de comentario de admin por defecto" + +#: etc/initialdata:257 +msgid "Default admin correspondence template" +msgstr "Plantilla de correspondencia de admin por defecto" + +#: etc/initialdata:267 +msgid "Default correspondence template" +msgstr "Plantilla de correspondencia por defecto" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "Plantilla de trasacciones por defecto" + +#: lib/RT/Transaction_Overlay.pm:645 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "Por defecto: %1/%2 ha cambiado de %3 a %4" + +#: html/User/Delegation.html:25 html/User/Delegation.html:28 +msgid "Delegate rights" +msgstr "Delegar derechos" + +#: lib/RT/System.pm:63 +msgid "Delegate specific rights which have been granted to you." +msgstr "Delegar derechos especificos que te han sido concedidos" + +#: lib/RT/System.pm:63 +msgid "DelegateRights" +msgstr "DelegateRights" + +#: html/User/Elements/Tabs:38 +msgid "Delegation" +msgstr "Delegar" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "Borrar" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "Delete tickets" +msgstr "Borrar tickets" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "DeleteTicket" +msgstr "DeleteTicket" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "Al borrar este objeto, se puede romper la integridad referencial" + +#: lib/RT/Queue_Overlay.pm:292 +msgid "Deleting this object would break referential integrity" +msgstr "Al borrar este objeto, se romperá la integridad referencial" + +#: lib/RT/User_Overlay.pm:430 +msgid "Deleting this object would violate referential integrity" +msgstr "Al borrar este objeto, se violará la integridad referencial" + +#: NOT FOUND IN SOURCE +msgid "Deleting this object would violate referential integrity." +msgstr "Al borrar este objeto, se violará la integridad referencial." + +#: NOT FOUND IN SOURCE +msgid "Deleting this object would violate referential integrity. That's bad." +msgstr "Al borrar este objeto, se violará la integridad referencial. Eso es malo." + +#: html/Approvals/Elements/Approve:46 +msgid "Deny" +msgstr "Denegar" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/EditLinks:123 html/Ticket/Elements/EditLinks:47 html/Ticket/Elements/ShowDependencies:32 html/Ticket/Elements/ShowLinks:35 +msgid "Depended on by" +msgstr "Dependen de este ticket" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "Dependencias: \\n" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:180 html/Ticket/Elements/EditLinks:119 html/Ticket/Elements/EditLinks:36 html/Ticket/Elements/ShowDependencies:25 html/Ticket/Elements/ShowLinks:27 +msgid "Depends on" +msgstr "Depende de" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "DependsOn" + +#: html/Elements/SelectSortOrder:35 +msgid "Descending" +msgstr "Descendiente" + +#: html/SelfService/Create.html:75 html/Ticket/Create.html:119 +msgid "Describe the issue below" +msgstr "Describa el problema debajo" + +#: html/Admin/Elements/AddCustomFieldValue:27 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyQueue:36 html/Admin/Elements/ModifyTemplate:36 html/Admin/Groups/Modify.html:49 html/Admin/Queues/Modify.html:48 html/Elements/SelectGroups:27 html/User/Groups/Modify.html:49 +msgid "Description" +msgstr "Descripción" + +#: html/SelfService/Elements/MyRequests:44 +msgid "Details" +msgstr "Detalles" + +#: html/Ticket/Elements/Tabs:85 +msgid "Display" +msgstr "Despliegue" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Display Access Control List" +msgstr "Mostrar Lista de Control de Acceso" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Display Scrip templates for this queue" +msgstr "Mostrar plantillas de scrip para esta cola" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Display Scrips for this queue" +msgstr "Mostrar scrips para esta cola" + +#: html/Ticket/Elements/ShowHistory:35 +msgid "Display mode" +msgstr "Modo de despliegue" + +#: html/SelfService/Display.html:25 html/SelfService/Display.html:29 +#. ($Ticket->id) +msgid "Display ticket #%1" +msgstr "Despliega ticket #%1" + +#: lib/RT/System.pm:54 +msgid "Do anything and everything" +msgstr "Hacer cualquier cosa y todo" + +#: html/Elements/Refresh:30 +msgid "Don't refresh this page." +msgstr "No recargar esta página" + +#: html/Search/Elements/PickRestriction:114 +msgid "Don't show search results" +msgstr "No mostrar los resultados de la busqueda" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "Download" +msgstr "Descargar" + +#: html/Elements/SelectDateType:32 html/Ticket/Create.html:167 html/Ticket/Elements/EditDates:45 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1171 +msgid "Due" +msgstr "Retraso" + +#: NOT FOUND IN SOURCE +msgid "Due date '%1' could not be parsed" +msgstr "La fecha de retraso '%1' no pudo ser leida" + +#: bin/rt-commit-handler:754 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "ERROR: No se pudo cargar el ticket '%1': %2.\\n" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "Editar" + +#: html/Admin/Queues/CustomFields.html:45 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "Editar campos personalizados para %1" + +#: html/Ticket/ModifyLinks.html:36 +msgid "Edit Relationships" +msgstr "Editar relaciones" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "Editar plantillas para la cola %1" + +#: NOT FOUND IN SOURCE +msgid "Edit keywords" +msgstr "Editar palabras clave" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "Editar acciones" + +#: html/Admin/Global/index.html:46 +msgid "Edit system templates" +msgstr "Editar plantillas del sistema" + +#: NOT FOUND IN SOURCE +msgid "Edit templates for %1" +msgstr "Editar plantillas para %1" + +#: html/Admin/Elements/ModifyQueue:25 html/Admin/Queues/Modify.html:117 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "Editando configuración para la cola %1" + +#: html/Admin/Elements/ModifyUser:25 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "Editando configuración para el usuario %1" + +#: html/Admin/Elements/EditCustomField:74 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "Editando campo %1" + +#: html/Admin/Groups/Members.html:32 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "Editando los miembros del grupo %1" + +#: html/User/Groups/Members.html:129 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "Editando los miembros para el grupo personal %1" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "Editando plantilla %1" + +#: lib/RT/Ticket_Overlay.pm:2615 lib/RT/Ticket_Overlay.pm:2683 +msgid "Either base or target must be specified" +msgstr "La base o el destinatario deben ser especificados" + +#: html/Admin/Users/Modify.html:53 html/Admin/Users/Prefs.html:46 html/Elements/SelectUsers:27 html/Ticket/Elements/AddWatchers:56 html/User/Prefs.html:42 +msgid "Email" +msgstr "Correo" + +#: lib/RT/User_Overlay.pm:188 +msgid "Email address in use" +msgstr "La dirección de correo ya está en uso" + +#: html/Admin/Elements/ModifyUser:42 +msgid "EmailAddress" +msgstr "Correo Electrónico" + +#: html/Admin/Elements/ModifyUser:54 +msgid "EmailEncoding" +msgstr "Codificación para el correo" + +#: html/Admin/Elements/EditCustomField:36 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "Habilitado (Desmarcar esta caja deshabilita este campo personalizable)" + +#: html/Admin/Groups/Modify.html:53 html/User/Groups/Modify.html:53 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "Habilitado (Desmarcar esta caja deshabilita este campo personalizable)" + +#: html/Admin/Queues/Modify.html:84 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "Habilitado (Desmarcar esta caja, deshabilita esta cola)" + +#: html/Admin/Elements/EditCustomFields:99 +msgid "Enabled Custom Fields" +msgstr "Campos Personalizables Habilitados" + +#: html/Admin/Queues/index.html:56 +msgid "Enabled Queues" +msgstr "Colas habilitadas" + +#: html/Admin/Elements/EditCustomField:90 html/Admin/Groups/Modify.html:117 html/Admin/Queues/Modify.html:138 html/Admin/Users/Modify.html:283 html/User/Groups/Modify.html:117 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "Estado %1 habilitado" + +#: lib/RT/CustomField_Overlay.pm:361 +msgid "Enter multiple values" +msgstr "Introducir multiples valores" + +#: lib/RT/CustomField_Overlay.pm:358 +msgid "Enter one value" +msgstr "Introducir un valor" + +#: html/Ticket/Elements/EditLinks:112 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "Ingrese los números de ticket o las URL que llevan hacia el ticket. Separe multiples entradas con espacios" + +#: html/Elements/Login:29 html/SelfService/Error.html:25 html/SelfService/Error.html:26 +msgid "Error" +msgstr "Error" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "Error añadiendo observador" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "Error en los parámetros para Queue->AddWatcher" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "Error en los parámetros para Queue->DelWatcher" + +#: lib/RT/Ticket_Overlay.pm:1356 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "Error en los parámetros para Queue->AddWatcher" + +#: lib/RT/Ticket_Overlay.pm:1532 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "Error en los parámetros para Queue->DelWatcher" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "Todos" + +#: bin/rt-crontool:194 +msgid "Example:" +msgstr "Ejemplo" + +#: html/Admin/Elements/ModifyUser:64 +msgid "ExternalAuthId" +msgstr "ExternalAuthId" + +#: html/Admin/Elements/ModifyUser:58 +msgid "ExternalContactInfoId" +msgstr "ExternalContactInfoId" + +#: html/Admin/Users/Modify.html:73 +msgid "Extra info" +msgstr "Información extra" + +#: lib/RT/User_Overlay.pm:302 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "Problema para encontrar el pseudogrupo de usuarios 'Privileged'" + +#: lib/RT/User_Overlay.pm:309 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "Problema para encontrar el pseudogrupo de usuarios 'Unprivileged'" + +#: bin/rt-crontool:138 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "Error al cargar el modulo %1. (%2)" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "Feb." + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "Febrero" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "Fin" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:59 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "Prioridad Final" + +#: lib/RT/Ticket_Overlay.pm:1162 +msgid "FinalPriority" +msgstr "FinalPriority" + +#: html/Admin/Queues/People.html:61 html/Ticket/Elements/EditPeople:34 +msgid "Find group whose" +msgstr "Encontrar grupo que" + +#: html/Elements/Quicksearch:25 +msgid "Find new/open tickets" +msgstr "Encontrar tickets nuevos/abiertos" + +#: html/Admin/Queues/People.html:57 html/Admin/Users/index.html:46 html/Ticket/Elements/EditPeople:30 +msgid "Find people whose" +msgstr "Encontrar gente que" + +#: html/Search/Listing.html:108 +msgid "Find tickets" +msgstr "Encontrar tickets" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "Aprobacion final" + +#: html/Ticket/Elements/Tabs:58 +msgid "First" +msgstr "Primero" + +#: html/Search/Listing.html:41 +msgid "First page" +msgstr "Primera página" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "Foo Bar Baz" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "Foo!" + +#: html/Search/Bulk.html:87 +msgid "Force change" +msgstr "Forzar cambio" + +#: html/Search/Listing.html:106 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "Encontrado %quant(%1,ticket)" + +#: lib/RT/Interface/Web.pm:868 +msgid "Found Object" +msgstr "Objeto encontrado" + +#: html/Admin/Elements/ModifyUser:44 +msgid "FreeformContactInfo" +msgstr "FreeformContactInfo" + +#: lib/RT/CustomField_Overlay.pm:38 +msgid "FreeformMultiple" +msgstr "FreeformMultiple" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformSingle" +msgstr "FreeformSingle" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "Vie." + +#: html/Ticket/Elements/ShowHistory:41 html/Ticket/Elements/ShowHistory:51 +msgid "Full headers" +msgstr "Encabezados completos" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "Obteniendo el usuario de la firma pgp" + +#: lib/RT/Transaction_Overlay.pm:595 +#. ($New->Name) +msgid "Given to %1" +msgstr "Given to %1" + +#: html/Admin/Elements/Tabs:41 html/Admin/index.html:38 +msgid "Global" +msgstr "Global" + +#: NOT FOUND IN SOURCE +msgid "Global Keyword Selections" +msgstr "Seleccion de palabras clave globales" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "Acciones Globales" + +#: html/Admin/Elements/SelectTemplate:38 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "Plantilla global" + +#: html/Admin/Elements/EditCustomFields:75 html/Admin/Queues/People.html:59 html/Admin/Queues/People.html:63 html/Admin/Queues/index.html:44 html/Admin/Users/index.html:49 html/Ticket/Elements/EditPeople:32 html/Ticket/Elements/EditPeople:36 html/index.html:41 +msgid "Go!" +msgstr " Ir " + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "Firma pgp correcta de %1\\n" + +#: html/Search/Listing.html:50 +msgid "Goto page" +msgstr "Ir a página" + +#: html/Elements/GotoTicket:25 html/SelfService/Elements/GotoTicket:25 +msgid "Goto ticket" +msgstr "Ir a ticket" + +#: html/Ticket/Elements/AddWatchers:46 html/User/Elements/DelegateRights:78 +msgid "Group" +msgstr "Grupo" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "Grupo %1 %2: %3" + +#: html/Admin/Elements/GroupTabs:45 html/Admin/Elements/QueueTabs:57 html/Admin/Elements/SystemTabs:44 html/Admin/Global/index.html:55 +msgid "Group Rights" +msgstr "Derechos del grupo" + +#: lib/RT/Group_Overlay.pm:965 +msgid "Group already has member" +msgstr "El grupo ya tiene miembros" + +#: NOT FOUND IN SOURCE +msgid "Group could not be created." +msgstr "El grupo no se pudo crear" + +#: html/Admin/Groups/Modify.html:77 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "El grupo no se pudo crear: %1" + +#: lib/RT/Group_Overlay.pm:497 +msgid "Group created" +msgstr "Grupo creado" + +#: lib/RT/Group_Overlay.pm:1133 +msgid "Group has no such member" +msgstr "El grupo no tiene este miembro" + +#: lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1429 lib/RT/Ticket_Overlay.pm:1507 +msgid "Group not found" +msgstr "Grupo no encontrado" + +#: NOT FOUND IN SOURCE +msgid "Group not found.\\n" +msgstr "Grupo no entontrado\\n" + +#: NOT FOUND IN SOURCE +msgid "Group not specified.\\n" +msgstr "Grupo no especificado\\n" + +#: html/Admin/Elements/SelectNewGroupMembers:35 html/Admin/Elements/Tabs:35 html/Admin/Groups/Members.html:64 html/Admin/Queues/People.html:83 html/Admin/index.html:32 html/User/Groups/Members.html:67 +msgid "Groups" +msgstr "Grupos" + +#: lib/RT/Group_Overlay.pm:971 +msgid "Groups can't be members of their members" +msgstr "Los grupos no pueden ser miembros de sus propios miembros" + +#: lib/RT/Interface/CLI.pm:73 lib/RT/Interface/CLI.pm:73 +msgid "Hello!" +msgstr "Hola!" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "Hola, %1" + +#: html/Ticket/Elements/ShowHistory:30 html/Ticket/Elements/Tabs:88 +msgid "History" +msgstr "Historial" + +#: html/Admin/Elements/ModifyUser:68 +msgid "HomePhone" +msgstr "Tel Casa" + +#: html/Elements/Tabs:46 +msgid "Homepage" +msgstr "Inicio" + +#: lib/RT/Base.pm:74 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "Tengo %quant(%1,concrete mixer)." + +#: NOT FOUND IN SOURCE +msgid "I have [quant,_1,concrete mixer]." +msgstr "Tengo [quant,_1,concrete mixer]." + +#: html/Ticket/Elements/ShowBasics:27 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "Id" + +#: html/Admin/Users/Modify.html:44 html/User/Prefs.html:39 +msgid "Identity" +msgstr "Identidad" + +#: etc/upgrade/2.1.71:86 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "Si una aprobacion es rechazada, rechazar la original y borrar las aprobaciones pendientes" + +#: bin/rt-crontool:190 +msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." +msgstr "Si esta herramienta estaba setgid, un usuario hostil local podria usar esta herramienta para conseguir acceso administrativo a RT." + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "If you've updated anything above, be sure to" +msgstr "Si ha actualizado algo más arriba, no olvide" + +#: lib/RT/Interface/Web.pm:860 +msgid "Illegal value for %1" +msgstr "Valor ilegal para %1" + +#: lib/RT/Interface/Web.pm:863 +msgid "Immutable field" +msgstr "Campo inmutable" + +#: html/Admin/Elements/EditCustomFields:74 +msgid "Include disabled custom fields in listing." +msgstr "Incluir campos personalizables deshabilitados en el listado." + +#: html/Admin/Queues/index.html:43 +msgid "Include disabled queues in listing." +msgstr "Incluir colas deshabilitadas en el listado" + +#: html/Admin/Users/index.html:47 +msgid "Include disabled users in search." +msgstr "Incluir usuarios deshabilitados en la búsqueda" + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "Prioridad inicial" + +#: lib/RT/Ticket_Overlay.pm:1161 lib/RT/Ticket_Overlay.pm:1163 +msgid "InitialPriority" +msgstr "InitialPriority" + +#: lib/RT/ScripAction_Overlay.pm:105 +msgid "Input error" +msgstr "Error de entrada" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "Interest noted" + +#: lib/RT/Ticket_Overlay.pm:3729 +msgid "Internal Error" +msgstr "Error interno" + +#: lib/RT/Record.pm:143 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "Error interno: %1" + +#: lib/RT/Group_Overlay.pm:644 +msgid "Invalid Group Type" +msgstr "Tipo de grupo inválido" + +#: lib/RT/Principal_Overlay.pm:128 +msgid "Invalid Right" +msgstr "Derechos inválidos" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "Tipo inválido" + +#: lib/RT/Interface/Web.pm:865 +msgid "Invalid data" +msgstr "Datos no válidos" + +#: lib/RT/Ticket_Overlay.pm:438 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "Propietario inválido. Estableciéndolo a 'nobody'." + +#: lib/RT/Scrip_Overlay.pm:134 lib/RT/Template_Overlay.pm:251 +msgid "Invalid queue" +msgstr "Ãrea inválida" + +#: lib/RT/ACE_Overlay.pm:244 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:270 lib/RT/ACE_Overlay.pm:275 +msgid "Invalid right" +msgstr "Permiso inválido" + +#: lib/RT/Record.pm:118 +#. ($key) +msgid "Invalid value for %1" +msgstr "Valor inválido para %1" + +#: lib/RT/Ticket_Overlay.pm:3367 +msgid "Invalid value for custom field" +msgstr "Valor inválido para el campo personalizable" + +#: lib/RT/Ticket_Overlay.pm:345 +msgid "Invalid value for status" +msgstr "Valor inválido para el estado" + +#: bin/rt-crontool:191 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "Es increiblemente importante que los usuarios sin privilegios no puedan ejecutar esta herramienta" + +#: bin/rt-crontool:192 +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 "Es recomendable crear un usuario unix sin privilegios que pertenezca al grupo correcto y que tenga aceso a ejecutar esta herramienta" + +#: bin/rt-crontool:163 +msgid "It takes several arguments:" +msgstr "Tiene varios parametros:" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "Items pendientes de mi aprobación" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "Ene." + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "Enero" + +#: lib/RT/Group_Overlay.pm:149 +msgid "Join or leave this group" +msgstr "Unirse o abandonar este grupo" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "Jul." + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "Julio" + +#: html/Ticket/Elements/Tabs:99 +msgid "Jumbo" +msgstr "Todo" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "Jun." + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "Junio" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "Palabras clave" + +#: html/Admin/Elements/ModifyUser:52 +msgid "Lang" +msgstr "Leng" + +#: html/Ticket/Elements/Tabs:73 +msgid "Last" +msgstr "Último" + +#: html/Ticket/Elements/EditDates:38 html/Ticket/Elements/ShowDates:39 +msgid "Last Contact" +msgstr "Último contacto" + +#: html/Elements/SelectDateType:29 +msgid "Last Contacted" +msgstr "Último contactado" + +#: html/Search/Elements/TicketHeader:41 +msgid "Last Notified" +msgstr "Se le notifico por ultima vez" + +#: html/Elements/SelectDateType:30 +msgid "Last Updated" +msgstr "Actualizado por ultima vez" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "LastUpdated" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "Izquierda" + +#: html/Admin/Users/Modify.html:83 +msgid "Let this user access RT" +msgstr "Permitir a este usuario acceder al RT" + +#: html/Admin/Users/Modify.html:87 +msgid "Let this user be granted rights" +msgstr "Permitir que este usuario tenga privilegios adicionales" + +#: NOT FOUND IN SOURCE +msgid "Limiting owner to %1 %2" +msgstr "Limitando propietario a %1 %2" + +#: NOT FOUND IN SOURCE +msgid "Limiting queue to %1 %2" +msgstr "Limitando cola a %1 %2" + +#: lib/RT/Ticket_Overlay.pm:2697 +msgid "Link already exists" +msgstr "El vÃnculo ya existe" + +#: lib/RT/Ticket_Overlay.pm:2709 +msgid "Link could not be created" +msgstr "El vÃnculo no pudo ser creado" + +#: lib/RT/Ticket_Overlay.pm:2717 lib/RT/Ticket_Overlay.pm:2727 +#. ($TransString) +msgid "Link created (%1)" +msgstr "VÃnculo creado (%2)" + +#: lib/RT/Ticket_Overlay.pm:2638 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "VÃnculo borrado (%1)" + +#: lib/RT/Ticket_Overlay.pm:2644 +msgid "Link not found" +msgstr "VÃnculo no encontrado" + +#: html/Ticket/ModifyLinks.html:25 html/Ticket/ModifyLinks.html:29 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "Vincular caso #%1" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "Enlazar ticket %1" + +#: html/Ticket/Elements/Tabs:97 +msgid "Links" +msgstr "Enlaces" + +#: html/Admin/Users/Modify.html:114 html/User/Prefs.html:85 +msgid "Location" +msgstr "Direccion" + +#: lib/RT.pm:158 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "El directorio del log %1 no pudo ser encontrado o no se pudo escribir en él.\\n RT no puede ejecutarse." + +#: html/Elements/Header:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "Autenticado como %1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:25 html/Elements/Login:34 html/Elements/Login:45 +msgid "Login" +msgstr "Entrar" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "Salir" + +#: html/Search/Bulk.html:86 +msgid "Make Owner" +msgstr "Hacer propietario a" + +#: html/Search/Bulk.html:102 +msgid "Make Status" +msgstr "Establecer estatus" + +#: html/Search/Bulk.html:109 +msgid "Make date Due" +msgstr "Establecer fecha de plazo" + +#: html/Search/Bulk.html:110 +msgid "Make date Resolved" +msgstr "Establecer fecha de resolución" + +#: html/Search/Bulk.html:107 +msgid "Make date Started" +msgstr "Establecer fecha de inicio" + +#: html/Search/Bulk.html:106 +msgid "Make date Starts" +msgstr "Establecer fecha de inicio" + +#: html/Search/Bulk.html:108 +msgid "Make date Told" +msgstr "Establecer fecha de último cambio" + +#: html/Search/Bulk.html:99 +msgid "Make priority" +msgstr "Establecer prioridad" + +#: html/Search/Bulk.html:100 +msgid "Make queue" +msgstr "Establecer cola" + +#: html/Search/Bulk.html:98 +msgid "Make subject" +msgstr "Establecer tÃtulo" + +#: html/Admin/index.html:33 +msgid "Manage groups and group membership" +msgstr "Administrar grupos y miembros" + +#: html/Admin/index.html:39 +msgid "Manage properties and configuration which apply to all queues" +msgstr "Administrar propiedades y configuracion que se aplique a todas las colas" + +#: html/Admin/index.html:36 +msgid "Manage queues and queue-specific properties" +msgstr "Administrar colas y propiedades especificas" + +#: html/Admin/index.html:30 +msgid "Manage users and passwords" +msgstr "Administrar usuarios y contraseñas" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "Mar." + +#: NOT FOUND IN SOURCE +msgid "March" +msgstr "Marzo" + +#: NOT FOUND IN SOURCE +msgid "May" +msgstr "Mayo" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "May." + +#: lib/RT/Group_Overlay.pm:982 +msgid "Member added" +msgstr "Miembro añadido" + +#: lib/RT/Group_Overlay.pm:1140 +msgid "Member deleted" +msgstr "Miembro borrado" + +#: lib/RT/Group_Overlay.pm:1144 +msgid "Member not deleted" +msgstr "Miembro no borrado" + +#: html/Elements/SelectLinkType:26 +msgid "Member of" +msgstr "Miembro de" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "MemberOf" + +#: html/Admin/Elements/GroupTabs:42 html/User/Elements/GroupTabs:42 +msgid "Members" +msgstr "Miembros" + +#: lib/RT/Ticket_Overlay.pm:2843 +msgid "Merge Successful" +msgstr "Fusión exitosa" + +#: lib/RT/Ticket_Overlay.pm:2804 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "Fusión fallida. No se pudo establecer el EffectiveId" + +#: html/Ticket/Elements/EditLinks:115 +msgid "Merge into" +msgstr "Fusionar dentro de" + +#: html/Ticket/Update.html:102 +msgid "Message" +msgstr "Mensaje" + +#: lib/RT/Interface/Web.pm:867 +msgid "Missing a primary key?: %1" +msgstr "Falta una clave primaria?: %1" + +#: html/Admin/Users/Modify.html:169 html/User/Prefs.html:54 +msgid "Mobile" +msgstr "Movil" + +#: html/Admin/Elements/ModifyUser:72 +msgid "MobilePhone" +msgstr "Telefono Movil" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify Access Control List" +msgstr "Modificar lista de control de acceso" + +#: NOT FOUND IN SOURCE +msgid "Modify Custom Field %1" +msgstr "Modificar el campo personalizable %1" + +#: html/Admin/Global/CustomFields.html:44 html/Admin/Global/index.html:51 +msgid "Modify Custom Fields which apply to all queues" +msgstr "Modificar los campos personalizables que se apliquen a todas las colas" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "Modify Scrip templates for this queue" +msgstr "Modificar plantillas Sript para esta cola" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "Modify Scrips for this queue" +msgstr "Modificar Scrips para esta cola" + +#: NOT FOUND IN SOURCE +msgid "Modify System ACLS" +msgstr "Modificar ACLs de sistema" + +#: NOT FOUND IN SOURCE +msgid "Modify Template %1" +msgstr "Modificar plantilla %1" + +#: html/Admin/Queues/CustomField.html:45 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "Modificar un campo personalizable para la cola %1" + +#: html/Admin/Global/CustomField.html:53 +msgid "Modify a CustomField which applies to all queues" +msgstr "Modificar un campo personalizable que se aplique a todas las colas" + +#: html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "Modificar un scrip para la cola %1" + +#: html/Admin/Global/Scrip.html:48 +msgid "Modify a scrip which applies to all queues" +msgstr "Modificar un scrip que se aplique a todas las colas" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "Modificar fechas para # %1" + +#: html/Ticket/ModifyDates.html:25 html/Ticket/ModifyDates.html:29 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "Modificar fechas para #%1" + +#: html/Ticket/ModifyDates.html:35 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "Modificar fechas para ticket # %1" + +#: html/Admin/Global/GroupRights.html:25 html/Admin/Global/GroupRights.html:28 html/Admin/Global/index.html:56 +msgid "Modify global group rights" +msgstr "Modificar privilegios globales de grupo" + +#: html/Admin/Global/GroupRights.html:33 +msgid "Modify global group rights." +msgstr "Modificar privilegios globales de grupo." + +#: NOT FOUND IN SOURCE +msgid "Modify global rights for groups" +msgstr "Modificar privilegios globales para grupos" + +#: NOT FOUND IN SOURCE +msgid "Modify global rights for users" +msgstr "Modificar privilegios globales para usuarios" + +#: NOT FOUND IN SOURCE +msgid "Modify global scrips" +msgstr "Modificar acciones globales" + +#: html/Admin/Global/UserRights.html:25 html/Admin/Global/UserRights.html:28 html/Admin/Global/index.html:60 +msgid "Modify global user rights" +msgstr "Modificar derechos globales de usuario" + +#: html/Admin/Global/UserRights.html:33 +msgid "Modify global user rights." +msgstr "Modificar privilegios globales de usuario" + +#: lib/RT/Group_Overlay.pm:146 +msgid "Modify group metadata or delete group" +msgstr "Modificar metadatos del grupo o borrar grupo" + +#: html/Admin/Groups/GroupRights.html:25 html/Admin/Groups/GroupRights.html:29 html/Admin/Groups/GroupRights.html:35 +#. ($GroupObj->Name) +msgid "Modify group rights for group %1" +msgstr "Modificar privilegios de grupo para %1" + +#: html/Admin/Queues/GroupRights.html:25 html/Admin/Queues/GroupRights.html:29 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "Modificar privilegios de grupo para la cola %1" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Modify membership roster for this group" +msgstr "Modificar miembros de este grupo" + +#: lib/RT/System.pm:61 +msgid "Modify one's own RT account" +msgstr "Modificar la propia cuenta RT" + +#: html/Admin/Queues/People.html:25 html/Admin/Queues/People.html:29 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "Modificar personas relacionadas al cola %1" + +#: html/Ticket/ModifyPeople.html:25 html/Ticket/ModifyPeople.html:29 html/Ticket/ModifyPeople.html:35 +#. ($Ticket->id) +#. ($Ticket->Id) +msgid "Modify people related to ticket #%1" +msgstr "Modificar personas relacionadas al ticket #%1" + +#: html/Admin/Queues/Scrips.html:44 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "Modificar acciones para la cola %1" + +#: html/Admin/Global/Scrips.html:44 html/Admin/Global/index.html:42 +msgid "Modify scrips which apply to all queues" +msgstr "Modificar scrips que se aplican a todas las colas" + +#: html/Admin/Global/Template.html:25 html/Admin/Global/Template.html:30 html/Admin/Global/Template.html:81 html/Admin/Queues/Template.html:78 +#. (loc($TemplateObj->Name())) +#. ($TemplateObj->id) +msgid "Modify template %1" +msgstr "Modificar plantilla %1" + +#: html/Admin/Global/Templates.html:44 +msgid "Modify templates which apply to all queues" +msgstr "Modificar plantillas que se aplican a todas las colas" + +#: html/Admin/Groups/Modify.html:87 html/User/Groups/Modify.html:86 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "Modificar el grupo %1" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Modify the queue watchers" +msgstr "Modificar los observadores de la cola" + +#: html/Admin/Users/Modify.html:236 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "Modificar el usuario %1" + +#: html/Ticket/ModifyAll.html:37 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "Modificar el ticket # %1" + +#: html/Ticket/Modify.html:25 html/Ticket/Modify.html:28 html/Ticket/Modify.html:34 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "Modificar el ticket #%1" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Modify tickets" +msgstr "Modificar tickets" + +#: html/Admin/Groups/UserRights.html:25 html/Admin/Groups/UserRights.html:29 html/Admin/Groups/UserRights.html:35 +#. ($GroupObj->Name) +msgid "Modify user rights for group %1" +msgstr "Modificar privilegios de usuario para el grupo %1" + +#: html/Admin/Queues/UserRights.html:25 html/Admin/Queues/UserRights.html:29 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "Modificar derechos de usuario para la cola %1" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "Modificar observadores para la cola '%1'" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyACL" +msgstr "ModifyACL" + +#: lib/RT/Group_Overlay.pm:149 +msgid "ModifyOwnMembership" +msgstr "ModifyOwnMembership" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "ModifyQueueWatchers" +msgstr "ModifyQueueWatchers" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "ModifyScrips" +msgstr "ModifyScrips" + +#: lib/RT/System.pm:61 +msgid "ModifySelf" +msgstr "ModifySelf" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "ModifyTemplate" +msgstr "ModifyTemplate" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "ModifyTicket" +msgstr "ModifyTicket" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "Lun." + +#: html/Ticket/Elements/ShowRequestor:42 +#. ($name) +msgid "More about %1" +msgstr "Más acerca de %1" + +#: html/Admin/Elements/EditCustomFields:61 +msgid "Move down" +msgstr "Mover hacia abajo" + +#: html/Admin/Elements/EditCustomFields:53 +msgid "Move up" +msgstr "Move hacia arriba" + +#: html/Admin/Elements/SelectSingleOrMultiple:27 +msgid "Multiple" +msgstr "Múltiple" + +#: lib/RT/User_Overlay.pm:179 +msgid "Must specify 'Name' attribute" +msgstr "Se debe especificar un nombre" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "Mis aprobaciones" + +#: html/Approvals/index.html:25 html/Approvals/index.html:26 +msgid "My approvals" +msgstr "Mis aprobaciones" + +#: html/Admin/Elements/AddCustomFieldValue:26 html/Admin/Elements/EditCustomField:32 html/Admin/Elements/ModifyTemplate:28 html/Admin/Elements/ModifyUser:30 html/Admin/Groups/Modify.html:44 html/Elements/SelectGroups:26 html/Elements/SelectUsers:28 html/User/Groups/Modify.html:44 +msgid "Name" +msgstr "Nombre" + +#: lib/RT/User_Overlay.pm:186 +msgid "Name in use" +msgstr "Nombre en uso" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "Se necesita aprobacion del administrador del sistema" + +#: html/Ticket/Elements/ShowDates:52 +msgid "Never" +msgstr "Nunca" + +#: html/Elements/Quicksearch:30 +msgid "New" +msgstr "Nuevo" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:93 html/User/Prefs.html:65 +msgid "New Password" +msgstr "Nueva contraseñaa" + +#: etc/initialdata:311 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "Nueva pendiente de aprobación" + +#: html/Ticket/Elements/EditLinks:111 +msgid "New Relationships" +msgstr "Nuevas relaciones" + +#: html/Ticket/Elements/Tabs:36 +msgid "New Search" +msgstr "Nueva búsqueda" + +#: html/Admin/Global/CustomField.html:41 html/Admin/Global/CustomFields.html:39 html/Admin/Queues/CustomField.html:52 html/Admin/Queues/CustomFields.html:40 +msgid "New custom field" +msgstr "Nuevo campo personalizable" + +#: html/Admin/Elements/GroupTabs:54 html/User/Elements/GroupTabs:52 +msgid "New group" +msgstr "Nuevo grupo" + +#: html/SelfService/Prefs.html:32 +msgid "New password" +msgstr "Nueva contraseñaa" + +#: lib/RT/User_Overlay.pm:639 +msgid "New password notification sent" +msgstr "Notificación de nueva contraseña enviada" + +#: html/Admin/Elements/QueueTabs:70 +msgid "New queue" +msgstr "Nueva cola" + +#: html/SelfService/Elements/Tabs:63 +msgid "New request" +msgstr "Nueva solicitud" + +#: html/Admin/Elements/SelectRights:42 +msgid "New rights" +msgstr "Nuevos privilegios" + +#: html/Admin/Global/Scrip.html:40 html/Admin/Global/Scrips.html:39 html/Admin/Queues/Scrip.html:43 html/Admin/Queues/Scrips.html:53 +msgid "New scrip" +msgstr "Nuevo scrip" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "Nueva búsqueda" + +#: html/Admin/Global/Template.html:60 html/Admin/Global/Templates.html:39 html/Admin/Queues/Template.html:58 html/Admin/Queues/Templates.html:46 +msgid "New template" +msgstr "Nueva plantilla" + +#: lib/RT/Ticket_Overlay.pm:2771 +msgid "New ticket doesn't exist" +msgstr "El ticket nuevo no existe" + +#: html/Admin/Elements/UserTabs:52 +msgid "New user" +msgstr "Nuevo usuario" + +#: html/Admin/Elements/CreateUserCalled:26 +msgid "New user called" +msgstr "Nuevo usuario llamado" + +#: html/Admin/Queues/People.html:55 html/Ticket/Elements/EditPeople:29 +msgid "New watchers" +msgstr "Nuevo observador" + +#: html/Admin/Users/Prefs.html:42 +msgid "New window setting" +msgstr "Establecer nueva ventana " + +#: html/Ticket/Elements/Tabs:69 +msgid "Next" +msgstr "Siguiente" + +#: html/Search/Listing.html:48 +msgid "Next page" +msgstr "Siguiente página" + +#: html/Admin/Elements/ModifyUser:50 +msgid "NickName" +msgstr "Alias" + +#: html/Admin/Users/Modify.html:63 html/User/Prefs.html:46 +msgid "Nickname" +msgstr "Alias" + +#: html/Admin/Elements/EditCustomField:73 html/Admin/Elements/EditCustomFields:105 +msgid "No CustomField" +msgstr "No hay campo personalizable" + +#: html/Admin/Groups/GroupRights.html:84 html/Admin/Groups/UserRights.html:71 +msgid "No Group defined" +msgstr "No hay grupo definido" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:68 +msgid "No Queue defined" +msgstr "No hay cola definida" + +#: bin/rt-crontool:56 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "No se encontró el usuario. Por favor consulte al administrador.\\n" + +#: html/Admin/Global/Template.html:79 html/Admin/Queues/Template.html:76 +msgid "No Template" +msgstr "No hay plantilla" + +#: bin/rt-commit-handler:764 +msgid "No Ticket specified. Aborting ticket " +msgstr "No se especificó el ticket. Abortada la transacción" + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "No se especificó ticket. Abortando las modificaciones al ticket\\n\\n" + +#: html/Approvals/Elements/Approve:47 +msgid "No action" +msgstr "No action" + +#: lib/RT/Interface/Web.pm:862 +msgid "No column specified" +msgstr "No se ha especificado ninguna columna" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "Comando no encontrado\\n" + +#: html/Elements/ViewUser:36 html/Ticket/Elements/ShowRequestor:45 +msgid "No comment entered about this user" +msgstr "No hay comentarios sobre este usuario" + +#: lib/RT/Ticket_Overlay.pm:2189 lib/RT/Ticket_Overlay.pm:2257 +msgid "No correspondence attached" +msgstr "No hay ningún archivo adjunto" + +#: lib/RT/Action/Generic.pm:150 lib/RT/Condition/Generic.pm:176 lib/RT/Search/ActiveTicketsInQueue.pm:56 lib/RT/Search/Generic.pm:113 +#. (ref $self) +msgid "No description for %1" +msgstr "No hay descripción para %1" + +#: lib/RT/Users_Overlay.pm:151 +msgid "No group specified" +msgstr "No hay grupo especificado" + +#: lib/RT/User_Overlay.pm:857 +msgid "No password set" +msgstr "No hay contraseña definida" + +#: lib/RT/Queue_Overlay.pm:259 +msgid "No permission to create queues" +msgstr "No tiene privilegios para crear colas" + +#: lib/RT/Ticket_Overlay.pm:341 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "No tiene privilegios para crear tickets en la cola '%1'" + +#: lib/RT/User_Overlay.pm:151 +msgid "No permission to create users" +msgstr "No tiene privilegios para crear usuarios" + +#: html/SelfService/Display.html:174 +msgid "No permission to display that ticket" +msgstr "No tiene privilegios para mostrar el ticket" + +#: html/SelfService/Update.html:55 +msgid "No permission to view update ticket" +msgstr "Sin permiso para ver la actualización del ticket" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1488 +msgid "No principal specified" +msgstr "No hay un principal especificado" + +#: html/Admin/Queues/People.html:154 html/Admin/Queues/People.html:164 +msgid "No principals selected." +msgstr "No hay principales seleccionados" + +#: html/Admin/Queues/index.html:35 +msgid "No queues matching search criteria found." +msgstr "No hay colas que concuerden con los criterios de búsqueda" + +#: html/Admin/Elements/SelectRights:81 +msgid "No rights found" +msgstr "No se encontraron derechos" + +#: html/Admin/Elements/SelectRights:33 +msgid "No rights granted." +msgstr "Sin privilegios concedidos" + +#: html/Search/Bulk.html:149 +msgid "No search to operate on." +msgstr "No hay búsqueda sobre la que operar" + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "No se especificó el identificador del ticket" + +#: lib/RT/Transaction_Overlay.pm:480 lib/RT/Transaction_Overlay.pm:518 +msgid "No transaction type specified" +msgstr "No se especificó el tipo de transacción" + +#: NOT FOUND IN SOURCE +msgid "No user or email address specified" +msgstr "No se especificó email o usuario" + +#: html/Admin/Users/index.html:36 +msgid "No users matching search criteria found." +msgstr "No se encontraron usuarios que concuerden con los criterios de búsqueda" + +#: bin/rt-commit-handler:644 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "Usuario no encontrado. El manejador cvs está deshabilitado. Por favor consulte a su administrador.\\n" + +#: lib/RT/Interface/Web.pm:859 +msgid "No value sent to _Set!\\n" +msgstr "No se envió ningun valor a _Set!\\n" + +#: html/Search/Elements/TicketRow:37 +msgid "Nobody" +msgstr "Nadie" + +#: lib/RT/Interface/Web.pm:864 +msgid "Nonexistant field?" +msgstr "Campo no existente?" + +#: html/Elements/Login:99 +msgid "Not logged in" +msgstr "No autenticado" + +#: html/Elements/Header:59 html/SelfService/Elements/Header:58 +msgid "Not logged in." +msgstr "No autenticado." + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "No establecido" + +#: html/NoAuth/Reminder.html:27 +msgid "Not yet implemented." +msgstr "No se ha implementado." + +#: html/Admin/Groups/Rights.html:25 +msgid "Not yet implemented...." +msgstr "No está implementado..." + +#: html/Approvals/Elements/Approve:50 +msgid "Notes" +msgstr "Notas" + +#: lib/RT/User_Overlay.pm:642 +msgid "Notification could not be sent" +msgstr "La notificación no se pudo enviar" + +#: etc/initialdata:94 +msgid "Notify AdminCcs" +msgstr "Notificar AdminCcs" + +#: etc/initialdata:90 +msgid "Notify AdminCcs as Comment" +msgstr "Notificar AdminCcs como comentario" + +#: etc/initialdata:121 +msgid "Notify Other Recipients" +msgstr "Notificar otros destinatarios" + +#: etc/initialdata:117 +msgid "Notify Other Recipients as Comment" +msgstr "Notificar otros destinatarios como comentario" + +#: etc/initialdata:86 +msgid "Notify Owner" +msgstr "Notificar al propietario" + +#: etc/initialdata:82 +msgid "Notify Owner as Comment" +msgstr "Notificar al propietario como comentario" + +#: etc/initialdata:313 etc/upgrade/2.1.71:17 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "Notificar propietarios y AdminCcs de nuevos items pendientes de aprobación" + +#: etc/initialdata:78 +msgid "Notify Requestors" +msgstr "Notificar solicitantes" + +#: etc/initialdata:104 +msgid "Notify Requestors and Ccs" +msgstr "Notificar solicitantes y Ccs" + +#: etc/initialdata:99 +msgid "Notify Requestors and Ccs as Comment" +msgstr "Notificar solicitantes y Ccs como comentario" + +#: etc/initialdata:113 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "Notificar solicitantes, Ccs y AdminCcs" + +#: etc/initialdata:109 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "Notificar solicitantes, Ccs y AdminCcs como comentario" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "Nov." + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "Noviembre" + +#: lib/RT/Record.pm:157 +msgid "Object could not be created" +msgstr "No se pudo crear el objeto" + +#: lib/RT/Record.pm:176 +msgid "Object created" +msgstr "Objeto creado" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "Oct." + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "Octubre" + +#: html/Elements/SelectDateRelation:35 +msgid "On" +msgstr "en " + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "Al comentar" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "On Correspond" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "Al crear" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "Al cambiar de propietario" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "Al cambiar de cola" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "Al resolver" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "Al cambiar de status" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "Al hacer transaccion" + +#: html/Approvals/Elements/PendingMyApproval:50 +#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") +msgid "Only show approvals for requests created after %1" +msgstr "Solo muestra aprobaciones para solicitudes creadas despues de %1" + +#: html/Approvals/Elements/PendingMyApproval:48 +#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") +msgid "Only show approvals for requests created before %1" +msgstr "Solo muestra aprobaciones para solicitudes creadas antes de %1" + +#: html/Elements/Quicksearch:31 +msgid "Open" +msgstr "Abierto" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "Abrirlo" + +#: html/SelfService/Elements/Tabs:57 +msgid "Open requests" +msgstr "Solicitudes abiertas" + +#: html/Admin/Users/Prefs.html:41 +msgid "Open tickets (from listing) in a new window" +msgstr "Tickets abiertos (del listado) en una nueva ventana" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in another window" +msgstr "Tickets abiertos (del listado) en otra ventana" + +#: etc/initialdata:133 +msgid "Open tickets on correspondence" +msgstr "Open tickets on correspondence" + +#: html/Search/Elements/PickRestriction:101 +msgid "Ordering and sorting" +msgstr "Ordenación y clasificación" + +#: html/Admin/Elements/ModifyUser:46 html/Admin/Users/Modify.html:117 html/Elements/SelectUsers:29 html/User/Prefs.html:86 +msgid "Organization" +msgstr "Organización" + +#: html/Approvals/Elements/Approve:34 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "Ticket originario: #%1" + +#: html/Admin/Elements/ModifyQueue:55 html/Admin/Queues/Modify.html:69 +msgid "Over time, priority moves toward" +msgstr "Pasada la fecha de gracia, la prioridad se mueve a" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Own tickets" +msgstr "Tickets poseidos" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "OwnTicket" +msgstr "OwnTicket" + +#: etc/initialdata:38 html/Elements/MyRequests:32 html/SelfService/Elements/MyRequests:30 html/Ticket/Create.html:48 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/EditPeople:44 html/Ticket/Elements/ShowPeople:27 html/Ticket/Update.html:63 lib/RT/ACE_Overlay.pm:86 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "Propietario" + +#: lib/RT/Ticket_Overlay.pm:3004 +#. ($OldOwnerObj->Name, $NewOwnerObj->Name) +msgid "Owner changed from %1 to %2" +msgstr "Propietario cambiado de %1 a %2" + +#: lib/RT/Transaction_Overlay.pm:584 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "Propietario cambiado forzosamente de %1 a %2" + +#: html/Search/Elements/PickRestriction:31 +msgid "Owner is" +msgstr "El propietario es" + +#: html/Admin/Users/Modify.html:174 html/User/Prefs.html:56 +msgid "Pager" +msgstr "Buscapersonas" + +#: html/Admin/Elements/ModifyUser:74 +msgid "PagerPhone" +msgstr "Buscapersonas Tel." + +#: html/Ticket/Create.html:182 html/Ticket/Elements/EditLinks:127 html/Ticket/Elements/EditLinks:58 html/Ticket/Elements/ShowLinks:43 +msgid "Parents" +msgstr "Padres" + +#: html/Elements/Login:43 html/User/Prefs.html:61 +msgid "Password" +msgstr "Contraseñaa" + +#: html/NoAuth/Reminder.html:25 +msgid "Password Reminder" +msgstr "Recordatorio de contraseña" + +#: lib/RT/User_Overlay.pm:168 lib/RT/User_Overlay.pm:860 +msgid "Password too short" +msgstr "Contraseña demasiado corta" + +#: html/Admin/Users/Modify.html:291 html/User/Prefs.html:172 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "Contraseña: %1" + +#: html/Ticket/Elements/ShowSummary:43 html/Ticket/Elements/Tabs:96 html/Ticket/ModifyAll.html:51 +msgid "People" +msgstr "Personas" + +#: etc/initialdata:126 +msgid "Perform a user-defined action" +msgstr "Realizar una acion definida por el usuario" + +#: lib/RT/ACE_Overlay.pm:231 lib/RT/ACE_Overlay.pm:237 lib/RT/ACE_Overlay.pm:563 lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:583 lib/RT/ACE_Overlay.pm:648 lib/RT/CurrentUser.pm:83 lib/RT/CurrentUser.pm:92 lib/RT/CustomField_Overlay.pm:445 lib/RT/CustomField_Overlay.pm:451 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1099 lib/RT/Group_Overlay.pm:1108 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1163 lib/RT/Group_Overlay.pm:1169 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:904 lib/RT/Group_Overlay.pm:908 lib/RT/Group_Overlay.pm:921 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:126 lib/RT/Scrip_Overlay.pm:137 lib/RT/Scrip_Overlay.pm:197 lib/RT/Scrip_Overlay.pm:430 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:88 lib/RT/Template_Overlay.pm:94 lib/RT/Ticket_Overlay.pm:1341 lib/RT/Ticket_Overlay.pm:1351 lib/RT/Ticket_Overlay.pm:1365 lib/RT/Ticket_Overlay.pm:1518 lib/RT/Ticket_Overlay.pm:1527 lib/RT/Ticket_Overlay.pm:1540 lib/RT/Ticket_Overlay.pm:1875 lib/RT/Ticket_Overlay.pm:2013 lib/RT/Ticket_Overlay.pm:2177 lib/RT/Ticket_Overlay.pm:2244 lib/RT/Ticket_Overlay.pm:2596 lib/RT/Ticket_Overlay.pm:2668 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2777 lib/RT/Ticket_Overlay.pm:2910 lib/RT/Ticket_Overlay.pm:3139 lib/RT/Ticket_Overlay.pm:3337 lib/RT/Ticket_Overlay.pm:3499 lib/RT/Ticket_Overlay.pm:3551 lib/RT/Ticket_Overlay.pm:3716 lib/RT/Transaction_Overlay.pm:468 lib/RT/Transaction_Overlay.pm:475 lib/RT/Transaction_Overlay.pm:504 lib/RT/Transaction_Overlay.pm:511 lib/RT/User_Overlay.pm:1334 lib/RT/User_Overlay.pm:562 lib/RT/User_Overlay.pm:597 lib/RT/User_Overlay.pm:853 lib/RT/User_Overlay.pm:941 +msgid "Permission Denied" +msgstr "Permiso denegado" + +#: html/User/Elements/Tabs:35 +msgid "Personal Groups" +msgstr "Grupos personales" + +#: html/User/Groups/index.html:30 html/User/Groups/index.html:40 +msgid "Personal groups" +msgstr "Grupos personales" + +#: html/User/Elements/DelegateRights:37 +msgid "Personal groups:" +msgstr "Grupos personales:" + +#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:49 +msgid "Phone numbers" +msgstr "Números de teléfono" + +#: html/Admin/Users/Rights.html:25 +msgid "Placeholder" +msgstr "Placeholder" + +#: html/Elements/Header:52 html/Elements/Tabs:55 html/SelfService/Prefs.html:25 html/User/Prefs.html:25 html/User/Prefs.html:28 +msgid "Preferences" +msgstr "Preferencias" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "Prefs" + +#: lib/RT/Action/Generic.pm:160 +msgid "Prepare Stubbed" +msgstr "Preparación cortada" + +#: html/Ticket/Elements/Tabs:61 +msgid "Prev" +msgstr "Prev" + +#: html/Search/Listing.html:44 +msgid "Previous page" +msgstr "Página anterior" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "Pri" + +#: lib/RT/ACE_Overlay.pm:133 lib/RT/ACE_Overlay.pm:208 lib/RT/ACE_Overlay.pm:552 +#. ($args{'PrincipalId'}) +msgid "Principal %1 not found." +msgstr "No se encontró el principal %1" + +#: html/Search/Elements/PickRestriction:54 html/SelfService/Display.html:76 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:54 html/Ticket/Elements/ShowBasics:39 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "Prioridad" + +#: html/Admin/Elements/ModifyQueue:51 html/Admin/Queues/Modify.html:65 +msgid "Priority starts at" +msgstr "La prioridad empieza en" + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "Privilegiado" + +#: html/Admin/Users/Modify.html:271 html/User/Prefs.html:163 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "Estado privilegiado: %1" + +#: html/Admin/Users/index.html:62 +msgid "Privileged users" +msgstr "Usuarios privilegiados:" + +#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 +msgid "Pseudogroup for internal use" +msgstr "Pseudogrupo para uso interno" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Elements/Quicksearch:29 html/Search/Elements/PickRestriction:46 html/SelfService/Create.html:35 html/SelfService/Display.html:68 html/Ticket/Create.html:38 html/Ticket/Elements/EditBasics:64 html/Ticket/Elements/ShowBasics:43 html/User/Elements/DelegateRights:80 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "Cola" + +#: html/Admin/Queues/CustomField.html:42 html/Admin/Queues/Scrip.html:50 html/Admin/Queues/Scrips.html:46 html/Admin/Queues/Templates.html:43 +#. ($Queue) +#. ($id) +msgid "Queue %1 not found" +msgstr "Cola %1 no encontrada" + +#: NOT FOUND IN SOURCE +msgid "Queue '%1' not found\\n" +msgstr "Cola '%1' no encontrada\\n" + +#: NOT FOUND IN SOURCE +msgid "Queue Keyword Selections" +msgstr "Selecciones de palabras clave de la cola" + +#: html/Admin/Elements/ModifyQueue:31 html/Admin/Queues/Modify.html:43 +msgid "Queue Name" +msgstr "Nombre de la cola" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "Acciones de la cola" + +#: lib/RT/Queue_Overlay.pm:263 +msgid "Queue already exists" +msgstr "La cola ya existe" + +#: lib/RT/Queue_Overlay.pm:272 lib/RT/Queue_Overlay.pm:278 +msgid "Queue could not be created" +msgstr "La cola no se pudo crear" + +#: html/Ticket/Create.html:209 +msgid "Queue could not be loaded." +msgstr "La cola no se pudo cargar" + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:282 +msgid "Queue created" +msgstr "Cola creada" + +#: NOT FOUND IN SOURCE +msgid "Queue is not specified." +msgstr "No se especifico ninguna cola" + +#: html/SelfService/Display.html:129 +msgid "Queue not found" +msgstr "Cola no encontrada" + +#: html/Admin/Elements/Tabs:38 html/Admin/index.html:35 +msgid "Queues" +msgstr "Colas" + +#: html/Elements/Login:34 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "RT %1" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "RT %1 para %2" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." +msgstr "RT %1 de <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. Derechos reservados 1996-%1 Jesse Vincent <jesse\\@bestpractical.com>\\n" + +#: html/Admin/index.html:25 html/Admin/index.html:26 +msgid "RT Administration" +msgstr "Administración del RT" + +#: NOT FOUND IN SOURCE +msgid "RT Authentication error." +msgstr "Error de autenticación en RT" + +#: NOT FOUND IN SOURCE +msgid "RT Bounce: %1" +msgstr "Rechazo del RT: %1" + +#: NOT FOUND IN SOURCE +msgid "RT Configuration error" +msgstr "Error de configuración del RT" + +#: NOT FOUND IN SOURCE +msgid "RT Critical error. Message not recorded!" +msgstr "Error crÃtico en RT. El mensaje no fue grabado!" + +#: html/Elements/Error:41 html/SelfService/Error.html:41 +msgid "RT Error" +msgstr "Error del RT" + +#: NOT FOUND IN SOURCE +msgid "RT Received mail (%1) from itself." +msgstr "RT recibió correo (%1) de sà mismo." + +#: NOT FOUND IN SOURCE +msgid "RT Recieved mail (%1) from itself." +msgstr "RT recibió correo (%1) de sà mismo." + +#: html/SelfService/Closed.html:25 +msgid "RT Self Service / Closed Tickets" +msgstr "RT AutoServicio / Tickets cerrados" + +#: html/index.html:25 html/index.html:28 +msgid "RT at a glance" +msgstr "RT en un vistazo" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't authenticate you" +msgstr "RT no te pudo autenticar." + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find requestor via its external database lookup" +msgstr "RT no pudo encontrar el solicitante a través de una busqueda a la base de datos externa" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find the queue: %1" +msgstr "RT no pudo encontrar la cola: %1" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "RT no pudo validar esta firma PGP. \\n" + +#: html/Elements/PageLayout:26 +#. ($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 "RT ha procesado tus comandos" + +#: html/Elements/Login:83 +#. ('2003') +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 es © Copyright 1996-%1 de Jesse Vincent <jesse@bestpractical.com>. Es distrbuido bajo <a href=\"http://www.gnu.org/copyleft/gpl.html\">la version 2 de la licencia GNU GPL (General Public License)</a>." + +#: NOT FOUND IN SOURCE +msgid "RT thinks this message may be a bounce" +msgstr "RT cree que este mensaje puede ser un mensaje rebotado" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +msgstr "RT procesará este mensaje como si fuera uno no firmado\\n" + +#: 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 "El modo de comandos por correo de RT requiere autenticación PGP. Ya sea que no haya firmado su mensaje, o que su firma no pueda ser verificada." + +#: html/Admin/Users/Modify.html:58 html/Admin/Users/Prefs.html:52 html/User/Prefs.html:44 +msgid "Real Name" +msgstr "Nombre real" + +#: html/Admin/Elements/ModifyUser:48 +msgid "RealName" +msgstr "Nombre real" + +#: html/Ticket/Create.html:185 html/Ticket/Elements/EditLinks:139 html/Ticket/Elements/EditLinks:94 html/Ticket/Elements/ShowLinks:63 +msgid "Referred to by" +msgstr "Referenciado por" + +#: html/Elements/SelectLinkType:28 html/Ticket/Create.html:184 html/Ticket/Elements/EditLinks:135 html/Ticket/Elements/EditLinks:80 html/Ticket/Elements/ShowLinks:55 +msgid "Refers to" +msgstr "Hace referencia a" + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "RefersTo" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "Refinar" + +#: html/Search/Elements/PickRestriction:27 +msgid "Refine search" +msgstr "Refinar la búsqueda" + +#: html/Elements/Refresh:36 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "Refrescar esta página cada %1 minutos" + +#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:60 html/Ticket/ModifyAll.html:57 +msgid "Relationships" +msgstr "Relaciones" + +#: html/Search/Bulk.html:93 +msgid "Remove AdminCc" +msgstr "Quitar AdminCc" + +#: html/Search/Bulk.html:91 +msgid "Remove Cc" +msgstr "Quitar Cc" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "Quitar solicitante" + +#: html/Ticket/Elements/ShowTransaction:173 html/Ticket/Elements/Tabs:122 +msgid "Reply" +msgstr "Responder" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Reply to tickets" +msgstr "Responder a los tickets" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "ReplyToTicket" +msgstr "ReplyToTicket" + +#: etc/initialdata:44 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:87 +msgid "Requestor" +msgstr "Solicitante" + +#: html/Search/Elements/PickRestriction:38 +msgid "Requestor email address" +msgstr "Dirección de correo del solicitante" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "Solicitante(s)" + +#: NOT FOUND IN SOURCE +msgid "RequestorAddresses" +msgstr "RequestorAddresses" + +#: html/SelfService/Create.html:43 html/SelfService/Display.html:42 html/Ticket/Create.html:56 html/Ticket/Elements/EditPeople:48 html/Ticket/Elements/ShowPeople:31 +msgid "Requestors" +msgstr "Solicitantes" + +#: html/Admin/Elements/ModifyQueue:61 html/Admin/Queues/Modify.html:75 +msgid "Requests should be due in" +msgstr "Las solicitudes entran en vencimiento en" + +#: html/Elements/Submit:62 +msgid "Reset" +msgstr "Borrar" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "Residencia" + +#: html/Ticket/Elements/Tabs:132 +msgid "Resolve" +msgstr "Resolver" + +#: html/Ticket/Update.html:133 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "Resolver ticket #%1 (%2)" + +#: etc/initialdata:302 html/Elements/SelectDateType:28 lib/RT/Ticket_Overlay.pm:1170 +msgid "Resolved" +msgstr "Resuelto" + +#: html/Search/Bulk.html:123 html/Ticket/ModifyAll.html:73 html/Ticket/Update.html:73 +msgid "Response to requestors" +msgstr "Responder a los solicitantes" + +#: html/Elements/ListActions:26 +msgid "Results" +msgstr "Resultados" + +#: html/Search/Elements/PickRestriction:105 +msgid "Results per page" +msgstr "Resultados por página" + +#: html/Admin/Elements/ModifyUser:33 html/Admin/Users/Modify.html:100 html/User/Prefs.html:72 +msgid "Retype Password" +msgstr "Confirmar contraseña" + +#: NOT FOUND IN SOURCE +msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" +msgstr "Privilegio %1 no encontrado para %2 %3 referente a %4 (%5)\\n" + +#: lib/RT/ACE_Overlay.pm:613 +msgid "Right Delegated" +msgstr "Privilegio delegado" + +#: lib/RT/ACE_Overlay.pm:303 +msgid "Right Granted" +msgstr "Privilegio otorgado" + +#: lib/RT/ACE_Overlay.pm:161 +msgid "Right Loaded" +msgstr "Privilegio cargado" + +#: lib/RT/ACE_Overlay.pm:678 lib/RT/ACE_Overlay.pm:693 +msgid "Right could not be revoked" +msgstr "Privilegio no pudo ser revocado" + +#: html/User/Delegation.html:64 +msgid "Right not found" +msgstr "Privilegio no encontrado" + +#: lib/RT/ACE_Overlay.pm:543 lib/RT/ACE_Overlay.pm:638 +msgid "Right not loaded." +msgstr "Privilegio no cargado" + +#: lib/RT/ACE_Overlay.pm:689 +msgid "Right revoked" +msgstr "Privilegio revocado" + +#: html/Admin/Elements/UserTabs:41 +msgid "Rights" +msgstr "Privilegios" + +#: lib/RT/Interface/Web.pm:758 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "No se pudieron conceder los privilegios a %1" + +#: lib/RT/Interface/Web.pm:791 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "No se pudieron revocar los privilegios de %1" + +#: html/Admin/Global/GroupRights.html:51 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "Roles" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "RootApproval" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "Sab." + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "Save Changes" +msgstr "Guardar Cambios" + +#: html/Ticket/ModifyLinks.html:39 +msgid "Save changes" +msgstr "Guardar cambios" + +#: html/Admin/Global/Scrip.html:49 +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "Scrip #%1" + +#: lib/RT/Scrip_Overlay.pm:176 +msgid "Scrip Created" +msgstr "Acción creada" + +#: html/Admin/Elements/EditScrips:84 +msgid "Scrip deleted" +msgstr "Acción borrada" + +#: html/Admin/Elements/QueueTabs:46 html/Admin/Elements/SystemTabs:33 html/Admin/Global/index.html:41 +msgid "Scrips" +msgstr "Acciones" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "Acciones para %1\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "Acciones que se aplican a todas las colas" + +#: html/Elements/SimpleSearch:27 html/Search/Elements/PickRestriction:126 html/Ticket/Elements/Tabs:159 +msgid "Search" +msgstr "Búsqueda" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "Criterios de búsqueda" + +#: html/Approvals/Elements/PendingMyApproval:39 +msgid "Search for approvals" +msgstr "Buscar aprobaciones" + +#: bin/rt-crontool:188 +msgid "Security:" +msgstr "Seguridad:" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "SeeQueue" +msgstr "Ver cola" + +#: html/Admin/Groups/index.html:40 +msgid "Select a group" +msgstr "Seleccione un grupo" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "Seleccione una cola" + +#: html/Admin/Users/index.html:25 html/Admin/Users/index.html:28 +msgid "Select a user" +msgstr "Seleccione un usuario" + +#: html/Admin/Global/CustomField.html:38 html/Admin/Global/CustomFields.html:36 +msgid "Select custom field" +msgstr "Seleccionar un campo personalizable" + +#: html/Admin/Elements/GroupTabs:52 html/User/Elements/GroupTabs:50 +msgid "Select group" +msgstr "Seleccionar grupo" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Select multiple values" +msgstr "Seleccionar valores múltiples" + +#: lib/RT/CustomField_Overlay.pm:352 +msgid "Select one value" +msgstr "Seleccionar un valor" + +#: html/Admin/Elements/QueueTabs:67 +msgid "Select queue" +msgstr "Seleccionar cola" + +#: html/Admin/Global/Scrip.html:37 html/Admin/Global/Scrips.html:36 html/Admin/Queues/Scrip.html:40 html/Admin/Queues/Scrips.html:50 +msgid "Select scrip" +msgstr "Seleccionar accion" + +#: html/Admin/Global/Template.html:57 html/Admin/Global/Templates.html:36 html/Admin/Queues/Template.html:55 +msgid "Select template" +msgstr "Selecionar plantilla" + +#: html/Admin/Elements/UserTabs:49 +msgid "Select user" +msgstr "Seleccionar usuario" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "SelectMultiple" +msgstr "SelectMultiple" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectSingle" +msgstr "SelectSingle" + +#: html/SelfService/index.html:25 +msgid "Self Service" +msgstr "Autoservicio" + +#: etc/initialdata:114 +msgid "Send mail to all watchers" +msgstr "Enviar mail a todos los observadores" + +#: etc/initialdata:110 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "Enviar mail a todos los observadores como comentario" + +#: etc/initialdata:105 +msgid "Send mail to requestors and Ccs" +msgstr "Enviar mail a los solicitantes y Ccs" + +#: etc/initialdata:100 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "Enviar mail a los solicitantes y Ccs como comentario" + +#: etc/initialdata:79 +msgid "Sends a message to the requestors" +msgstr "Envia un mesaje a los solicitantes" + +#: etc/initialdata:118 etc/initialdata:122 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "Enviar mail a los Ccs y Bccs listados explicitamente" + +#: etc/initialdata:95 +msgid "Sends mail to the administrative Ccs" +msgstr "Envia mail a los Ccs administrativos" + +#: etc/initialdata:91 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "Envia mail a los Ccs administrativos como comentario" + +#: etc/initialdata:83 etc/initialdata:87 +msgid "Sends mail to the owner" +msgstr "Enviar mail al propietario" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "Sep." + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "Septiembre" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "Mostrar resultados" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show approved requests" +msgstr "Mostrar peticiones aprobadas" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show basics" +msgstr "Mostrar lo básico" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show denied requests" +msgstr "Mostrar solicitudes denegadas" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show details" +msgstr "Mostrar detalles" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show pending requests" +msgstr "Mostrar solicitudes pendientes" + +#: html/Approvals/Elements/PendingMyApproval:46 +msgid "Show requests awaiting other approvals" +msgstr "Mostrar solicitudes esperando otras aprobaciones" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Show ticket private commentary" +msgstr "Mostrar ticket en un comentario privado" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "Show ticket summaries" +msgstr "Mostrar resumen del ticket" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ShowACL" +msgstr "ShowACL" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowScrips" +msgstr "ShowScrips" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ShowTemplate" +msgstr "ShowTemplate" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "ShowTicket" +msgstr "ShowTicket" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "ShowTicketComments" +msgstr "ShowTicketComments" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "Validarse como solicitante de ticket o ticket o cola Cc" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "Validarse como ticket o cola AdminCc" + +#: html/Admin/Elements/ModifyUser:39 html/Admin/Users/Modify.html:191 html/Admin/Users/Prefs.html:32 html/SelfService/Prefs.html:37 html/User/Prefs.html:112 +msgid "Signature" +msgstr "Firma" + +#: html/SelfService/Elements/Header:52 +#. ($session{'CurrentUser'}->Name) +msgid "Signed in as %1" +msgstr "Validado como %1" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Single" +msgstr "Sencillo" + +#: html/Elements/Header:51 +msgid "Skip Menu" +msgstr "Saltar Menu" + +#: html/Admin/Elements/EditCustomFieldValues:31 +msgid "Sort key" +msgstr "Clave de ordenación" + +#: html/Search/Elements/PickRestriction:109 +msgid "Sort results by" +msgstr "Ordenar resultados por" + +#: html/Admin/Elements/AddCustomFieldValue:25 +msgid "SortOrder" +msgstr "Ordenamiento" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "Pendiente" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "Página de inicio" + +#: html/Elements/SelectDateType:27 html/Ticket/Elements/EditDates:32 html/Ticket/Elements/ShowDates:35 +msgid "Started" +msgstr "Empezado" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "La fecha de inicio '%1' no se pudo leer" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:27 html/Ticket/Elements/ShowDates:31 +msgid "Starts" +msgstr "Empieza" + +#: NOT FOUND IN SOURCE +msgid "Starts By" +msgstr "Empezado por" + +#: NOT FOUND IN SOURCE +msgid "Starts date '%1' could not be parsed" +msgstr "La fecha de inicio '%1' no se pudo ser leer" + +#: html/Admin/Elements/ModifyUser:82 html/Admin/Users/Modify.html:138 html/User/Prefs.html:94 +msgid "State" +msgstr "Estado" + +#: html/Elements/MyRequests:31 html/Elements/MyTickets:31 html/Search/Elements/PickRestriction:74 html/SelfService/Display.html:59 html/SelfService/Elements/MyRequests:29 html/SelfService/Update.html:31 html/Ticket/Create.html:42 html/Ticket/Elements/EditBasics:38 html/Ticket/Elements/ShowBasics:31 html/Ticket/Update.html:60 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "Estado" + +#: etc/initialdata:288 +msgid "Status Change" +msgstr "Cambio de status" + +#: lib/RT/Transaction_Overlay.pm:530 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "Estado cambiado de %1 a %2" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "StatusChange" + +#: html/Ticket/Elements/Tabs:147 +msgid "Steal" +msgstr "Robar" + +#: lib/RT/Transaction_Overlay.pm:589 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "Robado de %1" + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Search/Bulk.html:126 html/Search/Elements/PickRestriction:43 html/SelfService/Create.html:59 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:35 html/Ticket/Create.html:84 html/Ticket/Elements/EditBasics:28 html/Ticket/ModifyAll.html:79 html/Ticket/Update.html:77 lib/RT/Ticket_Overlay.pm:1160 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "Asunto" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:611 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "Asunto cambiado a %1" + +#: html/Elements/Submit:59 +msgid "Submit" +msgstr "Enviar" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "Submit Workflow" + +#: lib/RT/Group_Overlay.pm:749 +msgid "Succeeded" +msgstr "Completado" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "Dom." + +#: lib/RT/System.pm:54 +msgid "SuperUser" +msgstr "Superusuario" + +#: html/User/Elements/DelegateRights:77 +msgid "System" +msgstr "Sistema" + +#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:567 lib/RT/Interface/Web.pm:757 lib/RT/Interface/Web.pm:790 +msgid "System Error" +msgstr "Error del sistema" + +#: NOT FOUND IN SOURCE +msgid "System Error. Right not granted." +msgstr "Error de sistema. Derecho no concedido" + +#: NOT FOUND IN SOURCE +msgid "System Error. right not granted" +msgstr "Error de sistema. Derecho no concedido" + +#: lib/RT/ACE_Overlay.pm:616 +msgid "System error. Right not delegated." +msgstr "Error del sistema. Privilegio no delegado." + +#: lib/RT/ACE_Overlay.pm:146 lib/RT/ACE_Overlay.pm:223 lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:898 +msgid "System error. Right not granted." +msgstr "Error del sistema. Privilegio no otorgado" + +#: NOT FOUND IN SOURCE +msgid "System error. Unable to grant rights." +msgstr "Error de sistema. Incapaz de conceder permisos" + +#: html/Admin/Global/GroupRights.html:35 html/Admin/Groups/GroupRights.html:37 html/Admin/Queues/GroupRights.html:36 +msgid "System groups" +msgstr "Grupos del sistema" + +#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 +msgid "SystemRolegroup for internal use" +msgstr "SystemRolegroup for internal use" + +#: lib/RT/CurrentUser.pm:320 +msgid "TEST_STRING" +msgstr "TEST_STRING" + +#: html/Ticket/Elements/Tabs:143 +msgid "Take" +msgstr "Coger" + +#: lib/RT/Transaction_Overlay.pm:575 +msgid "Taken" +msgstr "Cogido" + +#: html/Admin/Elements/EditScrip:81 +msgid "Template" +msgstr "Plantilla" + +#: html/Admin/Global/Template.html:91 html/Admin/Queues/Template.html:90 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "Plantilla #%1" + +#: html/Admin/Elements/EditTemplates:89 +msgid "Template deleted" +msgstr "Plantilla borrada" + +#: lib/RT/Scrip_Overlay.pm:153 +msgid "Template not found" +msgstr "Plantilla no encontrada" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "Plantilla no encontrada\\n" + +#: lib/RT/Template_Overlay.pm:347 +msgid "Template parsed" +msgstr "Plantilla procesada" + +#: html/Admin/Elements/QueueTabs:49 html/Admin/Elements/SystemTabs:36 html/Admin/Global/index.html:45 +msgid "Templates" +msgstr "Plantillas" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "Plantillas de %1\\n" + +#: lib/RT/Interface/Web.pm:858 +msgid "That is already the current value" +msgstr "Ese es el valor actual" + +#: lib/RT/CustomField_Overlay.pm:178 +msgid "That is not a value for this custom field" +msgstr "Ese no es un valor para este campo personalizable" + +#: lib/RT/Ticket_Overlay.pm:1886 +msgid "That is the same value" +msgstr "Este es el mismo valor" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "Ese principal ya es un %1 para esta cola" + +#: lib/RT/Ticket_Overlay.pm:1434 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "Ese principal ya es un %1 para este ticket" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "Ese principal no es un %1 para esta cola" + +#: lib/RT/Ticket_Overlay.pm:1551 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "Ese principal no es un %1 para este ticket" + +#: lib/RT/Ticket_Overlay.pm:1882 +msgid "That queue does not exist" +msgstr "Esa cola no existe" + +#: lib/RT/Ticket_Overlay.pm:3143 +msgid "That ticket has unresolved dependencies" +msgstr "Ese ticket tiene dependencias sin resolver" + +#: lib/RT/ACE_Overlay.pm:288 lib/RT/ACE_Overlay.pm:597 +msgid "That user already has that right" +msgstr "Ese usuario ya tiene ese privilegio" + +#: lib/RT/Ticket_Overlay.pm:2952 +msgid "That user already owns that ticket" +msgstr "Ese usuario ya posee ese ticket" + +#: lib/RT/Ticket_Overlay.pm:2918 +msgid "That user does not exist" +msgstr "Ese usuario no existe" + +#: lib/RT/User_Overlay.pm:315 +msgid "That user is already privileged" +msgstr "Ese usuario ya tiene privilegios" + +#: lib/RT/User_Overlay.pm:332 +msgid "That user is already unprivileged" +msgstr "Ese usuario ya está sin privilegios" + +#: lib/RT/User_Overlay.pm:327 +msgid "That user is now privileged" +msgstr "Ese usuario ahora tiene privilegios" + +#: lib/RT/User_Overlay.pm:344 +msgid "That user is now unprivileged" +msgstr "Ese usuario ya no tiene privilegios" + +#: NOT FOUND IN SOURCE +msgid "That user is now unprivilegedileged" +msgstr "Este usuario ya no tiene privilegios" + +#: lib/RT/Ticket_Overlay.pm:2944 +msgid "That user may not own tickets in that queue" +msgstr "Ese usuario puede no poseer tickets en esa cola" + +#: lib/RT/Link_Overlay.pm:206 +msgid "That's not a numerical id" +msgstr "Ese no es un identificador numérico" + +#: html/Ticket/Create.html:150 html/Ticket/Elements/ShowSummary:28 +msgid "The Basics" +msgstr "Lo básico" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The CC of a ticket" +msgstr "El CC de un ticket" + +#: lib/RT/ACE_Overlay.pm:89 +msgid "The administrative CC of a ticket" +msgstr "El CC administrativo de un ticket" + +#: lib/RT/Ticket_Overlay.pm:2213 +msgid "The comment has been recorded" +msgstr "El comentario ha sido grabado" + +#: bin/rt-crontool:198 +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 "El siguiente comando encontrará todos los tickets activos en la cola 'general' y pondra su prioridad a 99 si no han sido tocados en 4 horas:" + +#: bin/rt-commit-handler:756 bin/rt-commit-handler:766 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "Los siguientes comandos no han sido procesados:\\n\\n" + +#: lib/RT/Interface/Web.pm:861 +msgid "The new value has been set." +msgstr "Ha sido establecido el nuevo valor" + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The owner of a ticket" +msgstr "El propietario de un ticket" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The requestor of a ticket" +msgstr "El solicitante de un ticket" + +#: html/Admin/Elements/EditUserComments:26 +msgid "These comments aren't generally visible to the user" +msgstr "Estos comentarios generalmente no están visibles para el usuario" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "Este ticket %1 %2 (%3)" + +#: bin/rt-crontool:189 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "Esta herramiento permite al usuario ejectutar modulos perl arbitrarios desde dentro de RT" + +#: lib/RT/Transaction_Overlay.pm:253 +msgid "This transaction appears to have no content" +msgstr "Parece que esta transacción no tiene contenido" + +#: html/Ticket/Elements/ShowRequestor:47 +#. ($rows) +msgid "This user's %1 highest priority tickets" +msgstr "Los %1 tickets de mayor prioridad de este usuario" + +#: NOT FOUND IN SOURCE +msgid "This user's 25 highest priority tickets" +msgstr "Los 25 casos de mayor prioridad de este usuario" + +#: lib/RT/Date.pm:391 +msgid "Thu." +msgstr "Jue." + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 %2" +msgstr "Ticket # %1 %2" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 Jumbo update: %2" +msgstr "Actualizacion Jumbo para el ticket # %1: %2" + +#: html/Ticket/ModifyAll.html:25 html/Ticket/ModifyAll.html:29 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "Actualización Jumbo para el ticket #%1: %2" + +#: html/Approvals/Elements/ShowDependency:46 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "Ticket #%1: %2" + +#: lib/RT/Ticket_Overlay.pm:608 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "Ticket %1 creado en la cola '%2'" + +#: bin/rt-commit-handler:760 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "Ticket %1 cargado\\n" + +#: html/Search/Bulk.html:181 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "Ticket %1: %2" + +#: html/Ticket/History.html:25 html/Ticket/History.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "Historial del ticket # %1 %2" + +#: html/SelfService/Display.html:34 +msgid "Ticket Id" +msgstr "Id del ticket:" + +#: etc/initialdata:303 +msgid "Ticket Resolved" +msgstr "Ticket resuelto" + +#: html/Search/Elements/PickRestriction:63 +msgid "Ticket attachment" +msgstr "Archivos adjuntos del ticket" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "Contenido del ticket" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "Tipo de contenido del ticket" + +#: lib/RT/Ticket_Overlay.pm:495 lib/RT/Ticket_Overlay.pm:597 +msgid "Ticket could not be created due to an internal error" +msgstr "No se pudo crear el ticket debido a un error interno" + +#: lib/RT/Transaction_Overlay.pm:522 +msgid "Ticket created" +msgstr "Ticket creado" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "Creación del ticket fallida" + +#: lib/RT/Transaction_Overlay.pm:527 +msgid "Ticket deleted" +msgstr "Ticket borrado" + +#: html/REST/1.0/modify:29 html/REST/1.0/update:34 +msgid "Ticket id not found" +msgstr "Id de ticket no encontrada" + +#: NOT FOUND IN SOURCE +msgid "Ticket killed" +msgstr "Ticket matado" + +#: html/REST/1.0/modify:36 html/REST/1.0/update:41 +msgid "Ticket not found" +msgstr "Ticket no encontrado" + +#: etc/initialdata:289 +msgid "Ticket status changed" +msgstr "Estado del ticket cambiado" + +#: html/Ticket/Update.html:39 +msgid "Ticket watchers" +msgstr "Observadores del ticket" + +#: html/Elements/Tabs:49 +msgid "Tickets" +msgstr "Tickets" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "Tickets %1 %2" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "Tickets %1 por %2" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Tickets from %1" +msgstr "Tickets de %1" + +#: html/Approvals/Elements/ShowDependency:27 +msgid "Tickets which depend on this approval:" +msgstr "Tickets que dependen de esta aprobación:" + +#: html/Ticket/Create.html:157 html/Ticket/Elements/EditBasics:48 +msgid "Time Left" +msgstr "Tiempo Restante" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:43 +msgid "Time Worked" +msgstr "Tiempo Trabajado" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "Tiempo restante" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "Tiempo para mostrar" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "Tiempo trabajado" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "TimeLeft" + +#: lib/RT/Ticket_Overlay.pm:1165 +msgid "TimeWorked" +msgstr "TimeWorked" + +#: bin/rt-commit-handler:402 +msgid "To generate a diff of this commit:" +msgstr "Para generar una comparación de este cometido:" + +#: bin/rt-commit-handler:391 +msgid "To generate a diff of this commit:\\n" +msgstr "Para generar una comparación de este cometido:\\n" + +#: lib/RT/Ticket_Overlay.pm:1168 +msgid "Told" +msgstr "Última actualización" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "Transacción" + +#: lib/RT/Transaction_Overlay.pm:642 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "Transacción %1 limpiada" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "Transacción creada" + +#: lib/RT/Transaction_Overlay.pm:89 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "Transaction->Create no pudo, ya no no especificó un ID de ticket" + +#: lib/RT/Transaction_Overlay.pm:701 +msgid "Transactions are immutable" +msgstr "Las transacciones son inmutables" + +#: NOT FOUND IN SOURCE +msgid "Trying to delete a right: %1" +msgstr "Intentando borrar el privilegio: %1" + +#: lib/RT/Date.pm:389 +msgid "Tue." +msgstr "Mar." + +#: html/Admin/Elements/EditCustomField:34 html/Ticket/Elements/AddWatchers:33 html/Ticket/Elements/AddWatchers:44 html/Ticket/Elements/AddWatchers:54 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "Tipo" + +#: lib/RT/ScripCondition_Overlay.pm:104 +msgid "Unimplemented" +msgstr "No implementado" + +#: html/Admin/Users/Modify.html:68 +msgid "Unix login" +msgstr "Usuario en Unix" + +#: html/Admin/Elements/ModifyUser:62 +msgid "UnixUsername" +msgstr "Usuario en Unix" + +#: lib/RT/Attachment_Overlay.pm:265 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "Codificación de contenido desconocida: %1" + +#: html/Elements/SelectResultsPerPage:37 +msgid "Unlimited" +msgstr "Ilimitado" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "No privilegiado" + +#: lib/RT/Transaction_Overlay.pm:571 +msgid "Untaken" +msgstr "No cogido" + +#: html/Elements/MyTickets:64 html/Search/Bulk.html:33 +msgid "Update" +msgstr "Actualizar" + +#: html/Admin/Users/Prefs.html:62 +msgid "Update ID" +msgstr "Id de actualización" + +#: html/Search/Bulk.html:120 html/Ticket/ModifyAll.html:66 html/Ticket/Update.html:67 +msgid "Update Type" +msgstr "Tipo de actualización" + +#: html/Search/Listing.html:61 +msgid "Update all these tickets at once" +msgstr "Actualizar todos estos casos al mismo tiempo" + +#: html/Admin/Users/Prefs.html:49 +msgid "Update email" +msgstr "Actualizar correo" + +#: html/Admin/Users/Prefs.html:55 +msgid "Update name" +msgstr "Actualizar nombre" + +#: lib/RT/Interface/Web.pm:375 +msgid "Update not recorded." +msgstr "Actualización no grabada." + +#: html/Search/Bulk.html:81 +msgid "Update selected tickets" +msgstr "Actualizar tickets seleccionados" + +#: html/Admin/Users/Prefs.html:36 +msgid "Update signature" +msgstr "Actualizar firma" + +#: html/Ticket/ModifyAll.html:63 +msgid "Update ticket" +msgstr "Actualizar ticket" + +#: html/SelfService/Update.html:25 html/SelfService/Update.html:27 +#. ($Ticket->id) +msgid "Update ticket # %1" +msgstr "Actualización de ticket # %1" + +#: html/SelfService/Update.html:50 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "Actualizar ticket #%1" + +#: html/Ticket/Update.html:135 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "Actualizar ticket #%1 (%2)" + +#: lib/RT/Interface/Web.pm:373 +msgid "Update type was neither correspondence nor comment." +msgstr "El tipo de actualización no fue ni respuesta ni comentario" + +#: html/Elements/SelectDateType:33 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1169 +msgid "Updated" +msgstr "Actualizado" + +#: NOT FOUND IN SOURCE +msgid "User %1 %2: %3\\n" +msgstr "Usuario %1 %2: %3\\n" + +#: NOT FOUND IN SOURCE +msgid "User %1 Password: %2\\n" +msgstr "Usuario %1 Contraseña: %2\\n" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found" +msgstr "Usuario '%1' no encontrado" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found\\n" +msgstr "Usuario '%1' no encontrado\\n" + +#: etc/initialdata:125 etc/initialdata:191 +msgid "User Defined" +msgstr "Definido por el usuario" + +#: html/Admin/Users/Prefs.html:59 +msgid "User ID" +msgstr "ID de usuario" + +#: html/Elements/SelectUsers:26 +msgid "User Id" +msgstr "Id de usuario" + +#: html/Admin/Elements/GroupTabs:47 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/SystemTabs:47 html/Admin/Global/index.html:59 +msgid "User Rights" +msgstr "Privilegios de usuario" + +#: html/Admin/Users/Modify.html:226 +#. ($msg) +msgid "User could not be created: %1" +msgstr "El usuario no pudo ser creado: %1" + +#: lib/RT/User_Overlay.pm:262 +msgid "User created" +msgstr "Usuario creado" + +#: html/Admin/Global/GroupRights.html:67 html/Admin/Groups/GroupRights.html:54 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "Grupos definidos por el usuario" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "Usuario notificado" + +#: html/Admin/Users/Prefs.html:25 html/Admin/Users/Prefs.html:29 +msgid "User view" +msgstr "Vista de usuario" + +#: html/Admin/Users/Modify.html:48 html/Elements/Login:42 html/Ticket/Elements/AddWatchers:35 +msgid "Username" +msgstr "Nombre de usuario" + +#: html/Admin/Elements/SelectNewGroupMembers:26 html/Admin/Elements/Tabs:32 html/Admin/Groups/Members.html:55 html/Admin/Queues/People.html:68 html/Admin/index.html:29 html/User/Groups/Members.html:58 +msgid "Users" +msgstr "Usuarios" + +#: html/Admin/Users/index.html:65 +msgid "Users matching search criteria" +msgstr "Usuarios que concuerdan con los criterios de búsqueda" + +#: html/Search/Elements/PickRestriction:51 +msgid "ValueOfQueue" +msgstr "Valor de la cola" + +#: html/Admin/Elements/EditCustomField:40 +msgid "Values" +msgstr "Valores" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Watch" +msgstr "Observar" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "WatchAsAdminCc" +msgstr "WatchAsAdminCc" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "Observador cargado" + +#: html/Admin/Elements/QueueTabs:42 +msgid "Watchers" +msgstr "Observadores" + +#: html/Admin/Elements/ModifyUser:56 +msgid "WebEncoding" +msgstr "Codificación de Web" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "Mie." + +#: etc/upgrade/2.1.71:161 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "Cuando un ticket ha sido aprobado por todos los aprobadores, añadir correspondencia al ticket original" + +#: etc/upgrade/2.1.71:135 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "Cuando un ticket ha sido aprobado por cualquier aprobador, añadir correspondencia al ticket original" + +#: etc/initialdata:138 +msgid "When a ticket is created" +msgstr "Cuando un ticket se crea" + +#: etc/upgrade/2.1.71:79 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "Cuando una aprobacion de ticket se crea, notifica al propietario y AdminCC del item que espera su aprobación" + +#: etc/initialdata:143 +msgid "When anything happens" +msgstr "Cuando pasa cualquier cosa" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "Siempre que un ticket este sin resolver" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "Siempre que el propietario de un ticket cambie" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "Siempre que la cola de un ticket cambie" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "Siempre que el estado de un ticket cambie" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "Siempre que ocurra una condicion definida por el usuario" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "Siempre que venga algun comentario" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "Siempre que venga correspondencia" + +#: html/Admin/Users/Modify.html:164 html/User/Prefs.html:52 +msgid "Work" +msgstr "Trabajo" + +#: html/Admin/Elements/ModifyUser:70 +msgid "WorkPhone" +msgstr "Tel Trabajo" + +#: html/SelfService/Display.html:86 html/Ticket/Elements/ShowBasics:35 html/Ticket/Update.html:65 +msgid "Worked" +msgstr "Trabajado" + +#: lib/RT/Ticket_Overlay.pm:3056 +msgid "You already own this ticket" +msgstr "Usted ya es propietario de este caso" + +#: html/autohandler:121 +msgid "You are not an authorized user" +msgstr "Usted no es un usuario autorizado" + +#: lib/RT/Ticket_Overlay.pm:2930 +msgid "You can only reassign tickets that you own or that are unowned" +msgstr "Usted solo puede reasignar casos que posee o que no posee nadie³" + +#: NOT FOUND IN SOURCE +msgid "You don't have permission to view that ticket.\\n" +msgstr "No tiene permiso para ver ese ticket.\\n" + +#: docs/design_docs/string-extraction-guide.txt:47 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "Usted encontró %1 casos en la cola %2" + +#: html/NoAuth/Logout.html:31 html/REST/1.0/logout:25 +msgid "You have been logged out of RT." +msgstr "Se ha desconectado del sistema RT" + +#: html/SelfService/Display.html:134 +msgid "You have no permission to create tickets in that queue." +msgstr "No tiene permiso para crear tickets en esa cola." + +#: lib/RT/Ticket_Overlay.pm:1895 +msgid "You may not create requests in that queue." +msgstr "No puede crear solicitudes en esa cola." + +#: html/NoAuth/Logout.html:36 +msgid "You're welcome to login again" +msgstr "Es bienvenido a regresar en cualquier momento." + +#: html/SelfService/Elements/MyRequests:25 +#. ($friendly_status) +msgid "Your %1 requests" +msgstr "Sus solicitudes %1" + +#: NOT FOUND IN SOURCE +msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" +msgstr "Su administrador del RT ha desconfigurado el alias de correo que invoca el RT" + +#: etc/initialdata:429 etc/upgrade/2.1.71:146 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "Su petición ha sido aprobada por %1. Otras aprobaciones pueden estar pendientes todavia" + +#: etc/initialdata:463 etc/upgrade/2.1.71:180 +msgid "Your request has been approved." +msgstr "Su peticion ha sido aprobada." + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "Su petición ha sido rechazada" + +#: etc/initialdata:384 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "Su petición ha sido rechazada" + +#: html/autohandler:136 html/autohandler:142 +msgid "Your username or password is incorrect" +msgstr "Nombre o contraseña de usuario incorrectos" + +#: html/Admin/Elements/ModifyUser:84 html/Admin/Users/Modify.html:144 html/User/Prefs.html:96 +msgid "Zip" +msgstr "Zip" + +#: NOT FOUND IN SOURCE +msgid "[no subject]" +msgstr "[sin asunto]" + +#: html/User/Elements/DelegateRights:59 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "como priviligiado para %1" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:34 +msgid "contains" +msgstr "contiene" + +#: html/Elements/SelectAttachmentField:26 +msgid "content" +msgstr "contenido" + +#: html/Elements/SelectAttachmentField:27 +msgid "content-type" +msgstr "content-type" + +#: lib/RT/Ticket_Overlay.pm:2282 +msgid "correspondence (probably) not sent" +msgstr "Respuesta (probablemente) no enviada" + +#: lib/RT/Ticket_Overlay.pm:2292 +msgid "correspondence sent" +msgstr "Correspondencia enviada" + +#: html/Admin/Elements/ModifyQueue:63 html/Admin/Queues/Modify.html:77 lib/RT/Date.pm:319 +msgid "days" +msgstr "dÃas" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "muerto" + +#: html/Search/Listing.html:75 +msgid "delete" +msgstr "borrar" + +#: lib/RT/Queue_Overlay.pm:63 +msgid "deleted" +msgstr "borrado" + +#: html/Search/Elements/PickRestriction:68 +msgid "does not match" +msgstr "no coincide" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:35 +msgid "doesn't contain" +msgstr "no contiene" + +#: html/Elements/SelectEqualityOperator:38 +msgid "equal to" +msgstr "igual a" + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "falso" + +#: html/Elements/SelectAttachmentField:28 +msgid "filename" +msgstr "nombre de archivo" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "greater than" +msgstr "mayor que" + +#: lib/RT/Group_Overlay.pm:194 +#. ($self->Name) +msgid "group '%1'" +msgstr "grupo '%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "horas" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "id" + +#: html/Elements/SelectBoolean:32 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "is" +msgstr "es" + +#: html/Elements/SelectBoolean:36 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:37 html/Search/Elements/PickRestriction:48 html/Search/Elements/PickRestriction:77 html/Search/Elements/PickRestriction:89 +msgid "isn't" +msgstr "no es" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "less than" +msgstr "menor que" + +#: html/Search/Elements/PickRestriction:67 +msgid "matches" +msgstr "contiene" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "min" + +#: html/Ticket/Update.html:66 +msgid "minutes" +msgstr "minutos" + +#: bin/rt-commit-handler:765 +msgid "modifications\\n\\n" +msgstr "modificaciones\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "meses" + +#: lib/RT/Queue_Overlay.pm:58 +msgid "new" +msgstr "nuevo" + +#: html/Admin/Elements/EditScrips:43 +msgid "no value" +msgstr "sin valor" + +#: html/Ticket/Elements/EditWatchers:28 +msgid "none" +msgstr "ninguno" + +#: html/Elements/SelectEqualityOperator:38 +msgid "not equal to" +msgstr "no igual a" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "notlike" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "open" +msgstr "abierto" + +#: lib/RT/Group_Overlay.pm:199 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "grupo personal '%1' para usuario '%2'" + +#: lib/RT/Group_Overlay.pm:207 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "Cola %1 %2" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "rejected" +msgstr "rechazado" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "resolved" +msgstr "resuelto" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "sec" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "stalled" +msgstr "pendiente" + +#: lib/RT/Group_Overlay.pm:202 +#. ($self->Type) +msgid "system %1" +msgstr "sistema %1" + +#: lib/RT/Group_Overlay.pm:213 +#. ($self->Type) +msgid "system group '%1'" +msgstr "grupo del sistema '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:42 +msgid "the calling component did not specify why" +msgstr "el componente que llama no especifica por qué" + +#: lib/RT/Group_Overlay.pm:210 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "ticket #%1 %2" + +#: NOT FOUND IN SOURCE +msgid "true" +msgstr "verdadero" + +#: lib/RT/Group_Overlay.pm:216 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "grupo sin descripción %1" + +#: NOT FOUND IN SOURCE +msgid "undescripbed group %1" +msgstr "grupo sin descripción %1" + +#: lib/RT/Group_Overlay.pm:191 +#. ($user->Object->Name) +msgid "user %1" +msgstr "usuario %1" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "semanas" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "con plantilla %1" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "años" + diff --git a/rt/lib/RT/I18N/fi.po b/rt/lib/RT/I18N/fi.po new file mode 100644 index 000000000..ee1ad71f9 --- /dev/null +++ b/rt/lib/RT/I18N/fi.po @@ -0,0 +1,4750 @@ +# Finnish localization catalog for Request Tracker (RT) +# First Author: Janne Pirkkanen <jp@oppipoika.net>, Jul 2002 +msgid "" +msgstr "" +"Project-Id-Version: RT 2.1.x\n" +"POT-Creation-Date: 2002-07-08 17:41+0200\n" +"PO-Revision-Date: 2002-07-09 18:09+0200\n" +"Last-Translator: Janne Pirkkanen <jp@oppipoika.net>\n" +"Language-Team: Finnish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 +msgid "#" +msgstr "" + +#: html/Admin/Queues/Scrip.html:55 +#. ($QueueObj->id) +msgid "#%1" +msgstr "" + +#: html/Approvals/Elements/ShowDependency:50 html/Ticket/Display.html:26 html/Ticket/Display.html:30 +#. ($Ticket->Id, $Ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($args{'FIELD'}, $args{'OPERATOR'}, $args{'VALUE'}) +msgid "%1 %2 %3" +msgstr "" + +#: 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 %3.%2 %7 %4:%5:%6" + +#: lib/RT/Ticket_Overlay.pm:3438 lib/RT/Transaction_Overlay.pm:559 lib/RT/Transaction_Overlay.pm:601 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 added" +msgstr "" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3444 lib/RT/Transaction_Overlay.pm:566 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1: %2 muutettu arvoon %3" + +#: lib/RT/Ticket_Overlay.pm:3441 lib/RT/Transaction_Overlay.pm:562 lib/RT/Transaction_Overlay.pm:607 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 deleted" +msgstr "" + +#: html/Admin/Elements/EditScrips:44 html/Admin/Elements/ListGlobalScrips:28 +#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) +msgid "%1 %2 with template %3" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 (%2) %3 this ticket\\n" +msgstr "%1 (%2) %3 tässä työpyynnössä\\n" + +#: html/Search/Listing.html:57 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "" + +#: bin/rt-crontool:169 bin/rt-crontool:176 bin/rt-crontool:182 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - An argument to pass to %2" +msgstr "" + +#: bin/rt-crontool:185 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "" + +#: bin/rt-crontool:179 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "" + +#: bin/rt-crontool:173 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "" + +#: bin/rt-crontool:166 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "" + +#: lib/RT/ScripAction_Overlay.pm:122 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "ScriptAction %1 ladattu" + +#: lib/RT/Ticket_Overlay.pm:3471 +#. ($args{'Value'}, $cf->Name) +msgid "%1 added as a value for %2" +msgstr "%1 lisätty arvoksi %2lle" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on" +msgstr "%1 aliakset vaativat työpyynnön id:n" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on " +msgstr "%1 aliakset vaativat työpyynnön id:n " + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on (from %2) %3" +msgstr "%1 aliakset vaativat työpyynnön id:n (osoite %2) %3" + +#: lib/RT/Link_Overlay.pm:117 lib/RT/Link_Overlay.pm:124 +#. ($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:52 lib/RT/Transaction_Overlay.pm:483 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%1 - %2" + +#: lib/RT/Transaction_Overlay.pm:537 lib/RT/Transaction_Overlay.pm:626 lib/RT/Transaction_Overlay.pm:635 lib/RT/Transaction_Overlay.pm:638 +#. ($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 muutettu arvosta %2 arvoon %3" + +#: lib/RT/Interface/Web.pm:857 +msgid "%1 could not be set to %2." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 couldn't init a transaction (%2)\\n" +msgstr "%1 ei voinut suorittaa toimintoa (%2)\\n" + +#: lib/RT/Ticket_Overlay.pm:2813 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1 ei voinut asettaa tilan arvoa päätetyksi. RT:n tietokanta saattaa olla vioittunut." + +#: html/Elements/MyTickets:25 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "" + +#: html/Elements/MyRequests:25 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "" + +#: bin/rt-crontool:161 +#. ($0) +msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." +msgstr "" + +#: lib/RT/Queue_Overlay.pm:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1 ei ole enää %2 tälle työjonolle" + +#: lib/RT/Ticket_Overlay.pm:1570 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 ei ole enää %2 tälle työpyynnölle" + +#: lib/RT/Ticket_Overlay.pm:3527 +#. ($args{'Value'}, $cf->Name) +msgid "%1 is no longer a value for custom field %2" +msgstr "%1 ei ole enää kentän %2 arvo" + +#: NOT FOUND IN SOURCE +msgid "%1 isn't a valid Queue id." +msgstr "%1 ei ole kelvollinen työjonon id" + +#: html/Ticket/Elements/ShowBasics:36 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 min" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "%1 ei näy" + +#: html/User/Elements/DelegateRights:76 +#. (loc($ObjectType =~ /^RT::(.*)$/)) +msgid "%1 rights" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 succeeded\\n" +msgstr "%1 onnistui\\n" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for $MessageId" +msgstr "%1 tyyppi tuntematon viestille $MessageId" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for %2" +msgstr "%1 tyyppi tuntematon viestille %2" + +#: NOT FOUND IN SOURCE +msgid "%1 was created without a CurrentUser\\n" +msgstr "" + +#: lib/RT/Action/ResolveMembers.pm:42 +#. (ref $self) +msgid "%1 will resolve all members of a resolved group ticket." +msgstr "%1 päättää kaikki päätetyt työpyynnöt -ryhmän työpyynnöt." + +#: NOT FOUND IN SOURCE +msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." +msgstr "%1 jäädyttää [paikallisen] BASE jos se riippuu linkitetystä työpyynnöstä [tai on sen jäsen]." + +#: lib/RT/Transaction_Overlay.pm:435 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1: liitetiedostoa ei ole määritelty" + +#: html/Ticket/Elements/ShowTransaction:102 +#. ($size) +msgid "%1b" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:99 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1140 +#. ($args{'Status'}) +msgid "'%1' is an invalid value for status" +msgstr "'%1' ei kelpaa tilan arvoksi" + +#: NOT FOUND IN SOURCE +msgid "'%1' not a recognized action. " +msgstr "'%1' ei ole tunnettu tapahtuma." + +#: NOT FOUND IN SOURCE +msgid "(Check box to delete group member)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "(Check box to delete scrip)" +msgstr "(Rastita laatikko poistaaksesi skriptin)" + +#: html/Admin/Elements/EditQueueWatchers:29 html/Admin/Elements/EditScrips:35 html/Admin/Elements/EditTemplates:36 html/Admin/Groups/Members.html:52 html/Ticket/Elements/EditLinks:33 html/Ticket/Elements/EditPeople:46 html/User/Groups/Members.html:55 +msgid "(Check box to delete)" +msgstr "(Rastita laatikko poistaaksesi)" + +#: NOT FOUND IN SOURCE +msgid "(Check boxes to delete)" +msgstr "" + +#: html/Ticket/Create.html:178 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(Syötä työpyynnön numerot tai www-osoitteet, välilyönneillä erotettuina)" + +#: html/Admin/Queues/Modify.html:54 html/Admin/Queues/Modify.html:60 +#. ($RT::CorrespondAddress) +#. ($RT::CommentAddress) +msgid "(If left blank, will default to %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:33 html/Admin/Elements/ListGlobalCustomFields:32 +msgid "(No custom fields)" +msgstr "" + +#: html/Admin/Groups/Members.html:50 html/User/Groups/Members.html:53 +msgid "(No members)" +msgstr "(Ei jäseniä)" + +#: html/Admin/Elements/EditScrips:32 html/Admin/Elements/ListGlobalScrips:32 +msgid "(No scrips)" +msgstr "(Ei skriptejä)" + +#: html/Admin/Elements/EditTemplates:31 +msgid "(No templates)" +msgstr "" + +#: html/Ticket/Update.html:85 +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 "" + +#: 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 "(Lähettää piilokopion tästä päivityksestä pilkulla erotettuihin sähköpostiosoitteisiin. <b>Ei muuta</b> jatkossa tehtävien lähetysten kohteita.)" + +#: html/Ticket/Create.html:79 +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 "" + +#: html/Ticket/Update.html:81 +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 "" + +#: 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 "(Lähettää kopion tästä päivityksestä pilkulla erotettuihin sähköpostiosoitteisiin. <b>Ei muuta</b> jatkossa tehtävien lähetysten kohteita.)" + +#: html/Ticket/Create.html:69 +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 "" + +#: html/Admin/Groups/index.html:33 html/User/Groups/index.html:33 +msgid "(empty)" +msgstr "(tyhjä)" + +#: html/Admin/Users/index.html:39 +msgid "(no name listed)" +msgstr "" + +#: html/Elements/MyRequests:43 html/Elements/MyTickets:45 +msgid "(no subject)" +msgstr "(ei otsikkoa)" + +#: html/Admin/Elements/SelectRights:48 html/Elements/SelectCustomFieldValue:30 html/Ticket/Elements/EditCustomField:59 html/Ticket/Elements/ShowCustomFields:36 lib/RT/Transaction_Overlay.pm:536 +msgid "(no value)" +msgstr "(ei arvoa)" + +#: html/Ticket/Elements/EditLinks:116 +msgid "(only one ticket)" +msgstr "(vain yksi työpyyntö)" + +#: html/Elements/MyRequests:52 html/Elements/MyTickets:55 +msgid "(pending approval)" +msgstr "" + +#: html/Elements/MyRequests:54 html/Elements/MyTickets:57 +msgid "(pending other tickets)" +msgstr "" + +#: html/Admin/Users/Modify.html:50 +msgid "(required)" +msgstr "(pakollinen)" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "(untitled)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I own..." +msgstr "25 omistamaani korkeimpien prioriteettien työpyyntöä..." + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I requested..." +msgstr "25 tilaamaani korkeimman prioriteetin työpyyntöä..." + +#: html/Ticket/Elements/ShowBasics:32 +msgid "<% $Ticket->Status%>" +msgstr "" + +#: html/Elements/SelectTicketTypes:27 +msgid "<% $_ %>" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:26 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"Uusi työpyyntö\"> %1" + +#: etc/initialdata:203 +msgid "A blank template" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE Deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE Loaded" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be found" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:157 lib/RT/Principal_Overlay.pm:181 +msgid "ACE not found" +msgstr "ACE ei löytynyt" + +#: lib/RT/ACE_Overlay.pm:831 +msgid "ACEs can only be created and deleted." +msgstr "ACE:ja voi vain luoda ja poistaa." + +#: bin/rt-commit-handler:755 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "Poistuminen ei-tarkoitettujen työpyyntömuutosten välttämiseksi.\\n" + +#: html/User/Elements/Tabs:32 +msgid "About me" +msgstr "" + +#: html/Admin/Users/Modify.html:80 +msgid "Access control" +msgstr "Pääsynvalvonta" + +#: html/Admin/Elements/EditScrip:57 +msgid "Action" +msgstr "Tapahtuma" + +#: lib/RT/Scrip_Overlay.pm:147 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "Tapahtumaa %1 ei löydetty" + +#: bin/rt-crontool:123 +msgid "Action committed." +msgstr "" + +#: bin/rt-crontool:119 +msgid "Action prepared..." +msgstr "" + +#: html/Search/Bulk.html:92 +msgid "Add AdminCc" +msgstr "Lisää kopio ylläpidolle" + +#: html/Search/Bulk.html:90 +msgid "Add Cc" +msgstr "Lisää kopio" + +#: html/Ticket/Create.html:114 html/Ticket/Update.html:100 +msgid "Add More Files" +msgstr "" + +#: html/Search/Bulk.html:88 +msgid "Add Requestor" +msgstr "Lisää tilaaja" + +#: 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 "Lisää uusi globaali lappu" + +#: NOT FOUND IN SOURCE +msgid "Add a scrip to this queue" +msgstr "Lisää lappu tälle työjonolle" + +#: html/Admin/Global/Scrip.html:55 +msgid "Add a scrip which will apply to all queues" +msgstr "Lisää kaikille työjonoille yhteinen lappu" + +#: html/Search/Bulk.html:118 +msgid "Add comments or replies to selected tickets" +msgstr "Lisää kommentteja tai vastauksia valituille työpyynnöille" + +#: html/Admin/Groups/Members.html:42 html/User/Groups/Members.html:39 +msgid "Add members" +msgstr "Lisää jäsenä" + +#: html/Admin/Queues/People.html:66 html/Ticket/Elements/AddWatchers:28 +msgid "Add new watchers" +msgstr "Lisää uusia tarkkailijoita" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "Lisätty toimeksiantaja %1:ksi tähän työjonoon" + +#: lib/RT/Ticket_Overlay.pm:1454 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "Lisätty toimeksiantaja %1:ksi tälle työpyynnölle" + +#: html/Admin/Elements/ModifyUser:76 html/Admin/Users/Modify.html:122 html/User/Prefs.html:88 +msgid "Address1" +msgstr "Osoite1" + +#: html/Admin/Elements/ModifyUser:78 html/Admin/Users/Modify.html:127 html/User/Prefs.html:90 +msgid "Address2" +msgstr "Osoite2" + +#: html/Ticket/Create.html:74 +msgid "Admin Cc" +msgstr "Kopio ylläpidolle" + +#: etc/initialdata:274 +msgid "Admin Comment" +msgstr "" + +#: etc/initialdata:256 +msgid "Admin Correspondence" +msgstr "" + +#: html/Admin/Queues/index.html:25 html/Admin/Queues/index.html:28 +msgid "Admin queues" +msgstr "Työjonojen ylläpito" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "Käyttäjien ylläpito" + +#: html/Admin/Global/index.html:26 html/Admin/Global/index.html:28 +msgid "Admin/Global configuration" +msgstr "Ylläpito/Globaalit asetukset" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "Ylläpito/Ryhmät" + +#: html/Admin/Queues/Modify.html:25 html/Admin/Queues/Modify.html:29 +msgid "Admin/Queue/Basics" +msgstr "Ylläpito/Työjono/Perustiedot" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "" + +#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:39 html/Ticket/Update.html:50 lib/RT/ACE_Overlay.pm:89 +msgid "AdminCc" +msgstr "Kopio ylläpidolle" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "AdminCustomFields" +msgstr "" + +#: lib/RT/Group_Overlay.pm:146 +msgid "AdminGroup" +msgstr "" + +#: lib/RT/Group_Overlay.pm:148 +msgid "AdminGroupMembership" +msgstr "" + +#: lib/RT/System.pm:59 +msgid "AdminOwnPersonalGroups" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "AdminQueue" +msgstr "" + +#: lib/RT/System.pm:60 +msgid "AdminUsers" +msgstr "" + +#: html/Admin/Queues/People.html:48 html/Ticket/Elements/EditPeople:54 +msgid "Administrative Cc" +msgstr "Kopio ylläpidolle" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "Tarkennettu haku" + +#: html/Elements/SelectDateRelation:36 +msgid "After" +msgstr "Jälkeen" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:96 +msgid "All Custom Fields" +msgstr "" + +#: html/Admin/Queues/index.html:53 +msgid "All Queues" +msgstr "Kaikki työjonot" + +#: NOT FOUND IN SOURCE +msgid "Always sends a message to the requestors independent of message sender" +msgstr "" + +#: html/Elements/Tabs:58 +msgid "Approval" +msgstr "" + +#: html/Approvals/Display.html:46 html/Approvals/Elements/Approve:27 html/Approvals/Elements/ShowDependency:42 html/Approvals/index.html:65 +#. ($Ticket->Id, $Ticket->Subject) +#. ($ticket->id, $msg) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Approval #%1: %2" +msgstr "" + +#: html/Approvals/index.html:54 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "" + +#: html/Approvals/index.html:52 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "" + +#: html/Approvals/Elements/Approve:45 +msgid "Approve" +msgstr "" + +#: etc/initialdata:431 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "Huhti" + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "" + +#: html/Elements/SelectSortOrder:35 +msgid "Ascending" +msgstr "Nouseva" + +#: html/Search/Bulk.html:127 html/SelfService/Update.html:36 html/Ticket/ModifyAll.html:83 html/Ticket/Update.html:100 +msgid "Attach" +msgstr "Liitä" + +#: html/SelfService/Create.html:67 html/Ticket/Create.html:110 +msgid "Attach file" +msgstr "Liitä tiedosto" + +#: html/Ticket/Create.html:98 html/Ticket/Update.html:89 +msgid "Attached file" +msgstr "" + +#: html/SelfService/Attachment/dhandler:36 +msgid "Attachment '%1' could not be loaded" +msgstr "Liitteen '%1' lataaminen ei onnistunut" + +#: lib/RT/Transaction_Overlay.pm:443 +msgid "Attachment created" +msgstr "Liitetiedosto luotu" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "Liitetiedoston nimi" + +#: html/Ticket/Elements/ShowAttachments:26 +msgid "Attachments" +msgstr "Liitetiedostot" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "Elo" + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "" + +#: html/Admin/Elements/ModifyUser:66 +msgid "AuthSystem" +msgstr "" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Bad PGP Signature: %1\\n" +msgstr "Virheellinen PGP allekirjoitus: %1\\n" + +#: html/SelfService/Attachment/dhandler:40 +msgid "Bad attachment id. Couldn't find attachment '%1'\\n" +msgstr "Virheellinen liitteen numero. Liitetiedostoa '%1' ei löytynyt\\n" + +#: bin/rt-commit-handler:827 +#. ($val) +msgid "Bad data in %1" +msgstr "Virheellistä dataa kentässä %1" + +#: html/SelfService/Attachment/dhandler:43 +#. ($trans, $AttachmentObj->TransactionId()) +msgid "Bad transaction number for attachment. %1 should be %2\\n" +msgstr "Virheellinen toiminnon numero liitetiedostolle. %1 pitäisi olla %2\\n" + +#: html/Admin/Elements/GroupTabs:39 html/Admin/Elements/QueueTabs:39 html/Admin/Elements/UserTabs:38 html/Ticket/Elements/Tabs:90 html/User/Elements/GroupTabs:38 +msgid "Basics" +msgstr "Perustiedot" + +#: html/Ticket/Update.html:83 +msgid "Bcc" +msgstr "Piilokopio" + +#: html/Admin/Elements/EditScrip:88 html/Admin/Global/GroupRights.html:85 html/Admin/Global/Template.html:46 html/Admin/Global/UserRights.html:54 html/Admin/Groups/GroupRights.html:73 html/Admin/Groups/Members.html:81 html/Admin/Groups/Modify.html:56 html/Admin/Groups/UserRights.html:55 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:45 html/Admin/Queues/UserRights.html:54 html/User/Groups/Modify.html:56 +msgid "Be sure to save your changes" +msgstr "Muista tallentaa muutokset" + +#: html/Elements/SelectDateRelation:34 lib/RT/CurrentUser.pm:322 +msgid "Before" +msgstr "Ennen" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "" + +#: html/Search/Listing.html:79 +msgid "Bookmarkable URL for this search" +msgstr "Osoite tähän kyselyyn (selaimen kirjanmerkkeihin)" + +#: html/Ticket/Elements/ShowHistory:39 html/Ticket/Elements/ShowHistory:45 +msgid "Brief headers" +msgstr "Lyhyet otsikot" + +#: html/Search/Bulk.html:25 html/Search/Bulk.html:26 +msgid "Bulk ticket update" +msgstr "Työpyyntöjen ryhmäpäivitys" + +#: lib/RT/User_Overlay.pm:1331 +msgid "Can not modify system users" +msgstr "Systeemikäyttäjien muokkaus ei ole sallittua" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Can this principal see this queue" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:144 +msgid "Can't add a custom field value without a name" +msgstr "Kentän lisääminen ilman nimeä ei onnistu" + +#: lib/RT/Link_Overlay.pm:132 +msgid "Can't link a ticket to itself" +msgstr "Työpyyntöä ei voi linkittää itseensä" + +#: lib/RT/Ticket_Overlay.pm:2787 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "Et voi yhdistää jo yhdistettyyn työpyyntöön. Sinun ei pitäisi saada tätä virhettä koskaan." + +#: lib/RT/Ticket_Overlay.pm:2605 lib/RT/Ticket_Overlay.pm:2674 +msgid "Can't specifiy both base and target" +msgstr "Sekä basen ja kohteen määritteleminen samalla ei ole mahdollista" + +#: html/autohandler:112 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "Käyttäjää ei voitu luoda: %1" + +#: etc/initialdata:50 html/Admin/Queues/People.html:44 html/SelfService/Create.html:51 html/SelfService/Display.html:50 html/Ticket/Create.html:64 html/Ticket/Elements/EditPeople:51 html/Ticket/Elements/ShowPeople:35 html/Ticket/Update.html:45 html/Ticket/Update.html:78 lib/RT/ACE_Overlay.pm:88 +msgid "Cc" +msgstr "Kopio" + +#: html/SelfService/Prefs.html:31 +msgid "Change password" +msgstr "Muuta salasana" + +#: html/Ticket/Create.html:101 html/Ticket/Update.html:92 +msgid "Check box to delete" +msgstr "" + +#: html/Admin/Elements/SelectRights:31 +msgid "Check box to revoke right" +msgstr "Valitse laatikko poistaaksesi oikeuden" + +#: html/Ticket/Create.html:183 html/Ticket/Elements/EditLinks:131 html/Ticket/Elements/EditLinks:69 html/Ticket/Elements/ShowLinks:51 +msgid "Children" +msgstr "Lapsi" + +#: html/Admin/Elements/ModifyUser:80 html/Admin/Users/Modify.html:132 html/User/Prefs.html:92 +msgid "City" +msgstr "Kaupunki" + +#: html/Ticket/Elements/ShowDates:47 +msgid "Closed" +msgstr "" + +#: html/SelfService/Elements/Tabs:60 +msgid "Closed requests" +msgstr "Suljetut työpyynnöt" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "Komentoa ei ymmärretty!\\n" + +#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:153 +msgid "Comment" +msgstr "Kommentoi" + +#: html/Admin/Elements/ModifyQueue:45 html/Admin/Queues/Modify.html:58 +msgid "Comment Address" +msgstr "Kommenttien osoite" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "Kommenttia ei tallennettu" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Comment on tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "CommentOnTicket" +msgstr "" + +#: html/Admin/Elements/ModifyUser:35 +msgid "Comments" +msgstr "Kommentit" + +#: html/Ticket/ModifyAll.html:70 html/Ticket/Update.html:70 +msgid "Comments (Not sent to requestors)" +msgstr "Kommentit (Ei lähetetä tilaajille)" + +#: html/Search/Bulk.html:122 +msgid "Comments (not sent to requestors)" +msgstr "Kommentit (Ei lähetetä tilaajille)" + +#: html/Elements/ViewUser:27 +#. ($name) +msgid "Comments about %1" +msgstr "Kommentit kohteesta %1" + +#: html/Admin/Users/Modify.html:185 html/Ticket/Elements/ShowRequestor:44 +msgid "Comments about this user" +msgstr "Kommentit tästä käyttäjästä" + +#: lib/RT/Transaction_Overlay.pm:545 +msgid "Comments added" +msgstr "Kommentit lisätty" + +#: lib/RT/Action/Generic.pm:140 +msgid "Commit Stubbed" +msgstr "Suorita tumppi" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "Kokoa rajoitukset" + +#: html/Admin/Elements/EditScrip:41 +msgid "Condition" +msgstr "Ehto" + +#: bin/rt-crontool:109 +msgid "Condition matches..." +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:160 +msgid "Condition not found" +msgstr "Ehtoa ei löydetty" + +#: html/Elements/Tabs:52 +msgid "Configuration" +msgstr "Ylläpito" + +#: html/SelfService/Prefs.html:33 +msgid "Confirm" +msgstr "Varmista" + +#: html/Admin/Elements/ModifyUser:60 +msgid "ContactInfoSystem" +msgstr "Kontaktitietojärjestelmä" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "Järjestelmä ei ymmärrä päivää '%1'" + +#: html/Admin/Elements/ModifyTemplate:44 html/Ticket/ModifyAll.html:87 +msgid "Content" +msgstr "Sisältö" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "" + +#: etc/initialdata:266 +msgid "Correspondence" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:39 html/Admin/Queues/Modify.html:51 +msgid "Correspondence Address" +msgstr "Kirjeenvaihdon osoite" + +#: lib/RT/Transaction_Overlay.pm:541 +msgid "Correspondence added" +msgstr "Kirjeenvaihto lisätty" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "Vastausta ei tallennettu" + +#: lib/RT/Ticket_Overlay.pm:3458 +msgid "Could not add new custom field value for ticket. " +msgstr "Uuden tiedon lisääminen kenttään ei onnistunut" + +#: NOT FOUND IN SOURCE +msgid "Could not add new custom field value for ticket. %1 " +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2963 lib/RT/Ticket_Overlay.pm:2971 lib/RT/Ticket_Overlay.pm:2987 +msgid "Could not change owner. " +msgstr "Omistajaa ei voitu vaihtaa." + +#: html/Admin/Elements/EditCustomField:68 html/Admin/Elements/EditCustomFields:166 +#. ($msg) +msgid "Could not create CustomField" +msgstr "Uuden kentän lisääminen ei onnistunut" + +#: html/User/Groups/Modify.html:77 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 +msgid "Could not create group" +msgstr "Ryhmän luominen ei onnistunut" + +#: html/Admin/Global/Template.html:75 html/Admin/Queues/Template.html:72 +#. ($msg) +msgid "Could not create template: %1" +msgstr "Ei onnistuttu luomaan pohjaa: " + +#: lib/RT/Ticket_Overlay.pm:1073 lib/RT/Ticket_Overlay.pm:333 +msgid "Could not create ticket. Queue not set" +msgstr "Työpyynön luominen ei onnistunut. Työjonoa ei ole asetettu" + +#: lib/RT/User_Overlay.pm:208 lib/RT/User_Overlay.pm:220 lib/RT/User_Overlay.pm:238 lib/RT/User_Overlay.pm:414 +msgid "Could not create user" +msgstr "Käyttäjän luominen ei onnistunut" + +#: NOT FOUND IN SOURCE +msgid "Could not create watcher for requestor" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Could not find a ticket with id %1" +msgstr "Työpyyntöä numero '%1' ei löytynyt." + +#: NOT FOUND IN SOURCE +msgid "Could not find group %1." +msgstr "Ryhmää '%1' ei löytynyt." + +#: lib/RT/Queue_Overlay.pm:621 lib/RT/Ticket_Overlay.pm:1422 +msgid "Could not find or create that user" +msgstr "Käyttäjää ei löydetty eikä pystytty luomaan" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1501 +msgid "Could not find that principal" +msgstr "Tätä toimeksiantajaa ei löytynyt" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "Käyttäjää '%1' ei löytynyt." + +#: html/Admin/Groups/Members.html:88 html/User/Groups/Members.html:90 html/User/Groups/Modify.html:82 +msgid "Could not load group" +msgstr "Ryhmän lataaminen ei onnistunut" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "Ei voinut tehdä toimeksiantajaa %1:ksi tälle työjonolle" + +#: lib/RT/Ticket_Overlay.pm:1443 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "Ei voinut tehdä toimeksiantajaa tälle työpyynnölle: %1" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "Ei voinut poistaa toimeksiantajaa tältä työjonolta: %1" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "Ei voinut poistaa toimeksiantajaa tältä työpyynnöltä: %1" + +#: lib/RT/Group_Overlay.pm:985 +msgid "Couldn't add member to group" +msgstr "Jäsenen lisääminen ryhmään ei onnistunut" + +#: lib/RT/Ticket_Overlay.pm:3468 lib/RT/Ticket_Overlay.pm:3524 +#. ($Msg) +msgid "Couldn't create a transaction: %1" +msgstr "Toiminnon luominen ei onnistunut: %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't figure out what to do from gpg's reply\\n" +msgstr "Järjestelmä ei ymmärtänyt mitä tehdä pgp:n vastauksella\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find group\\n" +msgstr "Ryhmää ei löytynyt\\n" + +#: lib/RT/Interface/Web.pm:866 +msgid "Couldn't find row" +msgstr "" + +#: lib/RT/Group_Overlay.pm:959 +msgid "Couldn't find that principal" +msgstr "Tätä toimeksiantajaa ei löytynyt" + +#: lib/RT/CustomField_Overlay.pm:175 +msgid "Couldn't find that value" +msgstr "Tätä arvoa ei löytynyt" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find that watcher" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find user\\n" +msgstr "Käyttäjää ei löytynyt\\n" + +#: lib/RT/CurrentUser.pm:112 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "Ei onnistuttu lataamaan käytäjää %1 tietokannasta.\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load KeywordSelects." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load RT config file '%1' %2" +msgstr "RT asetustiedoston lataaminen ei onnistunut:'%1' %2" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load Scrips." +msgstr "Lappujen lataaminen ei onnistunut." + +#: html/Admin/Groups/GroupRights.html:88 html/Admin/Groups/UserRights.html:75 +#. ($id) +msgid "Couldn't load group %1" +msgstr "Ryhmän %1 lataaminen ei onnistunut" + +#: lib/RT/Link_Overlay.pm:175 lib/RT/Link_Overlay.pm:184 lib/RT/Link_Overlay.pm:211 +msgid "Couldn't load link" +msgstr "Linkin lataaminen ei onnistunut" + +#: html/Admin/Elements/EditCustomFields:147 html/Admin/Queues/People.html:121 +#. ($id) +msgid "Couldn't load queue" +msgstr "Työjonon lataaminen ei onnistunut" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:72 +#. ($id) +msgid "Couldn't load queue %1" +msgstr "Työjonon %1 lataaminen ei onnistunut" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "Lapun lataaminen ei onnistunut" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "Pohjan lataaminen ei onnistunut" + +#: html/Admin/Users/Prefs.html:79 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "Tämän käyttäjän lataaminen ei onnistunut (%1)" + +#: html/SelfService/Display.html:166 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "Työpyynnön '%1' lataaminen ei onnistunut" + +#: html/Admin/Elements/ModifyUser:86 html/Admin/Users/Modify.html:149 html/User/Prefs.html:98 +msgid "Country" +msgstr "Maa" + +#: html/Admin/Elements/CreateUserCalled:26 html/Ticket/Create.html:135 html/Ticket/Create.html:195 +msgid "Create" +msgstr "Luo" + +#: etc/initialdata:128 +msgid "Create Tickets" +msgstr "" + +#: html/Admin/Elements/EditCustomField:58 +msgid "Create a CustomField" +msgstr "Luo kenttä" + +#: html/Admin/Queues/CustomField.html:48 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "" + +#: html/Admin/Global/CustomField.html:48 +msgid "Create a CustomField which applies to all queues" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Create a new Custom Field" +msgstr "Luo uusi kenttä" + +#: NOT FOUND IN SOURCE +msgid "Create a new global scrip" +msgstr "Luo uusi globaali lappu" + +#: html/Admin/Groups/Modify.html:67 html/Admin/Groups/Modify.html:93 +msgid "Create a new group" +msgstr "Luo uusi ryhmä" + +#: html/User/Groups/Modify.html:67 html/User/Groups/Modify.html:92 +msgid "Create a new personal group" +msgstr "Luo uusi personaali ryhmä" + +#: NOT FOUND IN SOURCE +msgid "Create a new queue" +msgstr "Luo uusi työjono" + +#: NOT FOUND IN SOURCE +msgid "Create a new scrip" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Create a new template" +msgstr "Luo uusi pohja" + +#: html/SelfService/Create.html:30 html/Ticket/Create.html:25 html/Ticket/Create.html:28 html/Ticket/Create.html:36 +msgid "Create a new ticket" +msgstr "Luo uusi työpyyntö" + +#: html/Admin/Users/Modify.html:214 html/Admin/Users/Modify.html:241 +msgid "Create a new user" +msgstr "Luo uusi käyttäjä" + +#: html/Admin/Queues/Modify.html:103 +msgid "Create a queue" +msgstr "Luo uusi työjono" + +#: NOT FOUND IN SOURCE +msgid "Create a queue called" +msgstr "Luo työjono nimeltään" + +#: html/SelfService/Create.html:25 html/SelfService/Create.html:27 +msgid "Create a request" +msgstr "Luo työpyyntö" + +#: html/Admin/Queues/Scrip.html:59 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "" + +#: html/Admin/Global/Template.html:69 html/Admin/Queues/Template.html:65 +msgid "Create a template" +msgstr "Luo pohja" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1 / %2 / %3 " +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1/%2/%3" +msgstr "" + +#: etc/initialdata:130 +msgid "Create new tickets based on this scrip's template" +msgstr "" + +#: html/SelfService/Create.html:81 +msgid "Create ticket" +msgstr "Luo työpyyntö" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Create tickets in this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Create, delete and modify custom fields" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:68 +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:59 +msgid "Create, delete and modify the members of personal groups" +msgstr "" + +#: lib/RT/System.pm:60 +msgid "Create, delete and modify users" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "CreateTicket" +msgstr "" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1167 +msgid "Created" +msgstr "Luotu" + +#: html/Admin/Elements/EditCustomField:71 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "Luotu kenttä %1" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "Luotu pohja %1" + +#: html/Ticket/Elements/EditLinks:28 +msgid "Current Relationships" +msgstr "Tämänhetkiset suhteet" + +#: html/Admin/Elements/EditScrips:30 +msgid "Current Scrips" +msgstr "" + +#: html/Admin/Groups/Members.html:39 html/User/Groups/Members.html:42 +msgid "Current members" +msgstr "Tämänhetkiset jäsenet" + +#: html/Admin/Elements/SelectRights:29 +msgid "Current rights" +msgstr "Tämänhetkiset oikeudet" + +#: html/Search/Listing.html:71 +msgid "Current search criteria" +msgstr "" + +#: html/Admin/Queues/People.html:41 html/Ticket/Elements/EditPeople:45 +msgid "Current watchers" +msgstr "Tämänhetkiset tarkkailijat" + +#: html/Admin/Global/CustomField.html:55 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "" + +#: html/Admin/Elements/QueueTabs:53 html/Admin/Elements/SystemTabs:40 html/Admin/Global/index.html:50 html/Ticket/Elements/ShowSummary:35 +msgid "Custom Fields" +msgstr "Kentät" + +#: html/Admin/Elements/EditScrip:73 +msgid "Custom action cleanup code" +msgstr "" + +#: html/Admin/Elements/EditScrip:65 +msgid "Custom action preparation code" +msgstr "" + +#: html/Admin/Elements/EditScrip:49 +msgid "Custom condition" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "Kenttä %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "Kentällä %1 on arvo" + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "Kentällä %1 ei ole arvoa" + +#: lib/RT/Ticket_Overlay.pm:3360 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "Kenttää %1 ei löytynyt" + +#: html/Admin/Elements/EditCustomFields:197 +msgid "Custom field deleted" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3510 +msgid "Custom field not found" +msgstr "Kenttää ei löytynyt" + +#: lib/RT/CustomField_Overlay.pm:283 +#. ($args{'Content'}, $self->Name) +msgid "Custom field value %1 could not be found for custom field %2" +msgstr "Kenttän arvoa %1 ei löytynyt kentälle %2" + +#: NOT FOUND IN SOURCE +msgid "Custom field value changed from %1 to %2" +msgstr "Kenttän arvo muutettu arvosta %1 arvoon" + +#: lib/RT/CustomField_Overlay.pm:185 +msgid "Custom field value could not be deleted" +msgstr "Kenttän arvoa ei pystytty poistamaan" + +#: lib/RT/CustomField_Overlay.pm:289 +msgid "Custom field value could not be found" +msgstr "Kenttän arvoa ei löydetty" + +#: lib/RT/CustomField_Overlay.pm:183 lib/RT/CustomField_Overlay.pm:291 +msgid "Custom field value deleted" +msgstr "Kenttän arvo poistettu" + +#: lib/RT/Transaction_Overlay.pm:550 +msgid "CustomField" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "" + +#: html/Ticket/Create.html:161 html/Ticket/Elements/ShowSummary:53 html/Ticket/Elements/Tabs:93 html/Ticket/ModifyAll.html:44 +msgid "Dates" +msgstr "Päivät" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "Joulu" + +#: NOT FOUND IN SOURCE +msgid "December" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "" + +#: etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "" + +#: etc/initialdata:275 +msgid "Default admin comment template" +msgstr "" + +#: etc/initialdata:257 +msgid "Default admin correspondence template" +msgstr "" + +#: etc/initialdata:267 +msgid "Default correspondence template" +msgstr "" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:645 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "" + +#: html/User/Delegation.html:25 html/User/Delegation.html:28 +msgid "Delegate rights" +msgstr "Delegoi oikeuksia" + +#: lib/RT/System.pm:63 +msgid "Delegate specific rights which have been granted to you." +msgstr "" + +#: lib/RT/System.pm:63 +msgid "DelegateRights" +msgstr "" + +#: html/User/Elements/Tabs:38 +msgid "Delegation" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "Poista" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "Delete tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "DeleteTicket" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "Tämän objektin poistaminen saattaa rikkoa tietokannan viitteet" + +#: lib/RT/Queue_Overlay.pm:292 +msgid "Deleting this object would break referential integrity" +msgstr "Tämän objektin poistaminen rikkoo tietokannan viitteet" + +#: lib/RT/User_Overlay.pm:430 +msgid "Deleting this object would violate referential integrity" +msgstr "Tämän objektin poistaminen rikkoo tietokannan viitteet" + +#: 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:46 +msgid "Deny" +msgstr "" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/EditLinks:123 html/Ticket/Elements/EditLinks:47 html/Ticket/Elements/ShowDependencies:32 html/Ticket/Elements/ShowLinks:35 +msgid "Depended on by" +msgstr "Tästä pyynnöstä riippuu" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "Riippuvuudet: \\n" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:180 html/Ticket/Elements/EditLinks:119 html/Ticket/Elements/EditLinks:36 html/Ticket/Elements/ShowDependencies:25 html/Ticket/Elements/ShowLinks:27 +msgid "Depends on" +msgstr "Riippuu pyynnöstä" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "" + +#: html/Elements/SelectSortOrder:35 +msgid "Descending" +msgstr "Laskeva" + +#: html/SelfService/Create.html:75 html/Ticket/Create.html:119 +msgid "Describe the issue below" +msgstr "Työtilauksen kuvaus" + +#: html/Admin/Elements/AddCustomFieldValue:27 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyQueue:36 html/Admin/Elements/ModifyTemplate:36 html/Admin/Groups/Modify.html:49 html/Admin/Queues/Modify.html:48 html/Elements/SelectGroups:27 html/User/Groups/Modify.html:49 +msgid "Description" +msgstr "Kuvaus" + +#: html/SelfService/Elements/MyRequests:44 +msgid "Details" +msgstr "Yksityiskohdat" + +#: html/Ticket/Elements/Tabs:85 +msgid "Display" +msgstr "Näytä" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Display Access Control List" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Display Scrip templates for this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Display Scrips for this queue" +msgstr "" + +#: html/Ticket/Elements/ShowHistory:35 +msgid "Display mode" +msgstr "Näkymä" + +#: html/SelfService/Display.html:25 html/SelfService/Display.html:29 +#. ($Ticket->id) +msgid "Display ticket #%1" +msgstr "Näytä työpyyntö #%1" + +#: lib/RT/System.pm:54 +msgid "Do anything and everything" +msgstr "" + +#: html/Elements/Refresh:30 +msgid "Don't refresh this page." +msgstr "Älä päivitä tätä sivua" + +#: html/Search/Elements/PickRestriction:114 +msgid "Don't show search results" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "Download" +msgstr "Lataa" + +#: html/Elements/SelectDateType:32 html/Ticket/Create.html:167 html/Ticket/Elements/EditDates:45 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1171 +msgid "Due" +msgstr "Mennessä" + +#: NOT FOUND IN SOURCE +msgid "Due date '%1' could not be parsed" +msgstr "Mennessä -päivää '%1' ei onnistuttu kääntämään järjestelmälle." + +#: bin/rt-commit-handler:754 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "VIRHE: Työpyynnön '%1' lataaminen ei onnistunut: %2.\\n" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "Muokkaa" + +#: html/Admin/Queues/CustomFields.html:45 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "Muokkaa kenttiä: työjono %1" + +#: html/Ticket/ModifyLinks.html:36 +msgid "Edit Relationships" +msgstr "Muokkaa suhteita" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit keywords" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "Muokkaa lappuja" + +#: html/Admin/Global/index.html:46 +msgid "Edit system templates" +msgstr "Muokkaa systeemipohjia" + +#: NOT FOUND IN SOURCE +msgid "Edit templates for %1" +msgstr "Muokkaa pohjia: työjono %1" + +#: html/Admin/Elements/ModifyQueue:25 html/Admin/Queues/Modify.html:117 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "Asetusten muokkaus: työjono %1" + +#: html/Admin/Elements/ModifyUser:25 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "Asetusten muokkaus: käyttäjä %1" + +#: html/Admin/Elements/EditCustomField:74 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "Kentän %1 muokkaus" + +#: html/Admin/Groups/Members.html:32 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "Ryhmän %1 jäsenten muokkaus" + +#: html/User/Groups/Members.html:129 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "Henkilökohtaisen ryhmän %1 jäsenten muokkaus" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "Pohjan %1 muokkaus" + +#: lib/RT/Ticket_Overlay.pm:2615 lib/RT/Ticket_Overlay.pm:2683 +msgid "Either base or target must be specified" +msgstr "Joko juuri tai kohde täytyy olla määritelty" + +#: html/Admin/Users/Modify.html:53 html/Admin/Users/Prefs.html:46 html/Elements/SelectUsers:27 html/Ticket/Elements/AddWatchers:56 html/User/Prefs.html:42 +msgid "Email" +msgstr "Sähköposti" + +#: lib/RT/User_Overlay.pm:188 +msgid "Email address in use" +msgstr "Sähköpostiosoite on jo käytössä" + +#: html/Admin/Elements/ModifyUser:42 +msgid "EmailAddress" +msgstr "Sähköpostiosoite" + +#: html/Admin/Elements/ModifyUser:54 +msgid "EmailEncoding" +msgstr "Sähköpostin koodaus" + +#: html/Admin/Elements/EditCustomField:36 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "" + +#: html/Admin/Groups/Modify.html:53 html/User/Groups/Modify.html:53 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "" + +#: html/Admin/Queues/Modify.html:84 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "Aktiivinen (Rastin poistaminen asettaa työjonon ei-aktiiviseksi)" + +#: html/Admin/Elements/EditCustomFields:99 +msgid "Enabled Custom Fields" +msgstr "" + +#: html/Admin/Queues/index.html:56 +msgid "Enabled Queues" +msgstr "Aktiiviset työjonot" + +#: html/Admin/Elements/EditCustomField:90 html/Admin/Groups/Modify.html:117 html/Admin/Queues/Modify.html:138 html/Admin/Users/Modify.html:283 html/User/Groups/Modify.html:117 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "Aktivoitu tila %1" + +#: lib/RT/CustomField_Overlay.pm:361 +msgid "Enter multiple values" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:358 +msgid "Enter one value" +msgstr "" + +#: html/Ticket/Elements/EditLinks:112 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "Lisää työpyyntöjen numerot tai www-linkit. Käytä välilyöntiä erottimena syöttäessäsi useampaa numeroa tai linkkiä." + +#: html/Elements/Login:29 html/SelfService/Error.html:25 html/SelfService/Error.html:26 +msgid "Error" +msgstr "Virhe" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "Virhe parametreissa: Queue->AddWatcher" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "Virhe parametreissa: Queue->DelWatcher" + +#: lib/RT/Ticket_Overlay.pm:1356 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "Virhe parametreissa: Ticket->AddWatcher" + +#: lib/RT/Ticket_Overlay.pm:1532 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "Virhe parametreissa: Ticket->DelWatcher" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "" + +#: bin/rt-crontool:194 +msgid "Example:" +msgstr "" + +#: html/Admin/Elements/ModifyUser:64 +msgid "ExternalAuthId" +msgstr "Ulkoinen autentikointitunnus" + +#: html/Admin/Elements/ModifyUser:58 +msgid "ExternalContactInfoId" +msgstr "Ulkoinen yhteystietotunnus" + +#: html/Admin/Users/Modify.html:73 +msgid "Extra info" +msgstr "Lisatieto" + +#: lib/RT/User_Overlay.pm:302 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "'Etuoikeutettu' -pseudoryhmää ei löytynyt" + +#: lib/RT/User_Overlay.pm:309 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "Ei-etuoikeutettu' -pseudoryhmää ei löytynyt" + +#: bin/rt-crontool:138 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "Helmi" + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "Fin" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:59 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "Loppuprioriteetti" + +#: lib/RT/Ticket_Overlay.pm:1162 +msgid "FinalPriority" +msgstr "" + +#: html/Admin/Queues/People.html:61 html/Ticket/Elements/EditPeople:34 +msgid "Find group whose" +msgstr "" + +#: html/Elements/Quicksearch:25 +msgid "Find new/open tickets" +msgstr "Etsi uudet/avoimet työpyynnöt" + +#: html/Admin/Queues/People.html:57 html/Admin/Users/index.html:46 html/Ticket/Elements/EditPeople:30 +msgid "Find people whose" +msgstr "Etsi käyttäjät joiden" + +#: html/Search/Listing.html:108 +msgid "Find tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "" + +#: html/Ticket/Elements/Tabs:58 +msgid "First" +msgstr "Ensimmäinen" + +#: html/Search/Listing.html:41 +msgid "First page" +msgstr "Viimeinen sivu" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "" + +#: html/Search/Bulk.html:87 +msgid "Force change" +msgstr "Pakota muutos" + +#: html/Search/Listing.html:106 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "" + +#: lib/RT/Interface/Web.pm:868 +msgid "Found Object" +msgstr "" + +#: html/Admin/Elements/ModifyUser:44 +msgid "FreeformContactInfo" +msgstr "Vapaamuotoiset yhteystiedot" + +#: lib/RT/CustomField_Overlay.pm:38 +msgid "FreeformMultiple" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformSingle" +msgstr "" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "Pe" + +#: html/Ticket/Elements/ShowHistory:41 html/Ticket/Elements/ShowHistory:51 +msgid "Full headers" +msgstr "Kokonaiset otsikot" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:595 +#. ($New->Name) +msgid "Given to %1" +msgstr "" + +#: html/Admin/Elements/Tabs:41 html/Admin/index.html:38 +msgid "Global" +msgstr "Globaali" + +#: NOT FOUND IN SOURCE +msgid "Global Keyword Selections" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "Globaalit laput" + +#: html/Admin/Elements/SelectTemplate:38 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:75 html/Admin/Queues/People.html:59 html/Admin/Queues/People.html:63 html/Admin/Queues/index.html:44 html/Admin/Users/index.html:49 html/Ticket/Elements/EditPeople:32 html/Ticket/Elements/EditPeople:36 html/index.html:41 +msgid "Go!" +msgstr "Ok!" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "Hyvä PGP allekirjoitus käyttäjältä %1\\n" + +#: html/Search/Listing.html:50 +msgid "Goto page" +msgstr "Siirry sivulle" + +#: html/Elements/GotoTicket:25 html/SelfService/Elements/GotoTicket:25 +msgid "Goto ticket" +msgstr "Siirry työpyyntöön" + +#: html/Ticket/Elements/AddWatchers:46 html/User/Elements/DelegateRights:78 +msgid "Group" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "Ryhmä %1 %2: %3" + +#: html/Admin/Elements/GroupTabs:45 html/Admin/Elements/QueueTabs:57 html/Admin/Elements/SystemTabs:44 html/Admin/Global/index.html:55 +msgid "Group Rights" +msgstr "Ryhmän oikeudet" + +#: lib/RT/Group_Overlay.pm:965 +msgid "Group already has member" +msgstr "Ryhmässä on jo jäsen" + +#: NOT FOUND IN SOURCE +msgid "Group could not be created." +msgstr "" + +#: html/Admin/Groups/Modify.html:77 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:497 +msgid "Group created" +msgstr "Ryhmä luotu" + +#: lib/RT/Group_Overlay.pm:1133 +msgid "Group has no such member" +msgstr "" + +#: lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1429 lib/RT/Ticket_Overlay.pm:1507 +msgid "Group not found" +msgstr "Ryhmää ei löydetty" + +#: NOT FOUND IN SOURCE +msgid "Group not found.\\n" +msgstr "Ryhmää ei löydetty.\\n" + +#: NOT FOUND IN SOURCE +msgid "Group not specified.\\n" +msgstr "Ryhmää ei määritelty.\\n" + +#: html/Admin/Elements/SelectNewGroupMembers:35 html/Admin/Elements/Tabs:35 html/Admin/Groups/Members.html:64 html/Admin/Queues/People.html:83 html/Admin/index.html:32 html/User/Groups/Members.html:67 +msgid "Groups" +msgstr "Ryhmät" + +#: lib/RT/Group_Overlay.pm:971 +msgid "Groups can't be members of their members" +msgstr "Ryhmät eivät voi olla jäsentensä jäseniä" + +#: lib/RT/Interface/CLI.pm:73 lib/RT/Interface/CLI.pm:73 +msgid "Hello!" +msgstr "Hei!" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "Hei, %1" + +#: html/Ticket/Elements/ShowHistory:30 html/Ticket/Elements/Tabs:88 +msgid "History" +msgstr "Historia" + +#: html/Admin/Elements/ModifyUser:68 +msgid "HomePhone" +msgstr "Kotipuhelin" + +#: html/Elements/Tabs:46 +msgid "Homepage" +msgstr "Kotisivu" + +#: lib/RT/Base.pm:74 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "I have [quant,_1,concrete mixer]." +msgstr "" + +#: html/Ticket/Elements/ShowBasics:27 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "Numero" + +#: html/Admin/Users/Modify.html:44 html/User/Prefs.html:39 +msgid "Identity" +msgstr "Identiteetti" + +#: etc/upgrade/2.1.71:86 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "" + +#: bin/rt-crontool:190 +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:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "If you've updated anything above, be sure to" +msgstr "Jos olet muuttanut tietoja, muista tallentaa" + +#: lib/RT/Interface/Web.pm:860 +msgid "Illegal value for %1" +msgstr "" + +#: lib/RT/Interface/Web.pm:863 +msgid "Immutable field" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:74 +msgid "Include disabled custom fields in listing." +msgstr "" + +#: html/Admin/Queues/index.html:43 +msgid "Include disabled queues in listing." +msgstr "Sisällytä listaukseen myös ei-aktiiviset työjonot." + +#: html/Admin/Users/index.html:47 +msgid "Include disabled users in search." +msgstr "Sisällytä listaukseen myös ei-aktiiviset käyttäjät." + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "Alkuprioriteetti" + +#: lib/RT/Ticket_Overlay.pm:1161 lib/RT/Ticket_Overlay.pm:1163 +msgid "InitialPriority" +msgstr "" + +#: lib/RT/ScripAction_Overlay.pm:105 +msgid "Input error" +msgstr "Virhe syötteessä" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3729 +msgid "Internal Error" +msgstr "" + +#: lib/RT/Record.pm:143 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:644 +msgid "Invalid Group Type" +msgstr "Ryhmän tyyppi ei kelpaa" + +#: lib/RT/Principal_Overlay.pm:128 +msgid "Invalid Right" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "" + +#: lib/RT/Interface/Web.pm:865 +msgid "Invalid data" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:438 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "Omistaja ei kelpaa. Asetetaan oletusasetusten mukaan 'eikukaan'" + +#: lib/RT/Scrip_Overlay.pm:134 lib/RT/Template_Overlay.pm:251 +msgid "Invalid queue" +msgstr "Kelpaamaton työjono" + +#: lib/RT/ACE_Overlay.pm:244 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:270 lib/RT/ACE_Overlay.pm:275 +msgid "Invalid right" +msgstr "Kelpaamaton oikeus" + +#: lib/RT/Record.pm:118 +#. ($key) +msgid "Invalid value for %1" +msgstr "Kelpaamaton arvo kohteelle %1" + +#: lib/RT/Ticket_Overlay.pm:3367 +msgid "Invalid value for custom field" +msgstr "Kelpaamaton arvo kentälle" + +#: lib/RT/Ticket_Overlay.pm:345 +msgid "Invalid value for status" +msgstr "Kelpaamaton arvo tilalle" + +#: bin/rt-crontool:191 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "" + +#: bin/rt-crontool:192 +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:163 +msgid "It takes several arguments:" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "Tammi" + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "" + +#: lib/RT/Group_Overlay.pm:149 +msgid "Join or leave this group" +msgstr "" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "Heinä" + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "" + +#: html/Ticket/Elements/Tabs:99 +msgid "Jumbo" +msgstr "Jumbo" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "Kesä" + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "Avainsana" + +#: html/Admin/Elements/ModifyUser:52 +msgid "Lang" +msgstr "Keili" + +#: html/Ticket/Elements/Tabs:73 +msgid "Last" +msgstr "Viimeinen" + +#: html/Ticket/Elements/EditDates:38 html/Ticket/Elements/ShowDates:39 +msgid "Last Contact" +msgstr "Viimeinen yhteydenotto" + +#: html/Elements/SelectDateType:29 +msgid "Last Contacted" +msgstr "Viimeksi otettu yhteyttä" + +#: html/Search/Elements/TicketHeader:41 +msgid "Last Notified" +msgstr "" + +#: html/Elements/SelectDateType:30 +msgid "Last Updated" +msgstr "Viimeksi päivitetty" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "Vasen" + +#: html/Admin/Users/Modify.html:83 +msgid "Let this user access RT" +msgstr "Päästä tämä käyttäjä sisään RT:een" + +#: html/Admin/Users/Modify.html:87 +msgid "Let this user be granted rights" +msgstr "Tälle käyttäjälle voidaan antaa oikeuksia" + +#: NOT FOUND IN SOURCE +msgid "Limiting owner to %1 %2" +msgstr "Rajoitetaan omistajaa %1 %2" + +#: NOT FOUND IN SOURCE +msgid "Limiting queue to %1 %2" +msgstr "Rajoitetaan työjonoa %1 %2" + +#: lib/RT/Ticket_Overlay.pm:2697 +msgid "Link already exists" +msgstr "Linkki on jo olemassa" + +#: lib/RT/Ticket_Overlay.pm:2709 +msgid "Link could not be created" +msgstr "Linkkiä ei voitu luoda" + +#: lib/RT/Ticket_Overlay.pm:2717 lib/RT/Ticket_Overlay.pm:2727 +#. ($TransString) +msgid "Link created (%1)" +msgstr "Linkki luotu (%1)" + +#: lib/RT/Ticket_Overlay.pm:2638 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "Linkki poistettu (%1)" + +#: lib/RT/Ticket_Overlay.pm:2644 +msgid "Link not found" +msgstr "Linkkiä ei löydetty" + +#: html/Ticket/ModifyLinks.html:25 html/Ticket/ModifyLinks.html:29 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "Linkitä työpyyntö #%1" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "" + +#: html/Ticket/Elements/Tabs:97 +msgid "Links" +msgstr "Linkit" + +#: html/Admin/Users/Modify.html:114 html/User/Prefs.html:85 +msgid "Location" +msgstr "Sijainti" + +#: lib/RT.pm:158 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "Lokihakemistoa %1 ei löytynyt tai kirkoittaminen ei onnistunut.\\n RT ei voi toimia." + +#: html/Elements/Header:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "Kirjautunut sisään tunnuksella %1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:25 html/Elements/Login:34 html/Elements/Login:45 +msgid "Login" +msgstr "Kirjaudu sisään" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "Kirjaudu ulos" + +#: html/Search/Bulk.html:86 +msgid "Make Owner" +msgstr "Aseta omistaja" + +#: html/Search/Bulk.html:102 +msgid "Make Status" +msgstr "Aseta tila" + +#: html/Search/Bulk.html:109 +msgid "Make date Due" +msgstr "Aseta mennessä -aika" + +#: html/Search/Bulk.html:110 +msgid "Make date Resolved" +msgstr "Aseta päätetty -aika" + +#: html/Search/Bulk.html:107 +msgid "Make date Started" +msgstr "Aseta aloitettu -aika" + +#: html/Search/Bulk.html:106 +msgid "Make date Starts" +msgstr "Aseta alkaa -aika" + +#: html/Search/Bulk.html:108 +msgid "Make date Told" +msgstr "Aseta oltu yhteydessä -aika" + +#: html/Search/Bulk.html:99 +msgid "Make priority" +msgstr "Aseta prioriteetti" + +#: html/Search/Bulk.html:100 +msgid "Make queue" +msgstr "Aseta työjono" + +#: html/Search/Bulk.html:98 +msgid "Make subject" +msgstr "Aseta otsikko" + +#: html/Admin/index.html:33 +msgid "Manage groups and group membership" +msgstr "" + +#: html/Admin/index.html:39 +msgid "Manage properties and configuration which apply to all queues" +msgstr "" + +#: html/Admin/index.html:36 +msgid "Manage queues and queue-specific properties" +msgstr "" + +#: html/Admin/index.html:30 +msgid "Manage users and passwords" +msgstr "" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "Maasis" + +#: NOT FOUND IN SOURCE +msgid "March" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "May" +msgstr "" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "Touko" + +#: lib/RT/Group_Overlay.pm:982 +msgid "Member added" +msgstr "Jäsen lisätty" + +#: lib/RT/Group_Overlay.pm:1140 +msgid "Member deleted" +msgstr "Jäsen poistettu" + +#: lib/RT/Group_Overlay.pm:1144 +msgid "Member not deleted" +msgstr "Jäsentä ei poistettu" + +#: html/Elements/SelectLinkType:26 +msgid "Member of" +msgstr "Jäsen:" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "" + +#: html/Admin/Elements/GroupTabs:42 html/User/Elements/GroupTabs:42 +msgid "Members" +msgstr "Jäsenet" + +#: lib/RT/Ticket_Overlay.pm:2843 +msgid "Merge Successful" +msgstr "Yhdistäminen onnistui" + +#: lib/RT/Ticket_Overlay.pm:2804 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "Yhdistäminen epäonnistui. EffectiveId:n arvoa ei pystytty asettamaan" + +#: html/Ticket/Elements/EditLinks:115 +msgid "Merge into" +msgstr "Yhdistä" + +#: html/Ticket/Update.html:102 +msgid "Message" +msgstr "" + +#: lib/RT/Interface/Web.pm:867 +msgid "Missing a primary key?: %1" +msgstr "" + +#: html/Admin/Users/Modify.html:169 html/User/Prefs.html:54 +msgid "Mobile" +msgstr "Käsipuhelin" + +#: html/Admin/Elements/ModifyUser:72 +msgid "MobilePhone" +msgstr "Käsipuhelin" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify Access Control List" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Modify Custom Field %1" +msgstr "Muokkaa kenttää %1" + +#: html/Admin/Global/CustomFields.html:44 html/Admin/Global/index.html:51 +msgid "Modify Custom Fields which apply to all queues" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "Modify Scrip templates for this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:76 +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 "" + +#: html/Admin/Queues/CustomField.html:45 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "" + +#: html/Admin/Global/CustomField.html:53 +msgid "Modify a CustomField which applies to all queues" +msgstr "" + +#: html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "" + +#: html/Admin/Global/Scrip.html:48 +msgid "Modify a scrip which applies to all queues" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "" + +#: html/Ticket/ModifyDates.html:25 html/Ticket/ModifyDates.html:29 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "Muokkaa työpyynnön #%1 päiviä" + +#: html/Ticket/ModifyDates.html:35 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "Muokkaa työpyynnön #%1 päiviä" + +#: html/Admin/Global/GroupRights.html:25 html/Admin/Global/GroupRights.html:28 html/Admin/Global/index.html:56 +msgid "Modify global group rights" +msgstr "Muokkaa ryhmien globaaleja oikeuksia" + +#: html/Admin/Global/GroupRights.html:33 +msgid "Modify global group rights." +msgstr "Muokkaa ryhmien globaaleja oikeuksia." + +#: 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 "Muokkaa globaaleja lappuja" + +#: html/Admin/Global/UserRights.html:25 html/Admin/Global/UserRights.html:28 html/Admin/Global/index.html:60 +msgid "Modify global user rights" +msgstr "" + +#: html/Admin/Global/UserRights.html:33 +msgid "Modify global user rights." +msgstr "Muokkaa käyttäjien globaaleja oikeuksia." + +#: lib/RT/Group_Overlay.pm:146 +msgid "Modify group metadata or delete group" +msgstr "" + +#: html/Admin/Groups/GroupRights.html:25 html/Admin/Groups/GroupRights.html:29 html/Admin/Groups/GroupRights.html:35 +#. ($GroupObj->Name) +msgid "Modify group rights for group %1" +msgstr "Muokkaa ryhmän %1 oikeuksia." + +#: html/Admin/Queues/GroupRights.html:25 html/Admin/Queues/GroupRights.html:29 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "Muokkaa ryhmän oikeuksia työjonossa %1" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Modify membership roster for this group" +msgstr "" + +#: lib/RT/System.pm:61 +msgid "Modify one's own RT account" +msgstr "" + +#: html/Admin/Queues/People.html:25 html/Admin/Queues/People.html:29 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "Muokkaa työjonoon %1 liittyviä käyttäjiä" + +#: html/Ticket/ModifyPeople.html:25 html/Ticket/ModifyPeople.html:29 html/Ticket/ModifyPeople.html:35 +#. ($Ticket->id) +#. ($Ticket->Id) +msgid "Modify people related to ticket #%1" +msgstr "Muokkaa työpyyntöön %1 liittyviä käyttäjiä" + +#: html/Admin/Queues/Scrips.html:44 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "Muokkaa työjonoon %1 liittyviä lappuja" + +#: html/Admin/Global/Scrips.html:44 html/Admin/Global/index.html:42 +msgid "Modify scrips which apply to all queues" +msgstr "" + +#: html/Admin/Global/Template.html:25 html/Admin/Global/Template.html:30 html/Admin/Global/Template.html:81 html/Admin/Queues/Template.html:78 +#. (loc($TemplateObj->Name())) +#. ($TemplateObj->id) +msgid "Modify template %1" +msgstr "Muokkaa pohjaa %1" + +#: html/Admin/Global/Templates.html:44 +msgid "Modify templates which apply to all queues" +msgstr "" + +#: html/Admin/Groups/Modify.html:87 html/User/Groups/Modify.html:86 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "Muokkaa työjonoa %1" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Modify the queue watchers" +msgstr "" + +#: html/Admin/Users/Modify.html:236 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "Muokkaa käyttäjää %1" + +#: html/Ticket/ModifyAll.html:37 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "Muokkaa työpyyntöä #%1" + +#: html/Ticket/Modify.html:25 html/Ticket/Modify.html:28 html/Ticket/Modify.html:34 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "Muokkaa työpyyntöä #%1" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Modify tickets" +msgstr "" + +#: html/Admin/Groups/UserRights.html:25 html/Admin/Groups/UserRights.html:29 html/Admin/Groups/UserRights.html:35 +#. ($GroupObj->Name) +msgid "Modify user rights for group %1" +msgstr "Muokkaa ryhmän %1 käyttäjien oikeuksia" + +#: html/Admin/Queues/UserRights.html:25 html/Admin/Queues/UserRights.html:29 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "Muokkaa työjonoon %1 liittyviä käyttäjien oikeuksia" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "Muokkaa työpyynnön %1 katselijoita" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyACL" +msgstr "" + +#: lib/RT/Group_Overlay.pm:149 +msgid "ModifyOwnMembership" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "ModifyQueueWatchers" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "ModifyScrips" +msgstr "" + +#: lib/RT/System.pm:61 +msgid "ModifySelf" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "ModifyTemplate" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "ModifyTicket" +msgstr "" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "Ma" + +#: html/Ticket/Elements/ShowRequestor:42 +#. ($name) +msgid "More about %1" +msgstr "Lisätietoa: %1" + +#: html/Admin/Elements/EditCustomFields:61 +msgid "Move down" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:53 +msgid "Move up" +msgstr "" + +#: html/Admin/Elements/SelectSingleOrMultiple:27 +msgid "Multiple" +msgstr "Monta" + +#: lib/RT/User_Overlay.pm:179 +msgid "Must specify 'Name' attribute" +msgstr "'Nimi' täytyy määritellä" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "" + +#: html/Approvals/index.html:25 html/Approvals/index.html:26 +msgid "My approvals" +msgstr "" + +#: html/Admin/Elements/AddCustomFieldValue:26 html/Admin/Elements/EditCustomField:32 html/Admin/Elements/ModifyTemplate:28 html/Admin/Elements/ModifyUser:30 html/Admin/Groups/Modify.html:44 html/Elements/SelectGroups:26 html/Elements/SelectUsers:28 html/User/Groups/Modify.html:44 +msgid "Name" +msgstr "Nimi" + +#: lib/RT/User_Overlay.pm:186 +msgid "Name in use" +msgstr "Nimi on käytössä" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "" + +#: html/Ticket/Elements/ShowDates:52 +msgid "Never" +msgstr "" + +#: html/Elements/Quicksearch:30 +msgid "New" +msgstr "Uusi" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:93 html/User/Prefs.html:65 +msgid "New Password" +msgstr "Uusi salasana" + +#: etc/initialdata:311 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "" + +#: html/Ticket/Elements/EditLinks:111 +msgid "New Relationships" +msgstr "Uusi linkki" + +#: html/Ticket/Elements/Tabs:36 +msgid "New Search" +msgstr "" + +#: html/Admin/Global/CustomField.html:41 html/Admin/Global/CustomFields.html:39 html/Admin/Queues/CustomField.html:52 html/Admin/Queues/CustomFields.html:40 +msgid "New custom field" +msgstr "" + +#: html/Admin/Elements/GroupTabs:54 html/User/Elements/GroupTabs:52 +msgid "New group" +msgstr "" + +#: html/SelfService/Prefs.html:32 +msgid "New password" +msgstr "Uusi salasana" + +#: lib/RT/User_Overlay.pm:639 +msgid "New password notification sent" +msgstr "Uusi salasana" + +#: html/Admin/Elements/QueueTabs:70 +msgid "New queue" +msgstr "" + +#: html/SelfService/Elements/Tabs:63 +msgid "New request" +msgstr "Uusi työpyyntö" + +#: html/Admin/Elements/SelectRights:42 +msgid "New rights" +msgstr "Uudet oikeudet" + +#: html/Admin/Global/Scrip.html:40 html/Admin/Global/Scrips.html:39 html/Admin/Queues/Scrip.html:43 html/Admin/Queues/Scrips.html:53 +msgid "New scrip" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "Uusi haku" + +#: html/Admin/Global/Template.html:60 html/Admin/Global/Templates.html:39 html/Admin/Queues/Template.html:58 html/Admin/Queues/Templates.html:46 +msgid "New template" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2771 +msgid "New ticket doesn't exist" +msgstr "Uutta työpyyntöä ei löydy" + +#: html/Admin/Elements/UserTabs:52 +msgid "New user" +msgstr "" + +#: html/Admin/Elements/CreateUserCalled:26 +msgid "New user called" +msgstr "Uusi käyttäjä pyydetty" + +#: html/Admin/Queues/People.html:55 html/Ticket/Elements/EditPeople:29 +msgid "New watchers" +msgstr "Uusi tarkkailija" + +#: html/Admin/Users/Prefs.html:42 +msgid "New window setting" +msgstr "Uusi ikkunan asetus" + +#: html/Ticket/Elements/Tabs:69 +msgid "Next" +msgstr "Seuraava" + +#: html/Search/Listing.html:48 +msgid "Next page" +msgstr "Seuraava sivu" + +#: html/Admin/Elements/ModifyUser:50 +msgid "NickName" +msgstr "Lempinimi" + +#: html/Admin/Users/Modify.html:63 html/User/Prefs.html:46 +msgid "Nickname" +msgstr "Lempinimi" + +#: html/Admin/Elements/EditCustomField:73 html/Admin/Elements/EditCustomFields:105 +msgid "No CustomField" +msgstr "Ei kenttiä" + +#: html/Admin/Groups/GroupRights.html:84 html/Admin/Groups/UserRights.html:71 +msgid "No Group defined" +msgstr "Ryhmää ei ole määritelty" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:68 +msgid "No Queue defined" +msgstr "Työjonoa ei ole määritelty" + +#: bin/rt-crontool:56 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "Käyttäjää ei löydy. Ole hyvä ja ota yhteyttä RT:n ylläpitäjään.\\n" + +#: html/Admin/Global/Template.html:79 html/Admin/Queues/Template.html:76 +msgid "No Template" +msgstr "Ei pohjaa" + +#: bin/rt-commit-handler:764 +msgid "No Ticket specified. Aborting ticket " +msgstr "Työpyyntöä ei määritelty. Poistutaan työpyynnöstä" + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "Työpyyntöä ei määritelty. Poistutaan työpyynnön muokkauksesta\\n\\n" + +#: html/Approvals/Elements/Approve:47 +msgid "No action" +msgstr "" + +#: lib/RT/Interface/Web.pm:862 +msgid "No column specified" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "Komentoa ei löytynyt\\n" + +#: html/Elements/ViewUser:36 html/Ticket/Elements/ShowRequestor:45 +msgid "No comment entered about this user" +msgstr "Tälle käyttäjälle ei ole annettu kommentteja" + +#: lib/RT/Ticket_Overlay.pm:2189 lib/RT/Ticket_Overlay.pm:2257 +msgid "No correspondence attached" +msgstr "Ei kirjeenvaihtoa liitettynä" + +#: lib/RT/Action/Generic.pm:150 lib/RT/Condition/Generic.pm:176 lib/RT/Search/ActiveTicketsInQueue.pm:56 lib/RT/Search/Generic.pm:113 +#. (ref $self) +msgid "No description for %1" +msgstr "Ei kuvausta kohteelle %1" + +#: lib/RT/Users_Overlay.pm:151 +msgid "No group specified" +msgstr "Ryhmää ei ole määritelty" + +#: lib/RT/User_Overlay.pm:857 +msgid "No password set" +msgstr "Salasanaa ei ole asetettu" + +#: lib/RT/Queue_Overlay.pm:259 +msgid "No permission to create queues" +msgstr "Ei oikeutta luoda kyselyitä" + +#: lib/RT/Ticket_Overlay.pm:341 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "" + +#: lib/RT/User_Overlay.pm:151 +msgid "No permission to create users" +msgstr "Ei oikeutta luoda käyttäjiä" + +#: html/SelfService/Display.html:174 +msgid "No permission to display that ticket" +msgstr "Ei oikeutta tarkastella tätä työpyyntöä" + +#: html/SelfService/Update.html:55 +msgid "No permission to view update ticket" +msgstr "Ei oikeutta päivittää tätä työpyyntöä" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1488 +msgid "No principal specified" +msgstr "Toimeksiantajaa ei ole määritelty" + +#: html/Admin/Queues/People.html:154 html/Admin/Queues/People.html:164 +msgid "No principals selected." +msgstr "Johtajia ei ole valittu." + +#: html/Admin/Queues/index.html:35 +msgid "No queues matching search criteria found." +msgstr "Yhtään hakukriteerit täyttävää työpyyntöä ei löytynyt." + +#: html/Admin/Elements/SelectRights:81 +msgid "No rights found" +msgstr "" + +#: html/Admin/Elements/SelectRights:33 +msgid "No rights granted." +msgstr "Ei oikeuksia" + +#: html/Search/Bulk.html:149 +msgid "No search to operate on." +msgstr "Ei hakua jonka kanssa työskennellä" + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "Työpyynnön numeroa ei ole määritelty" + +#: lib/RT/Transaction_Overlay.pm:480 lib/RT/Transaction_Overlay.pm:518 +msgid "No transaction type specified" +msgstr "Toiminnon tyyppiä ei ole määritelty" + +#: NOT FOUND IN SOURCE +msgid "No user or email address specified" +msgstr "" + +#: html/Admin/Users/index.html:36 +msgid "No users matching search criteria found." +msgstr "Yhtään hakukriteerit täyttävää käyttäjää ei löytynyt." + +#: bin/rt-commit-handler:644 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "Ei kelpaa RT käyttäjäksi. RT cvs käsittelijä irrottautuu. Ole hyvä ja ota yhteyttä RT:n ylläpitäjään.\\n" + +#: lib/RT/Interface/Web.pm:859 +msgid "No value sent to _Set!\\n" +msgstr "" + +#: html/Search/Elements/TicketRow:37 +msgid "Nobody" +msgstr "" + +#: lib/RT/Interface/Web.pm:864 +msgid "Nonexistant field?" +msgstr "" + +#: html/Elements/Login:99 +msgid "Not logged in" +msgstr "" + +#: html/Elements/Header:59 html/SelfService/Elements/Header:58 +msgid "Not logged in." +msgstr "Et ole kirjautunut järjestelmään" + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "Ei asetettu" + +#: html/NoAuth/Reminder.html:27 +msgid "Not yet implemented." +msgstr "Ei vielä implementoitu." + +#: html/Admin/Groups/Rights.html:25 +msgid "Not yet implemented...." +msgstr "Ei vielä implementoitu..." + +#: html/Approvals/Elements/Approve:50 +msgid "Notes" +msgstr "" + +#: lib/RT/User_Overlay.pm:642 +msgid "Notification could not be sent" +msgstr "Ilmoitusta ei pystytty lähettämään" + +#: etc/initialdata:94 +msgid "Notify AdminCcs" +msgstr "" + +#: etc/initialdata:90 +msgid "Notify AdminCcs as Comment" +msgstr "" + +#: etc/initialdata:121 +msgid "Notify Other Recipients" +msgstr "" + +#: etc/initialdata:117 +msgid "Notify Other Recipients as Comment" +msgstr "" + +#: etc/initialdata:86 +msgid "Notify Owner" +msgstr "" + +#: etc/initialdata:82 +msgid "Notify Owner as Comment" +msgstr "" + +#: etc/initialdata:313 etc/upgrade/2.1.71:17 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "" + +#: etc/initialdata:78 +msgid "Notify Requestors" +msgstr "" + +#: etc/initialdata:104 +msgid "Notify Requestors and Ccs" +msgstr "" + +#: etc/initialdata:99 +msgid "Notify Requestors and Ccs as Comment" +msgstr "" + +#: etc/initialdata:113 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "" + +#: etc/initialdata:109 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "Marras" + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "" + +#: lib/RT/Record.pm:157 +msgid "Object could not be created" +msgstr "" + +#: lib/RT/Record.pm:176 +msgid "Object created" +msgstr "" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "Loka" + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "" + +#: html/Elements/SelectDateRelation:35 +msgid "On" +msgstr "-" + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:50 +#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") +msgid "Only show approvals for requests created after %1" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:48 +#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") +msgid "Only show approvals for requests created before %1" +msgstr "" + +#: html/Elements/Quicksearch:31 +msgid "Open" +msgstr "Avoin" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "Avaa" + +#: html/SelfService/Elements/Tabs:57 +msgid "Open requests" +msgstr "Avoimet työpyynnöt" + +#: html/Admin/Users/Prefs.html:41 +msgid "Open tickets (from listing) in a new window" +msgstr "Avoimet työpyynnöt (listasta) uudessa ikkunassa" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in another window" +msgstr "Avoimet työpyynnöt (listasta) toisessa ikkunassa" + +#: etc/initialdata:133 +msgid "Open tickets on correspondence" +msgstr "" + +#: html/Search/Elements/PickRestriction:101 +msgid "Ordering and sorting" +msgstr "Järjestäminen" + +#: html/Admin/Elements/ModifyUser:46 html/Admin/Users/Modify.html:117 html/Elements/SelectUsers:29 html/User/Prefs.html:86 +msgid "Organization" +msgstr "Organisaatio" + +#: html/Approvals/Elements/Approve:34 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:55 html/Admin/Queues/Modify.html:69 +msgid "Over time, priority moves toward" +msgstr "Ajan kuluessa prioriteetti muuttuu kohti" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Own tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "OwnTicket" +msgstr "" + +#: etc/initialdata:38 html/Elements/MyRequests:32 html/SelfService/Elements/MyRequests:30 html/Ticket/Create.html:48 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/EditPeople:44 html/Ticket/Elements/ShowPeople:27 html/Ticket/Update.html:63 lib/RT/ACE_Overlay.pm:86 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "Omistaja" + +#: lib/RT/Ticket_Overlay.pm:3004 +#. ($OldOwnerObj->Name, $NewOwnerObj->Name) +msgid "Owner changed from %1 to %2" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:584 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "Omistaja pakottamalla muutettu arvosta %1 arvoon %2" + +#: html/Search/Elements/PickRestriction:31 +msgid "Owner is" +msgstr "Omistaja on" + +#: html/Admin/Users/Modify.html:174 html/User/Prefs.html:56 +msgid "Pager" +msgstr "Hakulaite" + +#: html/Admin/Elements/ModifyUser:74 +msgid "PagerPhone" +msgstr "Hakulaite puhelin" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/EditLinks:127 html/Ticket/Elements/EditLinks:58 html/Ticket/Elements/ShowLinks:43 +msgid "Parents" +msgstr "Isät" + +#: html/Elements/Login:43 html/User/Prefs.html:61 +msgid "Password" +msgstr "Salasana" + +#: html/NoAuth/Reminder.html:25 +msgid "Password Reminder" +msgstr "Salasanan muistuttaja" + +#: lib/RT/User_Overlay.pm:168 lib/RT/User_Overlay.pm:860 +msgid "Password too short" +msgstr "Salasana liian lyhyt" + +#: html/Admin/Users/Modify.html:291 html/User/Prefs.html:172 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "Salasana: %1" + +#: html/Ticket/Elements/ShowSummary:43 html/Ticket/Elements/Tabs:96 html/Ticket/ModifyAll.html:51 +msgid "People" +msgstr "Käyttäjät" + +#: etc/initialdata:126 +msgid "Perform a user-defined action" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:231 lib/RT/ACE_Overlay.pm:237 lib/RT/ACE_Overlay.pm:563 lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:583 lib/RT/ACE_Overlay.pm:648 lib/RT/CurrentUser.pm:83 lib/RT/CurrentUser.pm:92 lib/RT/CustomField_Overlay.pm:445 lib/RT/CustomField_Overlay.pm:451 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1099 lib/RT/Group_Overlay.pm:1108 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1163 lib/RT/Group_Overlay.pm:1169 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:904 lib/RT/Group_Overlay.pm:908 lib/RT/Group_Overlay.pm:921 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:126 lib/RT/Scrip_Overlay.pm:137 lib/RT/Scrip_Overlay.pm:197 lib/RT/Scrip_Overlay.pm:430 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:88 lib/RT/Template_Overlay.pm:94 lib/RT/Ticket_Overlay.pm:1341 lib/RT/Ticket_Overlay.pm:1351 lib/RT/Ticket_Overlay.pm:1365 lib/RT/Ticket_Overlay.pm:1518 lib/RT/Ticket_Overlay.pm:1527 lib/RT/Ticket_Overlay.pm:1540 lib/RT/Ticket_Overlay.pm:1875 lib/RT/Ticket_Overlay.pm:2013 lib/RT/Ticket_Overlay.pm:2177 lib/RT/Ticket_Overlay.pm:2244 lib/RT/Ticket_Overlay.pm:2596 lib/RT/Ticket_Overlay.pm:2668 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2777 lib/RT/Ticket_Overlay.pm:2910 lib/RT/Ticket_Overlay.pm:3139 lib/RT/Ticket_Overlay.pm:3337 lib/RT/Ticket_Overlay.pm:3499 lib/RT/Ticket_Overlay.pm:3551 lib/RT/Ticket_Overlay.pm:3716 lib/RT/Transaction_Overlay.pm:468 lib/RT/Transaction_Overlay.pm:475 lib/RT/Transaction_Overlay.pm:504 lib/RT/Transaction_Overlay.pm:511 lib/RT/User_Overlay.pm:1334 lib/RT/User_Overlay.pm:562 lib/RT/User_Overlay.pm:597 lib/RT/User_Overlay.pm:853 lib/RT/User_Overlay.pm:941 +msgid "Permission Denied" +msgstr "Pääsy kielletty" + +#: html/User/Elements/Tabs:35 +msgid "Personal Groups" +msgstr "" + +#: html/User/Groups/index.html:30 html/User/Groups/index.html:40 +msgid "Personal groups" +msgstr "Omat ryhmät" + +#: html/User/Elements/DelegateRights:37 +msgid "Personal groups:" +msgstr "Omat ryhmät:" + +#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:49 +msgid "Phone numbers" +msgstr "Puhelinnumerot" + +#: html/Admin/Users/Rights.html:25 +msgid "Placeholder" +msgstr "Paikanpitäjä" + +#: html/Elements/Header:52 html/Elements/Tabs:55 html/SelfService/Prefs.html:25 html/User/Prefs.html:25 html/User/Prefs.html:28 +msgid "Preferences" +msgstr "Asetukset" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "Asetukset" + +#: lib/RT/Action/Generic.pm:160 +msgid "Prepare Stubbed" +msgstr "Valmistele tumppi" + +#: html/Ticket/Elements/Tabs:61 +msgid "Prev" +msgstr "Edellinen" + +#: html/Search/Listing.html:44 +msgid "Previous page" +msgstr "Edellinen sivu" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "Pri" + +#: lib/RT/ACE_Overlay.pm:133 lib/RT/ACE_Overlay.pm:208 lib/RT/ACE_Overlay.pm:552 +#. ($args{'PrincipalId'}) +msgid "Principal %1 not found." +msgstr "" + +#: html/Search/Elements/PickRestriction:54 html/SelfService/Display.html:76 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:54 html/Ticket/Elements/ShowBasics:39 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "Prioriteetti" + +#: html/Admin/Elements/ModifyQueue:51 html/Admin/Queues/Modify.html:65 +msgid "Priority starts at" +msgstr "Prioriteetti alkaa arvosta" + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "" + +#: html/Admin/Users/Modify.html:271 html/User/Prefs.html:163 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "Etuoikeutuksen tila: &1" + +#: html/Admin/Users/index.html:62 +msgid "Privileged users" +msgstr "Etuoikeutetut käyttäjät" + +#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 +msgid "Pseudogroup for internal use" +msgstr "" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Elements/Quicksearch:29 html/Search/Elements/PickRestriction:46 html/SelfService/Create.html:35 html/SelfService/Display.html:68 html/Ticket/Create.html:38 html/Ticket/Elements/EditBasics:64 html/Ticket/Elements/ShowBasics:43 html/User/Elements/DelegateRights:80 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "Työjono" + +#: html/Admin/Queues/CustomField.html:42 html/Admin/Queues/Scrip.html:50 html/Admin/Queues/Scrips.html:46 html/Admin/Queues/Templates.html:43 +#. ($Queue) +#. ($id) +msgid "Queue %1 not found" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Queue '%1' not found\\n" +msgstr "Työjonoa '%1' ei löytynyt" + +#: NOT FOUND IN SOURCE +msgid "Queue Keyword Selections" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:31 html/Admin/Queues/Modify.html:43 +msgid "Queue Name" +msgstr "Työjonon nimi" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "Työjonon laput" + +#: lib/RT/Queue_Overlay.pm:263 +msgid "Queue already exists" +msgstr "Työjono on jo olemassa" + +#: lib/RT/Queue_Overlay.pm:272 lib/RT/Queue_Overlay.pm:278 +msgid "Queue could not be created" +msgstr "Työjonoa ei voitu luoda" + +#: html/Ticket/Create.html:209 +msgid "Queue could not be loaded." +msgstr "Työjonoa ei voitu ladata." + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:282 +msgid "Queue created" +msgstr "Työjono luotu" + +#: NOT FOUND IN SOURCE +msgid "Queue is not specified." +msgstr "" + +#: html/SelfService/Display.html:129 +msgid "Queue not found" +msgstr "Työjonoa ei löytynyt" + +#: html/Admin/Elements/Tabs:38 html/Admin/index.html:35 +msgid "Queues" +msgstr "Työjonot" + +#: html/Elements/Login:34 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "RT %1 - %2" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." +msgstr "RT %1, tekijä <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" + +#: html/Admin/index.html:25 html/Admin/index.html:26 +msgid "RT Administration" +msgstr "RT Ylläpito" + +#: NOT FOUND IN SOURCE +msgid "RT Authentication error." +msgstr "RT Virhe tunnistamisessa" + +#: NOT FOUND IN SOURCE +msgid "RT Bounce: %1" +msgstr "RT palautus: %1" + +#: NOT FOUND IN SOURCE +msgid "RT Configuration error" +msgstr "RT Konfiguraatiovirhe" + +#: NOT FOUND IN SOURCE +msgid "RT Critical error. Message not recorded!" +msgstr "RT Kriittinen virhe. Viestiä ei tallennettu!" + +#: html/Elements/Error:41 html/SelfService/Error.html:41 +msgid "RT Error" +msgstr "RT Virhe" + +#: NOT FOUND IN SOURCE +msgid "RT Received mail (%1) from itself." +msgstr "RT Sai sähköpostin (%1) itseltään." + +#: NOT FOUND IN SOURCE +msgid "RT Recieved mail (%1) from itself." +msgstr "" + +#: html/SelfService/Closed.html:25 +msgid "RT Self Service / Closed Tickets" +msgstr "RT Itsepalvelu / Suljetut työpyynnöt" + +#: html/index.html:25 html/index.html:28 +msgid "RT at a glance" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't authenticate you" +msgstr "RT Ei pystynyt tunnistamaan sinua" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find requestor via its external database lookup" +msgstr "RT ei löytänyt tilaajaa ulkopuolisesta tietokannasta" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find the queue: %1" +msgstr "RT ei löytänyt työjonoa: %1" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "RT ei pystynyt tarkistamaan tätä PGP allekirjoitusta.\\n" + +#: html/Elements/PageLayout:26 +#. ($RT::rtname) +msgid "RT for %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT for %1: %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT has proccessed your commands" +msgstr "RT on prosessoinut antamasi komennot" + +#: html/Elements/Login:83 +#. ('2003') +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 on tekijänoikeuslain alainen, © 1996-%1 Jesse Vincent <jesse@bestpractical.com>. Se on jakelussa seuraavalla lisenssillä: <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 luulee että tämä viesti on palautus" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +msgstr "RT prosessoi tämän viestin kuten se olisi allekirjoittamaton." + +#: 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:n sähköpostiohjaus moodi vaatii PGP tunnistamista. Et allekirjoittanut (PGP) viestiä tai allekirjoitustasi ei pystytty varmistamaan." + +#: html/Admin/Users/Modify.html:58 html/Admin/Users/Prefs.html:52 html/User/Prefs.html:44 +msgid "Real Name" +msgstr "Oikea nimi" + +#: html/Admin/Elements/ModifyUser:48 +msgid "RealName" +msgstr "Oikea nimi" + +#: html/Ticket/Create.html:185 html/Ticket/Elements/EditLinks:139 html/Ticket/Elements/EditLinks:94 html/Ticket/Elements/ShowLinks:63 +msgid "Referred to by" +msgstr "Viitattu jostakin" + +#: html/Elements/SelectLinkType:28 html/Ticket/Create.html:184 html/Ticket/Elements/EditLinks:135 html/Ticket/Elements/EditLinks:80 html/Ticket/Elements/ShowLinks:55 +msgid "Refers to" +msgstr "Viittaus johonkin" + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "Päivitä" + +#: html/Search/Elements/PickRestriction:27 +msgid "Refine search" +msgstr "Päivitä haku" + +#: html/Elements/Refresh:36 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "Päivitä tämä sivu %1 minuutin välein" + +#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:60 html/Ticket/ModifyAll.html:57 +msgid "Relationships" +msgstr "Linkit" + +#: html/Search/Bulk.html:93 +msgid "Remove AdminCc" +msgstr "Poista kopio ylläpidolle" + +#: html/Search/Bulk.html:91 +msgid "Remove Cc" +msgstr "Poista kopio" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "Poista tilaaja" + +#: html/Ticket/Elements/ShowTransaction:173 html/Ticket/Elements/Tabs:122 +msgid "Reply" +msgstr "Vastaa" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Reply to tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "ReplyToTicket" +msgstr "" + +#: etc/initialdata:44 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:87 +msgid "Requestor" +msgstr "Tilaaja" + +#: html/Search/Elements/PickRestriction:38 +msgid "Requestor email address" +msgstr "Tilaajan sähköpostiosoite" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RequestorAddresses" +msgstr "" + +#: html/SelfService/Create.html:43 html/SelfService/Display.html:42 html/Ticket/Create.html:56 html/Ticket/Elements/EditPeople:48 html/Ticket/Elements/ShowPeople:31 +msgid "Requestors" +msgstr "Tilaajat" + +#: html/Admin/Elements/ModifyQueue:61 html/Admin/Queues/Modify.html:75 +msgid "Requests should be due in" +msgstr "Työpyyntö tulisi suorittaa mennessä" + +#: html/Elements/Submit:62 +msgid "Reset" +msgstr "Palauta" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "Asuinpaikka" + +#: html/Ticket/Elements/Tabs:132 +msgid "Resolve" +msgstr "Päätä" + +#: html/Ticket/Update.html:133 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "" + +#: etc/initialdata:302 html/Elements/SelectDateType:28 lib/RT/Ticket_Overlay.pm:1170 +msgid "Resolved" +msgstr "Päätetty" + +#: html/Search/Bulk.html:123 html/Ticket/ModifyAll.html:73 html/Ticket/Update.html:73 +msgid "Response to requestors" +msgstr "Vastaus tilaajille" + +#: html/Elements/ListActions:26 +msgid "Results" +msgstr "Tulokset" + +#: html/Search/Elements/PickRestriction:105 +msgid "Results per page" +msgstr "Tulosta sivulle" + +#: html/Admin/Elements/ModifyUser:33 html/Admin/Users/Modify.html:100 html/User/Prefs.html:72 +msgid "Retype Password" +msgstr "Varmista salasana" + +#: NOT FOUND IN SOURCE +msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" +msgstr "Oikeutta %1 ei löydetty %2 %3 laajuudessa %4 (%5)\\n" + +#: lib/RT/ACE_Overlay.pm:613 +msgid "Right Delegated" +msgstr "Oikeus delegoitu" + +#: lib/RT/ACE_Overlay.pm:303 +msgid "Right Granted" +msgstr "Oikeus delegoitu" + +#: lib/RT/ACE_Overlay.pm:161 +msgid "Right Loaded" +msgstr "Oikeus ladattu" + +#: lib/RT/ACE_Overlay.pm:678 lib/RT/ACE_Overlay.pm:693 +msgid "Right could not be revoked" +msgstr "Oikeutta ei voitu peruuttaa" + +#: html/User/Delegation.html:64 +msgid "Right not found" +msgstr "Oikeutta ei löydetty" + +#: lib/RT/ACE_Overlay.pm:543 lib/RT/ACE_Overlay.pm:638 +msgid "Right not loaded." +msgstr "Oikeutta ei ladattu" + +#: lib/RT/ACE_Overlay.pm:689 +msgid "Right revoked" +msgstr "Oikeus peruutettu" + +#: html/Admin/Elements/UserTabs:41 +msgid "Rights" +msgstr "Oikeudet" + +#: lib/RT/Interface/Web.pm:758 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "" + +#: lib/RT/Interface/Web.pm:791 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "" + +#: html/Admin/Global/GroupRights.html:51 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "Roolit" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "La" + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "Save Changes" +msgstr "Tallenna muutokset" + +#: html/Ticket/ModifyLinks.html:39 +msgid "Save changes" +msgstr "Tallenna muutokset" + +#: html/Admin/Global/Scrip.html:49 +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:176 +msgid "Scrip Created" +msgstr "Lappu luotu" + +#: html/Admin/Elements/EditScrips:84 +msgid "Scrip deleted" +msgstr "" + +#: html/Admin/Elements/QueueTabs:46 html/Admin/Elements/SystemTabs:33 html/Admin/Global/index.html:41 +msgid "Scrips" +msgstr "Laput" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "Laput työjonolle %1\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "" + +#: html/Elements/SimpleSearch:27 html/Search/Elements/PickRestriction:126 html/Ticket/Elements/Tabs:159 +msgid "Search" +msgstr "Hae" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "Hakukriteerit" + +#: html/Approvals/Elements/PendingMyApproval:39 +msgid "Search for approvals" +msgstr "" + +#: bin/rt-crontool:188 +msgid "Security:" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "SeeQueue" +msgstr "" + +#: html/Admin/Groups/index.html:40 +msgid "Select a group" +msgstr "Valitse ryhmä" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "Valitse työjono" + +#: html/Admin/Users/index.html:25 html/Admin/Users/index.html:28 +msgid "Select a user" +msgstr "Valitse käyttäjä" + +#: html/Admin/Global/CustomField.html:38 html/Admin/Global/CustomFields.html:36 +msgid "Select custom field" +msgstr "" + +#: html/Admin/Elements/GroupTabs:52 html/User/Elements/GroupTabs:50 +msgid "Select group" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Select multiple values" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:352 +msgid "Select one value" +msgstr "" + +#: html/Admin/Elements/QueueTabs:67 +msgid "Select queue" +msgstr "" + +#: html/Admin/Global/Scrip.html:37 html/Admin/Global/Scrips.html:36 html/Admin/Queues/Scrip.html:40 html/Admin/Queues/Scrips.html:50 +msgid "Select scrip" +msgstr "" + +#: html/Admin/Global/Template.html:57 html/Admin/Global/Templates.html:36 html/Admin/Queues/Template.html:55 +msgid "Select template" +msgstr "" + +#: html/Admin/Elements/UserTabs:49 +msgid "Select user" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "SelectMultiple" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectSingle" +msgstr "" + +#: html/SelfService/index.html:25 +msgid "Self Service" +msgstr "Itsepalvelu" + +#: etc/initialdata:114 +msgid "Send mail to all watchers" +msgstr "" + +#: etc/initialdata:110 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "" + +#: etc/initialdata:105 +msgid "Send mail to requestors and Ccs" +msgstr "" + +#: etc/initialdata:100 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "" + +#: etc/initialdata:79 +msgid "Sends a message to the requestors" +msgstr "" + +#: etc/initialdata:118 etc/initialdata:122 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "" + +#: etc/initialdata:95 +msgid "Sends mail to the administrative Ccs" +msgstr "" + +#: etc/initialdata:91 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "" + +#: etc/initialdata:83 etc/initialdata:87 +msgid "Sends mail to the owner" +msgstr "" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "Syys" + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "Näytä tulokset" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show approved requests" +msgstr "" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show basics" +msgstr "Näytä perustiedot" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show denied requests" +msgstr "" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show details" +msgstr "Näytä yksityiskohdat" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show pending requests" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:46 +msgid "Show requests awaiting other approvals" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Show ticket private commentary" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "Show ticket summaries" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ShowACL" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowScrips" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ShowTemplate" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "ShowTicket" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "ShowTicketComments" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "" + +#: html/Admin/Elements/ModifyUser:39 html/Admin/Users/Modify.html:191 html/Admin/Users/Prefs.html:32 html/SelfService/Prefs.html:37 html/User/Prefs.html:112 +msgid "Signature" +msgstr "Allekirjoitus" + +#: html/SelfService/Elements/Header:52 +#. ($session{'CurrentUser'}->Name) +msgid "Signed in as %1" +msgstr "" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Single" +msgstr "Yksittäinen" + +#: html/Elements/Header:51 +msgid "Skip Menu" +msgstr "" + +#: html/Admin/Elements/EditCustomFieldValues:31 +msgid "Sort key" +msgstr "Järjestys" + +#: html/Search/Elements/PickRestriction:109 +msgid "Sort results by" +msgstr "Järjestä tulokset" + +#: html/Admin/Elements/AddCustomFieldValue:25 +msgid "SortOrder" +msgstr "Lajittelujärjestyt" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "Jäädytetty" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "Etusivu" + +#: html/Elements/SelectDateType:27 html/Ticket/Elements/EditDates:32 html/Ticket/Elements/ShowDates:35 +msgid "Started" +msgstr "Aloitettu" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "Aloitettu -aikaa '%1' ei pystytty tulkitsemaan" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:27 html/Ticket/Elements/ShowDates:31 +msgid "Starts" +msgstr "Alkaa" + +#: NOT FOUND IN SOURCE +msgid "Starts By" +msgstr "Alkaa mennessä" + +#: NOT FOUND IN SOURCE +msgid "Starts date '%1' could not be parsed" +msgstr "Alkaa -aikaa '%1' ei pystytty tulkitsemaan" + +#: html/Admin/Elements/ModifyUser:82 html/Admin/Users/Modify.html:138 html/User/Prefs.html:94 +msgid "State" +msgstr "Tila" + +#: html/Elements/MyRequests:31 html/Elements/MyTickets:31 html/Search/Elements/PickRestriction:74 html/SelfService/Display.html:59 html/SelfService/Elements/MyRequests:29 html/SelfService/Update.html:31 html/Ticket/Create.html:42 html/Ticket/Elements/EditBasics:38 html/Ticket/Elements/ShowBasics:31 html/Ticket/Update.html:60 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "Tila" + +#: etc/initialdata:288 +msgid "Status Change" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:530 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "Tila muutettu arvosta %1 arvoon %2" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "" + +#: html/Ticket/Elements/Tabs:147 +msgid "Steal" +msgstr "Kaappaa" + +#: lib/RT/Transaction_Overlay.pm:589 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "Kaapattu käyttäjältä %1" + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Search/Bulk.html:126 html/Search/Elements/PickRestriction:43 html/SelfService/Create.html:59 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:35 html/Ticket/Create.html:84 html/Ticket/Elements/EditBasics:28 html/Ticket/ModifyAll.html:79 html/Ticket/Update.html:77 lib/RT/Ticket_Overlay.pm:1160 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "Otsikko" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:611 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "" + +#: html/Elements/Submit:59 +msgid "Submit" +msgstr "Lähetä" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "" + +#: lib/RT/Group_Overlay.pm:749 +msgid "Succeeded" +msgstr "" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "Su" + +#: lib/RT/System.pm:54 +msgid "SuperUser" +msgstr "" + +#: html/User/Elements/DelegateRights:77 +msgid "System" +msgstr "" + +#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:567 lib/RT/Interface/Web.pm:757 lib/RT/Interface/Web.pm:790 +msgid "System Error" +msgstr "Systeemivirhe" + +#: NOT FOUND IN SOURCE +msgid "System Error. Right not granted." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "System Error. right not granted" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:616 +msgid "System error. Right not delegated." +msgstr "Systeemivirhe. Oikeutta ei delegoitu." + +#: lib/RT/ACE_Overlay.pm:146 lib/RT/ACE_Overlay.pm:223 lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:898 +msgid "System error. Right not granted." +msgstr "Systeemivirhe. Oikeutta ei luovutettu." + +#: NOT FOUND IN SOURCE +msgid "System error. Unable to grant rights." +msgstr "" + +#: html/Admin/Global/GroupRights.html:35 html/Admin/Groups/GroupRights.html:37 html/Admin/Queues/GroupRights.html:36 +msgid "System groups" +msgstr "Systeemiryhmät" + +#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 +msgid "SystemRolegroup for internal use" +msgstr "" + +#: lib/RT/CurrentUser.pm:320 +msgid "TEST_STRING" +msgstr "TESTI_STRINGI" + +#: html/Ticket/Elements/Tabs:143 +msgid "Take" +msgstr "Ota itselle" + +#: lib/RT/Transaction_Overlay.pm:575 +msgid "Taken" +msgstr "Otettu" + +#: html/Admin/Elements/EditScrip:81 +msgid "Template" +msgstr "Pohja" + +#: html/Admin/Global/Template.html:91 html/Admin/Queues/Template.html:90 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "" + +#: html/Admin/Elements/EditTemplates:89 +msgid "Template deleted" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:153 +msgid "Template not found" +msgstr "Pohjaa ei löydetty" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "Pohjaa ei löydetty\\n" + +#: lib/RT/Template_Overlay.pm:347 +msgid "Template parsed" +msgstr "Pohja tulkittu" + +#: html/Admin/Elements/QueueTabs:49 html/Admin/Elements/SystemTabs:36 html/Admin/Global/index.html:45 +msgid "Templates" +msgstr "Pohjat" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "Pohjat työjonolle %1\\n" + +#: lib/RT/Interface/Web.pm:858 +msgid "That is already the current value" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:178 +msgid "That is not a value for this custom field" +msgstr "Ei ole arvo tälle kentälle" + +#: lib/RT/Ticket_Overlay.pm:1886 +msgid "That is the same value" +msgstr "Tämä on sama arvo" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "Tämä toimeksiantaja on jo %1 tälle työjonolle" + +#: lib/RT/Ticket_Overlay.pm:1434 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "Tämä toimeksiantaja on jo %1 tälle työpyynnölle" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "Tämä toimeksiantaja ei ole %1 tälle työjonolle" + +#: lib/RT/Ticket_Overlay.pm:1551 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "Tämä toimeksiantaja ei ole %1 tälle työpyynnölle" + +#: lib/RT/Ticket_Overlay.pm:1882 +msgid "That queue does not exist" +msgstr "Tätä työjonoa ei ole olemassa" + +#: lib/RT/Ticket_Overlay.pm:3143 +msgid "That ticket has unresolved dependencies" +msgstr "Tämä työpyyntö sisältää ei-päätettyjä riippuvuuksia" + +#: lib/RT/ACE_Overlay.pm:288 lib/RT/ACE_Overlay.pm:597 +msgid "That user already has that right" +msgstr "Käyttäjällä on jo tuo oikeus" + +#: lib/RT/Ticket_Overlay.pm:2952 +msgid "That user already owns that ticket" +msgstr "Käyttäjä omistaa jo tämän työpyynnön" + +#: lib/RT/Ticket_Overlay.pm:2918 +msgid "That user does not exist" +msgstr "Käyttäjää ei ole olemassa" + +#: lib/RT/User_Overlay.pm:315 +msgid "That user is already privileged" +msgstr "Tämä käyttäjä on jo etuoikeutettu" + +#: lib/RT/User_Overlay.pm:332 +msgid "That user is already unprivileged" +msgstr "Tämä käyttäjä on jo ei-etuoikeutettu" + +#: lib/RT/User_Overlay.pm:327 +msgid "That user is now privileged" +msgstr "Tämä käyttäjä on nyt etuoikeutettu" + +#: lib/RT/User_Overlay.pm:344 +msgid "That user is now unprivileged" +msgstr "Tämä käyttäjä on nyt ei-etuoikeutettu" + +#: NOT FOUND IN SOURCE +msgid "That user is now unprivilegedileged" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2944 +msgid "That user may not own tickets in that queue" +msgstr "Käyttäjä ei voi omistaa työpyyntöjä tuossa työjonossa" + +#: lib/RT/Link_Overlay.pm:206 +msgid "That's not a numerical id" +msgstr "Ei ole numero" + +#: html/Ticket/Create.html:150 html/Ticket/Elements/ShowSummary:28 +msgid "The Basics" +msgstr "Perustiedot" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The CC of a ticket" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:89 +msgid "The administrative CC of a ticket" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2213 +msgid "The comment has been recorded" +msgstr "Kommentti on tallennettu" + +#: bin/rt-crontool:198 +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 "" + +#: bin/rt-commit-handler:756 bin/rt-commit-handler:766 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "Seuraavia komentoja ei suoritettu:\\n\\n" + +#: lib/RT/Interface/Web.pm:861 +msgid "The new value has been set." +msgstr "" + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The owner of a ticket" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The requestor of a ticket" +msgstr "" + +#: html/Admin/Elements/EditUserComments:26 +msgid "These comments aren't generally visible to the user" +msgstr "Nämä kommentit eivät ole yleisesti näkyvillä käyttäjälle" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "Tämä työpyyntö %1 %2 (%3)\\n" + +#: bin/rt-crontool:189 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:253 +msgid "This transaction appears to have no content" +msgstr "Tämä toiminto ei näytä sisältävän mitään" + +#: html/Ticket/Elements/ShowRequestor:47 +#. ($rows) +msgid "This user's %1 highest priority tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "This user's 25 highest priority tickets" +msgstr "Tämän käyttäjän 25 korkeimman prioriteetin työpyyntöä" + +#: lib/RT/Date.pm:391 +msgid "Thu." +msgstr "To" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 %2" +msgstr "Työpyyntö # %1 %2" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 Jumbo update: %2" +msgstr "" + +#: html/Ticket/ModifyAll.html:25 html/Ticket/ModifyAll.html:29 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "Työpyyntö #%1 Jumbo päivitys: %2" + +#: html/Approvals/Elements/ShowDependency:46 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:608 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "Työpyyntö %1 luotu työjonoon '%2'" + +#: bin/rt-commit-handler:760 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "Työpyyntö %1 ladattu\\n" + +#: html/Search/Bulk.html:181 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "Työpyyntö %1: %2" + +#: html/Ticket/History.html:25 html/Ticket/History.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "Työpyynnön historia # %1 %2" + +#: html/SelfService/Display.html:34 +msgid "Ticket Id" +msgstr "Työpyynnön numero" + +#: etc/initialdata:303 +msgid "Ticket Resolved" +msgstr "" + +#: html/Search/Elements/PickRestriction:63 +msgid "Ticket attachment" +msgstr "Työpyynnön liite" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "Työpyynnön sisältö" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "Työpyynnön sisällön tyyppi" + +#: lib/RT/Ticket_Overlay.pm:495 lib/RT/Ticket_Overlay.pm:597 +msgid "Ticket could not be created due to an internal error" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:522 +msgid "Ticket created" +msgstr "Työpyyntö luotu" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "Työpyynnön luonti epäonnistui" + +#: lib/RT/Transaction_Overlay.pm:527 +msgid "Ticket deleted" +msgstr "Työpyyntö poistettu" + +#: html/REST/1.0/modify:29 html/REST/1.0/update:34 +msgid "Ticket id not found" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Ticket killed" +msgstr "" + +#: html/REST/1.0/modify:36 html/REST/1.0/update:41 +msgid "Ticket not found" +msgstr "" + +#: etc/initialdata:289 +msgid "Ticket status changed" +msgstr "" + +#: html/Ticket/Update.html:39 +msgid "Ticket watchers" +msgstr "Työpyynnön tarkkailijat" + +#: html/Elements/Tabs:49 +msgid "Tickets" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Tickets from %1" +msgstr "Työpyynnöt %1" + +#: html/Approvals/Elements/ShowDependency:27 +msgid "Tickets which depend on this approval:" +msgstr "" + +#: html/Ticket/Create.html:157 html/Ticket/Elements/EditBasics:48 +msgid "Time Left" +msgstr "Aikaa jäljellä" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:43 +msgid "Time Worked" +msgstr "Aikaa käytetty" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "Aikaa jäljellä" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "Aika" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "Aikaa käytetty" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1165 +msgid "TimeWorked" +msgstr "" + +#: bin/rt-commit-handler:402 +msgid "To generate a diff of this commit:" +msgstr "Luodaksesi diffin tästä käskystä:" + +#: bin/rt-commit-handler:391 +msgid "To generate a diff of this commit:\\n" +msgstr "To generate a diff of this commit:\\n" + +#: lib/RT/Ticket_Overlay.pm:1168 +msgid "Told" +msgstr "Oltu yhteydessä" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:642 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "Toiminto %1 puhdistettu" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "Toiminto luotu" + +#: lib/RT/Transaction_Overlay.pm:89 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:701 +msgid "Transactions are immutable" +msgstr "Toiminnot ovat muuttumattomia" + +#: NOT FOUND IN SOURCE +msgid "Trying to delete a right: %1" +msgstr "Yritetään poistaa oikeus: %1" + +#: lib/RT/Date.pm:389 +msgid "Tue." +msgstr "Ti" + +#: html/Admin/Elements/EditCustomField:34 html/Ticket/Elements/AddWatchers:33 html/Ticket/Elements/AddWatchers:44 html/Ticket/Elements/AddWatchers:54 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "Tyyppi" + +#: lib/RT/ScripCondition_Overlay.pm:104 +msgid "Unimplemented" +msgstr "Toteuttamaton" + +#: html/Admin/Users/Modify.html:68 +msgid "Unix login" +msgstr "Unix login" + +#: html/Admin/Elements/ModifyUser:62 +msgid "UnixUsername" +msgstr "Käyttäjän Unix-tunnus" + +#: lib/RT/Attachment_Overlay.pm:265 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "Tuntematon sisällön enkoodaus %1" + +#: html/Elements/SelectResultsPerPage:37 +msgid "Unlimited" +msgstr "Rajoittamaton" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:571 +msgid "Untaken" +msgstr "Ottamaton" + +#: html/Elements/MyTickets:64 html/Search/Bulk.html:33 +msgid "Update" +msgstr "Päivitä" + +#: html/Admin/Users/Prefs.html:62 +msgid "Update ID" +msgstr "Päivitä numero" + +#: html/Search/Bulk.html:120 html/Ticket/ModifyAll.html:66 html/Ticket/Update.html:67 +msgid "Update Type" +msgstr "Päivitä tyyppi" + +#: html/Search/Listing.html:61 +msgid "Update all these tickets at once" +msgstr "Päivitä kaikki nämä työpyynnöt kerralla" + +#: html/Admin/Users/Prefs.html:49 +msgid "Update email" +msgstr "Päivitä sähköposti" + +#: html/Admin/Users/Prefs.html:55 +msgid "Update name" +msgstr "Päivitä nimi" + +#: lib/RT/Interface/Web.pm:375 +msgid "Update not recorded." +msgstr "Päivitystä ei tallennettu" + +#: html/Search/Bulk.html:81 +msgid "Update selected tickets" +msgstr "Päivitä valitut työpyynnöt" + +#: html/Admin/Users/Prefs.html:36 +msgid "Update signature" +msgstr "Päivitä allekirjoitus" + +#: html/Ticket/ModifyAll.html:63 +msgid "Update ticket" +msgstr "Päivitä työpyyntö" + +#: html/SelfService/Update.html:25 html/SelfService/Update.html:27 +#. ($Ticket->id) +msgid "Update ticket # %1" +msgstr "Päivitä työpyyntö # %1" + +#: html/SelfService/Update.html:50 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "Päivitä työpyyntö #%1" + +#: html/Ticket/Update.html:135 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "" + +#: lib/RT/Interface/Web.pm:373 +msgid "Update type was neither correspondence nor comment." +msgstr "Päivityksen tyyppi ei ollut kirjeenvaihto eikä kommentti." + +#: html/Elements/SelectDateType:33 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1169 +msgid "Updated" +msgstr "Päivitetty" + +#: NOT FOUND IN SOURCE +msgid "User %1 %2: %3\\n" +msgstr "Käyttäjä %1 %2: %3\\n" + +#: NOT FOUND IN SOURCE +msgid "User %1 Password: %2\\n" +msgstr "Käyttäjä %1 Salasana: %2\\n" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found" +msgstr "Käyttäjää '%1' ei löydetty" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found\\n" +msgstr "Käyttäjää '%1' ei löydetty\\n" + +#: etc/initialdata:125 etc/initialdata:191 +msgid "User Defined" +msgstr "" + +#: html/Admin/Users/Prefs.html:59 +msgid "User ID" +msgstr "Käyttäjän tunnus" + +#: html/Elements/SelectUsers:26 +msgid "User Id" +msgstr "Käyttäjän tunnus" + +#: html/Admin/Elements/GroupTabs:47 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/SystemTabs:47 html/Admin/Global/index.html:59 +msgid "User Rights" +msgstr "Käyttäjän oikeudet" + +#: html/Admin/Users/Modify.html:226 +#. ($msg) +msgid "User could not be created: %1" +msgstr "Käyttäjää ei voitu luoda: %1" + +#: lib/RT/User_Overlay.pm:262 +msgid "User created" +msgstr "Käyttäjä luotu" + +#: html/Admin/Global/GroupRights.html:67 html/Admin/Groups/GroupRights.html:54 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "Käyttäjän luomat ryhmät" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "Käyttäjää informoitu" + +#: html/Admin/Users/Prefs.html:25 html/Admin/Users/Prefs.html:29 +msgid "User view" +msgstr "Käyttäjän näkymä" + +#: html/Admin/Users/Modify.html:48 html/Elements/Login:42 html/Ticket/Elements/AddWatchers:35 +msgid "Username" +msgstr "Käyttäjätunnus" + +#: html/Admin/Elements/SelectNewGroupMembers:26 html/Admin/Elements/Tabs:32 html/Admin/Groups/Members.html:55 html/Admin/Queues/People.html:68 html/Admin/index.html:29 html/User/Groups/Members.html:58 +msgid "Users" +msgstr "Käyttäjät" + +#: html/Admin/Users/index.html:65 +msgid "Users matching search criteria" +msgstr "Hakua vastaavat käyttäjät" + +#: html/Search/Elements/PickRestriction:51 +msgid "ValueOfQueue" +msgstr "Työpyynnon arvo" + +#: html/Admin/Elements/EditCustomField:40 +msgid "Values" +msgstr "Arvot" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Watch" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "WatchAsAdminCc" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "" + +#: html/Admin/Elements/QueueTabs:42 +msgid "Watchers" +msgstr "Tarkkailijat" + +#: html/Admin/Elements/ModifyUser:56 +msgid "WebEncoding" +msgstr "Web Enkoodaus" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "Ke" + +#: etc/upgrade/2.1.71:161 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "" + +#: etc/upgrade/2.1.71:135 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "" + +#: etc/initialdata:138 +msgid "When a ticket is created" +msgstr "" + +#: etc/upgrade/2.1.71:79 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "" + +#: etc/initialdata:143 +msgid "When anything happens" +msgstr "" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "" + +#: html/Admin/Users/Modify.html:164 html/User/Prefs.html:52 +msgid "Work" +msgstr "Työ" + +#: html/Admin/Elements/ModifyUser:70 +msgid "WorkPhone" +msgstr "Työpuhelin" + +#: html/SelfService/Display.html:86 html/Ticket/Elements/ShowBasics:35 html/Ticket/Update.html:65 +msgid "Worked" +msgstr "Tehty" + +#: lib/RT/Ticket_Overlay.pm:3056 +msgid "You already own this ticket" +msgstr "Omistat jo tämän työpyynnön" + +#: html/autohandler:121 +msgid "You are not an authorized user" +msgstr "Et ole autorisoitu käyttäjä" + +#: lib/RT/Ticket_Overlay.pm:2930 +msgid "You can only reassign tickets that you own or that are unowned" +msgstr "Voit palauttaa vain työpyyntöjä jotka omistat itse tai jotka ovat ilman omistajaa" + +#: NOT FOUND IN SOURCE +msgid "You don't have permission to view that ticket.\\n" +msgstr "Sinulla ei ole oikeutta tarkastella tätä työpyyntöä.\\n" + +#: docs/design_docs/string-extraction-guide.txt:47 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "Löysit %1 työpyyntöä työjonosta %2" + +#: html/NoAuth/Logout.html:31 html/REST/1.0/logout:25 +msgid "You have been logged out of RT." +msgstr "Olet kirjautunut ulos RT:stä" + +#: html/SelfService/Display.html:134 +msgid "You have no permission to create tickets in that queue." +msgstr "Sinulla ei ole oikeutta luoda työpyyntöjä tähän työjonoon." + +#: lib/RT/Ticket_Overlay.pm:1895 +msgid "You may not create requests in that queue." +msgstr "Et ehkä voi luoda työpyyntöjä tuohon työjonoon." + +#: html/NoAuth/Logout.html:36 +msgid "You're welcome to login again" +msgstr "Tervetuloa kirjautumaan järjestelmään uudelleen" + +#: html/SelfService/Elements/MyRequests:25 +#. ($friendly_status) +msgid "Your %1 requests" +msgstr "Sinun %1 työpyyntöäsi" + +#: NOT FOUND IN SOURCE +msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" +msgstr "RT:n ylläpitäjä on konfiguroinut RT:n käynnisävät sähköpostialiakset väärin." + +#: etc/initialdata:429 etc/upgrade/2.1.71:146 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "" + +#: etc/initialdata:463 etc/upgrade/2.1.71:180 +msgid "Your request has been approved." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "" + +#: etc/initialdata:384 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "" + +#: html/autohandler:136 html/autohandler:142 +msgid "Your username or password is incorrect" +msgstr "Käyttäjätunnuksesi tai salasanasi on väärä" + +#: html/Admin/Elements/ModifyUser:84 html/Admin/Users/Modify.html:144 html/User/Prefs.html:96 +msgid "Zip" +msgstr "Postinumero" + +#: NOT FOUND IN SOURCE +msgid "[no subject]" +msgstr "" + +#: html/User/Elements/DelegateRights:59 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "sallittu käyttäjälle %1" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:34 +msgid "contains" +msgstr "sisältää" + +#: html/Elements/SelectAttachmentField:26 +msgid "content" +msgstr "" + +#: html/Elements/SelectAttachmentField:27 +msgid "content-type" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2282 +msgid "correspondence (probably) not sent" +msgstr "kirjeenvaihtoa (luultavasti) ei ole asetettu" + +#: lib/RT/Ticket_Overlay.pm:2292 +msgid "correspondence sent" +msgstr "kirjeenvaihto lähetetty" + +#: html/Admin/Elements/ModifyQueue:63 html/Admin/Queues/Modify.html:77 lib/RT/Date.pm:319 +msgid "days" +msgstr "päivää" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "" + +#: html/Search/Listing.html:75 +msgid "delete" +msgstr "poista" + +#: lib/RT/Queue_Overlay.pm:63 +msgid "deleted" +msgstr "poistettu" + +#: html/Search/Elements/PickRestriction:68 +msgid "does not match" +msgstr "ei täsmää" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:35 +msgid "doesn't contain" +msgstr "ei sisällä" + +#: html/Elements/SelectEqualityOperator:38 +msgid "equal to" +msgstr "on yhtäsuuri" + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "" + +#: html/Elements/SelectAttachmentField:28 +msgid "filename" +msgstr "" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "greater than" +msgstr "suurempi kuin" + +#: lib/RT/Group_Overlay.pm:194 +#. ($self->Name) +msgid "group '%1'" +msgstr "ryhmä %1" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "tunnit" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "numero" + +#: html/Elements/SelectBoolean:32 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "is" +msgstr "on" + +#: html/Elements/SelectBoolean:36 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:37 html/Search/Elements/PickRestriction:48 html/Search/Elements/PickRestriction:77 html/Search/Elements/PickRestriction:89 +msgid "isn't" +msgstr "ei ole" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "less than" +msgstr "vähemmän kuin" + +#: html/Search/Elements/PickRestriction:67 +msgid "matches" +msgstr "sisältää" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "min" + +#: html/Ticket/Update.html:66 +msgid "minutes" +msgstr "minuuttia" + +#: bin/rt-commit-handler:765 +msgid "modifications\\n\\n" +msgstr "muokkaukset\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "kuukausia" + +#: lib/RT/Queue_Overlay.pm:58 +msgid "new" +msgstr "uusi" + +#: html/Admin/Elements/EditScrips:43 +msgid "no value" +msgstr "" + +#: html/Ticket/Elements/EditWatchers:28 +msgid "none" +msgstr "ei mitään" + +#: html/Elements/SelectEqualityOperator:38 +msgid "not equal to" +msgstr "eri suuri kuin" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "open" +msgstr "avoin" + +#: lib/RT/Group_Overlay.pm:199 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "oma ryhmä '%1' käyttäjälle '%2'" + +#: lib/RT/Group_Overlay.pm:207 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "työjono %1 %2" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "rejected" +msgstr "hylätty" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "resolved" +msgstr "päätetty" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "sec" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "stalled" +msgstr "jäädytetty" + +#: lib/RT/Group_Overlay.pm:202 +#. ($self->Type) +msgid "system %1" +msgstr "systeemi %1" + +#: lib/RT/Group_Overlay.pm:213 +#. ($self->Type) +msgid "system group '%1'" +msgstr "systeemiryhmä '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:42 +msgid "the calling component did not specify why" +msgstr "kutsuva komponentti ei eritellyt syytä" + +#: lib/RT/Group_Overlay.pm:210 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "työpyyntö #%1 %2" + +#: NOT FOUND IN SOURCE +msgid "true" +msgstr "" + +#: lib/RT/Group_Overlay.pm:216 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "undescripbed group %1" +msgstr "kuvalematon ryhmä %1" + +#: lib/RT/Group_Overlay.pm:191 +#. ($user->Object->Name) +msgid "user %1" +msgstr "käyttäjä %1" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "viikkoa" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "pohjalla %1" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "vuosia" + diff --git a/rt/lib/RT/I18N/fr.po b/rt/lib/RT/I18N/fr.po new file mode 100644 index 000000000..4ef68fb3a --- /dev/null +++ b/rt/lib/RT/I18N/fr.po @@ -0,0 +1,4959 @@ +# Copyright (c) 2002 Jesse Vincent <jesse@bestpractical.com> +# +msgid "" +msgstr "" +"Project-Id-Version: RT 3.0.4pre1\n" +"POT-Creation-Date: 2002-05-02 11:36+0800\n" +"PO-Revision-Date: 2003-07-03 02:00+0800\n" +"Last-Translator: Blaise Thauvin <blaise@fdn.fr>\n" +"Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:27 html/Elements/MyTickets:27 +msgid "#" +msgstr "n°" + +#: NOT FOUND IN SOURCE +msgid "#%1" +msgstr "n°%1" + +#: 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 +#. ($Ticket->Id, $Ticket->Subject) +#. ($Ticket->id, $Ticket->Subject) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "n°%1: %2" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "%1 %2" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($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:3569 lib/RT/Transaction_Overlay.pm:557 lib/RT/Transaction_Overlay.pm:599 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 added" +msgstr "%1 %2 ajouté" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "il y a %1 %2" + +#: lib/RT/Ticket_Overlay.pm:3575 lib/RT/Transaction_Overlay.pm:564 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1 %2 changé en %3" + +#: lib/RT/Ticket_Overlay.pm:3572 lib/RT/Transaction_Overlay.pm:560 lib/RT/Transaction_Overlay.pm:605 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 deleted" +msgstr "%1 %2 supprimé" + +#: NOT FOUND IN SOURCE +msgid "%1 %2 of group %3" +msgstr "%1 %2 du groupe %3" + +#: html/Admin/Elements/EditScrips:43 html/Admin/Elements/ListGlobalScrips:27 +#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) +msgid "%1 %2 with template %3" +msgstr "%1 %2 avec modèle %3" + +#: NOT FOUND IN SOURCE +msgid "%1 (%2) %3 this ticket\\n" +msgstr "%1 (%2) %3 ce ticket\\n" + +#: html/Search/Listing.html:56 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "Tickets %1 à %2" + +#: bin/rt-crontool:168 bin/rt-crontool:175 bin/rt-crontool:181 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - An argument to pass to %2" +msgstr "%1 - Un paramètre à passer à %2" + +#: bin/rt-crontool:184 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "%1 - Ecrit les mises à jour de statuts sur STDOUT" + +#: bin/rt-crontool:178 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "%1 - Précisez l'action que vous voulez utiliser" + +#: bin/rt-crontool:172 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "%1 - Précisez la condition que vous voulez utiliser" + +#: bin/rt-crontool:165 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "%1 - Précisez la recherche que vous voulez utiliser" + +#: lib/RT/ScripAction_Overlay.pm:121 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "%1 ScripAction chargée" + +#: lib/RT/Ticket_Overlay.pm:3602 +#. ($args{'Value'}, $cf->Name) +msgid "%1 added as a value for %2" +msgstr "%1 ajouté(e) comme valeur de %2" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on" +msgstr "les alias %1 nécessitent un TicketId sur lequel travailler" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on " +msgstr "les alias %1 nécessitent un TicketId sur lequel travailler " + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on (from %2) %3" +msgstr "les alias %1 nécessitent un TicketId pour fonctionner avec (depuis %2) %3" + +#: lib/RT/Link_Overlay.pm:116 lib/RT/Link_Overlay.pm:123 +#. ($args{'Base'}) +#. ($args{'Target'}) +msgid "%1 appears to be a local object, but can't be found in the database" +msgstr "%1 semble être un objet local, mais est introuvable dans la base de données" + +#: html/Ticket/Elements/ShowDates:51 lib/RT/Transaction_Overlay.pm:481 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%1 par %2" + +#: lib/RT/Transaction_Overlay.pm:535 lib/RT/Transaction_Overlay.pm:675 lib/RT/Transaction_Overlay.pm:684 lib/RT/Transaction_Overlay.pm:687 +#. ($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 changé(e) de %2 à %3" + +#: lib/RT/Interface/Web.pm:893 +msgid "%1 could not be set to %2." +msgstr "%1 n'a pas pu être positionné à %2" + +#: NOT FOUND IN SOURCE +msgid "%1 couldn't init a transaction (%2)\\n" +msgstr "%1 n'a pas pu initialiser une transaction (%2)\\n" + +#: lib/RT/Ticket_Overlay.pm:2867 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1 ne peut pas mettre le statut à résolu. La base de données RT est peut être incohérente." + +#: html/Elements/MyTickets:24 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "Mes %1 tickets à traiter en priorité..." + +#: html/Elements/MyRequests:24 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "Mes %1 demandes les plus prioritaires..." + +#: bin/rt-crontool:160 +#. ($0) +msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." +msgstr "%1 est un outil agissant sur les tickets depuis un planificateur externe tel que cron" + +#: lib/RT/Queue_Overlay.pm:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1 n'est plus un %2 pour cette queue." + +#: lib/RT/Ticket_Overlay.pm:1587 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 n'est plus un %2 pour ce ticket." + +#: lib/RT/Ticket_Overlay.pm:3658 +#. ($args{'Value'}, $cf->Name) +msgid "%1 is no longer a value for custom field %2" +msgstr "%1 n'est plus une valeur pour le champ personnalisé %2" + +#: NOT FOUND IN SOURCE +msgid "%1 isn't a valid Queue id." +msgstr "%1 n'est pas un identifiant de queue valide" + +#: html/Ticket/Elements/ShowBasics:35 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 min" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "%1 non montré" + +#: html/User/Elements/DelegateRights:75 +#. (loc($ObjectType =~ /^RT::(.*)$/)) +msgid "%1 rights" +msgstr "Droits de %1" + +#: NOT FOUND IN SOURCE +msgid "%1 succeeded\\n" +msgstr "%1 réussi\\n" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for $MessageId" +msgstr "Type %1 inconnu pour $MessageId" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for %2" +msgstr "type %1 inconnu pour %2" + +#: NOT FOUND IN SOURCE +msgid "%1 was created without a CurrentUser\\n" +msgstr "%1 a été créé sans utilisateur courant\\n" + +#: lib/RT/Action/ResolveMembers.pm:41 +#. (ref $self) +msgid "%1 will resolve all members of a resolved group ticket." +msgstr "%1 résoudra tous les membres d'un ticket groupé résolu." + +#: NOT FOUND IN SOURCE +msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." +msgstr "%1 va bloquer une base [locale] s'il dépend ou est membre d'une demande liée." + +#: lib/RT/Transaction_Overlay.pm:433 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1: pas d'attachement spécifié" + +#: html/Ticket/Elements/ShowTransaction:88 +#. ($size) +msgid "%1b" +msgstr "%1b" + +#: html/Ticket/Elements/ShowTransaction:85 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "%1k" + +#: lib/RT/Ticket_Overlay.pm:1176 +#. ($args{'Status'}) +msgid "'%1' is an invalid value for status" +msgstr "'%1' est un statut invalide" + +#: NOT FOUND IN SOURCE +msgid "'%1' not a recognized action. " +msgstr "'%1' n'est pas une action connue. " + +#: NOT FOUND IN SOURCE +msgid "(Check box to delete group member)" +msgstr "(Cocher la case pour supprimer un membre du groupe)" + +#: NOT FOUND IN SOURCE +msgid "(Check box to delete scrip)" +msgstr "(Cocher la case pour supprimer un scrip)" + +#: 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/Ticket/Elements/EditLinks:32 html/Ticket/Elements/EditPeople:45 html/User/Groups/Members.html:54 +msgid "(Check box to delete)" +msgstr "(Cocher la case pour supprimer)" + +#: NOT FOUND IN SOURCE +msgid "(Check boxes to delete)" +msgstr "(Cocher la case pour supprimer)" + +#: html/Ticket/Create.html:177 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(Entrer les numéros de tickets ou les URLs, séparés par des espaces)" + +#: 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 "Si laissé à blanc, valeur par défaut : %1" + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "(Non renseigné)" + +#: html/Admin/Elements/EditCustomFields:32 html/Admin/Elements/ListGlobalCustomFields:31 +msgid "(No custom fields)" +msgstr "Pas de champ personnalisé" + +#: html/Admin/Groups/Members.html:49 html/User/Groups/Members.html:52 +msgid "(No members)" +msgstr "(Aucun membre)" + +#: html/Admin/Elements/EditScrips:31 html/Admin/Elements/ListGlobalScrips:31 +msgid "(No scrips)" +msgstr "(Aucun Scrip)" + +#: html/Admin/Elements/EditTemplates:30 +msgid "(No templates)" +msgstr "Aucun modèle" + +#: html/Ticket/Update.html:83 +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 "(Envoie une copie cachée de cette mise à jour à une liste d'adresses email séparées par des virgules. Ceci <b>ne changera pas</b> les destinataires des mises à jour suivantes.)" + +#: 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 "(Envoie une copie cachée de cette mise à jour à une liste d'adresses email séparées par des virgules. Ceci <b>ne changera pas</b> les destinataires des mises à jour suivantes.)" + +#: 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 "(Envoie une copie de cette mise à jour à une liste d'adresses email séparées par des virgules. Ces personnes <b>recevront</b> les mises à jour suivantes.)" + +#: html/Ticket/Update.html:79 +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 "(Envoie une copie de cette mise à jour à une liste d'adresses email séparées par des virgules. Ceci <b>ne changera pas</b> les destinataires des mises à jour suivantes.)" + +#: 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 "Envoie une copie de cette mise à jour à une liste d'adresses email séparées par des virgules. Ceci <b>ne changera pas</b> les destinataires des mises à jour suivantes.)" + +#: 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 "(Envoie une copie de cette mise à jour à une liste d'adresses email séparées par des virgules. Ces personnes <b>recevront</b> les mises à jour suivantes.)" + +#: html/Admin/Groups/index.html:32 html/User/Groups/index.html:32 +msgid "(empty)" +msgstr "(vide)" + +#: html/Admin/Users/index.html:38 +msgid "(no name listed)" +msgstr "(aucun nom)" + +#: html/Elements/MyRequests:42 html/Elements/MyTickets:44 +msgid "(no subject)" +msgstr "(pas de sujet)" + +#: html/Admin/Elements/SelectRights:47 html/Elements/SelectCustomFieldValue:29 html/Ticket/Elements/EditCustomField:60 html/Ticket/Elements/ShowCustomFields:35 lib/RT/Transaction_Overlay.pm:534 +msgid "(no value)" +msgstr "(non renseigné)" + +#: html/Ticket/Elements/BulkLinks:27 html/Ticket/Elements/EditLinks:115 +msgid "(only one ticket)" +msgstr "(un seul ticket)" + +#: html/Elements/MyRequests:51 html/Elements/MyTickets:54 +msgid "(pending approval)" +msgstr "(en attente d'approbation)" + +#: html/Elements/MyRequests:53 html/Elements/MyTickets:56 +msgid "(pending other tickets)" +msgstr "(en attente d'autres tickets)" + +#: NOT FOUND IN SOURCE +msgid "(requestor's group)" +msgstr "(groupe du demandeur)" + +#: html/Admin/Users/Modify.html:49 +msgid "(required)" +msgstr "(exigé)" + +#: html/Ticket/Elements/ShowTransaction:91 +msgid "(untitled)" +msgstr "(sans titre)" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I own..." +msgstr "Mes 25 tickets à traiter en priorité..." + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I requested..." +msgstr "Mes 25 demandes les plus prioritaires..." + +#: html/Ticket/Elements/ShowBasics:31 +msgid "<% $Ticket->Status%>" +msgstr "<% $Ticket->Statut%>" + +#: html/Elements/SelectTicketTypes:26 +msgid "<% $_ %>" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:25 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"Créer un ticket dans\"> %1" + +#: etc/initialdata:203 +msgid "A blank template" +msgstr "Un modèle vide" + +#: NOT FOUND IN SOURCE +msgid "ACE Deleted" +msgstr "ACE Supprimé" + +#: NOT FOUND IN SOURCE +msgid "ACE Loaded" +msgstr "ACE Chargé" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be deleted" +msgstr "l'ACE n'a pu être supprimé" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be found" +msgstr "l'ACE n'a pu être trouvé" + +#: lib/RT/ACE_Overlay.pm:156 lib/RT/Principal_Overlay.pm:180 +msgid "ACE not found" +msgstr "ACE non trouvé" + +#: lib/RT/ACE_Overlay.pm:830 +msgid "ACEs can only be created and deleted." +msgstr "Les ACE peuvent seulement être créés et effacés." + +#: bin/rt-commit-handler:754 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "Interruption pour éviter des modifications de ticket involontaires" + +#: html/User/Elements/Tabs:31 +msgid "About me" +msgstr "A propos" + +#: html/Admin/Users/Modify.html:79 +msgid "Access control" +msgstr "contrôle d'accès" + +#: html/Admin/Elements/EditScrip:56 +msgid "Action" +msgstr "Action" + +#: lib/RT/Scrip_Overlay.pm:146 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "Action %1 non trouvée" + +#: bin/rt-crontool:122 +msgid "Action committed." +msgstr "Action validée" + +#: bin/rt-crontool:118 +msgid "Action prepared..." +msgstr "Action préparée..." + +#: html/Search/Bulk.html:95 +msgid "Add AdminCc" +msgstr "Ajouter AdminCC" + +#: html/Search/Bulk.html:91 +msgid "Add Cc" +msgstr "Ajouter CC" + +#: html/Ticket/Create.html:113 html/Ticket/Update.html:98 +msgid "Add More Files" +msgstr "Ajouter d'autres fichiers" + +#: NOT FOUND IN SOURCE +msgid "Add Next State" +msgstr "Ajouter étape suivant" + +#: html/Search/Bulk.html:87 +msgid "Add Requestor" +msgstr "Ajouter Demandeur" + +#: html/Admin/Elements/AddCustomFieldValue:24 +msgid "Add Value" +msgstr "Ajouter une valeur" + +#: NOT FOUND IN SOURCE +msgid "Add a keyword selection to this queue" +msgstr "Ajouter une sélection de mots clé à cette queue" + +#: NOT FOUND IN SOURCE +msgid "Add a new a global scrip" +msgstr "Ajouter un nouveau scrip global" + +#: NOT FOUND IN SOURCE +msgid "Add a scrip to this queue" +msgstr "Ajouter un scrip à cette queue" + +#: html/Admin/Global/Scrip.html:54 +msgid "Add a scrip which will apply to all queues" +msgstr "Ajouter un scrip qui s'ajoute à toutes les queues" + +#: html/Search/Bulk.html:127 +msgid "Add comments or replies to selected tickets" +msgstr "Ajouter des commentaires ou des réponses aux tickets sélectionnés" + +#: html/Admin/Groups/Members.html:41 html/User/Groups/Members.html:38 +msgid "Add members" +msgstr "Ajouter des membres" + +#: html/Admin/Queues/People.html:65 html/Ticket/Elements/AddWatchers:27 +msgid "Add new watchers" +msgstr "Ajouter de nouveaux observateurs" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "AjouterEtatSuivant" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "Ajout groupe/utilisateur comme %1 pour cette queue" + +#: lib/RT/Ticket_Overlay.pm:1471 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "Ajout groupe/utilisateur comme %1 pour ce ticket" + +#: html/Admin/Elements/ModifyUser:75 html/Admin/Users/Modify.html:121 html/User/Prefs.html:87 +msgid "Address1" +msgstr "Adresse1" + +#: html/Admin/Elements/ModifyUser:77 html/Admin/Users/Modify.html:126 html/User/Prefs.html:89 +msgid "Address2" +msgstr "Adresse2" + +#: html/Ticket/Create.html:73 +msgid "Admin Cc" +msgstr "Admin Cc" + +#: etc/initialdata:280 +msgid "Admin Comment" +msgstr "Commentaire Admin" + +#: etc/initialdata:259 +msgid "Admin Correspondence" +msgstr "Correspondance Admin " + +#: html/Admin/Queues/index.html:24 html/Admin/Queues/index.html:27 +msgid "Admin queues" +msgstr "Administrateurs de queue" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "Gérer les Utilisateurs" + +#: html/Admin/Global/index.html:25 html/Admin/Global/index.html:27 +msgid "Admin/Global configuration" +msgstr "configuration Gestion/Globale" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "Gestion/Groupes" + +#: html/Admin/Queues/Modify.html:24 html/Admin/Queues/Modify.html:28 +msgid "Admin/Queue/Basics" +msgstr "Gestion/Queues/Essentiel" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "GérerTousGroupesPersonnels" + +#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:38 html/Ticket/Update.html:49 lib/RT/ACE_Overlay.pm:88 +msgid "AdminCc" +msgstr "AdminCc" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "CommentaireAdministrateur" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "CorrespondanceAdministrateur" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "AdminCustomFields" +msgstr "GérerChampsPersonnalisés" + +#: lib/RT/Group_Overlay.pm:145 +msgid "AdminGroup" +msgstr "GérerGroupes" + +#: lib/RT/Group_Overlay.pm:147 +msgid "AdminGroupMembership" +msgstr "GérerAppartenanceGroupes" + +#: lib/RT/System.pm:58 +msgid "AdminOwnPersonalGroups" +msgstr "GérerGroupesPersonnelsPropres" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "AdminQueue" +msgstr "GérerQueues" + +#: lib/RT/System.pm:59 +msgid "AdminUsers" +msgstr "GérerUtilisateurs" + +#: html/Admin/Queues/People.html:47 html/Ticket/Elements/EditPeople:53 +msgid "Administrative Cc" +msgstr "Cc Administratif" + +#: NOT FOUND IN SOURCE +msgid "Admins" +msgstr "Administrateurs" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "Recherche avancée" + +#: html/Elements/SelectDateRelation:35 +msgid "After" +msgstr "Après" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "Age" + +#: NOT FOUND IN SOURCE +msgid "Alias" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Alias for" +msgstr "Alias pour" + +#: etc/initialdata:348 +msgid "All Approvals Passed" +msgstr "Toutes les approbations obtenues" + +#: html/Admin/Elements/EditCustomFields:95 +msgid "All Custom Fields" +msgstr "Tous les champs personnalisés" + +#: html/Admin/Queues/index.html:52 +msgid "All Queues" +msgstr "Toutes les queues" + +#: NOT FOUND IN SOURCE +msgid "Always sends a message to the requestors independent of message sender" +msgstr "Envoie toujours un message au demandeur indépendamment de l'expéditeur" + +#: html/Elements/Tabs:55 +msgid "Approval" +msgstr "Approbation" + +#: 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 "Approbation n°%1: %2" + +#: html/Approvals/index.html:53 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "Approbation n°%1: Notes non enregistrées en raison d'une erreur système" + +#: html/Approvals/index.html:51 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "Approbation n°%1: Notes non enregistrées" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "Détails de l'approbation" + +#: etc/initialdata:336 +msgid "Approval Passed" +msgstr "Approbations obtenues" + +#: etc/initialdata:359 +msgid "Approval Rejected" +msgstr "Approbations refusées" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "Diagramme d'approbation" + +#: html/Approvals/Elements/Approve:43 +msgid "Approve" +msgstr "Approuver" + +#: etc/initialdata:486 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "Notes de l'approbateur: %1" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "Avr." + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "Avril" + +#: html/Elements/SelectSortOrder:34 +msgid "Ascending" +msgstr "Croissant" + +#: html/Search/Bulk.html:136 html/SelfService/Update.html:32 html/Ticket/ModifyAll.html:82 html/Ticket/Update.html:98 +msgid "Attach" +msgstr "Attaché" + +#: html/SelfService/Create.html:64 html/Ticket/Create.html:109 +msgid "Attach file" +msgstr "Attacher un ficher" + +#: html/Ticket/Create.html:97 html/Ticket/Update.html:87 +msgid "Attached file" +msgstr "Fichier attaché" + +#: NOT FOUND IN SOURCE +msgid "Attachment '%1' could not be loaded" +msgstr "Attachement '%1' ne peut pas être chargé" + +#: lib/RT/Transaction_Overlay.pm:441 +msgid "Attachment created" +msgstr "Attachement créé" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "Nom de fichier de l'attachement" + +#: html/Ticket/Elements/ShowAttachments:25 +msgid "Attachments" +msgstr "Attachements" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "Aoû." + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "Août" + +#: html/Admin/Elements/ModifyUser:65 +msgid "AuthSystem" +msgstr "AuthSystem" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "RéponseAuto" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "Réponse automatique aux demandeurs" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "RéponseAutomtiqueAuxDemandeurs" + +#: NOT FOUND IN SOURCE +msgid "Bad PGP Signature: %1\\n" +msgstr "Signature PGP invalide: %1\\n" + +#: NOT FOUND IN SOURCE +msgid "Bad attachment id. Couldn't find attachment '%1'\\n" +msgstr "Id d'attachement erroné. Impossible de trouver l'attachement '%1'\\n" + +#: bin/rt-commit-handler:826 +#. ($val) +msgid "Bad data in %1" +msgstr "Données incorrectes dans %1" + +#: NOT FOUND IN SOURCE +msgid "Bad transaction number for attachment. %1 should be %2\\n" +msgstr "Numéro de transaction incorrect pour l'attachement. %1 doit être %2\\n" + +#: html/Admin/Elements/GroupTabs:38 html/Admin/Elements/QueueTabs:38 html/Admin/Elements/UserTabs:37 html/Ticket/Elements/Tabs:89 html/User/Elements/GroupTabs:37 +msgid "Basics" +msgstr "Essentiel" + +#: html/Ticket/Update.html:81 +msgid "Bcc" +msgstr "Bcc" + +#: html/Admin/Elements/EditScrip:87 html/Admin/Global/GroupRights.html:84 html/Admin/Global/Template.html:45 html/Admin/Global/UserRights.html:53 html/Admin/Groups/GroupRights.html:72 html/Admin/Groups/Members.html:80 html/Admin/Groups/Modify.html:55 html/Admin/Groups/UserRights.html:54 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:44 html/Admin/Queues/UserRights.html:53 html/User/Groups/Modify.html:55 +msgid "Be sure to save your changes" +msgstr "Assurez-vous de sauvegarder vos modifications" + +#: html/Elements/SelectDateRelation:33 lib/RT/CurrentUser.pm:321 +msgid "Before" +msgstr "Avant" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "Débuter l'approbation" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "Vide" + +#: html/Search/Listing.html:78 +msgid "Bookmarkable URL for this search" +msgstr "URL prédéfinie pour cette recherche" + +#: html/Ticket/Elements/ShowHistory:38 html/Ticket/Elements/ShowHistory:44 +msgid "Brief headers" +msgstr "En-têtes courts" + +#: html/Search/Bulk.html:24 html/Search/Bulk.html:25 +msgid "Bulk ticket update" +msgstr "modification de tickets en masse" + +#: lib/RT/User_Overlay.pm:1524 +msgid "Can not modify system users" +msgstr "Les utilisateurs système ne peuvent être modifiés" + +#: lib/RT/Queue_Overlay.pm:66 +msgid "Can this principal see this queue" +msgstr "Le groupe/utilisateur peut-il voir cette queue" + +#: lib/RT/CustomField_Overlay.pm:205 +msgid "Can't add a custom field value without a name" +msgstr "Impossible d'ajouter une valeur de champ personnalisé sans un nom" + +#: lib/RT/Link_Overlay.pm:131 +msgid "Can't link a ticket to itself" +msgstr "Un ticket ne peut être lié à lui même" + +#: lib/RT/Ticket_Overlay.pm:2844 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "Impossible de fusionner un ticket à un ticket fusionné. Vous ne devriez jamais obtenir cette erreur" + +#: lib/RT/Ticket_Overlay.pm:2646 lib/RT/Ticket_Overlay.pm:2725 +msgid "Can't specifiy both base and target" +msgstr "Impossible de spécifier à la fois la base et la cible" + +#: html/autohandler:113 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "Impossible de créer l'utilisateur: %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:44 html/Ticket/Update.html:76 lib/RT/ACE_Overlay.pm:87 +msgid "Cc" +msgstr "Cc" + +#: html/SelfService/Prefs.html:30 +msgid "Change password" +msgstr "Changer le mot de passe" + +#: html/Ticket/Create.html:100 html/Ticket/Update.html:90 +msgid "Check box to delete" +msgstr "Cocher la case pour supprimer" + +#: html/Admin/Elements/SelectRights:30 +msgid "Check box to revoke right" +msgstr "Cocher la case pour retirer le droit" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/BulkLinks:42 html/Ticket/Elements/EditLinks:130 html/Ticket/Elements/EditLinks:68 html/Ticket/Elements/ShowLinks:56 +msgid "Children" +msgstr "Fils" + +#: html/Admin/Elements/ModifyUser:79 html/Admin/Users/Modify.html:131 html/User/Prefs.html:91 +msgid "City" +msgstr "Ville" + +#: html/Ticket/Elements/ShowDates:46 +msgid "Closed" +msgstr "Fermé" + +#: html/SelfService/Closed.html:24 +msgid "Closed Tickets" +msgstr "Tickets fermés" + +#: NOT FOUND IN SOURCE +msgid "Closed requests" +msgstr "Demandes closes" + +#: html/SelfService/Elements/Tabs:44 +msgid "Closed tickets" +msgstr "Tickets fermés" + +#: NOT FOUND IN SOURCE +msgid "Code" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "Commande incomprise! \\n" + +#: html/Ticket/Elements/ShowTransaction:165 html/Ticket/Elements/Tabs:152 +msgid "Comment" +msgstr "Commenter" + +#: html/Admin/Elements/ModifyQueue:44 html/Admin/Queues/Modify.html:57 +msgid "Comment Address" +msgstr "Adresse de commentaire" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "Commentaire non enregistré" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Comment on tickets" +msgstr "Commentaire sur le ticket" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "CommentOnTicket" +msgstr "CommenterTicket" + +#: html/Admin/Elements/ModifyUser:34 +msgid "Comments" +msgstr "Commentaires" + +#: html/Ticket/ModifyAll.html:69 html/Ticket/Update.html:68 +msgid "Comments (Not sent to requestors)" +msgstr "Commentaires (non envoyés aux demandeurs)" + +#: html/Search/Bulk.html:131 +msgid "Comments (not sent to requestors)" +msgstr "Commentaires (non envoyés aux demandeurs)" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Comments about %1" +msgstr "Commentaires sur %1" + +#: html/Admin/Users/Modify.html:184 html/Ticket/Elements/ShowRequestor:43 +msgid "Comments about this user" +msgstr "Commentaires sur cet utilisateur" + +#: lib/RT/Transaction_Overlay.pm:543 +msgid "Comments added" +msgstr "Commentaires ajoutés" + +#: lib/RT/Action/Generic.pm:139 +msgid "Commit Stubbed" +msgstr "tr(Commit Stubbed)" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "Restrictions de compilation" + +#: html/Admin/Elements/EditScrip:40 +msgid "Condition" +msgstr "Condition" + +#: bin/rt-crontool:108 +msgid "Condition matches..." +msgstr "La condition satisfait..." + +#: lib/RT/Scrip_Overlay.pm:159 +msgid "Condition not found" +msgstr "Condition non trouvée" + +#: html/Elements/Tabs:49 +msgid "Configuration" +msgstr "Configuration" + +#: html/SelfService/Prefs.html:32 +msgid "Confirm" +msgstr "Confirmer" + +#: html/Admin/Elements/ModifyUser:59 +msgid "ContactInfoSystem" +msgstr "ContactInfoSystem" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "Date de contact ne peut pas être analysée" + +#: html/Admin/Elements/ModifyTemplate:43 html/Ticket/ModifyAll.html:86 +msgid "Content" +msgstr "Contenu" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "Le groupe n'a pas pu être créé" + +#: etc/initialdata:271 +msgid "Correspondence" +msgstr "Courrier" + +#: html/Admin/Elements/ModifyQueue:38 html/Admin/Queues/Modify.html:50 +msgid "Correspondence Address" +msgstr "Adresse de correspondance" + +#: lib/RT/Transaction_Overlay.pm:539 +msgid "Correspondence added" +msgstr "Courrier ajouté" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "Courrier non enregistré" + +#: lib/RT/Ticket_Overlay.pm:3589 +msgid "Could not add new custom field value for ticket. " +msgstr "Impossible d'ajouter une nouvelle valeur de champ personnalisé pour ce ticket. " + +#: NOT FOUND IN SOURCE +msgid "Could not add new custom field value for ticket. %1 " +msgstr "La valeur de champ personnalisé n'a pas pu être ajoutée. %1" + +#: lib/RT/Ticket_Overlay.pm:3095 lib/RT/Ticket_Overlay.pm:3103 lib/RT/Ticket_Overlay.pm:3120 +msgid "Could not change owner. " +msgstr "Impossible de changer l'intervenant. " + +#: html/Admin/Elements/EditCustomField:84 html/Admin/Elements/EditCustomFields:165 +#. ($msg) +msgid "Could not create CustomField" +msgstr "Impossible de créer un champ personnalisé CustomField" + +#: html/User/Groups/Modify.html:76 lib/RT/Group_Overlay.pm:473 lib/RT/Group_Overlay.pm:480 +msgid "Could not create group" +msgstr "Impossible de créer un groupe" + +#: html/Admin/Global/Template.html:74 html/Admin/Queues/Template.html:71 +#. ($msg) +msgid "Could not create template: %1" +msgstr "Impossible de créer un modèle : %1" + +#: lib/RT/Ticket_Overlay.pm:1109 lib/RT/Ticket_Overlay.pm:352 +msgid "Could not create ticket. Queue not set" +msgstr "Impossible de créer un ticket. Queue non indiquée" + +#: lib/RT/User_Overlay.pm:267 lib/RT/User_Overlay.pm:279 lib/RT/User_Overlay.pm:297 lib/RT/User_Overlay.pm:483 +msgid "Could not create user" +msgstr "Impossible de créer un utilisateur" + +#: NOT FOUND IN SOURCE +msgid "Could not create watcher for requestor" +msgstr "L'observateur n'a pas pu être crée pour le demandeur" + +#: NOT FOUND IN SOURCE +msgid "Could not find a ticket with id %1" +msgstr "Impossible de trouver le ticket numéro %1" + +#: NOT FOUND IN SOURCE +msgid "Could not find group %1." +msgstr "Impossible de trouver le groupe %1." + +#: lib/RT/Queue_Overlay.pm:621 lib/RT/Ticket_Overlay.pm:1439 +msgid "Could not find or create that user" +msgstr "Impossible de trouver ou créer cet utilisateur" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1518 +msgid "Could not find that principal" +msgstr "Impossible de trouver ce groupe ou utilisateur" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "Impossible de trouver l'utilisateur %1." + +#: html/Admin/Groups/Members.html:87 html/User/Groups/Members.html:89 html/User/Groups/Modify.html:81 +msgid "Could not load group" +msgstr "Impossible de charger ce groupe" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "Impossible de faire de ce groupe/utilisateur un %1 pour cette queue" + +#: lib/RT/Ticket_Overlay.pm:1460 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "Impossible de faire de ce groupe/utilisateur un %1 pour ce ticket" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "Impossible de supprimer ce groupe/utilisateur comme un %1 pour cette queue" + +#: lib/RT/Ticket_Overlay.pm:1576 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "Impossible de supprimer ce groupe/utilisateur comme un %1 pour ce ticket" + +#: lib/RT/Group_Overlay.pm:984 +msgid "Couldn't add member to group" +msgstr "Impossible d'ajouter un membre à ce groupe" + +#: lib/RT/Ticket_Overlay.pm:3599 lib/RT/Ticket_Overlay.pm:3655 +#. ($Msg) +msgid "Couldn't create a transaction: %1" +msgstr "Impossible de créer une transaction : %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't figure out what to do from gpg's reply\\n" +msgstr "Impossible de comprendre ce qu'il faut faire avec cette réponse gpg\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find group\\n" +msgstr "Groupe introuvable\\n" + +#: lib/RT/Interface/Web.pm:902 +msgid "Couldn't find row" +msgstr "Colonne introuvable" + +#: lib/RT/Group_Overlay.pm:958 +msgid "Couldn't find that principal" +msgstr "groupe/utilisateur introuvable" + +#: lib/RT/CustomField_Overlay.pm:239 +msgid "Couldn't find that value" +msgstr "Valeur introuvable" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find that watcher" +msgstr "L'observateur n'a pas pu être trouvé" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find user\\n" +msgstr "Utilisateur introuvable\\n" + +#: lib/RT/CurrentUser.pm:111 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "Impossible de charger %1 depuis la base de données des utilisateurs.\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load KeywordSelects." +msgstr "KeywordSelects n'a pas pu être chargé" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load RT config file '%1' %2" +msgstr "Impossible de charger le fichier de configuration RT '%1' %2" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load Scrips." +msgstr "Les scrips n'ont pas pu être chargés" + +#: html/Admin/Groups/GroupRights.html:87 html/Admin/Groups/UserRights.html:74 +#. ($id) +msgid "Couldn't load group %1" +msgstr "Impossible de charger le groupe %1" + +#: lib/RT/Link_Overlay.pm:174 lib/RT/Link_Overlay.pm:183 lib/RT/Link_Overlay.pm:210 +msgid "Couldn't load link" +msgstr "Impossible de charger le lien" + +#: html/Admin/Elements/EditCustomFields:146 html/Admin/Queues/People.html:120 +#. ($id) +msgid "Couldn't load queue" +msgstr "Impossible de charger la queue" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:71 +#. ($id) +msgid "Couldn't load queue %1" +msgstr "Impossible de charger la queue %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "Impossible de charger le Scrip" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "Impossible de charger le modèle" + +#: html/Admin/Users/Prefs.html:78 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "Impossible de charger cet utilisateur (%1)" + +#: html/SelfService/Display.html:108 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "Impossible de charger le ticket '%1'" + +#: html/Admin/Elements/ModifyUser:85 html/Admin/Users/Modify.html:148 html/User/Prefs.html:97 +msgid "Country" +msgstr "Pays" + +#: html/Admin/Elements/CreateUserCalled:25 html/Ticket/Create.html:134 html/Ticket/Create.html:194 +msgid "Create" +msgstr "Ajouter" + +#: etc/initialdata:127 +msgid "Create Tickets" +msgstr "Ajouter des tickets" + +#: html/Admin/Elements/EditCustomField:74 +msgid "Create a CustomField" +msgstr "Ajouter un Champ Personnalisé" + +#: html/Admin/Queues/CustomField.html:47 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "Ajouter un champ personnalisé à la queue %1" + +#: html/Admin/Global/CustomField.html:47 +msgid "Create a CustomField which applies to all queues" +msgstr "Ajouter un champ personnalisé à toutes les queues" + +#: NOT FOUND IN SOURCE +msgid "Create a new Custom Field" +msgstr "Ajouter un nouveaux champ personnalisé" + +#: NOT FOUND IN SOURCE +msgid "Create a new global scrip" +msgstr "Ajouter un nouveau scrip global" + +#: html/Admin/Groups/Modify.html:66 html/Admin/Groups/Modify.html:92 +msgid "Create a new group" +msgstr "Ajouter un nouveau groupe" + +#: html/User/Groups/Modify.html:66 html/User/Groups/Modify.html:91 +msgid "Create a new personal group" +msgstr "Ajouter un nouveau groupe personnel" + +#: NOT FOUND IN SOURCE +msgid "Create a new queue" +msgstr "Ajouter une nouvelle queue" + +#: NOT FOUND IN SOURCE +msgid "Create a new scrip" +msgstr "Ajouter un nouveau scrip" + +#: NOT FOUND IN SOURCE +msgid "Create a new template" +msgstr "Ajouter un nouveau modèle" + +#: html/Ticket/Create.html:24 html/Ticket/Create.html:27 html/Ticket/Create.html:35 +msgid "Create a new ticket" +msgstr "Ajouter un nouveau ticket" + +#: html/Admin/Users/Modify.html:213 html/Admin/Users/Modify.html:240 +msgid "Create a new user" +msgstr "Ajouter un nouvel utilisateur" + +#: html/Admin/Queues/Modify.html:103 +msgid "Create a queue" +msgstr "Ajouter une queue" + +#: NOT FOUND IN SOURCE +msgid "Create a queue called" +msgstr "Ajouter une nouvelle queue appelée" + +#: NOT FOUND IN SOURCE +msgid "Create a request" +msgstr "Ajouter une demande" + +#: html/Admin/Queues/Scrip.html:58 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "Ajouter un scrip pour la queue %1" + +#: html/Admin/Global/Template.html:68 html/Admin/Queues/Template.html:64 +msgid "Create a template" +msgstr "Ajouter un modèle" + +#: html/SelfService/Create.html:24 +msgid "Create a ticket" +msgstr "Ajouter un ticket" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1 / %2 / %3 " +msgstr "Echec à la création de: %1 / %2 / %3" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1/%2/%3" +msgstr "Echec à la création de: %1/%2/%3" + +#: etc/initialdata:129 +msgid "Create new tickets based on this scrip's template" +msgstr "Ajouter de nouveaux tickets basés sur le modèle de ce scrip" + +#: html/SelfService/Create.html:77 +msgid "Create ticket" +msgstr "Ajouter un ticket" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Create tickets in this queue" +msgstr "Ajouter des tickets dans cette queue" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Create, delete and modify custom fields" +msgstr "Ajouter, supprimer et modifier des champs personnalisés" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Create, delete and modify queues" +msgstr "Ajouter, supprimer et modifier les queues" + +#: NOT FOUND IN SOURCE +msgid "Create, delete and modify the members of any user's personal groups" +msgstr "Ajouter, supprime et modifie les membres des groupe spersonnels de n'importe quel utilisateur" + +#: lib/RT/System.pm:58 +msgid "Create, delete and modify the members of personal groups" +msgstr "Ajouter, supprimer et modifier les membres d'un groupe personnel" + +#: lib/RT/System.pm:59 +msgid "Create, delete and modify users" +msgstr "Ajouter, supprimer et modifier les utilisateurs" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "CreateTicket" +msgstr "CréerTicket" + +#: html/Elements/SelectDateType:25 html/Ticket/Elements/ShowDates:26 lib/RT/Ticket_Overlay.pm:1203 +msgid "Created" +msgstr "Créé" + +#: html/Admin/Elements/EditCustomField:87 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "Champ Personnalisé %1 ajouté" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "Modèle %1 créé" + +#: html/Ticket/Elements/EditLinks:27 +msgid "Current Relationships" +msgstr "Relations actuelles" + +#: html/Admin/Elements/EditScrips:29 +msgid "Current Scrips" +msgstr "Scrips actuels" + +#: html/Admin/Groups/Members.html:38 html/User/Groups/Members.html:41 +msgid "Current members" +msgstr "Membres actuels" + +#: html/Admin/Elements/SelectRights:28 +msgid "Current rights" +msgstr "Droits actuels" + +#: html/Search/Listing.html:70 +msgid "Current search criteria" +msgstr "Critères de recherche courants" + +#: html/Admin/Queues/People.html:40 html/Ticket/Elements/EditPeople:44 +msgid "Current watchers" +msgstr "Observateurs actuels" + +#: html/Admin/Global/CustomField.html:54 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "Champ personnalisé n°%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 "Champs Personnalisés" + +#: html/Admin/Elements/EditScrip:72 +msgid "Custom action cleanup code" +msgstr "Programme de nettoyage d'action personnalisé" + +#: html/Admin/Elements/EditScrip:64 +msgid "Custom action preparation code" +msgstr "Programme de préparation d'action personnalisé " + +#: html/Admin/Elements/EditScrip:48 +msgid "Custom condition" +msgstr "Condition personnalisée" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "Champs personnalisés %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "Le champ personnalisé %1 a une valeur" + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "Le champ personnalisé %1 n'a pas de valeur" + +#: lib/RT/Ticket_Overlay.pm:3491 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "Le champ personnalisé %1 est introuvable" + +#: html/Admin/Elements/EditCustomFields:196 +msgid "Custom field deleted" +msgstr "Champ personnalisé supprimé" + +#: lib/RT/Ticket_Overlay.pm:3641 +msgid "Custom field not found" +msgstr "Le champ personnalisé est introuvable" + +#: lib/RT/CustomField_Overlay.pm:349 +#. ($args{'Content'}, $self->Name) +msgid "Custom field value %1 could not be found for custom field %2" +msgstr "La valeur du champ personnalisé %1 ne peut pas être trouvée pour le champ personnalisé %2" + +#: NOT FOUND IN SOURCE +msgid "Custom field value changed from %1 to %2" +msgstr "Valeur de champ personnalisé modifié de %1 à %2" + +#: lib/RT/CustomField_Overlay.pm:249 +msgid "Custom field value could not be deleted" +msgstr "La valeur du champ personnalisé ne peut pas être effacée" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Custom field value could not be found" +msgstr "La valeur du champ personnalisé ne peut par être trouvée" + +#: lib/RT/CustomField_Overlay.pm:247 lib/RT/CustomField_Overlay.pm:357 +msgid "Custom field value deleted" +msgstr "La valeur du champ personnalisé est effacée" + +#: lib/RT/Transaction_Overlay.pm:548 +msgid "CustomField" +msgstr "ChampPersonnalisé" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "Erreur de données" + +#: html/SelfService/Display.html:38 html/Ticket/Create.html:160 html/Ticket/Elements/ShowSummary:54 html/Ticket/Elements/Tabs:92 html/Ticket/ModifyAll.html:43 +msgid "Dates" +msgstr "Dates" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "Déc." + +#: NOT FOUND IN SOURCE +msgid "December" +msgstr "Décembre" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "Modèle de réponse automatique par défaut" + +#: etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "Modèle de réponse automatique par défaut" + +#: etc/initialdata:281 +msgid "Default admin comment template" +msgstr "Modèle de commentaire administrateur par défaut" + +#: etc/initialdata:260 +msgid "Default admin correspondence template" +msgstr "Modèle de courrier administrateur par défaut" + +#: etc/initialdata:272 +msgid "Default correspondence template" +msgstr "Modèle de courrier par défaut" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "Modèle de transaction par défaut" + +#: lib/RT/Transaction_Overlay.pm:694 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "Par défaut: %1/%2 modifié de %3 à %4" + +#: html/User/Delegation.html:24 html/User/Delegation.html:27 +msgid "Delegate rights" +msgstr "Déléguer les droits" + +#: lib/RT/System.pm:62 +msgid "Delegate specific rights which have been granted to you." +msgstr "Déléguer des droits spécifiques qui vous ont été accordés" + +#: lib/RT/System.pm:62 +msgid "DelegateRights" +msgstr "DéléguerDroits" + +#: html/User/Elements/Tabs:37 +msgid "Delegation" +msgstr "Délégation" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "Supprimer" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Delete tickets" +msgstr "Supprimer des tickets" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "DeleteTicket" +msgstr "SupprimerTicket" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "Effacer cet objet pourrait briser l'intégrité référentielle" + +#: lib/RT/Queue_Overlay.pm:293 +msgid "Deleting this object would break referential integrity" +msgstr "Effacer cet objet briserait l'intégrité référentielle" + +#: lib/RT/User_Overlay.pm:499 +msgid "Deleting this object would violate referential integrity" +msgstr "Effacer cet objet violerait l'intégrité référentielle" + +#: NOT FOUND IN SOURCE +msgid "Deleting this object would violate referential integrity." +msgstr "Effacer cet objet violerait l'intégrité référentielle" + +#: NOT FOUND IN SOURCE +msgid "Deleting this object would violate referential integrity. That's bad." +msgstr "Effacer cet objet violerait l'intégrité référentielle, c'est serait facheux!" + +#: html/Approvals/Elements/Approve:44 +msgid "Deny" +msgstr "Refuser" + +#: html/Ticket/Create.html:180 html/Ticket/Elements/BulkLinks:34 html/Ticket/Elements/EditLinks:122 html/Ticket/Elements/EditLinks:46 html/Ticket/Elements/ShowDependencies:31 html/Ticket/Elements/ShowLinks:36 +msgid "Depended on by" +msgstr "En dépend" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "Dépendances : \\n" + +#: lib/RT/Transaction_Overlay.pm:626 +#. ($value) +msgid "Dependency by %1 added" +msgstr "Ajout de la dépendance par %1" + +#: lib/RT/Transaction_Overlay.pm:655 +#. ($value) +msgid "Dependency by %1 deleted" +msgstr "Suppression de la dépendance par %1" + +#: lib/RT/Transaction_Overlay.pm:624 +#. ($value) +msgid "Dependency on %1 added" +msgstr "Ajout de la dépendance de %1" + +#: lib/RT/Transaction_Overlay.pm:653 +#. ($value) +msgid "Dependency on %1 deleted" +msgstr "Suppression de la dépendance de %1" + +#: html/Elements/SelectLinkType:26 html/Ticket/Create.html:179 html/Ticket/Elements/BulkLinks:30 html/Ticket/Elements/EditLinks:118 html/Ticket/Elements/EditLinks:35 html/Ticket/Elements/ShowDependencies:24 html/Ticket/Elements/ShowLinks:26 +msgid "Depends on" +msgstr "Dépend de" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "DépendDe" + +#: html/Elements/SelectSortOrder:34 +msgid "Descending" +msgstr "Décroissant" + +#: html/SelfService/Create.html:72 html/Ticket/Create.html:118 +msgid "Describe the issue below" +msgstr "Décrivez la situation ci-dessous" + +#: html/Admin/Elements/AddCustomFieldValue:35 html/Admin/Elements/EditCustomField:38 html/Admin/Elements/EditScrip:33 html/Admin/Elements/ModifyQueue:35 html/Admin/Elements/ModifyTemplate:35 html/Admin/Groups/Modify.html:48 html/Admin/Queues/Modify.html:47 html/Elements/SelectGroups:26 html/User/Groups/Modify.html:48 +msgid "Description" +msgstr "Description" + +#: NOT FOUND IN SOURCE +msgid "Details" +msgstr "Détails" + +#: html/Ticket/Elements/Tabs:84 +msgid "Display" +msgstr "Afficher" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "Display Access Control List" +msgstr "Afficher la liste des droits" + +#: lib/RT/Queue_Overlay.pm:74 +msgid "Display Scrip templates for this queue" +msgstr "Afficher les modèles de Scrips pour cette queue" + +#: lib/RT/Queue_Overlay.pm:77 +msgid "Display Scrips for this queue" +msgstr "Afficher les Scrips pour cette queue" + +#: html/Ticket/Elements/ShowHistory:34 +msgid "Display mode" +msgstr "Mode d'affichage" + +#: NOT FOUND IN SOURCE +msgid "Display ticket #%1" +msgstr "Afficher le ticket n°%1" + +#: lib/RT/System.pm:53 +msgid "Do anything and everything" +msgstr "Faire tout et n'importe quoi" + +#: html/Elements/Refresh:29 +msgid "Don't refresh this page." +msgstr "Ne pas rafraîchir cette page." + +#: html/Search/Elements/PickRestriction:113 +msgid "Don't show search results" +msgstr "Ne pas afficher le résultat de la recherche" + +#: html/Ticket/Elements/ShowTransaction:91 +msgid "Download" +msgstr "Télécharger" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:44 html/Ticket/Elements/ShowDates:42 lib/RT/Ticket_Overlay.pm:1207 +msgid "Due" +msgstr "Echéance" + +#: NOT FOUND IN SOURCE +msgid "Due date '%1' could not be parsed" +msgstr "Date d'échéance '%1' n'est pas comprise" + +#: bin/rt-commit-handler:753 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "ERREUR: impossible de charger le ticket '%1' : %2.\\n" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "Modifier" + +#: NOT FOUND IN SOURCE +msgid "Edit Conditions" +msgstr "Modifier les conditions" + +#: html/Admin/Queues/CustomFields.html:44 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "Editer les champs personnalisés pour %1" + +#: html/Search/Bulk.html:143 html/Ticket/ModifyLinks.html:35 +msgid "Edit Relationships" +msgstr "Modifier les relations" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "Modifier les modèles pour la queue %1" + +#: NOT FOUND IN SOURCE +msgid "Edit keywords" +msgstr "Modifier les mots clé" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "Modifier les scrips" + +#: html/Admin/Global/index.html:45 +msgid "Edit system templates" +msgstr "Modifier les modèles système" + +#: NOT FOUND IN SOURCE +msgid "Edit templates for %1" +msgstr "Modifier les modèles pour %1" + +#: html/Admin/Elements/ModifyQueue:24 html/Admin/Queues/Modify.html:118 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "Modifier la configuration de la queue %1" + +#: html/Admin/Elements/ModifyUser:24 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "Modifier la configuration de l'utilisateur %1" + +#: html/Admin/Elements/EditCustomField:90 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "Modifier le ChampPersonnalisé %1" + +#: html/Admin/Groups/Members.html:31 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "Modifier les membres du groupe %1" + +#: html/User/Groups/Members.html:128 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "Modifier les membres du groupe personnel %1" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "Modifie le modèle %1" + +#: lib/RT/Ticket_Overlay.pm:2660 lib/RT/Ticket_Overlay.pm:2738 +msgid "Either base or target must be specified" +msgstr "La base ou la cible doivent être spécifiées" + +#: html/Admin/Users/Modify.html:52 html/Admin/Users/Prefs.html:45 html/Elements/SelectUsers:26 html/Ticket/Elements/AddWatchers:55 html/User/Prefs.html:41 +msgid "Email" +msgstr "Email" + +#: lib/RT/User_Overlay.pm:247 +msgid "Email address in use" +msgstr "Adresse email utilisée" + +#: html/Admin/Elements/ModifyUser:41 +msgid "EmailAddress" +msgstr "EmailAddress" + +#: html/Admin/Elements/ModifyUser:53 +msgid "EmailEncoding" +msgstr "EmailEncoding" + +#: html/Admin/Elements/EditCustomField:50 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "Activé (Décocher cette case désactive ce champ personnalisé)" + +#: html/Admin/Groups/Modify.html:52 html/User/Groups/Modify.html:52 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "Activé (Décocher cette case désactive ce groupe)" + +#: html/Admin/Queues/Modify.html:83 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "Activé (Décocher cette case désactive cette queue)" + +#: html/Admin/Elements/EditCustomFields:98 +msgid "Enabled Custom Fields" +msgstr "Champs personnalisés actifs" + +#: html/Admin/Queues/index.html:55 +msgid "Enabled Queues" +msgstr "Queues actives" + +#: html/Admin/Elements/EditCustomField:106 html/Admin/Groups/Modify.html:116 html/Admin/Queues/Modify.html:140 html/Admin/Users/Modify.html:282 html/User/Groups/Modify.html:116 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "Statut actif %1" + +#: lib/RT/CustomField_Overlay.pm:427 +msgid "Enter multiple values" +msgstr "Entrer plusieurs valeurs" + +#: lib/RT/CustomField_Overlay.pm:424 +msgid "Enter one value" +msgstr "Entrer une seule valeur" + +#: html/Search/Bulk.html:144 html/Ticket/Elements/EditLinks:111 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "Saisir les tickets ou URIs pour y lier les tickets. Séparer les saisies par des espaces." + +#: html/Elements/Login:39 html/SelfService/Error.html:24 html/SelfService/Error.html:25 +msgid "Error" +msgstr "Erreur" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "Erreur à l'ajout de l'observateur" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "Erreur de paramètres pour Queue->AddWatcher" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "Erreur de paramètres pour Queue->DelWatcher" + +#: lib/RT/Ticket_Overlay.pm:1392 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "Erreur de paramètres pour Ticket->AddWatcher" + +#: lib/RT/Ticket_Overlay.pm:1549 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "Erreur de paramètres pour Ticket->DelWatcher" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "Tout le monde" + +#: bin/rt-crontool:193 +msgid "Example:" +msgstr "Exemple:" + +#: html/Admin/Elements/ModifyUser:63 +msgid "ExternalAuthId" +msgstr "ExternalAuthId" + +#: html/Admin/Elements/ModifyUser:57 +msgid "ExternalContactInfoId" +msgstr "ExternalContactInfoId" + +#: html/Admin/Users/Modify.html:72 +msgid "Extra info" +msgstr "Info supplémentaire" + +#: lib/RT/User_Overlay.pm:363 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "Recherche du pseudo groupe d'utilisateurs 'Priviligiés' infructueuse" + +#: lib/RT/User_Overlay.pm:370 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "Recherche du pseudo groupe d'utilisateurs 'non-privilégiés' infructueuse" + +#: bin/rt-crontool:137 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "Echec de chargement du module %1. (%2)" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "Fév." + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "Février" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "Fin" + +#: html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:58 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "Priorité finale" + +#: lib/RT/Ticket_Overlay.pm:1198 +msgid "FinalPriority" +msgstr "PrioritéFinale" + +#: html/Admin/Queues/People.html:60 html/Ticket/Elements/EditPeople:33 +msgid "Find group whose" +msgstr "Trouver un groupe dont" + +#: NOT FOUND IN SOURCE +msgid "Find new/open tickets" +msgstr "Accéder aux tickets en cours" + +#: html/Admin/Queues/People.html:56 html/Admin/Users/index.html:45 html/Ticket/Elements/EditPeople:29 +msgid "Find people whose" +msgstr "Trouver les gens dont" + +#: html/Search/Listing.html:107 +msgid "Find tickets" +msgstr "Rechercher des tickets" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "Terminer l'approbation" + +#: html/Ticket/Elements/Tabs:57 +msgid "First" +msgstr "Premier" + +#: html/Search/Listing.html:40 +msgid "First page" +msgstr "Première page" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "Foo Bar Baz" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "Foo!" + +#: html/Search/Bulk.html:86 +msgid "Force change" +msgstr "Forcer la modification" + +#: html/Search/Listing.html:105 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "%quant(%1,ticket) trouvés" + +#: lib/RT/Interface/Web.pm:904 +msgid "Found Object" +msgstr "Objet trouvé" + +#: html/Admin/Elements/ModifyUser:43 +msgid "FreeformContactInfo" +msgstr "SaisieLibreInfoContact" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformMultiple" +msgstr "SaisieLibreMultiple" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "FreeformSingle" +msgstr "SaisieLibreSimple" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "Ven." + +#: html/Ticket/Elements/ShowHistory:40 html/Ticket/Elements/ShowHistory:50 +msgid "Full headers" +msgstr "En-têtes complets" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "Obtention de l'utilisateur courant depuis une signature pgp\\n" + +#: lib/RT/Transaction_Overlay.pm:593 +#. ($New->Name) +msgid "Given to %1" +msgstr "Donné à %1" + +#: html/Admin/Elements/Tabs:40 html/Admin/index.html:37 +msgid "Global" +msgstr "Global" + +#: NOT FOUND IN SOURCE +msgid "Global Keyword Selections" +msgstr "Mots clé globaux" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "Scrips globaux" + +#: html/Admin/Elements/SelectTemplate:37 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "Modèle global: %1" + +#: html/Admin/Elements/EditCustomFields:74 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:40 +msgid "Go!" +msgstr "Go!" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "Signature pgp valide pour %1\\n" + +#: html/Search/Listing.html:49 +msgid "Goto page" +msgstr "Aller à la page" + +#: html/Elements/GotoTicket:24 html/SelfService/Elements/GotoTicket:24 +msgid "Goto ticket" +msgstr "Aller au ticket" + +#: NOT FOUND IN SOURCE +msgid "Grand" +msgstr "Accorder" + +#: html/Ticket/Elements/AddWatchers:45 html/User/Elements/DelegateRights:77 +msgid "Group" +msgstr "Groupe" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "Groupe %1 %2 : %3" + +#: 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 "Droits de groupe" + +#: lib/RT/Group_Overlay.pm:964 +msgid "Group already has member" +msgstr "Le groupe a déjà un membre" + +#: NOT FOUND IN SOURCE +msgid "Group could not be created." +msgstr "Le groupe n'a pas pu être créé" + +#: html/Admin/Groups/Modify.html:76 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "Le groupe %1 n'a pu être créé" + +#: lib/RT/Group_Overlay.pm:496 +msgid "Group created" +msgstr "Groupe ajouté" + +#: lib/RT/Group_Overlay.pm:1132 +msgid "Group has no such member" +msgstr "Un tel membre n'appartient pas au groupe" + +#: lib/RT/Group_Overlay.pm:944 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1446 lib/RT/Ticket_Overlay.pm:1524 +msgid "Group not found" +msgstr "Groupe introuvable" + +#: NOT FOUND IN SOURCE +msgid "Group not found.\\n" +msgstr "Groupe introuvable.\\n" + +#: NOT FOUND IN SOURCE +msgid "Group not specified.\\n" +msgstr "Groupe non spécifié.\\n" + +#: 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 "Groupes" + +#: lib/RT/Group_Overlay.pm:970 +msgid "Groups can't be members of their members" +msgstr "Les groupes ne peuvent pas être membres de leurs membres" + +#: lib/RT/Interface/CLI.pm:72 lib/RT/Interface/CLI.pm:72 +msgid "Hello!" +msgstr "Bonjour!" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "Bonjour, %1" + +#: html/Ticket/Elements/ShowHistory:29 html/Ticket/Elements/Tabs:87 +msgid "History" +msgstr "Historique" + +#: html/Admin/Elements/ModifyUser:67 +msgid "HomePhone" +msgstr "Téléphone domicile" + +#: html/Elements/Tabs:43 +msgid "Homepage" +msgstr "Page d'accueil" + +#: lib/RT/Base.pm:73 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "J'ai %quant (%1, toupie à béton)" + +#: NOT FOUND IN SOURCE +msgid "I have [quant,_1,concrete mixer]." +msgstr "J'ai %quant (%1, toupie à béton)" + +#: html/Ticket/Elements/ShowBasics:26 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "Identifiant" + +#: html/Admin/Users/Modify.html:43 html/User/Prefs.html:38 +msgid "Identity" +msgstr "Identité" + +#: etc/initialdata:411 etc/upgrade/2.1.71:86 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "Si une approbation est refusée, rejette l'original et supprime les approbations en attente" + +#: bin/rt-crontool:189 +msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." +msgstr "Si cet outil était setgid, un utilisateur local mal intentionné pourrait l'utiliser pour obtenir un access administrateur à 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 "Si vous avez fait une modification, assurez vous de" + +#: lib/RT/Interface/Web.pm:896 +msgid "Illegal value for %1" +msgstr "Valeur incorrecte pour %1" + +#: lib/RT/Interface/Web.pm:899 +msgid "Immutable field" +msgstr "Champ non modifiable" + +#: html/Admin/Elements/EditCustomFields:73 +msgid "Include disabled custom fields in listing." +msgstr "Inclure les champs personnalisés désactivés dans la liste" + +#: html/Admin/Queues/index.html:42 +msgid "Include disabled queues in listing." +msgstr "Afficher les queues inactives." + +#: html/Admin/Users/index.html:46 +msgid "Include disabled users in search." +msgstr "Inclure les utilisateurs désactivés dans le résultat" + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "Priorité initiale" + +#: lib/RT/Ticket_Overlay.pm:1197 lib/RT/Ticket_Overlay.pm:1199 +msgid "InitialPriority" +msgstr "PrioritéInitiale" + +#: lib/RT/ScripAction_Overlay.pm:104 +msgid "Input error" +msgstr "Erreur à l'entrée" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "Votre intéret est noté" + +#: lib/RT/Ticket_Overlay.pm:3866 +msgid "Internal Error" +msgstr "Erreur interne" + +#: lib/RT/Record.pm:142 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "Erreur interne: %1" + +#: lib/RT/Group_Overlay.pm:643 +msgid "Invalid Group Type" +msgstr "Type de groupe invalide" + +#: lib/RT/Principal_Overlay.pm:127 +msgid "Invalid Right" +msgstr "Droit invalide" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "Type invalide" + +#: lib/RT/Interface/Web.pm:901 +msgid "Invalid data" +msgstr "Données invalides" + +#: lib/RT/Ticket_Overlay.pm:457 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "Intervenant invalide, affectation à 'personne'" + +#: lib/RT/Scrip_Overlay.pm:133 lib/RT/Template_Overlay.pm:250 +msgid "Invalid queue" +msgstr "Queue invalide" + +#: 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 "Droit invalide" + +#: lib/RT/Record.pm:117 +#. ($key) +msgid "Invalid value for %1" +msgstr "Queue invalide pour %1" + +#: lib/RT/Ticket_Overlay.pm:3498 +msgid "Invalid value for custom field" +msgstr "Valeur incorrecte pour le champ personnalisé" + +#: lib/RT/Ticket_Overlay.pm:364 +msgid "Invalid value for status" +msgstr "Valeur de statut invalide" + +#: bin/rt-crontool:190 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "Il est extrêmement important que les utilisateurs non authorisés n'aient pas accès à cet outil" + +#: bin/rt-crontool:191 +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 "Il est suggéré de créer un utilisateur unix non privilégié appartenant au bon groupe et ayant accès à RT pour utiliser cet outil" + +#: bin/rt-crontool:162 +msgid "It takes several arguments:" +msgstr "Il faut plusieurs paramètres:" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "Eléments attendant mon approbation" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "Jan." + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "Janvier" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Join or leave this group" +msgstr "Rejoignez ou quittez ce groupe" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "Jul." + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "Juillet" + +#: html/Ticket/Elements/Tabs:98 +msgid "Jumbo" +msgstr "Tout" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "Jun." + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "Juin" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "Mot Clé" + +#: html/Admin/Elements/ModifyUser:51 +msgid "Lang" +msgstr "Lang" + +#: html/Ticket/Elements/Tabs:72 +msgid "Last" +msgstr "Dernier" + +#: html/Ticket/Elements/EditDates:37 html/Ticket/Elements/ShowDates:38 +msgid "Last Contact" +msgstr "Dernier contact" + +#: html/Elements/SelectDateType:28 +msgid "Last Contacted" +msgstr "Date dernier contact" + +#: html/Search/Elements/TicketHeader:40 +msgid "Last Notified" +msgstr "Dernière notification" + +#: html/Elements/SelectDateType:29 +msgid "Last Updated" +msgstr "Date dernière MAJ" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "DernièreMAJ" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "Restant" + +#: html/Admin/Users/Modify.html:82 +msgid "Let this user access RT" +msgstr "Donner accès à RT à cet utilisateur" + +#: html/Admin/Users/Modify.html:86 +msgid "Let this user be granted rights" +msgstr "Autoriser cet utilisateur à recevoir des droits" + +#: NOT FOUND IN SOURCE +msgid "Limiting owner to %1 %2" +msgstr "Limitation des intervenants à %1 %2" + +#: NOT FOUND IN SOURCE +msgid "Limiting queue to %1 %2" +msgstr "Limitation de la queue à %1 %2" + +#: lib/RT/Ticket_Overlay.pm:2752 +msgid "Link already exists" +msgstr "Le lien existe déja" + +#: lib/RT/Ticket_Overlay.pm:2764 +msgid "Link could not be created" +msgstr "Le lien ne peut être ajouté" + +#: lib/RT/Ticket_Overlay.pm:2772 lib/RT/Ticket_Overlay.pm:2784 +#. ($TransString) +msgid "Link created (%1)" +msgstr "Le lien est ajouté (%1)" + +#: lib/RT/Ticket_Overlay.pm:2685 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "Le lien est effacé (%1)" + +#: lib/RT/Ticket_Overlay.pm:2691 +msgid "Link not found" +msgstr "Lien introuvable" + +#: html/Ticket/ModifyLinks.html:24 html/Ticket/ModifyLinks.html:28 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "Lier le ticket n°%1" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "Lier au ticket %1" + +#: html/Ticket/Elements/Tabs:96 +msgid "Links" +msgstr "Relations" + +#: html/Admin/Users/Modify.html:113 html/User/Prefs.html:84 +msgid "Location" +msgstr "Localisation" + +#: lib/RT.pm:162 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "Le répertoire de log %1 est introuvable ou en lecture seule. \\n RT ne peut pas démarrer" + +#: html/Elements/Header:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "Connecté en tant que %1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:35 html/Elements/Login:44 html/Elements/Login:54 +msgid "Login" +msgstr "Connexion" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "Déconnexion" + +#: html/Search/Bulk.html:85 +msgid "Make Owner" +msgstr "Attribuer" + +#: html/Search/Bulk.html:109 +msgid "Make Status" +msgstr "Appliquer Statut" + +#: html/Search/Bulk.html:117 +msgid "Make date Due" +msgstr "Appliquer date d'échéance" + +#: html/Search/Bulk.html:119 +msgid "Make date Resolved" +msgstr "Appliquer date de résolution" + +#: html/Search/Bulk.html:113 +msgid "Make date Started" +msgstr "Appliquer date de début" + +#: html/Search/Bulk.html:111 +msgid "Make date Starts" +msgstr "Appliquer date d'ouverture" + +#: html/Search/Bulk.html:115 +msgid "Make date Told" +msgstr "Appliquer Age" + +#: html/Search/Bulk.html:105 +msgid "Make priority" +msgstr "Appliquer priorité" + +#: html/Search/Bulk.html:107 +msgid "Make queue" +msgstr "Appliquer queue" + +#: html/Search/Bulk.html:103 +msgid "Make subject" +msgstr "Changer le sujet" + +#: html/Admin/index.html:32 +msgid "Manage groups and group membership" +msgstr "Gérer les groupes et leurs membres" + +#: html/Admin/index.html:38 +msgid "Manage properties and configuration which apply to all queues" +msgstr "Gérer les propriétés et configurations générales des queues" + +#: html/Admin/index.html:35 +msgid "Manage queues and queue-specific properties" +msgstr "Gérer les queues et leurs propriétés individuelles" + +#: html/Admin/index.html:29 +msgid "Manage users and passwords" +msgstr "Gérer les utilisateurs et mots de passe" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "Mar." + +#: NOT FOUND IN SOURCE +msgid "March" +msgstr "Mars" + +#: NOT FOUND IN SOURCE +msgid "May" +msgstr "Mai" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "Mai." + +#: lib/RT/Transaction_Overlay.pm:635 +#. ($value) +msgid "Member %1 added" +msgstr "Membre %1 ajouté" + +#: lib/RT/Transaction_Overlay.pm:664 +#. ($value) +msgid "Member %1 deleted" +msgstr "Membre %1 supprimé" + +#: lib/RT/Group_Overlay.pm:981 +msgid "Member added" +msgstr "Membre ajouté" + +#: lib/RT/Group_Overlay.pm:1139 +msgid "Member deleted" +msgstr "Membre supprimé" + +#: lib/RT/Group_Overlay.pm:1143 +msgid "Member not deleted" +msgstr "Membre non supprimé" + +#: html/Elements/SelectLinkType:25 +msgid "Member of" +msgstr "Membre de" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "MembreDe" + +#: html/Admin/Elements/GroupTabs:41 html/User/Elements/GroupTabs:41 +msgid "Members" +msgstr "Membres" + +#: lib/RT/Transaction_Overlay.pm:633 +#. ($value) +msgid "Membership in %1 added" +msgstr "Appartenance à %1 ajoutée" + +#: lib/RT/Transaction_Overlay.pm:662 +#. ($value) +msgid "Membership in %1 deleted" +msgstr "Appartenance à %1 supprimée" + +#: lib/RT/Ticket_Overlay.pm:2941 +msgid "Merge Successful" +msgstr "Fusion réussie" + +#: lib/RT/Ticket_Overlay.pm:2861 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "Echec de fusion. Ne peut appliquer EffectiveId" + +#: html/Ticket/Elements/BulkLinks:26 html/Ticket/Elements/EditLinks:114 +msgid "Merge into" +msgstr "Fusionner dans" + +#: html/Search/Bulk.html:137 html/Ticket/Update.html:100 +msgid "Message" +msgstr "Message" + +#: lib/RT/Interface/Web.pm:903 +msgid "Missing a primary key?: %1" +msgstr "Clé primaire manquante? : %1" + +#: html/Admin/Users/Modify.html:168 html/User/Prefs.html:53 +msgid "Mobile" +msgstr "Mobile" + +#: html/Admin/Elements/ModifyUser:71 +msgid "MobilePhone" +msgstr "MobilePhone" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Modify Access Control List" +msgstr "Modifier la liste de droits" + +#: NOT FOUND IN SOURCE +msgid "Modify Custom Field %1" +msgstr "Modifier champ personnalisé %1" + +#: html/Admin/Global/CustomFields.html:43 html/Admin/Global/index.html:50 +msgid "Modify Custom Fields which apply to all queues" +msgstr "Modifier les champs personnalisés globaux" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Modify Scrip templates for this queue" +msgstr "Modifier les modèles de Scrips pour cette queue" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Modify Scrips for this queue" +msgstr "Modifier les Scrips pour cette queue" + +#: NOT FOUND IN SOURCE +msgid "Modify System ACLS" +msgstr "Modifier ACLs système" + +#: NOT FOUND IN SOURCE +msgid "Modify Template %1" +msgstr "Modifier le modèle %1" + +#: html/Admin/Queues/CustomField.html:44 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "Modifier un champ personnalisé pour la queue %1" + +#: html/Admin/Global/CustomField.html:52 +msgid "Modify a CustomField which applies to all queues" +msgstr "Modifier un champ personnalisé global" + +#: html/Admin/Queues/Scrip.html:53 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "Modifier le scrip pour la queue %1" + +#: html/Admin/Global/Scrip.html:47 +msgid "Modify a scrip which applies to all queues" +msgstr "Modiier le scrip qui s'applique à toutes les queues" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "Modifier les dates pur n°%1" + +#: html/Ticket/ModifyDates.html:24 html/Ticket/ModifyDates.html:28 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "Modifier les dates pour n°%1" + +#: html/Ticket/ModifyDates.html:34 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "Modifier les dates du ticket n°%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 "Modifier les droits de groupe globaux" + +#: html/Admin/Global/GroupRights.html:32 +msgid "Modify global group rights." +msgstr "Modifier les droits de groupe globaux" + +#: NOT FOUND IN SOURCE +msgid "Modify global rights for groups" +msgstr "Modifier les droits globaux des groupes" + +#: NOT FOUND IN SOURCE +msgid "Modify global rights for users" +msgstr "Modifier les droits globaux des utilisateurs" + +#: NOT FOUND IN SOURCE +msgid "Modify global scrips" +msgstr "Modifier les scrips globaux" + +#: html/Admin/Global/UserRights.html:24 html/Admin/Global/UserRights.html:27 html/Admin/Global/index.html:59 +msgid "Modify global user rights" +msgstr "Modifier les droits utilisateurs globaux" + +#: html/Admin/Global/UserRights.html:32 +msgid "Modify global user rights." +msgstr "Modifier les droits utilisateurs globaux" + +#: lib/RT/Group_Overlay.pm:145 +msgid "Modify group metadata or delete group" +msgstr "Modifier les métadonnées ou supprimer le groupe" + +#: 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 "Modifier les droits du groupe %1" + +#: html/Admin/Queues/GroupRights.html:24 html/Admin/Queues/GroupRights.html:28 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "Modifier les droits de groupe pour la queue %1" + +#: lib/RT/Group_Overlay.pm:147 +msgid "Modify membership roster for this group" +msgstr "Modifier le membership roster pour ce groupe" + +#: lib/RT/System.pm:60 +msgid "Modify one's own RT account" +msgstr "Modifier son propre profile RT" + +#: html/Admin/Queues/People.html:24 html/Admin/Queues/People.html:28 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "Modifier les utilisateurs de la queue %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 "Modifier les utilisateurs du ticket n°%1" + +#: html/Admin/Queues/Scrips.html:45 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "Modifier les scrips de la queue %1" + +#: html/Admin/Global/Scrips.html:43 html/Admin/Global/index.html:41 +msgid "Modify scrips which apply to all queues" +msgstr "Modifier les scrips s'appliquant à toutes les queues" + +#: 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 "Modifier le modèle %1" + +#: html/Admin/Global/Templates.html:43 +msgid "Modify templates which apply to all queues" +msgstr "Modifier les modèles globaux" + +#: html/Admin/Groups/Modify.html:86 html/User/Groups/Modify.html:85 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "Modifier le groupe %1" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify the queue watchers" +msgstr "Modifier les observateurs de la queue" + +#: html/Admin/Users/Modify.html:235 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "Modifier l'utilisateur %1" + +#: html/Ticket/ModifyAll.html:36 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "Modifier le ticket # %1" + +#: html/Ticket/Modify.html:24 html/Ticket/Modify.html:27 html/Ticket/Modify.html:33 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "Modifier le ticket n°%1" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Modify tickets" +msgstr "Modifier les tickets" + +#: 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 "Modifier les droits utilisateurs pour le groupe %1" + +#: html/Admin/Queues/UserRights.html:24 html/Admin/Queues/UserRights.html:28 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "Modifier les droits utilisateurs pour la queue %1" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "Modifier les observateurs dela queue '%1'" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ModifyACL" +msgstr "ModifierACL" + +#: lib/RT/Group_Overlay.pm:148 +msgid "ModifyOwnMembership" +msgstr "ModifierPropresAppartenances" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyQueueWatchers" +msgstr "ModifierObservateurs" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ModifyScrips" +msgstr "ModifierScrips" + +#: lib/RT/System.pm:60 +msgid "ModifySelf" +msgstr "ModifierDonnéesPerso" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "ModifyTemplate" +msgstr "ModifierModèle" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "ModifyTicket" +msgstr "ModifierTicket" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "Lun." + +#: html/Ticket/Elements/ShowRequestor:41 +#. ($name) +msgid "More about %1" +msgstr "Plus d'info sur %1" + +#: html/Admin/Elements/EditCustomFields:60 +msgid "Move down" +msgstr "Aller en bas" + +#: html/Admin/Elements/EditCustomFields:52 +msgid "Move up" +msgstr "Aller en haut" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Multiple" +msgstr "Multiple" + +#: lib/RT/User_Overlay.pm:238 +msgid "Must specify 'Name' attribute" +msgstr "Attribut 'Nom' obligatoire" + +#: html/SelfService/Elements/MyRequests:48 +#. ($friendly_status) +msgid "My %1 tickets" +msgstr "Mes %1 tickets" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "Mes approbations" + +#: html/Approvals/index.html:24 html/Approvals/index.html:25 +msgid "My approvals" +msgstr "Mes approbations" + +#: html/Admin/Elements/AddCustomFieldValue:31 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/ModifyTemplate:27 html/Admin/Elements/ModifyUser:29 html/Admin/Groups/Modify.html:43 html/Elements/SelectGroups:25 html/Elements/SelectUsers:27 html/User/Groups/Modify.html:43 +msgid "Name" +msgstr "Nom" + +#: lib/RT/User_Overlay.pm:245 +msgid "Name in use" +msgstr "Nom utilisé" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "Approbation de l'administrateur système nécessaire" + +#: html/Ticket/Elements/ShowDates:51 +msgid "Never" +msgstr "Jamais" + +#: html/Elements/Quicksearch:29 +msgid "New" +msgstr "Nouveau" + +#: html/Admin/Elements/ModifyUser:31 html/Admin/Users/Modify.html:92 html/User/Prefs.html:64 +msgid "New Password" +msgstr "Nouveau mot de passe" + +#: etc/initialdata:317 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "Nouvelles approbations en attente" + +#: html/Ticket/Elements/EditLinks:110 +msgid "New Relationships" +msgstr "Nouvelles relations" + +#: html/Ticket/Elements/Tabs:35 +msgid "New Search" +msgstr "Nouvelle recherche" + +#: html/Admin/Global/CustomField.html:40 html/Admin/Global/CustomFields.html:38 html/Admin/Queues/CustomField.html:51 html/Admin/Queues/CustomFields.html:39 +msgid "New custom field" +msgstr "Nouveau champ personnalisé" + +#: html/Admin/Elements/GroupTabs:53 html/User/Elements/GroupTabs:51 +msgid "New group" +msgstr "Nouveau groupe" + +#: html/SelfService/Prefs.html:31 +msgid "New password" +msgstr "Nouveau mot de passe" + +#: lib/RT/User_Overlay.pm:764 +msgid "New password notification sent" +msgstr "Notification de nouveau mot de passe envoyée" + +#: html/Admin/Elements/QueueTabs:69 +msgid "New queue" +msgstr "Nouvelle queue" + +#: NOT FOUND IN SOURCE +msgid "New request" +msgstr "Nouvelle demande" + +#: html/Admin/Elements/SelectRights:41 +msgid "New rights" +msgstr "Nouveaux droits" + +#: 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 "Nouveau scrip" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "Nouvelle recherche" + +#: 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 "Nouveau modèle" + +#: html/SelfService/Elements/Tabs:47 +msgid "New ticket" +msgstr "Nouveau ticket" + +#: lib/RT/Ticket_Overlay.pm:2828 +msgid "New ticket doesn't exist" +msgstr "Nouveau ticket inconnu" + +#: html/Admin/Elements/UserTabs:51 +msgid "New user" +msgstr "Nouvel utilisateur" + +#: html/Admin/Elements/CreateUserCalled:25 +msgid "New user called" +msgstr "Nouvel utilisateur appelé" + +#: html/Admin/Queues/People.html:54 html/Ticket/Elements/EditPeople:28 +msgid "New watchers" +msgstr "Nouveaux observateurs" + +#: html/Admin/Users/Prefs.html:41 +msgid "New window setting" +msgstr "Nouveaux paramètres d'affichage" + +#: html/Ticket/Elements/Tabs:68 +msgid "Next" +msgstr "Suivant" + +#: html/Search/Listing.html:47 +msgid "Next page" +msgstr "Page suivante" + +#: html/Admin/Elements/ModifyUser:49 +msgid "NickName" +msgstr "Surnom" + +#: html/Admin/Users/Modify.html:62 html/User/Prefs.html:45 +msgid "Nickname" +msgstr "Surnom" + +#: html/Admin/Elements/EditCustomField:89 html/Admin/Elements/EditCustomFields:104 +msgid "No CustomField" +msgstr "Pas de CustomField" + +#: html/Admin/Groups/GroupRights.html:83 html/Admin/Groups/UserRights.html:70 +msgid "No Group defined" +msgstr "Aucun groupe défini" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:67 +msgid "No Queue defined" +msgstr "Aucune queue définie" + +#: bin/rt-crontool:55 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "Aucun utilisateur RT trouvé. Merci de consulter votre administrateur RT" + +#: html/Admin/Global/Template.html:78 html/Admin/Queues/Template.html:75 +msgid "No Template" +msgstr "Pas de modèle" + +#: bin/rt-commit-handler:763 +msgid "No Ticket specified. Aborting ticket " +msgstr "Aucun ticket spécifié. Annulation de ticket" + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "Aucun ticket spécifié. Annulation des modifications de tickets\\n\\n" + +#: html/Approvals/Elements/Approve:45 +msgid "No action" +msgstr "Pas d'action" + +#: lib/RT/Interface/Web.pm:898 +msgid "No column specified" +msgstr "Aucune colonne spécifiée" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "Commande introuvable\\n" + +#: html/Elements/ViewUser:35 html/Ticket/Elements/ShowRequestor:44 +msgid "No comment entered about this user" +msgstr "Pas de commentaires concernant cet utilisateur" + +#: lib/RT/Ticket_Overlay.pm:2220 lib/RT/Ticket_Overlay.pm:2288 +msgid "No correspondence attached" +msgstr "Pas de texte dans le courrier" + +#: lib/RT/Action/Generic.pm:149 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 "Aucune description disponible pour %1" + +#: lib/RT/Users_Overlay.pm:150 +msgid "No group specified" +msgstr "Aucun groupe spécifié" + +#: lib/RT/User_Overlay.pm:982 +msgid "No password set" +msgstr "Pas de mot de passe configuré" + +#: lib/RT/Queue_Overlay.pm:260 +msgid "No permission to create queues" +msgstr "Permission refusée pour la création de queue" + +#: lib/RT/Ticket_Overlay.pm:360 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "Vous n'êtes pas autorisé à créer un ticket dans cette queue '%1'" + +#: lib/RT/User_Overlay.pm:211 +msgid "No permission to create users" +msgstr "Permission refusée pour la création d'utilisateurs" + +#: html/SelfService/Display.html:117 +msgid "No permission to display that ticket" +msgstr "Pas de permission pour afficher ce ticket" + +#: html/SelfService/Update.html:51 +msgid "No permission to view update ticket" +msgstr "Pas de permission pour afficher le ticket mis à jour" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1505 +msgid "No principal specified" +msgstr "Aucun groupe/utilisateur spécifié" + +#: html/Admin/Queues/People.html:153 html/Admin/Queues/People.html:163 +msgid "No principals selected." +msgstr "Aucun groupe/utilisateur sélectionné" + +#: html/Admin/Queues/index.html:34 +msgid "No queues matching search criteria found." +msgstr "Pas de queue correspondant aux critères de recherche" + +#: html/Admin/Elements/SelectRights:80 +msgid "No rights found" +msgstr "Aucun droit trouvé" + +#: html/Admin/Elements/SelectRights:32 +msgid "No rights granted." +msgstr "Aucun droit accordé" + +#: html/Search/Bulk.html:160 +msgid "No search to operate on." +msgstr "Pas de critère de recherche." + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "Aucun numéro de ticket spécifié." + +#: lib/RT/Transaction_Overlay.pm:478 lib/RT/Transaction_Overlay.pm:516 +msgid "No transaction type specified" +msgstr "Aucun type de transaction spécifié." + +#: NOT FOUND IN SOURCE +msgid "No user or email address specified" +msgstr "Aucun utilisateur ou adresse email spécifié" + +#: html/Admin/Users/index.html:35 +msgid "No users matching search criteria found." +msgstr "Aucun utilisateur ne correspond aux critères de recherche." + +#: bin/rt-commit-handler:643 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "Aucun utilisateur RT valide trouvé. Gestionnaire de cvs RT inaccessible. Merci de contacter votre administrateur RT.\\n" + +#: lib/RT/Interface/Web.pm:895 +msgid "No value sent to _Set!\\n" +msgstr "Aucune valeur envoyée à _Set!\\n" + +#: html/Search/Elements/TicketRow:36 +msgid "Nobody" +msgstr "Personne" + +#: lib/RT/Interface/Web.pm:900 +msgid "Nonexistant field?" +msgstr "Champ inexistant?" + +#: NOT FOUND IN SOURCE +msgid "Not logged in" +msgstr "Non loggé" + +#: html/Elements/Header:59 +msgid "Not logged in." +msgstr "Non connecté" + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "Non renseigné" + +#: html/NoAuth/Reminder.html:26 +msgid "Not yet implemented." +msgstr "Fonction pas encore disponible" + +#: NOT FOUND IN SOURCE +msgid "Not yet implemented...." +msgstr "Fonction pas encore disponible..." + +#: html/Approvals/Elements/Approve:48 +msgid "Notes" +msgstr "Notes" + +#: lib/RT/User_Overlay.pm:767 +msgid "Notification could not be sent" +msgstr "Impossible d'envoyer la notification" + +#: etc/initialdata:93 +msgid "Notify AdminCcs" +msgstr "Avertir les AdminCCs" + +#: etc/initialdata:89 +msgid "Notify AdminCcs as Comment" +msgstr "Avertir les AdminCCs par un commentaire" + +#: etc/initialdata:120 +msgid "Notify Other Recipients" +msgstr "Avertir les autres destinataires" + +#: etc/initialdata:116 +msgid "Notify Other Recipients as Comment" +msgstr "Avertir les autres destinataires par un commentaire" + +#: etc/initialdata:85 +msgid "Notify Owner" +msgstr "Avertir l'intervenant" + +#: etc/initialdata:81 +msgid "Notify Owner as Comment" +msgstr "Avertir l'intervenant par un commentaire" + +#: etc/initialdata:361 +msgid "Notify Owner of their rejected ticket" +msgstr "Avertir l'Intervenant du rejet de son ticket" + +#: etc/initialdata:350 +msgid "Notify Owner of their ticket has been approved by all approvers" +msgstr "Avertir l'Intervenant de l'approbation de son ticket par tous les approbateurs" + +#: etc/initialdata:338 +msgid "Notify Owner of their ticket has been approved by some approver" +msgstr "Avertir l'Intervenant de l'approbation de son ticket par un des approbateurs" + +#: etc/initialdata:319 etc/upgrade/2.1.71:17 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "Avertir les intervenants et les AdminCCs de nouveaux éléments attendant leur approbation" + +#: etc/initialdata:77 +msgid "Notify Requestors" +msgstr "Avertir les demandeurs" + +#: etc/initialdata:103 +msgid "Notify Requestors and Ccs" +msgstr "Avertir les demandeurs et les Ccs" + +#: etc/initialdata:98 +msgid "Notify Requestors and Ccs as Comment" +msgstr "Avertir les demandeurs et les CC par un commentaire" + +#: etc/initialdata:112 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "Avertir les demandeurs, CCs et AdminCCs" + +#: etc/initialdata:108 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "Avertir les demandeurs, CCs et AdminCCs par un commentaire" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "Nov." + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "Novembre" + +#: lib/RT/Record.pm:156 +msgid "Object could not be created" +msgstr "L'objet n'a pas pu être ajouté" + +#: lib/RT/Record.pm:175 +msgid "Object created" +msgstr "Objet ajouté" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "Oct." + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "Octobre" + +#: html/Elements/SelectDateRelation:34 +msgid "On" +msgstr "Le" + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "Lors d'un commentaire" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "Lors d'un courrier" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "Lors d'une création" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "Lors d'un changement d'intervenant" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "Lors d'un changement de queue" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "Lors de la résolution/clôture" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "Lors d'un changement de statut" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "Lors d'une transaction" + +#: 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 "Ne montrer que les approbations pour les demandes créées après %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 "Ne montrer que les approbations pour les demandes créées avant %1" + +#: html/Elements/Quicksearch:30 +msgid "Open" +msgstr "Ouvert" + +#: html/Ticket/Elements/Tabs:135 +msgid "Open it" +msgstr "Ouvrir" + +#: NOT FOUND IN SOURCE +msgid "Open requests" +msgstr "Ouvrir les demandes" + +#: html/SelfService/Elements/Tabs:41 +msgid "Open tickets" +msgstr "Ouvrir les tickets" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in a new window" +msgstr "Ouvrir les tickets (depuis une liste) dans une nouvelle fenêtre." + +#: html/Admin/Users/Prefs.html:39 +msgid "Open tickets (from listing) in another window" +msgstr "Ouvrir les tickets (depuis une liste) dans une autre fenêtre." + +#: etc/initialdata:132 +msgid "Open tickets on correspondence" +msgstr "Ouvrir les tickets lors d'une correspondance" + +#: html/Search/Elements/PickRestriction:100 +msgid "Ordering and sorting" +msgstr "Ranger et classer" + +#: html/Admin/Elements/ModifyUser:45 html/Admin/Users/Modify.html:116 html/Elements/SelectUsers:28 html/User/Prefs.html:85 +msgid "Organization" +msgstr "Organisation" + +#: html/Approvals/Elements/Approve:32 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "Ticket source: n°%1" + +#: html/Admin/Elements/ModifyQueue:54 html/Admin/Queues/Modify.html:68 +msgid "Over time, priority moves toward" +msgstr "Temps dépassé, priorité déplacée" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Own tickets" +msgstr "Tickets propres" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "OwnTicket" +msgstr "PrendreTicket" + +#: etc/initialdata:38 html/Elements/MyRequests:31 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:62 lib/RT/ACE_Overlay.pm:85 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "Intervenant" + +#: NOT FOUND IN SOURCE +msgid "Owner changed from %1 to %2" +msgstr "Intervenant changé de %1 en %2" + +#: lib/RT/Transaction_Overlay.pm:582 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "Intervenant forcé de %1 à %2" + +#: html/Search/Elements/PickRestriction:30 +msgid "Owner is" +msgstr "L'intervenant est" + +#: html/Admin/Users/Modify.html:173 html/User/Prefs.html:55 +msgid "Pager" +msgstr "Bipeur" + +#: html/Admin/Elements/ModifyUser:73 +msgid "PagerPhone" +msgstr "PagerPhone" + +#: NOT FOUND IN SOURCE +msgid "Parent" +msgstr "" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/BulkLinks:38 html/Ticket/Elements/EditLinks:126 html/Ticket/Elements/EditLinks:57 html/Ticket/Elements/ShowLinks:46 +msgid "Parents" +msgstr "Parents" + +#: html/Elements/Login:52 html/User/Prefs.html:60 +msgid "Password" +msgstr "Mot de passe" + +#: html/NoAuth/Reminder.html:24 +msgid "Password Reminder" +msgstr "Pense-bête pour votre mot de passe" + +#: lib/RT/User_Overlay.pm:228 lib/RT/User_Overlay.pm:985 +msgid "Password too short" +msgstr "Mot de passe trop court" + +#: html/Admin/Users/Modify.html:290 html/User/Prefs.html:171 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "Mot de passe: %1" + +#: html/Admin/Users/Modify.html:292 +msgid "Passwords do not match." +msgstr "Les mots de passes sont différents" + +#: html/User/Prefs.html:173 +msgid "Passwords do not match. Your password has not been changed" +msgstr "Les mots de passe sont différents. Votre mot de passe n'a pas été modifié" + +#: html/Ticket/Elements/ShowSummary:44 html/Ticket/Elements/Tabs:95 html/Ticket/ModifyAll.html:50 +msgid "People" +msgstr "Personnes" + +#: etc/initialdata:125 +msgid "Perform a user-defined action" +msgstr "Réaliser une action définie par l'utilisateur" + +#: 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/CurrentUser.pm:82 lib/RT/CurrentUser.pm:91 lib/RT/CustomField_Overlay.pm:100 lib/RT/CustomField_Overlay.pm:201 lib/RT/CustomField_Overlay.pm:233 lib/RT/CustomField_Overlay.pm:511 lib/RT/CustomField_Overlay.pm:90 lib/RT/Group_Overlay.pm:1094 lib/RT/Group_Overlay.pm:1098 lib/RT/Group_Overlay.pm:1107 lib/RT/Group_Overlay.pm:1158 lib/RT/Group_Overlay.pm:1162 lib/RT/Group_Overlay.pm:1168 lib/RT/Group_Overlay.pm:425 lib/RT/Group_Overlay.pm:517 lib/RT/Group_Overlay.pm:595 lib/RT/Group_Overlay.pm:603 lib/RT/Group_Overlay.pm:700 lib/RT/Group_Overlay.pm:704 lib/RT/Group_Overlay.pm:710 lib/RT/Group_Overlay.pm:903 lib/RT/Group_Overlay.pm:907 lib/RT/Group_Overlay.pm:920 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:125 lib/RT/Scrip_Overlay.pm:136 lib/RT/Scrip_Overlay.pm:196 lib/RT/Scrip_Overlay.pm:433 lib/RT/Template_Overlay.pm:283 lib/RT/Template_Overlay.pm:87 lib/RT/Template_Overlay.pm:93 lib/RT/Ticket_Overlay.pm:1377 lib/RT/Ticket_Overlay.pm:1387 lib/RT/Ticket_Overlay.pm:1401 lib/RT/Ticket_Overlay.pm:1535 lib/RT/Ticket_Overlay.pm:1544 lib/RT/Ticket_Overlay.pm:1557 lib/RT/Ticket_Overlay.pm:1906 lib/RT/Ticket_Overlay.pm:2044 lib/RT/Ticket_Overlay.pm:2208 lib/RT/Ticket_Overlay.pm:2275 lib/RT/Ticket_Overlay.pm:2634 lib/RT/Ticket_Overlay.pm:2715 lib/RT/Ticket_Overlay.pm:2819 lib/RT/Ticket_Overlay.pm:2834 lib/RT/Ticket_Overlay.pm:3033 lib/RT/Ticket_Overlay.pm:3043 lib/RT/Ticket_Overlay.pm:3048 lib/RT/Ticket_Overlay.pm:3270 lib/RT/Ticket_Overlay.pm:3468 lib/RT/Ticket_Overlay.pm:3630 lib/RT/Ticket_Overlay.pm:3682 lib/RT/Ticket_Overlay.pm:3860 lib/RT/Transaction_Overlay.pm:466 lib/RT/Transaction_Overlay.pm:473 lib/RT/Transaction_Overlay.pm:502 lib/RT/Transaction_Overlay.pm:509 lib/RT/User_Overlay.pm:1079 lib/RT/User_Overlay.pm:1527 lib/RT/User_Overlay.pm:687 lib/RT/User_Overlay.pm:722 lib/RT/User_Overlay.pm:978 +msgid "Permission Denied" +msgstr "Accès refusé" + +#: html/User/Elements/Tabs:34 +msgid "Personal Groups" +msgstr "Groupes personnels" + +#: html/User/Groups/index.html:29 html/User/Groups/index.html:39 +msgid "Personal groups" +msgstr "Groupes personnels" + +#: html/User/Elements/DelegateRights:36 +msgid "Personal groups:" +msgstr "Groupes personnels:" + +#: html/Admin/Users/Modify.html:155 html/User/Prefs.html:48 +msgid "Phone numbers" +msgstr "Numéros de téléphone" + +#: NOT FOUND IN SOURCE +msgid "Placeholder" +msgstr "Paramètre fictif" + +#: html/Elements/Header:51 html/Elements/Tabs:52 html/SelfService/Elements/Tabs:50 html/SelfService/Prefs.html:24 html/User/Prefs.html:24 html/User/Prefs.html:27 +msgid "Preferences" +msgstr "Préférences" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "Préférences" + +#: lib/RT/Action/Generic.pm:159 +msgid "Prepare Stubbed" +msgstr "Préparation interrompue" + +#: html/Ticket/Elements/Tabs:60 +msgid "Prev" +msgstr "Précédent" + +#: html/Search/Listing.html:43 +msgid "Previous page" +msgstr "Page précédente" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "Pri." + +#: 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 "Principal %1 non trouvé" + +#: html/Search/Elements/PickRestriction:53 html/Ticket/Create.html:153 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:38 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "Priorité" + +#: html/Admin/Elements/ModifyQueue:50 html/Admin/Queues/Modify.html:64 +msgid "Priority starts at" +msgstr "La priorité débute à " + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "Privilégié" + +#: html/Admin/Users/Modify.html:270 html/User/Prefs.html:162 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "Statuts privilégiés : %1" + +#: html/Admin/Users/index.html:61 +msgid "Privileged users" +msgstr "Utilisateurs privilégiés" + +#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 +msgid "Pseudogroup for internal use" +msgstr "Pseudo groupe pour usage interne" + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Elements/Quicksearch:28 html/Search/Elements/PickRestriction:45 html/SelfService/Create.html:32 html/Ticket/Create.html:37 html/Ticket/Elements/EditBasics:63 html/Ticket/Elements/ShowBasics:42 html/User/Elements/DelegateRights:79 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "Queue" + +#: 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 "Queue %1 non trouvée" + +#: NOT FOUND IN SOURCE +msgid "Queue '%1' not found\\n" +msgstr "Queue '%1' inconnue\\n" + +#: NOT FOUND IN SOURCE +msgid "Queue Keyword Selections" +msgstr "Sélection des mots clé de queue" + +#: html/Admin/Elements/ModifyQueue:30 html/Admin/Queues/Modify.html:42 +msgid "Queue Name" +msgstr "Nom de la queue" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "Scrips de queue" + +#: lib/RT/Queue_Overlay.pm:264 +msgid "Queue already exists" +msgstr "Queue déjà créée" + +#: lib/RT/Queue_Overlay.pm:273 lib/RT/Queue_Overlay.pm:279 +msgid "Queue could not be created" +msgstr "Impossible de créer la queue" + +#: html/Ticket/Create.html:204 +msgid "Queue could not be loaded." +msgstr "Queue ne pouvant être chargée" + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:283 +msgid "Queue created" +msgstr "Queue créée" + +#: NOT FOUND IN SOURCE +msgid "Queue is not specified." +msgstr "Queue non spécifié" + +#: html/SelfService/Display.html:70 lib/RT/CustomField_Overlay.pm:97 +msgid "Queue not found" +msgstr "Queue inconnue" + +#: html/Admin/Elements/Tabs:37 html/Admin/index.html:34 +msgid "Queues" +msgstr "Queues" + +#: html/Elements/Quicksearch:24 +msgid "Quick search" +msgstr "Recherche rapide" + +#: html/Elements/Login:44 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "RT %1" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "RT %1 pour %2" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." +msgstr "RT %1 from <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:24 html/Admin/index.html:25 +msgid "RT Administration" +msgstr "Administration RT" + +#: NOT FOUND IN SOURCE +msgid "RT Authentication error." +msgstr "Erreur d'authentification RT." + +#: NOT FOUND IN SOURCE +msgid "RT Bounce: %1" +msgstr "Avis de rejet RT: %1" + +#: NOT FOUND IN SOURCE +msgid "RT Configuration error" +msgstr "Erreur de configuration RT" + +#: NOT FOUND IN SOURCE +msgid "RT Critical error. Message not recorded!" +msgstr "Erreur critique RT. Courrier non enregistré !" + +#: html/Elements/Error:41 html/SelfService/Error.html:40 +msgid "RT Error" +msgstr "Erreur RT" + +#: NOT FOUND IN SOURCE +msgid "RT Received mail (%1) from itself." +msgstr "RT a reçu un e-mail (%1) de lui-même." + +#: NOT FOUND IN SOURCE +msgid "RT Recieved mail (%1) from itself." +msgstr "RT a reçu du courrier (%1) de lui même" + +#: NOT FOUND IN SOURCE +msgid "RT Self Service / Closed Tickets" +msgstr "RT Self Service / Tickets résolus" + +#: html/index.html:24 html/index.html:27 +msgid "RT at a glance" +msgstr "RT en un coup d'oeil" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't authenticate you" +msgstr "RT n'a pas réussi à vous identifier" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find requestor via its external database lookup" +msgstr "RT n'a pas pu trouver de demandeur par sa recherche dans une base externe" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find the queue: %1" +msgstr "RT n'a pas trouvé la queue" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "RT n'a pas réussi à valider cette signature PGP. \\n" + +#: html/Elements/PageLayout:85 +#. ($RT::rtname) +msgid "RT for %1" +msgstr "RT pour %1" + +#: NOT FOUND IN SOURCE +msgid "RT for %1: %2" +msgstr "RT pour %1: %2" + +#: NOT FOUND IN SOURCE +msgid "RT has proccessed your commands" +msgstr "RT a exécuté vos commandes" + +#: html/Elements/Login:94 +#. ('2003') +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 est © Copyright 1996-2002 Jesse Vincent <jesse@bestpractical.com>. Distribué sous <a href=\"http://www.gnu.org/copyleft/gpl.html\">Version 2 de la licence générale GNU.</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 est © Copyright 1996-2002 Jesse Vincent <jesse@bestpractical.com>. Distribué sous <a href=\"http://www.gnu.org/copyleft/gpl.html\">Version 2 de la licence générale GNU.</a>" + +#: NOT FOUND IN SOURCE +msgid "RT thinks this message may be a bounce" +msgstr "RT pense que ce courrier peut être un avis de non-distribution" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +msgstr "RT va traiter ce courrier comme s'il n'était pas signé.\\n" + +#: 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 "L'interface d'utilisation de RT par email utilise une authentification PGP. Soit vous n'avez pas signé votre courrier, soit la signature est n'a pas pu être vérifiée" + +#: html/Admin/Users/Modify.html:57 html/Admin/Users/Prefs.html:51 html/User/Prefs.html:43 +msgid "Real Name" +msgstr "Nom" + +#: html/Admin/Elements/ModifyUser:47 +msgid "RealName" +msgstr "RealName" + +#: lib/RT/Transaction_Overlay.pm:631 +#. ($value) +msgid "Reference by %1 added" +msgstr "Ajout d'une référence par %1" + +#: lib/RT/Transaction_Overlay.pm:660 +#. ($value) +msgid "Reference by %1 deleted" +msgstr "Suppression de la référence par %1" + +#: lib/RT/Transaction_Overlay.pm:629 +#. ($value) +msgid "Reference to %1 added" +msgstr "Ajout d'une reference à %1" + +#: lib/RT/Transaction_Overlay.pm:658 +#. ($value) +msgid "Reference to %1 deleted" +msgstr "Suppression d'une reference à %1" + +#: html/Ticket/Create.html:184 html/Ticket/Elements/BulkLinks:50 html/Ticket/Elements/EditLinks:138 html/Ticket/Elements/EditLinks:93 html/Ticket/Elements/ShowLinks:70 +msgid "Referred to by" +msgstr "Mentionné par" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:183 html/Ticket/Elements/BulkLinks:46 html/Ticket/Elements/EditLinks:134 html/Ticket/Elements/EditLinks:79 html/Ticket/Elements/ShowLinks:60 +msgid "Refers to" +msgstr "Se rapporte à " + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "SeRapporteA" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "Affiner" + +#: html/Search/Elements/PickRestriction:26 +msgid "Refine search" +msgstr "Affiner la recherche" + +#: html/Elements/Refresh:35 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "Rafraîchir cette page toutes les %1 minutes." + +#: html/Ticket/Create.html:173 html/Ticket/Elements/ShowSummary:61 html/Ticket/ModifyAll.html:56 +msgid "Relationships" +msgstr "Relations" + +#: html/Search/Bulk.html:97 +msgid "Remove AdminCc" +msgstr "Enlever AdminCc " + +#: html/Search/Bulk.html:93 +msgid "Remove Cc" +msgstr "Enlever Cc" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "Enlever Demandeur" + +#: html/Ticket/Elements/ShowTransaction:159 html/Ticket/Elements/Tabs:121 +msgid "Reply" +msgstr "Répondre" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Reply to tickets" +msgstr "Répondre aux tickets" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "ReplyToTicket" +msgstr "RépondreTicket" + +#: etc/initialdata:44 html/Ticket/Update.html:39 lib/RT/ACE_Overlay.pm:86 +msgid "Requestor" +msgstr "Demandeur" + +#: html/Search/Elements/PickRestriction:37 +msgid "Requestor email address" +msgstr "Adresse email du demandeur" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "Demandeur(s)" + +#: NOT FOUND IN SOURCE +msgid "RequestorAddresses" +msgstr "AdresseDuDemandeur" + +#: html/SelfService/Create.html:40 html/Ticket/Create.html:55 html/Ticket/Elements/EditPeople:47 html/Ticket/Elements/ShowPeople:30 +msgid "Requestors" +msgstr "Demandeurs" + +#: html/Admin/Elements/ModifyQueue:60 html/Admin/Queues/Modify.html:74 +msgid "Requests should be due in" +msgstr "Le demande doit être résolue dans" + +#: html/Elements/Submit:61 +msgid "Reset" +msgstr "Remise à zéro" + +#: html/Admin/Users/Modify.html:158 html/User/Prefs.html:49 +msgid "Residence" +msgstr "Domicile" + +#: html/Ticket/Elements/Tabs:131 +msgid "Resolve" +msgstr "Résoudre" + +#: html/Ticket/Update.html:137 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "Résoudre ticket n°%1 (%2)" + +#: etc/initialdata:308 html/Elements/SelectDateType:27 lib/RT/Ticket_Overlay.pm:1206 +msgid "Resolved" +msgstr "Résolu" + +#: html/Search/Bulk.html:132 html/Ticket/ModifyAll.html:72 html/Ticket/Update.html:71 +msgid "Response to requestors" +msgstr "Réponse aux demandeurs" + +#: html/Elements/ListActions:25 +msgid "Results" +msgstr "Résultats" + +#: html/Search/Elements/PickRestriction:104 +msgid "Results per page" +msgstr "Nb tickets par page" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:99 html/User/Prefs.html:71 +msgid "Retype Password" +msgstr "Saisissez à nouveau votre mot de passe" + +#: NOT FOUND IN SOURCE +msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" +msgstr "Le droit %1 introuvable pour %2 %3 dans le périmètre %4 (%5)\\n" + +#: lib/RT/ACE_Overlay.pm:612 +msgid "Right Delegated" +msgstr "Droit délégué" + +#: lib/RT/ACE_Overlay.pm:302 +msgid "Right Granted" +msgstr "Droit accordé" + +#: lib/RT/ACE_Overlay.pm:160 +msgid "Right Loaded" +msgstr "Droit activé" + +#: lib/RT/ACE_Overlay.pm:677 lib/RT/ACE_Overlay.pm:692 +msgid "Right could not be revoked" +msgstr "Droit irrévocable" + +#: html/User/Delegation.html:63 +msgid "Right not found" +msgstr "Droit inconnu" + +#: lib/RT/ACE_Overlay.pm:542 lib/RT/ACE_Overlay.pm:637 +msgid "Right not loaded." +msgstr "Droit non activé" + +#: lib/RT/ACE_Overlay.pm:688 +msgid "Right revoked" +msgstr "Droit révoqué" + +#: html/Admin/Elements/UserTabs:40 +msgid "Rights" +msgstr "Droits" + +#: lib/RT/Interface/Web.pm:794 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "Les droits n'on pas pu être attribués à %1" + +#: lib/RT/Interface/Web.pm:827 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "Les droits n'ont pas pu être révoqués pour %1" + +#: html/Admin/Global/GroupRights.html:50 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "Rôles" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "ApprobationDeRoot" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "Sam." + +#: html/Admin/Queues/People.html:104 html/Ticket/Modify.html:38 html/Ticket/ModifyAll.html:93 html/Ticket/ModifyLinks.html:38 html/Ticket/ModifyPeople.html:37 +msgid "Save Changes" +msgstr "Enregistrer les modifications" + +#: NOT FOUND IN SOURCE +msgid "Save changes" +msgstr "Enregistrer les modifications" + +#: html/Admin/Global/Scrip.html:48 html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->id) +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "Scrip n°%1" + +#: lib/RT/Scrip_Overlay.pm:175 +msgid "Scrip Created" +msgstr "Scrip ajouté" + +#: html/Admin/Elements/EditScrips:83 +msgid "Scrip deleted" +msgstr "Scrip supprimé" + +#: html/Admin/Elements/QueueTabs:45 html/Admin/Elements/SystemTabs:32 html/Admin/Global/index.html:40 +msgid "Scrips" +msgstr "Scrips" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "Scrips pour %1\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "Scrips s'appliquant à toutes les queues" + +#: html/Elements/SimpleSearch:26 html/Search/Elements/PickRestriction:125 html/Ticket/Elements/Tabs:158 +msgid "Search" +msgstr "Rechercher" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "Critère de recherche" + +#: html/Approvals/Elements/PendingMyApproval:38 +msgid "Search for approvals" +msgstr "Chercher des approbations" + +#: bin/rt-crontool:187 +msgid "Security:" +msgstr "Sécurité:" + +#: lib/RT/Queue_Overlay.pm:66 +msgid "SeeQueue" +msgstr "VoirQueue" + +#: html/Admin/Groups/index.html:39 +msgid "Select a group" +msgstr "Sélectionner un groupe" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "Choisir une queue" + +#: html/Admin/Users/index.html:24 html/Admin/Users/index.html:27 +msgid "Select a user" +msgstr "Sélectionner un utilisateur" + +#: html/Admin/Global/CustomField.html:37 html/Admin/Global/CustomFields.html:35 +msgid "Select custom field" +msgstr "Selectionner le champ personnalisé" + +#: html/Admin/Elements/GroupTabs:51 html/User/Elements/GroupTabs:49 +msgid "Select group" +msgstr "Sélectionner le groupe" + +#: lib/RT/CustomField_Overlay.pm:421 +msgid "Select multiple values" +msgstr "Choisir plusieurs valeurs" + +#: lib/RT/CustomField_Overlay.pm:418 +msgid "Select one value" +msgstr "Choisir une valeur" + +#: html/Admin/Elements/QueueTabs:66 +msgid "Select queue" +msgstr "Selectionner la queue" + +#: 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 "Selectionner le scrip" + +#: 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 "Selectionner le modèle" + +#: html/Admin/Elements/UserTabs:48 +msgid "Select user" +msgstr "Selectionner l'utilisateur" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectMultiple" +msgstr "ChoixMultiples" + +#: lib/RT/CustomField_Overlay.pm:34 +msgid "SelectSingle" +msgstr "ChoixSimple" + +#: NOT FOUND IN SOURCE +msgid "Self Service" +msgstr "Self Service" + +#: etc/initialdata:113 +msgid "Send mail to all watchers" +msgstr "Envoyer un courrier à tous les observateurs" + +#: etc/initialdata:109 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "Envoyer un courrier à tous les observateurs en tant que \"commentaire\"" + +#: etc/initialdata:104 +msgid "Send mail to requestors and Ccs" +msgstr "Envoyer un courrier aux demandeurs et aux CCs" + +#: etc/initialdata:99 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "Envoyer un courrier aux demandeurs et aux CCs en tant que commentaire" + +#: etc/initialdata:78 +msgid "Sends a message to the requestors" +msgstr "Envoyer un courrier aux demandeurs" + +#: etc/initialdata:117 etc/initialdata:121 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "Envoyer un courrier aux CCs et Bccs explicitement indiqués" + +#: etc/initialdata:94 +msgid "Sends mail to the administrative Ccs" +msgstr "Envoyer un mail aux AdminCCs" + +#: etc/initialdata:90 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "Envoyer un mail aux AdminCCs en tant que commentaire" + +#: etc/initialdata:82 etc/initialdata:86 +msgid "Sends mail to the owner" +msgstr "Envoyer un courrier à l'intervenant" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "Sep." + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "Septembre" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "Afficher les résultats" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show approved requests" +msgstr "Afficher les requêtes approuvées" + +#: html/Ticket/Create.html:143 html/Ticket/Create.html:33 +msgid "Show basics" +msgstr "Affichage court" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show denied requests" +msgstr "Afficher les requêtes refusées" + +#: html/Ticket/Create.html:143 html/Ticket/Create.html:33 +msgid "Show details" +msgstr "Affichage long" + +#: html/Approvals/Elements/PendingMyApproval:42 +msgid "Show pending requests" +msgstr "Afficher les requêtes en attente" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show requests awaiting other approvals" +msgstr "Afficher les requêtes attendant d'autres approbations" + +#: lib/RT/Queue_Overlay.pm:80 +msgid "Show ticket private commentary" +msgstr "Afficher les commentaires privés du ticket" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Show ticket summaries" +msgstr "Afficher les résumés de tickets" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "ShowACL" +msgstr "AfficherACL" + +#: lib/RT/Queue_Overlay.pm:77 +msgid "ShowScrips" +msgstr "AfficherScrips" + +#: lib/RT/Queue_Overlay.pm:74 +msgid "ShowTemplate" +msgstr "AfficherModèle" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowTicket" +msgstr "AfficherTicket" + +#: lib/RT/Queue_Overlay.pm:80 +msgid "ShowTicketComments" +msgstr "AfficherCommentairesTickets" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "S'identifier en tant que demandeur ou CC de queue ou de ticket" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "S'identifier en tant qu'AdminCC de ticket ou de queue" + +#: html/Admin/Elements/ModifyUser:38 html/Admin/Users/Modify.html:190 html/Admin/Users/Prefs.html:31 html/User/Prefs.html:111 +msgid "Signature" +msgstr "Signature" + +#: NOT FOUND IN SOURCE +msgid "Signed in as %1" +msgstr "Connecté en tant que %1" + +#: html/Admin/Elements/SelectSingleOrMultiple:25 +msgid "Single" +msgstr "Unique" + +#: html/Elements/Header:50 +msgid "Skip Menu" +msgstr "Passer le menu" + +#: html/Admin/Elements/AddCustomFieldValue:27 +msgid "Sort" +msgstr "Trier" + +#: NOT FOUND IN SOURCE +msgid "Sort key" +msgstr "Ordre de tri" + +#: html/Search/Elements/PickRestriction:108 +msgid "Sort results by" +msgstr "Trier les résultats par" + +#: NOT FOUND IN SOURCE +msgid "SortOrder" +msgstr "SortOrder" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "Bloqué" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "Page de début" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/EditDates:31 html/Ticket/Elements/ShowDates:34 +msgid "Started" +msgstr "Ouvert le" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "La date de démarrage '%1' n'a pas pu être analysée" + +#: html/Elements/SelectDateType:30 html/Ticket/Create.html:165 html/Ticket/Elements/EditDates:26 html/Ticket/Elements/ShowDates:30 +msgid "Starts" +msgstr "Débute" + +#: NOT FOUND IN SOURCE +msgid "Starts By" +msgstr "Débute le" + +#: NOT FOUND IN SOURCE +msgid "Starts date '%1' could not be parsed" +msgstr "La date de début '%1' n'a pas pu être analysée" + +#: html/Admin/Elements/ModifyUser:81 html/Admin/Users/Modify.html:137 html/User/Prefs.html:93 +msgid "State" +msgstr "Etat" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Search/Elements/PickRestriction:73 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:30 html/Ticket/Create.html:41 html/Ticket/Elements/EditBasics:37 html/Ticket/Elements/ShowBasics:30 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1200 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "Statut" + +#: etc/initialdata:294 +msgid "Status Change" +msgstr "Changement de statut" + +#: lib/RT/Transaction_Overlay.pm:528 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "Statut modifié de %1 à %2 " + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "ChangementDeStatut" + +#: html/Ticket/Elements/Tabs:146 +msgid "Steal" +msgstr "Voler" + +#: lib/RT/Queue_Overlay.pm:91 +msgid "Steal tickets" +msgstr "Voler les tickets " + +#: lib/RT/Queue_Overlay.pm:91 +msgid "StealTicket" +msgstr "VolerTicket" + +#: lib/RT/Transaction_Overlay.pm:587 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "Volé à %1" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 html/Search/Bulk.html:135 html/Search/Elements/PickRestriction:42 html/SelfService/Create.html:56 html/SelfService/Elements/MyRequests:27 html/SelfService/Update.html:31 html/Ticket/Create.html:83 html/Ticket/Elements/EditBasics:27 html/Ticket/ModifyAll.html:78 html/Ticket/Update.html:75 lib/RT/Ticket_Overlay.pm:1196 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "Sujet" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:609 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "Sujet modifié en %1" + +#: html/Elements/Submit:58 +msgid "Submit" +msgstr "Valider" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "Soumettre flux de travail" + +#: lib/RT/Group_Overlay.pm:748 +msgid "Succeeded" +msgstr "Réussi" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "Dim." + +#: lib/RT/System.pm:53 +msgid "SuperUser" +msgstr "SuperUtilisateur" + +#: html/User/Elements/DelegateRights:76 +msgid "System" +msgstr "Système" + +#: html/Admin/Elements/SelectRights:80 lib/RT/ACE_Overlay.pm:566 lib/RT/Interface/Web.pm:793 lib/RT/Interface/Web.pm:826 +msgid "System Error" +msgstr "Erreur système" + +#: NOT FOUND IN SOURCE +msgid "System Error. Right not granted." +msgstr "Erreur Système. Droit non délégué." + +#: NOT FOUND IN SOURCE +msgid "System Error. right not granted" +msgstr "Erreur Système. Droit non délégué" + +#: lib/RT/ACE_Overlay.pm:615 +msgid "System error. Right not delegated." +msgstr "Erreur système. Droit non délégué." + +#: 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 "Erreur système. Droit non accordé" + +#: NOT FOUND IN SOURCE +msgid "System error. Unable to grant rights." +msgstr "Erreur Système. Imposible de déléguer les droits" + +#: html/Admin/Global/GroupRights.html:34 html/Admin/Groups/GroupRights.html:36 html/Admin/Queues/GroupRights.html:35 +msgid "System groups" +msgstr "Groupes système" + +#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 +msgid "SystemRolegroup for internal use" +msgstr "SystemRolegroup à usage interne" + +#: lib/RT/CurrentUser.pm:319 +msgid "TEST_STRING" +msgstr "Chaîne_de_test" + +#: html/Ticket/Elements/Tabs:142 +msgid "Take" +msgstr "Prendre" + +#: lib/RT/Queue_Overlay.pm:89 +msgid "Take tickets" +msgstr "Prendre les tickets" + +#: lib/RT/Queue_Overlay.pm:89 +msgid "TakeTicket" +msgstr "PrendreTicket" + +#: lib/RT/Transaction_Overlay.pm:573 +msgid "Taken" +msgstr "Pris" + +#: html/Admin/Elements/EditScrip:80 +msgid "Template" +msgstr "Modèle" + +#: html/Admin/Global/Template.html:90 html/Admin/Queues/Template.html:89 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "Modèle n°%1" + +#: html/Admin/Elements/EditTemplates:88 +msgid "Template deleted" +msgstr "Modèle supprimé" + +#: lib/RT/Scrip_Overlay.pm:152 +msgid "Template not found" +msgstr "Modèle inconnu" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "Modèle inconnu\\n" + +#: lib/RT/Template_Overlay.pm:352 +msgid "Template parsed" +msgstr "Modèle analysé" + +#: html/Admin/Elements/QueueTabs:48 html/Admin/Elements/SystemTabs:35 html/Admin/Global/index.html:44 +msgid "Templates" +msgstr "Modèles" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "Modèles pour %1\\n " + +#: lib/RT/Interface/Web.pm:894 +msgid "That is already the current value" +msgstr "Ceci est déjà la valeur actuelle" + +#: lib/RT/CustomField_Overlay.pm:242 +msgid "That is not a value for this custom field" +msgstr "Valeur incorrecte pour ce champ personnalisé." + +#: lib/RT/Ticket_Overlay.pm:1917 +msgid "That is the same value" +msgstr "Valeur identique" + +#: lib/RT/ACE_Overlay.pm:287 lib/RT/ACE_Overlay.pm:596 +msgid "That principal already has that right" +msgstr "Ce groupe/utilisateur dispose déjà de ce droit" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "Ce groupe/utilisateur est déjà un %1 pour cette queue" + +#: lib/RT/Ticket_Overlay.pm:1451 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "Ce groupe/utilisateur est déjà un %1 pour ce ticket" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "Ce groupe/utilisateur n'est pas un %1 pour cette queue" + +#: lib/RT/Ticket_Overlay.pm:1568 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "Ce groupe/utilisateur n'est pas un %1 pour ce ticket" + +#: lib/RT/Ticket_Overlay.pm:1913 +msgid "That queue does not exist" +msgstr "Queue inconnue" + +#: lib/RT/Ticket_Overlay.pm:3274 +msgid "That ticket has unresolved dependencies" +msgstr "Ticket ayant des tickets fils ou dépendants non résolus" + +#: NOT FOUND IN SOURCE +msgid "That user already has that right" +msgstr "Cet utilisateur possède déjà ce droit." + +#: lib/RT/Ticket_Overlay.pm:3084 +msgid "That user already owns that ticket" +msgstr "Cet utilisateur possède déjà ce ticket." + +#: lib/RT/Ticket_Overlay.pm:3056 +msgid "That user does not exist" +msgstr "Utilisateur inconnu" + +#: lib/RT/User_Overlay.pm:376 +msgid "That user is already privileged" +msgstr "Utilisateur possédant déjà un statut privilégié." + +#: lib/RT/User_Overlay.pm:397 +msgid "That user is already unprivileged" +msgstr "Utilisateur déjà sans privilèges." + +#: lib/RT/User_Overlay.pm:389 +msgid "That user is now privileged" +msgstr "Utilisateur bénéficiant à présent du statut privilégié" + +#: lib/RT/User_Overlay.pm:410 +msgid "That user is now unprivileged" +msgstr "Utilisateur à présent sans statut privilégié " + +#: NOT FOUND IN SOURCE +msgid "That user is now unprivilegedileged" +msgstr "Cet utilisateur a perdu ses droits" + +#: lib/RT/Ticket_Overlay.pm:3077 +msgid "That user may not own tickets in that queue" +msgstr "Cet utilisateur peut ne pas avoir de ticket dans cette queue." + +#: lib/RT/Link_Overlay.pm:205 +msgid "That's not a numerical id" +msgstr "ID non numérique" + +#: html/SelfService/Display.html:31 html/Ticket/Create.html:149 html/Ticket/Elements/ShowSummary:27 +msgid "The Basics" +msgstr "Eléments de base" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The CC of a ticket" +msgstr "Le CC d'un ticket" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The administrative CC of a ticket" +msgstr "L'AdminCC d'un ticket" + +#: lib/RT/Ticket_Overlay.pm:2244 +msgid "The comment has been recorded" +msgstr "Commentaire enregistré" + +#: bin/rt-crontool:197 +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 "Cette commande trouve tous les tickets actifs de la queue 'general' et positionne leur priorité à 99 s'ils n'ont pas été touchés depuis quatre heures:" + +#: bin/rt-commit-handler:755 bin/rt-commit-handler:765 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "Les commandes suivantes n'ont pas été traitées :\\n\\n" + +#: lib/RT/Interface/Web.pm:897 +msgid "The new value has been set." +msgstr "La nouvelle valeur est enregistrée" + +#: lib/RT/ACE_Overlay.pm:85 +msgid "The owner of a ticket" +msgstr "L'intervenant d'un ticket" + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The requestor of a ticket" +msgstr "Le demandeur d'un ticket" + +#: html/Admin/Elements/EditUserComments:25 +msgid "These comments aren't generally visible to the user" +msgstr "Ces commentaires ne sont généralement pas accessibles par l'utilisateur" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "Ce ticket %1 %2 (%3)\\n " + +#: bin/rt-crontool:188 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "Cet outil permet à l'utilisateur de lancer un module perl quelconque depuis RT" + +#: lib/RT/Transaction_Overlay.pm:251 +msgid "This transaction appears to have no content" +msgstr "Cette opération semble ne pas avoir de contenu" + +#: html/Ticket/Elements/ShowRequestor:46 +#. ($rows) +msgid "This user's %1 highest priority tickets" +msgstr "Les %1 tickets de plus haute priorité de cet utilisateur" + +#: NOT FOUND IN SOURCE +msgid "This user's 25 highest priority tickets" +msgstr "Les 25 tickets prioritaires de cet utilisateur" + +#: lib/RT/Date.pm:391 +msgid "Thu." +msgstr "Jeu." + +#: NOT FOUND IN SOURCE +msgid "Ticket" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 %2" +msgstr "Ticket n°%1 %2" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 Jumbo update: %2" +msgstr "Ticket n°%1 Jumbo update: %2" + +#: html/Ticket/ModifyAll.html:24 html/Ticket/ModifyAll.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "Ticket n°%1 mise à jour globale: %2" + +#: html/Approvals/Elements/ShowDependency:45 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "Ticket n°%1: %2" + +#: lib/RT/Ticket_Overlay.pm:623 lib/RT/Ticket_Overlay.pm:644 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "Ticket %1 créé dans la queue '%2'" + +#: bin/rt-commit-handler:759 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "Ticket %1 chargé\\n " + +#: html/Search/Bulk.html:212 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "Ticket %1: %2" + +#: html/Ticket/History.html:24 html/Ticket/History.html:27 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "Historique ticket # %1 %2" + +#: NOT FOUND IN SOURCE +msgid "Ticket Id" +msgstr "N° ticket" + +#: etc/initialdata:309 +msgid "Ticket Resolved" +msgstr "Ticket résolu/clos" + +#: html/Search/Elements/PickRestriction:62 +msgid "Ticket attachment" +msgstr "Pièce jointe au ticket" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "Contenu du ticket." + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "Type du contenu du ticket" + +#: lib/RT/Ticket_Overlay.pm:514 lib/RT/Ticket_Overlay.pm:523 lib/RT/Ticket_Overlay.pm:533 lib/RT/Ticket_Overlay.pm:633 +msgid "Ticket could not be created due to an internal error" +msgstr "Une erreur interne a empêché l'ajout du ticket" + +#: lib/RT/Transaction_Overlay.pm:520 +msgid "Ticket created" +msgstr "Ticket ajouté" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "Création de ticket échouée." + +#: lib/RT/Transaction_Overlay.pm:525 +msgid "Ticket deleted" +msgstr "Ticket supprimé." + +#: NOT FOUND IN SOURCE +msgid "Ticket id not found" +msgstr "Id de ticket non trouvée" + +#: NOT FOUND IN SOURCE +msgid "Ticket killed" +msgstr "Ticket effacé" + +#: NOT FOUND IN SOURCE +msgid "Ticket not found" +msgstr "Ticket non trouvé" + +#: etc/initialdata:295 +msgid "Ticket status changed" +msgstr "Statut de ticket modifié" + +#: html/Ticket/Update.html:38 +msgid "Ticket watchers" +msgstr "Observateurs du ticket" + +#: html/Elements/Tabs:46 +msgid "Tickets" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "Tickets %1 par %2" + +#: html/Elements/ViewUser:25 +#. ($name) +msgid "Tickets from %1" +msgstr "Tickets depuis %2" + +#: html/Approvals/Elements/ShowDependency:26 +msgid "Tickets which depend on this approval:" +msgstr "Tickets dépendant de cette approbation:" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:47 +msgid "Time Left" +msgstr "Temps restant" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:42 +msgid "Time Worked" +msgstr "Temps passé" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "Temps restant" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "Temps de calcul" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "Temps passé" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "TempsRestant" + +#: lib/RT/Ticket_Overlay.pm:1201 +msgid "TimeWorked" +msgstr "TempsPassé" + +#: bin/rt-commit-handler:401 +msgid "To generate a diff of this commit:" +msgstr "Pour conserver les modifications de cette transaction" + +#: bin/rt-commit-handler:390 +msgid "To generate a diff of this commit:\\n" +msgstr "Pour conserver les modifications de cette transaction :\\n" + +#: lib/RT/Ticket_Overlay.pm:1204 +msgid "Told" +msgstr "Annoncé" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "Transaction" + +#: lib/RT/Transaction_Overlay.pm:691 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "La transaction%1 est supprimée" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "Transaction ajoutée" + +#: lib/RT/Transaction_Overlay.pm:88 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "Transaction->Create n'a pas fonctionné car vous n'avez pas spécifié d'identifiant de ticket" + +#: lib/RT/Transaction_Overlay.pm:750 +msgid "Transactions are immutable" +msgstr "Les transactions ne peuvent être transférées" + +#: NOT FOUND IN SOURCE +msgid "Trying to delete a right: %1" +msgstr "Tentative de délégation d'un droit : %1" + +#: lib/RT/Date.pm:389 +msgid "Tue." +msgstr "Mar." + +#: 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:1202 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "Type" + +#: lib/RT/ScripCondition_Overlay.pm:103 +msgid "Unimplemented" +msgstr "Fonction non disponible" + +#: html/Admin/Users/Modify.html:67 +msgid "Unix login" +msgstr "Identifiant Unix" + +#: html/Admin/Elements/ModifyUser:61 +msgid "UnixUsername" +msgstr "UnixUsername" + +#: lib/RT/Attachment_Overlay.pm:266 lib/RT/Attachment_Overlay.pm:298 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "Type d'encodage de courrier inconnu: %1" + +#: html/Elements/SelectResultsPerPage:36 +msgid "Unlimited" +msgstr "Illimité" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "Non privilégié" + +#: lib/RT/Transaction_Overlay.pm:569 +msgid "Untaken" +msgstr "Non pris" + +#: html/Elements/MyTickets:63 html/Search/Bulk.html:32 +msgid "Update" +msgstr "Mettre à jour" + +#: html/Admin/Users/Prefs.html:61 +msgid "Update ID" +msgstr "Mettre à jour l'ID" + +#: html/Search/Bulk.html:129 html/Ticket/ModifyAll.html:65 html/Ticket/Update.html:65 +msgid "Update Type" +msgstr "Mettre à jour le type" + +#: html/Search/Listing.html:60 +msgid "Update all these tickets at once" +msgstr "Mise à jour des tickets en masse" + +#: html/Admin/Users/Prefs.html:48 +msgid "Update email" +msgstr "Mettre à jour l'email" + +#: html/Admin/Users/Prefs.html:54 +msgid "Update name" +msgstr "Mettre à jour le nom" + +#: lib/RT/Interface/Web.pm:409 +msgid "Update not recorded." +msgstr "Mise à jour non enregistrée" + +#: html/Search/Bulk.html:80 +msgid "Update selected tickets" +msgstr "Mettre à jour les tickets sélectionnés" + +#: html/Admin/Users/Prefs.html:35 +msgid "Update signature" +msgstr "Mettre à jour la signature" + +#: html/Ticket/ModifyAll.html:62 +msgid "Update ticket" +msgstr "Mettre à jour le ticket" + +#: NOT FOUND IN SOURCE +msgid "Update ticket # %1" +msgstr "Mettre à jour le ticket n°%1" + +#: html/SelfService/Update.html:24 html/SelfService/Update.html:46 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "Mettre à jour le ticket n°%1" + +#: html/Ticket/Update.html:139 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "Mettre à jour le ticket n°%1 (%2)" + +#: lib/RT/Interface/Web.pm:407 +msgid "Update type was neither correspondence nor comment." +msgstr "Le type de mise à jour n'était ni un commentaire ni un courrier." + +#: html/Elements/SelectDateType:32 html/Ticket/Elements/ShowDates:50 lib/RT/Ticket_Overlay.pm:1205 +msgid "Updated" +msgstr "Mis(e) à jour" + +#: NOT FOUND IN SOURCE +msgid "User %1 %2: %3\\n" +msgstr "Utilisateur %1 %2: %3\\n" + +#: NOT FOUND IN SOURCE +msgid "User %1 Password: %2\\n" +msgstr "Mot de passe de l'utilisateur %1 : %2\\n" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found" +msgstr "Utilisateur '%1' non trouvé" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found\\n" +msgstr "Utilisateur '%1' non trouvé\\n" + +#: etc/initialdata:124 etc/initialdata:191 +msgid "User Defined" +msgstr "Utilisateur défini" + +#: html/Admin/Users/Prefs.html:58 +msgid "User ID" +msgstr "Id utilisateur" + +#: html/Elements/SelectUsers:25 +msgid "User Id" +msgstr "Id utilisateur" + +#: 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 "Droits utilisateurs" + +#: html/Admin/Users/Modify.html:225 +#. ($msg) +msgid "User could not be created: %1" +msgstr "Utilisateur ne peut pas être créé : %1" + +#: lib/RT/User_Overlay.pm:321 +msgid "User created" +msgstr "Utilisateur créé" + +#: html/Admin/Global/GroupRights.html:66 html/Admin/Groups/GroupRights.html:53 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "Groupes utilisateur" + +#: lib/RT/User_Overlay.pm:575 lib/RT/User_Overlay.pm:592 +msgid "User loaded" +msgstr "Utilisateur chargé" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "Utilisateur informé" + +#: html/Admin/Users/Prefs.html:24 html/Admin/Users/Prefs.html:28 +msgid "User view" +msgstr "Vue utilisateur" + +#: html/Admin/Users/Modify.html:47 html/Elements/Login:51 html/Ticket/Elements/AddWatchers:34 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: 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 "Utilisateurs" + +#: html/Admin/Users/index.html:64 +msgid "Users matching search criteria" +msgstr "Utilisateurs correspondants aux critères de recherche" + +#: html/Search/Elements/PickRestriction:50 +msgid "ValueOfQueue" +msgstr "ValueOfQueue" + +#: html/Admin/Elements/EditCustomField:56 +msgid "Values" +msgstr "Valeurs" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Watch" +msgstr "Observer" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "WatchAsAdminCc" +msgstr "ObserverCommeAdminCC" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "Observateur chargé" + +#: html/Admin/Elements/QueueTabs:41 +msgid "Watchers" +msgstr "Observateurs" + +#: html/Admin/Elements/ModifyUser:55 +msgid "WebEncoding" +msgstr "WebEncoding" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "Mer." + +#: etc/initialdata:503 etc/upgrade/2.1.71:161 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "Quand un ticket a été approuvé par tous les approbateurs, ajoute le courrier au ticket source" + +#: etc/initialdata:467 etc/upgrade/2.1.71:135 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "Quand un ticket a été approuvé par au moins un approbateur, ajoute le courrier au ticket source " + +#: etc/initialdata:138 +msgid "When a ticket is created" +msgstr "Quand un ticket est créé" + +#: etc/initialdata:400 etc/upgrade/2.1.71:79 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "Quand un ticket d'approbation est créé, informer l'intervenant et l'AdminCC de l'élément attendant leur approbation" + +#: etc/initialdata:143 +msgid "When anything happens" +msgstr "Quand quelque chose arrive" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "Lorsqu'un ticket quelconque est résolu/clos" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "Lorsqu'un ticket quelconque change d'intervenant" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "Lorsqu'un ticket quelconque change de queue" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "Lorsqu'un ticket quelconque change de statut" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "Lorsqu'une condition définie par l'utilisateur est satisfaite" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "Lorsque un commentaire arrive" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "Lorsque un courrier arrive" + +#: html/Admin/Users/Modify.html:163 html/User/Prefs.html:51 +msgid "Work" +msgstr "Travail" + +#: html/Admin/Elements/ModifyUser:69 +msgid "WorkPhone" +msgstr "Tel. bureau" + +#: html/Ticket/Elements/ShowBasics:34 html/Ticket/Update.html:64 +msgid "Worked" +msgstr "Travaillé" + +#: lib/RT/Ticket_Overlay.pm:3187 +msgid "You already own this ticket" +msgstr "Vous êtes déjà intervenant de ce ticket" + +#: html/autohandler:122 +msgid "You are not an authorized user" +msgstr "Vous n'êtes pas un utilisateur autorisé" + +#: lib/RT/Ticket_Overlay.pm:3069 +msgid "You can only reassign tickets that you own or that are unowned" +msgstr "Vous pouvez seulement réaffecter vos ticket ou ceux qui ne sont pas affectés" + +#: NOT FOUND IN SOURCE +msgid "You don't have permission to view that ticket.\\n" +msgstr "Vous n'êtes pas autorisé à voir ce ticket.\\n" + +#: docs/design_docs/string-extraction-guide.txt:47 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "%1 tickets trouvés dans la queue %2" + +#: html/NoAuth/Logout.html:30 +msgid "You have been logged out of RT." +msgstr "Vous avez été déconnecté de RT." + +#: html/SelfService/Display.html:77 +msgid "You have no permission to create tickets in that queue." +msgstr "Vous n'avez pas l'autorisation de créer des tickets dans cette queue." + +#: lib/RT/Ticket_Overlay.pm:1926 +msgid "You may not create requests in that queue." +msgstr "Vous ne pouvez pas créer de demandes dans cette queue." + +#: html/NoAuth/Logout.html:34 +msgid "You're welcome to login again" +msgstr "Vous êtes invité à vous identifier à nouveau" + +#: NOT FOUND IN SOURCE +msgid "Your %1 requests" +msgstr "Vos %1 requêtes" + +#: NOT FOUND IN SOURCE +msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" +msgstr "Votre administrateur RT a mal configuré l'alias de mail qui appelle RT" + +#: etc/initialdata:484 etc/upgrade/2.1.71:146 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "Votre demande a été approuvée par %1. D'autres approbations sont peut être toujours en attente" + +#: etc/initialdata:522 etc/upgrade/2.1.71:180 +msgid "Your request has been approved." +msgstr "Votre demande a été approuvée" + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "Votre demande a été rejetée" + +#: etc/initialdata:427 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "Votre demande a été rejetée." + +#: html/autohandler:144 +msgid "Your username or password is incorrect" +msgstr "Votre nom d'utilisateur ou votre mot de passe est incorrect" + +#: html/Admin/Elements/ModifyUser:83 html/Admin/Users/Modify.html:143 html/User/Prefs.html:95 +msgid "Zip" +msgstr "Code Postal" + +#: NOT FOUND IN SOURCE +msgid "[no subject]" +msgstr "[Pas de sujet]" + +#: html/User/Elements/DelegateRights:58 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "comme accordé à %1" + +#: html/SelfService/Closed.html:27 +msgid "closed" +msgstr "fermé" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:33 +msgid "contains" +msgstr "contient" + +#: html/Elements/SelectAttachmentField:25 +msgid "content" +msgstr "Contenu" + +#: html/Elements/SelectAttachmentField:26 +msgid "content-type" +msgstr "Type de contenu" + +#: lib/RT/Ticket_Overlay.pm:2313 +msgid "correspondence (probably) not sent" +msgstr "courrier (probablement) non envoyé" + +#: lib/RT/Ticket_Overlay.pm:2323 +msgid "correspondence sent" +msgstr "courrier envoyé" + +#: html/Admin/Elements/ModifyQueue:62 html/Admin/Queues/Modify.html:76 lib/RT/Date.pm:319 +msgid "days" +msgstr "jours" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "effacé" + +#: html/Search/Listing.html:74 +msgid "delete" +msgstr "effacer" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "deleted" +msgstr "effacé" + +#: html/Search/Elements/PickRestriction:67 +msgid "does not match" +msgstr "ne correspond pas" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:34 +msgid "doesn't contain" +msgstr "ne contient pas" + +#: html/Elements/SelectEqualityOperator:37 +msgid "equal to" +msgstr "égal à " + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "faux" + +#: html/Elements/SelectAttachmentField:27 +msgid "filename" +msgstr "Nom de fichier" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectEqualityOperator:37 +msgid "greater than" +msgstr "supérieur à " + +#: lib/RT/Group_Overlay.pm:193 +#. ($self->Name) +msgid "group '%1'" +msgstr "groupe '%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "heures" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "n°" + +#: html/Elements/SelectBoolean:31 html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:35 html/Search/Elements/PickRestriction:46 html/Search/Elements/PickRestriction:75 html/Search/Elements/PickRestriction:87 +msgid "is" +msgstr "est" + +#: html/Elements/SelectBoolean:35 html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "isn't" +msgstr "n'est pas" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectEqualityOperator:37 +msgid "less than" +msgstr "inférieur à " + +#: html/Search/Elements/PickRestriction:66 +msgid "matches" +msgstr "correspond" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "min" + +#: html/Ticket/Update.html:64 +msgid "minutes" +msgstr "minutes" + +#: bin/rt-commit-handler:764 +msgid "modifications\\n\\n" +msgstr "modifications\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "mois" + +#: lib/RT/Queue_Overlay.pm:57 +msgid "new" +msgstr "nouveau" + +#: html/Admin/Elements/EditScrips:42 +msgid "no value" +msgstr "Non renseigné" + +#: html/Admin/Elements/EditQueueWatchers:26 html/Ticket/Elements/EditWatchers:27 +msgid "none" +msgstr "aucun" + +#: html/Elements/SelectEqualityOperator:37 +msgid "not equal to" +msgstr "différent de" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "necontientpas" + +#: html/SelfService/Elements/MyRequests:60 lib/RT/Queue_Overlay.pm:58 +msgid "open" +msgstr "ouvert" + +#: lib/RT/Group_Overlay.pm:198 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "groupe personnel '%1' pour l'utilisateur '%2'" + +#: lib/RT/Group_Overlay.pm:206 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "queue %1 %2" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "rejected" +msgstr "rejeté" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "resolved" +msgstr "résolu" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "sec" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "stalled" +msgstr "bloqué" + +#: lib/RT/Group_Overlay.pm:201 +#. ($self->Type) +msgid "system %1" +msgstr "système %1" + +#: lib/RT/Group_Overlay.pm:212 +#. ($self->Type) +msgid "system group '%1'" +msgstr "groupe système '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:41 +msgid "the calling component did not specify why" +msgstr "le composant appelant n'a pas spécifié pourquoi" + +#: lib/RT/URI/fsck_com_rt.pm:234 +#. ($self->Object->Id) +msgid "ticket #%1" +msgstr "ticket n°%1" + +#: lib/RT/Group_Overlay.pm:209 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "ticket n°%1 %2" + +#: NOT FOUND IN SOURCE +msgid "true" +msgstr "vrai" + +#: lib/RT/Group_Overlay.pm:215 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "Groupe %1 non décrit" + +#: NOT FOUND IN SOURCE +msgid "undescripbed group %1" +msgstr "Groupe non décrit %1" + +#: lib/RT/Group_Overlay.pm:190 +#. ($user->Object->Name) +msgid "user %1" +msgstr "utilisateur %1" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "semaines" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "Avec modèle %1" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "années" + diff --git a/rt/lib/RT/I18N/he.po b/rt/lib/RT/I18N/he.po new file mode 100644 index 000000000..d3ef20e25 --- /dev/null +++ b/rt/lib/RT/I18N/he.po @@ -0,0 +1,4871 @@ +# Hebrew Translation of the RT interface by Shimi. +# Comments: shimi@shimi.net + +msgid "" +msgstr "" +"Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 +msgid "#" +msgstr "" + +#: html/Admin/Queues/Scrip.html:55 +#. ($QueueObj->id) +msgid "#%1" +msgstr "" + +#: html/Approvals/Elements/Approve:27 html/Approvals/Elements/ShowDependency:50 html/SelfService/Display.html:25 html/Ticket/Display.html:26 html/Ticket/Display.html:30 +#. ($Ticket->Id, $Ticket->Subject) +#. ($Ticket->id, $Ticket->Subject) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($args{'FIELD'}, $args{'OPERATOR'}, $args{'VALUE'}) +msgid "%1 %2 %3" +msgstr "" + +#: 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 "" + +#: lib/RT/Ticket_Overlay.pm:3505 lib/RT/Transaction_Overlay.pm:557 lib/RT/Transaction_Overlay.pm:599 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 הוסף" +msgstr "" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 ×œ×¤× ×™ %2 ימי×" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3511 lib/RT/Transaction_Overlay.pm:564 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 ×©×•× ×” ל %3" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3508 lib/RT/Transaction_Overlay.pm:560 lib/RT/Transaction_Overlay.pm:605 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 × ×ž×—×§" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 %2 מקבוצה %3" +msgstr "" + +#: html/Admin/Elements/EditScrips:44 html/Admin/Elements/ListGlobalScrips:28 +#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) +msgid "%1 %2 ×¢× ×ª×‘× ×™×ª %3" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 (%2) %3 ×¤× ×™×™×” זו\\n" +msgstr "" + +#: html/Search/Listing.html:57 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "%1 - %2 מוצגי×" + +#: bin/rt-crontool:169 bin/rt-crontool:176 bin/rt-crontool:182 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - ××¨×’×•×ž× ×˜ להעביר ×ל %2" +msgstr "" + +#: bin/rt-crontool:185 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "" + +#: bin/rt-crontool:179 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "" + +#: bin/rt-crontool:173 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "" + +#: bin/rt-crontool:166 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "" + +#: lib/RT/ScripAction_Overlay.pm:122 +#. ($self->Id) +msgid "%1 פעולת-סקריפ × ×˜×¢× ×”" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3538 +#. ($args{'Value'}, $cf->Name) +msgid "%1 הוסף כערך עבור %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 ×›×™× ×•×™×™× ×“×•×¨×©×™× ×ž×–×”×” ×¤× ×™×™×” כדי לעבוד עליה×" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 ×›×™× ×•×™×™× ×“×•×¨×©×™× ×ž×–×”×” ×¤× ×™×™×” כדי לעבוד ×¢×œ×™×”× " +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 ×›×™× ×•×™×™× ×“×•×¨×©×™× ×ž×–×”×” ×¤× ×™×™×” כדי לעבוד ×¢×œ×™×”× (מ %2) %3" +msgstr "" + +#: lib/RT/Link_Overlay.pm:117 lib/RT/Link_Overlay.pm:124 +#. ($args{'Base'}) +#. ($args{'Target'}) +msgid "%1 × ×¨××” כמו ×ובייקט מקומי, ×בל ×”×•× ××™× ×• × ×ž×¦× ×‘×ž×¡×“ ×”× ×ª×•× ×™×" +msgstr "" + +#: html/Ticket/Elements/ShowDates:52 lib/RT/Transaction_Overlay.pm:481 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 על ידי %2" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:535 lib/RT/Transaction_Overlay.pm:624 lib/RT/Transaction_Overlay.pm:633 lib/RT/Transaction_Overlay.pm:636 +#. ($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 ×©×•× ×” מ %2 ל %3" +msgstr "" + +#: lib/RT/Interface/Web.pm:891 +msgid "%1 could not be set to %2." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 couldn't init a transaction (%2)\\n" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2817 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "" + +#: html/Elements/MyTickets:25 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "%1 ×”×¤× ×™×•×ª ×¢× ×”×¢×“×™×¤×•×ª הגבוהה ביותר בטיפולי..." + +#: html/Elements/MyRequests:25 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "%1 ×”×¤× ×™×•×ª ×¢× ×”×¢×“×™×¤×•×ª הגבוהה ביותר ש×× ×™ פתחתי..." + +#: bin/rt-crontool:161 +#. ($0) +msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." +msgstr "" + +#: lib/RT/Queue_Overlay.pm:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1570 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3594 +#. ($args{'Value'}, $cf->Name) +msgid "%1 is no longer a value for custom field %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 isn't a valid Queue id." +msgstr "" + +#: html/Ticket/Elements/ShowBasics:36 +#. ($TimeWorked) +msgid "%1 min" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "" + +#: html/User/Elements/DelegateRights:76 +#. (loc($ObjectType =~ /^RT::(.*)$/)) +msgid "%1 rights" +msgstr "זכויות" + +#: NOT FOUND IN SOURCE +msgid "%1 succeeded\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for $MessageId" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 was created without a CurrentUser\\n" +msgstr "" + +#: lib/RT/Action/ResolveMembers.pm:42 +#. (ref $self) +msgid "%1 will resolve all members of a resolved group ticket." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:433 +#. ($self) +msgid "%1: no attachment specified" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:102 +#. ($size) +msgid "%1b" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:99 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1140 +#. ($args{'Status'}) +msgid "'%1' is an invalid value for status" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "'%1' not a recognized action. " +msgstr "" + +#: 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:25 html/Admin/Elements/EditQueueWatchers:29 html/Admin/Elements/EditScrips:35 html/Admin/Elements/EditTemplates:36 html/Admin/Groups/Members.html:52 html/Ticket/Elements/EditLinks:33 html/Ticket/Elements/EditPeople:46 html/User/Groups/Members.html:55 +msgid "(Check box to delete)" +msgstr "(סמן תיבה כדי למחוק)" + +#: NOT FOUND IN SOURCE +msgid "(Check boxes to delete)" +msgstr "(סמן תיבות כדי למחוק)" + +#: html/Ticket/Create.html:178 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "" + +#: html/Admin/Queues/Modify.html:54 html/Admin/Queues/Modify.html:60 +#. ($RT::CorrespondAddress) +#. ($RT::CommentAddress) +msgid "(If left blank, will default to %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:33 html/Admin/Elements/ListGlobalCustomFields:32 +msgid "(No custom fields)" +msgstr "" + +#: html/Admin/Groups/Members.html:50 html/User/Groups/Members.html:53 +msgid "(No members)" +msgstr "" + +#: html/Admin/Elements/EditScrips:32 html/Admin/Elements/ListGlobalScrips:32 +msgid "(No scrips)" +msgstr "" + +#: html/Admin/Elements/EditTemplates:31 +msgid "(No templates)" +msgstr "" + +#: html/Ticket/Update.html:85 +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 "" + +#: 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 "" + +#: html/Ticket/Create.html:79 +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 "" + +#: html/Ticket/Update.html:81 +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 "" + +#: 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 "" + +#: html/Ticket/Create.html:69 +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 "" + +#: html/Admin/Groups/index.html:33 html/User/Groups/index.html:33 +msgid "(empty)" +msgstr "" + +#: html/Admin/Users/index.html:39 +msgid "(no name listed)" +msgstr "" + +#: html/Elements/MyRequests:43 html/Elements/MyTickets:45 +msgid "(no subject)" +msgstr "" + +#: html/Admin/Elements/SelectRights:48 html/Elements/SelectCustomFieldValue:30 html/Ticket/Elements/EditCustomField:59 html/Ticket/Elements/ShowCustomFields:36 lib/RT/Transaction_Overlay.pm:534 +msgid "(no value)" +msgstr "" + +#: html/Ticket/Elements/EditLinks:116 +msgid "(only one ticket)" +msgstr "(רק ×¤× ×™×™×” ×חת)" + +#: html/Elements/MyRequests:52 html/Elements/MyTickets:55 +msgid "(pending approval)" +msgstr "" + +#: html/Elements/MyRequests:54 html/Elements/MyTickets:57 +msgid "(pending other tickets)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "(requestor's group)" +msgstr "" + +#: html/Admin/Users/Modify.html:50 +msgid "(required)" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "(untitled)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I own..." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I requested..." +msgstr "" + +#: html/Ticket/Elements/ShowBasics:32 +msgid "<% $Ticket->Status%>" +msgstr "" + +#: html/Elements/SelectTicketTypes:27 +msgid "<% $_ %>" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:26 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"×¤× ×™×™×” חדשה ב\"> %1" + +#: NOT FOUND IN SOURCE +msgid "??????" +msgstr "" + +#: etc/initialdata:203 +msgid "A blank template" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE Deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE Loaded" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be found" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:157 lib/RT/Principal_Overlay.pm:181 +msgid "ACE not found" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:831 +msgid "ACEs can only be created and deleted." +msgstr "" + +#: bin/rt-commit-handler:755 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "" + +#: html/User/Elements/Tabs:32 +msgid "About me" +msgstr "מידע ×ודותי" + +#: html/Admin/Users/Modify.html:80 +msgid "Access control" +msgstr "" + +#: html/Admin/Elements/EditScrip:57 +msgid "Action" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:147 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "" + +#: bin/rt-crontool:123 +msgid "Action committed." +msgstr "" + +#: bin/rt-crontool:119 +msgid "Action prepared..." +msgstr "" + +#: html/Search/Bulk.html:92 +msgid "Add AdminCc" +msgstr "הוסף העתק × ×™×”×•×œ×™" + +#: html/Search/Bulk.html:90 +msgid "Add Cc" +msgstr "הוסף העתק" + +#: html/Ticket/Create.html:114 html/Ticket/Update.html:100 +msgid "Add More Files" +msgstr "הוסף עוד קבצי×" + +#: NOT FOUND IN SOURCE +msgid "Add Next State" +msgstr "" + +#: html/Search/Bulk.html:88 +msgid "Add Requestor" +msgstr "הוסף מבקש" + +#: html/Admin/Elements/AddCustomFieldValue:26 +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:55 +msgid "Add a scrip which will apply to all queues" +msgstr "" + +#: html/Search/Bulk.html:118 +msgid "Add comments or replies to selected tickets" +msgstr "הוסף הערות ×ו תגובות ×œ×¤× ×™×•×ª ×”× ×‘×—×¨×•×ª" + +#: html/Admin/Groups/Members.html:42 html/User/Groups/Members.html:39 +msgid "Add members" +msgstr "" + +#: html/Admin/Queues/People.html:66 html/Ticket/Elements/AddWatchers:28 +msgid "Add new watchers" +msgstr "הוסף ×¦×•×¤×™× ×—×“×©×™×" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1454 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "" + +#: html/Admin/Elements/ModifyUser:76 html/Admin/Users/Modify.html:122 html/User/Prefs.html:88 +msgid "Address1" +msgstr "כתובת1" + +#: html/Admin/Elements/ModifyUser:78 html/Admin/Users/Modify.html:127 html/User/Prefs.html:90 +msgid "Address2" +msgstr "כתובת2" + +#: html/Ticket/Create.html:74 +msgid "Admin Cc" +msgstr "" + +#: etc/initialdata:280 +msgid "Admin Comment" +msgstr "" + +#: etc/initialdata:259 +msgid "Admin Correspondence" +msgstr "" + +#: html/Admin/Queues/index.html:25 html/Admin/Queues/index.html:28 +msgid "Admin queues" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "" + +#: html/Admin/Global/index.html:26 html/Admin/Global/index.html:28 +msgid "Admin/Global configuration" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "" + +#: html/Admin/Queues/Modify.html:25 html/Admin/Queues/Modify.html:29 +msgid "Admin/Queue/Basics" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "" + +#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:39 html/Ticket/Update.html:50 lib/RT/ACE_Overlay.pm:89 +msgid "AdminCc" +msgstr "העתק × ×™×”×•×œ×™" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "AdminCustomFields" +msgstr "" + +#: lib/RT/Group_Overlay.pm:146 +msgid "AdminGroup" +msgstr "" + +#: lib/RT/Group_Overlay.pm:148 +msgid "AdminGroupMembership" +msgstr "" + +#: lib/RT/System.pm:59 +msgid "AdminOwnPersonalGroups" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "AdminQueue" +msgstr "" + +#: lib/RT/System.pm:60 +msgid "AdminUsers" +msgstr "" + +#: html/Admin/Queues/People.html:48 html/Ticket/Elements/EditPeople:54 +msgid "Administrative Cc" +msgstr "העתק × ×™×”×•×œ×™" + +#: NOT FOUND IN SOURCE +msgid "Admins" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "" + +#: html/Elements/SelectDateRelation:36 +msgid "After" +msgstr "×חרי" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Alias" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Alias for" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:96 +msgid "All Custom Fields" +msgstr "" + +#: html/Admin/Queues/index.html:53 +msgid "All Queues" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Always sends a message to the requestors independent of message sender" +msgstr "" + +#: html/Elements/Tabs:56 +msgid "Approval" +msgstr "×ישור" + +#: html/Approvals/Display.html:46 html/Approvals/Elements/ShowDependency:42 html/Approvals/index.html:65 +#. ($Ticket->Id, $Ticket->Subject) +#. ($ticket->id, $msg) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Approval #%1: %2" +msgstr "" + +#: html/Approvals/index.html:54 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "" + +#: html/Approvals/index.html:52 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "" + +#: html/Approvals/Elements/Approve:44 +msgid "Approve" +msgstr "" + +#: etc/initialdata:437 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "×פריל" + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "×פריל" + +#: html/Elements/SelectSortOrder:35 +msgid "Ascending" +msgstr "עולה" + +#: html/Search/Bulk.html:127 html/SelfService/Update.html:33 html/Ticket/ModifyAll.html:83 html/Ticket/Update.html:100 +msgid "Attach" +msgstr "צרף" + +#: html/SelfService/Create.html:65 html/Ticket/Create.html:110 +msgid "Attach file" +msgstr "" + +#: html/Ticket/Create.html:98 html/Ticket/Update.html:89 +msgid "Attached file" +msgstr "קובץ מצורף" + +#: NOT FOUND IN SOURCE +msgid "Attachment '%1' could not be loaded" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:441 +msgid "Attachment created" +msgstr "קובץ צורף" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "×©× ×§×•×‘×¥ מצורף" + +#: html/Ticket/Elements/ShowAttachments:26 +msgid "Attachments" +msgstr "×§×‘×¦×™× ×ž×¦×•×¨×¤×™×" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "×וגוסט" + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "×וגוסט" + +#: html/Admin/Elements/ModifyUser:66 +msgid "AuthSystem" +msgstr "" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Bad PGP Signature: %1\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Bad attachment id. Couldn't find attachment '%1'\\n" +msgstr "" + +#: bin/rt-commit-handler:827 +#. ($val) +msgid "Bad data in %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Bad transaction number for attachment. %1 should be %2\\n" +msgstr "" + +#: html/Admin/Elements/GroupTabs:39 html/Admin/Elements/QueueTabs:39 html/Admin/Elements/UserTabs:38 html/Ticket/Elements/Tabs:90 html/User/Elements/GroupTabs:38 +msgid "Basics" +msgstr "בסיסי" + +#: html/Ticket/Update.html:83 +msgid "Bcc" +msgstr "" + +#: html/Admin/Elements/EditScrip:88 html/Admin/Global/GroupRights.html:85 html/Admin/Global/Template.html:46 html/Admin/Global/UserRights.html:54 html/Admin/Groups/GroupRights.html:73 html/Admin/Groups/Members.html:81 html/Admin/Groups/Modify.html:56 html/Admin/Groups/UserRights.html:55 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:45 html/Admin/Queues/UserRights.html:54 html/User/Groups/Modify.html:56 +msgid "Be sure to save your changes" +msgstr "×ל תשכח לשמור ×ת ×”×©×™× ×•×™×™×" + +#: html/Elements/SelectDateRelation:34 lib/RT/CurrentUser.pm:320 +msgid "Before" +msgstr "×œ×¤× ×™" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "" + +#: html/Search/Listing.html:79 +msgid "Bookmarkable URL for this search" +msgstr "הוסף כתובת זו לספר הכתובות כדי לחזור על ×ותו חיפוש" + +#: html/Ticket/Elements/ShowHistory:39 html/Ticket/Elements/ShowHistory:45 +msgid "Brief headers" +msgstr "תקציר כותרי×" + +#: html/Search/Bulk.html:25 html/Search/Bulk.html:26 +msgid "Bulk ticket update" +msgstr "עדכון ×¤× ×™×•×ª מרוכז" + +#: lib/RT/User_Overlay.pm:1352 +msgid "Can not modify system users" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Can this principal see this queue" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:206 +msgid "Can't add a custom field value without a name" +msgstr "" + +#: lib/RT/Link_Overlay.pm:132 +msgid "Can't link a ticket to itself" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2794 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2612 lib/RT/Ticket_Overlay.pm:2681 +msgid "Can't specifiy both base and target" +msgstr "" + +#: html/autohandler:99 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "" + +#: etc/initialdata:50 html/Admin/Queues/People.html:44 html/SelfService/Create.html:49 html/Ticket/Create.html:64 html/Ticket/Elements/EditPeople:51 html/Ticket/Elements/ShowPeople:35 html/Ticket/Update.html:45 html/Ticket/Update.html:78 lib/RT/ACE_Overlay.pm:88 +msgid "Cc" +msgstr "העתק" + +#: html/SelfService/Prefs.html:31 +msgid "Change password" +msgstr "" + +#: html/Ticket/Create.html:101 html/Ticket/Update.html:92 +msgid "Check box to delete" +msgstr "סמן תיבה כדי למחוק" + +#: html/Admin/Elements/SelectRights:31 +msgid "Check box to revoke right" +msgstr "סמן תיבה כדי לבטל זכות" + +#: html/Ticket/Create.html:183 html/Ticket/Elements/EditLinks:131 html/Ticket/Elements/EditLinks:69 html/Ticket/Elements/ShowLinks:57 +msgid "Children" +msgstr "ילדי×" + +#: html/Admin/Elements/ModifyUser:80 html/Admin/Users/Modify.html:132 html/User/Prefs.html:92 +msgid "City" +msgstr "עיר" + +#: html/Ticket/Elements/ShowDates:47 +msgid "Closed" +msgstr "× ×¡×’×¨" + +#: html/SelfService/Closed.html:25 +msgid "Closed Tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Closed requests" +msgstr "" + +#: html/SelfService/Elements/Tabs:45 +msgid "Closed tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Code" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:153 +msgid "Comment" +msgstr "הערה" + +#: html/Admin/Elements/ModifyQueue:45 html/Admin/Queues/Modify.html:58 +msgid "Comment Address" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Comment on tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "CommentOnTicket" +msgstr "" + +#: html/Admin/Elements/ModifyUser:35 +msgid "Comments" +msgstr "" + +#: html/Ticket/ModifyAll.html:70 html/Ticket/Update.html:70 +msgid "Comments (Not sent to requestors)" +msgstr "הערות (×œ× × ×©×œ×—×•×ª ×ל המבקשי×)" + +#: html/Search/Bulk.html:122 +msgid "Comments (not sent to requestors)" +msgstr "הערות (×œ× × ×©×œ×—×•×ª ×ל המבקשי×)" + +#: html/Elements/ViewUser:27 +#. ($name) +msgid "Comments about %1" +msgstr "הערות לגבי %1" + +#: html/Admin/Users/Modify.html:185 html/Ticket/Elements/ShowRequestor:44 +msgid "Comments about this user" +msgstr "הערות לגבי משתמש ×–×”" + +#: lib/RT/Transaction_Overlay.pm:543 +msgid "Comments added" +msgstr "הערות × ×•×¡×¤×•" + +#: lib/RT/Action/Generic.pm:140 +msgid "Commit Stubbed" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "" + +#: html/Admin/Elements/EditScrip:41 +msgid "Condition" +msgstr "" + +#: bin/rt-crontool:109 +msgid "Condition matches..." +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:160 +msgid "Condition not found" +msgstr "" + +#: html/Elements/Tabs:50 +msgid "Configuration" +msgstr "הגדרות" + +#: html/SelfService/Prefs.html:33 +msgid "Confirm" +msgstr "" + +#: html/Admin/Elements/ModifyUser:60 +msgid "ContactInfoSystem" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "" + +#: html/Admin/Elements/ModifyTemplate:44 html/Ticket/ModifyAll.html:87 +msgid "Content" +msgstr "תוכן" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "" + +#: etc/initialdata:271 +msgid "Correspondence" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:39 html/Admin/Queues/Modify.html:51 +msgid "Correspondence Address" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:539 +msgid "Correspondence added" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3525 +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 "" + +#: lib/RT/Ticket_Overlay.pm:3031 lib/RT/Ticket_Overlay.pm:3039 lib/RT/Ticket_Overlay.pm:3055 +msgid "Could not change owner. " +msgstr "" + +#: html/Admin/Elements/EditCustomField:85 html/Admin/Elements/EditCustomFields:166 +#. ($msg) +msgid "Could not create CustomField" +msgstr "" + +#: html/User/Groups/Modify.html:77 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 +msgid "Could not create group" +msgstr "" + +#: html/Admin/Global/Template.html:75 html/Admin/Queues/Template.html:72 +#. ($msg) +msgid "Could not create template: %1" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1073 lib/RT/Ticket_Overlay.pm:334 +msgid "Could not create ticket. Queue not set" +msgstr "" + +#: lib/RT/User_Overlay.pm:208 lib/RT/User_Overlay.pm:220 lib/RT/User_Overlay.pm:238 lib/RT/User_Overlay.pm:422 +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 find a ticket with id %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Could not find group %1." +msgstr "" + +#: lib/RT/Queue_Overlay.pm:621 lib/RT/Ticket_Overlay.pm:1422 +msgid "Could not find or create that user" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1501 +msgid "Could not find that principal" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "" + +#: html/Admin/Groups/Members.html:88 html/User/Groups/Members.html:90 html/User/Groups/Modify.html:82 +msgid "Could not load group" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1443 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "" + +#: lib/RT/Group_Overlay.pm:985 +msgid "Couldn't add member to group" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3535 lib/RT/Ticket_Overlay.pm:3591 +#. ($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 "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find group\\n" +msgstr "" + +#: lib/RT/Interface/Web.pm:900 +msgid "Couldn't find row" +msgstr "" + +#: lib/RT/Group_Overlay.pm:959 +msgid "Couldn't find that principal" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:240 +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 "" + +#: lib/RT/CurrentUser.pm:112 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load KeywordSelects." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load RT config file '%1' %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load Scrips." +msgstr "" + +#: html/Admin/Groups/GroupRights.html:88 html/Admin/Groups/UserRights.html:75 +#. ($id) +msgid "Couldn't load group %1" +msgstr "" + +#: lib/RT/Link_Overlay.pm:175 lib/RT/Link_Overlay.pm:184 lib/RT/Link_Overlay.pm:211 +msgid "Couldn't load link" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:147 html/Admin/Queues/People.html:121 +#. ($id) +msgid "Couldn't load queue" +msgstr "" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:72 +#. ($id) +msgid "Couldn't load queue %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "" + +#: html/Admin/Users/Prefs.html:79 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "" + +#: html/SelfService/Display.html:109 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "" + +#: html/Admin/Elements/ModifyUser:86 html/Admin/Users/Modify.html:149 html/User/Prefs.html:98 +msgid "Country" +msgstr "×רץ" + +#: html/Admin/Elements/CreateUserCalled:26 html/Ticket/Create.html:135 html/Ticket/Create.html:195 +msgid "Create" +msgstr "צור" + +#: etc/initialdata:128 +msgid "Create Tickets" +msgstr "צור ×¤× ×™×•×ª" + +#: html/Admin/Elements/EditCustomField:75 +msgid "Create a CustomField" +msgstr "" + +#: html/Admin/Queues/CustomField.html:48 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "" + +#: html/Admin/Global/CustomField.html:48 +msgid "Create a CustomField which applies to all queues" +msgstr "" + +#: 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:67 html/Admin/Groups/Modify.html:93 +msgid "Create a new group" +msgstr "" + +#: html/User/Groups/Modify.html:67 html/User/Groups/Modify.html:92 +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:25 html/Ticket/Create.html:28 html/Ticket/Create.html:36 +msgid "Create a new ticket" +msgstr "צור ×¤× ×™×™×” חדשה" + +#: html/Admin/Users/Modify.html:214 html/Admin/Users/Modify.html:241 +msgid "Create a new user" +msgstr "צור משתמש חדש" + +#: html/Admin/Queues/Modify.html:103 +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:59 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "" + +#: html/Admin/Global/Template.html:69 html/Admin/Queues/Template.html:65 +msgid "Create a template" +msgstr "" + +#: html/SelfService/Create.html:25 +msgid "Create a ticket" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1 / %2 / %3 " +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1/%2/%3" +msgstr "" + +#: etc/initialdata:130 +msgid "Create new tickets based on this scrip's template" +msgstr "" + +#: html/SelfService/Create.html:78 +msgid "Create ticket" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Create tickets in this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Create, delete and modify custom fields" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:68 +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:59 +msgid "Create, delete and modify the members of personal groups" +msgstr "" + +#: lib/RT/System.pm:60 +msgid "Create, delete and modify users" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "CreateTicket" +msgstr "" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1167 +msgid "Created" +msgstr "× ×•×¦×¨" + +#: html/Admin/Elements/EditCustomField:88 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "" + +#: html/Ticket/Elements/EditLinks:28 +msgid "Current Relationships" +msgstr "×™×—×¡×™× × ×•×›×—×™×™×" + +#: html/Admin/Elements/EditScrips:30 +msgid "Current Scrips" +msgstr "" + +#: html/Admin/Groups/Members.html:39 html/User/Groups/Members.html:42 +msgid "Current members" +msgstr "" + +#: html/Admin/Elements/SelectRights:29 +msgid "Current rights" +msgstr "" + +#: html/Search/Listing.html:71 +msgid "Current search criteria" +msgstr "×§×¨×™×˜×¨×™×•× ×™ החיפוש ×”× ×•×›×—×™×™×" + +#: html/Admin/Queues/People.html:41 html/Ticket/Elements/EditPeople:45 +msgid "Current watchers" +msgstr "×¦×•×¤×™× × ×•×›×—×™×™×" + +#: html/Admin/Global/CustomField.html:55 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "" + +#: html/Admin/Elements/QueueTabs:53 html/Admin/Elements/SystemTabs:40 html/Admin/Global/index.html:50 html/Ticket/Elements/ShowSummary:36 +msgid "Custom Fields" +msgstr "" + +#: html/Admin/Elements/EditScrip:73 +msgid "Custom action cleanup code" +msgstr "" + +#: html/Admin/Elements/EditScrip:65 +msgid "Custom action preparation code" +msgstr "" + +#: html/Admin/Elements/EditScrip:49 +msgid "Custom condition" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3427 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:197 +msgid "Custom field deleted" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3577 +msgid "Custom field not found" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:350 +#. ($args{'Content'}, $self->Name) +msgid "Custom field value %1 could not be found for custom field %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Custom field value changed from %1 to %2" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:250 +msgid "Custom field value could not be deleted" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:356 +msgid "Custom field value could not be found" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:248 lib/RT/CustomField_Overlay.pm:358 +msgid "Custom field value deleted" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:548 +msgid "CustomField" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "" + +#: html/SelfService/Display.html:39 html/Ticket/Create.html:161 html/Ticket/Elements/ShowSummary:55 html/Ticket/Elements/Tabs:93 html/Ticket/ModifyAll.html:44 +msgid "Dates" +msgstr "ת×ריכי×" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "דצמבר" + +#: NOT FOUND IN SOURCE +msgid "December" +msgstr "דצמבר" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "" + +#: etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "" + +#: etc/initialdata:281 +msgid "Default admin comment template" +msgstr "" + +#: etc/initialdata:260 +msgid "Default admin correspondence template" +msgstr "" + +#: etc/initialdata:272 +msgid "Default correspondence template" +msgstr "" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:643 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "" + +#: html/User/Delegation.html:25 html/User/Delegation.html:28 +msgid "Delegate rights" +msgstr "" + +#: lib/RT/System.pm:63 +msgid "Delegate specific rights which have been granted to you." +msgstr "" + +#: lib/RT/System.pm:63 +msgid "DelegateRights" +msgstr "" + +#: html/User/Elements/Tabs:38 +msgid "Delegation" +msgstr "דלגציות" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "מחק" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "Delete tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "DeleteTicket" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:292 +msgid "Deleting this object would break referential integrity" +msgstr "" + +#: lib/RT/User_Overlay.pm:438 +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:45 +msgid "Deny" +msgstr "" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/EditLinks:123 html/Ticket/Elements/EditLinks:47 html/Ticket/Elements/ShowDependencies:32 html/Ticket/Elements/ShowLinks:37 +msgid "Depended on by" +msgstr "×ª×œ×•×™×™× ×‘×•" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:180 html/Ticket/Elements/EditLinks:119 html/Ticket/Elements/EditLinks:36 html/Ticket/Elements/ShowDependencies:25 html/Ticket/Elements/ShowLinks:27 +msgid "Depends on" +msgstr "תלוי ב" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "" + +#: html/Elements/SelectSortOrder:35 +msgid "Descending" +msgstr "יורד" + +#: html/SelfService/Create.html:73 html/Ticket/Create.html:119 +msgid "Describe the issue below" +msgstr "" + +#: html/Admin/Elements/AddCustomFieldValue:37 html/Admin/Elements/EditCustomField:39 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyQueue:36 html/Admin/Elements/ModifyTemplate:36 html/Admin/Groups/Modify.html:49 html/Admin/Queues/Modify.html:48 html/Elements/SelectGroups:27 html/User/Groups/Modify.html:49 +msgid "Description" +msgstr "תי×ור" + +#: NOT FOUND IN SOURCE +msgid "Details" +msgstr "פרטי×" + +#: html/Ticket/Elements/Tabs:85 +msgid "Display" +msgstr "הצג" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Display Access Control List" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Display Scrip templates for this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Display Scrips for this queue" +msgstr "" + +#: html/Ticket/Elements/ShowHistory:35 +msgid "Display mode" +msgstr "מצב תצוגה" + +#: NOT FOUND IN SOURCE +msgid "Display ticket #%1" +msgstr "הצג ×¤× ×™×™×” #%1" + +#: lib/RT/System.pm:54 +msgid "Do anything and everything" +msgstr "" + +#: html/Elements/Refresh:30 +msgid "Don't refresh this page." +msgstr "×ל ×ª×¨×¢× ×Ÿ דף ×–×”." + +#: html/Search/Elements/PickRestriction:114 +msgid "Don't show search results" +msgstr "×ל תר××” ×ת תוצ×ות החיפוש" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "Download" +msgstr "הורד" + +#: html/Elements/SelectDateType:32 html/Ticket/Create.html:167 html/Ticket/Elements/EditDates:45 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1171 +msgid "Due" +msgstr "ת×ריך יעד" + +#: NOT FOUND IN SOURCE +msgid "Due date '%1' could not be parsed" +msgstr "" + +#: bin/rt-commit-handler:754 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit Conditions" +msgstr "" + +#: html/Admin/Queues/CustomFields.html:45 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "" + +#: html/Ticket/ModifyLinks.html:36 +msgid "Edit Relationships" +msgstr "" + +#: html/Admin/Queues/Templates.html:42 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit keywords" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "" + +#: html/Admin/Global/index.html:46 +msgid "Edit system templates" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit templates for %1" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:25 html/Admin/Queues/Modify.html:118 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "" + +#: html/Admin/Elements/ModifyUser:25 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "" + +#: html/Admin/Elements/EditCustomField:91 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "" + +#: html/Admin/Groups/Members.html:32 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "" + +#: html/User/Groups/Members.html:129 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2622 lib/RT/Ticket_Overlay.pm:2690 +msgid "Either base or target must be specified" +msgstr "" + +#: html/Admin/Users/Modify.html:53 html/Admin/Users/Prefs.html:46 html/Elements/SelectUsers:27 html/Ticket/Elements/AddWatchers:56 html/User/Prefs.html:42 +msgid "Email" +msgstr "××™-מייל" + +#: lib/RT/User_Overlay.pm:188 +msgid "Email address in use" +msgstr "" + +#: html/Admin/Elements/ModifyUser:42 +msgid "EmailAddress" +msgstr "" + +#: html/Admin/Elements/ModifyUser:54 +msgid "EmailEncoding" +msgstr "" + +#: html/Admin/Elements/EditCustomField:51 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "" + +#: html/Admin/Groups/Modify.html:53 html/User/Groups/Modify.html:53 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "מופעל (מחיקת סימון תיבה זו מבטלת ×ת קבוצה זו)" + +#: html/Admin/Queues/Modify.html:84 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:99 +msgid "Enabled Custom Fields" +msgstr "" + +#: html/Admin/Queues/index.html:56 +msgid "Enabled Queues" +msgstr "" + +#: html/Admin/Elements/EditCustomField:107 html/Admin/Groups/Modify.html:117 html/Admin/Queues/Modify.html:140 html/Admin/Users/Modify.html:283 html/User/Groups/Modify.html:117 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:428 +msgid "Enter multiple values" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:425 +msgid "Enter one value" +msgstr "" + +#: html/Ticket/Elements/EditLinks:112 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "×”×›× ×¡ ×¤× ×™×•×ª ×ו כתובות כדי לקשר ×¤× ×™×•×ª ×ליהן. הפרד ×¢×¨×›×™× ×¨×‘×™× ×‘×מצעות רווחי×." + +#: html/Elements/Login:39 html/SelfService/Error.html:25 html/SelfService/Error.html:26 +msgid "Error" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1356 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1532 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "" + +#: bin/rt-crontool:194 +msgid "Example:" +msgstr "" + +#: html/Admin/Elements/ModifyUser:64 +msgid "ExternalAuthId" +msgstr "" + +#: html/Admin/Elements/ModifyUser:58 +msgid "ExternalContactInfoId" +msgstr "" + +#: html/Admin/Users/Modify.html:73 +msgid "Extra info" +msgstr "" + +#: lib/RT/User_Overlay.pm:302 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "" + +#: lib/RT/User_Overlay.pm:309 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "" + +#: bin/rt-crontool:138 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "פברו×ר" + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "פברו×ר" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:59 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "עדיפות סופית" + +#: lib/RT/Ticket_Overlay.pm:1162 +msgid "FinalPriority" +msgstr "" + +#: html/Admin/Queues/People.html:61 html/Ticket/Elements/EditPeople:34 +msgid "Find group whose" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Find new/open tickets" +msgstr "" + +#: html/Admin/Queues/People.html:57 html/Admin/Users/index.html:46 html/Ticket/Elements/EditPeople:30 +msgid "Find people whose" +msgstr "×ž×¦× ×× ×©×™× ×©" + +#: html/Search/Listing.html:108 +msgid "Find tickets" +msgstr "×ž×¦× ×¤× ×™×•×ª" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "" + +#: html/Ticket/Elements/Tabs:58 +msgid "First" +msgstr "" + +#: html/Search/Listing.html:41 +msgid "First page" +msgstr "עמוד ר×שון" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "" + +#: html/Search/Bulk.html:87 +msgid "Force change" +msgstr "הכרח ×©×™× ×•×™" + +#: html/Search/Listing.html:106 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "× ×ž×¦×ו %1 ×¤× ×™×•×ª" + +#: lib/RT/Interface/Web.pm:902 +msgid "Found Object" +msgstr "" + +#: html/Admin/Elements/ModifyUser:44 +msgid "FreeformContactInfo" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:38 +msgid "FreeformMultiple" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformSingle" +msgstr "" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "שישי" + +#: html/Ticket/Elements/ShowHistory:41 html/Ticket/Elements/ShowHistory:51 +msgid "Full headers" +msgstr "×›×•×ª×¨×™× ×ž×œ××™×" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:593 +#. ($New->Name) +msgid "Given to %1" +msgstr "" + +#: html/Admin/Elements/Tabs:41 html/Admin/index.html:38 +msgid "Global" +msgstr "גלוב×לי" + +#: NOT FOUND IN SOURCE +msgid "Global Keyword Selections" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "" + +#: html/Admin/Elements/SelectTemplate:38 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:75 html/Admin/Queues/People.html:59 html/Admin/Queues/People.html:63 html/Admin/Queues/index.html:44 html/Admin/Users/index.html:49 html/Ticket/Elements/EditPeople:32 html/Ticket/Elements/EditPeople:36 html/index.html:41 +msgid "Go!" +msgstr "חפש" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "" + +#: html/Search/Listing.html:50 +msgid "Goto page" +msgstr "" + +#: html/Elements/GotoTicket:25 html/SelfService/Elements/GotoTicket:25 +msgid "Goto ticket" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Grand" +msgstr "" + +#: html/Ticket/Elements/AddWatchers:46 html/User/Elements/DelegateRights:78 +msgid "Group" +msgstr "קבוצה" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "קבוצה %1 %2: %3" + +#: html/Admin/Elements/GroupTabs:45 html/Admin/Elements/QueueTabs:57 html/Admin/Elements/SystemTabs:44 html/Admin/Global/index.html:55 +msgid "Group Rights" +msgstr "זכויות קבוצה" + +#: lib/RT/Group_Overlay.pm:965 +msgid "Group already has member" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Group could not be created." +msgstr "" + +#: html/Admin/Groups/Modify.html:77 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:497 +msgid "Group created" +msgstr "" + +#: lib/RT/Group_Overlay.pm:1133 +msgid "Group has no such member" +msgstr "" + +#: lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1429 lib/RT/Ticket_Overlay.pm:1507 +msgid "Group not found" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Group not found.\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Group not specified.\\n" +msgstr "" + +#: html/Admin/Elements/SelectNewGroupMembers:35 html/Admin/Elements/Tabs:35 html/Admin/Groups/Members.html:64 html/Admin/Queues/People.html:83 html/Admin/index.html:32 html/User/Groups/Members.html:67 +msgid "Groups" +msgstr "קבוצות" + +#: lib/RT/Group_Overlay.pm:971 +msgid "Groups can't be members of their members" +msgstr "" + +#: lib/RT/Interface/CLI.pm:73 lib/RT/Interface/CLI.pm:73 +msgid "Hello!" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "" + +#: html/Ticket/Elements/ShowHistory:30 html/Ticket/Elements/Tabs:88 +msgid "History" +msgstr "הסטוריה" + +#: html/Admin/Elements/ModifyUser:68 +msgid "HomePhone" +msgstr "" + +#: html/Elements/Tabs:44 +msgid "Homepage" +msgstr "דף הבית" + +#: lib/RT/Base.pm:74 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "I have [quant,_1,concrete mixer]." +msgstr "" + +#: html/Ticket/Elements/ShowBasics:27 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "" + +#: html/Admin/Users/Modify.html:44 html/User/Prefs.html:39 +msgid "Identity" +msgstr "זהות" + +#: etc/upgrade/2.1.71:86 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "" + +#: bin/rt-crontool:190 +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:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "If you've updated anything above, be sure to" +msgstr "×× ×¢×“×›× ×ª משהו לעיל, ×ל תשכח ל" + +#: lib/RT/Interface/Web.pm:894 +msgid "Illegal value for %1" +msgstr "" + +#: lib/RT/Interface/Web.pm:897 +msgid "Immutable field" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:74 +msgid "Include disabled custom fields in listing." +msgstr "" + +#: html/Admin/Queues/index.html:43 +msgid "Include disabled queues in listing." +msgstr "" + +#: html/Admin/Users/index.html:47 +msgid "Include disabled users in search." +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1161 lib/RT/Ticket_Overlay.pm:1163 +msgid "InitialPriority" +msgstr "" + +#: lib/RT/ScripAction_Overlay.pm:105 +msgid "Input error" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3796 +msgid "Internal Error" +msgstr "" + +#: lib/RT/Record.pm:143 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:644 +msgid "Invalid Group Type" +msgstr "" + +#: lib/RT/Principal_Overlay.pm:128 +msgid "Invalid Right" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "" + +#: lib/RT/Interface/Web.pm:899 +msgid "Invalid data" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:439 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:134 lib/RT/Template_Overlay.pm:251 +msgid "Invalid queue" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:244 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:270 lib/RT/ACE_Overlay.pm:275 +msgid "Invalid right" +msgstr "" + +#: lib/RT/Record.pm:118 +#. ($key) +msgid "Invalid value for %1" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3434 +msgid "Invalid value for custom field" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:346 +msgid "Invalid value for status" +msgstr "" + +#: bin/rt-crontool:191 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "" + +#: bin/rt-crontool:192 +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:163 +msgid "It takes several arguments:" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "×™× ×•×ר" + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "×™× ×•×ר" + +#: lib/RT/Group_Overlay.pm:149 +msgid "Join or leave this group" +msgstr "" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "יולי" + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "יולי" + +#: html/Ticket/Elements/Tabs:99 +msgid "Jumbo" +msgstr "×’'מבו" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "×™×•× ×™" + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "×™×•× ×™" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "" + +#: html/Admin/Elements/ModifyUser:52 +msgid "Lang" +msgstr "" + +#: html/Ticket/Elements/Tabs:73 +msgid "Last" +msgstr "" + +#: html/Ticket/Elements/EditDates:38 html/Ticket/Elements/ShowDates:39 +msgid "Last Contact" +msgstr "מגע ×חרון" + +#: html/Elements/SelectDateType:29 +msgid "Last Contacted" +msgstr "קשר ×חרון" + +#: html/Search/Elements/TicketHeader:41 +msgid "Last Notified" +msgstr "× ×•×“×¢ ל××—×¨×•× ×”" + +#: html/Elements/SelectDateType:30 +msgid "Last Updated" +msgstr "עדכון ×חרון" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "× ×•×ª×¨×”" + +#: html/Admin/Users/Modify.html:83 +msgid "Let this user access RT" +msgstr "תן למשתמש ×–×” לגשת ל R" + +#: html/Admin/Users/Modify.html:87 +msgid "Let this user be granted rights" +msgstr "תן ×פשרות ×œ×”×¢× ×™×§ זכויות למשתמש ×–×”" + +#: NOT FOUND IN SOURCE +msgid "Limiting owner to %1 %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Limiting queue to %1 %2" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2704 +msgid "Link already exists" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2716 +msgid "Link could not be created" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2724 lib/RT/Ticket_Overlay.pm:2734 +#. ($TransString) +msgid "Link created (%1)" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2645 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2651 +msgid "Link not found" +msgstr "" + +#: html/Ticket/ModifyLinks.html:25 html/Ticket/ModifyLinks.html:29 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "" + +#: html/Ticket/Elements/Tabs:97 +msgid "Links" +msgstr "קישורי×" + +#: html/Admin/Users/Modify.html:114 html/User/Prefs.html:85 +msgid "Location" +msgstr "מיקו×" + +#: lib/RT.pm:159 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "" + +#: html/Elements/Header:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "מחובר ×› %1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:35 html/Elements/Login:44 html/Elements/Login:54 +msgid "Login" +msgstr "×›× ×™×¡×”" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "יצי××”" + +#: html/Search/Bulk.html:86 +msgid "Make Owner" +msgstr "×©× ×” בעלות ל" + +#: html/Search/Bulk.html:102 +msgid "Make Status" +msgstr "×©× ×” סטטוס" + +#: html/Search/Bulk.html:109 +msgid "Make date Due" +msgstr "×©× ×” ת×ריך יעד" + +#: html/Search/Bulk.html:110 +msgid "Make date Resolved" +msgstr "×©× ×” ת×ריך פתרון" + +#: html/Search/Bulk.html:107 +msgid "Make date Started" +msgstr "×©× ×” ת×ריך 'הותחל'" + +#: html/Search/Bulk.html:106 +msgid "Make date Starts" +msgstr "×©× ×” ת×ריך התחלה" + +#: html/Search/Bulk.html:108 +msgid "Make date Told" +msgstr "×©× ×¢ ת×ריך מגע ×חרון" + +#: html/Search/Bulk.html:99 +msgid "Make priority" +msgstr "×©× ×” עדיפות" + +#: html/Search/Bulk.html:100 +msgid "Make queue" +msgstr "×©× ×” תור" + +#: html/Search/Bulk.html:98 +msgid "Make subject" +msgstr "×©× ×” × ×•×©×" + +#: html/Admin/index.html:33 +msgid "Manage groups and group membership" +msgstr "× ×”×œ קבוצות וחברות בקבוצות" + +#: html/Admin/index.html:39 +msgid "Manage properties and configuration which apply to all queues" +msgstr "× ×”×œ מ××¤×™×™× ×™× ×•×”×’×“×¨×•×ª ×©×ª×§×¤×™× ×œ×›×œ התורות" + +#: html/Admin/index.html:36 +msgid "Manage queues and queue-specific properties" +msgstr "× ×”×œ תורות ומ××¤×™×™× ×™× ×¡×¤×¦×™×¤×™×™× ×œ×ª×•×¨×•×ª" + +#: html/Admin/index.html:30 +msgid "Manage users and passwords" +msgstr "× ×”×œ ×ž×©×ª×ž×©×™× ×•×¡×¤×¨×™×•×ª" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "מרץ" + +#: NOT FOUND IN SOURCE +msgid "March" +msgstr "מרץ" + +#: NOT FOUND IN SOURCE +msgid "May" +msgstr "מ××™" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "מ××™" + +#: lib/RT/Group_Overlay.pm:982 +msgid "Member added" +msgstr "חבר הוסף" + +#: lib/RT/Group_Overlay.pm:1140 +msgid "Member deleted" +msgstr "חבר × ×ž×—×§" + +#: lib/RT/Group_Overlay.pm:1144 +msgid "Member not deleted" +msgstr "חבר ×œ× × ×ž×—×§" + +#: html/Elements/SelectLinkType:26 +msgid "Member of" +msgstr "חבר ב" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "" + +#: html/Admin/Elements/GroupTabs:42 html/User/Elements/GroupTabs:42 +msgid "Members" +msgstr "חברי×" + +#: lib/RT/Ticket_Overlay.pm:2891 +msgid "Merge Successful" +msgstr "מיזוג הצליח" + +#: lib/RT/Ticket_Overlay.pm:2811 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "מיזוג × ×›×©×œ. ×œ× ×™×›×•×œ×ª×™ להגדיר מזהה ×פקטיבי" + +#: html/Ticket/Elements/EditLinks:115 +msgid "Merge into" +msgstr "מזג לתוך" + +#: html/Ticket/Update.html:102 +msgid "Message" +msgstr "הודעה" + +#: lib/RT/Interface/Web.pm:901 +msgid "Missing a primary key?: %1" +msgstr "חסר מפתח ר×שי?: %1" + +#: html/Admin/Users/Modify.html:169 html/User/Prefs.html:54 +msgid "Mobile" +msgstr "× ×™×™×“" + +#: html/Admin/Elements/ModifyUser:72 +msgid "MobilePhone" +msgstr "טלפון × ×™×™×“" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify Access Control List" +msgstr "×©× ×” רשימת בקרת גישה" + +#: NOT FOUND IN SOURCE +msgid "Modify Custom Field %1" +msgstr "" + +#: html/Admin/Global/CustomFields.html:44 html/Admin/Global/index.html:51 +msgid "Modify Custom Fields which apply to all queues" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "Modify Scrip templates for this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:76 +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 "" + +#: html/Admin/Queues/CustomField.html:45 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "" + +#: html/Admin/Global/CustomField.html:53 +msgid "Modify a CustomField which applies to all queues" +msgstr "" + +#: html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "" + +#: html/Admin/Global/Scrip.html:48 +msgid "Modify a scrip which applies to all queues" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "" + +#: html/Ticket/ModifyDates.html:25 html/Ticket/ModifyDates.html:29 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "" + +#: html/Ticket/ModifyDates.html:35 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "" + +#: html/Admin/Global/GroupRights.html:25 html/Admin/Global/GroupRights.html:28 html/Admin/Global/index.html:56 +msgid "Modify global group rights" +msgstr "" + +#: html/Admin/Global/GroupRights.html:33 +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:25 html/Admin/Global/UserRights.html:28 html/Admin/Global/index.html:60 +msgid "Modify global user rights" +msgstr "" + +#: html/Admin/Global/UserRights.html:33 +msgid "Modify global user rights." +msgstr "" + +#: lib/RT/Group_Overlay.pm:146 +msgid "Modify group metadata or delete group" +msgstr "" + +#: html/Admin/Groups/GroupRights.html:25 html/Admin/Groups/GroupRights.html:29 html/Admin/Groups/GroupRights.html:35 +#. ($GroupObj->Name) +msgid "Modify group rights for group %1" +msgstr "" + +#: html/Admin/Queues/GroupRights.html:25 html/Admin/Queues/GroupRights.html:29 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Modify membership roster for this group" +msgstr "" + +#: lib/RT/System.pm:61 +msgid "Modify one's own RT account" +msgstr "" + +#: html/Admin/Queues/People.html:25 html/Admin/Queues/People.html:29 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "" + +#: html/Ticket/ModifyPeople.html:25 html/Ticket/ModifyPeople.html:29 html/Ticket/ModifyPeople.html:35 +#. ($Ticket->id) +#. ($Ticket->Id) +msgid "Modify people related to ticket #%1" +msgstr "" + +#: html/Admin/Queues/Scrips.html:44 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "" + +#: html/Admin/Global/Scrips.html:44 html/Admin/Global/index.html:42 +msgid "Modify scrips which apply to all queues" +msgstr "" + +#: html/Admin/Global/Template.html:25 html/Admin/Global/Template.html:30 html/Admin/Global/Template.html:81 html/Admin/Queues/Template.html:78 +#. (loc($TemplateObj->Name())) +#. ($TemplateObj->id) +msgid "Modify template %1" +msgstr "" + +#: html/Admin/Global/Templates.html:44 +msgid "Modify templates which apply to all queues" +msgstr "" + +#: html/Admin/Groups/Modify.html:87 html/User/Groups/Modify.html:86 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Modify the queue watchers" +msgstr "" + +#: html/Admin/Users/Modify.html:236 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "" + +#: html/Ticket/ModifyAll.html:37 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "×©× ×” ×¤× ×™×™×” מספר %1" + +#: html/Ticket/Modify.html:25 html/Ticket/Modify.html:28 html/Ticket/Modify.html:34 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "×©×™× ×•×™ ×¤× ×•×™×™×” מספר %1" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Modify tickets" +msgstr "×©×™× ×•×™ ×¤× ×™×•×ª" + +#: html/Admin/Groups/UserRights.html:25 html/Admin/Groups/UserRights.html:29 html/Admin/Groups/UserRights.html:35 +#. ($GroupObj->Name) +msgid "Modify user rights for group %1" +msgstr "" + +#: html/Admin/Queues/UserRights.html:25 html/Admin/Queues/UserRights.html:29 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyACL" +msgstr "" + +#: lib/RT/Group_Overlay.pm:149 +msgid "ModifyOwnMembership" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "ModifyQueueWatchers" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "ModifyScrips" +msgstr "" + +#: lib/RT/System.pm:61 +msgid "ModifySelf" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "ModifyTemplate" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "ModifyTicket" +msgstr "" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "×©× ×™" + +#: html/Ticket/Elements/ShowRequestor:42 +#. ($name) +msgid "More about %1" +msgstr "עוד לגבי %1" + +#: html/Admin/Elements/EditCustomFields:61 +msgid "Move down" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:53 +msgid "Move up" +msgstr "" + +#: html/Admin/Elements/SelectSingleOrMultiple:27 +msgid "Multiple" +msgstr "" + +#: lib/RT/User_Overlay.pm:179 +msgid "Must specify 'Name' attribute" +msgstr "" + +#: html/SelfService/Elements/MyRequests:49 +#. ($friendly_status) +msgid "My %1 tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "×”××™×©×•×¨×™× ×©×œ×™" + +#: html/Approvals/index.html:25 html/Approvals/index.html:26 +msgid "My approvals" +msgstr "×”××™×©×•×¨×™× ×©×œ×™" + +#: html/Admin/Elements/AddCustomFieldValue:33 html/Admin/Elements/EditCustomField:34 html/Admin/Elements/ModifyTemplate:28 html/Admin/Elements/ModifyUser:30 html/Admin/Groups/Modify.html:44 html/Elements/SelectGroups:26 html/Elements/SelectUsers:28 html/User/Groups/Modify.html:44 +msgid "Name" +msgstr "ש×" + +#: lib/RT/User_Overlay.pm:186 +msgid "Name in use" +msgstr "×©× ×‘×©×™×ž×•×©" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "" + +#: html/Ticket/Elements/ShowDates:52 +msgid "Never" +msgstr "" + +#: html/Elements/Quicksearch:30 +msgid "New" +msgstr "חדש" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:93 html/User/Prefs.html:65 +msgid "New Password" +msgstr "×¡×™×¡×ž× ×—×“×©×”" + +#: etc/initialdata:317 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "" + +#: html/Ticket/Elements/EditLinks:111 +msgid "New Relationships" +msgstr "×™×—×¡×™× ×—×“×©×™×" + +#: html/Ticket/Elements/Tabs:36 +msgid "New Search" +msgstr "חיפוש חדש" + +#: html/Admin/Global/CustomField.html:41 html/Admin/Global/CustomFields.html:39 html/Admin/Queues/CustomField.html:52 html/Admin/Queues/CustomFields.html:40 +msgid "New custom field" +msgstr "" + +#: html/Admin/Elements/GroupTabs:54 html/User/Elements/GroupTabs:52 +msgid "New group" +msgstr "קבוצה חדשה" + +#: html/SelfService/Prefs.html:32 +msgid "New password" +msgstr "×¡×™×¡×ž× ×—×“×©×”" + +#: lib/RT/User_Overlay.pm:647 +msgid "New password notification sent" +msgstr "" + +#: html/Admin/Elements/QueueTabs:70 +msgid "New queue" +msgstr "תור חדש" + +#: NOT FOUND IN SOURCE +msgid "New request" +msgstr "בקשה חדשה" + +#: html/Admin/Elements/SelectRights:42 +msgid "New rights" +msgstr "זכויות חדשות" + +#: html/Admin/Global/Scrip.html:40 html/Admin/Global/Scrips.html:39 html/Admin/Queues/Scrip.html:43 html/Admin/Queues/Scrips.html:53 +msgid "New scrip" +msgstr "סקריפ חדש" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "חיפוש חדש" + +#: html/Admin/Global/Template.html:60 html/Admin/Global/Templates.html:39 html/Admin/Queues/Template.html:58 html/Admin/Queues/Templates.html:50 +msgid "New template" +msgstr "×ª×‘× ×™×ª חדשה" + +#: html/SelfService/Elements/Tabs:48 +msgid "New ticket" +msgstr "×¤× ×™×™×” חדשה" + +#: lib/RT/Ticket_Overlay.pm:2778 +msgid "New ticket doesn't exist" +msgstr "×¤× ×™×™×” חדשה ×œ× ×§×™×™×ž×ª" + +#: html/Admin/Elements/UserTabs:52 +msgid "New user" +msgstr "משתמש חדש" + +#: html/Admin/Elements/CreateUserCalled:26 +msgid "New user called" +msgstr "משתמש חדש ×©× ×§×¨×" + +#: html/Admin/Queues/People.html:55 html/Ticket/Elements/EditPeople:29 +msgid "New watchers" +msgstr "×¦×•×¤×™× ×—×“×©×™×" + +#: html/Admin/Users/Prefs.html:42 +msgid "New window setting" +msgstr "" + +#: html/Ticket/Elements/Tabs:69 +msgid "Next" +msgstr "הב×" + +#: html/Search/Listing.html:48 +msgid "Next page" +msgstr "דף הב×" + +#: html/Admin/Elements/ModifyUser:50 +msgid "NickName" +msgstr "×›×™× ×•×™" + +#: html/Admin/Users/Modify.html:63 html/User/Prefs.html:46 +msgid "Nickname" +msgstr "×›×™× ×•×™" + +#: html/Admin/Elements/EditCustomField:90 html/Admin/Elements/EditCustomFields:105 +msgid "No CustomField" +msgstr "" + +#: html/Admin/Groups/GroupRights.html:84 html/Admin/Groups/UserRights.html:71 +msgid "No Group defined" +msgstr "" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:68 +msgid "No Queue defined" +msgstr "" + +#: bin/rt-crontool:56 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "" + +#: html/Admin/Global/Template.html:79 html/Admin/Queues/Template.html:76 +msgid "No Template" +msgstr "" + +#: bin/rt-commit-handler:764 +msgid "No Ticket specified. Aborting ticket " +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "" + +#: html/Approvals/Elements/Approve:46 +msgid "No action" +msgstr "" + +#: lib/RT/Interface/Web.pm:896 +msgid "No column specified" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "" + +#: html/Elements/ViewUser:36 html/Ticket/Elements/ShowRequestor:45 +msgid "No comment entered about this user" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2189 lib/RT/Ticket_Overlay.pm:2257 +msgid "No correspondence attached" +msgstr "" + +#: lib/RT/Action/Generic.pm:150 lib/RT/Condition/Generic.pm:176 lib/RT/Search/ActiveTicketsInQueue.pm:56 lib/RT/Search/Generic.pm:113 +#. (ref $self) +msgid "No description for %1" +msgstr "" + +#: lib/RT/Users_Overlay.pm:145 +msgid "No group specified" +msgstr "" + +#: lib/RT/User_Overlay.pm:865 +msgid "No password set" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:259 +msgid "No permission to create queues" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:342 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "" + +#: lib/RT/User_Overlay.pm:152 +msgid "No permission to create users" +msgstr "" + +#: html/SelfService/Display.html:118 +msgid "No permission to display that ticket" +msgstr "" + +#: html/SelfService/Update.html:52 +msgid "No permission to view update ticket" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1488 +msgid "No principal specified" +msgstr "" + +#: html/Admin/Queues/People.html:154 html/Admin/Queues/People.html:164 +msgid "No principals selected." +msgstr "" + +#: html/Admin/Queues/index.html:35 +msgid "No queues matching search criteria found." +msgstr "" + +#: html/Admin/Elements/SelectRights:81 +msgid "No rights found" +msgstr "" + +#: html/Admin/Elements/SelectRights:33 +msgid "No rights granted." +msgstr "" + +#: html/Search/Bulk.html:149 +msgid "No search to operate on." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:478 lib/RT/Transaction_Overlay.pm:516 +msgid "No transaction type specified" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "No user or email address specified" +msgstr "" + +#: html/Admin/Users/index.html:36 +msgid "No users matching search criteria found." +msgstr "" + +#: bin/rt-commit-handler:644 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "" + +#: lib/RT/Interface/Web.pm:893 +msgid "No value sent to _Set!\\n" +msgstr "" + +#: html/Search/Elements/TicketRow:37 +msgid "Nobody" +msgstr "××£ ×חד" + +#: lib/RT/Interface/Web.pm:898 +msgid "Nonexistant field?" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Not logged in" +msgstr "×œ× ×‘×ª×•×š המערכת" + +#: html/Elements/Header:59 +msgid "Not logged in." +msgstr "×œ× ×‘×ª×•×š המערכת." + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "×œ× ×”×•×–×Ÿ" + +#: html/NoAuth/Reminder.html:27 +msgid "Not yet implemented." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Not yet implemented...." +msgstr "" + +#: html/Approvals/Elements/Approve:49 +msgid "Notes" +msgstr "" + +#: lib/RT/User_Overlay.pm:650 +msgid "Notification could not be sent" +msgstr "" + +#: etc/initialdata:94 +msgid "Notify AdminCcs" +msgstr "" + +#: etc/initialdata:90 +msgid "Notify AdminCcs as Comment" +msgstr "" + +#: etc/initialdata:121 +msgid "Notify Other Recipients" +msgstr "" + +#: etc/initialdata:117 +msgid "Notify Other Recipients as Comment" +msgstr "" + +#: etc/initialdata:86 +msgid "Notify Owner" +msgstr "" + +#: etc/initialdata:82 +msgid "Notify Owner as Comment" +msgstr "" + +#: etc/initialdata:319 etc/upgrade/2.1.71:17 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "" + +#: etc/initialdata:78 +msgid "Notify Requestors" +msgstr "" + +#: etc/initialdata:104 +msgid "Notify Requestors and Ccs" +msgstr "" + +#: etc/initialdata:99 +msgid "Notify Requestors and Ccs as Comment" +msgstr "" + +#: etc/initialdata:113 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "" + +#: etc/initialdata:109 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "× ×•×‘×ž×‘×¨" + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "× ×•×‘×ž×‘×¨" + +#: lib/RT/Record.pm:157 +msgid "Object could not be created" +msgstr "" + +#: lib/RT/Record.pm:176 +msgid "Object created" +msgstr "" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "×וקטובר" + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "×וקטובר" + +#: html/Elements/SelectDateRelation:35 +msgid "On" +msgstr "ב" + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:50 +#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") +msgid "Only show approvals for requests created after %1" +msgstr "הצג רק ××™×©×•×¨×™× ×¢×‘×•×¨ בקשות ×©× ×•×¦×¨×• ×חרי %1" + +#: html/Approvals/Elements/PendingMyApproval:48 +#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") +msgid "Only show approvals for requests created before %1" +msgstr "הצג רק ××™×©×•×¨×™× ×¢×‘×•×¨ בקשות ×©× ×•×¦×¨×• ×œ×¤× ×™ %1" + +#: html/Elements/Quicksearch:31 +msgid "Open" +msgstr "פתוח" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "פתח" + +#: NOT FOUND IN SOURCE +msgid "Open requests" +msgstr "" + +#: html/SelfService/Elements/Tabs:42 +msgid "Open tickets" +msgstr "" + +#: html/Admin/Users/Prefs.html:41 +msgid "Open tickets (from listing) in a new window" +msgstr "" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in another window" +msgstr "" + +#: etc/initialdata:133 +msgid "Open tickets on correspondence" +msgstr "" + +#: html/Search/Elements/PickRestriction:101 +msgid "Ordering and sorting" +msgstr "סידור ומיון" + +#: html/Admin/Elements/ModifyUser:46 html/Admin/Users/Modify.html:117 html/Elements/SelectUsers:29 html/User/Prefs.html:86 +msgid "Organization" +msgstr "×רגון" + +#: html/Approvals/Elements/Approve:33 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:55 html/Admin/Queues/Modify.html:69 +msgid "Over time, priority moves toward" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Own tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "OwnTicket" +msgstr "" + +#: etc/initialdata:38 html/Elements/MyRequests:32 html/SelfService/Elements/MyRequests:30 html/Ticket/Create.html:48 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/EditPeople:44 html/Ticket/Elements/ShowPeople:27 html/Ticket/Update.html:63 lib/RT/ACE_Overlay.pm:86 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "בעלי×" + +#: lib/RT/Ticket_Overlay.pm:3071 +#. ($OldOwnerObj->Name, $NewOwnerObj->Name) +msgid "Owner changed from %1 to %2" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:582 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "" + +#: html/Search/Elements/PickRestriction:31 +msgid "Owner is" +msgstr "הבעלי×" + +#: html/Admin/Users/Modify.html:174 html/User/Prefs.html:56 +msgid "Pager" +msgstr "ביפר" + +#: html/Admin/Elements/ModifyUser:74 +msgid "PagerPhone" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Parent" +msgstr "" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/EditLinks:127 html/Ticket/Elements/EditLinks:58 html/Ticket/Elements/ShowLinks:47 +msgid "Parents" +msgstr "הורי×" + +#: html/Elements/Login:52 html/User/Prefs.html:61 +msgid "Password" +msgstr "סיסמ×" + +#: html/NoAuth/Reminder.html:25 +msgid "Password Reminder" +msgstr "מזכיר סיסמ×" + +#: lib/RT/User_Overlay.pm:169 lib/RT/User_Overlay.pm:868 +msgid "Password too short" +msgstr "×¡×™×¡×ž× ×§×¦×¨×” מדי" + +#: html/Admin/Users/Modify.html:291 html/User/Prefs.html:172 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "סיסמ×: %1" + +#: html/Admin/Users/Modify.html:293 +msgid "Passwords do not match." +msgstr "הסיסמ×ות ××™× ×Ÿ תו×מות" + +#: html/User/Prefs.html:174 +msgid "Passwords do not match. Your password has not been changed" +msgstr "" + +#: html/Ticket/Elements/ShowSummary:45 html/Ticket/Elements/Tabs:96 html/Ticket/ModifyAll.html:51 +msgid "People" +msgstr "×× ×©×™×" + +#: etc/initialdata:126 +msgid "Perform a user-defined action" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:231 lib/RT/ACE_Overlay.pm:237 lib/RT/ACE_Overlay.pm:563 lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:583 lib/RT/ACE_Overlay.pm:648 lib/RT/CurrentUser.pm:83 lib/RT/CurrentUser.pm:92 lib/RT/CustomField_Overlay.pm:101 lib/RT/CustomField_Overlay.pm:202 lib/RT/CustomField_Overlay.pm:234 lib/RT/CustomField_Overlay.pm:511 lib/RT/CustomField_Overlay.pm:91 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1099 lib/RT/Group_Overlay.pm:1108 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1163 lib/RT/Group_Overlay.pm:1169 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:904 lib/RT/Group_Overlay.pm:908 lib/RT/Group_Overlay.pm:921 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:126 lib/RT/Scrip_Overlay.pm:137 lib/RT/Scrip_Overlay.pm:197 lib/RT/Scrip_Overlay.pm:430 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:88 lib/RT/Template_Overlay.pm:94 lib/RT/Ticket_Overlay.pm:1341 lib/RT/Ticket_Overlay.pm:1351 lib/RT/Ticket_Overlay.pm:1365 lib/RT/Ticket_Overlay.pm:1518 lib/RT/Ticket_Overlay.pm:1527 lib/RT/Ticket_Overlay.pm:1540 lib/RT/Ticket_Overlay.pm:1875 lib/RT/Ticket_Overlay.pm:2013 lib/RT/Ticket_Overlay.pm:2177 lib/RT/Ticket_Overlay.pm:2244 lib/RT/Ticket_Overlay.pm:2603 lib/RT/Ticket_Overlay.pm:2675 lib/RT/Ticket_Overlay.pm:2769 lib/RT/Ticket_Overlay.pm:2784 lib/RT/Ticket_Overlay.pm:2978 lib/RT/Ticket_Overlay.pm:3206 lib/RT/Ticket_Overlay.pm:3404 lib/RT/Ticket_Overlay.pm:3566 lib/RT/Ticket_Overlay.pm:3618 lib/RT/Ticket_Overlay.pm:3783 lib/RT/Transaction_Overlay.pm:466 lib/RT/Transaction_Overlay.pm:473 lib/RT/Transaction_Overlay.pm:502 lib/RT/Transaction_Overlay.pm:509 lib/RT/User_Overlay.pm:1355 lib/RT/User_Overlay.pm:570 lib/RT/User_Overlay.pm:605 lib/RT/User_Overlay.pm:861 lib/RT/User_Overlay.pm:962 +msgid "Permission Denied" +msgstr "" + +#: html/User/Elements/Tabs:35 +msgid "Personal Groups" +msgstr "קבוצות ×ישיות" + +#: html/User/Groups/index.html:30 html/User/Groups/index.html:40 +msgid "Personal groups" +msgstr "קבוצות ×ישיות" + +#: html/User/Elements/DelegateRights:37 +msgid "Personal groups:" +msgstr "קבוצות ×ישיות" + +#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:49 +msgid "Phone numbers" +msgstr "מספרי טלפון" + +#: NOT FOUND IN SOURCE +msgid "Placeholder" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Pref" +msgstr "" + +#: html/Elements/Header:52 html/Elements/Tabs:53 html/SelfService/Elements/Tabs:51 html/SelfService/Prefs.html:25 html/User/Prefs.html:25 html/User/Prefs.html:28 +msgid "Preferences" +msgstr "מ××¤×™×™× ×™×" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "" + +#: lib/RT/Action/Generic.pm:160 +msgid "Prepare Stubbed" +msgstr "" + +#: html/Ticket/Elements/Tabs:61 +msgid "Prev" +msgstr "הקוד×" + +#: html/Search/Listing.html:44 +msgid "Previous page" +msgstr "דף קוד×" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:133 lib/RT/ACE_Overlay.pm:208 lib/RT/ACE_Overlay.pm:552 +#. ($args{'PrincipalId'}) +msgid "Principal %1 not found." +msgstr "" + +#: html/Search/Elements/PickRestriction:54 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:54 html/Ticket/Elements/ShowBasics:39 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "עדיפות" + +#: html/Admin/Elements/ModifyQueue:51 html/Admin/Queues/Modify.html:65 +msgid "Priority starts at" +msgstr "" + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "" + +#: html/Admin/Users/Modify.html:271 html/User/Prefs.html:163 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "" + +#: html/Admin/Users/index.html:62 +msgid "Privileged users" +msgstr "" + +#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 +msgid "Pseudogroup for internal use" +msgstr "" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Elements/Quicksearch:29 html/Search/Elements/PickRestriction:46 html/SelfService/Create.html:33 html/Ticket/Create.html:38 html/Ticket/Elements/EditBasics:64 html/Ticket/Elements/ShowBasics:43 html/User/Elements/DelegateRights:80 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "תור" + +#: html/Admin/Queues/CustomField.html:42 html/Admin/Queues/Scrip.html:50 html/Admin/Queues/Scrips.html:46 html/Admin/Queues/Templates.html:44 +#. ($Queue) +#. ($id) +msgid "Queue %1 not found" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Queue '%1' not found\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Queue Keyword Selections" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:31 html/Admin/Queues/Modify.html:43 +msgid "Queue Name" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:263 +msgid "Queue already exists" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:272 lib/RT/Queue_Overlay.pm:278 +msgid "Queue could not be created" +msgstr "" + +#: html/Ticket/Create.html:205 +msgid "Queue could not be loaded." +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:282 +msgid "Queue created" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Queue is not specified." +msgstr "" + +#: html/SelfService/Display.html:71 lib/RT/CustomField_Overlay.pm:98 +msgid "Queue not found" +msgstr "" + +#: html/Admin/Elements/Tabs:38 html/Admin/index.html:35 +msgid "Queues" +msgstr "תורי×" + +#: html/Elements/Quicksearch:25 +msgid "Quick search" +msgstr "חיפוש מהיר" + +#: html/Elements/Login:44 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT %1. Copyright 1996-%1 Jesse Vincent <jesse\\@bestpractical.com>\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT %1. Copyright 1996-2002 Jesse Vincent <jesse\\@bestpractical.com>\\n" +msgstr "" + +#: html/Admin/index.html:25 html/Admin/index.html:26 +msgid "RT Administration" +msgstr "× ×™×”×•×œ RT" + +#: NOT FOUND IN SOURCE +msgid "RT Authentication error." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT Bounce: %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT Configuration error" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT Critical error. Message not recorded!" +msgstr "" + +#: html/Elements/Error:41 html/SelfService/Error.html:41 +msgid "RT Error" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT Received mail (%1) from itself." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT Recieved mail (%1) from itself." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT Self Service / Closed Tickets" +msgstr "" + +#: html/index.html:25 html/index.html:28 +msgid "RT at a glance" +msgstr "RT ממבט כולל" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't authenticate you" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find requestor via its external database lookup" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find the queue: %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "" + +#: html/Elements/PageLayout:26 +#. ($RT::rtname) +msgid "RT for %1" +msgstr "RT / %1" + +#: NOT FOUND IN SOURCE +msgid "RT for %1: %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT has proccessed your commands" +msgstr "" + +#: html/Elements/Login:92 +#. ('2003') +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 "" + +#: 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 "" + +#: NOT FOUND IN SOURCE +msgid "RT thinks this message may be a bounce" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +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 "" + +#: html/Admin/Users/Modify.html:58 html/Admin/Users/Prefs.html:52 html/User/Prefs.html:44 +msgid "Real Name" +msgstr "×©× ×מיתי" + +#: html/Admin/Elements/ModifyUser:48 +msgid "RealName" +msgstr "×©× ×מיתי" + +#: html/Ticket/Create.html:185 html/Ticket/Elements/EditLinks:139 html/Ticket/Elements/EditLinks:94 html/Ticket/Elements/ShowLinks:71 +msgid "Referred to by" +msgstr "×ž×ª×™×™×—×¡×™× ×ליו" + +#: html/Elements/SelectLinkType:28 html/Ticket/Create.html:184 html/Ticket/Elements/EditLinks:135 html/Ticket/Elements/EditLinks:80 html/Ticket/Elements/ShowLinks:61 +msgid "Refers to" +msgstr "מתייחס ל" + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "" + +#: html/Search/Elements/PickRestriction:27 +msgid "Refine search" +msgstr "חדד ×ת החיפוש" + +#: html/Elements/Refresh:36 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "×¨×¢× ×Ÿ דף ×–×” כל %1 דקות." + +#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:62 html/Ticket/ModifyAll.html:57 +msgid "Relationships" +msgstr "×™×—×¡×™× ×¢× ×¤× ×™×•×ª ×חרות" + +#: html/Search/Bulk.html:93 +msgid "Remove AdminCc" +msgstr "הסר העתק × ×™×”×•×œ×™" + +#: html/Search/Bulk.html:91 +msgid "Remove Cc" +msgstr "הסר העתק" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "הסר מבקש" + +#: html/Ticket/Elements/ShowTransaction:173 html/Ticket/Elements/Tabs:122 +msgid "Reply" +msgstr "הגב" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Reply to tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "ReplyToTicket" +msgstr "×ž×¢× ×” ×œ×¤× ×™×™×”" + +#: etc/initialdata:44 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:87 +msgid "Requestor" +msgstr "מבקש" + +#: html/Search/Elements/PickRestriction:38 +msgid "Requestor email address" +msgstr "כתובת ×”××™-מייל של המבקש" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "מבקש(×™×)" + +#: NOT FOUND IN SOURCE +msgid "RequestorAddresses" +msgstr "כתובת ×”×¤×•× ×”" + +#: html/SelfService/Create.html:41 html/Ticket/Create.html:56 html/Ticket/Elements/EditPeople:48 html/Ticket/Elements/ShowPeople:31 +msgid "Requestors" +msgstr "מבקשי×" + +#: html/Admin/Elements/ModifyQueue:61 html/Admin/Queues/Modify.html:75 +msgid "Requests should be due in" +msgstr "" + +#: html/Elements/Submit:62 +msgid "Reset" +msgstr "×פס × ×ª×•× ×™×" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "בית" + +#: html/Ticket/Elements/Tabs:132 +msgid "Resolve" +msgstr "פתור" + +#: html/Ticket/Update.html:133 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "פתור ×¤× ×™×™×” #%1 (%2)" + +#: etc/initialdata:308 html/Elements/SelectDateType:28 lib/RT/Ticket_Overlay.pm:1170 +msgid "Resolved" +msgstr "× ×¤×ª×¨" + +#: html/Search/Bulk.html:123 html/Ticket/ModifyAll.html:73 html/Ticket/Update.html:73 +msgid "Response to requestors" +msgstr "תגובה למבקשי×" + +#: html/Elements/ListActions:26 +msgid "Results" +msgstr "תוצ×ות" + +#: html/Search/Elements/PickRestriction:105 +msgid "Results per page" +msgstr "תוצ×ות לעמוד" + +#: html/Admin/Elements/ModifyUser:33 html/Admin/Users/Modify.html:100 html/User/Prefs.html:72 +msgid "Retype Password" +msgstr "הקלד ×©× ×™×ª:" + +#: NOT FOUND IN SOURCE +msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:613 +msgid "Right Delegated" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:303 +msgid "Right Granted" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:161 +msgid "Right Loaded" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:678 lib/RT/ACE_Overlay.pm:693 +msgid "Right could not be revoked" +msgstr "" + +#: html/User/Delegation.html:64 +msgid "Right not found" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:543 lib/RT/ACE_Overlay.pm:638 +msgid "Right not loaded." +msgstr "" + +#: lib/RT/ACE_Overlay.pm:689 +msgid "Right revoked" +msgstr "" + +#: html/Admin/Elements/UserTabs:41 +msgid "Rights" +msgstr "" + +#: lib/RT/Interface/Web.pm:792 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "" + +#: lib/RT/Interface/Web.pm:825 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "" + +#: html/Admin/Global/GroupRights.html:51 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "שבת" + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyLinks.html:39 html/Ticket/ModifyPeople.html:38 +msgid "Save Changes" +msgstr "שמור ×©×™× ×•×™×™×" + +#: NOT FOUND IN SOURCE +msgid "Save changes" +msgstr "שמור ×©×™× ×•×™×™×" + +#: html/Admin/Global/Scrip.html:49 +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:176 +msgid "Scrip Created" +msgstr "" + +#: html/Admin/Elements/EditScrips:84 +msgid "Scrip deleted" +msgstr "" + +#: html/Admin/Elements/QueueTabs:46 html/Admin/Elements/SystemTabs:33 html/Admin/Global/index.html:41 +msgid "Scrips" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "" + +#: html/Elements/SimpleSearch:27 html/Search/Elements/PickRestriction:126 html/Ticket/Elements/Tabs:159 +msgid "Search" +msgstr "חיפוש" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:39 +msgid "Search for approvals" +msgstr "" + +#: bin/rt-crontool:188 +msgid "Security:" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "SeeQueue" +msgstr "" + +#: html/Admin/Groups/index.html:40 +msgid "Select a group" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "" + +#: html/Admin/Users/index.html:25 html/Admin/Users/index.html:28 +msgid "Select a user" +msgstr "" + +#: html/Admin/Global/CustomField.html:38 html/Admin/Global/CustomFields.html:36 +msgid "Select custom field" +msgstr "" + +#: html/Admin/Elements/GroupTabs:52 html/User/Elements/GroupTabs:50 +msgid "Select group" +msgstr "בחר קבוצה" + +#: lib/RT/CustomField_Overlay.pm:422 +msgid "Select multiple values" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:419 +msgid "Select one value" +msgstr "" + +#: html/Admin/Elements/QueueTabs:67 +msgid "Select queue" +msgstr "" + +#: html/Admin/Global/Scrip.html:37 html/Admin/Global/Scrips.html:36 html/Admin/Queues/Scrip.html:40 html/Admin/Queues/Scrips.html:50 +msgid "Select scrip" +msgstr "" + +#: html/Admin/Global/Template.html:57 html/Admin/Global/Templates.html:36 html/Admin/Queues/Template.html:55 html/Admin/Queues/Templates.html:47 +msgid "Select template" +msgstr "" + +#: html/Admin/Elements/UserTabs:49 +msgid "Select user" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "SelectMultiple" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectSingle" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Self Service" +msgstr "" + +#: etc/initialdata:114 +msgid "Send mail to all watchers" +msgstr "" + +#: etc/initialdata:110 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "" + +#: etc/initialdata:105 +msgid "Send mail to requestors and Ccs" +msgstr "" + +#: etc/initialdata:100 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "" + +#: etc/initialdata:79 +msgid "Sends a message to the requestors" +msgstr "" + +#: etc/initialdata:118 etc/initialdata:122 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "" + +#: etc/initialdata:95 +msgid "Sends mail to the administrative Ccs" +msgstr "" + +#: etc/initialdata:91 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "" + +#: etc/initialdata:83 etc/initialdata:87 +msgid "Sends mail to the owner" +msgstr "" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "ספטמבר" + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "ספטמבר" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show approved requests" +msgstr "הצג בקשות ש×ושרו" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show basics" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show denied requests" +msgstr "הצג בקשות ×©× ×“×—×•" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show details" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show pending requests" +msgstr "הצג בקשות ×ž×ž×ª×™× ×•×ª" + +#: html/Approvals/Elements/PendingMyApproval:46 +msgid "Show requests awaiting other approvals" +msgstr "הצג בקשות ×©×ž×ž×ª×™× ×•×ª ל××™×©×•×¨×™× ×חרי×" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Show ticket private commentary" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "Show ticket summaries" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ShowACL" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowScrips" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ShowTemplate" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "ShowTicket" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "ShowTicketComments" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "" + +#: html/Admin/Elements/ModifyUser:39 html/Admin/Users/Modify.html:191 html/Admin/Users/Prefs.html:32 html/User/Prefs.html:112 +msgid "Signature" +msgstr "חתימה" + +#: NOT FOUND IN SOURCE +msgid "Signed in as %1" +msgstr "" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Single" +msgstr "" + +#: html/Elements/Header:51 +msgid "Skip Menu" +msgstr "" + +#: html/Admin/Elements/AddCustomFieldValue:29 +msgid "Sort" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Sort key" +msgstr "" + +#: html/Search/Elements/PickRestriction:109 +msgid "Sort results by" +msgstr "סדר תוצ×ות על פי" + +#: NOT FOUND IN SOURCE +msgid "SortOrder" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "מושהה" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "" + +#: html/Elements/SelectDateType:27 html/Ticket/Elements/EditDates:32 html/Ticket/Elements/ShowDates:35 +msgid "Started" +msgstr "התחיל" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:27 html/Ticket/Elements/ShowDates:31 +msgid "Starts" +msgstr "מתחיל ב" + +#: NOT FOUND IN SOURCE +msgid "Starts By" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Starts date '%1' could not be parsed" +msgstr "" + +#: html/Admin/Elements/ModifyUser:82 html/Admin/Users/Modify.html:138 html/User/Prefs.html:94 +msgid "State" +msgstr "×ž×“×™× ×”" + +#: html/Elements/MyRequests:31 html/Elements/MyTickets:31 html/Search/Elements/PickRestriction:74 html/SelfService/Elements/MyRequests:29 html/SelfService/Update.html:31 html/Ticket/Create.html:42 html/Ticket/Elements/EditBasics:38 html/Ticket/Elements/ShowBasics:31 html/Ticket/Update.html:60 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "מצב" + +#: etc/initialdata:294 +msgid "Status Change" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:528 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "" + +#: html/Ticket/Elements/Tabs:147 +msgid "Steal" +msgstr "×’× ×•×‘" + +#: lib/RT/Transaction_Overlay.pm:587 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "× ×’× ×‘ מ %1" + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Search/Bulk.html:126 html/Search/Elements/PickRestriction:43 html/SelfService/Create.html:57 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:32 html/Ticket/Create.html:84 html/Ticket/Elements/EditBasics:28 html/Ticket/ModifyAll.html:79 html/Ticket/Update.html:77 lib/RT/Ticket_Overlay.pm:1160 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "× ×•×©×" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:609 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "× ×•×©× ×©×•× ×” ל %1" + +#: html/Elements/Submit:59 +msgid "Submit" +msgstr "שלח" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "" + +#: lib/RT/Group_Overlay.pm:749 +msgid "Succeeded" +msgstr "הצליח" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "ר×שון" + +#: lib/RT/System.pm:54 +msgid "SuperUser" +msgstr "סופר-משתמש" + +#: html/User/Elements/DelegateRights:77 +msgid "System" +msgstr "מערכת" + +#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:567 lib/RT/Interface/Web.pm:791 lib/RT/Interface/Web.pm:824 +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/ACE_Overlay.pm:616 +msgid "System error. Right not delegated." +msgstr "" + +#: lib/RT/ACE_Overlay.pm:146 lib/RT/ACE_Overlay.pm:223 lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:898 +msgid "System error. Right not granted." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "System error. Unable to grant rights." +msgstr "" + +#: html/Admin/Global/GroupRights.html:35 html/Admin/Groups/GroupRights.html:37 html/Admin/Queues/GroupRights.html:36 +msgid "System groups" +msgstr "" + +#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 +msgid "SystemRolegroup for internal use" +msgstr "" + +#: lib/RT/CurrentUser.pm:318 +msgid "TEST_STRING" +msgstr "" + +#: html/Ticket/Elements/Tabs:143 +msgid "Take" +msgstr "×§×—" + +#: lib/RT/Transaction_Overlay.pm:573 +msgid "Taken" +msgstr "× ×œ×§×—×”" + +#: html/Admin/Elements/EditScrip:81 +msgid "Template" +msgstr "" + +#: html/Admin/Global/Template.html:91 html/Admin/Queues/Template.html:90 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "" + +#: html/Admin/Elements/EditTemplates:89 +msgid "Template deleted" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:153 +msgid "Template not found" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "" + +#: lib/RT/Template_Overlay.pm:347 +msgid "Template parsed" +msgstr "" + +#: html/Admin/Elements/QueueTabs:49 html/Admin/Elements/SystemTabs:36 html/Admin/Global/index.html:45 +msgid "Templates" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "" + +#: lib/RT/Interface/Web.pm:892 +msgid "That is already the current value" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:243 +msgid "That is not a value for this custom field" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1886 +msgid "That is the same value" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:288 lib/RT/ACE_Overlay.pm:597 +msgid "That principal already has that right" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1434 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1551 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1882 +msgid "That queue does not exist" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3210 +msgid "That ticket has unresolved dependencies" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "That user already has that right" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3020 +msgid "That user already owns that ticket" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2986 +msgid "That user does not exist" +msgstr "" + +#: lib/RT/User_Overlay.pm:315 +msgid "That user is already privileged" +msgstr "" + +#: lib/RT/User_Overlay.pm:336 +msgid "That user is already unprivileged" +msgstr "" + +#: lib/RT/User_Overlay.pm:328 +msgid "That user is now privileged" +msgstr "" + +#: lib/RT/User_Overlay.pm:349 +msgid "That user is now unprivileged" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "That user is now unprivilegedileged" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3012 +msgid "That user may not own tickets in that queue" +msgstr "" + +#: lib/RT/Link_Overlay.pm:206 +msgid "That's not a numerical id" +msgstr "" + +#: html/SelfService/Display.html:32 html/Ticket/Create.html:150 html/Ticket/Elements/ShowSummary:28 +msgid "The Basics" +msgstr "מידע בסיסי" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The CC of a ticket" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:89 +msgid "The administrative CC of a ticket" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2213 +msgid "The comment has been recorded" +msgstr "" + +#: bin/rt-crontool:198 +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 "" + +#: bin/rt-commit-handler:756 bin/rt-commit-handler:766 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "" + +#: lib/RT/Interface/Web.pm:895 +msgid "The new value has been set." +msgstr "" + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The owner of a ticket" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The requestor of a ticket" +msgstr "" + +#: html/Admin/Elements/EditUserComments:26 +msgid "These comments aren't generally visible to the user" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "" + +#: bin/rt-crontool:189 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:251 +msgid "This transaction appears to have no content" +msgstr "" + +#: html/Ticket/Elements/ShowRequestor:47 +#. ($rows) +msgid "This user's %1 highest priority tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "This user's 25 highest priority tickets" +msgstr "" + +#: lib/RT/Date.pm:391 +msgid "Thu." +msgstr "חמישי" + +#: NOT FOUND IN SOURCE +msgid "Ticket" +msgstr "×¤× ×™×™×”" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 Jumbo update: %2" +msgstr "×¤× ×™×™×” מספר %1 עדכון ×’'מבו: %2" + +#: html/Ticket/ModifyAll.html:25 html/Ticket/ModifyAll.html:29 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "×¤× ×™×™×” מספר %1 עדכון ×’'מבו: %2" + +#: html/Approvals/Elements/ShowDependency:46 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:587 lib/RT/Ticket_Overlay.pm:608 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "" + +#: bin/rt-commit-handler:760 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "" + +#: html/Search/Bulk.html:181 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "" + +#: html/Ticket/History.html:25 html/Ticket/History.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Ticket Id" +msgstr "" + +#: etc/initialdata:309 +msgid "Ticket Resolved" +msgstr "" + +#: html/Search/Elements/PickRestriction:63 +msgid "Ticket attachment" +msgstr "מצורף ×œ×¤× ×™×™×”" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:496 lib/RT/Ticket_Overlay.pm:597 +msgid "Ticket could not be created due to an internal error" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:520 +msgid "Ticket created" +msgstr "×¤× ×™×™×” × ×•×¦×¨×”" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:525 +msgid "Ticket deleted" +msgstr "×¤× ×™×™×” × ×ž×—×§×”" + +#: html/REST/1.0/modify:29 html/REST/1.0/update:34 +msgid "Ticket id not found" +msgstr "מזהה ×¤× ×™×™×” ×œ× × ×ž×¦×" + +#: NOT FOUND IN SOURCE +msgid "Ticket killed" +msgstr "×¤× ×™×™×” × ×ž×—×§×”" + +#: html/REST/1.0/modify:36 html/REST/1.0/update:41 +msgid "Ticket not found" +msgstr "×¤× ×™×™×” ×œ× × ×ž×¦××”" + +#: etc/initialdata:295 +msgid "Ticket status changed" +msgstr "סטטוס ×¤× ×™×™×” ×©×•× ×”" + +#: html/Ticket/Update.html:39 +msgid "Ticket watchers" +msgstr "צופי ×”×¤× ×™×™×”" + +#: html/Elements/Tabs:47 +msgid "Tickets" +msgstr "×¤× ×™×•×ª" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Tickets from %1" +msgstr "" + +#: html/Approvals/Elements/ShowDependency:27 +msgid "Tickets which depend on this approval:" +msgstr "" + +#: html/Ticket/Create.html:157 html/Ticket/Elements/EditBasics:48 +msgid "Time Left" +msgstr "זמן × ×•×ª×¨" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:43 +msgid "Time Worked" +msgstr "זמן עבודה" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "זמן × ×•×ª×¨" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "זמן להציג" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "זמן עבודה" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1165 +msgid "TimeWorked" +msgstr "" + +#: bin/rt-commit-handler:402 +msgid "To generate a diff of this commit:" +msgstr "" + +#: bin/rt-commit-handler:391 +msgid "To generate a diff of this commit:\\n" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1168 +msgid "Told" +msgstr "" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:640 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:89 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:699 +msgid "Transactions are immutable" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Trying to delete a right: %1" +msgstr "" + +#: lib/RT/Date.pm:389 +msgid "Tue." +msgstr "שלישי" + +#: html/Admin/Elements/EditCustomField:44 html/Ticket/Elements/AddWatchers:33 html/Ticket/Elements/AddWatchers:44 html/Ticket/Elements/AddWatchers:54 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "סוג" + +#: lib/RT/ScripCondition_Overlay.pm:104 +msgid "Unimplemented" +msgstr "×œ× ×ž×™×™×•×©×" + +#: html/Admin/Users/Modify.html:68 +msgid "Unix login" +msgstr "" + +#: html/Admin/Elements/ModifyUser:62 +msgid "UnixUsername" +msgstr "" + +#: lib/RT/Attachment_Overlay.pm:265 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "" + +#: html/Elements/SelectResultsPerPage:37 +msgid "Unlimited" +msgstr "×œ× ×ž×•×’×‘×œ" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:569 +msgid "Untaken" +msgstr "" + +#: html/Elements/MyTickets:64 html/Search/Bulk.html:33 +msgid "Update" +msgstr "עדכן" + +#: html/Admin/Users/Prefs.html:62 +msgid "Update ID" +msgstr "" + +#: html/Search/Bulk.html:120 html/Ticket/ModifyAll.html:66 html/Ticket/Update.html:67 +msgid "Update Type" +msgstr "סוג עדכון" + +#: html/Search/Listing.html:61 +msgid "Update all these tickets at once" +msgstr "עדכן ×ת כל ×”×¤× ×™×•×ª לעיל בבת ×חת" + +#: html/Admin/Users/Prefs.html:49 +msgid "Update email" +msgstr "עדכן ××™-מייל" + +#: html/Admin/Users/Prefs.html:55 +msgid "Update name" +msgstr "עדכן ש×" + +#: lib/RT/Interface/Web.pm:409 +msgid "Update not recorded." +msgstr "" + +#: html/Search/Bulk.html:81 +msgid "Update selected tickets" +msgstr "עדכן ×¤× ×™×•×ª × ×‘×—×¨×•×ª" + +#: html/Admin/Users/Prefs.html:36 +msgid "Update signature" +msgstr "עדכן חתימה" + +#: html/Ticket/ModifyAll.html:63 +msgid "Update ticket" +msgstr "עדכן ×¤× ×™×™×”" + +#: NOT FOUND IN SOURCE +msgid "Update ticket # %1" +msgstr "" + +#: html/SelfService/Update.html:25 html/SelfService/Update.html:47 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "" + +#: html/Ticket/Update.html:135 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "" + +#: lib/RT/Interface/Web.pm:407 +msgid "Update type was neither correspondence nor comment." +msgstr "" + +#: html/Elements/SelectDateType:33 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1169 +msgid "Updated" +msgstr "עודכן" + +#: NOT FOUND IN SOURCE +msgid "User %1 %2: %3\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "User %1 Password: %2\\n" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found\\n" +msgstr "" + +#: etc/initialdata:125 etc/initialdata:191 +msgid "User Defined" +msgstr "" + +#: html/Admin/Users/Prefs.html:59 +msgid "User ID" +msgstr "מזהה המשתמש" + +#: html/Elements/SelectUsers:26 +msgid "User Id" +msgstr "מזהה המשתמש" + +#: html/Admin/Elements/GroupTabs:47 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/SystemTabs:47 html/Admin/Global/index.html:59 +msgid "User Rights" +msgstr "זכויות המשתמש" + +#: html/Admin/Users/Modify.html:226 +#. ($msg) +msgid "User could not be created: %1" +msgstr "" + +#: lib/RT/User_Overlay.pm:262 +msgid "User created" +msgstr "" + +#: html/Admin/Global/GroupRights.html:67 html/Admin/Groups/GroupRights.html:54 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "" + +#: html/Admin/Users/Prefs.html:25 html/Admin/Users/Prefs.html:29 +msgid "User view" +msgstr "" + +#: html/Admin/Users/Modify.html:48 html/Elements/Login:51 html/Ticket/Elements/AddWatchers:35 +msgid "Username" +msgstr "×©× ×ž×©×ª×ž×©" + +#: html/Admin/Elements/SelectNewGroupMembers:26 html/Admin/Elements/Tabs:32 html/Admin/Groups/Members.html:55 html/Admin/Queues/People.html:68 html/Admin/index.html:29 html/User/Groups/Members.html:58 +msgid "Users" +msgstr "משתמשי×" + +#: html/Admin/Users/index.html:65 +msgid "Users matching search criteria" +msgstr "" + +#: html/Search/Elements/PickRestriction:51 +msgid "ValueOfQueue" +msgstr "" + +#: html/Admin/Elements/EditCustomField:57 +msgid "Values" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "VrijevormEnkele" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Watch" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "WatchAsAdminCc" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "" + +#: html/Admin/Elements/QueueTabs:42 +msgid "Watchers" +msgstr "" + +#: html/Admin/Elements/ModifyUser:56 +msgid "WebEncoding" +msgstr "" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "רביעי" + +#: etc/upgrade/2.1.71:161 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "" + +#: etc/upgrade/2.1.71:135 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "" + +#: etc/initialdata:138 +msgid "When a ticket is created" +msgstr "" + +#: etc/upgrade/2.1.71:79 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "" + +#: etc/initialdata:143 +msgid "When anything happens" +msgstr "בכל ×¤×¢× ×©×“×‘×¨ ×›×œ×©×”×•× ×§×•×¨×”" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "בכל ×¤×¢× ×©×¤× ×™×™×” × ×¡×’×¨×ª" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "בכל ×¤×¢× ×©×‘×¢×œ×™ ×”×¤× ×™×™×” ×ž×©×ª× ×”" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "בכל מצב שתור ×”×¤× ×™×™×” ×ž×©×ª× ×”" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "בכל ×¤×¢× ×©×ž×¦×‘ ×”×¤× ×™×™×” ×ž×©×ª× ×”" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "בכל ×¤×¢× ×©×ž×¦×‘ מוגדר על ידי משתמש קורה" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "בכל ×¤×¢× ×©×”×¢×¨×” מגיעה ב" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "בכל ×¤×¢× ×©×ª×›×ª×•×‘×ª מגיעה ב" + +#: html/Admin/Users/Modify.html:164 html/User/Prefs.html:52 +msgid "Work" +msgstr "עבודה" + +#: html/Admin/Elements/ModifyUser:70 +msgid "WorkPhone" +msgstr "טלפון בעבודה" + +#: html/Ticket/Elements/ShowBasics:35 html/Ticket/Update.html:65 +msgid "Worked" +msgstr "זמן טיפול" + +#: lib/RT/Ticket_Overlay.pm:3123 +msgid "You already own this ticket" +msgstr "×תה כבר ×”×‘×¢×œ×™× ×©×œ ×¤× ×™×™×” זו" + +#: html/autohandler:108 +msgid "You are not an authorized user" +msgstr "××™× ×š משתמש מורשה" + +#: lib/RT/Ticket_Overlay.pm:2998 +msgid "You can only reassign tickets that you own or 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 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "מצ×ת %1 ×¤× ×™×•×ª בתור %2" + +#: html/NoAuth/Logout.html:31 +msgid "You have been logged out of RT." +msgstr "×”×ª× ×ª×§×ª מהמערכת." + +#: html/SelfService/Display.html:78 +msgid "You have no permission to create tickets in that queue." +msgstr "×ין לך הרש×ות ליצור ×¤× ×™×•×ª בתור ×–×”." + +#: lib/RT/Ticket_Overlay.pm:1895 +msgid "You may not create requests in that queue." +msgstr "××™× ×š מורשה ליצור ×¤× ×™×•×ª בתור ×–×”." + +#: html/NoAuth/Logout.html:36 +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 "×ž× ×”×œ המערכת ×œ× ×”×’×“×™×¨ ×ת כתובות הדו×ר שמפעילות ×ת ×”×ª×•×›× ×” כמו שצריך" + +#: etc/initialdata:435 etc/upgrade/2.1.71:146 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "בקשתך ×ושרה על ידי %1. ייתכן ש××™×©×•×¨×™× × ×•×¡×¤×™× ×¢×“×™×™×Ÿ ×ž×ž×ª×™× ×™×." + +#: etc/initialdata:469 etc/upgrade/2.1.71:180 +msgid "Your request has been approved." +msgstr "בקשתך ×ושרה." + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "בקשתך × ×“×—×ª×”" + +#: etc/initialdata:390 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "בקשתך × ×“×—×ª×”." + +#: html/autohandler:127 +msgid "Your username or password is incorrect" +msgstr "×©× ×”×ž×©×ª×ž×© ו/×ו ×”×¡×™×¡×ž× ××™× × × ×›×•× ×™×" + +#: html/Admin/Elements/ModifyUser:84 html/Admin/Users/Modify.html:144 html/User/Prefs.html:96 +msgid "Zip" +msgstr "מיקוד" + +#: NOT FOUND IN SOURCE +msgid "[no subject]" +msgstr "[×œ×œ× × ×•×©×]" + +#: html/User/Elements/DelegateRights:59 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "×©×”×•×¢× ×§ ל%1" + +#: html/SelfService/Closed.html:28 +msgid "closed" +msgstr "סגור" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:34 +msgid "contains" +msgstr "מכיל" + +#: html/Elements/SelectAttachmentField:26 +msgid "content" +msgstr "תוכן" + +#: html/Elements/SelectAttachmentField:27 +msgid "content-type" +msgstr "סוג התוכן" + +#: lib/RT/Ticket_Overlay.pm:2282 +msgid "correspondence (probably) not sent" +msgstr "התכתבות (×›× ×¨××”) ×œ× × ×©×œ×—×”" + +#: lib/RT/Ticket_Overlay.pm:2292 +msgid "correspondence sent" +msgstr "התכתבות × ×©×œ×—×”" + +#: html/Admin/Elements/ModifyQueue:63 html/Admin/Queues/Modify.html:77 lib/RT/Date.pm:319 +msgid "days" +msgstr "ימי×" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "" + +#: html/Search/Listing.html:75 +msgid "delete" +msgstr "מחק" + +#: lib/RT/Queue_Overlay.pm:63 +msgid "deleted" +msgstr "מחוק" + +#: html/Search/Elements/PickRestriction:68 +msgid "does not match" +msgstr "×œ× ×ž×›×™×œ" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:35 +msgid "doesn't contain" +msgstr "×œ× ×ž×›×™×œ" + +#: html/Elements/SelectEqualityOperator:38 +msgid "equal to" +msgstr "שווה ל" + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "" + +#: html/Elements/SelectAttachmentField:28 +msgid "filename" +msgstr "×©× ×§×•×‘×¥" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "greater than" +msgstr "גדול מ" + +#: lib/RT/Group_Overlay.pm:194 +#. ($self->Name) +msgid "group '%1'" +msgstr "קבוצה %1" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "שעות" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "מזהה" + +#: html/Elements/SelectBoolean:32 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "is" +msgstr "הו×" + +#: html/Elements/SelectBoolean:36 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:37 html/Search/Elements/PickRestriction:48 html/Search/Elements/PickRestriction:77 html/Search/Elements/PickRestriction:89 +msgid "isn't" +msgstr "×”×•× ×œ×" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "less than" +msgstr "פחות מ" + +#: html/Search/Elements/PickRestriction:67 +msgid "matches" +msgstr "מכיל" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "דקות" + +#: html/Ticket/Update.html:66 +msgid "minutes" +msgstr "דקות" + +#: bin/rt-commit-handler:765 +msgid "modifications\\n\\n" +msgstr "" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "חודשי×" + +#: lib/RT/Queue_Overlay.pm:58 +msgid "new" +msgstr "חדש" + +#: html/Admin/Elements/EditScrips:43 +msgid "no value" +msgstr "×ין ערך" + +#: html/Ticket/Elements/EditWatchers:28 +msgid "none" +msgstr "×ין" + +#: html/Elements/SelectEqualityOperator:38 +msgid "not equal to" +msgstr "×œ× ×©×•×•×” ל" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "" + +#: html/SelfService/Elements/MyRequests:61 lib/RT/Queue_Overlay.pm:59 +msgid "open" +msgstr "פתוח" + +#: lib/RT/Group_Overlay.pm:199 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "" + +#: lib/RT/Group_Overlay.pm:207 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "rejected" +msgstr "× ×“×—×”" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "resolved" +msgstr "פתור" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "stalled" +msgstr "מושהה" + +#: lib/RT/Group_Overlay.pm:202 +#. ($self->Type) +msgid "system %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:213 +#. ($self->Type) +msgid "system group '%1'" +msgstr "" + +#: html/Elements/Error:42 html/SelfService/Error.html:42 +msgid "the calling component did not specify why" +msgstr "" + +#: lib/RT/Group_Overlay.pm:210 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "true" +msgstr "" + +#: lib/RT/Group_Overlay.pm:216 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "undescripbed group %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:191 +#. ($user->Object->Name) +msgid "user %1" +msgstr "" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "" diff --git a/rt/lib/RT/I18N/i_default.pm b/rt/lib/RT/I18N/i_default.pm new file mode 100644 index 000000000..154702656 --- /dev/null +++ b/rt/lib/RT/I18N/i_default.pm @@ -0,0 +1,86 @@ +# 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. +# +# 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::I18N::i_default; + +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::I18N); + +eval "require RT::I18N::i_default_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N/i_default_Vendor.pm}); +eval "require RT::I18N::i_default_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/I18N/i_default_Local.pm}); + +1; + +__END__ + +This class just zero-derives from the project base class, which +is English for this project. i-default is "English at least". It +wouldn't be a bad idea to make our i-default messages be English +plus, say, French -- i-default is meant to /contain/ English, not +be /just/ English. If you have all your English messages in +Whatever::en and all your French messages in Whatever::fr, it +would be straightforward to define Whatever::i_default's as a subclass +of Whatever::en, but for every case where a key gets you a string +(as opposed to a coderef) from %Whatever::en::Lexicon and +%Whatever::fr::Lexicon, you could make %Whatever::i_default::Lexicon +be the concatenation of them both. So: "file '[_1]' not found.\n" and +"fichier '[_1]' non trouve\n" could make for an +%Whatever::i_default::Lexicon entry of +"file '[_1]' not found\nfichier '[_1]' non trouve.\n". + +There may be entries, however, where that is undesirable. +And in any case, it's not feasable once you have an _AUTO lexicon +in the mix, as wo do here. + + + +RFC 2277 says: + +4.5. Default Language + + When human-readable text must be presented in a context where the + sender has no knowledge of the recipient's language preferences (such + as login failures or E-mailed warnings, or prior to language + negotiation), text SHOULD be presented in Default Language. + + Default Language is assigned the tag "i-default" according to the + procedures of RFC 1766. It is not a specific language, but rather + identifies the condition where the language preferences of the user + cannot be established. + + Messages in Default Language MUST be understandable by an English- + speaking person, since English is the language which, worldwide, the + greatest number of people will be able to get adequate help in + interpreting when working with computers. + + Note that negotiating English is NOT the same as Default Language; + Default Language is an emergency measure in otherwise unmanageable + situations. + + In many cases, using only English text is reasonable; in some cases, + the English text may be augumented by text in other languages. + + diff --git a/rt/lib/RT/I18N/ja.po b/rt/lib/RT/I18N/ja.po new file mode 100644 index 000000000..c0401f869 --- /dev/null +++ b/rt/lib/RT/I18N/ja.po @@ -0,0 +1,4822 @@ +# Japanese translation by Interactive Artists LLC +# 0.1 2002 08 15 +msgid "" +msgstr "" +"Project-Id-Version: RT 2.1.x\n" +"POT-Creation-Date: 2002-05-02 11:36+0800\n" +"PO-Revision-Date: 2002-05-13 02:00+0800\n" +"Last-Translator: Jesse Vincent <jesse@bestpractical.com>\n" +"Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 +msgid "#" +msgstr "#" + +#: html/Admin/Queues/Scrip.html:55 +#. ($QueueObj->id) +msgid "#%1" +msgstr "" + +#: html/Approvals/Elements/ShowDependency:50 html/Ticket/Display.html:26 html/Ticket/Display.html:30 +#. ($Ticket->Id, $Ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($args{'FIELD'}, $args{'OPERATOR'}, $args{'VALUE'}) +msgid "%1 %2 %3" +msgstr "" + +#: 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:3438 lib/RT/Transaction_Overlay.pm:559 lib/RT/Transaction_Overlay.pm:601 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 added" +msgstr "" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3444 lib/RT/Transaction_Overlay.pm:566 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%3ã«å¤‰æ›´ã•れãŸ%1 %2 " + +#: lib/RT/Ticket_Overlay.pm:3441 lib/RT/Transaction_Overlay.pm:562 lib/RT/Transaction_Overlay.pm:607 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 %2 of group %3" +msgstr "" + +#: html/Admin/Elements/EditScrips:44 html/Admin/Elements/ListGlobalScrips:28 +#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) +msgid "%1 %2 with template %3" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 (%2) %3 this ticket\\n" +msgstr "%1 (%2) %3 ã“ã®ãƒã‚±ãƒƒãƒˆ\\n" + +#: html/Search/Listing.html:57 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "" + +#: bin/rt-crontool:169 bin/rt-crontool:176 bin/rt-crontool:182 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - An argument to pass to %2" +msgstr "" + +#: bin/rt-crontool:185 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "" + +#: bin/rt-crontool:179 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "" + +#: bin/rt-crontool:173 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "" + +#: bin/rt-crontool:166 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "" + +#: lib/RT/ScripAction_Overlay.pm:122 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "%1スクリプトアクションãƒãƒ¼ãƒ‰ã—ã¾ã—ãŸ" + +#: lib/RT/Ticket_Overlay.pm:3471 +#. ($args{'Value'}, $cf->Name) +msgid "%1 added as a value for %2" +msgstr "%2ã¨åŒã˜ãƒãƒªãƒ¥ãƒ¼ã®%1ãŒè¿½åŠ ã•れã¾ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on" +msgstr "%1aliasesã‚’å‹•ã‹ã™ãŸã‚ã«ãƒã‚±ãƒƒãƒˆIDãŒå¿…è¦ã§ã™" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on " +msgstr "%1aliasesã‚’å‹•ã‹ã™ãŸã‚ã«ãƒã‚±ãƒƒãƒˆIDãŒå¿…è¦ã§ã™ " + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on (from %2) %3" +msgstr "%1aliasesã‚’å‹•ã‹ã™ãŸã‚ã«ãƒã‚±ãƒƒãƒˆIDãŒå¿…è¦ã§ã™(%2ã‹ã‚‰) %3" + +#: lib/RT/Link_Overlay.pm:117 lib/RT/Link_Overlay.pm:124 +#. ($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:52 lib/RT/Transaction_Overlay.pm:483 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%2ã«ã‚ˆã‚‹%1" + +#: lib/RT/Transaction_Overlay.pm:537 lib/RT/Transaction_Overlay.pm:626 lib/RT/Transaction_Overlay.pm:635 lib/RT/Transaction_Overlay.pm:638 +#. ($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ã¯%2ã‹ã‚‰%3ã«å¤‰æ›´ã•れã¾ã—ãŸ" + +#: lib/RT/Interface/Web.pm:857 +msgid "%1 could not be set to %2." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 couldn't init a transaction (%2)\\n" +msgstr "%1ã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’ã¯ã˜ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ(%2)\\n" + +#: lib/RT/Ticket_Overlay.pm:2813 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1ã¯åˆ†è§£ã™ã‚‹ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚RTã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ä¸€è²«æ€§ãŒãªã„å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚" + +#: html/Elements/MyTickets:25 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "" + +#: html/Elements/MyRequests:25 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "" + +#: bin/rt-crontool:161 +#. ($0) +msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." +msgstr "" + +#: lib/RT/Queue_Overlay.pm:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1ã¯ã“ã®ã‚ューã§ã¯%2ã§ã¯ã‚りã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:1570 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1ã¯ã“ã®ãƒã‚±ãƒƒãƒˆã§ã¯%2ã§ã¯ã‚りã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:3527 +#. ($args{'Value'}, $cf->Name) +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ã¯æœ‰åйãªã‚ューIDã§ã¯ã‚りã¾ã›ã‚“。" + +#: html/Ticket/Elements/ShowBasics:36 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1分" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "%1表示ã•れã¾ã›ã‚“" + +#: html/User/Elements/DelegateRights:76 +#. (loc($ObjectType =~ /^RT::(.*)$/)) +msgid "%1 rights" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 succeeded\\n" +msgstr "%1 æˆåŠŸã—ã¾ã—ãŸ\\n" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for $MessageId" +msgstr "%1タイプã¯$MessageIdIDã§ã¯ä¸æ˜Žã§ã™" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for %2" +msgstr "%1タイプã¯%2ã§ã¯ä¸æ˜Žã§ã™" + +#: NOT FOUND IN SOURCE +msgid "%1 was created without a CurrentUser\\n" +msgstr "" + +#: lib/RT/Action/ResolveMembers.pm:42 +#. (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/Transaction_Overlay.pm:435 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1:アタッãƒãƒ¡ãƒ³ãƒˆãŒç‰¹å®šã§ãã¾ã›ã‚“" + +#: html/Ticket/Elements/ShowTransaction:102 +#. ($size) +msgid "%1b" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:99 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1140 +#. ($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/EditQueueWatchers:29 html/Admin/Elements/EditScrips:35 html/Admin/Elements/EditTemplates:36 html/Admin/Groups/Members.html:52 html/Ticket/Elements/EditLinks:33 html/Ticket/Elements/EditPeople:46 html/User/Groups/Members.html:55 +msgid "(Check box to delete)" +msgstr "(削除ã®ãŸã‚ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ï¼‰" + +#: NOT FOUND IN SOURCE +msgid "(Check boxes to delete)" +msgstr "" + +#: html/Ticket/Create.html:178 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(ãƒã‚±ãƒƒãƒˆIDã¾ãŸã¯URLsを空欄ã§åŒºåˆ‡ã£ã¦å…¥åŠ›ã—ã¦ãã ã•ã„)" + +#: html/Admin/Queues/Modify.html:54 html/Admin/Queues/Modify.html:60 +#. ($RT::CorrespondAddress) +#. ($RT::CommentAddress) +msgid "(If left blank, will default to %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:33 html/Admin/Elements/ListGlobalCustomFields:32 +msgid "(No custom fields)" +msgstr "" + +#: html/Admin/Groups/Members.html:50 html/User/Groups/Members.html:53 +msgid "(No members)" +msgstr "(メンãƒãƒ¼ãªã—)" + +#: html/Admin/Elements/EditScrips:32 html/Admin/Elements/ListGlobalScrips:32 +msgid "(No scrips)" +msgstr "(スクリプトãªã—)" + +#: html/Admin/Elements/EditTemplates:31 +msgid "(No templates)" +msgstr "" + +#: html/Ticket/Update.html:85 +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 "" + +#: 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 "(Eメールアドレスã«ãŠã‘るカンマã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒªã‚¹ãƒˆã¸ã®æ£ç¢ºãªã‚¢ãƒƒãƒ—デートã®ãƒ–ラインドコピーをé€ã‚‹ã€‚今後ã®ã‚¢ãƒƒãƒ—デートを誰ãŒå—ä¿¡ã™ã‚‹ã‹ã¯<b>変更ã§ãã¾ã›ã‚“</b>)" + +#: html/Ticket/Create.html:79 +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 "" + +#: html/Ticket/Update.html:81 +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 "" + +#: 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 "(Eメールアドレスã«ãŠã‘るカンマã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒªã‚¹ãƒˆã¸ã®æ£ç¢ºãªã‚¢ãƒƒãƒ—デートã®ã‚³ãƒ”ーをé€ã‚‹ã€‚今後ã®ã‚¢ãƒƒãƒ—デートを誰ãŒå—ä¿¡ã™ã‚‹ã‹ã¯<b>変更ã§ãã¾ã›ã‚“</b>)" + +#: html/Ticket/Create.html:69 +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 "" + +#: html/Admin/Groups/index.html:33 html/User/Groups/index.html:33 +msgid "(empty)" +msgstr "(空)" + +#: html/Admin/Users/index.html:39 +msgid "(no name listed)" +msgstr "" + +#: html/Elements/MyRequests:43 html/Elements/MyTickets:45 +msgid "(no subject)" +msgstr "(サブジェクトãªã—)" + +#: html/Admin/Elements/SelectRights:48 html/Elements/SelectCustomFieldValue:30 html/Ticket/Elements/EditCustomField:59 html/Ticket/Elements/ShowCustomFields:36 lib/RT/Transaction_Overlay.pm:536 +msgid "(no value)" +msgstr "(ãƒãƒªãƒ¥ãƒ¼ãªã—)" + +#: html/Ticket/Elements/EditLinks:116 +msgid "(only one ticket)" +msgstr "(ã²ã¨ã¤ã®ãƒã‚±ãƒƒãƒˆã®ã¿ï¼‰" + +#: html/Elements/MyRequests:52 html/Elements/MyTickets:55 +msgid "(pending approval)" +msgstr "" + +#: html/Elements/MyRequests:54 html/Elements/MyTickets:57 +msgid "(pending other tickets)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "(requestor's group)" +msgstr "" + +#: html/Admin/Users/Modify.html:50 +msgid "(required)" +msgstr "(必è¦ã§ã™ï¼‰" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "(untitled)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I own..." +msgstr "ç§ãŒæ‰€æœ‰ã—ã¦ã„ã‚‹25ã®æœ€ã‚‚é‡è¦ãªå„ªå…ˆæ¨©" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I requested..." +msgstr "ç§ãŒãƒªã‚¯ã‚¨ã‚¹ãƒˆã—ãŸ25ã®æœ€ã‚‚é‡è¦ãªå„ªå…ˆæ¨©" + +#: html/Ticket/Elements/ShowBasics:32 +msgid "<% $Ticket->Status%>" +msgstr "" + +#: html/Elements/SelectTicketTypes:27 +msgid "<% $_ %>" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:26 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"æ–°ã—ã„ãƒã‚±ãƒƒãƒˆ\"> %1" + +#: etc/initialdata:203 +msgid "A blank template" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE Deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE Loaded" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be found" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:157 lib/RT/Principal_Overlay.pm:181 +msgid "ACE not found" +msgstr "エースã¯ã¿ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: lib/RT/ACE_Overlay.pm:831 +msgid "ACEs can only be created and deleted." +msgstr "エースã¯ä½œæˆã€å‰Šé™¤ã®ã¿ã§ã™ã€‚" + +#: bin/rt-commit-handler:755 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "æ„図的ã§ãªã„ãƒã‚±ãƒƒãƒˆã®ä¿®æ£ã‚’防ããŸã‚ã«å¼·åˆ¶çµ‚了ã—ã¾ã™ã€‚\\n" + +#: html/User/Elements/Tabs:32 +msgid "About me" +msgstr "" + +#: html/Admin/Users/Modify.html:80 +msgid "Access control" +msgstr "アクセスコントãƒãƒ¼ãƒ«" + +#: html/Admin/Elements/EditScrip:57 +msgid "Action" +msgstr "アクション" + +#: lib/RT/Scrip_Overlay.pm:147 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "アクション%1ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: bin/rt-crontool:123 +msgid "Action committed." +msgstr "" + +#: bin/rt-crontool:119 +msgid "Action prepared..." +msgstr "" + +#: html/Search/Bulk.html:92 +msgid "Add AdminCc" +msgstr "管ç†Ccã‚’è¿½åŠ ã™ã‚‹" + +#: html/Search/Bulk.html:90 +msgid "Add Cc" +msgstr "Ccã‚’è¿½åŠ ã™ã‚‹" + +#: html/Ticket/Create.html:114 html/Ticket/Update.html:100 +msgid "Add More Files" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Add Next State" +msgstr "" + +#: html/Search/Bulk.html:88 +msgid "Add Requestor" +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:55 +msgid "Add a scrip which will apply to all queues" +msgstr "ã™ã¹ã¦ã®ã‚ューã«é©å¿œã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—ãƒˆã‚’è¿½åŠ ã™ã‚‹" + +#: html/Search/Bulk.html:118 +msgid "Add comments or replies to selected tickets" +msgstr "é¸æŠžã•れãŸãƒã‚±ãƒƒãƒˆã¸ã®ã‚³ãƒ¡ãƒ³ãƒˆã¾ãŸã¯è¿”äº‹ã‚’è¿½åŠ ã™ã‚‹" + +#: html/Admin/Groups/Members.html:42 html/User/Groups/Members.html:39 +msgid "Add members" +msgstr "メンãƒãƒ¼ã‚’è¿½åŠ ã™ã‚‹" + +#: html/Admin/Queues/People.html:66 html/Ticket/Elements/AddWatchers:28 +msgid "Add new watchers" +msgstr "æ–°ã—ã„ウォッãƒãƒ£ãƒ¼ã‚’è¿½åŠ ã™ã‚‹" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "ã“ã®ã‚ューã«%1ã®è²¬ä»»è€…ã‚’è¿½åŠ ã—ã¾ã—ãŸ" + +#: lib/RT/Ticket_Overlay.pm:1454 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "ã“ã®ãƒã‚±ãƒƒãƒˆã«%1ã®è²¬ä»»è€…ã‚’è¿½åŠ ã—ã¾ã—ãŸ" + +#: html/Admin/Elements/ModifyUser:76 html/Admin/Users/Modify.html:122 html/User/Prefs.html:88 +msgid "Address1" +msgstr "使‰€1" + +#: html/Admin/Elements/ModifyUser:78 html/Admin/Users/Modify.html:127 html/User/Prefs.html:90 +msgid "Address2" +msgstr "使‰€2" + +#: html/Ticket/Create.html:74 +msgid "Admin Cc" +msgstr "管ç†Cc" + +#: etc/initialdata:274 +msgid "Admin Comment" +msgstr "" + +#: etc/initialdata:256 +msgid "Admin Correspondence" +msgstr "" + +#: html/Admin/Queues/index.html:25 html/Admin/Queues/index.html:28 +msgid "Admin queues" +msgstr "管ç†ã‚ュー" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "管ç†ãƒ¦ãƒ¼ã‚¶ãƒ¼" + +#: html/Admin/Global/index.html:26 html/Admin/Global/index.html:28 +msgid "Admin/Global configuration" +msgstr "管ç†/ã‚°ãƒãƒ¼ãƒãƒ«è¨å®š" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "管ç†/グループ" + +#: html/Admin/Queues/Modify.html:25 html/Admin/Queues/Modify.html:29 +msgid "Admin/Queue/Basics" +msgstr "管ç†/ã‚ュー/基本" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "" + +#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:39 html/Ticket/Update.html:50 lib/RT/ACE_Overlay.pm:89 +msgid "AdminCc" +msgstr "管ç†Cc" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "AdminCustomFields" +msgstr "" + +#: lib/RT/Group_Overlay.pm:146 +msgid "AdminGroup" +msgstr "" + +#: lib/RT/Group_Overlay.pm:148 +msgid "AdminGroupMembership" +msgstr "" + +#: lib/RT/System.pm:59 +msgid "AdminOwnPersonalGroups" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "AdminQueue" +msgstr "" + +#: lib/RT/System.pm:60 +msgid "AdminUsers" +msgstr "" + +#: html/Admin/Queues/People.html:48 html/Ticket/Elements/EditPeople:54 +msgid "Administrative Cc" +msgstr "管ç†è€…Cc" + +#: NOT FOUND IN SOURCE +msgid "Admins" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "çµžè¾¼ã¿æ¤œç´¢" + +#: html/Elements/SelectDateRelation:36 +msgid "After" +msgstr "後" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Alias" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Alias for" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:96 +msgid "All Custom Fields" +msgstr "" + +#: html/Admin/Queues/index.html:53 +msgid "All Queues" +msgstr "ã™ã¹ã¦ã®ã‚ュー" + +#: NOT FOUND IN SOURCE +msgid "Always sends a message to the requestors independent of message sender" +msgstr "" + +#: html/Elements/Tabs:58 +msgid "Approval" +msgstr "" + +#: html/Approvals/Display.html:46 html/Approvals/Elements/Approve:27 html/Approvals/Elements/ShowDependency:42 html/Approvals/index.html:65 +#. ($Ticket->Id, $Ticket->Subject) +#. ($ticket->id, $msg) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Approval #%1: %2" +msgstr "" + +#: html/Approvals/index.html:54 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "" + +#: html/Approvals/index.html:52 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "" + +#: html/Approvals/Elements/Approve:45 +msgid "Approve" +msgstr "" + +#: etc/initialdata:431 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "四月" + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "" + +#: html/Elements/SelectSortOrder:35 +msgid "Ascending" +msgstr "æ˜‡é †" + +#: html/Search/Bulk.html:127 html/SelfService/Update.html:36 html/Ticket/ModifyAll.html:83 html/Ticket/Update.html:100 +msgid "Attach" +msgstr "添付" + +#: html/SelfService/Create.html:67 html/Ticket/Create.html:110 +msgid "Attach file" +msgstr "添付ファイル" + +#: html/Ticket/Create.html:98 html/Ticket/Update.html:89 +msgid "Attached file" +msgstr "" + +#: html/SelfService/Attachment/dhandler:36 +msgid "Attachment '%1' could not be loaded" +msgstr "添付ファイル%1ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: lib/RT/Transaction_Overlay.pm:443 +msgid "Attachment created" +msgstr "添付ファイルãŒä½œæˆã•れã¾ã—ãŸ" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "添付ファイルå" + +#: html/Ticket/Elements/ShowAttachments:26 +msgid "Attachments" +msgstr "添付ファイル" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "八月" + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "" + +#: html/Admin/Elements/ModifyUser:66 +msgid "AuthSystem" +msgstr "自動システム" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Bad PGP Signature: %1\\n" +msgstr "悪ã„PGPç½²å: %1\\n" + +#: html/SelfService/Attachment/dhandler:40 +msgid "Bad attachment id. Couldn't find attachment '%1'\\n" +msgstr "æ‚ªã„æ·»ä»˜IDã§ã™ã€‚添付ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“'%1'\\n" + +#: bin/rt-commit-handler:827 +#. ($val) +msgid "Bad data in %1" +msgstr "%1ã®æ‚ªã„データã§ã™" + +#: html/SelfService/Attachment/dhandler:43 +#. ($trans, $AttachmentObj->TransactionId()) +msgid "Bad transaction number for attachment. %1 should be %2\\n" +msgstr "添付ファイルã«ã¨ã£ã¦æ‚ªã„トランザクションナンãƒãƒ¼ã§ã™ã€‚%1ã¯%2\\nã®ã¯ãšã§ã™" + +#: html/Admin/Elements/GroupTabs:39 html/Admin/Elements/QueueTabs:39 html/Admin/Elements/UserTabs:38 html/Ticket/Elements/Tabs:90 html/User/Elements/GroupTabs:38 +msgid "Basics" +msgstr "基本" + +#: html/Ticket/Update.html:83 +msgid "Bcc" +msgstr "Bcc" + +#: html/Admin/Elements/EditScrip:88 html/Admin/Global/GroupRights.html:85 html/Admin/Global/Template.html:46 html/Admin/Global/UserRights.html:54 html/Admin/Groups/GroupRights.html:73 html/Admin/Groups/Members.html:81 html/Admin/Groups/Modify.html:56 html/Admin/Groups/UserRights.html:55 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:45 html/Admin/Queues/UserRights.html:54 html/User/Groups/Modify.html:56 +msgid "Be sure to save your changes" +msgstr "本当ã«å¤‰æ›´ã‚’ä¿å˜ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹" + +#: html/Elements/SelectDateRelation:34 lib/RT/CurrentUser.pm:322 +msgid "Before" +msgstr "å‰" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "" + +#: html/Search/Listing.html:79 +msgid "Bookmarkable URL for this search" +msgstr "ã“ã®æ¤œç´¢ã«ãƒ–ックマークã®ã§ãã‚‹URLã§ã™" + +#: html/Ticket/Elements/ShowHistory:39 html/Ticket/Elements/ShowHistory:45 +msgid "Brief headers" +msgstr "çŸã„ヘッダー" + +#: html/Search/Bulk.html:25 html/Search/Bulk.html:26 +msgid "Bulk ticket update" +msgstr "ãƒã‚±ãƒƒãƒˆã®ä¸€æ‹¬ã‚¢ãƒƒãƒ—デート" + +#: lib/RT/User_Overlay.pm:1331 +msgid "Can not modify system users" +msgstr "システムユーザーを修æ£ã§ãã¾ã›ã‚“" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Can this principal see this queue" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:144 +msgid "Can't add a custom field value without a name" +msgstr "æ°åãªã—ã«ã‚«ã‚¹ã‚¿ãƒ フィールドãƒãƒªãƒ¥ãƒ¼ã®è¿½åŠ ã¯ã§ãã¾ã›ã‚“" + +#: lib/RT/Link_Overlay.pm:132 +msgid "Can't link a ticket to itself" +msgstr "ãƒã‚±ãƒƒãƒˆè‡ªä½“ã«ã¯ãƒªãƒ³ã‚¯ã§ãã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:2787 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "ã™ã§ã«çµåˆã—ãŸãƒã‚±ãƒƒãƒˆã«ã¯çµåˆã§ãã¾ã›ã‚“。ã“ã®ã‚¨ãƒ©ãƒ¼ã¯æ±ºã—ã¦å‡ºã•ãªã„ã§ãã ã•ã„" + +#: lib/RT/Ticket_Overlay.pm:2605 lib/RT/Ticket_Overlay.pm:2674 +msgid "Can't specifiy both base and target" +msgstr "ベースã¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’特定ã§ãã¾ã›ã‚“" + +#: html/autohandler:112 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "ユーザー: %1を作æˆã§ãã¾ã›ã‚“" + +#: etc/initialdata:50 html/Admin/Queues/People.html:44 html/SelfService/Create.html:51 html/SelfService/Display.html:50 html/Ticket/Create.html:64 html/Ticket/Elements/EditPeople:51 html/Ticket/Elements/ShowPeople:35 html/Ticket/Update.html:45 html/Ticket/Update.html:78 lib/RT/ACE_Overlay.pm:88 +msgid "Cc" +msgstr "Cc" + +#: html/SelfService/Prefs.html:31 +msgid "Change password" +msgstr "パスワードを変更ã™ã‚‹" + +#: html/Ticket/Create.html:101 html/Ticket/Update.html:92 +msgid "Check box to delete" +msgstr "" + +#: html/Admin/Elements/SelectRights:31 +msgid "Check box to revoke right" +msgstr "権利を無効ã«ã™ã‚‹ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹" + +#: html/Ticket/Create.html:183 html/Ticket/Elements/EditLinks:131 html/Ticket/Elements/EditLinks:69 html/Ticket/Elements/ShowLinks:51 +msgid "Children" +msgstr "åä¾›" + +#: html/Admin/Elements/ModifyUser:80 html/Admin/Users/Modify.html:132 html/User/Prefs.html:92 +msgid "City" +msgstr "町" + +#: html/Ticket/Elements/ShowDates:47 +msgid "Closed" +msgstr "" + +#: html/SelfService/Elements/Tabs:60 +msgid "Closed requests" +msgstr "終了ã—ãŸãƒªã‚¯ã‚¨ã‚¹ãƒˆã§ã™" + +#: NOT FOUND IN SOURCE +msgid "Code" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "ç†è§£ã—ã¦ã„ãªã„コマンド!\\n" + +#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:153 +msgid "Comment" +msgstr "コメント" + +#: html/Admin/Elements/ModifyQueue:45 html/Admin/Queues/Modify.html:58 +msgid "Comment Address" +msgstr "コメントアドレス" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "記録ã•れã¦ã„ãªã„コメント" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Comment on tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "CommentOnTicket" +msgstr "" + +#: html/Admin/Elements/ModifyUser:35 +msgid "Comments" +msgstr "コメント" + +#: html/Ticket/ModifyAll.html:70 html/Ticket/Update.html:70 +msgid "Comments (Not sent to requestors)" +msgstr "コメント(リクエスã¨ã—ãŸäººã«ã¯é€ä¿¡ã•れã¾ã›ã‚“)" + +#: html/Search/Bulk.html:122 +msgid "Comments (not sent to requestors)" +msgstr "コメント(リクエスã¨ã—ãŸäººã«ã¯é€ä¿¡ã•れã¾ã›ã‚“)" + +#: html/Elements/ViewUser:27 +#. ($name) +msgid "Comments about %1" +msgstr "%1ã«ã¤ã„ã¦ã®ã‚³ãƒ¡ãƒ³ãƒˆ" + +#: html/Admin/Users/Modify.html:185 html/Ticket/Elements/ShowRequestor:44 +msgid "Comments about this user" +msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã¤ã„ã¦ã®ã‚³ãƒ¡ãƒ³ãƒˆ" + +#: lib/RT/Transaction_Overlay.pm:545 +msgid "Comments added" +msgstr "コメントãŒè¿½åŠ ã•れã¾ã—ãŸ" + +#: lib/RT/Action/Generic.pm:140 +msgid "Commit Stubbed" +msgstr "コメントãŒçŸãã•れã¾ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "コンパイルè¦åˆ¶" + +#: html/Admin/Elements/EditScrip:41 +msgid "Condition" +msgstr "コンディション" + +#: bin/rt-crontool:109 +msgid "Condition matches..." +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:160 +msgid "Condition not found" +msgstr "コンディションãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: html/Elements/Tabs:52 +msgid "Configuration" +msgstr "è¨å®š" + +#: html/SelfService/Prefs.html:33 +msgid "Confirm" +msgstr "確èª" + +#: html/Admin/Elements/ModifyUser:60 +msgid "ContactInfoSystem" +msgstr "ã‚³ãƒ³ã‚¿ã‚¯ãƒˆæƒ…å ±" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "コンタクトã•ã‚ŒãŸæ—¥ã«ã¡'%1'ã‚’è§£æžã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Admin/Elements/ModifyTemplate:44 html/Ticket/ModifyAll.html:87 +msgid "Content" +msgstr "æƒ…å ±" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "" + +#: etc/initialdata:266 +msgid "Correspondence" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:39 html/Admin/Queues/Modify.html:51 +msgid "Correspondence Address" +msgstr "メールアドレス" + +#: lib/RT/Transaction_Overlay.pm:541 +msgid "Correspondence added" +msgstr "通信ãŒè¿½åŠ ã•れã¾ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "記録ã•れã¦ã„ãªã„通信" + +#: lib/RT/Ticket_Overlay.pm:3458 +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 "" + +#: lib/RT/Ticket_Overlay.pm:2963 lib/RT/Ticket_Overlay.pm:2971 lib/RT/Ticket_Overlay.pm:2987 +msgid "Could not change owner. " +msgstr "オーナー変更ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Admin/Elements/EditCustomField:68 html/Admin/Elements/EditCustomFields:166 +#. ($msg) +msgid "Could not create CustomField" +msgstr "カスタムフィールドã®ä½œæˆãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/User/Groups/Modify.html:77 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 +msgid "Could not create group" +msgstr "グループã®ä½œæˆãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Admin/Global/Template.html:75 html/Admin/Queues/Template.html:72 +#. ($msg) +msgid "Could not create template: %1" +msgstr "テンプレート: %1ã®ä½œæˆãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Ticket_Overlay.pm:1073 lib/RT/Ticket_Overlay.pm:333 +msgid "Could not create ticket. Queue not set" +msgstr "ãƒã‚±ãƒƒãƒˆã®ä½œæˆãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ã‚ューãŒã‚»ãƒƒãƒˆã•れã¦ã„ã¾ã›ã‚“" + +#: lib/RT/User_Overlay.pm:208 lib/RT/User_Overlay.pm:220 lib/RT/User_Overlay.pm:238 lib/RT/User_Overlay.pm:414 +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 find a ticket with id %1" +msgstr "ãƒã‚±ãƒƒãƒˆã¨ãã®ID%1ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Could not find group %1." +msgstr "グループ %1ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Queue_Overlay.pm:621 lib/RT/Ticket_Overlay.pm:1422 +msgid "Could not find or create that user" +msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’作æˆã¾ãŸã¯è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1501 +msgid "Could not find that principal" +msgstr "ãã®è²¬ä»»è€…を見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "ユーザー%1を見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Admin/Groups/Members.html:88 html/User/Groups/Members.html:90 html/User/Groups/Modify.html:82 +msgid "Could not load group" +msgstr "グループをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "ã“ã®ã‚ューã§ãã®è²¬ä»»è€…ã‚’%1ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Ticket_Overlay.pm:1443 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "ã“ã®ãƒã‚±ãƒƒãƒˆã§ãã®è²¬ä»»è€…ã‚’%1ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "ã“ã®ã‚ューã§ãã®è²¬ä»»è€…ã‚’%1ã¨ã—ã¦å‰Šé™¤ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "ã“ã®ãƒã‚±ãƒƒãƒˆã§ãã®è²¬ä»»è€…ã‚’%1ã¨ã—ã¦å‰Šé™¤ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Group_Overlay.pm:985 +msgid "Couldn't add member to group" +msgstr "グループã«ãƒ¡ãƒ³ãƒãƒ¼ã®è¿½åŠ ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Ticket_Overlay.pm:3468 lib/RT/Ticket_Overlay.pm:3524 +#. ($Msg) +msgid "Couldn't create a transaction: %1" +msgstr "トランザクション: %1ã®ä½œæˆãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: 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/Interface/Web.pm:866 +msgid "Couldn't find row" +msgstr "" + +#: lib/RT/Group_Overlay.pm:959 +msgid "Couldn't find that principal" +msgstr "責任者ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/CustomField_Overlay.pm:175 +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:112 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "ユーザーデータベース\\nã‹ã‚‰%1ã‚’ãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load KeywordSelects." +msgstr "" + +#: 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 "スクリプトをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Admin/Groups/GroupRights.html:88 html/Admin/Groups/UserRights.html:75 +#. ($id) +msgid "Couldn't load group %1" +msgstr "グループ%1ã‚’ãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Link_Overlay.pm:175 lib/RT/Link_Overlay.pm:184 lib/RT/Link_Overlay.pm:211 +msgid "Couldn't load link" +msgstr "リンクをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Admin/Elements/EditCustomFields:147 html/Admin/Queues/People.html:121 +#. ($id) +msgid "Couldn't load queue" +msgstr "ã‚ューをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:72 +#. ($id) +msgid "Couldn't load queue %1" +msgstr "ã‚ュー%1ã‚’ãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "スクリプトをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "テンプレートをãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Admin/Users/Prefs.html:79 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ï¼ˆ%1)をãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/SelfService/Display.html:166 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "ãƒã‚±ãƒƒãƒˆ'%1'ã‚’ãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Admin/Elements/ModifyUser:86 html/Admin/Users/Modify.html:149 html/User/Prefs.html:98 +msgid "Country" +msgstr "国" + +#: html/Admin/Elements/CreateUserCalled:26 html/Ticket/Create.html:135 html/Ticket/Create.html:195 +msgid "Create" +msgstr "作æˆ" + +#: etc/initialdata:128 +msgid "Create Tickets" +msgstr "" + +#: html/Admin/Elements/EditCustomField:58 +msgid "Create a CustomField" +msgstr "カスタムフィールドã®ä½œæˆ" + +#: html/Admin/Queues/CustomField.html:48 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "" + +#: html/Admin/Global/CustomField.html:48 +msgid "Create a CustomField which applies to all queues" +msgstr "" + +#: 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:67 html/Admin/Groups/Modify.html:93 +msgid "Create a new group" +msgstr "æ–°ã—ã„グループã®ä½œæˆ" + +#: html/User/Groups/Modify.html:67 html/User/Groups/Modify.html:92 +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/SelfService/Create.html:30 html/Ticket/Create.html:25 html/Ticket/Create.html:28 html/Ticket/Create.html:36 +msgid "Create a new ticket" +msgstr "æ–°ã—ã„ãƒã‚±ãƒƒãƒˆã®ä½œæˆ" + +#: html/Admin/Users/Modify.html:214 html/Admin/Users/Modify.html:241 +msgid "Create a new user" +msgstr "æ–°ã—ã„ユーザーã®ä½œæˆ" + +#: html/Admin/Queues/Modify.html:103 +msgid "Create a queue" +msgstr "ã‚ューã®ä½œæˆ" + +#: NOT FOUND IN SOURCE +msgid "Create a queue called" +msgstr "呼ã³å‡ºã•れãŸã‚ューã®ä½œæˆ" + +#: html/SelfService/Create.html:25 html/SelfService/Create.html:27 +msgid "Create a request" +msgstr "リクエストã®ä½œæˆ" + +#: html/Admin/Queues/Scrip.html:59 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "" + +#: html/Admin/Global/Template.html:69 html/Admin/Queues/Template.html:65 +msgid "Create a template" +msgstr "テンプレートã®ä½œæˆ" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1 / %2 / %3 " +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1/%2/%3" +msgstr "" + +#: etc/initialdata:130 +msgid "Create new tickets based on this scrip's template" +msgstr "" + +#: html/SelfService/Create.html:81 +msgid "Create ticket" +msgstr "ãƒã‚±ãƒƒãƒˆã®ä½œæˆ" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Create tickets in this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Create, delete and modify custom fields" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:68 +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:59 +msgid "Create, delete and modify the members of personal groups" +msgstr "" + +#: lib/RT/System.pm:60 +msgid "Create, delete and modify users" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "CreateTicket" +msgstr "" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1167 +msgid "Created" +msgstr "作æˆã—ã¾ã—ãŸ" + +#: html/Admin/Elements/EditCustomField:71 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "カスタムフィールド%1を作æˆã—ã¾ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "テンプレート%1を作æˆã—ã¾ã—ãŸ" + +#: html/Ticket/Elements/EditLinks:28 +msgid "Current Relationships" +msgstr "ç¾åœ¨ã®é–¢ä¿‚" + +#: html/Admin/Elements/EditScrips:30 +msgid "Current Scrips" +msgstr "" + +#: html/Admin/Groups/Members.html:39 html/User/Groups/Members.html:42 +msgid "Current members" +msgstr "ç¾åœ¨ã®ãƒ¡ãƒ³ãƒãƒ¼" + +#: html/Admin/Elements/SelectRights:29 +msgid "Current rights" +msgstr "ç¾åœ¨ã®æ¨©åˆ©" + +#: html/Search/Listing.html:71 +msgid "Current search criteria" +msgstr "" + +#: html/Admin/Queues/People.html:41 html/Ticket/Elements/EditPeople:45 +msgid "Current watchers" +msgstr "ç¾åœ¨ã®ã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼" + +#: html/Admin/Global/CustomField.html:55 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "" + +#: html/Admin/Elements/QueueTabs:53 html/Admin/Elements/SystemTabs:40 html/Admin/Global/index.html:50 html/Ticket/Elements/ShowSummary:35 +msgid "Custom Fields" +msgstr "カスタムフィールド" + +#: html/Admin/Elements/EditScrip:73 +msgid "Custom action cleanup code" +msgstr "" + +#: html/Admin/Elements/EditScrip:65 +msgid "Custom action preparation code" +msgstr "" + +#: html/Admin/Elements/EditScrip:49 +msgid "Custom condition" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "カスタムフィールド%1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "カスタムフィールド%1ã¯ãƒãƒªãƒ¥ãƒ¼ãŒã‚りã¾ã™" + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "カスタムフィールド%1ã¯ãƒãƒªãƒ¥ãƒ¼ãŒã‚りã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:3360 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "カスタムフィールド%1ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: html/Admin/Elements/EditCustomFields:197 +msgid "Custom field deleted" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3510 +msgid "Custom field not found" +msgstr "カスタムフィールドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: lib/RT/CustomField_Overlay.pm:283 +#. ($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:185 +msgid "Custom field value could not be deleted" +msgstr "カスタムフィールドãƒãƒªãƒ¥ãƒ¼ã¯å‰Šé™¤ã•れã¾ã›ã‚“" + +#: lib/RT/CustomField_Overlay.pm:289 +msgid "Custom field value could not be found" +msgstr "カスタムフィールドãƒãƒªãƒ¥ãƒ¼ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: lib/RT/CustomField_Overlay.pm:183 lib/RT/CustomField_Overlay.pm:291 +msgid "Custom field value deleted" +msgstr "カスタムフィールドãƒãƒªãƒ¥ãƒ¼ãŒå‰Šé™¤ã•れã¾ã—ãŸ" + +#: lib/RT/Transaction_Overlay.pm:550 +msgid "CustomField" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "" + +#: html/Ticket/Create.html:161 html/Ticket/Elements/ShowSummary:53 html/Ticket/Elements/Tabs:93 html/Ticket/ModifyAll.html:44 +msgid "Dates" +msgstr "日付" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "å二月" + +#: NOT FOUND IN SOURCE +msgid "December" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "" + +#: etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "" + +#: etc/initialdata:275 +msgid "Default admin comment template" +msgstr "" + +#: etc/initialdata:257 +msgid "Default admin correspondence template" +msgstr "" + +#: etc/initialdata:267 +msgid "Default correspondence template" +msgstr "" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:645 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "" + +#: html/User/Delegation.html:25 html/User/Delegation.html:28 +msgid "Delegate rights" +msgstr "ä»£è¡¨è€…ã®æ¨©åˆ©" + +#: lib/RT/System.pm:63 +msgid "Delegate specific rights which have been granted to you." +msgstr "" + +#: lib/RT/System.pm:63 +msgid "DelegateRights" +msgstr "" + +#: html/User/Elements/Tabs:38 +msgid "Delegation" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "削除" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "Delete tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "DeleteTicket" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "ã“ã®ã‚ªãƒ–ジェクトを削除ã™ã‚‹ã¨æŒ‡ç¤ºã®å®Œå…¨æ€§ãŒããšã•れるå¯èƒ½æ€§ãŒã‚りã¾ã™" + +#: lib/RT/Queue_Overlay.pm:292 +msgid "Deleting this object would break referential integrity" +msgstr "ã“ã®ã‚ªãƒ–ジェクトを削除ã™ã‚‹ã¨æŒ‡ç¤ºã®å®Œå…¨æ€§ãŒããšã•れã¾ã™" + +#: lib/RT/User_Overlay.pm:430 +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:46 +msgid "Deny" +msgstr "" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/EditLinks:123 html/Ticket/Elements/EditLinks:47 html/Ticket/Elements/ShowDependencies:32 html/Ticket/Elements/ShowLinks:35 +msgid "Depended on by" +msgstr "次ã®ã‚‚ã®æ¬¡ç¬¬ã§ã‚ã‚‹" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "従属ãƒã‚±ãƒƒãƒˆ: \\n" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:180 html/Ticket/Elements/EditLinks:119 html/Ticket/Elements/EditLinks:36 html/Ticket/Elements/ShowDependencies:25 html/Ticket/Elements/ShowLinks:27 +msgid "Depends on" +msgstr "ã«ã‚ˆã‚‹" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "" + +#: html/Elements/SelectSortOrder:35 +msgid "Descending" +msgstr "é™é †ã™ã‚‹" + +#: html/SelfService/Create.html:75 html/Ticket/Create.html:119 +msgid "Describe the issue below" +msgstr "下ã®å•題点を表ã™" + +#: html/Admin/Elements/AddCustomFieldValue:27 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyQueue:36 html/Admin/Elements/ModifyTemplate:36 html/Admin/Groups/Modify.html:49 html/Admin/Queues/Modify.html:48 html/Elements/SelectGroups:27 html/User/Groups/Modify.html:49 +msgid "Description" +msgstr "記述" + +#: html/SelfService/Elements/MyRequests:44 +msgid "Details" +msgstr "詳細" + +#: html/Ticket/Elements/Tabs:85 +msgid "Display" +msgstr "表ã™" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Display Access Control List" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Display Scrip templates for this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Display Scrips for this queue" +msgstr "" + +#: html/Ticket/Elements/ShowHistory:35 +msgid "Display mode" +msgstr "モードを表ã™" + +#: html/SelfService/Display.html:25 html/SelfService/Display.html:29 +#. ($Ticket->id) +msgid "Display ticket #%1" +msgstr "ãƒã‚±ãƒƒãƒˆ#%1を表ã™" + +#: lib/RT/System.pm:54 +msgid "Do anything and everything" +msgstr "" + +#: html/Elements/Refresh:30 +msgid "Don't refresh this page." +msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’æ›´æ–°ã—ãªã„ã§ãã ã•ã„" + +#: html/Search/Elements/PickRestriction:114 +msgid "Don't show search results" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "Download" +msgstr "ダウンãƒãƒ¼ãƒ‰" + +#: html/Elements/SelectDateType:32 html/Ticket/Create.html:167 html/Ticket/Elements/EditDates:45 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1171 +msgid "Due" +msgstr "期é™åˆ‡ã‚Œ" + +#: NOT FOUND IN SOURCE +msgid "Due date '%1' could not be parsed" +msgstr "期é™ãŒåˆ‡ã‚Œã‚‹æ—¥'%1'ã¯è§£æžã•れã¾ã›ã‚“" + +#: bin/rt-commit-handler:754 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "ERROR: ã¯ãƒã‚±ãƒƒãƒˆ '%1': %2.\\nã‚’ãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "編集" + +#: NOT FOUND IN SOURCE +msgid "Edit Conditions" +msgstr "" + +#: html/Admin/Queues/CustomFields.html:45 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "%1ã®ã‚«ã‚¹ã‚¿ãƒ フィールドを編集ã™ã‚‹" + +#: html/Ticket/ModifyLinks.html:36 +msgid "Edit Relationships" +msgstr "関係を編集ã™ã‚‹" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit keywords" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "スクリプトを編集ã™ã‚‹" + +#: html/Admin/Global/index.html:46 +msgid "Edit system templates" +msgstr "システムテンプレートを編集ã™ã‚‹" + +#: NOT FOUND IN SOURCE +msgid "Edit templates for %1" +msgstr "%1ã®ãƒ†ãƒ³ãƒ—レートを編集ã™ã‚‹" + +#: html/Admin/Elements/ModifyQueue:25 html/Admin/Queues/Modify.html:117 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "ã‚ュー%1ã®è¨å®šã‚’編集ã™ã‚‹" + +#: html/Admin/Elements/ModifyUser:25 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "ユーザー%1ã®è¨å®šã‚’編集ã™ã‚‹" + +#: html/Admin/Elements/EditCustomField:74 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "カスタムフィールド%1を編集ã™ã‚‹" + +#: html/Admin/Groups/Members.html:32 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "グループ%1ã®ä¼šå“¡ã‚’編集ã™ã‚‹" + +#: html/User/Groups/Members.html:129 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "個人グループ%1ã®ä¼šå“¡ã‚’編集ã™ã‚‹" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "テンプレート%1を編集ã™ã‚‹" + +#: lib/RT/Ticket_Overlay.pm:2615 lib/RT/Ticket_Overlay.pm:2683 +msgid "Either base or target must be specified" +msgstr "ベースもã—ãã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’特定ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“" + +#: html/Admin/Users/Modify.html:53 html/Admin/Users/Prefs.html:46 html/Elements/SelectUsers:27 html/Ticket/Elements/AddWatchers:56 html/User/Prefs.html:42 +msgid "Email" +msgstr "Eメール" + +#: lib/RT/User_Overlay.pm:188 +msgid "Email address in use" +msgstr "ãŠä½¿ã„ã®Eメールアドレス" + +#: html/Admin/Elements/ModifyUser:42 +msgid "EmailAddress" +msgstr "Eメールアドレス" + +#: html/Admin/Elements/ModifyUser:54 +msgid "EmailEncoding" +msgstr "Eメールエンコーディング" + +#: html/Admin/Elements/EditCustomField:36 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "" + +#: html/Admin/Groups/Modify.html:53 html/User/Groups/Modify.html:53 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "" + +#: html/Admin/Queues/Modify.html:84 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "有効ã«ãªã‚Šã¾ã—ãŸï¼ˆã‚‚ã†ä¸€åº¦ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã¨ã“ã®ã‚ãƒ¥ãƒ¼ã¯æœ‰åйã§ãªããªã‚Šã¾ã™ï¼‰" + +#: html/Admin/Elements/EditCustomFields:99 +msgid "Enabled Custom Fields" +msgstr "" + +#: html/Admin/Queues/index.html:56 +msgid "Enabled Queues" +msgstr "有効ãªã‚ュー" + +#: html/Admin/Elements/EditCustomField:90 html/Admin/Groups/Modify.html:117 html/Admin/Queues/Modify.html:138 html/Admin/Users/Modify.html:283 html/User/Groups/Modify.html:117 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "有効ãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹%1" + +#: lib/RT/CustomField_Overlay.pm:361 +msgid "Enter multiple values" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:358 +msgid "Enter one value" +msgstr "" + +#: html/Ticket/Elements/EditLinks:112 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "ãƒã‚±ãƒƒãƒˆã‚’リンクã™ã‚‹ãƒã‚±ãƒƒãƒˆã¾ãŸã¯URLsを入力ã—ã¦ãã ã•ã„。入力ã™ã‚‹é …ç›®ãŒã„ãã¤ã‹ã‚ã‚‹å ´åˆã«ã¯ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã£ã¦ãã ã•ã„。" + +#: html/Elements/Login:29 html/SelfService/Error.html:25 html/SelfService/Error.html:26 +msgid "Error" +msgstr "エラー" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "パラメーターã®ã‚¨ãƒ©ãƒ¼Queue->AddWatcher" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "パラメーターã®ã‚¨ãƒ©ãƒ¼Queue->DelWatcher" + +#: lib/RT/Ticket_Overlay.pm:1356 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "パラメーターã®ã‚¨ãƒ©ãƒ¼Ticket->AddWatcher" + +#: lib/RT/Ticket_Overlay.pm:1532 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "パラメーターã®ã‚¨ãƒ©ãƒ¼Ticket->DelWatcher" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "" + +#: bin/rt-crontool:194 +msgid "Example:" +msgstr "" + +#: html/Admin/Elements/ModifyUser:64 +msgid "ExternalAuthId" +msgstr "外部ã®èªè¨¼ID" + +#: html/Admin/Elements/ModifyUser:58 +msgid "ExternalContactInfoId" +msgstr "外部ã®ã‚³ãƒ³ã‚¿ã‚¯ãƒˆæƒ…å ±ID" + +#: html/Admin/Users/Modify.html:73 +msgid "Extra info" +msgstr "ãã®ä»–ã®æƒ…å ±" + +#: lib/RT/User_Overlay.pm:302 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "'特権ã®ã‚ã‚‹'ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ“¬ä¼¼ã‚°ãƒ«ãƒ¼ãƒ—ã®æ¤œç´¢ãŒå¤±æ•—ã—ã¾ã—ãŸ" + +#: lib/RT/User_Overlay.pm:309 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "'特権ã®ãªã„'ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ“¬ä¼¼ã‚°ãƒ«ãƒ¼ãƒ—ã®æ¤œç´¢ãŒå¤±æ•—ã—ã¾ã—ãŸ" + +#: bin/rt-crontool:138 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "二月" + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "終了" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:59 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "æœ€çµ‚å„ªå…ˆé †ä½" + +#: lib/RT/Ticket_Overlay.pm:1162 +msgid "FinalPriority" +msgstr "" + +#: html/Admin/Queues/People.html:61 html/Ticket/Elements/EditPeople:34 +msgid "Find group whose" +msgstr "" + +#: html/Elements/Quicksearch:25 +msgid "Find new/open tickets" +msgstr "æ–°ã—ã„/é–‹ããƒã‚±ãƒƒãƒˆã‚’見ã¤ã‘ã‚‹" + +#: html/Admin/Queues/People.html:57 html/Admin/Users/index.html:46 html/Ticket/Elements/EditPeople:30 +msgid "Find people whose" +msgstr "人々を見ã¤ã‘ã‚‹" + +#: html/Search/Listing.html:108 +msgid "Find tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "" + +#: html/Ticket/Elements/Tabs:58 +msgid "First" +msgstr "最åˆã®" + +#: html/Search/Listing.html:41 +msgid "First page" +msgstr "最åˆã®ãƒšãƒ¼ã‚¸" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "Foo Bar Baz" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "ã°ã‹ï¼" + +#: html/Search/Bulk.html:87 +msgid "Force change" +msgstr "変更を強制ã—ã¾ã™" + +#: html/Search/Listing.html:106 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "" + +#: lib/RT/Interface/Web.pm:868 +msgid "Found Object" +msgstr "" + +#: html/Admin/Elements/ModifyUser:44 +msgid "FreeformContactInfo" +msgstr "ãƒ•ãƒªãƒ¼ãƒ•ã‚©ãƒ¼ãƒ ã‚³ãƒ³ã‚¿ã‚¯ãƒˆæƒ…å ±" + +#: lib/RT/CustomField_Overlay.pm:38 +msgid "FreeformMultiple" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformSingle" +msgstr "" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "金曜日" + +#: html/Ticket/Elements/ShowHistory:41 html/Ticket/Elements/ShowHistory:51 +msgid "Full headers" +msgstr "フルヘッダー" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "pgp sig\\nã‹ã‚‰ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’å¾—ã‚‹" + +#: lib/RT/Transaction_Overlay.pm:595 +#. ($New->Name) +msgid "Given to %1" +msgstr "" + +#: html/Admin/Elements/Tabs:41 html/Admin/index.html:38 +msgid "Global" +msgstr "ã‚°ãƒãƒ¼ãƒãƒ«" + +#: NOT FOUND IN SOURCE +msgid "Global Keyword Selections" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "ã‚°ãƒãƒ¼ãƒãƒ«ã‚¹ã‚¯ãƒªãƒ—ト" + +#: html/Admin/Elements/SelectTemplate:38 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:75 html/Admin/Queues/People.html:59 html/Admin/Queues/People.html:63 html/Admin/Queues/index.html:44 html/Admin/Users/index.html:49 html/Ticket/Elements/EditPeople:32 html/Ticket/Elements/EditPeople:36 html/index.html:41 +msgid "Go!" +msgstr "行ãï¼" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "%1\\nã‹ã‚‰ã®è‰¯ã„pgp sig" + +#: html/Search/Listing.html:50 +msgid "Goto page" +msgstr "ページã¸è¡Œã" + +#: html/Elements/GotoTicket:25 html/SelfService/Elements/GotoTicket:25 +msgid "Goto ticket" +msgstr "ãƒã‚±ãƒƒãƒˆã«è¡Œã" + +#: NOT FOUND IN SOURCE +msgid "Grand" +msgstr "" + +#: html/Ticket/Elements/AddWatchers:46 html/User/Elements/DelegateRights:78 +msgid "Group" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "グループ%1 %2: %3" + +#: html/Admin/Elements/GroupTabs:45 html/Admin/Elements/QueueTabs:57 html/Admin/Elements/SystemTabs:44 html/Admin/Global/index.html:55 +msgid "Group Rights" +msgstr "グループ権利" + +#: lib/RT/Group_Overlay.pm:965 +msgid "Group already has member" +msgstr "グループã«ã¯ã™ã§ã«ãƒ¡ãƒ³ãƒãƒ¼ãŒã„ã¾ã™" + +#: NOT FOUND IN SOURCE +msgid "Group could not be created." +msgstr "" + +#: html/Admin/Groups/Modify.html:77 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:497 +msgid "Group created" +msgstr "グループãŒä½œæˆã•れã¾ã—ãŸ" + +#: lib/RT/Group_Overlay.pm:1133 +msgid "Group has no such member" +msgstr "" + +#: lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1429 lib/RT/Ticket_Overlay.pm:1507 +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" + +#: html/Admin/Elements/SelectNewGroupMembers:35 html/Admin/Elements/Tabs:35 html/Admin/Groups/Members.html:64 html/Admin/Queues/People.html:83 html/Admin/index.html:32 html/User/Groups/Members.html:67 +msgid "Groups" +msgstr "グループ" + +#: lib/RT/Group_Overlay.pm:971 +msgid "Groups can't be members of their members" +msgstr "グループã¯å½¼ã‚‰ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ã¯ãªã‚Œã¾ã›ã‚“" + +#: lib/RT/Interface/CLI.pm:73 lib/RT/Interface/CLI.pm:73 +msgid "Hello!" +msgstr "ã“ã‚“ã«ã¡ã¯ï¼" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "ã“ã‚“ã«ã¡ã¯ã€%1" + +#: html/Ticket/Elements/ShowHistory:30 html/Ticket/Elements/Tabs:88 +msgid "History" +msgstr "ヒストリー" + +#: html/Admin/Elements/ModifyUser:68 +msgid "HomePhone" +msgstr "自宅ã®é›»è©±" + +#: html/Elements/Tabs:46 +msgid "Homepage" +msgstr "ホームページ" + +#: lib/RT/Base.pm:74 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "I have [quant,_1,concrete mixer]." +msgstr "ç§ã¯[quant,_1,concrete mixer]ãŒã‚りã¾ã™ã€‚" + +#: html/Ticket/Elements/ShowBasics:27 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "ID" + +#: html/Admin/Users/Modify.html:44 html/User/Prefs.html:39 +msgid "Identity" +msgstr "身分証明書" + +#: etc/upgrade/2.1.71:86 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "" + +#: bin/rt-crontool:190 +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:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "If you've updated anything above, be sure to" +msgstr "上ã®ä½•ã‹ã‚’アップデートã—ãŸãªã‚‰ã€æ¬¡ã®ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„" + +#: lib/RT/Interface/Web.pm:860 +msgid "Illegal value for %1" +msgstr "" + +#: lib/RT/Interface/Web.pm:863 +msgid "Immutable field" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:74 +msgid "Include disabled custom fields in listing." +msgstr "" + +#: html/Admin/Queues/index.html:43 +msgid "Include disabled queues in listing." +msgstr "リストã®ç„¡åйãªã‚ューをå«ã‚€" + +#: html/Admin/Users/index.html:47 +msgid "Include disabled users in search." +msgstr "検索ã®ç„¡åйãªãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’å«ã‚€" + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "最åˆã®å„ªå…ˆæ¨©" + +#: lib/RT/Ticket_Overlay.pm:1161 lib/RT/Ticket_Overlay.pm:1163 +msgid "InitialPriority" +msgstr "" + +#: lib/RT/ScripAction_Overlay.pm:105 +msgid "Input error" +msgstr "入力エラー" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3729 +msgid "Internal Error" +msgstr "" + +#: lib/RT/Record.pm:143 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:644 +msgid "Invalid Group Type" +msgstr "無効ãªã‚°ãƒ«ãƒ¼ãƒ—タイプã§ã™" + +#: lib/RT/Principal_Overlay.pm:128 +msgid "Invalid Right" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "" + +#: lib/RT/Interface/Web.pm:865 +msgid "Invalid data" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:438 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "無効ãªã‚ªãƒ¼ãƒŠãƒ¼ã§ã™ã€‚ '誰ã§ã‚‚ãªã„'ã«åˆæœŸè¨å®šã—ã¾ã™." + +#: lib/RT/Scrip_Overlay.pm:134 lib/RT/Template_Overlay.pm:251 +msgid "Invalid queue" +msgstr "無効ãªã‚ューã§ã™" + +#: lib/RT/ACE_Overlay.pm:244 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:270 lib/RT/ACE_Overlay.pm:275 +msgid "Invalid right" +msgstr "ç„¡åŠ¹ãªæ¨©åˆ©ã§ã™" + +#: lib/RT/Record.pm:118 +#. ($key) +msgid "Invalid value for %1" +msgstr "%1ã«ã¯ç„¡åйãªãƒãƒªãƒ¥ãƒ¼ã§ã™" + +#: lib/RT/Ticket_Overlay.pm:3367 +msgid "Invalid value for custom field" +msgstr "カスタムフィールドã«ã¯ç„¡åйãªãƒãƒªãƒ¥ãƒ¼ã§ã™" + +#: lib/RT/Ticket_Overlay.pm:345 +msgid "Invalid value for status" +msgstr "ステータスã«ã¯ç„¡åйãªãƒãƒªãƒ¥ãƒ¼ã§ã™" + +#: bin/rt-crontool:191 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "" + +#: bin/rt-crontool:192 +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:163 +msgid "It takes several arguments:" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "一月" + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "" + +#: lib/RT/Group_Overlay.pm:149 +msgid "Join or leave this group" +msgstr "" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "七月" + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "" + +#: html/Ticket/Elements/Tabs:99 +msgid "Jumbo" +msgstr "大ãã„" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "å…æœˆ" + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "ã‚ーワード" + +#: html/Admin/Elements/ModifyUser:52 +msgid "Lang" +msgstr "é•·ã„" + +#: html/Ticket/Elements/Tabs:73 +msgid "Last" +msgstr "最後ã®" + +#: html/Ticket/Elements/EditDates:38 html/Ticket/Elements/ShowDates:39 +msgid "Last Contact" +msgstr "最後ã®ã‚³ãƒ³ã‚¿ã‚¯ãƒˆ" + +#: html/Elements/SelectDateType:29 +msgid "Last Contacted" +msgstr "最後ã«ã‚³ãƒ³ã‚¿ã‚¯ãƒˆã—ãŸ" + +#: html/Search/Elements/TicketHeader:41 +msgid "Last Notified" +msgstr "" + +#: html/Elements/SelectDateType:30 +msgid "Last Updated" +msgstr "最後ã«ã‚¢ãƒƒãƒ—デートã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "残ã£ãŸ" + +#: html/Admin/Users/Modify.html:83 +msgid "Let this user access RT" +msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’RTã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¾ã™" + +#: html/Admin/Users/Modify.html:87 +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ã«åˆ¶é™ã—ã¾ã™" + +#: lib/RT/Ticket_Overlay.pm:2697 +msgid "Link already exists" +msgstr "リンクã¯ã™ã§ã«å˜åœ¨ã—ã¦ã„ã¾ã™" + +#: lib/RT/Ticket_Overlay.pm:2709 +msgid "Link could not be created" +msgstr "リンクãŒä½œæˆã•れã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Ticket_Overlay.pm:2717 lib/RT/Ticket_Overlay.pm:2727 +#. ($TransString) +msgid "Link created (%1)" +msgstr "リンクãŒä½œæˆã•れã¾ã—ãŸï¼ˆ%1)" + +#: lib/RT/Ticket_Overlay.pm:2638 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "リンクãŒå‰Šé™¤ã•れã¾ã—ãŸï¼ˆ%1)" + +#: lib/RT/Ticket_Overlay.pm:2644 +msgid "Link not found" +msgstr "リンクãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: html/Ticket/ModifyLinks.html:25 html/Ticket/ModifyLinks.html:29 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "リンクãƒã‚±ãƒƒãƒˆ#%1" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "" + +#: html/Ticket/Elements/Tabs:97 +msgid "Links" +msgstr "リンク" + +#: html/Admin/Users/Modify.html:114 html/User/Prefs.html:85 +msgid "Location" +msgstr "å ´æ‰€" + +#: lib/RT.pm:158 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "ãƒã‚°ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼%1ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã€ã¾ãŸã¯æ›¸ã出ã›ã¾ã›ã‚“。\\n RTãŒå‹•ãã¾ã›ã‚“" + +#: html/Elements/Header:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "%1ã¨ã—ã¦ã‚µã‚¤ãƒ³ã™ã‚‹" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:25 html/Elements/Login:34 html/Elements/Login:45 +msgid "Login" +msgstr "ãƒã‚°ã‚¤ãƒ³" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "ãƒã‚°ã‚¢ã‚¦ãƒˆ" + +#: html/Search/Bulk.html:86 +msgid "Make Owner" +msgstr "オーナーを決ã‚ã‚‹" + +#: html/Search/Bulk.html:102 +msgid "Make Status" +msgstr "ステータスを決ã‚ã‚‹" + +#: html/Search/Bulk.html:109 +msgid "Make date Due" +msgstr "æœŸé™æœŸæ—¥ã‚’決ã‚ã‚‹" + +#: html/Search/Bulk.html:110 +msgid "Make date Resolved" +msgstr "è§£æžæœŸæ—¥ã‚’決ã‚ã‚‹" + +#: html/Search/Bulk.html:107 +msgid "Make date Started" +msgstr "é–‹å§‹ã—ãŸæ—¥ã‚’決ã‚ã‚‹" + +#: html/Search/Bulk.html:106 +msgid "Make date Starts" +msgstr "開始日を決ã‚ã‚‹" + +#: html/Search/Bulk.html:108 +msgid "Make date Told" +msgstr "ã„ã‚ã‚ŒãŸæ—¥ã‚’決ã‚ã‚‹" + +#: html/Search/Bulk.html:99 +msgid "Make priority" +msgstr "å„ªå…ˆé †ä½ã‚’決ã‚ã‚‹" + +#: html/Search/Bulk.html:100 +msgid "Make queue" +msgstr "ã‚ューを決ã‚ã‚‹" + +#: html/Search/Bulk.html:98 +msgid "Make subject" +msgstr "サブジェクトを決ã‚ã‚‹" + +#: html/Admin/index.html:33 +msgid "Manage groups and group membership" +msgstr "" + +#: html/Admin/index.html:39 +msgid "Manage properties and configuration which apply to all queues" +msgstr "" + +#: html/Admin/index.html:36 +msgid "Manage queues and queue-specific properties" +msgstr "" + +#: html/Admin/index.html:30 +msgid "Manage users and passwords" +msgstr "" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "三月" + +#: NOT FOUND IN SOURCE +msgid "March" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "May" +msgstr "" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "五月" + +#: lib/RT/Group_Overlay.pm:982 +msgid "Member added" +msgstr "メンãƒãƒ¼ãŒè¿½åŠ ã•れã¾ã—ãŸ" + +#: lib/RT/Group_Overlay.pm:1140 +msgid "Member deleted" +msgstr "メンãƒãƒ¼ãŒå‰Šé™¤ã•れã¾ã—ãŸ" + +#: lib/RT/Group_Overlay.pm:1144 +msgid "Member not deleted" +msgstr "メンãƒãƒ¼ãŒå‰Šé™¤ã•れã¦ã„ã¾ã›ã‚“" + +#: html/Elements/SelectLinkType:26 +msgid "Member of" +msgstr "ã®ãƒ¡ãƒ³ãƒãƒ¼" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "" + +#: html/Admin/Elements/GroupTabs:42 html/User/Elements/GroupTabs:42 +msgid "Members" +msgstr "メンãƒãƒ¼" + +#: lib/RT/Ticket_Overlay.pm:2843 +msgid "Merge Successful" +msgstr "çµåˆãŒæˆåŠŸã—ã¾ã—ãŸ" + +#: lib/RT/Ticket_Overlay.pm:2804 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "çµåˆãŒå¤±æ•—ã—ã¾ã—ãŸã€‚有効ãªIDãŒè¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Ticket/Elements/EditLinks:115 +msgid "Merge into" +msgstr "ã«çµåˆ" + +#: html/Ticket/Update.html:102 +msgid "Message" +msgstr "" + +#: lib/RT/Interface/Web.pm:867 +msgid "Missing a primary key?: %1" +msgstr "" + +#: html/Admin/Users/Modify.html:169 html/User/Prefs.html:54 +msgid "Mobile" +msgstr "æºå¸¯" + +#: html/Admin/Elements/ModifyUser:72 +msgid "MobilePhone" +msgstr "æºå¸¯é›»è©±" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify Access Control List" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Modify Custom Field %1" +msgstr "カスタムフィールド%1ã‚’ä¿®æ£ã™ã‚‹" + +#: html/Admin/Global/CustomFields.html:44 html/Admin/Global/index.html:51 +msgid "Modify Custom Fields which apply to all queues" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "Modify Scrip templates for this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:76 +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 "" + +#: html/Admin/Queues/CustomField.html:45 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "" + +#: html/Admin/Global/CustomField.html:53 +msgid "Modify a CustomField which applies to all queues" +msgstr "" + +#: html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "" + +#: html/Admin/Global/Scrip.html:48 +msgid "Modify a scrip which applies to all queues" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "" + +#: html/Ticket/ModifyDates.html:25 html/Ticket/ModifyDates.html:29 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "#%1ã®æœŸæ—¥ã‚’ä¿®æ£ã™ã‚‹" + +#: html/Ticket/ModifyDates.html:35 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "ãƒã‚±ãƒƒãƒˆ#%1ã®æœŸæ—¥ã‚’ä¿®æ£ã™ã‚‹" + +#: html/Admin/Global/GroupRights.html:25 html/Admin/Global/GroupRights.html:28 html/Admin/Global/index.html:56 +msgid "Modify global group rights" +msgstr "ã‚°ãƒãƒ¼ãƒãƒ«ã‚°ãƒ«ãƒ¼ãƒ—ã®æ¨©åˆ©ã‚’ä¿®æ£ã™ã‚‹" + +#: html/Admin/Global/GroupRights.html:33 +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:25 html/Admin/Global/UserRights.html:28 html/Admin/Global/index.html:60 +msgid "Modify global user rights" +msgstr "" + +#: html/Admin/Global/UserRights.html:33 +msgid "Modify global user rights." +msgstr "ã‚°ãƒãƒ¼ãƒãƒ«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ¨©åˆ©ã‚’ä¿®æ£ã™ã‚‹" + +#: lib/RT/Group_Overlay.pm:146 +msgid "Modify group metadata or delete group" +msgstr "" + +#: html/Admin/Groups/GroupRights.html:25 html/Admin/Groups/GroupRights.html:29 html/Admin/Groups/GroupRights.html:35 +#. ($GroupObj->Name) +msgid "Modify group rights for group %1" +msgstr "%1ã®ã‚°ãƒ«ãƒ¼ãƒ—権利を修æ£ã™ã‚‹" + +#: html/Admin/Queues/GroupRights.html:25 html/Admin/Queues/GroupRights.html:29 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "ã‚ュー%1ã®ã‚°ãƒ«ãƒ¼ãƒ—権利を修æ£ã™ã‚‹" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Modify membership roster for this group" +msgstr "" + +#: lib/RT/System.pm:61 +msgid "Modify one's own RT account" +msgstr "" + +#: html/Admin/Queues/People.html:25 html/Admin/Queues/People.html:29 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "ã‚ュー%1ã«é–¢ä¿‚ã®ã‚る人々を修æ£ã™ã‚‹" + +#: html/Ticket/ModifyPeople.html:25 html/Ticket/ModifyPeople.html:29 html/Ticket/ModifyPeople.html:35 +#. ($Ticket->id) +#. ($Ticket->Id) +msgid "Modify people related to ticket #%1" +msgstr "ãƒã‚±ãƒƒãƒˆ#%1ã«é–¢ä¿‚ã®ã‚る人々を修æ£ã™ã‚‹" + +#: html/Admin/Queues/Scrips.html:44 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "ã‚ュー%1ã®ã‚¹ã‚¯ãƒªãƒ—トを修æ£ã™ã‚‹" + +#: html/Admin/Global/Scrips.html:44 html/Admin/Global/index.html:42 +msgid "Modify scrips which apply to all queues" +msgstr "" + +#: html/Admin/Global/Template.html:25 html/Admin/Global/Template.html:30 html/Admin/Global/Template.html:81 html/Admin/Queues/Template.html:78 +#. (loc($TemplateObj->Name())) +#. ($TemplateObj->id) +msgid "Modify template %1" +msgstr "テンプレート%1ã‚’ä¿®æ£ã™ã‚‹" + +#: html/Admin/Global/Templates.html:44 +msgid "Modify templates which apply to all queues" +msgstr "" + +#: html/Admin/Groups/Modify.html:87 html/User/Groups/Modify.html:86 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "グループ%1ã‚’ä¿®æ£ã™ã‚‹" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Modify the queue watchers" +msgstr "" + +#: html/Admin/Users/Modify.html:236 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "ユーザー%1ã‚’ä¿®æ£ã™ã‚‹" + +#: html/Ticket/ModifyAll.html:37 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "ãƒã‚±ãƒƒãƒˆ# %1ã‚’ä¿®æ£ã™ã‚‹" + +#: html/Ticket/Modify.html:25 html/Ticket/Modify.html:28 html/Ticket/Modify.html:34 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "ãƒã‚±ãƒƒãƒˆ#%1ã‚’ä¿®æ£ã™ã‚‹" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Modify tickets" +msgstr "" + +#: html/Admin/Groups/UserRights.html:25 html/Admin/Groups/UserRights.html:29 html/Admin/Groups/UserRights.html:35 +#. ($GroupObj->Name) +msgid "Modify user rights for group %1" +msgstr "グループ%1ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼æ¨©åˆ©ã‚’ä¿®æ£ã™ã‚‹" + +#: html/Admin/Queues/UserRights.html:25 html/Admin/Queues/UserRights.html:29 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "ã‚ュー%1ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼æ¨©åˆ©ã‚’ä¿®æ£ã™ã‚‹" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "ã‚ュー'%1'ã®ã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼ã‚’ä¿®æ£ã™ã‚‹" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyACL" +msgstr "" + +#: lib/RT/Group_Overlay.pm:149 +msgid "ModifyOwnMembership" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "ModifyQueueWatchers" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "ModifyScrips" +msgstr "" + +#: lib/RT/System.pm:61 +msgid "ModifySelf" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "ModifyTemplate" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "ModifyTicket" +msgstr "" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "月曜日" + +#: html/Ticket/Elements/ShowRequestor:42 +#. ($name) +msgid "More about %1" +msgstr "ã•らã«%1ã«ã¤ã„ã¦" + +#: html/Admin/Elements/EditCustomFields:61 +msgid "Move down" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:53 +msgid "Move up" +msgstr "" + +#: html/Admin/Elements/SelectSingleOrMultiple:27 +msgid "Multiple" +msgstr "多ãã®" + +#: lib/RT/User_Overlay.pm:179 +msgid "Must specify 'Name' attribute" +msgstr "'åå‰'ã®å±žæ€§ã‚’特定ã—ã¦ãã ã•ã„" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "" + +#: html/Approvals/index.html:25 html/Approvals/index.html:26 +msgid "My approvals" +msgstr "" + +#: html/Admin/Elements/AddCustomFieldValue:26 html/Admin/Elements/EditCustomField:32 html/Admin/Elements/ModifyTemplate:28 html/Admin/Elements/ModifyUser:30 html/Admin/Groups/Modify.html:44 html/Elements/SelectGroups:26 html/Elements/SelectUsers:28 html/User/Groups/Modify.html:44 +msgid "Name" +msgstr "åå‰" + +#: lib/RT/User_Overlay.pm:186 +msgid "Name in use" +msgstr "ç¾åœ¨ãŠä½¿ã„ã®åå‰" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "" + +#: html/Ticket/Elements/ShowDates:52 +msgid "Never" +msgstr "" + +#: html/Elements/Quicksearch:30 +msgid "New" +msgstr "æ–°ã—ã„" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:93 html/User/Prefs.html:65 +msgid "New Password" +msgstr "æ–°ã—ã„パスワード" + +#: etc/initialdata:311 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "" + +#: html/Ticket/Elements/EditLinks:111 +msgid "New Relationships" +msgstr "æ–°ã—ã„関係" + +#: html/Ticket/Elements/Tabs:36 +msgid "New Search" +msgstr "" + +#: html/Admin/Global/CustomField.html:41 html/Admin/Global/CustomFields.html:39 html/Admin/Queues/CustomField.html:52 html/Admin/Queues/CustomFields.html:40 +msgid "New custom field" +msgstr "" + +#: html/Admin/Elements/GroupTabs:54 html/User/Elements/GroupTabs:52 +msgid "New group" +msgstr "" + +#: html/SelfService/Prefs.html:32 +msgid "New password" +msgstr "æ–°ã—ã„パスワード" + +#: lib/RT/User_Overlay.pm:639 +msgid "New password notification sent" +msgstr "æ–°ã—ã„ãƒ‘ã‚¹ãƒ¯ãƒ¼ãƒ‰æƒ…å ±ãŒé€ã‚‰ã‚Œã¾ã—ãŸ" + +#: html/Admin/Elements/QueueTabs:70 +msgid "New queue" +msgstr "" + +#: html/SelfService/Elements/Tabs:63 +msgid "New request" +msgstr "æ–°ã—ã„リクエスト" + +#: html/Admin/Elements/SelectRights:42 +msgid "New rights" +msgstr "æ–°ã—ã„æ¨©åˆ©" + +#: html/Admin/Global/Scrip.html:40 html/Admin/Global/Scrips.html:39 html/Admin/Queues/Scrip.html:43 html/Admin/Queues/Scrips.html:53 +msgid "New scrip" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "æ–°ã—ã„æ¤œç´¢" + +#: html/Admin/Global/Template.html:60 html/Admin/Global/Templates.html:39 html/Admin/Queues/Template.html:58 html/Admin/Queues/Templates.html:46 +msgid "New template" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2771 +msgid "New ticket doesn't exist" +msgstr "æ–°ã—ã„ãƒã‚±ãƒƒãƒˆã¯ã‚りã¾ã›ã‚“" + +#: html/Admin/Elements/UserTabs:52 +msgid "New user" +msgstr "" + +#: html/Admin/Elements/CreateUserCalled:26 +msgid "New user called" +msgstr "æ–°ã—ã„ユーザーãŒå‘¼ã°ã‚Œã¾ã—ãŸ" + +#: html/Admin/Queues/People.html:55 html/Ticket/Elements/EditPeople:29 +msgid "New watchers" +msgstr "æ–°ã—ã„ウォッãƒãƒ£ãƒ¼" + +#: html/Admin/Users/Prefs.html:42 +msgid "New window setting" +msgstr "æ–°ã—ã„ウインドウè¨å®š" + +#: html/Ticket/Elements/Tabs:69 +msgid "Next" +msgstr "次ã¸" + +#: html/Search/Listing.html:48 +msgid "Next page" +msgstr "次ã®ãƒšãƒ¼ã‚¸" + +#: html/Admin/Elements/ModifyUser:50 +msgid "NickName" +msgstr "" + +#: html/Admin/Users/Modify.html:63 html/User/Prefs.html:46 +msgid "Nickname" +msgstr "ニックãƒãƒ¼ãƒ " + +#: html/Admin/Elements/EditCustomField:73 html/Admin/Elements/EditCustomFields:105 +msgid "No CustomField" +msgstr "カスタムフィールドãŒã‚りã¾ã›ã‚“" + +#: html/Admin/Groups/GroupRights.html:84 html/Admin/Groups/UserRights.html:71 +msgid "No Group defined" +msgstr "グループãŒå®šç¾©ã•れã¾ã›ã‚“" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:68 +msgid "No Queue defined" +msgstr "ã‚ューãŒå®šç¾©ã•れã¾ã›ã‚“" + +#: bin/rt-crontool:56 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "RTユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。RT管ç†è€…ã«ç›¸è«‡ã—ã¦ãã ã•ã„。\\n" + +#: html/Admin/Global/Template.html:79 html/Admin/Queues/Template.html:76 +msgid "No Template" +msgstr "テンプレートãŒã‚りã¾ã›ã‚“" + +#: bin/rt-commit-handler:764 +msgid "No Ticket specified. Aborting ticket " +msgstr "ãƒã‚±ãƒƒãƒˆãŒç‰¹å®šã§ãã¾ã›ã‚“。ãƒã‚±ãƒƒãƒˆã‚’終了ã—ã¾ã™" + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "ãƒã‚±ãƒƒãƒˆãŒç‰¹å®šã§ãã¾ã›ã‚“。ãƒã‚±ãƒƒãƒˆã®ä¿®æ£ã‚’終了ã—ã¾ã™\\n\\n" + +#: html/Approvals/Elements/Approve:47 +msgid "No action" +msgstr "" + +#: lib/RT/Interface/Web.pm:862 +msgid "No column specified" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\\n" + +#: html/Elements/ViewUser:36 html/Ticket/Elements/ShowRequestor:45 +msgid "No comment entered about this user" +msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é–¢ã—ã¦ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯å…¥åŠ›ã•れã¦ã„ã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:2189 lib/RT/Ticket_Overlay.pm:2257 +msgid "No correspondence attached" +msgstr "é€šä¿¡æ–‡æ›¸ã®æ·»ä»˜ã¯ã‚りã¾ã›ã‚“" + +#: lib/RT/Action/Generic.pm:150 lib/RT/Condition/Generic.pm:176 lib/RT/Search/ActiveTicketsInQueue.pm:56 lib/RT/Search/Generic.pm:113 +#. (ref $self) +msgid "No description for %1" +msgstr "%1記述ã¯ã‚りã¾ã›ã‚“" + +#: lib/RT/Users_Overlay.pm:151 +msgid "No group specified" +msgstr "グループãŒç‰¹å®šã§ãã¾ã›ã‚“" + +#: lib/RT/User_Overlay.pm:857 +msgid "No password set" +msgstr "パスワードãŒè¨å®šã•れã¾ã›ã‚“" + +#: lib/RT/Queue_Overlay.pm:259 +msgid "No permission to create queues" +msgstr "ã‚ューを作æˆã™ã‚‹è¨±å¯ãŒã•れã¦ã„ã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:341 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "" + +#: lib/RT/User_Overlay.pm:151 +msgid "No permission to create users" +msgstr "ユーザーを作æˆã™ã‚‹è¨±å¯ãŒã•れã¦ã„ã¾ã›ã‚“" + +#: html/SelfService/Display.html:174 +msgid "No permission to display that ticket" +msgstr "ãã®ãƒã‚±ãƒƒãƒˆã‚’表示ã™ã‚‹è¨±å¯ãŒã‚りã¾ã›ã‚“" + +#: html/SelfService/Update.html:55 +msgid "No permission to view update ticket" +msgstr "アップデートãƒã‚±ãƒƒãƒˆã‚’見る許å¯ãŒã•ã‚りã¾ã›ã‚“" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1488 +msgid "No principal specified" +msgstr "責任者ãŒç‰¹å®šã§ãã¾ã›ã‚“" + +#: html/Admin/Queues/People.html:154 html/Admin/Queues/People.html:164 +msgid "No principals selected." +msgstr "責任者ãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“" + +#: html/Admin/Queues/index.html:35 +msgid "No queues matching search criteria found." +msgstr "検索基準ã«ã‚ã£ãŸã‚ューãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: html/Admin/Elements/SelectRights:81 +msgid "No rights found" +msgstr "" + +#: html/Admin/Elements/SelectRights:33 +msgid "No rights granted." +msgstr "権利ãŒè¨±å¯ã•れã¦ã„ã¾ã›ã‚“" + +#: html/Search/Bulk.html:149 +msgid "No search to operate on." +msgstr "æ“作ã®ãŸã‚ã®æ¤œç´¢ãŒã§ãã¾ã›ã‚“" + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "ãƒã‚±ãƒƒãƒˆIDãŒç‰¹å®šã§ãã¾ã›ã‚“" + +#: lib/RT/Transaction_Overlay.pm:480 lib/RT/Transaction_Overlay.pm:518 +msgid "No transaction type specified" +msgstr "トランザクションタイプãŒç‰¹å®šã§ãã¾ã›ã‚“" + +#: NOT FOUND IN SOURCE +msgid "No user or email address specified" +msgstr "" + +#: html/Admin/Users/index.html:36 +msgid "No users matching search criteria found." +msgstr "検索基準ã«ã‚ã£ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: bin/rt-commit-handler:644 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "有効ãªRTユーザーãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。RT cvcãƒãƒ³ãƒ‰ãƒ©ãŒåˆ†é›¢ã—ã¦ã„ã¾ã™ã€‚RT管ç†è€…ã«ç›¸è«‡ã—ã¦ãã ã•ã„。\\n" + +#: lib/RT/Interface/Web.pm:859 +msgid "No value sent to _Set!\\n" +msgstr "" + +#: html/Search/Elements/TicketRow:37 +msgid "Nobody" +msgstr "" + +#: lib/RT/Interface/Web.pm:864 +msgid "Nonexistant field?" +msgstr "" + +#: html/Elements/Login:99 +msgid "Not logged in" +msgstr "" + +#: html/Elements/Header:59 html/SelfService/Elements/Header:58 +msgid "Not logged in." +msgstr "ãƒã‚°ã‚¤ãƒ³ã§ãã¾ã›ã‚“" + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "セットã§ãã¾ã›ã‚“" + +#: html/NoAuth/Reminder.html:27 +msgid "Not yet implemented." +msgstr "ã¾ã 実行ã§ãã¾ã›ã‚“" + +#: html/Admin/Groups/Rights.html:25 +msgid "Not yet implemented...." +msgstr "ã¾ã 実行ã§ãã¾ã›ã‚“。。。" + +#: html/Approvals/Elements/Approve:50 +msgid "Notes" +msgstr "" + +#: lib/RT/User_Overlay.pm:642 +msgid "Notification could not be sent" +msgstr "ãŠçŸ¥ã‚‰ã›ã‚’é€ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: etc/initialdata:94 +msgid "Notify AdminCcs" +msgstr "" + +#: etc/initialdata:90 +msgid "Notify AdminCcs as Comment" +msgstr "" + +#: etc/initialdata:121 +msgid "Notify Other Recipients" +msgstr "" + +#: etc/initialdata:117 +msgid "Notify Other Recipients as Comment" +msgstr "" + +#: etc/initialdata:86 +msgid "Notify Owner" +msgstr "" + +#: etc/initialdata:82 +msgid "Notify Owner as Comment" +msgstr "" + +#: etc/initialdata:313 etc/upgrade/2.1.71:17 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "" + +#: etc/initialdata:78 +msgid "Notify Requestors" +msgstr "" + +#: etc/initialdata:104 +msgid "Notify Requestors and Ccs" +msgstr "" + +#: etc/initialdata:99 +msgid "Notify Requestors and Ccs as Comment" +msgstr "" + +#: etc/initialdata:113 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "" + +#: etc/initialdata:109 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "å一月" + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "" + +#: lib/RT/Record.pm:157 +msgid "Object could not be created" +msgstr "" + +#: lib/RT/Record.pm:176 +msgid "Object created" +msgstr "" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "åæœˆ" + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "" + +#: html/Elements/SelectDateRelation:35 +msgid "On" +msgstr "ã«" + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:50 +#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") +msgid "Only show approvals for requests created after %1" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:48 +#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") +msgid "Only show approvals for requests created before %1" +msgstr "" + +#: html/Elements/Quicksearch:31 +msgid "Open" +msgstr "é–‹ã" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "ãれを開ã" + +#: html/SelfService/Elements/Tabs:57 +msgid "Open requests" +msgstr "リクエストを開ã" + +#: html/Admin/Users/Prefs.html:41 +msgid "Open tickets (from listing) in a new window" +msgstr "ãƒã‚±ãƒƒãƒˆã‚’(リストã‹ã‚‰ï¼‰æ–°ã—ã„ウインドウã‹ã‚‰é–‹ã" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in another window" +msgstr "ãƒã‚±ãƒƒãƒˆã‚’(リストã‹ã‚‰ï¼‰ã»ã‹ã®ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã‹ã‚‰é–‹ã" + +#: etc/initialdata:133 +msgid "Open tickets on correspondence" +msgstr "" + +#: html/Search/Elements/PickRestriction:101 +msgid "Ordering and sorting" +msgstr "整列ã¨ä¸¦ã³æ›¿ãˆ" + +#: html/Admin/Elements/ModifyUser:46 html/Admin/Users/Modify.html:117 html/Elements/SelectUsers:29 html/User/Prefs.html:86 +msgid "Organization" +msgstr "組織" + +#: html/Approvals/Elements/Approve:34 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:55 html/Admin/Queues/Modify.html:69 +msgid "Over time, priority moves toward" +msgstr "時間切れã§ã™ã€å„ªå…ˆé †ä½ãŒã†ã¤ã‚Šã¾ã—ãŸ" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Own tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "OwnTicket" +msgstr "" + +#: etc/initialdata:38 html/Elements/MyRequests:32 html/SelfService/Elements/MyRequests:30 html/Ticket/Create.html:48 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/EditPeople:44 html/Ticket/Elements/ShowPeople:27 html/Ticket/Update.html:63 lib/RT/ACE_Overlay.pm:86 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "オーナー" + +#: lib/RT/Ticket_Overlay.pm:3004 +#. ($OldOwnerObj->Name, $NewOwnerObj->Name) +msgid "Owner changed from %1 to %2" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:584 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "オーナーã¯å¼·åˆ¶çš„ã«%1ã‹ã‚‰%2を変更ã—ã¾ã—ãŸ" + +#: html/Search/Elements/PickRestriction:31 +msgid "Owner is" +msgstr "オーナーã¯" + +#: html/Admin/Users/Modify.html:174 html/User/Prefs.html:56 +msgid "Pager" +msgstr "ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«" + +#: html/Admin/Elements/ModifyUser:74 +msgid "PagerPhone" +msgstr "ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«é›»è©±" + +#: NOT FOUND IN SOURCE +msgid "Parent" +msgstr "" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/EditLinks:127 html/Ticket/Elements/EditLinks:58 html/Ticket/Elements/ShowLinks:43 +msgid "Parents" +msgstr "両親" + +#: html/Elements/Login:43 html/User/Prefs.html:61 +msgid "Password" +msgstr "パスワード" + +#: html/NoAuth/Reminder.html:25 +msgid "Password Reminder" +msgstr "パスワードã®ãŠçŸ¥ã‚‰ã›" + +#: lib/RT/User_Overlay.pm:168 lib/RT/User_Overlay.pm:860 +msgid "Password too short" +msgstr "パスワードãŒçŸã™ãŽã¾ã™" + +#: html/Admin/Users/Modify.html:291 html/User/Prefs.html:172 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "パスワード: %1" + +#: html/Ticket/Elements/ShowSummary:43 html/Ticket/Elements/Tabs:96 html/Ticket/ModifyAll.html:51 +msgid "People" +msgstr "人々" + +#: etc/initialdata:126 +msgid "Perform a user-defined action" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:231 lib/RT/ACE_Overlay.pm:237 lib/RT/ACE_Overlay.pm:563 lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:583 lib/RT/ACE_Overlay.pm:648 lib/RT/CurrentUser.pm:83 lib/RT/CurrentUser.pm:92 lib/RT/CustomField_Overlay.pm:445 lib/RT/CustomField_Overlay.pm:451 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1099 lib/RT/Group_Overlay.pm:1108 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1163 lib/RT/Group_Overlay.pm:1169 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:904 lib/RT/Group_Overlay.pm:908 lib/RT/Group_Overlay.pm:921 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:126 lib/RT/Scrip_Overlay.pm:137 lib/RT/Scrip_Overlay.pm:197 lib/RT/Scrip_Overlay.pm:430 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:88 lib/RT/Template_Overlay.pm:94 lib/RT/Ticket_Overlay.pm:1341 lib/RT/Ticket_Overlay.pm:1351 lib/RT/Ticket_Overlay.pm:1365 lib/RT/Ticket_Overlay.pm:1518 lib/RT/Ticket_Overlay.pm:1527 lib/RT/Ticket_Overlay.pm:1540 lib/RT/Ticket_Overlay.pm:1875 lib/RT/Ticket_Overlay.pm:2013 lib/RT/Ticket_Overlay.pm:2177 lib/RT/Ticket_Overlay.pm:2244 lib/RT/Ticket_Overlay.pm:2596 lib/RT/Ticket_Overlay.pm:2668 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2777 lib/RT/Ticket_Overlay.pm:2910 lib/RT/Ticket_Overlay.pm:3139 lib/RT/Ticket_Overlay.pm:3337 lib/RT/Ticket_Overlay.pm:3499 lib/RT/Ticket_Overlay.pm:3551 lib/RT/Ticket_Overlay.pm:3716 lib/RT/Transaction_Overlay.pm:468 lib/RT/Transaction_Overlay.pm:475 lib/RT/Transaction_Overlay.pm:504 lib/RT/Transaction_Overlay.pm:511 lib/RT/User_Overlay.pm:1334 lib/RT/User_Overlay.pm:562 lib/RT/User_Overlay.pm:597 lib/RT/User_Overlay.pm:853 lib/RT/User_Overlay.pm:941 +msgid "Permission Denied" +msgstr "許å¯ãŒä¸‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: html/User/Elements/Tabs:35 +msgid "Personal Groups" +msgstr "" + +#: html/User/Groups/index.html:30 html/User/Groups/index.html:40 +msgid "Personal groups" +msgstr "個人グループ" + +#: html/User/Elements/DelegateRights:37 +msgid "Personal groups:" +msgstr "個人グループ:" + +#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:49 +msgid "Phone numbers" +msgstr "電話番å·" + +#: html/Admin/Users/Rights.html:25 +msgid "Placeholder" +msgstr "代替物" + +#: NOT FOUND IN SOURCE +msgid "Pref" +msgstr "ãŠæ°—ã«å…¥ã‚Š" + +#: html/Elements/Header:52 html/Elements/Tabs:55 html/SelfService/Prefs.html:25 html/User/Prefs.html:25 html/User/Prefs.html:28 +msgid "Preferences" +msgstr "ãŠæ°—ã«å…¥ã‚Š" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "" + +#: lib/RT/Action/Generic.pm:160 +msgid "Prepare Stubbed" +msgstr "Prepare Stubbed" + +#: html/Ticket/Elements/Tabs:61 +msgid "Prev" +msgstr "å‰ã®" + +#: html/Search/Listing.html:44 +msgid "Previous page" +msgstr "å‰ã®ãƒšãƒ¼ã‚¸" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "優先権" + +#: lib/RT/ACE_Overlay.pm:133 lib/RT/ACE_Overlay.pm:208 lib/RT/ACE_Overlay.pm:552 +#. ($args{'PrincipalId'}) +msgid "Principal %1 not found." +msgstr "" + +#: html/Search/Elements/PickRestriction:54 html/SelfService/Display.html:76 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:54 html/Ticket/Elements/ShowBasics:39 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "優先権" + +#: html/Admin/Elements/ModifyQueue:51 html/Admin/Queues/Modify.html:65 +msgid "Priority starts at" +msgstr "å„ªå…ˆé †ä½ã¯æ¬¡ã®ã‚ˆã†ã«å§‹ã¾ã‚Šã¾ã™" + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "" + +#: html/Admin/Users/Modify.html:271 html/User/Prefs.html:163 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "特権ステータス: %1" + +#: html/Admin/Users/index.html:62 +msgid "Privileged users" +msgstr "特権ã®ã‚るユーザー" + +#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 +msgid "Pseudogroup for internal use" +msgstr "" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Elements/Quicksearch:29 html/Search/Elements/PickRestriction:46 html/SelfService/Create.html:35 html/SelfService/Display.html:68 html/Ticket/Create.html:38 html/Ticket/Elements/EditBasics:64 html/Ticket/Elements/ShowBasics:43 html/User/Elements/DelegateRights:80 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "ã‚ュー" + +#: html/Admin/Queues/CustomField.html:42 html/Admin/Queues/Scrip.html:50 html/Admin/Queues/Scrips.html:46 html/Admin/Queues/Templates.html:43 +#. ($Queue) +#. ($id) +msgid "Queue %1 not found" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Queue '%1' not found\\n" +msgstr "ã‚ュー'%1'ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\\n" + +#: NOT FOUND IN SOURCE +msgid "Queue Keyword Selections" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:31 html/Admin/Queues/Modify.html:43 +msgid "Queue Name" +msgstr "ã‚ューã®åå‰" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "ã‚ュースクリプト" + +#: lib/RT/Queue_Overlay.pm:263 +msgid "Queue already exists" +msgstr "ã‚ューã¯ã™ã§ã«å˜åœ¨ã—ã¦ã„ã¾ã™" + +#: lib/RT/Queue_Overlay.pm:272 lib/RT/Queue_Overlay.pm:278 +msgid "Queue could not be created" +msgstr "ã‚ューã®ä½œæˆãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Ticket/Create.html:209 +msgid "Queue could not be loaded." +msgstr "ã‚ューã®ãƒãƒ¼ãƒ‰ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:282 +msgid "Queue created" +msgstr "ã‚ューãŒä½œæˆã•れã¾ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Queue is not specified." +msgstr "" + +#: html/SelfService/Display.html:129 +msgid "Queue not found" +msgstr "ã‚ューãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: html/Admin/Elements/Tabs:38 html/Admin/index.html:35 +msgid "Queues" +msgstr "ã‚ュー" + +#: html/Elements/Login:34 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "%2ã®RT %1" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." +msgstr "<a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>ã‹ã‚‰ã®RT%1。" + +#: 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 "" + +#: html/Admin/index.html:25 html/Admin/index.html:26 +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:41 html/SelfService/Error.html:41 +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 "" + +#: html/SelfService/Closed.html:25 +msgid "RT Self Service / Closed Tickets" +msgstr "RTセルフサービス/クãƒãƒ¼ã‚ºã•れãŸãƒã‚±ãƒƒãƒˆ" + +#: html/index.html:25 html/index.html:28 +msgid "RT at a glance" +msgstr "" + +#: 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を見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "RTã¯ã“ã®PGPサインを有効ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\\n" + +#: html/Elements/PageLayout:26 +#. ($RT::rtname) +msgid "RT for %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT for %1: %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT has proccessed your commands" +msgstr "RTã¯ã‚ãªãŸã®ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’処ç†ã—ã¾ã—ãŸ" + +#: html/Elements/Login:83 +#. ('2003') +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ã¯&コピー; Copyright 1996-%1 Jesse Vincent <jesse@bestpractical.com>。ã“れã¯<a href=\"http://www.gnu.org/copyleft/gpl.html\">GNUジェãƒãƒ©ãƒ«ãƒ‘ブリックライセンスã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³2ã§é…ä¿¡ã•れã¦ã„ã¾ã™ã€‚</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 "" + +#: NOT FOUND IN SOURCE +msgid "RT thinks this message may be a bounce" +msgstr "RTã«ã‚ˆã‚‹ã¨ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ãƒã‚¦ãƒ³ã‚¹ã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +msgstr "RTã¯ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã¾ã‚‹ã§ã‚µã‚¤ãƒ³ã•れã¦ã„ãªã„よã†ã«å‡¦ç†ã—ã¾ã™ã€‚\\n" + +#: 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ã®Eメールコマンドモードã§ã¯PGPèªè¨¼ãŒå¿…è¦ã«ãªã‚Šã¾ã™ã€‚è²´æ–¹ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ã‚µã‚¤ãƒ³ã—ãªã‹ã£ãŸã€ã‚‚ã—ãã¯ã¯ã‚µã‚¤ãƒ³ãŒæœ‰åйã§ã‚りã¾ã›ã‚“" + +#: html/Admin/Users/Modify.html:58 html/Admin/Users/Prefs.html:52 html/User/Prefs.html:44 +msgid "Real Name" +msgstr "本å" + +#: html/Admin/Elements/ModifyUser:48 +msgid "RealName" +msgstr "本å" + +#: html/Ticket/Create.html:185 html/Ticket/Elements/EditLinks:139 html/Ticket/Elements/EditLinks:94 html/Ticket/Elements/ShowLinks:63 +msgid "Referred to by" +msgstr "次ã®ã‚‚ã®ã«ã‚ˆã£ã¦å‚ç…§ã—ãŸ" + +#: html/Elements/SelectLinkType:28 html/Ticket/Create.html:184 html/Ticket/Elements/EditLinks:135 html/Ticket/Elements/EditLinks:80 html/Ticket/Elements/ShowLinks:55 +msgid "Refers to" +msgstr "å‚ç…§ã™ã‚‹" + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "絞り込む" + +#: html/Search/Elements/PickRestriction:27 +msgid "Refine search" +msgstr "çµžè¾¼ã¿æ¤œç´¢" + +#: html/Elements/Refresh:36 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "ã“ã®ãƒšãƒ¼ã‚¸ã‚’%1分ãŠãã«æ›´æ–°ã—ã¦ãã ã•ã„" + +#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:60 html/Ticket/ModifyAll.html:57 +msgid "Relationships" +msgstr "関係" + +#: html/Search/Bulk.html:93 +msgid "Remove AdminCc" +msgstr "管ç†Ccを削除ã™ã‚‹" + +#: html/Search/Bulk.html:91 +msgid "Remove Cc" +msgstr "Ccを削除ã™ã‚‹" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "リクエストã™ã‚‹äººã‚’削除ã™ã‚‹" + +#: html/Ticket/Elements/ShowTransaction:173 html/Ticket/Elements/Tabs:122 +msgid "Reply" +msgstr "返信" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Reply to tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "ReplyToTicket" +msgstr "" + +#: etc/initialdata:44 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:87 +msgid "Requestor" +msgstr "リクエストã™ã‚‹äºº" + +#: html/Search/Elements/PickRestriction:38 +msgid "Requestor email address" +msgstr "リクエストã™ã‚‹äººã®Eメールアドレス" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RequestorAddresses" +msgstr "" + +#: html/SelfService/Create.html:43 html/SelfService/Display.html:42 html/Ticket/Create.html:56 html/Ticket/Elements/EditPeople:48 html/Ticket/Elements/ShowPeople:31 +msgid "Requestors" +msgstr "リクエストã™ã‚‹äºº" + +#: html/Admin/Elements/ModifyQueue:61 html/Admin/Queues/Modify.html:75 +msgid "Requests should be due in" +msgstr "ãƒªã‚¯ã‚¨ã‚¹ãƒˆã¯æ¬¡ã®æ—¥ã¾ã§ã«è¡Œã‚れãªã‘れã°ãªã‚Šã¾ã›ã‚“" + +#: html/Elements/Submit:62 +msgid "Reset" +msgstr "リセット" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "使‰€" + +#: html/Ticket/Elements/Tabs:132 +msgid "Resolve" +msgstr "分解ã™ã‚‹" + +#: html/Ticket/Update.html:133 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "" + +#: etc/initialdata:302 html/Elements/SelectDateType:28 lib/RT/Ticket_Overlay.pm:1170 +msgid "Resolved" +msgstr "分解ã—ãŸ" + +#: html/Search/Bulk.html:123 html/Ticket/ModifyAll.html:73 html/Ticket/Update.html:73 +msgid "Response to requestors" +msgstr "リクエストã™ã‚‹äººã«è¿”ç”ã™ã‚‹" + +#: html/Elements/ListActions:26 +msgid "Results" +msgstr "çµæžœ" + +#: html/Search/Elements/PickRestriction:105 +msgid "Results per page" +msgstr "ページã”ã¨ã®çµæžœ" + +#: html/Admin/Elements/ModifyUser:33 html/Admin/Users/Modify.html:100 html/User/Prefs.html:72 +msgid "Retype Password" +msgstr "パスワードã®å†å…¥åŠ›" + +#: NOT FOUND IN SOURCE +msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" +msgstr "%2 %3ã®æ¨©åˆ©%1ãŒé ˜åŸŸ%4 %5\\nã§è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/ACE_Overlay.pm:613 +msgid "Right Delegated" +msgstr "権利ãŒå§”託ã•れã¾ã—ãŸ" + +#: lib/RT/ACE_Overlay.pm:303 +msgid "Right Granted" +msgstr "権利ãŒè¨±å¯ã•れã¾ã—ãŸ" + +#: lib/RT/ACE_Overlay.pm:161 +msgid "Right Loaded" +msgstr "権利ãŒãƒãƒ¼ãƒ‰ã•れã¾ã—ãŸ" + +#: lib/RT/ACE_Overlay.pm:678 lib/RT/ACE_Overlay.pm:693 +msgid "Right could not be revoked" +msgstr "権利を無効ã«ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: html/User/Delegation.html:64 +msgid "Right not found" +msgstr "権利ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/ACE_Overlay.pm:543 lib/RT/ACE_Overlay.pm:638 +msgid "Right not loaded." +msgstr "権利ãŒãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/ACE_Overlay.pm:689 +msgid "Right revoked" +msgstr "権利ãŒç„¡åйã«ãªã‚Šã¾ã—ãŸ" + +#: html/Admin/Elements/UserTabs:41 +msgid "Rights" +msgstr "権利" + +#: lib/RT/Interface/Web.pm:758 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "" + +#: lib/RT/Interface/Web.pm:791 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "" + +#: html/Admin/Global/GroupRights.html:51 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "役割" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "土曜日" + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "Save Changes" +msgstr "変更をä¿å˜ã™ã‚‹" + +#: html/Ticket/ModifyLinks.html:39 +msgid "Save changes" +msgstr "変更をä¿å˜ã™ã‚‹" + +#: html/Admin/Global/Scrip.html:49 +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:176 +msgid "Scrip Created" +msgstr "スクリプトãŒä½œæˆã•れã¾ã—ãŸ" + +#: html/Admin/Elements/EditScrips:84 +msgid "Scrip deleted" +msgstr "" + +#: html/Admin/Elements/QueueTabs:46 html/Admin/Elements/SystemTabs:33 html/Admin/Global/index.html:41 +msgid "Scrips" +msgstr "スクリプト" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "%1\\nã®ã‚¹ã‚¯ãƒªãƒ—ト" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "" + +#: html/Elements/SimpleSearch:27 html/Search/Elements/PickRestriction:126 html/Ticket/Elements/Tabs:159 +msgid "Search" +msgstr "検索" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "検索基準" + +#: html/Approvals/Elements/PendingMyApproval:39 +msgid "Search for approvals" +msgstr "" + +#: bin/rt-crontool:188 +msgid "Security:" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "SeeQueue" +msgstr "" + +#: html/Admin/Groups/index.html:40 +msgid "Select a group" +msgstr "グループã®é¸æŠž" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "ã‚ューã®é¸æŠž" + +#: html/Admin/Users/index.html:25 html/Admin/Users/index.html:28 +msgid "Select a user" +msgstr "ユーザーã®é¸æŠž" + +#: html/Admin/Global/CustomField.html:38 html/Admin/Global/CustomFields.html:36 +msgid "Select custom field" +msgstr "" + +#: html/Admin/Elements/GroupTabs:52 html/User/Elements/GroupTabs:50 +msgid "Select group" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Select multiple values" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:352 +msgid "Select one value" +msgstr "" + +#: html/Admin/Elements/QueueTabs:67 +msgid "Select queue" +msgstr "" + +#: html/Admin/Global/Scrip.html:37 html/Admin/Global/Scrips.html:36 html/Admin/Queues/Scrip.html:40 html/Admin/Queues/Scrips.html:50 +msgid "Select scrip" +msgstr "" + +#: html/Admin/Global/Template.html:57 html/Admin/Global/Templates.html:36 html/Admin/Queues/Template.html:55 +msgid "Select template" +msgstr "" + +#: html/Admin/Elements/UserTabs:49 +msgid "Select user" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "SelectMultiple" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectSingle" +msgstr "" + +#: html/SelfService/index.html:25 +msgid "Self Service" +msgstr "セルフサービス" + +#: etc/initialdata:114 +msgid "Send mail to all watchers" +msgstr "" + +#: etc/initialdata:110 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "" + +#: etc/initialdata:105 +msgid "Send mail to requestors and Ccs" +msgstr "" + +#: etc/initialdata:100 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "" + +#: etc/initialdata:79 +msgid "Sends a message to the requestors" +msgstr "" + +#: etc/initialdata:118 etc/initialdata:122 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "" + +#: etc/initialdata:95 +msgid "Sends mail to the administrative Ccs" +msgstr "" + +#: etc/initialdata:91 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "" + +#: etc/initialdata:83 etc/initialdata:87 +msgid "Sends mail to the owner" +msgstr "" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "乿œˆ" + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "çµæžœã‚’見る" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show approved requests" +msgstr "" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show basics" +msgstr "基本を見る" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show denied requests" +msgstr "" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show details" +msgstr "詳細を見る" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show pending requests" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:46 +msgid "Show requests awaiting other approvals" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Show ticket private commentary" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "Show ticket summaries" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ShowACL" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowScrips" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ShowTemplate" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "ShowTicket" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "ShowTicketComments" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "" + +#: html/Admin/Elements/ModifyUser:39 html/Admin/Users/Modify.html:191 html/Admin/Users/Prefs.html:32 html/SelfService/Prefs.html:37 html/User/Prefs.html:112 +msgid "Signature" +msgstr "サイン" + +#: html/SelfService/Elements/Header:52 +#. ($session{'CurrentUser'}->Name) +msgid "Signed in as %1" +msgstr "" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Single" +msgstr "ã²ã¨ã¤ã®" + +#: html/Elements/Header:51 +msgid "Skip Menu" +msgstr "" + +#: html/Admin/Elements/EditCustomFieldValues:31 +msgid "Sort key" +msgstr "ä¸¦ã¹æ›¿ãˆã®ã‚ー" + +#: html/Search/Elements/PickRestriction:109 +msgid "Sort results by" +msgstr "次ã®é …ç›®ã”ã¨ã®ä¸¦ã³æ›¿ãˆ" + +#: html/Admin/Elements/AddCustomFieldValue:25 +msgid "SortOrder" +msgstr "並ã³é †" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "åœæ¢ã—ã¦ã„ã¾ã™" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "開始ページ" + +#: html/Elements/SelectDateType:27 html/Ticket/Elements/EditDates:32 html/Ticket/Elements/ShowDates:35 +msgid "Started" +msgstr "é–‹å§‹ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "é–‹å§‹æ—¥'%1'ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:27 html/Ticket/Elements/ShowDates:31 +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/Elements/ModifyUser:82 html/Admin/Users/Modify.html:138 html/User/Prefs.html:94 +msgid "State" +msgstr "状態" + +#: html/Elements/MyRequests:31 html/Elements/MyTickets:31 html/Search/Elements/PickRestriction:74 html/SelfService/Display.html:59 html/SelfService/Elements/MyRequests:29 html/SelfService/Update.html:31 html/Ticket/Create.html:42 html/Ticket/Elements/EditBasics:38 html/Ticket/Elements/ShowBasics:31 html/Ticket/Update.html:60 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "ステータス" + +#: etc/initialdata:288 +msgid "Status Change" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:530 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "ステータスãŒ%1ã‹ã‚‰%2ã«å¤‰æ›´ã•れã¾ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "" + +#: html/Ticket/Elements/Tabs:147 +msgid "Steal" +msgstr "盗用ã™ã‚‹" + +#: lib/RT/Transaction_Overlay.pm:589 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "%1ã‹ã‚‰ç›—用ã—ãŸ" + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Search/Bulk.html:126 html/Search/Elements/PickRestriction:43 html/SelfService/Create.html:59 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:35 html/Ticket/Create.html:84 html/Ticket/Elements/EditBasics:28 html/Ticket/ModifyAll.html:79 html/Ticket/Update.html:77 lib/RT/Ticket_Overlay.pm:1160 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "サブジェクト" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:611 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "" + +#: html/Elements/Submit:59 +msgid "Submit" +msgstr "æå‡º" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "" + +#: lib/RT/Group_Overlay.pm:749 +msgid "Succeeded" +msgstr "" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "日曜日" + +#: lib/RT/System.pm:54 +msgid "SuperUser" +msgstr "" + +#: html/User/Elements/DelegateRights:77 +msgid "System" +msgstr "" + +#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:567 lib/RT/Interface/Web.pm:757 lib/RT/Interface/Web.pm:790 +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/ACE_Overlay.pm:616 +msgid "System error. Right not delegated." +msgstr "システムエラー。権利ãŒå§”ä»»ã•れã¦ã„ã¾ã›ã‚“" + +#: lib/RT/ACE_Overlay.pm:146 lib/RT/ACE_Overlay.pm:223 lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:898 +msgid "System error. Right not granted." +msgstr "システムエラー。権利ãŒèªå¯ã•れã¦ã„ã¾ã›ã‚“" + +#: NOT FOUND IN SOURCE +msgid "System error. Unable to grant rights." +msgstr "" + +#: html/Admin/Global/GroupRights.html:35 html/Admin/Groups/GroupRights.html:37 html/Admin/Queues/GroupRights.html:36 +msgid "System groups" +msgstr "システムグループ" + +#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 +msgid "SystemRolegroup for internal use" +msgstr "" + +#: lib/RT/CurrentUser.pm:320 +msgid "TEST_STRING" +msgstr "テスト_ストリング" + +#: html/Ticket/Elements/Tabs:143 +msgid "Take" +msgstr "ã¨ã‚‹" + +#: lib/RT/Transaction_Overlay.pm:575 +msgid "Taken" +msgstr "ã¨ã‚‰ã‚ŒãŸ" + +#: html/Admin/Elements/EditScrip:81 +msgid "Template" +msgstr "テンプレート" + +#: html/Admin/Global/Template.html:91 html/Admin/Queues/Template.html:90 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "" + +#: html/Admin/Elements/EditTemplates:89 +msgid "Template deleted" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:153 +msgid "Template not found" +msgstr "テンプレートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "テンプレートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\\n" + +#: lib/RT/Template_Overlay.pm:347 +msgid "Template parsed" +msgstr "テンプレートãŒè§£æžã•れã¾ã—ãŸ" + +#: html/Admin/Elements/QueueTabs:49 html/Admin/Elements/SystemTabs:36 html/Admin/Global/index.html:45 +msgid "Templates" +msgstr "テンプレート" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "%1\\nã®ãƒ†ãƒ³ãƒ—レート" + +#: lib/RT/Interface/Web.pm:858 +msgid "That is already the current value" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:178 +msgid "That is not a value for this custom field" +msgstr "ãれã¯ã“ã®ã‚«ã‚¹ã‚¿ãƒ フィールドã®ãƒãƒªãƒ¥ãƒ¼ã§ã¯ã‚りã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:1886 +msgid "That is the same value" +msgstr "ãれã¯åŒã˜ãƒãƒªãƒ¥ãƒ¼ã§ã™" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "ãã®è²¬ä»»è€…ã¯ã™ã§ã«ã“ã®ã‚ューã®%1ã§ã™" + +#: lib/RT/Ticket_Overlay.pm:1434 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "ãã®è²¬ä»»è€…ã¯ã™ã§ã«ã“ã®ãƒã‚±ãƒƒãƒˆã®%1ã§ã™" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "ãã®è²¬ä»»è€…ã¯ã“ã®ã‚ューã®%1ã§ã¯ã‚りã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:1551 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "ãã®è²¬ä»»è€…ã¯ã“ã®ãƒã‚±ãƒƒãƒˆã®%1ã§ã¯ã‚りã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:1882 +msgid "That queue does not exist" +msgstr "ãã®ã‚ューã¯ã‚りã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:3143 +msgid "That ticket has unresolved dependencies" +msgstr "ãã®ãƒã‚±ãƒƒãƒˆã¯å¾“属物をã™ã§ã«åˆ†è§£ã—ã¾ã—ãŸ" + +#: lib/RT/ACE_Overlay.pm:288 lib/RT/ACE_Overlay.pm:597 +msgid "That user already has that right" +msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã™ã§ã«æ¨©åˆ©ãŒã‚りã¾ã™" + +#: lib/RT/Ticket_Overlay.pm:2952 +msgid "That user already owns that ticket" +msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã™ã§ã«ãƒã‚±ãƒƒãƒˆã‚’所有ã—ã¦ã„ã¾ã™" + +#: lib/RT/Ticket_Overlay.pm:2918 +msgid "That user does not exist" +msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯å˜åœ¨ã—ã¾ã›ã‚“" + +#: lib/RT/User_Overlay.pm:315 +msgid "That user is already privileged" +msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã™ã§ã«ç‰¹æ¨©ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã™" + +#: lib/RT/User_Overlay.pm:332 +msgid "That user is already unprivileged" +msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã¯ã™ã§ã«ç‰¹æ¨©ãŒã‚りã¾ã›ã‚“" + +#: lib/RT/User_Overlay.pm:327 +msgid "That user is now privileged" +msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ä»Šç‰¹æ¨©ã‚’与ãˆã‚‰ã‚Œã¾ã—ãŸ" + +#: lib/RT/User_Overlay.pm:344 +msgid "That user is now unprivileged" +msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ä»Šç‰¹æ¨©ã‚’失ã„ã¾ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "That user is now unprivilegedileged" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2944 +msgid "That user may not own tickets in that queue" +msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã“ã®ã‚ューã§ã¯ãƒã‚±ãƒƒãƒˆã‚’所有ã—ã¦ã„ãªã„å¯èƒ½æ€§ãŒã‚りã¾ã™" + +#: lib/RT/Link_Overlay.pm:206 +msgid "That's not a numerical id" +msgstr "ãã‚Œã¯æ•°å—ã®IDã§ã¯ã‚りã¾ã›ã‚“" + +#: html/Ticket/Create.html:150 html/Ticket/Elements/ShowSummary:28 +msgid "The Basics" +msgstr "基本" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The CC of a ticket" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:89 +msgid "The administrative CC of a ticket" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2213 +msgid "The comment has been recorded" +msgstr "コメントã¯è¨˜éŒ²ã•れã¾ã—ãŸ" + +#: bin/rt-crontool:198 +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 "" + +#: bin/rt-commit-handler:756 bin/rt-commit-handler:766 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "次ã®ã‚³ãƒžãƒ³ãƒ‰ã¯å‡¦ç†ã•れã¾ã›ã‚“ã§ã—ãŸ:\\n\\n" + +#: lib/RT/Interface/Web.pm:861 +msgid "The new value has been set." +msgstr "" + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The owner of a ticket" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The requestor of a ticket" +msgstr "" + +#: html/Admin/Elements/EditUserComments:26 +msgid "These comments aren't generally visible to the user" +msgstr "ãれらã®ã‚³ãƒ¡ãƒ³ãƒˆã¯å®Ÿéš›ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã¯è¦‹ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "ã“ã®ãƒã‚±ãƒƒãƒˆ%1 %2 (%3)\\n" + +#: bin/rt-crontool:189 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:253 +msgid "This transaction appears to have no content" +msgstr "ã“ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«ã¯ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒã‚りã¾ã›ã‚“" + +#: html/Ticket/Elements/ShowRequestor:47 +#. ($rows) +msgid "This user's %1 highest priority tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "This user's 25 highest priority tickets" +msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®25ã®ã‚‚ã£ã¨ã‚‚高ã„優先ãƒã‚±ãƒƒãƒˆ" + +#: lib/RT/Date.pm:391 +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 "" + +#: html/Ticket/ModifyAll.html:25 html/Ticket/ModifyAll.html:29 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "ãƒã‚±ãƒƒãƒˆã€€#%1 大ãã„アップデート: %2" + +#: html/Approvals/Elements/ShowDependency:46 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:608 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "ãƒã‚±ãƒƒãƒˆ %1ãŒã‚ュー '%2'ã§ä½œæˆã•れã¾ã—ãŸ" + +#: bin/rt-commit-handler:760 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "ãƒã‚±ãƒƒãƒˆ%1ãŒãƒãƒ¼ãƒ‰ã•れã¾ã—ãŸ\\n" + +#: html/Search/Bulk.html:181 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "ãƒã‚±ãƒƒãƒˆã€€%1: %2" + +#: html/Ticket/History.html:25 html/Ticket/History.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "ãƒã‚±ãƒƒãƒˆãƒ’ストリー # %1 %2" + +#: html/SelfService/Display.html:34 +msgid "Ticket Id" +msgstr "ãƒã‚±ãƒƒãƒˆID" + +#: etc/initialdata:303 +msgid "Ticket Resolved" +msgstr "" + +#: html/Search/Elements/PickRestriction:63 +msgid "Ticket attachment" +msgstr "ãƒã‚±ãƒƒãƒˆæ·»ä»˜" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "ãƒã‚±ãƒƒãƒˆã‚³ãƒ³ãƒ†ãƒ³ãƒ„" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "ãƒã‚±ãƒƒãƒˆã‚³ãƒ³ãƒ†ãƒ³ãƒ„タイプ" + +#: lib/RT/Ticket_Overlay.pm:495 lib/RT/Ticket_Overlay.pm:597 +msgid "Ticket could not be created due to an internal error" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:522 +msgid "Ticket created" +msgstr "ãƒã‚±ãƒƒãƒˆãŒä½œæˆã•れã¾ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "ãƒã‚±ãƒƒãƒˆã®ä½œæˆãŒå¤±æ•—ã—ã¾ã—ãŸ" + +#: lib/RT/Transaction_Overlay.pm:527 +msgid "Ticket deleted" +msgstr "ãƒã‚±ãƒƒãƒˆãŒå‰Šé™¤ã•れã¾ã—ãŸ" + +#: html/REST/1.0/modify:29 html/REST/1.0/update:34 +msgid "Ticket id not found" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Ticket killed" +msgstr "" + +#: html/REST/1.0/modify:36 html/REST/1.0/update:41 +msgid "Ticket not found" +msgstr "" + +#: etc/initialdata:289 +msgid "Ticket status changed" +msgstr "" + +#: html/Ticket/Update.html:39 +msgid "Ticket watchers" +msgstr "ãƒã‚±ãƒƒãƒˆã‚¦ã‚©ãƒƒãƒãƒ£ãƒ¼" + +#: html/Elements/Tabs:49 +msgid "Tickets" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Tickets from %1" +msgstr "%1ã‹ã‚‰ã®ãƒã‚±ãƒƒãƒˆ" + +#: html/Approvals/Elements/ShowDependency:27 +msgid "Tickets which depend on this approval:" +msgstr "" + +#: html/Ticket/Create.html:157 html/Ticket/Elements/EditBasics:48 +msgid "Time Left" +msgstr "æ™‚é–“ãŒæ®‹ã£ã¦ã„ã¾ã™" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:43 +msgid "Time Worked" +msgstr "使ã£ãŸæ™‚é–“" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "残ã£ã¦ã„る時間" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "表示ã™ã‚‹æ™‚é–“" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "使ã£ãŸæ™‚é–“" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1165 +msgid "TimeWorked" +msgstr "" + +#: bin/rt-commit-handler:402 +msgid "To generate a diff of this commit:" +msgstr "ã“ã®ã‚³ãƒŸãƒƒãƒˆã®ãƒ‡ã‚£ãƒ•ã‚’ã¤ãã‚‹ãŸã‚ã«:" + +#: bin/rt-commit-handler:391 +msgid "To generate a diff of this commit:\\n" +msgstr "ã“ã®ã‚³ãƒŸãƒƒãƒˆã®ãƒ‡ã‚£ãƒ•ã‚’ã¤ãã‚‹ãŸã‚ã«:\\n" + +#: lib/RT/Ticket_Overlay.pm:1168 +msgid "Told" +msgstr "言ã£ãŸ" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:642 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "トランザクション%1ãŒæ¶ˆåŽ»ã•れã¾ã—ãŸ" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "トランザクションãŒä½œæˆã•れã¾ã—ãŸ" + +#: lib/RT/Transaction_Overlay.pm:89 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:701 +msgid "Transactions are immutable" +msgstr "トランザクションã¯å¤‰æ›´ã•れるã“ã¨ã¯ã‚りã¾ã›ã‚“" + +#: NOT FOUND IN SOURCE +msgid "Trying to delete a right: %1" +msgstr "権利: %1を削除ã—ã¦ã„ã¾ã™" + +#: lib/RT/Date.pm:389 +msgid "Tue." +msgstr "ç«æ›œæ—¥" + +#: html/Admin/Elements/EditCustomField:34 html/Ticket/Elements/AddWatchers:33 html/Ticket/Elements/AddWatchers:44 html/Ticket/Elements/AddWatchers:54 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "タイプ" + +#: lib/RT/ScripCondition_Overlay.pm:104 +msgid "Unimplemented" +msgstr "å°Žå…¥ã•れã¦ã„ãªã„" + +#: html/Admin/Users/Modify.html:68 +msgid "Unix login" +msgstr "Unixãƒã‚°ã‚¤ãƒ³" + +#: html/Admin/Elements/ModifyUser:62 +msgid "UnixUsername" +msgstr "Unixユーザーãƒãƒ¼ãƒ " + +#: lib/RT/Attachment_Overlay.pm:265 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "䏿˜Žãªã‚³ãƒ³ãƒ†ãƒ³ãƒ„エンコーディング%1" + +#: html/Elements/SelectResultsPerPage:37 +msgid "Unlimited" +msgstr "制é™ã•れã¦ã„ãªã„" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:571 +msgid "Untaken" +msgstr "ã¨ã‚‰ã‚Œã¦ã„ãªã„" + +#: html/Elements/MyTickets:64 html/Search/Bulk.html:33 +msgid "Update" +msgstr "アップデート" + +#: html/Admin/Users/Prefs.html:62 +msgid "Update ID" +msgstr "アップデートID" + +#: html/Search/Bulk.html:120 html/Ticket/ModifyAll.html:66 html/Ticket/Update.html:67 +msgid "Update Type" +msgstr "アップデートタイプ" + +#: html/Search/Listing.html:61 +msgid "Update all these tickets at once" +msgstr "ã™ã¹ã¦ã®ãƒã‚±ãƒƒãƒˆã‚’一度ã«ã‚¢ãƒƒãƒ—デートã™ã‚‹" + +#: html/Admin/Users/Prefs.html:49 +msgid "Update email" +msgstr "アップデートEメール" + +#: html/Admin/Users/Prefs.html:55 +msgid "Update name" +msgstr "アップデートãƒãƒ¼ãƒ " + +#: lib/RT/Interface/Web.pm:375 +msgid "Update not recorded." +msgstr "アップデートã¯è¨˜éŒ²ã•れã¾ã›ã‚“ã§ã—ãŸ" + +#: html/Search/Bulk.html:81 +msgid "Update selected tickets" +msgstr "é¸æŠžã•れãŸãƒã‚±ãƒƒãƒˆã‚’アップデートã™ã‚‹" + +#: html/Admin/Users/Prefs.html:36 +msgid "Update signature" +msgstr "サインをアップデートã™ã‚‹" + +#: html/Ticket/ModifyAll.html:63 +msgid "Update ticket" +msgstr "ãƒã‚±ãƒƒãƒˆã‚’アップデートã™ã‚‹" + +#: html/SelfService/Update.html:25 html/SelfService/Update.html:27 +#. ($Ticket->id) +msgid "Update ticket # %1" +msgstr "アップデートãƒã‚±ãƒƒãƒˆ # %1" + +#: html/SelfService/Update.html:50 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "アップデートãƒã‚±ãƒƒãƒˆ #%1" + +#: html/Ticket/Update.html:135 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "" + +#: lib/RT/Interface/Web.pm:373 +msgid "Update type was neither correspondence nor comment." +msgstr "アップデートタイプã¯é€šçŸ¥ã§ã‚‚コメントã§ã‚‚ã‚りã¾ã›ã‚“" + +#: html/Elements/SelectDateType:33 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1169 +msgid "Updated" +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" + +#: 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:125 etc/initialdata:191 +msgid "User Defined" +msgstr "" + +#: html/Admin/Users/Prefs.html:59 +msgid "User ID" +msgstr "ユーザーID" + +#: html/Elements/SelectUsers:26 +msgid "User Id" +msgstr "ユーザーID" + +#: html/Admin/Elements/GroupTabs:47 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/SystemTabs:47 html/Admin/Global/index.html:59 +msgid "User Rights" +msgstr "ユーザー権利" + +#: html/Admin/Users/Modify.html:226 +#. ($msg) +msgid "User could not be created: %1" +msgstr "ユーザーを作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: %1" + +#: lib/RT/User_Overlay.pm:262 +msgid "User created" +msgstr "ユーザーãŒä½œæˆã•れã¾ã—ãŸ" + +#: html/Admin/Global/GroupRights.html:67 html/Admin/Groups/GroupRights.html:54 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "ユーザーãŒã‚°ãƒ«ãƒ¼ãƒ—を決定ã—ã¾ã—ãŸ" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "ユーザーã«é€šå‘Šã•れã¾ã—ãŸ" + +#: html/Admin/Users/Prefs.html:25 html/Admin/Users/Prefs.html:29 +msgid "User view" +msgstr "ユーザービュー" + +#: html/Admin/Users/Modify.html:48 html/Elements/Login:42 html/Ticket/Elements/AddWatchers:35 +msgid "Username" +msgstr "ユーザーãƒãƒ¼ãƒ " + +#: html/Admin/Elements/SelectNewGroupMembers:26 html/Admin/Elements/Tabs:32 html/Admin/Groups/Members.html:55 html/Admin/Queues/People.html:68 html/Admin/index.html:29 html/User/Groups/Members.html:58 +msgid "Users" +msgstr "ユーザー" + +#: html/Admin/Users/index.html:65 +msgid "Users matching search criteria" +msgstr "ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæ¤œç´¢åŸºæº–ã«ã‚ã£ã¦ã„ã¾ã™" + +#: html/Search/Elements/PickRestriction:51 +msgid "ValueOfQueue" +msgstr "ã‚ューã®ãƒãƒªãƒ¥ãƒ¼" + +#: html/Admin/Elements/EditCustomField:40 +msgid "Values" +msgstr "ãƒãƒªãƒ¥ãƒ¼" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Watch" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "WatchAsAdminCc" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "" + +#: html/Admin/Elements/QueueTabs:42 +msgid "Watchers" +msgstr "ウォッãƒãƒ£ãƒ¼" + +#: html/Admin/Elements/ModifyUser:56 +msgid "WebEncoding" +msgstr "ウェブエンコーディング" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "水曜日" + +#: etc/upgrade/2.1.71:161 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "" + +#: etc/upgrade/2.1.71:135 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "" + +#: etc/initialdata:138 +msgid "When a ticket is created" +msgstr "" + +#: etc/upgrade/2.1.71:79 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "" + +#: etc/initialdata:143 +msgid "When anything happens" +msgstr "" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "" + +#: html/Admin/Users/Modify.html:164 html/User/Prefs.html:52 +msgid "Work" +msgstr "仕事" + +#: html/Admin/Elements/ModifyUser:70 +msgid "WorkPhone" +msgstr "仕事先ã®é›»è©±" + +#: html/SelfService/Display.html:86 html/Ticket/Elements/ShowBasics:35 html/Ticket/Update.html:65 +msgid "Worked" +msgstr "Worked" + +#: lib/RT/Ticket_Overlay.pm:3056 +msgid "You already own this ticket" +msgstr "ã‚ãªãŸã¯ã™ã§ã«ã“ã®ãƒã‚±ãƒƒãƒˆã‚’所有ã—ã¦ã„ã¾ã™" + +#: html/autohandler:121 +msgid "You are not an authorized user" +msgstr "ã‚ãªãŸã¯èªè¨¼ã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ã§ã¯ã‚りã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:2930 +msgid "You can only reassign tickets that you own or 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 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "ã‚ãªãŸã¯%2ã§ãƒã‚±ãƒƒãƒˆ%1を見ã¤ã‘ã¾ã—ãŸ" + +#: html/NoAuth/Logout.html:31 html/REST/1.0/logout:25 +msgid "You have been logged out of RT." +msgstr "ã‚ãªãŸã¯RTã‹ã‚‰ãƒã‚°ã‚¢ã‚¦ãƒˆã—ãŸã¾ã¾ã§ã™" + +#: html/SelfService/Display.html:134 +msgid "You have no permission to create tickets in that queue." +msgstr "ã‚ãªãŸã¯ã“ã®ã‚ューã§ãƒã‚±ãƒƒãƒˆä½œæˆã®è¨±å¯ãŒã‚りã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:1895 +msgid "You may not create requests in that queue." +msgstr "ã‚ãªãŸã¯ã“ã®ã‚ューã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®ä½œæˆãŒã§ãã‚‹ã§ã—ょã†" + +#: html/NoAuth/Logout.html:36 +msgid "You're welcome to login again" +msgstr "ãœã²ã¾ãŸãƒã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„" + +#: html/SelfService/Elements/MyRequests:25 +#. ($friendly_status) +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を呼ã³å‡ºã™ãƒ¡ãƒ¼ãƒ«aliasesã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: etc/initialdata:429 etc/upgrade/2.1.71:146 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "" + +#: etc/initialdata:463 etc/upgrade/2.1.71:180 +msgid "Your request has been approved." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "" + +#: etc/initialdata:384 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "" + +#: html/autohandler:136 html/autohandler:142 +msgid "Your username or password is incorrect" +msgstr "ã‚ãªãŸã®ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãƒãƒ¼ãƒ ã¨ãƒ‘スワードãŒé–“é•ã£ã¦ã„ã¾ã™" + +#: html/Admin/Elements/ModifyUser:84 html/Admin/Users/Modify.html:144 html/User/Prefs.html:96 +msgid "Zip" +msgstr "ジップ" + +#: NOT FOUND IN SOURCE +msgid "[no subject]" +msgstr "" + +#: html/User/Elements/DelegateRights:59 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "%1ã¸ã®è¨±å¯" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:34 +msgid "contains" +msgstr "å«ã‚€" + +#: html/Elements/SelectAttachmentField:26 +msgid "content" +msgstr "" + +#: html/Elements/SelectAttachmentField:27 +msgid "content-type" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2282 +msgid "correspondence (probably) not sent" +msgstr "通知ã¯ï¼ˆãŠãらã)é€ä¿¡ã•れã¦ã„ã¾ã›ã‚“" + +#: lib/RT/Ticket_Overlay.pm:2292 +msgid "correspondence sent" +msgstr "通知ãŒé€ä¿¡ã•れã¾ã—ãŸ" + +#: html/Admin/Elements/ModifyQueue:63 html/Admin/Queues/Modify.html:77 lib/RT/Date.pm:319 +msgid "days" +msgstr "æ—¥" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "" + +#: html/Search/Listing.html:75 +msgid "delete" +msgstr "削除" + +#: lib/RT/Queue_Overlay.pm:63 +msgid "deleted" +msgstr "削除ã•れãŸ" + +#: html/Search/Elements/PickRestriction:68 +msgid "does not match" +msgstr "ã‚ã„ã¾ã›ã‚“" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:35 +msgid "doesn't contain" +msgstr "å«ã¿ã¾ã›ã‚“" + +#: html/Elements/SelectEqualityOperator:38 +msgid "equal to" +msgstr "ç‰ã—ã„" + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "" + +#: html/Elements/SelectAttachmentField:28 +msgid "filename" +msgstr "" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "greater than" +msgstr "より大ãã„" + +#: lib/RT/Group_Overlay.pm:194 +#. ($self->Name) +msgid "group '%1'" +msgstr "グループ'%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "時間" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "ID" + +#: html/Elements/SelectBoolean:32 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "is" +msgstr "ã§ã™" + +#: html/Elements/SelectBoolean:36 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:37 html/Search/Elements/PickRestriction:48 html/Search/Elements/PickRestriction:77 html/Search/Elements/PickRestriction:89 +msgid "isn't" +msgstr "ã§ãªã„" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "less than" +msgstr "より少ãªã„" + +#: html/Search/Elements/PickRestriction:67 +msgid "matches" +msgstr "åˆã†" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "最低" + +#: html/Ticket/Update.html:66 +msgid "minutes" +msgstr "分" + +#: bin/rt-commit-handler:765 +msgid "modifications\\n\\n" +msgstr "ä¿®æ£\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "月" + +#: lib/RT/Queue_Overlay.pm:58 +msgid "new" +msgstr "æ–°ã—ã„" + +#: html/Admin/Elements/EditScrips:43 +msgid "no value" +msgstr "" + +#: html/Ticket/Elements/EditWatchers:28 +msgid "none" +msgstr "ãªã—" + +#: html/Elements/SelectEqualityOperator:38 +msgid "not equal to" +msgstr "ç‰ã—ããªã„" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "open" +msgstr "é–‹ã" + +#: lib/RT/Group_Overlay.pm:199 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "ユーザー '%2' ã®ãƒ‘ーソナルグループ '%1' " + +#: lib/RT/Group_Overlay.pm:207 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "ã‚ュー %1 %2" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "rejected" +msgstr "æ‹’å¦ã•れã¾ã—ãŸ" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "resolved" +msgstr "分解ã•れã¾ã—ãŸ" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "ç§’" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "stalled" +msgstr "æ¢ã¾ã‚Šã¾ã—ãŸ" + +#: lib/RT/Group_Overlay.pm:202 +#. ($self->Type) +msgid "system %1" +msgstr "システム %1" + +#: lib/RT/Group_Overlay.pm:213 +#. ($self->Type) +msgid "system group '%1'" +msgstr "システムグループ '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:42 +msgid "the calling component did not specify why" +msgstr "呼ã³å‡ºã—ã¦ã„るコンãƒãƒ¼ãƒãƒ³ãƒˆãŒãªãœæ¬¡ã®ã‚ˆã†ãªã“ã¨ãŒèµ·ã“ã‚‹ã®ã‹ç‰¹å®šã§ãã¾ã›ã‚“ã§ã—ãŸ" + +#: lib/RT/Group_Overlay.pm:210 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "ãƒã‚±ãƒƒãƒˆã€€#%1 %2" + +#: NOT FOUND IN SOURCE +msgid "true" +msgstr "" + +#: lib/RT/Group_Overlay.pm:216 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "undescripbed group %1" +msgstr "表示ã•れãªã„グループ %1" + +#: lib/RT/Group_Overlay.pm:191 +#. ($user->Object->Name) +msgid "user %1" +msgstr "ユーザー %1" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "週" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "テンプレート %1ã¨" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "å¹´" + +#: NOT FOUND IN SOURCE +msgid "ニックãƒãƒ¼ãƒ " +msgstr "" + diff --git a/rt/lib/RT/I18N/nl.po b/rt/lib/RT/I18N/nl.po new file mode 100644 index 000000000..0c3549914 --- /dev/null +++ b/rt/lib/RT/I18N/nl.po @@ -0,0 +1,4819 @@ +msgid "" +msgstr "" +"Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 +msgid "#" +msgstr "#" + +#: html/Admin/Queues/Scrip.html:55 +#. ($QueueObj->id) +msgid "#%1" +msgstr "" +#: html/Approvals/Elements/ShowDependency:50 html/Ticket/Display.html:26 html/Ticket/Display.html:30 +#. ($Ticket->Id, $Ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "#%1: %2" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "%1 %2" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($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:3438 lib/RT/Transaction_Overlay.pm:559 lib/RT/Transaction_Overlay.pm:601 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 added" +msgstr "%1 %2 toegevoegd" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "%1 %2 geleden" + +#: lib/RT/Ticket_Overlay.pm:3444 lib/RT/Transaction_Overlay.pm:566 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1 %2 veranderd naar %3" + +#: lib/RT/Ticket_Overlay.pm:3441 lib/RT/Transaction_Overlay.pm:562 lib/RT/Transaction_Overlay.pm:607 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 deleted" +msgstr "%1 %2 verwijderd" + +#: NOT FOUND IN SOURCE +msgid "%1 %2 of group %3" +msgstr "" + +#: html/Admin/Elements/EditScrips:44 html/Admin/Elements/ListGlobalScrips:28 +#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) +msgid "%1 %2 with template %3" +msgstr "%1 %2 met sjabloon %3" + +#: NOT FOUND IN SOURCE +msgid "%1 (%2) %3 this ticket\\n" +msgstr "%1 (%2) %3 dit ticket\\n" + +#: html/Search/Listing.html:57 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "" + +#: bin/rt-crontool:169 bin/rt-crontool:176 bin/rt-crontool:182 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - An argument to pass to %2" +msgstr "%1 - Een argument om door te geven aan %2" + +#: bin/rt-crontool:185 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "%1 - Uitvoer status herzieningen naar STDOUT" + +#: bin/rt-crontool:179 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "%1 - Specificeer de actie module die u wenst te gebruiken" + +#: bin/rt-crontool:173 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "%1 - Specificeer de conditie module die u wenst te gebruiken" + +#: bin/rt-crontool:166 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "%1 - Specificeer de zoek module die u wenst te gebruiken" + +#: lib/RT/ScripAction_Overlay.pm:122 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "%1 ScripAction geladen" + +#: lib/RT/Ticket_Overlay.pm:3471 +#. ($args{'Value'}, $cf->Name) +msgid "%1 added as a value for %2" +msgstr "%1 toegevoegd als waarde voor %2" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on" +msgstr "%1 aliassen hebben een TicketId nodig om mee te werken" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on " +msgstr "%1 aliassen hebben een TicketId nodig om mee te werken" + +#: NOT FOUND IN SOURCE +msgid "%1 aliases require a TicketId to work on (from %2) %3" +msgstr "%1 aliassen hebben een TicketId nodig om mee te werken (van %2) %3" + +#: lib/RT/Link_Overlay.pm:117 lib/RT/Link_Overlay.pm:124 +#. ($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:52 lib/RT/Transaction_Overlay.pm:483 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%1 door %2" + +#: lib/RT/Transaction_Overlay.pm:537 lib/RT/Transaction_Overlay.pm:626 lib/RT/Transaction_Overlay.pm:635 lib/RT/Transaction_Overlay.pm:638 +#. ($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 veranderd van %2 naar %3" + +#: lib/RT/Interface/Web.pm:857 +msgid "%1 could not be set to %2." +msgstr "%1 kon niet veranderd worden naar %2" + +#: NOT FOUND IN SOURCE +msgid "%1 couldn't init a transaction (%2)\\n" +msgstr "%1 kon geen transactie initiëren (%2)" + +#: lib/RT/Ticket_Overlay.pm:2813 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1 kon status niet veranderen naar opgelost. RT's Database zou inconsistent kunnen zijn" + +#: html/Elements/MyTickets:25 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "De %1 hoogste prioriteit tickets die ik bezit..." + +#: html/Elements/MyRequests:25 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "De %1 hoogste prioriteit tickets waarom ik verzocht heb..." + +#: bin/rt-crontool:161 +#. ($0) +msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." +msgstr "%1 is een gereedschap om te reageren op tickets van een extern rooster programma, zoals cron" + +#: lib/RT/Queue_Overlay.pm:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1 is niet langer een %2 voor deze rij" + +#: lib/RT/Ticket_Overlay.pm:1570 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 is niet langer een %2 voor dit ticket" + +#: lib/RT/Ticket_Overlay.pm:3527 +#. ($args{'Value'}, $cf->Name) +msgid "%1 is no longer a value for custom field %2" +msgstr "%1 is niet langer een waarde voor specifiek veld %2" + +#: NOT FOUND IN SOURCE +msgid "%1 isn't a valid Queue id." +msgstr "%1 is niet een geldig Rij id" + +#: html/Ticket/Elements/ShowBasics:36 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 min" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "%1 niet afgebeeld" + +#: html/User/Elements/DelegateRights:76 +#. (loc($ObjectType =~ /^RT::(.*)$/)) +msgid "%1 rights" +msgstr "%1 rechten" + +#: NOT FOUND IN SOURCE +msgid "%1 succeeded\\n" +msgstr "%1 gelukt\\n" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for $MessageId" +msgstr "%1 type onbekend voor $MessageId" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for %2" +msgstr "%1 type onbekend voor %2" + +#: NOT FOUND IN SOURCE +msgid "%1 was created without a CurrentUser\\n" +msgstr "" + +#: lib/RT/Action/ResolveMembers.pm:42 +#. (ref $self) +msgid "%1 will resolve all members of a resolved group ticket." +msgstr "%1 zal alle leden van een opgelost groep ticket omzetten." + +#: NOT FOUND IN SOURCE +msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:435 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1: geen aanhechting gespecificeerd" + +#: html/Ticket/Elements/ShowTransaction:102 +#. ($size) +msgid "%1b" +msgstr "%1b" + +#: html/Ticket/Elements/ShowTransaction:99 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "%1k" + +#: lib/RT/Ticket_Overlay.pm:1140 +#. ($args{'Status'}) +msgid "'%1' is an invalid value for status" +msgstr "'%1 is een ongeldige waarde voor status" + +#: NOT FOUND IN SOURCE +msgid "'%1' not a recognized action. " +msgstr "'%1' onherkende actie. " + +#: 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/EditQueueWatchers:29 html/Admin/Elements/EditScrips:35 html/Admin/Elements/EditTemplates:36 html/Admin/Groups/Members.html:52 html/Ticket/Elements/EditLinks:33 html/Ticket/Elements/EditPeople:46 html/User/Groups/Members.html:55 +msgid "(Check box to delete)" +msgstr "(Vink hokje af om te verwijderen)" + +#: NOT FOUND IN SOURCE +msgid "(Check boxes to delete)" +msgstr "" + +#: html/Ticket/Create.html:178 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(Vul ticket ids of URLs in, gescheiden door spaties)" + +#: html/Admin/Queues/Modify.html:54 html/Admin/Queues/Modify.html:60 +#. ($RT::CorrespondAddress) +#. ($RT::CommentAddress) +msgid "(If left blank, will default to %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "(Geen Waarde)" + +#: html/Admin/Elements/EditCustomFields:33 html/Admin/Elements/ListGlobalCustomFields:32 +msgid "(No custom fields)" +msgstr "" + +#: html/Admin/Groups/Members.html:50 html/User/Groups/Members.html:53 +msgid "(No members)" +msgstr "(Geen Leden)" + +#: html/Admin/Elements/EditScrips:32 html/Admin/Elements/ListGlobalScrips:32 +msgid "(No scrips)" +msgstr "(Geen scrips)" + +#: html/Admin/Elements/EditTemplates:31 +msgid "(No templates)" +msgstr "" + +#: html/Ticket/Update.html:85 +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 "" + +#: 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 "(Stuurt een blinde carbon copy van deze herziening naar een comma gescheiden lijst van email adressen. Wie er toekomstige herzieningen zal ontvangen, zal <b>niet</b> veranderen.)" + +#: html/Ticket/Create.html:79 +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 "" + +#: html/Ticket/Update.html:81 +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 "" + +#: 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 "(Stuurt een carbon copy van deze herziening naar een comma gescheiden lijst van email adressen. Wie er toekomstige herzieningen zal ontvangen, zal <b>niet</b> veranderen.)" + +#: html/Ticket/Create.html:69 +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 "" + +#: html/Admin/Groups/index.html:33 html/User/Groups/index.html:33 +msgid "(empty)" +msgstr "(leeg)" + +#: html/Admin/Users/index.html:39 +msgid "(no name listed)" +msgstr "" + +#: html/Elements/MyRequests:43 html/Elements/MyTickets:45 +msgid "(no subject)" +msgstr "(geen onderwerp)" + +#: html/Admin/Elements/SelectRights:48 html/Elements/SelectCustomFieldValue:30 html/Ticket/Elements/EditCustomField:59 html/Ticket/Elements/ShowCustomFields:36 lib/RT/Transaction_Overlay.pm:536 +msgid "(no value)" +msgstr "(geen waarde)" + +#: html/Ticket/Elements/EditLinks:116 +msgid "(only one ticket)" +msgstr "(slechts één ticket)" + +#: html/Elements/MyRequests:52 html/Elements/MyTickets:55 +msgid "(pending approval)" +msgstr "(wacht op goedkeuring)" + +#: html/Elements/MyRequests:54 html/Elements/MyTickets:57 +msgid "(pending other tickets)" +msgstr "(wacht op andere tickets)" + +#: NOT FOUND IN SOURCE +msgid "(requestor's group)" +msgstr "" + +#: html/Admin/Users/Modify.html:50 +msgid "(required)" +msgstr "(verplicht)" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "(untitled)" +msgstr "(zonder titel)" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I own..." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I requested..." +msgstr "" + +#: html/Ticket/Elements/ShowBasics:32 +msgid "<% $Ticket->Status%>" +msgstr "<% $Ticket->Status%>" + +#: html/Elements/SelectTicketTypes:27 +msgid "<% $_ %>" +msgstr "<% $_ %>" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:26 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"Nieuw ticket in\"> %1" + +#: NOT FOUND IN SOURCE +msgid "??????" +msgstr "" + +#: etc/initialdata:203 +msgid "A blank template" +msgstr "Een leeg sjabloon" + +#: NOT FOUND IN SOURCE +msgid "ACE Deleted" +msgstr "ACE Verwijderd" + +#: NOT FOUND IN SOURCE +msgid "ACE Loaded" +msgstr "ACE Geladen" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be found" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:157 lib/RT/Principal_Overlay.pm:181 +msgid "ACE not found" +msgstr "ACE niet gevonden" + +#: lib/RT/ACE_Overlay.pm:831 +msgid "ACEs can only be created and deleted." +msgstr "ACEs kunnen allen gecreëerd of verwijderd worden." + +#: bin/rt-commit-handler:755 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "Afbraak om ongewenste ticket aanpassing te voorkomen.\\n" + +#: html/User/Elements/Tabs:32 +msgid "About me" +msgstr "" + +#: html/Admin/Users/Modify.html:80 +msgid "Access control" +msgstr "Toegangscontrole" + +#: html/Admin/Elements/EditScrip:57 +msgid "Action" +msgstr "Actie" + +#: lib/RT/Scrip_Overlay.pm:147 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "Actie %1 niet gevonden" + +#: bin/rt-crontool:123 +msgid "Action committed." +msgstr "Actie uitgevoerd." + +#: bin/rt-crontool:119 +msgid "Action prepared..." +msgstr "Actie voorbereid..." + +#: html/Search/Bulk.html:92 +msgid "Add AdminCc" +msgstr "Voeg AdminCc toe" + +#: html/Search/Bulk.html:90 +msgid "Add Cc" +msgstr "Voeg Cc toe" + +#: html/Ticket/Create.html:114 html/Ticket/Update.html:100 +msgid "Add More Files" +msgstr "Voeg Meer Bestanden Toe" + +#: NOT FOUND IN SOURCE +msgid "Add Next State" +msgstr "" + +#: html/Search/Bulk.html:88 +msgid "Add Requestor" +msgstr "Voeg Verzoeker Toe" + +#: NOT FOUND IN SOURCE +msgid "Add a Scrip to this queue" +msgstr "Voeg een Scrip toe aan deze rij" + +#: 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:55 +msgid "Add a scrip which will apply to all queues" +msgstr "Voeg een scrip toe welke voor alle rijen zal gelden" + +#: html/Search/Bulk.html:118 +msgid "Add comments or replies to selected tickets" +msgstr "Voeg commentaar of reacties toe aan geselecteerde tickets" + +#: html/Admin/Groups/Members.html:42 html/User/Groups/Members.html:39 +msgid "Add members" +msgstr "Voeg leden toe" + +#: html/Admin/Queues/People.html:66 html/Ticket/Elements/AddWatchers:28 +msgid "Add new watchers" +msgstr "Voeg nieuwe toeschouwers toe" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "VoegVolgendeStaatToe" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "Hoofd toegevoegd als %1 voor deze rij" + +#: lib/RT/Ticket_Overlay.pm:1454 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "Hoofd toegevoegd als %1 voor dit ticket" + +#: html/Admin/Elements/ModifyUser:76 html/Admin/Users/Modify.html:122 html/User/Prefs.html:88 +msgid "Address1" +msgstr "Adres1" + +#: html/Admin/Elements/ModifyUser:78 html/Admin/Users/Modify.html:127 html/User/Prefs.html:90 +msgid "Address2" +msgstr "Adres2" + +#: html/Ticket/Create.html:74 +msgid "Admin Cc" +msgstr "Beheerder Cc" + +#: etc/initialdata:274 +msgid "Admin Comment" +msgstr "" + +#: etc/initialdata:256 +msgid "Admin Correspondence" +msgstr "" + +#: html/Admin/Queues/index.html:25 html/Admin/Queues/index.html:28 +msgid "Admin queues" +msgstr "Beheerder rijen" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "Beheerder gebruikers" + +#: html/Admin/Global/index.html:26 html/Admin/Global/index.html:28 +msgid "Admin/Global configuration" +msgstr "Beheerder/Globale configuratie" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "Beheerder/Groepen" + +#: html/Admin/Queues/Modify.html:25 html/Admin/Queues/Modify.html:29 +msgid "Admin/Queue/Basics" +msgstr "Beheerder/Rij/Basis" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "" + +#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:39 html/Ticket/Update.html:50 lib/RT/ACE_Overlay.pm:89 +msgid "AdminCc" +msgstr "BeheerderCc" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "BeheerderCommentaar" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "BeheerderCorrespondentie" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "AdminCustomFields" +msgstr "BeheerderSpecifiekeVelden" + +#: lib/RT/Group_Overlay.pm:146 +msgid "AdminGroup" +msgstr "BeheerderGroep" + +#: lib/RT/Group_Overlay.pm:148 +msgid "AdminGroupMembership" +msgstr "BeheerderGroepLidmaatschap" + +#: lib/RT/System.pm:59 +msgid "AdminOwnPersonalGroups" +msgstr "BeheerderBezitPersoonlijkeGroepen" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "AdminQueue" +msgstr "BeheerderRij" + +#: lib/RT/System.pm:60 +msgid "AdminUsers" +msgstr "BeheerderGebruikers" + +#: html/Admin/Queues/People.html:48 html/Ticket/Elements/EditPeople:54 +msgid "Administrative Cc" +msgstr "Administratieve Cc" + +#: NOT FOUND IN SOURCE +msgid "Admins" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "Uitgebreid Zoeken" + +#: html/Elements/SelectDateRelation:36 +msgid "After" +msgstr "Nadat" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "Leeftijd" + +#: NOT FOUND IN SOURCE +msgid "Alias" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Alias for" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:96 +msgid "All Custom Fields" +msgstr "" + +#: html/Admin/Queues/index.html:53 +msgid "All Queues" +msgstr "Alle Rijen" + +#: NOT FOUND IN SOURCE +msgid "Always sends a message to the requestors independent of message sender" +msgstr "Stuurt altijd een bericht naar de verzoekers ongeacht de verzender van het bericht" + +#: html/Elements/Tabs:58 +msgid "Approval" +msgstr "Goedkeuring" + +#: html/Approvals/Display.html:46 html/Approvals/Elements/Approve:27 html/Approvals/Elements/ShowDependency:42 html/Approvals/index.html:65 +#. ($Ticket->Id, $Ticket->Subject) +#. ($ticket->id, $msg) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Approval #%1: %2" +msgstr "Goedkeuring #%1: %2" + +#: html/Approvals/index.html:54 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "Goedkeuring #%1: Notities niet bewaard vanwege een systeem fout" + +#: html/Approvals/index.html:52 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "Goedkeuring #%1: Notities bewaard" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "Goedkeuring Details" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "Goedkeuring diagram" + +#: html/Approvals/Elements/Approve:45 +msgid "Approve" +msgstr "Goedkeuring" + +#: etc/initialdata:431 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "Notities van de goedkeurer: %1" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "Ggk." + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "april" + +#: html/Elements/SelectSortOrder:35 +msgid "Ascending" +msgstr "Oplopend" + +#: html/Search/Bulk.html:127 html/SelfService/Update.html:36 html/Ticket/ModifyAll.html:83 html/Ticket/Update.html:100 +msgid "Attach" +msgstr "Aanhechten" + +#: html/SelfService/Create.html:67 html/Ticket/Create.html:110 +msgid "Attach file" +msgstr "Hecht bestand aan" + +#: html/Ticket/Create.html:98 html/Ticket/Update.html:89 +msgid "Attached file" +msgstr "Aangehecht bestand" + +#: html/SelfService/Attachment/dhandler:36 +msgid "Attachment '%1' could not be loaded" +msgstr "Aanhechting '%1' kon niet geladen worden" + +#: lib/RT/Transaction_Overlay.pm:443 +msgid "Attachment created" +msgstr "Aanhechting gecreëerd" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "Aanhechting bestandsnaam" + +#: html/Ticket/Elements/ShowAttachments:26 +msgid "Attachments" +msgstr "Aanhechtingen" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "aug." + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "augustus" + +#: html/Admin/Elements/ModifyUser:66 +msgid "AuthSystem" +msgstr "AuthenticatieSysteem" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "Automatisch-antwoord" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "Automatisch-antwoordAanVerzoekers" + +#: NOT FOUND IN SOURCE +msgid "Bad PGP Signature: %1\\n" +msgstr "Ongeldige PGP Signatuur: %1\\n" + +#: html/SelfService/Attachment/dhandler:40 +msgid "Bad attachment id. Couldn't find attachment '%1'\\n" +msgstr "Ongeldig aanhechtings id. Kon aanhechting '%1' niet vinden\\n" + +#: bin/rt-commit-handler:827 +#. ($val) +msgid "Bad data in %1" +msgstr "Ongeldige data in %1" + +#: html/SelfService/Attachment/dhandler:43 +#. ($trans, $AttachmentObj->TransactionId()) +msgid "Bad transaction number for attachment. %1 should be %2\\n" +msgstr "Ongeldig transactienummer voor aanhechting. %1 zou %2 moeten zijn\\n" + +#: html/Admin/Elements/GroupTabs:39 html/Admin/Elements/QueueTabs:39 html/Admin/Elements/UserTabs:38 html/Ticket/Elements/Tabs:90 html/User/Elements/GroupTabs:38 +msgid "Basics" +msgstr "Basis" + +#: html/Ticket/Update.html:83 +msgid "Bcc" +msgstr "Bcc" + +#: html/Admin/Elements/EditScrip:88 html/Admin/Global/GroupRights.html:85 html/Admin/Global/Template.html:46 html/Admin/Global/UserRights.html:54 html/Admin/Groups/GroupRights.html:73 html/Admin/Groups/Members.html:81 html/Admin/Groups/Modify.html:56 html/Admin/Groups/UserRights.html:55 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:45 html/Admin/Queues/UserRights.html:54 html/User/Groups/Modify.html:56 +msgid "Be sure to save your changes" +msgstr "Zorg ervoor dat u uw veranderingen bewaard" + +#: html/Elements/SelectDateRelation:34 lib/RT/CurrentUser.pm:322 +msgid "Before" +msgstr "Voorheen" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "Begin Goedkeuring" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "Blanco" + +#: html/Search/Listing.html:79 +msgid "Bookmarkable URL for this search" +msgstr "XXX URL voor deze zoekopdracht" + +#: html/Ticket/Elements/ShowHistory:39 html/Ticket/Elements/ShowHistory:45 +msgid "Brief headers" +msgstr "Korte koppen" + +#: html/Search/Bulk.html:25 html/Search/Bulk.html:26 +msgid "Bulk ticket update" +msgstr "Bulk ticketherziening" + +#: lib/RT/User_Overlay.pm:1331 +msgid "Can not modify system users" +msgstr "Kan systeemgebruikers niet wijzigen" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Can this principal see this queue" +msgstr "Kan dit hoofd deze rij zien" + +#: lib/RT/CustomFieLd_Overlay.pm:144 +msgid "Can't add a custom field value without a name" +msgstr "Kan geen specifiek veld toevoegen zonder een naam" + +#: lib/RT/Link_Overlay.pm:132 +msgid "Can't link a ticket to itself" +msgstr "Kan een ticket niet koppelen aan zichzelf" + +#: lib/RT/Ticket_Overlay.pm:2787 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "Kan niet samenvoegen met een reeds samengevoegd ticket. U zou deze boodschap nooit mogen krijgen" + +#: lib/RT/Ticket_Overlay.pm:2605 lib/RT/Ticket_Overlay.pm:2674 +msgid "Can't specifiy both base and target" +msgstr "Kan niet zowel basis als doel specificeren" + +#: html/autohandler:112 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "Kan gebruiker %1 niet aanmaken" + +#: etc/initialdata:50 html/Admin/Queues/People.html:44 html/SelfService/Create.html:51 html/SelfService/Display.html:50 html/Ticket/Create.html:64 html/Ticket/Elements/EditPeople:51 html/Ticket/Elements/ShowPeople:35 html/Ticket/Update.html:45 html/Ticket/Update.html:78 lib/RT/ACE_Overlay.pm:88 +msgid "Cc" +msgstr "Cc" + +#: html/SelfService/Prefs.html:31 +msgid "Change password" +msgstr "Wijzig wachtwoord" + +#: html/Ticket/Create.html:101 html/Ticket/Update.html:92 +msgid "Check box to delete" +msgstr "Vink hokje af om te verwijderen" + +#: html/Admin/Elements/SelectRights:31 +msgid "Check box to revoke right" +msgstr "Vink hokje af om recht te verwijderen" + +#: html/Ticket/Create.html:183 html/Ticket/Elements/EditLinks:131 html/Ticket/Elements/EditLinks:69 html/Ticket/Elements/ShowLinks:51 +msgid "Children" +msgstr "Kinderen" + +#: html/Admin/Elements/ModifyUser:80 html/Admin/Users/Modify.html:132 html/User/Prefs.html:92 +msgid "City" +msgstr "Stad" + +#: html/Ticket/Elements/ShowDates:47 +msgid "Closed" +msgstr "" + +#: html/SelfService/Elements/Tabs:60 +msgid "Closed requests" +msgstr "Gesloten verzoeken" + +#: NOT FOUND IN SOURCE +msgid "Code" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "Commando niet begrepen!\\n" + +#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:153 +msgid "Comment" +msgstr "Commentaar" + +#: html/Admin/Elements/ModifyQueue:45 html/Admin/Queues/Modify.html:58 +msgid "Comment Address" +msgstr "Commentaar Adres" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "Commentaar niet bewaard" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Comment on tickets" +msgstr "Commentaar op tickets" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "CommentOnTicket" +msgstr "CommentaarOpTicket" + +#: html/Admin/Elements/ModifyUser:35 +msgid "Comments" +msgstr "Commentaar" + +#: html/Ticket/ModifyAll.html:70 html/Ticket/Update.html:70 +msgid "Comments (Not sent to requestors)" +msgstr "Commentaar (Wordt niet verstuurd aan verzoekers)" + +#: html/Search/Bulk.html:122 +msgid "Comments (not sent to requestors)" +msgstr "Commentaar (Wordt niet verstuurd aan verzoekers)" + +#: html/Elements/ViewUser:27 +#. ($name) +msgid "Comments about %1" +msgstr "Commentaar over %1" + +#: html/Admin/Users/Modify.html:185 html/Ticket/Elements/ShowRequestor:44 +msgid "Comments about this user" +msgstr "Commentaar over deze gebruiker" + +#: lib/RT/Transaction_Overlay.pm:545 +msgid "Comments added" +msgstr "Commentaar toegevoegd" + +#: lib/RT/Action/Generic.pm:140 +msgid "Commit Stubbed" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "Compilatie Restricties" + +#: html/Admin/Elements/EditScrip:41 +msgid "Condition" +msgstr "Voorwaarde" + +#: bin/rt-crontool:109 +msgid "Condition matches..." +msgstr "Voorwaarde komt overeen..." + +#: lib/RT/Scrip_Overlay.pm:160 +msgid "Condition not found" +msgstr "Voorwaarde niet gevonden" + +#: html/Elements/Tabs:52 +msgid "Configuration" +msgstr "Configuratie" + +#: html/SelfService/Prefs.html:33 +msgid "Confirm" +msgstr "Bevestig" + +#: html/Admin/Elements/ModifyUser:60 +msgid "ContactInfoSystem" +msgstr "ContactInfoSysteem" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "Contact datum '%1' kon niet ontleed worden" + +#: html/Admin/Elements/ModifyTemplate:44 html/Ticket/ModifyAll.html:87 +msgid "Content" +msgstr "Inhoud" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "" + +#: etc/initialdata:266 +msgid "Correspondence" +msgstr "Correspondentie" + +#: html/Admin/Elements/ModifyQueue:39 html/Admin/Queues/Modify.html:51 +msgid "Correspondence Address" +msgstr "Correspondentieadres" + +#: lib/RT/Transaction_Overlay.pm:541 +msgid "Correspondence added" +msgstr "Correspondentie toegevoegd" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "Correspondentie niet bewaard" + +#: lib/RT/Ticket_Overlay.pm:3458 +msgid "Could not add new custom field value for ticket. " +msgstr "Kon nieuw specifiek veld niet toevoegen voor dit ticket. " + +#: NOT FOUND IN SOURCE +msgid "Could not add new custom field value for ticket. %1 " +msgstr "Kon nieuw specifiek veld niet toevoegen voor dit ticket. %1" + +#: lib/RT/Ticket_Overlay.pm:2963 lib/RT/Ticket_Overlay.pm:2971 lib/RT/Ticket_Overlay.pm:2987 +msgid "Could not change owner. " +msgstr "Kon eigenaar niet wijzigen. " + +#: html/Admin/Elements/EditCustomField:68 html/Admin/Elements/EditCustomFields:166 +#. ($msg) +msgid "Could not create CustomField" +msgstr "Kon SpecifiekVeld niet creëren" + +#: html/User/Groups/Modify.html:77 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 +msgid "Could not create group" +msgstr "Kon groep niet creëren" + +#: html/Admin/Global/Template.html:75 html/Admin/Queues/Template.html:72 +#. ($msg) +msgid "Could not create template: %1" +msgstr "Kon sjabloon niet creëren: %1" + +#: lib/RT/Ticket_Overlay.pm:1073 lib/RT/Ticket_Overlay.pm:333 +msgid "Could not create ticket. Queue not set" +msgstr "Kon ticket niet creëren. Rij niet ingesteld" + +#: lib/RT/User_Overlay.pm:208 lib/RT/User_Overlay.pm:220 lib/RT/User_Overlay.pm:238 lib/RT/User_Overlay.pm:414 +msgid "Could not create user" +msgstr "Kon gebruiker niet creëren" + +#: NOT FOUND IN SOURCE +msgid "Could not create watcher for requestor" +msgstr "Kon toeschouwer niet creëren voor verzoeker" + +#: NOT FOUND IN SOURCE +msgid "Could not find a ticket with id %1" +msgstr "Kon geen ticket vinden met id %1" + +#: NOT FOUND IN SOURCE +msgid "Could not find group %1." +msgstr "Kon groep %1 niet vinden. " + +#: lib/RT/Queue_Overlay.pm:621 lib/RT/Ticket_Overlay.pm:1422 +msgid "Could not find or create that user" +msgstr "Kon deze gebruiker niet vinden of creëren" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1501 +msgid "Could not find that principal" +msgstr "Kon dat hoofd niet vinden" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "Kon gebruiker %1 niet vinden." + +#: html/Admin/Groups/Members.html:88 html/User/Groups/Members.html:90 html/User/Groups/Modify.html:82 +msgid "Could not load group" +msgstr "Kon groep niet laden" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "Kon dat hoofd geen %1 maken voor deze rij" + +#: lib/RT/Ticket_Overlay.pm:1443 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "Kon dat hoofd geen %1 maken voor dit ticket" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "Kon dat hoofd niet verwijderen als %1 voor deze rij" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "Kon dat hoofd niet verwijderen als %1 voor dit ticket" + +#: lib/RT/Group_Overlay.pm:985 +msgid "Couldn't add member to group" +msgstr "Kon lid niet toevoegen aan groep" + +#: lib/RT/Ticket_Overlay.pm:3468 lib/RT/Ticket_Overlay.pm:3524 +#. ($Msg) +msgid "Couldn't create a transaction: %1" +msgstr "Kon geen transactie creëren: %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't figure out what to do from gpg's reply\\n" +msgstr "Kon niet bepalen welke actie te ondernemen aan de hand van gpg's antwoord\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find group\\n" +msgstr "Kon groep niet vinden\\n" + +#: lib/RT/Interface/Web.pm:866 +msgid "Couldn't find row" +msgstr "Kon rij niet vinden" + +#: lib/RT/Group_Overlay.pm:959 +msgid "Couldn't find that principal" +msgstr "Kon dat hoofd niet vinden" + +#: lib/RT/CustomField_Overlay.pm:175 +msgid "Couldn't find that value" +msgstr "Kon die waarde niet vinden" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find that watcher" +msgstr "Kon die toeschouwer niet vinden" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find user\\n" +msgstr "Kon gebruiker niet vinden\\n" + +#: lib/RT/CurrentUser.pm:112 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "Kon %1 niet laden uit de gebruikersdatabase.\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load KeywordSelects." +msgstr "Kon KeywordSelects niet laden." + +#: NOT FOUND IN SOURCE +msgid "Couldn't load RT config file '%1' %2" +msgstr "Kon RT configuratie bestand niet laden '%1' %2" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load Scrips." +msgstr "Kon Scrips niet laden" + +#: html/Admin/Groups/GroupRights.html:88 html/Admin/Groups/UserRights.html:75 +#. ($id) +msgid "Couldn't load group %1" +msgstr "Kon groep %1 niet laden" + +#: lib/RT/Link_Overlay.pm:175 lib/RT/Link_Overlay.pm:184 lib/RT/Link_Overlay.pm:211 +msgid "Couldn't load link" +msgstr "Kon link niet laden" + +#: html/Admin/Elements/EditCustomFields:147 html/Admin/Queues/People.html:121 +#. ($id) +msgid "Couldn't load queue" +msgstr "Kon rij niet laden" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:72 +#. ($id) +msgid "Couldn't load queue %1" +msgstr "Kon rij %1 niet laden " + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "Kon scrip niet laden" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "Kon sjabloon niet laden" + +#: html/Admin/Users/Prefs.html:79 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "Kon die gebruiker (%1) niet laden" + +#: html/SelfService/Display.html:166 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "Kon ticket '%1' niet laden" + +#: html/Admin/Elements/ModifyUser:86 html/Admin/Users/Modify.html:149 html/User/Prefs.html:98 +msgid "Country" +msgstr "Land" + +#: html/Admin/Elements/CreateUserCalled:26 html/Ticket/Create.html:135 html/Ticket/Create.html:195 +msgid "Create" +msgstr "Creëer" + +#: etc/initialdata:128 +msgid "Create Tickets" +msgstr "Creëer Tickets" + +#: html/Admin/Elements/EditCustomField:58 +msgid "Create a CustomField" +msgstr "Creëer een SpecifiekVeld" + +#: html/Admin/Queues/CustomField.html:48 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "" + +#: html/Admin/Global/CustomField.html:48 +msgid "Create a CustomField which applies to all queues" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Create a new Custom Field" +msgstr "Creëer een niuew Specifiek Veld" + +#: NOT FOUND IN SOURCE +msgid "Create a new global Scrip" +msgstr "Creëer een nieuw globaal Scrip" + +#: NOT FOUND IN SOURCE +msgid "Create a new global scrip" +msgstr "" + +#: html/Admin/Groups/Modify.html:67 html/Admin/Groups/Modify.html:93 +msgid "Create a new group" +msgstr "Creëer een nieuwe groep" + +#: html/User/Groups/Modify.html:67 html/User/Groups/Modify.html:92 +msgid "Create a new personal group" +msgstr "Creëer een nieuwe persoonlijke groep" + +#: NOT FOUND IN SOURCE +msgid "Create a new queue" +msgstr "Creëer een nieuwe rij" + +#: NOT FOUND IN SOURCE +msgid "Create a new scrip" +msgstr "Creëer een nieuw scrip" + +#: NOT FOUND IN SOURCE +msgid "Create a new template" +msgstr "Creëer een nieuw template" + +#: html/SelfService/Create.html:30 html/Ticket/Create.html:25 html/Ticket/Create.html:28 html/Ticket/Create.html:36 +msgid "Create a new ticket" +msgstr "Creëer een nieuw ticket" + +#: html/Admin/Users/Modify.html:214 html/Admin/Users/Modify.html:241 +msgid "Create a new user" +msgstr "Creëer een nieuwe gebruiker" + +#: html/Admin/Queues/Modify.html:103 +msgid "Create a queue" +msgstr "Creëer een rij" + +#: NOT FOUND IN SOURCE +msgid "Create a queue called" +msgstr "Creëer een rij genaamd" + +#: html/SelfService/Create.html:25 html/SelfService/Create.html:27 +msgid "Create a request" +msgstr "Creëer een verzoek" + +#: html/Admin/Queues/Scrip.html:59 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "Creëer een scrip voor rij %1" + +#: html/Admin/Global/Template.html:69 html/Admin/Queues/Template.html:65 +msgid "Create a template" +msgstr "Creëer een sjabloon" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1 / %2 / %3 " +msgstr "Creatie mislukt: %1 / %2 / %3 " + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1/%2/%3" +msgstr "" + +#: etc/initialdata:130 +msgid "Create new tickets based on this scrip's template" +msgstr "Creëer nieuwe tickets gebaseerd op het sjabloon van dit scrip" + +#: html/SelfService/Create.html:81 +msgid "Create ticket" +msgstr "Creëer ticket" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Create tickets in this queue" +msgstr "Creëer tickets in deze rij" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Create, delete and modify custom fields" +msgstr "Creëer, verwijder en wijzig specifieke velden" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "Create, delete and modify queues" +msgstr "Creëer, verwijder en wijzig rijen" + +#: NOT FOUND IN SOURCE +msgid "Create, delete and modify the members of any user's personal groups" +msgstr "" + +#: lib/RT/System.pm:59 +msgid "Create, delete and modify the members of personal groups" +msgstr "Creëer, verwijder en wijzig de leden van persoonlijke groepen" + +#: lib/RT/System.pm:60 +msgid "Create, delete and modify users" +msgstr "Creëer, verwijder en wijzig gebruikers" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "CreateTicket" +msgstr "CreëerTicket" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1167 +msgid "Created" +msgstr "Gecreëerd" + +#: html/Admin/Elements/EditCustomField:71 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "SpecifiekVeld %1 gecreëerd" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "Sjabloon %1 Gecreëerd" + +#: html/Ticket/Elements/EditLinks:28 +msgid "Current Relationships" +msgstr "Huidige Relaties" + +#: html/Admin/Elements/EditScrips:30 +msgid "Current Scrips" +msgstr "Huidige Scrips" + +#: html/Admin/Groups/Members.html:39 html/User/Groups/Members.html:42 +msgid "Current members" +msgstr "Huidige leden" + +#: html/Admin/Elements/SelectRights:29 +msgid "Current rights" +msgstr "Huidige rechten" + +#: html/Search/Listing.html:71 +msgid "Current search criteria" +msgstr "" + +#: html/Admin/Queues/People.html:41 html/Ticket/Elements/EditPeople:45 +msgid "Current watchers" +msgstr "Huidige toeschouwers" + +#: html/Admin/Global/CustomField.html:55 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "" + +#: html/Admin/Elements/QueueTabs:53 html/Admin/Elements/SystemTabs:40 html/Admin/Global/index.html:50 html/Ticket/Elements/ShowSummary:35 +msgid "Custom Fields" +msgstr "Specifieke Velden" + +#: html/Admin/Elements/EditScrip:73 +msgid "Custom action cleanup code" +msgstr "Specifieke actie opruim code" + +#: html/Admin/Elements/EditScrip:65 +msgid "Custom action preparation code" +msgstr "Specifieke actie voorbereidings code" + +#: html/Admin/Elements/EditScrip:49 +msgid "Custom condition" +msgstr "Specifieke voorwaarde" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "Specifiek veld %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "Specifiek veld %1 heeft een waarde." + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "Specifiek veld %1 heeft geen waarde." + +#: lib/RT/Ticket_Overlay.pm:3360 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "Specifiek veld %1 niet gevonden" + +#: html/Admin/Elements/EditCustomFields:197 +msgid "Custom field deleted" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3510 +msgid "Custom field not found" +msgstr "Specifiek veld niet gevonden" + +#: lib/RT/CustomField_Overlay.pm:283 +#. ($args{'Content'}, $self->Name) +msgid "Custom field value %1 could not be found for custom field %2" +msgstr "Specifiek veld waarde %1 kon niet gevonden worden voor specifiek veld %2" + +#: NOT FOUND IN SOURCE +msgid "Custom field value changed from %1 to %2" +msgstr "Specifiek veld waarde veranderd van %1 naar %2" + +#: lib/RT/CustomField_Overlay.pm:185 +msgid "Custom field value could not be deleted" +msgstr "Specifiek veld waarde kon niet verwijderd worden" + +#: lib/RT/CustomField_Overlay.pm:289 +msgid "Custom field value could not be found" +msgstr "Specifiek veld waarde kon niet gevonden worden" + +#: lib/RT/CustomField_Overlay.pm:183 lib/RT/CustomField_Overlay.pm:291 +msgid "Custom field value deleted" +msgstr "Specifiek veld waarde verwijderd" + +#: lib/RT/Transaction_Overlay.pm:550 +msgid "CustomField" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "Data fout" + +#: html/Ticket/Create.html:161 html/Ticket/Elements/ShowSummary:53 html/Ticket/Elements/Tabs:93 html/Ticket/ModifyAll.html:44 +msgid "Dates" +msgstr "Data" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "dec." + +#: NOT FOUND IN SOURCE +msgid "December" +msgstr "december" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "Standaard Auto-antwoord Sjabloon" + +#: etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "" + +#: etc/initialdata:275 +msgid "Default admin comment template" +msgstr "Standaard admin commentaar sjabloon" + +#: etc/initialdata:257 +msgid "Default admin correspondence template" +msgstr "Standaard admin correspondentie sjabloon" + +#: etc/initialdata:267 +msgid "Default correspondence template" +msgstr "Standaard correspondentie sjabloon" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "Standaard transactie sjabloon" + +#: lib/RT/Transaction_Overlay.pm:645 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "Standaard: %1/%2 verandered van %3 naar %4" + +#: html/User/Delegation.html:25 html/User/Delegation.html:28 +msgid "Delegate rights" +msgstr "Delegeer rechten" + +#: lib/RT/System.pm:63 +msgid "Delegate specific rights which have been granted to you." +msgstr "Delegeer specifieke rechten die aan u verleend zijn." + +#: lib/RT/System.pm:63 +msgid "DelegateRights" +msgstr "DelegeerRechten" + +#: html/User/Elements/Tabs:38 +msgid "Delegation" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "Delete tickets" +msgstr "Verwijder tickets" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "DeleteTicket" +msgstr "VerwijderTicket" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "Het verwijderen van dit object zou de referentiële integriteit kunnen ondermijnen" + +#: lib/RT/Queue_Overlay.pm:292 +msgid "Deleting this object would break referential integrity" +msgstr "Het verwijderen van dit object zou de referentiële integriteit ondermijnen" + +#: lib/RT/User_Overlay.pm:430 +msgid "Deleting this object would violate referential integrity" +msgstr "Het verwijderen van dit object zou de referentiële integriteit ondermijnen" + +#: NOT FOUND IN SOURCE +msgid "Deleting this object would violate referential integrity." +msgstr "Het verwijderen van dit object zou de referentiële integriteit ondermijnen" + +#: NOT FOUND IN SOURCE +msgid "Deleting this object would violate referential integrity. That's bad." +msgstr "" + +#: html/Approvals/Elements/Approve:46 +msgid "Deny" +msgstr "Wijs af" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/EditLinks:123 html/Ticket/Elements/EditLinks:47 html/Ticket/Elements/ShowDependencies:32 html/Ticket/Elements/ShowLinks:35 +msgid "Depended on by" +msgstr "Afhankelijkheid van" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "Afhankelijkheden: \\n" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:180 html/Ticket/Elements/EditLinks:119 html/Ticket/Elements/EditLinks:36 html/Ticket/Elements/ShowDependencies:25 html/Ticket/Elements/ShowLinks:27 +msgid "Depends on" +msgstr "Is afhankelijk van" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "" + +#: html/Elements/SelectSortOrder:35 +msgid "Descending" +msgstr "Aflopend" + +#: html/SelfService/Create.html:75 html/Ticket/Create.html:119 +msgid "Describe the issue below" +msgstr "Omschrijf onderstaande kwestie" + +#: html/Admin/Elements/AddCustomFieldValue:27 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyQueue:36 html/Admin/Elements/ModifyTemplate:36 html/Admin/Groups/Modify.html:49 html/Admin/Queues/Modify.html:48 html/Elements/SelectGroups:27 html/User/Groups/Modify.html:49 +msgid "Description" +msgstr "Omschrijving" + +#: html/SelfService/Elements/MyRequests:44 +msgid "Details" +msgstr "Details" + +#: html/Ticket/Elements/Tabs:85 +msgid "Display" +msgstr "Toon" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Display Access Control List" +msgstr "Toon Toegangs Controle Lijst" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Display Scrip templates for this queue" +msgstr "Toon Scrip sjablonen voor deze rij" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Display Scrips for this queue" +msgstr "Toon Scrips voor deze rij" + +#: html/Ticket/Elements/ShowHistory:35 +msgid "Display mode" +msgstr "Toon modus" + +#: html/SelfService/Display.html:25 html/SelfService/Display.html:29 +#. ($Ticket->id) +msgid "Display ticket #%1" +msgstr "Toon ticket #%1" + +#: lib/RT/System.pm:54 +msgid "Do anything and everything" +msgstr "Doe iets en alles" + +#: html/Elements/Refresh:30 +msgid "Don't refresh this page." +msgstr "Ververs deze pagina niet" + +#: html/Search/Elements/PickRestriction:114 +msgid "Don't show search results" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "Download" +msgstr "Download" + +#: html/Elements/SelectDateType:32 html/Ticket/Create.html:167 html/Ticket/Elements/EditDates:45 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1171 +msgid "Due" +msgstr "Verwacht" + +#: NOT FOUND IN SOURCE +msgid "Due date '%1' could not be parsed" +msgstr "Verwachte datum '%1' kon niet ontleed worden" + +#: bin/rt-commit-handler:754 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "FOUT: Kon ticket '%1' niet laden: %2.\\n" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "Wijzig" + +#: NOT FOUND IN SOURCE +msgid "Edit Conditions" +msgstr "" + +#: html/Admin/Queues/CustomFields.html:45 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "Wijzig Specifieke Velden voor %1" + +#: html/Ticket/ModifyLinks.html:36 +msgid "Edit Relationships" +msgstr "Wijzig Relaties" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit keywords" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "" + +#: html/Admin/Global/index.html:46 +msgid "Edit system templates" +msgstr "Wijzig systeem sjablonen" + +#: NOT FOUND IN SOURCE +msgid "Edit templates for %1" +msgstr "Wijzig sjablonen voor %1" + +#: html/Admin/Elements/ModifyQueue:25 html/Admin/Queues/Modify.html:117 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "Bezig met wijzigen van de configuratie voor rij %1" + +#: html/Admin/Elements/ModifyUser:25 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "Bezit met het wijzigen van de configuratie voor gebruiker %1" + +#: html/Admin/Elements/EditCustomField:74 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "Bezit met het wijzigen van SpecifiekVeld %1" + +#: html/Admin/Groups/Members.html:32 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "Bezit met het wijzigen van lidmaatschap voor groep %1" + +#: html/User/Groups/Members.html:129 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "Bezit met het wijzigen van lidmaatschap voor persoonlijke groep %1" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "Bezit met het wijzigen van sjabloon %1" + +#: lib/RT/Ticket_Overlay.pm:2615 lib/RT/Ticket_Overlay.pm:2683 +msgid "Either base or target must be specified" +msgstr "Of basis of doel moeten gespecificeerd zijn" + +#: html/Admin/Users/Modify.html:53 html/Admin/Users/Prefs.html:46 html/Elements/SelectUsers:27 html/Ticket/Elements/AddWatchers:56 html/User/Prefs.html:42 +msgid "Email" +msgstr "E-mail" + +#: lib/RT/User_Overlay.pm:188 +msgid "Email address in use" +msgstr "E-mailadres in gebruik" + +#: html/Admin/Elements/ModifyUser:42 +msgid "EmailAddress" +msgstr "E-mailAdres" + +#: html/Admin/Elements/ModifyUser:54 +msgid "EmailEncoding" +msgstr "E-mailCodering" + +#: html/Admin/Elements/EditCustomField:36 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "" + +#: html/Admin/Groups/Modify.html:53 html/User/Groups/Modify.html:53 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "" + +#: html/Admin/Queues/Modify.html:84 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "Actief (Het uitvinken van dit hokje zal deze rij deactiveren)" + +#: html/Admin/Elements/EditCustomFields:99 +msgid "Enabled Custom Fields" +msgstr "" + +#: html/Admin/Queues/index.html:56 +msgid "Enabled Queues" +msgstr "Actieve Rijen" + +#: html/Admin/Elements/EditCustomField:90 html/Admin/Groups/Modify.html:117 html/Admin/Queues/Modify.html:138 html/Admin/Users/Modify.html:283 html/User/Groups/Modify.html:117 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "Actieve status %1" + +#: lib/RT/CustomField_Overlay.pm:361 +msgid "Enter multiple values" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:358 +msgid "Enter one value" +msgstr "" + +#: html/Ticket/Elements/EditLinks:112 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "Vul tickets of URIs in om deze tickets aan te koppelen. Scheidt meerdere elementen met spaties." + +#: html/Elements/Login:29 html/SelfService/Error.html:25 html/SelfService/Error.html:26 +msgid "Error" +msgstr "Fout" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "Fout in paramaters naar Queue->AddWatcher" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "Fout in paramaters naar Queue->DelWatcher" + +#: lib/RT/Ticket_Overlay.pm:1356 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "Fout in paramaters naar Ticket->AddWatcher" + +#: lib/RT/Ticket_Overlay.pm:1532 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "Fout in paramaters naar Ticket->DelWatcher" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "Iedereen" + +#: bin/rt-crontool:194 +msgid "Example:" +msgstr "Voorbeeld:" + +#: html/Admin/Elements/ModifyUser:64 +msgid "ExternalAuthId" +msgstr "ExternAuteurId" + +#: html/Admin/Elements/ModifyUser:58 +msgid "ExternalContactInfoId" +msgstr "ExternContactInfoId" + +#: html/Admin/Users/Modify.html:73 +msgid "Extra info" +msgstr "Extra informatie" + +#: lib/RT/User_Overlay.pm:302 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "Kon de gebruikers pseudogroep 'Privileged' niet vinden." + +#: lib/RT/User_Overlay.pm:309 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "Kon de gebruikers pseudogroep 'Unprivileged' niet vinden." + +#: bin/rt-crontool:138 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "Kon module %1 niet laden. (%2)" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "feb." + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:59 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "Uiteindelijke Prioriteit" + +#: lib/RT/Ticket_Overlay.pm:1162 +msgid "FinalPriority" +msgstr "UiteindelijkePrioriteit" + +#: html/Admin/Queues/People.html:61 html/Ticket/Elements/EditPeople:34 +msgid "Find group whose" +msgstr "" + +#: html/Elements/Quicksearch:25 +msgid "Find new/open tickets" +msgstr "Zoek nieuwe/open tickets" + +#: html/Admin/Queues/People.html:57 html/Admin/Users/index.html:46 html/Ticket/Elements/EditPeople:30 +msgid "Find people whose" +msgstr "Zoek mensen wier" + +#: html/Search/Listing.html:108 +msgid "Find tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "Beëindig Goedkeuring" + +#: html/Ticket/Elements/Tabs:58 +msgid "First" +msgstr "Eerste" + +#: html/Search/Listing.html:41 +msgid "First page" +msgstr "Eerste pagina" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "Aap Noot Mies" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "Aap!" + +#: html/Search/Bulk.html:87 +msgid "Force change" +msgstr "" + +#: html/Search/Listing.html:106 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "" + +#: lib/RT/Interface/Web.pm:868 +msgid "Found Object" +msgstr "Gevonden Object" + +#: html/Admin/Elements/ModifyUser:44 +msgid "FreeformContactInfo" +msgstr "VrijevormContactInfo" + +#: lib/RT/CustomField_Overlay.pm:38 +msgid "FreeformMultiple" +msgstr "VrijevormMeerdere" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformSingle" +msgstr "" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "Vr." + +#: html/Ticket/Elements/ShowHistory:41 html/Ticket/Elements/ShowHistory:51 +msgid "Full headers" +msgstr "Volledige Kop" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "Bezig met het ophalen van de huidige gebruiker middels een pgp handtekening" + +#: lib/RT/Transaction_Overlay.pm:595 +#. ($New->Name) +msgid "Given to %1" +msgstr "Aan %1 gegeven" + +#: html/Admin/Elements/Tabs:41 html/Admin/index.html:38 +msgid "Global" +msgstr "Globaal" + +#: NOT FOUND IN SOURCE +msgid "Global Keyword Selections" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "" + +#: html/Admin/Elements/SelectTemplate:38 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "Globaal sjabloon: %1" + +#: html/Admin/Elements/EditCustomFields:75 html/Admin/Queues/People.html:59 html/Admin/Queues/People.html:63 html/Admin/Queues/index.html:44 html/Admin/Users/index.html:49 html/Ticket/Elements/EditPeople:32 html/Ticket/Elements/EditPeople:36 html/index.html:41 +msgid "Go!" +msgstr "Ga!" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "Goede pgp handtekening van %1\\n" + +#: html/Search/Listing.html:50 +msgid "Goto page" +msgstr "Ga naar pagina" + +#: html/Elements/GotoTicket:25 html/SelfService/Elements/GotoTicket:25 +msgid "Goto ticket" +msgstr "Ga naar ticket" + +#: NOT FOUND IN SOURCE +msgid "Grand" +msgstr "" + +#: html/Ticket/Elements/AddWatchers:46 html/User/Elements/DelegateRights:78 +msgid "Group" +msgstr "Groep" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "Groep %1 %2: %3" + +#: html/Admin/Elements/GroupTabs:45 html/Admin/Elements/QueueTabs:57 html/Admin/Elements/SystemTabs:44 html/Admin/Global/index.html:55 +msgid "Group Rights" +msgstr "Groeps rechten" + +#: lib/RT/Group_Overlay.pm:965 +msgid "Group already has member" +msgstr "Groep heeft al een lid" + +#: NOT FOUND IN SOURCE +msgid "Group could not be created." +msgstr "" + +#: html/Admin/Groups/Modify.html:77 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "Groep kon niet gecreërd worden: %1" + +#: lib/RT/Group_Overlay.pm:497 +msgid "Group created" +msgstr "Groep gecreërd" + +#: lib/RT/Group_Overlay.pm:1133 +msgid "Group has no such member" +msgstr "Groep heeft geen lid onder die naam" + +#: lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1429 lib/RT/Ticket_Overlay.pm:1507 +msgid "Group not found" +msgstr "Groep niet gevonden" + +#: NOT FOUND IN SOURCE +msgid "Group not found.\\n" +msgstr "Groep niet gevonden.\\n" + +#: NOT FOUND IN SOURCE +msgid "Group not specified.\\n" +msgstr "Groep niet gespecificeerd.\\n" + +#: html/Admin/Elements/SelectNewGroupMembers:35 html/Admin/Elements/Tabs:35 html/Admin/Groups/Members.html:64 html/Admin/Queues/People.html:83 html/Admin/index.html:32 html/User/Groups/Members.html:67 +msgid "Groups" +msgstr "Groepen" + +#: lib/RT/Group_Overlay.pm:971 +msgid "Groups can't be members of their members" +msgstr "Groepen kunnen geen leden zijn van hun leden" + +#: lib/RT/Interface/CLI.pm:73 lib/RT/Interface/CLI.pm:73 +msgid "Hello!" +msgstr "Hallo!" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "Hallo, %1" + +#: html/Ticket/Elements/ShowHistory:30 html/Ticket/Elements/Tabs:88 +msgid "History" +msgstr "Geschiedenis" + +#: html/Admin/Elements/ModifyUser:68 +msgid "HomePhone" +msgstr "ThuisNummer" + +#: html/Elements/Tabs:46 +msgid "Homepage" +msgstr "Homepage" + +#: lib/RT/Base.pm:74 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "I have [quant,_1,concrete mixer]." +msgstr "" + +#: html/Ticket/Elements/ShowBasics:27 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "Id" + +#: html/Admin/Users/Modify.html:44 html/User/Prefs.html:39 +msgid "Identity" +msgstr "Identiteit" + +#: etc/upgrade/2.1.71:86 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "Als een goedkeuring afgewezen is, wijs het origineel af en verwijder hangende goedkeuringen" + +#: bin/rt-crontool:190 +msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." +msgstr "Als dit gereedschap setgid zou zijn, zou een kwaadwillende lokale gebruiker dit gereedschap kunnen gebruiken om administratieve toegang te verkrijgen tot RT" + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "If you've updated anything above, be sure to" +msgstr "Als u een van de bovenstaande elemented ververst heeft, zorg dan dat u" + +#: lib/RT/Interface/Web.pm:860 +msgid "Illegal value for %1" +msgstr "Illegale waarde voor %1" + +#: lib/RT/Interface/Web.pm:863 +msgid "Immutable field" +msgstr "Niet-wijzigbaar veld" + +#: html/Admin/Elements/EditCustomFields:74 +msgid "Include disabled custom fields in listing." +msgstr "" + +#: html/Admin/Queues/index.html:43 +msgid "Include disabled queues in listing." +msgstr "Neem inactieve rijen op in de weergave" + +#: html/Admin/Users/index.html:47 +msgid "Include disabled users in search." +msgstr "Neem inactieve gebruiker op in de zoek opdracht" + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "Initiële Prioriteit" + +#: lib/RT/Ticket_Overlay.pm:1161 lib/RT/Ticket_Overlay.pm:1163 +msgid "InitialPriority" +msgstr "InitiëlePrioriteit" + +#: lib/RT/ScripAction_Overlay.pm:105 +msgid "Input error" +msgstr "Invoer fout" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3729 +msgid "Internal Error" +msgstr "Interne Fout" + +#: lib/RT/Record.pm:143 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "Interne Fout: %1" + +#: lib/RT/Group_Overlay.pm:644 +msgid "Invalid Group Type" +msgstr "Ongeldig Groep Type" + +#: lib/RT/Principal_Overlay.pm:128 +msgid "Invalid Right" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "Ongeldig Type" + +#: lib/RT/Interface/Web.pm:865 +msgid "Invalid data" +msgstr "Ongeldige data" + +#: lib/RT/Ticket_Overlay.pm:438 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "Ongeldige eigenaar. Val terug op 'nobody'." + +#: lib/RT/Scrip_Overlay.pm:134 lib/RT/Template_Overlay.pm:251 +msgid "Invalid queue" +msgstr "Ongeldige rij" + +#: lib/RT/ACE_Overlay.pm:244 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:270 lib/RT/ACE_Overlay.pm:275 +msgid "Invalid right" +msgstr "Ongeldige recht" + +#: lib/RT/Record.pm:118 +#. ($key) +msgid "Invalid value for %1" +msgstr "Ongeldige waarde voor %1" + +#: lib/RT/Ticket_Overlay.pm:3367 +msgid "Invalid value for custom field" +msgstr "Ongeldige waarde voor specifiek veld" + +#: lib/RT/Ticket_Overlay.pm:345 +msgid "Invalid value for status" +msgstr "Ongeldige waarde voor status" + +#: bin/rt-crontool:191 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "Het is ontzettend belangrijk dat onbevoorrechtigde gebruikers geen toestemming hebben om dit gereedschap te gebruiken." + +#: bin/rt-crontool:192 +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 "We stellen voor dat u een onbevoorrechtigde unix gebruiker aanmaakt met het juiste groep lidmaatschap en RT toegang om dit gereedschap te gebruiken." + +#: bin/rt-crontool:163 +msgid "It takes several arguments:" +msgstr "Het accepteerd meerdere argumenten:" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "Zaken die wachten op mijn goedkeuring" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "jan." + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "januari" + +#: lib/RT/Group_Overlay.pm:149 +msgid "Join or leave this group" +msgstr "Sluit u aan of verlaat deze groep" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "jul." + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "" + +#: html/Ticket/Elements/Tabs:99 +msgid "Jumbo" +msgstr "Jumbo" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "jun." + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "Sleutelwoord" + +#: html/Admin/Elements/ModifyUser:52 +msgid "Lang" +msgstr "Taal" + +#: html/Ticket/Elements/Tabs:73 +msgid "Last" +msgstr "Laatste" + +#: html/Ticket/Elements/EditDates:38 html/Ticket/Elements/ShowDates:39 +msgid "Last Contact" +msgstr "Laatste Contact" + +#: html/Elements/SelectDateType:29 +msgid "Last Contacted" +msgstr "Laatst Gecontacteerd" + +#: html/Search/Elements/TicketHeader:41 +msgid "Last Notified" +msgstr "" + +#: html/Elements/SelectDateType:30 +msgid "Last Updated" +msgstr "Laatst Ververst" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "Over" + +#: html/Admin/Users/Modify.html:83 +msgid "Let this user access RT" +msgstr "Geef deze gebruiker toegang tot RT" + +#: html/Admin/Users/Modify.html:87 +msgid "Let this user be granted rights" +msgstr "Geef deze gebruiker rechten" + +#: NOT FOUND IN SOURCE +msgid "Limiting owner to %1 %2" +msgstr "Eigenaar wordt gelimieteerd tot %1 %2" + +#: NOT FOUND IN SOURCE +msgid "Limiting queue to %1 %2" +msgstr "Rij wordt gelimiteerd tot %1 %2" + +#: lib/RT/Ticket_Overlay.pm:2697 +msgid "Link already exists" +msgstr "Koppeling bestaat al" + +#: lib/RT/Ticket_Overlay.pm:2709 +msgid "Link could not be created" +msgstr "Koppeling kon niet gecreëerd worden" + +#: lib/RT/Ticket_Overlay.pm:2717 lib/RT/Ticket_Overlay.pm:2727 +#. ($TransString) +msgid "Link created (%1)" +msgstr "Koppeling gecreëerd (%1)" + +#: lib/RT/Ticket_Overlay.pm:2638 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "Koppelink verwijderd (%1)" + +#: lib/RT/Ticket_Overlay.pm:2644 +msgid "Link not found" +msgstr "Koppeling niet gevonden" + +#: html/Ticket/ModifyLinks.html:25 html/Ticket/ModifyLinks.html:29 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "Koppel ticket #%1" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "" + +#: html/Ticket/Elements/Tabs:97 +msgid "Links" +msgstr "Koppelingen" + +#: html/Admin/Users/Modify.html:114 html/User/Prefs.html:85 +msgid "Location" +msgstr "Locatie" + +#: lib/RT.pm:158 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "Log folder %1 niet gevonden of niet toegankelijk.\\n RT kan niet starten." + +#: html/Elements/Header:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "Aangemeld als %1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:25 html/Elements/Login:34 html/Elements/Login:45 +msgid "Login" +msgstr "Aanmelden" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "Afmelden" + +#: html/Search/Bulk.html:86 +msgid "Make Owner" +msgstr "Maak Eigenaar" + +#: html/Search/Bulk.html:102 +msgid "Make Status" +msgstr "Maak Status" + +#: html/Search/Bulk.html:109 +msgid "Make date Due" +msgstr "Maak verwachtingsdatum" + +#: html/Search/Bulk.html:110 +msgid "Make date Resolved" +msgstr "Make oplossingsdatum" + +#: html/Search/Bulk.html:107 +msgid "Make date Started" +msgstr "Maak startdatum" + +#: html/Search/Bulk.html:106 +msgid "Make date Starts" +msgstr "Maak datum gestart" + +#: html/Search/Bulk.html:108 +msgid "Make date Told" +msgstr "Maak datum gemeld" + +#: html/Search/Bulk.html:99 +msgid "Make priority" +msgstr "Maak prioriteit" + +#: html/Search/Bulk.html:100 +msgid "Make queue" +msgstr "Maak rij" + +#: html/Search/Bulk.html:98 +msgid "Make subject" +msgstr "Maak onderwerp" + +#: html/Admin/index.html:33 +msgid "Manage groups and group membership" +msgstr "Beheer groepen en groeplidmaatschap" + +#: html/Admin/index.html:39 +msgid "Manage properties and configuration which apply to all queues" +msgstr "Beheer eigenschappen en configuraties welke betrekking hebben op alle rijen" + +#: html/Admin/index.html:36 +msgid "Manage queues and queue-specific properties" +msgstr "Beheer rijen en rij-specifieke eigenschappen" + +#: html/Admin/index.html:30 +msgid "Manage users and passwords" +msgstr "Beheer gebruikers en wachtwoorden" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "maa." + +#: NOT FOUND IN SOURCE +msgid "March" +msgstr "maart" + +#: NOT FOUND IN SOURCE +msgid "May" +msgstr "mei" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "mei." + +#: lib/RT/Group_Overlay.pm:982 +msgid "Member added" +msgstr "Lid toegevoegd" + +#: lib/RT/Group_Overlay.pm:1140 +msgid "Member deleted" +msgstr "Lid verwijderd" + +#: lib/RT/Group_Overlay.pm:1144 +msgid "Member not deleted" +msgstr "Lid niet verwijderd" + +#: html/Elements/SelectLinkType:26 +msgid "Member of" +msgstr "Lid van" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "LidVan" + +#: html/Admin/Elements/GroupTabs:42 html/User/Elements/GroupTabs:42 +msgid "Members" +msgstr "Leden" + +#: lib/RT/Ticket_Overlay.pm:2843 +msgid "Merge Successful" +msgstr "Samenvoeging Succesvol" + +#: lib/RT/Ticket_Overlay.pm:2804 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "Samenvoeging mislukt. Kon EffectiefId niet instellen" + +#: html/Ticket/Elements/EditLinks:115 +msgid "Merge into" +msgstr "Voeg samen in" + +#: html/Ticket/Update.html:102 +msgid "Message" +msgstr "Bericht" + +#: lib/RT/Interface/Web.pm:867 +msgid "Missing a primary key?: %1" +msgstr "Mist primaire sleutel?: %1" + +#: html/Admin/Users/Modify.html:169 html/User/Prefs.html:54 +msgid "Mobile" +msgstr "Mobiel" + +#: html/Admin/Elements/ModifyUser:72 +msgid "MobilePhone" +msgstr "MobieleTelefoon" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify Access Control List" +msgstr "Wijzig Toegangs Controle Lijst" + +#: NOT FOUND IN SOURCE +msgid "Modify Custom Field %1" +msgstr "Wijzig Specifiek Veld %1" + +#: html/Admin/Global/CustomFields.html:44 html/Admin/Global/index.html:51 +msgid "Modify Custom Fields which apply to all queues" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "Modify Scrip templates for this queue" +msgstr "Wijzit Scrip sjabloon voor deze rij" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "Modify Scrips for this queue" +msgstr "Wijzig Scrips voor deze rij" + +#: NOT FOUND IN SOURCE +msgid "Modify System ACLS" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Modify Template %1" +msgstr "Wijzig Sjabloon %1" + +#: html/Admin/Queues/CustomField.html:45 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "" + +#: html/Admin/Global/CustomField.html:53 +msgid "Modify a CustomField which applies to all queues" +msgstr "" + +#: html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "Wijzig een scrip voor deze rij %1" + +#: html/Admin/Global/Scrip.html:48 +msgid "Modify a scrip which applies to all queues" +msgstr "Wijzig een scrip welke betrekking heeft op alle rijen" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "Wijzig data voor # %1" + +#: html/Ticket/ModifyDates.html:25 html/Ticket/ModifyDates.html:29 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "Wijzig data voor #%1" + +#: html/Ticket/ModifyDates.html:35 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "Wijzig data voor ticket # %1" + +#: html/Admin/Global/GroupRights.html:25 html/Admin/Global/GroupRights.html:28 html/Admin/Global/index.html:56 +msgid "Modify global group rights" +msgstr "Wijzig globale groepsrechten" + +#: html/Admin/Global/GroupRights.html:33 +msgid "Modify global group rights." +msgstr "Wijzig globale groepsrechten" + +#: 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:25 html/Admin/Global/UserRights.html:28 html/Admin/Global/index.html:60 +msgid "Modify global user rights" +msgstr "" + +#: html/Admin/Global/UserRights.html:33 +msgid "Modify global user rights." +msgstr "Wijzig globale gebruikersrechten" + +#: lib/RT/Group_Overlay.pm:146 +msgid "Modify group metadata or delete group" +msgstr "Wijzig groepsmetadata of verwijder groep" + +#: html/Admin/Groups/GroupRights.html:25 html/Admin/Groups/GroupRights.html:29 html/Admin/Groups/GroupRights.html:35 +#. ($GroupObj->Name) +msgid "Modify group rights for group %1" +msgstr "Wijzig groepsrechten voor groep %1" + +#: html/Admin/Queues/GroupRights.html:25 html/Admin/Queues/GroupRights.html:29 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "Wijzig groepsrechten voor rij %1" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Modify membership roster for this group" +msgstr "Wijzig lidmaatschap rooster voor dze groep" + +#: lib/RT/System.pm:61 +msgid "Modify one's own RT account" +msgstr "Wijzig uw eigen RT " + +#: html/Admin/Queues/People.html:25 html/Admin/Queues/People.html:29 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "Wijzig mensen gekoppeld aan rij %1" + +#: html/Ticket/ModifyPeople.html:25 html/Ticket/ModifyPeople.html:29 html/Ticket/ModifyPeople.html:35 +#. ($Ticket->id) +#. ($Ticket->Id) +msgid "Modify people related to ticket #%1" +msgstr "Wijzig mensen gekoppeld aan ticket #%1" + +#: html/Admin/Queues/Scrips.html:44 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "Wijzig scrips voor rij %1" + +#: html/Admin/Global/Scrips.html:44 html/Admin/Global/index.html:42 +msgid "Modify scrips which apply to all queues" +msgstr "Wijzig scrips welke betrekking hebben op alle rijen" + +#: html/Admin/Global/Template.html:25 html/Admin/Global/Template.html:30 html/Admin/Global/Template.html:81 html/Admin/Queues/Template.html:78 +#. (loc($TemplateObj->Name())) +#. ($TemplateObj->id) +msgid "Modify template %1" +msgstr "Wijzig sjabloon %1" + +#: html/Admin/Global/Templates.html:44 +msgid "Modify templates which apply to all queues" +msgstr "" + +#: html/Admin/Groups/Modify.html:87 html/User/Groups/Modify.html:86 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "Wijzig de groep %1" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Modify the queue watchers" +msgstr "Wijzig de toeschouwers van de rij" + +#: html/Admin/Users/Modify.html:236 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "Wijzig de gebruiker %1" + +#: html/Ticket/ModifyAll.html:37 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "Wijzig ticket # %1" + +#: html/Ticket/Modify.html:25 html/Ticket/Modify.html:28 html/Ticket/Modify.html:34 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "Wijzig ticket #%1" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Modify tickets" +msgstr "Wijzig tickets" + +#: html/Admin/Groups/UserRights.html:25 html/Admin/Groups/UserRights.html:29 html/Admin/Groups/UserRights.html:35 +#. ($GroupObj->Name) +msgid "Modify user rights for group %1" +msgstr "Wijzig gebruikersrechten voor groep %1" + +#: html/Admin/Queues/UserRights.html:25 html/Admin/Queues/UserRights.html:29 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "Wijzig gebruikersrechten voor rij %1" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "Wijzig toeschouwers voor rij '%1'" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyACL" +msgstr "WijzigACL" + +#: lib/RT/Group_Overlay.pm:149 +msgid "ModifyOwnMembership" +msgstr "WijzigEigenLidmaatschap" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "ModifyQueueWatchers" +msgstr "WijzigRijToeschouwers" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "ModifyScrips" +msgstr "WijzigScrips" + +#: lib/RT/System.pm:61 +msgid "ModifySelf" +msgstr "WijzigZelf" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "ModifyTemplate" +msgstr "WijzigSjabloon" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "ModifyTicket" +msgstr "WijzigTicket" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "Ma." + +#: html/Ticket/Elements/ShowRequestor:42 +#. ($name) +msgid "More about %1" +msgstr "Meer over %1" + +#: html/Admin/Elements/EditCustomFields:61 +msgid "Move down" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:53 +msgid "Move up" +msgstr "" + +#: html/Admin/Elements/SelectSingleOrMultiple:27 +msgid "Multiple" +msgstr "Meerdere" + +#: lib/RT/User_Overlay.pm:179 +msgid "Must specify 'Name' attribute" +msgstr "Specificeren van 'Naam' attribuut verplicht" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "Mijn Goedkeuringen" + +#: html/Approvals/index.html:25 html/Approvals/index.html:26 +msgid "My approvals" +msgstr "" + +#: html/Admin/Elements/AddCustomFieldValue:26 html/Admin/Elements/EditCustomField:32 html/Admin/Elements/ModifyTemplate:28 html/Admin/Elements/ModifyUser:30 html/Admin/Groups/Modify.html:44 html/Elements/SelectGroups:26 html/Elements/SelectUsers:28 html/User/Groups/Modify.html:44 +msgid "Name" +msgstr "Naam" + +#: lib/RT/User_Overlay.pm:186 +msgid "Name in use" +msgstr "Naam in gebruik" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "Goedkeuring benodigd van de systeem beheerder" + +#: html/Ticket/Elements/ShowDates:52 +msgid "Never" +msgstr "Nooit" + +#: html/Elements/Quicksearch:30 +msgid "New" +msgstr "Nieuw" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:93 html/User/Prefs.html:65 +msgid "New Password" +msgstr "Nieuw Wachtwoord" + +#: etc/initialdata:311 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "Nieuwe Hangende Goedkeuring" + +#: html/Ticket/Elements/EditLinks:111 +msgid "New Relationships" +msgstr "Nieuwe Relaties" + +#: html/Ticket/Elements/Tabs:36 +msgid "New Search" +msgstr "" + +#: html/Admin/Global/CustomField.html:41 html/Admin/Global/CustomFields.html:39 html/Admin/Queues/CustomField.html:52 html/Admin/Queues/CustomFields.html:40 +msgid "New custom field" +msgstr "" + +#: html/Admin/Elements/GroupTabs:54 html/User/Elements/GroupTabs:52 +msgid "New group" +msgstr "" + +#: html/SelfService/Prefs.html:32 +msgid "New password" +msgstr "Nieuw wachtwoord" + +#: lib/RT/User_Overlay.pm:639 +msgid "New password notification sent" +msgstr "Bericht voor nieuw wachtwoord verzonden" + +#: html/Admin/Elements/QueueTabs:70 +msgid "New queue" +msgstr "" + +#: html/SelfService/Elements/Tabs:63 +msgid "New request" +msgstr "Nieuw verzoek" + +#: html/Admin/Elements/SelectRights:42 +msgid "New rights" +msgstr "Nieuwe rechten" + +#: html/Admin/Global/Scrip.html:40 html/Admin/Global/Scrips.html:39 html/Admin/Queues/Scrip.html:43 html/Admin/Queues/Scrips.html:53 +msgid "New scrip" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "Nieuwe zoekopdracht" + +#: html/Admin/Global/Template.html:60 html/Admin/Global/Templates.html:39 html/Admin/Queues/Template.html:58 html/Admin/Queues/Templates.html:46 +msgid "New template" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2771 +msgid "New ticket doesn't exist" +msgstr "Nieuw ticket bestaat niet" + +#: html/Admin/Elements/UserTabs:52 +msgid "New user" +msgstr "" + +#: html/Admin/Elements/CreateUserCalled:26 +msgid "New user called" +msgstr "Nieuwe gebruiker genaamd" + +#: html/Admin/Queues/People.html:55 html/Ticket/Elements/EditPeople:29 +msgid "New watchers" +msgstr "Nieuwe toeschouwers" + +#: html/Admin/Users/Prefs.html:42 +msgid "New window setting" +msgstr "Nieuwe venster instelling" + +#: html/Ticket/Elements/Tabs:69 +msgid "Next" +msgstr "Volgende" + +#: html/Search/Listing.html:48 +msgid "Next page" +msgstr "Volgende pagina" + +#: html/Admin/Elements/ModifyUser:50 +msgid "NickName" +msgstr "Bijnaam" + +#: html/Admin/Users/Modify.html:63 html/User/Prefs.html:46 +msgid "Nickname" +msgstr "Bijnaam" + +#: html/Admin/Elements/EditCustomField:73 html/Admin/Elements/EditCustomFields:105 +msgid "No CustomField" +msgstr "Geen SpecifiekVeld" + +#: html/Admin/Groups/GroupRights.html:84 html/Admin/Groups/UserRights.html:71 +msgid "No Group defined" +msgstr "Geen Groep gedefinieerd" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:68 +msgid "No Queue defined" +msgstr "Geen Rij gedefinieerd" + +#: bin/rt-crontool:56 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "Geen RT gebruiker gevonden. Raadpleeg uw RT beheerder.\\n" + +#: html/Admin/Global/Template.html:79 html/Admin/Queues/Template.html:76 +msgid "No Template" +msgstr "Geen Sjabloon" + +#: bin/rt-commit-handler:764 +msgid "No Ticket specified. Aborting ticket " +msgstr "Geen ticket gespecificeerd. Ticket afgebroken " + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "Geen ticket gespecificeerd. Ticket wijzigingen afgebroken\\n\\n" + +#: html/Approvals/Elements/Approve:47 +msgid "No action" +msgstr "Geen actie" + +#: lib/RT/Interface/Web.pm:862 +msgid "No column specified" +msgstr "Geen kolom gespecificeerd" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "Geen commando gevonden\\n" + +#: html/Elements/ViewUser:36 html/Ticket/Elements/ShowRequestor:45 +msgid "No comment entered about this user" +msgstr "Geen commentaar ingevuld over deze gebruiker" + +#: lib/RT/Ticket_Overlay.pm:2189 lib/RT/Ticket_Overlay.pm:2257 +msgid "No correspondence attached" +msgstr "Geen correspondentie aangehecht" + +#: lib/RT/Action/Generic.pm:150 lib/RT/Condition/Generic.pm:176 lib/RT/Search/ActiveTicketsInQueue.pm:56 lib/RT/Search/Generic.pm:113 +#. (ref $self) +msgid "No description for %1" +msgstr "Geen omschrijving voor %1" + +#: lib/RT/Users_Overlay.pm:151 +msgid "No group specified" +msgstr "Geen groep gespecificeerd" + +#: lib/RT/User_Overlay.pm:857 +msgid "No password set" +msgstr "Geen wachtwoord ingesteld" + +#: lib/RT/Queue_Overlay.pm:259 +msgid "No permission to create queues" +msgstr "Geen rechten om rijen te creëren" + +#: lib/RT/Ticket_Overlay.pm:341 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "Geen rechten om tickets te creëren in de rij '%1'" + +#: lib/RT/User_Overlay.pm:151 +msgid "No permission to create users" +msgstr "Geen rechten om gebruikers te creëren" + +#: html/SelfService/Display.html:174 +msgid "No permission to display that ticket" +msgstr "Geen rechten om dat ticket te tonen" + +#: html/SelfService/Update.html:55 +msgid "No permission to view update ticket" +msgstr "Geen rechten om verversing ticket te bekijken" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1488 +msgid "No principal specified" +msgstr "Geen hoofd gespecificeerd" + +#: html/Admin/Queues/People.html:154 html/Admin/Queues/People.html:164 +msgid "No principals selected." +msgstr "Geen hoofden geselecteerd" + +#: html/Admin/Queues/index.html:35 +msgid "No queues matching search criteria found." +msgstr "Geen rijen gevonden die aan de zoekcriteria voldoen" + +#: html/Admin/Elements/SelectRights:81 +msgid "No rights found" +msgstr "" + +#: html/Admin/Elements/SelectRights:33 +msgid "No rights granted." +msgstr "Geen rechten toegekend" + +#: html/Search/Bulk.html:149 +msgid "No search to operate on." +msgstr "Geen zoek opdracht om uit te voeren." + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "Geen ticket id gespecificeerd" + +#: lib/RT/Transaction_Overlay.pm:480 lib/RT/Transaction_Overlay.pm:518 +msgid "No transaction type specified" +msgstr "Geen transactie type gespecificeerd" + +#: NOT FOUND IN SOURCE +msgid "No user or email address specified" +msgstr "Geen gebruiker of email-adres gespecificeerd" + +#: html/Admin/Users/index.html:36 +msgid "No users matching search criteria found." +msgstr "Geen gebruikers gevonden die aan de zoekcriteria voldoen" + +#: bin/rt-commit-handler:644 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "Geen geldige RT gebruiker gevonden. RT cvs behandelaar losgemaakt. Neemt u alstublieft contact op met uw RT beheerder.\\n" + +#: lib/RT/Interface/Web.pm:859 +msgid "No value sent to _Set!\\n" +msgstr "Geen waarde gestuurd naar _Set!\\n" + +#: html/Search/Elements/TicketRow:37 +msgid "Nobody" +msgstr "" + +#: lib/RT/Interface/Web.pm:864 +msgid "Nonexistant field?" +msgstr "Nietbestaand veld?" + +#: html/Elements/Login:99 +msgid "Not logged in" +msgstr "" + +#: html/Elements/Header:59 html/SelfService/Elements/Header:58 +msgid "Not logged in." +msgstr "Niet aangemeld." + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "Niet gezet" + +#: html/NoAuth/Reminder.html:27 +msgid "Not yet implemented." +msgstr "Nog niet geïmplementeerd." + +#: html/Admin/Groups/Rights.html:25 +msgid "Not yet implemented...." +msgstr "Nog niet geïmplementeerd...." + +#: html/Approvals/Elements/Approve:50 +msgid "Notes" +msgstr "Notities" + +#: lib/RT/User_Overlay.pm:642 +msgid "Notification could not be sent" +msgstr "Bericht kon niet verstuurd worden" + +#: etc/initialdata:94 +msgid "Notify AdminCcs" +msgstr "Bericht AdminCcs" + +#: etc/initialdata:90 +msgid "Notify AdminCcs as Comment" +msgstr "Bericht AdminCcs als Commentaar" + +#: etc/initialdata:121 +msgid "Notify Other Recipients" +msgstr "Bericht Andere Ontvangers" + +#: etc/initialdata:117 +msgid "Notify Other Recipients as Comment" +msgstr "Bericht Andere Ontvangers als Commentaar" + +#: etc/initialdata:86 +msgid "Notify Owner" +msgstr "Bericht Eigenaar" + +#: etc/initialdata:82 +msgid "Notify Owner as Comment" +msgstr "Bericht Eigenaar als Commentaar" + +#: etc/initialdata:313 etc/upgrade/2.1.71:17 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "Bericht Eigenaars en AdminCcs van nieuwe zaken welke hangende hun goedkeuring zijn" + +#: etc/initialdata:78 +msgid "Notify Requestors" +msgstr "Bericht Aanvragers" + +#: etc/initialdata:104 +msgid "Notify Requestors and Ccs" +msgstr "Bericht Aanvragers en Ccs" + +#: etc/initialdata:99 +msgid "Notify Requestors and Ccs as Comment" +msgstr "Bericht Aanvragers en Ccs als Commentaar" + +#: etc/initialdata:113 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "Bericht Aanvragers, Ccs en AdminCcs" + +#: etc/initialdata:109 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "Bericht Aanvragers, Ccs en AdminCcs als Commentaar" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "nov." + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "" + +#: lib/RT/Record.pm:157 +msgid "Object could not be created" +msgstr "Object kon niet gecreëerd worden" + +#: lib/RT/Record.pm:176 +msgid "Object created" +msgstr "Object gecreëerd" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "oct." + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "" + +#: html/Elements/SelectDateRelation:35 +msgid "On" +msgstr "Bij" + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "Bij Commentaar" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "Bij Overeenkomst" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "Bij Creatie" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "Bij Eigenaarwijziging" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "Bij Rijwijziging" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "Bij Oplossing" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "Bij Statuswijziging" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "Bij Transactie" + +#: html/Approvals/Elements/PendingMyApproval:50 +#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") +msgid "Only show approvals for requests created after %1" +msgstr "Toon alleen goedkeuringen voor verzoeken gecreëerd na %1" + +#: html/Approvals/Elements/PendingMyApproval:48 +#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") +msgid "Only show approvals for requests created before %1" +msgstr "Toon alleen goedkeuringen voor verzoeken gecreëerd voor %1" + +#: html/Elements/Quicksearch:31 +msgid "Open" +msgstr "Open" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "Open" + +#: html/SelfService/Elements/Tabs:57 +msgid "Open requests" +msgstr "Open verzoeken" + +#: html/Admin/Users/Prefs.html:41 +msgid "Open tickets (from listing) in a new window" +msgstr "Open tickets (van lijst) in een nieuw venster" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in another window" +msgstr "Open tickets (van lijst) in een ander venster" + +#: etc/initialdata:133 +msgid "Open tickets on correspondence" +msgstr "" + +#: html/Search/Elements/PickRestriction:101 +msgid "Ordering and sorting" +msgstr "Ordening en sortering" + +#: html/Admin/Elements/ModifyUser:46 html/Admin/Users/Modify.html:117 html/Elements/SelectUsers:29 html/User/Prefs.html:86 +msgid "Organization" +msgstr "Organisatie" + +#: html/Approvals/Elements/Approve:34 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "Voortgekomen uit ticket: #%1" + +#: html/Admin/Elements/ModifyQueue:55 html/Admin/Queues/Modify.html:69 +msgid "Over time, priority moves toward" +msgstr "Naar mate de tijd vordert, verschuift de prioriteit richting" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Own tickets" +msgstr "Eigen tickets" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "OwnTicket" +msgstr "EigenTicket" + +#: etc/initialdata:38 html/Elements/MyRequests:32 html/SelfService/Elements/MyRequests:30 html/Ticket/Create.html:48 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/EditPeople:44 html/Ticket/Elements/ShowPeople:27 html/Ticket/Update.html:63 lib/RT/ACE_Overlay.pm:86 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "Eigenaar" + +#: lib/RT/Ticket_Overlay.pm:3004 +#. ($OldOwnerObj->Name, $NewOwnerObj->Name) +msgid "Owner changed from %1 to %2" +msgstr "Eigenaar veranderd van %1 naar %2" + +#: lib/RT/Transaction_Overlay.pm:584 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "Eigenaar gedwongen veranderd van %1 naar %2" + +#: html/Search/Elements/PickRestriction:31 +msgid "Owner is" +msgstr "Eigenaar is" + +#: html/Admin/Users/Modify.html:174 html/User/Prefs.html:56 +msgid "Pager" +msgstr "Pieper" + +#: html/Admin/Elements/ModifyUser:74 +msgid "PagerPhone" +msgstr "Pieper" + +#: NOT FOUND IN SOURCE +msgid "Parent" +msgstr "" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/EditLinks:127 html/Ticket/Elements/EditLinks:58 html/Ticket/Elements/ShowLinks:43 +msgid "Parents" +msgstr "Ouders" + +#: html/Elements/Login:43 html/User/Prefs.html:61 +msgid "Password" +msgstr "Wachtwoord" + +#: html/NoAuth/Reminder.html:25 +msgid "Password Reminder" +msgstr "Wachtwoord Herinerring" + +#: lib/RT/User_Overlay.pm:168 lib/RT/User_Overlay.pm:860 +msgid "Password too short" +msgstr "Wachtwoord te kort" + +#: html/Admin/Users/Modify.html:291 html/User/Prefs.html:172 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "Wachtwoord: %1" + +#: html/Ticket/Elements/ShowSummary:43 html/Ticket/Elements/Tabs:96 html/Ticket/ModifyAll.html:51 +msgid "People" +msgstr "Mensen" + +#: etc/initialdata:126 +msgid "Perform a user-defined action" +msgstr "Verricht een gebruiker gedefiniëerde actie" + +#: lib/RT/ACE_Overlay.pm:231 lib/RT/ACE_Overlay.pm:237 lib/RT/ACE_Overlay.pm:563 lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:583 lib/RT/ACE_Overlay.pm:648 lib/RT/CurrentUser.pm:83 lib/RT/CurrentUser.pm:92 lib/RT/CustomField_Overlay.pm:445 lib/RT/CustomField_Overlay.pm:451 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1099 lib/RT/Group_Overlay.pm:1108 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1163 lib/RT/Group_Overlay.pm:1169 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:904 lib/RT/Group_Overlay.pm:908 lib/RT/Group_Overlay.pm:921 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:126 lib/RT/Scrip_Overlay.pm:137 lib/RT/Scrip_Overlay.pm:197 lib/RT/Scrip_Overlay.pm:430 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:88 lib/RT/Template_Overlay.pm:94 lib/RT/Ticket_Overlay.pm:1341 lib/RT/Ticket_Overlay.pm:1351 lib/RT/Ticket_Overlay.pm:1365 lib/RT/Ticket_Overlay.pm:1518 lib/RT/Ticket_Overlay.pm:1527 lib/RT/Ticket_Overlay.pm:1540 lib/RT/Ticket_Overlay.pm:1875 lib/RT/Ticket_Overlay.pm:2013 lib/RT/Ticket_Overlay.pm:2177 lib/RT/Ticket_Overlay.pm:2244 lib/RT/Ticket_Overlay.pm:2596 lib/RT/Ticket_Overlay.pm:2668 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2777 lib/RT/Ticket_Overlay.pm:2910 lib/RT/Ticket_Overlay.pm:3139 lib/RT/Ticket_Overlay.pm:3337 lib/RT/Ticket_Overlay.pm:3499 lib/RT/Ticket_Overlay.pm:3551 lib/RT/Ticket_Overlay.pm:3716 lib/RT/Transaction_Overlay.pm:468 lib/RT/Transaction_Overlay.pm:475 lib/RT/Transaction_Overlay.pm:504 lib/RT/Transaction_Overlay.pm:511 lib/RT/User_Overlay.pm:1334 lib/RT/User_Overlay.pm:562 lib/RT/User_Overlay.pm:597 lib/RT/User_Overlay.pm:853 lib/RT/User_Overlay.pm:941 +msgid "Permission Denied" +msgstr "Toestemming Geweigerd" + +#: html/User/Elements/Tabs:35 +msgid "Personal Groups" +msgstr "" + +#: html/User/Groups/index.html:30 html/User/Groups/index.html:40 +msgid "Personal groups" +msgstr "Persoonlijke groepen" + +#: html/User/Elements/DelegateRights:37 +msgid "Personal groups:" +msgstr "Persoonlijke groepen:" + +#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:49 +msgid "Phone numbers" +msgstr "Telefoonnummers" + +#: html/Admin/Users/Rights.html:25 +msgid "Placeholder" +msgstr "Plaatshouder" + +#: NOT FOUND IN SOURCE +msgid "Pref" +msgstr "" + +#: html/Elements/Header:52 html/Elements/Tabs:55 html/SelfService/Prefs.html:25 html/User/Prefs.html:25 html/User/Prefs.html:28 +msgid "Preferences" +msgstr "Voorkeuren" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "Voorkeuren" + +#: lib/RT/Action/Generic.pm:160 +msgid "Prepare Stubbed" +msgstr "Bereid Plaatshouder Voor" + +#: html/Ticket/Elements/Tabs:61 +msgid "Prev" +msgstr "Vorige" + +#: html/Search/Listing.html:44 +msgid "Previous page" +msgstr "Vorige pagina" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "Pri" + +#: lib/RT/ACE_Overlay.pm:133 lib/RT/ACE_Overlay.pm:208 lib/RT/ACE_Overlay.pm:552 +#. ($args{'PrincipalId'}) +msgid "Principal %1 not found." +msgstr "Hoofd %1 niet gevonden." + +#: html/Search/Elements/PickRestriction:54 html/SelfService/Display.html:76 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:54 html/Ticket/Elements/ShowBasics:39 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "Prioriteit" + +#: html/Admin/Elements/ModifyQueue:51 html/Admin/Queues/Modify.html:65 +msgid "Priority starts at" +msgstr "Prioriteit begint bij" + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "Gerechtigd" + +#: html/Admin/Users/Modify.html:271 html/User/Prefs.html:163 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "Gerechtigde status: %1" + +#: html/Admin/Users/index.html:62 +msgid "Privileged users" +msgstr "Gerechtigde gebruikers" + +#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 +msgid "Pseudogroup for internal use" +msgstr "Pseudogroep voor intern gebruik" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Elements/Quicksearch:29 html/Search/Elements/PickRestriction:46 html/SelfService/Create.html:35 html/SelfService/Display.html:68 html/Ticket/Create.html:38 html/Ticket/Elements/EditBasics:64 html/Ticket/Elements/ShowBasics:43 html/User/Elements/DelegateRights:80 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "Rij" + +#: html/Admin/Queues/CustomField.html:42 html/Admin/Queues/Scrip.html:50 html/Admin/Queues/Scrips.html:46 html/Admin/Queues/Templates.html:43 +#. ($Queue) +#. ($id) +msgid "Queue %1 not found" +msgstr "Rij %1 niet gevonden" + +#: NOT FOUND IN SOURCE +msgid "Queue '%1' not found\\n" +msgstr "Rij '%1' niet gevonden\\n" + +#: NOT FOUND IN SOURCE +msgid "Queue Keyword Selections" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:31 html/Admin/Queues/Modify.html:43 +msgid "Queue Name" +msgstr "Rij Naam" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "Rij Scrips" + +#: lib/RT/Queue_Overlay.pm:263 +msgid "Queue already exists" +msgstr "Rij bestaat al" + +#: lib/RT/Queue_Overlay.pm:272 lib/RT/Queue_Overlay.pm:278 +msgid "Queue could not be created" +msgstr "Rij kon niet aangemaakt worden" + +#: html/Ticket/Create.html:209 +msgid "Queue could not be loaded." +msgstr "Rij kon niet geladen worden." + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:282 +msgid "Queue created" +msgstr "Rij aangemaakt" + +#: NOT FOUND IN SOURCE +msgid "Queue is not specified." +msgstr "Rij is niet gespecificeerd" + +#: html/SelfService/Display.html:129 +msgid "Queue not found" +msgstr "Rij niet gevonden" + +#: html/Admin/Elements/Tabs:38 html/Admin/index.html:35 +msgid "Queues" +msgstr "Rijen" + +#: html/Elements/Login:34 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "RT %1" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "RT %1 voor %2" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." +msgstr "RT %1 van <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 "" + +#: html/Admin/index.html:25 html/Admin/index.html:26 +msgid "RT Administration" +msgstr "RT Beheer" + +#: NOT FOUND IN SOURCE +msgid "RT Authentication error." +msgstr "RT Authenticatie fout" + +#: NOT FOUND IN SOURCE +msgid "RT Bounce: %1" +msgstr "RT Doorgestuurd: %1" + +#: NOT FOUND IN SOURCE +msgid "RT Configuration error" +msgstr "RT Configuratie fout" + +#: NOT FOUND IN SOURCE +msgid "RT Critical error. Message not recorded!" +msgstr "RT Kritieke fout: Bericht niet bewaard!" + +#: html/Elements/Error:41 html/SelfService/Error.html:41 +msgid "RT Error" +msgstr "RT Fout" + +#: NOT FOUND IN SOURCE +msgid "RT Received mail (%1) from itself." +msgstr "RT Ontving mail (%1) van zichzelf." + +#: NOT FOUND IN SOURCE +msgid "RT Recieved mail (%1) from itself." +msgstr "" + +#: html/SelfService/Closed.html:25 +msgid "RT Self Service / Closed Tickets" +msgstr "RT Zelfbediening / Afgesloten Tickets" + +#: html/index.html:25 html/index.html:28 +msgid "RT at a glance" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't authenticate you" +msgstr "RT kon u niet authenticeren" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find requestor via its external database lookup" +msgstr "RT kon de verzoeker niet vinden in zijn interne database" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't find the queue: %1" +msgstr "RT kon de rij %1 niet vinden" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "RT kon deze PGP signatuur niet valideren. \\n" + +#: html/Elements/PageLayout:26 +#. ($RT::rtname) +msgid "RT for %1" +msgstr "RT voor %1" + +#: NOT FOUND IN SOURCE +msgid "RT for %1: %2" +msgstr "RT voor %1: %2" + +#: NOT FOUND IN SOURCE +msgid "RT has proccessed your commands" +msgstr "RT heeft uw commando's verwerkt" + +#: html/Elements/Login:83 +#. ('2003') +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 © Copyright 1996-%1 Jesse Vincent <jesse@bestpractical.com>. Het is gedistribueerd onder <a href=\"http://www.gnu.org/copyleft/gpl.html\">Versie 2 van de 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 "" + +#: NOT FOUND IN SOURCE +msgid "RT thinks this message may be a bounce" +msgstr "RT denkt dat dit bericht onbestelbaar zou kunnen zijn" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +msgstr "RT zal dit bericht verwerken als of het ongesigneerd is.\\n" + +#: 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 email commando modus vereist PGP authenticatie. Of u heeft uw bericht niet gesigneerd, of uw signatuur kon niet geverifieerd worden." + +#: html/Admin/Users/Modify.html:58 html/Admin/Users/Prefs.html:52 html/User/Prefs.html:44 +msgid "Real Name" +msgstr "Echte Naam" + +#: html/Admin/Elements/ModifyUser:48 +msgid "RealName" +msgstr "EchteNaam" + +#: html/Ticket/Create.html:185 html/Ticket/Elements/EditLinks:139 html/Ticket/Elements/EditLinks:94 html/Ticket/Elements/ShowLinks:63 +msgid "Referred to by" +msgstr "Naar gerefeerd door" + +#: html/Elements/SelectLinkType:28 html/Ticket/Create.html:184 html/Ticket/Elements/EditLinks:135 html/Ticket/Elements/EditLinks:80 html/Ticket/Elements/ShowLinks:55 +msgid "Refers to" +msgstr "Refereert aan" + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "Verfijn" + +#: html/Search/Elements/PickRestriction:27 +msgid "Refine search" +msgstr "Verfijn Zoekopdracht" + +#: html/Elements/Refresh:36 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "Ververs deze pagina elke %1 minuten." + +#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:60 html/Ticket/ModifyAll.html:57 +msgid "Relationships" +msgstr "Relaties" + +#: html/Search/Bulk.html:93 +msgid "Remove AdminCc" +msgstr "Verwijder AdminCc" + +#: html/Search/Bulk.html:91 +msgid "Remove Cc" +msgstr "Verwijder Cc" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "Verwijder Verzoeker" + +#: html/Ticket/Elements/ShowTransaction:173 html/Ticket/Elements/Tabs:122 +msgid "Reply" +msgstr "Antwoord" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Reply to tickets" +msgstr "Antwoord op tickets" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "ReplyToTicket" +msgstr "AntwoordOpTicket" + +#: etc/initialdata:44 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:87 +msgid "Requestor" +msgstr "Verzoeker" + +#: html/Search/Elements/PickRestriction:38 +msgid "Requestor email address" +msgstr "Verzoeker email adres" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "Verzoeker(s)" + +#: NOT FOUND IN SOURCE +msgid "RequestorAddresses" +msgstr "" + +#: html/SelfService/Create.html:43 html/SelfService/Display.html:42 html/Ticket/Create.html:56 html/Ticket/Elements/EditPeople:48 html/Ticket/Elements/ShowPeople:31 +msgid "Requestors" +msgstr "Verzoekers" + +#: html/Admin/Elements/ModifyQueue:61 html/Admin/Queues/Modify.html:75 +msgid "Requests should be due in" +msgstr "Verzoek is terug verwacht" + +#: html/Elements/Submit:62 +msgid "Reset" +msgstr "Herstel" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "Woonplaats" + +#: html/Ticket/Elements/Tabs:132 +msgid "Resolve" +msgstr "Los op" + +#: html/Ticket/Update.html:133 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "Los ticket #%1 (%2) op" + +#: etc/initialdata:302 html/Elements/SelectDateType:28 lib/RT/Ticket_Overlay.pm:1170 +msgid "Resolved" +msgstr "Opgelost" + +#: html/Search/Bulk.html:123 html/Ticket/ModifyAll.html:73 html/Ticket/Update.html:73 +msgid "Response to requestors" +msgstr "Antwoord aan verzoekers" + +#: html/Elements/ListActions:26 +msgid "Results" +msgstr "Resultaten" + +#: html/Search/Elements/PickRestriction:105 +msgid "Results per page" +msgstr "Resultaten per pagina" + +#: html/Admin/Elements/ModifyUser:33 html/Admin/Users/Modify.html:100 html/User/Prefs.html:72 +msgid "Retype Password" +msgstr "Type wachtwoord opnieuw" + +#: NOT FOUND IN SOURCE +msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" +msgstr "Recht %1 niet gevonden voor %2 %3 in bereik %4 (%5)\\n" + +#: lib/RT/ACE_Overlay.pm:613 +msgid "Right Delegated" +msgstr "Recht Gedelegeerd" + +#: lib/RT/ACE_Overlay.pm:303 +msgid "Right Granted" +msgstr "Recht Toegekend" + +#: lib/RT/ACE_Overlay.pm:161 +msgid "Right Loaded" +msgstr "Recht Geladen" + +#: lib/RT/ACE_Overlay.pm:678 lib/RT/ACE_Overlay.pm:693 +msgid "Right could not be revoked" +msgstr "Recht kon niet afgenomen worden" + +#: html/User/Delegation.html:64 +msgid "Right not found" +msgstr "Recht niet gevonden" + +#: lib/RT/ACE_Overlay.pm:543 lib/RT/ACE_Overlay.pm:638 +msgid "Right not loaded." +msgstr "Recht niet geladen" + +#: lib/RT/ACE_Overlay.pm:689 +msgid "Right revoked" +msgstr "" + +#: html/Admin/Elements/UserTabs:41 +msgid "Rights" +msgstr "Rechten" + +#: lib/RT/Interface/Web.pm:758 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "" + +#: lib/RT/Interface/Web.pm:791 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "" + +#: html/Admin/Global/GroupRights.html:51 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "Rollen" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "RootGoedkeuring" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "Za." + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "Save Changes" +msgstr "Bewaarwijzigingen" + +#: html/Ticket/ModifyLinks.html:39 +msgid "Save changes" +msgstr "Bewaarwijzigingen" + +#: html/Admin/Global/Scrip.html:49 +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:176 +msgid "Scrip Created" +msgstr "Scrip aangemaakt" + +#: html/Admin/Elements/EditScrips:84 +msgid "Scrip deleted" +msgstr "Script verwijderd" + +#: html/Admin/Elements/QueueTabs:46 html/Admin/Elements/SystemTabs:33 html/Admin/Global/index.html:41 +msgid "Scrips" +msgstr "Scrips" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "Scrips voor %1\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "Scrips welke betrekking hebben op alle rijen" + +#: html/Elements/SimpleSearch:27 html/Search/Elements/PickRestriction:126 html/Ticket/Elements/Tabs:159 +msgid "Search" +msgstr "Zoek" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "Zoek Criteria" + +#: html/Approvals/Elements/PendingMyApproval:39 +msgid "Search for approvals" +msgstr "" + +#: bin/rt-crontool:188 +msgid "Security:" +msgstr "Veiligheid" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "SeeQueue" +msgstr "ZieRij" + +#: html/Admin/Groups/index.html:40 +msgid "Select a group" +msgstr "Selecteer een groep" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "Selecteer een rij" + +#: html/Admin/Users/index.html:25 html/Admin/Users/index.html:28 +msgid "Select a user" +msgstr "Selecteer een gebruiker" + +#: html/Admin/Global/CustomField.html:38 html/Admin/Global/CustomFields.html:36 +msgid "Select custom field" +msgstr "" + +#: html/Admin/Elements/GroupTabs:52 html/User/Elements/GroupTabs:50 +msgid "Select group" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Select multiple values" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:352 +msgid "Select one value" +msgstr "" + +#: html/Admin/Elements/QueueTabs:67 +msgid "Select queue" +msgstr "" + +#: html/Admin/Global/Scrip.html:37 html/Admin/Global/Scrips.html:36 html/Admin/Queues/Scrip.html:40 html/Admin/Queues/Scrips.html:50 +msgid "Select scrip" +msgstr "" + +#: html/Admin/Global/Template.html:57 html/Admin/Global/Templates.html:36 html/Admin/Queues/Template.html:55 +msgid "Select template" +msgstr "" + +#: html/Admin/Elements/UserTabs:49 +msgid "Select user" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "SelectMultiple" +msgstr "SelecteerMeerdere" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectSingle" +msgstr "SelecteerEnkele" + +#: html/SelfService/index.html:25 +msgid "Self Service" +msgstr "Zelfbediening" + +#: etc/initialdata:114 +msgid "Send mail to all watchers" +msgstr "Stuurt mail naar alle toeschouwers" + +#: etc/initialdata:110 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "Stuurt mail naar alle toeschouwers als een \"commentaar\"" + +#: etc/initialdata:105 +msgid "Send mail to requestors and Ccs" +msgstr "Stuurt mail naar alle verzoekers en Ccs" + +#: etc/initialdata:100 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "Stuurt mail naar alle verzoekers en Ccs als een \"commentaar\"" + +#: etc/initialdata:79 +msgid "Sends a message to the requestors" +msgstr "Stuurt een bericht aan de verzoekers" + +#: etc/initialdata:118 etc/initialdata:122 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "Stuurt mail aan expliciet genoemde Ccs en Bccs" + +#: etc/initialdata:95 +msgid "Sends mail to the administrative Ccs" +msgstr "Stuurt mail aan de administratieve Ccs" + +#: etc/initialdata:91 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "Stuurt mail aan de administratieve Ccs als een \"commentaar\"" + +#: etc/initialdata:83 etc/initialdata:87 +msgid "Sends mail to the owner" +msgstr "Stuurt mail aan de eigenaar" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "Sep." + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "Toon Resultaten" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show approved requests" +msgstr "Toon goedgekeurde verzoeken" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show basics" +msgstr "Toon beginselen" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show denied requests" +msgstr "Toon afgewezen verzoeken" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show details" +msgstr "Toon details" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show pending requests" +msgstr "Toon hangende verzoeken" + +#: html/Approvals/Elements/PendingMyApproval:46 +msgid "Show requests awaiting other approvals" +msgstr "Toon verzoeken die wachten op andere goedkeuringen" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Show ticket private commentary" +msgstr "Toon ticket privé commentaar" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "Show ticket summaries" +msgstr "Toon ticket samenvattingen" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ShowACL" +msgstr "ToonACL" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowScrips" +msgstr "ToonScrips" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ShowTemplate" +msgstr "ToonSjabloon" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "ShowTicket" +msgstr "ToonTicket" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "ShowTicketComments" +msgstr "ToonTicketCommentaar" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "Schrijf in als een ticket Verzoeker of ticket of rij Cc" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "Schrijf in als een ticket of rij AdminCc" + +#: html/Admin/Elements/ModifyUser:39 html/Admin/Users/Modify.html:191 html/Admin/Users/Prefs.html:32 html/SelfService/Prefs.html:37 html/User/Prefs.html:112 +msgid "Signature" +msgstr "Signatuur" + +#: html/SelfService/Elements/Header:52 +#. ($session{'CurrentUser'}->Name) +msgid "Signed in as %1" +msgstr "" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Single" +msgstr "Enkel" + +#: html/Elements/Header:51 +msgid "Skip Menu" +msgstr "" + +#: html/Admin/Elements/EditCustomFieldValues:31 +msgid "Sort key" +msgstr "Sorteer sleutel" + +#: html/Search/Elements/PickRestriction:109 +msgid "Sort results by" +msgstr "Sorteer resultaten op" + +#: html/Admin/Elements/AddCustomFieldValue:25 +msgid "SortOrder" +msgstr "SorteerVolgorde" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "Blijft Steken" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "Start pagina" + +#: html/Elements/SelectDateType:27 html/Ticket/Elements/EditDates:32 html/Ticket/Elements/ShowDates:35 +msgid "Started" +msgstr "Gestart" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "Startum '%1' kon niet ontleed worden" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:27 html/Ticket/Elements/ShowDates:31 +msgid "Starts" +msgstr "Begint" + +#: NOT FOUND IN SOURCE +msgid "Starts By" +msgstr "Begint op" + +#: NOT FOUND IN SOURCE +msgid "Starts date '%1' could not be parsed" +msgstr "Begindatum '%1' kon niet ontleed worden" + +#: html/Admin/Elements/ModifyUser:82 html/Admin/Users/Modify.html:138 html/User/Prefs.html:94 +msgid "State" +msgstr "Staat" + +#: html/Elements/MyRequests:31 html/Elements/MyTickets:31 html/Search/Elements/PickRestriction:74 html/SelfService/Display.html:59 html/SelfService/Elements/MyRequests:29 html/SelfService/Update.html:31 html/Ticket/Create.html:42 html/Ticket/Elements/EditBasics:38 html/Ticket/Elements/ShowBasics:31 html/Ticket/Update.html:60 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "Status" + +#: etc/initialdata:288 +msgid "Status Change" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:530 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "Status veranderd van %1 naar %2" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "StatusVerandering" + +#: html/Ticket/Elements/Tabs:147 +msgid "Steal" +msgstr "Steel" + +#: lib/RT/Transaction_Overlay.pm:589 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "Gestolen van %1" + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Search/Bulk.html:126 html/Search/Elements/PickRestriction:43 html/SelfService/Create.html:59 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:35 html/Ticket/Create.html:84 html/Ticket/Elements/EditBasics:28 html/Ticket/ModifyAll.html:79 html/Ticket/Update.html:77 lib/RT/Ticket_Overlay.pm:1160 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "Onderwerp" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:611 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "Onderwerp veranderd naar %1" + +#: html/Elements/Submit:59 +msgid "Submit" +msgstr "Registreer" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "Registreer Workflow" + +#: lib/RT/Group_Overlay.pm:749 +msgid "Succeeded" +msgstr "Gelukt" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "Zo." + +#: lib/RT/System.pm:54 +msgid "SuperUser" +msgstr "SuperGebruiker" + +#: html/User/Elements/DelegateRights:77 +msgid "System" +msgstr "Systeem" + +#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:567 lib/RT/Interface/Web.pm:757 lib/RT/Interface/Web.pm:790 +msgid "System Error" +msgstr "Systeem Fout" + +#: NOT FOUND IN SOURCE +msgid "System Error. Right not granted." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "System Error. right not granted" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:616 +msgid "System error. Right not delegated." +msgstr "Systeem fout. Recht niet gedelegeerd." + +#: lib/RT/ACE_Overlay.pm:146 lib/RT/ACE_Overlay.pm:223 lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:898 +msgid "System error. Right not granted." +msgstr "Systeem fout. Recht niet toegekend." + +#: NOT FOUND IN SOURCE +msgid "System error. Unable to grant rights." +msgstr "Systeem fout. Niet mogelijk om rechten toe te kennen" + +#: html/Admin/Global/GroupRights.html:35 html/Admin/Groups/GroupRights.html:37 html/Admin/Queues/GroupRights.html:36 +msgid "System groups" +msgstr "Systeem groepen" + +#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 +msgid "SystemRolegroup for internal use" +msgstr "SysteemRolgroep voor intern gebruik" + +#: lib/RT/CurrentUser.pm:320 +msgid "TEST_STRING" +msgstr "TEST_STRING" + +#: html/Ticket/Elements/Tabs:143 +msgid "Take" +msgstr "Neem" + +#: lib/RT/Transaction_Overlay.pm:575 +msgid "Taken" +msgstr "Genomen" + +#: html/Admin/Elements/EditScrip:81 +msgid "Template" +msgstr "Sjabloon" + +#: html/Admin/Global/Template.html:91 html/Admin/Queues/Template.html:90 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "" + +#: html/Admin/Elements/EditTemplates:89 +msgid "Template deleted" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:153 +msgid "Template not found" +msgstr "Sjabloon niet gevonden" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "Sjabloon niet gevonden\\n" + +#: lib/RT/Template_Overlay.pm:347 +msgid "Template parsed" +msgstr "Sjabloon ontleed" + +#: html/Admin/Elements/QueueTabs:49 html/Admin/Elements/SystemTabs:36 html/Admin/Global/index.html:45 +msgid "Templates" +msgstr "Sjablonen" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "Sjablonen voor %1\\n" + +#: lib/RT/Interface/Web.pm:858 +msgid "That is already the current value" +msgstr "Dat is al de huidige waarde" + +#: lib/RT/CustomField_Overlay.pm:178 +msgid "That is not a value for this custom field" +msgstr "Dat is geen waarde voor dit specifieke veld" + +#: lib/RT/Ticket_Overlay.pm:1886 +msgid "That is the same value" +msgstr "Dat is de zelfde waarde" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "Dat hoofd is reeds een %1 voor deze rij" + +#: lib/RT/Ticket_Overlay.pm:1434 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "Dat hoofd is reeds een %1 voor dit ticket" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "Dat hoofd is geen %1 voor deze rij" + +#: lib/RT/Ticket_Overlay.pm:1551 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "Dat hoofd is geen %1 voor dit ticket" + +#: lib/RT/Ticket_Overlay.pm:1882 +msgid "That queue does not exist" +msgstr "Die rij bestaat niet" + +#: lib/RT/Ticket_Overlay.pm:3143 +msgid "That ticket has unresolved dependencies" +msgstr "Dat ticket heeft onopgeloste afhankelijkheden" + +#: lib/RT/ACE_Overlay.pm:288 lib/RT/ACE_Overlay.pm:597 +msgid "That user already has that right" +msgstr "Die gebruiker heeft dat recht reeds" + +#: lib/RT/Ticket_Overlay.pm:2952 +msgid "That user already owns that ticket" +msgstr "Die gebruiker is al eigenaar van dat ticket" + +#: lib/RT/Ticket_Overlay.pm:2918 +msgid "That user does not exist" +msgstr "Die gebruiker bestaat niet" + +#: lib/RT/User_Overlay.pm:315 +msgid "That user is already privileged" +msgstr "Die gebruiker is al gerechtigd" + +#: lib/RT/User_Overlay.pm:332 +msgid "That user is already unprivileged" +msgstr "Die gebruiker is reeds ontrechtigd" + +#: lib/RT/User_Overlay.pm:327 +msgid "That user is now privileged" +msgstr "Die gebruiker is nu gerechtigd" + +#: lib/RT/User_Overlay.pm:344 +msgid "That user is now unprivileged" +msgstr "Die gebruiker is nu ontrechtigd" + +#: NOT FOUND IN SOURCE +msgid "That user is now unprivilegedileged" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2944 +msgid "That user may not own tickets in that queue" +msgstr "Die gebruiker mag geen eigenaar zijn van tickets in die rij" + +#: lib/RT/Link_Overlay.pm:206 +msgid "That's not a numerical id" +msgstr "Dat is niet een numeriek ID" + +#: html/Ticket/Create.html:150 html/Ticket/Elements/ShowSummary:28 +msgid "The Basics" +msgstr "De Beginselen" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The CC of a ticket" +msgstr "De CC van een ticket" + +#: lib/RT/ACE_Overlay.pm:89 +msgid "The administrative CC of a ticket" +msgstr "De administratieve CC van een ticket" + +#: lib/RT/Ticket_Overlay.pm:2213 +msgid "The comment has been recorded" +msgstr "Het commentaar is bewaard" + +#: bin/rt-crontool:198 +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 "Het volgende commando zal alle actieve tickets in de rij 'general' vinden en hun prioriteit op 99 zetten als ze meer dan 4 uur niet aangeraakt zijn:" + +#: bin/rt-commit-handler:756 bin/rt-commit-handler:766 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "De volgende commando's zijn niet verwerkt:\\n\\n" + +#: lib/RT/Interface/Web.pm:861 +msgid "The new value has been set." +msgstr "De waarde is gezet." + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The owner of a ticket" +msgstr "De eigenaar van een ticket" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The requestor of a ticket" +msgstr "De verzoeker van een ticket" + +#: html/Admin/Elements/EditUserComments:26 +msgid "These comments aren't generally visible to the user" +msgstr "Dit commentaar is gewoonlijk niet zichtbaar voor de gebruiker" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "Dit ticket %1 %2 (%3)\\n" + +#: bin/rt-crontool:189 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "Dit gereedschap stelt de gebruiker in staat arbitraire perl modules te gebruiken vanuit RT" + +#: lib/RT/Transaction_Overlay.pm:253 +msgid "This transaction appears to have no content" +msgstr "Het lijkt erop alsof deze transactie geen inhoud heeft" + +#: html/Ticket/Elements/ShowRequestor:47 +#. ($rows) +msgid "This user's %1 highest priority tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "This user's 25 highest priority tickets" +msgstr "De 25 hoogste prioriteit tickets van deze gebruiker" + +#: lib/RT/Date.pm:391 +msgid "Thu." +msgstr "Do." + +#: NOT FOUND IN SOURCE +msgid "Ticket" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Ticket # %1 Jumbo update: %2" +msgstr "" + +#: html/Ticket/ModifyAll.html:25 html/Ticket/ModifyAll.html:29 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "Ticket #%1 Jumbo actualisering: %2" + +#: html/Approvals/Elements/ShowDependency:46 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "Ticket #%1: %2" + +#: lib/RT/Ticket_Overlay.pm:608 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "Ticket %1 aangemaakt in rij '%2'" + +#: bin/rt-commit-handler:760 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "Toclet %1 geladen\\n" + +#: html/Search/Bulk.html:181 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "Ticket %1: %2" + +#: html/Ticket/History.html:25 html/Ticket/History.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "Ticket Historie # %1 %2" + +#: html/SelfService/Display.html:34 +msgid "Ticket Id" +msgstr "Ticket Id" + +#: etc/initialdata:303 +msgid "Ticket Resolved" +msgstr "Ticket Opgelost" + +#: html/Search/Elements/PickRestriction:63 +msgid "Ticket attachment" +msgstr "Ticket aanhechting" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "Ticket inhoud" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "Ticket inhoud type" + +#: lib/RT/Ticket_Overlay.pm:495 lib/RT/Ticket_Overlay.pm:597 +msgid "Ticket could not be created due to an internal error" +msgstr "Ticket kong niet aangemaakt worden vanwege een interne fout" + +#: lib/RT/Transaction_Overlay.pm:522 +msgid "Ticket created" +msgstr "Ticket aangemaakt" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "Ticket aanmaken gefaald" + +#: lib/RT/Transaction_Overlay.pm:527 +msgid "Ticket deleted" +msgstr "Ticket verwijderd" + +#: html/REST/1.0/modify:29 html/REST/1.0/update:34 +msgid "Ticket id not found" +msgstr "Ticket id niet gevonden" + +#: NOT FOUND IN SOURCE +msgid "Ticket killed" +msgstr "" + +#: html/REST/1.0/modify:36 html/REST/1.0/update:41 +msgid "Ticket not found" +msgstr "Ticket niet gevonden" + +#: etc/initialdata:289 +msgid "Ticket status changed" +msgstr "Ticket status gewijzigd" + +#: html/Ticket/Update.html:39 +msgid "Ticket watchers" +msgstr "Ticket toeschouwers" + +#: html/Elements/Tabs:49 +msgid "Tickets" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "Tickets %1 %2" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "Tickets %1 door %2" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Tickets from %1" +msgstr "Tickets van %1" + +#: html/Approvals/Elements/ShowDependency:27 +msgid "Tickets which depend on this approval:" +msgstr "Tickets welke afhankelijk zijn van deze goedkeuring" + +#: html/Ticket/Create.html:157 html/Ticket/Elements/EditBasics:48 +msgid "Time Left" +msgstr "Tijd Over" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:43 +msgid "Time Worked" +msgstr "Tijd Gewerkt" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "Tijd over" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "Tijd om te tonen" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "Tijd gewerkt" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "TijdOver" + +#: lib/RT/Ticket_Overlay.pm:1165 +msgid "TimeWorked" +msgstr "TijdGewerkt" + +#: bin/rt-commit-handler:402 +msgid "To generate a diff of this commit:" +msgstr "Om een diff van deze uitvoering te genereren:" + +#: bin/rt-commit-handler:391 +msgid "To generate a diff of this commit:\\n" +msgstr "Om een diff van deze uitvoering te genereren:\\n" + +#: lib/RT/Ticket_Overlay.pm:1168 +msgid "Told" +msgstr "Verteld" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "Transactie" + +#: lib/RT/Transaction_Overlay.pm:642 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "Transactie %1 gezuiverd" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "Transactie Gecreëerd" + +#: lib/RT/Transaction_Overlay.pm:89 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "Transactie->Creëer kon niet, aangezien u geen ticket id gespecificeerd heeft" + +#: lib/RT/Transaction_Overlay.pm:701 +msgid "Transactions are immutable" +msgstr "Transacties zijn onwijzigbaar" + +#: NOT FOUND IN SOURCE +msgid "Trying to delete a right: %1" +msgstr "Tracht een recht te verwijderen: %1" + +#: lib/RT/Date.pm:389 +msgid "Tue." +msgstr "Di." + +#: html/Admin/Elements/EditCustomField:34 html/Ticket/Elements/AddWatchers:33 html/Ticket/Elements/AddWatchers:44 html/Ticket/Elements/AddWatchers:54 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "Type" + +#: lib/RT/ScripCondition_Overlay.pm:104 +msgid "Unimplemented" +msgstr "Niet geïmplementeerd" + +#: html/Admin/Users/Modify.html:68 +msgid "Unix login" +msgstr "Unix aanmelden" + +#: html/Admin/Elements/ModifyUser:62 +msgid "UnixUsername" +msgstr "UnixGebruikersnaam" + +#: lib/RT/Attachment_Overlay.pm:265 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "Onbekende InhoudCodering %1" + +#: html/Elements/SelectResultsPerPage:37 +msgid "Unlimited" +msgstr "Ongelimiteerd" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "Ongerechtigd" + +#: lib/RT/Transaction_Overlay.pm:571 +msgid "Untaken" +msgstr "Vrij" + +#: html/Elements/MyTickets:64 html/Search/Bulk.html:33 +msgid "Update" +msgstr "Ververs" + +#: html/Admin/Users/Prefs.html:62 +msgid "Update ID" +msgstr "Ververs ID" + +#: html/Search/Bulk.html:120 html/Ticket/ModifyAll.html:66 html/Ticket/Update.html:67 +msgid "Update Type" +msgstr "Ververs Type" + +#: html/Search/Listing.html:61 +msgid "Update all these tickets at once" +msgstr "Ververs al deze tickets in eens" + +#: html/Admin/Users/Prefs.html:49 +msgid "Update email" +msgstr "Ververs email" + +#: html/Admin/Users/Prefs.html:55 +msgid "Update name" +msgstr "Ververs naam" + +#: lib/RT/Interface/Web.pm:375 +msgid "Update not recorded." +msgstr "Verversing niet opgeslagen." + +#: html/Search/Bulk.html:81 +msgid "Update selected tickets" +msgstr "Ververs geselecteerde tickets" + +#: html/Admin/Users/Prefs.html:36 +msgid "Update signature" +msgstr "Ververs signatuur" + +#: html/Ticket/ModifyAll.html:63 +msgid "Update ticket" +msgstr "Ververs ticket" + +#: html/SelfService/Update.html:25 html/SelfService/Update.html:27 +#. ($Ticket->id) +msgid "Update ticket # %1" +msgstr "Ververs ticket # %1" + +#: html/SelfService/Update.html:50 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "Ververs ticket #%1" + +#: html/Ticket/Update.html:135 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "Ververs ticket #%1 (%2)" + +#: lib/RT/Interface/Web.pm:373 +msgid "Update type was neither correspondence nor comment." +msgstr "Verversingstype was noch correspondentie, noch commentaar" + +#: html/Elements/SelectDateType:33 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1169 +msgid "Updated" +msgstr "Ververst" + +#: NOT FOUND IN SOURCE +msgid "User %1 %2: %3\\n" +msgstr "Gebruiker %1 %2: %3\\n" + +#: NOT FOUND IN SOURCE +msgid "User %1 Password: %2\\n" +msgstr "Gebruiker %1 Wachtwoord: %2\\n" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found" +msgstr "Gebruiker '%1' niet gevonden" + +#: NOT FOUND IN SOURCE +msgid "User '%1' not found\\n" +msgstr "Gebruiker '%1' niet gevonden\\n" + +#: etc/initialdata:125 etc/initialdata:191 +msgid "User Defined" +msgstr "Gebruiker Gedifiniëerd" + +#: html/Admin/Users/Prefs.html:59 +msgid "User ID" +msgstr "GebruikersID" + +#: html/Elements/SelectUsers:26 +msgid "User Id" +msgstr "Gebruiker Id" + +#: html/Admin/Elements/GroupTabs:47 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/SystemTabs:47 html/Admin/Global/index.html:59 +msgid "User Rights" +msgstr "Gebruikersrechten" + +#: html/Admin/Users/Modify.html:226 +#. ($msg) +msgid "User could not be created: %1" +msgstr "Gebruiker kon niet aangemaakt worden: %1" + +#: lib/RT/User_Overlay.pm:262 +msgid "User created" +msgstr "Gebruiker aangemaakt" + +#: html/Admin/Global/GroupRights.html:67 html/Admin/Groups/GroupRights.html:54 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "Door gebruiker gedefiniëerde groepen" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "Gebruiker verwittigd" + +#: html/Admin/Users/Prefs.html:25 html/Admin/Users/Prefs.html:29 +msgid "User view" +msgstr "Gebruikers aanzicht" + +#: html/Admin/Users/Modify.html:48 html/Elements/Login:42 html/Ticket/Elements/AddWatchers:35 +msgid "Username" +msgstr "Gebruikersnaam" + +#: html/Admin/Elements/SelectNewGroupMembers:26 html/Admin/Elements/Tabs:32 html/Admin/Groups/Members.html:55 html/Admin/Queues/People.html:68 html/Admin/index.html:29 html/User/Groups/Members.html:58 +msgid "Users" +msgstr "Gebruikers" + +#: html/Admin/Users/index.html:65 +msgid "Users matching search criteria" +msgstr "Gebruikers die voldoen aan de zoek criteria" + +#: html/Search/Elements/PickRestriction:51 +msgid "ValueOfQueue" +msgstr "WaardeVanRij" + +#: html/Admin/Elements/EditCustomField:40 +msgid "Values" +msgstr "Waarden" + +#: NOT FOUND IN SOURCE +msgid "VrijevormEnkele" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Watch" +msgstr "Schouw toe" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "WatchAsAdminCc" +msgstr "SchouwToeAlsAdminCc" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "Toeschouwer geladen" + +#: html/Admin/Elements/QueueTabs:42 +msgid "Watchers" +msgstr "Toeschouwers" + +#: html/Admin/Elements/ModifyUser:56 +msgid "WebEncoding" +msgstr "WebCodering" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "Wo." + +#: etc/upgrade/2.1.71:161 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "Wanneer een ticket goedgekeurd is door alle goedkeurders, voeg correspondentie toe aan het orginele ticket" + +#: etc/upgrade/2.1.71:135 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "Wanneer een ticket goedgekeurd is door een goedkeurder, voeg correspondentie toe aan het orginele ticket" + +#: etc/initialdata:138 +msgid "When a ticket is created" +msgstr "Wanneer een ticket is aangemaakt" + +#: etc/upgrade/2.1.71:79 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "Wanneer een goedkeuringsticket is aangemaakts, verwittig de Eigenaar en de AdminCc van het onderwerp dat op hun goedkeuring wacht" + +#: etc/initialdata:143 +msgid "When anything happens" +msgstr "Wanneer iets gebeurt" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "Wanneer een ticket is opgelost" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "Wanneer de eigenaar van een ticket verandert" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "Wanneer de rij van een ticket verandert" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "Wanneer de status van een ticket verandert" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "Wanneer een door de gebruiker gedifiniëerde voorwaarde gebeurt" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "Wanneer commentaar binnenkomt" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "Wanneer correspondentie binnenkomt" + +#: html/Admin/Users/Modify.html:164 html/User/Prefs.html:52 +msgid "Work" +msgstr "Werk" + +#: html/Admin/Elements/ModifyUser:70 +msgid "WorkPhone" +msgstr "WerkTelefoon" + +#: html/SelfService/Display.html:86 html/Ticket/Elements/ShowBasics:35 html/Ticket/Update.html:65 +msgid "Worked" +msgstr "Gewerkt" + +#: lib/RT/Ticket_Overlay.pm:3056 +msgid "You already own this ticket" +msgstr "U bent al eigenaar van dit ticket" + +#: html/autohandler:121 +msgid "You are not an authorized user" +msgstr "U bent geen geauthorizeerde gebruiker" + +#: lib/RT/Ticket_Overlay.pm:2930 +msgid "You can only reassign tickets that you own or that are unowned" +msgstr "U kunt alleen tickets opnieuw toe bedelen die van u zijn, of van niemand" + +#: NOT FOUND IN SOURCE +msgid "You don't have permission to view that ticket.\\n" +msgstr "U heeft geen toestemming om dat ticket te bekijken" + +#: docs/design_docs/string-extraction-guide.txt:47 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "U vond %1 tickets in rij %2" + +#: html/NoAuth/Logout.html:31 html/REST/1.0/logout:25 +msgid "You have been logged out of RT." +msgstr "U bent afgemeld bij RT" + +#: html/SelfService/Display.html:134 +msgid "You have no permission to create tickets in that queue." +msgstr "U heeft geen toestemming om tickets aan te maken in die rij." + +#: lib/RT/Ticket_Overlay.pm:1895 +msgid "You may not create requests in that queue." +msgstr "U mag geen verzoeken aanmaken in die rij" + +#: html/NoAuth/Logout.html:36 +msgid "You're welcome to login again" +msgstr "U mag zich weer aanmelden" + +#: html/SelfService/Elements/MyRequests:25 +#. ($friendly_status) +msgid "Your %1 requests" +msgstr "Uw %1 verzoeken" + +#: NOT FOUND IN SOURCE +msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" +msgstr "Uw RT beheerder heeft de mail-aliasses welke RT aanroepen verkeerd geconfigureerd" + +#: etc/initialdata:429 etc/upgrade/2.1.71:146 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "Uw verzoek is goedgekeurd door %1. Er zijn wellicht nog andere hangende goedkeuringen." + +#: etc/initialdata:463 etc/upgrade/2.1.71:180 +msgid "Your request has been approved." +msgstr "Uw verzoek is goedgekeurd." + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "" + +#: etc/initialdata:384 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "Uw verzoek was geweigerd." + +#: html/autohandler:136 html/autohandler:142 +msgid "Your username or password is incorrect" +msgstr "Uw gebruikersnaam of wachtwoord zijn onjuist" + +#: html/Admin/Elements/ModifyUser:84 html/Admin/Users/Modify.html:144 html/User/Prefs.html:96 +msgid "Zip" +msgstr "Postcode" + +#: NOT FOUND IN SOURCE +msgid "[no subject]" +msgstr "" + +#: html/User/Elements/DelegateRights:59 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "zoals gegeven aan %1" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:34 +msgid "contains" +msgstr "bevat" + +#: html/Elements/SelectAttachmentField:26 +msgid "content" +msgstr "inhoud" + +#: html/Elements/SelectAttachmentField:27 +msgid "content-type" +msgstr "inhoud-type" + +#: lib/RT/Ticket_Overlay.pm:2282 +msgid "correspondence (probably) not sent" +msgstr "correspondentie (waarschijnlijk) niet verstuurd" + +#: lib/RT/Ticket_Overlay.pm:2292 +msgid "correspondence sent" +msgstr "correspondentie verstuurd" + +#: html/Admin/Elements/ModifyQueue:63 html/Admin/Queues/Modify.html:77 lib/RT/Date.pm:319 +msgid "days" +msgstr "dagen" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "dood" + +#: html/Search/Listing.html:75 +msgid "delete" +msgstr "verwijder" + +#: lib/RT/Queue_Overlay.pm:63 +msgid "deleted" +msgstr "verwijderd" + +#: html/Search/Elements/PickRestriction:68 +msgid "does not match" +msgstr "voldoet niet aan" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:35 +msgid "doesn't contain" +msgstr "bevat niet" + +#: html/Elements/SelectEqualityOperator:38 +msgid "equal to" +msgstr "gelijk aan" + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "" + +#: html/Elements/SelectAttachmentField:28 +msgid "filename" +msgstr "bestandsnaam" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "greater than" +msgstr "groter dan" + +#: lib/RT/Group_Overlay.pm:194 +#. ($self->Name) +msgid "group '%1'" +msgstr "groep '%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "uren" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "id" + +#: html/Elements/SelectBoolean:32 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "is" +msgstr "is" + +#: html/Elements/SelectBoolean:36 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:37 html/Search/Elements/PickRestriction:48 html/Search/Elements/PickRestriction:77 html/Search/Elements/PickRestriction:89 +msgid "isn't" +msgstr "is niet" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "less than" +msgstr "minder dan" + +#: html/Search/Elements/PickRestriction:67 +msgid "matches" +msgstr "voldoet aan" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "min" + +#: html/Ticket/Update.html:66 +msgid "minutes" +msgstr "minuten" + +#: bin/rt-commit-handler:765 +msgid "modifications\\n\\n" +msgstr "wijzigingen\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "maanden" + +#: lib/RT/Queue_Overlay.pm:58 +msgid "new" +msgstr "nieuw" + +#: html/Admin/Elements/EditScrips:43 +msgid "no value" +msgstr "" + +#: html/Ticket/Elements/EditWatchers:28 +msgid "none" +msgstr "geen" + +#: html/Elements/SelectEqualityOperator:38 +msgid "not equal to" +msgstr "niet gelijk aan" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "open" +msgstr "open" + +#: lib/RT/Group_Overlay.pm:199 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "persoonlijke groep '%1' voor gebruiker '%2'" + +#: lib/RT/Group_Overlay.pm:207 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "rij %1 %2" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "rejected" +msgstr "geweigerd" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "resolved" +msgstr "opgelost" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "sec" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "stalled" +msgstr "bleef steken" + +#: lib/RT/Group_Overlay.pm:202 +#. ($self->Type) +msgid "system %1" +msgstr "systeem %1" + +#: lib/RT/Group_Overlay.pm:213 +#. ($self->Type) +msgid "system group '%1'" +msgstr "systeem groep '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:42 +msgid "the calling component did not specify why" +msgstr "het aanroepende component specificeerde niet waarom" + +#: lib/RT/Group_Overlay.pm:210 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "ticket #%1 %2" + +#: NOT FOUND IN SOURCE +msgid "true" +msgstr "" + +#: lib/RT/Group_Overlay.pm:216 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "onbeschreven groep %1" + +#: NOT FOUND IN SOURCE +msgid "undescripbed group %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:191 +#. ($user->Object->Name) +msgid "user %1" +msgstr "gebruiker %1" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "weken" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "met sjabloon %1" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "jaren" + diff --git a/rt/lib/RT/I18N/no.po b/rt/lib/RT/I18N/no.po new file mode 100644 index 000000000..5b1ab05cb --- /dev/null +++ b/rt/lib/RT/I18N/no.po @@ -0,0 +1,4879 @@ +msgid "" +msgstr "" +"Project-Id-Version: RT 3.0.1\n" +"POT-Creation-Date: 2003-04-01 06:06+0200\n" +"PO-Revision-Date: 2003-05-01 04:47+0200\n" +"Last-Translator: Marcus Ramberg <marcus@thefeed.no>\n" +"Language-Team: RT Norwegian <rt@thefeed.no>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + + + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 +msgid "#" +msgstr "#" + +#: html/Admin/Queues/Scrip.html:55 +#. ($QueueObj->id) +msgid "#%1" +msgstr "#%1" + +#: html/Approvals/Elements/Approve:27 html/Approvals/Elements/ShowDependency:50 html/SelfService/Display.html:25 html/Ticket/Display.html:26 html/Ticket/Display.html:30 +#. ($Ticket->Id, $Ticket->Subject) +#. ($Ticket->id, $Ticket->Subject) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "#%1: %2" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "%1 %2" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($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 %3. %2 %7 %4:%5:%6" + +#: lib/RT/Ticket_Overlay.pm:3505 lib/RT/Transaction_Overlay.pm:557 lib/RT/Transaction_Overlay.pm:599 +#. ($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:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "%1 %2 siden" + +#: lib/RT/Ticket_Overlay.pm:3511 lib/RT/Transaction_Overlay.pm:564 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1 %2 ble endret til %3" + +#: lib/RT/Ticket_Overlay.pm:3508 lib/RT/Transaction_Overlay.pm:560 lib/RT/Transaction_Overlay.pm:605 +#. ($cf->Name, $old_value) +#. ($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:44 html/Admin/Elements/ListGlobalScrips:28 +#. (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 biletten\\n"" + +#: html/Search/Listing.html:57 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "%1 - %2 vist" + +#: bin/rt-crontool:169 bin/rt-crontool:176 bin/rt-crontool:182 +#. ("--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:185 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "%1 - Viser statusoppdateringer til STDOUT" + +#: bin/rt-crontool:179 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "%1 - Oppgi kommandomodulen du ønsker  bruke" + +#: bin/rt-crontool:173 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "%1 - Oppgiv betingelsesmodulen du ønsker  bruke" + +#: bin/rt-crontool:166 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "%1 - Oppgi søkemodulen du ønsker  bruke" + +#: lib/RT/ScripAction_Overlay.pm:122 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "%1 KommandoScript lastet" + +#: lib/RT/Ticket_Overlay.pm:3538 +#. ($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:117 lib/RT/Link_Overlay.pm:124 +#. ($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:52 lib/RT/Transaction_Overlay.pm:481 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%1 av %2" + +#: lib/RT/Transaction_Overlay.pm:535 lib/RT/Transaction_Overlay.pm:624 lib/RT/Transaction_Overlay.pm:633 lib/RT/Transaction_Overlay.pm:636 +#. ($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 ble endret fra %2 til %3" + +#: lib/RT/Interface/Web.pm:891 +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:2817 +#. ($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." + +#: html/Elements/MyTickets:25 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "Mine %1 høyst prioriterte saker..." + +#: html/Elements/MyRequests:25 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "Mine %1 høyst prioriterte forespørsler..." + +#: bin/rt-crontool:161 +#. ($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:743 +#. ($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." + +#: lib/RT/Ticket_Overlay.pm:1570 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 er ikke lenger en %2 for denne saken." + +#: lib/RT/Ticket_Overlay.pm:3594 +#. ($args{'Value'}, $cf->Name) +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/ShowBasics:36 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 min" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "%1 vises ikke" + +#: html/User/Elements/DelegateRights:76 +#. (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:42 +#. (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/Transaction_Overlay.pm:433 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1: ingen vedlegg oppgitt" + +#: html/Ticket/Elements/ShowTransaction:102 +#. ($size) +msgid "%1b" +msgstr "%1b" + +#: html/Ticket/Elements/ShowTransaction:99 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "%1k" + +#: lib/RT/Ticket_Overlay.pm:1140 +#. ($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:25 html/Admin/Elements/EditQueueWatchers:29 html/Admin/Elements/EditScrips:35 html/Admin/Elements/EditTemplates:36 html/Admin/Groups/Members.html:52 html/Ticket/Elements/EditLinks:33 html/Ticket/Elements/EditPeople:46 html/User/Groups/Members.html:55 +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/Create.html:178 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(Skriv inn referansenummer eller URler, separert med mellomrom)" + +#: html/Admin/Queues/Modify.html:54 html/Admin/Queues/Modify.html:60 +#. ($RT::CorrespondAddress) +#. ($RT::CommentAddress) +msgid "(If left blank, will default to %1" +msgstr "(Standard er %1);H + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "(Ingen Verdi)" + +#: html/Admin/Elements/EditCustomFields:33 html/Admin/Elements/ListGlobalCustomFields:32 +msgid "(No custom fields)" +msgstr "(Ingen fleksifelt)" + +#: html/Admin/Groups/Members.html:50 html/User/Groups/Members.html:53 +msgid "(No members)" +msgstr "(Ingen medlemmer)" + +#: html/Admin/Elements/EditScrips:32 html/Admin/Elements/ListGlobalScrips:32 +msgid "(No scrips)" +msgstr "(Ingen scrips)" + +#: html/Admin/Elements/EditTemplates:31 +msgid "(No templates)" +msgstr "(Ingen maler)" + +#: html/Ticket/Update.html:85 +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/Create.html:79 +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/Update.html:81 +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/Create.html:69 +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/Admin/Groups/index.html:33 html/User/Groups/index.html:33 +msgid "(empty)" +msgstr "(tom)" + +#: html/Admin/Users/index.html:39 +msgid "(no name listed)" +msgstr "(navn ikke oppgitt)" + +#: html/Elements/MyRequests:43 html/Elements/MyTickets:45 +msgid "(no subject)" +msgstr "(ingen overskrift)" + +#: html/Admin/Elements/SelectRights:48 html/Elements/SelectCustomFieldValue:30 html/Ticket/Elements/EditCustomField:59 html/Ticket/Elements/ShowCustomFields:36 lib/RT/Transaction_Overlay.pm:534 +msgid "(no value)" +msgstr "(ingen verdi)" + +#: html/Ticket/Elements/EditLinks:116 +msgid "(only one ticket)" +msgstr "(bare en sak)" + +#: html/Elements/MyRequests:52 html/Elements/MyTickets:55 +msgid "(pending approval)" +msgstr "(Venter pÃ¥ godkjenning)" + +#: html/Elements/MyRequests:54 html/Elements/MyTickets:57 +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:50 +msgid "(required)" +msgstr "(nødvendig)" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "(untitled)" +msgstr "(ingen tittel)" + +#: 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:32 +msgid "<% $Ticket->Status%>" +msgstr "<% $Ticket-:Status%>" + +#: html/Elements/SelectTicketTypes:27 +msgid "<% $_ %>" +msgstr "<% $_ %>" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:26 +#. ($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:203 +msgid "A blank template" +msgstr "En tom mal" + +#: 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:157 lib/RT/Principal_Overlay.pm:181 +msgid "ACE not found" +msgstr "ACE ikke funnet" + +#: lib/RT/ACE_Overlay.pm:831 +msgid "ACEs can only be created and deleted." +msgstr "ACEr kan bare opprettes og slettes." + +#: bin/rt-commit-handler:755 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "Avbryter for  ung uønsket saksendring" + +#: html/User/Elements/Tabs:32 +msgid "About me" +msgstr "Om meg" + +#: html/Admin/Users/Modify.html:80 +msgid "Access control" +msgstr "Aksesskontroll" + +#: html/Admin/Elements/EditScrip:57 +msgid "Action" +msgstr "Handling" + +#: lib/RT/Scrip_Overlay.pm:147 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "Handling %1 finnes ikke" + +#: bin/rt-crontool:123 +msgid "Action committed." +msgstr "Handling skrevet." + +#: bin/rt-crontool:119 +msgid "Action prepared..." +msgstr "Handling forberedt" + +#: html/Search/Bulk.html:92 +msgid "Add AdminCc" +msgstr "Legg til AdminCc" + +#: html/Search/Bulk.html:90 +msgid "Add Cc" +msgstr "Legg til Cc" + +#: html/Ticket/Create.html:114 html/Ticket/Update.html:100 +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:88 +msgid "Add Requestor" +msgstr "Legg til kunde" + +#: html/Admin/Elements/AddCustomFieldValue:26 +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:55 +msgid "Add a scrip which will apply to all queues" +msgstr "Legg til et Scrip som vil gjelde for alle køer" + +#: html/Search/Bulk.html:118 +msgid "Add comments or replies to selected tickets" +msgstr "Legg til kommentarer eller svar til denne saken" + +#: html/Admin/Groups/Members.html:42 html/User/Groups/Members.html:39 +msgid "Add members" +msgstr "Legg til medlemmer" + +#: html/Admin/Queues/People.html:66 html/Ticket/Elements/AddWatchers:28 +msgid "Add new watchers" +msgstr "Legg til overvÃ¥kere" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "AddNextState" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($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:1454 +#. ($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/Elements/ModifyUser:76 html/Admin/Users/Modify.html:122 html/User/Prefs.html:88 +msgid "Address1" +msgstr "Adresse1" + +#: html/Admin/Elements/ModifyUser:78 html/Admin/Users/Modify.html:127 html/User/Prefs.html:90 +msgid "Address2" +msgstr "Adresse2" + +#: html/Ticket/Create.html:74 +msgid "Admin Cc" +msgstr "Admin Cc" + +#: etc/initialdata:280 +msgid "Admin Comment" +msgstr "Admin Kommentar" + +#: etc/initialdata:259 +msgid "Admin Correspondence" +msgstr "Admin-korrespondanse" + +#: html/Admin/Queues/index.html:25 html/Admin/Queues/index.html:28 +msgid "Admin queues" +msgstr "Adminkøer" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "Adminbrukere" + +#: html/Admin/Global/index.html:26 html/Admin/Global/index.html:28 +msgid "Admin/Global configuration" +msgstr "Admin/Global konfigurasjon" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "Admin/Grupper" + +#: html/Admin/Queues/Modify.html:25 html/Admin/Queues/Modify.html:29 +msgid "Admin/Queue/Basics" +msgstr "Admin/Køer/Grunnleggende" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "AdminAllePersonalGrupper" + +#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:39 html/Ticket/Update.html:50 lib/RT/ACE_Overlay.pm:89 +msgid "AdminCc" +msgstr "AdminCc" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "AdminKommentar" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "AdminKorrespondanse" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "AdminCustomFields" +msgstr "AdminFleksifelt" + +#: lib/RT/Group_Overlay.pm:146 +msgid "AdminGroup" +msgstr "AdminGruppe" + +#: lib/RT/Group_Overlay.pm:148 +msgid "AdminGroupMembership" +msgstr "AdminGruppeMedlemskap" + +#: lib/RT/System.pm:59 +msgid "AdminOwnPersonalGroups" +msgstr "AdminEgnePersonligeGrupper" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "AdminQueue" +msgstr "AdminKø" + +#: lib/RT/System.pm:60 +msgid "AdminUsers" +msgstr "AdminBrukere" + +#: html/Admin/Queues/People.html:48 html/Ticket/Elements/EditPeople:54 +msgid "Administrative Cc" +msgstr "Administrativ Cc" + +#: NOT FOUND IN SOURCE +msgid "Admins" +msgstr "Admin" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "Avansert Søk" + +#: html/Elements/SelectDateRelation:36 +msgid "After" +msgstr "Etter" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "Alder" + +#: NOT FOUND IN SOURCE +msgid "Alias" +msgstr "Alias" + +#: NOT FOUND IN SOURCE +msgid "Alias for" +msgstr "Alias for" + +#: html/Admin/Elements/EditCustomFields:96 +msgid "All Custom Fields" +msgstr "Alle Fleksifelt" + +#: html/Admin/Queues/index.html:53 +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/Elements/Tabs:56 +msgid "Approval" +msgstr "Godkjennelse" + +#: html/Approvals/Display.html:46 html/Approvals/Elements/ShowDependency:42 html/Approvals/index.html:65 +#. ($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:54 +#. ($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:52 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "Godkjenning #%1: Notater lagret" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "Godkjenning - Detaljer" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "Godkjenningsdiagram" + +#: html/Approvals/Elements/Approve:44 +msgid "Approve" +msgstr "Godkjenn" + +#: etc/initialdata:437 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "Godkjenners notater: %1" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "Apr." + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "April" + +#: html/Elements/SelectSortOrder:35 +msgid "Ascending" +msgstr "Stigende" + +#: html/Search/Bulk.html:127 html/SelfService/Update.html:33 html/Ticket/ModifyAll.html:83 html/Ticket/Update.html:100 +msgid "Attach" +msgstr "Legg Ved" + +#: html/SelfService/Create.html:65 html/Ticket/Create.html:110 +msgid "Attach file" +msgstr "Legg ved fil" + +#: html/Ticket/Create.html:98 html/Ticket/Update.html:89 +msgid "Attached file" +msgstr "Vedlagt fil" + +#: NOT FOUND IN SOURCE +msgid "Attachment '%1' could not be loaded" +msgstr "Vedlegg '%1' kunne ikke lastes" + +#: lib/RT/Transaction_Overlay.pm:441 +msgid "Attachment created" +msgstr "Vedlegg opprettet" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "Vedleggsnavn" + +#: html/Ticket/Elements/ShowAttachments:26 +msgid "Attachments" +msgstr "Vedlegg" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "Aug." + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "August" + +#: html/Admin/Elements/ModifyUser:66 +msgid "AuthSystem" +msgstr "AutSystem" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "Autosvar" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "Autosvar Til Kunde" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "AutosvarTilKunde" + +#: 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" + +#: bin/rt-commit-handler:827 +#. ($val) +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/GroupTabs:39 html/Admin/Elements/QueueTabs:39 html/Admin/Elements/UserTabs:38 html/Ticket/Elements/Tabs:90 html/User/Elements/GroupTabs:38 +msgid "Basics" +msgstr "Detaljer" + +#: html/Ticket/Update.html:83 +msgid "Bcc" +msgstr "Bcc" + +#: html/Admin/Elements/EditScrip:88 html/Admin/Global/GroupRights.html:85 html/Admin/Global/Template.html:46 html/Admin/Global/UserRights.html:54 html/Admin/Groups/GroupRights.html:73 html/Admin/Groups/Members.html:81 html/Admin/Groups/Modify.html:56 html/Admin/Groups/UserRights.html:55 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:45 html/Admin/Queues/UserRights.html:54 html/User/Groups/Modify.html:56 +msgid "Be sure to save your changes" +msgstr "Sørg for  lagre endringene dine" + +#: html/Elements/SelectDateRelation:34 lib/RT/CurrentUser.pm:320 +msgid "Before" +msgstr "Før" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "Begynn Godkjenning" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "Blank" + +#: html/Search/Listing.html:79 +msgid "Bookmarkable URL for this search" +msgstr "URL som kan brukes som bokmerke for dette søket" + +#: html/Ticket/Elements/ShowHistory:39 html/Ticket/Elements/ShowHistory:45 +msgid "Brief headers" +msgstr "Begrens headere" + +#: html/Search/Bulk.html:25 html/Search/Bulk.html:26 +msgid "Bulk ticket update" +msgstr "Masseoppdatering av saker" + +#: lib/RT/User_Overlay.pm:1352 +msgid "Can not modify system users" +msgstr "Kan ikke endre systembrukere" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Can this principal see this queue" +msgstr "Kan denne primæren se denne køen" + +#: lib/RT/CustomField_Overlay.pm:206 +msgid "Can't add a custom field value without a name" +msgstr "Kan ikke legge til en verdi for et fleksifelt uten navn" + +#: lib/RT/Link_Overlay.pm:132 +msgid "Can't link a ticket to itself" +msgstr "Kan ikke koble en sak til seg selv" + +#: lib/RT/Ticket_Overlay.pm:2794 +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" + +#: lib/RT/Ticket_Overlay.pm:2612 lib/RT/Ticket_Overlay.pm:2681 +msgid "Can't specifiy both base and target" +msgstr "Kan ikke spesifisere bÃ¥de base og mÃ¥l." + +#: html/autohandler:99 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "Kunne ikke oprette bruker: %1" + +#: etc/initialdata:50 html/Admin/Queues/People.html:44 html/SelfService/Create.html:49 html/Ticket/Create.html:64 html/Ticket/Elements/EditPeople:51 html/Ticket/Elements/ShowPeople:35 html/Ticket/Update.html:45 html/Ticket/Update.html:78 lib/RT/ACE_Overlay.pm:88 +msgid "Cc" +msgstr "Cc" + +#: html/SelfService/Prefs.html:31 +msgid "Change password" +msgstr "Endre passord" + +#: html/Ticket/Create.html:101 html/Ticket/Update.html:92 +msgid "Check box to delete" +msgstr "Merk for Ã¥ slette" + +#: html/Admin/Elements/SelectRights:31 +msgid "Check box to revoke right" +msgstr "Merk for Ã¥ trekke tilbake rettighet" + +#: html/Ticket/Create.html:183 html/Ticket/Elements/EditLinks:131 html/Ticket/Elements/EditLinks:69 html/Ticket/Elements/ShowLinks:57 +msgid "Children" +msgstr "Barn" + +#: html/Admin/Elements/ModifyUser:80 html/Admin/Users/Modify.html:132 html/User/Prefs.html:92 +msgid "City" +msgstr "By" + +#: html/Ticket/Elements/ShowDates:47 +msgid "Closed" +msgstr "Lukket" + +#: html/SelfService/Closed.html:25 +msgid "Closed Tickets" +msgstr "Lukkede Saker" + +#: NOT FOUND IN SOURCE +msgid "Closed requests" +msgstr "Lukkede forespørsler" + +#: html/SelfService/Elements/Tabs:45 +msgid "Closed tickets" +msgstr "Lukkede saker" + +#: NOT FOUND IN SOURCE +msgid "Code" +msgstr "Kode" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "Kunne ikke tolke kommando!\\n" + +#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:153 +msgid "Comment" +msgstr "Kommenter" + +#: html/Admin/Elements/ModifyQueue:45 html/Admin/Queues/Modify.html:58 +msgid "Comment Address" +msgstr "Kommentaraddresse" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "Kommentaren ble ikke lagret" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Comment on tickets" +msgstr "Kommenter saker" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "CommentOnTicket" +msgstr "KommenterSak" + +#: html/Admin/Elements/ModifyUser:35 +msgid "Comments" +msgstr "Kommentarer" + +#: html/Ticket/ModifyAll.html:70 html/Ticket/Update.html:70 +msgid "Comments (Not sent to requestors)" +msgstr "Kommentarer (Ikke send til kunder)" + +#: html/Search/Bulk.html:122 +msgid "Comments (not sent to requestors)" +msgstr "Kommentarer (ikke sendt til kunder)" + +#: html/Elements/ViewUser:27 +#. ($name) +msgid "Comments about %1" +msgstr "Kommentarer til %1" + +#: html/Admin/Users/Modify.html:185 html/Ticket/Elements/ShowRequestor:44 +msgid "Comments about this user" +msgstr "Kommentarer om denne brukeren" + +#: lib/RT/Transaction_Overlay.pm:543 +msgid "Comments added" +msgstr "La til kommentarer " + +#: lib/RT/Action/Generic.pm:140 +msgid "Commit Stubbed" +msgstr "Lagring forkortet" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "Kompilatorrestriksjoner" + +#: html/Admin/Elements/EditScrip:41 +msgid "Condition" +msgstr "Forutsetning" + +#: bin/rt-crontool:109 +msgid "Condition matches..." +msgstr "Forutsetning gjelder..." + +#: lib/RT/Scrip_Overlay.pm:160 +msgid "Condition not found" +msgstr "Forutsetning ikke funnet" + +#: html/Elements/Tabs:50 +msgid "Configuration" +msgstr "Konfigurasjon" + +#: html/SelfService/Prefs.html:33 +msgid "Confirm" +msgstr "Bekreft" + +#: html/Admin/Elements/ModifyUser:60 +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:44 html/Ticket/ModifyAll.html:87 +msgid "Content" +msgstr "Innhold" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "Kunne ikke opprette gruppen" + +#: etc/initialdata:271 +msgid "Correspondence" +msgstr "Korrespondanse" + +#: html/Admin/Elements/ModifyQueue:39 html/Admin/Queues/Modify.html:51 +msgid "Correspondence Address" +msgstr "Korrespondanseaddresse" + +#: lib/RT/Transaction_Overlay.pm:539 +msgid "Correspondence added" +msgstr "Korrespondanse lagt til" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "Korrespondansen ble ikke lagret" + +#: lib/RT/Ticket_Overlay.pm:3525 +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/Ticket_Overlay.pm:3031 lib/RT/Ticket_Overlay.pm:3039 lib/RT/Ticket_Overlay.pm:3055 +msgid "Could not change owner. " +msgstr "Kunne ikke endre eier. " + +#: html/Admin/Elements/EditCustomField:85 html/Admin/Elements/EditCustomFields:166 +#. ($msg) +msgid "Could not create CustomField" +msgstr "Kunne ikke opprette fleksifelt" + +#: html/User/Groups/Modify.html:77 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 +msgid "Could not create group" +msgstr "Kunne ikke opprette gruppe" + +#: html/Admin/Global/Template.html:75 html/Admin/Queues/Template.html:72 +#. ($msg) +msgid "Could not create template: %1" +msgstr "Kunne ikke opprette mal: %1" + +#: lib/RT/Ticket_Overlay.pm:1073 lib/RT/Ticket_Overlay.pm:334 +msgid "Could not create ticket. Queue not set" +msgstr "Kunne ikke opprette sak. Kø ikke satt" + +#: lib/RT/User_Overlay.pm:208 lib/RT/User_Overlay.pm:220 lib/RT/User_Overlay.pm:238 lib/RT/User_Overlay.pm:422 +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:621 lib/RT/Ticket_Overlay.pm:1422 +msgid "Could not find or create that user" +msgstr "Kunne ikke finne eller lage den brukeren" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1501 +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/Groups/Members.html:88 html/User/Groups/Members.html:90 html/User/Groups/Modify.html:82 +msgid "Could not load group" +msgstr "Kunne ikke hente gruppen" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($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:1443 +#. ($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:740 +#. ($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" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +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/Group_Overlay.pm:985 +msgid "Couldn't add member to group" +msgstr "Kunne ikke legge til medlemmmer i gruppen" + +#: lib/RT/Ticket_Overlay.pm:3535 lib/RT/Ticket_Overlay.pm:3591 +#. ($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/Interface/Web.pm:900 +msgid "Couldn't find row" +msgstr "Kunne ikke finne raden" + +#: lib/RT/Group_Overlay.pm:959 +msgid "Couldn't find that principal" +msgstr "Kunne ikke finne primæren" + +#: lib/RT/CustomField_Overlay.pm:240 +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:112 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "Kunne ikke laste %1 fra brukerdatabasen.\\n" + +#: 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." + +#: html/Admin/Groups/GroupRights.html:88 html/Admin/Groups/UserRights.html:75 +#. ($id) +msgid "Couldn't load group %1" +msgstr "Kunne ikke laste gruppen %1" + +#: lib/RT/Link_Overlay.pm:175 lib/RT/Link_Overlay.pm:184 lib/RT/Link_Overlay.pm:211 +msgid "Couldn't load link" +msgstr "Kunne ikke laste linken" + +#: html/Admin/Elements/EditCustomFields:147 html/Admin/Queues/People.html:121 +#. ($id) +msgid "Couldn't load queue" +msgstr "Kunne ikke laste køen" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:72 +#. ($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" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "Kunne ikke finne mal" + +#: html/Admin/Users/Prefs.html:79 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "Kunne ikke laste den brukeren (%1)" + +#: html/SelfService/Display.html:109 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "Kunne ikke laste saken '%1'" + +#: html/Admin/Elements/ModifyUser:86 html/Admin/Users/Modify.html:149 html/User/Prefs.html:98 +msgid "Country" +msgstr "Land" + +#: html/Admin/Elements/CreateUserCalled:26 html/Ticket/Create.html:135 html/Ticket/Create.html:195 +msgid "Create" +msgstr "Opprett" + +#: etc/initialdata:128 +msgid "Create Tickets" +msgstr "Opprett Saker" + +#: html/Admin/Elements/EditCustomField:75 +msgid "Create a CustomField" +msgstr "Oprett et fleksifelt" + +#: html/Admin/Queues/CustomField.html:48 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "Opprett et fleksifelt for køen %1" + +#: html/Admin/Global/CustomField.html:48 +msgid "Create a CustomField which 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:67 html/Admin/Groups/Modify.html:93 +msgid "Create a new group" +msgstr "Opprett en ny gruppe" + +#: html/User/Groups/Modify.html:67 html/User/Groups/Modify.html:92 +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:25 html/Ticket/Create.html:28 html/Ticket/Create.html:36 +msgid "Create a new ticket" +msgstr "Opprett en ny sak" + +#: html/Admin/Users/Modify.html:214 html/Admin/Users/Modify.html:241 +msgid "Create a new user" +msgstr "Opprett en ny bruker" + +#: html/Admin/Queues/Modify.html:103 +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:59 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "Opprett et scrip for køen %1" + +#: html/Admin/Global/Template.html:69 html/Admin/Queues/Template.html:65 +msgid "Create a template" +msgstr "Opprett en mal" + +#: html/SelfService/Create.html:25 +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:130 +msgid "Create new tickets based on this scrip's template" +msgstr "Opprett nye saker basert pÃ¥ dette scripets mal" + +#: html/SelfService/Create.html:78 +msgid "Create ticket" +msgstr "Opprett sak" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Create tickets in this queue" +msgstr "Opprett saker i denne køen" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Create, delete and modify custom fields" +msgstr "Opprett, slett og modifiser fleksifelt" + +#: lib/RT/Queue_Overlay.pm:68 +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:59 +msgid "Create, delete and modify the members of personal groups" +msgstr "Opprett, slett og modifiser medlemmene av personlige grupper" + +#: lib/RT/System.pm:60 +msgid "Create, delete and modify users" +msgstr "Opprett, slett og modifiser brukere" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "CreateTicket" +msgstr "OpprettSak" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1167 +msgid "Created" +msgstr "Opprettet" + +#: html/Admin/Elements/EditCustomField:88 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "Opprettet Fleksifelt %1" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "Opprettet malen %1" + +#: html/Ticket/Elements/EditLinks:28 +msgid "Current Relationships" +msgstr "Eksisterende Forhold" + +#: html/Admin/Elements/EditScrips:30 +msgid "Current Scrips" +msgstr "Eksisterende Scrips" + +#: html/Admin/Groups/Members.html:39 html/User/Groups/Members.html:42 +msgid "Current members" +msgstr "Eksisterende medlemmer" + +#: html/Admin/Elements/SelectRights:29 +msgid "Current rights" +msgstr "Eksisterende rettigheter" + +#: html/Search/Listing.html:71 +msgid "Current search criteria" +msgstr "Eksisterende søkekriterier" + +#: html/Admin/Queues/People.html:41 html/Ticket/Elements/EditPeople:45 +msgid "Current watchers" +msgstr "Eksisterende overvÃ¥kere" + +#: html/Admin/Global/CustomField.html:55 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "Fleksifeltet #%1" + +#: html/Admin/Elements/QueueTabs:53 html/Admin/Elements/SystemTabs:40 html/Admin/Global/index.html:50 html/Ticket/Elements/ShowSummary:36 +msgid "Custom Fields" +msgstr "Fleksifelt" + +#: html/Admin/Elements/EditScrip:73 +msgid "Custom action cleanup code" +msgstr "Avsluttningskode" + +#: html/Admin/Elements/EditScrip:65 +msgid "Custom action preparation code" +msgstr "Forberedelseskode" + +#: html/Admin/Elements/EditScrip:49 +msgid "Custom condition" +msgstr "Forutsetning" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "Fleksifeltet %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "Fleksifeltet %1 har en verdi." + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "Fleksifeltet %1 har ingen verdi." + +#: lib/RT/Ticket_Overlay.pm:3427 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "Fleksifeltet %1 kunne ikke finnes" + +#: html/Admin/Elements/EditCustomFields:197 +msgid "Custom field deleted" +msgstr "Fleksifeltet slettet" + +#: lib/RT/Ticket_Overlay.pm:3577 +msgid "Custom field not found" +msgstr "Fleksifeltet kunne ikke finnes" + +#: lib/RT/CustomField_Overlay.pm:350 +#. ($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:250 +msgid "Custom field value could not be deleted" +msgstr "Fleksifeltets verdi kunne ikke slettes" + +#: lib/RT/CustomField_Overlay.pm:356 +msgid "Custom field value could not be found" +msgstr "Fleksifeltets verdi kunne ikke finnes" + +#: lib/RT/CustomField_Overlay.pm:248 lib/RT/CustomField_Overlay.pm:358 +msgid "Custom field value deleted" +msgstr "Fleksifeltverdi slettet" + +#: lib/RT/Transaction_Overlay.pm:548 +msgid "CustomField" +msgstr "FleksiFelt" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "Datafeil" + +#: html/SelfService/Display.html:39 html/Ticket/Create.html:161 html/Ticket/Elements/ShowSummary:55 html/Ticket/Elements/Tabs:93 html/Ticket/ModifyAll.html:44 +msgid "Dates" +msgstr "Datoer" + +#: lib/RT/Date.pm:422 +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:207 +msgid "Default Autoresponse template" +msgstr "Standard Autosvarmal" + +#: etc/initialdata:281 +msgid "Default admin comment template" +msgstr "Standard Adminkommentarmal" + +#: etc/initialdata:260 +msgid "Default admin correspondence template" +msgstr "Standard Adminkorrespondensemal" + +#: etc/initialdata:272 +msgid "Default correspondence template" +msgstr "Standard korrespondensemal" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "Standard transaksjonsmal" + +#: lib/RT/Transaction_Overlay.pm:643 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "Standard: %1/%2 endret seg fra %3 til %4" + +#: html/User/Delegation.html:25 html/User/Delegation.html:28 +msgid "Delegate rights" +msgstr "Deleger rettigheter" + +#: lib/RT/System.pm:63 +msgid "Delegate specific rights which have been granted to you." +msgstr "Deleger spesifikke rettigheter som har blitt gitt til deg." + +#: lib/RT/System.pm:63 +msgid "DelegateRights" +msgstr "DelegerRettigheter" + +#: html/User/Elements/Tabs:38 +msgid "Delegation" +msgstr "Delegering" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "Slett" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "Delete tickets" +msgstr "Slett saker" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "DeleteTicket" +msgstr "SlettSak" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "Sletting av dette objektet kan føre til inkonsistens" + +#: lib/RT/Queue_Overlay.pm:292 +msgid "Deleting this object would break referential integrity" +msgstr "Sletting av dette objektet vil føre til inkonsistens" + +#: lib/RT/User_Overlay.pm:438 +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:45 +msgid "Deny" +msgstr "Nekt" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/EditLinks:123 html/Ticket/Elements/EditLinks:47 html/Ticket/Elements/ShowDependencies:32 html/Ticket/Elements/ShowLinks:37 +msgid "Depended on by" +msgstr "Avhengighet fra" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "Avhengigheter: \\n" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:180 html/Ticket/Elements/EditLinks:119 html/Ticket/Elements/EditLinks:36 html/Ticket/Elements/ShowDependencies:25 html/Ticket/Elements/ShowLinks:27 +msgid "Depends on" +msgstr "Avhengig av" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "AvhengigAv" + +#: html/Elements/SelectSortOrder:35 +msgid "Descending" +msgstr "Synkende" + +#: html/SelfService/Create.html:73 html/Ticket/Create.html:119 +msgid "Describe the issue below" +msgstr "Beskriv problemet under" + +#: html/Admin/Elements/AddCustomFieldValue:37 html/Admin/Elements/EditCustomField:39 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyQueue:36 html/Admin/Elements/ModifyTemplate:36 html/Admin/Groups/Modify.html:49 html/Admin/Queues/Modify.html:48 html/Elements/SelectGroups:27 html/User/Groups/Modify.html:49 +msgid "Description" +msgstr "Beskrivelse" + +#: NOT FOUND IN SOURCE +msgid "Details" +msgstr "Detaljer" + +#: html/Ticket/Elements/Tabs:85 +msgid "Display" +msgstr "Vis" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Display Access Control List" +msgstr "Vis Rettigheter" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Display Scrip templates for this queue" +msgstr "Vis Scrip-maler for denne køen" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Display Scrips for this queue" +msgstr "Vis Scrip-maler for denne køen" + +#: html/Ticket/Elements/ShowHistory:35 +msgid "Display mode" +msgstr "Visningsmodus" + +#: NOT FOUND IN SOURCE +msgid "Display ticket #%1" +msgstr "Vis saken #%1" + +#: lib/RT/System.pm:54 +msgid "Do anything and everything" +msgstr "Gjør hva som helst" + +#: html/Elements/Refresh:30 +msgid "Don't refresh this page." +msgstr "Ikke last denne siden p nytt" + +#: html/Search/Elements/PickRestriction:114 +msgid "Don't show search results" +msgstr "Ikke vis søkeresultat" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "Download" +msgstr "Last ned" + +#: html/Elements/SelectDateType:32 html/Ticket/Create.html:167 html/Ticket/Elements/EditDates:45 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1171 +msgid "Due" +msgstr "Innen" + +#: NOT FOUND IN SOURCE +msgid "Due date '%1' could not be parsed" +msgstr "Innendato '%1' kunne ikke tolkes"" + +#: bin/rt-commit-handler:754 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "FEIL: Kunne ikke laste sak '%1': %2.\\n" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "Rediger" + +#: NOT FOUND IN SOURCE +msgid "Edit Conditions" +msgstr "Rediger Forhold" + +#: html/Admin/Queues/CustomFields.html:45 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "Rediger fleksifelt for %1" + +#: html/Ticket/ModifyLinks.html:36 +msgid "Edit Relationships" +msgstr "Rediger Forhold" + +#: html/Admin/Queues/Templates.html:42 +#. ($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" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "Rediger scrips" + +#: html/Admin/Global/index.html:46 +msgid "Edit system templates" +msgstr "Rediger systemmal" + +#: NOT FOUND IN SOURCE +msgid "Edit templates for %1" +msgstr "Rediger maler for %1" + +#: html/Admin/Elements/ModifyQueue:25 html/Admin/Queues/Modify.html:118 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "Rediger Konfigurasjon for køen %1" + +#: html/Admin/Elements/ModifyUser:25 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "Redigerer Konfigurasjonen av brukern %1" + +#: html/Admin/Elements/EditCustomField:91 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "Redigerer Fleksifeltet %1" + +#: html/Admin/Groups/Members.html:32 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "Redigerer medlemsskap for gruppen %1"" + +#: html/User/Groups/Members.html:129 +#. ($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/Ticket_Overlay.pm:2622 lib/RT/Ticket_Overlay.pm:2690 +msgid "Either base or target must be specified" +msgstr "Enten base eller mÃ¥l mÃ¥ oppgis" + +#: html/Admin/Users/Modify.html:53 html/Admin/Users/Prefs.html:46 html/Elements/SelectUsers:27 html/Ticket/Elements/AddWatchers:56 html/User/Prefs.html:42 +msgid "Email" +msgstr "Epost" + +#: lib/RT/User_Overlay.pm:188 +msgid "Email address in use" +msgstr "Epostaddresse i bruk" + +#: html/Admin/Elements/ModifyUser:42 +msgid "EmailAddress" +msgstr "EpostAddresse" + +#: html/Admin/Elements/ModifyUser:54 +msgid "EmailEncoding" +msgstr "EpostFormat" + +#: html/Admin/Elements/EditCustomField:51 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "Aktivt (Fjern merkingen for  deaktivere dette fleksifeltet)" + +#: html/Admin/Groups/Modify.html:53 html/User/Groups/Modify.html:53 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "Aktiv (Fjern merkingen for  deaktivere denne gruppen)" + +#: html/Admin/Queues/Modify.html:84 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "Aktiv (Fjern merkingen for  deaktivere denne køen)" + +#: html/Admin/Elements/EditCustomFields:99 +msgid "Enabled Custom Fields" +msgstr "Aktive Fleksifelt" + +#: html/Admin/Queues/index.html:56 +msgid "Enabled Queues" +msgstr "Aktive Køer" + +#: html/Admin/Elements/EditCustomField:107 html/Admin/Groups/Modify.html:117 html/Admin/Queues/Modify.html:140 html/Admin/Users/Modify.html:283 html/User/Groups/Modify.html:117 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "Aktiv status %1" + +#: lib/RT/CustomField_Overlay.pm:428 +msgid "Enter multiple values" +msgstr "Skriv multiple verdier" + +#: lib/RT/CustomField_Overlay.pm:425 +msgid "Enter one value" +msgstr "Skriv en verdi" + +#: html/Ticket/Elements/EditLinks:112 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "Skriv saker og/eller URIer som det skal linkes til. Separer dem med mellomrom" + +#: html/Elements/Login:39 html/SelfService/Error.html:25 html/SelfService/Error.html:26 +msgid "Error" +msgstr "Feil" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "Feilet ved opprettelse av OvervÃ¥ker" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "Feil i parameterne til Queue->AddWatcher" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "Feil i parameterne til Queue->DelWatcher" + +#: lib/RT/Ticket_Overlay.pm:1356 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "Feil i parameterne til Ticket->AddWatcher" + +#: lib/RT/Ticket_Overlay.pm:1532 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "Feil i parameterne til Ticket->DelWatcher" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "Alle" + +#: bin/rt-crontool:194 +msgid "Example:" +msgstr "Eksempel:" + +#: html/Admin/Elements/ModifyUser:64 +msgid "ExternalAuthId" +msgstr "EksternAutId" + +#: html/Admin/Elements/ModifyUser:58 +msgid "ExternalContactInfoId" +msgstr "EksternKontaktInfoId" + +#: html/Admin/Users/Modify.html:73 +msgid "Extra info" +msgstr "Ekstra info" + +#: lib/RT/User_Overlay.pm:302 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "Kunne ikke finne pseudogruppen 'Privilgerte' brukere." + +#: lib/RT/User_Overlay.pm:309 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "Kunne ikke finne 'pseudogruppen 'Upriviligerte' brukere" + +#: bin/rt-crontool:138 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "Kunne ikke laste modulen %1. (%2)" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "Feb." + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "Februar" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "End" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:59 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "Endelig Prioritet" + +#: lib/RT/Ticket_Overlay.pm:1162 +msgid "FinalPriority" +msgstr "EndeligPrioritet" + +#: html/Admin/Queues/People.html:61 html/Ticket/Elements/EditPeople:34 +msgid "Find group whose" +msgstr "Finn grupper hvor" + +#: NOT FOUND IN SOURCE +msgid "Find new/open tickets" +msgstr "Finn nye/Âpne saker" + +#: html/Admin/Queues/People.html:57 html/Admin/Users/index.html:46 html/Ticket/Elements/EditPeople:30 +msgid "Find people whose" +msgstr "Finn folk hvor" + +#: html/Search/Listing.html:108 +msgid "Find tickets" +msgstr "Finn saker" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "Fullfør godkjennelse" + +#: html/Ticket/Elements/Tabs:58 +msgid "First" +msgstr "Først" + +#: html/Search/Listing.html:41 +msgid "First page" +msgstr "Første side" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "Foo Bar Baz" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "Foo!" + +#: html/Search/Bulk.html:87 +msgid "Force change" +msgstr "Tving gjennom endring" + +#: html/Search/Listing.html:106 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "Fant %quant(%1,sak)" + +#: lib/RT/Interface/Web.pm:902 +msgid "Found Object" +msgstr "Fant Objektet" + +#: html/Admin/Elements/ModifyUser:44 +msgid "FreeformContactInfo" +msgstr "FriforkKontaktInfo" + +#: lib/RT/CustomField_Overlay.pm:38 +msgid "FreeformMultiple" +msgstr "FriformMultipel" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformSingle" +msgstr "FriformSingel" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "Fre." + +#: html/Ticket/Elements/ShowHistory:41 html/Ticket/Elements/ShowHistory:51 +msgid "Full headers" +msgstr "Fulle headere" + +#: 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:593 +#. ($New->Name) +msgid "Given to %1" +msgstr "Gitt til %1" + +#: html/Admin/Elements/Tabs:41 html/Admin/index.html:38 +msgid "Global" +msgstr "Global" + +#: NOT FOUND IN SOURCE +msgid "Global Keyword Selections" +msgstr "Globale Nøkkelordvalg" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "Globale Scrip" + +#: html/Admin/Elements/SelectTemplate:38 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "Globale maler: %1" + +#: html/Admin/Elements/EditCustomFields:75 html/Admin/Queues/People.html:59 html/Admin/Queues/People.html:63 html/Admin/Queues/index.html:44 html/Admin/Users/index.html:49 html/Ticket/Elements/EditPeople:32 html/Ticket/Elements/EditPeople:36 html/index.html:41 +msgid "Go!" +msgstr "Start!" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "Gyldig pgp sig fra %1\\n" + +#: html/Search/Listing.html:50 +msgid "Goto page" +msgstr "GÃ¥ til siden" + +#: html/Elements/GotoTicket:25 html/SelfService/Elements/GotoTicket:25 +msgid "Goto ticket" +msgstr "GÃ¥ til saken" + +#: NOT FOUND IN SOURCE +msgid "Grand" +msgstr "Stor" + +#: html/Ticket/Elements/AddWatchers:46 html/User/Elements/DelegateRights:78 +msgid "Group" +msgstr "Gruppe" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "Gruppen %1 %2: %3" + +#: html/Admin/Elements/GroupTabs:45 html/Admin/Elements/QueueTabs:57 html/Admin/Elements/SystemTabs:44 html/Admin/Global/index.html:55 +msgid "Group Rights" +msgstr "Grupperettigheter" + +#: lib/RT/Group_Overlay.pm:965 +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:77 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "Gruppen kunne ikke opprettes: %1" + +#: lib/RT/Group_Overlay.pm:497 +msgid "Group created" +msgstr "Gruppen opprettet" + +#: lib/RT/Group_Overlay.pm:1133 +msgid "Group has no such member" +msgstr "Gruppen har ikke det medlemmet" + +#: lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1429 lib/RT/Ticket_Overlay.pm:1507 +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/SelectNewGroupMembers:35 html/Admin/Elements/Tabs:35 html/Admin/Groups/Members.html:64 html/Admin/Queues/People.html:83 html/Admin/index.html:32 html/User/Groups/Members.html:67 +msgid "Groups" +msgstr "Grupper" + +#: lib/RT/Group_Overlay.pm:971 +msgid "Groups can't be members of their members" +msgstr "Grupper kan ikke være medlemmer av sine medlemmer" + +#: lib/RT/Interface/CLI.pm:73 lib/RT/Interface/CLI.pm:73 +msgid "Hello!" +msgstr "Hallo!" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "Hallo, %1" + +#: html/Ticket/Elements/ShowHistory:30 html/Ticket/Elements/Tabs:88 +msgid "History" +msgstr "Historikk" + +#: html/Admin/Elements/ModifyUser:68 +msgid "HomePhone" +msgstr "HjemmeTelefon" + +#: html/Elements/Tabs:44 +msgid "Homepage" +msgstr "Hjemmeside" + +#: lib/RT/Base.pm:74 +#. (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/Ticket/Elements/ShowBasics:27 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "Id" + +#: html/Admin/Users/Modify.html:44 html/User/Prefs.html:39 +msgid "Identity" +msgstr "Identitet" + +#: etc/upgrade/2.1.71:86 +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" + +#: bin/rt-crontool:190 +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:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "If you've updated anything above, be sure to" +msgstr "Hvis du har oppdatert noe over, sørg for at" + +#: lib/RT/Interface/Web.pm:894 +msgid "Illegal value for %1" +msgstr "Ugyldig verdig for %1" + +#: lib/RT/Interface/Web.pm:897 +msgid "Immutable field" +msgstr "LÃ¥st felt" + +#: html/Admin/Elements/EditCustomFields:74 +msgid "Include disabled custom fields in listing." +msgstr "Inkluder deaktiverte fleksifelt i listen." + +#: html/Admin/Queues/index.html:43 +msgid "Include disabled queues in listing." +msgstr "Inkluder deaktiverte køer i listen." + +#: html/Admin/Users/index.html:47 +msgid "Include disabled users in search." +msgstr "Inkluder deaktiverte brukere i søket." + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "Startprioritet" + +#: lib/RT/Ticket_Overlay.pm:1161 lib/RT/Ticket_Overlay.pm:1163 +msgid "InitialPriority" +msgstr "StartPrioritet" + +#: lib/RT/ScripAction_Overlay.pm:105 +msgid "Input error" +msgstr "Feil i inntasting" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "Interesse registrert" + +#: lib/RT/Ticket_Overlay.pm:3796 +msgid "Internal Error" +msgstr "Intern Feil" + +#: lib/RT/Record.pm:143 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "Intern Feil: %1" + +#: lib/RT/Group_Overlay.pm:644 +msgid "Invalid Group Type" +msgstr "Ugyldig gruppetype" + +#: lib/RT/Principal_Overlay.pm:128 +msgid "Invalid Right" +msgstr "Ugyldige rettigheter" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "Ugyldig Type" + +#: lib/RT/Interface/Web.pm:899 +msgid "Invalid data" +msgstr "Ugyldig data" + +#: lib/RT/Ticket_Overlay.pm:439 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "Ugydlig eier. Setter til 'nobody'." + +#: lib/RT/Scrip_Overlay.pm:134 lib/RT/Template_Overlay.pm:251 +msgid "Invalid queue" +msgstr "Ugyldig kø" + +#: lib/RT/ACE_Overlay.pm:244 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:270 lib/RT/ACE_Overlay.pm:275 +msgid "Invalid right" +msgstr "Ugyldige rettigheter" + +#: lib/RT/Record.pm:118 +#. ($key) +msgid "Invalid value for %1" +msgstr "Ugyldig verdi for %1" + +#: lib/RT/Ticket_Overlay.pm:3434 +msgid "Invalid value for custom field" +msgstr "Ugyldig verdi for fleksifeltet." + +#: lib/RT/Ticket_Overlay.pm:346 +msgid "Invalid value for status" +msgstr "Ugyldig verdi for status" + +#: bin/rt-crontool:191 +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:192 +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:163 +msgid "It takes several arguments:" +msgstr "Det tar flere parametere:" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "Ting som venter p min godkjenning" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "Jan." + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "Januar" + +#: lib/RT/Group_Overlay.pm:149 +msgid "Join or leave this group" +msgstr "Bli med i eller forlat denne gruppen" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "Jul." + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "Juli" + +#: html/Ticket/Elements/Tabs:99 +msgid "Jumbo" +msgstr "Total" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "Jun." + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "Juni" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "Nøkkelord" + +#: html/Admin/Elements/ModifyUser:52 +msgid "Lang" +msgstr "SprÃ¥k" + +#: html/Ticket/Elements/Tabs:73 +msgid "Last" +msgstr "Siste" + +#: html/Ticket/Elements/EditDates:38 html/Ticket/Elements/ShowDates:39 +msgid "Last Contact" +msgstr "Siste Kontakt" + +#: html/Elements/SelectDateType:29 +msgid "Last Contacted" +msgstr "Sist kontaktet" + +#: html/Search/Elements/TicketHeader:41 +msgid "Last Notified" +msgstr "Sist Informert" + +#: html/Elements/SelectDateType:30 +msgid "Last Updated" +msgstr "Sist Oppdatert" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "SistOppdatert" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "Igjen" + +#: html/Admin/Users/Modify.html:83 +msgid "Let this user access RT" +msgstr "La denne brukeren fÃ¥ tilgang til RT" + +#: html/Admin/Users/Modify.html:87 +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" + +#: lib/RT/Ticket_Overlay.pm:2704 +msgid "Link already exists" +msgstr "Lenke finnes alt" + +#: lib/RT/Ticket_Overlay.pm:2716 +msgid "Link could not be created" +msgstr "Lenke kunne ikke opprettes" + +#: lib/RT/Ticket_Overlay.pm:2724 lib/RT/Ticket_Overlay.pm:2734 +#. ($TransString) +msgid "Link created (%1)" +msgstr "Lenke opprettet (%1)" + +#: lib/RT/Ticket_Overlay.pm:2645 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "Lenke slettet (%1)" + +#: lib/RT/Ticket_Overlay.pm:2651 +msgid "Link not found" +msgstr "Lenke ble ikke funnet" + +#: html/Ticket/ModifyLinks.html:25 html/Ticket/ModifyLinks.html:29 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "Knytt sak #%1" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "Knytt sak %1" + +#: html/Ticket/Elements/Tabs:97 +msgid "Links" +msgstr "Lenker" + +#: html/Admin/Users/Modify.html:114 html/User/Prefs.html:85 +msgid "Location" +msgstr "Lokasjon" + +#: lib/RT.pm:159 +#. ($RT::LogDir) +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:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "Logget inn som %1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:35 html/Elements/Login:44 html/Elements/Login:54 +msgid "Login" +msgstr "Innlogging" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "Logg av" + +#: html/Search/Bulk.html:86 +msgid "Make Owner" +msgstr "Sett Eier" + +#: html/Search/Bulk.html:102 +msgid "Make Status" +msgstr "Sett Status" + +#: html/Search/Bulk.html:109 +msgid "Make date Due" +msgstr "Sett tidsfrist" + +#: html/Search/Bulk.html:110 +msgid "Make date Resolved" +msgstr "Sett løsningsdato" + +#: html/Search/Bulk.html:107 +msgid "Make date Started" +msgstr "Sett startdato" + +#: html/Search/Bulk.html:106 +msgid "Make date Starts" +msgstr "Sett startdato" + +#: html/Search/Bulk.html:108 +msgid "Make date Told" +msgstr "Sett informert dato" + +#: html/Search/Bulk.html:99 +msgid "Make priority" +msgstr "Sett prioritet" + +#: html/Search/Bulk.html:100 +msgid "Make queue" +msgstr "Sett Kø" + +#: html/Search/Bulk.html:98 +msgid "Make subject" +msgstr "Sett Emne" + +#: html/Admin/index.html:33 +msgid "Manage groups and group membership" +msgstr "Sett grupper og gruppemedlemsskap" + +#: html/Admin/index.html:39 +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:36 +msgid "Manage queues and queue-specific properties" +msgstr "Rediger køer og kø-spesifike egenskaper" + +#: html/Admin/index.html:30 +msgid "Manage users and passwords" +msgstr "Rediger brukere og passord" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "Mar." + +#: NOT FOUND IN SOURCE +msgid "March" +msgstr "Mars" + +#: NOT FOUND IN SOURCE +msgid "May" +msgstr "Mai" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "Mai." + +#: lib/RT/Group_Overlay.pm:982 +msgid "Member added" +msgstr "Medlem lagt til" + +#: lib/RT/Group_Overlay.pm:1140 +msgid "Member deleted" +msgstr "Medlem slettet" + +#: lib/RT/Group_Overlay.pm:1144 +msgid "Member not deleted" +msgstr "Medlem ikke slettet" + +#: html/Elements/SelectLinkType:26 +msgid "Member of" +msgstr "Medlem av" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "MedlemAv" + +#: html/Admin/Elements/GroupTabs:42 html/User/Elements/GroupTabs:42 +msgid "Members" +msgstr "Medlemmer" + +#: lib/RT/Ticket_Overlay.pm:2891 +msgid "Merge Successful" +msgstr "Fletting vellykket" + +#: lib/RT/Ticket_Overlay.pm:2811 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "Fletting feilet. Kunne ikke sette EffektivId" + +#: html/Ticket/Elements/EditLinks:115 +msgid "Merge into" +msgstr "Flett inn i" + +#: html/Ticket/Update.html:102 +msgid "Message" +msgstr "Melding" + +#: lib/RT/Interface/Web.pm:901 +msgid "Missing a primary key?: %1" +msgstr "Mangler en primærnøkkel?: %1" + +#: html/Admin/Users/Modify.html:169 html/User/Prefs.html:54 +msgid "Mobile" +msgstr "Mobil" + +#: html/Admin/Elements/ModifyUser:72 +msgid "MobilePhone" +msgstr "MobilTelefon" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify Access Control List" +msgstr "Endre Tilgangslister" + +#: NOT FOUND IN SOURCE +msgid "Modify Custom Field %1" +msgstr "Endre Fleksifeltet %1" + +#: html/Admin/Global/CustomFields.html:44 html/Admin/Global/index.html:51 +msgid "Modify Custom Fields which apply to all queues" +msgstr "Endre Fleksifelt som gjelder for alle køer" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "Modify Scrip templates for this queue" +msgstr "Endre Scripmaler for denne køen" + +#: lib/RT/Queue_Overlay.pm:76 +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/Queues/CustomField.html:45 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "Endre et fleksifelt for køen %1" + +#: html/Admin/Global/CustomField.html:53 +msgid "Modify a CustomField which applies to all queues" +msgstr "Endre et fleksifelt som gjelder for alle køer" + +#: html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "Endre et scrip for køen %1" + +#: html/Admin/Global/Scrip.html:48 +msgid "Modify a scrip which applies to all queues" +msgstr "Endre et scrip som gjelder for alle køer" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "Endre datoer for # %1" + +#: html/Ticket/ModifyDates.html:25 html/Ticket/ModifyDates.html:29 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "Endre datoer for #%1" + +#: html/Ticket/ModifyDates.html:35 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "Endre datoer for sak # %1" + +#: html/Admin/Global/GroupRights.html:25 html/Admin/Global/GroupRights.html:28 html/Admin/Global/index.html:56 +msgid "Modify global group rights" +msgstr "Endre globale grupperettigheter" + +#: html/Admin/Global/GroupRights.html:33 +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:25 html/Admin/Global/UserRights.html:28 html/Admin/Global/index.html:60 +msgid "Modify global user rights" +msgstr "Endre globale brukerrettigheter" + +#: html/Admin/Global/UserRights.html:33 +msgid "Modify global user rights." +msgstr "Endre globale brukerrettigheter" + +#: lib/RT/Group_Overlay.pm:146 +msgid "Modify group metadata or delete group" +msgstr "Endre gruppens metadata eller slette gruppen" + +#: html/Admin/Groups/GroupRights.html:25 html/Admin/Groups/GroupRights.html:29 html/Admin/Groups/GroupRights.html:35 +#. ($GroupObj->Name) +msgid "Modify group rights for group %1" +msgstr "Endre grupperettigheter for %1 gruppen" + +#: html/Admin/Queues/GroupRights.html:25 html/Admin/Queues/GroupRights.html:29 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "Endre grupperettigheter %1 køen" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Modify membership roster for this group" +msgstr "Endre medlemsliste for denne gruppen" + +#: lib/RT/System.pm:61 +msgid "Modify one's own RT account" +msgstr "Endre sin egen RT konto" + +#: html/Admin/Queues/People.html:25 html/Admin/Queues/People.html:29 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "Endre hvem som er relatert til %1 køen" + +#: html/Ticket/ModifyPeople.html:25 html/Ticket/ModifyPeople.html:29 html/Ticket/ModifyPeople.html:35 +#. ($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:44 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "Endre scrips for %1 køen" + +#: html/Admin/Global/Scrips.html:44 html/Admin/Global/index.html:42 +msgid "Modify scrips which apply to all queues" +msgstr "Endre scrips som gjelder alle køer" + +#: html/Admin/Global/Template.html:25 html/Admin/Global/Template.html:30 html/Admin/Global/Template.html:81 html/Admin/Queues/Template.html:78 +#. (loc($TemplateObj->Name())) +#. ($TemplateObj->id) +msgid "Modify template %1" +msgstr "Endre mal %1" + +#: html/Admin/Global/Templates.html:44 +msgid "Modify templates which apply to all queues" +msgstr "Endre maler som gjelder for alle køer" + +#: html/Admin/Groups/Modify.html:87 html/User/Groups/Modify.html:86 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "Endre gruppen %1" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Modify the queue watchers" +msgstr "Endre overvÃ¥kere for køen" + +#: html/Admin/Users/Modify.html:236 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "Endre brukeren %1" + +#: html/Ticket/ModifyAll.html:37 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "Endre sak # %1" + +#: html/Ticket/Modify.html:25 html/Ticket/Modify.html:28 html/Ticket/Modify.html:34 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "Endre sak #%1" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Modify tickets" +msgstr "Endre saker" + +#: html/Admin/Groups/UserRights.html:25 html/Admin/Groups/UserRights.html:29 html/Admin/Groups/UserRights.html:35 +#. ($GroupObj->Name) +msgid "Modify user rights for group %1" +msgstr "Endre brukerrettigheter for %1 gruppen" + +#: html/Admin/Queues/UserRights.html:25 html/Admin/Queues/UserRights.html:29 +#. ($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:70 +msgid "ModifyACL" +msgstr "EndreACL" + +#: lib/RT/Group_Overlay.pm:149 +msgid "ModifyOwnMembership" +msgstr "EndreEgetMedlemskap" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "ModifyQueueWatchers" +msgstr "EndreKøOvervÃ¥kere" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "ModifyScrips" +msgstr "EndreScrips" + +#: lib/RT/System.pm:61 +msgid "ModifySelf" +msgstr "EndreSegSelv" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "ModifyTemplate" +msgstr "EndreMal" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "ModifyTicket" +msgstr "EndreSak" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "Man." + +#: html/Ticket/Elements/ShowRequestor:42 +#. ($name) +msgid "More about %1" +msgstr "Mer om %1" + +#: html/Admin/Elements/EditCustomFields:61 +msgid "Move down" +msgstr "Flytt ned" + +#: html/Admin/Elements/EditCustomFields:53 +msgid "Move up" +msgstr "Flytt opp" + +#: html/Admin/Elements/SelectSingleOrMultiple:27 +msgid "Multiple" +msgstr "Flere" + +#: lib/RT/User_Overlay.pm:179 +msgid "Must specify 'Name' attribute" +msgstr "MÃ¥ spesifisere attributten 'Navn'" + +#: html/SelfService/Elements/MyRequests:49 +#. ($friendly_status) +msgid "My %1 tickets" +msgstr "Mine %1 saker" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "Mine saker til godkjenning" + +#: html/Approvals/index.html:25 html/Approvals/index.html:26 +msgid "My approvals" +msgstr "Mine saker til godkjenning" + +#: html/Admin/Elements/AddCustomFieldValue:33 html/Admin/Elements/EditCustomField:34 html/Admin/Elements/ModifyTemplate:28 html/Admin/Elements/ModifyUser:30 html/Admin/Groups/Modify.html:44 html/Elements/SelectGroups:26 html/Elements/SelectUsers:28 html/User/Groups/Modify.html:44 +msgid "Name" +msgstr "Navn" + +#: lib/RT/User_Overlay.pm:186 +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:52 +msgid "Never" +msgstr "Aldri" + +#: html/Elements/Quicksearch:30 +msgid "New" +msgstr "Ny" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:93 html/User/Prefs.html:65 +msgid "New Password" +msgstr "Nytt Passord" + +#: etc/initialdata:317 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "Ny, Venter pÃ¥ Godkjennelse" + +#: html/Ticket/Elements/EditLinks:111 +msgid "New Relationships" +msgstr "Nye forhold" + +#: html/Ticket/Elements/Tabs:36 +msgid "New Search" +msgstr "Nytt Søk" + +#: html/Admin/Global/CustomField.html:41 html/Admin/Global/CustomFields.html:39 html/Admin/Queues/CustomField.html:52 html/Admin/Queues/CustomFields.html:40 +msgid "New custom field" +msgstr "Nytt fleksifelt" + +#: html/Admin/Elements/GroupTabs:54 html/User/Elements/GroupTabs:52 +msgid "New group" +msgstr "Ny gruppe" + +#: html/SelfService/Prefs.html:32 +msgid "New password" +msgstr "Nytt passord" + +#: lib/RT/User_Overlay.pm:647 +msgid "New password notification sent" +msgstr "Melding om nytt passord sendt" + +#: html/Admin/Elements/QueueTabs:70 +msgid "New queue" +msgstr "Ny kø" + +#: NOT FOUND IN SOURCE +msgid "New request" +msgstr "Ny forespørsel" + +#: html/Admin/Elements/SelectRights:42 +msgid "New rights" +msgstr "Nye rettigheter" + +#: html/Admin/Global/Scrip.html:40 html/Admin/Global/Scrips.html:39 html/Admin/Queues/Scrip.html:43 html/Admin/Queues/Scrips.html:53 +msgid "New scrip" +msgstr "Nytt scrip" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "Nytt søk" + +#: html/Admin/Global/Template.html:60 html/Admin/Global/Templates.html:39 html/Admin/Queues/Template.html:58 html/Admin/Queues/Templates.html:50 +msgid "New template" +msgstr "Ny mal" + +#: html/SelfService/Elements/Tabs:48 +msgid "New ticket" +msgstr "Ny sak" + +#: lib/RT/Ticket_Overlay.pm:2778 +msgid "New ticket doesn't exist" +msgstr "Ny sak eksistere ikke" + +#: html/Admin/Elements/UserTabs:52 +msgid "New user" +msgstr "Ny bruker" + +#: html/Admin/Elements/CreateUserCalled:26 +msgid "New user called" +msgstr "Ny bruker kalt" + +#: html/Admin/Queues/People.html:55 html/Ticket/Elements/EditPeople:29 +msgid "New watchers" +msgstr "Ny overvÃ¥ker" + +#: html/Admin/Users/Prefs.html:42 +msgid "New window setting" +msgstr "Instillinger for nytt vindu" + +#: html/Ticket/Elements/Tabs:69 +msgid "Next" +msgstr "Neste" + +#: html/Search/Listing.html:48 +msgid "Next page" +msgstr "Neste side" + +#: html/Admin/Elements/ModifyUser:50 +msgid "NickName" +msgstr "KalleNavn" + +#: html/Admin/Users/Modify.html:63 html/User/Prefs.html:46 +msgid "Nickname" +msgstr "Kallenavn" + +#: html/Admin/Elements/EditCustomField:90 html/Admin/Elements/EditCustomFields:105 +msgid "No CustomField" +msgstr "Ingen FleksiFelt" + +#: html/Admin/Groups/GroupRights.html:84 html/Admin/Groups/UserRights.html:71 +msgid "No Group defined" +msgstr "Ingen grupper definert" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:68 +msgid "No Queue defined" +msgstr "Ingen kø definert" + +#: bin/rt-crontool:56 +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:79 html/Admin/Queues/Template.html:76 +msgid "No Template" +msgstr "Ingen Mal" + +#: bin/rt-commit-handler:764 +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:46 +msgid "No action" +msgstr "Ingen handling" + +#: lib/RT/Interface/Web.pm:896 +msgid "No column specified" +msgstr "Ingen kolonne spesifisert" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "Ingen kommando funnet\\n" + +#: html/Elements/ViewUser:36 html/Ticket/Elements/ShowRequestor:45 +msgid "No comment entered about this user" +msgstr "Ingen kommentar skrevet om denne brukeren" + +#: lib/RT/Ticket_Overlay.pm:2189 lib/RT/Ticket_Overlay.pm:2257 +msgid "No correspondence attached" +msgstr "Ingen korrespondanse vedlagt" + +#: lib/RT/Action/Generic.pm:150 lib/RT/Condition/Generic.pm:176 lib/RT/Search/ActiveTicketsInQueue.pm:56 lib/RT/Search/Generic.pm:113 +#. (ref $self) +msgid "No description for %1" +msgstr "Ingen beskrivelse for %1" + +#: lib/RT/Users_Overlay.pm:145 +msgid "No group specified" +msgstr "Ingen gruppe spesifisert" + +#: lib/RT/User_Overlay.pm:865 +msgid "No password set" +msgstr "Passordet er ikke satt" + +#: lib/RT/Queue_Overlay.pm:259 +msgid "No permission to create queues" +msgstr "Ingen tilgang til Ã¥ opprette køer" + +#: lib/RT/Ticket_Overlay.pm:342 +#. ($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:152 +msgid "No permission to create users" +msgstr "Ikke tilgang til Ã¥ opprette brukere" + +#: html/SelfService/Display.html:118 +msgid "No permission to display that ticket" +msgstr "Ikke tilgang til Ã¥ vise den saken" + +#: html/SelfService/Update.html:52 +msgid "No permission to view update ticket" +msgstr "Ingen tilgang til Ã¥ se oppdatering av saken" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1488 +msgid "No principal specified" +msgstr "Ingen primær spesifisert" + +#: html/Admin/Queues/People.html:154 html/Admin/Queues/People.html:164 +msgid "No principals selected." +msgstr "Ingen primære spesifisert" + +#: html/Admin/Queues/index.html:35 +msgid "No queues matching search criteria found." +msgstr "Det er ingen køer som matcher søkekriteriet" + +#: html/Admin/Elements/SelectRights:81 +msgid "No rights found" +msgstr "Ingen rettigheter funnet" + +#: html/Admin/Elements/SelectRights:33 +msgid "No rights granted." +msgstr "Ingen rettigheter tildelt" + +#: html/Search/Bulk.html:149 +msgid "No search to operate on." +msgstr "Ingen søk  behandle" + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "Ingen saksid oppgitt" + +#: lib/RT/Transaction_Overlay.pm:478 lib/RT/Transaction_Overlay.pm:516 +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:36 +msgid "No users matching search criteria found." +msgstr "Fant ingen brukere som treffer søkekriteriene." + +#: bin/rt-commit-handler:644 +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/Interface/Web.pm:893 +msgid "No value sent to _Set!\\n" +msgstr "Ingen verdi sendt til _Set!\\n" + +#: html/Search/Elements/TicketRow:37 +msgid "Nobody" +msgstr "Ingen" + +#: lib/RT/Interface/Web.pm:898 +msgid "Nonexistant field?" +msgstr "Ukjent felt?" + +#: NOT FOUND IN SOURCE +msgid "Not logged in" +msgstr "Ikke logget inn" + +#: html/Elements/Header:59 +msgid "Not logged in." +msgstr "Ikke logget inn." + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "Ikke satt" + +#: html/NoAuth/Reminder.html:27 +msgid "Not yet implemented." +msgstr "Ikke implementert enda." + +#: NOT FOUND IN SOURCE +msgid "Not yet implemented...." +msgstr "Ikke implementert enda...." + +#: html/Approvals/Elements/Approve:49 +msgid "Notes" +msgstr "Notater" + +#: lib/RT/User_Overlay.pm:650 +msgid "Notification could not be sent" +msgstr "Melding kunne ikke sendes" + +#: etc/initialdata:94 +msgid "Notify AdminCcs" +msgstr "Raporter til AdminCc" + +#: etc/initialdata:90 +msgid "Notify AdminCcs as Comment" +msgstr "Rapporter til AdminCc som kommentar" + +#: etc/initialdata:121 +msgid "Notify Other Recipients" +msgstr "Rapporter til andre mottakere" + +#: etc/initialdata:117 +msgid "Notify Other Recipients as Comment" +msgstr "Rapporter til andre mottakere som kommentar" + +#: etc/initialdata:86 +msgid "Notify Owner" +msgstr "Rapporter til eier" + +#: etc/initialdata:82 +msgid "Notify Owner as Comment" +msgstr "Rapportert til eier som kommentar" + +#: etc/initialdata:319 etc/upgrade/2.1.71:17 +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:78 +msgid "Notify Requestors" +msgstr "Rapporter til kunde" + +#: etc/initialdata:104 +msgid "Notify Requestors and Ccs" +msgstr "Rapporter til Kunder og Cc" + +#: etc/initialdata:99 +msgid "Notify Requestors and Ccs as Comment" +msgstr "Rapporter til Kunder og Cc som kommentar" + +#: etc/initialdata:113 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "Rapporter til Kunder Cc og AdminCc" + +#: etc/initialdata:109 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "Rapporter til Kunder Cc og AdminCc som Kommentar" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "Nov." + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "November" + +#: lib/RT/Record.pm:157 +msgid "Object could not be created" +msgstr "Objekter kunne ikke opprettes" + +#: lib/RT/Record.pm:176 +msgid "Object created" +msgstr "Objektet ble opprettet" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "Okt." + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "Oktober" + +#: html/Elements/SelectDateRelation:35 +msgid "On" +msgstr "Ved" + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "Ved Kommentar" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "Ved Korrespondanse" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "Ved Opprettelse" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "Ved Eierskifte" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "Ved Køendring" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "Ved Løsning" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "Ved statusendring" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "Ved Transaksjon" + +#: html/Approvals/Elements/PendingMyApproval:50 +#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") +msgid "Only show approvals for requests created after %1" +msgstr "Vis kun godkjennelse for saker opprettet etter %1" + +#: html/Approvals/Elements/PendingMyApproval:48 +#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") +msgid "Only show approvals for requests created before %1" +msgstr "Bare vis godkjennelse for saker opprettet før %1" + +#: html/Elements/Quicksearch:31 +msgid "Open" +msgstr "Ã…pne" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "Ã…pne den" + +#: NOT FOUND IN SOURCE +msgid "Open requests" +msgstr "Ã…pne forespørsler" + +#: html/SelfService/Elements/Tabs:42 +msgid "Open tickets" +msgstr "Ã…pne saker" + +#: html/Admin/Users/Prefs.html:41 +msgid "Open tickets (from listing) in a new window" +msgstr "Ã…pne saker (fra utlisting) i et nytt vindu" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in another window" +msgstr "Ã…pne saker (fra utlisting) it et annet vinud" + +#: etc/initialdata:133 +msgid "Open tickets on correspondence" +msgstr "Ã…pne saker ved korrespondanse" + +#: html/Search/Elements/PickRestriction:101 +msgid "Ordering and sorting" +msgstr "Rekkefølge og sortering" + +#: html/Admin/Elements/ModifyUser:46 html/Admin/Users/Modify.html:117 html/Elements/SelectUsers:29 html/User/Prefs.html:86 +msgid "Organization" +msgstr "Organisasjon" + +#: html/Approvals/Elements/Approve:33 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "Opprinnelig sak: #%1" + +#: html/Admin/Elements/ModifyQueue:55 html/Admin/Queues/Modify.html:69 +msgid "Over time, priority moves toward" +msgstr "Over tid beveger prioriteten seg mot" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Own tickets" +msgstr "Eie saker" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "OwnTicket" +msgstr "EieSak" + +#: etc/initialdata:38 html/Elements/MyRequests:32 html/SelfService/Elements/MyRequests:30 html/Ticket/Create.html:48 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/EditPeople:44 html/Ticket/Elements/ShowPeople:27 html/Ticket/Update.html:63 lib/RT/ACE_Overlay.pm:86 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "Eier" + +#: lib/RT/Ticket_Overlay.pm:3071 +#. ($OldOwnerObj->Name, $NewOwnerObj->Name) +msgid "Owner changed from %1 to %2" +msgstr "Eier endret fra %1 til %2" + +#: lib/RT/Transaction_Overlay.pm:582 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "Eier ble tvunget til Ã¥ endres fra %1 til %2" + +#: html/Search/Elements/PickRestriction:31 +msgid "Owner is" +msgstr "Eier er" + +#: html/Admin/Users/Modify.html:174 html/User/Prefs.html:56 +msgid "Pager" +msgstr "Personsøker" + +#: html/Admin/Elements/ModifyUser:74 +msgid "PagerPhone" +msgstr "PersonSøker" + +#: NOT FOUND IN SOURCE +msgid "Parent" +msgstr "Forelder" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/EditLinks:127 html/Ticket/Elements/EditLinks:58 html/Ticket/Elements/ShowLinks:47 +msgid "Parents" +msgstr "Foreldre" + +#: html/Elements/Login:52 html/User/Prefs.html:61 +msgid "Password" +msgstr "Passord" + +#: html/NoAuth/Reminder.html:25 +msgid "Password Reminder" +msgstr "Passordhint" + +#: lib/RT/User_Overlay.pm:169 lib/RT/User_Overlay.pm:868 +msgid "Password too short" +msgstr "For kort passord" + +#: html/Admin/Users/Modify.html:291 html/User/Prefs.html:172 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "Passord: %1" + +#: html/Admin/Users/Modify.html:293 +msgid "Passwords do not match." +msgstr "Passordene stemmer ikke overens." + +#: html/User/Prefs.html:174 +msgid "Passwords do not match. Your password has not been changed" +msgstr "Passordene stemmer ikke overrens. Passordet ble ikke endret" + +#: html/Ticket/Elements/ShowSummary:45 html/Ticket/Elements/Tabs:96 html/Ticket/ModifyAll.html:51 +msgid "People" +msgstr "Folk" + +#: etc/initialdata:126 +msgid "Perform a user-defined action" +msgstr "Kjør en brukerdefinert handling" + +#: lib/RT/ACE_Overlay.pm:231 lib/RT/ACE_Overlay.pm:237 lib/RT/ACE_Overlay.pm:563 lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:583 lib/RT/ACE_Overlay.pm:648 lib/RT/CurrentUser.pm:83 lib/RT/CurrentUser.pm:92 lib/RT/CustomField_Overlay.pm:101 lib/RT/CustomField_Overlay.pm:202 lib/RT/CustomField_Overlay.pm:234 lib/RT/CustomField_Overlay.pm:511 lib/RT/CustomField_Overlay.pm:91 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1099 lib/RT/Group_Overlay.pm:1108 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1163 lib/RT/Group_Overlay.pm:1169 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:904 lib/RT/Group_Overlay.pm:908 lib/RT/Group_Overlay.pm:921 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:126 lib/RT/Scrip_Overlay.pm:137 lib/RT/Scrip_Overlay.pm:197 lib/RT/Scrip_Overlay.pm:430 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:88 lib/RT/Template_Overlay.pm:94 lib/RT/Ticket_Overlay.pm:1341 lib/RT/Ticket_Overlay.pm:1351 lib/RT/Ticket_Overlay.pm:1365 lib/RT/Ticket_Overlay.pm:1518 lib/RT/Ticket_Overlay.pm:1527 lib/RT/Ticket_Overlay.pm:1540 lib/RT/Ticket_Overlay.pm:1875 lib/RT/Ticket_Overlay.pm:2013 lib/RT/Ticket_Overlay.pm:2177 lib/RT/Ticket_Overlay.pm:2244 lib/RT/Ticket_Overlay.pm:2603 lib/RT/Ticket_Overlay.pm:2675 lib/RT/Ticket_Overlay.pm:2769 lib/RT/Ticket_Overlay.pm:2784 lib/RT/Ticket_Overlay.pm:2978 lib/RT/Ticket_Overlay.pm:3206 lib/RT/Ticket_Overlay.pm:3404 lib/RT/Ticket_Overlay.pm:3566 lib/RT/Ticket_Overlay.pm:3618 lib/RT/Ticket_Overlay.pm:3783 lib/RT/Transaction_Overlay.pm:466 lib/RT/Transaction_Overlay.pm:473 lib/RT/Transaction_Overlay.pm:502 lib/RT/Transaction_Overlay.pm:509 lib/RT/User_Overlay.pm:1355 lib/RT/User_Overlay.pm:570 lib/RT/User_Overlay.pm:605 lib/RT/User_Overlay.pm:861 lib/RT/User_Overlay.pm:962 +msgid "Permission Denied" +msgstr "Ingen Tilgang" + +#: html/User/Elements/Tabs:35 +msgid "Personal Groups" +msgstr "Personlige Grupper" + +#: html/User/Groups/index.html:30 html/User/Groups/index.html:40 +msgid "Personal groups" +msgstr "Personlige grupper" + +#: html/User/Elements/DelegateRights:37 +msgid "Personal groups:" +msgstr "Personlige grupper:" + +#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:49 +msgid "Phone numbers" +msgstr "Telefonnummer" + +#: NOT FOUND IN SOURCE +msgid "Placeholder" +msgstr "Stedholder" + +#: NOT FOUND IN SOURCE +msgid "Pref" +msgstr "Pref" + +#: html/Elements/Header:52 html/Elements/Tabs:53 html/SelfService/Elements/Tabs:51 html/SelfService/Prefs.html:25 html/User/Prefs.html:25 html/User/Prefs.html:28 +msgid "Preferences" +msgstr "Instillinger" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "Pref" + +#: lib/RT/Action/Generic.pm:160 +msgid "Prepare Stubbed" +msgstr "Klargjør Forkortet" + +#: html/Ticket/Elements/Tabs:61 +msgid "Prev" +msgstr "Forrige" + +#: html/Search/Listing.html:44 +msgid "Previous page" +msgstr "Forrige side" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "Pri" + +#: lib/RT/ACE_Overlay.pm:133 lib/RT/ACE_Overlay.pm:208 lib/RT/ACE_Overlay.pm:552 +#. ($args{'PrincipalId'}) +msgid "Principal %1 not found." +msgstr "Primær %1 ikke funnet." + +#: html/Search/Elements/PickRestriction:54 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:54 html/Ticket/Elements/ShowBasics:39 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "Prioritet" + +#: html/Admin/Elements/ModifyQueue:51 html/Admin/Queues/Modify.html:65 +msgid "Priority starts at" +msgstr "Prioritet starter pÃ¥" + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "Priviligert" + +#: html/Admin/Users/Modify.html:271 html/User/Prefs.html:163 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "Priviligert status: %1" + +#: html/Admin/Users/index.html:62 +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/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Elements/Quicksearch:29 html/Search/Elements/PickRestriction:46 html/SelfService/Create.html:33 html/Ticket/Create.html:38 html/Ticket/Elements/EditBasics:64 html/Ticket/Elements/ShowBasics:43 html/User/Elements/DelegateRights:80 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "Kø" + +#: html/Admin/Queues/CustomField.html:42 html/Admin/Queues/Scrip.html:50 html/Admin/Queues/Scrips.html:46 html/Admin/Queues/Templates.html:44 +#. ($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/Elements/ModifyQueue:31 html/Admin/Queues/Modify.html:43 +msgid "Queue Name" +msgstr "Kønavn" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "Køscrip" + +#: lib/RT/Queue_Overlay.pm:263 +msgid "Queue already exists" +msgstr "Køen eksisterer allerede" + +#: lib/RT/Queue_Overlay.pm:272 lib/RT/Queue_Overlay.pm:278 +msgid "Queue could not be created" +msgstr "Køen kunne ikke opprettes" + +#: html/Ticket/Create.html:205 +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:282 +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:71 lib/RT/CustomField_Overlay.pm:98 +msgid "Queue not found" +msgstr "Køen ikke funnet" + +#: html/Admin/Elements/Tabs:38 html/Admin/index.html:35 +msgid "Queues" +msgstr "Køer" + +#: html/Elements/Quicksearch:25 +msgid "Quick search" +msgstr "Raskt søk" + +#: html/Elements/Login:44 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "RT %1" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "RT %1 for %2" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +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:25 html/Admin/index.html:26 +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:41 html/SelfService/Error.html:41 +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/index.html:25 html/index.html:28 +msgid "RT at a glance" +msgstr "RT oversikt" + +#: 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" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "RT kunne ikke validere denne PGP signaturen. \\n" + +#: html/Elements/PageLayout:26 +#. ($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" + +#: html/Elements/Login:92 +#. ('2003') +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" + +#: 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" + +#: 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:58 html/Admin/Users/Prefs.html:52 html/User/Prefs.html:44 +msgid "Real Name" +msgstr "Ekte Navn" + +#: html/Admin/Elements/ModifyUser:48 +msgid "RealName" +msgstr "EkteNavn" + +#: html/Ticket/Create.html:185 html/Ticket/Elements/EditLinks:139 html/Ticket/Elements/EditLinks:94 html/Ticket/Elements/ShowLinks:71 +msgid "Referred to by" +msgstr "Referert til av" + +#: html/Elements/SelectLinkType:28 html/Ticket/Create.html:184 html/Ticket/Elements/EditLinks:135 html/Ticket/Elements/EditLinks:80 html/Ticket/Elements/ShowLinks:61 +msgid "Refers to" +msgstr "Refererer til" + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "RefererTil" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "Redefiner" + +#: html/Search/Elements/PickRestriction:27 +msgid "Refine search" +msgstr "Redefiner søket" + +#: html/Elements/Refresh:36 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "Last siden p nytt hvert %1 minutt." + +#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:62 html/Ticket/ModifyAll.html:57 +msgid "Relationships" +msgstr "Forhold" + +#: html/Search/Bulk.html:93 +msgid "Remove AdminCc" +msgstr "Fjern AdminCc" + +#: html/Search/Bulk.html:91 +msgid "Remove Cc" +msgstr "Fjern Cc" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "Fjern Kunde" + +#: html/Ticket/Elements/ShowTransaction:173 html/Ticket/Elements/Tabs:122 +msgid "Reply" +msgstr "Svar" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Reply to tickets" +msgstr "Svar p sak" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "ReplyToTicket" +msgstr "SvarPÂSak" + +#: etc/initialdata:44 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:87 +msgid "Requestor" +msgstr "Kunde" + +#: html/Search/Elements/PickRestriction:38 +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:41 html/Ticket/Create.html:56 html/Ticket/Elements/EditPeople:48 html/Ticket/Elements/ShowPeople:31 +msgid "Requestors" +msgstr "Kunder" + +#: html/Admin/Elements/ModifyQueue:61 html/Admin/Queues/Modify.html:75 +msgid "Requests should be due in" +msgstr "Forespørsler skal være behandlet innen" + +#: html/Elements/Submit:62 +msgid "Reset" +msgstr "Reset" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "Hjemme" + +#: html/Ticket/Elements/Tabs:132 +msgid "Resolve" +msgstr "Løs" + +#: html/Ticket/Update.html:133 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "Løs saknr #%1 (%2)" + +#: etc/initialdata:308 html/Elements/SelectDateType:28 lib/RT/Ticket_Overlay.pm:1170 +msgid "Resolved" +msgstr "Løst" + +#: html/Search/Bulk.html:123 html/Ticket/ModifyAll.html:73 html/Ticket/Update.html:73 +msgid "Response to requestors" +msgstr "Svar til kunder" + +#: html/Elements/ListActions:26 +msgid "Results" +msgstr "Resultater" + +#: html/Search/Elements/PickRestriction:105 +msgid "Results per page" +msgstr "Resultater per side" + +#: html/Admin/Elements/ModifyUser:33 html/Admin/Users/Modify.html:100 html/User/Prefs.html:72 +msgid "Retype Password" +msgstr "Skriv Passord igjen" + +#: 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:613 +msgid "Right Delegated" +msgstr "Rettighet Deligert" + +#: lib/RT/ACE_Overlay.pm:303 +msgid "Right Granted" +msgstr "Rettighet Tildelt" + +#: lib/RT/ACE_Overlay.pm:161 +msgid "Right Loaded" +msgstr "Rettighet lastet" + +#: lib/RT/ACE_Overlay.pm:678 lib/RT/ACE_Overlay.pm:693 +msgid "Right could not be revoked" +msgstr "Rettigheten kunne ikke trekkes tilbake" + +#: html/User/Delegation.html:64 +msgid "Right not found" +msgstr "Rettighet ikke funnet" + +#: lib/RT/ACE_Overlay.pm:543 lib/RT/ACE_Overlay.pm:638 +msgid "Right not loaded." +msgstr "Rettighet ikke lastet." + +#: lib/RT/ACE_Overlay.pm:689 +msgid "Right revoked" +msgstr "Rettighet fjernet" + +#: html/Admin/Elements/UserTabs:41 +msgid "Rights" +msgstr "Rettigheter" + +#: lib/RT/Interface/Web.pm:792 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "Rettigheter kunne ikke tildeles for %1" + +#: lib/RT/Interface/Web.pm:825 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "Rettigheter kunne ikke trekkes tilbake for %1" + +#: html/Admin/Global/GroupRights.html:51 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "Roller" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "RootGodkjenning" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "Lør." + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyLinks.html:39 html/Ticket/ModifyPeople.html:38 +msgid "Save Changes" +msgstr "Lagre Endringer" + +#: NOT FOUND IN SOURCE +msgid "Save changes" +msgstr "Lage endringer" + +#: html/Admin/Global/Scrip.html:49 +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "Scrip #%1" + +#: lib/RT/Scrip_Overlay.pm:176 +msgid "Scrip Created" +msgstr "Scrip Opprettet" + +#: html/Admin/Elements/EditScrips:84 +msgid "Scrip deleted" +msgstr "Scrip slettet" + +#: html/Admin/Elements/QueueTabs:46 html/Admin/Elements/SystemTabs:33 html/Admin/Global/index.html:41 +msgid "Scrips" +msgstr "Scrip" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "Scrip for %1\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "Scrip som gjelder for alle køer" + +#: html/Elements/SimpleSearch:27 html/Search/Elements/PickRestriction:126 html/Ticket/Elements/Tabs:159 +msgid "Search" +msgstr "Søk" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "Søkekriteria" + +#: html/Approvals/Elements/PendingMyApproval:39 +msgid "Search for approvals" +msgstr "Søk etter godkjenninger" + +#: bin/rt-crontool:188 +msgid "Security:" +msgstr "Sikkerhet:" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "SeeQueue" +msgstr "SeKø" + +#: html/Admin/Groups/index.html:40 +msgid "Select a group" +msgstr "Velg en gruppe" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "Velg en kø" + +#: html/Admin/Users/index.html:25 html/Admin/Users/index.html:28 +msgid "Select a user" +msgstr "Velg en bruker" + +#: html/Admin/Global/CustomField.html:38 html/Admin/Global/CustomFields.html:36 +msgid "Select custom field" +msgstr "Velg fleksifelt" + +#: html/Admin/Elements/GroupTabs:52 html/User/Elements/GroupTabs:50 +msgid "Select group" +msgstr "Velg gruppe" + +#: lib/RT/CustomField_Overlay.pm:422 +msgid "Select multiple values" +msgstr "Velg flere verdier" + +#: lib/RT/CustomField_Overlay.pm:419 +msgid "Select one value" +msgstr "Velg en verdi" + +#: html/Admin/Elements/QueueTabs:67 +msgid "Select queue" +msgstr "Velg kø" + +#: html/Admin/Global/Scrip.html:37 html/Admin/Global/Scrips.html:36 html/Admin/Queues/Scrip.html:40 html/Admin/Queues/Scrips.html:50 +msgid "Select scrip" +msgstr "Velg scrip" + +#: html/Admin/Global/Template.html:57 html/Admin/Global/Templates.html:36 html/Admin/Queues/Template.html:55 html/Admin/Queues/Templates.html:47 +msgid "Select template" +msgstr "Velg mal" + +#: html/Admin/Elements/UserTabs:49 +msgid "Select user" +msgstr "Velg bruker" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "SelectMultiple" +msgstr "VelgFlere" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectSingle" +msgstr "VelgEnkelt" + +#: NOT FOUND IN SOURCE +msgid "Self Service" +msgstr "Selvbetjening" + +#: etc/initialdata:114 +msgid "Send mail to all watchers" +msgstr "Send epost til alle overvÃ¥kere" + +#: etc/initialdata:110 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "Send epost til alle overvÃ¥kere som \"kommentar\"" + +#: etc/initialdata:105 +msgid "Send mail to requestors and Ccs" +msgstr "Send epost til kunder og Cc" + +#: etc/initialdata:100 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "Send epost til kunder og Cc som kommentar" + +#: etc/initialdata:79 +msgid "Sends a message to the requestors" +msgstr "Sender en melding til kundene" + +#: etc/initialdata:118 etc/initialdata:122 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "Send epost til eksplisit oppgitte Ccer og Bccer" + +#: etc/initialdata:95 +msgid "Sends mail to the administrative Ccs" +msgstr "Send epost til Administrative Ccer" + +#: etc/initialdata:91 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "Sender epost til de administrative Ccene som kommentar" + +#: etc/initialdata:83 etc/initialdata:87 +msgid "Sends mail to the owner" +msgstr "Sender epost til eieren" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "Sep." + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "September" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "Vis Resultater" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show approved requests" +msgstr "Vis godkjente forespørsler" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show basics" +msgstr "Vis basisinfo" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show denied requests" +msgstr "Vis avviste forespørsler" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show details" +msgstr "Vis detaljer" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show pending requests" +msgstr "Vis ventende forespørsler" + +#: html/Approvals/Elements/PendingMyApproval:46 +msgid "Show requests awaiting other approvals" +msgstr "Vis forespørsler som venter pÃ¥ andre godkjenninger" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Show ticket private commentary" +msgstr "Vis sakens private kommentarer" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "Show ticket summaries" +msgstr "Vis sakssammendrag" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ShowACL" +msgstr "VisACL" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowScrips" +msgstr "VisScrip" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ShowTemplate" +msgstr "VisMal" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "ShowTicket" +msgstr "VisSak" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "ShowTicketComments" +msgstr "VisSaksKommentarer" + +#: lib/RT/Queue_Overlay.pm:82 +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:83 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "Meld deg pÃ¥ som sak/kø AdminCc" + +#: html/Admin/Elements/ModifyUser:39 html/Admin/Users/Modify.html:191 html/Admin/Users/Prefs.html:32 html/User/Prefs.html:112 +msgid "Signature" +msgstr "Signatur" + +#: NOT FOUND IN SOURCE +msgid "Signed in as %1" +msgstr "Logget inn som %1" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Single" +msgstr "Enkel" + +#: html/Elements/Header:51 +msgid "Skip Menu" +msgstr "Dropp Meny" + +#: html/Admin/Elements/AddCustomFieldValue:29 +msgid "Sort" +msgstr "Sorter" + +#: NOT FOUND IN SOURCE +msgid "Sort key" +msgstr "Sorter nøkkel" + +#: html/Search/Elements/PickRestriction:109 +msgid "Sort results by" +msgstr "Sorter resultater etter" + +#: NOT FOUND IN SOURCE +msgid "SortOrder" +msgstr "SorteringsRekkefølge" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "Pauset" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "Startside" + +#: html/Elements/SelectDateType:27 html/Ticket/Elements/EditDates:32 html/Ticket/Elements/ShowDates:35 +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:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:27 html/Ticket/Elements/ShowDates:31 +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/Elements/ModifyUser:82 html/Admin/Users/Modify.html:138 html/User/Prefs.html:94 +msgid "State" +msgstr "Stat" + +#: html/Elements/MyRequests:31 html/Elements/MyTickets:31 html/Search/Elements/PickRestriction:74 html/SelfService/Elements/MyRequests:29 html/SelfService/Update.html:31 html/Ticket/Create.html:42 html/Ticket/Elements/EditBasics:38 html/Ticket/Elements/ShowBasics:31 html/Ticket/Update.html:60 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "Status" + +#: etc/initialdata:294 +msgid "Status Change" +msgstr "Statusendring" + +#: lib/RT/Transaction_Overlay.pm:528 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +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:147 +msgid "Steal" +msgstr "Stjel" + +#: lib/RT/Transaction_Overlay.pm:587 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "StjÃ¥let fra %1 " + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Search/Bulk.html:126 html/Search/Elements/PickRestriction:43 html/SelfService/Create.html:57 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:32 html/Ticket/Create.html:84 html/Ticket/Elements/EditBasics:28 html/Ticket/ModifyAll.html:79 html/Ticket/Update.html:77 lib/RT/Ticket_Overlay.pm:1160 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "Emne" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:609 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "Endre emne til %1" + +#: html/Elements/Submit:59 +msgid "Submit" +msgstr "Oppdater" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "Send Arbeidsflyt" + +#: lib/RT/Group_Overlay.pm:749 +msgid "Succeeded" +msgstr "Lykkes" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "Søn." + +#: lib/RT/System.pm:54 +msgid "SuperUser" +msgstr "SuperBruker" + +#: html/User/Elements/DelegateRights:77 +msgid "System" +msgstr "System" + +#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:567 lib/RT/Interface/Web.pm:791 lib/RT/Interface/Web.pm:824 +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/ACE_Overlay.pm:616 +msgid "System error. Right not delegated." +msgstr "Systemfeil. Rettighet ikke tildelt." + +#: lib/RT/ACE_Overlay.pm:146 lib/RT/ACE_Overlay.pm:223 lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:898 +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/Global/GroupRights.html:35 html/Admin/Groups/GroupRights.html:37 html/Admin/Queues/GroupRights.html:36 +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:318 +msgid "TEST_STRING" +msgstr "TEST_STRENG" + +#: html/Ticket/Elements/Tabs:143 +msgid "Take" +msgstr "Ta" + +#: lib/RT/Transaction_Overlay.pm:573 +msgid "Taken" +msgstr "Tatt" + +#: html/Admin/Elements/EditScrip:81 +msgid "Template" +msgstr "Mal" + +#: html/Admin/Global/Template.html:91 html/Admin/Queues/Template.html:90 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "Mal #%1" + +#: html/Admin/Elements/EditTemplates:89 +msgid "Template deleted" +msgstr "Mal slettet" + +#: lib/RT/Scrip_Overlay.pm:153 +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:347 +msgid "Template parsed" +msgstr "Mal tolket" + +#: html/Admin/Elements/QueueTabs:49 html/Admin/Elements/SystemTabs:36 html/Admin/Global/index.html:45 +msgid "Templates" +msgstr "Maler" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "Maler for %1\\n" + +#: lib/RT/Interface/Web.pm:892 +msgid "That is already the current value" +msgstr "Verdien er allerede satt" + +#: lib/RT/CustomField_Overlay.pm:243 +msgid "That is not a value for this custom field" +msgstr "Det er ikke en verdi for dette fleksifeltet" + +#: lib/RT/Ticket_Overlay.pm:1886 +msgid "That is the same value" +msgstr "Det er den samme verdien" + +#: lib/RT/ACE_Overlay.pm:288 lib/RT/ACE_Overlay.pm:597 +msgid "That principal already has that right" +msgstr "Den primæren har allerede den rettigheten" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($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:1434 +#. ($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:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "Den primæren er ikke en %1 for denne køen" + +#: lib/RT/Ticket_Overlay.pm:1551 +#. ($args{'Type'}) +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:1882 +msgid "That queue does not exist" +msgstr "Den køen eksisterer ikke" + +#: lib/RT/Ticket_Overlay.pm:3210 +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/Ticket_Overlay.pm:3020 +msgid "That user already owns that ticket" +msgstr "Den brukeren eier allerede den saken" + +#: lib/RT/Ticket_Overlay.pm:2986 +msgid "That user does not exist" +msgstr "Den brukeren finnes ikke" + +#: lib/RT/User_Overlay.pm:315 +msgid "That user is already privileged" +msgstr "Den brukeren er allerede priviligert" + +#: lib/RT/User_Overlay.pm:336 +msgid "That user is already unprivileged" +msgstr "Den brukeren er allerede upriviligert" + +#: lib/RT/User_Overlay.pm:328 +msgid "That user is now privileged" +msgstr "Denne brukeren er nÃ¥ priviligert" + +#: lib/RT/User_Overlay.pm:349 +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:3012 +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:206 +msgid "That's not a numerical id" +msgstr "Dette er ikke en numerisk id" + +#: html/SelfService/Display.html:32 html/Ticket/Create.html:150 html/Ticket/Elements/ShowSummary:28 +msgid "The Basics" +msgstr "Detaljer" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The CC of a ticket" +msgstr "CCen til en sak" + +#: lib/RT/ACE_Overlay.pm:89 +msgid "The administrative CC of a ticket" +msgstr "Administrative CCer for en sak" + +#: lib/RT/Ticket_Overlay.pm:2213 +msgid "The comment has been recorded" +msgstr "Kommentarer er lagret" + +#: bin/rt-crontool:198 +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:" + +#: bin/rt-commit-handler:756 bin/rt-commit-handler:766 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "De følgende kommandoene ble ikke behandlet:\\n\\n" + +#: lib/RT/Interface/Web.pm:895 +msgid "The new value has been set." +msgstr "Den nye verdien har blitt satt." + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The owner of a ticket" +msgstr "Eieren av en sak" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The requestor of a ticket" +msgstr "Forespørren av en sak" + +#: html/Admin/Elements/EditUserComments:26 +msgid "These comments aren't generally visible to the user" +msgstr "Disse kommentarene er generelt ikke synlig for brukeren" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "Denne saken %1 %2 (%3)\\n" + +#: bin/rt-crontool:189 +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:251 +msgid "This transaction appears to have no content" +msgstr "Denne transaksjonen ser ikke ut til Ã¥ ha noe innhold" + +#: html/Ticket/Elements/ShowRequestor:47 +#. ($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:391 +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:25 html/Ticket/ModifyAll.html:29 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "Sak #%1 Jumbo oppdatering: %2" + +#: html/Approvals/Elements/ShowDependency:46 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "Sak #%1: %2" + +#: lib/RT/Ticket_Overlay.pm:587 lib/RT/Ticket_Overlay.pm:608 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "Sak %1 opprettet i '%2' køen" + +#: bin/rt-commit-handler:760 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "Sak %1 lastet\\n" + +#: html/Search/Bulk.html:181 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "Sak %1: %2" + +#: html/Ticket/History.html:25 html/Ticket/History.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "Sakshistorikk # %1 %2" + +#: NOT FOUND IN SOURCE +msgid "Ticket Id" +msgstr "SaksId" + +#: etc/initialdata:309 +msgid "Ticket Resolved" +msgstr "Løst Sak" + +#: html/Search/Elements/PickRestriction:63 +msgid "Ticket attachment" +msgstr "Saks-vedlegg" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "Saks-innhold" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "Sakens innholdstype" + +#: lib/RT/Ticket_Overlay.pm:496 lib/RT/Ticket_Overlay.pm:597 +msgid "Ticket could not be created due to an internal error" +msgstr "Saken kunne ikke opprettes pÃ¥ grunn av en intern feil" + +#: lib/RT/Transaction_Overlay.pm:520 +msgid "Ticket created" +msgstr "Sak opprettet" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "Saksopprettelse feilet" + +#: lib/RT/Transaction_Overlay.pm:525 +msgid "Ticket deleted" +msgstr "Sak slettet" + +#: html/REST/1.0/modify:29 html/REST/1.0/update:34 +msgid "Ticket id not found" +msgstr "Saksid ikke funnet" + +#: NOT FOUND IN SOURCE +msgid "Ticket killed" +msgstr "Sak drept" + +#: html/REST/1.0/modify:36 html/REST/1.0/update:41 +msgid "Ticket not found" +msgstr "Sak ikke funnet" + +#: etc/initialdata:295 +msgid "Ticket status changed" +msgstr "Saksstatus endret" + +#: html/Ticket/Update.html:39 +msgid "Ticket watchers" +msgstr "SaksovervÃ¥kere" + +#: html/Elements/Tabs:47 +msgid "Tickets" +msgstr "Saker" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "Saker %1 %2" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "Saker %1 av %2" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Tickets from %1" +msgstr "Saker fra %1" + +#: html/Approvals/Elements/ShowDependency:27 +msgid "Tickets which depend on this approval:" +msgstr "Saker som er avhengige av denne godkjennelsen:" + +#: html/Ticket/Create.html:157 html/Ticket/Elements/EditBasics:48 +msgid "Time Left" +msgstr "Tid Igjen" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:43 +msgid "Time Worked" +msgstr "Arbeidstid" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "Tid igjen" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "Tid Ã¥ vise" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "Arbeidstid" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "TidIgjen" + +#: lib/RT/Ticket_Overlay.pm:1165 +msgid "TimeWorked" +msgstr "ArbeidsTid" + +#: bin/rt-commit-handler:402 +msgid "To generate a diff of this commit:" +msgstr "For Ã¥ generere en diff av denne bekreftelsen:" + +#: bin/rt-commit-handler:391 +msgid "To generate a diff of this commit:\\n" +msgstr "For Ã¥ genere en diff av denne bekreftelsen" + +#: lib/RT/Ticket_Overlay.pm:1168 +msgid "Told" +msgstr "Fortalt" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "Transaksjon" + +#: lib/RT/Transaction_Overlay.pm:640 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "Transaksjon %1 slettet" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "Transaksjon Opprettet" + +#: lib/RT/Transaction_Overlay.pm:89 +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:699 +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:389 +msgid "Tue." +msgstr "Tir." + +#: html/Admin/Elements/EditCustomField:44 html/Ticket/Elements/AddWatchers:33 html/Ticket/Elements/AddWatchers:44 html/Ticket/Elements/AddWatchers:54 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "Type" + +#: lib/RT/ScripCondition_Overlay.pm:104 +msgid "Unimplemented" +msgstr "Uimplementert" + +#: html/Admin/Users/Modify.html:68 +msgid "Unix login" +msgstr "Unix login" + +#: html/Admin/Elements/ModifyUser:62 +msgid "UnixUsername" +msgstr "UnixBrukerNavn" + +#: lib/RT/Attachment_Overlay.pm:265 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "Ukjent InnholdsFormatering %1" + +#: html/Elements/SelectResultsPerPage:37 +msgid "Unlimited" +msgstr "Ubegrenset" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "Upriviligert" + +#: lib/RT/Transaction_Overlay.pm:569 +msgid "Untaken" +msgstr "Ikke tatt" + +#: html/Elements/MyTickets:64 html/Search/Bulk.html:33 +msgid "Update" +msgstr "Oppdater" + +#: html/Admin/Users/Prefs.html:62 +msgid "Update ID" +msgstr "Oppdater ID" + +#: html/Search/Bulk.html:120 html/Ticket/ModifyAll.html:66 html/Ticket/Update.html:67 +msgid "Update Type" +msgstr "Oppdater Type" + +#: html/Search/Listing.html:61 +msgid "Update all these tickets at once" +msgstr "Oppdater alle disse sakene samtidig" + +#: html/Admin/Users/Prefs.html:49 +msgid "Update email" +msgstr "Oppdater epost" + +#: html/Admin/Users/Prefs.html:55 +msgid "Update name" +msgstr "Oppdater navn" + +#: lib/RT/Interface/Web.pm:409 +msgid "Update not recorded." +msgstr "Oppdatering ikke lagret." + +#: html/Search/Bulk.html:81 +msgid "Update selected tickets" +msgstr "Oppdater valgte saker" + +#: html/Admin/Users/Prefs.html:36 +msgid "Update signature" +msgstr "Oppdater signatur" + +#: html/Ticket/ModifyAll.html:63 +msgid "Update ticket" +msgstr "Oppdater sak" + +#: NOT FOUND IN SOURCE +msgid "Update ticket # %1" +msgstr "Ooppdater sak # %1" + +#: html/SelfService/Update.html:25 html/SelfService/Update.html:47 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "Oppdater sak #%1" + +#: html/Ticket/Update.html:135 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "Oppdater sak #%1 (%2)" + +#: lib/RT/Interface/Web.pm:407 +msgid "Update type was neither correspondence nor comment." +msgstr "Oppdateringstype var verken korrespondanse eller kommentar." + +#: html/Elements/SelectDateType:33 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1169 +msgid "Updated" +msgstr "Oppdatert" + +#: 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" + +#: 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:125 etc/initialdata:191 +msgid "User Defined" +msgstr "Bruker Definert" + +#: html/Admin/Users/Prefs.html:59 +msgid "User ID" +msgstr "BrukerID" + +#: html/Elements/SelectUsers:26 +msgid "User Id" +msgstr "BrukerId" + +#: html/Admin/Elements/GroupTabs:47 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/SystemTabs:47 html/Admin/Global/index.html:59 +msgid "User Rights" +msgstr "Brukerrettigheter" + +#: html/Admin/Users/Modify.html:226 +#. ($msg) +msgid "User could not be created: %1" +msgstr "Bruker kunne ikke opprettes: %1" + +#: lib/RT/User_Overlay.pm:262 +msgid "User created" +msgstr "Bruker opprettet" + +#: html/Admin/Global/GroupRights.html:67 html/Admin/Groups/GroupRights.html:54 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "Brukerdefinerte grupper" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "Bruker informert" + +#: html/Admin/Users/Prefs.html:25 html/Admin/Users/Prefs.html:29 +msgid "User view" +msgstr "Brukervisning" + +#: html/Admin/Users/Modify.html:48 html/Elements/Login:51 html/Ticket/Elements/AddWatchers:35 +msgid "Username" +msgstr "Brukernavn" + +#: html/Admin/Elements/SelectNewGroupMembers:26 html/Admin/Elements/Tabs:32 html/Admin/Groups/Members.html:55 html/Admin/Queues/People.html:68 html/Admin/index.html:29 html/User/Groups/Members.html:58 +msgid "Users" +msgstr "Brukere" + +#: html/Admin/Users/index.html:65 +msgid "Users matching search criteria" +msgstr "Brukere som treffer søkekriteria" + +#: html/Search/Elements/PickRestriction:51 +msgid "ValueOfQueue" +msgstr "KøVerdi" + +#: html/Admin/Elements/EditCustomField:57 +msgid "Values" +msgstr "Verdier" + +#: NOT FOUND IN SOURCE +msgid "VrijevormEnkele" +msgstr "VrijevormEnkele" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Watch" +msgstr "OvervÃ¥k" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "WatchAsAdminCc" +msgstr "OvervÃ¥kSomAdminCc" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "OvervÃ¥ker lastet" + +#: html/Admin/Elements/QueueTabs:42 +msgid "Watchers" +msgstr "OvervÃ¥kere" + +#: html/Admin/Elements/ModifyUser:56 +msgid "WebEncoding" +msgstr "WebFormatering" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "Ons." + +#: etc/upgrade/2.1.71:161 +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/upgrade/2.1.71:135 +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:138 +msgid "When a ticket is created" +msgstr "NÃ¥r er sak er opprettet" + +#: etc/upgrade/2.1.71:79 +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:143 +msgid "When anything happens" +msgstr "NÃ¥r noe skjer" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "NÃ¥r en sak er løst" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "NÃ¥r en sak fÃ¥r ny eier" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "NÃ¥r en sak flyttes til en ny kø" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "NÃ¥r en saks status endres" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "NÃ¥r brukerdefinerte forhold intreffer" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "NÃ¥r kommentarer kommer inn" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "NÃ¥r korrespondanse kommer inn" + +#: html/Admin/Users/Modify.html:164 html/User/Prefs.html:52 +msgid "Work" +msgstr "Arbeid" + +#: html/Admin/Elements/ModifyUser:70 +msgid "WorkPhone" +msgstr "ArbeidsTelefon" + +#: html/Ticket/Elements/ShowBasics:35 html/Ticket/Update.html:65 +msgid "Worked" +msgstr "Arbeidet" + +#: lib/RT/Ticket_Overlay.pm:3123 +msgid "You already own this ticket" +msgstr "Du eier allerede denne saken" + +#: html/autohandler:108 +msgid "You are not an authorized user" +msgstr "Du er ikke en autorisert bruker" + +#: lib/RT/Ticket_Overlay.pm:2998 +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" + +#: 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 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "Du fant %1 saker i %2 køen" + +#: html/NoAuth/Logout.html:31 +msgid "You have been logged out of RT." +msgstr "" + +#: html/SelfService/Display.html:78 +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:1895 +msgid "You may not create requests in that queue." +msgstr "Du kan ikke opprette forespørsler i den køen." + +#: html/NoAuth/Logout.html:36 +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:435 etc/upgrade/2.1.71:146 +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:469 etc/upgrade/2.1.71:180 +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:390 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "Din forespørsel ble avvist" + +#: html/autohandler:127 +msgid "Your username or password is incorrect" +msgstr "Ditt brukernavn/passord er ugyldig" + +#: html/Admin/Elements/ModifyUser:84 html/Admin/Users/Modify.html:144 html/User/Prefs.html:96 +msgid "Zip" +msgstr "Zip" + +#: NOT FOUND IN SOURCE +msgid "[no subject]" +msgstr "[ikke noe emne]" + +#: html/User/Elements/DelegateRights:59 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "som tildelt til %1" + +#: html/SelfService/Closed.html:28 +msgid "closed" +msgstr "lukket" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:34 +msgid "contains" +msgstr "inneholder" + +#: html/Elements/SelectAttachmentField:26 +msgid "content" +msgstr "innhold" + +#: html/Elements/SelectAttachmentField:27 +msgid "content-type" +msgstr "innholdstype" + +#: lib/RT/Ticket_Overlay.pm:2282 +msgid "correspondence (probably) not sent" +msgstr "korrespondanse (sansynligvis) ikke sendt" + +#: lib/RT/Ticket_Overlay.pm:2292 +msgid "correspondence sent" +msgstr "korrespondanse sendt" + +#: html/Admin/Elements/ModifyQueue:63 html/Admin/Queues/Modify.html:77 lib/RT/Date.pm:319 +msgid "days" +msgstr "dager" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "død" + +#: html/Search/Listing.html:75 +msgid "delete" +msgstr "slett" + +#: lib/RT/Queue_Overlay.pm:63 +msgid "deleted" +msgstr "slettet" + +#: html/Search/Elements/PickRestriction:68 +msgid "does not match" +msgstr "treffer ikke" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:35 +msgid "doesn't contain" +msgstr "inneholder ikke" + +#: html/Elements/SelectEqualityOperator:38 +msgid "equal to" +msgstr "lik som" + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "usant" + +#: html/Elements/SelectAttachmentField:28 +msgid "filename" +msgstr "filnavn" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "greater than" +msgstr "større enn" + +#: lib/RT/Group_Overlay.pm:194 +#. ($self->Name) +msgid "group '%1'" +msgstr "gruppe '%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "timer" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "id" + +#: html/Elements/SelectBoolean:32 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "is" +msgstr "er" + +#: html/Elements/SelectBoolean:36 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:37 html/Search/Elements/PickRestriction:48 html/Search/Elements/PickRestriction:77 html/Search/Elements/PickRestriction:89 +msgid "isn't" +msgstr "er ikke" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "less than" +msgstr "mindre enn" + +#: html/Search/Elements/PickRestriction:67 +msgid "matches" +msgstr "treffer" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "min" + +#: html/Ticket/Update.html:66 +msgid "minutes" +msgstr "minutter" + +#: bin/rt-commit-handler:765 +msgid "modifications\\n\\n" +msgstr "endringer\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "mÃ¥neder" + +#: lib/RT/Queue_Overlay.pm:58 +msgid "new" +msgstr "ny" + +#: html/Admin/Elements/EditScrips:43 +msgid "no value" +msgstr "ingen verdi" + +#: html/Ticket/Elements/EditWatchers:28 +msgid "none" +msgstr "ingen" + +#: html/Elements/SelectEqualityOperator:38 +msgid "not equal to" +msgstr "ikke lik som" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "ikkelik" + +#: html/SelfService/Elements/MyRequests:61 lib/RT/Queue_Overlay.pm:59 +msgid "open" +msgstr "Ã¥pen" + +#: lib/RT/Group_Overlay.pm:199 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "personlig gruppe '%1' for bruker '%2'" + +#: lib/RT/Group_Overlay.pm:207 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "kø %1 %2" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "rejected" +msgstr "avvist" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "resolved" +msgstr "løst" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "sek" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "stalled" +msgstr "pauset" + +#: lib/RT/Group_Overlay.pm:202 +#. ($self->Type) +msgid "system %1" +msgstr "system %1" + +#: lib/RT/Group_Overlay.pm:213 +#. ($self->Type) +msgid "system group '%1'" +msgstr "systemgruppe '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:42 +msgid "the calling component did not specify why" +msgstr "den kallende komponenten oppga ikke hvorfor" + +#: lib/RT/Group_Overlay.pm:210 +#. ($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:216 +#. ($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:191 +#. ($user->Object->Name) +msgid "user %1" +msgstr "bruker %1" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "uker" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "med malen %1" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "Ã¥r" + +#: NOT FOUND IN SOURCE +msgid "ニックネーム" +msgstr "????" + diff --git a/rt/lib/RT/I18N/pt_br.po b/rt/lib/RT/I18N/pt_br.po new file mode 100644 index 000000000..6962ecbc8 --- /dev/null +++ b/rt/lib/RT/I18N/pt_br.po @@ -0,0 +1,4829 @@ +# $Id: pt_br.po,v 1.1 2003-07-15 13:16:28 ivan Exp $ +msgid "" +msgstr "" +"Project-Id-Version: RT 2.1.x\n" +"POT-Creation-Date: 2002-05-02 11:36+0800\n" +"PO-Revision-Date: 2002-12-07 23:20-02:00\n" +"Last-Translator: Gustavo Chaves <gustavo@cpqd.com.br>\n" +"Language-Team: rt-devel <rt-devel@lists.fsck.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 +msgid "#" +msgstr "#" + +#: html/Admin/Queues/Scrip.html:55 +#. ($QueueObj->id) +msgid "#%1" +msgstr "" + +#: html/Approvals/Elements/ShowDependency:50 html/Ticket/Display.html:26 html/Ticket/Display.html:30 +#. ($Ticket->Id, $Ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "#%1: %2" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "%1 %2" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($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:3438 lib/RT/Transaction_Overlay.pm:559 lib/RT/Transaction_Overlay.pm:601 +#. ($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:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "%1 %2 atrás" + +#: lib/RT/Ticket_Overlay.pm:3444 lib/RT/Transaction_Overlay.pm:566 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1 %2 alterado para %3" + +#: lib/RT/Ticket_Overlay.pm:3441 lib/RT/Transaction_Overlay.pm:562 lib/RT/Transaction_Overlay.pm:607 +#. ($cf->Name, $old_value) +#. ($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:44 html/Admin/Elements/ListGlobalScrips:28 +#. (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/Search/Listing.html:57 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "%1 - %2 apresentados" + +#: bin/rt-crontool:169 bin/rt-crontool:176 bin/rt-crontool:182 +#. ("--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:185 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "%1 - Mostra atualizações de estado no STDOUT" + +#: bin/rt-crontool:179 +#. ("--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:173 +#. ("--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:166 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "%1 - Especifica o módulo de busca que você quer usar" + +#: lib/RT/ScripAction_Overlay.pm:122 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "ScripAction %1 carregado" + +#: lib/RT/Ticket_Overlay.pm:3471 +#. ($args{'Value'}, $cf->Name) +msgid "%1 added as a value for %2" +msgstr "%1 usado 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:117 lib/RT/Link_Overlay.pm:124 +#. ($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:52 lib/RT/Transaction_Overlay.pm:483 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%1 por %2" + +#: lib/RT/Transaction_Overlay.pm:537 lib/RT/Transaction_Overlay.pm:626 lib/RT/Transaction_Overlay.pm:635 lib/RT/Transaction_Overlay.pm:638 +#. ($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 alterado de %2 para %3" + +#: lib/RT/Interface/Web.pm:857 +msgid "%1 could not be set to %2." +msgstr "%1 não pôde ser alterado 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" + +#: lib/RT/Ticket_Overlay.pm:2813 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1 não pôde alterar estado para resolvido. O banco de dados do RT pode estar inconsistente." + +#: html/Elements/MyTickets:25 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "%1 tÃquetes de mais alta prioridade que eu possuo..." + +#: html/Elements/MyRequests:25 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "%1 tÃquetes de mais alta prioridade que eu requeri..." + +#: bin/rt-crontool:161 +#. ($0) +msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." +msgstr "%1 é uma ferramenta para modificar tÃquetes a partir de uma ferramenta de agenda externa, como o cron." + +#: lib/RT/Queue_Overlay.pm:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1 não é mais um %2 para esta fila." + +#: lib/RT/Ticket_Overlay.pm:1570 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 não é mais um %2 para este tÃquete." + +#: lib/RT/Ticket_Overlay.pm:3527 +#. ($args{'Value'}, $cf->Name) +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/ShowBasics:36 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 min" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "%1 não mostrado" + +#: html/User/Elements/DelegateRights:76 +#. (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:42 +#. (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." + +#: NOT FOUND IN SOURCE +msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." +msgstr "%1 colocará como pendente uma BASE [local] se for dependente [ou membro] de uma requisição ligada." + +#: lib/RT/Transaction_Overlay.pm:435 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1: nenhum arquivo anexo especificado" + +#: html/Ticket/Elements/ShowTransaction:102 +#. ($size) +msgid "%1b" +msgstr "%1b" + +#: html/Ticket/Elements/ShowTransaction:99 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "%1k" + +#: lib/RT/Ticket_Overlay.pm:1140 +#. ($args{'Status'}) +msgid "'%1' is an invalid value for status" +msgstr "'%1' é um valor inválido para o 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 "(Assinale para remover o membro do grupo)" + +#: NOT FOUND IN SOURCE +msgid "(Check box to delete scrip)" +msgstr "(Assinale para remover o scrip)" + +#: html/Admin/Elements/EditQueueWatchers:29 html/Admin/Elements/EditScrips:35 html/Admin/Elements/EditTemplates:36 html/Admin/Groups/Members.html:52 html/Ticket/Elements/EditLinks:33 html/Ticket/Elements/EditPeople:46 html/User/Groups/Members.html:55 +msgid "(Check box to delete)" +msgstr "(Assinale para remover)" + +#: NOT FOUND IN SOURCE +msgid "(Check boxes to delete)" +msgstr "(Assinale para remover)" + +#: html/Ticket/Create.html:178 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(Entre com identificadores de tÃquetes ou URLs, separados por espaços)" + +#: html/Admin/Queues/Modify.html:54 html/Admin/Queues/Modify.html:60 +#. ($RT::CorrespondAddress) +#. ($RT::CommentAddress) +msgid "(If left blank, will default to %1" +msgstr "(Se deixado em branco, será entendido como %1" + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "(Sem Valor)" + +#: html/Admin/Elements/EditCustomFields:33 html/Admin/Elements/ListGlobalCustomFields:32 +msgid "(No custom fields)" +msgstr "(Nenhum campo personalizado)" + +#: html/Admin/Groups/Members.html:50 html/User/Groups/Members.html:53 +msgid "(No members)" +msgstr "(Sem membros)" + +#: html/Admin/Elements/EditScrips:32 html/Admin/Elements/ListGlobalScrips:32 +msgid "(No scrips)" +msgstr "(Sem scrips)" + +#: html/Admin/Elements/EditTemplates:31 +msgid "(No templates)" +msgstr "(Nenhum esquema)" + +#: html/Ticket/Update.html:85 +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 "(Envia uma cópia-cega (Bcc) desta atualização para uma lista de endereços de email separados por vÃrgula. <b>Não</b> altera quem vai receber atualizações futuras.)" + +#: 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 "(Envia uma cópia-cega (Bcc) desta atualização para uma lista de endereços eletrônicos separados por vÃrgulas. <b>Não</b> altera o destinatário de atualizações futuras.)" + +#: html/Ticket/Create.html:79 +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 "(Envia uma cópia-cega (Bcc) desta atualização para uma lista de endereços eletrônicos separados por vÃrgulas. <b>Não</b> altera o destinatário de atualizações futuras.)" + +#: html/Ticket/Update.html:81 +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 "(Envia uma cópia-cega (Bcc) desta atualização para uma lista de endereços eletrônicos separados por vÃrgulas. <b>Não</b> altera o destinatário de atualizações futuras.)" + +#: 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 "(Envia uma cópia desta atualização para uma lista de endereços eletrônicos separados por vÃrgulas. <b>Não</b> altera o destinatário de atualizações futuras.)" + +#: html/Ticket/Create.html:69 +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 "(Envia uma cópia desta atualização para uma lista de endereços eletrônicos separados por vÃrgulas. Estas pessoas <b>receberão</b> as atualizações futuras.)" + +#: html/Admin/Groups/index.html:33 html/User/Groups/index.html:33 +msgid "(empty)" +msgstr "(vazio)" + +#: html/Admin/Users/index.html:39 +msgid "(no name listed)" +msgstr "(nenhum nome listado)" + +#: html/Elements/MyRequests:43 html/Elements/MyTickets:45 +msgid "(no subject)" +msgstr "(Sem assunto)" + +#: html/Admin/Elements/SelectRights:48 html/Elements/SelectCustomFieldValue:30 html/Ticket/Elements/EditCustomField:59 html/Ticket/Elements/ShowCustomFields:36 lib/RT/Transaction_Overlay.pm:536 +msgid "(no value)" +msgstr "(sem valor)" + +#: html/Ticket/Elements/EditLinks:116 +msgid "(only one ticket)" +msgstr "(somente um tÃquete)" + +#: html/Elements/MyRequests:52 html/Elements/MyTickets:55 +msgid "(pending approval)" +msgstr "(aguardando aprovação)" + +#: html/Elements/MyRequests:54 html/Elements/MyTickets:57 +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:50 +msgid "(required)" +msgstr "(requerido)" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "(untitled)" +msgstr "(sem tÃtulo)" + +#: 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:32 +msgid "<% $Ticket->Status%>" +msgstr "<% $Ticket->Status%>" + +#: html/Elements/SelectTicketTypes:27 +msgid "<% $_ %>" +msgstr "<% $_ %>" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:26 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"Novo tÃquete em\"> %1" + +#: NOT FOUND IN SOURCE +msgid "??????" +msgstr "" + +#: etc/initialdata:203 +msgid "A blank template" +msgstr "Um modelo vazio" + +#: 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:157 lib/RT/Principal_Overlay.pm:181 +msgid "ACE not found" +msgstr "ACE não encontrado" + +#: lib/RT/ACE_Overlay.pm:831 +msgid "ACEs can only be created and deleted." +msgstr "ACEs só podem ser criados e removidos." + +#: bin/rt-commit-handler:755 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "Abortando para evitar modificações indesejadas no tÃquete.\\n" + +#: html/User/Elements/Tabs:32 +msgid "About me" +msgstr "Sobre mim" + +#: html/Admin/Users/Modify.html:80 +msgid "Access control" +msgstr "Controle de acesso" + +#: html/Admin/Elements/EditScrip:57 +msgid "Action" +msgstr "Ação" + +#: lib/RT/Scrip_Overlay.pm:147 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "Ação %1 não encontrada" + +#: bin/rt-crontool:123 +msgid "Action committed." +msgstr "Ação confirmada." + +#: bin/rt-crontool:119 +msgid "Action prepared..." +msgstr "Ação preparada..." + +#: html/Search/Bulk.html:92 +msgid "Add AdminCc" +msgstr "Adicionar AdminCc" + +#: html/Search/Bulk.html:90 +msgid "Add Cc" +msgstr "Adicionar Cc" + +#: html/Ticket/Create.html:114 html/Ticket/Update.html:100 +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:88 +msgid "Add Requestor" +msgstr "Adicionar Requisitante" + +#: NOT FOUND IN SOURCE +msgid "Add a Scrip to this queue" +msgstr "Adicionar um Scrip nesta 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:55 +msgid "Add a scrip which will apply to all queues" +msgstr "Adicionar um scrip que se aplicará a todas as filas" + +#: html/Search/Bulk.html:118 +msgid "Add comments or replies to selected tickets" +msgstr "Adicionar comentários ou respostas aos tÃquetes selecionados" + +#: html/Admin/Groups/Members.html:42 html/User/Groups/Members.html:39 +msgid "Add members" +msgstr "Adicionar membros" + +#: html/Admin/Queues/People.html:66 html/Ticket/Elements/AddWatchers:28 +msgid "Add new watchers" +msgstr "Adicionar novos observadores" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "AddNextState" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "Principal adicionado como um %1 para esta fila" + +#: lib/RT/Ticket_Overlay.pm:1454 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "Principal adicionado como um %1 para este tÃquete" + +#: html/Admin/Elements/ModifyUser:76 html/Admin/Users/Modify.html:122 html/User/Prefs.html:88 +msgid "Address1" +msgstr "Endereço 1" + +#: html/Admin/Elements/ModifyUser:78 html/Admin/Users/Modify.html:127 html/User/Prefs.html:90 +msgid "Address2" +msgstr "Endereço 2" + +#: html/Ticket/Create.html:74 +msgid "Admin Cc" +msgstr "Admin Cc" + +#: etc/initialdata:274 +msgid "Admin Comment" +msgstr "Comentário do Administrador" + +#: etc/initialdata:256 +msgid "Admin Correspondence" +msgstr "Correspondência do Administrador" + +#: html/Admin/Queues/index.html:25 html/Admin/Queues/index.html:28 +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:26 html/Admin/Global/index.html:28 +msgid "Admin/Global configuration" +msgstr "Administração da configuração global" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "Administração de Grupos" + +#: html/Admin/Queues/Modify.html:25 html/Admin/Queues/Modify.html:29 +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:39 html/Ticket/Update.html:50 lib/RT/ACE_Overlay.pm:89 +msgid "AdminCc" +msgstr "AdminCc" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "AdminComment" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "AdminCorrespondence" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "AdminCustomFields" +msgstr "AdminCustomFields" + +#: lib/RT/Group_Overlay.pm:146 +msgid "AdminGroup" +msgstr "AdminGroup" + +#: lib/RT/Group_Overlay.pm:148 +msgid "AdminGroupMembership" +msgstr "AdminGroupMembership" + +#: lib/RT/System.pm:59 +msgid "AdminOwnPersonalGroups" +msgstr "AdminOwnPersonalGroups" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "AdminQueue" +msgstr "AdminQueue" + +#: lib/RT/System.pm:60 +msgid "AdminUsers" +msgstr "AdminUsers" + +#: html/Admin/Queues/People.html:48 html/Ticket/Elements/EditPeople:54 +msgid "Administrative Cc" +msgstr "Cc Administrativo" + +#: NOT FOUND IN SOURCE +msgid "Admins" +msgstr "Administradores" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "Busca avançada" + +#: html/Elements/SelectDateRelation:36 +msgid "After" +msgstr "Depois" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "Idade" + +#: NOT FOUND IN SOURCE +msgid "Alias" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Alias for" +msgstr "Alias para" + +#: html/Admin/Elements/EditCustomFields:96 +msgid "All Custom Fields" +msgstr "Todos os Campos Personalizados" + +#: html/Admin/Queues/index.html:53 +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/Elements/Tabs:58 +msgid "Approval" +msgstr "Aprovação" + +#: html/Approvals/Display.html:46 html/Approvals/Elements/Approve:27 html/Approvals/Elements/ShowDependency:42 html/Approvals/index.html:65 +#. ($Ticket->Id, $Ticket->Subject) +#. ($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:54 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "Aprovação #%1: Notas não registradas devido a um erro de sistema" + +#: html/Approvals/index.html:52 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "Aprovação #%1: Notas registradas" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "Detalhes da Aprovação" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "Diagrama da aprovação" + +#: html/Approvals/Elements/Approve:45 +msgid "Approve" +msgstr "Aprove" + +#: etc/initialdata:431 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "Notas do aprovador: %1" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "Abr." + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "Abril" + +#: html/Elements/SelectSortOrder:35 +msgid "Ascending" +msgstr "Ascendente" + +#: html/Search/Bulk.html:127 html/SelfService/Update.html:36 html/Ticket/ModifyAll.html:83 html/Ticket/Update.html:100 +msgid "Attach" +msgstr "Anexar" + +#: html/SelfService/Create.html:67 html/Ticket/Create.html:110 +msgid "Attach file" +msgstr "Anexar arquivo" + +#: html/Ticket/Create.html:98 html/Ticket/Update.html:89 +msgid "Attached file" +msgstr "Arquivo anexado" + +#: html/SelfService/Attachment/dhandler:36 +msgid "Attachment '%1' could not be loaded" +msgstr "Arquivo anexo '%1' não pôde ser carregado" + +#: lib/RT/Transaction_Overlay.pm:443 +msgid "Attachment created" +msgstr "Arquivo anexo criado" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "Nome do arquivo anexo" + +#: html/Ticket/Elements/ShowAttachments:26 +msgid "Attachments" +msgstr "Arquivos anexos" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "Ago." + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "Agosto" + +#: html/Admin/Elements/ModifyUser:66 +msgid "AuthSystem" +msgstr "Sistema de autenticação" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "Autoreply" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "Autoreply para Requisitantes" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "AutoreplyToRequestors" + +#: NOT FOUND IN SOURCE +msgid "Bad PGP Signature: %1\\n" +msgstr "Assinatura PGP inválida: %1\\n" + +#: html/SelfService/Attachment/dhandler:40 +msgid "Bad attachment id. Couldn't find attachment '%1'\\n" +msgstr "Identificador de arquivo anexo inválido. Não pude encontrar o arquivo '%1'\\n" + +#: bin/rt-commit-handler:827 +#. ($val) +msgid "Bad data in %1" +msgstr "Dados inválidos em %1" + +#: html/SelfService/Attachment/dhandler:43 +#. ($trans, $AttachmentObj->TransactionId()) +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/GroupTabs:39 html/Admin/Elements/QueueTabs:39 html/Admin/Elements/UserTabs:38 html/Ticket/Elements/Tabs:90 html/User/Elements/GroupTabs:38 +msgid "Basics" +msgstr "Básicos" + +#: html/Ticket/Update.html:83 +msgid "Bcc" +msgstr "Bcc" + +#: html/Admin/Elements/EditScrip:88 html/Admin/Global/GroupRights.html:85 html/Admin/Global/Template.html:46 html/Admin/Global/UserRights.html:54 html/Admin/Groups/GroupRights.html:73 html/Admin/Groups/Members.html:81 html/Admin/Groups/Modify.html:56 html/Admin/Groups/UserRights.html:55 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:45 html/Admin/Queues/UserRights.html:54 html/User/Groups/Modify.html:56 +msgid "Be sure to save your changes" +msgstr "Não se esqueça de salvar suas alterações" + +#: html/Elements/SelectDateRelation:34 lib/RT/CurrentUser.pm:322 +msgid "Before" +msgstr "Antes" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "IncÃcio da Aprovação" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "Vazio" + +#: html/Search/Listing.html:79 +msgid "Bookmarkable URL for this search" +msgstr "URL para guardar esta busca em seus marcadores" + +#: html/Ticket/Elements/ShowHistory:39 html/Ticket/Elements/ShowHistory:45 +msgid "Brief headers" +msgstr "Cabeçalhos resumidos" + +#: html/Search/Bulk.html:25 html/Search/Bulk.html:26 +msgid "Bulk ticket update" +msgstr "Atualização de tÃquetes em lote" + +#: lib/RT/User_Overlay.pm:1331 +msgid "Can not modify system users" +msgstr "Não posso modificar os usuários do sistema" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Can this principal see this queue" +msgstr "Este principal pode ver esta fila" + +#: lib/RT/CustomField_Overlay.pm:144 +msgid "Can't add a custom field value without a name" +msgstr "Não posso adicionar um valor de campo personalizado sem um nome" + +#: lib/RT/Link_Overlay.pm:132 +msgid "Can't link a ticket to itself" +msgstr "Não posso ligar um tÃquete a ele mesmo" + +#: lib/RT/Ticket_Overlay.pm:2787 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "Não posso unir a um tÃquete já unido. Você nunca deve obter este erro" + +#: lib/RT/Ticket_Overlay.pm:2605 lib/RT/Ticket_Overlay.pm:2674 +msgid "Can't specifiy both base and target" +msgstr "Não especifique origem e destino simultaneamente" + +#: html/autohandler:112 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "Não posso criar o usuário: %1" + +#: etc/initialdata:50 html/Admin/Queues/People.html:44 html/SelfService/Create.html:51 html/SelfService/Display.html:50 html/Ticket/Create.html:64 html/Ticket/Elements/EditPeople:51 html/Ticket/Elements/ShowPeople:35 html/Ticket/Update.html:45 html/Ticket/Update.html:78 lib/RT/ACE_Overlay.pm:88 +msgid "Cc" +msgstr "Cc" + +#: html/SelfService/Prefs.html:31 +msgid "Change password" +msgstr "Mudar a senha" + +#: html/Ticket/Create.html:101 html/Ticket/Update.html:92 +msgid "Check box to delete" +msgstr "Assinale para remover" + +#: html/Admin/Elements/SelectRights:31 +msgid "Check box to revoke right" +msgstr "Assinalar para revogar o direito de acesso" + +#: html/Ticket/Create.html:183 html/Ticket/Elements/EditLinks:131 html/Ticket/Elements/EditLinks:69 html/Ticket/Elements/ShowLinks:51 +msgid "Children" +msgstr "Filhos" + +#: html/Admin/Elements/ModifyUser:80 html/Admin/Users/Modify.html:132 html/User/Prefs.html:92 +msgid "City" +msgstr "Cidade" + +#: html/Ticket/Elements/ShowDates:47 +msgid "Closed" +msgstr "Fechado" + +#: html/SelfService/Elements/Tabs:60 +msgid "Closed requests" +msgstr "Requisições fechadas" + +#: NOT FOUND IN SOURCE +msgid "Code" +msgstr "Código" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "Comando não entendido!\\n" + +#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:153 +msgid "Comment" +msgstr "Comentário" + +#: html/Admin/Elements/ModifyQueue:45 html/Admin/Queues/Modify.html:58 +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:86 +msgid "Comment on tickets" +msgstr "Comente sobre os tÃquetes" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "CommentOnTicket" +msgstr "CommentOnTicket" + +#: html/Admin/Elements/ModifyUser:35 +msgid "Comments" +msgstr "Comentários" + +#: html/Ticket/ModifyAll.html:70 html/Ticket/Update.html:70 +msgid "Comments (Not sent to requestors)" +msgstr "Comentários (não enviados aos requisitantes)" + +#: html/Search/Bulk.html:122 +msgid "Comments (not sent to requestors)" +msgstr "Comentários (não enviados aos requisitantes)" + +#: html/Elements/ViewUser:27 +#. ($name) +msgid "Comments about %1" +msgstr "Comentários sobre %1" + +#: html/Admin/Users/Modify.html:185 html/Ticket/Elements/ShowRequestor:44 +msgid "Comments about this user" +msgstr "Comentários sobre este usuário" + +#: lib/RT/Transaction_Overlay.pm:545 +msgid "Comments added" +msgstr "Comentários adicionados" + +#: lib/RT/Action/Generic.pm:140 +msgid "Commit Stubbed" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "Compilar restrições" + +#: html/Admin/Elements/EditScrip:41 +msgid "Condition" +msgstr "Condição" + +#: bin/rt-crontool:109 +msgid "Condition matches..." +msgstr "Condição satisfeita..." + +#: lib/RT/Scrip_Overlay.pm:160 +msgid "Condition not found" +msgstr "Condição não encontrada" + +#: html/Elements/Tabs:52 +msgid "Configuration" +msgstr "Configuração" + +#: html/SelfService/Prefs.html:33 +msgid "Confirm" +msgstr "Confirmar" + +#: html/Admin/Elements/ModifyUser:60 +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:44 html/Ticket/ModifyAll.html:87 +msgid "Content" +msgstr "Conteúdo" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "Não pude criar o grupo" + +#: etc/initialdata:266 +msgid "Correspondence" +msgstr "Correspondência" + +#: html/Admin/Elements/ModifyQueue:39 html/Admin/Queues/Modify.html:51 +msgid "Correspondence Address" +msgstr "Endereço de correspondência" + +#: lib/RT/Transaction_Overlay.pm:541 +msgid "Correspondence added" +msgstr "Correspondência adicionada" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "Correspondência não registrada" + +#: lib/RT/Ticket_Overlay.pm:3458 +msgid "Could not add new custom field value for ticket. " +msgstr "Não pude 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 pude adicionar novo valor de campo personalizado para o tÃquete. %1" + +#: lib/RT/Ticket_Overlay.pm:2963 lib/RT/Ticket_Overlay.pm:2971 lib/RT/Ticket_Overlay.pm:2987 +msgid "Could not change owner. " +msgstr "Não pude alterar o proprietário. " + +#: html/Admin/Elements/EditCustomField:68 html/Admin/Elements/EditCustomFields:166 +#. ($msg) +msgid "Could not create CustomField" +msgstr "Não pude criar CampoPersonalizado" + +#: html/User/Groups/Modify.html:77 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 +msgid "Could not create group" +msgstr "Não pude criar o grupo" + +#: html/Admin/Global/Template.html:75 html/Admin/Queues/Template.html:72 +#. ($msg) +msgid "Could not create template: %1" +msgstr "Não pude criar o modelo: %1" + +#: lib/RT/Ticket_Overlay.pm:1073 lib/RT/Ticket_Overlay.pm:333 +msgid "Could not create ticket. Queue not set" +msgstr "Não pude criar o tÃquete. Fila não selecionada" + +#: lib/RT/User_Overlay.pm:208 lib/RT/User_Overlay.pm:220 lib/RT/User_Overlay.pm:238 lib/RT/User_Overlay.pm:414 +msgid "Could not create user" +msgstr "Não pude criar o usuário" + +#: NOT FOUND IN SOURCE +msgid "Could not create watcher for requestor" +msgstr "Não pude criar um observador para o requisitante" + +#: NOT FOUND IN SOURCE +msgid "Could not find a ticket with id %1" +msgstr "Não pude encontrar um tÃquete com identificador %1" + +#: NOT FOUND IN SOURCE +msgid "Could not find group %1." +msgstr "Não pude encontrar o grupo %1." + +#: lib/RT/Queue_Overlay.pm:621 lib/RT/Ticket_Overlay.pm:1422 +msgid "Could not find or create that user" +msgstr "Não pude encontrar ou criar o usuário" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1501 +msgid "Could not find that principal" +msgstr "Não pude encontrar este principal" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "Não pude encontrar o usuário %1." + +#: html/Admin/Groups/Members.html:88 html/User/Groups/Members.html:90 html/User/Groups/Modify.html:82 +msgid "Could not load group" +msgstr "Não pude carregar o grupo" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "Não pude fazer este principal um %1 para esta fila" + +#: lib/RT/Ticket_Overlay.pm:1443 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "Não pude fazer este principal um %1 para este tÃquete" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "Não pude remover este principal como um %1 para esta fila" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "Não pude remover este principal como um %1 para este tÃquete" + +#: lib/RT/Group_Overlay.pm:985 +msgid "Couldn't add member to group" +msgstr "Não pude adicionar o membro no grupo" + +#: lib/RT/Ticket_Overlay.pm:3468 lib/RT/Ticket_Overlay.pm:3524 +#. ($Msg) +msgid "Couldn't create a transaction: %1" +msgstr "Não pude 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/Interface/Web.pm:866 +msgid "Couldn't find row" +msgstr "Não pude encontrar o registro" + +#: lib/RT/Group_Overlay.pm:959 +msgid "Couldn't find that principal" +msgstr "Não encontrei este principal" + +#: lib/RT/CustomField_Overlay.pm:175 +msgid "Couldn't find that value" +msgstr "Não encontrei este valor" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find that watcher" +msgstr "Não pude encontrar este observador" + +#: NOT FOUND IN SOURCE +msgid "Couldn't find user\\n" +msgstr "Não pude encontrar o usuário\\n" + +#: lib/RT/CurrentUser.pm:112 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "Não pude carregar %1 do banco de dados de usuários.\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load KeywordSelects." +msgstr "Não pude carregar os KeywordSelects." + +#: NOT FOUND IN SOURCE +msgid "Couldn't load RT config file '%1' %2" +msgstr "Não pude carregar o arquivo de configuração do RT '%1' %2" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load Scrips." +msgstr "Não pude carregar os Scrips." + +#: html/Admin/Groups/GroupRights.html:88 html/Admin/Groups/UserRights.html:75 +#. ($id) +msgid "Couldn't load group %1" +msgstr "Não pude carregar o grupo %1" + +#: lib/RT/Link_Overlay.pm:175 lib/RT/Link_Overlay.pm:184 lib/RT/Link_Overlay.pm:211 +msgid "Couldn't load link" +msgstr "Não pude carregar a ligação" + +#: html/Admin/Elements/EditCustomFields:147 html/Admin/Queues/People.html:121 +#. ($id) +msgid "Couldn't load queue" +msgstr "Não pude carregar a fila" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:72 +#. ($id) +msgid "Couldn't load queue %1" +msgstr "Não pude carregar a fila %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "Não pude carregar o scrip" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "Não pude carregar o modelo" + +#: html/Admin/Users/Prefs.html:79 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "Não pude carregar este usuário (%1)" + +#: html/SelfService/Display.html:166 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "Não pude carregar o tÃquete '%1'" + +#: html/Admin/Elements/ModifyUser:86 html/Admin/Users/Modify.html:149 html/User/Prefs.html:98 +msgid "Country" +msgstr "PaÃs" + +#: html/Admin/Elements/CreateUserCalled:26 html/Ticket/Create.html:135 html/Ticket/Create.html:195 +msgid "Create" +msgstr "Criar" + +#: etc/initialdata:128 +msgid "Create Tickets" +msgstr "Criar TÃquetes" + +#: html/Admin/Elements/EditCustomField:58 +msgid "Create a CustomField" +msgstr "Criar um CampoPersonalizado" + +#: html/Admin/Queues/CustomField.html:48 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "Criar um Campo Personalizado para a fila %1" + +#: html/Admin/Global/CustomField.html:48 +msgid "Create a CustomField which 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:67 html/Admin/Groups/Modify.html:93 +msgid "Create a new group" +msgstr "Criar um novo grupo" + +#: html/User/Groups/Modify.html:67 html/User/Groups/Modify.html:92 +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/SelfService/Create.html:30 html/Ticket/Create.html:25 html/Ticket/Create.html:28 html/Ticket/Create.html:36 +msgid "Create a new ticket" +msgstr "Criar um novo tÃquete" + +#: html/Admin/Users/Modify.html:214 html/Admin/Users/Modify.html:241 +msgid "Create a new user" +msgstr "Criar um novo usuário" + +#: html/Admin/Queues/Modify.html:103 +msgid "Create a queue" +msgstr "Criar uma fila" + +#: NOT FOUND IN SOURCE +msgid "Create a queue called" +msgstr "Criar uma fila chamada" + +#: html/SelfService/Create.html:25 html/SelfService/Create.html:27 +msgid "Create a request" +msgstr "Criar uma requisição" + +#: html/Admin/Queues/Scrip.html:59 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "Criar um scrip para a fila %1" + +#: html/Admin/Global/Template.html:69 html/Admin/Queues/Template.html:65 +msgid "Create a template" +msgstr "Criar um modelo" + +#: 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:130 +msgid "Create new tickets based on this scrip's template" +msgstr "Criar novos tÃquetes baseados no esquema deste scrip" + +#: html/SelfService/Create.html:81 +msgid "Create ticket" +msgstr "Criar um tÃquete" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Create tickets in this queue" +msgstr "Criar tÃquetes nesta fila" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Create, delete and modify custom fields" +msgstr "Criar, remover e modificar campos personalizados" + +#: lib/RT/Queue_Overlay.pm:68 +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:59 +msgid "Create, delete and modify the members of personal groups" +msgstr "Criar, remover e modificar os membros de grupos pessoais" + +#: lib/RT/System.pm:60 +msgid "Create, delete and modify users" +msgstr "Criar, remover e modificar usuários" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "CreateTicket" +msgstr "CreateTicket" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1167 +msgid "Created" +msgstr "Criado" + +#: html/Admin/Elements/EditCustomField:71 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "CampoPersonalizado %1 criado" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "Modelo %1 criado" + +#: html/Ticket/Elements/EditLinks:28 +msgid "Current Relationships" +msgstr "Relações atuais" + +#: html/Admin/Elements/EditScrips:30 +msgid "Current Scrips" +msgstr "Scrips correntes" + +#: html/Admin/Groups/Members.html:39 html/User/Groups/Members.html:42 +msgid "Current members" +msgstr "Membros atuais" + +#: html/Admin/Elements/SelectRights:29 +msgid "Current rights" +msgstr "Direitos de acesso atuais" + +#: html/Search/Listing.html:71 +msgid "Current search criteria" +msgstr "Critério de busca atual" + +#: html/Admin/Queues/People.html:41 html/Ticket/Elements/EditPeople:45 +msgid "Current watchers" +msgstr "Observadores atuais" + +#: html/Admin/Global/CustomField.html:55 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "Campo Personalizado #%1" + +#: html/Admin/Elements/QueueTabs:53 html/Admin/Elements/SystemTabs:40 html/Admin/Global/index.html:50 html/Ticket/Elements/ShowSummary:35 +msgid "Custom Fields" +msgstr "Campos Personalizados" + +#: html/Admin/Elements/EditScrip:73 +msgid "Custom action cleanup code" +msgstr "Código de finalização da ação customizada" + +#: html/Admin/Elements/EditScrip:65 +msgid "Custom action preparation code" +msgstr "Código de preparação da ação customizada" + +#: html/Admin/Elements/EditScrip:49 +msgid "Custom condition" +msgstr "Condição customizada" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "Campo personalizado %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "O campo personalizado %1 tem um valor." + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "O campo personalizado %1 não tem valor." + +#: lib/RT/Ticket_Overlay.pm:3360 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "Campo personalizado %1 não encontrado" + +#: html/Admin/Elements/EditCustomFields:197 +msgid "Custom field deleted" +msgstr "Campo personalizado removido" + +#: lib/RT/Ticket_Overlay.pm:3510 +msgid "Custom field not found" +msgstr "Campo personalizado não encontrado" + +#: lib/RT/CustomField_Overlay.pm:283 +#. ($args{'Content'}, $self->Name) +msgid "Custom field value %1 could not be found for custom field %2" +msgstr "O valor de campo %1 não pôde ser encontrado para o campo personalizado %2" + +#: NOT FOUND IN SOURCE +msgid "Custom field value changed from %1 to %2" +msgstr "O valor do campo personalizado foi alterado de %1 para %2" + +#: lib/RT/CustomField_Overlay.pm:185 +msgid "Custom field value could not be deleted" +msgstr "O valor do campo personalizado não pôde ser removido" + +#: lib/RT/CustomField_Overlay.pm:289 +msgid "Custom field value could not be found" +msgstr "O valor de campo personalizado não pôde ser encontrado" + +#: lib/RT/CustomField_Overlay.pm:183 lib/RT/CustomField_Overlay.pm:291 +msgid "Custom field value deleted" +msgstr "Valor do campo personalizado removido" + +#: lib/RT/Transaction_Overlay.pm:550 +msgid "CustomField" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "Erro de dado" + +#: html/Ticket/Create.html:161 html/Ticket/Elements/ShowSummary:53 html/Ticket/Elements/Tabs:93 html/Ticket/ModifyAll.html:44 +msgid "Dates" +msgstr "Datas" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "Dez." + +#: NOT FOUND IN SOURCE +msgid "December" +msgstr "Dezembro" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "Esquema Padrão de Autoresposta" + +#: etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "Esquema padrão de Autoresposta" + +#: etc/initialdata:275 +msgid "Default admin comment template" +msgstr "Esquema padrão de comentário administrativo" + +#: etc/initialdata:257 +msgid "Default admin correspondence template" +msgstr "Esquema padrão de correspondência administrativa" + +#: etc/initialdata:267 +msgid "Default correspondence template" +msgstr "Esquema padrão de correspondência" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "Esquema padrão de transação" + +#: lib/RT/Transaction_Overlay.pm:645 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "Padrão: %1/%2 mudou de %3 para %4" + +#: html/User/Delegation.html:25 html/User/Delegation.html:28 +msgid "Delegate rights" +msgstr "Delegar direitos de acesso" + +#: lib/RT/System.pm:63 +msgid "Delegate specific rights which have been granted to you." +msgstr "Delegar direitos especÃficos que foram outorgados a você." + +#: lib/RT/System.pm:63 +msgid "DelegateRights" +msgstr "DelegateRights" + +#: html/User/Elements/Tabs:38 +msgid "Delegation" +msgstr "Delegação" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "Remover" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "Delete tickets" +msgstr "Remover tÃquetes" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "DeleteTicket" +msgstr "DeleteTicket" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "Ao remover este objeto você pode quebrar a integridade referencial" + +#: lib/RT/Queue_Overlay.pm:292 +msgid "Deleting this object would break referential integrity" +msgstr "Ao remover este objeto você quebra a integridade referencial" + +#: lib/RT/User_Overlay.pm:430 +msgid "Deleting this object would violate referential integrity" +msgstr "Ao remover este objeto você 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:46 +msgid "Deny" +msgstr "Negue" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/EditLinks:123 html/Ticket/Elements/EditLinks:47 html/Ticket/Elements/ShowDependencies:32 html/Ticket/Elements/ShowLinks:35 +msgid "Depended on by" +msgstr "Dependem deste tÃquete" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "Dependências: \\n" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:180 html/Ticket/Elements/EditLinks:119 html/Ticket/Elements/EditLinks:36 html/Ticket/Elements/ShowDependencies:25 html/Ticket/Elements/ShowLinks:27 +msgid "Depends on" +msgstr "Depende de" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "DependsOn" + +#: html/Elements/SelectSortOrder:35 +msgid "Descending" +msgstr "Descendente" + +#: html/SelfService/Create.html:75 html/Ticket/Create.html:119 +msgid "Describe the issue below" +msgstr "Descreva o problema abaixo" + +#: html/Admin/Elements/AddCustomFieldValue:27 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyQueue:36 html/Admin/Elements/ModifyTemplate:36 html/Admin/Groups/Modify.html:49 html/Admin/Queues/Modify.html:48 html/Elements/SelectGroups:27 html/User/Groups/Modify.html:49 +msgid "Description" +msgstr "Descrição" + +#: html/SelfService/Elements/MyRequests:44 +msgid "Details" +msgstr "Detalhes" + +#: html/Ticket/Elements/Tabs:85 +msgid "Display" +msgstr "Apresentação" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Display Access Control List" +msgstr "Mostrar Lista de Controle de Acesso" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Display Scrip templates for this queue" +msgstr "Mostras os esquemas de Scrip para esta fila" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Display Scrips for this queue" +msgstr "Mostrar os Scrips para esta fila" + +#: html/Ticket/Elements/ShowHistory:35 +msgid "Display mode" +msgstr "Modo de apresentação" + +#: html/SelfService/Display.html:25 html/SelfService/Display.html:29 +#. ($Ticket->id) +msgid "Display ticket #%1" +msgstr "Apresentar o tÃquete #%1" + +#: lib/RT/System.pm:54 +msgid "Do anything and everything" +msgstr "Fazer qualquer coisa" + +#: html/Elements/Refresh:30 +msgid "Don't refresh this page." +msgstr "Não recarregar esta página." + +#: html/Search/Elements/PickRestriction:114 +msgid "Don't show search results" +msgstr "Não mostrar resultados da busca" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "Download" +msgstr "Baixar" + +#: html/Elements/SelectDateType:32 html/Ticket/Create.html:167 html/Ticket/Elements/EditDates:45 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1171 +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" + +#: bin/rt-commit-handler:754 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "ERRO: Não pude carregar o tÃquete '%1': %2.\\n" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "Editar" + +#: NOT FOUND IN SOURCE +msgid "Edit Conditions" +msgstr "Editar Condições" + +#: html/Admin/Queues/CustomFields.html:45 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "Editar Campos Personalizados para %1" + +#: html/Ticket/ModifyLinks.html:36 +msgid "Edit Relationships" +msgstr "Editar Relacionamentos" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "Editar Esquemas para a fila %1" + +#: NOT FOUND IN SOURCE +msgid "Edit keywords" +msgstr "Editar palavras chave" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "Editar scrips" + +#: html/Admin/Global/index.html:46 +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" + +#: html/Admin/Elements/ModifyQueue:25 html/Admin/Queues/Modify.html:117 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "Editando a configuração para a fila %1" + +#: html/Admin/Elements/ModifyUser:25 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "Editando a configuração para o usuário %1" + +#: html/Admin/Elements/EditCustomField:74 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "Editando o campo %1" + +#: html/Admin/Groups/Members.html:32 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "Editando os membros do grupo %1" + +#: html/User/Groups/Members.html:129 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "Editando os membros do grupo pessoal %1" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "Editando o modelo %1" + +#: lib/RT/Ticket_Overlay.pm:2615 lib/RT/Ticket_Overlay.pm:2683 +msgid "Either base or target must be specified" +msgstr "Você deve especificar a origem ou o destinatário" + +#: html/Admin/Users/Modify.html:53 html/Admin/Users/Prefs.html:46 html/Elements/SelectUsers:27 html/Ticket/Elements/AddWatchers:56 html/User/Prefs.html:42 +msgid "Email" +msgstr "Email" + +#: lib/RT/User_Overlay.pm:188 +msgid "Email address in use" +msgstr "O endereço de email já está em uso" + +#: html/Admin/Elements/ModifyUser:42 +msgid "EmailAddress" +msgstr "Correio Eletrônico" + +#: html/Admin/Elements/ModifyUser:54 +msgid "EmailEncoding" +msgstr "Codificação de Email" + +#: html/Admin/Elements/EditCustomField:36 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "Habilitado (Deselecionando este Ãtem desabilita este campo personalizado)" + +#: html/Admin/Groups/Modify.html:53 html/User/Groups/Modify.html:53 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "Habilitado (Deselecionando este Ãtem desabilita este grupo)" + +#: html/Admin/Queues/Modify.html:84 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "Habilitado (desassinalando desabilita esta fila)" + +#: html/Admin/Elements/EditCustomFields:99 +msgid "Enabled Custom Fields" +msgstr "Campos Personalizados Habilitados" + +#: html/Admin/Queues/index.html:56 +msgid "Enabled Queues" +msgstr "Filas Habilitadas" + +#: html/Admin/Elements/EditCustomField:90 html/Admin/Groups/Modify.html:117 html/Admin/Queues/Modify.html:138 html/Admin/Users/Modify.html:283 html/User/Groups/Modify.html:117 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "Estado %1 habilitado" + +#: lib/RT/CustomField_Overlay.pm:361 +msgid "Enter multiple values" +msgstr "Entre com múltiplos valores" + +#: lib/RT/CustomField_Overlay.pm:358 +msgid "Enter one value" +msgstr "Entre com um valor" + +#: html/Ticket/Elements/EditLinks:112 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "Entre com identificadores de tÃquete ou URIs que levam ao tÃquete. Separe entradas múltiplas com espaços." + +#: html/Elements/Login:29 html/SelfService/Error.html:25 html/SelfService/Error.html:26 +msgid "Error" +msgstr "Erro" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "Erro ao adicionar um observador" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "Erro nos parâmetros para Queue->AddWatcher" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "Erro nos parâmetros para Queue->DelWatcher" + +#: lib/RT/Ticket_Overlay.pm:1356 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "Erro nos parâmetros para Ticket->AddWatcher" + +#: lib/RT/Ticket_Overlay.pm:1532 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "Erro nos parâmetros para Ticket->DelWatcher" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "Todos" + +#: bin/rt-crontool:194 +msgid "Example:" +msgstr "Exemplo:" + +#: html/Admin/Elements/ModifyUser:64 +msgid "ExternalAuthId" +msgstr "ExternalAuthId" + +#: html/Admin/Elements/ModifyUser:58 +msgid "ExternalContactInfoId" +msgstr "ExternalContactInfoId" + +#: html/Admin/Users/Modify.html:73 +msgid "Extra info" +msgstr "Informação adicional" + +#: lib/RT/User_Overlay.pm:302 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "Não pude encontrar o pseudogrupo de usuários 'Privileged'." + +#: lib/RT/User_Overlay.pm:309 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "Não pude encontrar o pseudogrupo de usuários 'Unprivileged'" + +#: bin/rt-crontool:138 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "Falhou ao carregar o módulo %1. (%2)" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "Fev." + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "Fevereiro" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "Fin" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:59 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "Prioridade Final" + +#: lib/RT/Ticket_Overlay.pm:1162 +msgid "FinalPriority" +msgstr "FinalPriority" + +#: html/Admin/Queues/People.html:61 html/Ticket/Elements/EditPeople:34 +msgid "Find group whose" +msgstr "Encontrar o grupo cujo" + +#: html/Elements/Quicksearch:25 +msgid "Find new/open tickets" +msgstr "Encontrar tÃquetes novos/abertos" + +#: html/Admin/Queues/People.html:57 html/Admin/Users/index.html:46 html/Ticket/Elements/EditPeople:30 +msgid "Find people whose" +msgstr "Encontrar pessoas que" + +#: html/Search/Listing.html:108 +msgid "Find tickets" +msgstr "Encontrar tÃquetes" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "Terminar Aprovação" + +#: html/Ticket/Elements/Tabs:58 +msgid "First" +msgstr "Primeiro" + +#: html/Search/Listing.html:41 +msgid "First page" +msgstr "Primeira página" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "Foo Bar Baz" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "Foo!" + +#: html/Search/Bulk.html:87 +msgid "Force change" +msgstr "Force alteração" + +#: html/Search/Listing.html:106 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "Encontrado %quant(%1,tÃquete)" + +#: lib/RT/Interface/Web.pm:868 +msgid "Found Object" +msgstr "Objeto Encontrado" + +#: html/Admin/Elements/ModifyUser:44 +msgid "FreeformContactInfo" +msgstr "FreeformContactInfo" + +#: lib/RT/CustomField_Overlay.pm:38 +msgid "FreeformMultiple" +msgstr "FreeformMultiple" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformSingle" +msgstr "FreeformSingle" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "Sex." + +#: html/Ticket/Elements/ShowHistory:41 html/Ticket/Elements/ShowHistory:51 +msgid "Full headers" +msgstr "Cabeçalhos completos" + +#: 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:595 +#. ($New->Name) +msgid "Given to %1" +msgstr "Dado a %1" + +#: html/Admin/Elements/Tabs:41 html/Admin/index.html:38 +msgid "Global" +msgstr "Global" + +#: 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/Elements/SelectTemplate:38 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "Esquema global: %1" + +#: html/Admin/Elements/EditCustomFields:75 html/Admin/Queues/People.html:59 html/Admin/Queues/People.html:63 html/Admin/Queues/index.html:44 html/Admin/Users/index.html:49 html/Ticket/Elements/EditPeople:32 html/Ticket/Elements/EditPeople:36 html/index.html:41 +msgid "Go!" +msgstr "Ir!" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "Assinatura pgp válida de %1\\n" + +#: html/Search/Listing.html:50 +msgid "Goto page" +msgstr "Ir para a página" + +#: html/Elements/GotoTicket:25 html/SelfService/Elements/GotoTicket:25 +msgid "Goto ticket" +msgstr "Ir para o tÃquete" + +#: NOT FOUND IN SOURCE +msgid "Grand" +msgstr "" + +#: html/Ticket/Elements/AddWatchers:46 html/User/Elements/DelegateRights:78 +msgid "Group" +msgstr "Grupo" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "Grupo %1 %2: %3" + +#: html/Admin/Elements/GroupTabs:45 html/Admin/Elements/QueueTabs:57 html/Admin/Elements/SystemTabs:44 html/Admin/Global/index.html:55 +msgid "Group Rights" +msgstr "Direitos de Acesso do Grupo" + +#: lib/RT/Group_Overlay.pm:965 +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:77 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "O grupo não pôde ser criado: %1" + +#: lib/RT/Group_Overlay.pm:497 +msgid "Group created" +msgstr "Grupo criado" + +#: lib/RT/Group_Overlay.pm:1133 +msgid "Group has no such member" +msgstr "O grupo não contém este membro" + +#: lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1429 lib/RT/Ticket_Overlay.pm:1507 +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/SelectNewGroupMembers:35 html/Admin/Elements/Tabs:35 html/Admin/Groups/Members.html:64 html/Admin/Queues/People.html:83 html/Admin/index.html:32 html/User/Groups/Members.html:67 +msgid "Groups" +msgstr "Grupos" + +#: lib/RT/Group_Overlay.pm:971 +msgid "Groups can't be members of their members" +msgstr "Grupos não podem ser membros de seus próprios membros" + +#: lib/RT/Interface/CLI.pm:73 lib/RT/Interface/CLI.pm:73 +msgid "Hello!" +msgstr "Olá!" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "Olá, %1" + +#: html/Ticket/Elements/ShowHistory:30 html/Ticket/Elements/Tabs:88 +msgid "History" +msgstr "Histórico" + +#: html/Admin/Elements/ModifyUser:68 +msgid "HomePhone" +msgstr "Telefone Residencial" + +#: html/Elements/Tabs:46 +msgid "Homepage" +msgstr "Homepage" + +#: lib/RT/Base.pm:74 +#. (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/Ticket/Elements/ShowBasics:27 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "Identificador" + +#: html/Admin/Users/Modify.html:44 html/User/Prefs.html:39 +msgid "Identity" +msgstr "Identidade" + +#: etc/upgrade/2.1.71:86 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "Se uma aprovação é rejeitada, rejeite a original e remova as aprovações pendentes" + +#: bin/rt-crontool:190 +msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT." +msgstr "Se esta ferramenta fosse setgid, um usuário local mal-intencionado poderia usá-la para obter acesso administrativo ao RT." + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +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/Interface/Web.pm:860 +msgid "Illegal value for %1" +msgstr "Valor ilegal para %1" + +#: lib/RT/Interface/Web.pm:863 +msgid "Immutable field" +msgstr "Campo imutável" + +#: html/Admin/Elements/EditCustomFields:74 +msgid "Include disabled custom fields in listing." +msgstr "Incluir campoas personalizados desabilitados na listagem." + +#: html/Admin/Queues/index.html:43 +msgid "Include disabled queues in listing." +msgstr "Incluir filas desabilitadas na listagem." + +#: html/Admin/Users/index.html:47 +msgid "Include disabled users in search." +msgstr "Incluir usuários desabilitados na busca." + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "Prioridade Inicial" + +#: lib/RT/Ticket_Overlay.pm:1161 lib/RT/Ticket_Overlay.pm:1163 +msgid "InitialPriority" +msgstr "InitialPriority" + +#: lib/RT/ScripAction_Overlay.pm:105 +msgid "Input error" +msgstr "Erro de entrada" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "Interesse notado" + +#: lib/RT/Ticket_Overlay.pm:3729 +msgid "Internal Error" +msgstr "Erro Interno" + +#: lib/RT/Record.pm:143 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "Erro Interno: %1" + +#: lib/RT/Group_Overlay.pm:644 +msgid "Invalid Group Type" +msgstr "Tipo Inválido de Grupo" + +#: lib/RT/Principal_Overlay.pm:128 +msgid "Invalid Right" +msgstr "Direito Inválido" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "Tipo Inválido" + +#: lib/RT/Interface/Web.pm:865 +msgid "Invalid data" +msgstr "Dado inválido" + +#: lib/RT/Ticket_Overlay.pm:438 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "Proprietário inválido. Usando 'nobody'." + +#: lib/RT/Scrip_Overlay.pm:134 lib/RT/Template_Overlay.pm:251 +msgid "Invalid queue" +msgstr "Fila inválida" + +#: lib/RT/ACE_Overlay.pm:244 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:270 lib/RT/ACE_Overlay.pm:275 +msgid "Invalid right" +msgstr "Direito de acesso inválido" + +#: lib/RT/Record.pm:118 +#. ($key) +msgid "Invalid value for %1" +msgstr "Valor inválido para %1" + +#: lib/RT/Ticket_Overlay.pm:3367 +msgid "Invalid value for custom field" +msgstr "Valor inválido para o campo personalizado" + +#: lib/RT/Ticket_Overlay.pm:345 +msgid "Invalid value for status" +msgstr "Valor inválido para o estado" + +#: bin/rt-crontool:191 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "É extremamente importante que usuários não privilegiados não possam executar esta ferramenta." + +#: bin/rt-crontool:192 +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 que você crie um usuário UNIX não privilegiado com o grupo e acesso RT corretos para executar esta ferramenta." + +#: bin/rt-crontool:163 +msgid "It takes several arguments:" +msgstr "Requer vários argumentos:" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "Itens requerendo minha aprovação" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "Jan." + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "Janeiro" + +#: lib/RT/Group_Overlay.pm:149 +msgid "Join or leave this group" +msgstr "Entre ou deixe este grupo" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "Jul." + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "Julho" + +#: html/Ticket/Elements/Tabs:99 +msgid "Jumbo" +msgstr "Jumbo" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "Jun." + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "Junho" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "Palavra chave" + +#: html/Admin/Elements/ModifyUser:52 +msgid "Lang" +msgstr "LÃng" + +#: html/Ticket/Elements/Tabs:73 +msgid "Last" +msgstr "Último" + +#: html/Ticket/Elements/EditDates:38 html/Ticket/Elements/ShowDates:39 +msgid "Last Contact" +msgstr "Último Contato" + +#: html/Elements/SelectDateType:29 +msgid "Last Contacted" +msgstr "Contactado em" + +#: html/Search/Elements/TicketHeader:41 +msgid "Last Notified" +msgstr "Notificado em" + +#: html/Elements/SelectDateType:30 +msgid "Last Updated" +msgstr "Atualizado em" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "LastUpdated" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "Resta" + +#: html/Admin/Users/Modify.html:83 +msgid "Let this user access RT" +msgstr "Deixar este usuário acessar RT" + +#: html/Admin/Users/Modify.html:87 +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" + +#: lib/RT/Ticket_Overlay.pm:2697 +msgid "Link already exists" +msgstr "A ligação já existe" + +#: lib/RT/Ticket_Overlay.pm:2709 +msgid "Link could not be created" +msgstr "A ligação não pôde ser criada" + +#: lib/RT/Ticket_Overlay.pm:2717 lib/RT/Ticket_Overlay.pm:2727 +#. ($TransString) +msgid "Link created (%1)" +msgstr "Ligação criada (%1)" + +#: lib/RT/Ticket_Overlay.pm:2638 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "Ligação removida (%1)" + +#: lib/RT/Ticket_Overlay.pm:2644 +msgid "Link not found" +msgstr "Ligação não encontrada" + +#: html/Ticket/ModifyLinks.html:25 html/Ticket/ModifyLinks.html:29 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "Ligar o tÃquete #%1" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "Ligar o tÃquete %1" + +#: html/Ticket/Elements/Tabs:97 +msgid "Links" +msgstr "Ligações" + +#: html/Admin/Users/Modify.html:114 html/User/Prefs.html:85 +msgid "Location" +msgstr "Localização" + +#: lib/RT.pm:158 +#. ($RT::LogDir) +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:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "Assinado como %1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:25 html/Elements/Login:34 html/Elements/Login:45 +msgid "Login" +msgstr "Entrar" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "Sair" + +#: html/Search/Bulk.html:86 +msgid "Make Owner" +msgstr "Definir como proprietário" + +#: html/Search/Bulk.html:102 +msgid "Make Status" +msgstr "Definir o estado" + +#: html/Search/Bulk.html:109 +msgid "Make date Due" +msgstr "Definir o prazo final" + +#: html/Search/Bulk.html:110 +msgid "Make date Resolved" +msgstr "Definir a data de resolução" + +#: html/Search/Bulk.html:107 +msgid "Make date Started" +msgstr "Definir a data de iniciado" + +#: html/Search/Bulk.html:106 +msgid "Make date Starts" +msgstr "Definir a data inÃcio" + +#: html/Search/Bulk.html:108 +msgid "Make date Told" +msgstr "Definir a data de última alteração" + +#: html/Search/Bulk.html:99 +msgid "Make priority" +msgstr "Definir a prioridade" + +#: html/Search/Bulk.html:100 +msgid "Make queue" +msgstr "Definir a fila" + +#: html/Search/Bulk.html:98 +msgid "Make subject" +msgstr "Definir o assunto" + +#: html/Admin/index.html:33 +msgid "Manage groups and group membership" +msgstr "Administrar grupos e seus membros" + +#: html/Admin/index.html:39 +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:36 +msgid "Manage queues and queue-specific properties" +msgstr "Administrar filas e suas propriedades especÃficas" + +#: html/Admin/index.html:30 +msgid "Manage users and passwords" +msgstr "Administrar usuários e senhas" + +#: lib/RT/Date.pm:413 +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:415 +msgid "May." +msgstr "Mai." + +#: lib/RT/Group_Overlay.pm:982 +msgid "Member added" +msgstr "Membro adicionado" + +#: lib/RT/Group_Overlay.pm:1140 +msgid "Member deleted" +msgstr "Membro removido" + +#: lib/RT/Group_Overlay.pm:1144 +msgid "Member not deleted" +msgstr "Membro não removido" + +#: html/Elements/SelectLinkType:26 +msgid "Member of" +msgstr "Membro de" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "MemberOf" + +#: html/Admin/Elements/GroupTabs:42 html/User/Elements/GroupTabs:42 +msgid "Members" +msgstr "Membros" + +#: lib/RT/Ticket_Overlay.pm:2843 +msgid "Merge Successful" +msgstr "União bem sucedida" + +#: lib/RT/Ticket_Overlay.pm:2804 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "União falhou. Não pude definir o EffectiveId" + +#: html/Ticket/Elements/EditLinks:115 +msgid "Merge into" +msgstr "Unir a" + +#: html/Ticket/Update.html:102 +msgid "Message" +msgstr "Mensagem" + +#: lib/RT/Interface/Web.pm:867 +msgid "Missing a primary key?: %1" +msgstr "Faltando uma chave primária?: %1" + +#: html/Admin/Users/Modify.html:169 html/User/Prefs.html:54 +msgid "Mobile" +msgstr "Móvel" + +#: html/Admin/Elements/ModifyUser:72 +msgid "MobilePhone" +msgstr "Celular" + +#: lib/RT/Queue_Overlay.pm:70 +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/Global/CustomFields.html:44 html/Admin/Global/index.html:51 +msgid "Modify Custom Fields which apply to all queues" +msgstr "Modificar Campos Personalizados que se aplicam a todas as filas" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "Modify Scrip templates for this queue" +msgstr "Modificar esquemas de Scrip para esta fila" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "Modify Scrips for this queue" +msgstr "Modificar Scrips para esta 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/Queues/CustomField.html:45 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "Modificar um Campo Personalizado para a fila %1" + +#: html/Admin/Global/CustomField.html:53 +msgid "Modify a CustomField which applies to all queues" +msgstr "Modificar um Campo Personalizado que se aplica a todas as filas" + +#: html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "Modificar um scrip para a fila %1" + +#: html/Admin/Global/Scrip.html:48 +msgid "Modify a scrip which applies to all queues" +msgstr "Modificar um scrip aplicável a todas as filas" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "Modificar datas para # %1" + +#: html/Ticket/ModifyDates.html:25 html/Ticket/ModifyDates.html:29 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "Modificar as datas para #%1" + +#: html/Ticket/ModifyDates.html:35 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "Modificar as datas para o tÃquete # %1" + +#: html/Admin/Global/GroupRights.html:25 html/Admin/Global/GroupRights.html:28 html/Admin/Global/index.html:56 +msgid "Modify global group rights" +msgstr "Modificar direitos de acesso globais de grupo" + +#: html/Admin/Global/GroupRights.html:33 +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:25 html/Admin/Global/UserRights.html:28 html/Admin/Global/index.html:60 +msgid "Modify global user rights" +msgstr "Modificar direitos de acesso globais de usuário" + +#: html/Admin/Global/UserRights.html:33 +msgid "Modify global user rights." +msgstr "Modificar direitos de acesso globais de usuário." + +#: lib/RT/Group_Overlay.pm:146 +msgid "Modify group metadata or delete group" +msgstr "Modificar metadados do grupo ou removê-lo" + +#: html/Admin/Groups/GroupRights.html:25 html/Admin/Groups/GroupRights.html:29 html/Admin/Groups/GroupRights.html:35 +#. ($GroupObj->Name) +msgid "Modify group rights for group %1" +msgstr "Modificar os direitos de acesso do grupo %1" + +#: html/Admin/Queues/GroupRights.html:25 html/Admin/Queues/GroupRights.html:29 +#. ($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:148 +msgid "Modify membership roster for this group" +msgstr "Modificar lista de membros deste grupo" + +#: lib/RT/System.pm:61 +msgid "Modify one's own RT account" +msgstr "Modificar sua própria conta RT" + +#: html/Admin/Queues/People.html:25 html/Admin/Queues/People.html:29 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "Modificar as pessoas relacionadas à fila %1" + +#: html/Ticket/ModifyPeople.html:25 html/Ticket/ModifyPeople.html:29 html/Ticket/ModifyPeople.html:35 +#. ($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:44 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "Modificar os scrips da fila %1" + +#: html/Admin/Global/Scrips.html:44 html/Admin/Global/index.html:42 +msgid "Modify scrips which apply to all queues" +msgstr "Modificar scrips aplicáveis a todas as filas" + +#: html/Admin/Global/Template.html:25 html/Admin/Global/Template.html:30 html/Admin/Global/Template.html:81 html/Admin/Queues/Template.html:78 +#. (loc($TemplateObj->Name())) +#. ($TemplateObj->id) +msgid "Modify template %1" +msgstr "Modificar o modelo %1" + +#: html/Admin/Global/Templates.html:44 +msgid "Modify templates which apply to all queues" +msgstr "Modificar esquemas que se aplicam a todas as filas" + +#: html/Admin/Groups/Modify.html:87 html/User/Groups/Modify.html:86 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "Modificar o grupo %1" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Modify the queue watchers" +msgstr "Modificar os observadores da fila" + +#: html/Admin/Users/Modify.html:236 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "Modificar o usuário %1" + +#: html/Ticket/ModifyAll.html:37 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "Modificar o tÃquete # %1" + +#: html/Ticket/Modify.html:25 html/Ticket/Modify.html:28 html/Ticket/Modify.html:34 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "Modificar o tÃquete #%1" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Modify tickets" +msgstr "Modificar tÃquetes" + +#: html/Admin/Groups/UserRights.html:25 html/Admin/Groups/UserRights.html:29 html/Admin/Groups/UserRights.html:35 +#. ($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:25 html/Admin/Queues/UserRights.html:29 +#. ($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:70 +msgid "ModifyACL" +msgstr "ModifyACL" + +#: lib/RT/Group_Overlay.pm:149 +msgid "ModifyOwnMembership" +msgstr "ModifyOwnMembership" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "ModifyQueueWatchers" +msgstr "ModifyQueueWatchers" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "ModifyScrips" +msgstr "ModifyScrips" + +#: lib/RT/System.pm:61 +msgid "ModifySelf" +msgstr "ModifySelf" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "ModifyTemplate" +msgstr "ModifyTemplate" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "ModifyTicket" +msgstr "ModifyTicket" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "Seg." + +#: html/Ticket/Elements/ShowRequestor:42 +#. ($name) +msgid "More about %1" +msgstr "Mais sobre %1" + +#: html/Admin/Elements/EditCustomFields:61 +msgid "Move down" +msgstr "Descer" + +#: html/Admin/Elements/EditCustomFields:53 +msgid "Move up" +msgstr "Subir" + +#: html/Admin/Elements/SelectSingleOrMultiple:27 +msgid "Multiple" +msgstr "Múltiplo" + +#: lib/RT/User_Overlay.pm:179 +msgid "Must specify 'Name' attribute" +msgstr "O atributo 'Name' deve ser especificado" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "Minhas Aprovações" + +#: html/Approvals/index.html:25 html/Approvals/index.html:26 +msgid "My approvals" +msgstr "Minhas aprovações" + +#: html/Admin/Elements/AddCustomFieldValue:26 html/Admin/Elements/EditCustomField:32 html/Admin/Elements/ModifyTemplate:28 html/Admin/Elements/ModifyUser:30 html/Admin/Groups/Modify.html:44 html/Elements/SelectGroups:26 html/Elements/SelectUsers:28 html/User/Groups/Modify.html:44 +msgid "Name" +msgstr "Nome" + +#: lib/RT/User_Overlay.pm:186 +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:52 +msgid "Never" +msgstr "Nunca" + +#: html/Elements/Quicksearch:30 +msgid "New" +msgstr "Novo" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:93 html/User/Prefs.html:65 +msgid "New Password" +msgstr "Nova Senha" + +#: etc/initialdata:311 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "Nova Aprovação Pendente" + +#: html/Ticket/Elements/EditLinks:111 +msgid "New Relationships" +msgstr "Novos Relacionamentos" + +#: html/Ticket/Elements/Tabs:36 +msgid "New Search" +msgstr "Nova busca" + +#: html/Admin/Global/CustomField.html:41 html/Admin/Global/CustomFields.html:39 html/Admin/Queues/CustomField.html:52 html/Admin/Queues/CustomFields.html:40 +msgid "New custom field" +msgstr "Novo campo personalizado" + +#: html/Admin/Elements/GroupTabs:54 html/User/Elements/GroupTabs:52 +msgid "New group" +msgstr "Novo grupo" + +#: html/SelfService/Prefs.html:32 +msgid "New password" +msgstr "Nova senha" + +#: lib/RT/User_Overlay.pm:639 +msgid "New password notification sent" +msgstr "Notificação de nova senha enviada" + +#: html/Admin/Elements/QueueTabs:70 +msgid "New queue" +msgstr "Nova fila" + +#: html/SelfService/Elements/Tabs:63 +msgid "New request" +msgstr "Nova requisição" + +#: html/Admin/Elements/SelectRights:42 +msgid "New rights" +msgstr "Novos direitos de acesso" + +#: html/Admin/Global/Scrip.html:40 html/Admin/Global/Scrips.html:39 html/Admin/Queues/Scrip.html:43 html/Admin/Queues/Scrips.html:53 +msgid "New scrip" +msgstr "Novo scrip" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "Nova busca" + +#: html/Admin/Global/Template.html:60 html/Admin/Global/Templates.html:39 html/Admin/Queues/Template.html:58 html/Admin/Queues/Templates.html:46 +msgid "New template" +msgstr "Novo esquema" + +#: lib/RT/Ticket_Overlay.pm:2771 +msgid "New ticket doesn't exist" +msgstr "O novo tÃquete não existe" + +#: html/Admin/Elements/UserTabs:52 +msgid "New user" +msgstr "Novo usuário" + +#: html/Admin/Elements/CreateUserCalled:26 +msgid "New user called" +msgstr "Novo usuário chamado" + +#: html/Admin/Queues/People.html:55 html/Ticket/Elements/EditPeople:29 +msgid "New watchers" +msgstr "Novos observadores" + +#: html/Admin/Users/Prefs.html:42 +msgid "New window setting" +msgstr "Abrir nova janela" + +#: html/Ticket/Elements/Tabs:69 +msgid "Next" +msgstr "Próximo" + +#: html/Search/Listing.html:48 +msgid "Next page" +msgstr "Próxima página" + +#: html/Admin/Elements/ModifyUser:50 +msgid "NickName" +msgstr "Apelido" + +#: html/Admin/Users/Modify.html:63 html/User/Prefs.html:46 +msgid "Nickname" +msgstr "Apelido" + +#: html/Admin/Elements/EditCustomField:73 html/Admin/Elements/EditCustomFields:105 +msgid "No CustomField" +msgstr "Não há Campo Personalizado" + +#: html/Admin/Groups/GroupRights.html:84 html/Admin/Groups/UserRights.html:71 +msgid "No Group defined" +msgstr "Não há Grupo definido" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:68 +msgid "No Queue defined" +msgstr "Não há Fila definida" + +#: bin/rt-crontool:56 +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:79 html/Admin/Queues/Template.html:76 +msgid "No Template" +msgstr "Não há Modelo" + +#: bin/rt-commit-handler:764 +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:47 +msgid "No action" +msgstr "Não há ação" + +#: lib/RT/Interface/Web.pm:862 +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/Elements/ViewUser:36 html/Ticket/Elements/ShowRequestor:45 +msgid "No comment entered about this user" +msgstr "Não há comentário sobre este usuário" + +#: lib/RT/Ticket_Overlay.pm:2189 lib/RT/Ticket_Overlay.pm:2257 +msgid "No correspondence attached" +msgstr "Não há nenhum arquivo anexado" + +#: lib/RT/Action/Generic.pm:150 lib/RT/Condition/Generic.pm:176 lib/RT/Search/ActiveTicketsInQueue.pm:56 lib/RT/Search/Generic.pm:113 +#. (ref $self) +msgid "No description for %1" +msgstr "Não há descrição para %1" + +#: lib/RT/Users_Overlay.pm:151 +msgid "No group specified" +msgstr "Não há grupo especificado" + +#: lib/RT/User_Overlay.pm:857 +msgid "No password set" +msgstr "Não há senha especificada" + +#: lib/RT/Queue_Overlay.pm:259 +msgid "No permission to create queues" +msgstr "Não há permissão para criar filas" + +#: lib/RT/Ticket_Overlay.pm:341 +#. ($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:151 +msgid "No permission to create users" +msgstr "Sem permissão para criar usuários" + +#: html/SelfService/Display.html:174 +msgid "No permission to display that ticket" +msgstr "Sem permissão para mostrar o tÃquete" + +#: html/SelfService/Update.html:55 +msgid "No permission to view update ticket" +msgstr "sem permissão para ver modificar o tÃquete" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1488 +msgid "No principal specified" +msgstr "Não há principal especificado" + +#: html/Admin/Queues/People.html:154 html/Admin/Queues/People.html:164 +msgid "No principals selected." +msgstr "Não há principal selecionado." + +#: html/Admin/Queues/index.html:35 +msgid "No queues matching search criteria found." +msgstr "Não há fila satisfazendo o critério de busca." + +#: html/Admin/Elements/SelectRights:81 +msgid "No rights found" +msgstr "Nenhum direito encontrado" + +#: html/Admin/Elements/SelectRights:33 +msgid "No rights granted." +msgstr "Nenhum direito outorgado." + +#: html/Search/Bulk.html:149 +msgid "No search to operate on." +msgstr "Não há busca a realizar" + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "Não há identificador de tÃquete especificado" + +#: lib/RT/Transaction_Overlay.pm:480 lib/RT/Transaction_Overlay.pm:518 +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 email especificado" + +#: html/Admin/Users/index.html:36 +msgid "No users matching search criteria found." +msgstr "Nenhum usuário satisfazendo o critério de busca foi encontrado." + +#: bin/rt-commit-handler:644 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "Nenhum usuário RT válido foi encontrado. O tratador de CVS do RT está desabilitado. Por favor, consulte o administrador do RT.\\n" + +#: lib/RT/Interface/Web.pm:859 +msgid "No value sent to _Set!\\n" +msgstr "Nenhum valor enviado a _Set!\\n" + +#: html/Search/Elements/TicketRow:37 +msgid "Nobody" +msgstr "Ninguém" + +#: lib/RT/Interface/Web.pm:864 +msgid "Nonexistant field?" +msgstr "Campo inexistente?" + +#: html/Elements/Login:99 +msgid "Not logged in" +msgstr "Não logado" + +#: html/Elements/Header:59 html/SelfService/Elements/Header:58 +msgid "Not logged in." +msgstr "Não entrou." + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "Não definido" + +#: html/NoAuth/Reminder.html:27 +msgid "Not yet implemented." +msgstr "Ainda não implementado." + +#: html/Admin/Groups/Rights.html:25 +msgid "Not yet implemented...." +msgstr "Ainda não implementado..." + +#: html/Approvals/Elements/Approve:50 +msgid "Notes" +msgstr "Notas" + +#: lib/RT/User_Overlay.pm:642 +msgid "Notification could not be sent" +msgstr "A notificação não pôde ser enviada" + +#: etc/initialdata:94 +msgid "Notify AdminCcs" +msgstr "Notificar AdminCcs" + +#: etc/initialdata:90 +msgid "Notify AdminCcs as Comment" +msgstr "Notificar AdminCcs como Comentário" + +#: etc/initialdata:121 +msgid "Notify Other Recipients" +msgstr "Notificar Outros Destinatários" + +#: etc/initialdata:117 +msgid "Notify Other Recipients as Comment" +msgstr "Notificar Outros Destinatários como Comentário" + +#: etc/initialdata:86 +msgid "Notify Owner" +msgstr "Notificar Proprietário" + +#: etc/initialdata:82 +msgid "Notify Owner as Comment" +msgstr "Notificar Proprietário como Comentário" + +#: etc/initialdata:313 etc/upgrade/2.1.71:17 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "Notificar Proprietários e AdminCcs sobre novos itens pendendo suas aprovações" + +#: etc/initialdata:78 +msgid "Notify Requestors" +msgstr "Notificar Requisitantes" + +#: etc/initialdata:104 +msgid "Notify Requestors and Ccs" +msgstr "Notificar Requisitantes e Ccs" + +#: etc/initialdata:99 +msgid "Notify Requestors and Ccs as Comment" +msgstr "Notificar Requisitantes e Ccs como Comentário" + +#: etc/initialdata:113 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "Notificar Requisitantes, Ccs e AdminCcs" + +#: etc/initialdata:109 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "Notificar Requisitantes, Ccs e AdminCcs como Comentário" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "Nov." + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "Novembro" + +#: lib/RT/Record.pm:157 +msgid "Object could not be created" +msgstr "Objeto não pôde ser criado" + +#: lib/RT/Record.pm:176 +msgid "Object created" +msgstr "Objeto criado" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "Out." + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "Outubro" + +#: html/Elements/SelectDateRelation:35 +msgid "On" +msgstr "Em" + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "Sobre Comentário" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "Sobre Correspondência" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "Sobre Criação" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "Sobre Mudança de Propriedade" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "Sobre Mudança de Fila" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "Sobre Resolução" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "Sobre Mudança de Estado" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "Sobre Transação" + +#: html/Approvals/Elements/PendingMyApproval:50 +#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='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:48 +#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") +msgid "Only show approvals for requests created before %1" +msgstr "Só mostrar aprovações para requisições criadas antes de %1" + +#: html/Elements/Quicksearch:31 +msgid "Open" +msgstr "Aberto" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "Abrir" + +#: html/SelfService/Elements/Tabs:57 +msgid "Open requests" +msgstr "Requisições abertas" + +#: html/Admin/Users/Prefs.html:41 +msgid "Open tickets (from listing) in a new window" +msgstr "Abrir tÃquetes (da listagem) em uma nova janela" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in another window" +msgstr "Abrir tÃquetes (da listagem) em outra janela" + +#: etc/initialdata:133 +msgid "Open tickets on correspondence" +msgstr "Abrir tÃquetes na correspondência" + +#: html/Search/Elements/PickRestriction:101 +msgid "Ordering and sorting" +msgstr "Requisitando e ordenando" + +#: html/Admin/Elements/ModifyUser:46 html/Admin/Users/Modify.html:117 html/Elements/SelectUsers:29 html/User/Prefs.html:86 +msgid "Organization" +msgstr "Organização" + +#: html/Approvals/Elements/Approve:34 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "TÃquete originador: #%1" + +#: html/Admin/Elements/ModifyQueue:55 html/Admin/Queues/Modify.html:69 +msgid "Over time, priority moves toward" +msgstr "Após a data, a prioridade tende a" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Own tickets" +msgstr "Próprios tÃquetes" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "OwnTicket" +msgstr "OwnTicket" + +#: etc/initialdata:38 html/Elements/MyRequests:32 html/SelfService/Elements/MyRequests:30 html/Ticket/Create.html:48 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/EditPeople:44 html/Ticket/Elements/ShowPeople:27 html/Ticket/Update.html:63 lib/RT/ACE_Overlay.pm:86 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "Proprietário" + +#: lib/RT/Ticket_Overlay.pm:3004 +#. ($OldOwnerObj->Name, $NewOwnerObj->Name) +msgid "Owner changed from %1 to %2" +msgstr "Proprietário mudou de %1 para %2" + +#: lib/RT/Transaction_Overlay.pm:584 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "Proprietário alterado à força de %1 para %2" + +#: html/Search/Elements/PickRestriction:31 +msgid "Owner is" +msgstr "O proprietário é" + +#: html/Admin/Users/Modify.html:174 html/User/Prefs.html:56 +msgid "Pager" +msgstr "Pager" + +#: html/Admin/Elements/ModifyUser:74 +msgid "PagerPhone" +msgstr "Telefone do Pager" + +#: NOT FOUND IN SOURCE +msgid "Parent" +msgstr "Pai" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/EditLinks:127 html/Ticket/Elements/EditLinks:58 html/Ticket/Elements/ShowLinks:43 +msgid "Parents" +msgstr "Pais" + +#: html/Elements/Login:43 html/User/Prefs.html:61 +msgid "Password" +msgstr "Senha" + +#: html/NoAuth/Reminder.html:25 +msgid "Password Reminder" +msgstr "Lembrete de Senha" + +#: lib/RT/User_Overlay.pm:168 lib/RT/User_Overlay.pm:860 +msgid "Password too short" +msgstr "Senha muito curta" + +#: html/Admin/Users/Modify.html:291 html/User/Prefs.html:172 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "Senha: %1" + +#: html/Ticket/Elements/ShowSummary:43 html/Ticket/Elements/Tabs:96 html/Ticket/ModifyAll.html:51 +msgid "People" +msgstr "Pessoas" + +#: etc/initialdata:126 +msgid "Perform a user-defined action" +msgstr "Realizar uma ação definida pelo usuário" + +#: lib/RT/ACE_Overlay.pm:231 lib/RT/ACE_Overlay.pm:237 lib/RT/ACE_Overlay.pm:563 lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:583 lib/RT/ACE_Overlay.pm:648 lib/RT/CurrentUser.pm:83 lib/RT/CurrentUser.pm:92 lib/RT/CustomField_Overlay.pm:445 lib/RT/CustomField_Overlay.pm:451 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1099 lib/RT/Group_Overlay.pm:1108 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1163 lib/RT/Group_Overlay.pm:1169 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:904 lib/RT/Group_Overlay.pm:908 lib/RT/Group_Overlay.pm:921 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:126 lib/RT/Scrip_Overlay.pm:137 lib/RT/Scrip_Overlay.pm:197 lib/RT/Scrip_Overlay.pm:430 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:88 lib/RT/Template_Overlay.pm:94 lib/RT/Ticket_Overlay.pm:1341 lib/RT/Ticket_Overlay.pm:1351 lib/RT/Ticket_Overlay.pm:1365 lib/RT/Ticket_Overlay.pm:1518 lib/RT/Ticket_Overlay.pm:1527 lib/RT/Ticket_Overlay.pm:1540 lib/RT/Ticket_Overlay.pm:1875 lib/RT/Ticket_Overlay.pm:2013 lib/RT/Ticket_Overlay.pm:2177 lib/RT/Ticket_Overlay.pm:2244 lib/RT/Ticket_Overlay.pm:2596 lib/RT/Ticket_Overlay.pm:2668 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2777 lib/RT/Ticket_Overlay.pm:2910 lib/RT/Ticket_Overlay.pm:3139 lib/RT/Ticket_Overlay.pm:3337 lib/RT/Ticket_Overlay.pm:3499 lib/RT/Ticket_Overlay.pm:3551 lib/RT/Ticket_Overlay.pm:3716 lib/RT/Transaction_Overlay.pm:468 lib/RT/Transaction_Overlay.pm:475 lib/RT/Transaction_Overlay.pm:504 lib/RT/Transaction_Overlay.pm:511 lib/RT/User_Overlay.pm:1334 lib/RT/User_Overlay.pm:562 lib/RT/User_Overlay.pm:597 lib/RT/User_Overlay.pm:853 lib/RT/User_Overlay.pm:941 +msgid "Permission Denied" +msgstr "Permissão Negada" + +#: html/User/Elements/Tabs:35 +msgid "Personal Groups" +msgstr "Grupoas Pessoais" + +#: html/User/Groups/index.html:30 html/User/Groups/index.html:40 +msgid "Personal groups" +msgstr "Grupos pessoais" + +#: html/User/Elements/DelegateRights:37 +msgid "Personal groups:" +msgstr "Grupos pessoais:" + +#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:49 +msgid "Phone numbers" +msgstr "Telefones" + +#: html/Admin/Users/Rights.html:25 +msgid "Placeholder" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Pref" +msgstr "" + +#: html/Elements/Header:52 html/Elements/Tabs:55 html/SelfService/Prefs.html:25 html/User/Prefs.html:25 html/User/Prefs.html:28 +msgid "Preferences" +msgstr "Preferências" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "Prefs" + +#: lib/RT/Action/Generic.pm:160 +msgid "Prepare Stubbed" +msgstr "" + +#: html/Ticket/Elements/Tabs:61 +msgid "Prev" +msgstr "Anterior" + +#: html/Search/Listing.html:44 +msgid "Previous page" +msgstr "Página anterior" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "Pri" + +#: lib/RT/ACE_Overlay.pm:133 lib/RT/ACE_Overlay.pm:208 lib/RT/ACE_Overlay.pm:552 +#. ($args{'PrincipalId'}) +msgid "Principal %1 not found." +msgstr "Principal %1 não encontrado." + +#: html/Search/Elements/PickRestriction:54 html/SelfService/Display.html:76 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:54 html/Ticket/Elements/ShowBasics:39 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "Prioridade" + +#: html/Admin/Elements/ModifyQueue:51 html/Admin/Queues/Modify.html:65 +msgid "Priority starts at" +msgstr "A prioridade inicia em" + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "Privilegiado" + +#: html/Admin/Users/Modify.html:271 html/User/Prefs.html:163 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "Estado privilegiado: %1" + +#: html/Admin/Users/index.html:62 +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/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Elements/Quicksearch:29 html/Search/Elements/PickRestriction:46 html/SelfService/Create.html:35 html/SelfService/Display.html:68 html/Ticket/Create.html:38 html/Ticket/Elements/EditBasics:64 html/Ticket/Elements/ShowBasics:43 html/User/Elements/DelegateRights:80 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "Fila" + +#: html/Admin/Queues/CustomField.html:42 html/Admin/Queues/Scrip.html:50 html/Admin/Queues/Scrips.html:46 html/Admin/Queues/Templates.html:43 +#. ($Queue) +#. ($id) +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/Elements/ModifyQueue:31 html/Admin/Queues/Modify.html:43 +msgid "Queue Name" +msgstr "Nome da Fila" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "Scrips da Fila" + +#: lib/RT/Queue_Overlay.pm:263 +msgid "Queue already exists" +msgstr "A fila já existe" + +#: lib/RT/Queue_Overlay.pm:272 lib/RT/Queue_Overlay.pm:278 +msgid "Queue could not be created" +msgstr "A fila não pôde ser criada" + +#: html/Ticket/Create.html:209 +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:282 +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:129 +msgid "Queue not found" +msgstr "Fila não encontrada" + +#: html/Admin/Elements/Tabs:38 html/Admin/index.html:35 +msgid "Queues" +msgstr "Filas" + +#: html/Elements/Login:34 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "RT %1" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "RT %1 para %2" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +msgid "RT %1 from <a href=\"http://bestpractical.com\">Best Practical Solutions, LLC</a>." +msgstr "RT %1 por <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. 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:25 html/Admin/index.html:26 +msgid "RT Administration" +msgstr "Adiministraçã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 "Ricocheteio 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:41 html/SelfService/Error.html:41 +msgid "RT Error" +msgstr "Erro no RT" + +#: NOT FOUND IN SOURCE +msgid "RT Received mail (%1) from itself." +msgstr "O RT recebeu email (%1) dele próprio." + +#: NOT FOUND IN SOURCE +msgid "RT Recieved mail (%1) from itself." +msgstr "O RT recebeu email (%1) de si próprio." + +#: html/SelfService/Closed.html:25 +msgid "RT Self Service / Closed Tickets" +msgstr "Auto-serviço do RT / TÃquetes Fechados" + +#: html/index.html:25 html/index.html:28 +msgid "RT at a glance" +msgstr "RT por alto" + +#: 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" + +#: 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/PageLayout:26 +#. ($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" + +#: html/Elements/Login:83 +#. ('2003') +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 tem © Direitos Reservados 1996-%1 Jesse Vincent <jesse@bestpractical.com>. Ele é distribuÃdo sob a <a href=\"http://www.gnu.org/copyleft/gpl.html\">Versão 2 da Licença Pública Geral GNU (GPL).</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 tem © Direitos Reservados 1996-%1 por Jesse Vincent <jesse@bestpractical.com>. Ele é distribuÃdo sob a <a href=\\\"http://www.gnu.org/copyleft/gpl.html\\\">Versão 2 da Licença Pública Geral GNU (GPL).</a>" + +#: NOT FOUND IN SOURCE +msgid "RT thinks this message may be a bounce" +msgstr "O RT crê que esta mensagem seja um ricochete" + +#: 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" + +#: 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 "O modo de comandos por email do RT requer autenticação PGP. Ou você não assinou sua mensagem ou sua assinatura não pôde ser verificada." + +#: html/Admin/Users/Modify.html:58 html/Admin/Users/Prefs.html:52 html/User/Prefs.html:44 +msgid "Real Name" +msgstr "Nome real" + +#: html/Admin/Elements/ModifyUser:48 +msgid "RealName" +msgstr "Nome real" + +#: html/Ticket/Create.html:185 html/Ticket/Elements/EditLinks:139 html/Ticket/Elements/EditLinks:94 html/Ticket/Elements/ShowLinks:63 +msgid "Referred to by" +msgstr "Referenciado por" + +#: html/Elements/SelectLinkType:28 html/Ticket/Create.html:184 html/Ticket/Elements/EditLinks:135 html/Ticket/Elements/EditLinks:80 html/Ticket/Elements/ShowLinks:55 +msgid "Refers to" +msgstr "Faz referência a" + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "RefersTo" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "Refinar" + +#: html/Search/Elements/PickRestriction:27 +msgid "Refine search" +msgstr "Refinar a Busca" + +#: html/Elements/Refresh:36 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "Recarregar esta página a cada %1 minutos." + +#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:60 html/Ticket/ModifyAll.html:57 +msgid "Relationships" +msgstr "Relacionamentos" + +#: html/Search/Bulk.html:93 +msgid "Remove AdminCc" +msgstr "Remover AdminCc" + +#: html/Search/Bulk.html:91 +msgid "Remove Cc" +msgstr "Remover Cc" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "Remover Requisitante" + +#: html/Ticket/Elements/ShowTransaction:173 html/Ticket/Elements/Tabs:122 +msgid "Reply" +msgstr "Responder" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Reply to tickets" +msgstr "Responder aos tÃquetes" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "ReplyToTicket" +msgstr "ReplyToTicket" + +#: etc/initialdata:44 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:87 +msgid "Requestor" +msgstr "Requisitante" + +#: html/Search/Elements/PickRestriction:38 +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:43 html/SelfService/Display.html:42 html/Ticket/Create.html:56 html/Ticket/Elements/EditPeople:48 html/Ticket/Elements/ShowPeople:31 +msgid "Requestors" +msgstr "Requisitantes" + +#: html/Admin/Elements/ModifyQueue:61 html/Admin/Queues/Modify.html:75 +msgid "Requests should be due in" +msgstr "A requisições vencem em" + +#: html/Elements/Submit:62 +msgid "Reset" +msgstr "Restaurar" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "Residência" + +#: html/Ticket/Elements/Tabs:132 +msgid "Resolve" +msgstr "Resolver" + +#: html/Ticket/Update.html:133 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "Resolver tÃquete #%1 (%2)" + +#: etc/initialdata:302 html/Elements/SelectDateType:28 lib/RT/Ticket_Overlay.pm:1170 +msgid "Resolved" +msgstr "Resolvido" + +#: html/Search/Bulk.html:123 html/Ticket/ModifyAll.html:73 html/Ticket/Update.html:73 +msgid "Response to requestors" +msgstr "Resposta aos requisitantes" + +#: html/Elements/ListActions:26 +msgid "Results" +msgstr "Resultados" + +#: html/Search/Elements/PickRestriction:105 +msgid "Results per page" +msgstr "Resultados por página" + +#: html/Admin/Elements/ModifyUser:33 html/Admin/Users/Modify.html:100 html/User/Prefs.html:72 +msgid "Retype Password" +msgstr "Confirmar a Senha" + +#: 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:613 +msgid "Right Delegated" +msgstr "Direito de Acesso Delegado" + +#: lib/RT/ACE_Overlay.pm:303 +msgid "Right Granted" +msgstr "Direito de Acesso Outorgado" + +#: lib/RT/ACE_Overlay.pm:161 +msgid "Right Loaded" +msgstr "Direito de Acesso Carregado" + +#: lib/RT/ACE_Overlay.pm:678 lib/RT/ACE_Overlay.pm:693 +msgid "Right could not be revoked" +msgstr "Direito de acesso não pôde ser revogado" + +#: html/User/Delegation.html:64 +msgid "Right not found" +msgstr "Direito de acesso não encontrado" + +#: lib/RT/ACE_Overlay.pm:543 lib/RT/ACE_Overlay.pm:638 +msgid "Right not loaded." +msgstr "Direito de acesso não carregado." + +#: lib/RT/ACE_Overlay.pm:689 +msgid "Right revoked" +msgstr "Direito de acesso revogado" + +#: html/Admin/Elements/UserTabs:41 +msgid "Rights" +msgstr "Direitos de Acesso" + +#: lib/RT/Interface/Web.pm:758 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "Direitos de acesso não puderam ser outorgados a %1" + +#: lib/RT/Interface/Web.pm:791 +#. ($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:51 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "Papéis" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "RootApproval" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "Sáb." + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "Save Changes" +msgstr "Salvar as Alterações" + +#: html/Ticket/ModifyLinks.html:39 +msgid "Save changes" +msgstr "Salvar as alterações" + +#: html/Admin/Global/Scrip.html:49 +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "Scrip #%1" + +#: lib/RT/Scrip_Overlay.pm:176 +msgid "Scrip Created" +msgstr "Scrip Criado" + +#: html/Admin/Elements/EditScrips:84 +msgid "Scrip deleted" +msgstr "Scrip removido" + +#: html/Admin/Elements/QueueTabs:46 html/Admin/Elements/SystemTabs:33 html/Admin/Global/index.html:41 +msgid "Scrips" +msgstr "Scrips" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "Scrips para %1\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "Scrips aplicáveis a todas as filas" + +#: html/Elements/SimpleSearch:27 html/Search/Elements/PickRestriction:126 html/Ticket/Elements/Tabs:159 +msgid "Search" +msgstr "Buscar" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "Critérios de Busca" + +#: html/Approvals/Elements/PendingMyApproval:39 +msgid "Search for approvals" +msgstr "Buscar por aprovações" + +#: bin/rt-crontool:188 +msgid "Security:" +msgstr "Segurança:" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "SeeQueue" +msgstr "SeeQueue" + +#: html/Admin/Groups/index.html:40 +msgid "Select a group" +msgstr "Selecionar um grupo" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "Selecionar uma fila" + +#: html/Admin/Users/index.html:25 html/Admin/Users/index.html:28 +msgid "Select a user" +msgstr "Selecionar um usuário" + +#: html/Admin/Global/CustomField.html:38 html/Admin/Global/CustomFields.html:36 +msgid "Select custom field" +msgstr "Selecionar um campo personalizado" + +#: html/Admin/Elements/GroupTabs:52 html/User/Elements/GroupTabs:50 +msgid "Select group" +msgstr "Selecionar um grupo" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Select multiple values" +msgstr "Selecionar múltiplos valores" + +#: lib/RT/CustomField_Overlay.pm:352 +msgid "Select one value" +msgstr "Selecionar um valor" + +#: html/Admin/Elements/QueueTabs:67 +msgid "Select queue" +msgstr "Selecionar uma fila" + +#: html/Admin/Global/Scrip.html:37 html/Admin/Global/Scrips.html:36 html/Admin/Queues/Scrip.html:40 html/Admin/Queues/Scrips.html:50 +msgid "Select scrip" +msgstr "Selecionar um scrip" + +#: html/Admin/Global/Template.html:57 html/Admin/Global/Templates.html:36 html/Admin/Queues/Template.html:55 +msgid "Select template" +msgstr "Selecionar um esquema" + +#: html/Admin/Elements/UserTabs:49 +msgid "Select user" +msgstr "Selecionar um usuário" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "SelectMultiple" +msgstr "SelectMultiple" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectSingle" +msgstr "SelectSingle" + +#: html/SelfService/index.html:25 +msgid "Self Service" +msgstr "Auto-serviço" + +#: etc/initialdata:114 +msgid "Send mail to all watchers" +msgstr "Enviar mensagem a todos os observadores" + +#: etc/initialdata:110 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "Enviar mensagem a todos os observadores como um \"comentário\"" + +#: etc/initialdata:105 +msgid "Send mail to requestors and Ccs" +msgstr "Enviar mensagem aos requisitantes e Ccs" + +#: etc/initialdata:100 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "Enviar mensagem aos requisitantes e Ccs como um comentário" + +#: etc/initialdata:79 +msgid "Sends a message to the requestors" +msgstr "Envia uma mensagem aos requisitantes" + +#: etc/initialdata:118 etc/initialdata:122 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "Envia uma mensagem aos Ccs e Bccs explicitamente listados" + +#: etc/initialdata:95 +msgid "Sends mail to the administrative Ccs" +msgstr "Envia uma mensagem aos Ccs administrativos" + +#: etc/initialdata:91 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "Envia uma mensagem aos Ccs administrativos como um comentário" + +#: etc/initialdata:83 etc/initialdata:87 +msgid "Sends mail to the owner" +msgstr "Envia uma mensagem ao proprietário" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "Set." + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "Setembro" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "Mostrar os Resultados" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show approved requests" +msgstr "Mostrar requisições aprovadas" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show basics" +msgstr "Mostrar o sumário" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show denied requests" +msgstr "Mostrar requisições negadas" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show details" +msgstr "Mostrar os detalhes" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show pending requests" +msgstr "Mostrar requisições pendentes" + +#: html/Approvals/Elements/PendingMyApproval:46 +msgid "Show requests awaiting other approvals" +msgstr "Mostrar requisições aguardando outras aprovações" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Show ticket private commentary" +msgstr "Mostrar comentário privado do tÃquete" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "Show ticket summaries" +msgstr "Mostrar sumários do tÃquete" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ShowACL" +msgstr "ShowACL" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowScrips" +msgstr "ShowScrips" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ShowTemplate" +msgstr "ShowTemplate" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "ShowTicket" +msgstr "ShowTicket" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "ShowTicketComments" +msgstr "ShowTicketComments" + +#: lib/RT/Queue_Overlay.pm:82 +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:83 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "Cadastrar como um AdminCC de tÃquete ou fila" + +#: html/Admin/Elements/ModifyUser:39 html/Admin/Users/Modify.html:191 html/Admin/Users/Prefs.html:32 html/SelfService/Prefs.html:37 html/User/Prefs.html:112 +msgid "Signature" +msgstr "Assinatura" + +#: html/SelfService/Elements/Header:52 +#. ($session{'CurrentUser'}->Name) +msgid "Signed in as %1" +msgstr "Assinado como %1" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Single" +msgstr "Único" + +#: html/Elements/Header:51 +msgid "Skip Menu" +msgstr "Saltar Menu" + +#: html/Admin/Elements/EditCustomFieldValues:31 +msgid "Sort key" +msgstr "Chave de ordenação" + +#: html/Search/Elements/PickRestriction:109 +msgid "Sort results by" +msgstr "Ordenar os resultados por" + +#: html/Admin/Elements/AddCustomFieldValue:25 +msgid "SortOrder" +msgstr "Ordenação" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "Pendente" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "Página inicial" + +#: html/Elements/SelectDateType:27 html/Ticket/Elements/EditDates:32 html/Ticket/Elements/ShowDates:35 +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:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:27 html/Ticket/Elements/ShowDates:31 +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/Elements/ModifyUser:82 html/Admin/Users/Modify.html:138 html/User/Prefs.html:94 +msgid "State" +msgstr "Estado" + +#: html/Elements/MyRequests:31 html/Elements/MyTickets:31 html/Search/Elements/PickRestriction:74 html/SelfService/Display.html:59 html/SelfService/Elements/MyRequests:29 html/SelfService/Update.html:31 html/Ticket/Create.html:42 html/Ticket/Elements/EditBasics:38 html/Ticket/Elements/ShowBasics:31 html/Ticket/Update.html:60 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "Estado" + +#: etc/initialdata:288 +msgid "Status Change" +msgstr "Mudança de Estado" + +#: lib/RT/Transaction_Overlay.pm:530 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "Estado alterado de %1 para %2" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "StatusChange" + +#: html/Ticket/Elements/Tabs:147 +msgid "Steal" +msgstr "Roubar" + +#: lib/RT/Transaction_Overlay.pm:589 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "Roubado de %1 " + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Search/Bulk.html:126 html/Search/Elements/PickRestriction:43 html/SelfService/Create.html:59 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:35 html/Ticket/Create.html:84 html/Ticket/Elements/EditBasics:28 html/Ticket/ModifyAll.html:79 html/Ticket/Update.html:77 lib/RT/Ticket_Overlay.pm:1160 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "Assunto" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:611 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "Assunto modou para %1" + +#: html/Elements/Submit:59 +msgid "Submit" +msgstr "Enviar" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "Enviar Workflow" + +#: lib/RT/Group_Overlay.pm:749 +msgid "Succeeded" +msgstr "Deu certo" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "Dom." + +#: lib/RT/System.pm:54 +msgid "SuperUser" +msgstr "SuperUser" + +#: html/User/Elements/DelegateRights:77 +msgid "System" +msgstr "Sistema" + +#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:567 lib/RT/Interface/Web.pm:757 lib/RT/Interface/Web.pm:790 +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/ACE_Overlay.pm:616 +msgid "System error. Right not delegated." +msgstr "Erro do sistema. Direito de acesso não delegado." + +#: lib/RT/ACE_Overlay.pm:146 lib/RT/ACE_Overlay.pm:223 lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:898 +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 posso outorgar direitos de acesso." + +#: html/Admin/Global/GroupRights.html:35 html/Admin/Groups/GroupRights.html:37 html/Admin/Queues/GroupRights.html:36 +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:320 +msgid "TEST_STRING" +msgstr "TEST_STRING" + +#: html/Ticket/Elements/Tabs:143 +msgid "Take" +msgstr "Tomar" + +#: lib/RT/Transaction_Overlay.pm:575 +msgid "Taken" +msgstr "Tomado" + +#: html/Admin/Elements/EditScrip:81 +msgid "Template" +msgstr "Modelo" + +#: html/Admin/Global/Template.html:91 html/Admin/Queues/Template.html:90 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "Esquema #%1" + +#: html/Admin/Elements/EditTemplates:89 +msgid "Template deleted" +msgstr "Esquema removido" + +#: lib/RT/Scrip_Overlay.pm:153 +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:347 +msgid "Template parsed" +msgstr "Modelo processado" + +#: html/Admin/Elements/QueueTabs:49 html/Admin/Elements/SystemTabs:36 html/Admin/Global/index.html:45 +msgid "Templates" +msgstr "Modelos" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "Modelos de %1\\n" + +#: lib/RT/Interface/Web.pm:858 +msgid "That is already the current value" +msgstr "Este já é o valor atual" + +#: lib/RT/CustomField_Overlay.pm:178 +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:1886 +msgid "That is the same value" +msgstr "Este é o mesmo valor" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "Este principal já é um %1 para esta fila" + +#: lib/RT/Ticket_Overlay.pm:1434 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "Este principal já é um %1 para este tÃquete" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "Este principal não é um %1 para esta fila" + +#: lib/RT/Ticket_Overlay.pm:1551 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "Este principal não é um %1 para este tÃquete" + +#: lib/RT/Ticket_Overlay.pm:1882 +msgid "That queue does not exist" +msgstr "Esta fila não existe" + +#: lib/RT/Ticket_Overlay.pm:3143 +msgid "That ticket has unresolved dependencies" +msgstr "Este tÃquete tem dependências não resolvidas" + +#: lib/RT/ACE_Overlay.pm:288 lib/RT/ACE_Overlay.pm:597 +msgid "That user already has that right" +msgstr "Este usuário já tem este direito de acesso" + +#: lib/RT/Ticket_Overlay.pm:2952 +msgid "That user already owns that ticket" +msgstr "Este usuário já possui este tÃquete" + +#: lib/RT/Ticket_Overlay.pm:2918 +msgid "That user does not exist" +msgstr "Este usuário não existe" + +#: lib/RT/User_Overlay.pm:315 +msgid "That user is already privileged" +msgstr "Este usuário já tem privilégios" + +#: lib/RT/User_Overlay.pm:332 +msgid "That user is already unprivileged" +msgstr "Este usuário já não tem privilégios" + +#: lib/RT/User_Overlay.pm:327 +msgid "That user is now privileged" +msgstr "Este usuário agora tem privilégios" + +#: lib/RT/User_Overlay.pm:344 +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:2944 +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:206 +msgid "That's not a numerical id" +msgstr "Este não é um identificador numérico" + +#: html/Ticket/Create.html:150 html/Ticket/Elements/ShowSummary:28 +msgid "The Basics" +msgstr "Sumário" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The CC of a ticket" +msgstr "O CC de um tÃquete" + +#: lib/RT/ACE_Overlay.pm:89 +msgid "The administrative CC of a ticket" +msgstr "O CC administrativo de um tÃquete" + +#: lib/RT/Ticket_Overlay.pm:2213 +msgid "The comment has been recorded" +msgstr "O comentário foi registrado" + +#: bin/rt-crontool:198 +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 em 4 horas:" + +#: bin/rt-commit-handler:756 bin/rt-commit-handler:766 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "Os seguintes comandos não foram processados:\\n\\n" + +#: lib/RT/Interface/Web.pm:861 +msgid "The new value has been set." +msgstr "O novo valor foi atribuÃdo." + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The owner of a ticket" +msgstr "O proprietário de um tÃquete" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The requestor of a ticket" +msgstr "O requisitante de um tÃquete" + +#: html/Admin/Elements/EditUserComments:26 +msgid "These comments aren't generally visible to the user" +msgstr "Estes comandos geralmente não estão visÃveis para o usuário" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "Este tÃquete %1 %2 (%3)\\n" + +#: bin/rt-crontool:189 +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:253 +msgid "This transaction appears to have no content" +msgstr "Parece que esta transação não tem conteúdo" + +#: html/Ticket/Elements/ShowRequestor:47 +#. ($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:391 +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:25 html/Ticket/ModifyAll.html:29 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "TÃquete #%1 Atualização jumbo: %2" + +#: html/Approvals/Elements/ShowDependency:46 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "TÃquete #%1: %2" + +#: lib/RT/Ticket_Overlay.pm:608 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "TÃquete %1 criado na fila '%2'" + +#: bin/rt-commit-handler:760 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "TÃquete %1 carregado\\n" + +#: html/Search/Bulk.html:181 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "TÃquete %1: %2" + +#: html/Ticket/History.html:25 html/Ticket/History.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "Histórico do TÃquete # %1 %2" + +#: html/SelfService/Display.html:34 +msgid "Ticket Id" +msgstr "Identificador do tÃquete" + +#: etc/initialdata:303 +msgid "Ticket Resolved" +msgstr "TÃquete Resolvido" + +#: html/Search/Elements/PickRestriction:63 +msgid "Ticket attachment" +msgstr "Arquivo anexo do tÃquete" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "Conteúdo do tÃquete" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "Tipo do conteúdo do tÃquete" + +#: lib/RT/Ticket_Overlay.pm:495 lib/RT/Ticket_Overlay.pm:597 +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" + +#: lib/RT/Transaction_Overlay.pm:522 +msgid "Ticket created" +msgstr "TÃquete criado" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "A criação do tÃquete falhou" + +#: lib/RT/Transaction_Overlay.pm:527 +msgid "Ticket deleted" +msgstr "TÃquete removido" + +#: html/REST/1.0/modify:29 html/REST/1.0/update:34 +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/REST/1.0/modify:36 html/REST/1.0/update:41 +msgid "Ticket not found" +msgstr "TÃquete não encontrado" + +#: etc/initialdata:289 +msgid "Ticket status changed" +msgstr "O estado do tÃquete mudou" + +#: html/Ticket/Update.html:39 +msgid "Ticket watchers" +msgstr "Observadores do tÃquete" + +#: html/Elements/Tabs:49 +msgid "Tickets" +msgstr "TÃquetes" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "TÃquetes %1 %2" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "TÃquetes %1 por %2" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Tickets from %1" +msgstr "TÃquetes de %1" + +#: html/Approvals/Elements/ShowDependency:27 +msgid "Tickets which depend on this approval:" +msgstr "TÃquetes dependentes desta aprovação:" + +#: html/Ticket/Create.html:157 html/Ticket/Elements/EditBasics:48 +msgid "Time Left" +msgstr "Tempo Restante" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:43 +msgid "Time Worked" +msgstr "Tempo Trabalhado" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "Tempo restante" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "Tempo de apresentação" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "Tempo trabalhado" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "TimeLeft" + +#: lib/RT/Ticket_Overlay.pm:1165 +msgid "TimeWorked" +msgstr "TimeWorked" + +#: bin/rt-commit-handler:402 +msgid "To generate a diff of this commit:" +msgstr "Para gerar as diferenças desta transação" + +#: bin/rt-commit-handler:391 +msgid "To generate a diff of this commit:\\n" +msgstr "Para gerar as diferenças desta transação:\\n" + +#: lib/RT/Ticket_Overlay.pm:1168 +msgid "Told" +msgstr "Última atualização" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "Transação" + +#: lib/RT/Transaction_Overlay.pm:642 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "Transação %1 removida" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "Transação Criada" + +#: lib/RT/Transaction_Overlay.pm:89 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "Transaction->Create não pôde, já que você não especificou um id de tÃquete" + +#: lib/RT/Transaction_Overlay.pm:701 +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:389 +msgid "Tue." +msgstr "Ter." + +#: html/Admin/Elements/EditCustomField:34 html/Ticket/Elements/AddWatchers:33 html/Ticket/Elements/AddWatchers:44 html/Ticket/Elements/AddWatchers:54 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "Tipo" + +#: lib/RT/ScripCondition_Overlay.pm:104 +msgid "Unimplemented" +msgstr "Não implementado" + +#: html/Admin/Users/Modify.html:68 +msgid "Unix login" +msgstr "Usuário Unix" + +#: html/Admin/Elements/ModifyUser:62 +msgid "UnixUsername" +msgstr "Usuário Unix" + +#: lib/RT/Attachment_Overlay.pm:265 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "Codificação de conteúdo desconhecida %1" + +#: html/Elements/SelectResultsPerPage:37 +msgid "Unlimited" +msgstr "Ilimitado" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "Não privilegiado" + +#: lib/RT/Transaction_Overlay.pm:571 +msgid "Untaken" +msgstr "Não tomado" + +#: html/Elements/MyTickets:64 html/Search/Bulk.html:33 +msgid "Update" +msgstr "Atualizar" + +#: html/Admin/Users/Prefs.html:62 +msgid "Update ID" +msgstr "Identificador de atualização" + +#: html/Search/Bulk.html:120 html/Ticket/ModifyAll.html:66 html/Ticket/Update.html:67 +msgid "Update Type" +msgstr "Tipo de atualização" + +#: html/Search/Listing.html:61 +msgid "Update all these tickets at once" +msgstr "Atualizar todos estes tÃquetes de uma vez" + +#: html/Admin/Users/Prefs.html:49 +msgid "Update email" +msgstr "Atualizar email" + +#: html/Admin/Users/Prefs.html:55 +msgid "Update name" +msgstr "Atualizar nome" + +#: lib/RT/Interface/Web.pm:375 +msgid "Update not recorded." +msgstr "Atualização não registrada." + +#: html/Search/Bulk.html:81 +msgid "Update selected tickets" +msgstr "Atualizar os tÃquetes selecionados" + +#: html/Admin/Users/Prefs.html:36 +msgid "Update signature" +msgstr "Atualizar assinatura" + +#: html/Ticket/ModifyAll.html:63 +msgid "Update ticket" +msgstr "Atualizar o tÃquete" + +#: html/SelfService/Update.html:25 html/SelfService/Update.html:27 +#. ($Ticket->id) +msgid "Update ticket # %1" +msgstr "Atualizar o tÃquete # %1" + +#: html/SelfService/Update.html:50 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "Atualizar o tÃquete #%1" + +#: html/Ticket/Update.html:135 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "Atualizar tÃquete #%1 (%2)" + +#: lib/RT/Interface/Web.pm:373 +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:33 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1169 +msgid "Updated" +msgstr "Atualizado" + +#: 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" + +#: 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:125 etc/initialdata:191 +msgid "User Defined" +msgstr "Definido pelo Usuário" + +#: html/Admin/Users/Prefs.html:59 +msgid "User ID" +msgstr "Identificador de usuário" + +#: html/Elements/SelectUsers:26 +msgid "User Id" +msgstr "Identificador do usuário" + +#: html/Admin/Elements/GroupTabs:47 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/SystemTabs:47 html/Admin/Global/index.html:59 +msgid "User Rights" +msgstr "Direitos de Acesso de Usuário" + +#: html/Admin/Users/Modify.html:226 +#. ($msg) +msgid "User could not be created: %1" +msgstr "O usuário não pôde ser criado: %1" + +#: lib/RT/User_Overlay.pm:262 +msgid "User created" +msgstr "Usuário criado" + +#: html/Admin/Global/GroupRights.html:67 html/Admin/Groups/GroupRights.html:54 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "Grupos definidos pelo usuário" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "Usuário notificado" + +#: html/Admin/Users/Prefs.html:25 html/Admin/Users/Prefs.html:29 +msgid "User view" +msgstr "Visualização de usuário" + +#: html/Admin/Users/Modify.html:48 html/Elements/Login:42 html/Ticket/Elements/AddWatchers:35 +msgid "Username" +msgstr "Nome de usuário" + +#: html/Admin/Elements/SelectNewGroupMembers:26 html/Admin/Elements/Tabs:32 html/Admin/Groups/Members.html:55 html/Admin/Queues/People.html:68 html/Admin/index.html:29 html/User/Groups/Members.html:58 +msgid "Users" +msgstr "Usuários" + +#: html/Admin/Users/index.html:65 +msgid "Users matching search criteria" +msgstr "Usuários que satisfazem o critério de busca" + +#: html/Search/Elements/PickRestriction:51 +msgid "ValueOfQueue" +msgstr "Valor da fila" + +#: html/Admin/Elements/EditCustomField:40 +msgid "Values" +msgstr "Valores" + +#: NOT FOUND IN SOURCE +msgid "VrijevormEnkele" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Watch" +msgstr "Observar" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "WatchAsAdminCc" +msgstr "WatchAsAdminCc" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "Observador carregado" + +#: html/Admin/Elements/QueueTabs:42 +msgid "Watchers" +msgstr "Observadores" + +#: html/Admin/Elements/ModifyUser:56 +msgid "WebEncoding" +msgstr "Codificação de Web" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "Qua." + +#: etc/upgrade/2.1.71:161 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "Quando um tÃquete for aprovado por todos os aprovadores, adicione uma correspondência ao tÃquete original" + +#: etc/upgrade/2.1.71:135 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "Quando um tÃquete for aprovado por qualquer aprovador, adicione uma correspondência ao tÃquete original" + +#: etc/initialdata:138 +msgid "When a ticket is created" +msgstr "Quando um tÃquete é criado" + +#: etc/upgrade/2.1.71:79 +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 item aguardando sua aprovação" + +#: etc/initialdata:143 +msgid "When anything happens" +msgstr "Quando acontecer qualquer coisa" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "Sempre que um tÃquete for resolvido" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "Sempre que mudar o proprietário de um tÃquete" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "Sempre que um tÃquete mudar de fila" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "Sempre que o estado de um tÃquete mudar" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "Sempre que ocorrer uma condição definida por usuário" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "Sempre que um novo comentário é adicionado" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "Sempre que uma nova correspondência é adicionada" + +#: html/Admin/Users/Modify.html:164 html/User/Prefs.html:52 +msgid "Work" +msgstr "Trabalho" + +#: html/Admin/Elements/ModifyUser:70 +msgid "WorkPhone" +msgstr "Telefone de trabalho" + +#: html/SelfService/Display.html:86 html/Ticket/Elements/ShowBasics:35 html/Ticket/Update.html:65 +msgid "Worked" +msgstr "Trabalhado" + +#: lib/RT/Ticket_Overlay.pm:3056 +msgid "You already own this ticket" +msgstr "Você já é proprietário deste tÃquete" + +#: html/autohandler:121 +msgid "You are not an authorized user" +msgstr "Você não é um usuário autorizado" + +#: lib/RT/Ticket_Overlay.pm:2930 +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" + +#: 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 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "Você encontrou %1 tÃquetes na fila %2" + +#: html/NoAuth/Logout.html:31 html/REST/1.0/logout:25 +msgid "You have been logged out of RT." +msgstr "Você foi desconectado do RT." + +#: html/SelfService/Display.html:134 +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:1895 +msgid "You may not create requests in that queue." +msgstr "Você não pode criar requisições nesta fila." + +#: html/NoAuth/Logout.html:36 +msgid "You're welcome to login again" +msgstr "Volte sempre" + +#: html/SelfService/Elements/MyRequests:25 +#. ($friendly_status) +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:429 etc/upgrade/2.1.71:146 +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:463 etc/upgrade/2.1.71:180 +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:384 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "Sua requisição foi rejeitada." + +#: html/autohandler:136 html/autohandler:142 +msgid "Your username or password is incorrect" +msgstr "Nome de usuário ou senha incorretos" + +#: html/Admin/Elements/ModifyUser:84 html/Admin/Users/Modify.html:144 html/User/Prefs.html:96 +msgid "Zip" +msgstr "CEP" + +#: NOT FOUND IN SOURCE +msgid "[no subject]" +msgstr "[sem assunto]" + +#: html/User/Elements/DelegateRights:59 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "como outorgado a %1" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:34 +msgid "contains" +msgstr "contém" + +#: html/Elements/SelectAttachmentField:26 +msgid "content" +msgstr "content" + +#: html/Elements/SelectAttachmentField:27 +msgid "content-type" +msgstr "content-type" + +#: lib/RT/Ticket_Overlay.pm:2282 +msgid "correspondence (probably) not sent" +msgstr "correspondência (provavelmente) não enviada" + +#: lib/RT/Ticket_Overlay.pm:2292 +msgid "correspondence sent" +msgstr "correspondência enviada" + +#: html/Admin/Elements/ModifyQueue:63 html/Admin/Queues/Modify.html:77 lib/RT/Date.pm:319 +msgid "days" +msgstr "dias" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "morto" + +#: html/Search/Listing.html:75 +msgid "delete" +msgstr "remover" + +#: lib/RT/Queue_Overlay.pm:63 +msgid "deleted" +msgstr "removido" + +#: html/Search/Elements/PickRestriction:68 +msgid "does not match" +msgstr "não satisfaz" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:35 +msgid "doesn't contain" +msgstr "não contém" + +#: html/Elements/SelectEqualityOperator:38 +msgid "equal to" +msgstr "igual a" + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "falso" + +#: html/Elements/SelectAttachmentField:28 +msgid "filename" +msgstr "filename" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "greater than" +msgstr "maior que" + +#: lib/RT/Group_Overlay.pm:194 +#. ($self->Name) +msgid "group '%1'" +msgstr "grupo '%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "horas" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "identificador" + +#: html/Elements/SelectBoolean:32 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "is" +msgstr "é" + +#: html/Elements/SelectBoolean:36 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:37 html/Search/Elements/PickRestriction:48 html/Search/Elements/PickRestriction:77 html/Search/Elements/PickRestriction:89 +msgid "isn't" +msgstr "não é" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "less than" +msgstr "menor que" + +#: html/Search/Elements/PickRestriction:67 +msgid "matches" +msgstr "satisfaz" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "min" + +#: html/Ticket/Update.html:66 +msgid "minutes" +msgstr "minutos" + +#: bin/rt-commit-handler:765 +msgid "modifications\\n\\n" +msgstr "modificações\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "meses" + +#: lib/RT/Queue_Overlay.pm:58 +msgid "new" +msgstr "novo" + +#: html/Admin/Elements/EditScrips:43 +msgid "no value" +msgstr "sem valor" + +#: html/Ticket/Elements/EditWatchers:28 +msgid "none" +msgstr "nenhum" + +#: html/Elements/SelectEqualityOperator:38 +msgid "not equal to" +msgstr "diferente de" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "diferente" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "open" +msgstr "aberto" + +#: lib/RT/Group_Overlay.pm:199 +#. ($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:207 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "fila %1 %2" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "rejected" +msgstr "rejeitado" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "resolved" +msgstr "resolvido" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "seg" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "stalled" +msgstr "pendente" + +#: lib/RT/Group_Overlay.pm:202 +#. ($self->Type) +msgid "system %1" +msgstr "sistema %1" + +#: lib/RT/Group_Overlay.pm:213 +#. ($self->Type) +msgid "system group '%1'" +msgstr "grupo do sistema '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:42 +msgid "the calling component did not specify why" +msgstr "o componente chamador não especificou por que" + +#: lib/RT/Group_Overlay.pm:210 +#. ($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:216 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "grupo %1 não descrito" + +#: NOT FOUND IN SOURCE +msgid "undescripbed group %1" +msgstr "grupo sem descrição %1" + +#: lib/RT/Group_Overlay.pm:191 +#. ($user->Object->Name) +msgid "user %1" +msgstr "usuário %1" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "semanas" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "com modelo %1" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "anos" + +#: NOT FOUND IN SOURCE +msgid "ニックãƒãƒ¼ãƒ " +msgstr "" + diff --git a/rt/lib/RT/I18N/ru.po b/rt/lib/RT/I18N/ru.po new file mode 100644 index 000000000..eb1434606 --- /dev/null +++ b/rt/lib/RT/I18N/ru.po @@ -0,0 +1,4826 @@ +msgid "" +msgstr "" +"Last-Translator: Kirill Pushkin <kirill@mns.ru>\n" +"PO-Revision-Date: 2002-10-04 19:28+0400\n" +"Language-Team: Russian <ru@li.org>\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.9.6\n" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 +msgid "#" +msgstr "№" + +#: html/Admin/Queues/Scrip.html:55 +#. ($QueueObj->id) +msgid "#%1" +msgstr "" + +#: html/Approvals/Elements/ShowDependency:50 html/Ticket/Display.html:26 html/Ticket/Display.html:30 +#. ($Ticket->Id, $Ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "" + +#: lib/RT/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($args{'FIELD'}, $args{'OPERATOR'}, $args{'VALUE'}) +msgid "%1 %2 %3" +msgstr "" + +#: 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:3438 lib/RT/Transaction_Overlay.pm:559 lib/RT/Transaction_Overlay.pm:601 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 added" +msgstr "" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "%1 %2 назад" + +#: lib/RT/Ticket_Overlay.pm:3444 lib/RT/Transaction_Overlay.pm:566 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1 %2 изменено на %3" + +#: lib/RT/Ticket_Overlay.pm:3441 lib/RT/Transaction_Overlay.pm:562 lib/RT/Transaction_Overlay.pm:607 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 %2 of group %3" +msgstr "" + +#: html/Admin/Elements/EditScrips:44 html/Admin/Elements/ListGlobalScrips:28 +#. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)) +msgid "%1 %2 with template %3" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 (%2) %3 this ticket\\n" +msgstr "%1 (%2) %3 Ñтот тикет\\n" + +#: html/Search/Listing.html:57 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "" + +#: bin/rt-crontool:169 bin/rt-crontool:176 bin/rt-crontool:182 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - An argument to pass to %2" +msgstr "" + +#: bin/rt-crontool:185 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "" + +#: bin/rt-crontool:179 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "" + +#: bin/rt-crontool:173 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "" + +#: bin/rt-crontool:166 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "" + +#: lib/RT/ScripAction_Overlay.pm:122 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "%1 Ñкрипт загружен" + +#: lib/RT/Ticket_Overlay.pm:3471 +#. ($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 алиаÑÑ‹ требуют идентификатор тикета Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ над (от %2) %3" + +#: lib/RT/Link_Overlay.pm:117 lib/RT/Link_Overlay.pm:124 +#. ($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:52 lib/RT/Transaction_Overlay.pm:483 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%1 пользователем %2" + +#: lib/RT/Transaction_Overlay.pm:537 lib/RT/Transaction_Overlay.pm:626 lib/RT/Transaction_Overlay.pm:635 lib/RT/Transaction_Overlay.pm:638 +#. ($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 изменилоÑÑŒ Ñ %2 на %3" + +#: lib/RT/Interface/Web.pm:857 +msgid "%1 could not be set to %2." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 couldn't init a transaction (%2)\\n" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2813 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1 не могу закрыть тикет. Возможно, база данных RT иÑпорчена." + +#: html/Elements/MyTickets:25 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "" + +#: html/Elements/MyRequests:25 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "" + +#: bin/rt-crontool:161 +#. ($0) +msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron." +msgstr "" + +#: lib/RT/Queue_Overlay.pm:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1 больше не ÑвлÑетÑÑ %2 Ð´Ð»Ñ Ñтой очереди." + +#: lib/RT/Ticket_Overlay.pm:1570 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 больше не ÑвлÑетÑÑ %2 Ð´Ð»Ñ Ñтого тикета." + +#: lib/RT/Ticket_Overlay.pm:3527 +#. ($args{'Value'}, $cf->Name) +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 "" + +#: html/Ticket/Elements/ShowBasics:36 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 мин" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "%1 не отображаетÑÑ" + +#: html/User/Elements/DelegateRights:76 +#. (loc($ObjectType =~ /^RT::(.*)$/)) +msgid "%1 rights" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "%1 succeeded\\n" +msgstr "%1 уÑпешно произведено\\n" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for $MessageId" +msgstr "%1 тип не извеÑтен Ð´Ð»Ñ $MessageId" + +#: NOT FOUND IN SOURCE +msgid "%1 type unknown for %2" +msgstr "%1 тип не извеÑтен Ð´Ð»Ñ %2" + +#: NOT FOUND IN SOURCE +msgid "%1 was created without a CurrentUser\\n" +msgstr "" + +#: lib/RT/Action/ResolveMembers.pm:42 +#. (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/Transaction_Overlay.pm:435 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1: без вложений" + +#: html/Ticket/Elements/ShowTransaction:102 +#. ($size) +msgid "%1b" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:99 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1140 +#. ($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/EditQueueWatchers:29 html/Admin/Elements/EditScrips:35 html/Admin/Elements/EditTemplates:36 html/Admin/Groups/Members.html:52 html/Ticket/Elements/EditLinks:33 html/Ticket/Elements/EditPeople:46 html/User/Groups/Members.html:55 +msgid "(Check box to delete)" +msgstr "(Пометьте то, что хотите удалить)" + +#: NOT FOUND IN SOURCE +msgid "(Check boxes to delete)" +msgstr "" + +#: html/Ticket/Create.html:178 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(Введите номера или ÑÑылки на тикеты. ÐеÑколько тикетов разделÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð°Ð¼Ð¸.)" + +#: html/Admin/Queues/Modify.html:54 html/Admin/Queues/Modify.html:60 +#. ($RT::CorrespondAddress) +#. ($RT::CommentAddress) +msgid "(If left blank, will default to %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:33 html/Admin/Elements/ListGlobalCustomFields:32 +msgid "(No custom fields)" +msgstr "" + +#: html/Admin/Groups/Members.html:50 html/User/Groups/Members.html:53 +msgid "(No members)" +msgstr "(Ðет пользователей)" + +#: html/Admin/Elements/EditScrips:32 html/Admin/Elements/ListGlobalScrips:32 +msgid "(No scrips)" +msgstr "(Ðет Ñкриптов)" + +#: html/Admin/Elements/EditTemplates:31 +msgid "(No templates)" +msgstr "" + +#: html/Ticket/Update.html:85 +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 "" + +#: 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/Create.html:79 +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 "" + +#: html/Ticket/Update.html:81 +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 "" + +#: 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 "(Ðа Ñти адреÑа [разделенные запÑтой] отправлÑÑŽÑ‚ÑÑ ÐºÐ¾Ð¿Ð¸Ð¸ ÑообщениÑ. ÐдреÑа не ÑохранÑÑŽÑ‚ÑÑ Ð´Ð»Ñ Ð¿Ð¾Ñледующих уведомлений.)" + +#: html/Ticket/Create.html:69 +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 "" + +#: html/Admin/Groups/index.html:33 html/User/Groups/index.html:33 +msgid "(empty)" +msgstr "(пуÑто)" + +#: html/Admin/Users/index.html:39 +msgid "(no name listed)" +msgstr "" + +#: html/Elements/MyRequests:43 html/Elements/MyTickets:45 +msgid "(no subject)" +msgstr "(без темы)" + +#: html/Admin/Elements/SelectRights:48 html/Elements/SelectCustomFieldValue:30 html/Ticket/Elements/EditCustomField:59 html/Ticket/Elements/ShowCustomFields:36 lib/RT/Transaction_Overlay.pm:536 +msgid "(no value)" +msgstr "(нет значениÑ)" + +#: html/Ticket/Elements/EditLinks:116 +msgid "(only one ticket)" +msgstr "(только один тикет)" + +#: html/Elements/MyRequests:52 html/Elements/MyTickets:55 +msgid "(pending approval)" +msgstr "" + +#: html/Elements/MyRequests:54 html/Elements/MyTickets:57 +msgid "(pending other tickets)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "(requestor's group)" +msgstr "" + +#: html/Admin/Users/Modify.html:50 +msgid "(required)" +msgstr "(требуетÑÑ)" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "(untitled)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I own..." +msgstr "25 важнейших моих тикетов..." + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I requested..." +msgstr "25 Ñамых важных моих запроÑов..." + +#: html/Ticket/Elements/ShowBasics:32 +msgid "<% $Ticket->Status%>" +msgstr "<% $Ticket->Status%>" + +#: html/Elements/SelectTicketTypes:27 +msgid "<% $_ %>" +msgstr "" + +#: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:26 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"Создать тикет в очереди\"> %1" + +#: NOT FOUND IN SOURCE +msgid "??????" +msgstr "" + +#: etc/initialdata:203 +msgid "A blank template" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE Deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE Loaded" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be deleted" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "ACE could not be found" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:157 lib/RT/Principal_Overlay.pm:181 +msgid "ACE not found" +msgstr "ACE не найден" + +#: lib/RT/ACE_Overlay.pm:831 +msgid "ACEs can only be created and deleted." +msgstr "ACEÑ‹ можно только Ñоздавать и удалÑть" + +#: bin/rt-commit-handler:755 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "Прекращаем работу во избежание нежелательного Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚Ð¸ÐºÐµÑ‚Ð°.\\n" + +#: html/User/Elements/Tabs:32 +msgid "About me" +msgstr "" + +#: html/Admin/Users/Modify.html:80 +msgid "Access control" +msgstr "Права доÑтупа" + +#: html/Admin/Elements/EditScrip:57 +msgid "Action" +msgstr "ДейÑтвие" + +#: lib/RT/Scrip_Overlay.pm:147 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "" + +#: bin/rt-crontool:123 +msgid "Action committed." +msgstr "ДейÑтвие принÑто." + +#: bin/rt-crontool:119 +msgid "Action prepared..." +msgstr "ДейÑтвие подготовлено..." + +#: html/Search/Bulk.html:92 +msgid "Add AdminCc" +msgstr "Добавить админиÑтративную копию" + +#: html/Search/Bulk.html:90 +msgid "Add Cc" +msgstr "Добавить копию" + +#: html/Ticket/Create.html:114 html/Ticket/Update.html:100 +msgid "Add More Files" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Add Next State" +msgstr "" + +#: html/Search/Bulk.html:88 +msgid "Add Requestor" +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:55 +msgid "Add a scrip which will apply to all queues" +msgstr "Добавить Ñкрипт, который будет дейÑтвовать на вÑе очереди" + +#: html/Search/Bulk.html:118 +msgid "Add comments or replies to selected tickets" +msgstr "Добавить комментарии или ответы на выбранные тикеты" + +#: html/Admin/Groups/Members.html:42 html/User/Groups/Members.html:39 +msgid "Add members" +msgstr "Добавить пользователей" + +#: html/Admin/Queues/People.html:66 html/Ticket/Elements/AddWatchers:28 +msgid "Add new watchers" +msgstr "Добавить наблюдателей" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "Добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÐºÐ°Ðº %1 Ð´Ð»Ñ Ñтой очереди" + +#: lib/RT/Ticket_Overlay.pm:1454 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "Добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÐºÐ°Ðº %1 Ð´Ð»Ñ Ñтого тикета" + +#: html/Admin/Elements/ModifyUser:76 html/Admin/Users/Modify.html:122 html/User/Prefs.html:88 +msgid "Address1" +msgstr "ÐдреÑ1" + +#: html/Admin/Elements/ModifyUser:78 html/Admin/Users/Modify.html:127 html/User/Prefs.html:90 +msgid "Address2" +msgstr "ÐдреÑ2" + +#: html/Ticket/Create.html:74 +msgid "Admin Cc" +msgstr "ÐдминиÑÑ‚Ñ€Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ" + +#: etc/initialdata:274 +msgid "Admin Comment" +msgstr "" + +#: etc/initialdata:256 +msgid "Admin Correspondence" +msgstr "" + +#: html/Admin/Queues/index.html:25 html/Admin/Queues/index.html:28 +msgid "Admin queues" +msgstr "Управление очередÑми" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "Управление пользователÑми" + +#: html/Admin/Global/index.html:26 html/Admin/Global/index.html:28 +msgid "Admin/Global configuration" +msgstr "Общие наÑтройки" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "Группы" + +#: html/Admin/Queues/Modify.html:25 html/Admin/Queues/Modify.html:29 +msgid "Admin/Queue/Basics" +msgstr "Параметры очереди" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "" + +#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:39 html/Ticket/Update.html:50 lib/RT/ACE_Overlay.pm:89 +msgid "AdminCc" +msgstr "ÐдминиÑÑ‚Ñ€Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "AdminCustomFields" +msgstr "" + +#: lib/RT/Group_Overlay.pm:146 +msgid "AdminGroup" +msgstr "" + +#: lib/RT/Group_Overlay.pm:148 +msgid "AdminGroupMembership" +msgstr "" + +#: lib/RT/System.pm:59 +msgid "AdminOwnPersonalGroups" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "AdminQueue" +msgstr "" + +#: lib/RT/System.pm:60 +msgid "AdminUsers" +msgstr "" + +#: html/Admin/Queues/People.html:48 html/Ticket/Elements/EditPeople:54 +msgid "Administrative Cc" +msgstr "ÐдминиÑÑ‚Ñ€Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ" + +#: NOT FOUND IN SOURCE +msgid "Admins" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "" + +#: html/Elements/SelectDateRelation:36 +msgid "After" +msgstr "ПоÑле" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Alias" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Alias for" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:96 +msgid "All Custom Fields" +msgstr "" + +#: html/Admin/Queues/index.html:53 +msgid "All Queues" +msgstr "Ð’Ñе очереди" + +#: NOT FOUND IN SOURCE +msgid "Always sends a message to the requestors independent of message sender" +msgstr "" + +#: html/Elements/Tabs:58 +msgid "Approval" +msgstr "" + +#: html/Approvals/Display.html:46 html/Approvals/Elements/Approve:27 html/Approvals/Elements/ShowDependency:42 html/Approvals/index.html:65 +#. ($Ticket->Id, $Ticket->Subject) +#. ($ticket->id, $msg) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Approval #%1: %2" +msgstr "Виза #%1: %2" + +#: html/Approvals/index.html:54 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "Виза #%1: ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð½Ðµ Ñохранены из-за ошибки ÑиÑтемы" + +#: html/Approvals/index.html:52 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "Виза #%1: ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñаны" + +#: NOT FOUND IN SOURCE +msgid "Approval Details" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Approval diagram" +msgstr "" + +#: html/Approvals/Elements/Approve:45 +msgid "Approve" +msgstr "Завизировать" + +#: etc/initialdata:431 etc/upgrade/2.1.71:148 +msgid "Approver's notes: %1" +msgstr "" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "Ðпр." + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "" + +#: html/Elements/SelectSortOrder:35 +msgid "Ascending" +msgstr "Ð’ порÑдке возраÑтаниÑ" + +#: html/Search/Bulk.html:127 html/SelfService/Update.html:36 html/Ticket/ModifyAll.html:83 html/Ticket/Update.html:100 +msgid "Attach" +msgstr "Вложение" + +#: html/SelfService/Create.html:67 html/Ticket/Create.html:110 +msgid "Attach file" +msgstr "Вложить файл" + +#: html/Ticket/Create.html:98 html/Ticket/Update.html:89 +msgid "Attached file" +msgstr "" + +#: html/SelfService/Attachment/dhandler:36 +msgid "Attachment '%1' could not be loaded" +msgstr "Вложение '%1' не может быть загружено" + +#: lib/RT/Transaction_Overlay.pm:443 +msgid "Attachment created" +msgstr "Создано вложение" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: html/Ticket/Elements/ShowAttachments:26 +msgid "Attachments" +msgstr "ВложениÑ" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "Ðвг." + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "" + +#: html/Admin/Elements/ModifyUser:66 +msgid "AuthSystem" +msgstr "Тип региÑтрации" + +#: etc/initialdata:206 +msgid "Autoreply" +msgstr "" + +#: etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Bad PGP Signature: %1\\n" +msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ PGP: %1\\n" + +#: html/SelfService/Attachment/dhandler:40 +msgid "Bad attachment id. Couldn't find attachment '%1'\\n" +msgstr "Ðеверный идентификатор вложениÑ. ОтÑутÑтвует вложение '%1'\\n" + +#: bin/rt-commit-handler:827 +#. ($val) +msgid "Bad data in %1" +msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð°Ñ‚Ð° в %1" + +#: html/SelfService/Attachment/dhandler:43 +#. ($trans, $AttachmentObj->TransactionId()) +msgid "Bad transaction number for attachment. %1 should be %2\\n" +msgstr "Ðеправильный номер транзакции Ð´Ð»Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ. %1 должен быть %2\\n" + +#: html/Admin/Elements/GroupTabs:39 html/Admin/Elements/QueueTabs:39 html/Admin/Elements/UserTabs:38 html/Ticket/Elements/Tabs:90 html/User/Elements/GroupTabs:38 +msgid "Basics" +msgstr "Главное" + +#: html/Ticket/Update.html:83 +msgid "Bcc" +msgstr "Ð¡ÐºÑ€Ñ‹Ñ‚Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ" + +#: html/Admin/Elements/EditScrip:88 html/Admin/Global/GroupRights.html:85 html/Admin/Global/Template.html:46 html/Admin/Global/UserRights.html:54 html/Admin/Groups/GroupRights.html:73 html/Admin/Groups/Members.html:81 html/Admin/Groups/Modify.html:56 html/Admin/Groups/UserRights.html:55 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:45 html/Admin/Queues/UserRights.html:54 html/User/Groups/Modify.html:56 +msgid "Be sure to save your changes" +msgstr "Ðе забудьте Ñохранить наÑтройки" + +#: html/Elements/SelectDateRelation:34 lib/RT/CurrentUser.pm:322 +msgid "Before" +msgstr "До" + +#: NOT FOUND IN SOURCE +msgid "Begin Approval" +msgstr "" + +#: etc/initialdata:202 +msgid "Blank" +msgstr "" + +#: html/Search/Listing.html:79 +msgid "Bookmarkable URL for this search" +msgstr "Получить URL Ð´Ð»Ñ Ñтого поиÑка" + +#: html/Ticket/Elements/ShowHistory:39 html/Ticket/Elements/ShowHistory:45 +msgid "Brief headers" +msgstr "Сокращенный" + +#: html/Search/Bulk.html:25 html/Search/Bulk.html:26 +msgid "Bulk ticket update" +msgstr "Изменение одним махом" + +#: lib/RT/User_Overlay.pm:1331 +msgid "Can not modify system users" +msgstr "Ðе могу изменÑть ÑиÑтемных пользователей" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "Can this principal see this queue" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:144 +msgid "Can't add a custom field value without a name" +msgstr "Ðе могу добавить значение Ð¿Ð¾Ð»Ñ Ð±ÐµÐ· имени" + +#: lib/RT/Link_Overlay.pm:132 +msgid "Can't link a ticket to itself" +msgstr "Тикет не может быть ÑвÑзан Ñ Ñамим Ñобой" + +#: lib/RT/Ticket_Overlay.pm:2787 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "Ðе могу Ñоединить Ñ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð½Ñ‹Ð¼ тикетом (Ñта ошибка никогда не должна проиÑходить)." + +#: lib/RT/Ticket_Overlay.pm:2605 lib/RT/Ticket_Overlay.pm:2674 +msgid "Can't specifiy both base and target" +msgstr "Ðе могу указать одновременно и иÑточник, и Ð°Ð´Ñ€ÐµÑ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ" + +#: html/autohandler:112 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "Ðе могу Ñоздать пользователÑ: %1" + +#: etc/initialdata:50 html/Admin/Queues/People.html:44 html/SelfService/Create.html:51 html/SelfService/Display.html:50 html/Ticket/Create.html:64 html/Ticket/Elements/EditPeople:51 html/Ticket/Elements/ShowPeople:35 html/Ticket/Update.html:45 html/Ticket/Update.html:78 lib/RT/ACE_Overlay.pm:88 +msgid "Cc" +msgstr "КопиÑ" + +#: html/SelfService/Prefs.html:31 +msgid "Change password" +msgstr "Сменить пароль" + +#: html/Ticket/Create.html:101 html/Ticket/Update.html:92 +msgid "Check box to delete" +msgstr "" + +#: html/Admin/Elements/SelectRights:31 +msgid "Check box to revoke right" +msgstr "Выберите права, которые хотите отозвать" + +#: html/Ticket/Create.html:183 html/Ticket/Elements/EditLinks:131 html/Ticket/Elements/EditLinks:69 html/Ticket/Elements/ShowLinks:51 +msgid "Children" +msgstr "Потомки" + +#: html/Admin/Elements/ModifyUser:80 html/Admin/Users/Modify.html:132 html/User/Prefs.html:92 +msgid "City" +msgstr "Город" + +#: html/Ticket/Elements/ShowDates:47 +msgid "Closed" +msgstr "" + +#: html/SelfService/Elements/Tabs:60 +msgid "Closed requests" +msgstr "Закрытые запроÑÑ‹" + +#: NOT FOUND IN SOURCE +msgid "Code" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "Чего-чего?\\n" + +#: html/Ticket/Elements/ShowTransaction:179 html/Ticket/Elements/Tabs:153 +msgid "Comment" +msgstr "Комментировать" + +#: html/Admin/Elements/ModifyQueue:45 html/Admin/Queues/Modify.html:58 +msgid "Comment Address" +msgstr "ÐÐ´Ñ€ÐµÑ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸ÐµÐ²" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "Комментарий не запиÑан" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Comment on tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "CommentOnTicket" +msgstr "" + +#: html/Admin/Elements/ModifyUser:35 +msgid "Comments" +msgstr "Комментарии" + +#: html/Ticket/ModifyAll.html:70 html/Ticket/Update.html:70 +msgid "Comments (Not sent to requestors)" +msgstr "Комментарии (Ðе отправлÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð¾ÑителÑм)" + +#: html/Search/Bulk.html:122 +msgid "Comments (not sent to requestors)" +msgstr "Комментарии (не отправлÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð¾Ñителю)" + +#: html/Elements/ViewUser:27 +#. ($name) +msgid "Comments about %1" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ %1" + +#: html/Admin/Users/Modify.html:185 html/Ticket/Elements/ShowRequestor:44 +msgid "Comments about this user" +msgstr "Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± Ñтом пользователе" + +#: lib/RT/Transaction_Overlay.pm:545 +msgid "Comments added" +msgstr "Добавлены комментарии" + +#: lib/RT/Action/Generic.pm:140 +msgid "Commit Stubbed" +msgstr "ДейÑтвие не реализовано" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "Применить ограничениÑ" + +#: html/Admin/Elements/EditScrip:41 +msgid "Condition" +msgstr "УÑловие" + +#: bin/rt-crontool:109 +msgid "Condition matches..." +msgstr "ПодходÑщее уÑловие..." + +#: lib/RT/Scrip_Overlay.pm:160 +msgid "Condition not found" +msgstr "УÑловие не найдено" + +#: html/Elements/Tabs:52 +msgid "Configuration" +msgstr "ÐаÑтройка" + +#: html/SelfService/Prefs.html:33 +msgid "Confirm" +msgstr "Подтвердить" + +#: html/Admin/Elements/ModifyUser:60 +msgid "ContactInfoSystem" +msgstr "ÐšÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "Ðе могу разобрать дату поÑледнего контакта '%1'" + +#: html/Admin/Elements/ModifyTemplate:44 html/Ticket/ModifyAll.html:87 +msgid "Content" +msgstr "ТекÑÑ‚" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "" + +#: etc/initialdata:266 +msgid "Correspondence" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:39 html/Admin/Queues/Modify.html:51 +msgid "Correspondence Address" +msgstr "ÐÐ´Ñ€ÐµÑ Ð´Ð»Ñ Ñообщений" + +#: lib/RT/Transaction_Overlay.pm:541 +msgid "Correspondence added" +msgstr "Добавлено Ñообщение" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "Сообщение не запиÑано" + +#: lib/RT/Ticket_Overlay.pm:3458 +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 "" + +#: lib/RT/Ticket_Overlay.pm:2963 lib/RT/Ticket_Overlay.pm:2971 lib/RT/Ticket_Overlay.pm:2987 +msgid "Could not change owner. " +msgstr "Ðе могу Ñменить владельца. " + +#: html/Admin/Elements/EditCustomField:68 html/Admin/Elements/EditCustomFields:166 +#. ($msg) +msgid "Could not create CustomField" +msgstr "Ðе могу добавить поле" + +#: html/User/Groups/Modify.html:77 lib/RT/Group_Overlay.pm:474 lib/RT/Group_Overlay.pm:481 +msgid "Could not create group" +msgstr "Ðе могу Ñоздать группу" + +#: html/Admin/Global/Template.html:75 html/Admin/Queues/Template.html:72 +#. ($msg) +msgid "Could not create template: %1" +msgstr "Ðе могу Ñоздать шаблон: %1" + +#: lib/RT/Ticket_Overlay.pm:1073 lib/RT/Ticket_Overlay.pm:333 +msgid "Could not create ticket. Queue not set" +msgstr "Ðе могу Ñоздать тикет. Очередь не определена." + +#: lib/RT/User_Overlay.pm:208 lib/RT/User_Overlay.pm:220 lib/RT/User_Overlay.pm:238 lib/RT/User_Overlay.pm:414 +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 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:621 lib/RT/Ticket_Overlay.pm:1422 +msgid "Could not find or create that user" +msgstr "Ðе могу найти или Ñоздать Ñтого пользователÑ" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1501 +msgid "Could not find that principal" +msgstr "Ðе могу найти Ñтого пользователÑ" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "Ðе найден пользователь %1." + +#: html/Admin/Groups/Members.html:88 html/User/Groups/Members.html:90 html/User/Groups/Modify.html:82 +msgid "Could not load group" +msgstr "Ðе могу загрузить группу" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "Ðе могу назначить Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1 Ð´Ð»Ñ Ñтой очереди" + +#: lib/RT/Ticket_Overlay.pm:1443 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "Ðе могу назначить Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1 Ð´Ð»Ñ Ñтого тикета" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "Ðе могу отобрать функции у Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÐºÐ°Ðº %1 в Ñтой очереди" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "Ðе могу отобрать функции у Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÐºÐ°Ðº %1 Ð´Ð»Ñ Ñтого тикета" + +#: lib/RT/Group_Overlay.pm:985 +msgid "Couldn't add member to group" +msgstr "Ðе могу добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² группу" + +#: lib/RT/Ticket_Overlay.pm:3468 lib/RT/Ticket_Overlay.pm:3524 +#. ($Msg) +msgid "Couldn't create a transaction: %1" +msgstr "Ðе могу Ñоздать транзакцию: %1" + +#: 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/Interface/Web.pm:866 +msgid "Couldn't find row" +msgstr "" + +#: lib/RT/Group_Overlay.pm:959 +msgid "Couldn't find that principal" +msgstr "Ðе найти Ñтого пользователÑ" + +#: lib/RT/CustomField_Overlay.pm:175 +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:112 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "Ðе загрузить %1 из базы пользователей.\\n" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load KeywordSelects." +msgstr "" + +#: 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 "" + +#: html/Admin/Groups/GroupRights.html:88 html/Admin/Groups/UserRights.html:75 +#. ($id) +msgid "Couldn't load group %1" +msgstr "Ðе загрузить группу %1" + +#: lib/RT/Link_Overlay.pm:175 lib/RT/Link_Overlay.pm:184 lib/RT/Link_Overlay.pm:211 +msgid "Couldn't load link" +msgstr "Ðе загрузить ÑÑылку" + +#: html/Admin/Elements/EditCustomFields:147 html/Admin/Queues/People.html:121 +#. ($id) +msgid "Couldn't load queue" +msgstr "Ðе загрузить очередь" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:72 +#. ($id) +msgid "Couldn't load queue %1" +msgstr "Ðе загрузить очередь %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "Ðе загрузить Ñкрипт" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "Ðе загрузить шаблон" + +#: html/Admin/Users/Prefs.html:79 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "Ðе загрузить Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (%1)" + +#: html/SelfService/Display.html:166 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "Ðе загрузить тикет '%1'" + +#: html/Admin/Elements/ModifyUser:86 html/Admin/Users/Modify.html:149 html/User/Prefs.html:98 +msgid "Country" +msgstr "Страна" + +#: html/Admin/Elements/CreateUserCalled:26 html/Ticket/Create.html:135 html/Ticket/Create.html:195 +msgid "Create" +msgstr "Создать" + +#: etc/initialdata:128 +msgid "Create Tickets" +msgstr "" + +#: html/Admin/Elements/EditCustomField:58 +msgid "Create a CustomField" +msgstr "Добавить поле" + +#: html/Admin/Queues/CustomField.html:48 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "" + +#: html/Admin/Global/CustomField.html:48 +msgid "Create a CustomField which applies to all queues" +msgstr "" + +#: 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:67 html/Admin/Groups/Modify.html:93 +msgid "Create a new group" +msgstr "Добавить новую группу" + +#: html/User/Groups/Modify.html:67 html/User/Groups/Modify.html:92 +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/SelfService/Create.html:30 html/Ticket/Create.html:25 html/Ticket/Create.html:28 html/Ticket/Create.html:36 +msgid "Create a new ticket" +msgstr "Добавить новый тикет" + +#: html/Admin/Users/Modify.html:214 html/Admin/Users/Modify.html:241 +msgid "Create a new user" +msgstr "Добавить нового пользователÑ" + +#: html/Admin/Queues/Modify.html:103 +msgid "Create a queue" +msgstr "Создать очередь" + +#: NOT FOUND IN SOURCE +msgid "Create a queue called" +msgstr "Создать очередь Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼" + +#: html/SelfService/Create.html:25 html/SelfService/Create.html:27 +msgid "Create a request" +msgstr "Создать запроÑ" + +#: html/Admin/Queues/Scrip.html:59 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "Создать Ñкрипт Ð´Ð»Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´Ð¸ %1" + +#: html/Admin/Global/Template.html:69 html/Admin/Queues/Template.html:65 +msgid "Create a template" +msgstr "Создать запроÑ" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1 / %2 / %3 " +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Create failed: %1/%2/%3" +msgstr "" + +#: etc/initialdata:130 +msgid "Create new tickets based on this scrip's template" +msgstr "" + +#: html/SelfService/Create.html:81 +msgid "Create ticket" +msgstr "Создать тикет" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Create tickets in this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Create, delete and modify custom fields" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:68 +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:59 +msgid "Create, delete and modify the members of personal groups" +msgstr "" + +#: lib/RT/System.pm:60 +msgid "Create, delete and modify users" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "CreateTicket" +msgstr "" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/ShowDates:27 lib/RT/Ticket_Overlay.pm:1167 +msgid "Created" +msgstr "Создан" + +#: html/Admin/Elements/EditCustomField:71 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "Добавлено поле %1" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "Создан шаблон %1" + +#: html/Ticket/Elements/EditLinks:28 +msgid "Current Relationships" +msgstr "Текущие ÑвÑзи" + +#: html/Admin/Elements/EditScrips:30 +msgid "Current Scrips" +msgstr "Текущие Ñкрипты" + +#: html/Admin/Groups/Members.html:39 html/User/Groups/Members.html:42 +msgid "Current members" +msgstr "Текущие пользователи" + +#: html/Admin/Elements/SelectRights:29 +msgid "Current rights" +msgstr "Текущие права" + +#: html/Search/Listing.html:71 +msgid "Current search criteria" +msgstr "" + +#: html/Admin/Queues/People.html:41 html/Ticket/Elements/EditPeople:45 +msgid "Current watchers" +msgstr "Текущие наблюдатели" + +#: html/Admin/Global/CustomField.html:55 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "" + +#: html/Admin/Elements/QueueTabs:53 html/Admin/Elements/SystemTabs:40 html/Admin/Global/index.html:50 html/Ticket/Elements/ShowSummary:35 +msgid "Custom Fields" +msgstr "Дополнительные полÑ" + +#: html/Admin/Elements/EditScrip:73 +msgid "Custom action cleanup code" +msgstr "ПользовательÑкий код очиÑтки" + +#: html/Admin/Elements/EditScrip:65 +msgid "Custom action preparation code" +msgstr "ПользовательÑкий подготовительный код" + +#: html/Admin/Elements/EditScrip:49 +msgid "Custom condition" +msgstr "ПользовательÑкое уÑловие" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "Дополнительное поле %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "Дополнительное поле %1 имеет значение." + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "Дополнительное поле %1 не имеет значениÑ." + +#: lib/RT/Ticket_Overlay.pm:3360 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "Дополнительное поле %1 не найдено" + +#: html/Admin/Elements/EditCustomFields:197 +msgid "Custom field deleted" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3510 +msgid "Custom field not found" +msgstr "Дополнительное поле не найдено" + +#: lib/RT/CustomField_Overlay.pm:283 +#. ($args{'Content'}, $self->Name) +msgid "Custom field value %1 could not be found for custom field %2" +msgstr "Значение %1 не может быть найдено Ð´Ð»Ñ Ð¿Ð¾Ð»Ñ %2" + +#: NOT FOUND IN SOURCE +msgid "Custom field value changed from %1 to %2" +msgstr "Значение Ð¿Ð¾Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¾ Ñ %1 на %2" + +#: lib/RT/CustomField_Overlay.pm:185 +msgid "Custom field value could not be deleted" +msgstr "Значение дополнительного Ð¿Ð¾Ð»Ñ Ð½Ðµ может быть удалено" + +#: lib/RT/CustomField_Overlay.pm:289 +msgid "Custom field value could not be found" +msgstr "Значение дополнительного Ð¿Ð¾Ð»Ñ Ð½Ðµ найдено" + +#: lib/RT/CustomField_Overlay.pm:183 lib/RT/CustomField_Overlay.pm:291 +msgid "Custom field value deleted" +msgstr "Значение дополнительного Ð¿Ð¾Ð»Ñ Ð±Ñ‹Ð»Ð¾ удалено" + +#: lib/RT/Transaction_Overlay.pm:550 +msgid "CustomField" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "" + +#: html/Ticket/Create.html:161 html/Ticket/Elements/ShowSummary:53 html/Ticket/Elements/Tabs:93 html/Ticket/ModifyAll.html:44 +msgid "Dates" +msgstr "Даты" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "Дек." + +#: NOT FOUND IN SOURCE +msgid "December" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "" + +#: etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "" + +#: etc/initialdata:275 +msgid "Default admin comment template" +msgstr "" + +#: etc/initialdata:257 +msgid "Default admin correspondence template" +msgstr "" + +#: etc/initialdata:267 +msgid "Default correspondence template" +msgstr "" + +#: etc/initialdata:238 +msgid "Default transaction template" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:645 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "" + +#: html/User/Delegation.html:25 html/User/Delegation.html:28 +msgid "Delegate rights" +msgstr "Передача прав" + +#: lib/RT/System.pm:63 +msgid "Delegate specific rights which have been granted to you." +msgstr "" + +#: lib/RT/System.pm:63 +msgid "DelegateRights" +msgstr "" + +#: html/User/Elements/Tabs:38 +msgid "Delegation" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Delete" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "Delete tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:90 +msgid "DeleteTicket" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "Удаление Ñтого объекта может нарушить ÑÑылочную целоÑтноÑть" + +#: lib/RT/Queue_Overlay.pm:292 +msgid "Deleting this object would break referential integrity" +msgstr "Удаление Ñтого объекта нарушит ÑÑылочную целоÑтноÑть" + +#: lib/RT/User_Overlay.pm:430 +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:46 +msgid "Deny" +msgstr "Отказать" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/EditLinks:123 html/Ticket/Elements/EditLinks:47 html/Ticket/Elements/ShowDependencies:32 html/Ticket/Elements/ShowLinks:35 +msgid "Depended on by" +msgstr "От него завиÑÑÑ‚" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "ЗавиÑимоÑти: \\n" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:180 html/Ticket/Elements/EditLinks:119 html/Ticket/Elements/EditLinks:36 html/Ticket/Elements/ShowDependencies:25 html/Ticket/Elements/ShowLinks:27 +msgid "Depends on" +msgstr "ЗавиÑит от" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "" + +#: html/Elements/SelectSortOrder:35 +msgid "Descending" +msgstr "Ð’ порÑдке убываниÑ" + +#: html/SelfService/Create.html:75 html/Ticket/Create.html:119 +msgid "Describe the issue below" +msgstr "Опишите проблему" + +#: html/Admin/Elements/AddCustomFieldValue:27 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/EditScrip:34 html/Admin/Elements/ModifyQueue:36 html/Admin/Elements/ModifyTemplate:36 html/Admin/Groups/Modify.html:49 html/Admin/Queues/Modify.html:48 html/Elements/SelectGroups:27 html/User/Groups/Modify.html:49 +msgid "Description" +msgstr "ОпиÑание" + +#: html/SelfService/Elements/MyRequests:44 +msgid "Details" +msgstr "ПодробноÑти" + +#: html/Ticket/Elements/Tabs:85 +msgid "Display" +msgstr "Показать" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Display Access Control List" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "Display Scrip templates for this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Display Scrips for this queue" +msgstr "" + +#: html/Ticket/Elements/ShowHistory:35 +msgid "Display mode" +msgstr "Режим показа" + +#: html/SelfService/Display.html:25 html/SelfService/Display.html:29 +#. ($Ticket->id) +msgid "Display ticket #%1" +msgstr "Показать тикет #%1" + +#: lib/RT/System.pm:54 +msgid "Do anything and everything" +msgstr "" + +#: html/Elements/Refresh:30 +msgid "Don't refresh this page." +msgstr "Ðе обновлÑть Ñту Ñтраницу" + +#: html/Search/Elements/PickRestriction:114 +msgid "Don't show search results" +msgstr "" + +#: html/Ticket/Elements/ShowTransaction:105 +msgid "Download" +msgstr "Скачать" + +#: html/Elements/SelectDateType:32 html/Ticket/Create.html:167 html/Ticket/Elements/EditDates:45 html/Ticket/Elements/ShowDates:43 lib/RT/Ticket_Overlay.pm:1171 +msgid "Due" +msgstr "Дан Ñрок" + +#: NOT FOUND IN SOURCE +msgid "Due date '%1' could not be parsed" +msgstr "Ðе могу прочеÑть Ñрок Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ñ‹ '%1'" + +#: bin/rt-commit-handler:754 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "ОШИБКÐ: Ðе могу загрузить тикет '%1': %2.\\n" + +#: NOT FOUND IN SOURCE +msgid "Edit" +msgstr "Изменить" + +#: NOT FOUND IN SOURCE +msgid "Edit Conditions" +msgstr "" + +#: html/Admin/Queues/CustomFields.html:45 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "Изменение дополнительных полей Ð´Ð»Ñ %1" + +#: html/Ticket/ModifyLinks.html:36 +msgid "Edit Relationships" +msgstr "Изменение ÑвÑзей" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit keywords" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "" + +#: html/Admin/Global/index.html:46 +msgid "Edit system templates" +msgstr "Изменение ÑиÑтемных шаблонов" + +#: NOT FOUND IN SOURCE +msgid "Edit templates for %1" +msgstr "Изменение шаблонов Ð´Ð»Ñ %1" + +#: html/Admin/Elements/ModifyQueue:25 html/Admin/Queues/Modify.html:117 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "Изменение наÑтроек очереди %1" + +#: html/Admin/Elements/ModifyUser:25 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "Изменение наÑтроек Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1" + +#: html/Admin/Elements/EditCustomField:74 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "Изменение Ð¿Ð¾Ð»Ñ %1" + +#: html/Admin/Groups/Members.html:32 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "Пользователи в группе %1" + +#: html/User/Groups/Members.html:129 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "Пользователи в личной группе %1" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "Изменение шаблона %1" + +#: lib/RT/Ticket_Overlay.pm:2615 lib/RT/Ticket_Overlay.pm:2683 +msgid "Either base or target must be specified" +msgstr "Ðужно указать либо иÑточник, либо Ð°Ð´Ñ€ÐµÑ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ" + +#: html/Admin/Users/Modify.html:53 html/Admin/Users/Prefs.html:46 html/Elements/SelectUsers:27 html/Ticket/Elements/AddWatchers:56 html/User/Prefs.html:42 +msgid "Email" +msgstr "Email" + +#: lib/RT/User_Overlay.pm:188 +msgid "Email address in use" +msgstr "Email уже занÑÑ‚" + +#: html/Admin/Elements/ModifyUser:42 +msgid "EmailAddress" +msgstr "EmailAddress" + +#: html/Admin/Elements/ModifyUser:54 +msgid "EmailEncoding" +msgstr "EmailEncoding" + +#: html/Admin/Elements/EditCustomField:36 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "" + +#: html/Admin/Groups/Modify.html:53 html/User/Groups/Modify.html:53 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "" + +#: html/Admin/Queues/Modify.html:84 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "Включена (СнÑÑ‚Ð°Ñ Ð³Ð°Ð»Ð¾Ñ‡ÐºÐ° означает отключенную очередь)" + +#: html/Admin/Elements/EditCustomFields:99 +msgid "Enabled Custom Fields" +msgstr "" + +#: html/Admin/Queues/index.html:56 +msgid "Enabled Queues" +msgstr "Включенные очереди" + +#: html/Admin/Elements/EditCustomField:90 html/Admin/Groups/Modify.html:117 html/Admin/Queues/Modify.html:138 html/Admin/Users/Modify.html:283 html/User/Groups/Modify.html:117 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "Включен ÑÑ‚Ð°Ñ‚ÑƒÑ %1" + +#: lib/RT/CustomField_Overlay.pm:361 +msgid "Enter multiple values" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:358 +msgid "Enter one value" +msgstr "" + +#: html/Ticket/Elements/EditLinks:112 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "Введите номера или ÑÑылки на тикеты. ÐеÑколько тикетов разделÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð°Ð¼Ð¸." + +#: html/Elements/Login:29 html/SelfService/Error.html:25 html/SelfService/Error.html:26 +msgid "Error" +msgstr "Ошибка" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "Ошибка в параметрах Queue->AddWatcher" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "Ошибка в параметрах Queue->DelWatcher" + +#: lib/RT/Ticket_Overlay.pm:1356 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "Ошибка в параметрах Ticket->AddWatcher" + +#: lib/RT/Ticket_Overlay.pm:1532 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "Ошибка в параметрах Ticket->DelWatcher" + +#: etc/initialdata:20 +msgid "Everyone" +msgstr "" + +#: bin/rt-crontool:194 +msgid "Example:" +msgstr "Пример:" + +#: html/Admin/Elements/ModifyUser:64 +msgid "ExternalAuthId" +msgstr "ExternalAuthId" + +#: html/Admin/Elements/ModifyUser:58 +msgid "ExternalContactInfoId" +msgstr "ExternalContactInfoId" + +#: html/Admin/Users/Modify.html:73 +msgid "Extra info" +msgstr "Доп. информациÑ" + +#: lib/RT/User_Overlay.pm:302 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "Ðе могу найти пÑевдо-группу 'Полномочных' пользователей" + +#: lib/RT/User_Overlay.pm:309 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "Ðе могу найти пÑевдо-группу 'Ðеполномочных' пользователей" + +#: bin/rt-crontool:138 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "Фев." + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "Конец" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:59 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "Конечный приоритет" + +#: lib/RT/Ticket_Overlay.pm:1162 +msgid "FinalPriority" +msgstr "" + +#: html/Admin/Queues/People.html:61 html/Ticket/Elements/EditPeople:34 +msgid "Find group whose" +msgstr "" + +#: html/Elements/Quicksearch:25 +msgid "Find new/open tickets" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ тикетах" + +#: html/Admin/Queues/People.html:57 html/Admin/Users/index.html:46 html/Ticket/Elements/EditPeople:30 +msgid "Find people whose" +msgstr "Ðайти людей, у которых" + +#: html/Search/Listing.html:108 +msgid "Find tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Finish Approval" +msgstr "" + +#: html/Ticket/Elements/Tabs:58 +msgid "First" +msgstr "Ðачало" + +#: html/Search/Listing.html:41 +msgid "First page" +msgstr "ÐŸÐµÑ€Ð²Ð°Ñ Ñтраница" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "Foo Bar Baz" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "Foo!" + +#: html/Search/Bulk.html:87 +msgid "Force change" +msgstr "Изменить Ñилой" + +#: html/Search/Listing.html:106 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "" + +#: lib/RT/Interface/Web.pm:868 +msgid "Found Object" +msgstr "" + +#: html/Admin/Elements/ModifyUser:44 +msgid "FreeformContactInfo" +msgstr "FreeformContactInfo" + +#: lib/RT/CustomField_Overlay.pm:38 +msgid "FreeformMultiple" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformSingle" +msgstr "" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "Птн." + +#: html/Ticket/Elements/ShowHistory:41 html/Ticket/Elements/ShowHistory:51 +msgid "Full headers" +msgstr "Полный" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "Берем текущего Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· pgp подпиÑи\\n" + +#: lib/RT/Transaction_Overlay.pm:595 +#. ($New->Name) +msgid "Given to %1" +msgstr "" + +#: html/Admin/Elements/Tabs:41 html/Admin/index.html:38 +msgid "Global" +msgstr "Общие" + +#: NOT FOUND IN SOURCE +msgid "Global Keyword Selections" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "" + +#: html/Admin/Elements/SelectTemplate:38 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:75 html/Admin/Queues/People.html:59 html/Admin/Queues/People.html:63 html/Admin/Queues/index.html:44 html/Admin/Users/index.html:49 html/Ticket/Elements/EditPeople:32 html/Ticket/Elements/EditPeople:36 html/index.html:41 +msgid "Go!" +msgstr "Поехали!" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "Ð¥Ð¾Ñ€Ð¾ÑˆÐ°Ñ pgp подпиÑÑŒ от %1\\n" + +#: html/Search/Listing.html:50 +msgid "Goto page" +msgstr "Перейти на Ñтраницу" + +#: html/Elements/GotoTicket:25 html/SelfService/Elements/GotoTicket:25 +msgid "Goto ticket" +msgstr "Показать тикет" + +#: NOT FOUND IN SOURCE +msgid "Grand" +msgstr "" + +#: html/Ticket/Elements/AddWatchers:46 html/User/Elements/DelegateRights:78 +msgid "Group" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "Группа %1 %2: %3" + +#: html/Admin/Elements/GroupTabs:45 html/Admin/Elements/QueueTabs:57 html/Admin/Elements/SystemTabs:44 html/Admin/Global/index.html:55 +msgid "Group Rights" +msgstr "Права группы" + +#: lib/RT/Group_Overlay.pm:965 +msgid "Group already has member" +msgstr "Пользователь уже входит в группу" + +#: NOT FOUND IN SOURCE +msgid "Group could not be created." +msgstr "" + +#: html/Admin/Groups/Modify.html:77 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "Ðе могу Ñоздать группу: %1" + +#: lib/RT/Group_Overlay.pm:497 +msgid "Group created" +msgstr "Создана группа" + +#: lib/RT/Group_Overlay.pm:1133 +msgid "Group has no such member" +msgstr "" + +#: lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1429 lib/RT/Ticket_Overlay.pm:1507 +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" + +#: html/Admin/Elements/SelectNewGroupMembers:35 html/Admin/Elements/Tabs:35 html/Admin/Groups/Members.html:64 html/Admin/Queues/People.html:83 html/Admin/index.html:32 html/User/Groups/Members.html:67 +msgid "Groups" +msgstr "Группы" + +#: lib/RT/Group_Overlay.pm:971 +msgid "Groups can't be members of their members" +msgstr "Группы не могут быть членами входÑщих в них пользователей" + +#: lib/RT/Interface/CLI.pm:73 lib/RT/Interface/CLI.pm:73 +msgid "Hello!" +msgstr "ЗдравÑтвуйте!" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "Hello, %1" + +#: html/Ticket/Elements/ShowHistory:30 html/Ticket/Elements/Tabs:88 +msgid "History" +msgstr "ИÑториÑ" + +#: html/Admin/Elements/ModifyUser:68 +msgid "HomePhone" +msgstr "HomePhone" + +#: html/Elements/Tabs:46 +msgid "Homepage" +msgstr "Домой" + +#: lib/RT/Base.pm:74 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "I have [quant,_1,concrete mixer]." +msgstr "I have [quant,_1,concrete mixer]." + +#: html/Ticket/Elements/ShowBasics:27 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "Тикет" + +#: html/Admin/Users/Modify.html:44 html/User/Prefs.html:39 +msgid "Identity" +msgstr "ЛичноÑть" + +#: etc/upgrade/2.1.71:86 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "" + +#: bin/rt-crontool:190 +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:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "If you've updated anything above, be sure to" +msgstr "ЕÑли вы что-либо изменили, то удоÑтоверьтеÑÑŒ, что" + +#: lib/RT/Interface/Web.pm:860 +msgid "Illegal value for %1" +msgstr "" + +#: lib/RT/Interface/Web.pm:863 +msgid "Immutable field" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:74 +msgid "Include disabled custom fields in listing." +msgstr "" + +#: html/Admin/Queues/index.html:43 +msgid "Include disabled queues in listing." +msgstr "Показывать отключенные очереди." + +#: html/Admin/Users/index.html:47 +msgid "Include disabled users in search." +msgstr "Показать отключенных пользователей." + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "Ðачальный приоритет" + +#: lib/RT/Ticket_Overlay.pm:1161 lib/RT/Ticket_Overlay.pm:1163 +msgid "InitialPriority" +msgstr "" + +#: lib/RT/ScripAction_Overlay.pm:105 +msgid "Input error" +msgstr "Ошибка ввода" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:3729 +msgid "Internal Error" +msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°" + +#: lib/RT/Record.pm:143 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "" + +#: lib/RT/Group_Overlay.pm:644 +msgid "Invalid Group Type" +msgstr "Ðеправильный тип группы" + +#: lib/RT/Principal_Overlay.pm:128 +msgid "Invalid Right" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "" + +#: lib/RT/Interface/Web.pm:865 +msgid "Invalid data" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:438 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "Владелец отÑутÑтвует. ЗаменÑем его на 'nobody'." + +#: lib/RT/Scrip_Overlay.pm:134 lib/RT/Template_Overlay.pm:251 +msgid "Invalid queue" +msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´ÑŒ" + +#: lib/RT/ACE_Overlay.pm:244 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:259 lib/RT/ACE_Overlay.pm:270 lib/RT/ACE_Overlay.pm:275 +msgid "Invalid right" +msgstr "Ðеверные права" + +#: lib/RT/Record.pm:118 +#. ($key) +msgid "Invalid value for %1" +msgstr "Ðеправильное значение Ð´Ð»Ñ %1" + +#: lib/RT/Ticket_Overlay.pm:3367 +msgid "Invalid value for custom field" +msgstr "Ðеправильное значение Ð´Ð»Ñ Ñтого полÑ" + +#: lib/RT/Ticket_Overlay.pm:345 +msgid "Invalid value for status" +msgstr "Такого ÑтатуÑа не бывает" + +#: bin/rt-crontool:191 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "Обратите внимание, что обычные пользователи не имеют права запуÑкать Ñту программу." + +#: bin/rt-crontool:192 +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 "ПредполагаетÑÑ, что Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка Ñтой программы вы должны Ñоздать учетную запиÑÑŒ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Unix Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¼Ð¸ уÑтановками групп и доÑтупом к RT." + +#: bin/rt-crontool:163 +msgid "It takes several arguments:" +msgstr "Она требует неÑколько параметров:" + +#: NOT FOUND IN SOURCE +msgid "Items pending my approval" +msgstr "Тикеты, ожидающие моей визы" + +#: lib/RT/Date.pm:411 +msgid "Jan." +msgstr "Янв." + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "" + +#: lib/RT/Group_Overlay.pm:149 +msgid "Join or leave this group" +msgstr "" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "Июл." + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "" + +#: html/Ticket/Elements/Tabs:99 +msgid "Jumbo" +msgstr "Ð’Ñе вмеÑте" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "Июн." + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "Ключевое Ñлово" + +#: html/Admin/Elements/ModifyUser:52 +msgid "Lang" +msgstr "Язык" + +#: html/Ticket/Elements/Tabs:73 +msgid "Last" +msgstr "Конец" + +#: html/Ticket/Elements/EditDates:38 html/Ticket/Elements/ShowDates:39 +msgid "Last Contact" +msgstr "Контакт" + +#: html/Elements/SelectDateType:29 +msgid "Last Contacted" +msgstr "Контакт" + +#: html/Search/Elements/TicketHeader:41 +msgid "Last Notified" +msgstr "" + +#: html/Elements/SelectDateType:30 +msgid "Last Updated" +msgstr "Обновлен" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "ОÑталоÑÑŒ" + +#: html/Admin/Users/Modify.html:83 +msgid "Let this user access RT" +msgstr "Разрешить доÑтуп к RT" + +#: html/Admin/Users/Modify.html:87 +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" + +#: lib/RT/Ticket_Overlay.pm:2697 +msgid "Link already exists" +msgstr "СвÑзь уже ÑущеÑтвует" + +#: lib/RT/Ticket_Overlay.pm:2709 +msgid "Link could not be created" +msgstr "Ðе могу ÑвÑзать тикеты" + +#: lib/RT/Ticket_Overlay.pm:2717 lib/RT/Ticket_Overlay.pm:2727 +#. ($TransString) +msgid "Link created (%1)" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2638 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "Удалена ÑвÑзь (%1)" + +#: lib/RT/Ticket_Overlay.pm:2644 +msgid "Link not found" +msgstr "СвÑзь не найдена" + +#: html/Ticket/ModifyLinks.html:25 html/Ticket/ModifyLinks.html:29 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "СвÑзываем тикет #%1" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "" + +#: html/Ticket/Elements/Tabs:97 +msgid "Links" +msgstr "СвÑзи" + +#: html/Admin/Users/Modify.html:114 html/User/Prefs.html:85 +msgid "Location" +msgstr "МеÑтонахождение" + +#: lib/RT.pm:158 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "Ðе найден каталог Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ %1 или не доÑтупен на запиÑÑŒ.\\n RT не может продолжить работу." + +#: html/Elements/Header:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "ЗарегиÑтрирован как %1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:25 html/Elements/Login:34 html/Elements/Login:45 +msgid "Login" +msgstr "Логин" + +#: html/Elements/Header:54 +msgid "Logout" +msgstr "Выйти" + +#: html/Search/Bulk.html:86 +msgid "Make Owner" +msgstr "Ðазначить владельцем" + +#: html/Search/Bulk.html:102 +msgid "Make Status" +msgstr "Ðазначить ÑтатуÑ" + +#: html/Search/Bulk.html:109 +msgid "Make date Due" +msgstr "Ðазначить Ñрок" + +#: html/Search/Bulk.html:110 +msgid "Make date Resolved" +msgstr "Изменить дату решениÑ" + +#: html/Search/Bulk.html:107 +msgid "Make date Started" +msgstr "Изменить дату 'ÐачалÑÑ'" + +#: html/Search/Bulk.html:106 +msgid "Make date Starts" +msgstr "Изменить дату 'ÐачинаетÑÑ'" + +#: html/Search/Bulk.html:108 +msgid "Make date Told" +msgstr "Изменить дату поÑледнего контакта" + +#: html/Search/Bulk.html:99 +msgid "Make priority" +msgstr "Ðазначить приоритет" + +#: html/Search/Bulk.html:100 +msgid "Make queue" +msgstr "Ðазначить очередь" + +#: html/Search/Bulk.html:98 +msgid "Make subject" +msgstr "Изменить тему" + +#: html/Admin/index.html:33 +msgid "Manage groups and group membership" +msgstr "ÐаÑтройка групп и их пользователей" + +#: html/Admin/index.html:39 +msgid "Manage properties and configuration which apply to all queues" +msgstr "ÐаÑтройки Ð´Ð»Ñ Ð²Ñех очередей" + +#: html/Admin/index.html:36 +msgid "Manage queues and queue-specific properties" +msgstr "ÐаÑтройка очередей и их параметров" + +#: html/Admin/index.html:30 +msgid "Manage users and passwords" +msgstr "ÐаÑтройка пользователей и их паролей" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "Мар." + +#: NOT FOUND IN SOURCE +msgid "March" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "May" +msgstr "" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "Май" + +#: lib/RT/Group_Overlay.pm:982 +msgid "Member added" +msgstr "Пользователь добавлен в группу" + +#: lib/RT/Group_Overlay.pm:1140 +msgid "Member deleted" +msgstr "Пользователь удален из группы" + +#: lib/RT/Group_Overlay.pm:1144 +msgid "Member not deleted" +msgstr "Пользователь не удален из группы" + +#: html/Elements/SelectLinkType:26 +msgid "Member of" +msgstr "Входит в" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "" + +#: html/Admin/Elements/GroupTabs:42 html/User/Elements/GroupTabs:42 +msgid "Members" +msgstr "Пользователи" + +#: lib/RT/Ticket_Overlay.pm:2843 +msgid "Merge Successful" +msgstr "Тикеты уÑпешно Ñклеены" + +#: lib/RT/Ticket_Overlay.pm:2804 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "Склейка не удалаÑÑŒ. Ðе Ñмогла уÑтановить идентификатор тикета." + +#: html/Ticket/Elements/EditLinks:115 +msgid "Merge into" +msgstr "Приклеить к" + +#: html/Ticket/Update.html:102 +msgid "Message" +msgstr "ТекÑÑ‚" + +#: lib/RT/Interface/Web.pm:867 +msgid "Missing a primary key?: %1" +msgstr "" + +#: html/Admin/Users/Modify.html:169 html/User/Prefs.html:54 +msgid "Mobile" +msgstr "Мобильник" + +#: html/Admin/Elements/ModifyUser:72 +msgid "MobilePhone" +msgstr "MobilePhone" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify Access Control List" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Modify Custom Field %1" +msgstr "Изменение дополнительного Ð¿Ð¾Ð»Ñ %1" + +#: html/Admin/Global/CustomFields.html:44 html/Admin/Global/index.html:51 +msgid "Modify Custom Fields which apply to all queues" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "Modify Scrip templates for this queue" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:76 +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 "" + +#: html/Admin/Queues/CustomField.html:45 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "" + +#: html/Admin/Global/CustomField.html:53 +msgid "Modify a CustomField which applies to all queues" +msgstr "" + +#: html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "Изменить Ñкрипт Ð´Ð»Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´Ð¸ %1" + +#: html/Admin/Global/Scrip.html:48 +msgid "Modify a scrip which applies to all queues" +msgstr "Изменение Ñкрипта, который дейÑтвует Ð´Ð»Ñ Ð²Ñех очередей" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "" + +#: html/Ticket/ModifyDates.html:25 html/Ticket/ModifyDates.html:29 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "Изменение дат в тикете #%1" + +#: html/Ticket/ModifyDates.html:35 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "Изменение дат в тикете #%1" + +#: html/Admin/Global/GroupRights.html:25 html/Admin/Global/GroupRights.html:28 html/Admin/Global/index.html:56 +msgid "Modify global group rights" +msgstr "Изменение глобальных прав группы" + +#: html/Admin/Global/GroupRights.html:33 +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:25 html/Admin/Global/UserRights.html:28 html/Admin/Global/index.html:60 +msgid "Modify global user rights" +msgstr "" + +#: html/Admin/Global/UserRights.html:33 +msgid "Modify global user rights." +msgstr "Изменение глобальных прав пользователÑ" + +#: lib/RT/Group_Overlay.pm:146 +msgid "Modify group metadata or delete group" +msgstr "" + +#: html/Admin/Groups/GroupRights.html:25 html/Admin/Groups/GroupRights.html:29 html/Admin/Groups/GroupRights.html:35 +#. ($GroupObj->Name) +msgid "Modify group rights for group %1" +msgstr "Изменение прав групп Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ðµ %1" + +#: html/Admin/Queues/GroupRights.html:25 html/Admin/Queues/GroupRights.html:29 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "Изменение прав групп Ð´Ð»Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´Ð¸ %1" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Modify membership roster for this group" +msgstr "" + +#: lib/RT/System.pm:61 +msgid "Modify one's own RT account" +msgstr "" + +#: html/Admin/Queues/People.html:25 html/Admin/Queues/People.html:29 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "Изменение пользователей отноÑÑщихÑÑ Ðº очереди %1" + +#: html/Ticket/ModifyPeople.html:25 html/Ticket/ModifyPeople.html:29 html/Ticket/ModifyPeople.html:35 +#. ($Ticket->id) +#. ($Ticket->Id) +msgid "Modify people related to ticket #%1" +msgstr "Изменение пользователей отноÑÑщихÑÑ Ðº тикету #%1" + +#: html/Admin/Queues/Scrips.html:44 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "Изменить Ñкрипты Ð´Ð»Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´Ð¸ %1" + +#: html/Admin/Global/Scrips.html:44 html/Admin/Global/index.html:42 +msgid "Modify scrips which apply to all queues" +msgstr "Изменение Ñкриптов, которые дейÑтвуют на вÑе очереди" + +#: html/Admin/Global/Template.html:25 html/Admin/Global/Template.html:30 html/Admin/Global/Template.html:81 html/Admin/Queues/Template.html:78 +#. (loc($TemplateObj->Name())) +#. ($TemplateObj->id) +msgid "Modify template %1" +msgstr "Изменение шаблона %1" + +#: html/Admin/Global/Templates.html:44 +msgid "Modify templates which apply to all queues" +msgstr "" + +#: html/Admin/Groups/Modify.html:87 html/User/Groups/Modify.html:86 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "ÐаÑтройки Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ %1" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Modify the queue watchers" +msgstr "" + +#: html/Admin/Users/Modify.html:236 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "ÐаÑтройки Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1" + +#: html/Ticket/ModifyAll.html:37 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "Изменение тикета # %1" + +#: html/Ticket/Modify.html:25 html/Ticket/Modify.html:28 html/Ticket/Modify.html:34 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "Изменение тикета # %1" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Modify tickets" +msgstr "" + +#: html/Admin/Groups/UserRights.html:25 html/Admin/Groups/UserRights.html:29 html/Admin/Groups/UserRights.html:35 +#. ($GroupObj->Name) +msgid "Modify user rights for group %1" +msgstr "Изменение прав Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ %1" + +#: html/Admin/Queues/UserRights.html:25 html/Admin/Queues/UserRights.html:29 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "Изменение прав Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´Ð¸ %1" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "Изменение наблюдателей Ð´Ð»Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´Ð¸ '%1'" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyACL" +msgstr "" + +#: lib/RT/Group_Overlay.pm:149 +msgid "ModifyOwnMembership" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "ModifyQueueWatchers" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:76 +msgid "ModifyScrips" +msgstr "" + +#: lib/RT/System.pm:61 +msgid "ModifySelf" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:73 +msgid "ModifyTemplate" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "ModifyTicket" +msgstr "" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "Пнд." + +#: html/Ticket/Elements/ShowRequestor:42 +#. ($name) +msgid "More about %1" +msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ %1" + +#: html/Admin/Elements/EditCustomFields:61 +msgid "Move down" +msgstr "" + +#: html/Admin/Elements/EditCustomFields:53 +msgid "Move up" +msgstr "" + +#: html/Admin/Elements/SelectSingleOrMultiple:27 +msgid "Multiple" +msgstr "ÐеÑколько значений" + +#: lib/RT/User_Overlay.pm:179 +msgid "Must specify 'Name' attribute" +msgstr "Ð’Ñ‹ должны указать ИмÑ" + +#: NOT FOUND IN SOURCE +msgid "My Approvals" +msgstr "Мои визы" + +#: html/Approvals/index.html:25 html/Approvals/index.html:26 +msgid "My approvals" +msgstr "" + +#: html/Admin/Elements/AddCustomFieldValue:26 html/Admin/Elements/EditCustomField:32 html/Admin/Elements/ModifyTemplate:28 html/Admin/Elements/ModifyUser:30 html/Admin/Groups/Modify.html:44 html/Elements/SelectGroups:26 html/Elements/SelectUsers:28 html/User/Groups/Modify.html:44 +msgid "Name" +msgstr "ИмÑ" + +#: lib/RT/User_Overlay.pm:186 +msgid "Name in use" +msgstr "Ð˜Ð¼Ñ ÑƒÐ¶Ðµ иÑпользуетÑÑ" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "" + +#: html/Ticket/Elements/ShowDates:52 +msgid "Never" +msgstr "" + +#: html/Elements/Quicksearch:30 +msgid "New" +msgstr "Ðовых" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:93 html/User/Prefs.html:65 +msgid "New Password" +msgstr "Ðовый пароль" + +#: etc/initialdata:311 etc/upgrade/2.1.71:16 +msgid "New Pending Approval" +msgstr "" + +#: html/Ticket/Elements/EditLinks:111 +msgid "New Relationships" +msgstr "Ðовые ÑвÑзи" + +#: html/Ticket/Elements/Tabs:36 +msgid "New Search" +msgstr "" + +#: html/Admin/Global/CustomField.html:41 html/Admin/Global/CustomFields.html:39 html/Admin/Queues/CustomField.html:52 html/Admin/Queues/CustomFields.html:40 +msgid "New custom field" +msgstr "" + +#: html/Admin/Elements/GroupTabs:54 html/User/Elements/GroupTabs:52 +msgid "New group" +msgstr "" + +#: html/SelfService/Prefs.html:32 +msgid "New password" +msgstr "Ðовый пароль" + +#: lib/RT/User_Overlay.pm:639 +msgid "New password notification sent" +msgstr "Отправлено Ñообщение Ñ Ð½Ð¾Ð²Ñ‹Ð¼ паролем" + +#: html/Admin/Elements/QueueTabs:70 +msgid "New queue" +msgstr "" + +#: html/SelfService/Elements/Tabs:63 +msgid "New request" +msgstr "Ðовый запроÑ" + +#: html/Admin/Elements/SelectRights:42 +msgid "New rights" +msgstr "Ðовые права" + +#: html/Admin/Global/Scrip.html:40 html/Admin/Global/Scrips.html:39 html/Admin/Queues/Scrip.html:43 html/Admin/Queues/Scrips.html:53 +msgid "New scrip" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "New search" +msgstr "Ðовый поиÑк" + +#: html/Admin/Global/Template.html:60 html/Admin/Global/Templates.html:39 html/Admin/Queues/Template.html:58 html/Admin/Queues/Templates.html:46 +msgid "New template" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2771 +msgid "New ticket doesn't exist" +msgstr "Ðовый тикет не ÑущеÑтвует" + +#: html/Admin/Elements/UserTabs:52 +msgid "New user" +msgstr "" + +#: html/Admin/Elements/CreateUserCalled:26 +msgid "New user called" +msgstr "Добавить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼" + +#: html/Admin/Queues/People.html:55 html/Ticket/Elements/EditPeople:29 +msgid "New watchers" +msgstr "Ðовые наблюдатели" + +#: html/Admin/Users/Prefs.html:42 +msgid "New window setting" +msgstr "Ðовые наÑтройки окна" + +#: html/Ticket/Elements/Tabs:69 +msgid "Next" +msgstr "Вперед" + +#: html/Search/Listing.html:48 +msgid "Next page" +msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтраница" + +#: html/Admin/Elements/ModifyUser:50 +msgid "NickName" +msgstr "ПÑевдоним" + +#: html/Admin/Users/Modify.html:63 html/User/Prefs.html:46 +msgid "Nickname" +msgstr "ПÑевдоним" + +#: html/Admin/Elements/EditCustomField:73 html/Admin/Elements/EditCustomFields:105 +msgid "No CustomField" +msgstr "Ðет такого полÑ" + +#: html/Admin/Groups/GroupRights.html:84 html/Admin/Groups/UserRights.html:71 +msgid "No Group defined" +msgstr "Ðет такой группы" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:68 +msgid "No Queue defined" +msgstr "Ðет такой очереди" + +#: bin/rt-crontool:56 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "Пользователь RT не найден. ПожалуйÑта, обратитеÑÑŒ к вашему админиÑтратору RT.\\n" + +#: html/Admin/Global/Template.html:79 html/Admin/Queues/Template.html:76 +msgid "No Template" +msgstr "Шаблон не определен" + +#: bin/rt-commit-handler:764 +msgid "No Ticket specified. Aborting ticket " +msgstr "Тикет не задан. Ðичего не делаем." + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "Тикет не задан. ОтменÑем Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚Ð¸ÐºÐµÑ‚Ð°\\n\\n" + +#: html/Approvals/Elements/Approve:47 +msgid "No action" +msgstr "Ðет дейÑтвиÑ" + +#: lib/RT/Interface/Web.pm:862 +msgid "No column specified" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "Команда не найдена\\n" + +#: html/Elements/ViewUser:36 html/Ticket/Elements/ShowRequestor:45 +msgid "No comment entered about this user" +msgstr "Без комментариев" + +#: lib/RT/Ticket_Overlay.pm:2189 lib/RT/Ticket_Overlay.pm:2257 +msgid "No correspondence attached" +msgstr "ПуÑтое Ñообщение" + +#: lib/RT/Action/Generic.pm:150 lib/RT/Condition/Generic.pm:176 lib/RT/Search/ActiveTicketsInQueue.pm:56 lib/RT/Search/Generic.pm:113 +#. (ref $self) +msgid "No description for %1" +msgstr "Ðет опиÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ %1" + +#: lib/RT/Users_Overlay.pm:151 +msgid "No group specified" +msgstr "Ðе указана группа" + +#: lib/RT/User_Overlay.pm:857 +msgid "No password set" +msgstr "ОтÑутÑтвует пароль" + +#: lib/RT/Queue_Overlay.pm:259 +msgid "No permission to create queues" +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ права на Ñоздание очереди" + +#: lib/RT/Ticket_Overlay.pm:341 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "" + +#: lib/RT/User_Overlay.pm:151 +msgid "No permission to create users" +msgstr "Ð’Ñ‹ не имеете права Ñоздавать пользователей" + +#: html/SelfService/Display.html:174 +msgid "No permission to display that ticket" +msgstr "Показ Ñтого тикета запрещен" + +#: html/SelfService/Update.html:55 +msgid "No permission to view update ticket" +msgstr "Запрещен показ изменений Ñтого тикета" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1488 +msgid "No principal specified" +msgstr "Пользователь не указан" + +#: html/Admin/Queues/People.html:154 html/Admin/Queues/People.html:164 +msgid "No principals selected." +msgstr "Пользователи не выбраны." + +#: html/Admin/Queues/index.html:35 +msgid "No queues matching search criteria found." +msgstr "Ðичего подходÑщего не найдено." + +#: html/Admin/Elements/SelectRights:81 +msgid "No rights found" +msgstr "" + +#: html/Admin/Elements/SelectRights:33 +msgid "No rights granted." +msgstr "Ðет прав." + +#: html/Search/Bulk.html:149 +msgid "No search to operate on." +msgstr "Ðечего делать." + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "Ðе указан номер тикета" + +#: lib/RT/Transaction_Overlay.pm:480 lib/RT/Transaction_Overlay.pm:518 +msgid "No transaction type specified" +msgstr "Ðе указан тип транзакции" + +#: NOT FOUND IN SOURCE +msgid "No user or email address specified" +msgstr "" + +#: html/Admin/Users/index.html:36 +msgid "No users matching search criteria found." +msgstr "Ðи одного подходÑщего Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ найдено." + +#: bin/rt-commit-handler:644 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "Ðе найден пользователь RT. Обработчик CVS отключен. ОбратитеÑÑŒ к админиÑтратору RT.\\n" + +#: lib/RT/Interface/Web.pm:859 +msgid "No value sent to _Set!\\n" +msgstr "" + +#: html/Search/Elements/TicketRow:37 +msgid "Nobody" +msgstr "" + +#: lib/RT/Interface/Web.pm:864 +msgid "Nonexistant field?" +msgstr "" + +#: html/Elements/Login:99 +msgid "Not logged in" +msgstr "" + +#: html/Elements/Header:59 html/SelfService/Elements/Header:58 +msgid "Not logged in." +msgstr "Ðе зарегиÑтрирован." + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "Ðе уÑтановлено" + +#: html/NoAuth/Reminder.html:27 +msgid "Not yet implemented." +msgstr "Еще не реализовано." + +#: html/Admin/Groups/Rights.html:25 +msgid "Not yet implemented...." +msgstr "Еще не реализовано..." + +#: html/Approvals/Elements/Approve:50 +msgid "Notes" +msgstr "Примечание" + +#: lib/RT/User_Overlay.pm:642 +msgid "Notification could not be sent" +msgstr "Ðе могу отоÑлать уведомление" + +#: etc/initialdata:94 +msgid "Notify AdminCcs" +msgstr "" + +#: etc/initialdata:90 +msgid "Notify AdminCcs as Comment" +msgstr "" + +#: etc/initialdata:121 +msgid "Notify Other Recipients" +msgstr "" + +#: etc/initialdata:117 +msgid "Notify Other Recipients as Comment" +msgstr "" + +#: etc/initialdata:86 +msgid "Notify Owner" +msgstr "" + +#: etc/initialdata:82 +msgid "Notify Owner as Comment" +msgstr "" + +#: etc/initialdata:313 etc/upgrade/2.1.71:17 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "" + +#: etc/initialdata:78 +msgid "Notify Requestors" +msgstr "" + +#: etc/initialdata:104 +msgid "Notify Requestors and Ccs" +msgstr "" + +#: etc/initialdata:99 +msgid "Notify Requestors and Ccs as Comment" +msgstr "" + +#: etc/initialdata:113 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "" + +#: etc/initialdata:109 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "ÐоÑ." + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "" + +#: lib/RT/Record.pm:157 +msgid "Object could not be created" +msgstr "Ðе могу Ñоздать объект" + +#: lib/RT/Record.pm:176 +msgid "Object created" +msgstr "Создан объект" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "Окт." + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "" + +#: html/Elements/SelectDateRelation:35 +msgid "On" +msgstr "Ðа" + +#: etc/initialdata:155 +msgid "On Comment" +msgstr "" + +#: etc/initialdata:148 +msgid "On Correspond" +msgstr "" + +#: etc/initialdata:137 +msgid "On Create" +msgstr "" + +#: etc/initialdata:169 +msgid "On Owner Change" +msgstr "" + +#: etc/initialdata:177 +msgid "On Queue Change" +msgstr "" + +#: etc/initialdata:183 +msgid "On Resolve" +msgstr "" + +#: etc/initialdata:161 +msgid "On Status Change" +msgstr "" + +#: etc/initialdata:142 +msgid "On Transaction" +msgstr "" + +#: html/Approvals/Elements/PendingMyApproval:50 +#. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>") +msgid "Only show approvals for requests created after %1" +msgstr "Показывать визы только Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов Ñозданных поÑле %1" + +#: html/Approvals/Elements/PendingMyApproval:48 +#. ("<input size='15' value='".($created_before->Unix > 0 &&$created_before->ISO)."' name='CreatedBefore'>") +msgid "Only show approvals for requests created before %1" +msgstr "Показывать визы только Ð´Ð»Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов Ñозданных до %1" + +#: html/Elements/Quicksearch:31 +msgid "Open" +msgstr "Открытых" + +#: html/Ticket/Elements/Tabs:136 +msgid "Open it" +msgstr "Открыть" + +#: html/SelfService/Elements/Tabs:57 +msgid "Open requests" +msgstr "Открыть запроÑÑ‹" + +#: html/Admin/Users/Prefs.html:41 +msgid "Open tickets (from listing) in a new window" +msgstr "Открыть тикеты (из ÑпиÑка) в новом окне" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in another window" +msgstr "Открыть тикеты (из ÑпиÑка) в другом окне" + +#: etc/initialdata:133 +msgid "Open tickets on correspondence" +msgstr "" + +#: html/Search/Elements/PickRestriction:101 +msgid "Ordering and sorting" +msgstr "ПорÑдок и Ñортировка" + +#: html/Admin/Elements/ModifyUser:46 html/Admin/Users/Modify.html:117 html/Elements/SelectUsers:29 html/User/Prefs.html:86 +msgid "Organization" +msgstr "ОрганизациÑ" + +#: html/Approvals/Elements/Approve:34 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "" + +#: html/Admin/Elements/ModifyQueue:55 html/Admin/Queues/Modify.html:69 +msgid "Over time, priority moves toward" +msgstr "Со временем поднÑть приоритет до" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Own tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "OwnTicket" +msgstr "" + +#: etc/initialdata:38 html/Elements/MyRequests:32 html/SelfService/Elements/MyRequests:30 html/Ticket/Create.html:48 html/Ticket/Elements/EditPeople:43 html/Ticket/Elements/EditPeople:44 html/Ticket/Elements/ShowPeople:27 html/Ticket/Update.html:63 lib/RT/ACE_Overlay.pm:86 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "Владелец" + +#: lib/RT/Ticket_Overlay.pm:3004 +#. ($OldOwnerObj->Name, $NewOwnerObj->Name) +msgid "Owner changed from %1 to %2" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:584 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "Владелец Ñилой изменен Ñ %1 на %2" + +#: html/Search/Elements/PickRestriction:31 +msgid "Owner is" +msgstr "Владелец" + +#: html/Admin/Users/Modify.html:174 html/User/Prefs.html:56 +msgid "Pager" +msgstr "Пейджер" + +#: html/Admin/Elements/ModifyUser:74 +msgid "PagerPhone" +msgstr "Телефон пейджера" + +#: NOT FOUND IN SOURCE +msgid "Parent" +msgstr "" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/EditLinks:127 html/Ticket/Elements/EditLinks:58 html/Ticket/Elements/ShowLinks:43 +msgid "Parents" +msgstr "Предки" + +#: html/Elements/Login:43 html/User/Prefs.html:61 +msgid "Password" +msgstr "Пароль" + +#: html/NoAuth/Reminder.html:25 +msgid "Password Reminder" +msgstr "ПодÑказка к паролю" + +#: lib/RT/User_Overlay.pm:168 lib/RT/User_Overlay.pm:860 +msgid "Password too short" +msgstr "Пароль Ñлишком короткий" + +#: html/Admin/Users/Modify.html:291 html/User/Prefs.html:172 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "Пароль: %1" + +#: html/Ticket/Elements/ShowSummary:43 html/Ticket/Elements/Tabs:96 html/Ticket/ModifyAll.html:51 +msgid "People" +msgstr "Люди" + +#: etc/initialdata:126 +msgid "Perform a user-defined action" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:231 lib/RT/ACE_Overlay.pm:237 lib/RT/ACE_Overlay.pm:563 lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:583 lib/RT/ACE_Overlay.pm:648 lib/RT/CurrentUser.pm:83 lib/RT/CurrentUser.pm:92 lib/RT/CustomField_Overlay.pm:445 lib/RT/CustomField_Overlay.pm:451 lib/RT/Group_Overlay.pm:1095 lib/RT/Group_Overlay.pm:1099 lib/RT/Group_Overlay.pm:1108 lib/RT/Group_Overlay.pm:1159 lib/RT/Group_Overlay.pm:1163 lib/RT/Group_Overlay.pm:1169 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:904 lib/RT/Group_Overlay.pm:908 lib/RT/Group_Overlay.pm:921 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:126 lib/RT/Scrip_Overlay.pm:137 lib/RT/Scrip_Overlay.pm:197 lib/RT/Scrip_Overlay.pm:430 lib/RT/Template_Overlay.pm:284 lib/RT/Template_Overlay.pm:88 lib/RT/Template_Overlay.pm:94 lib/RT/Ticket_Overlay.pm:1341 lib/RT/Ticket_Overlay.pm:1351 lib/RT/Ticket_Overlay.pm:1365 lib/RT/Ticket_Overlay.pm:1518 lib/RT/Ticket_Overlay.pm:1527 lib/RT/Ticket_Overlay.pm:1540 lib/RT/Ticket_Overlay.pm:1875 lib/RT/Ticket_Overlay.pm:2013 lib/RT/Ticket_Overlay.pm:2177 lib/RT/Ticket_Overlay.pm:2244 lib/RT/Ticket_Overlay.pm:2596 lib/RT/Ticket_Overlay.pm:2668 lib/RT/Ticket_Overlay.pm:2762 lib/RT/Ticket_Overlay.pm:2777 lib/RT/Ticket_Overlay.pm:2910 lib/RT/Ticket_Overlay.pm:3139 lib/RT/Ticket_Overlay.pm:3337 lib/RT/Ticket_Overlay.pm:3499 lib/RT/Ticket_Overlay.pm:3551 lib/RT/Ticket_Overlay.pm:3716 lib/RT/Transaction_Overlay.pm:468 lib/RT/Transaction_Overlay.pm:475 lib/RT/Transaction_Overlay.pm:504 lib/RT/Transaction_Overlay.pm:511 lib/RT/User_Overlay.pm:1334 lib/RT/User_Overlay.pm:562 lib/RT/User_Overlay.pm:597 lib/RT/User_Overlay.pm:853 lib/RT/User_Overlay.pm:941 +msgid "Permission Denied" +msgstr "Ð’ доÑтупе отказано" + +#: html/User/Elements/Tabs:35 +msgid "Personal Groups" +msgstr "" + +#: html/User/Groups/index.html:30 html/User/Groups/index.html:40 +msgid "Personal groups" +msgstr "Личные группы" + +#: html/User/Elements/DelegateRights:37 +msgid "Personal groups:" +msgstr "Личные группы:" + +#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:49 +msgid "Phone numbers" +msgstr "Ðомера телефонов" + +#: html/Admin/Users/Rights.html:25 +msgid "Placeholder" +msgstr "Заполнитель" + +#: NOT FOUND IN SOURCE +msgid "Pref" +msgstr "" + +#: html/Elements/Header:52 html/Elements/Tabs:55 html/SelfService/Prefs.html:25 html/User/Prefs.html:25 html/User/Prefs.html:28 +msgid "Preferences" +msgstr "ПредпочтениÑ" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "ПредпочтениÑ" + +#: lib/RT/Action/Generic.pm:160 +msgid "Prepare Stubbed" +msgstr "Подготовка не реализована" + +#: html/Ticket/Elements/Tabs:61 +msgid "Prev" +msgstr "Ðазад" + +#: html/Search/Listing.html:44 +msgid "Previous page" +msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñтраница" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "Приоритет" + +#: lib/RT/ACE_Overlay.pm:133 lib/RT/ACE_Overlay.pm:208 lib/RT/ACE_Overlay.pm:552 +#. ($args{'PrincipalId'}) +msgid "Principal %1 not found." +msgstr "" + +#: html/Search/Elements/PickRestriction:54 html/SelfService/Display.html:76 html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:54 html/Ticket/Elements/ShowBasics:39 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "Приоритет" + +#: html/Admin/Elements/ModifyQueue:51 html/Admin/Queues/Modify.html:65 +msgid "Priority starts at" +msgstr "Приоритет начинаетÑÑ Ñ" + +#: etc/initialdata:25 +msgid "Privileged" +msgstr "" + +#: html/Admin/Users/Modify.html:271 html/User/Prefs.html:163 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "СоÑтоÑние полномочий: %1" + +#: html/Admin/Users/index.html:62 +msgid "Privileged users" +msgstr "Полномочные пользователи" + +#: etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 +msgid "Pseudogroup for internal use" +msgstr "" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Elements/Quicksearch:29 html/Search/Elements/PickRestriction:46 html/SelfService/Create.html:35 html/SelfService/Display.html:68 html/Ticket/Create.html:38 html/Ticket/Elements/EditBasics:64 html/Ticket/Elements/ShowBasics:43 html/User/Elements/DelegateRights:80 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "Очередь" + +#: html/Admin/Queues/CustomField.html:42 html/Admin/Queues/Scrip.html:50 html/Admin/Queues/Scrips.html:46 html/Admin/Queues/Templates.html:43 +#. ($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/Elements/ModifyQueue:31 html/Admin/Queues/Modify.html:43 +msgid "Queue Name" +msgstr "Ð˜Ð¼Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´Ð¸" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:263 +msgid "Queue already exists" +msgstr "Очередь уже ÑущеÑтвует" + +#: lib/RT/Queue_Overlay.pm:272 lib/RT/Queue_Overlay.pm:278 +msgid "Queue could not be created" +msgstr "Ðе могу Ñоздать очередь" + +#: html/Ticket/Create.html:209 +msgid "Queue could not be loaded." +msgstr "Ðе могу загрузить очередь" + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:282 +msgid "Queue created" +msgstr "Создана очередь" + +#: NOT FOUND IN SOURCE +msgid "Queue is not specified." +msgstr "" + +#: html/SelfService/Display.html:129 +msgid "Queue not found" +msgstr "Ðет такой очереди" + +#: html/Admin/Elements/Tabs:38 html/Admin/index.html:35 +msgid "Queues" +msgstr "Очереди" + +#: html/Elements/Login:34 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "RT %1" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "RT %1 Ð´Ð»Ñ %2" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +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, 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 "" + +#: html/Admin/index.html:25 html/Admin/index.html:26 +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:41 html/SelfService/Error.html:41 +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 "" + +#: html/SelfService/Closed.html:25 +msgid "RT Self Service / Closed Tickets" +msgstr "СамообÑлуживание RT / Закрытые тикеты" + +#: html/index.html:25 html/index.html:28 +msgid "RT at a glance" +msgstr "" + +#: 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" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "RT не Ñмог проверить Ñту подпиÑÑŒ PGP. \\n" + +#: html/Elements/PageLayout:26 +#. ($RT::rtname) +msgid "RT for %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT for %1: %2" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RT has proccessed your commands" +msgstr "RT выполнил ваши команды" + +#: html/Elements/Login:83 +#. ('2003') +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>. ПО раÑпроÑтранÑетÑÑ Ð¿Ð¾Ð´ <a href=\"http://www.gnu.org/copyleft/gpl.html\">Стандартной ОбщеÑтвенной Лицензией GNU ВерÑии 2.</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 "" + +#: NOT FOUND IN SOURCE +msgid "RT thinks this message may be a bounce" +msgstr "RT Ñчитает, что Ñто Ñообщение может быть возвратом" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +msgstr "RT будет обрабатывать Ñто Ñообщение как неподпиÑанное.\\n" + +#: 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. Ð’Ñ‹ либо не подпиÑали Ñообщение, либо ваша подпиÑÑŒ не может быть проверена." + +#: html/Admin/Users/Modify.html:58 html/Admin/Users/Prefs.html:52 html/User/Prefs.html:44 +msgid "Real Name" +msgstr "ИмÑ" + +#: html/Admin/Elements/ModifyUser:48 +msgid "RealName" +msgstr "ИмÑ" + +#: html/Ticket/Create.html:185 html/Ticket/Elements/EditLinks:139 html/Ticket/Elements/EditLinks:94 html/Ticket/Elements/ShowLinks:63 +msgid "Referred to by" +msgstr "Ðа него ÑÑылаютÑÑ" + +#: html/Elements/SelectLinkType:28 html/Ticket/Create.html:184 html/Ticket/Elements/EditLinks:135 html/Ticket/Elements/EditLinks:80 html/Ticket/Elements/ShowLinks:55 +msgid "Refers to" +msgstr "СÑылаетÑÑ Ð½Ð°" + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "Улучшить" + +#: html/Search/Elements/PickRestriction:27 +msgid "Refine search" +msgstr "Улучшить поиÑк" + +#: html/Elements/Refresh:36 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "ОбновлÑть Ñту Ñтраницу каждые %1 минут." + +#: html/Ticket/Create.html:174 html/Ticket/Elements/ShowSummary:60 html/Ticket/ModifyAll.html:57 +msgid "Relationships" +msgstr "СвÑзи" + +#: html/Search/Bulk.html:93 +msgid "Remove AdminCc" +msgstr "Удалить админиÑтративную копию" + +#: html/Search/Bulk.html:91 +msgid "Remove Cc" +msgstr "Удалить копию" + +#: html/Search/Bulk.html:89 +msgid "Remove Requestor" +msgstr "Удалить проÑителÑ" + +#: html/Ticket/Elements/ShowTransaction:173 html/Ticket/Elements/Tabs:122 +msgid "Reply" +msgstr "Ответить" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Reply to tickets" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "ReplyToTicket" +msgstr "" + +#: etc/initialdata:44 html/Ticket/Update.html:40 lib/RT/ACE_Overlay.pm:87 +msgid "Requestor" +msgstr "ПроÑитель" + +#: html/Search/Elements/PickRestriction:38 +msgid "Requestor email address" +msgstr "Email проÑителÑ" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "RequestorAddresses" +msgstr "" + +#: html/SelfService/Create.html:43 html/SelfService/Display.html:42 html/Ticket/Create.html:56 html/Ticket/Elements/EditPeople:48 html/Ticket/Elements/ShowPeople:31 +msgid "Requestors" +msgstr "ПроÑители" + +#: html/Admin/Elements/ModifyQueue:61 html/Admin/Queues/Modify.html:75 +msgid "Requests should be due in" +msgstr "ЗапроÑÑ‹ должны быть обработаны за" + +#: html/Elements/Submit:62 +msgid "Reset" +msgstr "ОчиÑтить" + +#: html/Admin/Users/Modify.html:159 html/User/Prefs.html:50 +msgid "Residence" +msgstr "Домашний" + +#: html/Ticket/Elements/Tabs:132 +msgid "Resolve" +msgstr "Закрыть" + +#: html/Ticket/Update.html:133 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "" + +#: etc/initialdata:302 html/Elements/SelectDateType:28 lib/RT/Ticket_Overlay.pm:1170 +msgid "Resolved" +msgstr "Закрыт" + +#: html/Search/Bulk.html:123 html/Ticket/ModifyAll.html:73 html/Ticket/Update.html:73 +msgid "Response to requestors" +msgstr "Ответ проÑителÑм" + +#: html/Elements/ListActions:26 +msgid "Results" +msgstr "Отчет" + +#: html/Search/Elements/PickRestriction:105 +msgid "Results per page" +msgstr "Тикетов на Ñтраницу" + +#: html/Admin/Elements/ModifyUser:33 html/Admin/Users/Modify.html:100 html/User/Prefs.html:72 +msgid "Retype Password" +msgstr "Повторите пароль" + +#: NOT FOUND IN SOURCE +msgid "Right %1 not found for %2 %3 in scope %4 (%5)\\n" +msgstr "Право %1 не найдено Ð´Ð»Ñ %2 %3 в рамках %4 (%5)\\n" + +#: lib/RT/ACE_Overlay.pm:613 +msgid "Right Delegated" +msgstr "Право делегировано" + +#: lib/RT/ACE_Overlay.pm:303 +msgid "Right Granted" +msgstr "Право выдано" + +#: lib/RT/ACE_Overlay.pm:161 +msgid "Right Loaded" +msgstr "Право загружено" + +#: lib/RT/ACE_Overlay.pm:678 lib/RT/ACE_Overlay.pm:693 +msgid "Right could not be revoked" +msgstr "Право не может быть отобрано" + +#: html/User/Delegation.html:64 +msgid "Right not found" +msgstr "Право не найдено" + +#: lib/RT/ACE_Overlay.pm:543 lib/RT/ACE_Overlay.pm:638 +msgid "Right not loaded." +msgstr "Право не загружено" + +#: lib/RT/ACE_Overlay.pm:689 +msgid "Right revoked" +msgstr "Право отобрано" + +#: html/Admin/Elements/UserTabs:41 +msgid "Rights" +msgstr "Права" + +#: lib/RT/Interface/Web.pm:758 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "" + +#: lib/RT/Interface/Web.pm:791 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "" + +#: html/Admin/Global/GroupRights.html:51 html/Admin/Queues/GroupRights.html:52 +msgid "Roles" +msgstr "ПÑевдо-группы" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "Суб." + +#: html/Admin/Queues/People.html:105 html/Ticket/Modify.html:39 html/Ticket/ModifyAll.html:94 html/Ticket/ModifyPeople.html:38 +msgid "Save Changes" +msgstr "Сохранить изменениÑ" + +#: html/Ticket/ModifyLinks.html:39 +msgid "Save changes" +msgstr "Сохранить изменениÑ" + +#: html/Admin/Global/Scrip.html:49 +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:176 +msgid "Scrip Created" +msgstr "Создан Ñкрипт" + +#: html/Admin/Elements/EditScrips:84 +msgid "Scrip deleted" +msgstr "Удален Ñкрипт" + +#: html/Admin/Elements/QueueTabs:46 html/Admin/Elements/SystemTabs:33 html/Admin/Global/index.html:41 +msgid "Scrips" +msgstr "Скрипты" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "Скрипты Ð´Ð»Ñ %1\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "Скрипты, которые дейÑтвуют Ð´Ð»Ñ Ð²Ñех очередей" + +#: html/Elements/SimpleSearch:27 html/Search/Elements/PickRestriction:126 html/Ticket/Elements/Tabs:159 +msgid "Search" +msgstr "ПоиÑк" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "Параметры поиÑка" + +#: html/Approvals/Elements/PendingMyApproval:39 +msgid "Search for approvals" +msgstr "ИÑкать визы" + +#: bin/rt-crontool:188 +msgid "Security:" +msgstr "БезопаÑноÑть:" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "SeeQueue" +msgstr "" + +#: html/Admin/Groups/index.html:40 +msgid "Select a group" +msgstr "Выбор группы" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "Выбор очереди" + +#: html/Admin/Users/index.html:25 html/Admin/Users/index.html:28 +msgid "Select a user" +msgstr "Выбор пользователÑ" + +#: html/Admin/Global/CustomField.html:38 html/Admin/Global/CustomFields.html:36 +msgid "Select custom field" +msgstr "" + +#: html/Admin/Elements/GroupTabs:52 html/User/Elements/GroupTabs:50 +msgid "Select group" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Select multiple values" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:352 +msgid "Select one value" +msgstr "" + +#: html/Admin/Elements/QueueTabs:67 +msgid "Select queue" +msgstr "" + +#: html/Admin/Global/Scrip.html:37 html/Admin/Global/Scrips.html:36 html/Admin/Queues/Scrip.html:40 html/Admin/Queues/Scrips.html:50 +msgid "Select scrip" +msgstr "" + +#: html/Admin/Global/Template.html:57 html/Admin/Global/Templates.html:36 html/Admin/Queues/Template.html:55 +msgid "Select template" +msgstr "" + +#: html/Admin/Elements/UserTabs:49 +msgid "Select user" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "SelectMultiple" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectSingle" +msgstr "" + +#: html/SelfService/index.html:25 +msgid "Self Service" +msgstr "СамообÑлуживание" + +#: etc/initialdata:114 +msgid "Send mail to all watchers" +msgstr "" + +#: etc/initialdata:110 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "" + +#: etc/initialdata:105 +msgid "Send mail to requestors and Ccs" +msgstr "" + +#: etc/initialdata:100 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "" + +#: etc/initialdata:79 +msgid "Sends a message to the requestors" +msgstr "" + +#: etc/initialdata:118 etc/initialdata:122 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "" + +#: etc/initialdata:95 +msgid "Sends mail to the administrative Ccs" +msgstr "" + +#: etc/initialdata:91 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "" + +#: etc/initialdata:83 etc/initialdata:87 +msgid "Sends mail to the owner" +msgstr "" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "Сен." + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "ИÑкать" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show approved requests" +msgstr "Показать завизированные запроÑÑ‹" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show basics" +msgstr "Показать главное" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show denied requests" +msgstr "Показать отвергнутые запроÑÑ‹" + +#: html/Ticket/Create.html:144 html/Ticket/Create.html:34 +msgid "Show details" +msgstr "Показать вÑе" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show pending requests" +msgstr "Показать ожидающие запроÑÑ‹" + +#: html/Approvals/Elements/PendingMyApproval:46 +msgid "Show requests awaiting other approvals" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Show ticket private commentary" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "Show ticket summaries" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ShowACL" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowScrips" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ShowTemplate" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:79 +msgid "ShowTicket" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "ShowTicketComments" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "" + +#: html/Admin/Elements/ModifyUser:39 html/Admin/Users/Modify.html:191 html/Admin/Users/Prefs.html:32 html/SelfService/Prefs.html:37 html/User/Prefs.html:112 +msgid "Signature" +msgstr "ПодпиÑÑŒ" + +#: html/SelfService/Elements/Header:52 +#. ($session{'CurrentUser'}->Name) +msgid "Signed in as %1" +msgstr "" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Single" +msgstr "Одно значение" + +#: html/Elements/Header:51 +msgid "Skip Menu" +msgstr "" + +#: html/Admin/Elements/EditCustomFieldValues:31 +msgid "Sort key" +msgstr "Ключ Ð´Ð»Ñ Ñортировки" + +#: html/Search/Elements/PickRestriction:109 +msgid "Sort results by" +msgstr "Сортировать по полю" + +#: html/Admin/Elements/AddCustomFieldValue:25 +msgid "SortOrder" +msgstr "ПорÑдок Ñортировки" + +#: NOT FOUND IN SOURCE +msgid "Stalled" +msgstr "Отложенных" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "ÐÐ°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ñтраница" + +#: html/Elements/SelectDateType:27 html/Ticket/Elements/EditDates:32 html/Ticket/Elements/ShowDates:35 +msgid "Started" +msgstr "ÐачалÑÑ" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "Ðе могу разобрать дату 'ÐачалÑÑ': '%1'" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:27 html/Ticket/Elements/ShowDates:31 +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/Elements/ModifyUser:82 html/Admin/Users/Modify.html:138 html/User/Prefs.html:94 +msgid "State" +msgstr "СоÑтоÑние" + +#: html/Elements/MyRequests:31 html/Elements/MyTickets:31 html/Search/Elements/PickRestriction:74 html/SelfService/Display.html:59 html/SelfService/Elements/MyRequests:29 html/SelfService/Update.html:31 html/Ticket/Create.html:42 html/Ticket/Elements/EditBasics:38 html/Ticket/Elements/ShowBasics:31 html/Ticket/Update.html:60 lib/RT/Ticket_Overlay.pm:1164 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "СтатуÑ" + +#: etc/initialdata:288 +msgid "Status Change" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:530 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½ Ñ %1 на %2" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "" + +#: html/Ticket/Elements/Tabs:147 +msgid "Steal" +msgstr "Отобрать" + +#: lib/RT/Transaction_Overlay.pm:589 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "Отобран у %1" + +#: html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Search/Bulk.html:126 html/Search/Elements/PickRestriction:43 html/SelfService/Create.html:59 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:35 html/Ticket/Create.html:84 html/Ticket/Elements/EditBasics:28 html/Ticket/ModifyAll.html:79 html/Ticket/Update.html:77 lib/RT/Ticket_Overlay.pm:1160 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "Тема" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:611 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "" + +#: html/Elements/Submit:59 +msgid "Submit" +msgstr "Готово" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "" + +#: lib/RT/Group_Overlay.pm:749 +msgid "Succeeded" +msgstr "" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "Ð’Ñк." + +#: lib/RT/System.pm:54 +msgid "SuperUser" +msgstr "" + +#: html/User/Elements/DelegateRights:77 +msgid "System" +msgstr "" + +#: html/Admin/Elements/SelectRights:81 lib/RT/ACE_Overlay.pm:567 lib/RT/Interface/Web.pm:757 lib/RT/Interface/Web.pm:790 +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/ACE_Overlay.pm:616 +msgid "System error. Right not delegated." +msgstr "Ошибка ÑиÑтемы. Право не было делегировано." + +#: lib/RT/ACE_Overlay.pm:146 lib/RT/ACE_Overlay.pm:223 lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:898 +msgid "System error. Right not granted." +msgstr "Ошибка ÑиÑтемы. Право не было выдано." + +#: NOT FOUND IN SOURCE +msgid "System error. Unable to grant rights." +msgstr "" + +#: html/Admin/Global/GroupRights.html:35 html/Admin/Groups/GroupRights.html:37 html/Admin/Queues/GroupRights.html:36 +msgid "System groups" +msgstr "СиÑтемные группы" + +#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 +msgid "SystemRolegroup for internal use" +msgstr "" + +#: lib/RT/CurrentUser.pm:320 +msgid "TEST_STRING" +msgstr "TEST_STRING" + +#: html/Ticket/Elements/Tabs:143 +msgid "Take" +msgstr "ВзÑть" + +#: lib/RT/Transaction_Overlay.pm:575 +msgid "Taken" +msgstr "ВзÑÑ‚" + +#: html/Admin/Elements/EditScrip:81 +msgid "Template" +msgstr "Шаблон" + +#: html/Admin/Global/Template.html:91 html/Admin/Queues/Template.html:90 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "" + +#: html/Admin/Elements/EditTemplates:89 +msgid "Template deleted" +msgstr "" + +#: lib/RT/Scrip_Overlay.pm:153 +msgid "Template not found" +msgstr "Шаблон не найден" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "Шаблон не найден\\n" + +#: lib/RT/Template_Overlay.pm:347 +msgid "Template parsed" +msgstr "Шаблон обработан" + +#: html/Admin/Elements/QueueTabs:49 html/Admin/Elements/SystemTabs:36 html/Admin/Global/index.html:45 +msgid "Templates" +msgstr "Шаблоны" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "Шаблоны Ð´Ð»Ñ %1\\n" + +#: lib/RT/Interface/Web.pm:858 +msgid "That is already the current value" +msgstr "" + +#: lib/RT/CustomField_Overlay.pm:178 +msgid "That is not a value for this custom field" +msgstr "Ðто поле не может иметь такого значениÑ" + +#: lib/RT/Ticket_Overlay.pm:1886 +msgid "That is the same value" +msgstr "Значение не изменилоÑÑŒ" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "Ðтот пользователь уже %1 Ð´Ð»Ñ Ñтой очереди" + +#: lib/RT/Ticket_Overlay.pm:1434 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "Ðтот пользователь уже %1 Ð´Ð»Ñ Ñтого тикета" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "Ðтот пользователь не %1 Ñтой очереди" + +#: lib/RT/Ticket_Overlay.pm:1551 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "Ðтот пользователь не %1 Ñтому тикету" + +#: lib/RT/Ticket_Overlay.pm:1882 +msgid "That queue does not exist" +msgstr "Ðтой очереди не ÑущеÑтвует" + +#: lib/RT/Ticket_Overlay.pm:3143 +msgid "That ticket has unresolved dependencies" +msgstr "Ðтот тикет имеет неразрешенные завиÑимоÑти" + +#: lib/RT/ACE_Overlay.pm:288 lib/RT/ACE_Overlay.pm:597 +msgid "That user already has that right" +msgstr "Пользователь уже имеет Ñто право" + +#: lib/RT/Ticket_Overlay.pm:2952 +msgid "That user already owns that ticket" +msgstr "Пользователь уже владеет Ñтим тикетом" + +#: lib/RT/Ticket_Overlay.pm:2918 +msgid "That user does not exist" +msgstr "Пользователь не ÑущеÑтвует" + +#: lib/RT/User_Overlay.pm:315 +msgid "That user is already privileged" +msgstr "Ðтот пользователь уже имеет вÑе полномочиÑ" + +#: lib/RT/User_Overlay.pm:332 +msgid "That user is already unprivileged" +msgstr "Ðтот пользователь уже не имеет полномочий" + +#: lib/RT/User_Overlay.pm:327 +msgid "That user is now privileged" +msgstr "Ðтот пользователь теперь имеет вÑе полномочиÑ" + +#: lib/RT/User_Overlay.pm:344 +msgid "That user is now unprivileged" +msgstr "Ðтот пользователь теперь не имеет полномочий" + +#: NOT FOUND IN SOURCE +msgid "That user is now unprivilegedileged" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2944 +msgid "That user may not own tickets in that queue" +msgstr "Ðтот пользователь не может владеть тикетами из Ñтой очереди" + +#: lib/RT/Link_Overlay.pm:206 +msgid "That's not a numerical id" +msgstr "Ðто не чиÑловой идентификатор" + +#: html/Ticket/Create.html:150 html/Ticket/Elements/ShowSummary:28 +msgid "The Basics" +msgstr "Главное" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The CC of a ticket" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:89 +msgid "The administrative CC of a ticket" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:2213 +msgid "The comment has been recorded" +msgstr "ЗапиÑан комментарий" + +#: bin/rt-crontool:198 +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 "" + +#: bin/rt-commit-handler:756 bin/rt-commit-handler:766 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "Ðти команды не были иÑполнены:\\n\\n" + +#: lib/RT/Interface/Web.pm:861 +msgid "The new value has been set." +msgstr "" + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The owner of a ticket" +msgstr "" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The requestor of a ticket" +msgstr "" + +#: html/Admin/Elements/EditUserComments:26 +msgid "These comments aren't generally visible to the user" +msgstr "Ðти комментарии не показываютÑÑ Ð¾Ð±Ñ‹ÐºÐ½Ð¾Ð²ÐµÐ½Ð½Ð¾Ð¼Ñƒ пользователю" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "Ðтот тикет %1 %2 (%3)\\n" + +#: bin/rt-crontool:189 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "Ðтот инÑтрумент позволÑет пользователю запуÑкать некоторые модули Perl из RT." + +#: lib/RT/Transaction_Overlay.pm:253 +msgid "This transaction appears to have no content" +msgstr "Похоже, что Ñта Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ Ð½Ðµ имеет информации" + +#: html/Ticket/Elements/ShowRequestor:47 +#. ($rows) +msgid "This user's %1 highest priority tickets" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "This user's 25 highest priority tickets" +msgstr "25 важнейших тикетов пользователÑ..." + +#: lib/RT/Date.pm:391 +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 "" + +#: html/Ticket/ModifyAll.html:25 html/Ticket/ModifyAll.html:29 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "Тикет #%1 Обновление вÑего: %2" + +#: html/Approvals/Elements/ShowDependency:46 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:608 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "Тикет %1 Ñоздан в очереди '%2'" + +#: bin/rt-commit-handler:760 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "Загружен тикет %1\\n" + +#: html/Search/Bulk.html:181 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "Тикет %1: %2" + +#: html/Ticket/History.html:25 html/Ticket/History.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñ‚Ð¸ÐºÐµÑ‚Ð° # %1 %2" + +#: html/SelfService/Display.html:34 +msgid "Ticket Id" +msgstr "Тикет #" + +#: etc/initialdata:303 +msgid "Ticket Resolved" +msgstr "" + +#: html/Search/Elements/PickRestriction:63 +msgid "Ticket attachment" +msgstr "Ð”Ð»Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "ТекÑÑ‚ тикета" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "Тип данных тикета" + +#: lib/RT/Ticket_Overlay.pm:495 lib/RT/Ticket_Overlay.pm:597 +msgid "Ticket could not be created due to an internal error" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:522 +msgid "Ticket created" +msgstr "Создан тикет" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "Ðе удалоÑÑŒ Ñоздать тикет" + +#: lib/RT/Transaction_Overlay.pm:527 +msgid "Ticket deleted" +msgstr "Тикет удален" + +#: html/REST/1.0/modify:29 html/REST/1.0/update:34 +msgid "Ticket id not found" +msgstr "Идентификатор тикета не найден" + +#: NOT FOUND IN SOURCE +msgid "Ticket killed" +msgstr "" + +#: html/REST/1.0/modify:36 html/REST/1.0/update:41 +msgid "Ticket not found" +msgstr "Тикет не найден" + +#: etc/initialdata:289 +msgid "Ticket status changed" +msgstr "" + +#: html/Ticket/Update.html:39 +msgid "Ticket watchers" +msgstr "Ðаблюдатели Ð´Ð»Ñ Ñ‚Ð¸ÐºÐµÑ‚Ð°" + +#: html/Elements/Tabs:49 +msgid "Tickets" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Tickets from %1" +msgstr "Тикеты от %1" + +#: html/Approvals/Elements/ShowDependency:27 +msgid "Tickets which depend on this approval:" +msgstr "От Ñтой визы завиÑÑÑ‚ Ñледующие тикеты:" + +#: html/Ticket/Create.html:157 html/Ticket/Elements/EditBasics:48 +msgid "Time Left" +msgstr "ОÑталоÑÑŒ" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:43 +msgid "Time Worked" +msgstr "Ð’ работе" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "ОÑталоÑÑŒ" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "Ð’ работе" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "" + +#: lib/RT/Ticket_Overlay.pm:1165 +msgid "TimeWorked" +msgstr "" + +#: bin/rt-commit-handler:402 +msgid "To generate a diff of this commit:" +msgstr "Ð”Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ дифа Ñтого коммита:" + +#: bin/rt-commit-handler:391 +msgid "To generate a diff of this commit:\\n" +msgstr "Ð”Ð»Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ дифа Ñтого коммита:\\n" + +#: lib/RT/Ticket_Overlay.pm:1168 +msgid "Told" +msgstr "Контакт" + +#: etc/initialdata:237 +msgid "Transaction" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:642 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "Ð¢Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ñ %1 удалена" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "Создана транзакциÑ" + +#: lib/RT/Transaction_Overlay.pm:89 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:701 +msgid "Transactions are immutable" +msgstr "Транзакции не изменены" + +#: NOT FOUND IN SOURCE +msgid "Trying to delete a right: %1" +msgstr "ПытаемÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ право: %1" + +#: lib/RT/Date.pm:389 +msgid "Tue." +msgstr "Втр." + +#: html/Admin/Elements/EditCustomField:34 html/Ticket/Elements/AddWatchers:33 html/Ticket/Elements/AddWatchers:44 html/Ticket/Elements/AddWatchers:54 lib/RT/Ticket_Overlay.pm:1166 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "Тип" + +#: lib/RT/ScripCondition_Overlay.pm:104 +msgid "Unimplemented" +msgstr "Ðе реализовано" + +#: html/Admin/Users/Modify.html:68 +msgid "Unix login" +msgstr "Логин UNIX" + +#: html/Admin/Elements/ModifyUser:62 +msgid "UnixUsername" +msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ UNIX" + +#: lib/RT/Attachment_Overlay.pm:265 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ° %1" + +#: html/Elements/SelectResultsPerPage:37 +msgid "Unlimited" +msgstr "Ðе ограничено" + +#: etc/initialdata:32 +msgid "Unprivileged" +msgstr "" + +#: lib/RT/Transaction_Overlay.pm:571 +msgid "Untaken" +msgstr "Ðичей" + +#: html/Elements/MyTickets:64 html/Search/Bulk.html:33 +msgid "Update" +msgstr "Обновить" + +#: html/Admin/Users/Prefs.html:62 +msgid "Update ID" +msgstr "Обновить идентификатор" + +#: html/Search/Bulk.html:120 html/Ticket/ModifyAll.html:66 html/Ticket/Update.html:67 +msgid "Update Type" +msgstr "Обновить тип" + +#: html/Search/Listing.html:61 +msgid "Update all these tickets at once" +msgstr "Изменить одним махом" + +#: html/Admin/Users/Prefs.html:49 +msgid "Update email" +msgstr "Обновить e-mail" + +#: html/Admin/Users/Prefs.html:55 +msgid "Update name" +msgstr "Обновить имÑ" + +#: lib/RT/Interface/Web.pm:375 +msgid "Update not recorded." +msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ Ñохранены." + +#: html/Search/Bulk.html:81 +msgid "Update selected tickets" +msgstr "Изменить выбранные тикеты" + +#: html/Admin/Users/Prefs.html:36 +msgid "Update signature" +msgstr "Обновить подпиÑÑŒ" + +#: html/Ticket/ModifyAll.html:63 +msgid "Update ticket" +msgstr "Обновить тикет" + +#: html/SelfService/Update.html:25 html/SelfService/Update.html:27 +#. ($Ticket->id) +msgid "Update ticket # %1" +msgstr "Обновить тикет # %1" + +#: html/SelfService/Update.html:50 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "Обновить тикет # %1" + +#: html/Ticket/Update.html:135 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "" + +#: lib/RT/Interface/Web.pm:373 +msgid "Update type was neither correspondence nor comment." +msgstr "Обновление не было ни Ñообщением, ни комментарием." + +#: html/Elements/SelectDateType:33 html/Ticket/Elements/ShowDates:51 lib/RT/Ticket_Overlay.pm:1169 +msgid "Updated" +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" + +#: 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:125 etc/initialdata:191 +msgid "User Defined" +msgstr "" + +#: html/Admin/Users/Prefs.html:59 +msgid "User ID" +msgstr "Логин" + +#: html/Elements/SelectUsers:26 +msgid "User Id" +msgstr "Логин" + +#: html/Admin/Elements/GroupTabs:47 html/Admin/Elements/QueueTabs:60 html/Admin/Elements/SystemTabs:47 html/Admin/Global/index.html:59 +msgid "User Rights" +msgstr "Права пользователÑ" + +#: html/Admin/Users/Modify.html:226 +#. ($msg) +msgid "User could not be created: %1" +msgstr "Ðе могу Ñоздать пользователÑ: %1" + +#: lib/RT/User_Overlay.pm:262 +msgid "User created" +msgstr "Создан пользователь" + +#: html/Admin/Global/GroupRights.html:67 html/Admin/Groups/GroupRights.html:54 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "Группы, определенные пользователем" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "Пользователю отоÑлано напоминание" + +#: html/Admin/Users/Prefs.html:25 html/Admin/Users/Prefs.html:29 +msgid "User view" +msgstr "ПользовательÑкие наÑтройки" + +#: html/Admin/Users/Modify.html:48 html/Elements/Login:42 html/Ticket/Elements/AddWatchers:35 +msgid "Username" +msgstr "Логин" + +#: html/Admin/Elements/SelectNewGroupMembers:26 html/Admin/Elements/Tabs:32 html/Admin/Groups/Members.html:55 html/Admin/Queues/People.html:68 html/Admin/index.html:29 html/User/Groups/Members.html:58 +msgid "Users" +msgstr "Пользователи" + +#: html/Admin/Users/index.html:65 +msgid "Users matching search criteria" +msgstr "Ðайдены пользователи" + +#: html/Search/Elements/PickRestriction:51 +msgid "ValueOfQueue" +msgstr "ValueOfQueue" + +#: html/Admin/Elements/EditCustomField:40 +msgid "Values" +msgstr "ЗначениÑ" + +#: NOT FOUND IN SOURCE +msgid "VrijevormEnkele" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Watch" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "WatchAsAdminCc" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "" + +#: html/Admin/Elements/QueueTabs:42 +msgid "Watchers" +msgstr "Ðаблюдатели" + +#: html/Admin/Elements/ModifyUser:56 +msgid "WebEncoding" +msgstr "WebEncoding" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "Срд." + +#: etc/upgrade/2.1.71:161 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "" + +#: etc/upgrade/2.1.71:135 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "" + +#: etc/initialdata:138 +msgid "When a ticket is created" +msgstr "" + +#: etc/upgrade/2.1.71:79 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "" + +#: etc/initialdata:143 +msgid "When anything happens" +msgstr "" + +#: etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "" + +#: etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "" + +#: etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "" + +#: etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "" + +#: etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "" + +#: etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "" + +#: etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "" + +#: html/Admin/Users/Modify.html:164 html/User/Prefs.html:52 +msgid "Work" +msgstr "Рабочий" + +#: html/Admin/Elements/ModifyUser:70 +msgid "WorkPhone" +msgstr "Рабочий" + +#: html/SelfService/Display.html:86 html/Ticket/Elements/ShowBasics:35 html/Ticket/Update.html:65 +msgid "Worked" +msgstr "Ð’ работе" + +#: lib/RT/Ticket_Overlay.pm:3056 +msgid "You already own this ticket" +msgstr "Ð’Ñ‹ уже владеете Ñтим тикетом" + +#: html/autohandler:121 +msgid "You are not an authorized user" +msgstr "Вам Ñюда запрещено" + +#: lib/RT/Ticket_Overlay.pm:2930 +msgid "You can only reassign tickets that you own or 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 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "You found %1 tickets in queue %2" + +#: html/NoAuth/Logout.html:31 html/REST/1.0/logout:25 +msgid "You have been logged out of RT." +msgstr "Ð’Ñ‹ вышли из RT." + +#: html/SelfService/Display.html:134 +msgid "You have no permission to create tickets in that queue." +msgstr "У Ð²Ð°Ñ Ð½ÐµÑ‚ права Ñоздавать тикеты в Ñтой очереди." + +#: lib/RT/Ticket_Overlay.pm:1895 +msgid "You may not create requests in that queue." +msgstr "Ð’Ñ‹ не можете Ñоздавать запроÑÑ‹ в Ñтой очереди." + +#: html/NoAuth/Logout.html:36 +msgid "You're welcome to login again" +msgstr "Заходите еще" + +#: html/SelfService/Elements/MyRequests:25 +#. ($friendly_status) +msgid "Your %1 requests" +msgstr "Ваши запроÑÑ‹: %1" + +#: NOT FOUND IN SOURCE +msgid "Your RT administrator has misconfigured the mail aliases which invoke RT" +msgstr "ÐдминиÑтратор RT неправильно наÑтроил почтовые алиаÑÑ‹" + +#: etc/initialdata:429 etc/upgrade/2.1.71:146 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "" + +#: etc/initialdata:463 etc/upgrade/2.1.71:180 +msgid "Your request has been approved." +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "" + +#: etc/initialdata:384 etc/upgrade/2.1.71:101 +msgid "Your request was rejected." +msgstr "" + +#: html/autohandler:136 html/autohandler:142 +msgid "Your username or password is incorrect" +msgstr "Ð’Ñ‹ ввели неверное Ð¸Ð¼Ñ Ð¸Ð»Ð¸ пароль" + +#: html/Admin/Elements/ModifyUser:84 html/Admin/Users/Modify.html:144 html/User/Prefs.html:96 +msgid "Zip" +msgstr "ИндекÑ" + +#: NOT FOUND IN SOURCE +msgid "[no subject]" +msgstr "" + +#: html/User/Elements/DelegateRights:59 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ %1" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:34 +msgid "contains" +msgstr "Ñодержит" + +#: html/Elements/SelectAttachmentField:26 +msgid "content" +msgstr "данные" + +#: html/Elements/SelectAttachmentField:27 +msgid "content-type" +msgstr "тип данных" + +#: lib/RT/Ticket_Overlay.pm:2282 +msgid "correspondence (probably) not sent" +msgstr "Ñообщение (возможно) не отправлено" + +#: lib/RT/Ticket_Overlay.pm:2292 +msgid "correspondence sent" +msgstr "отправлено Ñообщение" + +#: html/Admin/Elements/ModifyQueue:63 html/Admin/Queues/Modify.html:77 lib/RT/Date.pm:319 +msgid "days" +msgstr "дней" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "" + +#: html/Search/Listing.html:75 +msgid "delete" +msgstr "удалить" + +#: lib/RT/Queue_Overlay.pm:63 +msgid "deleted" +msgstr "удален" + +#: html/Search/Elements/PickRestriction:68 +msgid "does not match" +msgstr "не Ñовпадает" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:35 +msgid "doesn't contain" +msgstr "не Ñодержит" + +#: html/Elements/SelectEqualityOperator:38 +msgid "equal to" +msgstr "равнÑетÑÑ" + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "" + +#: html/Elements/SelectAttachmentField:28 +msgid "filename" +msgstr "Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "greater than" +msgstr "больше чем" + +#: lib/RT/Group_Overlay.pm:194 +#. ($self->Name) +msgid "group '%1'" +msgstr "группа '%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "чаÑов" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "идентификатор" + +#: html/Elements/SelectBoolean:32 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 +msgid "is" +msgstr "ÑвлÑетÑÑ" + +#: html/Elements/SelectBoolean:36 html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectMatch:37 html/Search/Elements/PickRestriction:48 html/Search/Elements/PickRestriction:77 html/Search/Elements/PickRestriction:89 +msgid "isn't" +msgstr "не ÑвлÑетÑÑ" + +#: html/Elements/SelectCustomFieldOperator:38 html/Elements/SelectEqualityOperator:38 +msgid "less than" +msgstr "меньше чем" + +#: html/Search/Elements/PickRestriction:67 +msgid "matches" +msgstr "Ñовпадает" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "мин" + +#: html/Ticket/Update.html:66 +msgid "minutes" +msgstr "минут" + +#: bin/rt-commit-handler:765 +msgid "modifications\\n\\n" +msgstr "изменениÑ\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "меÑÑцев" + +#: lib/RT/Queue_Overlay.pm:58 +msgid "new" +msgstr "новый" + +#: html/Admin/Elements/EditScrips:43 +msgid "no value" +msgstr "" + +#: html/Ticket/Elements/EditWatchers:28 +msgid "none" +msgstr "нет" + +#: html/Elements/SelectEqualityOperator:38 +msgid "not equal to" +msgstr "не равен" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "open" +msgstr "открыт" + +#: lib/RT/Group_Overlay.pm:199 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "Ð»Ð¸Ñ‡Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° '%1' Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ '%2'" + +#: lib/RT/Group_Overlay.pm:207 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "очередь %1 %2" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "rejected" +msgstr "отклонен" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "resolved" +msgstr "решен" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "Ñек" + +#: lib/RT/Queue_Overlay.pm:60 +msgid "stalled" +msgstr "отложен" + +#: lib/RT/Group_Overlay.pm:202 +#. ($self->Type) +msgid "system %1" +msgstr "ÑиÑтема %1" + +#: lib/RT/Group_Overlay.pm:213 +#. ($self->Type) +msgid "system group '%1'" +msgstr "ÑиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:42 +msgid "the calling component did not specify why" +msgstr "вызывающий компонент не указал причину" + +#: lib/RT/Group_Overlay.pm:210 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "тикет #%1 %2" + +#: NOT FOUND IN SOURCE +msgid "true" +msgstr "" + +#: lib/RT/Group_Overlay.pm:216 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "" + +#: NOT FOUND IN SOURCE +msgid "undescripbed group %1" +msgstr "неопиÑÐ°Ð½Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° %1" + +#: lib/RT/Group_Overlay.pm:191 +#. ($user->Object->Name) +msgid "user %1" +msgstr "пользователь %1" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "недель" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼ %1" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "лет" + +#: NOT FOUND IN SOURCE +msgid "ニックãƒãƒ¼ãƒ " +msgstr "" + diff --git a/rt/lib/RT/I18N/zh_cn.po b/rt/lib/RT/I18N/zh_cn.po new file mode 100644 index 000000000..ededc1ac3 --- /dev/null +++ b/rt/lib/RT/I18N/zh_cn.po @@ -0,0 +1,6384 @@ +# Traditional Chinese localization catalog for Request Tracker (RT) +msgid "" +msgstr "" +"Last-Translator: Autrijus Tang <autrijus@autrijus.org>\n" +"Language-Team: Chinese <members@ourinet.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:27 html/Elements/MyTickets:27 html/Work/Elements/MyApprovals:8 html/Work/Elements/MyRequests:9 html/Work/Elements/MyTickets:9 +msgid "#" +msgstr "#" + +#: NOT FOUND IN SOURCE +msgid "#%1" +msgstr "#%1" + +#: 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 +#. ($Ticket->Id, $Ticket->Subject) +#. ($Ticket->id, $Ticket->Subject) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "#%1: %2" + +#: 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/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "%1 %2" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($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 "%7-%2-%3 %4:%5:%6 %1" + +#: lib/RT/Ticket_Overlay.pm:3541 lib/RT/Transaction_Overlay.pm:557 lib/RT/Transaction_Overlay.pm:599 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 added" +msgstr "%2 已新增为 %1" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "%1 %2 之å‰" + +#: lib/RT/Ticket_Overlay.pm:3547 lib/RT/Transaction_Overlay.pm:564 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1 已从 %2 改为 %3" + +#: lib/RT/Ticket_Overlay.pm:3544 lib/RT/Transaction_Overlay.pm:560 lib/RT/Transaction_Overlay.pm:605 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 deleted" +msgstr "%2 已自 %1 åˆ é™¤" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:157 +#. ($depth_str, $role_str, $group_str) +msgid "%1 %2 of group %3" +msgstr "%3 群组的 %1 %2" + +#: html/Admin/Elements/EditScrips:43 html/Admin/Elements/ListGlobalScrips:27 +#. (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/Search/Listing.html:56 html/Work/Search/index.html:28 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "显示第 %1 - %2 笔" + +#: bin/rt-crontool:168 bin/rt-crontool:175 bin/rt-crontool:181 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - An argument to pass to %2" +msgstr "%1 - ä¼ é€’ç»™ %2 çš„ä¸€ä¸ªå‚æ•°" + +#: bin/rt-crontool:184 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "%1 - 将更新状æ€è¾“出到 STDOUT" + +#: bin/rt-crontool:178 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "%1 - 指定欲使用的动作模å—" + +#: bin/rt-crontool:172 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "%1 - 指定欲使用的æ¡ä»¶æ¨¡å—" + +#: bin/rt-crontool:165 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "%1 - 指定欲使用的查询模å—" + +#: lib/RT/ScripAction_Overlay.pm:121 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "åŠ è½½æ‰‹ç» %1" + +#: html/Edit/Elements/Page:48 +#. (scalar $count) +msgid "%1 Total" +msgstr "å…± %1 笔" + +#: lib/RT/Ticket_Overlay.pm:3574 +#. ($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:116 lib/RT/Link_Overlay.pm:123 +#. ($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:51 lib/RT/Transaction_Overlay.pm:481 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%1 (%2)" + +#: lib/RT/Transaction_Overlay.pm:535 lib/RT/Transaction_Overlay.pm:624 lib/RT/Transaction_Overlay.pm:633 lib/RT/Transaction_Overlay.pm:636 +#. ($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 的值从 %2 改为 %3" + +#: lib/RT/Interface/Web.pm:893 +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:2839 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1 æ— æ³•å°†çŽ°å†µè®¾æˆå·²è§£å†³ã€‚RT æ•°æ®åº“内容å¯èƒ½ä¸ä¸€è‡´ã€‚" + +#: html/Elements/MyTickets:24 html/Work/Elements/MyTickets:6 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "å‰ %1 份待处ç†ç”³è¯·å•..." + +#: html/Elements/MyRequests:24 html/Work/Elements/MyRequests:6 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "å‰ %1 份é€å‡ºçš„申请å•..." + +#: html/Work/Elements/MyApprovals:5 +#. ($rows) +msgid "%1 highest priority tickets pending my approval..." +msgstr "å‰ %1 ä»½å¾…ç¾æ ¸ç”³è¯·å•..." + +#: bin/rt-crontool:160 +#. ($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:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1 å·²ä¸å†æ˜¯æ¤è¡¨å•çš„ %2。" + +#: lib/RT/Ticket_Overlay.pm:1578 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 å·²ä¸å†æ˜¯æ¤ç”³è¯·å•çš„ %2。" + +#: lib/RT/Ticket_Overlay.pm:3630 +#. ($args{'Value'}, $cf->Name) +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/ShowBasics:35 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 分钟" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "没有显示 %1" + +#: NOT FOUND IN SOURCE +msgid "%1 result(s) found" +msgstr "找到 %1 项结果" + +#: html/User/Elements/DelegateRights:75 +#. (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:41 +#. (ref $self) +msgid "%1 will resolve all members of a resolved group ticket." +msgstr "%1 会解决在已解决群组里æˆå‘˜çš„申请å•。" + +#: lib/RT/Action/StallDependent.pm:40 +#. (ref $self) +msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." +msgstr "如果 %1 起始申请å•ä¾èµ–于æŸä¸ªé“¾æŽ¥ï¼Œæˆ–是æŸä¸ªé“¾æŽ¥çš„æˆå‘˜ï¼Œå®ƒå°†ä¼šè¢«å»¶å®•ã€‚" + +#: lib/RT/Transaction_Overlay.pm:433 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1:未指定附件" + +#: html/Ticket/Elements/ShowTransaction:89 html/Work/Tickets/Elements/ShowTransaction:152 +#. ($size) +msgid "%1b" +msgstr "%1 å—节" + +#: html/Ticket/Elements/ShowTransaction:86 html/Work/Tickets/Elements/ShowTransaction:149 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "%1k å—节" + +#: NOT FOUND IN SOURCE +msgid "%quant(%1,result) found" +msgstr "找到 %1 项结果" + +#: lib/RT/Ticket_Overlay.pm:1148 +#. ($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:24 html/Admin/Elements/EditQueueWatchers:28 html/Admin/Elements/EditScrips:34 html/Admin/Elements/EditTemplates:35 html/Admin/Elements/EditWorkflows:36 html/Admin/Groups/Members.html:51 html/Ticket/Elements/EditLinks:32 html/Ticket/Elements/EditPeople:45 html/User/Groups/Members.html:54 +msgid "(Check box to delete)" +msgstr "(ç‚¹é€‰æ¬²åˆ é™¤çš„é¡¹ç›®)" + +#: NOT FOUND IN SOURCE +msgid "(Check boxes to delete)" +msgstr "(ç‚¹é€‰æ¬²åˆ é™¤çš„é¡¹ç›®)" + +#: html/Ticket/Create.html:177 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(键入申请å•ç¼–å·æˆ–网å€ï¼Œä»¥ç©ºç™½åˆ†éš”)" + +#: 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 "(如果留白, 则预设为 %1)" + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "(没有值)" + +#: html/Admin/Elements/EditCustomFields:32 html/Admin/Elements/ListGlobalCustomFields:31 +msgid "(No custom fields)" +msgstr "(æ²¡æœ‰è‡ªè®¢å—æ®µ)" + +#: html/Admin/Groups/Members.html:49 html/User/Groups/Members.html:52 +msgid "(No members)" +msgstr "(没有æˆå‘˜)" + +#: html/Admin/Elements/EditScrips:31 html/Admin/Elements/ListGlobalScrips:31 +msgid "(No scrips)" +msgstr "(没有手ç»)" + +#: html/Admin/Elements/EditTemplates:30 +msgid "(No templates)" +msgstr "没有模æ¿" + +#: html/Admin/Elements/EditWorkflows:31 +msgid "(No workflows)" +msgstr "没有æµç¨‹" + +#: html/Ticket/Update.html:83 html/Work/Tickets/Update.html:52 +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/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 "(é€å‡ºæœ¬ä»½æ›´æ–°çš„副本给åå•上以逗å·éš”开的管ç†å‘˜ç”µå邮件地å€ã€‚è¿™<b>将会</b>更改åŽç»çš„æ”¶ä»¶è€…åå•。)" + +#: html/Ticket/Update.html:79 +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/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 "(é€å‡ºæœ¬ä»½æ›´æ–°çš„副本给åå•上以逗å·éš”开的电å邮件地å€ã€‚è¿™<b>将会</b>更改åŽç»çš„æ”¶ä»¶è€…åå•。)" + +#: html/Ticket/Elements/EditCustomFieldEntries:35 html/Work/Tickets/Elements/EditCustomFieldEntries:33 html/Work/Tickets/Elements/ShowCustomFieldEntries:13 +msgid "(delete)" +msgstr "(åˆ é™¤)" + +#: html/Admin/Groups/index.html:32 html/User/Groups/index.html:32 +msgid "(empty)" +msgstr "(空白)" + +#: html/Edit/Global/CustomField/index.html:113 html/Edit/Global/Scrip/index.html:111 html/Edit/Global/Template/index.html:106 +msgid "(new)" +msgstr "(新增)" + +#: html/Admin/Users/index.html:38 +msgid "(no name listed)" +msgstr "(没有列出姓å)" + +#: html/Elements/MyRequests:42 html/Elements/MyTickets:44 html/Work/Elements/MyApprovals:37 html/Work/Elements/MyRequests:36 html/Work/Elements/MyTickets:41 +msgid "(no subject)" +msgstr "(没有主题)" + +#: html/Admin/Elements/SelectRights:47 html/Elements/SelectCustomFieldValue:29 html/Ticket/Elements/EditCustomField:60 html/Ticket/Elements/EditCustomFieldValues:52 html/Ticket/Elements/ShowCustomFields:35 html/Work/Elements/EditCustomFieldValues:50 html/Work/Elements/EditCustomFields:32 html/Work/Tickets/Elements/EditCustomFieldValues:33 lib/RT/Transaction_Overlay.pm:534 +msgid "(no value)" +msgstr "(æ— )" + +#: html/Ticket/Elements/BulkLinks:27 html/Ticket/Elements/EditLinks:115 html/Work/Search/BulkLinks:3 +msgid "(only one ticket)" +msgstr "(仅能指定一份申请å•)" + +#: html/Elements/MyRequests:51 html/Elements/MyTickets:54 html/Work/Elements/List:17 html/Work/Elements/MyRequests:46 html/Work/Elements/MyTickets:56 html/Work/Tickets/Elements/ShowBasics:44 +msgid "(pending approval)" +msgstr "(ç‰å¾…ç¾æ ¸)" + +#: html/Elements/MyRequests:53 html/Elements/MyTickets:56 html/Work/Elements/MyRequests:48 html/Work/Elements/MyTickets:58 +msgid "(pending other tickets)" +msgstr "(ç‰å¾…其它申请å•)" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:246 +msgid "(requestor's group)" +msgstr "(申请人所属)" + +#: html/Admin/Users/Modify.html:49 +msgid "(required)" +msgstr "(å¿…å¡«)" + +#: html/Ticket/Elements/ShowTransaction:92 html/Work/Tickets/Elements/ShowTransaction:37 +msgid "(untitled)" +msgstr "(未命å)" + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I own..." +msgstr "å‰ 25 份待处ç†ç”³è¯·å•..." + +#: NOT FOUND IN SOURCE +msgid "25 highest priority tickets I requested..." +msgstr "å‰ 25 份é€å‡ºçš„申请å•..." + +#: 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 html/Work/Elements/104Header:43 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"æå‡ºç”³è¯·å•\"> %1" + +#: etc/initialdata:221 +msgid "A blank template" +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:156 lib/RT/Principal_Overlay.pm:179 +msgid "ACE not found" +msgstr "找ä¸åˆ° ACE 设定" + +#: lib/RT/ACE_Overlay.pm:830 +msgid "ACEs can only be created and deleted." +msgstr "ç¥‡èƒ½æ–°å¢žæˆ–åˆ é™¤ ACE 设定。" + +#: NOT FOUND IN SOURCE +msgid "ACLEquivalence" +msgstr "ACLEquivalence" + +#: bin/rt-commit-handler:754 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "离开以å…ä¸å°å¿ƒæ›´æ”¹åˆ°ç”³è¯·å•。\\n" + +#: html/User/Elements/Tabs:31 +msgid "About me" +msgstr "个人信æ¯" + +#: html/Edit/Users/System:12 +msgid "Access Right" +msgstr "系统使用登录æƒé™" + +#: html/Admin/Users/Modify.html:79 +msgid "Access control" +msgstr "å˜å–æƒé™" + +#: html/Admin/Elements/EditScrip:56 html/Work/Tickets/Elements/ShowTransaction:18 +msgid "Action" +msgstr "动作" + +#: lib/RT/Scrip_Overlay.pm:146 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "动作 %1 找ä¸åˆ°" + +#: bin/rt-crontool:122 +msgid "Action committed." +msgstr "动作执行完毕" + +#: bin/rt-crontool:118 +msgid "Action prepared..." +msgstr "动作准备完毕..." + +#: html/Work/Elements/List:13 html/Work/Elements/SelectSearch:24 html/Work/Tickets/Create.html:26 html/Work/Tickets/Elements/ShowBasics:12 +msgid "Activated Date" +msgstr "申请激活时间" + +#: html/Edit/Elements/104Buttons:71 html/Edit/Elements/ListButtons:7 +msgid "Add" +msgstr "新增" + +#: html/Search/Bulk.html:95 html/Work/Search/Bulk.html:74 +msgid "Add AdminCc" +msgstr "新增管ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: html/Search/Bulk.html:91 html/Work/Search/Bulk.html:68 +msgid "Add Cc" +msgstr "新增副本收件人" + +#: html/Ticket/Elements/EditCustomFieldEntries:71 html/Work/Tickets/Elements/ShowCustomFieldEntries:49 +msgid "Add Entry" +msgstr "新增列" + +#: html/Ticket/Create.html:113 html/Ticket/Update.html:98 html/Work/Tickets/Elements/AddAttachments:18 +msgid "Add More Files" +msgstr "新增更多附件" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:112 html/Admin/Elements/ModifyTemplateAsWorkflow:45 +msgid "Add Next State" +msgstr "新增下一项关å¡" + +#: html/Search/Bulk.html:87 html/Work/Search/Bulk.html:62 +msgid "Add Requestor" +msgstr "新增申请人" + +#: html/Admin/Elements/AddCustomFieldValue:24 +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:54 +msgid "Add a scrip which will apply to all queues" +msgstr "新增一é“用于所有表å•的手ç»" + +#: html/Search/Bulk.html:127 html/Work/Search/Bulk.html:80 +msgid "Add comments or replies to selected tickets" +msgstr "新增评论或回å¤åˆ°æŒ‡å®šçš„申请å•" + +#: html/Admin/Groups/Members.html:41 html/User/Groups/Members.html:38 +msgid "Add members" +msgstr "新增æˆå‘˜" + +#: html/Admin/Queues/People.html:65 html/Ticket/Elements/AddWatchers:27 +msgid "Add new watchers" +msgstr "新增视察员" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "新增下一项关å¡" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "å•ä½å·²æ–°å¢žä¸ºæ¤è¡¨å•çš„ %1" + +#: lib/RT/Ticket_Overlay.pm:1462 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "å•ä½å·²æ–°å¢žä¸ºæ¤ç”³è¯·å•çš„ %1" + +#: html/Admin/Elements/ModifyUser:75 html/Admin/Users/Modify.html:121 html/User/Prefs.html:87 html/Work/Preferences/Info:76 +msgid "Address1" +msgstr "ä½å€" + +#: html/Admin/Elements/ModifyUser:77 html/Admin/Users/Modify.html:126 html/User/Prefs.html:89 html/Work/Preferences/Info:78 +msgid "Address2" +msgstr "ä½å€(ç»)" + +#: NOT FOUND IN SOURCE +msgid "Adjust Blinking Rate" +msgstr "调整闪çƒé€Ÿåº¦å¿«æ…¢" + +#: html/Edit/Groups/Admin:9 +msgid "Admin" +msgstr "管ç†å‘˜" + +#: html/Ticket/Create.html:73 +msgid "Admin Cc" +msgstr "管ç†å‘˜å‰¯æœ¬" + +#: etc/initialdata:303 +msgid "Admin Comment" +msgstr "管ç†å‘˜è¯„论" + +#: etc/initialdata:261 +msgid "Admin Correspondence" +msgstr "管ç†å‘˜å›žå¤" + +#: NOT FOUND IN SOURCE +msgid "Admin Rights" +msgstr "管ç†å‘˜æƒé™" + +#: html/Admin/Queues/index.html:24 html/Admin/Queues/index.html:27 +msgid "Admin queues" +msgstr "表å•管ç†" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "使用者管ç†" + +#: html/Admin/Global/index.html:25 html/Admin/Global/index.html:27 +msgid "Admin/Global configuration" +msgstr "管ç†/全域设定" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "管ç†/群组" + +#: html/Admin/Queues/Modify.html:24 html/Admin/Queues/Modify.html:28 +msgid "Admin/Queue/Basics" +msgstr "管ç†/表å•/基本信æ¯" + +#: html/Edit/Global/Basic/Top:60 +msgid "AdminAddress" +msgstr "管ç†å‘˜ Email" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "ç®¡ç†æ‰€æœ‰ä»£ç†äººç¾¤ç»„" + +#: etc/initialdata:74 html/Admin/Elements/ModifyTemplateAsWorkflow:155 html/Ticket/Elements/ShowPeople:38 html/Ticket/Update.html:49 lib/RT/ACE_Overlay.pm:88 +msgid "AdminCc" +msgstr "管ç†å‘˜å‰¯æœ¬" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "管ç†å‘˜è¯„论" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "管ç†å‘˜å›žå¤" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "AdminCustomFields" +msgstr "管ç†è‡ªè®¢å—段" + +#: html/Edit/Groups/Admin:12 lib/RT/Group_Overlay.pm:145 +msgid "AdminGroup" +msgstr "管ç†ç¾¤ç»„" + +#: NOT FOUND IN SOURCE +msgid "AdminGroupDescription" +msgstr "管ç†ç¾¤ç»„æè¿°" + +#: lib/RT/Group_Overlay.pm:147 +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:58 +msgid "AdminOwnPersonalGroups" +msgstr "管ç†ä»£ç†äººç¾¤ç»„" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "AdminQueue" +msgstr "管ç†è¡¨å•" + +#: lib/RT/System.pm:59 +msgid "AdminUsers" +msgstr "管ç†ä½¿ç”¨è€…" + +#: NOT FOUND IN SOURCE +msgid "Administrative" +msgstr "行政类" + +#: html/Admin/Queues/People.html:47 html/Ticket/Elements/EditPeople:53 +msgid "Administrative Cc" +msgstr "管ç†å‘˜å‰¯æœ¬" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:233 +msgid "Admins" +msgstr "主管" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "进阶查询" + +#: html/Elements/SelectDateRelation:35 +msgid "After" +msgstr "晚于" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "ç»åŽ†æ—¶é—´" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:172 html/Edit/Global/Workflow/Action:39 +msgid "Alias" +msgstr "执行其它æµç¨‹" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:175 +msgid "Alias for" +msgstr "相当于" + +#: html/Edit/Queues/index.html:33 html/Work/Delegates/index.html:13 html/Work/Elements/SelectSearch:11 html/Work/Queues/Select.html:14 html/Work/Queues/index.html:13 +msgid "All" +msgstr "全部" + +#: etc/initialdata:372 +msgid "All Approvals Passed" +msgstr "完æˆå…¨éƒ¨ç¾æ ¸" + +#: html/Edit/Global/Workflow/Condition:16 +msgid "All Condition" +msgstr "所有æ¡ä»¶" + +#: html/Admin/Elements/EditCustomFields:95 +msgid "All Custom Fields" +msgstr "æ‰€æœ‰è‡ªè®¢å—æ®µ" + +#: html/Admin/Queues/index.html:52 +msgid "All Queues" +msgstr "所有表å•" + +#: NOT FOUND IN SOURCE +msgid "All Users" +msgstr "全体员工" + +#: 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/Edit/Global/Workflow/Condition:13 +msgid "Any Condition" +msgstr "ä»»æ„æ¡ä»¶" + +#: html/Edit/Global/Scrip/List:10 html/Edit/Global/Scrip/Top:74 +msgid "Apply Template" +msgstr "引用模æ¿" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:138 html/Elements/Tabs:55 html/Work/Approvals/Elements/Approve:6 +msgid "Approval" +msgstr "ç¾æ ¸" + +#: 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 "ç¾æ ¸å• #%1:%2" + +#: html/Approvals/index.html:53 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "ç¾æ ¸å• #%1:系统错误,记录失败" + +#: html/Approvals/index.html:51 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "ç¾æ ¸å• #%1:记录完毕" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:123 +msgid "Approval Details" +msgstr "ç¾æ ¸ç»†èŠ‚" + +#: NOT FOUND IN SOURCE +msgid "Approval Due" +msgstr "ç¾æ ¸æ—¶é™" + +#: html/Work/Approvals/Elements/Approve:37 +msgid "Approval Notes" +msgstr "ç¾æ ¸æ„è§" + +#: etc/initialdata:357 +msgid "Approval Passed" +msgstr "å®ŒæˆæŸé¡¹ç¾æ ¸" + +#: etc/initialdata:383 +msgid "Approval Rejected" +msgstr "驳回æŸé¡¹ç¾æ ¸" + +#: NOT FOUND IN SOURCE +msgid "Approval Result" +msgstr "ç¾æ ¸ç»“æžœ" + +#: html/Work/Approvals/Elements/Approve:25 +msgid "Approval Status" +msgstr "æ ¸å‡†ç»“æžœ" + +#: NOT FOUND IN SOURCE +msgid "Approval Type" +msgstr "ç¾æ ¸ç§ç±»" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:25 +msgid "Approval diagram" +msgstr "ç¾æ ¸æµç¨‹" + +#: html/Approvals/Elements/Approve:43 html/Work/Approvals/Elements/Approve:29 +msgid "Approve" +msgstr "æ ¸å‡†" + +#: html/Work/Approvals/Elements/Approve:21 html/Work/Elements/List:9 +msgid "Approver" +msgstr "ç¾æ ¸äºº" + +#: html/Edit/Global/Workflow/Action:29 html/Edit/Global/Workflow/Owner.html:10 +msgid "Approver Setting" +msgstr "æ‰§è¡Œç¾æ ¸äººè®¾å®š" + +#: etc/initialdata:516 etc/upgrade/2.1.71:148 html/Edit/Elements/CreateApprovalsQueue:122 +msgid "Approver's notes: %1" +msgstr "ç¾æ ¸å¤‡æ³¨ï¼š%1" + +#: NOT FOUND IN SOURCE +msgid "Apr" +msgstr "四月" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "04" + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "四月" + +#: html/Edit/Elements/104Buttons:24 +msgid "Are you sure to delete checked items?" +msgstr "您确定è¦åˆ 除?" + +#: html/Elements/SelectSortOrder:34 +msgid "Ascending" +msgstr "递增" + +#: html/Search/Bulk.html:136 html/SelfService/Update.html:32 html/Ticket/ModifyAll.html:82 html/Ticket/Update.html:98 html/Work/Search/Bulk.html:88 +msgid "Attach" +msgstr "附件" + +#: html/SelfService/Create.html:64 html/Ticket/Create.html:109 html/Work/Tickets/Elements/AddAttachments:15 +msgid "Attach file" +msgstr "é™„åŠ æ¡£æ¡ˆ" + +#: html/Ticket/Create.html:97 html/Ticket/Update.html:87 html/Work/Tickets/Elements/AddAttachments:6 +msgid "Attached file" +msgstr "现有附件" + +#: NOT FOUND IN SOURCE +msgid "Attachment '%1' could not be loaded" +msgstr "æ— æ³•åŠ è½½é™„ä»¶ '%1'" + +#: lib/RT/Transaction_Overlay.pm:441 +msgid "Attachment created" +msgstr "附件新增完毕" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "附件档å" + +#: html/Ticket/Elements/ShowAttachments:25 html/Work/Tickets/Elements/ShowTransaction:32 +msgid "Attachments" +msgstr "附件" + +#: NOT FOUND IN SOURCE +msgid "Aug" +msgstr "八月" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "08" + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "八月" + +#: html/Admin/Elements/ModifyUser:65 +msgid "AuthSystem" +msgstr "è®¤è¯æ–¹å¼" + +#: NOT FOUND IN SOURCE +msgid "AutoReject" +msgstr "自动驳回表å•" + +#: NOT FOUND IN SOURCE +msgid "AutoResolve" +msgstr "自动完æˆè¡¨å•处ç†" + +#: etc/initialdata:224 +msgid "Autoreply" +msgstr "自动回å¤" + +#: etc/initialdata:90 +msgid "Autoreply To Requestors" +msgstr "自动对申请人回å¤" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "自动对申请人回å¤" + +#: html/Edit/Rights/index.html:16 +msgid "Available Rights:" +msgstr "æƒé™é¡¹ç›®åˆ—表:" + +#: NOT FOUND IN SOURCE +msgid "Back to Homepage" +msgstr "回到首页" + +#: html/Work/Elements/BackButton:2 html/Work/Search/Bulk.html:101 +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" + +#: bin/rt-commit-handler:826 +#. ($val) +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/GroupTabs:38 html/Admin/Elements/QueueTabs:38 html/Admin/Elements/UserTabs:37 html/Edit/Global/autohandler:6 html/Edit/Queues/autohandler:17 html/Edit/Users/index.html:121 html/Ticket/Elements/Tabs:89 html/User/Elements/GroupTabs:37 +msgid "Basics" +msgstr "基本信æ¯" + +#: html/Ticket/Update.html:81 html/Work/Tickets/Update.html:49 +msgid "Bcc" +msgstr "密件副本" + +#: html/Admin/Elements/EditScrip:87 html/Admin/Global/GroupRights.html:84 html/Admin/Global/Template.html:45 html/Admin/Global/UserRights.html:53 html/Admin/Global/Workflow.html:46 html/Admin/Groups/GroupRights.html:72 html/Admin/Groups/Members.html:80 html/Admin/Groups/Modify.html:55 html/Admin/Groups/UserRights.html:54 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:44 html/Admin/Queues/UserRights.html:53 html/Admin/Queues/Workflow.html:44 html/User/Groups/Modify.html:55 +msgid "Be sure to save your changes" +msgstr "请别忘了储å˜ä¿®æ”¹ã€‚" + +#: html/Elements/SelectDateRelation:33 lib/RT/CurrentUser.pm:321 +msgid "Before" +msgstr "早于" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:44 +msgid "Begin Approval" +msgstr "å¼€å§‹ç¾æ ¸" + +#: NOT FOUND IN SOURCE +msgid "Begin From " +msgstr "èµ·å§‹æ—¥" + +#: html/Edit/Users/Info:25 +msgid "Birthday" +msgstr "生日" + +#: etc/initialdata:220 +msgid "Blank" +msgstr "空白模æ¿" + +#: html/Search/Listing.html:78 html/Work/Search/index.html:53 +msgid "Bookmarkable URL for this search" +msgstr "å°†æŸ¥è¯¢ç»“æžœè½¬ä¸ºå¯æ”¾å…¥ä¹¦ç¾çš„网å€" + +#: html/Ticket/Elements/ShowHistory:38 html/Ticket/Elements/ShowHistory:44 +msgid "Brief headers" +msgstr "ç²¾ç®€æ ‡å¤´æ¡£" + +#: html/Search/Bulk.html:24 html/Search/Bulk.html:25 +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:1411 +msgid "Can not modify system users" +msgstr "æ— æ³•æ›´æ”¹ç³»ç»Ÿä½¿ç”¨è€…" + +#: lib/RT/Queue_Overlay.pm:66 +msgid "Can this principal see this queue" +msgstr "该å•使˜¯å¦èƒ½æŸ¥é˜…æ¤è¡¨å•" + +#: lib/RT/CustomField_Overlay.pm:205 +msgid "Can't add a custom field value without a name" +msgstr "ä¸èƒ½æ–°å¢žæ²¡æœ‰åç§°çš„è‡ªè®¢å—æ®µå€¼" + +#: lib/RT/Link_Overlay.pm:131 +msgid "Can't link a ticket to itself" +msgstr "申请å•ä¸èƒ½é“¾æŽ¥è‡ªå·±ã€‚" + +#: lib/RT/Ticket_Overlay.pm:2816 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "ä¸èƒ½æ•´åˆè¿›å·²æ•´åˆè¿‡çš„申请å•。这个错误ä¸è¯¥å‘生。" + +#: lib/RT/Ticket_Overlay.pm:2634 lib/RT/Ticket_Overlay.pm:2703 +msgid "Can't specifiy both base and target" +msgstr "ä¸èƒ½åŒæ—¶æŒ‡å®šèµ·å§‹ç”³è¯·å•与目的申请å•" + +#: html/Edit/Elements/PopFooter:8 +msgid "Cancel" +msgstr "å–æ¶ˆ" + +#: html/autohandler:113 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "æ— æ³•æ–°å¢žä½¿ç”¨è€…ï¼š%1" + +#: NOT FOUND IN SOURCE +msgid "Card No." +msgstr "å¡å·" + +#: NOT FOUND IN SOURCE +msgid "Categories" +msgstr "分类管ç†" + +#: NOT FOUND IN SOURCE +msgid "Category" +msgstr "分类" + +#: etc/initialdata:68 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:44 html/Ticket/Update.html:76 html/Work/Tickets/Update.html:43 lib/RT/ACE_Overlay.pm:87 +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:30 +msgid "Change password" +msgstr "更改å£ä»¤" + +#: html/Edit/Global/Basic/Top:70 +msgid "ChangeOwnerUI" +msgstr "å¯å¦é€‰æ‹©è¡¨å•承办人" + +#: html/Ticket/Create.html:100 html/Ticket/Elements/EditCustomFieldEntries:35 html/Ticket/Update.html:90 html/Work/Tickets/Elements/ShowCustomFieldEntries:13 +msgid "Check box to delete" +msgstr "é€‰æ‹©æ¬²åˆ é™¤çš„é¡¹ç›®" + +#: html/Admin/Elements/SelectRights:30 +msgid "Check box to revoke right" +msgstr "选择欲撤消的æƒåˆ©" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/BulkLinks:42 html/Ticket/Elements/EditLinks:130 html/Ticket/Elements/EditLinks:68 html/Ticket/Elements/ShowLinks:56 html/Work/Search/BulkLinks:18 +msgid "Children" +msgstr "å申请å•" + +#: html/Edit/Elements/PickUsers:21 html/Edit/Global/UserRight/List:8 html/Edit/Global/UserRight/Top:19 html/Edit/Users/List:6 html/Edit/Users/Top:18 +msgid "Chinese Name" +msgstr "䏿–‡å§“å" + +#: NOT FOUND IN SOURCE +msgid "Chinese/English" +msgstr "ä¸è‹±æ–‡" + +#: html/Admin/Elements/ModifyUser:79 html/Admin/Users/Modify.html:131 html/User/Prefs.html:91 html/Work/Preferences/Info:80 +msgid "City" +msgstr "所在城市" + +#: html/Ticket/Elements/ShowDates:46 +msgid "Closed" +msgstr "已解决" + +#: html/SelfService/Closed.html:24 +msgid "Closed Tickets" +msgstr "已解决的申请å•" + +#: html/SelfService/Elements/Tabs:44 +msgid "Closed tickets" +msgstr "已解决的申请å•" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:181 html/Edit/Global/Workflow/Action:58 html/Edit/Global/Workflow/Condition:51 +msgid "Code" +msgstr "执行程åºç " + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "æŒ‡ä»¤æ— æ³•è¾¨è¯†ï¼\\n" + +#: html/Ticket/Elements/ShowTransaction:166 html/Ticket/Elements/Tabs:152 html/Work/Search/Bulk.html:89 html/Work/Tickets/Display.html:37 html/Work/Tickets/Elements/ShowTransaction:112 html/Work/Tickets/Elements/ShowTransaction:27 +msgid "Comment" +msgstr "评论" + +#: html/Admin/Elements/ModifyQueue:44 html/Admin/Queues/Modify.html:57 +msgid "Comment Address" +msgstr "评论电å邮件地å€" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "评论未被纪录" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Comment on tickets" +msgstr "å¯¹ç”³è¯·å•æå‡ºè¯„è®º" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "CommentOnTicket" +msgstr "评论申请å•" + +#: html/Admin/Elements/ModifyUser:34 html/Work/Tickets/Update.html:59 +msgid "Comments" +msgstr "评论" + +#: html/Ticket/ModifyAll.html:69 html/Ticket/Update.html:68 html/Work/Tickets/Update.html:35 +msgid "Comments (Not sent to requestors)" +msgstr "评论(ä¸é€ç»™ç”³è¯·äºº)" + +#: html/Search/Bulk.html:131 html/Work/Search/Bulk.html:83 +msgid "Comments (not sent to requestors)" +msgstr "评论(ä¸é€ç»™ç”³è¯·äºº)" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Comments about %1" +msgstr "对 %1 的评论" + +#: html/Admin/Users/Modify.html:184 html/Ticket/Elements/ShowRequestor:43 +msgid "Comments about this user" +msgstr "使用者æè¿°" + +#: lib/RT/Transaction_Overlay.pm:543 +msgid "Comments added" +msgstr "新增评论完毕" + +#: html/Edit/Elements/PopFooter:4 html/Edit/Elements/PopFooter:6 +msgid "Commit" +msgstr "确认" + +#: lib/RT/Action/Generic.pm:139 +msgid "Commit Stubbed" +msgstr "消除更动完毕" + +#: html/Edit/Users/Info:42 +msgid "Company Name" +msgstr "å…¬å¸åç§°" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "设定查询æ¡ä»¶" + +#: html/Admin/Elements/EditScrip:40 html/Admin/Elements/ModifyTemplateAsWorkflow:127 +msgid "Condition" +msgstr "æ¡ä»¶" + +#: bin/rt-crontool:108 +msgid "Condition matches..." +msgstr "ç¬¦åˆæ¡ä»¶..." + +#: lib/RT/Scrip_Overlay.pm:159 +msgid "Condition not found" +msgstr "未找到符åˆçš„现况" + +#: html/Edit/Global/GroupRight/Top:26 html/Edit/Global/UserRight/Top:45 html/Edit/Groups/Member:57 html/Elements/Tabs:49 +msgid "Configuration" +msgstr "设定" + +#: html/SelfService/Prefs.html:32 +msgid "Confirm" +msgstr "确认å£ä»¤" + +#: NOT FOUND IN SOURCE +msgid "Confirm Password" +msgstr "å£ä»¤ç¡®è®¤" + +#: html/Work/Approvals/Display.html:25 html/Work/Tickets/Create.html:153 html/Work/Tickets/Create.html:165 html/Work/Tickets/Update.html:81 +msgid "Confirm Submit" +msgstr "确定é€å‡º" + +#: NOT FOUND IN SOURCE +msgid "Contact System Administrator" +msgstr "连络系统管ç†å‘˜" + +#: html/Admin/Elements/ModifyUser:59 +msgid "ContactInfoSystem" +msgstr "连络信æ¯ç³»ç»Ÿ" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "æ— æ³•è§£è¯»è”络日期 '%1'" + +#: html/Admin/Elements/ModifyTemplate:43 html/Admin/Elements/ModifyTemplateAsWorkflow:200 html/Ticket/ModifyAll.html:86 +msgid "Content" +msgstr "内容" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "æ— æ³•æ–°å¢žç¾¤ç»„" + +#: html/Edit/Elements/104Buttons:74 +msgid "Copy" +msgstr "å¤åˆ¶" + +#: NOT FOUND IN SOURCE +msgid "Copy Field From:" +msgstr "欲å¤åˆ¶å—段:" + +#: etc/initialdata:282 +msgid "Correspondence" +msgstr "回å¤" + +#: html/Admin/Elements/ModifyQueue:38 html/Admin/Queues/Modify.html:50 +msgid "Correspondence Address" +msgstr "申请å•回å¤åœ°å€" + +#: lib/RT/Transaction_Overlay.pm:539 +msgid "Correspondence added" +msgstr "新增申请å•回å¤" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "未纪录申请å•回å¤" + +#: lib/RT/Ticket_Overlay.pm:3561 +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/Ticket_Overlay.pm:3067 lib/RT/Ticket_Overlay.pm:3075 lib/RT/Ticket_Overlay.pm:3092 +msgid "Could not change owner. " +msgstr "ä¸èƒ½æ›´æ”¹æ‰¿åŠžäººã€‚ " + +#: html/Admin/Elements/EditCustomField:84 html/Admin/Elements/EditCustomFields:165 html/Edit/Global/CustomField/index.html:117 +#. ($msg) +msgid "Could not create CustomField" +msgstr "æ— æ³•æ–°å¢žè‡ªè®¢å—æ®µ" + +#: html/Edit/Global/Workflow/index.html:126 +#. ($msg) +msgid "Could not create Scrip" +msgstr "æ— æ³•å»ºç«‹è®¯æ¯é€šçŸ¥" + +#: html/Edit/Global/Template/index.html:110 +#. ($msg) +msgid "Could not create Template" +msgstr "æ— æ³•å»ºç«‹é€šçŸ¥æ¨¡æ¿" + +#: html/User/Groups/Modify.html:76 lib/RT/Group_Overlay.pm:473 lib/RT/Group_Overlay.pm:480 +msgid "Could not create group" +msgstr "æ— æ³•æ–°å¢žç¾¤ç»„" + +#: html/Admin/Global/Template.html:74 html/Admin/Queues/Template.html:71 +#. ($msg) +msgid "Could not create template: %1" +msgstr "æ— æ³•æ–°å¢žæ¨¡æ¿ï¼š%1" + +#: lib/RT/Ticket_Overlay.pm:1081 lib/RT/Ticket_Overlay.pm:334 +msgid "Could not create ticket. Queue not set" +msgstr "æ— æ³•æ–°å¢žç”³è¯·å•。尚未指定表å•。" + +#: lib/RT/User_Overlay.pm:267 lib/RT/User_Overlay.pm:279 lib/RT/User_Overlay.pm:297 lib/RT/User_Overlay.pm:481 +msgid "Could not create user" +msgstr "æ— æ³•æ–°å¢žä½¿ç”¨è€…" + +#: NOT FOUND IN SOURCE +msgid "Could not create watcher for requestor" +msgstr "æ— æ³•ä¸ºç”³è¯·äººæ–°å¢žè§†å¯Ÿå‘˜" + +#: html/Admin/Elements/ModifyWorkflow:219 html/Admin/Global/Workflow.html:75 html/Admin/Queues/Workflow.html:71 +#. ($msg) +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:621 lib/RT/Ticket_Overlay.pm:1430 +msgid "Could not find or create that user" +msgstr "找ä¸åˆ°æˆ–æ— æ³•æ–°å¢žè¯¥å使用者" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1509 +msgid "Could not find that principal" +msgstr "找ä¸åˆ°è¯¥å•ä½" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "找ä¸åˆ°ä½¿ç”¨è€… %1。" + +#: html/Admin/Groups/Members.html:87 html/Edit/Users/index.html:83 html/User/Groups/Members.html:89 html/User/Groups/Modify.html:81 +#. ( . $GroupId) +msgid "Could not load group" +msgstr "æ— æ³•åŠ è½½ç¾¤ç»„" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "æ— æ³•å°†è¯¥å•ä½è®¾ä¸ºæ¤è¡¨å•çš„ %1。" + +#: lib/RT/Ticket_Overlay.pm:1451 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "æ— æ³•å°†è¯¥å•ä½è®¾ä¸ºæ¤ç”³è¯·å•çš„ %1。" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "æ— æ³•å°†å•ä½ %1 从表å•移除。" + +#: lib/RT/Ticket_Overlay.pm:1567 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "æ— æ³•å°†å•ä½ %1 从申请å•移除。" + +#: lib/RT/Group_Overlay.pm:984 +msgid "Couldn't add member to group" +msgstr "æ— æ³•æ–°å¢žæˆå‘˜è‡³ç¾¤ç»„" + +#: lib/RT/Ticket_Overlay.pm:3571 lib/RT/Ticket_Overlay.pm:3627 +#. ($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/Interface/Web.pm:902 +msgid "Couldn't find row" +msgstr "找ä¸åˆ°æ¤åˆ—æ•°æ®" + +#: lib/RT/Group_Overlay.pm:958 +msgid "Couldn't find that principal" +msgstr "找ä¸åˆ°è¯¥å•ä½" + +#: lib/RT/CustomField_Overlay.pm:239 +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:111 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "æ— æ³•ä»Žä½¿ç”¨è€…æ•°æ®åº“åŠ è½½ %1。\\n" + +#: 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 "æ— æ³•åŠ è½½æ‰‹ç»ã€‚" + +#: html/Admin/Groups/GroupRights.html:87 html/Admin/Groups/UserRights.html:74 html/Edit/Global/GroupRight/Add.html:54 html/Edit/Global/UserRight/Add.html:23 html/Edit/Groups/Member:121 html/Edit/Groups/Members/Add.html:44 html/Edit/Rights/index.html:57 +#. ($Group) +#. ($ObjectGroup) +#. ($id) +msgid "Couldn't load group %1" +msgstr "æ— æ³•åŠ è½½æ‰‹ç» %1" + +#: lib/RT/Link_Overlay.pm:174 lib/RT/Link_Overlay.pm:183 lib/RT/Link_Overlay.pm:210 +msgid "Couldn't load link" +msgstr "æ— æ³•åŠ è½½é“¾æŽ¥ã€‚" + +#: html/Admin/Elements/EditCustomFields:146 html/Admin/Queues/People.html:120 +#. ($id) +msgid "Couldn't load queue" +msgstr "æ— æ³•åŠ è½½è¡¨å•" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:71 html/Edit/Global/GroupRight/Add.html:50 html/Edit/Global/GroupRight/index.html:81 html/Edit/Global/UserRight/Add.html:19 html/Edit/Global/UserRight/index.html:83 html/Edit/Rights/index.html:53 +#. ($Queue) +#. ($id) +msgid "Couldn't load queue %1" +msgstr "æ— æ³•åŠ è½½è¡¨å• %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "æ— æ³•åŠ è½½æ‰‹ç»" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "æ— æ³•åŠ è½½æ¨¡æ¿" + +#: html/Admin/Users/Prefs.html:78 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "æ— æ³•åŠ è½½è¯¥å使用者(%1)" + +#: html/SelfService/Display.html:108 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "æ— æ³•åŠ è½½ç”³è¯·å• '%1'" + +#: html/Admin/Elements/ModifyUser:85 html/Admin/Users/Modify.html:148 html/User/Prefs.html:97 html/Work/Preferences/Info:86 +msgid "Country" +msgstr "国家" + +#: html/Admin/Elements/CreateUserCalled:25 html/Edit/Elements/PopHeader:29 html/Edit/Global/GroupRight/Add.html:18 html/Ticket/Create.html:134 html/Ticket/Create.html:194 +msgid "Create" +msgstr "新增" + +#: html/Edit/Groups/MemberGroups/Add.html:17 +msgid "Create Subgroup:" +msgstr "新增å群组:" + +#: etc/initialdata:145 +msgid "Create Tickets" +msgstr "新增申请å•" + +#: NOT FOUND IN SOURCE +msgid "Create User:" +msgstr "新增æˆå‘˜ï¼š" + +#: html/Admin/Elements/EditCustomField:74 +msgid "Create a CustomField" +msgstr "æ–°å¢žè‡ªè®¢å—æ®µ" + +#: html/Admin/Queues/CustomField.html:47 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "为 %1 è¡¨å•æ–°å¢žè‡ªè®¢å—段" + +#: html/Admin/Global/CustomField.html:47 +msgid "Create a CustomField which 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:66 html/Admin/Groups/Modify.html:92 +msgid "Create a new group" +msgstr "新增群组" + +#: html/User/Groups/Modify.html:66 html/User/Groups/Modify.html:91 +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:24 html/Ticket/Create.html:27 html/Ticket/Create.html:35 +msgid "Create a new ticket" +msgstr "新增申请å•" + +#: html/Admin/Users/Modify.html:213 html/Admin/Users/Modify.html:240 +msgid "Create a new user" +msgstr "新增使用者" + +#: NOT FOUND IN SOURCE +msgid "Create a new workflow" +msgstr "新增æµç¨‹" + +#: html/Admin/Queues/Modify.html:103 +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:58 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "为 %1 è¡¨å•æ–°å¢žæ‰‹ç»" + +#: html/Admin/Global/Template.html:68 html/Admin/Queues/Template.html:64 +msgid "Create a template" +msgstr "新增模æ¿" + +#: html/SelfService/Create.html:24 +msgid "Create a ticket" +msgstr "æå‡ºç”³è¯·å•" + +#: html/Admin/Elements/ModifyWorkflow:206 html/Admin/Global/Workflow.html:69 html/Admin/Queues/Workflow.html:64 +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:147 +msgid "Create new tickets based on this scrip's template" +msgstr "便®æ¤é¡¹æ‰‹ç»å†…的模版,新增申请å•" + +#: html/SelfService/Create.html:77 +msgid "Create ticket" +msgstr "新增申请å•" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Create tickets in this queue" +msgstr "在æ¤è¡¨å•䏿–°å¢žç”³è¯·å•" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Create, delete and modify custom fields" +msgstr "新增ã€åˆ é™¤åŠæ›´æ”¹è‡ªè®¢å—段" + +#: lib/RT/Queue_Overlay.pm:67 +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:58 +msgid "Create, delete and modify the members of personal groups" +msgstr "新增ã€åˆ é™¤åŠæ›´æ”¹ä»£ç†äººç¾¤ç»„" + +#: lib/RT/System.pm:59 +msgid "Create, delete and modify users" +msgstr "新增ã€åˆ é™¤åŠæ›´æ”¹ä½¿ç”¨è€…" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "CreateTicket" +msgstr "新增申请å•" + +#: html/Elements/SelectDateType:25 html/Ticket/Elements/ShowDates:26 lib/RT/Ticket_Overlay.pm:1175 +msgid "Created" +msgstr "新增日" + +#: html/Admin/Elements/EditCustomField:87 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "è‡ªè®¢å—æ®µ %1 新增æˆåŠŸ" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "æ¨¡æ¿ %1 新增æˆåŠŸ" + +#: html/Admin/Elements/ModifyWorkflow:221 +#. (loc( $WorkflowObj->Name() )) +msgid "Created workflow %1" +msgstr "æµç¨‹ %1 新增æˆåŠŸ" + +#: 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 "çŽ°æœ‰è‡ªè®¢å—æ®µ" + +#: html/Edit/Groups/MemberGroups/Add.html:14 +msgid "Current Groups:" +msgstr "现有群组列表:" + +#: html/Ticket/Elements/EditLinks:27 +msgid "Current Relationships" +msgstr "现有关系" + +#: html/Edit/Rights/index.html:19 +msgid "Current Rights:" +msgstr "现有æƒé™ï¼š" + +#: html/Admin/Elements/EditScrips:29 +msgid "Current Scrips" +msgstr "现有手ç»" + +#: html/Work/Tickets/Create.html:48 html/Work/Tickets/Elements/ShowBasics:39 +msgid "Current Status" +msgstr "ç›®å‰çжæ€" + +#: NOT FOUND IN SOURCE +msgid "Current Templates" +msgstr "现有模æ¿" + +#: html/Admin/Groups/Members.html:38 html/User/Groups/Members.html:41 +msgid "Current members" +msgstr "现有æˆå‘˜" + +#: html/Admin/Elements/SelectRights:28 +msgid "Current rights" +msgstr "现有æƒé™" + +#: html/Search/Listing.html:70 html/Work/Search/index.html:42 +msgid "Current search criteria" +msgstr "现有查询æ¡ä»¶" + +#: html/Admin/Queues/People.html:40 html/Ticket/Elements/EditPeople:44 +msgid "Current watchers" +msgstr "现有视察员" + +#: html/Admin/Global/CustomField.html:54 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "è‡ªè®¢å—æ®µ #%1" + +#: html/Admin/Elements/QueueTabs:52 html/Admin/Elements/SystemTabs:39 html/Admin/Global/index.html:49 html/Edit/Global/autohandler:7 html/Edit/Queues/autohandler:18 html/Ticket/Elements/ShowSummary:35 +msgid "Custom Fields" +msgstr "è‡ªè®¢å—æ®µ" + +#: NOT FOUND IN SOURCE +msgid "Custom Fields which apply to all queues" +msgstr "适用于所有表å•çš„è‡ªè®¢å—æ®µ" + +#: html/Admin/Elements/EditScrip:72 html/Edit/Global/Scrip/Top:69 +msgid "Custom action cleanup code" +msgstr "åŠ¨ä½œåŽæ‰§è¡Œç¨‹åº" + +#: html/Admin/Elements/EditScrip:64 html/Edit/Global/Scrip/Top:62 +msgid "Custom action preparation code" +msgstr "åŠ¨ä½œå‰æ‰§è¡Œç¨‹åº" + +#: html/Admin/Elements/EditScrip:48 html/Edit/Global/Scrip/Top:35 html/Edit/Global/Scrip/Top:61 +msgid "Custom condition" +msgstr "自订æ¡ä»¶" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "è‡ªè®¢å—æ®µ %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "è‡ªè®¢å—æ®µ %1 已有值" + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "è‡ªè®¢å—æ®µ %1 没有值" + +#: lib/RT/Ticket_Overlay.pm:3463 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "找ä¸åˆ°è‡ªè®¢å—段 %1" + +#: html/Admin/Elements/EditCustomFields:196 +msgid "Custom field deleted" +msgstr "è‡ªè®¢å—æ®µå·²åˆ 除" + +#: lib/RT/Ticket_Overlay.pm:3613 +msgid "Custom field not found" +msgstr "找ä¸åˆ°è‡ªè®¢å—段" + +#: lib/RT/CustomField_Overlay.pm:349 +#. ($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:249 +msgid "Custom field value could not be deleted" +msgstr "æ— æ³•åˆ é™¤è‡ªè®¢å—æ®µå€¼" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Custom field value could not be found" +msgstr "找ä¸åˆ°è‡ªè®¢å—段值" + +#: lib/RT/CustomField_Overlay.pm:247 lib/RT/CustomField_Overlay.pm:357 +msgid "Custom field value deleted" +msgstr "è‡ªè®¢å—æ®µå€¼åˆ 除æˆåŠŸ" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:145 html/Edit/Global/Workflow/Owner.html:90 lib/RT/Transaction_Overlay.pm:548 +msgid "CustomField" +msgstr "è‡ªè®¢å—æ®µ" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "æ•°æ®é”™è¯¯" + +#: NOT FOUND IN SOURCE +msgid "Date of Departure" +msgstr "å‡ºå‘æ—¥æœŸ" + +#: html/SelfService/Display.html:38 html/Ticket/Create.html:160 html/Ticket/Elements/ShowSummary:54 html/Ticket/Elements/Tabs:92 html/Ticket/ModifyAll.html:43 html/Work/Tickets/Elements/ShowTransaction:14 +msgid "Dates" +msgstr "日期" + +#: NOT FOUND IN SOURCE +msgid "Dec" +msgstr "å二月" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "12" + +#: NOT FOUND IN SOURCE +msgid "December" +msgstr "å二月" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "预设自动å“应模æ¿" + +#: etc/initialdata:225 +msgid "Default Autoresponse template" +msgstr "预设自动å“应模æ¿" + +#: etc/initialdata:304 +msgid "Default admin comment template" +msgstr "预设管ç†å‘˜è¯„论模æ¿" + +#: etc/initialdata:262 +msgid "Default admin correspondence template" +msgstr "预设管ç†å‘˜å›žå¤æ¨¡æ¿" + +#: etc/initialdata:283 +msgid "Default correspondence template" +msgstr "é¢„è®¾å›žå¤æ¨¡æ¿" + +#: etc/initialdata:240 +msgid "Default transaction template" +msgstr "预设更动模æ¿" + +#: lib/RT/Transaction_Overlay.pm:643 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "预设:%1/%2 已自 %3 改为 %4" + +#: html/User/Delegation.html:24 html/User/Delegation.html:27 +msgid "Delegate rights" +msgstr "代表团æƒé™" + +#: lib/RT/System.pm:62 +msgid "Delegate specific rights which have been granted to you." +msgstr "将拥有的æƒé™å§”托他人代ç†" + +#: lib/RT/System.pm:62 +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 "代ç†è¡¨å•ç§ç±»" + +#: html/Edit/Users/index.html:125 html/Work/Delegates/Info:31 html/Work/Delegates/List:8 html/Work/Elements/Tab:39 html/Work/Overview/Info:28 +msgid "Delegates" +msgstr "代ç†äºº" + +#: NOT FOUND IN SOURCE +msgid "Delegates Enabled Status" +msgstr "ä»£ç†æ¿€æ´»çжæ€" + +#: html/Work/Delegates/Info:18 html/Work/Overview/Info:18 +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 "代ç†äººè®¾å®š" + +#: html/Work/Delegates/Info:46 html/Work/Delegates/List:11 html/Work/Overview/Info:39 +msgid "Delegates Status" +msgstr "代ç†çжæ€" + +#: html/User/Elements/Tabs:37 +msgid "Delegation" +msgstr "代ç†äººæƒé™" + +#: NOT FOUND IN SOURCE +msgid "Delegation Groups" +msgstr "代ç†äººç¾¤ç»„" + +#: NOT FOUND IN SOURCE +msgid "Delegation Rights" +msgstr "代ç†äººæƒé™" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:113 html/Edit/Elements/104Buttons:73 html/Work/Search/index.html:48 html/Work/Search/index.html:48 +msgid "Delete" +msgstr "åˆ é™¤" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Delete tickets" +msgstr "åˆ é™¤ç”³è¯·å•" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "DeleteTicket" +msgstr "åˆ é™¤ç”³è¯·å•" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "åˆ é™¤æ¤å¯¹è±¡å¯èƒ½ç ´åå‚考完整性" + +#: lib/RT/Queue_Overlay.pm:293 +msgid "Deleting this object would break referential integrity" +msgstr "åˆ é™¤æ¤å¯¹è±¡å¯èƒ½ç ´åå‚考完整性" + +#: lib/RT/User_Overlay.pm:497 +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:44 html/Work/Approvals/Elements/Approve:32 +msgid "Deny" +msgstr "驳回" + +#: NOT FOUND IN SOURCE +msgid "Department" +msgstr "部门" + +#: html/Edit/Global/UserRight/List:12 html/Edit/Global/UserRight/Top:13 html/Edit/Users/List:10 html/Edit/Users/Top:12 +msgid "Department ID" +msgstr "部门代ç " + +#: html/Edit/Global/UserRight/List:11 html/Edit/Global/UserRight/Top:49 html/Edit/Users/List:9 html/Edit/Users/Top:48 html/Work/Delegates/Info:78 html/Work/Overview/Info:60 +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/Ticket/Create.html:180 html/Ticket/Elements/BulkLinks:34 html/Ticket/Elements/EditLinks:122 html/Ticket/Elements/EditLinks:46 html/Ticket/Elements/ShowDependencies:31 html/Ticket/Elements/ShowLinks:36 html/Work/Search/BulkLinks:10 +msgid "Depended on by" +msgstr "坿ޥç»å¤„ç†çš„申请å•" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "附属性:\\n" + +#: html/Elements/SelectLinkType:26 html/Ticket/Create.html:179 html/Ticket/Elements/BulkLinks:30 html/Ticket/Elements/EditLinks:118 html/Ticket/Elements/EditLinks:35 html/Ticket/Elements/ShowDependencies:24 html/Ticket/Elements/ShowLinks:26 html/Work/Search/BulkLinks:6 +msgid "Depends on" +msgstr "需先处ç†" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "需先处ç†" + +#: html/Elements/SelectSortOrder:34 +msgid "Descending" +msgstr "递å‡" + +#: html/SelfService/Create.html:72 html/Ticket/Create.html:118 +msgid "Describe the issue below" +msgstr "åœ¨ä»¥ä¸‹å—æ®µæè¿°ä¸»é¢˜" + +#: html/Admin/Elements/AddCustomFieldValue:35 html/Admin/Elements/EditCustomField:38 html/Admin/Elements/EditScrip:33 html/Admin/Elements/ModifyQueue:35 html/Admin/Elements/ModifyTemplate:35 html/Admin/Elements/ModifyTemplateAsWorkflow:192 html/Admin/Groups/Modify.html:48 html/Admin/Queues/Modify.html:47 html/Edit/Global/Workflow/Action:14 html/Elements/SelectGroups:26 html/User/Groups/Modify.html:48 html/Work/Preferences/Info:98 +msgid "Description" +msgstr "æè¿°" + +#: NOT FOUND IN SOURCE +msgid "Description of Responsibility" +msgstr "ç»åŠžä¸šåŠ¡è¯´æ˜Ž" + +#: NOT FOUND IN SOURCE +msgid "Description:" +msgstr "æè¿°ï¼š" + +#: html/Work/Tickets/Create.html:108 html/Work/Tickets/Elements/EditCustomFields:39 html/Work/Tickets/Elements/ShowCustomFields:41 +msgid "Details" +msgstr "细节" + +#: NOT FOUND IN SOURCE +msgid "Direct" +msgstr "直接" + +#: html/Edit/Users/Info:31 +msgid "Disability" +msgstr "残障身分" + +#: html/Edit/Users/Info:29 +msgid "Disability Type" +msgstr "残障类别" + +#: html/Edit/Global/GroupRight/List:9 html/Edit/Global/GroupRight/Top:16 html/Edit/Groups/List:11 html/Edit/Groups/Top:19 html/Edit/Queues/Basic/Top:70 html/Edit/Queues/List:13 html/Work/Delegates/Info:48 html/Work/Delegates/Info:53 html/Work/Delegates/List:12 html/Work/Overview/Info:42 +msgid "Disabled" +msgstr "åœç”¨" + +#: html/Ticket/Elements/Tabs:84 +msgid "Display" +msgstr "显示内容" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "Display Access Control List" +msgstr "显示æƒé™æŽ§åˆ¶æ¸…å•" + +#: lib/RT/Queue_Overlay.pm:74 +msgid "Display Scrip templates for this queue" +msgstr "显示æ¤è¡¨å•的模æ¿" + +#: lib/RT/Queue_Overlay.pm:77 +msgid "Display Scrips for this queue" +msgstr "显示æ¤è¡¨å•的手ç»" + +#: html/Ticket/Elements/ShowHistory:34 +msgid "Display mode" +msgstr "显示模å¼" + +#: NOT FOUND IN SOURCE +msgid "Display ticket #%1" +msgstr "显示第%1å·ç”³è¯·å•" + +#: lib/RT/System.pm:53 +msgid "Do anything and everything" +msgstr "å…许一切æ“作" + +#: html/Elements/Refresh:29 +msgid "Don't refresh this page." +msgstr "䏿›´æ–°æ¤é¡µé¢ã€‚" + +#: html/Search/Elements/PickRestriction:113 html/Work/Search/PickRestriction:95 +msgid "Don't show search results" +msgstr "䏿˜¾ç¤ºæŸ¥è¯¢ç»“æžœ" + +#: html/Edit/Elements/Page:19 html/Edit/Elements/Page:21 +msgid "Down" +msgstr "下一页" + +#: html/Ticket/Elements/ShowTransaction:92 +msgid "Download" +msgstr "下载" + +#: NOT FOUND IN SOURCE +msgid "Dr." +msgstr "åšå£«" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:44 html/Ticket/Elements/ShowDates:42 lib/RT/Ticket_Overlay.pm:1179 +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'" + +#: bin/rt-commit-handler:753 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "æ— æ³•åŠ è½½ç”³è¯·å• '%1':%2.\\n" + +#: html/Work/Tickets/Update.html:46 +msgid "Edit" +msgstr "编辑" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:132 +msgid "Edit Conditions" +msgstr "编辑å‰ç½®æ¡ä»¶" + +#: html/Admin/Queues/CustomFields.html:44 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "编辑 %1 çš„è‡ªè®¢å—æ®µ" + +#: NOT FOUND IN SOURCE +msgid "Edit Custom Fields for queue %1" +msgstr "ç¼–è¾‘è¡¨å• %1 çš„è‡ªè®¢å—æ®µ" + +#: html/Search/Bulk.html:143 html/Ticket/ModifyLinks.html:35 html/Work/Search/Bulk.html:93 +msgid "Edit Relationships" +msgstr "编辑申请å•关系" + +#: html/Edit/Groups/MemberGroups/Add.html:3 html/Edit/Groups/MemberGroups/index.html:22 +msgid "Edit Subgroups" +msgstr "新增/维护å群组" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "ç¼–è¾‘è¡¨å• %1 的模æ¿" + +#: html/Admin/Queues/Workflows.html:42 +#. ($QueueObj->Name) +msgid "Edit Workflows for queue %1" +msgstr "ç¼–è¾‘è¡¨å• %1 çš„æµç¨‹" + +#: NOT FOUND IN SOURCE +msgid "Edit keywords" +msgstr "编辑关键è¯" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "编辑手ç»" + +#: html/Admin/Global/index.html:45 +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 çš„æµç¨‹" + +#: html/Admin/Elements/ModifyQueue:24 html/Admin/Queues/Modify.html:118 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "ç¼–è¾‘è¡¨å• %1 的设定" + +#: html/Admin/Elements/ModifyUser:24 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "编辑使用者 %1 的设定" + +#: html/Admin/Elements/EditCustomField:90 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "ç¼–è¾‘è‡ªè®¢å—æ®µ %1" + +#: html/Admin/Groups/Members.html:31 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "编辑群组 %1 çš„æˆå‘˜ä¿¡æ¯" + +#: html/User/Groups/Members.html:128 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "编辑代ç†äººç¾¤ç»„ %1 çš„æˆå‘˜ä¿¡æ¯" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "ç¼–è¾‘æ¨¡æ¿ %1" + +#: html/Admin/Elements/ModifyWorkflow:238 +#. (loc( $WorkflowObj->Name() )) +msgid "Editing workflow %1" +msgstr "编辑æµç¨‹ %1" + +#: NOT FOUND IN SOURCE +msgid "Education" +msgstr "最高å¦åކ" + +#: NOT FOUND IN SOURCE +msgid "EffectiveId" +msgstr "有效编å·" + +#: lib/RT/Ticket_Overlay.pm:2644 lib/RT/Ticket_Overlay.pm:2712 +msgid "Either base or target must be specified" +msgstr "éœ€è¦æŒ‡å®šèµ·å§‹ç”³è¯·å•或目的申请å•" + +#: html/Admin/Users/Modify.html:52 html/Admin/Users/Prefs.html:45 html/Elements/SelectUsers:26 html/Ticket/Elements/AddWatchers:55 html/User/Prefs.html:41 html/Work/Delegates/Info:96 html/Work/Overview/Info:78 html/Work/Preferences/Info:16 +msgid "Email" +msgstr "电å邮件信箱" + +#: lib/RT/User_Overlay.pm:247 +msgid "Email address in use" +msgstr "æ¤ç”µå邮件信箱已被使用" + +#: html/Admin/Elements/ModifyUser:41 +msgid "EmailAddress" +msgstr "电å邮件信箱地å€" + +#: html/Admin/Elements/ModifyUser:53 +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/Elements/EditCustomField:50 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "å¯ç”¨(å–æ¶ˆå‹¾é€‰å°†åœç”¨æ¤è‡ªè®¢å—段)" + +#: html/Admin/Groups/Modify.html:52 html/User/Groups/Modify.html:52 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "å¯ç”¨(å–æ¶ˆå‹¾é€‰å°†åœç”¨æ¤ç¾¤ç»„)" + +#: html/Admin/Queues/Modify.html:83 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "å¯ç”¨(å–æ¶ˆå‹¾é€‰å°†åœç”¨æ¤è¡¨å•)" + +#: html/Admin/Elements/EditCustomFields:98 +msgid "Enabled Custom Fields" +msgstr "å·²å¯ç”¨çš„è‡ªè®¢å—æ®µ" + +#: html/Edit/Queues/Basic/Top:75 html/Edit/Queues/List:15 +msgid "Enabled Date" +msgstr "å¯ç”¨æ—¥æœŸ" + +#: NOT FOUND IN SOURCE +msgid "Enabled Date:" +msgstr "激活日期:" + +#: html/Admin/Queues/index.html:55 +msgid "Enabled Queues" +msgstr "å·²å¯ç”¨çš„表å•" + +#: html/Edit/Queues/Basic/Top:66 html/Edit/Queues/List:11 +msgid "Enabled Status" +msgstr "å¯ç”¨çжæ€" + +#: html/Admin/Elements/EditCustomField:106 html/Admin/Groups/Modify.html:116 html/Admin/Queues/Modify.html:140 html/Admin/Users/Modify.html:282 html/User/Groups/Modify.html:116 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "å¯ç”¨çŠ¶æ€ %1" + +#: html/Edit/Users/Info:35 +msgid "End of Trial" +msgstr "试用期满日" + +#: NOT FOUND IN SOURCE +msgid "English Name" +msgstr "英文姓å" + +#: lib/RT/CustomField_Overlay.pm:427 +msgid "Enter multiple values" +msgstr "键入多é‡é¡¹ç›®" + +#: html/Edit/Users/Search.html:15 +msgid "Enter one or more conditions below to search for users" +msgstr "输入下列å•一或å¤å¼æ¡ä»¶ï¼ŒæŸ¥è¯¢ç”¨æˆ·æ•°æ®" + +#: lib/RT/CustomField_Overlay.pm:424 +msgid "Enter one value" +msgstr "键入å•一项目" + +#: html/Search/Bulk.html:144 html/Ticket/Elements/EditLinks:111 html/Work/Search/Bulk.html:95 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "输入申请å•å¯é“¾æŽ¥åˆ°çš„申请å•ç¼–å·æˆ–网å€ã€‚以空白隔开。" + +#: lib/RT/CustomField_Vendor.pm:20 +msgid "EntryBoolean" +msgstr "是éžå¡«è¡¨" + +#: lib/RT/CustomField_Vendor.pm:17 +msgid "EntryDate" +msgstr "日期填表" + +#: NOT FOUND IN SOURCE +msgid "EntryExternal" +msgstr "系统填表" + +#: lib/RT/CustomField_Vendor.pm:16 +msgid "EntryFreeform" +msgstr "输入填表" + +#: NOT FOUND IN SOURCE +msgid "EntryMultiple" +msgstr "多选填表" + +#: lib/RT/CustomField_Vendor.pm:19 +msgid "EntryNumber" +msgstr "数值填表" + +#: lib/RT/CustomField_Vendor.pm:15 +msgid "EntrySelect" +msgstr "å•选填表" + +#: lib/RT/CustomField_Vendor.pm:18 +msgid "EntryTime" +msgstr "时间填表" + +#: html/Elements/Login:39 html/SelfService/Error.html:24 html/SelfService/Error.html:25 +msgid "Error" +msgstr "错误" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "新增视察员失败" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "表å•->æ–°å¢žè§†å¯Ÿå‘˜çš„å‚æ•°æœ‰è¯¯" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "表å•->åˆ é™¤è§†å¯Ÿå‘˜çš„å‚æ•°æœ‰è¯¯" + +#: lib/RT/Ticket_Overlay.pm:1364 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "申请å•->æ–°å¢žè§†å¯Ÿå‘˜çš„å‚æ•°æœ‰è¯¯" + +#: lib/RT/Ticket_Overlay.pm:1540 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "申请å•->åˆ é™¤è§†å¯Ÿå‘˜çš„å‚æ•°æœ‰è¯¯" + +#: etc/initialdata:38 +msgid "Everyone" +msgstr "所有人" + +#: bin/rt-crontool:193 +msgid "Example:" +msgstr "范例:" + +#: html/Edit/Elements/104Buttons:77 +msgid "Export" +msgstr "汇出" + +#: html/Admin/Elements/ModifyUser:63 +msgid "ExternalAuthId" +msgstr "外部认è¯å¸å·" + +#: html/Admin/Elements/ModifyUser:57 +msgid "ExternalContactInfoId" +msgstr "外部è”络方å¼å¸å·" + +#: html/Edit/Global/Basic/Top:64 +msgid "ExternalDatabaseDSN" +msgstr "外部数æ®åº“连结å—符串" + +#: html/Edit/Global/Basic/Top:68 +msgid "ExternalDatabasePass" +msgstr "外部数æ®åº“å£ä»¤" + +#: html/Edit/Global/Basic/Top:66 +msgid "ExternalDatabaseUser" +msgstr "外部数æ®åº“用户" + +#: html/Edit/Global/Basic/Top:62 +msgid "ExternalURL" +msgstr "外部接å£ç½‘å€" + +#: html/Admin/Users/Modify.html:72 +msgid "Extra info" +msgstr "备注" + +#: lib/RT/User_Overlay.pm:361 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "找ä¸åˆ°ã€Œå†…部æˆå‘˜ã€è™šæ‹Ÿç¾¤ç»„的使用者。" + +#: lib/RT/User_Overlay.pm:368 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "找ä¸åˆ°ã€Œéžå†…部æˆå‘˜ã€è™šæ‹Ÿç¾¤ç»„的使用者。" + +#: bin/rt-crontool:137 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "æ— æ³•åŠ è½½æ¨¡å— %1. (%2)" + +#: NOT FOUND IN SOURCE +msgid "Feb" +msgstr "二月" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "02" + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "二月" + +#: NOT FOUND IN SOURCE +msgid "Female" +msgstr "女" + +#: html/Edit/Global/CustomField/List:5 html/Edit/Global/CustomField/Top:9 +msgid "Field Attribute" +msgstr "å—æ®µå±žæ€§" + +#: html/Edit/Global/CustomField/Info:14 +msgid "Field Content:" +msgstr "å—æ®µå†…容:" + +#: html/Edit/Global/CustomField/List:7 html/Edit/Global/CustomField/Top:21 +msgid "Field Description" +msgstr "å—æ®µæè¿°" + +#: html/Edit/Global/CustomField/List:6 html/Edit/Global/CustomField/Top:15 +msgid "Field Name" +msgstr "å—æ®µåç§°" + +#: html/Edit/Elements/PickUsers:52 html/Edit/Users/Add.html:47 +msgid "Filter" +msgstr "ç›é€‰" + +#: html/Edit/Elements/PickUsers:6 html/Edit/Users/Add.html:7 html/Work/Tickets/Cc:4 +msgid "Filter people" +msgstr "对象ç›é€‰" + +#: html/Edit/Elements/PickUsers:68 html/Edit/Users/Add.html:63 html/Work/Tickets/Cc:42 +msgid "Filtered list:" +msgstr "ç›é€‰åˆ—表:" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "最终" + +#: html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:58 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "最低顺ä½" + +#: lib/RT/Ticket_Overlay.pm:1170 +msgid "FinalPriority" +msgstr "最低顺ä½" + +#: NOT FOUND IN SOURCE +msgid "Financial Department:" +msgstr "财务部:" + +#: html/Admin/Queues/People.html:60 html/Ticket/Elements/EditPeople:33 +msgid "Find group whose" +msgstr "寻找群组的" + +#: NOT FOUND IN SOURCE +msgid "Find new/open tickets" +msgstr "寻找/å¼€å¯ç”³è¯·å•" + +#: html/Admin/Queues/People.html:56 html/Admin/Users/index.html:45 html/Ticket/Elements/EditPeople:29 +msgid "Find people whose" +msgstr "寻找人员的" + +#: html/Search/Listing.html:107 html/Work/Search/index.html:88 +msgid "Find tickets" +msgstr "寻找申请å•" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:118 +msgid "Finish Approval" +msgstr "ç¾æ ¸å®Œæ¯•" + +#: html/Ticket/Elements/Tabs:57 +msgid "First" +msgstr "第一项" + +#: html/Search/Listing.html:40 html/Work/Search/index.html:17 +msgid "First page" +msgstr "第一页" + +#: html/Edit/Global/Workflow/Owner.html:30 +msgid "First-" +msgstr "一" + +#: NOT FOUND IN SOURCE +msgid "First-level Admins" +msgstr "一阶主管" + +#: html/Edit/Users/Info:40 +msgid "First-level Users" +msgstr "一阶主管员工" + +#: NOT FOUND IN SOURCE +msgid "Fixed shift" +msgstr "固定ç" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "甲 ä¹™ 丙" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "甲ï¼" + +#: html/Search/Bulk.html:86 html/Work/Search/Bulk.html:55 +msgid "Force change" +msgstr "强制更新" + +#: html/Work/Elements/104Header:89 +msgid "Form Processing" +msgstr "电å表å•作业区" + +#: html/Search/Listing.html:105 html/Work/Search/index.html:86 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "找到 %1 å¼ ç”³è¯·å•" + +#: lib/RT/Interface/Web.pm:904 +msgid "Found Object" +msgstr "已找到对象" + +#: html/Edit/Global/Workflow/Owner.html:33 +msgid "Fourth-" +msgstr "å››" + +#: html/Admin/Elements/ModifyUser:43 +msgid "FreeformContactInfo" +msgstr "è”络方å¼" + +#: lib/RT/CustomField_Vendor.pm:11 +msgid "FreeformDate" +msgstr "日期输入" + +#: NOT FOUND IN SOURCE +msgid "FreeformExternal" +msgstr "ç³»ç»Ÿå—æ®µ" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformMultiple" +msgstr "多é‡è¾“å…¥" + +#: lib/RT/CustomField_Vendor.pm:13 +msgid "FreeformNumber" +msgstr "数值输入" + +#: lib/RT/CustomField_Vendor.pm:14 +msgid "FreeformPassword" +msgstr "å£ä»¤è¾“å…¥" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "FreeformSingle" +msgstr "å•一输入" + +#: lib/RT/CustomField_Vendor.pm:12 +msgid "FreeformTime" +msgstr "时间输入" + +#: NOT FOUND IN SOURCE +msgid "Fri" +msgstr "星期五" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "星期五" + +#: html/Ticket/Elements/ShowHistory:40 html/Ticket/Elements/ShowHistory:50 +msgid "Full headers" +msgstr "å®Œæ•´æ ‡å¤´æ¡£" + +#: NOT FOUND IN SOURCE +msgid "Gecos" +msgstr "登入å¸å·" + +#: html/Edit/Users/Info:26 +msgid "Gender" +msgstr "性别" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "å–å¾—ç›®å‰ä½¿ç”¨è€…çš„ pgp ç¾ç« \\n" + +#: lib/RT/Transaction_Overlay.pm:593 +#. ($New->Name) +msgid "Given to %1" +msgstr "交予 %1" + +#: html/Admin/Elements/Tabs:40 html/Admin/index.html:37 +msgid "Global" +msgstr "全域设定" + +#: NOT FOUND IN SOURCE +msgid "Global Keyword Selections" +msgstr "全域关键è¯é€‰å–" + +#: html/Edit/Users/System:24 +msgid "Global Rights:" +msgstr "拥有全域æƒé™åˆ—表:" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "全域手ç»" + +#: html/Edit/Elements/Tab:38 +msgid "Global Setup" +msgstr "全域设定" + +#: html/Admin/Elements/SelectTemplate:37 html/Edit/Elements/SelectTemplate:11 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "全域模æ¿ï¼š%1" + +#: html/Admin/Elements/EditCustomFields:74 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:40 +msgid "Go!" +msgstr "执行" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "%1 çš„ pgp ç¾ç« 是æ£ç¡®çš„\\n" + +#: html/Search/Listing.html:49 +msgid "Goto page" +msgstr "到页é¢" + +#: html/Elements/GotoTicket:24 html/SelfService/Elements/GotoTicket:24 html/Work/Elements/104Header:49 +msgid "Goto ticket" +msgstr "跳到申请å•" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:224 +msgid "Grand" +msgstr "上" + +#: html/Ticket/Elements/AddWatchers:45 html/User/Elements/DelegateRights:77 +msgid "Group" +msgstr "群组" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "群组 %1 %2:%3" + +#: html/Edit/Global/GroupRight/List:5 html/Edit/Global/GroupRight/Top:20 html/Edit/Groups/List:7 +msgid "Group Description" +msgstr "群组æè¿°" + +#: NOT FOUND IN SOURCE +msgid "Group Management" +msgstr "群组管ç†" + +#: NOT FOUND IN SOURCE +msgid "Group Members" +msgstr "群组æˆå‘˜" + +#: html/Edit/Elements/PickUsers:28 html/Edit/Global/GroupRight/List:4 html/Edit/Global/GroupRight/Top:10 html/Edit/Groups/List:6 html/Edit/Groups/Top:7 html/Edit/Users/Add.html:29 html/Edit/Users/Group:10 html/Edit/Users/Search.html:43 html/Work/Delegates/Add.html:15 html/Work/Tickets/Cc:24 +msgid "Group Name" +msgstr "群组åç§°" + +#: NOT FOUND IN SOURCE +msgid "Group Name:" +msgstr "群组å称:" + +#: html/Admin/Elements/GroupTabs:44 html/Admin/Elements/QueueTabs:56 html/Admin/Elements/SystemTabs:43 html/Admin/Global/index.html:54 html/Edit/Global/autohandler:12 html/Edit/Queues/autohandler:23 html/Edit/Users/Group:11 html/Edit/Users/index.html:123 +msgid "Group Rights" +msgstr "群组æƒé™" + +#: NOT FOUND IN SOURCE +msgid "Group Rights:" +msgstr "拥有群组æƒé™åˆ—表:" + +#: html/Edit/Elements/Tab:34 +msgid "Group Setup" +msgstr "群组设定" + +#: html/Edit/Global/GroupRight/List:8 html/Edit/Global/GroupRight/Top:14 html/Edit/Groups/List:10 html/Edit/Groups/Top:15 +msgid "Group Status" +msgstr "群组状æ€" + +#: lib/RT/Group_Overlay.pm:964 +msgid "Group already has member" +msgstr "ç¾¤ç»„å†…å·²æœ‰æ¤æˆå‘˜" + +#: NOT FOUND IN SOURCE +msgid "Group could not be created." +msgstr "æ— æ³•æ–°å¢žç¾¤ç»„" + +#: html/Admin/Groups/Modify.html:76 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "æ— æ³•æ–°å¢žç¾¤ç»„ï¼š%1" + +#: lib/RT/Group_Overlay.pm:496 +msgid "Group created" +msgstr "群组新增完毕" + +#: lib/RT/Group_Overlay.pm:1132 +msgid "Group has no such member" +msgstr "群组没有这个æˆå‘˜" + +#: lib/RT/Group_Overlay.pm:944 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1437 lib/RT/Ticket_Overlay.pm:1515 +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 with Queue Rights" +msgstr "æ‹¥æœ‰è¡¨å•æƒé™ç¾¤ç»„" + +#: html/Edit/Global/Workflow/Owner.html:70 +msgid "Group's" +msgstr "群组之" + +#: NOT FOUND IN SOURCE +msgid "Group:" +msgstr "群组:" + +#: 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/Edit/Global/GroupRight/Add.html:15 html/User/Groups/Members.html:66 +msgid "Groups" +msgstr "群组" + +#: lib/RT/Group_Overlay.pm:970 +msgid "Groups can't be members of their members" +msgstr "ä¸èƒ½å°†ç¾¤ç»„设为群组内æˆå‘˜" + +#: NOT FOUND IN SOURCE +msgid "Groups with Global Rights" +msgstr "拥有全域æƒé™ç¾¤ç»„" + +#: html/Edit/Global/GroupRight/List:6 html/Edit/Global/GroupRight/Top:22 html/Edit/Groups/List:8 +msgid "HRMSDefined" +msgstr "组织架构" + +#: html/Edit/Users/Info:32 +msgid "Health Insurance" +msgstr "å¥ä¿è¡¥åŠ©èº«ä»½" + +#: lib/RT/Interface/CLI.pm:72 lib/RT/Interface/CLI.pm:72 +msgid "Hello!" +msgstr "å—¨ï¼" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "嗨,%1" + +#: html/Edit/Elements/104Top:27 +msgid "Help" +msgstr "辅助说明" + +#: NOT FOUND IN SOURCE +msgid "Help Desks" +msgstr "å„项业务窗å£" + +#: html/Ticket/Elements/ShowHistory:29 html/Ticket/Elements/Tabs:87 html/Work/Tickets/Elements/ShowHistory:8 +msgid "History" +msgstr "纪录" + +#: html/Admin/Elements/ModifyUser:67 +msgid "HomePhone" +msgstr "ä½å¤„电è¯" + +#: html/Edit/Elements/104Top:15 html/Edit/Elements/104Top:23 html/Edit/Elements/EDOMHeader:9 html/Elements/Tabs:43 +msgid "Homepage" +msgstr "主页" + +#: NOT FOUND IN SOURCE +msgid "Hotel Expense" +msgstr "ä½å®¿è´¹" + +#: lib/RT/Base.pm:73 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "我有 %quant(%1,ä»½å›ºä½“æ…æ‹Œå™¨)。" + +#: NOT FOUND IN SOURCE +msgid "ID Number" +msgstr "身分è¯å·" + +#: NOT FOUND IN SOURCE +msgid "ID Type" +msgstr "身分类别" + +#: html/Ticket/Elements/ShowBasics:26 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "ç¼–å·" + +#: html/Admin/Users/Modify.html:43 html/User/Prefs.html:38 html/Work/Preferences/Info:14 +msgid "Identity" +msgstr "身份" + +#: etc/initialdata:439 etc/upgrade/2.1.71:86 html/Edit/Elements/CreateApprovalsQueue:58 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "è‹¥ç¾æ ¸å•é到驳回,则连带驳回原申请å•ï¼Œå¹¶åˆ é™¤å…¶å®ƒç›¸å…³çš„å¾…ç¾æ ¸äº‹é¡¹" + +#: bin/rt-crontool:189 +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: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 "若您已更新以上数æ®ï¼Œè¯·è®°å¾—按一下" + +#: lib/RT/Interface/Web.pm:896 +msgid "Illegal value for %1" +msgstr "%1 的值错误" + +#: lib/RT/Interface/Web.pm:899 +msgid "Immutable field" +msgstr "æ¤å—段值ä¸å¯æ›´åЍ" + +#: html/Edit/Elements/104Buttons:76 html/Edit/Global/Workflow/Import.html:2 +msgid "Import" +msgstr "汇入" + +#: html/Admin/Elements/EditCustomFields:73 +msgid "Include disabled custom fields in listing." +msgstr "列出åœç”¨çš„è‡ªè®¢å—æ®µ" + +#: html/Admin/Queues/index.html:42 html/Edit/Queues/index.html:38 +msgid "Include disabled queues in listing." +msgstr "列出åœç”¨çš„表å•" + +#: html/Admin/Users/index.html:46 html/Edit/Users/Search.html:62 +msgid "Include disabled users in search." +msgstr "列出åœç”¨çš„使用者" + +#: html/Edit/Users/Info:37 +msgid "Indirect Employee" +msgstr "直接/间接员工" + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "åˆå§‹ä¼˜å…ˆæƒ" + +#: lib/RT/Ticket_Overlay.pm:1169 lib/RT/Ticket_Overlay.pm:1171 +msgid "InitialPriority" +msgstr "åˆå§‹ä¼˜å…ˆæƒ" + +#: lib/RT/ScripAction_Overlay.pm:104 +msgid "Input error" +msgstr "输入错误" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "登记æˆåŠŸ" + +#: lib/RT/Ticket_Overlay.pm:3835 +msgid "Internal Error" +msgstr "内部错误" + +#: lib/RT/Record.pm:142 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "内部错误:%1" + +#: lib/RT/Group_Overlay.pm:643 +msgid "Invalid Group Type" +msgstr "错误的群组类别" + +#: lib/RT/Principal_Overlay.pm:126 +msgid "Invalid Right" +msgstr "错误的æƒé™" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "错误的类型" + +#: lib/RT/Interface/Web.pm:901 +msgid "Invalid data" +msgstr "错误的数æ®" + +#: lib/RT/Ticket_Overlay.pm:439 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "错误的承办人。改为预设承办人「nobodyã€ã€‚" + +#: lib/RT/Scrip_Overlay.pm:133 lib/RT/Template_Overlay.pm:250 +msgid "Invalid queue" +msgstr "错误的表å•" + +#: 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 "错误的æƒé™" + +#: lib/RT/Record.pm:117 +#. ($key) +msgid "Invalid value for %1" +msgstr "%1 的值错误" + +#: lib/RT/Ticket_Overlay.pm:3470 +msgid "Invalid value for custom field" +msgstr "é”™è¯¯çš„è‡ªè®¢å—æ®µå€¼" + +#: lib/RT/Ticket_Overlay.pm:346 +msgid "Invalid value for status" +msgstr "错误的状æ€å€¼" + +#: NOT FOUND IN SOURCE +msgid "IssueStatement" +msgstr "é€å‡ºé™ˆè¿°" + +#: bin/rt-crontool:190 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "请ç»å¯¹ä¸è¦è®©æœªå…·æƒé™çš„使用者执行æ¤å·¥å…·ç¨‹åºã€‚" + +#: bin/rt-crontool:191 +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:162 +msgid "It takes several arguments:" +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:411 +msgid "Jan." +msgstr "01" + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "一月" + +#: NOT FOUND IN SOURCE +msgid "Job" +msgstr "èŒç§°" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Join or leave this group" +msgstr "åŠ å…¥æˆ–ç¦»å¼€æ¤ç¾¤ç»„" + +#: NOT FOUND IN SOURCE +msgid "Jul" +msgstr "七月" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "01" + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "七月" + +#: html/Ticket/Elements/Tabs:98 +msgid "Jumbo" +msgstr "全部信æ¯" + +#: NOT FOUND IN SOURCE +msgid "Jun" +msgstr "å…æœˆ" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "06." + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "å…æœˆ" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "关键è¯" + +#: lib/RT/CustomField_Vendor.pm:21 +msgid "LabelURL" +msgstr "é“¾æŽ¥å·æ ‡" + +#: html/Admin/Elements/ModifyUser:51 +msgid "Lang" +msgstr "使用è¯è¨€" + +#: html/Ticket/Elements/Tabs:72 +msgid "Last" +msgstr "上次更新" + +#: html/Ticket/Elements/EditDates:37 html/Ticket/Elements/ShowDates:38 +msgid "Last Contact" +msgstr "上次è”络" + +#: html/Elements/SelectDateType:28 +msgid "Last Contacted" +msgstr "上次è”络日期" + +#: html/Search/Elements/TicketHeader:40 html/Work/Search/TicketHeader:19 +msgid "Last Notified" +msgstr "上次通知" + +#: html/Elements/SelectDateType:29 +msgid "Last Updated" +msgstr "上次更新" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "上次更新" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "剩馀时间" + +#: html/Admin/Users/Modify.html:82 +msgid "Let this user access RT" +msgstr "å…许这å使用者登入" + +#: html/Admin/Users/Modify.html:86 +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/Work/Queues/Select.html:4 +msgid "Link a Queue" +msgstr "申请表å•连结" + +#: lib/RT/Ticket_Overlay.pm:2726 +msgid "Link already exists" +msgstr "æ¤é“¾æŽ¥å·²å˜åœ¨" + +#: lib/RT/Ticket_Overlay.pm:2738 +msgid "Link could not be created" +msgstr "æ— æ³•æ–°å¢žé“¾æŽ¥" + +#: lib/RT/Ticket_Overlay.pm:2746 lib/RT/Ticket_Overlay.pm:2756 +#. ($TransString) +msgid "Link created (%1)" +msgstr "链接(%1)新增完毕" + +#: lib/RT/Ticket_Overlay.pm:2667 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "链接(%1)åˆ é™¤å®Œæ¯•" + +#: lib/RT/Ticket_Overlay.pm:2673 +msgid "Link not found" +msgstr "找ä¸åˆ°é“¾æŽ¥" + +#: html/Ticket/ModifyLinks.html:24 html/Ticket/ModifyLinks.html:28 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "é“¾æŽ¥ç”³è¯·å• #%1" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "é“¾æŽ¥ç”³è¯·å• %1" + +#: html/Ticket/Elements/Tabs:96 +msgid "Links" +msgstr "链接" + +#: html/Edit/Users/Search.html:11 +msgid "List All Users" +msgstr "列出所有用户数æ®" + +#: html/Admin/Users/Modify.html:113 html/User/Prefs.html:84 html/Work/Preferences/Info:72 +msgid "Location" +msgstr "ä½ç½®" + +#: lib/RT.pm:162 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "登入目录 %1 找ä¸åˆ°æˆ–æ— æ³•å†™å…¥\\nã€‚æ— æ³•æ‰§è¡Œ RT。" + +#: html/Edit/Global/Basic/Top:52 +msgid "LogToFile" +msgstr "纪录ç‰çº§" + +#: html/Edit/Global/Basic/Top:54 +msgid "LogToFileNamed" +msgstr "纪录档å" + +#: html/Elements/Header:56 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "使用者:%1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:35 html/Elements/Login:44 html/Elements/Login:54 +msgid "Login" +msgstr "登入" + +#: html/Edit/Elements/104Top:17 html/Edit/Elements/104Top:17 html/Edit/Elements/104Top:29 html/Elements/Header:53 +msgid "Logout" +msgstr "注销" + +#: NOT FOUND IN SOURCE +msgid "Long-term contractor" +msgstr "长期契约员工" + +#: html/Search/Bulk.html:85 html/Work/Search/Bulk.html:54 +msgid "Make Owner" +msgstr "新增承办人" + +#: html/Search/Bulk.html:109 html/Work/Search/Bulk.html:63 +msgid "Make Status" +msgstr "新增现况" + +#: html/Search/Bulk.html:117 html/Work/Search/Bulk.html:75 +msgid "Make date Due" +msgstr "新增到期日" + +#: html/Search/Bulk.html:119 html/Work/Search/Bulk.html:78 +msgid "Make date Resolved" +msgstr "新增解决日期" + +#: html/Search/Bulk.html:113 html/Work/Search/Bulk.html:69 +msgid "Make date Started" +msgstr "新增实际起始日期" + +#: html/Search/Bulk.html:111 html/Work/Search/Bulk.html:66 +msgid "Make date Starts" +msgstr "新增应起始日期" + +#: html/Search/Bulk.html:115 html/Work/Search/Bulk.html:72 +msgid "Make date Told" +msgstr "新增报告日期" + +#: html/Search/Bulk.html:105 html/Work/Search/Bulk.html:57 +msgid "Make priority" +msgstr "新增优先顺ä½" + +#: html/Search/Bulk.html:107 html/Work/Search/Bulk.html:60 +msgid "Make queue" +msgstr "新增表å•" + +#: html/Search/Bulk.html:103 html/Work/Search/Bulk.html:59 +msgid "Make subject" +msgstr "新增主题" + +#: NOT FOUND IN SOURCE +msgid "Male" +msgstr "ç”·" + +#: html/Admin/index.html:32 +msgid "Manage groups and group membership" +msgstr "管ç†ç¾¤ç»„åŠæ‰€å±žæˆå‘˜" + +#: html/Admin/index.html:38 +msgid "Manage properties and configuration which apply to all queues" +msgstr "管ç†é€‚用于所有表å•的属性与设定" + +#: html/Admin/index.html:35 +msgid "Manage queues and queue-specific properties" +msgstr "管ç†å„表å•åŠç›¸å…³å±žæ€§" + +#: html/Admin/index.html:29 +msgid "Manage users and passwords" +msgstr "管ç†ä½¿ç”¨è€…与å£ä»¤" + +#: NOT FOUND IN SOURCE +msgid "Manager" +msgstr "ç»ç†" + +#: NOT FOUND IN SOURCE +msgid "Mar" +msgstr "三月" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "03" + +#: NOT FOUND IN SOURCE +msgid "March" +msgstr "三月" + +#: NOT FOUND IN SOURCE +msgid "Marketing Department" +msgstr "行销部" + +#: NOT FOUND IN SOURCE +msgid "May" +msgstr "五月" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "05" + +#: lib/RT/Group_Overlay.pm:981 +msgid "Member added" +msgstr "新增æˆå‘˜å®Œæ¯•" + +#: lib/RT/Group_Overlay.pm:1139 +msgid "Member deleted" +msgstr "æˆå‘˜å·²åˆ 除" + +#: lib/RT/Group_Overlay.pm:1143 +msgid "Member not deleted" +msgstr "æˆå‘˜æœªè¢«åˆ 除" + +#: html/Elements/SelectLinkType:25 +msgid "Member of" +msgstr "隶属于" + +#: html/Work/Preferences/index.html:20 +msgid "Member since" +msgstr "注册日期" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "隶属于" + +#: html/Admin/Elements/GroupTabs:41 html/Admin/Elements/ModifyTemplateAsWorkflow:232 html/User/Elements/GroupTabs:41 +msgid "Members" +msgstr "æˆå‘˜" + +#: lib/RT/Ticket_Overlay.pm:2913 +msgid "Merge Successful" +msgstr "æ•´åˆå®Œæ¯•" + +#: lib/RT/Ticket_Overlay.pm:2833 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "æ•´åˆå¤±è´¥ã€‚æ— æ³•è®¾å®š EffectiveId" + +#: html/Ticket/Elements/BulkLinks:26 html/Ticket/Elements/EditLinks:114 html/Work/Search/BulkLinks:2 +msgid "Merge into" +msgstr "æ•´åˆè¿›" + +#: html/Search/Bulk.html:137 html/Ticket/Update.html:100 +msgid "Message" +msgstr "讯æ¯" + +#: NOT FOUND IN SOURCE +msgid "Misc. Expense" +msgstr "æ‚è´¹" + +#: lib/RT/Interface/Web.pm:903 +msgid "Missing a primary key?: %1" +msgstr "缺少主键值?(%1)" + +#: html/Admin/Users/Modify.html:168 html/User/Prefs.html:53 html/Work/Preferences/Info:33 +msgid "Mobile" +msgstr "行动电è¯" + +#: html/Admin/Elements/ModifyUser:71 +msgid "MobilePhone" +msgstr "行动电è¯" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Modify Access Control List" +msgstr "更改æƒé™æŽ§åˆ¶æ¸…å•" + +#: html/Admin/Global/CustomFields.html:43 html/Admin/Global/index.html:50 +msgid "Modify Custom Fields which apply to all queues" +msgstr "更改适用于所有表å•çš„è‡ªè®¢å—æ®µ" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Modify Scrip templates for this queue" +msgstr "更改æ¤è¡¨å•的模æ¿" + +#: lib/RT/Queue_Overlay.pm:75 +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" + +#: NOT FOUND IN SOURCE +msgid "Modify Workflow" +msgstr "更改æµç¨‹" + +#: html/Admin/Queues/CustomField.html:44 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "更改 %1 表å•å†…çš„è‡ªè®¢å—æ®µ" + +#: html/Admin/Global/CustomField.html:52 +msgid "Modify a CustomField which applies to all queues" +msgstr "更改适用于所有表å•çš„è‡ªè®¢å—æ®µ" + +#: html/Admin/Queues/Scrip.html:53 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "更改 %1 表å•内的手ç»" + +#: html/Admin/Global/Scrip.html:47 +msgid "Modify a scrip which applies to all queues" +msgstr "更改适用于所有表å•的手ç»" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "更改 # %1 的日期" + +#: html/Ticket/ModifyDates.html:24 html/Ticket/ModifyDates.html:28 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "更改 #%1 的日期" + +#: html/Ticket/ModifyDates.html:34 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "æ›´æ”¹ç”³è¯·å• # %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 "更改全域设定的群组æƒé™" + +#: html/Admin/Global/GroupRights.html:32 +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:24 html/Admin/Global/UserRights.html:27 html/Admin/Global/index.html:59 +msgid "Modify global user rights" +msgstr "更改全域设定的使用者æƒé™" + +#: html/Admin/Global/UserRights.html:32 +msgid "Modify global user rights." +msgstr "更改全域设定的使用者æƒé™ã€‚" + +#: lib/RT/Group_Overlay.pm:145 +msgid "Modify group metadata or delete group" +msgstr "更改群组数æ®åŠåˆ 除群组" + +#: 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 "更改 %1 的群组æƒé™" + +#: html/Admin/Queues/GroupRights.html:24 html/Admin/Queues/GroupRights.html:28 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "æ›´æ”¹è¡¨å• %1 的群组æƒé™" + +#: lib/RT/Group_Overlay.pm:147 +msgid "Modify membership roster for this group" +msgstr "更改æ¤ç¾¤ç»„çš„æˆå‘˜åå•" + +#: lib/RT/System.pm:60 +msgid "Modify one's own RT account" +msgstr "更改个人的å¸å·ä¿¡æ¯" + +#: html/Admin/Queues/People.html:24 html/Admin/Queues/People.html:28 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "æ›´æ”¹é“¾æŽ¥åˆ°è¡¨å• %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 "æ›´æ”¹ç”³è¯·å• #%1 链接到的人员" + +#: html/Admin/Queues/Scrips.html:45 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "æ›´æ”¹è¡¨å• %1 的手ç»" + +#: html/Admin/Global/Scrips.html:43 html/Admin/Global/index.html:41 +msgid "Modify scrips which apply to all queues" +msgstr "更改适用于所有表å•的手ç»" + +#: 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 "æ›´æ”¹æ¨¡æ¿ %1" + +#: html/Admin/Global/Templates.html:43 +msgid "Modify templates which apply to all queues" +msgstr "更改适用于所有表å•的模æ¿" + +#: html/Admin/Groups/Modify.html:86 html/User/Groups/Modify.html:85 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "更改群组 %1" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify the queue watchers" +msgstr "更改表å•视察员" + +#: html/Admin/Users/Modify.html:235 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "更改使用者 %1" + +#: html/Ticket/ModifyAll.html:36 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "æ›´æ”¹ç”³è¯·å• # %1" + +#: html/Ticket/Modify.html:24 html/Ticket/Modify.html:27 html/Ticket/Modify.html:33 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "æ›´æ”¹ç”³è¯·å• # %1" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Modify tickets" +msgstr "更改申请å•" + +#: 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 "更改群组 %1 的使用者æƒé™" + +#: html/Admin/Queues/UserRights.html:24 html/Admin/Queues/UserRights.html:28 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "æ›´æ”¹è¡¨å• %1 的使用者æƒé™" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "更改 '%1' 的视察员" + +#: html/Admin/Global/Workflow.html:25 html/Admin/Global/Workflow.html:30 html/Admin/Global/Workflow.html:81 html/Admin/Queues/Workflow.html:77 +#. (loc($WorkflowObj->Name())) +#. ($WorkflowObj->id) +msgid "Modify workflow %1" +msgstr "更改æµç¨‹ %1" + +#: html/Admin/Global/Workflows.html:44 +msgid "Modify workflows which apply to all queues" +msgstr "更改适用于所有表å•çš„æµç¨‹" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ModifyACL" +msgstr "更改æƒé™æ¸…å•" + +#: lib/RT/Group_Overlay.pm:148 +msgid "ModifyOwnMembership" +msgstr "更改自己是å¦å±žäºŽæŸç¾¤ç»„" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyQueueWatchers" +msgstr "更改表å•视察员" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ModifyScrips" +msgstr "更改手ç»" + +#: lib/RT/System.pm:60 +msgid "ModifySelf" +msgstr "更改个人å¸å·" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "ModifyTemplate" +msgstr "更改模æ¿" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "ModifyTicket" +msgstr "更改申请å•" + +#: NOT FOUND IN SOURCE +msgid "Mon" +msgstr "星期一" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "星期一" + +#: html/Ticket/Elements/ShowRequestor:41 +#. ($name) +msgid "More about %1" +msgstr "关于 %1 的进一æ¥ä¿¡æ¯" + +#: NOT FOUND IN SOURCE +msgid "Morning Shift" +msgstr "æ—©ç" + +#: html/Edit/Elements/ListButtons:16 +msgid "Move All" +msgstr "全移" + +#: html/Admin/Elements/EditCustomFields:60 +msgid "Move down" +msgstr "下移" + +#: html/Admin/Elements/EditCustomFields:52 +msgid "Move up" +msgstr "上移" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Multiple" +msgstr "多é‡" + +#: lib/RT/User_Overlay.pm:238 +msgid "Must specify 'Name' attribute" +msgstr "必须指定 'Name' 的属性" + +#: html/SelfService/Elements/MyRequests:48 +#. ($friendly_status) +msgid "My %1 tickets" +msgstr "我的 %1 申请å•" + +#: html/Work/Elements/Tab:35 +msgid "My Approvals" +msgstr "表å•ç¾æ ¸" + +#: html/Work/Elements/Tab:33 +msgid "My Requests" +msgstr "表å•申请追踪" + +#: html/Work/Elements/Tab:37 +msgid "My Tickets" +msgstr "表å•处ç†" + +#: html/Approvals/index.html:24 html/Approvals/index.html:25 +msgid "My approvals" +msgstr "表å•ç¾æ ¸" + +#: html/Admin/Elements/AddCustomFieldValue:31 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/ModifyTemplate:27 html/Admin/Elements/ModifyTemplateAsWorkflow:185 html/Admin/Elements/ModifyUser:29 html/Admin/Groups/Modify.html:43 html/Edit/Users/Add.html:22 html/Edit/Users/Search.html:31 html/Elements/SelectGroups:25 html/Elements/SelectUsers:27 html/User/Groups/Modify.html:43 html/Work/Tickets/Cc:18 +msgid "Name" +msgstr "åç§°" + +#: lib/RT/User_Overlay.pm:245 +msgid "Name in use" +msgstr "å¸å·å·²æœ‰äººä½¿ç”¨" + +#: html/Edit/Users/Info:27 +msgid "Nationality" +msgstr "国ç±" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "需先由系统管ç†å‘˜è¿›è¡Œæ‰¹å‡†" + +#: html/Ticket/Elements/ShowDates:51 +msgid "Never" +msgstr "从未更动" + +#: html/Elements/Quicksearch:29 html/Work/Elements/Quicksearch:15 html/Work/Tickets/Create.html:52 +msgid "New" +msgstr "新建立" + +#: html/Admin/Elements/ModifyUser:31 html/Admin/Users/Modify.html:92 html/User/Prefs.html:64 html/Work/Preferences/Info:44 +msgid "New Password" +msgstr "æ–°çš„å£ä»¤" + +#: etc/initialdata:341 etc/upgrade/2.1.71:16 html/Edit/Elements/CreateApprovalsQueue:21 +msgid "New Pending Approval" +msgstr "æ–°çš„å¾…ç¾æ ¸äº‹é¡¹" + +#: html/Ticket/Elements/EditLinks:110 +msgid "New Relationships" +msgstr "新增关系" + +#: html/Work/Elements/Tab:31 +msgid "New Request" +msgstr "表å•申请" + +#: html/Ticket/Elements/Tabs:35 +msgid "New Search" +msgstr "新增查询" + +#: html/Admin/Global/CustomField.html:40 html/Admin/Global/CustomFields.html:38 html/Admin/Queues/CustomField.html:51 html/Admin/Queues/CustomFields.html:39 +msgid "New custom field" +msgstr "æ–°å¢žè‡ªè®¢å—æ®µ" + +#: html/Admin/Elements/GroupTabs:53 html/User/Elements/GroupTabs:51 +msgid "New group" +msgstr "新增群组" + +#: html/SelfService/Prefs.html:31 +msgid "New password" +msgstr "æ–°çš„å£ä»¤" + +#: lib/RT/User_Overlay.pm:706 +msgid "New password notification sent" +msgstr "é€å‡ºæ–°å£ä»¤é€šçŸ¥" + +#: html/Admin/Elements/QueueTabs:69 +msgid "New queue" +msgstr "新增表å•" + +#: NOT FOUND IN SOURCE +msgid "New request" +msgstr "æå‡ºç”³è¯·å•" + +#: html/Admin/Elements/SelectRights:41 +msgid "New rights" +msgstr "新增æƒé™" + +#: 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 "新增手ç»" + +#: html/Work/Search/index.html:62 +msgid "New search" +msgstr "釿–°æŸ¥è¯¢" + +#: 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 "新增模æ¿" + +#: html/SelfService/Elements/Tabs:47 +msgid "New ticket" +msgstr "æå‡ºç”³è¯·å•" + +#: lib/RT/Ticket_Overlay.pm:2800 +msgid "New ticket doesn't exist" +msgstr "没有新申请å•" + +#: html/Admin/Elements/UserTabs:51 +msgid "New user" +msgstr "新增使用者" + +#: html/Admin/Elements/CreateUserCalled:25 +msgid "New user called" +msgstr "新使用者åå—" + +#: html/Admin/Queues/People.html:54 html/Ticket/Elements/EditPeople:28 +msgid "New watchers" +msgstr "新视察员" + +#: html/Admin/Users/Prefs.html:41 +msgid "New window setting" +msgstr "更新窗å£è®¾å®š" + +#: html/Admin/Global/Workflow.html:60 html/Admin/Global/Workflows.html:39 html/Admin/Queues/Workflow.html:57 html/Admin/Queues/Workflows.html:50 +msgid "New workflow" +msgstr "新增æµç¨‹" + +#: html/Ticket/Elements/Tabs:68 +msgid "Next" +msgstr "下一项" + +#: html/Search/Listing.html:47 html/Work/Search/index.html:24 +msgid "Next page" +msgstr "下一页" + +#: html/Admin/Elements/ModifyUser:49 +msgid "NickName" +msgstr "昵称" + +#: html/Admin/Users/Modify.html:62 html/User/Prefs.html:45 html/Work/Preferences/Info:23 +msgid "Nickname" +msgstr "昵称" + +#: NOT FOUND IN SOURCE +msgid "Night Shift" +msgstr "å°å¤œç" + +#: html/Edit/Global/Basic/Top:27 +msgid "No" +msgstr "å¦" + +#: html/Admin/Elements/EditCustomField:89 html/Admin/Elements/EditCustomFields:104 +msgid "No CustomField" +msgstr "æ— è‡ªè®¢å—æ®µ" + +#: html/Admin/Groups/GroupRights.html:83 html/Admin/Groups/UserRights.html:70 +msgid "No Group defined" +msgstr "尚未定义群组" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:67 +msgid "No Queue defined" +msgstr "没有定义好的表å•" + +#: bin/rt-crontool:55 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "找ä¸åˆ° RT ä½¿ç”¨è€…ã€‚è¯·å‘ RT 管ç†å‘˜æŸ¥è¯¢ã€‚\\n" + +#: html/Admin/Global/Template.html:78 html/Admin/Queues/Template.html:75 +msgid "No Template" +msgstr "没有模æ¿" + +#: bin/rt-commit-handler:763 +msgid "No Ticket specified. Aborting ticket " +msgstr "未指定申请å•ã€‚é€€å‡ºç”³è¯·å• " + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "未指定申请å•ã€‚é€€å‡ºç”³è¯·å•æ›´æ”¹\\n\\n" + +#: html/Admin/Elements/ModifyWorkflow:237 html/Admin/Global/Workflow.html:79 html/Admin/Queues/Workflow.html:75 +msgid "No Workflow" +msgstr "没有æµç¨‹" + +#: html/Approvals/Elements/Approve:45 html/Work/Approvals/Elements/Approve:35 +msgid "No action" +msgstr "æš‚ä¸å¤„ç†" + +#: lib/RT/Interface/Web.pm:898 +msgid "No column specified" +msgstr "æœªæŒ‡å®šå—æ®µ" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "找ä¸åˆ°å‘½ä»¤" + +#: html/Elements/ViewUser:35 html/Ticket/Elements/ShowRequestor:44 +msgid "No comment entered about this user" +msgstr "没有对这å使用者的评论" + +#: lib/RT/Ticket_Overlay.pm:2211 lib/RT/Ticket_Overlay.pm:2279 +msgid "No correspondence attached" +msgstr "没有附上申请å•回å¤" + +#: lib/RT/Action/Generic.pm:149 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 "没有对 %1 çš„æè¿°" + +#: lib/RT/Users_Overlay.pm:150 +msgid "No group specified" +msgstr "未指定群组" + +#: lib/RT/User_Overlay.pm:924 +msgid "No password set" +msgstr "没有设定å£ä»¤" + +#: lib/RT/Queue_Overlay.pm:260 +msgid "No permission to create queues" +msgstr "没有新增表å•çš„æƒé™" + +#: lib/RT/Ticket_Overlay.pm:342 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "æ²¡æœ‰åœ¨è¡¨å• '%1' 新增申请å•çš„æƒé™" + +#: lib/RT/User_Overlay.pm:211 +msgid "No permission to create users" +msgstr "没有新增使用者的æƒé™" + +#: html/SelfService/Display.html:117 +msgid "No permission to display that ticket" +msgstr "没有显示该申请å•çš„æƒé™" + +#: html/SelfService/Update.html:51 +msgid "No permission to view update ticket" +msgstr "æ²¡æœ‰æ£€è§†ç”³è¯·å•æ›´æ–°çš„æƒé™" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1496 +msgid "No principal specified" +msgstr "未指定å•ä½" + +#: html/Admin/Queues/People.html:153 html/Admin/Queues/People.html:163 +msgid "No principals selected." +msgstr "未指定å•ä½ã€‚" + +#: NOT FOUND IN SOURCE +msgid "No protocol specified in %1" +msgstr "%1 内未指定åè®®" + +#: html/Admin/Queues/index.html:34 +msgid "No queues matching search criteria found." +msgstr "找ä¸åˆ°ç¬¦åˆæŸ¥è¯¢æ¡ä»¶çš„表å•。" + +#: html/Admin/Elements/SelectRights:80 +msgid "No rights found" +msgstr "找ä¸åˆ°æƒé™" + +#: html/Admin/Elements/SelectRights:32 +msgid "No rights granted." +msgstr "没有选定æƒé™" + +#: html/Search/Bulk.html:160 html/Work/Search/Bulk.html:117 +msgid "No search to operate on." +msgstr "没有è¦è¿›è¡Œçš„æŸ¥è¯¢" + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "未指定申请å•ç¼–å·" + +#: lib/RT/Transaction_Overlay.pm:478 lib/RT/Transaction_Overlay.pm:516 +msgid "No transaction type specified" +msgstr "未指定更动报告类别" + +#: NOT FOUND IN SOURCE +msgid "No user or email address specified" +msgstr "未指定使用者或电å邮件地å€" + +#: html/Admin/Users/index.html:35 +msgid "No users matching search criteria found." +msgstr "找ä¸åˆ°ç¬¦åˆæŸ¥è¯¢æ¡ä»¶çš„使用者。" + +#: bin/rt-commit-handler:643 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "找ä¸åˆ°åˆæ ¼çš„ RT 使用者。RT cvs 处ç†å™¨å·²åœç”¨ã€‚è¯·å‘ RT 管ç†è€…询问。\\n" + +#: lib/RT/Interface/Web.pm:895 +msgid "No value sent to _Set!\\n" +msgstr "_Set 没有收到任何值!\\n" + +#: html/Search/Elements/TicketRow:36 html/Work/Search/TicketRow:9 +msgid "Nobody" +msgstr "没有人" + +#: lib/RT/Interface/Web.pm:900 +msgid "Nonexistant field?" +msgstr "å—æ®µä¸å˜åœ¨ï¼Ÿ" + +#: NOT FOUND IN SOURCE +msgid "Normal Users" +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:58 +msgid "Not logged in." +msgstr "尚未登入" + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "尚未设定" + +#: html/NoAuth/Reminder.html:26 +msgid "Not yet implemented." +msgstr "尚未完工。" + +#: NOT FOUND IN SOURCE +msgid "Not yet implemented...." +msgstr "尚未完工..." + +#: html/Approvals/Elements/Approve:48 html/Work/Tickets/Create.html:134 +msgid "Notes" +msgstr "备注" + +#: NOT FOUND IN SOURCE +msgid "Notes:" +msgstr "备注:" + +#: lib/RT/User_Overlay.pm:709 +msgid "Notification could not be sent" +msgstr "æ— æ³•é€å‡ºé€šçŸ¥" + +#: etc/initialdata:111 +msgid "Notify AdminCcs" +msgstr "通知管ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:107 +msgid "Notify AdminCcs as Comment" +msgstr "以评论方å¼é€šçŸ¥ç®¡ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:138 +msgid "Notify Other Recipients" +msgstr "通知其它收件人" + +#: etc/initialdata:134 +msgid "Notify Other Recipients as Comment" +msgstr "以评论方å¼é€šçŸ¥å…¶å®ƒæ”¶ä»¶äºº" + +#: etc/initialdata:103 +msgid "Notify Owner" +msgstr "通知承办人" + +#: etc/initialdata:99 +msgid "Notify Owner as Comment" +msgstr "以评论方å¼é€šçŸ¥æ‰¿åŠžäºº" + +#: etc/initialdata:385 +msgid "Notify Owner of their rejected ticket" +msgstr "通知承办人申请å•已驳回" + +#: etc/initialdata:374 +msgid "Notify Owner of their ticket has been approved by all approvers" +msgstr "通知承办人申请å•已完æˆå…¨éƒ¨ç¾æ ¸" + +#: etc/initialdata:359 +msgid "Notify Owner of their ticket has been approved by some approver" +msgstr "通知承办人申请å•å·²å®ŒæˆæŸé¡¹ç¾æ ¸" + +#: etc/initialdata:343 etc/upgrade/2.1.71:17 html/Edit/Elements/CreateApprovalsQueue:22 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "æ•´ç†å¾…ç¾æ ¸äº‹é¡¹ï¼Œé€šçŸ¥æ‰¿åŠžäººåŠç®¡ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:95 +msgid "Notify Requestors" +msgstr "通知申请人" + +#: etc/initialdata:121 +msgid "Notify Requestors and Ccs" +msgstr "通知申请人åŠå‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:116 +msgid "Notify Requestors and Ccs as Comment" +msgstr "以评论方å¼é€šçŸ¥ç”³è¯·äººåŠå‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:130 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "通知申请人ã€å‰¯æœ¬åŠç®¡ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:126 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "以评论方å¼é€šçŸ¥ç”³è¯·äººã€å‰¯æœ¬åŠç®¡ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: html/Work/Tickets/Cc:55 +msgid "Notify people:" +msgstr "通知对象" + +#: NOT FOUND IN SOURCE +msgid "Nov" +msgstr "å一月" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "11" + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "å一月" + +#: html/Edit/Global/Basic/Top:74 +msgid "OIN104" +msgstr "é…åˆ 104eHRMS 接å£" + +#: html/Edit/Global/Workflow/Export.html:30 html/Work/Copyright.html:23 +msgid "OK" +msgstr "确定" + +#: lib/RT/Record.pm:156 +msgid "Object could not be created" +msgstr "æ— æ³•æ–°å¢žå¯¹è±¡" + +#: lib/RT/Record.pm:175 +msgid "Object created" +msgstr "对象新增完毕" + +#: html/Edit/Users/Info:36 +msgid "Occupation Status" +msgstr "在èŒçжæ€" + +#: NOT FOUND IN SOURCE +msgid "Oct" +msgstr "åæœˆ" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "10" + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "åæœˆ" + +#: html/Edit/Users/Info:33 +msgid "Office Phone" +msgstr "办公室电è¯" + +#: html/Elements/SelectDateRelation:34 +msgid "On" +msgstr "ç‰äºŽ" + +#: etc/initialdata:173 +msgid "On Comment" +msgstr "评论时" + +#: etc/initialdata:166 +msgid "On Correspond" +msgstr "回å¤ç”³è¯·å•æ—¶" + +#: etc/initialdata:155 +msgid "On Create" +msgstr "æ–°å¢žç”³è¯·å•æ—¶" + +#: etc/initialdata:187 +msgid "On Owner Change" +msgstr "æ‰¿åŠžäººæ”¹å˜æ—¶" + +#: etc/initialdata:195 +msgid "On Queue Change" +msgstr "è¡¨å•æ”¹å˜æ—¶" + +#: etc/initialdata:201 +msgid "On Resolve" +msgstr "è§£å†³ç”³è¯·å•æ—¶" + +#: etc/initialdata:179 +msgid "On Status Change" +msgstr "çŽ°å†µæ”¹å˜æ—¶" + +#: etc/initialdata:160 +msgid "On Transaction" +msgstr "å‘生更动时" + +#: 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 "仅显示 %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 "仅显示 %1 之剿–°å¢žçš„申请å•" + +#: html/Edit/Global/GroupRight/List:9 html/Edit/Global/GroupRight/Top:16 html/Edit/Groups/List:11 html/Edit/Groups/Top:18 html/Edit/Queues/Basic/Top:69 html/Edit/Queues/List:13 html/Elements/Quicksearch:30 html/Work/Delegates/Info:48 html/Work/Delegates/Info:51 html/Work/Delegates/List:12 html/Work/Elements/Quicksearch:16 html/Work/Overview/Info:41 html/Work/Tickets/Display.html:28 +msgid "Open" +msgstr "å¼€å¯" + +#: html/Ticket/Elements/Tabs:135 +msgid "Open it" +msgstr "å¼€å¯" + +#: html/SelfService/Elements/Tabs:41 +msgid "Open tickets" +msgstr "å¼€å¯çš„申请å•" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in a new window" +msgstr "在新窗å£å¼€å¯(列表的)申请å•" + +#: html/Admin/Users/Prefs.html:39 +msgid "Open tickets (from listing) in another window" +msgstr "在å¦ä¸€ä¸ªçª—å£å¼€å¯(列表的)申请å•" + +#: etc/initialdata:150 +msgid "Open tickets on correspondence" +msgstr "æ”¶åˆ°å›žå¤æ—¶å³å¼€å¯ç”³è¯·å•" + +#: NOT FOUND IN SOURCE +msgid "Opened Tickets" +msgstr "已申请è¿è¡Œä¸è¡¨å•" + +#: NOT FOUND IN SOURCE +msgid "Opinion" +msgstr "æ„è§" + +#: html/Edit/Global/CustomField/Info:35 +msgid "Option Description" +msgstr "选项æè¿°" + +#: html/Edit/Global/CustomField/Info:29 +msgid "Option Name" +msgstr "选项åç§°" + +#: html/Search/Elements/PickRestriction:100 html/Work/Search/PickRestriction:81 +msgid "Ordering and sorting" +msgstr "顺åºä¸ŽæŽ’åºæ–¹å¼" + +#: html/Admin/Elements/ModifyUser:45 html/Admin/Users/Modify.html:116 html/Edit/Global/Basic/Top:50 html/Elements/SelectUsers:28 html/User/Prefs.html:85 html/Work/Preferences/Info:74 +msgid "Organization" +msgstr "组织åç§°" + +#: NOT FOUND IN SOURCE +msgid "Organization:" +msgstr "组织:" + +#: html/Approvals/Elements/Approve:32 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "原申请å•:#%1" + +#: html/Edit/Elements/PickUsers:109 html/Edit/Users/Add.html:106 html/Work/Tickets/Cc:80 +msgid "Other comma-delimited email addresses" +msgstr "其它e-mailå¸å· (ä»…e-mail通知;多笔å¸å·è¯·ç”¨é€—å·','区隔)" + +#: html/Admin/Elements/ModifyQueue:54 html/Admin/Queues/Modify.html:68 html/Edit/Queues/Basic/Top:41 +msgid "Over time, priority moves toward" +msgstr "优先顺ä½éšæ—¶é—´å¢žåŠ è°ƒæ•´ä¸º" + +#: NOT FOUND IN SOURCE +msgid "Override current custom fields with fields from %1" +msgstr "以 %1 表å•çš„è‡ªè®¢å—æ®µå–ä»£çŽ°æœ‰å—æ®µ" + +#: html/Admin/Elements/CheckOverrideGlobalACL:25 +msgid "Override global rights" +msgstr "å–代全域æƒé™" + +#: html/Admin/Elements/CheckOverrideGlobalACL:34 +#. (loc_fuzzy($msg)) +msgid "OverrideGlobalACL status %1" +msgstr "å–代全域æƒé™ %1" + +#: html/Work/Elements/Tab:29 +msgid "Overview" +msgstr "总览" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Own tickets" +msgstr "承办申请å•" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "OwnTicket" +msgstr "承办申请å•" + +#: etc/initialdata:56 html/Admin/Elements/ModifyTemplateAsWorkflow:141 html/Edit/Global/Workflow/Owner.html:19 html/Edit/Queues/Basic/Top:47 html/Edit/Queues/Basic/Top:58 html/Elements/MyRequests:31 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:62 html/Work/Elements/MyRequests:13 html/Work/Elements/Quicksearch:18 html/Work/Tickets/Elements/ShowBasics:21 html/Work/Tickets/Update.html:27 lib/RT/ACE_Overlay.pm:85 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "承办人" + +#: NOT FOUND IN SOURCE +msgid "Owner changed from %1 to %2" +msgstr "承办人已从 %1 改为 %2" + +#: lib/RT/Transaction_Overlay.pm:582 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "强制将承办人从 %1 改为 %2" + +#: html/Search/Elements/PickRestriction:30 html/Work/Search/PickRestriction:10 +msgid "Owner is" +msgstr "承办人" + +#: html/Work/Elements/List:27 html/Work/Queues/List:8 html/Work/Tickets/Create.html:54 html/Work/Tickets/Elements/ShowBasics:52 +msgid "Owner's Phone" +msgstr "承办人电è¯" + +#: html/Edit/Elements/Page:39 +msgid "Page" +msgstr " " + +#: html/Admin/Users/Modify.html:173 html/User/Prefs.html:55 html/Work/Preferences/Info:35 +msgid "Pager" +msgstr "呼å«å™¨" + +#: html/Admin/Elements/ModifyUser:73 +msgid "PagerPhone" +msgstr "呼å«å™¨å·ç " + +#: html/Edit/Global/Workflow/Action:81 html/Edit/Global/Workflow/Condition:66 +msgid "Parameter" +msgstr "呼å«å‚æ•°" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:225 +msgid "Parent" +msgstr "上级" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/BulkLinks:38 html/Ticket/Elements/EditLinks:126 html/Ticket/Elements/EditLinks:57 html/Ticket/Elements/ShowLinks:46 html/Work/Search/BulkLinks:14 +msgid "Parents" +msgstr "æ¯ç”³è¯·å•" + +#: NOT FOUND IN SOURCE +msgid "Park Space" +msgstr "åœè½¦ä½ç”³è¯·" + +#: html/Elements/Login:52 html/User/Prefs.html:60 html/Work/Preferences/Info:41 +msgid "Password" +msgstr "å£ä»¤" + +#: html/NoAuth/Reminder.html:24 +msgid "Password Reminder" +msgstr "å£ä»¤æç¤º" + +#: lib/RT/User_Overlay.pm:228 lib/RT/User_Overlay.pm:927 +msgid "Password too short" +msgstr "å£ä»¤å¤ªçŸ" + +#: html/Admin/Users/Modify.html:290 html/User/Prefs.html:171 html/Work/Preferences/Info:162 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "å£ä»¤ï¼š%1" + +#: html/Admin/Users/Modify.html:292 +msgid "Passwords do not match." +msgstr "å£ä»¤ç¡®è®¤å¤±è´¥ã€‚" + +#: html/User/Prefs.html:173 html/Work/Preferences/Info:164 +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:44 html/Ticket/Elements/Tabs:95 html/Ticket/ModifyAll.html:50 +msgid "People" +msgstr "人员" + +#: NOT FOUND IN SOURCE +msgid "People with Queue Rights" +msgstr "æ‹¥æœ‰è¡¨å•æƒé™äººå‘˜" + +#: etc/initialdata:143 +msgid "Perform a user-defined action" +msgstr "执行使用者自订的动作" + +#: 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/CurrentUser.pm:82 lib/RT/CurrentUser.pm:91 lib/RT/CustomField_Overlay.pm:100 lib/RT/CustomField_Overlay.pm:201 lib/RT/CustomField_Overlay.pm:233 lib/RT/CustomField_Overlay.pm:510 lib/RT/CustomField_Overlay.pm:90 lib/RT/Group_Overlay.pm:1094 lib/RT/Group_Overlay.pm:1098 lib/RT/Group_Overlay.pm:1107 lib/RT/Group_Overlay.pm:1158 lib/RT/Group_Overlay.pm:1162 lib/RT/Group_Overlay.pm:1168 lib/RT/Group_Overlay.pm:425 lib/RT/Group_Overlay.pm:517 lib/RT/Group_Overlay.pm:595 lib/RT/Group_Overlay.pm:603 lib/RT/Group_Overlay.pm:700 lib/RT/Group_Overlay.pm:704 lib/RT/Group_Overlay.pm:710 lib/RT/Group_Overlay.pm:903 lib/RT/Group_Overlay.pm:907 lib/RT/Group_Overlay.pm:920 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:125 lib/RT/Scrip_Overlay.pm:136 lib/RT/Scrip_Overlay.pm:196 lib/RT/Scrip_Overlay.pm:429 lib/RT/Template_Overlay.pm:283 lib/RT/Template_Overlay.pm:87 lib/RT/Template_Overlay.pm:93 lib/RT/Ticket_Overlay.pm:1349 lib/RT/Ticket_Overlay.pm:1359 lib/RT/Ticket_Overlay.pm:1373 lib/RT/Ticket_Overlay.pm:1526 lib/RT/Ticket_Overlay.pm:1535 lib/RT/Ticket_Overlay.pm:1548 lib/RT/Ticket_Overlay.pm:1897 lib/RT/Ticket_Overlay.pm:2035 lib/RT/Ticket_Overlay.pm:2199 lib/RT/Ticket_Overlay.pm:2266 lib/RT/Ticket_Overlay.pm:2625 lib/RT/Ticket_Overlay.pm:2697 lib/RT/Ticket_Overlay.pm:2791 lib/RT/Ticket_Overlay.pm:2806 lib/RT/Ticket_Overlay.pm:3005 lib/RT/Ticket_Overlay.pm:3015 lib/RT/Ticket_Overlay.pm:3020 lib/RT/Ticket_Overlay.pm:3242 lib/RT/Ticket_Overlay.pm:3440 lib/RT/Ticket_Overlay.pm:3602 lib/RT/Ticket_Overlay.pm:3654 lib/RT/Ticket_Overlay.pm:3829 lib/RT/Transaction_Overlay.pm:466 lib/RT/Transaction_Overlay.pm:473 lib/RT/Transaction_Overlay.pm:502 lib/RT/Transaction_Overlay.pm:509 lib/RT/User_Overlay.pm:1021 lib/RT/User_Overlay.pm:1414 lib/RT/User_Overlay.pm:629 lib/RT/User_Overlay.pm:664 lib/RT/User_Overlay.pm:920 +msgid "Permission Denied" +msgstr "æƒé™ä¸è¶³" + +#: html/Edit/Rights/index.html:3 +msgid "Permission Settings" +msgstr "æƒé™è®¾å®š" + +#: NOT FOUND IN SOURCE +msgid "Permitted Queues:" +msgstr "拥有æƒé™è¡¨å•列表:" + +#: NOT FOUND IN SOURCE +msgid "Personal" +msgstr "代ç†äººç¾¤ç»„" + +#: html/User/Elements/Tabs:34 +msgid "Personal Groups" +msgstr "代ç†äººç¾¤ç»„" + +#: NOT FOUND IN SOURCE +msgid "Personal Todo" +msgstr "ç§äººå¾…办事项" + +#: html/User/Groups/index.html:29 html/User/Groups/index.html:39 +msgid "Personal groups" +msgstr "代ç†äººç¾¤ç»„" + +#: html/User/Elements/DelegateRights:36 +msgid "Personal groups:" +msgstr "代ç†äººç¾¤ç»„:" + +#: html/Work/Preferences/Info:21 +msgid "PersonalHomepage" +msgstr "个人首页" + +#: NOT FOUND IN SOURCE +msgid "Phone" +msgstr "电è¯" + +#: html/Work/Delegates/Info:90 html/Work/Overview/Info:72 +msgid "Phone number" +msgstr "电è¯å·ç " + +#: html/Admin/Users/Modify.html:155 html/User/Prefs.html:48 html/Work/Preferences/Info:27 +msgid "Phone numbers" +msgstr "电è¯å·ç " + +#: html/Edit/Users/Add.html:3 html/Work/Delegates/Add.html:3 html/Work/Delegates/Info:34 html/Work/Tickets/ModifyPeople.html:2 +msgid "Pick" +msgstr "挑选" + +#: NOT FOUND IN SOURCE +msgid "Place of Departure" +msgstr "出å‘地点" + +#: NOT FOUND IN SOURCE +msgid "Placeholder" +msgstr "尚未完工" + +#: html/Edit/Elements/PickUsers:31 html/Edit/Elements/PickUsers:44 html/Edit/Elements/SelectCustomFieldType:3 html/Work/Elements/SelectOwner:3 html/Work/Tickets/Elements/EditCustomField:104 html/Work/Tickets/Elements/EditCustomField:185 html/Work/Tickets/Elements/EditCustomField:75 html/Work/Tickets/Elements/EditCustomFieldEntries:66 html/Work/Tickets/Elements/EditCustomFieldEntries:73 +msgid "Please Select" +msgstr "请选择" + +#: html/Edit/Elements/104Buttons:30 +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 role" +msgstr "请选择角色" + +#: NOT FOUND IN SOURCE +msgid "Policy" +msgstr "ç»è¥è§„ç« " + +#: NOT FOUND IN SOURCE +msgid "Position" +msgstr "èŒåŠ¡" + +#: html/Edit/Users/Info:43 +msgid "Position Level" +msgstr "èŒç‰" + +#: html/Edit/Elements/PickUsers:41 html/Edit/Global/UserRight/List:13 html/Edit/Global/UserRight/Top:23 html/Edit/Users/Add.html:41 html/Edit/Users/List:11 html/Edit/Users/Top:22 html/Work/Delegates/Add.html:26 html/Work/Delegates/Info:84 html/Work/Overview/Info:66 +msgid "Position Name" +msgstr "èŒåŠ¡åç§°" + +#: html/Edit/Global/UserRight/List:14 html/Edit/Global/UserRight/Top:33 html/Edit/Users/List:12 html/Edit/Users/Top:32 +msgid "Position Number" +msgstr "èŒåС代ç " + +#: html/Edit/Users/Info:44 +msgid "Position Rank" +msgstr "èŒçº§" + +#: NOT FOUND IN SOURCE +msgid "Pref" +msgstr "å好" + +#: html/Edit/Elements/104Top:25 html/Elements/Header:51 html/Elements/Tabs:52 html/SelfService/Elements/Tabs:50 html/SelfService/Prefs.html:24 html/User/Prefs.html:24 html/User/Prefs.html:27 html/Work/Elements/Tab:41 +msgid "Preferences" +msgstr "å好" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "个人信æ¯" + +#: lib/RT/Action/Generic.pm:159 +msgid "Prepare Stubbed" +msgstr "预备动作完毕" + +#: html/Ticket/Elements/Tabs:60 +msgid "Prev" +msgstr "上一项" + +#: html/Search/Listing.html:43 html/Work/Search/index.html:20 +msgid "Previous page" +msgstr "å‰ä¸€é¡µ" + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "优先顺ä½" + +#: 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 "找ä¸åˆ°å•ä½ %1。" + +#: html/Search/Elements/PickRestriction:53 html/Ticket/Create.html:153 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:38 html/Work/Search/PickRestriction:34 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "优先顺ä½" + +#: html/Admin/Elements/ModifyQueue:50 html/Admin/Queues/Modify.html:64 +msgid "Priority starts at" +msgstr "优先顺ä½èµ·å§‹å€¼" + +#: etc/initialdata:43 +msgid "Privileged" +msgstr "内部æˆå‘˜" + +#: html/Admin/Users/Modify.html:270 html/User/Prefs.html:162 html/Work/Preferences/Info:153 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "内部æˆå‘˜çжæ€ï¼š%1" + +#: html/Admin/Users/index.html:61 +msgid "Privileged users" +msgstr "内部æˆå‘˜" + +#: html/Work/Elements/SelectSearch:16 +msgid "Process Status" +msgstr "处ç†çжæ€" + +#: etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 etc/initialdata:77 +msgid "Pseudogroup for internal use" +msgstr "内部用的虚拟群组" + +#: html/Work/Preferences/Info:64 +msgid "Public Info" +msgstr "公开信æ¯" + +#: html/Work/Elements/104Header:88 +msgid "Public Service" +msgstr "公共事务区" + +#: html/Edit/Users/Search.html:4 +msgid "Query" +msgstr "查询" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:166 html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Elements/Quicksearch:28 html/Search/Elements/PickRestriction:45 html/SelfService/Create.html:32 html/Ticket/Create.html:37 html/Ticket/Elements/EditBasics:63 html/Ticket/Elements/ShowBasics:42 html/User/Elements/DelegateRights:79 html/Work/Elements/MyApprovals:10 html/Work/Elements/MyRequests:11 html/Work/Elements/MyTickets:11 html/Work/Elements/Quicksearch:14 html/Work/Search/PickRestriction:26 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "表å•" + +#: html/Admin/Queues/CustomField.html:41 html/Admin/Queues/Scrip.html:49 html/Admin/Queues/Scrips.html:47 html/Admin/Queues/Templates.html:43 html/Admin/Queues/Workflows.html:44 +#. ($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/Elements/ModifyQueue:30 html/Admin/Queues/Modify.html:42 html/Edit/Queues/Basic/Top:12 html/Edit/Queues/Basic/index.html:36 html/Edit/Queues/Global:21 html/Edit/Queues/List:6 html/Edit/Users/Queue:10 html/Work/Delegates/List:6 html/Work/Elements/List:11 html/Work/Queues/List:5 html/Work/Tickets/Create.html:20 html/Work/Tickets/Elements/ShowBasics:6 +msgid "Queue Name" +msgstr "表å•åç§°" + +#: html/Edit/Queues/List:8 html/Work/Elements/List:25 html/Work/Queues/List:7 html/Work/Tickets/Create.html:33 html/Work/Tickets/Elements/ShowBasics:19 +msgid "Queue Owner" +msgstr "业务承办人" + +#: html/Edit/Queues/Basic/Top:35 +msgid "Queue Priority" +msgstr "优先ç‰çº§" + +#: html/Edit/Global/GroupRight/Top:24 html/Edit/Global/UserRight/Top:43 html/Edit/Users/Queue:11 html/Edit/Users/index.html:124 +msgid "Queue Rights" +msgstr "è¡¨å•æƒé™" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "è¡¨å•æ‰‹ç»" + +#: html/Edit/Elements/Tab:36 +msgid "Queue Setup" +msgstr "表å•设定" + +#: lib/RT/Queue_Overlay.pm:264 +msgid "Queue already exists" +msgstr "表å•å·²å˜åœ¨" + +#: lib/RT/Queue_Overlay.pm:273 lib/RT/Queue_Overlay.pm:279 +msgid "Queue could not be created" +msgstr "æ— æ³•æ–°å¢žè¡¨å•" + +#: html/Edit/Queues/autohandler:8 html/Ticket/Create.html:204 html/Work/Tickets/Create.html:176 +msgid "Queue could not be loaded." +msgstr "æ— æ³•åŠ è½½è¡¨å•" + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:283 +msgid "Queue created" +msgstr "è¡¨å•æ–°å¢žå®Œæ¯•" + +#: html/Admin/Elements/ModifyWorkflow:32 +msgid "Queue is not specified." +msgstr "未指定表å•。" + +#: html/SelfService/Display.html:70 lib/RT/CustomField_Overlay.pm:97 +msgid "Queue not found" +msgstr "找ä¸åˆ°è¡¨å•" + +#: html/Admin/Elements/Tabs:37 html/Admin/index.html:34 +msgid "Queues" +msgstr "表å•" + +#: html/Work/Elements/Quicksearch:10 +msgid "Quick Search" +msgstr "表å•现况" + +#: html/Elements/Quicksearch:24 +msgid "Quick search" +msgstr "表å•一览" + +#: html/Elements/Login:44 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "RT %1" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "%2:RT %1 版" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +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:24 html/Admin/index.html:25 +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:41 html/SelfService/Error.html:40 +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/index.html:24 html/index.html:27 +msgid "RT at a glance" +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" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "RT æ— æ³•ç¡®è®¤è¿™ä¸ª PGP ç¾ç« 。\\n" + +#: html/Edit/Elements/104Header:7 html/Edit/Elements/104Top:20 html/Elements/PageLayout:85 html/Work/Elements/104Header:7 +#. ($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 已执行您的命令" + +#: html/Elements/Login:94 +#. ('2003') +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 认为这å¯èƒ½æ˜¯é€€ä¿¡" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +msgstr "RT 以未ç¾ç« æ–¹å¼å¤„ç†è¿™å°é‚®ä»¶ã€‚\\n" + +#: 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 "申请å•è¿è¡Œè§’色" + +#: html/Work/Tickets/Elements/ShowTransaction:11 +msgid "RT_System" +msgstr "系统讯æ¯" + +#: html/Admin/Users/Modify.html:57 html/Admin/Users/Prefs.html:51 html/User/Prefs.html:43 html/Work/Preferences/Info:18 +msgid "Real Name" +msgstr "真实姓å" + +#: html/Admin/Elements/ModifyUser:47 +msgid "RealName" +msgstr "真实姓å" + +#: html/Work/Approvals/Display.html:27 html/Work/Tickets/Update.html:85 +msgid "Really reject this ticket?" +msgstr "您确定è¦é©³å›žè¿™å¼ 申请å•å—?" + +#: html/Ticket/Create.html:184 html/Ticket/Elements/BulkLinks:50 html/Ticket/Elements/EditLinks:138 html/Ticket/Elements/EditLinks:93 html/Ticket/Elements/ShowLinks:70 html/Work/Search/BulkLinks:26 +msgid "Referred to by" +msgstr "被å‚考" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:183 html/Ticket/Elements/BulkLinks:46 html/Ticket/Elements/EditLinks:134 html/Ticket/Elements/EditLinks:79 html/Ticket/Elements/ShowLinks:60 html/Work/Search/BulkLinks:22 +msgid "Refers to" +msgstr "å‚考" + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "å‚考" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "在结果范围内查询" + +#: html/Search/Elements/PickRestriction:26 html/Work/Search/PickRestriction:7 +msgid "Refine search" +msgstr "调整查询æ¡ä»¶" + +#: html/Work/Overview/index.html:12 +msgid "Refresh" +msgstr "æ›´æ–°" + +#: html/Elements/Refresh:35 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "æ¯ %1 分钟更新页é¢" + +#: html/Ticket/Create.html:173 html/Ticket/Elements/ShowSummary:61 html/Ticket/ModifyAll.html:56 +msgid "Relationships" +msgstr "关系" + +#: html/Edit/Elements/ListButtons:13 +msgid "Remove" +msgstr "移除" + +#: html/Search/Bulk.html:97 html/Work/Search/Bulk.html:77 +msgid "Remove AdminCc" +msgstr "移除管ç†å‘˜å‰¯æœ¬" + +#: html/Search/Bulk.html:93 html/Work/Search/Bulk.html:71 +msgid "Remove Cc" +msgstr "移除副本" + +#: html/Search/Bulk.html:89 html/Work/Search/Bulk.html:65 +msgid "Remove Requestor" +msgstr "移除申请人" + +#: html/Ticket/Elements/ShowTransaction:160 html/Ticket/Elements/Tabs:121 html/Work/Tickets/Display.html:31 html/Work/Tickets/Elements/ShowTransaction:106 +msgid "Reply" +msgstr "回å¤" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Reply to tickets" +msgstr "对申请å•进行回å¤" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "ReplyToTicket" +msgstr "回å¤ç”³è¯·å•" + +#: html/Edit/Users/Info:46 +msgid "Report to Duty" +msgstr "上下ç刷å¡" + +#: html/Edit/Users/Info:34 +msgid "Reported on" +msgstr "åˆ°èŒæ—¥æœŸ" + +#: etc/initialdata:62 html/Ticket/Update.html:39 html/Work/Elements/List:21 html/Work/Elements/MyApprovals:12 html/Work/Elements/SelectSearch:30 html/Work/Tickets/Elements/ShowBasics:54 lib/RT/ACE_Overlay.pm:86 +msgid "Requestor" +msgstr "申请人" + +#: html/Edit/Global/Workflow/Owner.html:44 +msgid "Requestor Group's" +msgstr "申请人所属群组之" + +#: html/Search/Elements/PickRestriction:37 html/Work/Search/PickRestriction:17 +msgid "Requestor email address" +msgstr "申请人电å邮件信箱地å€" + +#: html/Edit/Global/Workflow/Owner.html:28 +msgid "Requestor's" +msgstr "申请人所属之第上" + +#: html/Work/Elements/List:23 +msgid "Requestor's Phone" +msgstr "申请人电è¯" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "申请人" + +#: NOT FOUND IN SOURCE +msgid "RequestorAddresses" +msgstr "申请人地å€" + +#: html/SelfService/Create.html:40 html/Ticket/Create.html:55 html/Ticket/Elements/EditPeople:47 html/Ticket/Elements/ShowPeople:30 +msgid "Requestors" +msgstr "申请人" + +#: html/Admin/Elements/ModifyQueue:60 html/Admin/Queues/Modify.html:74 +msgid "Requests should be due in" +msgstr "申请å•å¤„ç†æœŸé™" + +#: html/Elements/Submit:61 +msgid "Reset" +msgstr "é‡è®¾" + +#: html/Admin/Users/Modify.html:158 html/User/Prefs.html:49 html/Work/Preferences/Info:29 +msgid "Residence" +msgstr "ä½å¤„" + +#: NOT FOUND IN SOURCE +msgid "Resolution" +msgstr "解决状æ€" + +#: html/Ticket/Elements/Tabs:131 html/Work/Tickets/Display.html:34 +msgid "Resolve" +msgstr "解决" + +#: html/Ticket/Update.html:136 html/Work/Tickets/Update.html:120 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "è§£å†³ç”³è¯·å• #%1 (%2)" + +#: etc/initialdata:331 html/Elements/SelectDateType:27 lib/RT/Ticket_Overlay.pm:1178 +msgid "Resolved" +msgstr "已解决" + +#: html/Search/Bulk.html:132 html/Ticket/ModifyAll.html:72 html/Ticket/Update.html:71 html/Work/Search/Bulk.html:84 html/Work/Tickets/Update.html:38 +msgid "Response to requestors" +msgstr "回å¤ç”³è¯·äºº" + +#: html/Edit/Users/Info:45 +msgid "Responsibility Type" +msgstr "责任区分" + +#: html/Elements/ListActions:25 +msgid "Results" +msgstr "结果" + +#: html/Search/Elements/PickRestriction:104 html/Work/Search/PickRestriction:84 +msgid "Results per page" +msgstr "æ¯é¡µåˆ—å‡ºå‡ ç¬”ç»“æžœ" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:99 html/User/Prefs.html:71 html/Work/Preferences/Info:51 +msgid "Retype Password" +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:612 +msgid "Right Delegated" +msgstr "æƒé™ä»£ç†å®Œæ¯•" + +#: lib/RT/ACE_Overlay.pm:302 +msgid "Right Granted" +msgstr "æƒé™è®¾å®šå®Œæ¯•" + +#: lib/RT/ACE_Overlay.pm:160 +msgid "Right Loaded" +msgstr "æƒé™åŠ è½½å®Œæ¯•" + +#: lib/RT/ACE_Overlay.pm:677 lib/RT/ACE_Overlay.pm:692 +msgid "Right could not be revoked" +msgstr "æ— æ³•æ’¤æ¶ˆæƒé™" + +#: html/User/Delegation.html:63 +msgid "Right not found" +msgstr "找ä¸åˆ°æƒé™" + +#: lib/RT/ACE_Overlay.pm:542 lib/RT/ACE_Overlay.pm:637 +msgid "Right not loaded." +msgstr "æƒé™å¹¶æœªåŠ è½½ã€‚" + +#: lib/RT/ACE_Overlay.pm:688 +msgid "Right revoked" +msgstr "æƒé™æ’¤æ¶ˆå®Œæ¯•" + +#: html/Admin/Elements/UserTabs:40 +msgid "Rights" +msgstr "æƒé™åŠä»£ç†äºº" + +#: lib/RT/Interface/Web.pm:794 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "æ— æ³•å°†æƒé™èµ‹äºˆ %1" + +#: lib/RT/Interface/Web.pm:827 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "æ— æ³•æ’¤æ¶ˆ %1 çš„æƒé™" + +#: html/Edit/Groups/Member:55 html/Edit/Groups/Members/List:10 +msgid "Role Members" +msgstr "角色æˆå‘˜" + +#: html/Edit/Groups/Member:37 html/Edit/Groups/Members/Add.html:13 html/Edit/Groups/Members/List:7 html/Edit/Groups/Roles/List:4 html/Edit/Groups/Roles/Top:7 +msgid "Role Name" +msgstr "角色åç§°" + +#: html/Admin/Global/GroupRights.html:50 html/Admin/Queues/GroupRights.html:52 html/Edit/Global/Workflow/Owner.html:55 html/Edit/Global/Workflow/Owner.html:81 html/Edit/Groups/Member:24 +msgid "Roles" +msgstr "角色" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "交由系统管ç†å‘˜ç¾æ ¸" + +#: html/Edit/Global/Workflow/Action:27 +msgid "Run Approval" +msgstr "ç¾æ ¸æ‰§è¡Œ" + +#: html/Edit/Global/Basic/Top:72 +msgid "SMTPDebug" +msgstr "SMTP 侦错纪录" + +#: html/Edit/Global/Basic/Top:58 +msgid "SMTPFrom" +msgstr "SMTP 寄件地å€" + +#: html/Edit/Global/Basic/Top:56 +msgid "SMTPServer" +msgstr "SMTP æœåС噍" + +#: NOT FOUND IN SOURCE +msgid "Sat" +msgstr "星期å…" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "星期å…" + +#: html/Edit/Elements/104Buttons:72 html/Work/Preferences/index.html:35 +msgid "Save" +msgstr "储å˜" + +#: html/Admin/Queues/People.html:104 html/Ticket/Modify.html:38 html/Ticket/ModifyAll.html:93 html/Ticket/ModifyLinks.html:38 html/Ticket/ModifyPeople.html:37 +msgid "Save Changes" +msgstr "å‚¨å˜æ›´æ”¹" + +#: NOT FOUND IN SOURCE +msgid "Save changes" +msgstr "å‚¨å˜æ›´æ”¹" + +#: html/Admin/Global/Scrip.html:48 html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->id) +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "æ‰‹ç» #%1" + +#: html/Edit/Global/Scrip/List:9 html/Edit/Global/Scrip/Top:41 +msgid "Scrip Action" +msgstr "讯æ¯é€šçŸ¥åŠ¨ä½œ" + +#: html/Edit/Global/Scrip/List:8 html/Edit/Global/Scrip/Top:15 +msgid "Scrip Condition" +msgstr "讯æ¯é€šçŸ¥æ¡ä»¶" + +#: lib/RT/Scrip_Overlay.pm:175 +msgid "Scrip Created" +msgstr "æ‰‹ç»æ–°å¢žå®Œæ¯•" + +#: html/Edit/Global/Scrip/List:7 html/Edit/Global/Scrip/Top:9 +msgid "Scrip Name" +msgstr "讯æ¯åç§°" + +#: html/Admin/Elements/EditScrips:83 +msgid "Scrip deleted" +msgstr "手ç»åˆ 除完毕" + +#: html/Admin/Elements/QueueTabs:45 html/Admin/Elements/SystemTabs:32 html/Admin/Global/index.html:40 +msgid "Scrips" +msgstr "手ç»" + +#: html/Edit/Global/autohandler:9 html/Edit/Queues/autohandler:20 +msgid "Scrips " +msgstr "讯æ¯é€šçŸ¥" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "%1 的手ç»\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "适用于所有表å•的手ç»" + +#: html/Edit/Elements/104Buttons:75 html/Elements/SimpleSearch:26 html/Search/Elements/PickRestriction:125 html/Ticket/Elements/Tabs:158 html/Work/Elements/Tab:43 html/Work/Search/PickRestriction:102 +msgid "Search" +msgstr "查询" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "查询æ¡ä»¶" + +#: html/Approvals/Elements/PendingMyApproval:38 +msgid "Search for approvals" +msgstr "ç¾æ ¸å•查询" + +#: html/Edit/Global/Workflow/Owner.html:31 +msgid "Second-" +msgstr "二" + +#: html/Edit/Users/Info:41 +msgid "Second-level Users" +msgstr "二阶主管员工" + +#: bin/rt-crontool:187 +msgid "Security:" +msgstr "安全性:" + +#: lib/RT/Queue_Overlay.pm:66 +msgid "SeeQueue" +msgstr "查阅表å•" + +#: html/Edit/Elements/ListButtons:10 +msgid "Select All" +msgstr "全选" + +#: html/Admin/Groups/index.html:39 +msgid "Select a group" +msgstr "选择群组" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "选择表å•" + +#: html/Work/Queues/Select.html:8 +msgid "Select a queue to link to" +msgstr "请选择欲连结表å•" + +#: html/Admin/Users/index.html:24 html/Admin/Users/index.html:27 +msgid "Select a user" +msgstr "选择使用者" + +#: html/Admin/Global/CustomField.html:37 html/Admin/Global/CustomFields.html:35 +msgid "Select custom field" +msgstr "é€‰æ‹©è‡ªè®¢å—æ®µ" + +#: html/Admin/Elements/GroupTabs:51 html/User/Elements/GroupTabs:49 +msgid "Select group" +msgstr "选择群组" + +#: lib/RT/CustomField_Overlay.pm:421 +msgid "Select multiple values" +msgstr "选择多é‡é¡¹ç›®" + +#: lib/RT/CustomField_Overlay.pm:418 +msgid "Select one value" +msgstr "选择å•一项目" + +#: html/Admin/Elements/QueueTabs:66 +msgid "Select queue" +msgstr "选择表å•" + +#: 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 "选择手ç»" + +#: 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 "选择模æ¿" + +#: html/Admin/Elements/UserTabs:48 +msgid "Select user" +msgstr "选择使用者" + +#: html/Admin/Global/Workflow.html:57 html/Admin/Global/Workflows.html:36 html/Admin/Queues/Workflow.html:54 html/Admin/Queues/Workflows.html:47 +msgid "Select workflow" +msgstr "选择æµç¨‹" + +#: NOT FOUND IN SOURCE +msgid "SelectExternal" +msgstr "系统选项" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectMultiple" +msgstr "多é‡é€‰é¡¹" + +#: lib/RT/CustomField_Overlay.pm:34 +msgid "SelectSingle" +msgstr "å•一选项" + +#: html/Edit/Elements/PickUsers:85 html/Edit/Users/Add.html:78 +msgid "Selected users:" +msgstr "新增对象:" + +#: NOT FOUND IN SOURCE +msgid "Self Service" +msgstr "自助æœåŠ¡" + +#: etc/initialdata:131 +msgid "Send mail to all watchers" +msgstr "寄信给所有视察员" + +#: etc/initialdata:127 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "以评论方å¼å¯„信给所有视察员" + +#: etc/initialdata:122 +msgid "Send mail to requestors and Ccs" +msgstr "寄信给申请人åŠå‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:117 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "以评论方å¼å¯„信给申请人åŠå‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:96 +msgid "Sends a message to the requestors" +msgstr "寄信给申请人" + +#: etc/initialdata:135 etc/initialdata:139 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "寄信给特定的副本åŠå¯†ä»¶å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:112 +msgid "Sends mail to the administrative Ccs" +msgstr "寄信给管ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:108 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "以评论寄信给管ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:100 etc/initialdata:104 +msgid "Sends mail to the owner" +msgstr "寄信给申请人" + +#: NOT FOUND IN SOURCE +msgid "Sep" +msgstr "乿œˆ" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "09" + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "乿œˆ" + +#: html/Edit/Users/Info:39 +msgid "Shift Type" +msgstr "ç别属性" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "显示结果" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show approved requests" +msgstr "æ˜¾ç¤ºå·²æ‰¹å‡†çš„ç¾æ ¸å•" + +#: html/Ticket/Create.html:143 html/Ticket/Create.html:33 +msgid "Show basics" +msgstr "显示基本信æ¯" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show denied requests" +msgstr "æ˜¾ç¤ºå·²é©³å›žçš„ç¾æ ¸å•" + +#: html/Ticket/Create.html:143 html/Ticket/Create.html:33 +msgid "Show details" +msgstr "显示细节" + +#: html/Approvals/Elements/PendingMyApproval:42 +msgid "Show pending requests" +msgstr "显示待处ç†çš„ç¾æ ¸å•" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show requests awaiting other approvals" +msgstr "æ˜¾ç¤ºå°šå¾…ä»–äººæ‰¹å‡†çš„ç¾æ ¸å•" + +#: lib/RT/Queue_Overlay.pm:80 +msgid "Show ticket private commentary" +msgstr "显示申请å•内的ç§äººè¯„论" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Show ticket summaries" +msgstr "æ˜¾ç¤ºç”³è¯·å•æ‘˜è¦" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "ShowACL" +msgstr "显示æƒé™æ¸…å•" + +#: lib/RT/Queue_Overlay.pm:77 +msgid "ShowScrips" +msgstr "显示手ç»" + +#: lib/RT/Queue_Overlay.pm:74 +msgid "ShowTemplate" +msgstr "显示模æ¿" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowTicket" +msgstr "显示申请å•" + +#: lib/RT/Queue_Overlay.pm:80 +msgid "ShowTicketComments" +msgstr "显示申请å•的评论" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "登记æˆä¸ºç”³è¯·äººæˆ–副本收件人" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "登记æˆä¸ºç®¡ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: html/Admin/Elements/ModifyUser:38 html/Admin/Users/Modify.html:190 html/Admin/Users/Prefs.html:31 html/User/Prefs.html:111 html/Work/Preferences/Info:106 +msgid "Signature" +msgstr "ç¾åæ¡£" + +#: NOT FOUND IN SOURCE +msgid "Signed in as %1" +msgstr "使用者:%1" + +#: html/Admin/Elements/SelectSingleOrMultiple:25 +msgid "Single" +msgstr "å•一" + +#: html/Elements/Header:50 +msgid "Skip Menu" +msgstr "略过选å•" + +#: html/Admin/Elements/AddCustomFieldValue:27 +msgid "Sort" +msgstr "顺åº" + +#: NOT FOUND IN SOURCE +msgid "Sort key" +msgstr "æŽ’åºæ–¹å¼" + +#: html/Search/Elements/PickRestriction:108 html/Work/Search/PickRestriction:89 +msgid "Sort results by" +msgstr "ç»“æžœæŽ’åºæ–¹å¼" + +#: NOT FOUND IN SOURCE +msgid "SortOrder" +msgstr "排åºé¡ºåº" + +#: html/Work/Elements/List:8 html/Work/Elements/MyApprovals:11 +msgid "Stage" +msgstr "å…³å¡" + +#: html/Edit/Global/Workflow/Top:8 +msgid "Stage Action" +msgstr "å…³å¡è¿è¡ŒåŠ¨ä½œ" + +#: html/Edit/Global/Workflow/Top:5 +msgid "Stage Condition" +msgstr "å…³å¡è¿è¡Œæ¡ä»¶" + +#: html/Work/Elements/Quicksearch:17 +msgid "Stalled" +msgstr "延宕" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "首页" + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/EditDates:31 html/Ticket/Elements/ShowDates:34 +msgid "Started" +msgstr "实际起始日" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "æ— æ³•è§£è¯»èµ·å§‹æ—¥æœŸ '%1" + +#: html/Elements/SelectDateType:30 html/Ticket/Create.html:165 html/Ticket/Elements/EditDates:26 html/Ticket/Elements/ShowDates:30 +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/Elements/ModifyUser:81 html/Admin/Users/Modify.html:137 html/User/Prefs.html:93 html/Work/Preferences/Info:82 +msgid "State" +msgstr "å·ž" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Search/Elements/PickRestriction:73 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:30 html/Ticket/Create.html:41 html/Ticket/Elements/EditBasics:37 html/Ticket/Elements/ShowBasics:30 html/Ticket/Update.html:59 html/Work/Elements/List:15 html/Work/Elements/MyRequests:12 html/Work/Elements/MyTickets:12 html/Work/Search/PickRestriction:54 html/Work/Tickets/Update.html:22 lib/RT/Ticket_Overlay.pm:1172 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "现况" + +#: etc/initialdata:317 +msgid "Status Change" +msgstr "çŽ°å†µæ”¹å˜æ—¶" + +#: lib/RT/Transaction_Overlay.pm:528 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "现况从 %1 改为 %2" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "çŽ°å†µæ”¹å˜æ—¶" + +#: html/Ticket/Elements/Tabs:146 +msgid "Steal" +msgstr "å¼ºåˆ¶æ›´æ¢æ‰¿åŠžäºº" + +#: lib/RT/Queue_Overlay.pm:91 +msgid "Steal tickets" +msgstr "强制承办申请å•" + +#: lib/RT/Queue_Overlay.pm:91 +msgid "StealTicket" +msgstr "强制承办申请å•" + +#: lib/RT/Transaction_Overlay.pm:587 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "被 %1 å¼ºåˆ¶æ›´æ¢ " + +#: html/Edit/Groups/Member:69 +msgid "Subgroup" +msgstr "å群组" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 html/Search/Bulk.html:135 html/Search/Elements/PickRestriction:42 html/SelfService/Create.html:56 html/SelfService/Elements/MyRequests:27 html/SelfService/Update.html:31 html/Ticket/Create.html:83 html/Ticket/Elements/EditBasics:27 html/Ticket/ModifyAll.html:78 html/Ticket/Update.html:75 html/Work/Elements/MyApprovals:9 html/Work/Elements/MyRequests:10 html/Work/Elements/MyTickets:10 html/Work/Search/Bulk.html:87 html/Work/Search/PickRestriction:22 html/Work/Tickets/Create.html:122 lib/RT/Ticket_Overlay.pm:1168 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "主题" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:609 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "æ ‡é¢˜å·²æ”¹ä¸º %1" + +#: html/Elements/Submit:58 html/Work/Search/Bulk.html:103 +msgid "Submit" +msgstr "é€å‡º" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "é€å‡ºæµç¨‹" + +#: lib/RT/Group_Overlay.pm:748 +msgid "Succeeded" +msgstr "设定æˆåŠŸ" + +#: NOT FOUND IN SOURCE +msgid "Sun" +msgstr "星期日" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "星期日" + +#: html/Edit/Users/System:17 lib/RT/System.pm:53 +msgid "SuperUser" +msgstr "系统管ç†å‘˜" + +#: html/User/Elements/DelegateRights:76 +msgid "System" +msgstr "系统" + +#: html/Edit/Global/Scrip/Top:18 html/Edit/Global/Scrip/Top:44 +msgid "System Defined" +msgstr "系统定义" + +#: html/Admin/Elements/SelectRights:80 lib/RT/ACE_Overlay.pm:566 lib/RT/Interface/Web.pm:793 lib/RT/Interface/Web.pm:826 +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 "系统错误。设定æƒé™å¤±è´¥ã€‚" + +#: html/Edit/Users/index.html:122 +msgid "System Rights" +msgstr "系统æƒé™" + +#: lib/RT/ACE_Overlay.pm:615 +msgid "System error. Right not delegated." +msgstr "系统错误。æƒé™ä»£ç†å¤±è´¥ã€‚" + +#: 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 "系统错误。设定æƒé™å¤±è´¥ã€‚" + +#: NOT FOUND IN SOURCE +msgid "System error. Unable to grant rights." +msgstr "ç³»ç»Ÿé”™è¯¯ã€‚æ— æ³•è®¾å®šæƒé™ã€‚" + +#: html/Admin/Global/GroupRights.html:34 html/Admin/Groups/GroupRights.html:36 html/Admin/Queues/GroupRights.html:35 +msgid "System groups" +msgstr "系统群组" + +#: NOT FOUND IN SOURCE +msgid "SystemInternal" +msgstr "系统内部用" + +#: etc/initialdata:59 etc/initialdata:65 etc/initialdata:71 +msgid "SystemRolegroup for internal use" +msgstr "内部使用的系统角色群组" + +#: lib/RT/CurrentUser.pm:319 +msgid "TEST_STRING" +msgstr "TEST_STRING" + +#: html/Ticket/Elements/Tabs:142 +msgid "Take" +msgstr "å—ç†" + +#: lib/RT/Queue_Overlay.pm:89 +msgid "Take tickets" +msgstr "自行承办申请å•" + +#: lib/RT/Queue_Overlay.pm:89 +msgid "TakeTicket" +msgstr "自行承办申请å•" + +#: lib/RT/Transaction_Overlay.pm:573 +msgid "Taken" +msgstr "å·²å—ç†" + +#: html/Admin/Elements/EditScrip:80 +msgid "Template" +msgstr "模æ¿" + +#: html/Admin/Global/Template.html:90 html/Admin/Queues/Template.html:89 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "æ¨¡æ¿ #%1" + +#: html/Edit/Global/Template/List:9 html/Edit/Global/Template/Top:17 +msgid "Template Content" +msgstr "通知模æ¿å†…容" + +#: html/Edit/Global/Template/List:8 html/Edit/Global/Template/Top:13 +msgid "Template Description" +msgstr "é€šçŸ¥æ¨¡æ¿æè¿°" + +#: html/Edit/Global/Template/List:7 html/Edit/Global/Template/Top:9 +msgid "Template Name" +msgstr "通知模æ¿åç§°" + +#: html/Admin/Elements/EditTemplates:88 +msgid "Template deleted" +msgstr "模æ¿å·²åˆ 除" + +#: lib/RT/Scrip_Overlay.pm:152 +msgid "Template not found" +msgstr "找ä¸åˆ°æ¨¡æ¿" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "找ä¸åˆ°æ¨¡æ¿\\n" + +#: lib/RT/Template_Overlay.pm:352 +msgid "Template parsed" +msgstr "模æ¿å‰–æžå®Œæ¯•" + +#: html/Admin/Elements/QueueTabs:48 html/Admin/Elements/SystemTabs:35 html/Admin/Global/index.html:44 +msgid "Templates" +msgstr "模æ¿" + +#: html/Edit/Global/autohandler:8 html/Edit/Queues/autohandler:19 +msgid "Templates " +msgstr "通知模æ¿" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "找ä¸åˆ° %1 的模æ¿\\n" + +#: lib/RT/Interface/Web.pm:894 +msgid "That is already the current value" +msgstr "å·²ç»æ˜¯ç›®å‰å—段的值" + +#: lib/RT/CustomField_Overlay.pm:242 +msgid "That is not a value for this custom field" +msgstr "è¿™ä¸æ˜¯è¯¥è‡ªè®¢å—段的值" + +#: lib/RT/Ticket_Overlay.pm:1908 +msgid "That is the same value" +msgstr "åŒæ ·çš„值" + +#: lib/RT/ACE_Overlay.pm:287 lib/RT/ACE_Overlay.pm:596 +msgid "That principal already has that right" +msgstr "这项å•ä½å·²ç»æ‹¥æœ‰è¯¥æƒé™" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "这项å•ä½å·²ç»æ˜¯è¿™ä¸ªè¡¨å•çš„ %1" + +#: lib/RT/Ticket_Overlay.pm:1442 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "这项å•ä½å·²ç»æ˜¯è¿™ä»½ç”³è¯·å•çš„ %1" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "这项å•ä½ä¸æ˜¯è¿™ä¸ªè¡¨å•çš„ %1" + +#: lib/RT/Ticket_Overlay.pm:1559 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "这项å•ä½ä¸æ˜¯è¿™ä»½ç”³è¯·å•çš„ %1" + +#: lib/RT/Ticket_Overlay.pm:1904 +msgid "That queue does not exist" +msgstr "æ¤è¡¨å•ä¸å˜åœ¨" + +#: lib/RT/Ticket_Overlay.pm:3246 +msgid "That ticket has unresolved dependencies" +msgstr "è¿™ä»½ç”³è¯·å•æœ‰å°šæœªè§£å†³çš„附属申请å•" + +#: NOT FOUND IN SOURCE +msgid "That user already has that right" +msgstr "使用者已具有该项æƒé™" + +#: lib/RT/Ticket_Overlay.pm:3056 +msgid "That user already owns that ticket" +msgstr "è¯¥ä½¿ç”¨è€…å·²ç»æ‰¿åŠžè¿™ä»½ç”³è¯·å•" + +#: lib/RT/Ticket_Overlay.pm:3028 +msgid "That user does not exist" +msgstr "使用者ä¸å˜åœ¨" + +#: lib/RT/User_Overlay.pm:374 +msgid "That user is already privileged" +msgstr "è¿™åä½¿ç”¨è€…å·²ç»æ˜¯å†…部æˆå‘˜" + +#: lib/RT/User_Overlay.pm:395 +msgid "That user is already unprivileged" +msgstr "è¿™å使用者属于éžå†…部æˆå‘˜ç¾¤ç»„" + +#: lib/RT/User_Overlay.pm:387 +msgid "That user is now privileged" +msgstr "ä½¿ç”¨è€…åŠ å…¥å†…éƒ¨æˆå‘˜ç¾¤ç»„完毕" + +#: lib/RT/User_Overlay.pm:408 +msgid "That user is now unprivileged" +msgstr "è¿™åä½¿ç”¨è€…å·²åŠ å…¥éžå†…部æˆå‘˜ç¾¤ç»„" + +#: NOT FOUND IN SOURCE +msgid "That user is now unprivilegedileged" +msgstr "è¿™åä½¿ç”¨è€…å·²åŠ å…¥éžå†…部æˆå‘˜ç¾¤ç»„" + +#: lib/RT/Ticket_Overlay.pm:3049 +msgid "That user may not own tickets in that queue" +msgstr "使用者å¯èƒ½æ²¡æœ‰æ‰¿åŠžè¡¨å•里的申请å•" + +#: lib/RT/Link_Overlay.pm:205 +msgid "That's not a numerical id" +msgstr "è¿™ä¸æ˜¯ä¸€ä¸ªæ•°å—ç¼–å·" + +#: html/SelfService/Display.html:31 html/Ticket/Create.html:149 html/Ticket/Elements/ShowSummary:27 +msgid "The Basics" +msgstr "基本信æ¯" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The CC of a ticket" +msgstr "申请å•的副本收件人" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The administrative CC of a ticket" +msgstr "申请å•的管ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: lib/RT/Ticket_Overlay.pm:2235 +msgid "The comment has been recorded" +msgstr "评论已被纪录" + +#: bin/rt-crontool:197 +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:" + +#: bin/rt-commit-handler:755 bin/rt-commit-handler:765 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "以下命令未被执行:\\n\\n" + +#: lib/RT/Interface/Web.pm:897 +msgid "The new value has been set." +msgstr "æ–°çš„å—æ®µå€¼è®¾å®šå®Œæˆã€‚" + +#: lib/RT/ACE_Overlay.pm:85 +msgid "The owner of a ticket" +msgstr "申请å•的承办人" + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The requestor of a ticket" +msgstr "申请å•的申请人" + +#: html/Admin/Elements/EditUserComments:25 +msgid "These comments aren't generally visible to the user" +msgstr "该使用者ä¸ä¼šçœ‹è§è¿™äº›è¯„论" + +#: html/Edit/Global/Workflow/Owner.html:32 +msgid "Third-" +msgstr "三" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "ç”³è¯·å• %1 %2 (%3)\\n" + +#: bin/rt-crontool:188 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "æ¤å·¥å…·ç¨‹åºä¼šè®©ä½¿ç”¨è€…ç»ç”± RT 执行任æ„命令。" + +#: lib/RT/Transaction_Overlay.pm:251 +msgid "This transaction appears to have no content" +msgstr "æ¤é¡¹æ›´åŠ¨æŠ¥å‘Šæ²¡æœ‰å†…å®¹" + +#: html/Ticket/Elements/ShowRequestor:46 +#. ($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:391 +msgid "Thu." +msgstr "星期四" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:163 +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:24 html/Ticket/ModifyAll.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "æ›´æ–°ç”³è¯·å• #%1 的全部信æ¯ï¼š%2" + +#: html/Approvals/Elements/ShowDependency:45 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "ç”³è¯·å• #%1: %2" + +#: lib/RT/Ticket_Overlay.pm:595 lib/RT/Ticket_Overlay.pm:616 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "ç”³è¯·å• #%1 æˆåŠŸæ–°å¢žäºŽ '%2' 表å•" + +#: bin/rt-commit-handler:759 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "åŠ è½½ç”³è¯·å• %1\\n" + +#: html/Search/Bulk.html:212 html/Work/Search/Bulk.html:169 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "ç”³è¯·å• %1:%2" + +#: html/Edit/Queues/Basic/Top:28 html/Edit/Queues/List:16 html/Work/Queues/List:9 +msgid "Ticket Due" +msgstr "表å•å¤„ç†æœŸé™" + +#: html/Ticket/History.html:24 html/Ticket/History.html:27 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "申请å•处ç†çºªå½• # %1 %2" + +#: html/Work/Elements/List:6 +msgid "Ticket ID" +msgstr "å•å·" + +#: NOT FOUND IN SOURCE +msgid "Ticket Id" +msgstr "申请å•ç¼–å·" + +#: NOT FOUND IN SOURCE +msgid "Ticket Processing Due" +msgstr "表å•è¿è¡ŒæœŸé™" + +#: etc/initialdata:332 +msgid "Ticket Resolved" +msgstr "申请å•已解决" + +#: html/Edit/Queues/Basic/Top:18 html/Edit/Queues/Category/List:6 html/Edit/Queues/Category/Top:7 html/Edit/Queues/List:7 html/Edit/Queues/index.html:31 html/Work/Delegates/List:7 html/Work/Delegates/index.html:11 html/Work/Elements/List:12 html/Work/Elements/SelectSearch:9 html/Work/Queues/List:6 html/Work/Queues/Select.html:12 html/Work/Queues/index.html:11 html/Work/Tickets/Create.html:42 html/Work/Tickets/Elements/ShowBasics:33 +msgid "Ticket Type" +msgstr "表å•ç§ç±»" + +#: html/Search/Elements/PickRestriction:62 html/Work/Search/PickRestriction:43 +msgid "Ticket attachment" +msgstr "申请å•附件" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "申请å•内容" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "申请å•内容类别" + +#: lib/RT/Ticket_Overlay.pm:485 lib/RT/Ticket_Overlay.pm:494 lib/RT/Ticket_Overlay.pm:504 lib/RT/Ticket_Overlay.pm:605 +msgid "Ticket could not be created due to an internal error" +msgstr "å†…éƒ¨é”™è¯¯ï¼Œæ— æ³•æ–°å¢žç”³è¯·å•" + +#: lib/RT/Transaction_Overlay.pm:520 +msgid "Ticket created" +msgstr "ç”³è¯·å•æ–°å¢žå®Œæ¯•" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "ç”³è¯·å•æ–°å¢žå¤±è´¥" + +#: lib/RT/Transaction_Overlay.pm:525 +msgid "Ticket deleted" +msgstr "申请å•åˆ é™¤å®Œæ¯•" + +#: NOT FOUND IN SOURCE +msgid "Ticket id not found" +msgstr "找ä¸åˆ°ç”³è¯·å•ç¼–å·" + +#: NOT FOUND IN SOURCE +msgid "Ticket killed" +msgstr "申请å•åˆ é™¤å®Œæ¯•" + +#: NOT FOUND IN SOURCE +msgid "Ticket not found" +msgstr "找ä¸åˆ°ç”³è¯·å•" + +#: etc/initialdata:318 +msgid "Ticket status changed" +msgstr "申请å•现况已改å˜" + +#: html/Ticket/Update.html:38 +msgid "Ticket watchers" +msgstr "申请å•视察员" + +#: html/Elements/Tabs:46 +msgid "Tickets" +msgstr "申请å•" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "ç”³è¯·å• %1 %2" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +msgid "Tickets %1 by %2" +msgstr "ç”³è¯·å• %1 (%2)" + +#: html/Elements/ViewUser:25 +#. ($name) +msgid "Tickets from %1" +msgstr "%1 的申请å•" + +#: html/Approvals/Elements/ShowDependency:26 +msgid "Tickets which depend on this approval:" +msgstr "批准之åŽï¼Œå¯æŽ¥ç»å¤„ç†ï¼š" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:47 +msgid "Time Left" +msgstr "剩馀时间" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:42 +msgid "Time Worked" +msgstr "å¤„ç†æ—¶é—´" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "剩馀时间" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "显示时间" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "å·²å¤„ç†æ—¶é—´" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "剩馀时间" + +#: lib/RT/Ticket_Overlay.pm:1173 +msgid "TimeWorked" +msgstr "å·²å¤„ç†æ—¶é—´" + +#: bin/rt-commit-handler:401 +msgid "To generate a diff of this commit:" +msgstr "产生这次更动的差异档:" + +#: bin/rt-commit-handler:390 +msgid "To generate a diff of this commit:\\n" +msgstr "产生这次更动的差异档:\\n" + +#: lib/RT/Ticket_Overlay.pm:1176 +msgid "Told" +msgstr "告知日期" + +#: html/Edit/Elements/Page:46 +msgid "Total" +msgstr "页" + +#: etc/initialdata:239 +msgid "Transaction" +msgstr "更动" + +#: lib/RT/Transaction_Overlay.pm:640 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "清除更动报告 %1" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "更动报告已新增" + +#: lib/RT/Transaction_Overlay.pm:88 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "未指定申请å•ç¼–å·ï¼Œæ— 法新增更动" + +#: lib/RT/Transaction_Overlay.pm:699 +msgid "Transactions are immutable" +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:389 +msgid "Tue." +msgstr "星期二" + +#: html/Admin/Elements/EditCustomField:43 html/Admin/Elements/ModifyTemplateAsWorkflow:135 html/Ticket/Elements/AddWatchers:32 html/Ticket/Elements/AddWatchers:43 html/Ticket/Elements/AddWatchers:53 lib/RT/Ticket_Overlay.pm:1174 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "类别" + +#: lib/RT/ScripCondition_Overlay.pm:103 +msgid "Unimplemented" +msgstr "å°šæ— å®žä½œ" + +#: html/Admin/Users/Modify.html:67 +msgid "Unix login" +msgstr "外部系统登入å¸å·" + +#: html/Admin/Elements/ModifyUser:61 +msgid "UnixUsername" +msgstr "外部系统登入å¸å·" + +#: lib/RT/Attachment_Overlay.pm:273 lib/RT/Attachment_Overlay.pm:303 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "ä¸å¯è§£çš„内容文å—ç¼–ç æ–¹å¼ %1" + +#: html/Elements/SelectResultsPerPage:36 +msgid "Unlimited" +msgstr "全数显示" + +#: etc/initialdata:50 +msgid "Unprivileged" +msgstr "éžå†…部æˆå‘˜" + +#: lib/RT/Transaction_Overlay.pm:569 +msgid "Untaken" +msgstr "未被å—ç†" + +#: html/Edit/Elements/Page:13 html/Edit/Elements/Page:15 +msgid "Up" +msgstr "上一页" + +#: html/Elements/MyTickets:63 html/Search/Bulk.html:32 html/Work/Elements/MyTickets:72 html/Work/Search/Bulk.html:10 html/Work/Tickets/Elements/EditCustomFieldEntries:82 +msgid "Update" +msgstr "处ç†" + +#: html/Admin/Users/Prefs.html:61 +msgid "Update ID" +msgstr "æ›´æ–°ç¼–å·" + +#: html/Search/Bulk.html:129 html/Ticket/ModifyAll.html:65 html/Ticket/Update.html:65 html/Work/Search/Bulk.html:81 html/Work/Tickets/Update.html:32 +msgid "Update Type" +msgstr "更新类别" + +#: html/Search/Listing.html:60 html/Work/Search/index.html:32 +msgid "Update all these tickets at once" +msgstr "整批更新申请å•" + +#: html/Admin/Users/Prefs.html:48 +msgid "Update email" +msgstr "更新电å邮件信箱" + +#: html/Admin/Users/Prefs.html:54 +msgid "Update name" +msgstr "æ›´æ–°å¸å·" + +#: lib/RT/Interface/Web.pm:409 +msgid "Update not recorded." +msgstr "更新未被记录" + +#: html/Search/Bulk.html:80 html/Work/Search/Bulk.html:52 +msgid "Update selected tickets" +msgstr "更新选择的申请å•" + +#: html/Admin/Users/Prefs.html:35 +msgid "Update signature" +msgstr "æ›´æ–°ç¾ç« " + +#: html/Ticket/ModifyAll.html:62 +msgid "Update ticket" +msgstr "更新申请å•" + +#: NOT FOUND IN SOURCE +msgid "Update ticket # %1" +msgstr "æ›´æ–°ç”³è¯·å• # %1" + +#: html/SelfService/Update.html:24 html/SelfService/Update.html:46 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "æ›´æ–°ç”³è¯·å• #%1" + +#: html/Ticket/Update.html:138 html/Work/Tickets/Update.html:122 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "æ›´æ–°ç”³è¯·å• #%1 (%2)" + +#: lib/RT/Interface/Web.pm:407 +msgid "Update type was neither correspondence nor comment." +msgstr "更新的内容并éžç”³è¯·å•回å¤ä¹Ÿä¸æ˜¯è¯„论" + +#: html/Elements/SelectDateType:32 html/Ticket/Elements/ShowDates:50 lib/RT/Ticket_Overlay.pm:1177 +msgid "Updated" +msgstr "剿¬¡æ›´æ–°" + +#: html/Work/Preferences/index.html:15 +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" + +#: 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:142 etc/initialdata:209 +msgid "User Defined" +msgstr "使用者自订" + +#: html/Admin/Users/Prefs.html:58 html/Edit/Users/List:13 html/Edit/Users/Top:42 +msgid "User ID" +msgstr "使用者 ID" + +#: html/Elements/SelectUsers:25 +msgid "User Id" +msgstr "使用者 ID" + +#: html/Edit/Elements/PickUsers:12 html/Edit/Global/UserRight/List:7 html/Edit/Global/UserRight/Top:9 html/Edit/Users/Add.html:13 html/Edit/Users/List:5 html/Edit/Users/Search.html:23 html/Edit/Users/Top:8 html/Work/Delegates/Info:60 html/Work/Tickets/Cc:10 +msgid "User Number" +msgstr "员工编å·" + +#: html/Admin/Elements/GroupTabs:46 html/Admin/Elements/QueueTabs:59 html/Admin/Elements/SystemTabs:46 html/Admin/Global/index.html:58 html/Edit/Global/autohandler:11 html/Edit/Queues/autohandler:22 +msgid "User Rights" +msgstr "使用者æƒé™" + +#: html/Edit/Elements/Tab:32 +msgid "User Setup" +msgstr "使用者设定" + +#: html/Edit/Users/Info:38 +msgid "User Shift" +msgstr "员工ç别" + +#: html/Admin/Users/Modify.html:225 +#. ($msg) +msgid "User could not be created: %1" +msgstr "æ— æ³•æ–°å¢žä½¿ç”¨è€…ï¼š%1" + +#: lib/RT/User_Overlay.pm:321 +msgid "User created" +msgstr "使用者新增完毕" + +#: html/Admin/Global/GroupRights.html:66 html/Admin/Groups/GroupRights.html:53 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "使用者定义的群组" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "已通知使用者" + +#: html/Admin/Users/Prefs.html:24 html/Admin/Users/Prefs.html:28 +msgid "User view" +msgstr "使用者ç§äººæ•°æ®" + +#: NOT FOUND IN SOURCE +msgid "UserDefined" +msgstr "使用者自定" + +#: html/Admin/Users/Modify.html:47 html/Elements/Login:51 html/Ticket/Elements/AddWatchers:34 +msgid "Username" +msgstr "å¸å·" + +#: 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 html/Work/Tickets/Elements/ShowTransaction:8 +msgid "Users" +msgstr "使用者" + +#: html/Admin/Users/index.html:64 +msgid "Users matching search criteria" +msgstr "ç¬¦åˆæŸ¥è¯¢æ¡ä»¶çš„使用者" + +#: html/Search/Elements/PickRestriction:50 html/Work/Search/PickRestriction:31 +msgid "ValueOfQueue" +msgstr "选择表å•" + +#: html/Admin/Elements/EditCustomField:56 +msgid "Values" +msgstr "å—æ®µå€¼" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Watch" +msgstr "视察" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "WatchAsAdminCc" +msgstr "以管ç†å‘˜å‰¯æœ¬æ”¶ä»¶äººèº«ä»½è§†å¯Ÿ" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "æˆåŠŸåŠ è½½è§†å¯Ÿå‘˜ä¿¡æ¯" + +#: html/Admin/Elements/QueueTabs:41 +msgid "Watchers" +msgstr "视察员" + +#: html/Admin/Elements/ModifyUser:55 +msgid "WebEncoding" +msgstr "网页文å—ç¼–ç æ–¹å¼" + +#: NOT FOUND IN SOURCE +msgid "Wed" +msgstr "星期三" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "星期三" + +#: etc/initialdata:533 etc/upgrade/2.1.71:161 html/Edit/Elements/CreateApprovalsQueue:135 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "当申请å•é€šè¿‡æ‰€æœ‰ç¾æ ¸åŽï¼Œå°†æ¤è®¯æ¯å›žå¤åˆ°åŽŸç”³è¯·å•" + +#: etc/initialdata:497 etc/upgrade/2.1.71:135 html/Edit/Elements/CreateApprovalsQueue:107 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "当申请å•通过æŸé¡¹ç¾æ ¸åŽï¼Œå°†æ¤è®¯æ¯å›žå¤åˆ°åŽŸç”³è¯·å•" + +#: etc/initialdata:156 +msgid "When a ticket is created" +msgstr "æ–°å¢žç”³è¯·å•æ—¶" + +#: etc/initialdata:428 etc/upgrade/2.1.71:79 html/Edit/Elements/CreateApprovalsQueue:51 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "ç¾æ ¸å•新增之åŽï¼Œé€šçŸ¥åº”å—ç†çš„æ‰¿åŠžäººåŠç®¡ç†å‘˜å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata:161 +msgid "When anything happens" +msgstr "当任何事情å‘生时" + +#: etc/initialdata:202 +msgid "Whenever a ticket is resolved" +msgstr "当申请å•解决时" + +#: etc/initialdata:188 +msgid "Whenever a ticket's owner changes" +msgstr "å½“ç”³è¯·å•æ›´æ¢æ‰¿åŠžäººæ—¶" + +#: etc/initialdata:196 +msgid "Whenever a ticket's queue changes" +msgstr "å½“ç”³è¯·å•æ›´æ¢è¡¨å•æ—¶" + +#: etc/initialdata:180 +msgid "Whenever a ticket's status changes" +msgstr "å½“ç”³è¯·å•æ›´æ–°çŽ°å†µæ—¶" + +#: etc/initialdata:210 +msgid "Whenever a user-defined condition occurs" +msgstr "当使用者自订的情况å‘生时" + +#: etc/initialdata:174 +msgid "Whenever comments come in" +msgstr "当评论é€è¾¾æ—¶" + +#: etc/initialdata:167 +msgid "Whenever correspondence comes in" +msgstr "当回å¤é€è¾¾æ—¶" + +#: html/Admin/Users/Modify.html:163 html/User/Prefs.html:51 html/Work/Preferences/Info:31 +msgid "Work" +msgstr "å…¬å¸" + +#: html/Admin/Elements/ModifyUser:69 +msgid "WorkPhone" +msgstr "å…¬å¸ç”µè¯" + +#: html/Ticket/Elements/ShowBasics:34 html/Ticket/Update.html:64 +msgid "Worked" +msgstr "å¤„ç†æ—¶é—´" + +#: html/Admin/Global/Workflow.html:91 html/Admin/Queues/Workflow.html:89 +#. ($WorkflowObj->Id()) +msgid "Workflow #%1" +msgstr "æµç¨‹ #%1" + +#: html/Edit/Global/Workflow/List:15 +msgid "Workflow Begin" +msgstr "æµç¨‹å¼€å§‹" + +#: html/Edit/Global/Workflow/List:20 +msgid "Workflow End" +msgstr "æµç¨‹ç»“æŸ" + +#: html/Admin/Elements/EditWorkflows:90 +msgid "Workflow deleted" +msgstr "æµç¨‹å·²åˆ 除" + +#: html/Edit/Global/autohandler:10 html/Edit/Queues/autohandler:21 +msgid "Workflows" +msgstr "æµç¨‹" + +#: html/Edit/Global/Basic/Top:25 +msgid "Yes" +msgstr "是" + +#: lib/RT/Ticket_Overlay.pm:3159 +msgid "You already own this ticket" +msgstr "您已是这份申请å•的承办人" + +#: html/autohandler:122 +msgid "You are not an authorized user" +msgstr "æ‚¨ä¸æ˜¯è¢«æŽˆæƒçš„使用者" + +#: lib/RT/Ticket_Overlay.pm:3041 +msgid "You can only reassign tickets that you own or 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 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "æ‚¨ä¼šåœ¨è¡¨å• %2 找到 %1 的申请å•" + +#: html/NoAuth/Logout.html:30 +msgid "You have been logged out of RT." +msgstr "您已注销 RT。" + +#: html/SelfService/Display.html:77 +msgid "You have no permission to create tickets in that queue." +msgstr "æ‚¨æ²¡æœ‰åœ¨è¯¥è¡¨å•æ–°å¢žç”³è¯·å•çš„æƒé™ã€‚" + +#: lib/RT/Ticket_Overlay.pm:1917 +msgid "You may not create requests in that queue." +msgstr "您ä¸èƒ½åœ¨è¯¥è¡¨å•ä¸æå‡ºç”³è¯·ã€‚" + +#: html/Edit/Global/Basic/Top:38 +msgid "You need to restart the Request Tracker service for saved changes to take effect." +msgstr "æ‚¨å¿…é¡»é‡æ–°æ¿€æ´» Request Tracker æœåŠ¡ï¼Œå‚¨å˜çš„æ›´åЍæ‰ä¼šç”Ÿæ•ˆã€‚" + +#: html/NoAuth/Logout.html:34 +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:514 etc/upgrade/2.1.71:146 html/Edit/Elements/CreateApprovalsQueue:119 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "申请å•已由 %1 批准。å¯èƒ½è¿˜æœ‰å…¶å®ƒå¾…ç¾æ ¸çš„æ¥éª¤ã€‚" + +#: etc/initialdata:552 etc/upgrade/2.1.71:180 html/Edit/Elements/CreateApprovalsQueue:154 +msgid "Your request has been approved." +msgstr "您的申请å•已完æˆç¾æ ¸ç¨‹åºã€‚" + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "您的申请å•已被驳回" + +#: etc/initialdata:455 +msgid "Your request was rejected by %1." +msgstr "您的申请å•已被 %1 驳回。" + +#: etc/upgrade/2.1.71:101 html/Edit/Elements/CreateApprovalsQueue:73 +msgid "Your request was rejected." +msgstr "您的申请å•已被驳回。" + +#: html/autohandler:144 +msgid "Your username or password is incorrect" +msgstr "您的å¸å·æˆ–å£ä»¤æœ‰è¯¯" + +#: html/Admin/Elements/ModifyUser:83 html/Admin/Users/Modify.html:143 html/User/Prefs.html:95 html/Work/Preferences/Info:84 +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 "急讯" + +#: html/User/Elements/DelegateRights:58 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "æƒé™åŒ %1" + +#: html/SelfService/Closed.html:27 +msgid "closed" +msgstr "已解决" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:33 +msgid "contains" +msgstr "包å«" + +#: html/Elements/SelectAttachmentField:25 +msgid "content" +msgstr "内容" + +#: html/Elements/SelectAttachmentField:26 +msgid "content-type" +msgstr "类型" + +#: lib/RT/Ticket_Overlay.pm:2304 +msgid "correspondence (probably) not sent" +msgstr "申请å•回å¤(å¯èƒ½)未é€å‡º" + +#: lib/RT/Ticket_Overlay.pm:2314 +msgid "correspondence sent" +msgstr "申请å•回å¤å·²é€å‡º" + +#: NOT FOUND IN SOURCE +msgid "critical" +msgstr "严é‡" + +#: html/Admin/Elements/ModifyQueue:62 html/Admin/Queues/Modify.html:76 html/Edit/Queues/Basic/Top:31 html/Edit/Queues/List:18 html/Work/Queues/List:11 lib/RT/Date.pm:319 +msgid "days" +msgstr "天" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "æ‹’ç»å¤„ç†" + +#: NOT FOUND IN SOURCE +msgid "debug" +msgstr "侦错" + +#: html/Search/Listing.html:74 +msgid "delete" +msgstr "åˆ é™¤" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "deleted" +msgstr "å·²åˆ é™¤" + +#: html/Search/Elements/PickRestriction:67 html/Work/Search/PickRestriction:47 +msgid "does not match" +msgstr "ä¸ç¬¦åˆ" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:34 +msgid "doesn't contain" +msgstr "ä¸åŒ…å«" + +#: NOT FOUND IN SOURCE +msgid "emergency" +msgstr "å±éš¾" + +#: html/Elements/SelectEqualityOperator:37 +msgid "equal to" +msgstr "ç‰äºŽ" + +#: NOT FOUND IN SOURCE +msgid "error" +msgstr "错误" + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "å‡" + +#: html/Elements/SelectAttachmentField:27 +msgid "filename" +msgstr "æ¡£å" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectEqualityOperator:37 +msgid "greater than" +msgstr "大于" + +#: lib/RT/Group_Overlay.pm:193 +#. ($self->Name) +msgid "group '%1'" +msgstr "群组 '%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "å°æ—¶" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "ç¼–å·" + +#: NOT FOUND IN SOURCE +msgid "info" +msgstr "ä¿¡æ¯" + +#: html/Elements/SelectBoolean:31 html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:35 html/Search/Elements/PickRestriction:46 html/Search/Elements/PickRestriction:75 html/Search/Elements/PickRestriction:87 html/Work/Search/PickRestriction:27 html/Work/Search/PickRestriction:56 html/Work/Search/PickRestriction:69 +msgid "is" +msgstr "是" + +#: html/Elements/SelectBoolean:35 html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 html/Work/Search/PickRestriction:28 html/Work/Search/PickRestriction:57 html/Work/Search/PickRestriction:70 +msgid "isn't" +msgstr "䏿˜¯" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectEqualityOperator:37 +msgid "less than" +msgstr "å°äºŽ" + +#: html/Edit/Global/Workflow/Owner.html:35 +msgid "level Admins" +msgstr "层主管" + +#: html/Search/Elements/PickRestriction:66 html/Work/Search/PickRestriction:46 +msgid "matches" +msgstr "符åˆ" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "分" + +#: html/Ticket/Update.html:64 +msgid "minutes" +msgstr "分钟" + +#: bin/rt-commit-handler:764 +msgid "modifications\\n\\n" +msgstr "更改\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "月" + +#: lib/RT/Queue_Overlay.pm:57 +msgid "new" +msgstr "新建立" + +#: html/Admin/Elements/EditScrips:42 +msgid "no value" +msgstr "没有值" + +#: html/Admin/Elements/EditQueueWatchers:26 html/Edit/Groups/Member:40 html/Edit/Groups/Members/Add.html:17 html/Edit/Groups/Members/List:8 html/Edit/Queues/Basic/Top:50 html/Edit/Queues/List:18 html/Ticket/Elements/EditWatchers:27 html/Work/Delegates/Info:37 html/Work/Delegates/Info:48 html/Work/Overview/Info:31 html/Work/Queues/List:11 html/Work/Tickets/Elements/ShowBasics:27 +msgid "none" +msgstr "æ— " + +#: html/Elements/SelectEqualityOperator:37 +msgid "not equal to" +msgstr "ä¸ç‰äºŽ" + +#: NOT FOUND IN SOURCE +msgid "notice" +msgstr "æç¤º" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "ä¸ç¬¦åˆ" + +#: html/Edit/Elements/PickUsers:17 html/Edit/Users/Add.html:18 html/Edit/Users/Search.html:28 html/Work/Tickets/Cc:15 +msgid "number" +msgstr "å·" + +#: html/SelfService/Elements/MyRequests:60 lib/RT/Queue_Overlay.pm:58 +msgid "open" +msgstr "å¼€å¯" + +#: NOT FOUND IN SOURCE +msgid "opened" +msgstr "已开å¯" + +#: lib/RT/Group_Overlay.pm:198 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "使用者「%2ã€çš„「%1ã€ä»£ç†äººç¾¤ç»„" + +#: lib/RT/Group_Overlay.pm:206 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "è¡¨å• %1 %2" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "rejected" +msgstr "已驳回" + +#: html/Work/Elements/SelectSearch:21 lib/RT/Queue_Overlay.pm:60 +msgid "resolved" +msgstr "已处ç†" + +#: html/Edit/Global/Basic/Top:48 +msgid "rtname" +msgstr "æœåС噍åç§°" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "ç§’" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "stalled" +msgstr "延宕" + +#: lib/RT/Group_Overlay.pm:201 +#. ($self->Type) +msgid "system %1" +msgstr "系统 %1" + +#: lib/RT/Group_Overlay.pm:212 +#. ($self->Type) +msgid "system group '%1'" +msgstr "系统群组 '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:41 +msgid "the calling component did not specify why" +msgstr "呼å«ç»„ä»¶æœªæŒ‡æ˜ŽåŽŸå› " + +#: lib/RT/Group_Overlay.pm:209 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "ç”³è¯·å• #%1 %2" + +#: html/Work/Elements/SelectSearch:27 +msgid "till" +msgstr "至" + +#: html/Edit/Elements/PickUsers:15 html/Edit/Global/Workflow/Condition:30 html/Edit/Users/Add.html:16 html/Edit/Users/Search.html:26 html/Work/Tickets/Cc:13 +msgid "to" +msgstr "到" + +#: NOT FOUND IN SOURCE +msgid "true" +msgstr "真" + +#: lib/RT/Group_Overlay.pm:215 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "没有æè¿°çš„群组 %1" + +#: html/Work/Elements/SelectSearch:19 +msgid "unresolved" +msgstr "未处ç†" + +#: lib/RT/Group_Overlay.pm:190 +#. ($user->Object->Name) +msgid "user %1" +msgstr "使用者 %1" + +#: NOT FOUND IN SOURCE +msgid "warning" +msgstr "è¦å‘Š" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "周" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "模æ¿ï¼š%1" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "å¹´" + diff --git a/rt/lib/RT/I18N/zh_tw.po b/rt/lib/RT/I18N/zh_tw.po new file mode 100644 index 000000000..8c8c86e1f --- /dev/null +++ b/rt/lib/RT/I18N/zh_tw.po @@ -0,0 +1,6416 @@ +# Traditional Chinese localization catalog for Request Tracker (RT) +msgid "" +msgstr "" +"Last-Translator: Autrijus Tang <autrijus@autrijus.org>\n" +"Language-Team: Chinese <members@ourinet.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: html/Elements/MyRequests:27 html/Elements/MyTickets:27 html/Work/Elements/MyApprovals:8 html/Work/Elements/MyRequests:15 html/Work/Elements/MyTickets:15 +msgid "#" +msgstr "#" + +#: NOT FOUND IN SOURCE +msgid "#%1" +msgstr "#%1" + +#: 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 +#. ($Ticket->Id, $Ticket->Subject) +#. ($Ticket->id, $Ticket->Subject) +#. ($ticket->Id, $ticket->Subject) +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "#%1: %2" +msgstr "#%1: %2" + +#: 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/Date.pm:337 +#. ($s, $time_unit) +msgid "%1 %2" +msgstr "%1 %2" + +#: lib/RT/Tickets_Overlay.pm:771 +#. ($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 "%7-%2-%3 %4:%5:%6 %1" + +#: lib/RT/Ticket_Overlay.pm:3532 lib/RT/Transaction_Overlay.pm:557 lib/RT/Transaction_Overlay.pm:599 +#. ($cf->Name, $new_value->Content) +#. ($field, $self->NewValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 added" +msgstr "%2 已新增為 %1" + +#: lib/RT/Date.pm:334 +#. ($s, $time_unit) +msgid "%1 %2 ago" +msgstr "%1 %2 之å‰" + +#: lib/RT/Ticket_Overlay.pm:3538 lib/RT/Transaction_Overlay.pm:564 +#. ($cf->Name, $old_value, $new_value->Content) +#. ($field, $self->OldValue, $self->NewValue) +msgid "%1 %2 changed to %3" +msgstr "%1 已從 %2 改為 %3" + +#: lib/RT/Ticket_Overlay.pm:3535 lib/RT/Transaction_Overlay.pm:560 lib/RT/Transaction_Overlay.pm:605 +#. ($cf->Name, $old_value) +#. ($field, $self->OldValue) +#. ($self->Field, $principal->Object->Name) +msgid "%1 %2 deleted" +msgstr "%2 已自 %1 刪除" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:157 +#. ($depth_str, $role_str, $group_str) +msgid "%1 %2 of group %3" +msgstr "%3 群組的 %1 %2" + +#: html/Admin/Elements/EditScrips:43 html/Admin/Elements/ListGlobalScrips:27 +#. (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/Search/Listing.html:56 html/Work/Search/index.html:28 +#. (($session{'tickets'}->FirstRow+1), ($session{'tickets'}->FirstRow() + $session{'tickets'}->RowsPerPage() )) +msgid "%1 - %2 shown" +msgstr "顯示第 %1 - %2 ç†" + +#: bin/rt-crontool:168 bin/rt-crontool:175 bin/rt-crontool:181 +#. ("--search-argument", "--search") +#. ("--condition-argument", "--condition") +#. ("--action-argument", "--action") +msgid "%1 - An argument to pass to %2" +msgstr "%1 - 傳éžçµ¦ %2 çš„ä¸€å€‹åƒæ•¸" + +#: bin/rt-crontool:184 +#. ("--verbose") +msgid "%1 - Output status updates to STDOUT" +msgstr "%1 - 將更新狀態輸出到 STDOUT" + +#: bin/rt-crontool:178 +#. ("--action") +msgid "%1 - Specify the action module you want to use" +msgstr "%1 - 指定欲使用的動作模組" + +#: bin/rt-crontool:172 +#. ("--condition") +msgid "%1 - Specify the condition module you want to use" +msgstr "%1 - 指定欲使用的æ¢ä»¶æ¨¡çµ„" + +#: bin/rt-crontool:165 +#. ("--search") +msgid "%1 - Specify the search module you want to use" +msgstr "%1 - 指定欲使用的查詢模組" + +#: lib/RT/ScripAction_Overlay.pm:121 +#. ($self->Id) +msgid "%1 ScripAction loaded" +msgstr "載入手續 %1" + +#: html/Edit/Elements/Page:48 +#. (scalar $count) +msgid "%1 Total" +msgstr "å…± %1 ç†" + +#: lib/RT/Ticket_Overlay.pm:3565 +#. ($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:116 lib/RT/Link_Overlay.pm:123 +#. ($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:51 lib/RT/Transaction_Overlay.pm:481 +#. ($self->BriefDescription , $self->CreatorObj->Name) +#. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name) +msgid "%1 by %2" +msgstr "%1 (%2)" + +#: lib/RT/Transaction_Overlay.pm:535 lib/RT/Transaction_Overlay.pm:624 lib/RT/Transaction_Overlay.pm:633 lib/RT/Transaction_Overlay.pm:636 +#. ($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 的值從 %2 改為 %3" + +#: lib/RT/Interface/Web.pm:893 x:896 +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:2830 +#. ($self) +msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent." +msgstr "%1 ç„¡æ³•å°‡ç¾æ³è¨æˆå·²è§£æ±ºã€‚RT 資料庫內容å¯èƒ½ä¸ä¸€è‡´ã€‚" + +#: html/Elements/MyTickets:24 html/Work/Elements/MyTickets:9 +#. ($rows) +msgid "%1 highest priority tickets I own..." +msgstr "å‰ %1 份待處ç†ç”³è«‹å–®..." + +#: html/Elements/MyRequests:24 html/Work/Elements/MyRequests:9 +#. ($rows) +msgid "%1 highest priority tickets I requested..." +msgstr "å‰ %1 份é€å‡ºçš„申請單..." + +#: html/Work/Elements/MyApprovals:5 +#. ($rows) +msgid "%1 highest priority tickets pending my approval..." +msgstr "å‰ %1 ä»½å¾…ç°½æ ¸ç”³è«‹å–®..." + +#: bin/rt-crontool:160 +#. ($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:743 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this queue." +msgstr "%1 å·²ä¸å†æ˜¯æ¤è¡¨å–®çš„ %2。" + +#: lib/RT/Ticket_Overlay.pm:1569 +#. ($principal->Object->Name, $args{'Type'}) +msgid "%1 is no longer a %2 for this ticket." +msgstr "%1 å·²ä¸å†æ˜¯æ¤ç”³è«‹å–®çš„ %2。" + +#: lib/RT/Ticket_Overlay.pm:3621 +#. ($args{'Value'}, $cf->Name) +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/ShowBasics:35 +#. ($TimeWorked) +msgid "%1 min" +msgstr "%1 分é˜" + +#: NOT FOUND IN SOURCE +msgid "%1 not shown" +msgstr "沒有顯示 %1" + +#: NOT FOUND IN SOURCE +msgid "%1 result(s) found" +msgstr "找到 %1 é …çµæžœ" + +#: html/User/Elements/DelegateRights:75 +#. (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:41 +#. (ref $self) +msgid "%1 will resolve all members of a resolved group ticket." +msgstr "%1 會解決在已解決群組裡æˆå“¡çš„申請單。" + +#: lib/RT/Action/StallDependent.pm:40 +#. (ref $self) +msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request." +msgstr "如果 %1 起始申請單ä¾è³´æ–¼æŸå€‹éˆçµï¼Œæˆ–是æŸå€‹éˆçµçš„æˆå“¡ï¼Œå®ƒå°‡æœƒè¢«å»¶å®•ã€‚" + +#: lib/RT/Transaction_Overlay.pm:433 +#. ($self) +msgid "%1: no attachment specified" +msgstr "%1:未指定附件" + +#: html/Ticket/Elements/ShowTransaction:89 html/Work/Tickets/Elements/ShowTransaction:154 +#. ($size) +msgid "%1b" +msgstr "%1 ä½å…ƒçµ„" + +#: html/Ticket/Elements/ShowTransaction:86 html/Work/Tickets/Elements/ShowTransaction:151 +#. (int($size/102.4)/10) +msgid "%1k" +msgstr "%1k ä½å…ƒçµ„" + +#: NOT FOUND IN SOURCE +msgid "%quant(%1,result) found" +msgstr "找到 %1 é …çµæžœ" + +#: lib/RT/Ticket_Overlay.pm:1158 +#. ($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:24 html/Admin/Elements/EditQueueWatchers:28 html/Admin/Elements/EditScrips:34 html/Admin/Elements/EditTemplates:35 html/Admin/Elements/EditWorkflows:36 html/Admin/Groups/Members.html:51 html/Ticket/Elements/EditLinks:32 html/Ticket/Elements/EditPeople:45 html/User/Groups/Members.html:54 +msgid "(Check box to delete)" +msgstr "(é»žé¸æ¬²åˆªé™¤çš„é …ç›®)" + +#: NOT FOUND IN SOURCE +msgid "(Check boxes to delete)" +msgstr "(é»žé¸æ¬²åˆªé™¤çš„é …ç›®)" + +#: html/Ticket/Create.html:177 +msgid "(Enter ticket ids or URLs, seperated with spaces)" +msgstr "(éµå…¥ç”³è«‹å–®ç·¨è™Ÿæˆ–ç¶²å€ï¼Œä»¥ç©ºç™½åˆ†éš”)" + +#: 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 "(如果留白, 則é è¨ç‚º %1)" + +#: NOT FOUND IN SOURCE +msgid "(No Value)" +msgstr "(沒有值)" + +#: html/Admin/Elements/EditCustomFields:32 html/Admin/Elements/ListGlobalCustomFields:31 +msgid "(No custom fields)" +msgstr "(沒有自訂欄ä½)" + +#: html/Admin/Groups/Members.html:49 html/User/Groups/Members.html:52 +msgid "(No members)" +msgstr "(沒有æˆå“¡)" + +#: html/Admin/Elements/EditScrips:31 html/Admin/Elements/ListGlobalScrips:31 +msgid "(No scrips)" +msgstr "(沒有手續)" + +#: html/Admin/Elements/EditTemplates:30 +msgid "(No templates)" +msgstr "沒有範本" + +#: html/Admin/Elements/EditWorkflows:31 +msgid "(No workflows)" +msgstr "沒有æµç¨‹" + +#: html/Ticket/Update.html:83 html/Work/Tickets/Update.html:52 +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/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 "(é€å‡ºæœ¬ä»½æ›´æ–°çš„副本給å單上以逗號隔開的管ç†å“¡é›»å郵件ä½å€ã€‚這<b>將會</b>更改後續的收件者å單。)" + +#: html/Ticket/Update.html:79 +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/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 "(é€å‡ºæœ¬ä»½æ›´æ–°çš„副本給å單上以逗號隔開的電å郵件ä½å€ã€‚這<b>將會</b>更改後續的收件者å單。)" + +#: html/Ticket/Elements/EditCustomFieldEntries:35 html/Work/Tickets/Elements/EditCustomFieldEntries:48 html/Work/Tickets/Elements/ShowCustomFieldEntries:13 +msgid "(delete)" +msgstr "(刪除)" + +#: html/Admin/Groups/index.html:32 html/User/Groups/index.html:32 +msgid "(empty)" +msgstr "(空白)" + +#: html/Edit/Global/CustomField/index.html:113 html/Edit/Global/Scrip/index.html:111 html/Edit/Global/Template/index.html:106 +msgid "(new)" +msgstr "(新增)" + +#: html/Admin/Users/index.html:38 +msgid "(no name listed)" +msgstr "(沒有列出姓å)" + +#: html/Elements/MyRequests:42 html/Elements/MyTickets:44 html/Work/Elements/MyApprovals:37 html/Work/Elements/MyRequests:42 html/Work/Elements/MyTickets:51 +msgid "(no subject)" +msgstr "(沒有主題)" + +#: html/Admin/Elements/SelectRights:47 html/Elements/SelectCustomFieldValue:29 html/Ticket/Elements/EditCustomField:60 html/Ticket/Elements/EditCustomFieldValues:52 html/Ticket/Elements/ShowCustomFields:35 html/Work/Elements/EditCustomFieldValues:50 html/Work/Elements/EditCustomFields:32 html/Work/Tickets/Elements/EditCustomFieldValues:33 lib/RT/Transaction_Overlay.pm:534 +msgid "(no value)" +msgstr "(ç„¡)" + +#: html/Ticket/Elements/BulkLinks:27 html/Ticket/Elements/EditLinks:115 html/Work/Search/BulkLinks:3 +msgid "(only one ticket)" +msgstr "(僅能指定一份申請單)" + +#: html/Elements/MyRequests:51 html/Elements/MyTickets:54 html/Work/Elements/List:17 html/Work/Elements/MyRequests:52 html/Work/Elements/MyTickets:66 html/Work/Tickets/Elements/ShowBasics:52 +msgid "(pending approval)" +msgstr "(ç‰å¾…ç°½æ ¸)" + +#: html/Elements/MyRequests:53 html/Elements/MyTickets:56 html/Work/Elements/MyRequests:54 html/Work/Elements/MyTickets:68 +msgid "(pending other tickets)" +msgstr "(ç‰å¾…其他申請單)" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:246 +msgid "(requestor's group)" +msgstr "(申請人所屬)" + +#: html/Admin/Users/Modify.html:49 +msgid "(required)" +msgstr "(å¿…å¡«)" + +#: html/Ticket/Elements/ShowTransaction:92 html/Work/Tickets/Elements/ShowTransaction:39 +msgid "(untitled)" +msgstr "(未命å)" + +#: 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 html/Work/Elements/104Header:43 +#. ($m->scomp('/Elements/SelectNewTicketQueue')) +msgid "<input type=\"submit\" value=\"New ticket in\"> %1" +msgstr "<input type=\"submit\" value=\"æå‡ºç”³è«‹å–®\"> %1" + +#: etc/initialdata.zh:221 etc/initialdata:203 +msgid "A blank template" +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:156 lib/RT/Principal_Overlay.pm:180 +msgid "ACE not found" +msgstr "找ä¸åˆ° ACE è¨å®š" + +#: lib/RT/ACE_Overlay.pm:830 +msgid "ACEs can only be created and deleted." +msgstr "祇能新增或刪除 ACE è¨å®šã€‚" + +#: NOT FOUND IN SOURCE +msgid "ACLEquivalence" +msgstr "ACLEquivalence" + +#: bin/rt-commit-handler:754 +msgid "Aborting to avoid unintended ticket modifications.\\n" +msgstr "離開以å…ä¸å°å¿ƒæ›´æ”¹åˆ°ç”³è«‹å–®ã€‚\\n" + +#: html/User/Elements/Tabs:31 +msgid "About me" +msgstr "個人資訊" + +#: html/Edit/Users/System:12 +msgid "Access Right" +msgstr "系統使用登錄權é™" + +#: html/Admin/Users/Modify.html:79 +msgid "Access control" +msgstr "å˜å–權é™" + +#: html/Admin/Elements/EditScrip:56 html/Work/Tickets/Elements/ShowTransaction:18 +msgid "Action" +msgstr "動作" + +#: lib/RT/Scrip_Overlay.pm:146 +#. ($args{'ScripAction'}) +msgid "Action %1 not found" +msgstr "動作 %1 找ä¸åˆ°" + +#: bin/rt-crontool:122 +msgid "Action committed." +msgstr "動作執行完畢" + +#: bin/rt-crontool:118 +msgid "Action prepared..." +msgstr "動作準備完畢..." + +#: html/Work/Elements/List:13 html/Work/Elements/SelectSearch:24 html/Work/Tickets/Create.html:28 html/Work/Tickets/Elements/ShowBasics:12 +msgid "Activated Date" +msgstr "申請啟動時間" + +#: html/Edit/Elements/104Buttons:71 html/Edit/Elements/ListButtons:7 +msgid "Add" +msgstr "新增" + +#: html/Search/Bulk.html:95 html/Work/Search/Bulk.html:74 +msgid "Add AdminCc" +msgstr "新增管ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: html/Search/Bulk.html:91 html/Work/Search/Bulk.html:68 +msgid "Add Cc" +msgstr "新增副本收件人" + +#: html/Ticket/Elements/EditCustomFieldEntries:71 html/Work/Tickets/Elements/ShowCustomFieldEntries:49 +msgid "Add Entry" +msgstr "新增列" + +#: html/Ticket/Create.html:113 html/Ticket/Update.html:98 html/Work/Tickets/Elements/AddAttachments:18 +msgid "Add More Files" +msgstr "新增更多附件" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:112 html/Admin/Elements/ModifyTemplateAsWorkflow:45 +msgid "Add Next State" +msgstr "æ–°å¢žä¸‹ä¸€é …é—œå¡" + +#: html/Search/Bulk.html:87 html/Work/Search/Bulk.html:62 +msgid "Add Requestor" +msgstr "新增申請人" + +#: html/Admin/Elements/AddCustomFieldValue:24 +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:54 +msgid "Add a scrip which will apply to all queues" +msgstr "新增一é“用於所有表單的手續" + +#: html/Search/Bulk.html:127 html/Work/Search/Bulk.html:80 +msgid "Add comments or replies to selected tickets" +msgstr "新增評論或回覆到指定的申請單" + +#: html/Admin/Groups/Members.html:41 html/User/Groups/Members.html:38 +msgid "Add members" +msgstr "新增æˆå“¡" + +#: html/Admin/Queues/People.html:65 html/Ticket/Elements/AddWatchers:27 +msgid "Add new watchers" +msgstr "新增視察員" + +#: NOT FOUND IN SOURCE +msgid "AddNextState" +msgstr "æ–°å¢žä¸‹ä¸€é …é—œå¡" + +#: lib/RT/Queue_Overlay.pm:643 +#. ($args{'Type'}) +msgid "Added principal as a %1 for this queue" +msgstr "å–®ä½å·²æ–°å¢žç‚ºæ¤è¡¨å–®çš„ %1" + +#: lib/RT/Ticket_Overlay.pm:1453 +#. ($self->loc($args{'Type'})) +msgid "Added principal as a %1 for this ticket" +msgstr "å–®ä½å·²æ–°å¢žç‚ºæ¤ç”³è«‹å–®çš„ %1" + +#: html/Admin/Elements/ModifyUser:75 html/Admin/Users/Modify.html:121 html/User/Prefs.html:87 html/Work/Preferences/Info:77 +msgid "Address1" +msgstr "ä½å€" + +#: html/Admin/Elements/ModifyUser:77 html/Admin/Users/Modify.html:126 html/User/Prefs.html:89 html/Work/Preferences/Info:79 +msgid "Address2" +msgstr "ä½å€(續)" + +#: NOT FOUND IN SOURCE +msgid "Adjust Blinking Rate" +msgstr "調整閃çˆé€Ÿåº¦å¿«æ…¢" + +#: html/Edit/Groups/Admin:9 +msgid "Admin" +msgstr "管ç†å“¡" + +#: html/Ticket/Create.html:73 +msgid "Admin Cc" +msgstr "管ç†å“¡å‰¯æœ¬" + +#: etc/initialdata.zh:303 etc/initialdata:280 +msgid "Admin Comment" +msgstr "管ç†å“¡è©•è«–" + +#: etc/initialdata.zh:261 etc/initialdata:259 +msgid "Admin Correspondence" +msgstr "管ç†å“¡å›žè¦†" + +#: NOT FOUND IN SOURCE +msgid "Admin Rights" +msgstr "管ç†å“¡æ¬Šé™" + +#: html/Admin/Queues/index.html:24 html/Admin/Queues/index.html:27 +msgid "Admin queues" +msgstr "表單管ç†" + +#: NOT FOUND IN SOURCE +msgid "Admin users" +msgstr "使用者管ç†" + +#: html/Admin/Global/index.html:25 html/Admin/Global/index.html:27 +msgid "Admin/Global configuration" +msgstr "管ç†/全域è¨å®š" + +#: NOT FOUND IN SOURCE +msgid "Admin/Groups" +msgstr "管ç†/群組" + +#: html/Admin/Queues/Modify.html:24 html/Admin/Queues/Modify.html:28 +msgid "Admin/Queue/Basics" +msgstr "管ç†/表單/基本資訊" + +#: html/Edit/Global/Basic/Top:60 +msgid "AdminAddress" +msgstr "管ç†å“¡ Email" + +#: NOT FOUND IN SOURCE +msgid "AdminAllPersonalGroups" +msgstr "ç®¡ç†æ‰€æœ‰ä»£ç†äººç¾¤çµ„" + +#: etc/initialdata.zh:74 etc/initialdata:56 html/Admin/Elements/ModifyTemplateAsWorkflow:155 html/Ticket/Elements/ShowPeople:38 html/Ticket/Update.html:49 lib/RT/ACE_Overlay.pm:88 +msgid "AdminCc" +msgstr "管ç†å“¡å‰¯æœ¬" + +#: NOT FOUND IN SOURCE +msgid "AdminComment" +msgstr "管ç†å“¡è©•è«–" + +#: NOT FOUND IN SOURCE +msgid "AdminCorrespondence" +msgstr "管ç†å“¡å›žè¦†" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "AdminCustomFields" +msgstr "管ç†è‡ªè¨‚欄ä½" + +#: html/Edit/Groups/Admin:12 lib/RT/Group_Overlay.pm:145 +msgid "AdminGroup" +msgstr "管ç†ç¾¤çµ„" + +#: NOT FOUND IN SOURCE +msgid "AdminGroupDescription" +msgstr "管ç†ç¾¤çµ„æè¿°" + +#: lib/RT/Group_Overlay.pm:147 +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:58 +msgid "AdminOwnPersonalGroups" +msgstr "管ç†ä»£ç†äººç¾¤çµ„" + +#: lib/RT/Queue_Overlay.pm:67 +msgid "AdminQueue" +msgstr "管ç†è¡¨å–®" + +#: lib/RT/System.pm:59 +msgid "AdminUsers" +msgstr "管ç†ä½¿ç”¨è€…" + +#: NOT FOUND IN SOURCE +msgid "Administrative" +msgstr "行政類" + +#: html/Admin/Queues/People.html:47 html/Ticket/Elements/EditPeople:53 +msgid "Administrative Cc" +msgstr "管ç†å“¡å‰¯æœ¬" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:233 +msgid "Admins" +msgstr "主管" + +#: NOT FOUND IN SOURCE +msgid "Advanced Search" +msgstr "進階查詢" + +#: html/Elements/SelectDateRelation:35 +msgid "After" +msgstr "晚於" + +#: NOT FOUND IN SOURCE +msgid "Age" +msgstr "ç¶“æ·æ™‚é–“" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:172 html/Edit/Global/Workflow/Action:39 +msgid "Alias" +msgstr "執行其他æµç¨‹" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:175 +msgid "Alias for" +msgstr "相當於" + +#: html/Edit/Queues/index.html:33 html/Work/Delegates/index.html:13 html/Work/Elements/SelectSearch:11 html/Work/Queues/Select.html:14 html/Work/Queues/index.html:13 +msgid "All" +msgstr "全部" + +#: etc/initialdata.zh:372 etc/initialdata:348 +msgid "All Approvals Passed" +msgstr "完æˆå…¨éƒ¨ç°½æ ¸" + +#: html/Edit/Global/Workflow/Condition:16 +msgid "All Condition" +msgstr "所有æ¢ä»¶" + +#: html/Admin/Elements/EditCustomFields:95 +msgid "All Custom Fields" +msgstr "所有自訂欄ä½" + +#: html/Admin/Queues/index.html:52 +msgid "All Queues" +msgstr "所有表單" + +#: NOT FOUND IN SOURCE +msgid "All Users" +msgstr "全體員工" + +#: 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/Edit/Global/Workflow/Condition:13 +msgid "Any Condition" +msgstr "ä»»æ„æ¢ä»¶" + +#: html/Edit/Global/Scrip/List:10 html/Edit/Global/Scrip/Top:74 +msgid "Apply Template" +msgstr "引用範本" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:138 html/Elements/Tabs:55 html/Work/Approvals/Elements/Approve:6 +msgid "Approval" +msgstr "ç°½æ ¸" + +#: 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 "ç°½æ ¸å–® #%1:%2" + +#: html/Approvals/index.html:53 +#. ($ticket->Id) +msgid "Approval #%1: Notes not recorded due to a system error" +msgstr "ç°½æ ¸å–® #%1:系統錯誤,記錄失敗" + +#: html/Approvals/index.html:51 +#. ($ticket->Id) +msgid "Approval #%1: Notes recorded" +msgstr "ç°½æ ¸å–® #%1:記錄完畢" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:123 +msgid "Approval Details" +msgstr "ç°½æ ¸ç´°ç¯€" + +#: NOT FOUND IN SOURCE +msgid "Approval Due" +msgstr "ç°½æ ¸æ™‚é™" + +#: html/Work/Approvals/Elements/Approve:37 +msgid "Approval Notes" +msgstr "ç°½æ ¸æ„見" + +#: etc/initialdata.zh:357 etc/initialdata:336 +msgid "Approval Passed" +msgstr "å®ŒæˆæŸé …ç°½æ ¸" + +#: etc/initialdata.zh:383 etc/initialdata:359 +msgid "Approval Rejected" +msgstr "é§å›žæŸé …ç°½æ ¸" + +#: NOT FOUND IN SOURCE +msgid "Approval Result" +msgstr "ç°½æ ¸çµæžœ" + +#: html/Work/Approvals/Elements/Approve:25 +msgid "Approval Status" +msgstr "æ ¸å‡†çµæžœ" + +#: NOT FOUND IN SOURCE +msgid "Approval Type" +msgstr "ç°½æ ¸ç¨®é¡ž" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:25 +msgid "Approval diagram" +msgstr "ç°½æ ¸æµç¨‹" + +#: html/Approvals/Elements/Approve:43 html/Work/Approvals/Elements/Approve:29 +msgid "Approve" +msgstr "æ ¸å‡†" + +#: html/Work/Approvals/Elements/Approve:21 html/Work/Elements/List:9 +msgid "Approver" +msgstr "ç°½æ ¸äºº" + +#: html/Edit/Global/Workflow/Action:29 html/Edit/Global/Workflow/Owner.html:10 +msgid "Approver Setting" +msgstr "åŸ·è¡Œç°½æ ¸äººè¨å®š" + +#: etc/initialdata.zh:516 etc/initialdata:486 etc/upgrade/2.1.71:148 html/Edit/Elements/CreateApprovalsQueue:122 +msgid "Approver's notes: %1" +msgstr "ç°½æ ¸å‚™è¨»ï¼š%1" + +#: NOT FOUND IN SOURCE +msgid "Apr" +msgstr "四月" + +#: lib/RT/Date.pm:414 +msgid "Apr." +msgstr "04" + +#: NOT FOUND IN SOURCE +msgid "April" +msgstr "四月" + +#: html/Edit/Elements/104Buttons:24 +msgid "Are you sure to delete checked items?" +msgstr "您確定è¦åˆªé™¤ï¼Ÿ" + +#: html/Elements/SelectSortOrder:34 +msgid "Ascending" +msgstr "éžå¢ž" + +#: html/Search/Bulk.html:136 html/SelfService/Update.html:32 html/Ticket/ModifyAll.html:82 html/Ticket/Update.html:98 html/Work/Search/Bulk.html:88 +msgid "Attach" +msgstr "附件" + +#: html/SelfService/Create.html:64 html/Ticket/Create.html:109 html/Work/Tickets/Elements/AddAttachments:15 +msgid "Attach file" +msgstr "é™„åŠ æª”æ¡ˆ" + +#: html/Ticket/Create.html:97 html/Ticket/Update.html:87 html/Work/Tickets/Elements/AddAttachments:6 +msgid "Attached file" +msgstr "ç¾æœ‰é™„ä»¶" + +#: NOT FOUND IN SOURCE +msgid "Attachment '%1' could not be loaded" +msgstr "無法載入附件 '%1'" + +#: lib/RT/Transaction_Overlay.pm:441 +msgid "Attachment created" +msgstr "附件新增完畢" + +#: lib/RT/Tickets_Overlay.pm:1189 +msgid "Attachment filename" +msgstr "附件檔å" + +#: html/Ticket/Elements/ShowAttachments:25 html/Work/Tickets/Elements/ShowTransaction:32 +msgid "Attachments" +msgstr "附件" + +#: NOT FOUND IN SOURCE +msgid "Aug" +msgstr "八月" + +#: lib/RT/Date.pm:418 +msgid "Aug." +msgstr "08" + +#: NOT FOUND IN SOURCE +msgid "August" +msgstr "八月" + +#: html/Admin/Elements/ModifyUser:65 +msgid "AuthSystem" +msgstr "èªè‰æ–¹å¼" + +#: NOT FOUND IN SOURCE +msgid "AutoReject" +msgstr "自動é§å›žè¡¨å–®" + +#: NOT FOUND IN SOURCE +msgid "AutoResolve" +msgstr "自動完æˆè¡¨å–®è™•ç†" + +#: etc/initialdata.zh:224 etc/initialdata:206 +msgid "Autoreply" +msgstr "自動回覆" + +#: etc/initialdata.zh:90 etc/initialdata:72 +msgid "Autoreply To Requestors" +msgstr "自動å°ç”³è«‹äººå›žè¦†" + +#: NOT FOUND IN SOURCE +msgid "AutoreplyToRequestors" +msgstr "自動å°ç”³è«‹äººå›žè¦†" + +#: html/Edit/Rights/index.html:16 +msgid "Available Rights:" +msgstr "權é™é …目列表:" + +#: NOT FOUND IN SOURCE +msgid "Back to Homepage" +msgstr "回到首é " + +#: html/Work/Elements/BackButton:2 html/Work/Search/Bulk.html:101 +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" + +#: bin/rt-commit-handler:826 +#. ($val) +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/GroupTabs:38 html/Admin/Elements/QueueTabs:38 html/Admin/Elements/UserTabs:37 html/Edit/Global/autohandler:6 html/Edit/Queues/autohandler:17 html/Edit/Users/index.html:121 html/Ticket/Elements/Tabs:89 html/User/Elements/GroupTabs:37 +msgid "Basics" +msgstr "基本資訊" + +#: html/Ticket/Update.html:81 html/Work/Tickets/Update.html:49 +msgid "Bcc" +msgstr "密件副本" + +#: html/Admin/Elements/EditScrip:87 html/Admin/Global/GroupRights.html:84 html/Admin/Global/Template.html:45 html/Admin/Global/UserRights.html:53 html/Admin/Global/Workflow.html:46 html/Admin/Groups/GroupRights.html:72 html/Admin/Groups/Members.html:80 html/Admin/Groups/Modify.html:55 html/Admin/Groups/UserRights.html:54 html/Admin/Queues/GroupRights.html:85 html/Admin/Queues/Template.html:44 html/Admin/Queues/UserRights.html:53 html/Admin/Queues/Workflow.html:44 html/User/Groups/Modify.html:55 +msgid "Be sure to save your changes" +msgstr "請別忘了儲å˜ä¿®æ”¹ã€‚" + +#: html/Elements/SelectDateRelation:33 lib/RT/CurrentUser.pm:321 +msgid "Before" +msgstr "æ—©æ–¼" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:44 +msgid "Begin Approval" +msgstr "é–‹å§‹ç°½æ ¸" + +#: NOT FOUND IN SOURCE +msgid "Begin From " +msgstr "èµ·å§‹æ—¥" + +#: html/Edit/Users/Info:25 +msgid "Birthday" +msgstr "生日" + +#: etc/initialdata.zh:220 etc/initialdata:202 +msgid "Blank" +msgstr "空白範本" + +#: html/Search/Listing.html:78 html/Work/Search/index.html:53 +msgid "Bookmarkable URL for this search" +msgstr "å°‡æŸ¥è©¢çµæžœè½‰ç‚ºå¯æ”¾å…¥æ›¸ç±¤çš„ç¶²å€" + +#: html/Ticket/Elements/ShowHistory:38 html/Ticket/Elements/ShowHistory:44 +msgid "Brief headers" +msgstr "ç²¾ç°¡æ¨™é æª”" + +#: html/Search/Bulk.html:24 html/Search/Bulk.html:25 +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:1524 +msgid "Can not modify system users" +msgstr "無法更改系統使用者" + +#: lib/RT/Queue_Overlay.pm:66 +msgid "Can this principal see this queue" +msgstr "è©²å–®ä½æ˜¯å¦èƒ½æŸ¥é–±æ¤è¡¨å–®" + +#: lib/RT/CustomField_Overlay.pm:205 +msgid "Can't add a custom field value without a name" +msgstr "ä¸èƒ½æ–°å¢žæ²’有å稱的自訂欄ä½å€¼" + +#: lib/RT/Link_Overlay.pm:131 +msgid "Can't link a ticket to itself" +msgstr "申請單ä¸èƒ½éˆçµè‡ªå·±ã€‚" + +#: lib/RT/Ticket_Overlay.pm:2807 +msgid "Can't merge into a merged ticket. You should never get this error" +msgstr "ä¸èƒ½æ•´åˆé€²å·²æ•´åˆéŽçš„申請單。這個錯誤ä¸è©²ç™¼ç”Ÿã€‚" + +#: lib/RT/Ticket_Overlay.pm:2625 lib/RT/Ticket_Overlay.pm:2694 +msgid "Can't specifiy both base and target" +msgstr "ä¸èƒ½åŒæ™‚指定起始申請單與目的申請單" + +#: html/Edit/Elements/PopFooter:8 +msgid "Cancel" +msgstr "å–æ¶ˆ" + +#: html/autohandler:113 +#. ($msg) +msgid "Cannot create user: %1" +msgstr "無法新增使用者:%1" + +#: NOT FOUND IN SOURCE +msgid "Card No." +msgstr "å¡è™Ÿ" + +#: NOT FOUND IN SOURCE +msgid "Categories" +msgstr "分類管ç†" + +#: NOT FOUND IN SOURCE +msgid "Category" +msgstr "分類" + +#: etc/initialdata.zh:68 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:44 html/Ticket/Update.html:76 html/Work/Tickets/Update.html:43 lib/RT/ACE_Overlay.pm:87 +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:30 +msgid "Change password" +msgstr "更改密碼" + +#: html/Edit/Global/Basic/Top:70 +msgid "ChangeOwnerUI" +msgstr "å¯å¦é¸æ“‡è¡¨å–®æ‰¿è¾¦äºº" + +#: html/Ticket/Create.html:100 html/Ticket/Elements/EditCustomFieldEntries:35 html/Ticket/Update.html:90 html/Work/Tickets/Elements/ShowCustomFieldEntries:13 +msgid "Check box to delete" +msgstr "鏿“‡æ¬²åˆªé™¤çš„é …ç›®" + +#: html/Admin/Elements/SelectRights:30 +msgid "Check box to revoke right" +msgstr "鏿“‡æ¬²æ’¤æ¶ˆçš„æ¬Šåˆ©" + +#: html/Ticket/Create.html:182 html/Ticket/Elements/BulkLinks:42 html/Ticket/Elements/EditLinks:130 html/Ticket/Elements/EditLinks:68 html/Ticket/Elements/ShowLinks:56 html/Work/Search/BulkLinks:18 +msgid "Children" +msgstr "å申請單" + +#: html/Edit/Elements/PickUsers:21 html/Edit/Global/UserRight/List:8 html/Edit/Global/UserRight/Top:19 html/Edit/Users/List:6 html/Edit/Users/Top:18 +msgid "Chinese Name" +msgstr "䏿–‡å§“å" + +#: NOT FOUND IN SOURCE +msgid "Chinese/English" +msgstr "ä¸è‹±æ–‡" + +#: html/Admin/Elements/ModifyUser:79 html/Admin/Users/Modify.html:131 html/User/Prefs.html:91 html/Work/Preferences/Info:81 +msgid "City" +msgstr "所在城市" + +#: html/Edit/Elements/104Top:30 +msgid "ClassicUI" +msgstr "傳統介é¢" + +#: html/Ticket/Elements/ShowDates:46 +msgid "Closed" +msgstr "已解決" + +#: html/SelfService/Closed.html:24 +msgid "Closed Tickets" +msgstr "已解決的申請單" + +#: html/SelfService/Elements/Tabs:44 +msgid "Closed tickets" +msgstr "已解決的申請單" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:181 html/Edit/Global/Workflow/Action:58 html/Edit/Global/Workflow/Condition:51 +msgid "Code" +msgstr "執行程å¼ç¢¼" + +#: NOT FOUND IN SOURCE +msgid "Command not understood!\\n" +msgstr "指令無法辨è˜ï¼\\n" + +#: html/Ticket/Elements/ShowTransaction:166 html/Ticket/Elements/Tabs:152 html/Work/Search/Bulk.html:89 html/Work/Tickets/Display.html:37 html/Work/Tickets/Elements/ShowTransaction:114 html/Work/Tickets/Elements/ShowTransaction:27 +msgid "Comment" +msgstr "è©•è«–" + +#: html/Admin/Elements/ModifyQueue:44 html/Admin/Queues/Modify.html:57 +msgid "Comment Address" +msgstr "è©•è«–é›»å郵件地å€" + +#: NOT FOUND IN SOURCE +msgid "Comment not recorded" +msgstr "評論未被紀錄" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "Comment on tickets" +msgstr "å°ç”³è«‹å–®æå‡ºè©•è«–" + +#: lib/RT/Queue_Overlay.pm:85 +msgid "CommentOnTicket" +msgstr "評論申請單" + +#: html/Admin/Elements/ModifyUser:34 html/Work/Tickets/Update.html:59 +msgid "Comments" +msgstr "è©•è«–" + +#: html/Ticket/ModifyAll.html:69 html/Ticket/Update.html:68 html/Work/Tickets/Update.html:35 +msgid "Comments (Not sent to requestors)" +msgstr "è©•è«–(ä¸é€çµ¦ç”³è«‹äºº)" + +#: html/Search/Bulk.html:131 html/Work/Search/Bulk.html:83 +msgid "Comments (not sent to requestors)" +msgstr "è©•è«–(ä¸é€çµ¦ç”³è«‹äºº)" + +#: html/Elements/ViewUser:26 +#. ($name) +msgid "Comments about %1" +msgstr "å° %1 的評論" + +#: html/Admin/Users/Modify.html:184 html/Ticket/Elements/ShowRequestor:43 +msgid "Comments about this user" +msgstr "使用者æè¿°" + +#: lib/RT/Transaction_Overlay.pm:543 +msgid "Comments added" +msgstr "新增評論完畢" + +#: html/Edit/Elements/PopFooter:4 html/Edit/Elements/PopFooter:6 +msgid "Commit" +msgstr "確èª" + +#: lib/RT/Action/Generic.pm:139 +msgid "Commit Stubbed" +msgstr "消除更動完畢" + +#: html/Edit/Users/Info:41 +msgid "Company Name" +msgstr "å…¬å¸å稱" + +#: NOT FOUND IN SOURCE +msgid "Compile Restrictions" +msgstr "è¨å®šæŸ¥è©¢æ¢ä»¶" + +#: html/Admin/Elements/EditScrip:40 html/Admin/Elements/ModifyTemplateAsWorkflow:127 +msgid "Condition" +msgstr "æ¢ä»¶" + +#: bin/rt-crontool:108 +msgid "Condition matches..." +msgstr "ç¬¦åˆæ¢ä»¶..." + +#: lib/RT/Scrip_Overlay.pm:159 +msgid "Condition not found" +msgstr "未找到符åˆçš„ç¾æ³" + +#: html/Edit/Global/GroupRight/Top:26 html/Edit/Global/UserRight/Top:45 html/Edit/Groups/Member:57 html/Elements/Tabs:49 +msgid "Configuration" +msgstr "è¨å®š" + +#: html/SelfService/Prefs.html:32 +msgid "Confirm" +msgstr "確èªå¯†ç¢¼" + +#: NOT FOUND IN SOURCE +msgid "Confirm Password" +msgstr "密碼確èª" + +#: html/Work/Approvals/Display.html:25 html/Work/Tickets/Create.html:161 html/Work/Tickets/Create.html:174 html/Work/Tickets/Update.html:81 +msgid "Confirm Submit" +msgstr "確定é€å‡º" + +#: NOT FOUND IN SOURCE +msgid "Contact System Administrator" +msgstr "連絡系統管ç†å“¡" + +#: html/Admin/Elements/ModifyUser:59 +msgid "ContactInfoSystem" +msgstr "連絡資訊系統" + +#: NOT FOUND IN SOURCE +msgid "Contacted date '%1' could not be parsed" +msgstr "無法解讀è¯çµ¡æ—¥æœŸ '%1'" + +#: html/Admin/Elements/ModifyTemplate:43 html/Admin/Elements/ModifyTemplateAsWorkflow:200 html/Ticket/ModifyAll.html:86 +msgid "Content" +msgstr "內容" + +#: NOT FOUND IN SOURCE +msgid "Coould not create group" +msgstr "無法新增群組" + +#: html/Edit/Elements/104Buttons:74 +msgid "Copy" +msgstr "複製" + +#: NOT FOUND IN SOURCE +msgid "Copy Field From:" +msgstr "欲複製欄ä½ï¼š" + +#: etc/initialdata.zh:282 etc/initialdata:271 +msgid "Correspondence" +msgstr "回覆" + +#: html/Admin/Elements/ModifyQueue:38 html/Admin/Queues/Modify.html:50 +msgid "Correspondence Address" +msgstr "申請單回覆地å€" + +#: lib/RT/Transaction_Overlay.pm:539 +msgid "Correspondence added" +msgstr "新增申請單回覆" + +#: NOT FOUND IN SOURCE +msgid "Correspondence not recorded" +msgstr "未紀錄申請單回覆" + +#: lib/RT/Ticket_Overlay.pm:3552 +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/Ticket_Overlay.pm:3058 lib/RT/Ticket_Overlay.pm:3066 lib/RT/Ticket_Overlay.pm:3083 +msgid "Could not change owner. " +msgstr "ä¸èƒ½æ›´æ”¹æ‰¿è¾¦äººã€‚ " + +#: html/Admin/Elements/EditCustomField:84 html/Admin/Elements/EditCustomFields:165 html/Edit/Global/CustomField/index.html:117 +#. ($msg) +msgid "Could not create CustomField" +msgstr "無法新增自訂欄ä½" + +#: html/Edit/Global/Workflow/index.html:126 +#. ($msg) +msgid "Could not create Scrip" +msgstr "無法建立訊æ¯é€šçŸ¥" + +#: html/Edit/Global/Template/index.html:110 +#. ($msg) +msgid "Could not create Template" +msgstr "無法建立通知範本" + +#: html/User/Groups/Modify.html:76 lib/RT/Group_Overlay.pm:473 lib/RT/Group_Overlay.pm:480 +msgid "Could not create group" +msgstr "無法新增群組" + +#: html/Admin/Global/Template.html:74 html/Admin/Queues/Template.html:71 +#. ($msg) +msgid "Could not create template: %1" +msgstr "無法新增範本:%1" + +#: lib/RT/Ticket_Overlay.pm:1091 lib/RT/Ticket_Overlay.pm:334 +msgid "Could not create ticket. Queue not set" +msgstr "無法新增申請單。尚未指定表單。" + +#: lib/RT/User_Overlay.pm:267 lib/RT/User_Overlay.pm:279 lib/RT/User_Overlay.pm:297 lib/RT/User_Overlay.pm:483 +msgid "Could not create user" +msgstr "無法新增使用者" + +#: NOT FOUND IN SOURCE +msgid "Could not create watcher for requestor" +msgstr "無法為申請人新增視察員" + +#: html/Admin/Elements/ModifyWorkflow:219 html/Admin/Global/Workflow.html:75 html/Admin/Queues/Workflow.html:71 +#. ($msg) +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:621 lib/RT/Ticket_Overlay.pm:1421 +msgid "Could not find or create that user" +msgstr "找ä¸åˆ°æˆ–無法新增該å使用者" + +#: lib/RT/Queue_Overlay.pm:682 lib/RT/Ticket_Overlay.pm:1500 +msgid "Could not find that principal" +msgstr "找ä¸åˆ°è©²å–®ä½" + +#: NOT FOUND IN SOURCE +msgid "Could not find user %1." +msgstr "找ä¸åˆ°ä½¿ç”¨è€… %1。" + +#: html/Admin/Groups/Members.html:87 html/Edit/Users/index.html:83 html/User/Groups/Members.html:89 html/User/Groups/Modify.html:81 +#. ( . $GroupId) +msgid "Could not load group" +msgstr "無法載入群組" + +#: lib/RT/Queue_Overlay.pm:641 +#. ($args{'Type'}) +msgid "Could not make that principal a %1 for this queue" +msgstr "無法將該單ä½è¨ç‚ºæ¤è¡¨å–®çš„ %1。" + +#: lib/RT/Ticket_Overlay.pm:1442 +#. ($self->loc($args{'Type'})) +msgid "Could not make that principal a %1 for this ticket" +msgstr "無法將該單ä½è¨ç‚ºæ¤ç”³è«‹å–®çš„ %1。" + +#: lib/RT/Queue_Overlay.pm:740 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this queue" +msgstr "ç„¡æ³•å°‡å–®ä½ %1 從表單移除。" + +#: lib/RT/Ticket_Overlay.pm:1558 +#. ($args{'Type'}) +msgid "Could not remove that principal as a %1 for this ticket" +msgstr "ç„¡æ³•å°‡å–®ä½ %1 從申請單移除。" + +#: lib/RT/Group_Overlay.pm:984 +msgid "Couldn't add member to group" +msgstr "無法新增æˆå“¡è‡³ç¾¤çµ„" + +#: lib/RT/Ticket_Overlay.pm:3562 lib/RT/Ticket_Overlay.pm:3618 +#. ($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/Interface/Web.pm:902 x:905 +msgid "Couldn't find row" +msgstr "找ä¸åˆ°æ¤åˆ—資料" + +#: lib/RT/Group_Overlay.pm:958 +msgid "Couldn't find that principal" +msgstr "找ä¸åˆ°è©²å–®ä½" + +#: lib/RT/CustomField_Overlay.pm:239 +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:111 +#. ($self->Id) +msgid "Couldn't load %1 from the users database.\\n" +msgstr "無法從使用者資料庫載入 %1。\\n" + +#: 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 "無法載入手續。" + +#: html/Admin/Groups/GroupRights.html:87 html/Admin/Groups/UserRights.html:74 html/Edit/Global/GroupRight/Add.html:54 html/Edit/Global/UserRight/Add.html:23 html/Edit/Groups/Member:121 html/Edit/Groups/Members/Add.html:44 html/Edit/Rights/index.html:57 +#. ($Group) +#. ($ObjectGroup) +#. ($id) +msgid "Couldn't load group %1" +msgstr "無法載入手續 %1" + +#: lib/RT/Link_Overlay.pm:174 lib/RT/Link_Overlay.pm:183 lib/RT/Link_Overlay.pm:210 +msgid "Couldn't load link" +msgstr "無法載入éˆçµã€‚" + +#: html/Admin/Elements/EditCustomFields:146 html/Admin/Queues/People.html:120 +#. ($id) +msgid "Couldn't load queue" +msgstr "無法載入表單" + +#: html/Admin/Queues/GroupRights.html:100 html/Admin/Queues/UserRights.html:71 html/Edit/Global/GroupRight/Add.html:50 html/Edit/Global/GroupRight/index.html:81 html/Edit/Global/UserRight/Add.html:19 html/Edit/Global/UserRight/index.html:83 html/Edit/Rights/index.html:53 +#. ($Queue) +#. ($id) +msgid "Couldn't load queue %1" +msgstr "無法載入表單 %1" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load scrip" +msgstr "無法載入手續" + +#: NOT FOUND IN SOURCE +msgid "Couldn't load template" +msgstr "無法載入範本" + +#: html/Admin/Users/Prefs.html:78 +#. ($id) +msgid "Couldn't load that user (%1)" +msgstr "無法載入該å使用者(%1)" + +#: html/SelfService/Display.html:108 +#. ($id) +msgid "Couldn't load ticket '%1'" +msgstr "無法載入申請單 '%1'" + +#: html/Admin/Elements/ModifyUser:85 html/Admin/Users/Modify.html:148 html/User/Prefs.html:97 html/Work/Preferences/Info:87 +msgid "Country" +msgstr "國家" + +#: html/Admin/Elements/CreateUserCalled:25 html/Edit/Elements/PopHeader:29 html/Edit/Global/GroupRight/Add.html:18 html/Ticket/Create.html:134 html/Ticket/Create.html:194 +msgid "Create" +msgstr "新增" + +#: html/Edit/Groups/MemberGroups/Add.html:17 +msgid "Create Subgroup:" +msgstr "新增å群組:" + +#: etc/initialdata.zh:145 etc/initialdata:127 +msgid "Create Tickets" +msgstr "新增申請單" + +#: NOT FOUND IN SOURCE +msgid "Create User:" +msgstr "新增æˆå“¡ï¼š" + +#: html/Admin/Elements/EditCustomField:74 +msgid "Create a CustomField" +msgstr "新增自訂欄ä½" + +#: html/Admin/Queues/CustomField.html:47 +#. ($QueueObj->Name()) +msgid "Create a CustomField for queue %1" +msgstr "為 %1 表單新增自訂欄ä½" + +#: html/Admin/Global/CustomField.html:47 +msgid "Create a CustomField which 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:66 html/Admin/Groups/Modify.html:92 +msgid "Create a new group" +msgstr "新增群組" + +#: html/User/Groups/Modify.html:66 html/User/Groups/Modify.html:91 +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:24 html/Ticket/Create.html:27 html/Ticket/Create.html:35 +msgid "Create a new ticket" +msgstr "新增申請單" + +#: html/Admin/Users/Modify.html:213 html/Admin/Users/Modify.html:240 +msgid "Create a new user" +msgstr "新增使用者" + +#: NOT FOUND IN SOURCE +msgid "Create a new workflow" +msgstr "新增æµç¨‹" + +#: html/Admin/Queues/Modify.html:103 +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:58 +#. ($QueueObj->Name) +msgid "Create a scrip for queue %1" +msgstr "為 %1 表單新增手續" + +#: html/Admin/Global/Template.html:68 html/Admin/Queues/Template.html:64 +msgid "Create a template" +msgstr "新增範本" + +#: html/SelfService/Create.html:24 +msgid "Create a ticket" +msgstr "æå‡ºç”³è«‹å–®" + +#: html/Admin/Elements/ModifyWorkflow:206 html/Admin/Global/Workflow.html:69 html/Admin/Queues/Workflow.html:64 +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.zh:147 etc/initialdata:129 +msgid "Create new tickets based on this scrip's template" +msgstr "便“šæ¤é …手續內的模版,新增申請單" + +#: html/SelfService/Create.html:77 +msgid "Create ticket" +msgstr "新增申請單" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "Create tickets in this queue" +msgstr "在æ¤è¡¨å–®ä¸æ–°å¢žç”³è«‹å–®" + +#: lib/RT/Queue_Overlay.pm:71 +msgid "Create, delete and modify custom fields" +msgstr "新增ã€åˆªé™¤åŠæ›´æ”¹è‡ªè¨‚欄ä½" + +#: lib/RT/Queue_Overlay.pm:67 +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:58 +msgid "Create, delete and modify the members of personal groups" +msgstr "新增ã€åˆªé™¤åŠæ›´æ”¹ä»£ç†äººç¾¤çµ„" + +#: lib/RT/System.pm:59 +msgid "Create, delete and modify users" +msgstr "新增ã€åˆªé™¤åŠæ›´æ”¹ä½¿ç”¨è€…" + +#: lib/RT/Queue_Overlay.pm:83 +msgid "CreateTicket" +msgstr "新增申請單" + +#: html/Elements/SelectDateType:25 html/Ticket/Elements/ShowDates:26 lib/RT/Ticket_Overlay.pm:1185 +msgid "Created" +msgstr "新增日" + +#: html/Admin/Elements/EditCustomField:87 +#. ($CustomFieldObj->Name()) +msgid "Created CustomField %1" +msgstr "è‡ªè¨‚æ¬„ä½ %1 新增æˆåŠŸ" + +#: NOT FOUND IN SOURCE +msgid "Created template %1" +msgstr "範本 %1 新增æˆåŠŸ" + +#: html/Admin/Elements/ModifyWorkflow:221 +#. (loc( $WorkflowObj->Name() )) +msgid "Created workflow %1" +msgstr "æµç¨‹ %1 新增æˆåŠŸ" + +#: 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 "ç¾æœ‰è‡ªè¨‚欄ä½" + +#: html/Edit/Groups/MemberGroups/Add.html:14 +msgid "Current Groups:" +msgstr "ç¾æœ‰ç¾¤çµ„列表:" + +#: html/Ticket/Elements/EditLinks:27 +msgid "Current Relationships" +msgstr "ç¾æœ‰é—œä¿‚" + +#: html/Edit/Rights/index.html:19 +msgid "Current Rights:" +msgstr "ç¾æœ‰æ¬Šé™ï¼š" + +#: html/Admin/Elements/EditScrips:29 +msgid "Current Scrips" +msgstr "ç¾æœ‰æ‰‹çºŒ" + +#: html/Work/Tickets/Create.html:50 html/Work/Tickets/Elements/ShowBasics:47 +msgid "Current Status" +msgstr "ç›®å‰ç‹€æ…‹" + +#: NOT FOUND IN SOURCE +msgid "Current Templates" +msgstr "ç¾æœ‰ç¯„本" + +#: html/Admin/Groups/Members.html:38 html/User/Groups/Members.html:41 +msgid "Current members" +msgstr "ç¾æœ‰æˆå“¡" + +#: html/Admin/Elements/SelectRights:28 +msgid "Current rights" +msgstr "ç¾æœ‰æ¬Šé™" + +#: html/Search/Listing.html:70 html/Work/Search/index.html:42 +msgid "Current search criteria" +msgstr "ç¾æœ‰æŸ¥è©¢æ¢ä»¶" + +#: html/Admin/Queues/People.html:40 html/Ticket/Elements/EditPeople:44 +msgid "Current watchers" +msgstr "ç¾æœ‰è¦–察員" + +#: html/Admin/Global/CustomField.html:54 +#. ($CustomField) +msgid "Custom Field #%1" +msgstr "è‡ªè¨‚æ¬„ä½ #%1" + +#: html/Admin/Elements/QueueTabs:52 html/Admin/Elements/SystemTabs:39 html/Admin/Global/index.html:49 html/Edit/Global/autohandler:7 html/Edit/Queues/autohandler:18 html/Ticket/Elements/ShowSummary:35 +msgid "Custom Fields" +msgstr "自訂欄ä½" + +#: NOT FOUND IN SOURCE +msgid "Custom Fields which apply to all queues" +msgstr "é©ç”¨æ–¼æ‰€æœ‰è¡¨å–®çš„自訂欄ä½" + +#: html/Admin/Elements/EditScrip:72 html/Edit/Global/Scrip/Top:69 +msgid "Custom action cleanup code" +msgstr "動作後執行程å¼" + +#: html/Admin/Elements/EditScrip:64 html/Edit/Global/Scrip/Top:62 +msgid "Custom action preparation code" +msgstr "動作å‰åŸ·è¡Œç¨‹å¼" + +#: html/Admin/Elements/EditScrip:48 html/Edit/Global/Scrip/Top:35 html/Edit/Global/Scrip/Top:61 +msgid "Custom condition" +msgstr "自訂æ¢ä»¶" + +#: lib/RT/Tickets_Overlay.pm:1618 +#. ($CF->Name , $args{OPERATOR} , $args{VALUE}) +msgid "Custom field %1 %2 %3" +msgstr "è‡ªè¨‚æ¬„ä½ %1 %2 %3" + +#: lib/RT/Tickets_Overlay.pm:1613 +#. ($CF->Name) +msgid "Custom field %1 has a value." +msgstr "è‡ªè¨‚æ¬„ä½ %1 已有值" + +#: lib/RT/Tickets_Overlay.pm:1610 +#. ($CF->Name) +msgid "Custom field %1 has no value." +msgstr "è‡ªè¨‚æ¬„ä½ %1 沒有值" + +#: lib/RT/Ticket_Overlay.pm:3454 +#. ($args{'Field'}) +msgid "Custom field %1 not found" +msgstr "找ä¸åˆ°è‡ªè¨‚æ¬„ä½ %1" + +#: html/Admin/Elements/EditCustomFields:196 +msgid "Custom field deleted" +msgstr "自訂欄ä½å·²åˆªé™¤" + +#: lib/RT/Ticket_Overlay.pm:3604 +msgid "Custom field not found" +msgstr "找ä¸åˆ°è‡ªè¨‚欄ä½" + +#: lib/RT/CustomField_Overlay.pm:349 +#. ($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:249 +msgid "Custom field value could not be deleted" +msgstr "無法刪除自訂欄ä½å€¼" + +#: lib/RT/CustomField_Overlay.pm:355 +msgid "Custom field value could not be found" +msgstr "找ä¸åˆ°è‡ªè¨‚欄ä½å€¼" + +#: lib/RT/CustomField_Overlay.pm:247 lib/RT/CustomField_Overlay.pm:357 +msgid "Custom field value deleted" +msgstr "自訂欄ä½å€¼åˆªé™¤æˆåŠŸ" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:145 html/Edit/Global/Workflow/Owner.html:90 lib/RT/Transaction_Overlay.pm:548 +msgid "CustomField" +msgstr "自訂欄ä½" + +#: NOT FOUND IN SOURCE +msgid "Data error" +msgstr "資料錯誤" + +#: NOT FOUND IN SOURCE +msgid "Date of Departure" +msgstr "出發日期" + +#: html/SelfService/Display.html:38 html/Ticket/Create.html:160 html/Ticket/Elements/ShowSummary:54 html/Ticket/Elements/Tabs:92 html/Ticket/ModifyAll.html:43 html/Work/Tickets/Elements/ShowTransaction:14 +msgid "Dates" +msgstr "日期" + +#: NOT FOUND IN SOURCE +msgid "Dec" +msgstr "å二月" + +#: lib/RT/Date.pm:422 +msgid "Dec." +msgstr "12" + +#: NOT FOUND IN SOURCE +msgid "December" +msgstr "å二月" + +#: NOT FOUND IN SOURCE +msgid "Default Autoresponse Template" +msgstr "é è¨è‡ªå‹•回應範本" + +#: etc/initialdata.zh:225 etc/initialdata:207 +msgid "Default Autoresponse template" +msgstr "é è¨è‡ªå‹•回應範本" + +#: etc/initialdata.zh:304 etc/initialdata:281 +msgid "Default admin comment template" +msgstr "é è¨ç®¡ç†å“¡è©•論範本" + +#: etc/initialdata.zh:262 etc/initialdata:260 +msgid "Default admin correspondence template" +msgstr "é è¨ç®¡ç†å“¡å›žè¦†ç¯„本" + +#: etc/initialdata.zh:283 etc/initialdata:272 +msgid "Default correspondence template" +msgstr "é è¨å›žè¦†ç¯„本" + +#: etc/initialdata.zh:240 etc/initialdata:238 +msgid "Default transaction template" +msgstr "é è¨æ›´å‹•範本" + +#: lib/RT/Transaction_Overlay.pm:643 +#. ($type, $self->Field, $self->OldValue, $self->NewValue) +msgid "Default: %1/%2 changed from %3 to %4" +msgstr "é è¨ï¼š%1/%2 已自 %3 改為 %4" + +#: html/User/Delegation.html:24 html/User/Delegation.html:27 +msgid "Delegate rights" +msgstr "代表團權é™" + +#: lib/RT/System.pm:62 +msgid "Delegate specific rights which have been granted to you." +msgstr "å°‡æ“æœ‰çš„æ¬Šé™å§”託他人代ç†" + +#: lib/RT/System.pm:62 +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 "代ç†è¡¨å–®ç¨®é¡ž" + +#: html/Edit/Users/index.html:125 html/Work/Delegates/Info:31 html/Work/Delegates/List:8 html/Work/Elements/Tab:41 html/Work/Overview/Info:28 +msgid "Delegates" +msgstr "代ç†äºº" + +#: NOT FOUND IN SOURCE +msgid "Delegates Enabled Status" +msgstr "代ç†å•Ÿå‹•狀態" + +#: html/Work/Delegates/Info:18 html/Work/Overview/Info:18 +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 "代ç†äººè¨å®š" + +#: html/Work/Delegates/Info:46 html/Work/Delegates/List:11 html/Work/Overview/Info:39 +msgid "Delegates Status" +msgstr "代ç†ç‹€æ…‹" + +#: html/User/Elements/Tabs:37 +msgid "Delegation" +msgstr "代ç†äººæ¬Šé™" + +#: NOT FOUND IN SOURCE +msgid "Delegation Groups" +msgstr "代ç†äººç¾¤çµ„" + +#: NOT FOUND IN SOURCE +msgid "Delegation Rights" +msgstr "代ç†äººæ¬Šé™" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:113 html/Edit/Elements/104Buttons:73 html/Work/Search/index.html:48 html/Work/Search/index.html:48 +msgid "Delete" +msgstr "刪除" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "Delete tickets" +msgstr "刪除申請單" + +#: lib/RT/Queue_Overlay.pm:88 +msgid "DeleteTicket" +msgstr "刪除申請單" + +#: lib/RT/Transaction_Overlay.pm:187 +msgid "Deleting this object could break referential integrity" +msgstr "刪除æ¤ç‰©ä»¶å¯èƒ½ç ´å£žåƒè€ƒå®Œæ•´æ€§" + +#: lib/RT/Queue_Overlay.pm:293 +msgid "Deleting this object would break referential integrity" +msgstr "刪除æ¤ç‰©ä»¶å¯èƒ½ç ´å£žåƒè€ƒå®Œæ•´æ€§" + +#: lib/RT/User_Overlay.pm:499 +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:44 html/Work/Approvals/Elements/Approve:32 +msgid "Deny" +msgstr "é§å›ž" + +#: NOT FOUND IN SOURCE +msgid "Department" +msgstr "部門" + +#: html/Edit/Global/UserRight/List:12 html/Edit/Global/UserRight/Top:13 html/Edit/Users/List:10 html/Edit/Users/Top:12 +msgid "Department ID" +msgstr "部門代碼" + +#: html/Edit/Global/UserRight/List:11 html/Edit/Global/UserRight/Top:49 html/Edit/Users/List:9 html/Edit/Users/Top:48 html/Work/Delegates/Info:78 html/Work/Overview/Info:60 +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/Ticket/Create.html:180 html/Ticket/Elements/BulkLinks:34 html/Ticket/Elements/EditLinks:122 html/Ticket/Elements/EditLinks:46 html/Ticket/Elements/ShowDependencies:31 html/Ticket/Elements/ShowLinks:36 html/Work/Search/BulkLinks:10 +msgid "Depended on by" +msgstr "å¯æŽ¥çºŒè™•ç†çš„申請單" + +#: NOT FOUND IN SOURCE +msgid "Dependencies: \\n" +msgstr "附屬性:\\n" + +#: html/Elements/SelectLinkType:26 html/Ticket/Create.html:179 html/Ticket/Elements/BulkLinks:30 html/Ticket/Elements/EditLinks:118 html/Ticket/Elements/EditLinks:35 html/Ticket/Elements/ShowDependencies:24 html/Ticket/Elements/ShowLinks:26 html/Work/Search/BulkLinks:6 +msgid "Depends on" +msgstr "需先處ç†" + +#: NOT FOUND IN SOURCE +msgid "DependsOn" +msgstr "需先處ç†" + +#: html/Elements/SelectSortOrder:34 +msgid "Descending" +msgstr "éžæ¸›" + +#: html/SelfService/Create.html:72 html/Ticket/Create.html:118 +msgid "Describe the issue below" +msgstr "åœ¨ä»¥ä¸‹æ¬„ä½æè¿°ä¸»é¡Œ" + +#: html/Admin/Elements/AddCustomFieldValue:35 html/Admin/Elements/EditCustomField:38 html/Admin/Elements/EditScrip:33 html/Admin/Elements/ModifyQueue:35 html/Admin/Elements/ModifyTemplate:35 html/Admin/Elements/ModifyTemplateAsWorkflow:192 html/Admin/Groups/Modify.html:48 html/Admin/Queues/Modify.html:47 html/Edit/Global/Workflow/Action:14 html/Elements/SelectGroups:26 html/User/Groups/Modify.html:48 html/Work/Preferences/Info:103 +msgid "Description" +msgstr "æè¿°" + +#: NOT FOUND IN SOURCE +msgid "Description of Responsibility" +msgstr "經辦æ¥å‹™èªªæ˜Ž" + +#: NOT FOUND IN SOURCE +msgid "Description:" +msgstr "æè¿°ï¼š" + +#: html/Work/Tickets/Create.html:117 html/Work/Tickets/Create.html:85 html/Work/Tickets/Elements/EditCustomFields:13 html/Work/Tickets/Elements/EditCustomFields:47 html/Work/Tickets/Elements/ShowCustomFields:15 html/Work/Tickets/Elements/ShowCustomFields:50 +msgid "Details" +msgstr "細節" + +#: NOT FOUND IN SOURCE +msgid "Direct" +msgstr "直接" + +#: html/Edit/Users/Info:31 +msgid "Disability" +msgstr "殘障身分" + +#: html/Edit/Users/Info:29 +msgid "Disability Type" +msgstr "殘障類別" + +#: html/Edit/Global/GroupRight/List:9 html/Edit/Global/GroupRight/Top:16 html/Edit/Groups/List:11 html/Edit/Groups/Top:19 html/Edit/Queues/Basic/Top:70 html/Edit/Queues/List:13 html/Work/Delegates/Info:48 html/Work/Delegates/Info:53 html/Work/Delegates/List:12 html/Work/Overview/Info:42 +msgid "Disabled" +msgstr "åœç”¨" + +#: html/Ticket/Elements/Tabs:84 +msgid "Display" +msgstr "顯示內容" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "Display Access Control List" +msgstr "é¡¯ç¤ºæ¬Šé™æŽ§åˆ¶æ¸…å–®" + +#: lib/RT/Queue_Overlay.pm:74 +msgid "Display Scrip templates for this queue" +msgstr "顯示æ¤è¡¨å–®çš„範本" + +#: lib/RT/Queue_Overlay.pm:77 +msgid "Display Scrips for this queue" +msgstr "顯示æ¤è¡¨å–®çš„æ‰‹çºŒ" + +#: html/Ticket/Elements/ShowHistory:34 +msgid "Display mode" +msgstr "顯示模å¼" + +#: NOT FOUND IN SOURCE +msgid "Display ticket #%1" +msgstr "顯示第%1號申請單" + +#: lib/RT/System.pm:53 +msgid "Do anything and everything" +msgstr "å…許一切æ“作" + +#: html/Elements/Refresh:29 +msgid "Don't refresh this page." +msgstr "䏿›´æ–°æ¤é é¢ã€‚" + +#: html/Search/Elements/PickRestriction:113 html/Work/Search/PickRestriction:95 +msgid "Don't show search results" +msgstr "ä¸é¡¯ç¤ºæŸ¥è©¢çµæžœ" + +#: html/Edit/Elements/Page:19 html/Edit/Elements/Page:21 +msgid "Down" +msgstr "下一é " + +#: html/Ticket/Elements/ShowTransaction:92 +msgid "Download" +msgstr "下載" + +#: NOT FOUND IN SOURCE +msgid "Dr." +msgstr "åšå£«" + +#: html/Elements/SelectDateType:31 html/Ticket/Create.html:166 html/Ticket/Elements/EditDates:44 html/Ticket/Elements/ShowDates:42 lib/RT/Ticket_Overlay.pm:1189 +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'" + +#: bin/rt-commit-handler:753 +#. ($1, $msg) +msgid "ERROR: Couldn't load ticket '%1': %2.\\n" +msgstr "無法載入申請單 '%1':%2.\\n" + +#: html/Work/Tickets/Update.html:46 +msgid "Edit" +msgstr "編輯" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:132 +msgid "Edit Conditions" +msgstr "編輯å‰ç½®æ¢ä»¶" + +#: html/Admin/Queues/CustomFields.html:44 +#. ($Queue->Name) +msgid "Edit Custom Fields for %1" +msgstr "編輯 %1 的自訂欄ä½" + +#: NOT FOUND IN SOURCE +msgid "Edit Custom Fields for queue %1" +msgstr "編輯表單 %1 的自訂欄ä½" + +#: html/Search/Bulk.html:143 html/Ticket/ModifyLinks.html:35 html/Work/Search/Bulk.html:93 +msgid "Edit Relationships" +msgstr "編輯申請單關係" + +#: html/Edit/Groups/MemberGroups/Add.html:3 html/Edit/Groups/MemberGroups/index.html:22 +msgid "Edit Subgroups" +msgstr "新增/ç¶è·å群組" + +#: html/Admin/Queues/Templates.html:41 +#. ($QueueObj->Name) +msgid "Edit Templates for queue %1" +msgstr "編輯表單 %1 的範本" + +#: html/Admin/Queues/Workflows.html:42 +#. ($QueueObj->Name) +msgid "Edit Workflows for queue %1" +msgstr "編輯表單 %1 çš„æµç¨‹" + +#: NOT FOUND IN SOURCE +msgid "Edit keywords" +msgstr "編輯關éµå—" + +#: NOT FOUND IN SOURCE +msgid "Edit scrips" +msgstr "編輯手續" + +#: html/Admin/Global/index.html:45 +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 çš„æµç¨‹" + +#: html/Admin/Elements/ModifyQueue:24 html/Admin/Queues/Modify.html:118 +#. ($QueueObj->Name) +#. ($QueueObj->Id) +msgid "Editing Configuration for queue %1" +msgstr "編輯表單 %1 çš„è¨å®š" + +#: html/Admin/Elements/ModifyUser:24 +#. ($UserObj->Name) +msgid "Editing Configuration for user %1" +msgstr "編輯使用者 %1 çš„è¨å®š" + +#: html/Admin/Elements/EditCustomField:90 +#. ($CustomFieldObj->Name()) +msgid "Editing CustomField %1" +msgstr "ç·¨è¼¯è‡ªè¨‚æ¬„ä½ %1" + +#: html/Admin/Groups/Members.html:31 +#. ($Group->Name) +msgid "Editing membership for group %1" +msgstr "編輯群組 %1 çš„æˆå“¡è³‡è¨Š" + +#: html/User/Groups/Members.html:128 +#. ($Group->Name) +msgid "Editing membership for personal group %1" +msgstr "編輯代ç†äººç¾¤çµ„ %1 çš„æˆå“¡è³‡è¨Š" + +#: NOT FOUND IN SOURCE +msgid "Editing template %1" +msgstr "編輯範本 %1" + +#: html/Admin/Elements/ModifyWorkflow:238 +#. (loc( $WorkflowObj->Name() )) +msgid "Editing workflow %1" +msgstr "編輯æµç¨‹ %1" + +#: NOT FOUND IN SOURCE +msgid "Education" +msgstr "æœ€é«˜å¸æ·" + +#: NOT FOUND IN SOURCE +msgid "EffectiveId" +msgstr "有效編號" + +#: lib/RT/Ticket_Overlay.pm:2635 lib/RT/Ticket_Overlay.pm:2703 +msgid "Either base or target must be specified" +msgstr "éœ€è¦æŒ‡å®šèµ·å§‹ç”³è«‹å–®æˆ–目的申請單" + +#: html/Admin/Users/Modify.html:52 html/Admin/Users/Prefs.html:45 html/Elements/SelectUsers:26 html/Ticket/Elements/AddWatchers:55 html/User/Prefs.html:41 html/Work/Delegates/Info:96 html/Work/Overview/Info:78 html/Work/Preferences/Info:16 +msgid "Email" +msgstr "é›»å郵件信箱" + +#: lib/RT/User_Overlay.pm:247 +msgid "Email address in use" +msgstr "æ¤é›»å郵件信箱已被使用" + +#: html/Admin/Elements/ModifyUser:41 +msgid "EmailAddress" +msgstr "é›»å郵件信箱ä½å€" + +#: html/Admin/Elements/ModifyUser:53 +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/Elements/EditCustomField:50 +msgid "Enabled (Unchecking this box disables this custom field)" +msgstr "啟用(å–æ¶ˆå‹¾é¸å°‡åœç”¨æ¤è‡ªè¨‚欄ä½)" + +#: html/Admin/Groups/Modify.html:52 html/User/Groups/Modify.html:52 +msgid "Enabled (Unchecking this box disables this group)" +msgstr "啟用(å–æ¶ˆå‹¾é¸å°‡åœç”¨æ¤ç¾¤çµ„)" + +#: html/Admin/Queues/Modify.html:83 +msgid "Enabled (Unchecking this box disables this queue)" +msgstr "啟用(å–æ¶ˆå‹¾é¸å°‡åœç”¨æ¤è¡¨å–®)" + +#: html/Admin/Elements/EditCustomFields:98 +msgid "Enabled Custom Fields" +msgstr "已啟用的自訂欄ä½" + +#: html/Edit/Queues/Basic/Top:75 html/Edit/Queues/List:15 +msgid "Enabled Date" +msgstr "啟用日期" + +#: NOT FOUND IN SOURCE +msgid "Enabled Date:" +msgstr "啟動日期:" + +#: html/Admin/Queues/index.html:55 +msgid "Enabled Queues" +msgstr "已啟用的表單" + +#: html/Edit/Queues/Basic/Top:66 html/Edit/Queues/List:11 +msgid "Enabled Status" +msgstr "啟用狀態" + +#: html/Admin/Elements/EditCustomField:106 html/Admin/Groups/Modify.html:116 html/Admin/Queues/Modify.html:140 html/Admin/Users/Modify.html:282 html/User/Groups/Modify.html:116 +#. (loc_fuzzy($msg)) +msgid "Enabled status %1" +msgstr "啟用狀態 %1" + +#: html/Edit/Users/Info:34 +msgid "End of Trial" +msgstr "試用期滿日" + +#: NOT FOUND IN SOURCE +msgid "English Name" +msgstr "英文姓å" + +#: lib/RT/CustomField_Overlay.pm:427 +msgid "Enter multiple values" +msgstr "éµå…¥å¤šé‡é …ç›®" + +#: html/Edit/Users/Search.html:15 +msgid "Enter one or more conditions below to search for users" +msgstr "è¼¸å…¥ä¸‹åˆ—å–®ä¸€æˆ–è¤‡å¼æ¢ä»¶ï¼ŒæŸ¥è©¢ç”¨æˆ¶è³‡æ–™" + +#: lib/RT/CustomField_Overlay.pm:424 +msgid "Enter one value" +msgstr "éµå…¥å–®ä¸€é …ç›®" + +#: html/Search/Bulk.html:144 html/Ticket/Elements/EditLinks:111 html/Work/Search/Bulk.html:95 +msgid "Enter tickets or URIs to link tickets to. Seperate multiple entries with spaces." +msgstr "輸入申請單å¯éˆçµåˆ°çš„申請單編號或網å€ã€‚以空白隔開。" + +#: lib/RT/CustomField_Vendor.pm:20 +msgid "EntryBoolean" +msgstr "是éžå¡«è¡¨" + +#: lib/RT/CustomField_Vendor.pm:17 +msgid "EntryDate" +msgstr "日期填表" + +#: NOT FOUND IN SOURCE +msgid "EntryExternal" +msgstr "系統填表" + +#: lib/RT/CustomField_Vendor.pm:16 +msgid "EntryFreeform" +msgstr "輸入填表" + +#: NOT FOUND IN SOURCE +msgid "EntryMultiple" +msgstr "多é¸å¡«è¡¨" + +#: lib/RT/CustomField_Vendor.pm:19 +msgid "EntryNumber" +msgstr "數值填表" + +#: lib/RT/CustomField_Vendor.pm:15 +msgid "EntrySelect" +msgstr "å–®é¸å¡«è¡¨" + +#: lib/RT/CustomField_Vendor.pm:18 +msgid "EntryTime" +msgstr "時間填表" + +#: html/Elements/Login:39 html/SelfService/Error.html:24 html/SelfService/Error.html:25 +msgid "Error" +msgstr "錯誤" + +#: NOT FOUND IN SOURCE +msgid "Error adding watcher" +msgstr "新增視察員失敗" + +#: lib/RT/Queue_Overlay.pm:555 +msgid "Error in parameters to Queue->AddWatcher" +msgstr "表單->æ–°å¢žè¦–å¯Ÿå“¡çš„åƒæ•¸æœ‰èª¤" + +#: lib/RT/Queue_Overlay.pm:713 +msgid "Error in parameters to Queue->DelWatcher" +msgstr "表單->åˆªé™¤è¦–å¯Ÿå“¡çš„åƒæ•¸æœ‰èª¤" + +#: lib/RT/Ticket_Overlay.pm:1374 +msgid "Error in parameters to Ticket->AddWatcher" +msgstr "申請單->æ–°å¢žè¦–å¯Ÿå“¡çš„åƒæ•¸æœ‰èª¤" + +#: lib/RT/Ticket_Overlay.pm:1531 +msgid "Error in parameters to Ticket->DelWatcher" +msgstr "申請單->åˆªé™¤è¦–å¯Ÿå“¡çš„åƒæ•¸æœ‰èª¤" + +#: etc/initialdata.zh:38 etc/initialdata:20 +msgid "Everyone" +msgstr "所有人" + +#: bin/rt-crontool:193 +msgid "Example:" +msgstr "範例:" + +#: html/Edit/Elements/104Buttons:77 +msgid "Export" +msgstr "匯出" + +#: html/Admin/Elements/ModifyUser:63 +msgid "ExternalAuthId" +msgstr "外部èªè‰å¸³è™Ÿ" + +#: html/Admin/Elements/ModifyUser:57 +msgid "ExternalContactInfoId" +msgstr "外部è¯çµ¡æ–¹å¼å¸³è™Ÿ" + +#: html/Edit/Global/Basic/Top:64 +msgid "ExternalDatabaseDSN" +msgstr "外部資料庫連çµå—串" + +#: html/Edit/Global/Basic/Top:68 +msgid "ExternalDatabasePass" +msgstr "外部資料庫密碼" + +#: html/Edit/Global/Basic/Top:66 +msgid "ExternalDatabaseUser" +msgstr "外部資料庫用戶" + +#: html/Edit/Global/Basic/Top:62 +msgid "ExternalURL" +msgstr "外部介é¢ç¶²å€" + +#: html/Admin/Users/Modify.html:72 +msgid "Extra info" +msgstr "備註" + +#: lib/RT/User_Overlay.pm:363 +msgid "Failed to find 'Privileged' users pseudogroup." +msgstr "找ä¸åˆ°ã€Œå…§éƒ¨æˆå“¡ã€è™›æ“¬ç¾¤çµ„的使用者。" + +#: lib/RT/User_Overlay.pm:370 +msgid "Failed to find 'Unprivileged' users pseudogroup" +msgstr "找ä¸åˆ°ã€Œéžå…§éƒ¨æˆå“¡ã€è™›æ“¬ç¾¤çµ„的使用者。" + +#: bin/rt-crontool:137 +#. ($modname, $@) +msgid "Failed to load module %1. (%2)" +msgstr "無法載入模組 %1. (%2)" + +#: NOT FOUND IN SOURCE +msgid "Feb" +msgstr "二月" + +#: lib/RT/Date.pm:412 +msgid "Feb." +msgstr "02" + +#: NOT FOUND IN SOURCE +msgid "February" +msgstr "二月" + +#: NOT FOUND IN SOURCE +msgid "Female" +msgstr "女" + +#: html/Edit/Global/CustomField/List:5 html/Edit/Global/CustomField/Top:9 +msgid "Field Attribute" +msgstr "欄ä½å±¬æ€§" + +#: html/Edit/Global/CustomField/Info:14 +msgid "Field Content:" +msgstr "欄ä½å…§å®¹ï¼š" + +#: html/Edit/Global/CustomField/List:7 html/Edit/Global/CustomField/Top:21 +msgid "Field Description" +msgstr "æ¬„ä½æè¿°" + +#: html/Edit/Global/CustomField/List:6 html/Edit/Global/CustomField/Top:15 +msgid "Field Name" +msgstr "欄ä½å稱" + +#: html/Edit/Elements/PickUsers:52 html/Edit/Users/Add.html:47 +msgid "Filter" +msgstr "篩é¸" + +#: html/Edit/Elements/PickUsers:6 html/Edit/Users/Add.html:7 html/Work/Tickets/Cc:4 +msgid "Filter people" +msgstr "å°è±¡ç¯©é¸" + +#: html/Edit/Elements/PickUsers:68 html/Edit/Users/Add.html:63 html/Work/Tickets/Cc:42 +msgid "Filtered list:" +msgstr "篩é¸åˆ—表:" + +#: NOT FOUND IN SOURCE +msgid "Fin" +msgstr "最終" + +#: html/Ticket/Create.html:154 html/Ticket/Elements/EditBasics:58 lib/RT/Tickets_Overlay.pm:1091 +msgid "Final Priority" +msgstr "æœ€ä½Žé †ä½" + +#: lib/RT/Ticket_Overlay.pm:1180 +msgid "FinalPriority" +msgstr "æœ€ä½Žé †ä½" + +#: NOT FOUND IN SOURCE +msgid "Financial Department:" +msgstr "財務部:" + +#: html/Admin/Queues/People.html:60 html/Ticket/Elements/EditPeople:33 +msgid "Find group whose" +msgstr "尋找群組的" + +#: NOT FOUND IN SOURCE +msgid "Find new/open tickets" +msgstr "尋找/開啟申請單" + +#: html/Admin/Queues/People.html:56 html/Admin/Users/index.html:45 html/Ticket/Elements/EditPeople:29 +msgid "Find people whose" +msgstr "尋找人員的" + +#: html/Search/Listing.html:107 html/Work/Search/index.html:88 +msgid "Find tickets" +msgstr "尋找申請單" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:118 +msgid "Finish Approval" +msgstr "ç°½æ ¸å®Œç•¢" + +#: html/Ticket/Elements/Tabs:57 +msgid "First" +msgstr "ç¬¬ä¸€é …" + +#: html/Search/Listing.html:40 html/Work/Search/index.html:17 +msgid "First page" +msgstr "第一é " + +#: html/Edit/Global/Workflow/Owner.html:30 +msgid "First-" +msgstr "一" + +#: NOT FOUND IN SOURCE +msgid "First-level Admins" +msgstr "一階主管" + +#: html/Edit/Users/Info:39 +msgid "First-level Users" +msgstr "一階主管員工" + +#: NOT FOUND IN SOURCE +msgid "Fixed shift" +msgstr "固定ç" + +#: docs/design_docs/string-extraction-guide.txt:33 +msgid "Foo Bar Baz" +msgstr "甲 ä¹™ 丙" + +#: docs/design_docs/string-extraction-guide.txt:24 +msgid "Foo!" +msgstr "甲ï¼" + +#: html/Search/Bulk.html:86 html/Work/Search/Bulk.html:55 +msgid "Force change" +msgstr "強制更新" + +#: html/Work/Elements/104Header:89 +msgid "Form Processing" +msgstr "é›»å表單作æ¥å€" + +#: html/Search/Listing.html:105 html/Work/Search/index.html:86 +#. ($ticketcount) +msgid "Found %quant(%1,ticket)" +msgstr "找到 %1 張申請單" + +#: lib/RT/Interface/Web.pm:904 x:907 +msgid "Found Object" +msgstr "已找到物件" + +#: html/Edit/Global/Workflow/Owner.html:33 +msgid "Fourth-" +msgstr "å››" + +#: html/Admin/Elements/ModifyUser:43 +msgid "FreeformContactInfo" +msgstr "è¯çµ¡æ–¹å¼" + +#: lib/RT/CustomField_Vendor.pm:11 +msgid "FreeformDate" +msgstr "日期輸入" + +#: NOT FOUND IN SOURCE +msgid "FreeformExternal" +msgstr "系統欄ä½" + +#: lib/RT/CustomField_Overlay.pm:37 +msgid "FreeformMultiple" +msgstr "多é‡è¼¸å…¥" + +#: lib/RT/CustomField_Vendor.pm:13 +msgid "FreeformNumber" +msgstr "數值輸入" + +#: lib/RT/CustomField_Vendor.pm:14 +msgid "FreeformPassword" +msgstr "密碼輸入" + +#: lib/RT/CustomField_Overlay.pm:36 +msgid "FreeformSingle" +msgstr "單一輸入" + +#: lib/RT/CustomField_Vendor.pm:12 +msgid "FreeformTime" +msgstr "時間輸入" + +#: NOT FOUND IN SOURCE +msgid "Fri" +msgstr "星期五" + +#: lib/RT/Date.pm:392 +msgid "Fri." +msgstr "星期五" + +#: html/Ticket/Elements/ShowHistory:40 html/Ticket/Elements/ShowHistory:50 +msgid "Full headers" +msgstr "å®Œæ•´æ¨™é æª”" + +#: NOT FOUND IN SOURCE +msgid "Gecos" +msgstr "登入帳號" + +#: html/Edit/Users/Info:26 +msgid "Gender" +msgstr "性別" + +#: NOT FOUND IN SOURCE +msgid "Getting the current user from a pgp sig\\n" +msgstr "å–å¾—ç›®å‰ä½¿ç”¨è€…çš„ pgp ç°½ç« \\n" + +#: lib/RT/Transaction_Overlay.pm:593 +#. ($New->Name) +msgid "Given to %1" +msgstr "交予 %1" + +#: html/Admin/Elements/Tabs:40 html/Admin/index.html:37 +msgid "Global" +msgstr "全域è¨å®š" + +#: NOT FOUND IN SOURCE +msgid "Global Keyword Selections" +msgstr "全域關éµå—é¸å–" + +#: html/Edit/Users/System:24 +msgid "Global Rights:" +msgstr "æ“æœ‰å…¨åŸŸæ¬Šé™åˆ—表:" + +#: NOT FOUND IN SOURCE +msgid "Global Scrips" +msgstr "全域手續" + +#: html/Edit/Elements/Tab:40 +msgid "Global Setup" +msgstr "全域è¨å®š" + +#: html/Admin/Elements/SelectTemplate:37 html/Edit/Elements/SelectTemplate:11 +#. (loc($Template->Name)) +msgid "Global template: %1" +msgstr "全域範本:%1" + +#: html/Admin/Elements/EditCustomFields:74 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:40 +msgid "Go!" +msgstr "執行" + +#: NOT FOUND IN SOURCE +msgid "Good pgp sig from %1\\n" +msgstr "%1 çš„ pgp ç°½ç« æ˜¯æ£ç¢ºçš„\\n" + +#: html/Search/Listing.html:49 +msgid "Goto page" +msgstr "到é é¢" + +#: html/Elements/GotoTicket:24 html/SelfService/Elements/GotoTicket:24 html/Work/Elements/104Header:49 +msgid "Goto ticket" +msgstr "跳到申請單" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:224 +msgid "Grand" +msgstr "上" + +#: html/Ticket/Elements/AddWatchers:45 html/User/Elements/DelegateRights:77 +msgid "Group" +msgstr "群組" + +#: NOT FOUND IN SOURCE +msgid "Group %1 %2: %3" +msgstr "群組 %1 %2:%3" + +#: html/Edit/Global/GroupRight/List:5 html/Edit/Global/GroupRight/Top:20 html/Edit/Groups/List:7 +msgid "Group Description" +msgstr "群組æè¿°" + +#: NOT FOUND IN SOURCE +msgid "Group Management" +msgstr "群組管ç†" + +#: NOT FOUND IN SOURCE +msgid "Group Members" +msgstr "群組æˆå“¡" + +#: html/Edit/Elements/PickUsers:28 html/Edit/Global/GroupRight/List:4 html/Edit/Global/GroupRight/Top:10 html/Edit/Groups/List:6 html/Edit/Groups/Top:7 html/Edit/Users/Add.html:29 html/Edit/Users/Group:10 html/Edit/Users/Search.html:43 html/Work/Delegates/Add.html:15 html/Work/Tickets/Cc:24 +msgid "Group Name" +msgstr "群組å稱" + +#: NOT FOUND IN SOURCE +msgid "Group Name:" +msgstr "群組å稱:" + +#: html/Admin/Elements/GroupTabs:44 html/Admin/Elements/QueueTabs:56 html/Admin/Elements/SystemTabs:43 html/Admin/Global/index.html:54 html/Edit/Global/autohandler:12 html/Edit/Queues/autohandler:23 html/Edit/Users/Group:11 html/Edit/Users/index.html:123 +msgid "Group Rights" +msgstr "群組權é™" + +#: NOT FOUND IN SOURCE +msgid "Group Rights:" +msgstr "æ“æœ‰ç¾¤çµ„權é™åˆ—表:" + +#: html/Edit/Elements/Tab:36 +msgid "Group Setup" +msgstr "群組è¨å®š" + +#: html/Edit/Global/GroupRight/List:8 html/Edit/Global/GroupRight/Top:14 html/Edit/Groups/List:10 html/Edit/Groups/Top:15 +msgid "Group Status" +msgstr "群組狀態" + +#: lib/RT/Group_Overlay.pm:964 +msgid "Group already has member" +msgstr "ç¾¤çµ„å…§å·²æœ‰æ¤æˆå“¡" + +#: NOT FOUND IN SOURCE +msgid "Group could not be created." +msgstr "無法新增群組" + +#: html/Admin/Groups/Modify.html:76 +#. ($create_msg) +msgid "Group could not be created: %1" +msgstr "無法新增群組:%1" + +#: lib/RT/Group_Overlay.pm:496 +msgid "Group created" +msgstr "群組新增完畢" + +#: lib/RT/Group_Overlay.pm:1132 +msgid "Group has no such member" +msgstr "群組沒有這個æˆå“¡" + +#: lib/RT/Group_Overlay.pm:944 lib/RT/Queue_Overlay.pm:628 lib/RT/Queue_Overlay.pm:688 lib/RT/Ticket_Overlay.pm:1428 lib/RT/Ticket_Overlay.pm:1506 +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 with Queue Rights" +msgstr "æ“æœ‰è¡¨å–®æ¬Šé™ç¾¤çµ„" + +#: html/Edit/Global/Workflow/Owner.html:70 +msgid "Group's" +msgstr "群組之" + +#: NOT FOUND IN SOURCE +msgid "Group:" +msgstr "群組:" + +#: 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/Edit/Global/GroupRight/Add.html:15 html/User/Groups/Members.html:66 +msgid "Groups" +msgstr "群組" + +#: lib/RT/Group_Overlay.pm:970 +msgid "Groups can't be members of their members" +msgstr "ä¸èƒ½å°‡ç¾¤çµ„è¨ç‚ºç¾¤çµ„å…§æˆå“¡" + +#: NOT FOUND IN SOURCE +msgid "Groups with Global Rights" +msgstr "æ“æœ‰å…¨åŸŸæ¬Šé™ç¾¤çµ„" + +#: html/Edit/Global/GroupRight/List:6 html/Edit/Global/GroupRight/Top:22 html/Edit/Groups/List:8 +msgid "HRMSDefined" +msgstr "組織架構" + +#: NOT FOUND IN SOURCE +msgid "Health Insurance" +msgstr "å¥ä¿è£œåŠ©èº«ä»½" + +#: lib/RT/Interface/CLI.pm:72 lib/RT/Interface/CLI.pm:72 +msgid "Hello!" +msgstr "å—¨ï¼" + +#: docs/design_docs/string-extraction-guide.txt:40 +#. ($name) +msgid "Hello, %1" +msgstr "嗨,%1" + +#: html/Edit/Elements/104Top:28 +msgid "Help" +msgstr "輔助說明" + +#: NOT FOUND IN SOURCE +msgid "Help Desks" +msgstr "å„é …æ¥å‹™çª—å£" + +#: html/Ticket/Elements/ShowHistory:29 html/Ticket/Elements/Tabs:87 html/Work/Tickets/Elements/ShowHistory:8 +msgid "History" +msgstr "紀錄" + +#: html/Admin/Elements/ModifyUser:67 +msgid "HomePhone" +msgstr "ä½è™•電話" + +#: html/Edit/Elements/104Top:15 html/Edit/Elements/104Top:24 html/Edit/Elements/EDOMHeader:9 html/Elements/Tabs:43 +msgid "Homepage" +msgstr "主é " + +#: NOT FOUND IN SOURCE +msgid "Hotel Expense" +msgstr "ä½å®¿è²»" + +#: lib/RT/Base.pm:73 +#. (6) +msgid "I have %quant(%1,concrete mixer)." +msgstr "我有 %quant(%1,份固體攪拌器)。" + +#: NOT FOUND IN SOURCE +msgid "ID Number" +msgstr "身分è‰è™Ÿ" + +#: NOT FOUND IN SOURCE +msgid "ID Type" +msgstr "身分類別" + +#: html/Ticket/Elements/ShowBasics:26 lib/RT/Tickets_Overlay.pm:1018 +msgid "Id" +msgstr "編號" + +#: html/Admin/Users/Modify.html:43 html/User/Prefs.html:38 html/Work/Preferences/Info:14 +msgid "Identity" +msgstr "身份" + +#: etc/initialdata.zh:439 etc/initialdata:411 etc/upgrade/2.1.71:86 html/Edit/Elements/CreateApprovalsQueue:58 +msgid "If an approval is rejected, reject the original and delete pending approvals" +msgstr "è‹¥ç°½æ ¸å–®é到é§å›žï¼Œå‰‡é€£å¸¶é§å›žåŽŸç”³è«‹å–®ï¼Œä¸¦åˆªé™¤å…¶ä»–ç›¸é—œçš„å¾…ç°½æ ¸äº‹é …" + +#: bin/rt-crontool:189 +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: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 "若您已更新以上資料,請記得按一下" + +#: lib/RT/Interface/Web.pm:896 x:899 +msgid "Illegal value for %1" +msgstr "%1 的值錯誤" + +#: lib/RT/Interface/Web.pm:899 x:902 +msgid "Immutable field" +msgstr "æ¤æ¬„ä½å€¼ä¸å¯æ›´å‹•" + +#: html/Edit/Elements/104Buttons:76 html/Edit/Global/Workflow/Import.html:2 +msgid "Import" +msgstr "匯入" + +#: html/Admin/Elements/EditCustomFields:73 +msgid "Include disabled custom fields in listing." +msgstr "列出åœç”¨çš„自訂欄ä½" + +#: html/Admin/Queues/index.html:42 html/Edit/Queues/index.html:38 +msgid "Include disabled queues in listing." +msgstr "列出åœç”¨çš„表單" + +#: html/Admin/Users/index.html:46 html/Edit/Users/Search.html:62 +msgid "Include disabled users in search." +msgstr "列出åœç”¨çš„使用者" + +#: html/Edit/Users/Info:36 +msgid "Indirect Employee" +msgstr "直接/間接員工" + +#: lib/RT/Tickets_Overlay.pm:1067 +msgid "Initial Priority" +msgstr "åˆå§‹å„ªå…ˆæ¬Š" + +#: lib/RT/Ticket_Overlay.pm:1179 lib/RT/Ticket_Overlay.pm:1181 +msgid "InitialPriority" +msgstr "åˆå§‹å„ªå…ˆæ¬Š" + +#: lib/RT/ScripAction_Overlay.pm:104 +msgid "Input error" +msgstr "輸入錯誤" + +#: NOT FOUND IN SOURCE +msgid "Interest noted" +msgstr "登記æˆåŠŸ" + +#: lib/RT/Ticket_Overlay.pm:3829 +msgid "Internal Error" +msgstr "內部錯誤" + +#: lib/RT/Record.pm:142 +#. ($id->{error_message}) +msgid "Internal Error: %1" +msgstr "內部錯誤:%1" + +#: lib/RT/Group_Overlay.pm:643 +msgid "Invalid Group Type" +msgstr "錯誤的群組類別" + +#: lib/RT/Principal_Overlay.pm:127 +msgid "Invalid Right" +msgstr "錯誤的權é™" + +#: NOT FOUND IN SOURCE +msgid "Invalid Type" +msgstr "錯誤的類型" + +#: lib/RT/Interface/Web.pm:901 x:904 +msgid "Invalid data" +msgstr "錯誤的資料" + +#: lib/RT/Ticket_Overlay.pm:439 +msgid "Invalid owner. Defaulting to 'nobody'." +msgstr "錯誤的承辦人。改為é è¨æ‰¿è¾¦äººã€Œnobodyã€ã€‚" + +#: lib/RT/Scrip_Overlay.pm:133 lib/RT/Template_Overlay.pm:250 +msgid "Invalid queue" +msgstr "錯誤的表單" + +#: 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 "錯誤的權é™" + +#: lib/RT/Record.pm:117 +#. ($key) +msgid "Invalid value for %1" +msgstr "%1 的值錯誤" + +#: lib/RT/Ticket_Overlay.pm:3461 +msgid "Invalid value for custom field" +msgstr "錯誤的自訂欄ä½å€¼" + +#: lib/RT/Ticket_Overlay.pm:346 +msgid "Invalid value for status" +msgstr "錯誤的狀態值" + +#: NOT FOUND IN SOURCE +msgid "IssueStatement" +msgstr "é€å‡ºé™³è¿°" + +#: bin/rt-crontool:190 +msgid "It is incredibly important that nonprivileged users not be allowed to run this tool." +msgstr "請絕å°ä¸è¦è®“未具權é™çš„使用者執行æ¤å·¥å…·ç¨‹å¼ã€‚" + +#: bin/rt-crontool:191 +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:162 +msgid "It takes several arguments:" +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:411 +msgid "Jan." +msgstr "01" + +#: NOT FOUND IN SOURCE +msgid "January" +msgstr "一月" + +#: NOT FOUND IN SOURCE +msgid "Job" +msgstr "è·ç¨±" + +#: lib/RT/Group_Overlay.pm:148 +msgid "Join or leave this group" +msgstr "åŠ å…¥æˆ–é›¢é–‹æ¤ç¾¤çµ„" + +#: NOT FOUND IN SOURCE +msgid "Jul" +msgstr "七月" + +#: lib/RT/Date.pm:417 +msgid "Jul." +msgstr "01" + +#: NOT FOUND IN SOURCE +msgid "July" +msgstr "七月" + +#: html/Ticket/Elements/Tabs:98 +msgid "Jumbo" +msgstr "全部資訊" + +#: NOT FOUND IN SOURCE +msgid "Jun" +msgstr "å…æœˆ" + +#: lib/RT/Date.pm:416 +msgid "Jun." +msgstr "06." + +#: NOT FOUND IN SOURCE +msgid "June" +msgstr "å…æœˆ" + +#: NOT FOUND IN SOURCE +msgid "Keyword" +msgstr "é—œéµå—" + +#: lib/RT/CustomField_Vendor.pm:23 +msgid "LabelAttachments" +msgstr "附件標籤" + +#: lib/RT/CustomField_Vendor.pm:24 +msgid "LabelContent" +msgstr "內容標籤" + +#: lib/RT/CustomField_Vendor.pm:22 +msgid "LabelSubject" +msgstr "主題標籤" + +#: lib/RT/CustomField_Vendor.pm:21 +msgid "LabelURL" +msgstr "éˆçµæ¨™ç±¤" + +#: html/Admin/Elements/ModifyUser:51 +msgid "Lang" +msgstr "使用語言" + +#: html/Ticket/Elements/Tabs:72 +msgid "Last" +msgstr "上次更新" + +#: html/Ticket/Elements/EditDates:37 html/Ticket/Elements/ShowDates:38 +msgid "Last Contact" +msgstr "上次è¯çµ¡" + +#: html/Elements/SelectDateType:28 +msgid "Last Contacted" +msgstr "上次è¯çµ¡æ—¥æœŸ" + +#: html/Search/Elements/TicketHeader:40 html/Work/Search/TicketHeader:19 +msgid "Last Notified" +msgstr "上次通知" + +#: html/Elements/SelectDateType:29 +msgid "Last Updated" +msgstr "上次更新" + +#: NOT FOUND IN SOURCE +msgid "LastUpdated" +msgstr "上次更新" + +#: NOT FOUND IN SOURCE +msgid "Left" +msgstr "剩餘時間" + +#: html/Admin/Users/Modify.html:82 +msgid "Let this user access RT" +msgstr "å…許這å使用者登入" + +#: html/Admin/Users/Modify.html:86 +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/Work/Queues/Select.html:4 +msgid "Link a Queue" +msgstr "申請表單連çµ" + +#: lib/RT/Ticket_Overlay.pm:2717 +msgid "Link already exists" +msgstr "æ¤éˆçµå·²å˜åœ¨" + +#: lib/RT/Ticket_Overlay.pm:2729 +msgid "Link could not be created" +msgstr "無法新增éˆçµ" + +#: lib/RT/Ticket_Overlay.pm:2737 lib/RT/Ticket_Overlay.pm:2747 +#. ($TransString) +msgid "Link created (%1)" +msgstr "éˆçµ(%1)新增完畢" + +#: lib/RT/Ticket_Overlay.pm:2658 +#. ($TransString) +msgid "Link deleted (%1)" +msgstr "éˆçµ(%1)刪除完畢" + +#: lib/RT/Ticket_Overlay.pm:2664 +msgid "Link not found" +msgstr "找ä¸åˆ°éˆçµ" + +#: html/Ticket/ModifyLinks.html:24 html/Ticket/ModifyLinks.html:28 +#. ($Ticket->Id) +msgid "Link ticket #%1" +msgstr "éˆçµç”³è«‹å–® #%1" + +#: NOT FOUND IN SOURCE +msgid "Link ticket %1" +msgstr "éˆçµç”³è«‹å–® %1" + +#: html/Ticket/Elements/Tabs:96 +msgid "Links" +msgstr "éˆçµ" + +#: html/Edit/Users/Search.html:11 +msgid "List All Users" +msgstr "列出所有用戶資料" + +#: html/Admin/Users/Modify.html:113 html/User/Prefs.html:84 html/Work/Preferences/Info:73 +msgid "Location" +msgstr "ä½ç½®" + +#: lib/RT.pm:162 +#. ($RT::LogDir) +msgid "Log directory %1 not found or couldn't be written.\\n RT can't run." +msgstr "登入目錄 %1 找ä¸åˆ°æˆ–無法寫入\\n。無法執行 RT。" + +#: html/Edit/Global/Basic/Top:52 +msgid "LogToFile" +msgstr "紀錄ç‰ç´š" + +#: html/Edit/Global/Basic/Top:54 +msgid "LogToFileNamed" +msgstr "紀錄檔å" + +#: html/Elements/Header:57 +#. ("<b>".$session{'CurrentUser'}->Name."</b>") +msgid "Logged in as %1" +msgstr "使用者:%1" + +#: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:35 html/Elements/Login:44 html/Elements/Login:54 +msgid "Login" +msgstr "登入" + +#: html/Edit/Elements/104Top:17 html/Edit/Elements/104Top:17 html/Edit/Elements/104Top:32 html/Elements/Header:54 +msgid "Logout" +msgstr "登出" + +#: NOT FOUND IN SOURCE +msgid "Long-term contractor" +msgstr "長期契約員工" + +#: html/Search/Bulk.html:85 html/Work/Search/Bulk.html:54 +msgid "Make Owner" +msgstr "新增承辦人" + +#: html/Search/Bulk.html:109 html/Work/Search/Bulk.html:63 +msgid "Make Status" +msgstr "æ–°å¢žç¾æ³" + +#: html/Search/Bulk.html:117 html/Work/Search/Bulk.html:75 +msgid "Make date Due" +msgstr "新增到期日" + +#: html/Search/Bulk.html:119 html/Work/Search/Bulk.html:78 +msgid "Make date Resolved" +msgstr "新增解決日期" + +#: html/Search/Bulk.html:113 html/Work/Search/Bulk.html:69 +msgid "Make date Started" +msgstr "新增實際起始日期" + +#: html/Search/Bulk.html:111 html/Work/Search/Bulk.html:66 +msgid "Make date Starts" +msgstr "新增應起始日期" + +#: html/Search/Bulk.html:115 html/Work/Search/Bulk.html:72 +msgid "Make date Told" +msgstr "æ–°å¢žå ±å‘Šæ—¥æœŸ" + +#: html/Search/Bulk.html:105 html/Work/Search/Bulk.html:57 +msgid "Make priority" +msgstr "æ–°å¢žå„ªå…ˆé †ä½" + +#: html/Search/Bulk.html:107 html/Work/Search/Bulk.html:60 +msgid "Make queue" +msgstr "新增表單" + +#: html/Search/Bulk.html:103 html/Work/Search/Bulk.html:59 +msgid "Make subject" +msgstr "新增主題" + +#: NOT FOUND IN SOURCE +msgid "Male" +msgstr "ç”·" + +#: html/Admin/index.html:32 +msgid "Manage groups and group membership" +msgstr "管ç†ç¾¤çµ„åŠæ‰€å±¬æˆå“¡" + +#: html/Admin/index.html:38 +msgid "Manage properties and configuration which apply to all queues" +msgstr "管ç†é©ç”¨æ–¼æ‰€æœ‰è¡¨å–®çš„屬性與è¨å®š" + +#: html/Admin/index.html:35 +msgid "Manage queues and queue-specific properties" +msgstr "管ç†å„表單åŠç›¸é—œå±¬æ€§" + +#: html/Admin/index.html:29 +msgid "Manage users and passwords" +msgstr "管ç†ä½¿ç”¨è€…與密碼" + +#: NOT FOUND IN SOURCE +msgid "Manager" +msgstr "ç¶“ç†" + +#: NOT FOUND IN SOURCE +msgid "Mar" +msgstr "三月" + +#: lib/RT/Date.pm:413 +msgid "Mar." +msgstr "03" + +#: NOT FOUND IN SOURCE +msgid "March" +msgstr "三月" + +#: NOT FOUND IN SOURCE +msgid "Marketing Department" +msgstr "行銷部" + +#: NOT FOUND IN SOURCE +msgid "May" +msgstr "五月" + +#: lib/RT/Date.pm:415 +msgid "May." +msgstr "05" + +#: lib/RT/Group_Overlay.pm:981 +msgid "Member added" +msgstr "新增æˆå“¡å®Œç•¢" + +#: lib/RT/Group_Overlay.pm:1139 +msgid "Member deleted" +msgstr "æˆå“¡å·²åˆªé™¤" + +#: lib/RT/Group_Overlay.pm:1143 +msgid "Member not deleted" +msgstr "æˆå“¡æœªè¢«åˆªé™¤" + +#: html/Elements/SelectLinkType:25 +msgid "Member of" +msgstr "隸屬於" + +#: html/Work/Preferences/index.html:20 +msgid "Member since" +msgstr "註冊日期" + +#: NOT FOUND IN SOURCE +msgid "MemberOf" +msgstr "隸屬於" + +#: html/Admin/Elements/GroupTabs:41 html/Admin/Elements/ModifyTemplateAsWorkflow:232 html/User/Elements/GroupTabs:41 +msgid "Members" +msgstr "æˆå“¡" + +#: lib/RT/Ticket_Overlay.pm:2904 +msgid "Merge Successful" +msgstr "æ•´åˆå®Œç•¢" + +#: lib/RT/Ticket_Overlay.pm:2824 +msgid "Merge failed. Couldn't set EffectiveId" +msgstr "æ•´åˆå¤±æ•—。無法è¨å®š EffectiveId" + +#: html/Ticket/Elements/BulkLinks:26 html/Ticket/Elements/EditLinks:114 html/Work/Search/BulkLinks:2 +msgid "Merge into" +msgstr "æ•´åˆé€²" + +#: html/Search/Bulk.html:137 html/Ticket/Update.html:100 +msgid "Message" +msgstr "訊æ¯" + +#: NOT FOUND IN SOURCE +msgid "Misc. Expense" +msgstr "雜費" + +#: lib/RT/Interface/Web.pm:903 x:906 +msgid "Missing a primary key?: %1" +msgstr "缺少主éµå€¼ï¼Ÿ(%1)" + +#: html/Admin/Users/Modify.html:168 html/User/Prefs.html:53 html/Work/Preferences/Info:36 +msgid "Mobile" +msgstr "行動電話" + +#: html/Admin/Elements/ModifyUser:71 +msgid "MobilePhone" +msgstr "行動電話" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "Modify Access Control List" +msgstr "æ›´æ”¹æ¬Šé™æŽ§åˆ¶æ¸…å–®" + +#: html/Admin/Global/CustomFields.html:43 html/Admin/Global/index.html:50 +msgid "Modify Custom Fields which apply to all queues" +msgstr "更改é©ç”¨æ–¼æ‰€æœ‰è¡¨å–®çš„自訂欄ä½" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "Modify Scrip templates for this queue" +msgstr "更改æ¤è¡¨å–®çš„範本" + +#: lib/RT/Queue_Overlay.pm:75 +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" + +#: NOT FOUND IN SOURCE +msgid "Modify Workflow" +msgstr "更改æµç¨‹" + +#: html/Admin/Queues/CustomField.html:44 +#. ($QueueObj->Name()) +msgid "Modify a CustomField for queue %1" +msgstr "更改 %1 表單內的自訂欄ä½" + +#: html/Admin/Global/CustomField.html:52 +msgid "Modify a CustomField which applies to all queues" +msgstr "更改é©ç”¨æ–¼æ‰€æœ‰è¡¨å–®çš„自訂欄ä½" + +#: html/Admin/Queues/Scrip.html:53 +#. ($QueueObj->Name) +msgid "Modify a scrip for queue %1" +msgstr "更改 %1 表單內的手續" + +#: html/Admin/Global/Scrip.html:47 +msgid "Modify a scrip which applies to all queues" +msgstr "更改é©ç”¨æ–¼æ‰€æœ‰è¡¨å–®çš„æ‰‹çºŒ" + +#: NOT FOUND IN SOURCE +msgid "Modify dates for # %1" +msgstr "更改 # %1 的日期" + +#: html/Ticket/ModifyDates.html:24 html/Ticket/ModifyDates.html:28 +#. ($TicketObj->Id) +msgid "Modify dates for #%1" +msgstr "更改 #%1 的日期" + +#: html/Ticket/ModifyDates.html:34 +#. ($TicketObj->Id) +msgid "Modify dates for ticket # %1" +msgstr "更改申請單 # %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 "更改全域è¨å®šçš„群組權é™" + +#: html/Admin/Global/GroupRights.html:32 +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:24 html/Admin/Global/UserRights.html:27 html/Admin/Global/index.html:59 +msgid "Modify global user rights" +msgstr "更改全域è¨å®šçš„使用者權é™" + +#: html/Admin/Global/UserRights.html:32 +msgid "Modify global user rights." +msgstr "更改全域è¨å®šçš„使用者權é™ã€‚" + +#: lib/RT/Group_Overlay.pm:145 +msgid "Modify group metadata or delete group" +msgstr "更改群組資料åŠåˆªé™¤ç¾¤çµ„" + +#: 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 "更改 %1 的群組權é™" + +#: html/Admin/Queues/GroupRights.html:24 html/Admin/Queues/GroupRights.html:28 +#. ($QueueObj->Name) +msgid "Modify group rights for queue %1" +msgstr "更改表單 %1 的群組權é™" + +#: lib/RT/Group_Overlay.pm:147 +msgid "Modify membership roster for this group" +msgstr "更改æ¤ç¾¤çµ„çš„æˆå“¡åå–®" + +#: lib/RT/System.pm:60 +msgid "Modify one's own RT account" +msgstr "更改個人的帳號資訊" + +#: html/Admin/Queues/People.html:24 html/Admin/Queues/People.html:28 +#. ($QueueObj->Name) +msgid "Modify people related to queue %1" +msgstr "更改éˆçµåˆ°è¡¨å–® %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 "更改申請單 #%1 éˆçµåˆ°çš„人員" + +#: html/Admin/Queues/Scrips.html:45 +#. ($QueueObj->Name) +msgid "Modify scrips for queue %1" +msgstr "更改表單 %1 的手續" + +#: html/Admin/Global/Scrips.html:43 html/Admin/Global/index.html:41 +msgid "Modify scrips which apply to all queues" +msgstr "更改é©ç”¨æ–¼æ‰€æœ‰è¡¨å–®çš„æ‰‹çºŒ" + +#: 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 "更改範本 %1" + +#: html/Admin/Global/Templates.html:43 +msgid "Modify templates which apply to all queues" +msgstr "更改é©ç”¨æ–¼æ‰€æœ‰è¡¨å–®çš„範本" + +#: html/Admin/Groups/Modify.html:86 html/User/Groups/Modify.html:85 +#. ($Group->Name) +msgid "Modify the group %1" +msgstr "更改群組 %1" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "Modify the queue watchers" +msgstr "更改表單視察員" + +#: html/Admin/Users/Modify.html:235 +#. ($UserObj->Name) +msgid "Modify the user %1" +msgstr "更改使用者 %1" + +#: html/Ticket/ModifyAll.html:36 +#. ($Ticket->Id) +msgid "Modify ticket # %1" +msgstr "更改申請單 # %1" + +#: html/Ticket/Modify.html:24 html/Ticket/Modify.html:27 html/Ticket/Modify.html:33 +#. ($TicketObj->Id) +msgid "Modify ticket #%1" +msgstr "更改申請單 # %1" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "Modify tickets" +msgstr "更改申請單" + +#: 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 "更改群組 %1 的使用者權é™" + +#: html/Admin/Queues/UserRights.html:24 html/Admin/Queues/UserRights.html:28 +#. ($QueueObj->Name) +msgid "Modify user rights for queue %1" +msgstr "更改表單 %1 的使用者權é™" + +#: NOT FOUND IN SOURCE +msgid "Modify watchers for queue '%1'" +msgstr "更改 '%1' 的視察員" + +#: html/Admin/Global/Workflow.html:25 html/Admin/Global/Workflow.html:30 html/Admin/Global/Workflow.html:81 html/Admin/Queues/Workflow.html:77 +#. (loc($WorkflowObj->Name())) +#. ($WorkflowObj->id) +msgid "Modify workflow %1" +msgstr "更改æµç¨‹ %1" + +#: html/Admin/Global/Workflows.html:44 +msgid "Modify workflows which apply to all queues" +msgstr "更改é©ç”¨æ–¼æ‰€æœ‰è¡¨å–®çš„æµç¨‹" + +#: lib/RT/Queue_Overlay.pm:69 +msgid "ModifyACL" +msgstr "æ›´æ”¹æ¬Šé™æ¸…å–®" + +#: lib/RT/Group_Overlay.pm:148 +msgid "ModifyOwnMembership" +msgstr "更改自己是å¦å±¬æ–¼æŸç¾¤çµ„" + +#: lib/RT/Queue_Overlay.pm:70 +msgid "ModifyQueueWatchers" +msgstr "更改表單視察員" + +#: lib/RT/Queue_Overlay.pm:75 +msgid "ModifyScrips" +msgstr "更改手續" + +#: lib/RT/System.pm:60 +msgid "ModifySelf" +msgstr "更改個人帳號" + +#: lib/RT/Queue_Overlay.pm:72 +msgid "ModifyTemplate" +msgstr "更改範本" + +#: lib/RT/Queue_Overlay.pm:87 +msgid "ModifyTicket" +msgstr "更改申請單" + +#: NOT FOUND IN SOURCE +msgid "Mon" +msgstr "星期一" + +#: lib/RT/Date.pm:388 +msgid "Mon." +msgstr "星期一" + +#: html/Work/Elements/MyRequests:11 html/Work/Elements/MyTickets:11 +msgid "More" +msgstr "更多" + +#: html/Ticket/Elements/ShowRequestor:41 +#. ($name) +msgid "More about %1" +msgstr "關於 %1 的進一æ¥è³‡è¨Š" + +#: NOT FOUND IN SOURCE +msgid "Morning Shift" +msgstr "æ—©ç" + +#: html/Edit/Elements/ListButtons:16 +msgid "Move All" +msgstr "全移" + +#: html/Admin/Elements/EditCustomFields:60 +msgid "Move down" +msgstr "下移" + +#: html/Admin/Elements/EditCustomFields:52 +msgid "Move up" +msgstr "上移" + +#: html/Admin/Elements/SelectSingleOrMultiple:26 +msgid "Multiple" +msgstr "多é‡" + +#: lib/RT/User_Overlay.pm:238 +msgid "Must specify 'Name' attribute" +msgstr "å¿…é ˆæŒ‡å®š 'Name' 的屬性" + +#: html/SelfService/Elements/MyRequests:48 +#. ($friendly_status) +msgid "My %1 tickets" +msgstr "我的 %1 申請單" + +#: html/Work/Elements/Tab:37 +msgid "My Approvals" +msgstr "è¡¨å–®ç°½æ ¸" + +#: html/Work/Elements/Tab:35 +msgid "My Requests" +msgstr "表單申請追蹤" + +#: html/Work/Elements/Tab:39 +msgid "My Tickets" +msgstr "表單處ç†" + +#: html/Approvals/index.html:24 html/Approvals/index.html:25 +msgid "My approvals" +msgstr "è¡¨å–®ç°½æ ¸" + +#: html/Admin/Elements/AddCustomFieldValue:31 html/Admin/Elements/EditCustomField:33 html/Admin/Elements/ModifyTemplate:27 html/Admin/Elements/ModifyTemplateAsWorkflow:185 html/Admin/Elements/ModifyUser:29 html/Admin/Groups/Modify.html:43 html/Edit/Users/Add.html:22 html/Edit/Users/Search.html:31 html/Elements/SelectGroups:25 html/Elements/SelectUsers:27 html/User/Groups/Modify.html:43 html/Work/Tickets/Cc:18 +msgid "Name" +msgstr "å稱" + +#: lib/RT/User_Overlay.pm:245 +msgid "Name in use" +msgstr "帳號已有人使用" + +#: html/Edit/Users/Info:27 +msgid "Nationality" +msgstr "國ç±" + +#: NOT FOUND IN SOURCE +msgid "Need approval from system administrator" +msgstr "需先由系統管ç†å“¡é€²è¡Œæ‰¹å‡†" + +#: html/Ticket/Elements/ShowDates:51 +msgid "Never" +msgstr "從未更動" + +#: html/Elements/Quicksearch:29 html/Work/Elements/Quicksearch:15 html/Work/Tickets/Create.html:54 +msgid "New" +msgstr "新建立" + +#: html/Admin/Elements/ModifyUser:31 html/Admin/Users/Modify.html:92 html/User/Prefs.html:64 html/Work/Preferences/Info:47 +msgid "New Password" +msgstr "新的密碼" + +#: etc/initialdata.zh:341 etc/initialdata:317 etc/upgrade/2.1.71:16 html/Edit/Elements/CreateApprovalsQueue:21 +msgid "New Pending Approval" +msgstr "æ–°çš„å¾…ç°½æ ¸äº‹é …" + +#: html/Ticket/Elements/EditLinks:110 +msgid "New Relationships" +msgstr "新增關係" + +#: html/Work/Elements/Tab:33 +msgid "New Request" +msgstr "表單申請" + +#: html/Ticket/Elements/Tabs:35 +msgid "New Search" +msgstr "新增查詢" + +#: html/Admin/Global/CustomField.html:40 html/Admin/Global/CustomFields.html:38 html/Admin/Queues/CustomField.html:51 html/Admin/Queues/CustomFields.html:39 +msgid "New custom field" +msgstr "新增自訂欄ä½" + +#: html/Admin/Elements/GroupTabs:53 html/User/Elements/GroupTabs:51 +msgid "New group" +msgstr "新增群組" + +#: html/SelfService/Prefs.html:31 +msgid "New password" +msgstr "新的密碼" + +#: lib/RT/User_Overlay.pm:764 +msgid "New password notification sent" +msgstr "é€å‡ºæ–°å¯†ç¢¼é€šçŸ¥" + +#: html/Admin/Elements/QueueTabs:69 +msgid "New queue" +msgstr "新增表單" + +#: NOT FOUND IN SOURCE +msgid "New request" +msgstr "æå‡ºç”³è«‹å–®" + +#: html/Admin/Elements/SelectRights:41 +msgid "New rights" +msgstr "新增權é™" + +#: 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 "新增手續" + +#: html/Work/Search/index.html:62 +msgid "New search" +msgstr "釿–°æŸ¥è©¢" + +#: 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 "新增範本" + +#: html/SelfService/Elements/Tabs:47 +msgid "New ticket" +msgstr "æå‡ºç”³è«‹å–®" + +#: lib/RT/Ticket_Overlay.pm:2791 +msgid "New ticket doesn't exist" +msgstr "沒有新申請單" + +#: html/Admin/Elements/UserTabs:51 +msgid "New user" +msgstr "新增使用者" + +#: html/Admin/Elements/CreateUserCalled:25 +msgid "New user called" +msgstr "新使用者åå—" + +#: html/Admin/Queues/People.html:54 html/Ticket/Elements/EditPeople:28 +msgid "New watchers" +msgstr "新視察員" + +#: html/Admin/Users/Prefs.html:41 +msgid "New window setting" +msgstr "更新視窗è¨å®š" + +#: html/Admin/Global/Workflow.html:60 html/Admin/Global/Workflows.html:39 html/Admin/Queues/Workflow.html:57 html/Admin/Queues/Workflows.html:50 +msgid "New workflow" +msgstr "新增æµç¨‹" + +#: html/Ticket/Elements/Tabs:68 +msgid "Next" +msgstr "ä¸‹ä¸€é …" + +#: html/Search/Listing.html:47 html/Work/Search/index.html:24 +msgid "Next page" +msgstr "下一é " + +#: html/Admin/Elements/ModifyUser:49 +msgid "NickName" +msgstr "暱稱" + +#: html/Admin/Users/Modify.html:62 html/User/Prefs.html:45 html/Work/Preferences/Info:26 +msgid "Nickname" +msgstr "暱稱" + +#: NOT FOUND IN SOURCE +msgid "Night Shift" +msgstr "å°å¤œç" + +#: html/Edit/Global/Basic/Top:27 +msgid "No" +msgstr "å¦" + +#: html/Admin/Elements/EditCustomField:89 html/Admin/Elements/EditCustomFields:104 +msgid "No CustomField" +msgstr "無自訂欄ä½" + +#: html/Admin/Groups/GroupRights.html:83 html/Admin/Groups/UserRights.html:70 +msgid "No Group defined" +msgstr "尚未定義群組" + +#: html/Admin/Queues/GroupRights.html:96 html/Admin/Queues/UserRights.html:67 +msgid "No Queue defined" +msgstr "沒有定義好的表單" + +#: bin/rt-crontool:55 +msgid "No RT user found. Please consult your RT administrator.\\n" +msgstr "找ä¸åˆ° RT ä½¿ç”¨è€…ã€‚è«‹å‘ RT 管ç†å“¡æŸ¥è©¢ã€‚\\n" + +#: html/Admin/Global/Template.html:78 html/Admin/Queues/Template.html:75 +msgid "No Template" +msgstr "沒有範本" + +#: bin/rt-commit-handler:763 +msgid "No Ticket specified. Aborting ticket " +msgstr "未指定申請單。退出申請單 " + +#: NOT FOUND IN SOURCE +msgid "No Ticket specified. Aborting ticket modifications\\n\\n" +msgstr "未指定申請單。退出申請單更改\\n\\n" + +#: html/Admin/Elements/ModifyWorkflow:237 html/Admin/Global/Workflow.html:79 html/Admin/Queues/Workflow.html:75 +msgid "No Workflow" +msgstr "沒有æµç¨‹" + +#: html/Approvals/Elements/Approve:45 html/Work/Approvals/Elements/Approve:35 +msgid "No action" +msgstr "æš«ä¸è™•ç†" + +#: lib/RT/Interface/Web.pm:898 x:901 +msgid "No column specified" +msgstr "未指定欄ä½" + +#: NOT FOUND IN SOURCE +msgid "No command found\\n" +msgstr "找ä¸åˆ°å‘½ä»¤" + +#: html/Elements/ViewUser:35 html/Ticket/Elements/ShowRequestor:44 +msgid "No comment entered about this user" +msgstr "沒有å°é€™å使用者的評論" + +#: lib/RT/Ticket_Overlay.pm:2202 lib/RT/Ticket_Overlay.pm:2270 +msgid "No correspondence attached" +msgstr "沒有附上申請單回覆" + +#: lib/RT/Action/Generic.pm:149 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 "æ²’æœ‰å° %1 çš„æè¿°" + +#: lib/RT/Users_Overlay.pm:150 +msgid "No group specified" +msgstr "未指定群組" + +#: lib/RT/User_Overlay.pm:982 +msgid "No password set" +msgstr "沒有è¨å®šå¯†ç¢¼" + +#: lib/RT/Queue_Overlay.pm:260 +msgid "No permission to create queues" +msgstr "沒有新增表單的權é™" + +#: lib/RT/Ticket_Overlay.pm:342 +#. ($QueueObj->Name) +msgid "No permission to create tickets in the queue '%1'" +msgstr "沒有在表單 '%1' 新增申請單的權é™" + +#: lib/RT/User_Overlay.pm:211 +msgid "No permission to create users" +msgstr "沒有新增使用者的權é™" + +#: html/SelfService/Display.html:117 +msgid "No permission to display that ticket" +msgstr "沒有顯示該申請單的權é™" + +#: html/SelfService/Update.html:51 +msgid "No permission to view update ticket" +msgstr "沒有檢視申請單更新的權é™" + +#: lib/RT/Queue_Overlay.pm:675 lib/RT/Ticket_Overlay.pm:1487 +msgid "No principal specified" +msgstr "未指定單ä½" + +#: html/Admin/Queues/People.html:153 html/Admin/Queues/People.html:163 +msgid "No principals selected." +msgstr "未指定單ä½ã€‚" + +#: NOT FOUND IN SOURCE +msgid "No protocol specified in %1" +msgstr "%1 內未指定å”定" + +#: html/Admin/Queues/index.html:34 +msgid "No queues matching search criteria found." +msgstr "找ä¸åˆ°ç¬¦åˆæŸ¥è©¢æ¢ä»¶çš„表單。" + +#: html/Admin/Elements/SelectRights:80 +msgid "No rights found" +msgstr "找ä¸åˆ°æ¬Šé™" + +#: html/Admin/Elements/SelectRights:32 +msgid "No rights granted." +msgstr "沒有é¸å®šæ¬Šé™" + +#: html/Search/Bulk.html:160 html/Work/Search/Bulk.html:117 +msgid "No search to operate on." +msgstr "沒有è¦é€²è¡Œçš„æŸ¥è©¢" + +#: NOT FOUND IN SOURCE +msgid "No ticket id specified" +msgstr "未指定申請單編號" + +#: lib/RT/Transaction_Overlay.pm:478 lib/RT/Transaction_Overlay.pm:516 +msgid "No transaction type specified" +msgstr "æœªæŒ‡å®šæ›´å‹•å ±å‘Šé¡žåˆ¥" + +#: NOT FOUND IN SOURCE +msgid "No user or email address specified" +msgstr "未指定使用者或電å郵件地å€" + +#: html/Admin/Users/index.html:35 +msgid "No users matching search criteria found." +msgstr "找ä¸åˆ°ç¬¦åˆæŸ¥è©¢æ¢ä»¶çš„使用者。" + +#: bin/rt-commit-handler:643 +msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n" +msgstr "找ä¸åˆ°åˆæ ¼çš„ RT 使用者。RT cvs 處ç†å™¨å·²åœç”¨ã€‚è«‹å‘ RT 管ç†è€…è©¢å•。\\n" + +#: lib/RT/Interface/Web.pm:895 x:898 +msgid "No value sent to _Set!\\n" +msgstr "_Set 沒有收到任何值!\\n" + +#: html/Search/Elements/TicketRow:36 html/Work/Search/TicketRow:9 +msgid "Nobody" +msgstr "沒有人" + +#: lib/RT/Interface/Web.pm:900 x:903 +msgid "Nonexistant field?" +msgstr "欄ä½ä¸å˜åœ¨ï¼Ÿ" + +#: NOT FOUND IN SOURCE +msgid "Normal Users" +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:59 +msgid "Not logged in." +msgstr "尚未登入" + +#: lib/RT/Date.pm:369 +msgid "Not set" +msgstr "尚未è¨å®š" + +#: html/NoAuth/Reminder.html:26 +msgid "Not yet implemented." +msgstr "尚未完工。" + +#: NOT FOUND IN SOURCE +msgid "Not yet implemented...." +msgstr "尚未完工..." + +#: html/Approvals/Elements/Approve:48 html/Work/Tickets/Create.html:143 +msgid "Notes" +msgstr "備註" + +#: NOT FOUND IN SOURCE +msgid "Notes:" +msgstr "備註:" + +#: lib/RT/User_Overlay.pm:767 +msgid "Notification could not be sent" +msgstr "無法é€å‡ºé€šçŸ¥" + +#: etc/initialdata.zh:111 etc/initialdata:93 +msgid "Notify AdminCcs" +msgstr "通知管ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:107 etc/initialdata:89 +msgid "Notify AdminCcs as Comment" +msgstr "以評論方å¼é€šçŸ¥ç®¡ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:138 etc/initialdata:120 +msgid "Notify Other Recipients" +msgstr "通知其他收件人" + +#: etc/initialdata.zh:134 etc/initialdata:116 +msgid "Notify Other Recipients as Comment" +msgstr "以評論方å¼é€šçŸ¥å…¶ä»–收件人" + +#: etc/initialdata.zh:103 etc/initialdata:85 +msgid "Notify Owner" +msgstr "通知承辦人" + +#: etc/initialdata.zh:99 etc/initialdata:81 +msgid "Notify Owner as Comment" +msgstr "以評論方å¼é€šçŸ¥æ‰¿è¾¦äºº" + +#: etc/initialdata.zh:385 etc/initialdata:361 +msgid "Notify Owner of their rejected ticket" +msgstr "通知承辦人申請單已é§å›ž" + +#: etc/initialdata.zh:374 etc/initialdata:350 +msgid "Notify Owner of their ticket has been approved by all approvers" +msgstr "通知承辦人申請單已完æˆå…¨éƒ¨ç°½æ ¸" + +#: etc/initialdata.zh:359 etc/initialdata:338 +msgid "Notify Owner of their ticket has been approved by some approver" +msgstr "é€šçŸ¥æ‰¿è¾¦äººç”³è«‹å–®å·²å®ŒæˆæŸé …ç°½æ ¸" + +#: etc/initialdata.zh:343 etc/initialdata:319 etc/upgrade/2.1.71:17 html/Edit/Elements/CreateApprovalsQueue:22 +msgid "Notify Owners and AdminCcs of new items pending their approval" +msgstr "æ•´ç†å¾…ç°½æ ¸äº‹é …ï¼Œé€šçŸ¥æ‰¿è¾¦äººåŠç®¡ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:95 etc/initialdata:77 +msgid "Notify Requestors" +msgstr "通知申請人" + +#: etc/initialdata.zh:121 etc/initialdata:103 +msgid "Notify Requestors and Ccs" +msgstr "通知申請人åŠå‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:116 etc/initialdata:98 +msgid "Notify Requestors and Ccs as Comment" +msgstr "以評論方å¼é€šçŸ¥ç”³è«‹äººåŠå‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:130 etc/initialdata:112 +msgid "Notify Requestors, Ccs and AdminCcs" +msgstr "通知申請人ã€å‰¯æœ¬åŠç®¡ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:126 etc/initialdata:108 +msgid "Notify Requestors, Ccs and AdminCcs as Comment" +msgstr "以評論方å¼é€šçŸ¥ç”³è«‹äººã€å‰¯æœ¬åŠç®¡ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: html/Work/Tickets/Cc:55 +msgid "Notify people:" +msgstr "通知å°è±¡" + +#: NOT FOUND IN SOURCE +msgid "Nov" +msgstr "å一月" + +#: lib/RT/Date.pm:421 +msgid "Nov." +msgstr "11" + +#: NOT FOUND IN SOURCE +msgid "November" +msgstr "å一月" + +#: html/Edit/Global/Basic/Top:74 +msgid "OIN104" +msgstr "é…åˆ 104eHRMS 介é¢" + +#: html/Edit/Global/Workflow/Export.html:30 html/Work/Copyright.html:23 +msgid "OK" +msgstr "確定" + +#: lib/RT/Record.pm:156 +msgid "Object could not be created" +msgstr "無法新增物件" + +#: lib/RT/Record.pm:175 +msgid "Object created" +msgstr "物件新增完畢" + +#: html/Edit/Users/Info:35 +msgid "Occupation Status" +msgstr "在è·ç‹€æ…‹" + +#: NOT FOUND IN SOURCE +msgid "Oct" +msgstr "åæœˆ" + +#: lib/RT/Date.pm:420 +msgid "Oct." +msgstr "10" + +#: NOT FOUND IN SOURCE +msgid "October" +msgstr "åæœˆ" + +#: html/Edit/Users/Info:32 +msgid "Office Phone" +msgstr "辦公室電話" + +#: html/Elements/SelectDateRelation:34 +msgid "On" +msgstr "ç‰æ–¼" + +#: etc/initialdata.zh:173 etc/initialdata:155 +msgid "On Comment" +msgstr "評論時" + +#: etc/initialdata.zh:166 etc/initialdata:148 +msgid "On Correspond" +msgstr "回覆申請單時" + +#: etc/initialdata.zh:155 etc/initialdata:137 +msgid "On Create" +msgstr "新增申請單時" + +#: etc/initialdata.zh:187 etc/initialdata:169 +msgid "On Owner Change" +msgstr "承辦人改變時" + +#: etc/initialdata.zh:195 etc/initialdata:177 +msgid "On Queue Change" +msgstr "表單改變時" + +#: etc/initialdata.zh:201 etc/initialdata:183 +msgid "On Resolve" +msgstr "解決申請單時" + +#: etc/initialdata.zh:179 etc/initialdata:161 +msgid "On Status Change" +msgstr "ç¾æ³æ”¹è®Šæ™‚" + +#: etc/initialdata.zh:160 etc/initialdata:142 +msgid "On Transaction" +msgstr "發生更動時" + +#: 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 "僅顯示 %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 "僅顯示 %1 之剿–°å¢žçš„申請單" + +#: html/Edit/Global/GroupRight/List:9 html/Edit/Global/GroupRight/Top:16 html/Edit/Groups/List:11 html/Edit/Groups/Top:18 html/Edit/Queues/Basic/Top:69 html/Edit/Queues/List:13 html/Elements/Quicksearch:30 html/Work/Delegates/Info:48 html/Work/Delegates/Info:51 html/Work/Delegates/List:12 html/Work/Elements/Quicksearch:16 html/Work/Overview/Info:41 html/Work/Tickets/Display.html:28 +msgid "Open" +msgstr "開啟" + +#: html/Ticket/Elements/Tabs:135 +msgid "Open it" +msgstr "開啟" + +#: html/SelfService/Elements/Tabs:41 +msgid "Open tickets" +msgstr "開啟的申請單" + +#: html/Admin/Users/Prefs.html:40 +msgid "Open tickets (from listing) in a new window" +msgstr "在新視窗開啟(列表的)申請單" + +#: html/Admin/Users/Prefs.html:39 +msgid "Open tickets (from listing) in another window" +msgstr "在å¦ä¸€å€‹è¦–窗開啟(列表的)申請單" + +#: etc/initialdata.zh:150 etc/initialdata:132 +msgid "Open tickets on correspondence" +msgstr "收到回覆時å³é–‹å•Ÿç”³è«‹å–®" + +#: NOT FOUND IN SOURCE +msgid "Opened Tickets" +msgstr "已申請é‹è¡Œä¸è¡¨å–®" + +#: NOT FOUND IN SOURCE +msgid "Opinion" +msgstr "æ„見" + +#: html/Edit/Global/CustomField/Info:35 +msgid "Option Description" +msgstr "é¸é …æè¿°" + +#: html/Edit/Global/CustomField/Info:29 +msgid "Option Name" +msgstr "é¸é …å稱" + +#: html/Search/Elements/PickRestriction:100 html/Work/Search/PickRestriction:81 +msgid "Ordering and sorting" +msgstr "é †åºèˆ‡æŽ’åºæ–¹å¼" + +#: html/Admin/Elements/ModifyUser:45 html/Admin/Users/Modify.html:116 html/Edit/Global/Basic/Top:50 html/Elements/SelectUsers:28 html/User/Prefs.html:85 html/Work/Preferences/Info:75 +msgid "Organization" +msgstr "組織å稱" + +#: NOT FOUND IN SOURCE +msgid "Organization:" +msgstr "組織:" + +#: html/Approvals/Elements/Approve:32 +#. ($approving->Id, $approving->Subject) +msgid "Originating ticket: #%1" +msgstr "原申請單:#%1" + +#: html/Edit/Elements/PickUsers:109 html/Edit/Users/Add.html:106 html/Work/Tickets/Cc:80 +msgid "Other comma-delimited email addresses" +msgstr "å…¶ä»–e-mail帳號 (僅e-mail通知;多ç†å¸³è™Ÿè«‹ç”¨é€—號','å€éš”)" + +#: html/Admin/Elements/ModifyQueue:54 html/Admin/Queues/Modify.html:68 html/Edit/Queues/Basic/Top:41 +msgid "Over time, priority moves toward" +msgstr "å„ªå…ˆé †ä½éš¨æ™‚é–“å¢žåŠ èª¿æ•´ç‚º" + +#: NOT FOUND IN SOURCE +msgid "Override current custom fields with fields from %1" +msgstr "以 %1 表單的自訂欄ä½å–ä»£ç¾æœ‰æ¬„ä½" + +#: html/Admin/Elements/CheckOverrideGlobalACL:25 +msgid "Override global rights" +msgstr "å–代全域權é™" + +#: html/Admin/Elements/CheckOverrideGlobalACL:34 +#. (loc_fuzzy($msg)) +msgid "OverrideGlobalACL status %1" +msgstr "å–ä»£å…¨åŸŸæ¬Šé™ %1" + +#: html/Work/Elements/Tab:31 +msgid "Overview" +msgstr "總覽" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "Own tickets" +msgstr "承辦申請單" + +#: lib/RT/Queue_Overlay.pm:86 +msgid "OwnTicket" +msgstr "承辦申請單" + +#: etc/initialdata.zh:56 etc/initialdata:38 html/Admin/Elements/ModifyTemplateAsWorkflow:141 html/Edit/Global/Workflow/Owner.html:19 html/Edit/Queues/Basic/Top:47 html/Edit/Queues/Basic/Top:58 html/Elements/MyRequests:31 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:62 html/Work/Elements/MyRequests:19 html/Work/Elements/Quicksearch:18 html/Work/Tickets/Elements/ShowBasics:21 html/Work/Tickets/Update.html:27 lib/RT/ACE_Overlay.pm:85 lib/RT/Tickets_Overlay.pm:1244 +msgid "Owner" +msgstr "承辦人" + +#: NOT FOUND IN SOURCE +msgid "Owner changed from %1 to %2" +msgstr "承辦人已從 %1 改為 %2" + +#: lib/RT/Transaction_Overlay.pm:582 +#. ($Old->Name , $New->Name) +msgid "Owner forcibly changed from %1 to %2" +msgstr "強制將承辦人從 %1 改為 %2" + +#: html/Search/Elements/PickRestriction:30 html/Work/Search/PickRestriction:10 +msgid "Owner is" +msgstr "承辦人" + +#: html/Work/Elements/List:27 html/Work/Queues/List:8 html/Work/Tickets/Create.html:56 html/Work/Tickets/Elements/ShowBasics:60 +msgid "Owner's Phone" +msgstr "承辦人電話" + +#: html/Edit/Elements/Page:39 +msgid "Page" +msgstr " " + +#: html/Admin/Users/Modify.html:173 html/User/Prefs.html:55 html/Work/Preferences/Info:38 +msgid "Pager" +msgstr "呼å«å™¨" + +#: html/Admin/Elements/ModifyUser:73 +msgid "PagerPhone" +msgstr "呼å«å™¨è™Ÿç¢¼" + +#: html/Edit/Global/Workflow/Action:81 html/Edit/Global/Workflow/Condition:66 +msgid "Parameter" +msgstr "呼å«åƒæ•¸" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:225 +msgid "Parent" +msgstr "上級" + +#: html/Ticket/Create.html:181 html/Ticket/Elements/BulkLinks:38 html/Ticket/Elements/EditLinks:126 html/Ticket/Elements/EditLinks:57 html/Ticket/Elements/ShowLinks:46 html/Work/Search/BulkLinks:14 +msgid "Parents" +msgstr "æ¯ç”³è«‹å–®" + +#: NOT FOUND IN SOURCE +msgid "Park Space" +msgstr "åœè»Šä½ç”³è«‹" + +#: html/Elements/Login:52 html/User/Prefs.html:60 html/Work/Preferences/Info:44 +msgid "Password" +msgstr "密碼" + +#: html/NoAuth/Reminder.html:24 +msgid "Password Reminder" +msgstr "密碼æç¤º" + +#: lib/RT/User_Overlay.pm:228 lib/RT/User_Overlay.pm:985 +msgid "Password too short" +msgstr "密碼太çŸ" + +#: html/Admin/Users/Modify.html:290 html/User/Prefs.html:171 html/Work/Preferences/Info:167 +#. (loc_fuzzy($msg)) +msgid "Password: %1" +msgstr "密碼:%1" + +#: html/Admin/Users/Modify.html:292 +msgid "Passwords do not match." +msgstr "密碼確èªå¤±æ•—。" + +#: html/User/Prefs.html:173 html/Work/Preferences/Info:169 +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:44 html/Ticket/Elements/Tabs:95 html/Ticket/ModifyAll.html:50 +msgid "People" +msgstr "人員" + +#: NOT FOUND IN SOURCE +msgid "People with Queue Rights" +msgstr "æ“æœ‰è¡¨å–®æ¬Šé™äººå“¡" + +#: etc/initialdata.zh:143 etc/initialdata:125 +msgid "Perform a user-defined action" +msgstr "執行使用者自訂的動作" + +#: 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/CurrentUser.pm:82 lib/RT/CurrentUser.pm:91 lib/RT/CustomField_Overlay.pm:100 lib/RT/CustomField_Overlay.pm:201 lib/RT/CustomField_Overlay.pm:233 lib/RT/CustomField_Overlay.pm:510 lib/RT/CustomField_Overlay.pm:90 lib/RT/Group_Overlay.pm:1094 lib/RT/Group_Overlay.pm:1098 lib/RT/Group_Overlay.pm:1107 lib/RT/Group_Overlay.pm:1158 lib/RT/Group_Overlay.pm:1162 lib/RT/Group_Overlay.pm:1168 lib/RT/Group_Overlay.pm:425 lib/RT/Group_Overlay.pm:517 lib/RT/Group_Overlay.pm:595 lib/RT/Group_Overlay.pm:603 lib/RT/Group_Overlay.pm:700 lib/RT/Group_Overlay.pm:704 lib/RT/Group_Overlay.pm:710 lib/RT/Group_Overlay.pm:903 lib/RT/Group_Overlay.pm:907 lib/RT/Group_Overlay.pm:920 lib/RT/Queue_Overlay.pm:540 lib/RT/Queue_Overlay.pm:550 lib/RT/Queue_Overlay.pm:564 lib/RT/Queue_Overlay.pm:699 lib/RT/Queue_Overlay.pm:708 lib/RT/Queue_Overlay.pm:721 lib/RT/Queue_Overlay.pm:931 lib/RT/Scrip_Overlay.pm:125 lib/RT/Scrip_Overlay.pm:136 lib/RT/Scrip_Overlay.pm:196 lib/RT/Scrip_Overlay.pm:433 lib/RT/Template_Overlay.pm:283 lib/RT/Template_Overlay.pm:87 lib/RT/Template_Overlay.pm:93 lib/RT/Ticket_Overlay.pm:1359 lib/RT/Ticket_Overlay.pm:1369 lib/RT/Ticket_Overlay.pm:1383 lib/RT/Ticket_Overlay.pm:1517 lib/RT/Ticket_Overlay.pm:1526 lib/RT/Ticket_Overlay.pm:1539 lib/RT/Ticket_Overlay.pm:1888 lib/RT/Ticket_Overlay.pm:2026 lib/RT/Ticket_Overlay.pm:2190 lib/RT/Ticket_Overlay.pm:2257 lib/RT/Ticket_Overlay.pm:2616 lib/RT/Ticket_Overlay.pm:2688 lib/RT/Ticket_Overlay.pm:2782 lib/RT/Ticket_Overlay.pm:2797 lib/RT/Ticket_Overlay.pm:2996 lib/RT/Ticket_Overlay.pm:3006 lib/RT/Ticket_Overlay.pm:3011 lib/RT/Ticket_Overlay.pm:3233 lib/RT/Ticket_Overlay.pm:3431 lib/RT/Ticket_Overlay.pm:3593 lib/RT/Ticket_Overlay.pm:3645 lib/RT/Ticket_Overlay.pm:3823 lib/RT/Transaction_Overlay.pm:466 lib/RT/Transaction_Overlay.pm:473 lib/RT/Transaction_Overlay.pm:502 lib/RT/Transaction_Overlay.pm:509 lib/RT/User_Overlay.pm:1079 lib/RT/User_Overlay.pm:1527 lib/RT/User_Overlay.pm:687 lib/RT/User_Overlay.pm:722 lib/RT/User_Overlay.pm:978 +msgid "Permission Denied" +msgstr "權é™ä¸è¶³" + +#: html/Edit/Rights/index.html:3 +msgid "Permission Settings" +msgstr "權é™è¨å®š" + +#: NOT FOUND IN SOURCE +msgid "Permitted Queues:" +msgstr "æ“æœ‰æ¬Šé™è¡¨å–®åˆ—表:" + +#: NOT FOUND IN SOURCE +msgid "Personal" +msgstr "代ç†äººç¾¤çµ„" + +#: html/User/Elements/Tabs:34 +msgid "Personal Groups" +msgstr "代ç†äººç¾¤çµ„" + +#: NOT FOUND IN SOURCE +msgid "Personal Todo" +msgstr "ç§äººå¾…è¾¦äº‹é …" + +#: html/User/Groups/index.html:29 html/User/Groups/index.html:39 +msgid "Personal groups" +msgstr "代ç†äººç¾¤çµ„" + +#: html/User/Elements/DelegateRights:36 +msgid "Personal groups:" +msgstr "代ç†äººç¾¤çµ„:" + +#: html/Work/Preferences/Info:24 +msgid "PersonalHomepage" +msgstr "個人首é " + +#: NOT FOUND IN SOURCE +msgid "Phone" +msgstr "電話" + +#: html/Work/Delegates/Info:90 html/Work/Overview/Info:72 +msgid "Phone number" +msgstr "電話號碼" + +#: html/Admin/Users/Modify.html:155 html/User/Prefs.html:48 html/Work/Preferences/Info:30 +msgid "Phone numbers" +msgstr "電話號碼" + +#: html/Edit/Users/Add.html:3 html/Work/Delegates/Add.html:3 html/Work/Delegates/Info:34 html/Work/Tickets/ModifyPeople.html:2 +msgid "Pick" +msgstr "挑é¸" + +#: NOT FOUND IN SOURCE +msgid "Place of Departure" +msgstr "出發地點" + +#: NOT FOUND IN SOURCE +msgid "Placeholder" +msgstr "尚未完工" + +#: html/Edit/Elements/PickUsers:31 html/Edit/Elements/PickUsers:44 html/Edit/Elements/SelectCustomFieldType:3 html/Work/Elements/SelectOwner:3 html/Work/Tickets/Elements/EditCustomField:183 html/Work/Tickets/Elements/EditCustomField:75 html/Work/Tickets/Elements/EditCustomFieldEntries:81 html/Work/Tickets/Elements/EditCustomFieldEntries:88 +msgid "Please Select" +msgstr "è«‹é¸æ“‡" + +#: html/Edit/Elements/104Buttons:30 +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 role" +msgstr "è«‹é¸æ“‡è§’色" + +#: NOT FOUND IN SOURCE +msgid "Policy" +msgstr "經營è¦ç« " + +#: NOT FOUND IN SOURCE +msgid "Position" +msgstr "è·å‹™" + +#: html/Edit/Users/Info:42 +msgid "Position Level" +msgstr "è·ç‰" + +#: html/Edit/Elements/PickUsers:41 html/Edit/Global/UserRight/List:13 html/Edit/Global/UserRight/Top:23 html/Edit/Users/Add.html:41 html/Edit/Users/List:11 html/Edit/Users/Top:22 html/Work/Delegates/Add.html:26 html/Work/Delegates/Info:84 html/Work/Overview/Info:66 +msgid "Position Name" +msgstr "è·å‹™å稱" + +#: html/Edit/Global/UserRight/List:14 html/Edit/Global/UserRight/Top:33 html/Edit/Users/List:12 html/Edit/Users/Top:32 +msgid "Position Number" +msgstr "è·å‹™ä»£ç¢¼" + +#: html/Edit/Users/Info:43 +msgid "Position Rank" +msgstr "è·ç´š" + +#: NOT FOUND IN SOURCE +msgid "Pref" +msgstr "å好" + +#: html/Edit/Elements/104Top:26 html/Elements/Header:51 html/Elements/Tabs:52 html/SelfService/Elements/Tabs:50 html/SelfService/Prefs.html:24 html/User/Prefs.html:24 html/User/Prefs.html:27 html/Work/Elements/Tab:43 +msgid "Preferences" +msgstr "å好" + +#: NOT FOUND IN SOURCE +msgid "Prefs" +msgstr "個人資訊" + +#: lib/RT/Action/Generic.pm:159 +msgid "Prepare Stubbed" +msgstr "é 備動作完畢" + +#: html/Ticket/Elements/Tabs:60 +msgid "Prev" +msgstr "ä¸Šä¸€é …" + +#: html/Search/Listing.html:43 html/Work/Search/index.html:20 +msgid "Previous page" +msgstr "å‰ä¸€é " + +#: NOT FOUND IN SOURCE +msgid "Pri" +msgstr "å„ªå…ˆé †ä½" + +#: 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 "找ä¸åˆ°å–®ä½ %1。" + +#: html/Search/Elements/PickRestriction:53 html/Ticket/Create.html:153 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:38 html/Work/Search/PickRestriction:34 lib/RT/Tickets_Overlay.pm:1042 +msgid "Priority" +msgstr "å„ªå…ˆé †ä½" + +#: html/Admin/Elements/ModifyQueue:50 html/Admin/Queues/Modify.html:64 +msgid "Priority starts at" +msgstr "å„ªå…ˆé †ä½èµ·å§‹å€¼" + +#: etc/initialdata.zh:43 etc/initialdata:25 +msgid "Privileged" +msgstr "內部æˆå“¡" + +#: html/Admin/Users/Modify.html:270 html/User/Prefs.html:162 html/Work/Preferences/Info:158 +#. (loc_fuzzy($msg)) +msgid "Privileged status: %1" +msgstr "內部æˆå“¡ç‹€æ…‹ï¼š%1" + +#: html/Admin/Users/index.html:61 +msgid "Privileged users" +msgstr "內部æˆå“¡" + +#: html/Work/Elements/SelectSearch:16 +msgid "Process Status" +msgstr "處ç†ç‹€æ…‹" + +#: etc/initialdata.zh:41 etc/initialdata.zh:47 etc/initialdata.zh:53 etc/initialdata.zh:77 etc/initialdata:23 etc/initialdata:29 etc/initialdata:35 etc/initialdata:59 +msgid "Pseudogroup for internal use" +msgstr "內部用的虛擬群組" + +#: html/Work/Preferences/Info:68 +msgid "Public Info" +msgstr "公開資訊" + +#: html/Work/Elements/104Header:88 +msgid "Public Service" +msgstr "公共事務å€" + +#: html/Edit/Users/Search.html:4 +msgid "Query" +msgstr "查詢" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:166 html/Elements/MyRequests:29 html/Elements/MyTickets:29 html/Elements/Quicksearch:28 html/Search/Elements/PickRestriction:45 html/SelfService/Create.html:32 html/Ticket/Create.html:37 html/Ticket/Elements/EditBasics:63 html/Ticket/Elements/ShowBasics:42 html/User/Elements/DelegateRights:79 html/Work/Elements/MyApprovals:10 html/Work/Elements/MyRequests:17 html/Work/Elements/MyTickets:17 html/Work/Elements/Quicksearch:14 html/Work/Search/PickRestriction:26 lib/RT/Tickets_Overlay.pm:883 +msgid "Queue" +msgstr "表單" + +#: html/Admin/Queues/CustomField.html:41 html/Admin/Queues/Scrip.html:49 html/Admin/Queues/Scrips.html:47 html/Admin/Queues/Templates.html:43 html/Admin/Queues/Workflows.html:44 +#. ($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/Elements/ModifyQueue:30 html/Admin/Queues/Modify.html:42 html/Edit/Queues/Basic/Top:12 html/Edit/Queues/Basic/index.html:36 html/Edit/Queues/Global:21 html/Edit/Queues/List:6 html/Edit/Users/Queue:10 html/Work/Delegates/List:6 html/Work/Elements/List:11 html/Work/Queues/List:5 html/Work/Tickets/Create.html:22 html/Work/Tickets/Elements/ShowBasics:6 +msgid "Queue Name" +msgstr "表單å稱" + +#: html/Edit/Queues/List:8 html/Work/Elements/List:25 html/Work/Queues/List:7 html/Work/Tickets/Create.html:35 html/Work/Tickets/Elements/ShowBasics:19 +msgid "Queue Owner" +msgstr "æ¥å‹™æ‰¿è¾¦äºº" + +#: html/Edit/Queues/Basic/Top:35 +msgid "Queue Priority" +msgstr "優先ç‰ç´š" + +#: html/Edit/Global/GroupRight/Top:24 html/Edit/Global/UserRight/Top:43 html/Edit/Users/Queue:11 html/Edit/Users/index.html:124 +msgid "Queue Rights" +msgstr "表單權é™" + +#: NOT FOUND IN SOURCE +msgid "Queue Scrips" +msgstr "表單手續" + +#: html/Edit/Elements/Tab:38 +msgid "Queue Setup" +msgstr "表單è¨å®š" + +#: lib/RT/Queue_Overlay.pm:264 +msgid "Queue already exists" +msgstr "表單已å˜åœ¨" + +#: lib/RT/Queue_Overlay.pm:273 lib/RT/Queue_Overlay.pm:279 +msgid "Queue could not be created" +msgstr "無法新增表單" + +#: html/Edit/Queues/autohandler:8 html/Ticket/Create.html:204 html/Work/Tickets/Create.html:185 +msgid "Queue could not be loaded." +msgstr "無法載入表單" + +#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:283 +msgid "Queue created" +msgstr "表單新增完畢" + +#: html/Admin/Elements/ModifyWorkflow:32 +msgid "Queue is not specified." +msgstr "未指定表單。" + +#: html/SelfService/Display.html:70 lib/RT/CustomField_Overlay.pm:97 +msgid "Queue not found" +msgstr "找ä¸åˆ°è¡¨å–®" + +#: html/Admin/Elements/Tabs:37 html/Admin/index.html:34 +msgid "Queues" +msgstr "表單" + +#: html/Work/Elements/Quicksearch:10 +msgid "Quick Search" +msgstr "è¡¨å–®ç¾æ³" + +#: html/Elements/Quicksearch:24 +msgid "Quick search" +msgstr "表單一覽" + +#: html/Elements/Login:44 +#. ($RT::VERSION) +msgid "RT %1" +msgstr "RT %1" + +#: docs/design_docs/string-extraction-guide.txt:70 +#. ($RT::VERSION, $RT::rtname) +msgid "RT %1 for %2" +msgstr "%2:RT %1 版" + +#: html/Elements/Footer:32 +#. ($RT::VERSION) +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:24 html/Admin/index.html:25 +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:41 html/SelfService/Error.html:40 +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/index.html:24 html/index.html:27 +msgid "RT at a glance" +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" + +#: NOT FOUND IN SOURCE +msgid "RT couldn't validate this PGP signature. \\n" +msgstr "RT 無法確èªé€™å€‹ PGP ç°½ç« ã€‚\\n" + +#: html/Edit/Elements/104Header:7 html/Edit/Elements/104Top:20 html/Elements/PageLayout:85 html/Work/Elements/104Header:7 +#. ($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 已執行您的命令" + +#: html/Elements/Login:94 +#. ('2003') +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 èªç‚ºé€™å¯èƒ½æ˜¯é€€ä¿¡" + +#: NOT FOUND IN SOURCE +msgid "RT will process this message as if it were unsigned.\\n" +msgstr "RT ä»¥æœªç°½ç« æ–¹å¼è™•ç†é€™å°éƒµä»¶ã€‚\\n" + +#: 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 "申請單é‹è¡Œè§’色" + +#: html/Work/Tickets/Elements/ShowTransaction:11 +msgid "RT_System" +msgstr "系統訊æ¯" + +#: html/Admin/Users/Modify.html:57 html/Admin/Users/Prefs.html:51 html/User/Prefs.html:43 html/Work/Preferences/Info:18 +msgid "Real Name" +msgstr "真實姓å" + +#: html/Admin/Elements/ModifyUser:47 +msgid "RealName" +msgstr "真實姓å" + +#: html/Work/Approvals/Display.html:27 html/Work/Tickets/Update.html:85 +msgid "Really reject this ticket?" +msgstr "您確定è¦é§å›žé€™å¼µç”³è«‹å–®å—Žï¼Ÿ" + +#: html/Ticket/Create.html:184 html/Ticket/Elements/BulkLinks:50 html/Ticket/Elements/EditLinks:138 html/Ticket/Elements/EditLinks:93 html/Ticket/Elements/ShowLinks:70 html/Work/Search/BulkLinks:26 +msgid "Referred to by" +msgstr "被åƒè€ƒ" + +#: html/Elements/SelectLinkType:27 html/Ticket/Create.html:183 html/Ticket/Elements/BulkLinks:46 html/Ticket/Elements/EditLinks:134 html/Ticket/Elements/EditLinks:79 html/Ticket/Elements/ShowLinks:60 html/Work/Search/BulkLinks:22 +msgid "Refers to" +msgstr "åƒè€ƒ" + +#: NOT FOUND IN SOURCE +msgid "RefersTo" +msgstr "åƒè€ƒ" + +#: NOT FOUND IN SOURCE +msgid "Refine" +msgstr "åœ¨çµæžœç¯„åœå…§æŸ¥è©¢" + +#: html/Search/Elements/PickRestriction:26 html/Work/Search/PickRestriction:7 +msgid "Refine search" +msgstr "調整查詢æ¢ä»¶" + +#: html/Work/Overview/index.html:12 +msgid "Refresh" +msgstr "æ›´æ–°" + +#: html/Elements/Refresh:35 +#. ($value/60) +msgid "Refresh this page every %1 minutes." +msgstr "æ¯ %1 åˆ†é˜æ›´æ–°é é¢" + +#: html/Ticket/Create.html:173 html/Ticket/Elements/ShowSummary:61 html/Ticket/ModifyAll.html:56 +msgid "Relationships" +msgstr "關係" + +#: html/Edit/Elements/ListButtons:13 +msgid "Remove" +msgstr "移除" + +#: html/Search/Bulk.html:97 html/Work/Search/Bulk.html:77 +msgid "Remove AdminCc" +msgstr "移除管ç†å“¡å‰¯æœ¬" + +#: html/Search/Bulk.html:93 html/Work/Search/Bulk.html:71 +msgid "Remove Cc" +msgstr "移除副本" + +#: html/Search/Bulk.html:89 html/Work/Search/Bulk.html:65 +msgid "Remove Requestor" +msgstr "移除申請人" + +#: html/Ticket/Elements/ShowTransaction:160 html/Ticket/Elements/Tabs:121 html/Work/Tickets/Display.html:31 html/Work/Tickets/Elements/ShowTransaction:108 +msgid "Reply" +msgstr "回覆" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "Reply to tickets" +msgstr "å°ç”³è«‹å–®é€²è¡Œå›žè¦†" + +#: lib/RT/Queue_Overlay.pm:84 +msgid "ReplyToTicket" +msgstr "回覆申請單" + +#: html/Edit/Users/Info:45 +msgid "Report to Duty" +msgstr "上下ç刷å¡" + +#: html/Edit/Users/Info:33 +msgid "Reported on" +msgstr "åˆ°è·æ—¥æœŸ" + +#: etc/initialdata.zh:62 etc/initialdata:44 html/Ticket/Update.html:39 html/Work/Elements/List:21 html/Work/Elements/MyApprovals:12 html/Work/Elements/MyTickets:20 html/Work/Elements/SelectSearch:30 html/Work/Tickets/Elements/ShowBasics:62 lib/RT/ACE_Overlay.pm:86 +msgid "Requestor" +msgstr "申請人" + +#: html/Edit/Global/Workflow/Owner.html:44 +msgid "Requestor Group's" +msgstr "申請人所屬群組之" + +#: html/Search/Elements/PickRestriction:37 html/Work/Search/PickRestriction:17 +msgid "Requestor email address" +msgstr "申請人電å郵件信箱ä½å€" + +#: html/Edit/Global/Workflow/Owner.html:28 +msgid "Requestor's" +msgstr "申請人所屬之第上" + +#: html/Work/Elements/List:23 +msgid "Requestor's Phone" +msgstr "申請人電話" + +#: NOT FOUND IN SOURCE +msgid "Requestor(s)" +msgstr "申請人" + +#: NOT FOUND IN SOURCE +msgid "RequestorAddresses" +msgstr "申請人地å€" + +#: html/SelfService/Create.html:40 html/Ticket/Create.html:55 html/Ticket/Elements/EditPeople:47 html/Ticket/Elements/ShowPeople:30 +msgid "Requestors" +msgstr "申請人" + +#: html/Admin/Elements/ModifyQueue:60 html/Admin/Queues/Modify.html:74 +msgid "Requests should be due in" +msgstr "ç”³è«‹å–®è™•ç†æœŸé™" + +#: html/Elements/Submit:61 +msgid "Reset" +msgstr "é‡è¨" + +#: html/Admin/Users/Modify.html:158 html/User/Prefs.html:49 html/Work/Preferences/Info:32 +msgid "Residence" +msgstr "ä½è™•" + +#: NOT FOUND IN SOURCE +msgid "Resolution" +msgstr "解決狀態" + +#: html/Ticket/Elements/Tabs:131 html/Work/Tickets/Display.html:34 +msgid "Resolve" +msgstr "解決" + +#: html/Ticket/Update.html:136 html/Work/Tickets/Update.html:120 +#. ($Ticket->id, $Ticket->Subject) +msgid "Resolve ticket #%1 (%2)" +msgstr "解決申請單 #%1 (%2)" + +#: etc/initialdata.zh:331 etc/initialdata:308 html/Elements/SelectDateType:27 lib/RT/Ticket_Overlay.pm:1188 +msgid "Resolved" +msgstr "已解決" + +#: html/Search/Bulk.html:132 html/Ticket/ModifyAll.html:72 html/Ticket/Update.html:71 html/Work/Search/Bulk.html:84 html/Work/Tickets/Update.html:38 +msgid "Response to requestors" +msgstr "回覆申請人" + +#: html/Edit/Users/Info:44 +msgid "Responsibility Type" +msgstr "責任å€åˆ†" + +#: html/Elements/ListActions:25 +msgid "Results" +msgstr "çµæžœ" + +#: html/Search/Elements/PickRestriction:104 html/Work/Search/PickRestriction:84 +msgid "Results per page" +msgstr "æ¯é 列出幾ç†çµæžœ" + +#: html/Admin/Elements/ModifyUser:32 html/Admin/Users/Modify.html:99 html/User/Prefs.html:71 html/Work/Preferences/Info:54 +msgid "Retype Password" +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:612 +msgid "Right Delegated" +msgstr "權é™ä»£ç†å®Œç•¢" + +#: lib/RT/ACE_Overlay.pm:302 +msgid "Right Granted" +msgstr "權é™è¨å®šå®Œç•¢" + +#: lib/RT/ACE_Overlay.pm:160 +msgid "Right Loaded" +msgstr "權é™è¼‰å…¥å®Œç•¢" + +#: lib/RT/ACE_Overlay.pm:677 lib/RT/ACE_Overlay.pm:692 +msgid "Right could not be revoked" +msgstr "無法撤消權é™" + +#: html/User/Delegation.html:63 +msgid "Right not found" +msgstr "找ä¸åˆ°æ¬Šé™" + +#: lib/RT/ACE_Overlay.pm:542 lib/RT/ACE_Overlay.pm:637 +msgid "Right not loaded." +msgstr "權é™ä¸¦æœªè¼‰å…¥ã€‚" + +#: lib/RT/ACE_Overlay.pm:688 +msgid "Right revoked" +msgstr "æ¬Šé™æ’¤æ¶ˆå®Œç•¢" + +#: html/Admin/Elements/UserTabs:40 +msgid "Rights" +msgstr "權é™åŠä»£ç†äºº" + +#: lib/RT/Interface/Web.pm:794 x:797 +#. ($object_type) +msgid "Rights could not be granted for %1" +msgstr "無法將權é™è³¦äºˆ %1" + +#: lib/RT/Interface/Web.pm:827 x:830 +#. ($object_type) +msgid "Rights could not be revoked for %1" +msgstr "無法撤消 %1 的權é™" + +#: html/Edit/Groups/Member:55 html/Edit/Groups/Members/List:10 +msgid "Role Members" +msgstr "角色æˆå“¡" + +#: html/Edit/Groups/Member:37 html/Edit/Groups/Members/Add.html:13 html/Edit/Groups/Members/List:7 html/Edit/Groups/Roles/List:4 html/Edit/Groups/Roles/Top:7 +msgid "Role Name" +msgstr "角色å稱" + +#: html/Admin/Global/GroupRights.html:50 html/Admin/Queues/GroupRights.html:52 html/Edit/Global/Workflow/Owner.html:55 html/Edit/Global/Workflow/Owner.html:81 html/Edit/Groups/Member:24 +msgid "Roles" +msgstr "角色" + +#: NOT FOUND IN SOURCE +msgid "RootApproval" +msgstr "交由系統管ç†å“¡ç°½æ ¸" + +#: html/Edit/Global/Workflow/Action:27 +msgid "Run Approval" +msgstr "ç°½æ ¸åŸ·è¡Œ" + +#: html/Edit/Global/Basic/Top:72 +msgid "SMTPDebug" +msgstr "SMTP åµéŒ¯ç´€éŒ„" + +#: html/Edit/Global/Basic/Top:58 +msgid "SMTPFrom" +msgstr "SMTP 寄件ä½å€" + +#: html/Edit/Global/Basic/Top:56 +msgid "SMTPServer" +msgstr "SMTP 伺æœå™¨" + +#: NOT FOUND IN SOURCE +msgid "Sat" +msgstr "星期å…" + +#: lib/RT/Date.pm:393 +msgid "Sat." +msgstr "星期å…" + +#: html/Edit/Elements/104Buttons:72 html/Work/Preferences/index.html:35 +msgid "Save" +msgstr "儲å˜" + +#: html/Admin/Queues/People.html:104 html/Ticket/Modify.html:38 html/Ticket/ModifyAll.html:93 html/Ticket/ModifyLinks.html:38 html/Ticket/ModifyPeople.html:37 +msgid "Save Changes" +msgstr "å„²å˜æ›´æ”¹" + +#: NOT FOUND IN SOURCE +msgid "Save changes" +msgstr "å„²å˜æ›´æ”¹" + +#: html/Admin/Global/Scrip.html:48 html/Admin/Queues/Scrip.html:54 +#. ($QueueObj->id) +#. ($ARGS{'id'}) +msgid "Scrip #%1" +msgstr "手續 #%1" + +#: html/Edit/Global/Scrip/List:9 html/Edit/Global/Scrip/Top:41 +msgid "Scrip Action" +msgstr "訊æ¯é€šçŸ¥å‹•作" + +#: html/Edit/Global/Scrip/List:8 html/Edit/Global/Scrip/Top:15 +msgid "Scrip Condition" +msgstr "訊æ¯é€šçŸ¥æ¢ä»¶" + +#: lib/RT/Scrip_Overlay.pm:175 +msgid "Scrip Created" +msgstr "手續新增完畢" + +#: html/Edit/Global/Scrip/List:7 html/Edit/Global/Scrip/Top:9 +msgid "Scrip Name" +msgstr "訊æ¯å稱" + +#: html/Admin/Elements/EditScrips:83 +msgid "Scrip deleted" +msgstr "手續刪除完畢" + +#: html/Admin/Elements/QueueTabs:45 html/Admin/Elements/SystemTabs:32 html/Admin/Global/index.html:40 +msgid "Scrips" +msgstr "手續" + +#: html/Edit/Global/autohandler:9 html/Edit/Queues/autohandler:20 +msgid "Scrips " +msgstr "訊æ¯é€šçŸ¥" + +#: NOT FOUND IN SOURCE +msgid "Scrips for %1\\n" +msgstr "%1 的手續\\n" + +#: html/Admin/Queues/Scrips.html:33 +msgid "Scrips which apply to all queues" +msgstr "é©ç”¨æ–¼æ‰€æœ‰è¡¨å–®çš„æ‰‹çºŒ" + +#: html/Edit/Elements/104Buttons:75 html/Elements/SimpleSearch:26 html/Search/Elements/PickRestriction:125 html/Ticket/Elements/Tabs:158 html/Work/Elements/Tab:45 html/Work/Search/PickRestriction:102 +msgid "Search" +msgstr "查詢" + +#: NOT FOUND IN SOURCE +msgid "Search Criteria" +msgstr "查詢æ¢ä»¶" + +#: html/Approvals/Elements/PendingMyApproval:38 +msgid "Search for approvals" +msgstr "ç°½æ ¸å–®æŸ¥è©¢" + +#: html/Edit/Global/Workflow/Owner.html:31 +msgid "Second-" +msgstr "二" + +#: html/Edit/Users/Info:40 +msgid "Second-level Users" +msgstr "二階主管員工" + +#: bin/rt-crontool:187 +msgid "Security:" +msgstr "安全性:" + +#: lib/RT/Queue_Overlay.pm:66 +msgid "SeeQueue" +msgstr "查閱表單" + +#: html/Edit/Elements/ListButtons:10 +msgid "Select All" +msgstr "å…¨é¸" + +#: html/Admin/Groups/index.html:39 +msgid "Select a group" +msgstr "鏿“‡ç¾¤çµ„" + +#: NOT FOUND IN SOURCE +msgid "Select a queue" +msgstr "鏿“‡è¡¨å–®" + +#: html/Work/Queues/Select.html:8 +msgid "Select a queue to link to" +msgstr "è«‹é¸æ“‡æ¬²é€£çµè¡¨å–®" + +#: html/Admin/Users/index.html:24 html/Admin/Users/index.html:27 +msgid "Select a user" +msgstr "鏿“‡ä½¿ç”¨è€…" + +#: html/Admin/Global/CustomField.html:37 html/Admin/Global/CustomFields.html:35 +msgid "Select custom field" +msgstr "鏿“‡è‡ªè¨‚欄ä½" + +#: html/Admin/Elements/GroupTabs:51 html/User/Elements/GroupTabs:49 +msgid "Select group" +msgstr "鏿“‡ç¾¤çµ„" + +#: lib/RT/CustomField_Overlay.pm:421 +msgid "Select multiple values" +msgstr "鏿“‡å¤šé‡é …ç›®" + +#: lib/RT/CustomField_Overlay.pm:418 +msgid "Select one value" +msgstr "鏿“‡å–®ä¸€é …ç›®" + +#: html/Admin/Elements/QueueTabs:66 +msgid "Select queue" +msgstr "鏿“‡è¡¨å–®" + +#: 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 "鏿“‡æ‰‹çºŒ" + +#: 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 "鏿“‡ç¯„本" + +#: html/Admin/Elements/UserTabs:48 +msgid "Select user" +msgstr "鏿“‡ä½¿ç”¨è€…" + +#: html/Admin/Global/Workflow.html:57 html/Admin/Global/Workflows.html:36 html/Admin/Queues/Workflow.html:54 html/Admin/Queues/Workflows.html:47 +msgid "Select workflow" +msgstr "鏿“‡æµç¨‹" + +#: NOT FOUND IN SOURCE +msgid "SelectExternal" +msgstr "系統é¸é …" + +#: lib/RT/CustomField_Overlay.pm:35 +msgid "SelectMultiple" +msgstr "多é‡é¸é …" + +#: lib/RT/CustomField_Overlay.pm:34 +msgid "SelectSingle" +msgstr "單一é¸é …" + +#: html/Edit/Elements/PickUsers:85 html/Edit/Users/Add.html:78 +msgid "Selected users:" +msgstr "新增å°è±¡ï¼š" + +#: NOT FOUND IN SOURCE +msgid "Self Service" +msgstr "自助æœå‹™" + +#: etc/initialdata.zh:131 etc/initialdata:113 +msgid "Send mail to all watchers" +msgstr "寄信給所有視察員" + +#: etc/initialdata.zh:127 etc/initialdata:109 +msgid "Send mail to all watchers as a \"comment\"" +msgstr "以評論方å¼å¯„信給所有視察員" + +#: etc/initialdata.zh:122 etc/initialdata:104 +msgid "Send mail to requestors and Ccs" +msgstr "寄信給申請人åŠå‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:117 etc/initialdata:99 +msgid "Send mail to requestors and Ccs as a comment" +msgstr "以評論方å¼å¯„信給申請人åŠå‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:96 etc/initialdata:78 +msgid "Sends a message to the requestors" +msgstr "寄信給申請人" + +#: etc/initialdata.zh:135 etc/initialdata.zh:139 etc/initialdata:117 etc/initialdata:121 +msgid "Sends mail to explicitly listed Ccs and Bccs" +msgstr "寄信給特定的副本åŠå¯†ä»¶å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:112 etc/initialdata:94 +msgid "Sends mail to the administrative Ccs" +msgstr "寄信給管ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:108 etc/initialdata:90 +msgid "Sends mail to the administrative Ccs as a comment" +msgstr "以評論寄信給管ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:100 etc/initialdata.zh:104 etc/initialdata:82 etc/initialdata:86 +msgid "Sends mail to the owner" +msgstr "寄信給申請人" + +#: NOT FOUND IN SOURCE +msgid "Sep" +msgstr "乿œˆ" + +#: lib/RT/Date.pm:419 +msgid "Sep." +msgstr "09" + +#: NOT FOUND IN SOURCE +msgid "September" +msgstr "乿œˆ" + +#: html/Edit/Users/Info:38 +msgid "Shift Type" +msgstr "ç別屬性" + +#: NOT FOUND IN SOURCE +msgid "Show Results" +msgstr "é¡¯ç¤ºçµæžœ" + +#: html/Approvals/Elements/PendingMyApproval:43 +msgid "Show approved requests" +msgstr "é¡¯ç¤ºå·²æ‰¹å‡†çš„ç°½æ ¸å–®" + +#: html/Ticket/Create.html:143 html/Ticket/Create.html:33 +msgid "Show basics" +msgstr "顯示基本資訊" + +#: html/Approvals/Elements/PendingMyApproval:44 +msgid "Show denied requests" +msgstr "顯示已é§å›žçš„ç°½æ ¸å–®" + +#: html/Ticket/Create.html:143 html/Ticket/Create.html:33 +msgid "Show details" +msgstr "顯示細節" + +#: html/Approvals/Elements/PendingMyApproval:42 +msgid "Show pending requests" +msgstr "顯示待處ç†çš„ç°½æ ¸å–®" + +#: html/Approvals/Elements/PendingMyApproval:45 +msgid "Show requests awaiting other approvals" +msgstr "é¡¯ç¤ºå°šå¾…ä»–äººæ‰¹å‡†çš„ç°½æ ¸å–®" + +#: lib/RT/Queue_Overlay.pm:80 +msgid "Show ticket private commentary" +msgstr "顯示申請單內的ç§äººè©•è«–" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "Show ticket summaries" +msgstr "顯示申請單摘è¦" + +#: lib/RT/Queue_Overlay.pm:68 +msgid "ShowACL" +msgstr "é¡¯ç¤ºæ¬Šé™æ¸…å–®" + +#: lib/RT/Queue_Overlay.pm:77 +msgid "ShowScrips" +msgstr "顯示手續" + +#: lib/RT/Queue_Overlay.pm:74 +msgid "ShowTemplate" +msgstr "顯示範本" + +#: lib/RT/Queue_Overlay.pm:78 +msgid "ShowTicket" +msgstr "顯示申請單" + +#: lib/RT/Queue_Overlay.pm:80 +msgid "ShowTicketComments" +msgstr "顯示申請單的評論" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Sign up as a ticket Requestor or ticket or queue Cc" +msgstr "登記æˆç‚ºç”³è«‹äººæˆ–副本收件人" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "Sign up as a ticket or queue AdminCc" +msgstr "登記æˆç‚ºç®¡ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: html/Admin/Elements/ModifyUser:38 html/Admin/Users/Modify.html:190 html/Admin/Users/Prefs.html:31 html/User/Prefs.html:111 html/Work/Preferences/Info:111 +msgid "Signature" +msgstr "ç°½åæª”" + +#: NOT FOUND IN SOURCE +msgid "Signed in as %1" +msgstr "使用者:%1" + +#: html/Admin/Elements/SelectSingleOrMultiple:25 +msgid "Single" +msgstr "單一" + +#: html/Edit/Elements/104Top:21 html/Elements/Header:50 +msgid "Skip Menu" +msgstr "ç•¥éŽé¸å–®" + +#: html/Admin/Elements/AddCustomFieldValue:27 +msgid "Sort" +msgstr "é †åº" + +#: NOT FOUND IN SOURCE +msgid "Sort key" +msgstr "æŽ’åºæ–¹å¼" + +#: html/Search/Elements/PickRestriction:108 html/Work/Search/PickRestriction:89 +msgid "Sort results by" +msgstr "çµæžœæŽ’åºæ–¹å¼" + +#: NOT FOUND IN SOURCE +msgid "SortOrder" +msgstr "排åºé †åº" + +#: html/Work/Elements/List:8 html/Work/Elements/MyApprovals:11 +msgid "Stage" +msgstr "é—œå¡" + +#: html/Edit/Global/Workflow/Top:8 +msgid "Stage Action" +msgstr "é—œå¡é‹è¡Œå‹•作" + +#: html/Edit/Global/Workflow/Top:5 +msgid "Stage Condition" +msgstr "é—œå¡é‹è¡Œæ¢ä»¶" + +#: html/Work/Elements/Quicksearch:17 +msgid "Stalled" +msgstr "延宕" + +#: NOT FOUND IN SOURCE +msgid "Start page" +msgstr "首é " + +#: html/Elements/SelectDateType:26 html/Ticket/Elements/EditDates:31 html/Ticket/Elements/ShowDates:34 +msgid "Started" +msgstr "實際起始日" + +#: NOT FOUND IN SOURCE +msgid "Started date '%1' could not be parsed" +msgstr "無法解讀起始日期 '%1" + +#: html/Elements/SelectDateType:30 html/Ticket/Create.html:165 html/Ticket/Elements/EditDates:26 html/Ticket/Elements/ShowDates:30 +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/Elements/ModifyUser:81 html/Admin/Users/Modify.html:137 html/User/Prefs.html:93 html/Work/Preferences/Info:83 +msgid "State" +msgstr "å·ž" + +#: html/Elements/MyRequests:30 html/Elements/MyTickets:30 html/Search/Elements/PickRestriction:73 html/SelfService/Elements/MyRequests:28 html/SelfService/Update.html:30 html/Ticket/Create.html:41 html/Ticket/Elements/EditBasics:37 html/Ticket/Elements/ShowBasics:30 html/Ticket/Update.html:59 html/Work/Elements/List:15 html/Work/Elements/MyRequests:18 html/Work/Elements/MyTickets:18 html/Work/Search/PickRestriction:54 html/Work/Tickets/Update.html:22 lib/RT/Ticket_Overlay.pm:1182 lib/RT/Tickets_Overlay.pm:908 +msgid "Status" +msgstr "ç¾æ³" + +#: etc/initialdata.zh:317 etc/initialdata:294 +msgid "Status Change" +msgstr "ç¾æ³æ”¹è®Šæ™‚" + +#: lib/RT/Transaction_Overlay.pm:528 +#. ($self->loc($self->OldValue), $self->loc($self->NewValue)) +msgid "Status changed from %1 to %2" +msgstr "ç¾æ³å¾ž %1 改為 %2" + +#: NOT FOUND IN SOURCE +msgid "StatusChange" +msgstr "ç¾æ³æ”¹è®Šæ™‚" + +#: html/Ticket/Elements/Tabs:146 +msgid "Steal" +msgstr "å¼·åˆ¶æ›´æ›æ‰¿è¾¦äºº" + +#: lib/RT/Queue_Overlay.pm:91 +msgid "Steal tickets" +msgstr "強制承辦申請單" + +#: lib/RT/Queue_Overlay.pm:91 +msgid "StealTicket" +msgstr "強制承辦申請單" + +#: lib/RT/Transaction_Overlay.pm:587 +#. ($Old->Name) +msgid "Stolen from %1 " +msgstr "被 %1 å¼·åˆ¶æ›´æ› " + +#: html/Edit/Groups/Member:69 +msgid "Subgroup" +msgstr "å群組" + +#: html/Elements/MyRequests:28 html/Elements/MyTickets:28 html/Search/Bulk.html:135 html/Search/Elements/PickRestriction:42 html/SelfService/Create.html:56 html/SelfService/Elements/MyRequests:27 html/SelfService/Update.html:31 html/Ticket/Create.html:83 html/Ticket/Elements/EditBasics:27 html/Ticket/ModifyAll.html:78 html/Ticket/Update.html:75 html/Work/Elements/MyApprovals:9 html/Work/Elements/MyRequests:16 html/Work/Elements/MyTickets:16 html/Work/Search/Bulk.html:87 html/Work/Search/PickRestriction:22 html/Work/Tickets/Create.html:131 html/Work/Tickets/Elements/ShowBasics:36 lib/RT/Ticket_Overlay.pm:1178 lib/RT/Tickets_Overlay.pm:987 +msgid "Subject" +msgstr "主題" + +#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/Transaction_Overlay.pm:609 +#. ($self->Data) +msgid "Subject changed to %1" +msgstr "標題已改為 %1" + +#: html/Elements/Submit:58 html/Work/Search/Bulk.html:103 +msgid "Submit" +msgstr "é€å‡º" + +#: NOT FOUND IN SOURCE +msgid "Submit Workflow" +msgstr "é€å‡ºæµç¨‹" + +#: lib/RT/Group_Overlay.pm:748 +msgid "Succeeded" +msgstr "è¨å®šæˆåŠŸ" + +#: NOT FOUND IN SOURCE +msgid "Sun" +msgstr "星期日" + +#: lib/RT/Date.pm:394 +msgid "Sun." +msgstr "星期日" + +#: html/Edit/Users/System:17 lib/RT/System.pm:53 +msgid "SuperUser" +msgstr "系統管ç†å“¡" + +#: html/User/Elements/DelegateRights:76 +msgid "System" +msgstr "系統" + +#: html/Edit/Global/Scrip/Top:18 html/Edit/Global/Scrip/Top:44 +msgid "System Defined" +msgstr "系統定義" + +#: html/Admin/Elements/SelectRights:80 lib/RT/ACE_Overlay.pm:566 lib/RT/Interface/Web.pm:793 lib/RT/Interface/Web.pm:826 x:796 x:829 +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 "系統錯誤。è¨å®šæ¬Šé™å¤±æ•—。" + +#: html/Edit/Users/index.html:122 +msgid "System Rights" +msgstr "系統權é™" + +#: lib/RT/ACE_Overlay.pm:615 +msgid "System error. Right not delegated." +msgstr "系統錯誤。權é™ä»£ç†å¤±æ•—。" + +#: 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 "系統錯誤。è¨å®šæ¬Šé™å¤±æ•—。" + +#: NOT FOUND IN SOURCE +msgid "System error. Unable to grant rights." +msgstr "系統錯誤。無法è¨å®šæ¬Šé™ã€‚" + +#: html/Admin/Global/GroupRights.html:34 html/Admin/Groups/GroupRights.html:36 html/Admin/Queues/GroupRights.html:35 +msgid "System groups" +msgstr "系統群組" + +#: NOT FOUND IN SOURCE +msgid "SystemInternal" +msgstr "系統內部用" + +#: etc/initialdata.zh:59 etc/initialdata.zh:65 etc/initialdata.zh:71 etc/initialdata:41 etc/initialdata:47 etc/initialdata:53 +msgid "SystemRolegroup for internal use" +msgstr "內部使用的系統角色群組" + +#: lib/RT/CurrentUser.pm:319 +msgid "TEST_STRING" +msgstr "TEST_STRING" + +#: NOT FOUND IN SOURCE +msgid "TabbedUI" +msgstr "é 籤介é¢" + +#: html/Ticket/Elements/Tabs:142 +msgid "Take" +msgstr "å—ç†" + +#: lib/RT/Queue_Overlay.pm:89 +msgid "Take tickets" +msgstr "自行承辦申請單" + +#: lib/RT/Queue_Overlay.pm:89 +msgid "TakeTicket" +msgstr "自行承辦申請單" + +#: lib/RT/Transaction_Overlay.pm:573 +msgid "Taken" +msgstr "å·²å—ç†" + +#: html/Admin/Elements/EditScrip:80 +msgid "Template" +msgstr "範本" + +#: html/Admin/Global/Template.html:90 html/Admin/Queues/Template.html:89 +#. ($TemplateObj->Id()) +msgid "Template #%1" +msgstr "範本 #%1" + +#: html/Edit/Global/Template/List:9 html/Edit/Global/Template/Top:17 +msgid "Template Content" +msgstr "通知範本內容" + +#: html/Edit/Global/Template/List:8 html/Edit/Global/Template/Top:13 +msgid "Template Description" +msgstr "通知範本æè¿°" + +#: html/Edit/Global/Template/List:7 html/Edit/Global/Template/Top:9 +msgid "Template Name" +msgstr "通知範本å稱" + +#: html/Admin/Elements/EditTemplates:88 +msgid "Template deleted" +msgstr "範本已刪除" + +#: lib/RT/Scrip_Overlay.pm:152 +msgid "Template not found" +msgstr "找ä¸åˆ°ç¯„本" + +#: NOT FOUND IN SOURCE +msgid "Template not found\\n" +msgstr "找ä¸åˆ°ç¯„本\\n" + +#: lib/RT/Template_Overlay.pm:352 +msgid "Template parsed" +msgstr "範本剖æžå®Œç•¢" + +#: html/Admin/Elements/QueueTabs:48 html/Admin/Elements/SystemTabs:35 html/Admin/Global/index.html:44 +msgid "Templates" +msgstr "範本" + +#: html/Edit/Global/autohandler:8 html/Edit/Queues/autohandler:19 +msgid "Templates " +msgstr "通知範本" + +#: NOT FOUND IN SOURCE +msgid "Templates for %1\\n" +msgstr "找ä¸åˆ° %1 的範本\\n" + +#: lib/RT/Interface/Web.pm:894 x:897 +msgid "That is already the current value" +msgstr "å·²ç¶“æ˜¯ç›®å‰æ¬„ä½çš„值" + +#: lib/RT/CustomField_Overlay.pm:242 +msgid "That is not a value for this custom field" +msgstr "這䏿˜¯è©²è‡ªè¨‚欄ä½çš„值" + +#: lib/RT/Ticket_Overlay.pm:1899 +msgid "That is the same value" +msgstr "åŒæ¨£çš„值" + +#: lib/RT/ACE_Overlay.pm:287 lib/RT/ACE_Overlay.pm:596 +msgid "That principal already has that right" +msgstr "é€™é …å–®ä½å·²ç¶“æ“æœ‰è©²æ¬Šé™" + +#: lib/RT/Queue_Overlay.pm:633 +#. ($args{'Type'}) +msgid "That principal is already a %1 for this queue" +msgstr "é€™é …å–®ä½å·²ç¶“是這個表單的 %1" + +#: lib/RT/Ticket_Overlay.pm:1433 +#. ($self->loc($args{'Type'})) +msgid "That principal is already a %1 for this ticket" +msgstr "é€™é …å–®ä½å·²ç¶“是這份申請單的 %1" + +#: lib/RT/Queue_Overlay.pm:732 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this queue" +msgstr "é€™é …å–®ä½ä¸æ˜¯é€™å€‹è¡¨å–®çš„ %1" + +#: lib/RT/Ticket_Overlay.pm:1550 +#. ($args{'Type'}) +msgid "That principal is not a %1 for this ticket" +msgstr "é€™é …å–®ä½ä¸æ˜¯é€™ä»½ç”³è«‹å–®çš„ %1" + +#: lib/RT/Ticket_Overlay.pm:1895 +msgid "That queue does not exist" +msgstr "æ¤è¡¨å–®ä¸å˜åœ¨" + +#: lib/RT/Ticket_Overlay.pm:3237 +msgid "That ticket has unresolved dependencies" +msgstr "這份申請單有尚未解決的附屬申請單" + +#: NOT FOUND IN SOURCE +msgid "That user already has that right" +msgstr "ä½¿ç”¨è€…å·²å…·æœ‰è©²é …æ¬Šé™" + +#: lib/RT/Ticket_Overlay.pm:3047 +msgid "That user already owns that ticket" +msgstr "該使用者已經承辦這份申請單" + +#: lib/RT/Ticket_Overlay.pm:3019 +msgid "That user does not exist" +msgstr "使用者ä¸å˜åœ¨" + +#: lib/RT/User_Overlay.pm:376 +msgid "That user is already privileged" +msgstr "這å使用者已經是內部æˆå“¡" + +#: lib/RT/User_Overlay.pm:397 +msgid "That user is already unprivileged" +msgstr "這å使用者屬於éžå…§éƒ¨æˆå“¡ç¾¤çµ„" + +#: lib/RT/User_Overlay.pm:389 +msgid "That user is now privileged" +msgstr "ä½¿ç”¨è€…åŠ å…¥å…§éƒ¨æˆå“¡ç¾¤çµ„完畢" + +#: lib/RT/User_Overlay.pm:410 +msgid "That user is now unprivileged" +msgstr "這åä½¿ç”¨è€…å·²åŠ å…¥éžå…§éƒ¨æˆå“¡ç¾¤çµ„" + +#: NOT FOUND IN SOURCE +msgid "That user is now unprivilegedileged" +msgstr "這åä½¿ç”¨è€…å·²åŠ å…¥éžå…§éƒ¨æˆå“¡ç¾¤çµ„" + +#: lib/RT/Ticket_Overlay.pm:3040 +msgid "That user may not own tickets in that queue" +msgstr "使用者å¯èƒ½æ²’有承辦表單裡的申請單" + +#: lib/RT/Link_Overlay.pm:205 +msgid "That's not a numerical id" +msgstr "這䏿˜¯ä¸€å€‹æ•¸å—編號" + +#: html/SelfService/Display.html:31 html/Ticket/Create.html:149 html/Ticket/Elements/ShowSummary:27 +msgid "The Basics" +msgstr "基本資訊" + +#: lib/RT/ACE_Overlay.pm:87 +msgid "The CC of a ticket" +msgstr "申請單的副本收件人" + +#: lib/RT/ACE_Overlay.pm:88 +msgid "The administrative CC of a ticket" +msgstr "申請單的管ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: lib/RT/Ticket_Overlay.pm:2226 +msgid "The comment has been recorded" +msgstr "評論已被紀錄" + +#: bin/rt-crontool:197 +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:" + +#: bin/rt-commit-handler:755 bin/rt-commit-handler:765 +msgid "The following commands were not proccessed:\\n\\n" +msgstr "以下命令未被執行:\\n\\n" + +#: lib/RT/Interface/Web.pm:897 x:900 +msgid "The new value has been set." +msgstr "新的欄ä½å€¼è¨å®šå®Œæˆã€‚" + +#: lib/RT/ACE_Overlay.pm:85 +msgid "The owner of a ticket" +msgstr "申請單的承辦人" + +#: lib/RT/ACE_Overlay.pm:86 +msgid "The requestor of a ticket" +msgstr "申請單的申請人" + +#: html/Admin/Elements/EditUserComments:25 +msgid "These comments aren't generally visible to the user" +msgstr "è©²ä½¿ç”¨è€…ä¸æœƒçœ‹è¦‹é€™äº›è©•è«–" + +#: html/Edit/Global/Workflow/Owner.html:32 +msgid "Third-" +msgstr "三" + +#: NOT FOUND IN SOURCE +msgid "This ticket %1 %2 (%3)\\n" +msgstr "申請單 %1 %2 (%3)\\n" + +#: bin/rt-crontool:188 +msgid "This tool allows the user to run arbitrary perl modules from within RT." +msgstr "æ¤å·¥å…·ç¨‹å¼æœƒè®“使用者經由 RT 執行任æ„命令。" + +#: lib/RT/Transaction_Overlay.pm:251 +msgid "This transaction appears to have no content" +msgstr "æ¤é …æ›´å‹•å ±å‘Šæ²’æœ‰å…§å®¹" + +#: html/Ticket/Elements/ShowRequestor:46 +#. ($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:391 +msgid "Thu." +msgstr "星期四" + +#: html/Admin/Elements/ModifyTemplateAsWorkflow:163 +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:24 html/Ticket/ModifyAll.html:28 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket #%1 Jumbo update: %2" +msgstr "更新申請單 #%1 的全部資訊:%2" + +#: html/Approvals/Elements/ShowDependency:45 +#. ($link->BaseObj->Id, $link->BaseObj->Subject) +msgid "Ticket #%1: %2" +msgstr "申請單 #%1: %2" + +#: lib/RT/Ticket_Overlay.pm:605 lib/RT/Ticket_Overlay.pm:626 +#. ($self->Id, $QueueObj->Name) +msgid "Ticket %1 created in queue '%2'" +msgstr "申請單 #%1 æˆåŠŸæ–°å¢žæ–¼ '%2' 表單" + +#: bin/rt-commit-handler:759 +#. ($Ticket->Id) +msgid "Ticket %1 loaded\\n" +msgstr "載入申請單 %1\\n" + +#: html/Search/Bulk.html:212 html/Work/Search/Bulk.html:169 +#. ($Ticket->Id,$_) +msgid "Ticket %1: %2" +msgstr "申請單 %1:%2" + +#: html/Edit/Queues/Basic/Top:28 html/Edit/Queues/List:16 html/Work/Queues/List:9 +msgid "Ticket Due" +msgstr "è¡¨å–®è™•ç†æœŸé™" + +#: html/Ticket/History.html:24 html/Ticket/History.html:27 +#. ($Ticket->Id, $Ticket->Subject) +msgid "Ticket History # %1 %2" +msgstr "申請單處ç†ç´€éŒ„ # %1 %2" + +#: html/Work/Elements/List:6 +msgid "Ticket ID" +msgstr "單號" + +#: NOT FOUND IN SOURCE +msgid "Ticket Id" +msgstr "申請單編號" + +#: NOT FOUND IN SOURCE +msgid "Ticket Processing Due" +msgstr "表單é‹è¡ŒæœŸé™" + +#: etc/initialdata.zh:332 etc/initialdata:309 +msgid "Ticket Resolved" +msgstr "申請單已解決" + +#: html/Edit/Queues/Basic/Top:18 html/Edit/Queues/Category/List:6 html/Edit/Queues/Category/Top:7 html/Edit/Queues/List:7 html/Edit/Queues/index.html:31 html/Work/Delegates/List:7 html/Work/Delegates/index.html:11 html/Work/Elements/List:12 html/Work/Elements/SelectSearch:9 html/Work/Queues/List:6 html/Work/Queues/Select.html:12 html/Work/Queues/index.html:11 html/Work/Tickets/Create.html:44 html/Work/Tickets/Elements/ShowBasics:34 +msgid "Ticket Type" +msgstr "表單種類" + +#: html/Search/Elements/PickRestriction:62 html/Work/Search/PickRestriction:43 +msgid "Ticket attachment" +msgstr "申請單附件" + +#: lib/RT/Tickets_Overlay.pm:1166 +msgid "Ticket content" +msgstr "申請單內容" + +#: lib/RT/Tickets_Overlay.pm:1212 +msgid "Ticket content type" +msgstr "申請單內容類別" + +#: lib/RT/Ticket_Overlay.pm:496 lib/RT/Ticket_Overlay.pm:505 lib/RT/Ticket_Overlay.pm:515 lib/RT/Ticket_Overlay.pm:615 +msgid "Ticket could not be created due to an internal error" +msgstr "內部錯誤,無法新增申請單" + +#: lib/RT/Transaction_Overlay.pm:520 +msgid "Ticket created" +msgstr "申請單新增完畢" + +#: NOT FOUND IN SOURCE +msgid "Ticket creation failed" +msgstr "申請單新增失敗" + +#: lib/RT/Transaction_Overlay.pm:525 +msgid "Ticket deleted" +msgstr "申請單刪除完畢" + +#: NOT FOUND IN SOURCE +msgid "Ticket id not found" +msgstr "找ä¸åˆ°ç”³è«‹å–®ç·¨è™Ÿ" + +#: NOT FOUND IN SOURCE +msgid "Ticket killed" +msgstr "申請單刪除完畢" + +#: NOT FOUND IN SOURCE +msgid "Ticket not found" +msgstr "找ä¸åˆ°ç”³è«‹å–®" + +#: etc/initialdata.zh:318 etc/initialdata:295 +msgid "Ticket status changed" +msgstr "ç”³è«‹å–®ç¾æ³å·²æ”¹è®Š" + +#: html/Ticket/Update.html:38 +msgid "Ticket watchers" +msgstr "申請單視察員" + +#: html/Elements/Tabs:46 +msgid "Tickets" +msgstr "申請單" + +#: lib/RT/Tickets_Overlay.pm:1383 +#. ($self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'})) +msgid "Tickets %1 %2" +msgstr "申請單 %1 %2" + +#: lib/RT/Tickets_Overlay.pm:1348 +#. ($self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'})) +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/Elements/ViewUser:25 +#. ($name) +msgid "Tickets from %1" +msgstr "%1 的申請單" + +#: html/Approvals/Elements/ShowDependency:26 +msgid "Tickets which depend on this approval:" +msgstr "æ‰¹å‡†ä¹‹å¾Œï¼Œå¯æŽ¥çºŒè™•ç†ï¼š" + +#: html/Ticket/Create.html:156 html/Ticket/Elements/EditBasics:47 +msgid "Time Left" +msgstr "剩餘時間" + +#: html/Ticket/Create.html:155 html/Ticket/Elements/EditBasics:42 +msgid "Time Worked" +msgstr "è™•ç†æ™‚é–“" + +#: lib/RT/Tickets_Overlay.pm:1139 +msgid "Time left" +msgstr "剩餘時間" + +#: html/Elements/Footer:36 +msgid "Time to display" +msgstr "顯示時間" + +#: lib/RT/Tickets_Overlay.pm:1115 +msgid "Time worked" +msgstr "å·²è™•ç†æ™‚é–“" + +#: NOT FOUND IN SOURCE +msgid "TimeLeft" +msgstr "剩餘時間" + +#: lib/RT/Ticket_Overlay.pm:1183 +msgid "TimeWorked" +msgstr "å·²è™•ç†æ™‚é–“" + +#: bin/rt-commit-handler:401 +msgid "To generate a diff of this commit:" +msgstr "產生這次更動的差異檔:" + +#: bin/rt-commit-handler:390 +msgid "To generate a diff of this commit:\\n" +msgstr "產生這次更動的差異檔:\\n" + +#: lib/RT/Ticket_Overlay.pm:1186 +msgid "Told" +msgstr "告知日期" + +#: html/Edit/Elements/Page:46 +msgid "Total" +msgstr "é " + +#: etc/initialdata.zh:239 etc/initialdata:237 +msgid "Transaction" +msgstr "æ›´å‹•" + +#: lib/RT/Transaction_Overlay.pm:640 +#. ($self->Data) +msgid "Transaction %1 purged" +msgstr "æ¸…é™¤æ›´å‹•å ±å‘Š %1" + +#: lib/RT/Transaction_Overlay.pm:177 +msgid "Transaction Created" +msgstr "æ›´å‹•å ±å‘Šå·²æ–°å¢ž" + +#: lib/RT/Transaction_Overlay.pm:88 +msgid "Transaction->Create couldn't, as you didn't specify a ticket id" +msgstr "未指定申請單編號,無法新增更動" + +#: lib/RT/Transaction_Overlay.pm:699 +msgid "Transactions are immutable" +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:389 +msgid "Tue." +msgstr "星期二" + +#: html/Admin/Elements/EditCustomField:43 html/Admin/Elements/ModifyTemplateAsWorkflow:135 html/Ticket/Elements/AddWatchers:32 html/Ticket/Elements/AddWatchers:43 html/Ticket/Elements/AddWatchers:53 lib/RT/Ticket_Overlay.pm:1184 lib/RT/Tickets_Overlay.pm:959 +msgid "Type" +msgstr "類別" + +#: lib/RT/ScripCondition_Overlay.pm:103 +msgid "Unimplemented" +msgstr "尚無實作" + +#: html/Admin/Users/Modify.html:67 +msgid "Unix login" +msgstr "外部系統登入帳號" + +#: html/Admin/Elements/ModifyUser:61 +msgid "UnixUsername" +msgstr "外部系統登入帳號" + +#: lib/RT/Attachment_Overlay.pm:266 lib/RT/Attachment_Overlay.pm:298 +#. ($self->ContentEncoding) +msgid "Unknown ContentEncoding %1" +msgstr "ä¸å¯è§£çš„內容文å—ç·¨ç¢¼æ–¹å¼ %1" + +#: html/Elements/SelectResultsPerPage:36 +msgid "Unlimited" +msgstr "全數顯示" + +#: etc/initialdata.zh:50 etc/initialdata:32 +msgid "Unprivileged" +msgstr "éžå…§éƒ¨æˆå“¡" + +#: lib/RT/Transaction_Overlay.pm:569 +msgid "Untaken" +msgstr "未被å—ç†" + +#: html/Edit/Elements/Page:13 html/Edit/Elements/Page:15 +msgid "Up" +msgstr "上一é " + +#: html/Elements/MyTickets:63 html/Search/Bulk.html:32 html/Work/Elements/MyTickets:82 html/Work/Search/Bulk.html:10 html/Work/Tickets/Elements/EditCustomFieldEntries:97 +msgid "Update" +msgstr "處ç†" + +#: html/Admin/Users/Prefs.html:61 +msgid "Update ID" +msgstr "更新編號" + +#: html/Search/Bulk.html:129 html/Ticket/ModifyAll.html:65 html/Ticket/Update.html:65 html/Work/Search/Bulk.html:81 html/Work/Tickets/Update.html:32 +msgid "Update Type" +msgstr "更新類別" + +#: html/Search/Listing.html:60 html/Work/Search/index.html:32 +msgid "Update all these tickets at once" +msgstr "整批更新申請單" + +#: html/Admin/Users/Prefs.html:48 +msgid "Update email" +msgstr "æ›´æ–°é›»å郵件信箱" + +#: html/Admin/Users/Prefs.html:54 +msgid "Update name" +msgstr "更新帳號" + +#: lib/RT/Interface/Web.pm:409 x:412 +msgid "Update not recorded." +msgstr "更新未被記錄" + +#: html/Search/Bulk.html:80 html/Work/Search/Bulk.html:52 +msgid "Update selected tickets" +msgstr "æ›´æ–°é¸æ“‡çš„申請單" + +#: html/Admin/Users/Prefs.html:35 +msgid "Update signature" +msgstr "æ›´æ–°ç°½ç« " + +#: html/Ticket/ModifyAll.html:62 +msgid "Update ticket" +msgstr "更新申請單" + +#: NOT FOUND IN SOURCE +msgid "Update ticket # %1" +msgstr "更新申請單 # %1" + +#: html/SelfService/Update.html:24 html/SelfService/Update.html:46 +#. ($Ticket->id) +msgid "Update ticket #%1" +msgstr "更新申請單 #%1" + +#: html/Ticket/Update.html:138 html/Work/Tickets/Update.html:122 +#. ($Ticket->id, $Ticket->Subject) +msgid "Update ticket #%1 (%2)" +msgstr "更新申請單 #%1 (%2)" + +#: lib/RT/Interface/Web.pm:407 x:410 +msgid "Update type was neither correspondence nor comment." +msgstr "更新的內容並éžç”³è«‹å–®å›žè¦†ä¹Ÿä¸æ˜¯è©•è«–" + +#: html/Elements/SelectDateType:32 html/Ticket/Elements/ShowDates:50 lib/RT/Ticket_Overlay.pm:1187 +msgid "Updated" +msgstr "剿¬¡æ›´æ–°" + +#: html/Work/Preferences/index.html:15 +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" + +#: 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.zh:142 etc/initialdata.zh:209 etc/initialdata:124 etc/initialdata:191 +msgid "User Defined" +msgstr "使用者自訂" + +#: html/Admin/Users/Prefs.html:58 html/Edit/Users/List:13 html/Edit/Users/Top:42 +msgid "User ID" +msgstr "使用者 ID" + +#: html/Elements/SelectUsers:25 +msgid "User Id" +msgstr "使用者 ID" + +#: html/Edit/Elements/PickUsers:12 html/Edit/Global/UserRight/List:7 html/Edit/Global/UserRight/Top:9 html/Edit/Users/Add.html:13 html/Edit/Users/List:5 html/Edit/Users/Search.html:23 html/Edit/Users/Top:8 html/Work/Delegates/Info:60 html/Work/Tickets/Cc:10 +msgid "User Number" +msgstr "員工編號" + +#: html/Admin/Elements/GroupTabs:46 html/Admin/Elements/QueueTabs:59 html/Admin/Elements/SystemTabs:46 html/Admin/Global/index.html:58 html/Edit/Global/autohandler:11 html/Edit/Queues/autohandler:22 +msgid "User Rights" +msgstr "使用者權é™" + +#: html/Edit/Elements/Tab:34 +msgid "User Setup" +msgstr "使用者è¨å®š" + +#: html/Edit/Users/Info:37 +msgid "User Shift" +msgstr "å“¡å·¥ç別" + +#: html/Admin/Users/Modify.html:225 +#. ($msg) +msgid "User could not be created: %1" +msgstr "無法新增使用者:%1" + +#: lib/RT/User_Overlay.pm:321 +msgid "User created" +msgstr "使用者新增完畢" + +#: html/Admin/Global/GroupRights.html:66 html/Admin/Groups/GroupRights.html:53 html/Admin/Queues/GroupRights.html:68 +msgid "User defined groups" +msgstr "使用者定義的群組" + +#: lib/RT/User_Overlay.pm:575 lib/RT/User_Overlay.pm:592 +msgid "User loaded" +msgstr "已載入使用者" + +#: NOT FOUND IN SOURCE +msgid "User notified" +msgstr "已通知使用者" + +#: html/Admin/Users/Prefs.html:24 html/Admin/Users/Prefs.html:28 +msgid "User view" +msgstr "使用者ç§äººè³‡æ–™" + +#: NOT FOUND IN SOURCE +msgid "UserDefined" +msgstr "使用者自定" + +#: html/Admin/Users/Modify.html:47 html/Elements/Login:51 html/Ticket/Elements/AddWatchers:34 +msgid "Username" +msgstr "帳號" + +#: 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 html/Work/Tickets/Elements/ShowTransaction:8 +msgid "Users" +msgstr "使用者" + +#: html/Admin/Users/index.html:64 +msgid "Users matching search criteria" +msgstr "ç¬¦åˆæŸ¥è©¢æ¢ä»¶çš„使用者" + +#: html/Search/Elements/PickRestriction:50 html/Work/Search/PickRestriction:31 +msgid "ValueOfQueue" +msgstr "鏿“‡è¡¨å–®" + +#: html/Admin/Elements/EditCustomField:56 +msgid "Values" +msgstr "欄ä½å€¼" + +#: lib/RT/Queue_Overlay.pm:81 +msgid "Watch" +msgstr "視察" + +#: lib/RT/Queue_Overlay.pm:82 +msgid "WatchAsAdminCc" +msgstr "以管ç†å“¡å‰¯æœ¬æ”¶ä»¶äººèº«ä»½è¦–察" + +#: NOT FOUND IN SOURCE +msgid "Watcher loaded" +msgstr "æˆåŠŸè¼‰å…¥è¦–å¯Ÿå“¡è³‡è¨Š" + +#: html/Admin/Elements/QueueTabs:41 +msgid "Watchers" +msgstr "視察員" + +#: html/Admin/Elements/ModifyUser:55 +msgid "WebEncoding" +msgstr "ç¶²é æ–‡å—編碼方å¼" + +#: NOT FOUND IN SOURCE +msgid "Wed" +msgstr "星期三" + +#: lib/RT/Date.pm:390 +msgid "Wed." +msgstr "星期三" + +#: etc/initialdata.zh:533 etc/initialdata:503 etc/upgrade/2.1.71:161 html/Edit/Elements/CreateApprovalsQueue:135 +msgid "When a ticket has been approved by all approvers, add correspondence to the original ticket" +msgstr "ç•¶ç”³è«‹å–®é€šéŽæ‰€æœ‰ç°½æ ¸å¾Œï¼Œå°‡æ¤è¨Šæ¯å›žè¦†åˆ°åŽŸç”³è«‹å–®" + +#: etc/initialdata.zh:497 etc/initialdata:467 etc/upgrade/2.1.71:135 html/Edit/Elements/CreateApprovalsQueue:107 +msgid "When a ticket has been approved by any approver, add correspondence to the original ticket" +msgstr "ç•¶ç”³è«‹å–®é€šéŽæŸé …ç°½æ ¸å¾Œï¼Œå°‡æ¤è¨Šæ¯å›žè¦†åˆ°åŽŸç”³è«‹å–®" + +#: etc/initialdata.zh:156 etc/initialdata:138 +msgid "When a ticket is created" +msgstr "新增申請單時" + +#: etc/initialdata.zh:428 etc/initialdata:400 etc/upgrade/2.1.71:79 html/Edit/Elements/CreateApprovalsQueue:51 +msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval" +msgstr "ç°½æ ¸å–®æ–°å¢žä¹‹å¾Œï¼Œé€šçŸ¥æ‡‰å—ç†çš„æ‰¿è¾¦äººåŠç®¡ç†å“¡å‰¯æœ¬æ”¶ä»¶äºº" + +#: etc/initialdata.zh:161 etc/initialdata:143 +msgid "When anything happens" +msgstr "當任何事情發生時" + +#: etc/initialdata.zh:202 etc/initialdata:184 +msgid "Whenever a ticket is resolved" +msgstr "當申請單解決時" + +#: etc/initialdata.zh:188 etc/initialdata:170 +msgid "Whenever a ticket's owner changes" +msgstr "ç•¶ç”³è«‹å–®æ›´æ›æ‰¿è¾¦äººæ™‚" + +#: etc/initialdata.zh:196 etc/initialdata:178 +msgid "Whenever a ticket's queue changes" +msgstr "當申請單更æ›è¡¨å–®æ™‚" + +#: etc/initialdata.zh:180 etc/initialdata:162 +msgid "Whenever a ticket's status changes" +msgstr "ç•¶ç”³è«‹å–®æ›´æ–°ç¾æ³æ™‚" + +#: etc/initialdata.zh:210 etc/initialdata:192 +msgid "Whenever a user-defined condition occurs" +msgstr "當使用者自訂的情æ³ç™¼ç”Ÿæ™‚" + +#: etc/initialdata.zh:174 etc/initialdata:156 +msgid "Whenever comments come in" +msgstr "ç•¶è©•è«–é€é”時" + +#: etc/initialdata.zh:167 etc/initialdata:149 +msgid "Whenever correspondence comes in" +msgstr "當回覆é€é”時" + +#: html/Admin/Users/Modify.html:163 html/User/Prefs.html:51 html/Work/Preferences/Info:34 +msgid "Work" +msgstr "å…¬å¸" + +#: html/Admin/Elements/ModifyUser:69 +msgid "WorkPhone" +msgstr "å…¬å¸é›»è©±" + +#: html/Ticket/Elements/ShowBasics:34 html/Ticket/Update.html:64 +msgid "Worked" +msgstr "è™•ç†æ™‚é–“" + +#: html/Admin/Global/Workflow.html:91 html/Admin/Queues/Workflow.html:89 +#. ($WorkflowObj->Id()) +msgid "Workflow #%1" +msgstr "æµç¨‹ #%1" + +#: html/Edit/Global/Workflow/List:15 +msgid "Workflow Begin" +msgstr "æµç¨‹é–‹å§‹" + +#: html/Edit/Global/Workflow/List:20 +msgid "Workflow End" +msgstr "æµç¨‹çµæŸ" + +#: html/Admin/Elements/EditWorkflows:90 +msgid "Workflow deleted" +msgstr "æµç¨‹å·²åˆªé™¤" + +#: html/Edit/Global/autohandler:10 html/Edit/Queues/autohandler:21 +msgid "Workflows" +msgstr "æµç¨‹" + +#: html/Edit/Global/Basic/Top:25 +msgid "Yes" +msgstr "是" + +#: lib/RT/Ticket_Overlay.pm:3150 +msgid "You already own this ticket" +msgstr "您已是這份申請單的承辦人" + +#: html/autohandler:122 +msgid "You are not an authorized user" +msgstr "æ‚¨ä¸æ˜¯è¢«æŽˆæ¬Šçš„使用者" + +#: lib/RT/Ticket_Overlay.pm:3032 +msgid "You can only reassign tickets that you own or 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 +#. ($num, $queue) +msgid "You found %1 tickets in queue %2" +msgstr "您會在表單 %2 找到 %1 的申請單" + +#: html/NoAuth/Logout.html:30 +msgid "You have been logged out of RT." +msgstr "您已登出 RT。" + +#: html/SelfService/Display.html:77 +msgid "You have no permission to create tickets in that queue." +msgstr "您沒有在該表單新增申請單的權é™ã€‚" + +#: lib/RT/Ticket_Overlay.pm:1908 +msgid "You may not create requests in that queue." +msgstr "您ä¸èƒ½åœ¨è©²è¡¨å–®ä¸æå‡ºç”³è«‹ã€‚" + +#: html/Edit/Global/Basic/Top:38 +msgid "You need to restart the Request Tracker service for saved changes to take effect." +msgstr "æ‚¨å¿…é ˆé‡æ–°å•Ÿå‹• Request Tracker æœå‹™ï¼Œå„²å˜çš„æ›´å‹•纔會生效。" + +#: html/NoAuth/Logout.html:34 +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.zh:514 etc/initialdata:484 etc/upgrade/2.1.71:146 html/Edit/Elements/CreateApprovalsQueue:119 +msgid "Your request has been approved by %1. Other approvals may still be pending." +msgstr "申請單已由 %1 批准。å¯èƒ½é‚„æœ‰å…¶ä»–å¾…ç°½æ ¸çš„æ¥é©Ÿã€‚" + +#: etc/initialdata.zh:552 etc/initialdata:522 etc/upgrade/2.1.71:180 html/Edit/Elements/CreateApprovalsQueue:154 +msgid "Your request has been approved." +msgstr "您的申請單已完æˆç°½æ ¸ç¨‹åºã€‚" + +#: NOT FOUND IN SOURCE +msgid "Your request was rejected" +msgstr "您的申請單已被é§å›ž" + +#: etc/initialdata.zh:455 +msgid "Your request was rejected by %1." +msgstr "您的申請單已被 %1 é§å›žã€‚" + +#: etc/initialdata:427 etc/upgrade/2.1.71:101 html/Edit/Elements/CreateApprovalsQueue:73 +msgid "Your request was rejected." +msgstr "您的申請單已被é§å›žã€‚" + +#: html/autohandler:144 +msgid "Your username or password is incorrect" +msgstr "您的帳號或密碼有誤" + +#: html/Admin/Elements/ModifyUser:83 html/Admin/Users/Modify.html:143 html/User/Prefs.html:95 html/Work/Preferences/Info:85 +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 "急訊" + +#: html/User/Elements/DelegateRights:58 +#. ($right->PrincipalObj->Object->SelfDescription) +msgid "as granted to %1" +msgstr "權é™åŒ %1" + +#: html/SelfService/Closed.html:27 +msgid "closed" +msgstr "已解決" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:33 +msgid "contains" +msgstr "包å«" + +#: html/Elements/SelectAttachmentField:25 +msgid "content" +msgstr "內容" + +#: html/Elements/SelectAttachmentField:26 +msgid "content-type" +msgstr "類型" + +#: lib/RT/Ticket_Overlay.pm:2295 +msgid "correspondence (probably) not sent" +msgstr "申請單回覆(å¯èƒ½)未é€å‡º" + +#: lib/RT/Ticket_Overlay.pm:2305 +msgid "correspondence sent" +msgstr "申請單回覆已é€å‡º" + +#: NOT FOUND IN SOURCE +msgid "critical" +msgstr "åš´é‡" + +#: html/Admin/Elements/ModifyQueue:62 html/Admin/Queues/Modify.html:76 html/Edit/Queues/Basic/Top:31 html/Edit/Queues/List:18 html/Work/Queues/List:11 lib/RT/Date.pm:319 +msgid "days" +msgstr "天" + +#: NOT FOUND IN SOURCE +msgid "dead" +msgstr "拒絕處ç†" + +#: NOT FOUND IN SOURCE +msgid "debug" +msgstr "åµéŒ¯" + +#: html/Search/Listing.html:74 +msgid "delete" +msgstr "刪除" + +#: lib/RT/Queue_Overlay.pm:62 +msgid "deleted" +msgstr "已刪除" + +#: html/Search/Elements/PickRestriction:67 html/Work/Search/PickRestriction:47 +msgid "does not match" +msgstr "ä¸ç¬¦åˆ" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:34 +msgid "doesn't contain" +msgstr "ä¸åŒ…å«" + +#: NOT FOUND IN SOURCE +msgid "emergency" +msgstr "å±é›£" + +#: html/Elements/SelectEqualityOperator:37 +msgid "equal to" +msgstr "ç‰æ–¼" + +#: NOT FOUND IN SOURCE +msgid "error" +msgstr "錯誤" + +#: NOT FOUND IN SOURCE +msgid "false" +msgstr "å‡" + +#: html/Elements/SelectAttachmentField:27 +msgid "filename" +msgstr "檔å" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectEqualityOperator:37 +msgid "greater than" +msgstr "大於" + +#: lib/RT/Group_Overlay.pm:193 +#. ($self->Name) +msgid "group '%1'" +msgstr "群組 '%1'" + +#: lib/RT/Date.pm:315 +msgid "hours" +msgstr "å°æ™‚" + +#: NOT FOUND IN SOURCE +msgid "id" +msgstr "編號" + +#: NOT FOUND IN SOURCE +msgid "info" +msgstr "資訊" + +#: html/Elements/SelectBoolean:31 html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:35 html/Search/Elements/PickRestriction:46 html/Search/Elements/PickRestriction:75 html/Search/Elements/PickRestriction:87 html/Work/Search/PickRestriction:27 html/Work/Search/PickRestriction:56 html/Work/Search/PickRestriction:69 +msgid "is" +msgstr "是" + +#: html/Elements/SelectBoolean:35 html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectMatch:36 html/Search/Elements/PickRestriction:47 html/Search/Elements/PickRestriction:76 html/Search/Elements/PickRestriction:88 html/Work/Search/PickRestriction:28 html/Work/Search/PickRestriction:57 html/Work/Search/PickRestriction:70 +msgid "isn't" +msgstr "䏿˜¯" + +#: html/Elements/SelectCustomFieldOperator:37 html/Elements/SelectEqualityOperator:37 +msgid "less than" +msgstr "å°æ–¼" + +#: html/Edit/Global/Workflow/Owner.html:35 +msgid "level Admins" +msgstr "層主管" + +#: html/Search/Elements/PickRestriction:66 html/Work/Search/PickRestriction:46 +msgid "matches" +msgstr "符åˆ" + +#: lib/RT/Date.pm:311 +msgid "min" +msgstr "分" + +#: html/Ticket/Update.html:64 +msgid "minutes" +msgstr "分é˜" + +#: bin/rt-commit-handler:764 +msgid "modifications\\n\\n" +msgstr "更改\\n\\n" + +#: lib/RT/Date.pm:327 +msgid "months" +msgstr "月" + +#: lib/RT/Queue_Overlay.pm:57 +msgid "new" +msgstr "新建立" + +#: html/Admin/Elements/EditScrips:42 +msgid "no value" +msgstr "沒有值" + +#: html/Admin/Elements/EditQueueWatchers:26 html/Edit/Groups/Member:40 html/Edit/Groups/Members/Add.html:17 html/Edit/Groups/Members/List:8 html/Edit/Queues/Basic/Top:50 html/Edit/Queues/List:18 html/Ticket/Elements/EditWatchers:27 html/Work/Delegates/Info:37 html/Work/Delegates/Info:48 html/Work/Overview/Info:31 html/Work/Queues/List:11 html/Work/Tickets/Elements/ShowBasics:27 +msgid "none" +msgstr "ç„¡" + +#: html/Elements/SelectEqualityOperator:37 +msgid "not equal to" +msgstr "ä¸ç‰æ–¼" + +#: NOT FOUND IN SOURCE +msgid "notice" +msgstr "æç¤º" + +#: NOT FOUND IN SOURCE +msgid "notlike" +msgstr "ä¸ç¬¦åˆ" + +#: html/Edit/Elements/PickUsers:17 html/Edit/Users/Add.html:18 html/Edit/Users/Search.html:28 html/Work/Tickets/Cc:15 +msgid "number" +msgstr "號" + +#: html/SelfService/Elements/MyRequests:60 lib/RT/Queue_Overlay.pm:58 +msgid "open" +msgstr "開啟" + +#: NOT FOUND IN SOURCE +msgid "opened" +msgstr "已開啟" + +#: lib/RT/Group_Overlay.pm:198 +#. ($self->Name, $user->Name) +msgid "personal group '%1' for user '%2'" +msgstr "使用者「%2ã€çš„「%1ã€ä»£ç†äººç¾¤çµ„" + +#: lib/RT/Group_Overlay.pm:206 +#. ($queue->Name, $self->Type) +msgid "queue %1 %2" +msgstr "表單 %1 %2" + +#: lib/RT/Queue_Overlay.pm:61 +msgid "rejected" +msgstr "å·²é§å›ž" + +#: html/Work/Elements/SelectSearch:21 lib/RT/Queue_Overlay.pm:60 +msgid "resolved" +msgstr "已處ç†" + +#: html/Edit/Global/Basic/Top:48 +msgid "rtname" +msgstr "伺æœå™¨å稱" + +#: lib/RT/Date.pm:307 +msgid "sec" +msgstr "ç§’" + +#: lib/RT/Queue_Overlay.pm:59 +msgid "stalled" +msgstr "延宕" + +#: lib/RT/Group_Overlay.pm:201 +#. ($self->Type) +msgid "system %1" +msgstr "系統 %1" + +#: lib/RT/Group_Overlay.pm:212 +#. ($self->Type) +msgid "system group '%1'" +msgstr "系統群組 '%1'" + +#: html/Elements/Error:42 html/SelfService/Error.html:41 +msgid "the calling component did not specify why" +msgstr "呼å«å…ƒä»¶æœªæŒ‡æ˜ŽåŽŸå› " + +#: lib/RT/Group_Overlay.pm:209 +#. ($self->Instance, $self->Type) +msgid "ticket #%1 %2" +msgstr "申請單 #%1 %2" + +#: html/Work/Elements/SelectSearch:27 +msgid "till" +msgstr "至" + +#: html/Edit/Elements/PickUsers:15 html/Edit/Global/Workflow/Condition:30 html/Edit/Users/Add.html:16 html/Edit/Users/Search.html:26 html/Work/Tickets/Cc:13 +msgid "to" +msgstr "到" + +#: NOT FOUND IN SOURCE +msgid "true" +msgstr "真" + +#: lib/RT/Group_Overlay.pm:215 +#. ($self->Id) +msgid "undescribed group %1" +msgstr "沒有æè¿°çš„群組 %1" + +#: html/Work/Elements/SelectSearch:19 +msgid "unresolved" +msgstr "未處ç†" + +#: lib/RT/Group_Overlay.pm:190 +#. ($user->Object->Name) +msgid "user %1" +msgstr "使用者 %1" + +#: NOT FOUND IN SOURCE +msgid "warning" +msgstr "è¦å‘Š" + +#: lib/RT/Date.pm:323 +msgid "weeks" +msgstr "週" + +#: NOT FOUND IN SOURCE +msgid "with template %1" +msgstr "範本:%1" + +#: lib/RT/Date.pm:331 +msgid "years" +msgstr "å¹´" + +#: lib/RT/Date.pm:331 +msgid "approving" +msgstr "å¾…ç°½æ ¸" + diff --git a/rt/lib/RT/Interface/Email/Auth/MailFrom.pm b/rt/lib/RT/Interface/Email/Auth/MailFrom.pm new file mode 100644 index 000000000..eb778ff30 --- /dev/null +++ b/rt/lib/RT/Interface/Email/Auth/MailFrom.pm @@ -0,0 +1,131 @@ +# 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. +# +# 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::Interface::Email::Auth::MailFrom; +use RT::Interface::Email qw(ParseSenderAddressFromHead CreateUser); + +# This is what the ordinary, non-enhanced gateway does at the moment. + +sub GetCurrentUser { + my %args = ( Message => undef, + CurrentUser => undef, + AuthLevel => undef, + Ticket => undef, + Queue => undef, + Action => undef, + @_ ); + + # We don't need to do any external lookups + my ( $Address, $Name ) = ParseSenderAddressFromHead( $args{'Message'}->head ); + my $CurrentUser = RT::CurrentUser->new(); + $CurrentUser->LoadByEmail($Address); + + unless ( $CurrentUser->Id ) { + $CurrentUser->LoadByName($Address); + } + + if ( $CurrentUser->Id ) { + return ( $CurrentUser, 1 ); + } + + + + # If the user can't be loaded, we may need to create one. Figure out the acl situation. + my $unpriv = RT::Group->new($RT::SystemUser); + $unpriv->LoadSystemInternalGroup('Unprivileged'); + unless ( $unpriv->Id ) { + $RT::Logger->crit( "Auth::MailFrom couldn't find the 'Unprivileged' internal group" ); + return ( $args{'CurrentUser'}, -1 ); + } + + my $everyone = RT::Group->new($RT::SystemUser); + $everyone->LoadSystemInternalGroup('Everyone'); + unless ( $everyone->Id ) { + $RT::Logger->crit( "Auth::MailFrom couldn't find the 'Everyone' internal group"); + return ( $args{'CurrentUser'}, -1 ); + } + + # but before we do that, we need to make sure that the created user would have the right + # to do what we're doing. + if ( $args{'Ticket'} && $args{'Ticket'}->Id ) { + # We have a ticket. that means we're commenting or corresponding + if ( $args{'Action'} =~ /^comment$/i ) { + + # check to see whether "Everybody" or "Unprivileged users" can comment on tickets + unless ( $everyone->PrincipalObj->HasRight( + Object => $args{'Queue'}, + Right => 'CommentOnTicket' + ) + || $unpriv->PrincipalObj->HasRight( + Object => $args{'Queue'}, + Right => 'CommentOnTicket' + ) + ) { + return ( $args{'CurrentUser'}, 0 ); + } + } + elsif ( $args{'Action'} =~ /^correspond$/i ) { + + # check to see whether "Everybody" or "Unprivileged users" can correspond on tickets + unless ( $everyone->PrincipalObj->HasRight(Object => $args{'Queue'}, + Right => 'ReplyToTicket' + ) + || $unpriv->PrincipalObj->HasRight( + Object => $args{'Queue'}, + Right => 'ReplyToTicket' + ) + ) { + return ( $args{'CurrentUser'}, 0 ); + } + + } + else { + return ( $args{'CurrentUser'}, 0 ); + } + } + + # We're creating a ticket + elsif ( $args{'Queue'} && $args{'Queue'}->Id ) { + + # check to see whether "Everybody" or "Unprivileged users" can create tickets in this queue + unless ( $everyone->PrincipalObj->HasRight( Object => $args{'Queue'}, + Right => 'CreateTicket' ) + || $unpriv->PrincipalObj->HasRight( Object => $args{'Queue'}, + Right => 'CreateTicket' ) + ) { + return ( $args{'CurrentUser'}, 0 ); + } + + } + + $CurrentUser = CreateUser( undef, $Address, $Name, $args{'Message'} ); + + return ( $CurrentUser, 1 ); +} + +eval "require RT::Interface::Email::Auth::MailFrom_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/MailFrom_Vendor.pm}); +eval "require RT::Interface::Email::Auth::MailFrom_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Auth/MailFrom_Local.pm}); + +1; diff --git a/rt/lib/RT/Interface/Email/Filter/SpamAssassin.pm b/rt/lib/RT/Interface/Email/Filter/SpamAssassin.pm new file mode 100644 index 000000000..f00e2d82b --- /dev/null +++ b/rt/lib/RT/Interface/Email/Filter/SpamAssassin.pm @@ -0,0 +1,63 @@ +# 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. +# +# 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::Interface::Email::Filter::SpamAssassin; + +use Mail::SpamAssassin; +my $spamtest = Mail::SpamAssassin->new(); + +sub GetCurrentUser { + my $item = shift; + my $status = $spamtest->check ($item); + return (undef, 0) unless $status->is_spam(); + eval { $status->rewrite_mail() }; + if ($status->get_hits > $status->get_required_hits()*1.5) { + # Spammy indeed + return (undef, -1); + } + return (undef, 0); +} + +=head1 NAME + +RT::Interface::Email::Filter::SpamAssassin - Spam filter for RT + +=head1 SYNOPSIS + + @RT::MailPlugins = ("Filter::SpamAssassin", ...); + +=head1 DESCRIPTION + +This plugin checks to see if an incoming mail is spam (using +C<spamassassin>) and if so, rewrites its headers. If the mail is very +definitely spam - 1.5x more hits than required - then it is dropped on +the floor; otherwise, it is passed on as normal. + +=cut + +eval "require RT::Interface::Email::Filter::SpamAssassin_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Filter/SpamAssassin_Vendor.pm}); +eval "require RT::Interface::Email::Filter::SpamAssassin_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Interface/Email/Filter/SpamAssassin_Local.pm}); + +1; diff --git a/rt/lib/RT/Link_Overlay.pm b/rt/lib/RT/Link_Overlay.pm new file mode 100644 index 000000000..ac1bc370c --- /dev/null +++ b/rt/lib/RT/Link_Overlay.pm @@ -0,0 +1,360 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Link - an RT Link object + +=head1 SYNOPSIS + + use RT::Link; + +=head1 DESCRIPTION + +This module should never be called directly by client code. it's an internal module which +should only be accessed through exported APIs in Ticket other similar objects. + +=head1 METHODS + + +=begin testing + + +use RT::Link; +my $link = RT::Link->new($RT::SystemUser); + + +ok (ref $link); +ok (UNIVERSAL::isa($link, 'RT::Link')); +ok (UNIVERSAL::isa($link, 'RT::Base')); +ok (UNIVERSAL::isa($link, 'RT::Record')); +ok (UNIVERSAL::isa($link, 'DBIx::SearchBuilder::Record')); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + + +use Carp; +use RT::URI; + + +# {{{ sub Create + +=head2 Create PARAMHASH + +Create a new link object. Takes 'Base', 'Target' and 'Type'. +Returns undef on failure or a Link Id on success. + +=cut + +sub Create { + my $self = shift; + my %args = ( Base => undef, + Target => undef, + Type => undef, + @_ ); + + my $base = RT::URI->new( $self->CurrentUser ); + $base->FromURI( $args{'Base'} ); + + unless ( $base->Scheme ) { + $RT::Logger->warning( "$self couldn't resolve base:'" + . $args{'Base'} . " - " + . $base->Scheme + . "' into a URI\n" ); + + #use Data::Dumper; + #$RT::Logger->warning(scalar Dumper $base); + return (undef); + } + + my $target = RT::URI->new( $self->CurrentUser ); + $target->FromURI( $args{'Target'} ); + + unless ( $target->Resolver ) { + $RT::Logger->warning( "$self couldn't resolve target:'" + . $args{'Target'} . " - " + . "' into a URI\n" ); + + #use Data::Dumper; + #$RT::Logger->warning(scalar Dumper $target); + return (undef); + } + + my $base_id = 0; + my $target_id = 0; + + + + + if ( $base->IsLocal ) { + unless (UNIVERSAL::can($base->Object, 'Id')) { + return (undef, $self->loc("[_1] appears to be a local object, but can't be found in the database", $args{'Base'})); + + } + $base_id = $base->Object->Id; + } + if ( $target->IsLocal ) { + unless (UNIVERSAL::can($target->Object, 'Id')) { + return (undef, $self->loc("[_1] appears to be a local object, but can't be found in the database", $args{'Target'})); + + } + $target_id = $target->Object->Id; + } + + # {{{ We don't want references to ourself + if ( $base->URI eq $target->URI ) { + return ( 0, $self->loc("Can't link a ticket to itself") ); + } + + # }}} + + my ( $id, $msg ) = $self->SUPER::Create( Base => $base->URI, + Target => $target->URI, + LocalBase => $base_id, + LocalTarget => $target_id, + Type => $args{'Type'} ); + return ( $id, $msg ); +} + +# }}} + # {{{ sub LoadByParams + +=head2 LoadByParams + + Load an RT::Link object from the database. Takes three parameters + + Base => undef, + Target => undef, + Type =>undef + + Base and Target are expected to be integers which refer to Tickets or URIs + Type is the link type + +=cut + +sub LoadByParams { + my $self = shift; + my %args = ( Base => undef, + Target => undef, + Type => undef, + @_ ); + + my $base = RT::URI->new($self->CurrentUser); + $base->FromURI( $args{'Base'} ); + + my $target = RT::URI->new($self->CurrentUser); + $target->FromURI( $args{'Target'} ); + + unless ($base->Resolver && $target->Resolver) { + return ( 0, $self->loc("Couldn't load link") ); + } + + + my ( $id, $msg ) = $self->LoadByCols( Base => $base->URI, + Type => $args{'Type'}, + Target => $target->URI ); + + unless ($id) { + return ( 0, $self->loc("Couldn't load link") ); + } +} + +# }}} +# {{{ sub Load + +=head2 Load + + Load an RT::Link object from the database. Takes one parameter, the id of an entry in the links table. + + +=cut + +sub Load { + my $self = shift; + my $identifier = shift; + + + + + if ( $identifier !~ /^\d+$/ ) { + return ( 0, $self->loc("That's not a numerical id") ); + } + else { + my ( $id, $msg ) = $self->LoadById($identifier); + unless ( $self->Id ) { + return ( 0, $self->loc("Couldn't load link") ); + } + return ( $id, $msg ); + } +} + +# }}} + + +# {{{ TargetURI + +=head2 TargetURI + +returns an RT::URI object for the "Target" of this link. + +=cut + +sub TargetURI { + my $self = shift; + my $URI = RT::URI->new($self->CurrentUser); + $URI->FromURI($self->Target); + return ($URI); +} + +# }}} +# {{{ sub TargetObj + +=head2 TargetObj + +=cut + +sub TargetObj { + my $self = shift; + return $self->TargetURI->Object; +} +# }}} + +# {{{ BaseURI + +=head2 BaseURI + +returns an RT::URI object for the "Base" of this link. + +=cut + +sub BaseURI { + my $self = shift; + my $URI = RT::URI->new($self->CurrentUser); + $URI->FromURI($self->Base); + return ($URI); +} + +# }}} +# {{{ sub BaseObj + +=head2 BaseObj + +=cut + +sub BaseObj { + my $self = shift; + return $self->BaseURI->Object; +} +# }}} + + + +# Static methods: + +# {{{ sub BaseIsLocal + +=head2 BaseIsLocal + +Returns true if the base of this link is a local ticket + +=cut + +sub BaseIsLocal { + my $self = shift; + $RT::Logger->crit("Link::BaseIsLocal is deprecated in favor of Link->BaseURI->IsLocal"); + return $self->BaseURI->IsLocal; +} + +# }}} + +# {{{ sub TargetIsLocal + +=head2 TargetIsLocal + +Returns true if the target of this link is a local ticket + +=cut + +sub TargetIsLocal { + my $self = shift; + $RT::Logger->crit("Link::BaseIsLocal is deprecated in favor of Link->BaseURI->IsLocal"); + return $self->TargetURI->IsLocal; +} + +# }}} + + +# {{{ sub BaseAsHREF + +=head2 BaseAsHREF + +Returns an HTTP url to access the base of this link + +=cut + +sub BaseAsHREF { + my $self = shift; + $RT::Logger->crit("Link::BaseAsHREF deprecated in favor of ->BaseURI->AsHREF"); + return $self->BaseURI->HREF; +} +# }}} + +# {{{ sub TargetAsHREF + +=head2 TargetAsHREF + +return an HTTP url to access the target of this link + +=cut + +sub TargetAsHREF { + my $self = shift; + $RT::Logger->crit("Link::TargetAsHREF deprecated in favor of ->TargetURI->AsHREF"); + return $self->TargetURI->HREF; +} +# }}} + +# {{{ sub AsHREF - Converts Link URIs to HTTP URLs + +=head2 URI + +Takes a URI and returns an http: url to access that object. + +=cut + + +sub AsHREF { + my $self=shift; + + $RT::Logger->crit("AsHREF is gone. look at URI::HREF to figure out what to do with \$URI"); +} + +# }}} + +1; + diff --git a/rt/lib/RT/Links_Overlay.pm b/rt/lib/RT/Links_Overlay.pm new file mode 100644 index 000000000..d788a4275 --- /dev/null +++ b/rt/lib/RT/Links_Overlay.pm @@ -0,0 +1,125 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Links - A collection of Link objects + +=head1 SYNOPSIS + + use RT::Links; + my $links = new RT::Links($CurrentUser); + +=head1 DESCRIPTION + + +=head1 METHODS + + +=begin testing + +ok (require RT::Links); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); +use RT::URI; + +# {{{ sub Limit +sub Limit { + my $self = shift; + my %args = ( ENTRYAGGREGATOR => 'AND', + OPERATOR => '=', + @_); + + #if someone's trying to search for tickets, try to resolve the uris for searching. + + if ( ( $args{'OPERATOR'} eq '=') and + ( $args{'FIELD'} eq 'Base') or ($args{'FIELD'} eq 'Target') + ) { + my $dummy = RT::URI->new($self->CurrentUser); + $dummy->FromURI($args{'VALUE'}); + # $uri = $dummy->URI; + } + + + # If we're limiting by target, order by base + # (Order by the thing that's changing) + + if ( ($args{'FIELD'} eq 'Target') or + ($args{'FIELD'} eq 'LocalTarget') ) { + $self->OrderBy (ALIAS => 'main', + FIELD => 'Base', + ORDER => 'ASC'); + } + elsif ( ($args{'FIELD'} eq 'Base') or + ($args{'FIELD'} eq 'LocalBase') ) { + $self->OrderBy (ALIAS => 'main', + FIELD => 'Target', + ORDER => 'ASC'); + } + + + $self->SUPER::Limit(%args); +} +# }}} + +# {{{ LimitRefersTo + +=head2 LimitRefersTo URI + +find all things that refer to URI + +=cut + +sub LimitRefersTo { + my $self = shift; + my $URI = shift; + + $self->Limit(FIELD => 'Type', VALUE => 'RefersTo'); + $self->Limit(FIELD => 'Target', VALUE => $URI); +} + +# }}} +# {{{ LimitReferredToBy + +=head2 LimitReferredToBy URI + +find all things that URI refers to + +=cut + +sub LimitReferredToBy { + my $self = shift; + my $URI = shift; + + $self->Limit(FIELD => 'Type', VALUE => 'RefersTo'); + $self->Limit(FIELD => 'Base', VALUE => $URI); +} + +# }}} +1; + diff --git a/rt/lib/RT/Principal.pm b/rt/lib/RT/Principal.pm new file mode 100644 index 000000000..cffee4cb2 --- /dev/null +++ b/rt/lib/RT/Principal.pm @@ -0,0 +1,212 @@ +# 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. +# +# 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 +# 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::Principal + + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +=head1 METHODS + +=cut + +package RT::Principal; +use RT::Record; + + +use vars qw( @ISA ); +@ISA= qw( RT::Record ); + +sub _Init { + my $self = shift; + + $self->Table('Principals'); + $self->SUPER::_Init(@_); +} + + + + + +=item Create PARAMHASH + +Create takes a hash of values and creates a row in the database: + + varchar(16) 'PrincipalType'. + int(11) 'ObjectId'. + smallint(6) 'Disabled'. + +=cut + + + + +sub Create { + my $self = shift; + my %args = ( + PrincipalType => '', + ObjectId => '', + Disabled => '0', + + @_); + $self->SUPER::Create( + PrincipalType => $args{'PrincipalType'}, + ObjectId => $args{'ObjectId'}, + Disabled => $args{'Disabled'}, +); + +} + + + +=item id + +Returns the current value of id. +(In the database, id is stored as int(11).) + + +=cut + + +=item PrincipalType + +Returns the current value of PrincipalType. +(In the database, PrincipalType is stored as varchar(16).) + + + +=item SetPrincipalType VALUE + + +Set PrincipalType to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, PrincipalType will be stored as a varchar(16).) + + +=cut + + +=item ObjectId + +Returns the current value of ObjectId. +(In the database, ObjectId is stored as int(11).) + + + +=item SetObjectId VALUE + + +Set ObjectId 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).) + + +=cut + + +=item Disabled + +Returns the current value of Disabled. +(In the database, Disabled is stored as smallint(6).) + + + +=item SetDisabled VALUE + + +Set Disabled to VALUE. +Returns (1, 'Status message') on success and (0, 'Error Message') on failure. +(In the database, Disabled will be stored as a smallint(6).) + + +=cut + + + +sub _ClassAccessible { + { + + id => + {read => 1, type => 'int(11)', default => ''}, + PrincipalType => + {read => 1, write => 1, type => 'varchar(16)', default => ''}, + ObjectId => + {read => 1, write => 1, type => 'int(11)', default => ''}, + Disabled => + {read => 1, write => 1, type => 'smallint(6)', default => '0'}, + + } +}; + + + eval "require RT::Principal_Overlay"; + if ($@ && $@ !~ qr{^Can't locate RT/Principal_Overlay.pm}) { + die $@; + }; + + eval "require RT::Principal_Vendor"; + if ($@ && $@ !~ qr{^Can't locate RT/Principal_Vendor.pm}) { + die $@; + }; + + eval "require RT::Principal_Local"; + if ($@ && $@ !~ qr{^Can't locate RT/Principal_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::Principal_Overlay, RT::Principal_Vendor, RT::Principal_Local + +=cut + + +1; diff --git a/rt/lib/RT/Principal_Overlay.pm b/rt/lib/RT/Principal_Overlay.pm new file mode 100644 index 000000000..d2782b730 --- /dev/null +++ b/rt/lib/RT/Principal_Overlay.pm @@ -0,0 +1,557 @@ +# 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. +# +# 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(%_ACL_KEY_CACHE); + +use RT::Group; +use RT::User; + +# {{{ IsGroup + +=head2 IsGroup + +Returns true if this principal is a group. +Returns undef, otherwise + +=cut + +sub IsGroup { + my $self = shift; + if ($self->PrincipalType eq 'Group') { + return(1); + } + else { + return undef; + } +} + +# }}} + +# {{{ IsUser + +=head2 IsUser + +Returns true if this principal is a User. +Returns undef, otherwise + +=cut + +sub IsUser { + my $self = shift; + if ($self->PrincipalType eq 'User') { + return(1); + } + else { + return undef; + } +} + +# }}} + +# {{{ Object + +=head2 Object + +Returns the user or group associated with this principal + +=cut + +sub Object { + my $self = shift; + + unless ($self->{'object'}) { + if ($self->IsUser) { + $self->{'object'} = RT::User->new($self->CurrentUser); + } + elsif ($self->IsGroup) { + $self->{'object'} = RT::Group->new($self->CurrentUser); + } + else { + $RT::Logger->crit("Found a principal (".$self->Id.") that was neither a user nor a group"); + return(undef); + } + $self->{'object'}->Load($self->ObjectId()); + } + return ($self->{'object'}); + + +} +# }}} + +# {{{ ACL Related routines + +# {{{ GrantRight + +=head2 GrantRight { Right => RIGHTNAME, Object => undef } + +A helper function which calls RT::ACE->Create + +=cut + +sub GrantRight { + my $self = shift; + my %args = ( Right => undef, + Object => undef, + @_); + + + #if we haven't specified any sort of right, we're talking about a global right + if (!defined $args{'Object'} && !defined $args{'ObjectId'} && !defined $args{'ObjectType'}) { + $args{'Object'} = $RT::System; + } + + unless ($args{'Right'}) { + return(0, $self->loc("Invalid Right")); + } + + + #ACL check handled in ACE.pm + my $ace = RT::ACE->new( $self->CurrentUser ); + + + my $type = $self->_GetPrincipalTypeForACL(); + + # If it's a user, we really want to grant the right to their + # user equivalence group + return ( $ace->Create(RightName => $args{'Right'}, + Object => $args{'Object'}, + PrincipalType => $type, + PrincipalId => $self->Id + ) ); +} +# }}} + +# {{{ RevokeRight + +=head2 RevokeRight { Right => "RightName", Object => "object" } + +Delete a right that a user has + +=cut + +sub RevokeRight { + + my $self = shift; + my %args = ( + Right => undef, + Object => undef, + @_ + ); + + #if we haven't specified any sort of right, we're talking about a global right + if (!defined $args{'Object'} && !defined $args{'ObjectId'} && !defined $args{'ObjectType'}) { + $args{'Object'} = $RT::System; + } + #ACL check handled in ACE.pm + my $type = $self->_GetPrincipalTypeForACL(); + + my $ace = RT::ACE->new( $self->CurrentUser ); + $ace->LoadByValues( + RightName => $args{'Right'}, + Object => $args{'Object'}, + PrincipalType => $type, + PrincipalId => $self->Id + ); + + unless ( $ace->Id ) { + return ( 0, $self->loc("ACE not found") ); + } + return ( $ace->Delete ); +} + +# }}} + + + +# {{{ sub HasRight + +=head2 sub HasRight (Right => 'right' Object => undef) + + +Checks to see whether this principal has the right "Right" for the Object +specified. If the Object parameter is omitted, checks to see whether the +user has the right globally. + +This still hard codes to check to see if a user has queue-level rights +if we ask about a specific ticket. + + +This takes the params: + + Right => name of a right + + And either: + + Object => an RT style object (->id will get its id) + + + + +Returns 1 if a matching ACE was found. + +Returns undef if no ACE was found. + +=cut + +sub HasRight { + + my $self = shift; + my %args = ( Right => undef, + Object => undef, + EquivObjects => undef, + @_ ); + + if ( $self->Disabled ) { + $RT::Logger->err( "Disabled User: " . $self->id . " failed access check for " . $args{'Right'} ); + return (undef); + } + + if ( !defined $args{'Right'} ) { + require Carp; + $RT::Logger->debug( Carp::cluck("HasRight called without a right") ); + return (undef); + } + + if ( defined( $args{'Object'} )) { + return (undef) unless (UNIVERSAL::can( $args{'Object'}, 'id' ) ); + push(@{$args{'EquivObjects'}}, $args{Object}); + } + elsif ( $args{'ObjectId'} && $args{'ObjectType'} ) { + $RT::Logger->crit(Carp::cluck("API not supprted")); + } + else { + $RT::Logger->crit("$self HasRight called with no valid object"); + return (undef); + } + + # If this object is a ticket, we care about ticket roles and queue roles + if ( (ref($args{'Object'}) eq 'RT::Ticket') && $args{'Object'}->Id) { + # this is a little bit hacky, but basically, now that we've done the ticket roles magic, we load the queue object + # and ask all the rest of our questions about the queue. + push (@{$args{'EquivObjects'}}, $args{'Object'}->QueueObj); + + } + + + # {{{ If we've cached a win or loss for this lookup say so + + # {{{ Construct a hashkey to cache decisions in + my $hashkey = do { + no warnings 'uninitialized'; + + # We don't worry about the hash ordering, as this is only + # temporarily used; also if the key changes it would be + # invalidated anyway. + join ( + ";:;", $self->Id, map { + $_, # the key of each arguments + ($_ eq 'EquivObjects') # for object arrayref... + ? map(_ReferenceId($_), @{$args{$_}}) # calculate each + : _ReferenceId( $args{$_} ) # otherwise just the value + } keys %args + ); + }; + # }}} + + #Anything older than 60 seconds needs to be rechecked + my $cache_timeout = ( time - 60 ); + + # {{{ if we've cached a positive result for this query, return 1 + if ( ( defined $self->_ACLCache->{"$hashkey"} ) + && ( $self->_ACLCache->{"$hashkey"}{'val'} == 1 ) + && ( defined $self->_ACLCache->{"$hashkey"}{'set'} ) + && ( $self->_ACLCache->{"$hashkey"}{'set'} > $cache_timeout ) ) { + + #$RT::Logger->debug("Cached ACL win for ". $args{'Right'}.$args{'Scope'}. $args{'AppliesTo'}."\n"); + return ( 1); + } + # }}} + + # {{{ if we've cached a negative result for this query return undef + elsif ( ( defined $self->_ACLCache->{"$hashkey"} ) + && ( $self->_ACLCache->{"$hashkey"}{'val'} == -1 ) + && ( defined $self->_ACLCache->{"$hashkey"}{'set'} ) + && ( $self->_ACLCache->{"$hashkey"}{'set'} > $cache_timeout ) ) { + + #$RT::Logger->debug("Cached ACL loss decision for ". $args{'Right'}.$args{'Scope'}. $args{'AppliesTo'}."\n"); + + return (undef); + } + # }}} + + # }}} + + + + # {{{ Out of date docs + + # We want to grant the right if: + + + # # The user has the right as a member of a system-internal or + # # user-defined group + # + # Find all records from the ACL where they're granted to a group + # of type "UserDefined" or "System" + # for the object "System or the object "Queue N" and the group we're looking + # at has the recursive member $self->Id + # + # # The user has the right based on a role + # + # Find all the records from ACL where they're granted to the role "foo" + # for the object "System" or the object "Queue N" and the group we're looking + # at is of domain ("RT::Queue-Role" and applies to the right queue) + # or ("RT::Ticket-Role" and applies to the right ticket) + # and the type is the same as the type of the ACL and the group has + # the recursive member $self->Id + # + + # }}} + + my ( $or_look_at_object_rights, $or_check_roles ); + my $right = $args{'Right'}; + + # {{{ Construct Right Match + + # If an object is defined, we want to look at rights for that object + + my @look_at_objects; + push (@look_at_objects, "ACL.ObjectType = 'RT::System'") + unless $self->can('_IsOverrideGlobalACL') and $self->_IsOverrideGlobalACL($args{Object}); + + + + foreach my $obj (@{$args{'EquivObjects'}}) { + next unless (UNIVERSAL::can($obj, 'id')); + my $type = ref($obj); + my $id = $obj->id; + push @look_at_objects, "(ACL.ObjectType = '$type' AND ACL.ObjectId = '$id')"; + } + + + # }}} + + # {{{ Build that honkin-big SQL query + + + + my $query_base = "SELECT ACL.id from ACL, Groups, Principals, CachedGroupMembers WHERE ". + # Only find superuser or rights with the name $right + "(ACL.RightName = 'SuperUser' OR ACL.RightName = '$right') ". + # Never find disabled groups. + "AND Principals.Disabled = 0 " . + "AND CachedGroupMembers.Disabled = 0 ". + "AND Principals.id = Groups.id " . # We always grant rights to Groups + + # See if the principal is a member of the group recursively or _is the rightholder_ + # never find recursively disabled group members + # also, check to see if the right is being granted _directly_ to this principal, + # as is the case when we want to look up group rights + "AND Principals.id = CachedGroupMembers.GroupId AND CachedGroupMembers.MemberId = '" . $self->Id . "' ". + + # Make sure the rights apply to the entire system or to the object in question + "AND ( ".join(' OR ', @look_at_objects).") "; + + + + # The groups query does the query based on group membership and individual user rights + + my $groups_query = $query_base . + + # limit the result set to groups of types ACLEquivalence (user) UserDefined, SystemInternal and Personal + "AND ( ( ACL.PrincipalId = Principals.id AND ACL.PrincipalType = 'Group' AND ". + "(Groups.Domain = 'SystemInternal' OR Groups.Domain = 'UserDefined' OR Groups.Domain = 'ACLEquivalence' OR Groups.Domain = 'Personal'))". + + " ) LIMIT 1"; + + my @roles; + foreach my $object (@{$args{'EquivObjects'}}) { + push (@roles, $self->_RolesForObject(ref($object), $object->id)); + } + + # The roles query does the query based on roles + my $roles_query; + if (@roles) { + $roles_query = $query_base . "AND ". + " ( (".join (' OR ', @roles)." ) ". + " AND Groups.Type = ACL.PrincipalType AND Groups.Id = Principals.id AND Principals.PrincipalType = 'Group') LIMIT 1"; + + } + + + + # }}} + + # {{{ Actually check the ACL by performing an SQL query + # $RT::Logger->debug("Now Trying $groups_query"); + my $hitcount = $self->_Handle->FetchResult($groups_query); + + # }}} + + # {{{ if there's a match, the right is granted + if ($hitcount) { + + # Cache a positive hit. + $self->_ACLCache->{"$hashkey"}{'set'} = time; + $self->_ACLCache->{"$hashkey"}{'val'} = 1; + return (1); + } + # }}} + # {{{ If there's no match on groups, try it on roles + else { + + $hitcount = $self->_Handle->FetchResult($roles_query); + + if ($hitcount) { + + # Cache a positive hit. + $self->_ACLCache->{"$hashkey"}{'set'} = time; + $self->_ACLCache->{"$hashkey"}{'val'} = 1; + return (1); + } + + else { + # cache a negative hit + $self->_ACLCache->{"$hashkey"}{'set'} = time; + $self->_ACLCache->{"$hashkey"}{'val'} = -1; + + return (undef); + } + } + # }}} +} + +# }}} + +# {{{ _RolesForObject + + + +=head2 _RolesForObject( $object_type, $object_id) + +Returns an SQL clause finding role groups for Objects + +=cut + + +sub _RolesForObject { + my $self = shift; + my $type = shift; + my $id = shift; + my $clause = "(Groups.Domain = '".$type."-Role' AND Groups.Instance = '" . $id. "') "; + + return($clause); +} + +# }}} + +# }}} + +# {{{ ACL caching + +# {{{ _ACLCache + +=head2 _ACLCache + +# Function: _ACLCache +# Type : private instance +# Args : none +# Lvalue : hash: ACLCache +# Desc : Returns a reference to the Key cache hash + +=cut + +sub _ACLCache { + return(\%_ACL_KEY_CACHE); +} + +# }}} + +# {{{ _InvalidateACLCache + +=head2 _InvalidateACLCache + +Cleans out and reinitializes the user rights key cache + +=cut + +sub _InvalidateACLCache { + %_ACL_KEY_CACHE = (); +} + +# }}} + +# }}} + + +# {{{ _GetPrincipalTypeForACL + +=head2 _GetPrincipalTypeForACL + +Gets the principal type. if it's a user, it's a user. if it's a role group and it has a Type, +return that. if it has no type, return group. + +=cut + +sub _GetPrincipalTypeForACL { + my $self = shift; + my $type; + if ($self->PrincipalType eq 'Group' && $self->Object->Domain =~ /Role$/) { + $type = $self->Object->Type; + } + else { + $type = $self->PrincipalType; + } + + return($type); +} + +# }}} + +# {{{ _ReferenceId + +=head2 _ReferenceId + +Returns a list uniquely representing an object or normal scalar. + +For scalars, its string value is returned; for objects that has an +id() method, its class name and Id are returned as a string seperated by a "-". + +=cut + +sub _ReferenceId { + my $scalar = shift; + + # just return the value for non-objects + return $scalar unless UNIVERSAL::can($scalar, 'id'); + + # an object -- return the class and id + return(ref($scalar)."-". $scalar->id); +} + +# }}} + +1; diff --git a/rt/lib/RT/Principals.pm b/rt/lib/RT/Principals.pm new file mode 100644 index 000000000..c45a4c734 --- /dev/null +++ b/rt/lib/RT/Principals.pm @@ -0,0 +1,115 @@ +# 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. +# +# 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 +# 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::Principals -- Class Description + +=head1 SYNOPSIS + + use RT::Principals + +=head1 DESCRIPTION + + +=head1 METHODS + +=cut + +package RT::Principals; + +use RT::SearchBuilder; +use RT::Principal; + +use vars qw( @ISA ); +@ISA= qw(RT::SearchBuilder); + + +sub _Init { + my $self = shift; + $self->{'table'} = 'Principals'; + $self->{'primary_key'} = 'id'; + + + return ( $self->SUPER::_Init(@_) ); +} + + +=item NewItem + +Returns an empty new RT::Principal item + +=cut + +sub NewItem { + my $self = shift; + return(RT::Principal->new($self->CurrentUser)); +} + + eval "require RT::Principals_Overlay"; + if ($@ && $@ !~ qr{^Can't locate RT/Principals_Overlay.pm}) { + die $@; + }; + + eval "require RT::Principals_Vendor"; + if ($@ && $@ !~ qr{^Can't locate RT/Principals_Vendor.pm}) { + die $@; + }; + + eval "require RT::Principals_Local"; + if ($@ && $@ !~ qr{^Can't locate RT/Principals_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::Principals_Overlay, RT::Principals_Vendor, RT::Principals_Local + +=cut + + +1; diff --git a/rt/lib/RT/Principals_Overlay.pm b/rt/lib/RT/Principals_Overlay.pm new file mode 100644 index 000000000..0d8c54c76 --- /dev/null +++ b/rt/lib/RT/Principals_Overlay.pm @@ -0,0 +1,52 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Principals - a collection of RT::Principal objects + +=head1 SYNOPSIS + + use RT::Principals; + +=head1 DESCRIPTION + + +=head1 METHODS + + +=begin testing + +ok (require RT::Principals); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + + + + +1; diff --git a/rt/lib/RT/Queue_Overlay.pm b/rt/lib/RT/Queue_Overlay.pm new file mode 100644 index 000000000..4eb265f2a --- /dev/null +++ b/rt/lib/RT/Queue_Overlay.pm @@ -0,0 +1,1012 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Queue - an RT Queue object + +=head1 SYNOPSIS + + use RT::Queue; + +=head1 DESCRIPTION + + +=head1 METHODS + +=begin testing + +use RT::Queue; + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +use vars qw(@STATUS @ACTIVE_STATUS @INACTIVE_STATUS $RIGHTS); +use RT::Groups; +use RT::ACL; + + +@ACTIVE_STATUS = qw(new open stalled); +@INACTIVE_STATUS = qw(resolved rejected deleted); +@STATUS = (@ACTIVE_STATUS, @INACTIVE_STATUS); + +# $self->loc('new'); # For the string extractor to get a string to localize +# $self->loc('open'); # For the string extractor to get a string to localize +# $self->loc('stalled'); # For the string extractor to get a string to localize +# $self->loc('resolved'); # For the string extractor to get a string to localize +# $self->loc('rejected'); # For the string extractor to get a string to localize +# $self->loc('deleted'); # For the string extractor to get a string to localize + + +$RIGHTS = { + SeeQueue => 'Can this principal see this queue', # loc_pair + AdminQueue => 'Create, delete and modify queues', # loc_pair + ShowACL => 'Display Access Control List', # loc_pair + ModifyACL => 'Modify Access Control List', # loc_pair + ModifyQueueWatchers => 'Modify the queue watchers', # loc_pair + AdminCustomFields => 'Create, delete and modify custom fields', # loc_pair + ModifyTemplate => 'Modify Scrip templates for this queue', # loc_pair + ShowTemplate => 'Display Scrip templates for this queue', # loc_pair + + ModifyScrips => 'Modify Scrips for this queue', # loc_pair + ShowScrips => 'Display Scrips for this queue', # loc_pair + + ShowTicket => 'Show ticket summaries', # loc_pair + ShowTicketComments => 'Show ticket private commentary', # loc_pair + + Watch => 'Sign up as a ticket Requestor or ticket or queue Cc', # loc_pair + WatchAsAdminCc => 'Sign up as a ticket or queue AdminCc', # loc_pair + CreateTicket => 'Create tickets in this queue', # loc_pair + ReplyToTicket => 'Reply to tickets', # loc_pair + CommentOnTicket => 'Comment on tickets', # loc_pair + OwnTicket => 'Own tickets', # loc_pair + ModifyTicket => 'Modify tickets', # loc_pair + DeleteTicket => 'Delete tickets', # loc_pair + TakeTicket => 'Take tickets', # loc_pair + StealTicket => 'Steal tickets', # loc_pair + +}; + +# Tell RT::ACE that this sort of object can get acls granted +$RT::ACE::OBJECT_TYPES{'RT::Queue'} = 1; + +# TODO: This should be refactored out into an RT::ACLedObject or something +# stuff the rights into a hash of rights that can exist. + +foreach my $right ( keys %{$RIGHTS} ) { + $RT::ACE::LOWERCASERIGHTNAMES{ lc $right } = $right; +} + + +=head2 AvailableRights + +Returns a hash of available rights for this object. The keys are the right names and the values are a description of what the rights do + +=cut + +sub AvailableRights { + my $self = shift; + return($RIGHTS); +} + +# {{{ ActiveStatusArray + +=head2 ActiveStatusArray + +Returns an array of all ActiveStatuses for this queue + +=cut + +sub ActiveStatusArray { + my $self = shift; + return (@ACTIVE_STATUS); +} + +# }}} + +# {{{ InactiveStatusArray + +=head2 InactiveStatusArray + +Returns an array of all InactiveStatuses for this queue + +=cut + +sub InactiveStatusArray { + my $self = shift; + return (@INACTIVE_STATUS); +} + +# }}} + +# {{{ StatusArray + +=head2 StatusArray + +Returns an array of all statuses for this queue + +=cut + +sub StatusArray { + my $self = shift; + return (@STATUS); +} + +# }}} + +# {{{ IsValidStatus + +=head2 IsValidStatus VALUE + +Returns true if VALUE is a valid status. Otherwise, returns 0 + +=for testing +my $q = RT::Queue->new($RT::SystemUser); +ok($q->IsValidStatus('new')== 1, 'New is a valid status'); +ok($q->IsValidStatus('f00')== 0, 'f00 is not a valid status'); + +=cut + +sub IsValidStatus { + my $self = shift; + my $value = shift; + + my $retval = grep ( /^$value$/, $self->StatusArray ); + return ($retval); + +} + +# }}} + +# {{{ IsActiveStatus + +=head2 IsActiveStatus VALUE + +Returns true if VALUE is a Active status. Otherwise, returns 0 + +=for testing +my $q = RT::Queue->new($RT::SystemUser); +ok($q->IsActiveStatus('new')== 1, 'New is a Active status'); +ok($q->IsActiveStatus('rejected')== 0, 'Rejected is an inactive status'); +ok($q->IsActiveStatus('f00')== 0, 'f00 is not a Active status'); + +=cut + +sub IsActiveStatus { + my $self = shift; + my $value = shift; + + my $retval = grep ( /^$value$/, $self->ActiveStatusArray ); + return ($retval); + +} + +# }}} + +# {{{ IsInactiveStatus + +=head2 IsInactiveStatus VALUE + +Returns true if VALUE is a Inactive status. Otherwise, returns 0 + +=for testing +my $q = RT::Queue->new($RT::SystemUser); +ok($q->IsInactiveStatus('new')== 0, 'New is a Active status'); +ok($q->IsInactiveStatus('rejected')== 1, 'rejeected is an Inactive status'); +ok($q->IsInactiveStatus('f00')== 0, 'f00 is not a Active status'); + +=cut + +sub IsInactiveStatus { + my $self = shift; + my $value = shift; + + my $retval = grep ( /^$value$/, $self->InactiveStatusArray ); + return ($retval); + +} + +# }}} + + +# {{{ sub Create + +=head2 Create + +Create takes the name of the new queue +If you pass the ACL check, it creates the queue and returns its queue id. + +=cut + +sub Create { + my $self = shift; + my %args = ( + Name => undef, + CorrespondAddress => '', + Description => '', + CommentAddress => '', + InitialPriority => "0", + FinalPriority => "0", + DefaultDueIn => "0", + @_ + ); + + unless ( $self->CurrentUser->HasRight(Right => 'AdminQueue', Object => $RT::System) ) + { #Check them ACLs + return ( 0, $self->loc("No permission to create queues") ); + } + + unless ( $self->ValidateName( $args{'Name'} ) ) { + return ( 0, $self->loc('Queue already exists') ); + } + + #TODO better input validation + $RT::Handle->BeginTransaction(); + + my $id = $self->SUPER::Create(%args); + unless ($id) { + $RT::Handle->Rollback(); + return ( 0, $self->loc('Queue could not be created') ); + } + + my $create_ret = $self->_CreateQueueGroups(); + unless ($create_ret) { + $RT::Handle->Rollback(); + return ( 0, $self->loc('Queue could not be created') ); + } + + $RT::Handle->Commit(); + return ( $id, $self->loc("Queue created") ); +} + +# }}} + +# {{{ sub Delete + +sub Delete { + my $self = shift; + return ( 0, + $self->loc('Deleting this object would break referential integrity') ); +} + +# }}} + +# {{{ sub SetDisabled + +=head2 SetDisabled + +Takes a boolean. +1 will cause this queue to no longer be avaialble for tickets. +0 will re-enable this queue + +=cut + +# }}} + +# {{{ sub Load + +=head2 Load + +Takes either a numerical id or a textual Name and loads the specified queue. + +=cut + +sub Load { + my $self = shift; + + my $identifier = shift; + if ( !$identifier ) { + return (undef); + } + + if ( $identifier =~ /^(\d+)$/ ) { + $self->SUPER::LoadById($identifier); + } + else { + $self->LoadByCol( "Name", $identifier ); + } + + return ( $self->Id ); + +} + +# }}} + +# {{{ sub ValidateName + +=head2 ValidateName NAME + +Takes a queue name. Returns true if it's an ok name for +a new queue. Returns undef if there's already a queue by that name. + +=cut + +sub ValidateName { + my $self = shift; + my $name = shift; + + my $tempqueue = new RT::Queue($RT::SystemUser); + $tempqueue->Load($name); + + #If we couldn't load it :) + unless ( $tempqueue->id() ) { + return (1); + } + + #If this queue exists, return undef + #Avoid the ACL check. + if ( $tempqueue->Name() ) { + return (undef); + } + + #If the queue doesn't exist, return 1 + else { + return (1); + } + +} + +# }}} + +# {{{ sub Templates + +=head2 Templates + +Returns an RT::Templates object of all of this queue's templates. + +=cut + +sub Templates { + my $self = shift; + + my $templates = RT::Templates->new( $self->CurrentUser ); + + if ( $self->CurrentUserHasRight('ShowTemplate') ) { + $templates->LimitToQueue( $self->id ); + } + + return ($templates); +} + +# }}} + +# {{{ Dealing with custom fields + +# {{{ CustomField + +=item CustomField NAME + +Load the queue-specific custom field named NAME + +=cut + +sub CustomField { + my $self = shift; + my $name = shift; + my $cf = RT::CustomField->new($self->CurrentUser); + $cf->LoadByNameAndQueue(Name => $name, Queue => $self->Id); + return ($cf); +} + + +# {{{ CustomFields + +=item CustomFields + +Returns an RT::CustomFields object containing all global custom fields, as well as those tied to this queue + +=cut + +sub CustomFields { + my $self = shift; + + my $cfs = RT::CustomFields->new( $self->CurrentUser ); + if ( $self->CurrentUserHasRight('SeeQueue') ) { + $cfs->LimitToGlobalOrQueue( $self->Id ); + } + return ($cfs); +} + +# }}} + +# }}} + + +# {{{ Routines dealing with watchers. + +# {{{ _CreateQueueGroups + +=head2 _CreateQueueGroups + +Create the ticket groups and relationships for this ticket. +This routine expects to be called from Ticket->Create _inside of a transaction_ + +It will create four groups for this ticket: Requestor, Cc, AdminCc and Owner. + +It will return true on success and undef on failure. + +=begin testing + +my $Queue = RT::Queue->new($RT::SystemUser); my ($id, $msg) = $Queue->Create(Name => "Foo", + ); +ok ($id, "Foo $id was created"); +ok(my $group = RT::Group->new($RT::SystemUser)); +ok($group->LoadQueueRoleGroup(Queue => $id, Type=> 'Cc')); +ok ($group->Id, "Found the requestors object for this Queue"); + + +ok ((my $add_id, $add_msg) = $Queue->AddWatcher(Type => 'Cc', Email => 'bob@fsck.com'), "Added bob at fsck.com as a requestor"); +ok ($add_id, "Add succeeded: ($add_msg)"); +ok(my $bob = RT::User->new($RT::SystemUser), "Creating a bob rt::user"); +$bob->LoadByEmail('bob@fsck.com'); +ok($bob->Id, "Found the bob rt user"); +ok ($Queue->IsWatcher(Type => 'Cc', PrincipalId => $bob->PrincipalId), "The Queue actually has bob at fsck.com as a requestor");; +ok ((my $add_id, $add_msg) = $Queue->DeleteWatcher(Type =>'Cc', Email => 'bob@fsck.com'), "Added bob at fsck.com as a requestor"); +ok (!$Queue->IsWatcher(Type => 'Cc', Principal => $bob->PrincipalId), "The Queue no longer has bob at fsck.com as a requestor");; + + +$group = RT::Group->new($RT::SystemUser); +ok($group->LoadQueueRoleGroup(Queue => $id, Type=> 'Cc')); +ok ($group->Id, "Found the cc object for this Queue"); +$group = RT::Group->new($RT::SystemUser); +ok($group->LoadQueueRoleGroup(Queue => $id, Type=> 'AdminCc')); +ok ($group->Id, "Found the AdminCc object for this Queue"); + +=end testing + +=cut + + +sub _CreateQueueGroups { + my $self = shift; + + my @types = qw(Cc AdminCc Requestor Owner); + + foreach my $type (@types) { + my $type_obj = RT::Group->new($self->CurrentUser); + my ($id, $msg) = $type_obj->CreateRoleGroup(Instance => $self->Id, + Type => $type, + Domain => 'RT::Queue-Role'); + unless ($id) { + $RT::Logger->error("Couldn't create a Queue group of type '$type' for ticket ". + $self->Id.": ".$msg); + return(undef); + } + } + return(1); + +} + + +# }}} + +# {{{ sub AddWatcher + +=head2 AddWatcher + +AddWatcher takes a parameter hash. The keys are as follows: + +Type One of Requestor, Cc, AdminCc + +PrinicpalId The RT::Principal id of the user or group that's being added as a watcher +Email The email address of the new watcher. If a user with this + email address can't be found, a new nonprivileged user will be created. + +If the watcher you\'re trying to set has an RT account, set the Owner paremeter to their User Id. Otherwise, set the Email parameter to their Email address. + +=cut + +sub AddWatcher { + my $self = shift; + my %args = ( + Type => undef, + PrincipalId => undef, + Email => undef, + @_ + ); + + # {{{ Check ACLS + #If the watcher we're trying to add is for the current user + if ( $self->CurrentUser->PrincipalId eq $args{'PrincipalId'}) { + # If it's an AdminCc and they don't have + # 'WatchAsAdminCc' or 'ModifyTicket', bail + if ( $args{'Type'} eq 'AdminCc' ) { + unless ( $self->CurrentUserHasRight('ModifyQueueWatchers') + or $self->CurrentUserHasRight('WatchAsAdminCc') ) { + return ( 0, $self->loc('Permission Denied')) + } + } + + # If it's a Requestor or Cc and they don't have + # 'Watch' or 'ModifyTicket', bail + elsif ( ( $args{'Type'} eq 'Cc' ) or ( $args{'Type'} eq 'Requestor' ) ) { + + unless ( $self->CurrentUserHasRight('ModifyQueueWatchers') + or $self->CurrentUserHasRight('Watch') ) { + return ( 0, $self->loc('Permission Denied')) + } + } + else { + $RT::Logger->warn( "$self -> AddWatcher got passed a bogus type"); + return ( 0, $self->loc('Error in parameters to Queue->AddWatcher') ); + } + } + + # If the watcher isn't the current user + # and the current user doesn't have 'ModifyQueueWatcher' + # bail + else { + unless ( $self->CurrentUserHasRight('ModifyQueueWatchers') ) { + return ( 0, $self->loc("Permission Denied") ); + } + } + + # }}} + + return ( $self->_AddWatcher(%args) ); +} + +#This contains the meat of AddWatcher. but can be called from a routine like +# Create, which doesn't need the additional acl check +sub _AddWatcher { + my $self = shift; + my %args = ( + Type => undef, + Silent => undef, + PrincipalId => undef, + Email => undef, + @_ + ); + + + my $principal = RT::Principal->new($self->CurrentUser); + if ($args{'PrincipalId'}) { + $principal->Load($args{'PrincipalId'}); + } + elsif ($args{'Email'}) { + + my $user = RT::User->new($self->CurrentUser); + $user->LoadByEmail($args{'Email'}); + + unless ($user->Id) { + $user->Load($args{'Email'}); + } + if ($user->Id) { # If the user exists + $principal->Load($user->PrincipalId); + } else { + + # if the user doesn't exist, we need to create a new user + my $new_user = RT::User->new($RT::SystemUser); + + my ( $Val, $Message ) = $new_user->Create( + Name => $args{'Email'}, + EmailAddress => $args{'Email'}, + RealName => $args{'Email'}, + Privileged => 0, + Comments => 'Autocreated when added as a watcher'); + unless ($Val) { + $RT::Logger->error("Failed to create user ".$args{'Email'} .": " .$Message); + # Deal with the race condition of two account creations at once + $new_user->LoadByEmail($args{'Email'}); + } + $principal->Load($new_user->PrincipalId); + } + } + # If we can't find this watcher, we need to bail. + unless ($principal->Id) { + return(0, $self->loc("Could not find or create that user")); + } + + + my $group = RT::Group->new($self->CurrentUser); + $group->LoadQueueRoleGroup(Type => $args{'Type'}, Queue => $self->Id); + unless ($group->id) { + return(0,$self->loc("Group not found")); + } + + if ( $group->HasMember( $principal)) { + + return ( 0, $self->loc('That principal is already a [_1] for this queue', $args{'Type'}) ); + } + + + my ($m_id, $m_msg) = $group->_AddMember(PrincipalId => $principal->Id); + unless ($m_id) { + $RT::Logger->error("Failed to add ".$principal->Id." as a member of group ".$group->Id."\n".$m_msg); + + return ( 0, $self->loc('Could not make that principal a [_1] for this queue', $args{'Type'}) ); + } + return ( 1, $self->loc('Added principal as a [_1] for this queue', $args{'Type'}) ); +} + +# }}} + +# {{{ sub DeleteWatcher + +=head2 DeleteWatcher { Type => TYPE, PrincipalId => PRINCIPAL_ID, Email => EMAIL_ADDRESS } + + +Deletes a queue watcher. Takes two arguments: + +Type (one of Requestor,Cc,AdminCc) + +and one of + +PrincipalId (an RT::Principal Id of the watcher you want to remove) + OR +Email (the email address of an existing wathcer) + + +=cut + + +sub DeleteWatcher { + my $self = shift; + + my %args = ( Type => undef, + PrincipalId => undef, + @_ ); + + unless ($args{'PrincipalId'} ) { + return(0, $self->loc("No principal specified")); + } + my $principal = RT::Principal->new($self->CurrentUser); + $principal->Load($args{'PrincipalId'}); + + # If we can't find this watcher, we need to bail. + unless ($principal->Id) { + return(0, $self->loc("Could not find that principal")); + } + + my $group = RT::Group->new($self->CurrentUser); + $group->LoadQueueRoleGroup(Type => $args{'Type'}, Queue => $self->Id); + unless ($group->id) { + return(0,$self->loc("Group not found")); + } + + # {{{ Check ACLS + #If the watcher we're trying to add is for the current user + if ( $self->CurrentUser->PrincipalId eq $args{'PrincipalId'}) { + # If it's an AdminCc and they don't have + # 'WatchAsAdminCc' or 'ModifyQueue', bail + if ( $args{'Type'} eq 'AdminCc' ) { + unless ( $self->CurrentUserHasRight('ModifyQueueWatchers') + or $self->CurrentUserHasRight('WatchAsAdminCc') ) { + return ( 0, $self->loc('Permission Denied')) + } + } + + # If it's a Requestor or Cc and they don't have + # 'Watch' or 'ModifyQueue', bail + elsif ( ( $args{'Type'} eq 'Cc' ) or ( $args{'Type'} eq 'Requestor' ) ) { + unless ( $self->CurrentUserHasRight('ModifyQueueWatchers') + or $self->CurrentUserHasRight('Watch') ) { + return ( 0, $self->loc('Permission Denied')) + } + } + else { + $RT::Logger->warn( "$self -> DelWatcher got passed a bogus type"); + return ( 0, $self->loc('Error in parameters to Queue->DelWatcher') ); + } + } + + # If the watcher isn't the current user + # and the current user doesn't have 'ModifyQueueWathcers' bail + else { + unless ( $self->CurrentUserHasRight('ModifyQueueWatchers') ) { + return ( 0, $self->loc("Permission Denied") ); + } + } + + # }}} + + + # see if this user is already a watcher. + + unless ( $group->HasMember($principal)) { + return ( 0, + $self->loc('That principal is not a [_1] for this queue', $args{'Type'}) ); + } + + my ($m_id, $m_msg) = $group->_DeleteMember($principal->Id); + unless ($m_id) { + $RT::Logger->error("Failed to delete ".$principal->Id. + " as a member of group ".$group->Id."\n".$m_msg); + + return ( 0, $self->loc('Could not remove that principal as a [_1] for this queue', $args{'Type'}) ); + } + + return ( 1, $self->loc("[_1] is no longer a [_2] for this queue.", $principal->Object->Name, $args{'Type'} )); +} + +# }}} + +# {{{ AdminCcAddresses + +=head2 AdminCcAddresses + +returns String: All queue AdminCc email addresses as a string + +=cut + +sub AdminCcAddresses { + my $self = shift; + + unless ( $self->CurrentUserHasRight('SeeQueue') ) { + return undef; + } + + return ( $self->AdminCc->MemberEmailAddressesAsString ) + +} + +# }}} + +# {{{ CcAddresses + +=head2 CcAddresses + +returns String: All queue Ccs as a string of email addresses + +=cut + +sub CcAddresses { + my $self = shift; + + unless ( $self->CurrentUserHasRight('SeeQueue') ) { + return undef; + } + + return ( $self->Cc->MemberEmailAddressesAsString); + +} +# }}} + + +# {{{ sub Cc + +=head2 Cc + +Takes nothing. +Returns an RT::Group object which contains this Queue's Ccs. +If the user doesn't have "ShowQueue" permission, returns an empty group + +=cut + +sub Cc { + my $self = shift; + + my $group = RT::Group->new($self->CurrentUser); + if ( $self->CurrentUserHasRight('SeeQueue') ) { + $group->LoadQueueRoleGroup(Type => 'Cc', Queue => $self->Id); + } + return ($group); + +} + +# }}} + +# {{{ sub AdminCc + +=head2 AdminCc + +Takes nothing. +Returns an RT::Group object which contains this Queue's AdminCcs. +If the user doesn't have "ShowQueue" permission, returns an empty group + +=cut + +sub AdminCc { + my $self = shift; + + my $group = RT::Group->new($self->CurrentUser); + if ( $self->CurrentUserHasRight('SeeQueue') ) { + $group->LoadQueueRoleGroup(Type => 'AdminCc', Queue => $self->Id); + } + return ($group); + +} + +# }}} + +# {{{ IsWatcher, IsCc, IsAdminCc + +# {{{ sub IsWatcher +# a generic routine to be called by IsRequestor, IsCc and IsAdminCc + +=head2 IsWatcher { Type => TYPE, PrincipalId => PRINCIPAL_ID } + +Takes a param hash with the attributes Type and PrincipalId + +Type is one of Requestor, Cc, AdminCc and Owner + +PrincipalId is an RT::Principal id + +Returns true if that principal is a member of the group Type for this queue + + +=cut + +sub IsWatcher { + my $self = shift; + + my %args = ( Type => 'Cc', + PrincipalId => undef, + @_ + ); + + # Load the relevant group. + my $group = RT::Group->new($self->CurrentUser); + $group->LoadQueueRoleGroup(Type => $args{'Type'}, Queue => $self->id); + # Ask if it has the member in question + + my $principal = RT::Principal->new($self->CurrentUser); + $principal->Load($args{'PrincipalId'}); + + return ($group->HasMember($principal)); +} + +# }}} + + +# {{{ sub IsCc + +=head2 IsCc PRINCIPAL_ID + + Takes an RT::Principal id. + Returns true if the principal is a requestor of the current queue. + + +=cut + +sub IsCc { + my $self = shift; + my $cc = shift; + + return ( $self->IsWatcher( Type => 'Cc', PrincipalId => $cc ) ); + +} + +# }}} + +# {{{ sub IsAdminCc + +=head2 IsAdminCc PRINCIPAL_ID + + Takes an RT::Principal id. + Returns true if the principal is a requestor of the current queue. + +=cut + +sub IsAdminCc { + my $self = shift; + my $person = shift; + + return ( $self->IsWatcher( Type => 'AdminCc', PrincipalId => $person ) ); + +} + +# }}} + + +# }}} + + + + + +# }}} + +# {{{ ACCESS CONTROL + +# {{{ sub _Set +sub _Set { + my $self = shift; + + unless ( $self->CurrentUserHasRight('AdminQueue') ) { + return ( 0, $self->loc('Permission Denied') ); + } + return ( $self->SUPER::_Set(@_) ); +} + +# }}} + +# {{{ sub _Value + +sub _Value { + my $self = shift; + + unless ( $self->CurrentUserHasRight('SeeQueue') ) { + return (undef); + } + + return ( $self->__Value(@_) ); +} + +# }}} + +# {{{ sub CurrentUserHasRight + +=head2 CurrentUserHasRight + +Takes one argument. A textual string with the name of the right we want to check. +Returns true if the current user has that right for this queue. +Returns undef otherwise. + +=cut + +sub CurrentUserHasRight { + my $self = shift; + my $right = shift; + + return ( + $self->HasRight( + Principal => $self->CurrentUser, + Right => "$right" + ) + ); + +} + +# }}} + +# {{{ sub HasRight + +=head2 HasRight + +Takes a param hash with the fields 'Right' and 'Principal'. +Principal defaults to the current user. +Returns true if the principal has that right for this queue. +Returns undef otherwise. + +=cut + +# TAKES: Right and optional "Principal" which defaults to the current user +sub HasRight { + my $self = shift; + my %args = ( + Right => undef, + Principal => $self->CurrentUser, + @_ + ); + unless ( defined $args{'Principal'} ) { + $RT::Logger->debug("Principal undefined in Queue::HasRight"); + + } + return ( + $args{'Principal'}->HasRight( + Object => $self, + Right => $args{'Right'} + ) + ); +} + +# }}} + +# }}} + +1; diff --git a/rt/lib/RT/Queues_Overlay.pm b/rt/lib/RT/Queues_Overlay.pm new file mode 100644 index 000000000..b85144b52 --- /dev/null +++ b/rt/lib/RT/Queues_Overlay.pm @@ -0,0 +1,130 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Queues - a collection of RT::Queue objects + +=head1 SYNOPSIS + + use RT::Queues; + +=head1 DESCRIPTION + + +=head1 METHODS + + +=begin testing + +ok (require RT::Queues); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +# {{{ sub _Init +sub _Init { + my $self = shift; + $self->{'table'} = "Queues"; + $self->{'primary_key'} = "id"; + + # By default, order by name + $self->OrderBy( ALIAS => 'main', + FIELD => 'Name', + ORDER => 'ASC'); + + return ($self->SUPER::_Init(@_)); +} +# }}} + +# {{{ sub _DoSearch + +=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 + +sub _DoSearch { + my $self = shift; + + #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(@_)); + +} + +# }}} + + +# {{{ sub Limit +sub Limit { + my $self = shift; + my %args = ( ENTRYAGGREGATOR => 'AND', + @_); + $self->SUPER::Limit(%args); +} +# }}} + +# {{{ sub Next + +=head2 Next + +Returns the next queue that this user can see. + +=cut + +sub Next { + my $self = shift; + + + my $Queue = $self->SUPER::Next(); + if ((defined($Queue)) and (ref($Queue))) { + + if ($Queue->CurrentUserHasRight('SeeQueue')) { + return($Queue); + } + + #If the user doesn't have the right to show this queue + else { + return($self->Next()); + } + } + #if there never was any queue + else { + return(undef); + } + +} +# }}} + +1; + diff --git a/rt/lib/RT/ScripAction_Overlay.pm b/rt/lib/RT/ScripAction_Overlay.pm new file mode 100644 index 000000000..e2b018aaf --- /dev/null +++ b/rt/lib/RT/ScripAction_Overlay.pm @@ -0,0 +1,217 @@ +# 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. +# +# 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 +=head1 NAME + + RT::ScripAction - RT Action object + +=head1 SYNOPSIS + + use RT::ScripAction; + + +=head1 DESCRIPTION + +This module should never be called directly by client code. it's an internal module which +should only be accessed through exported APIs in other modules. + + +=begin testing + +ok (require RT::ScripAction); + +=end testing + +=head1 METHODS + +=cut + +use strict; +no warnings qw(redefine); + +# {{{ sub _Init +sub _Init { + my $self = shift; + $self->{'table'} = "ScripActions"; + return ($self->SUPER::_Init(@_)); +} +# }}} + +# {{{ sub _Accessible +sub _Accessible { + my $self = shift; + my %Cols = ( Name => 'read', + Description => 'read', + ExecModule => 'read', + Argument => 'read', + Creator => 'read/auto', + Created => 'read/auto', + LastUpdatedBy => 'read/auto', + LastUpdated => 'read/auto' + ); + return($self->SUPER::_Accessible(@_, %Cols)); +} +# }}} + +# {{{ sub Create +=head2 Create + + Takes a hash. Creates a new Action entry. + should be better documented. +=cut + +sub Create { + my $self = shift; + #TODO check these args and do smart things. + return($self->SUPER::Create(@_)); +} +# }}} + +# {{{ sub Delete +sub Delete { + my $self = shift; + + return (0, "ScripAction->Delete not implemented"); +} +# }}} + +# {{{ sub Load +sub Load { + my $self = shift; + my $identifier = shift; + + if (!$identifier) { + return (0, $self->loc('Input error')); + } + + if ($identifier !~ /\D/) { + $self->SUPER::Load($identifier); + } + else { + $self->LoadByCol('Name', $identifier); + + } + + if (@_) { + # Set the template Id to the passed in template + my $template = shift; + + $self->{'Template'} = $template; + } + return ($self->loc('[_1] ScripAction loaded', $self->Id)); +} +# }}} + +# {{{ sub LoadAction + +=head2 LoadAction HASH + + Takes a hash consisting of TicketObj and TransactionObj. Loads an RT::Action:: module. + +=cut + +sub LoadAction { + my $self = shift; + my %args = ( TransactionObj => undef, + TicketObj => undef, + @_ ); + + #TODO: Put this in an eval + $self->ExecModule =~ /^(\w+)$/; + my $module = $1; + my $type = "RT::Action::". $module; + + eval "require $type" || die "Require of $type failed.\n$@\n"; + + $self->{'Action'} = $type->new ( 'ScripActionObj' => $self, + 'TicketObj' => $args{'TicketObj'}, + 'ScripObj' => $args{'ScripObj'}, + 'TransactionObj' => $args{'TransactionObj'}, + 'TemplateObj' => $self->TemplateObj, + 'Argument' => $self->Argument, + ); +} +# }}} + +# {{{ sub TemplateObj + +=head2 TemplateObj + +Return this action\'s template object + +=cut + +sub TemplateObj { + my $self = shift; + return undef unless $self->{Template}; + if (!$self->{'TemplateObj'}) { + require RT::Template; + $self->{'TemplateObj'} = RT::Template->new($self->CurrentUser); + $self->{'TemplateObj'}->LoadById($self->{'Template'}); + + } + + return ($self->{'TemplateObj'}); +} +# }}} + +# The following methods call the action object + +# {{{ sub Prepare + +sub Prepare { + my $self = shift; + return ($self->{'Action'}->Prepare()); + +} +# }}} + +# {{{ sub Commit +sub Commit { + my $self = shift; + return($self->{'Action'}->Commit()); + + +} +# }}} + +# {{{ sub Describe +sub Describe { + my $self = shift; + return ($self->{'Action'}->Describe()); + +} +# }}} + +# {{{ sub DESTROY +sub DESTROY { + my $self=shift; + $self->{'Action'} = undef; + $self->{'TemplateObj'} = undef; +} +# }}} + + +1; + + diff --git a/rt/lib/RT/ScripActions_Overlay.pm b/rt/lib/RT/ScripActions_Overlay.pm new file mode 100644 index 000000000..83cd646ef --- /dev/null +++ b/rt/lib/RT/ScripActions_Overlay.pm @@ -0,0 +1,87 @@ +# 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. +# +# 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 +=head1 NAME + + RT::ScripActions - Collection of Action objects + +=head1 SYNOPSIS + + use RT::ScripActions; + + +=head1 DESCRIPTION + + +=begin testing + +ok (require RT::ScripActions); + +=end testing + +=head1 METHODS + +=cut + +use strict; +no warnings qw(redefine); + +# {{{ sub _Init +sub _Init { + my $self = shift; + $self->{'table'} = "ScripActions"; + $self->{'primary_key'} = "id"; + return ( $self->SUPER::_Init(@_)); +} +# }}} + +# {{{ sub LimitToType +sub LimitToType { + my $self = shift; + my $type = shift; + $self->Limit (ENTRYAGGREGATOR => 'OR', + FIELD => 'Type', + VALUE => "$type") + if defined $type; + $self->Limit (ENTRYAGGREGATOR => 'OR', + FIELD => 'Type', + VALUE => "Correspond") + if $type eq "Create"; + $self->Limit (ENTRYAGGREGATOR => 'OR', + FIELD => 'Type', + VALUE => 'any'); + +} +# }}} + +# {{{ sub NewItem +sub NewItem { + my $self = shift; + return(RT::ScripAction->new($self->CurrentUser)); + +} +# }}} + + +1; + diff --git a/rt/lib/RT/ScripCondition_Overlay.pm b/rt/lib/RT/ScripCondition_Overlay.pm new file mode 100644 index 000000000..158bc5771 --- /dev/null +++ b/rt/lib/RT/ScripCondition_Overlay.pm @@ -0,0 +1,210 @@ +# 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. +# +# 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 +=head1 NAME + + RT::ScripCondition - RT scrip conditional + +=head1 SYNOPSIS + + use RT::ScripCondition; + + +=head1 DESCRIPTION + +This module should never be called directly by client code. it's an internal module which +should only be accessed through exported APIs in other modules. + + +=begin testing + +ok (require RT::ScripCondition); + +=end testing + +=head1 METHODS + +=cut + +use strict; +no warnings qw(redefine); + + +# {{{ sub _Init +sub _Init { + my $self = shift; + $self->{'table'} = "ScripConditions"; + return ($self->SUPER::_Init(@_)); +} +# }}} + +# {{{ sub _Accessible +sub _Accessible { + my $self = shift; + my %Cols = ( Name => 'read', + Description => 'read', + ApplicableTransTypes => 'read', + ExecModule => 'read', + Argument => 'read', + Creator => 'read/auto', + Created => 'read/auto', + LastUpdatedBy => 'read/auto', + LastUpdated => 'read/auto' + ); + return($self->SUPER::_Accessible(@_, %Cols)); +} +# }}} + +# {{{ sub Create + +=head2 Create + + Takes a hash. Creates a new Condition entry. + should be better documented. + +=cut + +sub Create { + my $self = shift; + return($self->SUPER::Create(@_)); +} +# }}} + +# {{{ sub Delete + +=head2 Delete + +No API available for deleting things just yet. + +=cut + +sub Delete { + my $self = shift; + return(0, $self->loc('Unimplemented')); +} +# }}} + +# {{{ sub Load + +=head2 Load IDENTIFIER + +Loads a condition takes a name or ScripCondition id. + +=cut + +sub Load { + my $self = shift; + my $identifier = shift; + + unless (defined $identifier) { + return (undef); + } + + if ($identifier !~ /\D/) { + return ($self->SUPER::LoadById($identifier)); + } + else { + return ($self->LoadByCol('Name', $identifier)); + } +} +# }}} + +# {{{ sub LoadCondition + +=head2 LoadCondition HASH + +takes a hash which has the following elements: TransactionObj and TicketObj. +Loads the Condition module in question. + +=cut + + +sub LoadCondition { + my $self = shift; + my %args = ( TransactionObj => undef, + TicketObj => undef, + @_ ); + + #TODO: Put this in an eval + $self->ExecModule =~ /^(\w+)$/; + my $module = $1; + my $type = "RT::Condition::". $module; + + eval "require $type" || die "Require of $type failed.\n$@\n"; + + $self->{'Condition'} = $type->new ( 'ScripConditionObj' => $self, + 'TicketObj' => $args{'TicketObj'}, + 'ScripObj' => $args{'ScripObj'}, + 'TransactionObj' => $args{'TransactionObj'}, + 'Argument' => $self->Argument, + 'ApplicableTransTypes' => $self->ApplicableTransTypes, + ); +} +# }}} + +# {{{ The following methods call the Condition object + + +# {{{ sub Describe + +=head2 Describe + +Helper method to call the condition module\'s Describe method. + +=cut + +sub Describe { + my $self = shift; + return ($self->{'Condition'}->Describe()); + +} +# }}} + +# {{{ sub IsApplicable + +=head2 IsApplicable + +Helper method to call the condition module\'s IsApplicable method. + +=cut + +sub IsApplicable { + my $self = shift; + return ($self->{'Condition'}->IsApplicable()); + +} +# }}} + +# }}} + +# {{{ sub DESTROY +sub DESTROY { + my $self=shift; + $self->{'Condition'} = undef; +} +# }}} + + +1; + + diff --git a/rt/lib/RT/ScripConditions_Overlay.pm b/rt/lib/RT/ScripConditions_Overlay.pm new file mode 100644 index 000000000..8bef90801 --- /dev/null +++ b/rt/lib/RT/ScripConditions_Overlay.pm @@ -0,0 +1,87 @@ +# 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. +# +# 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 +=head1 NAME + + RT::ScripConditions - Collection of Action objects + +=head1 SYNOPSIS + + use RT::ScripConditions; + + +=head1 DESCRIPTION + + + +=begin testing + +ok (require RT::ScripConditions); + +=end testing + +=head1 METHODS + +=cut + +use strict; +no warnings qw(redefine); + +# {{{ sub _Init +sub _Init { + my $self = shift; + $self->{'table'} = "ScripConditions"; + $self->{'primary_key'} = "id"; + return ( $self->SUPER::_Init(@_)); +} +# }}} + +# {{{ sub LimitToType +sub LimitToType { + my $self = shift; + my $type = shift; + $self->Limit (ENTRYAGGREGATOR => 'OR', + FIELD => 'Type', + VALUE => "$type") + if defined $type; + $self->Limit (ENTRYAGGREGATOR => 'OR', + FIELD => 'Type', + VALUE => "Correspond") + if $type eq "Create"; + $self->Limit (ENTRYAGGREGATOR => 'OR', + FIELD => 'Type', + VALUE => 'any'); + +} +# }}} + +# {{{ sub NewItem +sub NewItem { + my $self = shift; + return(RT::ScripCondition->new($self->CurrentUser)); +} +# }}} + + +1; + diff --git a/rt/lib/RT/Scrip_Overlay.pm b/rt/lib/RT/Scrip_Overlay.pm new file mode 100644 index 000000000..06462a9ac --- /dev/null +++ b/rt/lib/RT/Scrip_Overlay.pm @@ -0,0 +1,507 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Scrip - an RT Scrip object + +=head1 SYNOPSIS + + use RT::Scrip; + +=head1 DESCRIPTION + + +=head1 METHODS + +=begin testing + +ok (require RT::Scrip); + + +my $q = RT::Queue->new($RT::SystemUser); +$q->Create(Name => 'ScripTest'); +ok($q->Id, "Created a scriptest queue"); + +my $s1 = RT::Scrip->new($RT::SystemUser); +my ($val, $msg) =$s1->Create( Queue => $q->Id, + ScripAction => 'User Defined', + ScripCondition => 'User Defined', + CustomIsApplicableCode => 'if ($self->TicketObj->Subject =~ /fire/) { return (1);} else { return(0)}', + CustomPrepareCode => 'return 1', + CustomCommitCode => '$self->TicketObj->SetPriority("87");', + Template => 'Blank' + ); +ok($val,$msg); + +my $ticket = RT::Ticket->new($RT::SystemUser); +my ($tv,$ttv,$tm) = $ticket->Create(Queue => $q->Id, + Subject => "hair on fire", + ); +ok($tv, $tm); + +ok ($ticket->Priority == '87', "Ticket priority is set right"); + + +my $ticket2 = RT::Ticket->new($RT::SystemUser); +my ($t2v,$t2tv,$t2m) = $ticket2->Create(Queue => $q->Id, + Subject => "hair in water", + ); +ok($t2v, $t2m); + +ok ($ticket2->Priority != '87', "Ticket priority is set right"); + + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + + +# {{{ sub Create + +=head2 Create + +Creates a new entry in the Scrips table. Takes a paramhash with: + + Queue => 0, + Description => undef, + Template => undef, + ScripAction => undef, + ScripCondition => undef, + CustomPrepareCode => undef, + CustomCommitCode => undef, + CustomIsApplicableCode => undef, + + + + +Returns (retval, msg); +retval is 0 for failure or scrip id. msg is a textual description of what happened. + +=cut + +sub Create { + my $self = shift; + my %args = ( + Queue => 0, + Template => 0, # name or id + ScripAction => 0, # name or id + ScripCondition => 0, # name or id + Stage => 'TransactionCreate', + Description => undef, + CustomPrepareCode => undef, + CustomCommitCode => undef, + CustomIsApplicableCode => undef, + + @_ + ); + + + if (! $args{'Queue'} ) { + unless ( $self->CurrentUser->HasRight( Object => $RT::System, Right => 'ModifyScrips') ) { + return ( 0, $self->loc('Permission Denied') ); + } + $args{'Queue'} = 0; # avoid undef sneaking in + } + else { + my $QueueObj = new RT::Queue( $self->CurrentUser ); + $QueueObj->Load( $args{'Queue'} ); + unless ( $QueueObj->id() ) { + return ( 0, $self->loc('Invalid queue') ); + } + unless ( $QueueObj->CurrentUserHasRight('ModifyScrips') ) { + return ( 0, $self->loc('Permission Denied') ); + } + $args{'Queue'} = $QueueObj->id(); + } + + #TODO +++ validate input + + require RT::ScripAction; + my $action = new RT::ScripAction( $self->CurrentUser ); + $action->Load( $args{'ScripAction'} || '0' ); + return ( 0, $self->loc( "Action [_1] not found", $args{'ScripAction'} ) ) + unless $action->Id; + + require RT::Template; + my $template = new RT::Template( $self->CurrentUser ); + $template->Load( $args{'Template'}||'0' ); + return ( 0, $self->loc('Template not found') ) unless $template->Id; + + require RT::ScripCondition; + my $condition = new RT::ScripCondition( $self->CurrentUser ); + $condition->Load( $args{'ScripCondition'}||'0' ); + + unless ( $condition->Id ) { + return ( 0, $self->loc('Condition not found') ); + } + + my ($id,$msg) = $self->SUPER::Create( + Queue => $args{'Queue'}, + Template => $template->Id, + ScripCondition => $condition->id, + Stage => $args{'Stage'}, + ScripAction => $action->Id, + Description => $args{'Description'}, + CustomPrepareCode => $args{'CustomPrepareCode'}, + CustomCommitCode => $args{'CustomCommitCode'}, + CustomIsApplicableCode => $args{'CustomIsApplicableCode'}, + + ); + if ($id) { + return ( $id, $self->loc('Scrip Created') ); + } + else { + return($id,$msg); + } +} + +# }}} + +# {{{ sub Delete + +=head2 Delete + +Delete this object + +=cut + +sub Delete { + my $self = shift; + + unless ($self->CurrentUserHasRight('ModifyScrips')) { + return (0, $self->loc('Permission Denied')); + } + + return ($self->SUPER::Delete(@_)); +} +# }}} + +# {{{ sub QueueObj + +=head2 QueueObj + +Retuns an RT::Queue object with this Scrip\'s queue + +=cut + +sub QueueObj { + my $self = shift; + + if (!$self->{'QueueObj'}) { + require RT::Queue; + $self->{'QueueObj'} = RT::Queue->new($self->CurrentUser); + $self->{'QueueObj'}->Load($self->__Value('Queue')); + } + return ($self->{'QueueObj'}); +} + +# }}} + +# {{{ sub ActionObj + + +=head2 ActionObj + +Retuns an RT::Action object with this Scrip\'s Action + +=cut + +sub ActionObj { + my $self = shift; + + unless (defined $self->{'ScripActionObj'}) { + require RT::ScripAction; + + $self->{'ScripActionObj'} = RT::ScripAction->new($self->CurrentUser); + #TODO: why are we loading Actions with templates like this. + # two seperate methods might make more sense + $self->{'ScripActionObj'}->Load($self->ScripAction, $self->Template); + } + return ($self->{'ScripActionObj'}); +} + +# }}} + +# {{{ sub ConditionObj + +=head2 ConditionObj + +Retuns an RT::ScripCondition object with this Scrip's IsApplicable + +=cut + +sub ConditionObj { + my $self = shift; + + unless (defined $self->{'ScripConditionObj'}) { + require RT::ScripCondition; + $self->{'ScripConditionObj'} = RT::ScripCondition->new($self->CurrentUser); + $self->{'ScripConditionObj'}->Load($self->ScripCondition); + } + return ($self->{'ScripConditionObj'}); +} + +# }}} + +# {{{ sub TemplateObj +=head2 TemplateObj + +Retuns an RT::Template object with this Scrip\'s Template + +=cut + +sub TemplateObj { + my $self = shift; + + unless (defined $self->{'TemplateObj'}) { + require RT::Template; + $self->{'TemplateObj'} = RT::Template->new($self->CurrentUser); + $self->{'TemplateObj'}->Load($self->Template); + } + return ($self->{'TemplateObj'}); +} + +# }}} + + +# {{{ Dealing with this instance of a scrip + +=head2 Apply { TicketObj => undef, TransactionObj => undef} + +This method instantiates the ScripCondition and ScripAction objects for a +single execution of this scrip. it then calls the IsApplicable method of the +ScripCondition. +If that succeeds, it calls the Prepare method of the +ScripAction. If that succeeds, it calls the Commit method of the ScripAction. + +Usually, the ticket and transaction objects passed to this method +should be loaded by the SuperUser role + +=cut + + +# {{{ sub Apply + +sub Apply { + my $self = shift; + my %args = ( TicketObj => undef, + TransactionObj => undef, + @_ ); + + # We want to make sure that if a scrip dies, we don't get + # hurt + eval { + + #Load the scrip's Condition object + $self->ConditionObj->LoadCondition( + ScripObj => $self, + TicketObj => $args{'TicketObj'}, + TransactionObj => $args{'TransactionObj'}, + ); + + unless ( $self->IsApplicable() ) { + $self->ConditionObj->DESTROY; + return (undef); + } + + #If it's applicable, prepare and commit it + $self->ActionObj->LoadAction( ScripObj => $self, + TicketObj => $args{'TicketObj'}, + TransactionObj => $args{'TransactionObj'}, + ); + + unless ( $self->Prepare() ) { + $RT::Logger->info( + "$self: Couldn't prepare " . $self->ActionObj->Name ); + $self->ActionObj->DESTROY(); + $self->ConditionObj->DESTROY(); + return (undef); + } + unless ( $self->Commit() ) { + $RT::Logger->info( + "$self: Couldn't commit " . $self->ActionObj->Name ); + $self->ActionObj->DESTROY(); + $self->ConditionObj->DESTROY(); + return (undef); + } + + #Searchbuilder caching isn't perfectly coherent. got to reload the ticket object, since it + # may have changed + $args{'TicketObj'}->Load($args{'TicketObj'}->Id); + + #We're done with it. lets clean up. + #TODO: something else isn't letting these get garbage collected. check em out. + $self->ActionObj->DESTROY(); + $self->ConditionObj->DESTROY(); + return (1); + }; + if ($@) { + $RT::Logger->error( "Scrip " . $self->Id . " died. - " . $@ ); + } + +} +# }}} + +# {{{ sub IsApplicable + +=head2 IsApplicable + +Calls the Condition object\'s IsApplicable method + +=cut + +sub IsApplicable { + my $self = shift; + return ($self->ConditionObj->IsApplicable(@_)); +} + +# }}} + +# {{{ sub Prepare + +=head2 Prepare + +Calls the action object's prepare method + +=cut + +sub Prepare { + my $self = shift; + $self->ActionObj->Prepare(@_); +} + +# }}} + +# {{{ sub Commit + +=head2 Commit + +Calls the action object's commit method + +=cut + +sub Commit { + my $self = shift; + $self->ActionObj->Commit(@_); +} + +# }}} + +# }}} + +# {{{ sub DESTROY +sub DESTROY { + my $self = shift; + $self->{'ActionObj'} = undef; +} +# }}} + +# {{{ ACL related methods + +# {{{ sub _Set + +# does an acl check and then passes off the call +sub _Set { + my $self = shift; + + unless ($self->CurrentUserHasRight('ModifyScrips')) { + $RT::Logger->debug("CurrentUser can't modify Scrips for ".$self->Queue."\n"); + return (0, $self->loc('Permission Denied')); + } + return $self->__Set(@_); +} + +# }}} + +# {{{ sub _Value +# does an acl check and then passes off the call +sub _Value { + my $self = shift; + + unless ($self->CurrentUserHasRight('ShowScrips')) { + $RT::Logger->debug("CurrentUser can't modify Scrips for ".$self->__Value('Queue')."\n"); + return (undef); + } + + return $self->__Value(@_); +} +# }}} + +# {{{ sub CurrentUserHasRight + +=head2 CurrentUserHasRight + +Helper menthod for HasRight. Presets Principal to CurrentUser then +calls HasRight. + +=cut + +sub CurrentUserHasRight { + my $self = shift; + my $right = shift; + return ($self->HasRight( Principal => $self->CurrentUser->UserObj, + Right => $right )); + +} + +# }}} + +# {{{ sub HasRight + +=head2 HasRight + +Takes a param-hash consisting of "Right" and "Principal" Principal is +an RT::User object or an RT::CurrentUser object. "Right" is a textual +Right string that applies to Scrips. + +=cut + +sub HasRight { + my $self = shift; + my %args = ( Right => undef, + Principal => undef, + @_ ); + + if ((defined $self->SUPER::_Value('Queue')) and ($self->SUPER::_Value('Queue') != 0)) { + return ( $args{'Principal'}->HasRight( + Right => $args{'Right'}, + Object => $self->QueueObj + ) + ); + + } + else { + return( $args{'Principal'}->HasRight( Object => $RT::System, Right => $args{'Right'}) ); + } +} +# }}} + +# }}} + +1; + + diff --git a/rt/lib/RT/Scrips_Overlay.pm b/rt/lib/RT/Scrips_Overlay.pm new file mode 100644 index 000000000..46e31c2a8 --- /dev/null +++ b/rt/lib/RT/Scrips_Overlay.pm @@ -0,0 +1,133 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Scrips - a collection of RT Scrip objects + +=head1 SYNOPSIS + + use RT::Scrips; + +=head1 DESCRIPTION + + +=head1 METHODS + + +=begin testing + +ok (require RT::Scrips); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +# {{{ sub LimitToQueue + +=head2 LimitToQueue + +Takes a queue id (numerical) as its only argument. Makes sure that +Scopes it pulls out apply to this queue (or another that you've selected with +another call to this method + +=cut + +sub LimitToQueue { + my $self = shift; + my $queue = shift; + + $self->Limit (ENTRYAGGREGATOR => 'OR', + FIELD => 'Queue', + VALUE => "$queue") + if defined $queue; + +} +# }}} + +# {{{ sub LimitToGlobal + +=head2 LimitToGlobal + +Makes sure that +Scopes it pulls out apply to all queues (or another that you've selected with +another call to this method or LimitToQueue + +=cut + + +sub LimitToGlobal { + my $self = shift; + + $self->Limit (ENTRYAGGREGATOR => 'OR', + FIELD => 'Queue', + VALUE => 0); + +} +# }}} + +# {{{ sub NewItem +sub NewItem { + my $self = shift; + + return(new RT::Scrip($self->CurrentUser)); +} +# }}} + +# {{{ sub Next + +=head2 Next + +Returns the next scrip that this user can see. + +=cut + +sub Next { + my $self = shift; + + + my $Scrip = $self->SUPER::Next(); + if ((defined($Scrip)) and (ref($Scrip))) { + + if ($Scrip->CurrentUserHasRight('ShowScrips')) { + return($Scrip); + } + + #If the user doesn't have the right to show this scrip + else { + return($self->Next()); + } + } + #if there never was any scrip + else { + return(undef); + } + +} +# }}} + +1; + diff --git a/rt/lib/RT/Search/ActiveTicketsInQueue.pm b/rt/lib/RT/Search/ActiveTicketsInQueue.pm new file mode 100644 index 000000000..766e42e47 --- /dev/null +++ b/rt/lib/RT/Search/ActiveTicketsInQueue.pm @@ -0,0 +1,78 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Search::ActiveTicketsInQueue + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +Find all active tickets in the queue named in the argument passed in + +=head1 METHODS + + +=begin testing + +ok (require RT::Search::Generic); + +=end testing + + +=cut + +package RT::Search::ActiveTicketsInQueue; + +use strict; +use base qw(RT::Search::Generic); + + +# {{{ sub Describe +sub Describe { + my $self = shift; + return ($self->loc("No description for [_1]", ref $self)); +} +# }}} + +# {{{ sub Prepare +sub Prepare { + my $self = shift; + + $self->TicketsObj->LimitQueue(VALUE => $self->Argument); + + foreach my $status (RT::Queue->ActiveStatusArray()) { + $self->TicketsObj->LimitStatus(VALUE => $status); + } + + return(1); +} +# }}} + +eval "require RT::Search::ActiveTicketsInQueue_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/ActiveTicketsInQueue_Vendor.pm}); +eval "require RT::Search::ActiveTicketsInQueue_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/ActiveTicketsInQueue_Local.pm}); + +1; diff --git a/rt/lib/RT/Search/Generic.pm b/rt/lib/RT/Search/Generic.pm new file mode 100644 index 000000000..f872c2a3f --- /dev/null +++ b/rt/lib/RT/Search/Generic.pm @@ -0,0 +1,128 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Search::Generic - ; + +=head1 SYNOPSIS + + use RT::Search::Generic; + my $tickets = RT::Tickets->new($CurrentUser); + my $foo = RT::Search::Generic->new(Argument => $arg, + TicketsObj => $tickets); + $foo->Prepare(); + while ( my $ticket = $foo->Next ) { + # Do something with each ticket we've found + } + + +=head1 DESCRIPTION + + +=head1 METHODS + + +=begin testing + +ok (require RT::Search::Generic); + +=end testing + + +=cut + +package RT::Search::Generic; + +use strict; + +# {{{ 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 = ( + TicketsObj => undef, + Argument => undef, + @_ ); + + $self->{'TicketsObj'} = $args{'TicketsObj'}; + $self->{'Argument'} = $args{'Argument'}; +} +# }}} + +# {{{ sub Argument + +=head2 Argument + +Return the optional argument associated with this Search + +=cut + +sub Argument { + my $self = shift; + return($self->{'Argument'}); +} +# }}} + + +=head2 TicketsObj + +Return the Tickets object passed into this search + +=cut + +sub TicketsObj { + my $self = shift; + return($self->{'TicketsObj'}); +} + +# {{{ sub Describe +sub Describe { + my $self = shift; + return ($self->loc("No description for [_1]", ref $self)); +} +# }}} + +# {{{ sub Prepare +sub Prepare { + my $self = shift; + return(1); +} +# }}} + +eval "require RT::Search::Generic_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/Generic_Vendor.pm}); +eval "require RT::Search::Generic_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/Search/Generic_Local.pm}); + +1; diff --git a/rt/lib/RT/SearchBuilder.pm b/rt/lib/RT/SearchBuilder.pm new file mode 100644 index 000000000..22c9aff8c --- /dev/null +++ b/rt/lib/RT/SearchBuilder.pm @@ -0,0 +1,200 @@ +# 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. +# +# 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 +=head1 NAME + + RT::SearchBuilder - a baseclass for RT collection objects + +=head1 SYNOPSIS + +=head1 DESCRIPTION + + +=head1 METHODS + + +=begin testing + +ok (require RT::SearchBuilder); + +=end testing + + +=cut + +package RT::SearchBuilder; + +use RT::Base; +use DBIx::SearchBuilder; + +use strict; +use vars qw(@ISA); +@ISA = qw(DBIx::SearchBuilder RT::Base); + +# {{{ sub _Init +sub _Init { + my $self = shift; + + $self->{'user'} = shift; + unless(defined($self->CurrentUser)) { + use Carp; + Carp::confess("$self was created without a CurrentUser"); + $RT::Logger->err("$self was created without a CurrentUser"); + return(0); + } + $self->SUPER::_Init( 'Handle' => $RT::Handle); +} +# }}} + +# {{{ sub LimitToEnabled + +=head2 LimitToEnabled + +Only find items that haven\'t been disabled + +=cut + +sub LimitToEnabled { + my $self = shift; + + $self->Limit( FIELD => 'Disabled', + VALUE => '0', + OPERATOR => '=' ); +} +# }}} + +# {{{ sub LimitToDisabled + +=head2 LimitToDeleted + +Only find items that have been deleted. + +=cut + +sub LimitToDeleted { + my $self = shift; + + $self->{'find_disabled_rows'} = 1; + $self->Limit( FIELD => 'Disabled', + OPERATOR => '=', + VALUE => '1' + ); +} +# }}} + +# {{{ sub FindAllRows + +=head2 FindAllRows + +Find all matching rows, regardless of whether they are disabled or not + +=cut + +sub FindAllRows { + shift->{'find_disabled_rows'} = 1; +} + +# {{{ sub Limit + +=head2 Limit PARAMHASH + +This Limit sub calls SUPER::Limit, but defaults "CASESENSITIVE" to 1, thus +making sure that by default lots of things don't do extra work trying to +match lower(colname) agaist lc($val); + +=cut + +sub Limit { + my $self = shift; + my %args = ( CASESENSITIVE => 1, + @_ ); + + return $self->SUPER::Limit(%args); +} + +# }}} + +# {{{ sub ItemsArrayRef + +=item ItemsArrayRef + +Return this object's ItemsArray. +If it has a SortOrder attribute, sort the array by SortOrder. +Otherwise, if it has a "Name" attribute, sort alphabetically by Name +Otherwise, just give up and return it in the order it came from the db. + + +=begin testing + +use_ok(RT::Queues); +ok(my $queues = RT::Queues->new($RT::SystemUser), 'Created a queues object'); +ok( $queues->UnLimit(),'Unlimited the result set of the queues object'); +my $items = $queues->ItemsArrayRef(); +my @items = @{$items}; + +ok($queues->NewItem->_Accessible('Name','read')); +my @sorted = sort {lc($a->Name) cmp lc($b->Name)} @items; +ok (@sorted, "We have an array of queues, sorted". join(',',map {$_->Name} @sorted)); + +ok (@items, "We have an array of queues, raw". join(',',map {$_->Name} @items)); +my @sorted_ids = map {$_->id } @sorted; +my @items_ids = map {$_->id } @items; + +is ($#sorted, $#items); +is ($sorted[0]->Name, $items[0]->Name); +is ($sorted[-1]->Name, $items[-1]->Name); +is_deeply(\@items_ids, \@sorted_ids, "ItemsArrayRef sorts alphabetically by name");; + + +=end testing + +=cut + +sub ItemsArrayRef { + my $self = shift; + my @items; + + if ($self->NewItem()->_Accessible('SortOrder','read')) { + @items = sort { $a->SortOrder <=> $b->SortOrder } @{$self->SUPER::ItemsArrayRef()}; + } + elsif ($self->NewItem()->_Accessible('Name','read')) { + @items = sort { lc($a->Name) cmp lc($b->Name) } @{$self->SUPER::ItemsArrayRef()}; + } + else { + @items = @{$self->SUPER::ItemsArrayRef()}; + } + + return(\@items); + +} + +# }}} + +eval "require RT::SearchBuilder_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/SearchBuilder_Vendor.pm}); +eval "require RT::SearchBuilder_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/SearchBuilder_Local.pm}); + +1; + + diff --git a/rt/lib/RT/System.pm b/rt/lib/RT/System.pm new file mode 100644 index 000000000..bfa5a4eb2 --- /dev/null +++ b/rt/lib/RT/System.pm @@ -0,0 +1,165 @@ +# 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. +# +# 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 +=head1 NAME + +RT::System + +=head1 DESCRIPTION + +RT::System is a simple global object used as a focal point for things +that are system-wide. + +It works sort of like an RT::Record, except it's really a single object that has +an id of "1" when instantiated. + +This gets used by the ACL system so that you can have rights for the scope "RT::System" + +In the future, there will probably be other API goodness encapsulated here. + +=cut + + +package RT::System; +use base qw /RT::Base/; +use strict; + +use RT::ACL; +use vars qw/ $RIGHTS/; + +# System rights are rights granted to the whole system +# XXX TODO Can't localize these outside of having an object around. +$RIGHTS = { + SuperUser => 'Do anything and everything', # loc_pair + AdminAllPersonalGroups => + "Create, delete and modify the members of any user's personal groups" + , # loc_pair + AdminOwnPersonalGroups => + 'Create, delete and modify the members of personal groups', # loc_pair + AdminUsers => 'Create, delete and modify users', # loc_pair + ModifySelf => "Modify one's own RT account", # loc_pair + DelegateRights => + "Delegate specific rights which have been granted to you." # loc_pair +}; + +# Tell RT::ACE that this sort of object can get acls granted +$RT::ACE::OBJECT_TYPES{'RT::System'} = 1; + +foreach my $right ( keys %{$RIGHTS} ) { + $RT::ACE::LOWERCASERIGHTNAMES{ lc $right } = $right; +} + + +=head2 AvailableRights + +Returns a hash of available rights for this object. The keys are the right names and the values are a description of what the rights do + +=begin testing + +my $s = RT::System->new($RT::SystemUser); +my $rights = $s->AvailableRights; +ok ($rights, "Rights defined"); +ok ($rights->{'AdminUsers'},"AdminUsers right found"); +ok ($rights->{'CreateTicket'},"CreateTicket right found"); +ok ($rights->{'AdminGroupMembership'},"ModifyGroupMembers right found"); +ok (!$rights->{'CasdasdsreateTicket'},"bogus right not found"); + + + +=end testing + + +=cut + +sub AvailableRights { + my $self = shift; + + my $queue = RT::Queue->new($RT::SystemUser); + my $group = RT::Group->new($RT::SystemUser); + + my $qr =$queue->AvailableRights(); + my $gr = $group->AvailableRights(); + + # Build a merged list of all system wide rights, queue rights and group rights. + my %rights = (%{$RIGHTS}, %{$gr}, %{$qr}); + return(\%rights); +} + + +=head2 new + +Create a new RT::System object. Really, you should be using $RT::System + +=cut + + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless( $self, $class ); + + + return ($self); +} + +=head2 id + +Returns RT::System's id. It's 1. + + +=begin testing + +use RT::System; +my $sys = RT::System->new(); +is( $sys->Id, 1); +is ($sys->id, 1); + +=end testing + + +=cut + +*Id = \&id; + +sub id { + return (1); +} + +=head2 Load + +Since this object is pretending to be an RT::Record, we need a load method. +It does nothing + +=cut + +sub Load { + return (1); +} + +eval "require RT::System_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/System_Vendor.pm}); +eval "require RT::System_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/System_Local.pm}); + +1; diff --git a/rt/lib/RT/Template_Overlay.pm b/rt/lib/RT/Template_Overlay.pm new file mode 100644 index 000000000..0b5e67d0f --- /dev/null +++ b/rt/lib/RT/Template_Overlay.pm @@ -0,0 +1,411 @@ +# 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. +# +# 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@cpan.org> + +=head1 NAME + + RT::Template - RT's template object + +=head1 SYNOPSIS + + use RT::Template; + +=head1 DESCRIPTION + + +=head1 METHODS + +=begin testing + +ok(require RT::Template); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +use Text::Template; +use MIME::Entity; +use MIME::Parser; +use File::Temp qw /tempdir/; + + +# {{{ sub _Accessible + +sub _Accessible { + my $self = shift; + my %Cols = ( + id => 'read', + Name => 'read/write', + Description => 'read/write', + Type => 'read/write', #Type is one of Action or Message + Content => 'read/write', + Queue => 'read/write', + Creator => 'read/auto', + Created => 'read/auto', + LastUpdatedBy => 'read/auto', + LastUpdated => 'read/auto' + ); + return $self->SUPER::_Accessible( @_, %Cols ); +} + +# }}} + +# {{{ sub _Set + +sub _Set { + my $self = shift; + + # use super::value or we get acl blocked + if ( ( defined $self->SUPER::_Value('Queue') ) + && ( $self->SUPER::_Value('Queue') == 0 ) ) + { + unless ( $self->CurrentUser->HasRight( Object => $RT::System, Right => 'ModifyTemplate') ) { + return ( 0, $self->loc('Permission Denied') ); + } + } + else { + + unless ( $self->CurrentUserHasQueueRight('ModifyTemplate') ) { + return ( 0, $self->loc('Permission Denied') ); + } + } + return ( $self->SUPER::_Set(@_) ); + +} + +# }}} + +# {{{ sub _Value + +=head2 _Value + +Takes the name of a table column. +Returns its value as a string, if the user passes an ACL check + + +=begin testing + +my $t = RT::Template->new($RT::SystemUser); +$t->Create(Name => "Foo", Queue => 1); +my $t2 = RT::Template->new($RT::Nobody); +$t2->Load($t->Id); +ok($t2->QueueObj->id, "Got the template's queue objet"); + +=end testing + + + +=cut + +sub _Value { + + my $self = shift; + my $field = shift; + + + #If the current user doesn't have ACLs, don't let em at it. + #use super::value or we get acl blocked + if ( ( !defined $self->__Value('Queue') ) + || ( $self->__Value('Queue') == 0 ) ) + { + unless ( $self->CurrentUser->HasRight( Object => $RT::System, Right => 'ShowTemplate') ) { + return (undef); + } + } + else { + unless ( $self->CurrentUserHasQueueRight('ShowTemplate') ) { + return (undef); + } + } + return ( $self->__Value($field) ); + +} + +# }}} + +# {{{ sub Load + +=head2 Load <identifer> + +Load a template, either by number or by name + +=cut + +sub Load { + my $self = shift; + my $identifier = shift; + + if ( !$identifier ) { + return (undef); + } + + if ( $identifier !~ /\D/ ) { + $self->SUPER::LoadById($identifier); + } + else { + $self->LoadByCol( 'Name', $identifier ); + + } +} + +# }}} + +# {{{ sub LoadGlobalTemplate + +=head2 LoadGlobalTemplate NAME + +Load the global tempalte with the name NAME + +=cut + +sub LoadGlobalTemplate { + my $self = shift; + my $id = shift; + + return ( $self->LoadQueueTemplate( Queue => 0, Name => $id ) ); +} + +# }}} + +# {{{ sub LoadQueueTemplate + +=head2 LoadQueueTemplate (Queue => QUEUEID, Name => NAME) + +Loads the Queue template named NAME for Queue QUEUE. + +=cut + +sub LoadQueueTemplate { + my $self = shift; + my %args = ( + Queue => undef, + Name => undef + ); + + return ( $self->LoadByCols( Name => $args{'Name'}, Queue => {'Queue'} ) ); + +} + +# }}} + +# {{{ sub Create + +=head2 Create + +Takes a paramhash of Content, Queue, Name and Description. +Name should be a unique string identifying this Template. +Description and Content should be the template's title and content. +Queue should be 0 for a global template and the queue # for a queue-specific +template. + +Returns the Template's id # if the create was successful. Returns undef for +unknown database failure. + + +=cut + +sub Create { + my $self = shift; + my %args = ( + Content => undef, + Queue => 0, + Description => '[no description]', + Type => 'Action', #By default, template are 'Action' templates + Name => undef, + @_ + ); + + if ( !$args{'Queue'} ) { + unless ( $self->CurrentUser->HasRight(Right =>'ModifyTemplate', Object => $RT::System) ) { + return (undef); + } + $args{'Queue'} = 0; + } + else { + my $QueueObj = new RT::Queue( $self->CurrentUser ); + $QueueObj->Load( $args{'Queue'} ) || return ( 0, $self->loc('Invalid queue') ); + + unless ( $QueueObj->CurrentUserHasRight('ModifyTemplate') ) { + return (undef); + } + $args{'Queue'} = $QueueObj->Id; + } + + my $result = $self->SUPER::Create( + Content => $args{'Content'}, + Queue => $args{'Queue'}, + Description => $args{'Description'}, + Name => $args{'Name'} + ); + + return ($result); + +} + +# }}} + +# {{{ sub Delete + +=head2 Delete + +Delete this template. + +=cut + +sub Delete { + my $self = shift; + + unless ( $self->CurrentUserHasQueueRight('ModifyTemplate') ) { + return ( 0, $self->loc('Permission Denied') ); + } + + return ( $self->SUPER::Delete(@_) ); +} + +# }}} + +# {{{ sub MIMEObj +sub MIMEObj { + my $self = shift; + return ( $self->{'MIMEObj'} ); +} + +# }}} + +# {{{ sub Parse + +=item Parse + + This routine performs Text::Template parsing on the template and then + imports the results into a MIME::Entity so we can really use it + It returns a tuple of (val, message) + If val is 0, the message contains an error message + +=cut + +sub Parse { + my $self = shift; + + #We're passing in whatever we were passed. it's destined for _ParseContent + my $content = $self->_ParseContent(@_); + + #Lets build our mime Entity + + my $parser = MIME::Parser->new(); + + # Setup output directory for files. from RT::EmailParser::_SetupMIMEParser + if (my $AttachmentDir = eval { File::Temp::tempdir( TMPDIR => 1, CLEANUP => 1 ) }) { + # Set up output directory for files: + $parser->output_dir("$AttachmentDir"); + } + else { + # On some situations TMPDIR is non-writable. sad but true. + $parser->output_to_core(1); + $parser->tmp_to_core(1); + } + #If someone includes a message, don't extract it + $parser->extract_nested_messages(1); + # Set up the prefix for files with auto-generated names: + $parser->output_prefix("part"); + # If content length is <= 50000 bytes, store each msg as in-core scalar; + # Else, write to a disk file (the default action): + $parser->output_to_core(50000); + + + ### Should we forgive normally-fatal errors? + $parser->ignore_errors(1); + $self->{'MIMEObj'} = eval { $parser->parse_data($content) }; + my $error = ( $@ || $parser->last_error ); + + if ($error) { + $RT::Logger->error("$error"); + return ( 0, $error ); + } + + # Unfold all headers + $self->{'MIMEObj'}->head->unfold(); + + return ( 1, $self->loc("Template parsed") ); + + +} + +# }}} + +# {{{ sub _ParseContent + +# Perform Template substitutions on the template + +sub _ParseContent { + my $self = shift; + my %args = ( + Argument => undef, + TicketObj => undef, + TransactionObj => undef, + @_ + ); + + + $T::Ticket = $args{'TicketObj'}; + $T::Transaction = $args{'TransactionObj'}; + $T::Argument = $args{'Argument'}; + $T::Requestor = eval { $T::Ticket->Requestors->UserMembersObj->First->Name }; + $T::rtname = $RT::rtname; + + # We need to untaint the content of the template, since we'll be working + # with it + my $content = $self->Content(); + $content =~ s/^(.*)$/$1/; + my $template = Text::Template->new( + TYPE => 'STRING', + SOURCE => $content + ); + + my $retval = $template->fill_in( PACKAGE => 'T' ); + + # MIME::Parser has problems dealing with high-bit utf8 data. + Encode::_utf8_off($retval); + return ($retval); +} + +# }}} + +# {{{ sub CurrentUserHasQueueRight + +=head2 CurrentUserHasQueueRight + +Helper function to call the template's queue's CurrentUserHasQueueRight with the passed in args. + +=cut + +sub CurrentUserHasQueueRight { + my $self = shift; + return ( $self->QueueObj->CurrentUserHasRight(@_) ); +} + +# }}} +1; diff --git a/rt/lib/RT/Templates_Overlay.pm b/rt/lib/RT/Templates_Overlay.pm new file mode 100644 index 000000000..6bc992e05 --- /dev/null +++ b/rt/lib/RT/Templates_Overlay.pm @@ -0,0 +1,141 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Templates - a collection of RT Template objects + +=head1 SYNOPSIS + + use RT::Templates; + +=head1 DESCRIPTION + + +=head1 METHODS + +=begin testing + +ok (require RT::Templates); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + + +# {{{ sub _Init + +=head2 _Init + + Returns RT::Templates specific init info like table and primary key names + +=cut + +sub _Init { + + my $self = shift; + $self->{'table'} = "Templates"; + $self->{'primary_key'} = "id"; + return ($self->SUPER::_Init(@_)); +} +# }}} + +# {{{ LimitToNotInQueue + +=head2 LimitToNotInQueue + +Takes a queue id # and limits the returned set of templates to those which +aren't that queue's templates. + +=cut + +sub LimitToNotInQueue { + my $self = shift; + my $queue_id = shift; + $self->Limit(FIELD => 'Queue', + VALUE => "$queue_id", + OPERATOR => '!=' + ); +} +# }}} + +# {{{ LimitToGlobal + +=head2 LimitToGlobal + +Takes no arguments. Limits the returned set to "Global" templates +which can be used with any queue. + +=cut + +sub LimitToGlobal { + my $self = shift; + my $queue_id = shift; + $self->Limit(FIELD => 'Queue', + VALUE => "0", + OPERATOR => '=' + ); +} +# }}} + +# {{{ LimitToQueue + +=head2 LimitToQueue + +Takes a queue id # and limits the returned set of templates to that queue's +templates + +=cut + +sub LimitToQueue { + my $self = shift; + my $queue_id = shift; + $self->Limit(FIELD => 'Queue', + VALUE => "$queue_id", + OPERATOR => '=' + ); +} +# }}} + +# {{{ sub NewItem + +=head2 NewItem + +Returns a new empty Template object + +=cut + +sub NewItem { + my $self = shift; + + use RT::Template; + my $item = new RT::Template($self->CurrentUser); + return($item); +} +# }}} + +1; + diff --git a/rt/lib/RT/TicketCustomFieldValue.pm b/rt/lib/RT/TicketCustomFieldValue.pm new file mode 100644 index 000000000..862a5dc13 --- /dev/null +++ b/rt/lib/RT/TicketCustomFieldValue.pm @@ -0,0 +1,286 @@ +# 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. +# +# 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 +# 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(@_); +} + + + + + +=item 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'}, +); + +} + + + +=item id + +Returns the current value of id. +(In the database, id is stored as int(11).) + + +=cut + + +=item Ticket + +Returns the current value of Ticket. +(In the database, Ticket is stored as int(11).) + + + +=item 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 + + +=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 CustomField + +Returns the current value of CustomField. +(In the database, CustomField is stored as int(11).) + + + +=item 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 + + +=item 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); +} + +=item Content + +Returns the current value of Content. +(In the database, Content is stored as varchar(255).) + + + +=item 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 + + +=item Creator + +Returns the current value of Creator. +(In the database, Creator is stored as int(11).) + + +=cut + + +=item Created + +Returns the current value of Created. +(In the database, Created is stored as datetime.) + + +=cut + + +=item LastUpdatedBy + +Returns the current value of LastUpdatedBy. +(In the database, LastUpdatedBy is stored as int(11).) + + +=cut + + +=item LastUpdated + +Returns the current value of LastUpdated. +(In the database, LastUpdated is stored as datetime.) + + +=cut + + + +sub _ClassAccessible { + { + + 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 new file mode 100644 index 000000000..c395ecac4 --- /dev/null +++ b/rt/lib/RT/TicketCustomFieldValue_Overlay.pm @@ -0,0 +1,52 @@ +# 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. +# +# 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); + + + +=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 new file mode 100644 index 000000000..f137f5375 --- /dev/null +++ b/rt/lib/RT/TicketCustomFieldValues.pm @@ -0,0 +1,115 @@ +# 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. +# +# 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 +# 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(@_) ); +} + + +=item 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 new file mode 100644 index 000000000..5777c37e3 --- /dev/null +++ b/rt/lib/RT/TicketCustomFieldValues_Overlay.pm @@ -0,0 +1,86 @@ +# 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. +# +# 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); + +# {{{ 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 new file mode 100644 index 000000000..c88bbc90f --- /dev/null +++ b/rt/lib/RT/Ticket_Overlay.pm @@ -0,0 +1,4040 @@ +# 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. +# +# 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 +# {{{ Front Material + +=head1 SYNOPSIS + + use RT::Ticket; + my $ticket = new RT::Ticket($CurrentUser); + $ticket->Load($ticket_id); + +=head1 DESCRIPTION + +This module lets you manipulate RT\'s ticket object. + + +=head1 METHODS + +=begin testing + +use_ok ( RT::Queue); +ok(my $testqueue = RT::Queue->new($RT::SystemUser)); +ok($testqueue->Create( Name => 'ticket tests')); +ok($testqueue->Id != 0); +use_ok(RT::CustomField); +ok(my $testcf = RT::CustomField->new($RT::SystemUser)); +ok($testcf->Create( Name => 'selectmulti', + Queue => $testqueue->id, + Type => 'SelectMultiple')); +ok($testcf->AddValue ( Name => 'Value1', + SortOrder => '1', + Description => 'A testing value')); +ok($testcf->AddValue ( Name => 'Value2', + SortOrder => '2', + Description => 'Another testing value')); +ok($testcf->AddValue ( Name => 'Value3', + SortOrder => '3', + Description => 'Yet Another testing value')); + +ok($testcf->Values->Count == 3); + +use_ok(RT::Ticket); + +my $u = RT::User->new($RT::SystemUser); +$u->Load("root"); +ok ($u->Id, "Found the root user"); +ok(my $t = RT::Ticket->new($RT::SystemUser)); +ok(my ($id, $msg) = $t->Create( Queue => $testqueue->Id, + Subject => 'Testing', + Owner => $u->Id + )); +ok($id != 0); +ok ($t->OwnerObj->Id == $u->Id, "Root is the ticket owner"); +ok(my ($cfv, $cfm) =$t->AddCustomFieldValue(Field => $testcf->Id, + Value => 'Value1')); +ok($cfv != 0, "Custom field creation didn't return an error: $cfm"); +ok($t->CustomFieldValues($testcf->Id)->Count == 1); +ok($t->CustomFieldValues($testcf->Id)->First && + $t->CustomFieldValues($testcf->Id)->First->Content eq 'Value1');; + +ok(my ($cfdv, $cfdm) = $t->DeleteCustomFieldValue(Field => $testcf->Id, + Value => 'Value1')); +ok ($cfdv != 0, "Deleted a custom field value: $cfdm"); +ok($t->CustomFieldValues($testcf->Id)->Count == 0); + +ok(my $t2 = RT::Ticket->new($RT::SystemUser)); +ok($t2->Load($id)); +ok($t2->Subject eq 'Testing'); +ok($t2->QueueObj->Id eq $testqueue->id); +ok($t2->OwnerObj->Id == $u->Id); + +my $t3 = RT::Ticket->new($RT::SystemUser); +my ($id3, $msg3) = $t3->Create( Queue => $testqueue->Id, + Subject => 'Testing', + Owner => $u->Id); +my ($cfv1, $cfm1) = $t->AddCustomFieldValue(Field => $testcf->Id, + Value => 'Value1'); +ok($cfv1 != 0, "Adding a custom field to ticket 1 is successful: $cfm"); +my ($cfv2, $cfm2) = $t3->AddCustomFieldValue(Field => $testcf->Id, + Value => 'Value2'); +ok($cfv2 != 0, "Adding a custom field to ticket 2 is successful: $cfm"); +my ($cfv3, $cfm3) = $t->AddCustomFieldValue(Field => $testcf->Id, + Value => 'Value3'); +ok($cfv3 != 0, "Adding a custom field to ticket 1 is successful: $cfm"); +ok($t->CustomFieldValues($testcf->Id)->Count == 2, + "This ticket has 2 custom field values"); +ok($t3->CustomFieldValues($testcf->Id)->Count == 1, + "This ticket has 1 custom field value"); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +use RT::Queue; +use RT::User; +use RT::Record; +use RT::Links; +use RT::Date; +use RT::CustomFields; +use RT::TicketCustomFieldValues; +use RT::Tickets; +use RT::URI::fsck_com_rt; +use RT::URI; + +=begin testing + + +ok(require RT::Ticket, "Loading the RT::Ticket library"); + +=end testing + +=cut + +# }}} + +# {{{ LINKTYPEMAP +# A helper table for relationships mapping to make it easier +# to build and parse links between tickets + +use vars '%LINKTYPEMAP'; + +%LINKTYPEMAP = ( + MemberOf => { Type => 'MemberOf', + Mode => 'Target', }, + Members => { Type => 'MemberOf', + Mode => 'Base', }, + HasMember => { Type => 'MemberOf', + Mode => 'Base', }, + RefersTo => { Type => 'RefersTo', + Mode => 'Target', }, + ReferredToBy => { Type => 'RefersTo', + Mode => 'Base', }, + DependsOn => { Type => 'DependsOn', + Mode => 'Target', }, + DependedOnBy => { Type => 'DependsOn', + Mode => 'Base', }, + +); + +# }}} + +# {{{ LINKDIRMAP +# A helper table for relationships 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', }, + +); + +# }}} + +# {{{ sub Load + +=head2 Load + +Takes a single argument. This can be a ticket id, ticket alias or +local ticket uri. If the ticket can't be loaded, returns undef. +Otherwise, returns the ticket id. + +=cut + +sub Load { + my $self = shift; + my $id = shift; + + #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. + + #If it's a local URI, turn it into a ticket id + if ( $id =~ /^$RT::TicketBaseURI(\d+)$/ ) { + $id = $1; + } + + #If it's a remote URI, we're going to punt for now + elsif ( $id =~ '://' ) { + return (undef); + } + + #If we have an integer URI, load the ticket + if ( $id =~ /^\d+$/ ) { + my $ticketid = $self->LoadById($id); + + unless ($ticketid) { + $RT::Logger->debug("$self tried to load a bogus ticket: $id\n"); + return (undef); + } + } + + #It's not a URI. It's not a numerical ticket ID. Punt! + else { + return (undef); + } + + #If we're merged, resolve the merge. + if ( ( $self->EffectiveId ) and ( $self->EffectiveId != $self->Id ) ) { + return ( $self->Load( $self->EffectiveId ) ); + } + + #Ok. we're loaded. lets get outa here. + return ( $self->Id ); + +} + +# }}} + +# {{{ sub LoadByURI + +=head2 LoadByURI + +Given a local ticket URI, loads the specified ticket. + +=cut + +sub LoadByURI { + my $self = shift; + my $uri = shift; + + if ( $uri =~ /^$RT::TicketBaseURI(\d+)$/ ) { + my $id = $1; + return ( $self->Load($id) ); + } + else { + return (undef); + } +} + +# }}} + +# {{{ sub Create + +=head2 Create (ARGS) + +Arguments: ARGS is a hash of named parameters. Valid parameters are: + + id + Queue - Either a Queue object or a Queue Name + Requestor - A reference to a list of RT::User objects, email addresses or RT user Names + Cc - A reference to a list of RT::User objects, email addresses or Names + AdminCc - A reference to a list of RT::User objects, email addresses or Names + Type -- The ticket\'s type. ignore this for now + Owner -- This ticket\'s owner. either an RT::User object or this user\'s id + Subject -- A string describing the subject of the ticket + InitialPriority -- an integer from 0 to 99 + FinalPriority -- an integer from 0 to 99 + Status -- any valid status (Defined in RT::Queue) + TimeEstimated -- an integer. estimated time for this task in minutes + TimeWorked -- an integer. time worked so far in minutes + TimeLeft -- an integer. time remaining in minutes + Starts -- an ISO date describing the ticket\'s start date and time in GMT + Due -- an ISO date describing the ticket\'s due date and time in GMT + MIMEObj -- a MIME::Entity object with the content of the initial ticket request. + CustomField-<n> -- a scalar or array of values for the customfield with the id <n> + + +Returns: TICKETID, Transaction Object, Error Message + + +=begin testing + +my $t = RT::Ticket->new($RT::SystemUser); + +ok( $t->Create(Queue => 'General', Due => '2002-05-21 00:00:00', ReferredToBy => 'http://www.cpan.org', RefersTo => 'http://fsck.com', Subject => 'This is a subject'), "Ticket Created"); + +ok ( my $id = $t->Id, "Got ticket id"); +ok ($t->RefersTo->First->Target =~ /fsck.com/, "Got refers to"); +ok ($t->ReferredToBy->First->Base =~ /cpan.org/, "Got referredtoby"); +ok ($t->ResolvedObj->Unix == -1, "It hasn't been resolved - ". $t->ResolvedObj->Unix); + +=end testing + +=cut + +sub Create { + my $self = shift; + + my %args = ( id => undef, + Queue => undef, + Requestor => undef, + Cc => undef, + AdminCc => undef, + Type => 'ticket', + Owner => undef, + Subject => '', + InitialPriority => undef, + FinalPriority => undef, + Status => 'new', + TimeWorked => "0", + TimeLeft => 0, + TimeEstimated => 0, + Due => undef, + Starts => undef, + Started => undef, + Resolved => undef, + MIMEObj => undef, + _RecordTransaction => 1, + + + + @_ ); + + my ( $ErrStr, $Owner, $resolved ); + my (@non_fatal_errors); + + my $QueueObj = RT::Queue->new($RT::SystemUser); + + + if ( ( defined( $args{'Queue'} ) ) && ( !ref( $args{'Queue'} ) ) ) { + $QueueObj->Load( $args{'Queue'} ); + } + elsif ( ref( $args{'Queue'} ) eq 'RT::Queue' ) { + $QueueObj->Load( $args{'Queue'}->Id ); + } + else { + $RT::Logger->debug( $args{'Queue'} . " not a recognised queue object."); + } +; + + #Can't create a ticket without a queue. + unless ( defined($QueueObj) && $QueueObj->Id ) { + $RT::Logger->debug("$self No queue given for ticket creation."); + return ( 0, 0, $self->loc('Could not create ticket. Queue not set') ); + } + + #Now that we have a queue, Check the ACLS + unless ( $self->CurrentUser->HasRight( Right => 'CreateTicket', + Object => $QueueObj ) + ) { + return ( 0, 0, + $self->loc( "No permission to create tickets in the queue '[_1]'", $QueueObj->Name ) ); + } + + unless ( $QueueObj->IsValidStatus( $args{'Status'} ) ) { + return ( 0, 0, $self->loc('Invalid value for status') ); + } + + + #Since we have a queue, we can set queue defaults + #Initial Priority + + # If there's no queue default initial priority and it's not set, set it to 0 + $args{'InitialPriority'} = ( $QueueObj->InitialPriority || 0 ) + unless ( defined $args{'InitialPriority'} ); + + #Final priority + + # If there's no queue default final priority and it's not set, set it to 0 + $args{'FinalPriority'} = ( $QueueObj->FinalPriority || 0 ) + unless ( defined $args{'FinalPriority'} ); + + # {{{ Dates + #TODO we should see what sort of due date we're getting, rather + + # than assuming it's in ISO format. + + #Set the due date. if we didn't get fed one, use the queue default due in + my $Due = new RT::Date( $self->CurrentUser ); + + if ( $args{'Due'} ) { + $Due->Set( Format => 'ISO', Value => $args{'Due'} ); + } + elsif ( $QueueObj->DefaultDueIn ) { + $Due->SetToNow; + $Due->AddDays( $QueueObj->DefaultDueIn ); + } + + my $Starts = new RT::Date( $self->CurrentUser ); + if ( defined $args{'Starts'} ) { + $Starts->Set( Format => 'ISO', Value => $args{'Starts'} ); + } + + my $Started = new RT::Date( $self->CurrentUser ); + if ( defined $args{'Started'} ) { + $Started->Set( Format => 'ISO', Value => $args{'Started'} ); + } + + my $Resolved = new RT::Date( $self->CurrentUser ); + if ( defined $args{'Resolved'} ) { + $Resolved->Set( Format => 'ISO', Value => $args{'Resolved'} ); + } + + + #If the status is an inactive status, set the resolved date + if ($QueueObj->IsInactiveStatus($args{'Status'}) && !$args{'Resolved'}) { + $RT::Logger->debug("Got a ".$args{'Status'} . "ticket with a resolved of ".$args{'Resolved'}); + $Resolved->SetToNow; + } + + # }}} + + # {{{ Dealing with time fields + + $args{'TimeEstimated'} = 0 unless defined $args{'TimeEstimated'}; + $args{'TimeWorked'} = 0 unless defined $args{'TimeWorked'}; + $args{'TimeLeft'} = 0 unless defined $args{'TimeLeft'}; + + # }}} + + # {{{ Deal with setting the owner + + if ( ref( $args{'Owner'} ) eq 'RT::User' ) { + $Owner = $args{'Owner'}; + } + + #If we've been handed something else, try to load the user. + elsif ( defined $args{'Owner'} ) { + $Owner = RT::User->new( $self->CurrentUser ); + $Owner->Load( $args{'Owner'} ); + + } + + #If we have a proposed owner and they don't have the right + #to own a ticket, scream about it and make them not the owner + if ( ( defined($Owner) ) + and ( $Owner->Id ) + and ( $Owner->Id != $RT::Nobody->Id ) + and ( !$Owner->HasRight( Object => $QueueObj, + Right => 'OwnTicket' ) ) + ) { + + $RT::Logger->warning( "User " + . $Owner->Name . "(" + . $Owner->id + . ") was proposed " + . "as a ticket owner but has no rights to own " + . "tickets in ".$QueueObj->Name ); + + push @non_fatal_errors, $self->loc("Invalid owner. Defaulting to 'nobody'."); + + $Owner = undef; + } + + #If we haven't been handed a valid owner, make it nobody. + unless ( defined($Owner) && $Owner->Id ) { + $Owner = new RT::User( $self->CurrentUser ); + $Owner->Load( $RT::Nobody->Id ); + } + + # }}} + + # We attempt to load or create each of the people who might have a role for this ticket + # _outside_ the transaction, so we don't get into ticket creation races + foreach my $type ( "Cc", "AdminCc", "Requestor" ) { + next unless (defined $args{$type}); + foreach my $watcher ( ref( $args{$type} ) ? @{ $args{$type} } : ( $args{$type} ) ) { + my $user = RT::User->new($RT::SystemUser); + $user->LoadOrCreateByEmail($watcher) if ($watcher !~ /^\d+$/); + } + } + + + $RT::Handle->BeginTransaction(); + + my %params =( Queue => $QueueObj->Id, + Owner => $Owner->Id, + Subject => $args{'Subject'}, + InitialPriority => $args{'InitialPriority'}, + FinalPriority => $args{'FinalPriority'}, + Priority => $args{'InitialPriority'}, + Status => $args{'Status'}, + TimeWorked => $args{'TimeWorked'}, + TimeEstimated => $args{'TimeEstimated'}, + TimeLeft => $args{'TimeLeft'}, + Type => $args{'Type'}, + Starts => $Starts->ISO, + Started => $Started->ISO, + Resolved => $Resolved->ISO, + Due => $Due->ISO ); + + # Parameters passed in during an import that we probably don't want to touch, otherwise + foreach my $attr qw(id Creator Created LastUpdated LastUpdatedBy) { + $params{$attr} = $args{$attr} if ($args{$attr}); + } + + # Delete null integer parameters + foreach my $attr qw(TimeWorked TimeLeft TimeEstimated InitialPriority FinalPriority) { + delete $params{$attr} unless (exists $params{$attr} && $params{$attr}); + } + + + my $id = $self->SUPER::Create( %params); + unless ($id) { + $RT::Logger->crit( "Couldn't create a ticket"); + $RT::Handle->Rollback(); + return ( 0, 0, $self->loc( "Ticket could not be created due to an internal error") ); + } + + #Set the ticket's effective ID now that we've created it. + my ( $val, $msg ) = $self->__Set( Field => 'EffectiveId', Value => $id ); + + unless ($val) { + $RT::Logger->crit("$self ->Create couldn't set EffectiveId: $msg\n"); + $RT::Handle->Rollback(); + return ( 0, 0, $self->loc( "Ticket could not be created due to an internal error") ); + } + + my $create_groups_ret = $self->_CreateTicketGroups(); + unless ($create_groups_ret) { + $RT::Logger->crit( "Couldn't create ticket groups for ticket " + . $self->Id + . ". aborting Ticket creation." ); + $RT::Handle->Rollback(); + return ( 0, 0, + $self->loc( "Ticket could not be created due to an internal error") ); + } + + # Set the owner in the Groups table + # We denormalize it into the Ticket table too because doing otherwise would + # kill performance, bigtime. It gets kept in lockstep thanks to the magic of transactionalization + + $self->OwnerGroup->_AddMember( PrincipalId => $Owner->PrincipalId , InsideTransaction => 1); + + # {{{ Deal with setting up watchers + + + foreach my $type ( "Cc", "AdminCc", "Requestor" ) { + next unless (defined $args{$type}); + foreach my $watcher ( ref( $args{$type} ) ? @{ $args{$type} } : ( $args{$type} ) ) { + + # we reason that all-digits number must be a principal id, not email + # this is the only way to can add + my $field = 'Email'; + $field = 'PrincipalId' if $watcher =~ /^\d+$/; + + my ( $wval, $wmsg ); + + if ( $type eq 'AdminCc' ) { + + # Note that we're using AddWatcher, rather than _AddWatcher, as we + # actually _want_ that ACL check. Otherwise, random ticket creators + # could make themselves adminccs and maybe get ticket rights. that would + # be poor + ( $wval, $wmsg ) = $self->AddWatcher( Type => $type, + $field => $watcher, + Silent => 1 ); + } + else { + ( $wval, $wmsg ) = $self->_AddWatcher( Type => $type, + $field => $watcher, + Silent => 1 ); + } + + push @non_fatal_errors, $wmsg unless ($wval); + } + } + + # }}} + # {{{ Deal with setting up links + + + foreach my $type ( keys %LINKTYPEMAP ) { + next unless (defined $args{$type}); + foreach my $link ( + ref( $args{$type} ) ? @{ $args{$type} } : ( $args{$type} ) ) + { + my ( $wval, $wmsg ) = $self->AddLink( + Type => $LINKTYPEMAP{$type}->{'Type'}, + $LINKTYPEMAP{$type}->{'Mode'} => $link, + Silent => 1 + ); + + push @non_fatal_errors, $wmsg unless ($wval); + } + } + + # }}} + + # {{{ Add all the custom fields + + foreach my $arg ( keys %args ) { + next unless ( $arg =~ /^CustomField-(\d+)$/i ); + my $cfid = $1; + foreach + my $value ( ref( $args{$arg} ) ? @{ $args{$arg} } : ( $args{$arg} ) ) { + next unless ($value); + $self->_AddCustomFieldValue( Field => $cfid, + Value => $value, + RecordTransaction => 0 + ); + } + } + # }}} + + if ( $args{'_RecordTransaction'} ) { + # {{{ Add a transaction for the create + my ( $Trans, $Msg, $TransObj ) = $self->_NewTransaction( + Type => "Create", + TimeTaken => 0, + MIMEObj => $args{'MIMEObj'} + ); + + + if ( $self->Id && $Trans ) { + $ErrStr = $self->loc( "Ticket [_1] created in queue '[_2]'", $self->Id, $QueueObj->Name ); + $ErrStr = join ( "\n", $ErrStr, @non_fatal_errors ); + + $RT::Logger->info("Ticket ".$self->Id. " created in queue '".$QueueObj->Name."' by ".$self->CurrentUser->Name); + } + else { + $RT::Handle->Rollback(); + + # TODO where does this get errstr from? + $RT::Logger->error("Ticket couldn't be created: $ErrStr"); + return ( 0, 0, $self->loc( "Ticket could not be created due to an internal error")); + } + + $RT::Handle->Commit(); + return ( $self->Id, $TransObj->Id, $ErrStr ); + # }}} + } + else { + + # Not going to record a transaction + $RT::Handle->Commit(); + $ErrStr = $self->loc( "Ticket [_1] created in queue '[_2]'", $self->Id, $QueueObj->Name ); + $ErrStr = join ( "\n", $ErrStr, @non_fatal_errors ); + return ( $self->Id, $0, $ErrStr ); + + } +} + + +# }}} + +# {{{ sub CreateFromEmailMessage + + +=head2 CreateFromEmailMessage { Message, Queue, ExtractActorFromHeaders } + +This code replaces what was once a large part of the email gateway. +It takes an email message as a parameter, parses out the sender, subject +and a MIME object. It then creates a ticket based on those attributes + +=cut + +sub CreateFromEmailMessage { + my $self = shift; + my %args = ( Message => undef, + Queue => undef, + ExtractActorFromSender => undef, + @_ ); + + + # Pull out requestor + + # Pull out Cc? + + # + + +} + +# }}} + + +# {{{ CreateFrom822 + +=head2 FORMAT + +CreateTickets uses the template as a template for an ordered set of tickets +to create. The basic format is as follows: + + + ===Create-Ticket: identifier + Param: Value + Param2: Value + Param3: Value + Content: Blah + blah + blah + ENDOFCONTENT +=head2 Acceptable fields + +A complete list of acceptable fields for this beastie: + + + * Queue => Name or id# of a queue + Subject => A text string + Status => A valid status. defaults to 'new' + + Due => Dates can be specified in seconds since the epoch + to be handled literally or in a semi-free textual + format which RT will attempt to parse. + Starts => + Started => + Resolved => + Owner => Username or id of an RT user who can and should own + this ticket + + Requestor => Email address + + Cc => Email address + + AdminCc => Email address + TimeWorked => + TimeEstimated => + TimeLeft => + InitialPriority => + FinalPriority => + Type => + + DependsOn => + + DependedOnBy => + + RefersTo => + + ReferredToBy => + + Members => + + MemberOf => + Content => content. Can extend to multiple lines. Everything + within a template after a Content: header is treated + as content until we hit a line containing only + ENDOFCONTENT + ContentType => the content-type of the Content field + CustomField-<id#> => custom field value + +Fields marked with an * are required. + +Fields marked with a + man have multiple values, simply +by repeating the fieldname on a new line with an additional value. + + +When parsed, field names are converted to lowercase and have -s stripped. +Refers-To, RefersTo, refersto, refers-to and r-e-f-er-s-tO will all +be treated as the same thing. + + +=begin testing + +use_ok(RT::Ticket); + +=end testing + + +=cut + +sub CreateFrom822 { + my $self = shift; + my $content = shift; + + + + my %args = $self->_Parse822HeadersForAttributes($content); + + # Now we have a %args to work with. + # Make sure we have at least the minimum set of + # reasonable data and do our thang + my $ticket = RT::Ticket->new($RT::SystemUser); + + my %ticketargs = ( + Queue => $args{'queue'}, + Subject => $args{'subject'}, + Status => $args{'status'}, + Due => $args{'due'}, + Starts => $args{'starts'}, + Started => $args{'started'}, + Resolved => $args{'resolved'}, + Owner => $args{'owner'}, + Requestor => $args{'requestor'}, + Cc => $args{'cc'}, + AdminCc => $args{'admincc'}, + TimeWorked => $args{'timeworked'}, + TimeEstimated => $args{'timeestimated'}, + TimeLeft => $args{'timeleft'}, + InitialPriority => $args{'initialpriority'}, + FinalPriority => $args{'finalpriority'}, + Type => $args{'type'}, + DependsOn => $args{'dependson'}, + DependedOnBy => $args{'dependedonby'}, + RefersTo => $args{'refersto'}, + ReferredToBy => $args{'referredtoby'}, + Members => $args{'members'}, + MemberOf => $args{'memberof'}, + MIMEObj => $args{'mimeobj'} + ); + + # Add custom field entries to %ticketargs. + # TODO: allow named custom fields + map { + /^customfield-(\d+)$/ + && ( $ticketargs{ "CustomField-" . $1 } = $args{$_} ); + } keys(%args); + + my ( $id, $transid, $msg ) = $ticket->Create(%ticketargs); + unless ($id) { + $RT::Logger->error( "Couldn't create a related ticket for " + . $self->TicketObj->Id . " " + . $msg ); + } + + return (1); +} + +# }}} + +# {{{ UpdateFrom822 + +=head2 UpdateFrom822 $MESSAGE + +Takes an RFC822 format message as a string and uses it to make a bunch of changes to a ticket. +Returns an um. ask me again when the code exists + + +=begin testing + +my $simple_update = <<EOF; +Subject: target +AddRequestor: jesse\@example.com +EOF + +my $ticket = RT::Ticket->new($RT::SystemUser); +$ticket->Create(Subject => 'first', Queue => 'general'); +ok($ticket->Id, "Created the test ticket"); +$ticket->UpdateFrom822($simple_update); +is($ticket->Subject, 'target', "changed the subject"); +my $jesse = RT::User->new($RT::SystemUser); +$jesse->LoadByEmail('jesse@example.com'); +ok ($jesse->Id, "There's a user for jesse"); +ok($ticket->Requestors->HasMember( $jesse->PrincipalObj), "It has the jesse principal object as a requestor "); + +=end testing + + +=cut + +sub UpdateFrom822 { + my $self = shift; + my $content = shift; + my %args = $self->_Parse822HeadersForAttributes($content); + + + my %ticketargs = ( + Queue => $args{'queue'}, + Subject => $args{'subject'}, + Status => $args{'status'}, + Due => $args{'due'}, + Starts => $args{'starts'}, + Started => $args{'started'}, + Resolved => $args{'resolved'}, + Owner => $args{'owner'}, + Requestor => $args{'requestor'}, + Cc => $args{'cc'}, + AdminCc => $args{'admincc'}, + TimeWorked => $args{'timeworked'}, + TimeEstimated => $args{'timeestimated'}, + TimeLeft => $args{'timeleft'}, + InitialPriority => $args{'initialpriority'}, + Priority => $args{'priority'}, + FinalPriority => $args{'finalpriority'}, + Type => $args{'type'}, + DependsOn => $args{'dependson'}, + DependedOnBy => $args{'dependedonby'}, + RefersTo => $args{'refersto'}, + ReferredToBy => $args{'referredtoby'}, + Members => $args{'members'}, + MemberOf => $args{'memberof'}, + MIMEObj => $args{'mimeobj'} + ); + + foreach my $type qw(Requestor Cc Admincc) { + + foreach my $action ( 'Add', 'Del', '' ) { + + my $lctag = lc($action) . lc($type); + foreach my $list ( $args{$lctag}, $args{ $lctag . 's' } ) { + + foreach my $entry ( ref($list) ? @{$list} : ($list) ) { + push @{$ticketargs{ $action . $type }} , split ( /\s*,\s*/, $entry ); + } + + } + + # Todo: if we're given an explicit list, transmute it into a list of adds/deletes + + } + } + + # Add custom field entries to %ticketargs. + # TODO: allow named custom fields + map { + /^customfield-(\d+)$/ + && ( $ticketargs{ "CustomField-" . $1 } = $args{$_} ); + } keys(%args); + +# for each ticket we've been told to update, iterate through the set of +# rfc822 headers and perform that update to the ticket. + + + # {{{ Set basic fields + my @attribs = qw( + Subject + FinalPriority + Priority + TimeEstimated + TimeWorked + TimeLeft + Status + Queue + Type + ); + + + # Resolve the queue from a name to a numeric id. + if ( $ticketargs{'Queue'} and ( $ticketargs{'Queue'} !~ /^(\d+)$/ ) ) { + my $tempqueue = RT::Queue->new($RT::SystemUser); + $tempqueue->Load( $ticketargs{'Queue'} ); + $ticketargs{'Queue'} = $tempqueue->Id() if ( $tempqueue->id ); + } + + # die "updaterecordobject is a webui thingy"; + my @results; + + foreach my $attribute (@attribs) { + my $value = $ticketargs{$attribute}; + + if ( $value ne $self->$attribute() ) { + + my $method = "Set$attribute"; + my ( $code, $msg ) = $self->$method($value); + + push @results, $self->loc($attribute) . ': ' . $msg; + + } + } + + # We special case owner changing, so we can use ForceOwnerChange + if ( $ticketargs{'Owner'} && ( $self->Owner != $ticketargs{'Owner'} ) ) { + my $ChownType = "Give"; + $ChownType = "Force" if ( $ticketargs{'ForceOwnerChange'} ); + + my ( $val, $msg ) = $self->SetOwner( $ticketargs{'Owner'}, $ChownType ); + push ( @results, $msg ); + } + + # }}} +# Deal with setting watchers + + +# Acceptable arguments: +# Requestor +# Requestors +# AddRequestor +# AddRequestors +# DelRequestor + + foreach my $type qw(Requestor Cc AdminCc) { + + # If we've been given a number of delresses to del, do it. + foreach my $address (@{$ticketargs{'Del'.$type}}) { + my ($id, $msg) = $self->DelWatcher( Type => $type, Email => $address); + push (@results, $msg) ; + } + + # If we've been given a number of addresses to add, do it. + foreach my $address (@{$ticketargs{'Add'.$type}}) { + $RT::Logger->debug("Adding $address as a $type"); + my ($id, $msg) = $self->AddWatcher( Type => $type, Email => $address); + push (@results, $msg) ; + + } + + +} + + +} +# }}} + +# {{{ _Parse822HeadersForAttributes Content + +=head2 _Parse822HeadersForAttributes Content + +Takes an RFC822 style message and parses its attributes into a hash. + +=cut + +sub _Parse822HeadersForAttributes { + my $self = shift; + my $content = shift; + my %args; + + my @lines = ( split ( /\n/, $content ) ); + while ( defined( my $line = shift @lines ) ) { + if ( $line =~ /^(.*?):(?:\s+(.*))?$/ ) { + my $value = $2; + my $tag = lc($1); + + $tag =~ s/-//g; + if ( defined( $args{$tag} ) ) + { #if we're about to get a second value, make it an array + $args{$tag} = [ $args{$tag} ]; + } + if ( ref( $args{$tag} ) ) + { #If it's an array, we want to push the value + push @{ $args{$tag} }, $value; + } + else { #if there's nothing there, just set the value + $args{$tag} = $value; + } + } elsif ($line =~ /^$/) { + + #TODO: this won't work, since "" isn't of the form "foo:value" + + while ( defined( my $l = shift @lines ) ) { + push @{ $args{'content'} }, $l; + } + } + + } + + foreach my $date qw(due starts started resolved) { + my $dateobj = RT::Date->new($RT::SystemUser); + if ( $args{$date} =~ /^\d+$/ ) { + $dateobj->Set( Format => 'unix', Value => $args{$date} ); + } + else { + $dateobj->Set( Format => 'unknown', Value => $args{$date} ); + } + $args{$date} = $dateobj->ISO; + } + $args{'mimeobj'} = MIME::Entity->new(); + $args{'mimeobj'}->build( + Type => ( $args{'contenttype'} || 'text/plain' ), + Data => ($args{'content'} || '') + ); + + return (%args); +} + +# }}} + +# {{{ sub Import + +=head2 Import PARAMHASH + +Import a ticket. +Doesn\'t create a transaction. +Doesn\'t supply queue defaults, etc. + +Returns: TICKETID + +=cut + +sub Import { + my $self = shift; + my ( $ErrStr, $QueueObj, $Owner ); + + my %args = ( + id => undef, + EffectiveId => undef, + Queue => undef, + Requestor => undef, + Type => 'ticket', + Owner => $RT::Nobody->Id, + Subject => '[no subject]', + InitialPriority => undef, + FinalPriority => undef, + Status => 'new', + TimeWorked => "0", + Due => undef, + Created => undef, + Updated => undef, + Resolved => undef, + Told => undef, + @_ + ); + + if ( ( defined( $args{'Queue'} ) ) && ( !ref( $args{'Queue'} ) ) ) { + $QueueObj = RT::Queue->new($RT::SystemUser); + $QueueObj->Load( $args{'Queue'} ); + + #TODO error check this and return 0 if it\'s not loading properly +++ + } + elsif ( ref( $args{'Queue'} ) eq 'RT::Queue' ) { + $QueueObj = RT::Queue->new($RT::SystemUser); + $QueueObj->Load( $args{'Queue'}->Id ); + } + else { + $RT::Logger->debug( + "$self " . $args{'Queue'} . " not a recognised queue object." ); + } + + #Can't create a ticket without a queue. + unless ( defined($QueueObj) and $QueueObj->Id ) { + $RT::Logger->debug("$self No queue given for ticket creation."); + return ( 0, $self->loc('Could not create ticket. Queue not set') ); + } + + #Now that we have a queue, Check the ACLS + unless ( + $self->CurrentUser->HasRight( + Right => 'CreateTicket', + Object => $QueueObj + ) + ) + { + return ( 0, + $self->loc("No permission to create tickets in the queue '[_1]'" + , $QueueObj->Name)); + } + + # {{{ Deal with setting the owner + + # Attempt to take user object, user name or user id. + # Assign to nobody if lookup fails. + if ( defined( $args{'Owner'} ) ) { + if ( ref( $args{'Owner'} ) ) { + $Owner = $args{'Owner'}; + } + else { + $Owner = new RT::User( $self->CurrentUser ); + $Owner->Load( $args{'Owner'} ); + if ( !defined( $Owner->id ) ) { + $Owner->Load( $RT::Nobody->id ); + } + } + } + + #If we have a proposed owner and they don't have the right + #to own a ticket, scream about it and make them not the owner + if ( + ( defined($Owner) ) + and ( $Owner->Id != $RT::Nobody->Id ) + and ( + !$Owner->HasRight( + Object => $QueueObj, + Right => 'OwnTicket' + ) + ) + ) + { + + $RT::Logger->warning( "$self user " + . $Owner->Name . "(" + . $Owner->id + . ") was proposed " + . "as a ticket owner but has no rights to own " + . "tickets in '" + . $QueueObj->Name . "'\n" ); + + $Owner = undef; + } + + #If we haven't been handed a valid owner, make it nobody. + unless ( defined($Owner) ) { + $Owner = new RT::User( $self->CurrentUser ); + $Owner->Load( $RT::Nobody->UserObj->Id ); + } + + # }}} + + unless ( $self->ValidateStatus( $args{'Status'} ) ) { + return ( 0, $self->loc("'[_1]' is an invalid value for status", $args{'Status'}) ); + } + + $self->{'_AccessibleCache'}{Created} = { 'read' => 1, 'write' => 1 }; + $self->{'_AccessibleCache'}{Creator} = { 'read' => 1, 'auto' => 1 }; + $self->{'_AccessibleCache'}{LastUpdated} = { 'read' => 1, 'write' => 1 }; + $self->{'_AccessibleCache'}{LastUpdatedBy} = { 'read' => 1, 'auto' => 1 }; + + # If we're coming in with an id, set that now. + my $EffectiveId = undef; + if ( $args{'id'} ) { + $EffectiveId = $args{'id'}; + + } + + my $id = $self->SUPER::Create( + id => $args{'id'}, + EffectiveId => $EffectiveId, + Queue => $QueueObj->Id, + Owner => $Owner->Id, + Subject => $args{'Subject'}, # loc + InitialPriority => $args{'InitialPriority'}, # loc + FinalPriority => $args{'FinalPriority'}, # loc + Priority => $args{'InitialPriority'}, # loc + Status => $args{'Status'}, # loc + TimeWorked => $args{'TimeWorked'}, # loc + Type => $args{'Type'}, # loc + Created => $args{'Created'}, # loc + Told => $args{'Told'}, # loc + LastUpdated => $args{'Updated'}, # loc + Resolved => $args{'Resolved'}, # loc + Due => $args{'Due'}, # loc + ); + + # If the ticket didn't have an id + # Set the ticket's effective ID now that we've created it. + if ( $args{'id'} ) { + $self->Load( $args{'id'} ); + } + else { + my ( $val, $msg ) = + $self->__Set( Field => 'EffectiveId', Value => $id ); + + unless ($val) { + $RT::Logger->err( + $self . "->Import couldn't set EffectiveId: $msg\n" ); + } + } + + my $watcher; + foreach $watcher ( @{ $args{'Cc'} } ) { + $self->_AddWatcher( Type => 'Cc', Person => $watcher, Silent => 1 ); + } + foreach $watcher ( @{ $args{'AdminCc'} } ) { + $self->_AddWatcher( Type => 'AdminCc', Person => $watcher, + Silent => 1 ); + } + foreach $watcher ( @{ $args{'Requestor'} } ) { + $self->_AddWatcher( Type => 'Requestor', Person => $watcher, + Silent => 1 ); + } + + return ( $self->Id, $ErrStr ); +} + +# }}} + + +# {{{ Routines dealing with watchers. + +# {{{ _CreateTicketGroups + +=head2 _CreateTicketGroups + +Create the ticket groups and relationships for this ticket. +This routine expects to be called from Ticket->Create _inside of a transaction_ + +It will create four groups for this ticket: Requestor, Cc, AdminCc and Owner. + +It will return true on success and undef on failure. + +=begin testing + +my $ticket = RT::Ticket->new($RT::SystemUser); +my ($id, $msg) = $ticket->Create(Subject => "Foo", + Owner => $RT::SystemUser->Id, + Status => 'open', + Requestor => ['jesse@example.com'], + Queue => '1' + ); +ok ($id, "Ticket $id was created"); +ok(my $group = RT::Group->new($RT::SystemUser)); +ok($group->LoadTicketRoleGroup(Ticket => $id, Type=> 'Requestor')); +ok ($group->Id, "Found the requestors object for this ticket"); + +ok(my $jesse = RT::User->new($RT::SystemUser), "Creating a jesse rt::user"); +$jesse->LoadByEmail('jesse@example.com'); +ok($jesse->Id, "Found the jesse rt user"); + + +ok ($ticket->IsWatcher(Type => 'Requestor', PrincipalId => $jesse->PrincipalId), "The ticket actually has jesse at fsck.com as a requestor"); +ok ((my $add_id, $add_msg) = $ticket->AddWatcher(Type => 'Requestor', Email => 'bob@fsck.com'), "Added bob at fsck.com as a requestor"); +ok ($add_id, "Add succeeded: ($add_msg)"); +ok(my $bob = RT::User->new($RT::SystemUser), "Creating a bob rt::user"); +$bob->LoadByEmail('bob@fsck.com'); +ok($bob->Id, "Found the bob rt user"); +ok ($ticket->IsWatcher(Type => 'Requestor', PrincipalId => $bob->PrincipalId), "The ticket actually has bob at fsck.com as a requestor");; +ok ((my $add_id, $add_msg) = $ticket->DeleteWatcher(Type =>'Requestor', Email => 'bob@fsck.com'), "Added bob at fsck.com as a requestor"); +ok (!$ticket->IsWatcher(Type => 'Requestor', Principal => $bob->PrincipalId), "The ticket no longer has bob at fsck.com as a requestor");; + + +$group = RT::Group->new($RT::SystemUser); +ok($group->LoadTicketRoleGroup(Ticket => $id, Type=> 'Cc')); +ok ($group->Id, "Found the cc object for this ticket"); +$group = RT::Group->new($RT::SystemUser); +ok($group->LoadTicketRoleGroup(Ticket => $id, Type=> 'AdminCc')); +ok ($group->Id, "Found the AdminCc object for this ticket"); +$group = RT::Group->new($RT::SystemUser); +ok($group->LoadTicketRoleGroup(Ticket => $id, Type=> 'Owner')); +ok ($group->Id, "Found the Owner object for this ticket"); +ok($group->HasMember($RT::SystemUser->UserObj->PrincipalObj), "the owner group has the member 'RT_System'"); + +=end testing + +=cut + + +sub _CreateTicketGroups { + my $self = shift; + + my @types = qw(Requestor Owner Cc AdminCc); + + foreach my $type (@types) { + my $type_obj = RT::Group->new($self->CurrentUser); + my ($id, $msg) = $type_obj->CreateRoleGroup(Domain => 'RT::Ticket-Role', + Instance => $self->Id, + Type => $type); + unless ($id) { + $RT::Logger->error("Couldn't create a ticket group of type '$type' for ticket ". + $self->Id.": ".$msg); + return(undef); + } + } + return(1); + +} + +# }}} + +# {{{ sub OwnerGroup + +=head2 OwnerGroup + +A constructor which returns an RT::Group object containing the owner of this ticket. + +=cut + +sub OwnerGroup { + my $self = shift; + my $owner_obj = RT::Group->new($self->CurrentUser); + $owner_obj->LoadTicketRoleGroup( Ticket => $self->Id, Type => 'Owner'); + return ($owner_obj); +} + +# }}} + + +# {{{ sub AddWatcher + +=head2 AddWatcher + +AddWatcher takes a parameter hash. The keys are as follows: + +Type One of Requestor, Cc, AdminCc + +PrinicpalId The RT::Principal id of the user or group that's being added as a watcher + +Email The email address of the new watcher. If a user with this + email address can't be found, a new nonprivileged user will be created. + +If the watcher you\'re trying to set has an RT account, set the Owner paremeter to their User Id. Otherwise, set the Email parameter to their Email address. + +=cut + +sub AddWatcher { + my $self = shift; + my %args = ( + Type => undef, + PrincipalId => undef, + Email => undef, + @_ + ); + + # {{{ Check ACLS + #If the watcher we're trying to add is for the current user + if ( $self->CurrentUser->PrincipalId eq $args{'PrincipalId'}) { + # If it's an AdminCc and they don't have + # 'WatchAsAdminCc' or 'ModifyTicket', bail + if ( $args{'Type'} eq 'AdminCc' ) { + unless ( $self->CurrentUserHasRight('ModifyTicket') + or $self->CurrentUserHasRight('WatchAsAdminCc') ) { + return ( 0, $self->loc('Permission Denied')) + } + } + + # If it's a Requestor or Cc and they don't have + # 'Watch' or 'ModifyTicket', bail + elsif ( ( $args{'Type'} eq 'Cc' ) or ( $args{'Type'} eq 'Requestor' ) ) { + + unless ( $self->CurrentUserHasRight('ModifyTicket') + or $self->CurrentUserHasRight('Watch') ) { + return ( 0, $self->loc('Permission Denied')) + } + } + else { + $RT::Logger->warn( "$self -> AddWatcher got passed a bogus type"); + return ( 0, $self->loc('Error in parameters to Ticket->AddWatcher') ); + } + } + + # If the watcher isn't the current user + # and the current user doesn't have 'ModifyTicket' + # bail + else { + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + } + + # }}} + + return ( $self->_AddWatcher(%args) ); +} + +#This contains the meat of AddWatcher. but can be called from a routine like +# Create, which doesn't need the additional acl check +sub _AddWatcher { + my $self = shift; + my %args = ( + Type => undef, + Silent => undef, + PrincipalId => undef, + Email => undef, + @_ + ); + + + my $principal = RT::Principal->new($self->CurrentUser); + if ($args{'Email'}) { + my $user = RT::User->new($RT::SystemUser); + my ($pid, $msg) = $user->LoadOrCreateByEmail($args{'Email'}); + if ($pid) { + $args{'PrincipalId'} = $pid; + } + } + if ($args{'PrincipalId'}) { + $principal->Load($args{'PrincipalId'}); + } + + + # If we can't find this watcher, we need to bail. + unless ($principal->Id) { + $RT::Logger->error("Could not load create a user with the email address '".$args{'Email'}. "' to add as a watcher for ticket ".$self->Id); + return(0, $self->loc("Could not find or create that user")); + } + + + my $group = RT::Group->new($self->CurrentUser); + $group->LoadTicketRoleGroup(Type => $args{'Type'}, Ticket => $self->Id); + unless ($group->id) { + return(0,$self->loc("Group not found")); + } + + if ( $group->HasMember( $principal)) { + + return ( 0, $self->loc('That principal is already a [_1] for this ticket', $self->loc($args{'Type'})) ); + } + + + my ( $m_id, $m_msg ) = $group->_AddMember( PrincipalId => $principal->Id, + InsideTransaction => 1 ); + unless ($m_id) { + $RT::Logger->error("Failed to add ".$principal->Id." as a member of group ".$group->Id."\n".$m_msg); + + return ( 0, $self->loc('Could not make that principal a [_1] for this ticket', $self->loc($args{'Type'})) ); + } + + unless ( $args{'Silent'} ) { + $self->_NewTransaction( + Type => 'AddWatcher', + NewValue => $principal->Id, + Field => $args{'Type'} + ); + } + + return ( 1, $self->loc('Added principal as a [_1] for this ticket', $self->loc($args{'Type'})) ); +} + +# }}} + + +# {{{ sub DeleteWatcher + +=head2 DeleteWatcher { Type => TYPE, PrincipalId => PRINCIPAL_ID, Email => EMAIL_ADDRESS } + + +Deletes a Ticket watcher. Takes two arguments: + +Type (one of Requestor,Cc,AdminCc) + +and one of + +PrincipalId (an RT::Principal Id of the watcher you want to remove) + OR +Email (the email address of an existing wathcer) + + +=cut + + +sub DeleteWatcher { + my $self = shift; + + my %args = ( Type => undef, + PrincipalId => undef, + Email => undef, + @_ ); + + unless ($args{'PrincipalId'} || $args{'Email'} ) { + return(0, $self->loc("No principal specified")); + } + my $principal = RT::Principal->new($self->CurrentUser); + if ($args{'PrincipalId'} ) { + + $principal->Load($args{'PrincipalId'}); + } else { + my $user = RT::User->new($self->CurrentUser); + $user->LoadByEmail($args{'Email'}); + $principal->Load($user->Id); + } + # If we can't find this watcher, we need to bail. + unless ($principal->Id) { + return(0, $self->loc("Could not find that principal")); + } + + my $group = RT::Group->new($self->CurrentUser); + $group->LoadTicketRoleGroup(Type => $args{'Type'}, Ticket => $self->Id); + unless ($group->id) { + return(0,$self->loc("Group not found")); + } + + # {{{ Check ACLS + #If the watcher we're trying to add is for the current user + if ( $self->CurrentUser->PrincipalId eq $args{'PrincipalId'}) { + # If it's an AdminCc and they don't have + # 'WatchAsAdminCc' or 'ModifyTicket', bail + if ( $args{'Type'} eq 'AdminCc' ) { + unless ( $self->CurrentUserHasRight('ModifyTicket') + or $self->CurrentUserHasRight('WatchAsAdminCc') ) { + return ( 0, $self->loc('Permission Denied')) + } + } + + # If it's a Requestor or Cc and they don't have + # 'Watch' or 'ModifyTicket', bail + elsif ( ( $args{'Type'} eq 'Cc' ) or ( $args{'Type'} eq 'Requestor' ) ) { + unless ( $self->CurrentUserHasRight('ModifyTicket') + or $self->CurrentUserHasRight('Watch') ) { + return ( 0, $self->loc('Permission Denied')) + } + } + else { + $RT::Logger->warn( "$self -> DeleteWatcher got passed a bogus type"); + return ( 0, $self->loc('Error in parameters to Ticket->DelWatcher') ); + } + } + + # If the watcher isn't the current user + # and the current user doesn't have 'ModifyTicket' bail + else { + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + } + + # }}} + + + # see if this user is already a watcher. + + unless ( $group->HasMember($principal)) { + return ( 0, + $self->loc('That principal is not a [_1] for this ticket', $args{'Type'}) ); + } + + my ($m_id, $m_msg) = $group->_DeleteMember($principal->Id); + unless ($m_id) { + $RT::Logger->error("Failed to delete ".$principal->Id. + " as a member of group ".$group->Id."\n".$m_msg); + + return ( 0, $self->loc('Could not remove that principal as a [_1] for this ticket', $args{'Type'}) ); + } + + unless ( $args{'Silent'} ) { + $self->_NewTransaction( + Type => 'DelWatcher', + OldValue => $principal->Id, + Field => $args{'Type'} + ); + } + + return ( 1, $self->loc("[_1] is no longer a [_2] for this ticket.", $principal->Object->Name, $args{'Type'} )); +} + + + + +# }}} + + +# {{{ a set of [foo]AsString subs that will return the various sorts of watchers for a ticket/queue as a comma delineated string + +=head2 RequestorAddresses + + B<Returns> String: All Ticket Requestor email addresses as a string. + +=cut + +sub RequestorAddresses { + my $self = shift; + + unless ( $self->CurrentUserHasRight('ShowTicket') ) { + return undef; + } + + return ( $self->Requestors->MemberEmailAddressesAsString ); +} + + +=head2 AdminCcAddresses + +returns String: All Ticket AdminCc email addresses as a string + +=cut + +sub AdminCcAddresses { + my $self = shift; + + unless ( $self->CurrentUserHasRight('ShowTicket') ) { + return undef; + } + + return ( $self->AdminCc->MemberEmailAddressesAsString ) + +} + +=head2 CcAddresses + +returns String: All Ticket Ccs as a string of email addresses + +=cut + +sub CcAddresses { + my $self = shift; + + unless ( $self->CurrentUserHasRight('ShowTicket') ) { + return undef; + } + + return ( $self->Cc->MemberEmailAddressesAsString); + +} + +# }}} + +# {{{ Routines that return RT::Watchers objects of Requestors, Ccs and AdminCcs + +# {{{ sub Requestors + +=head2 Requestors + +Takes nothing. +Returns this ticket's Requestors as an RT::Group object + +=cut + +sub Requestors { + my $self = shift; + + my $group = RT::Group->new($self->CurrentUser); + if ( $self->CurrentUserHasRight('ShowTicket') ) { + $group->LoadTicketRoleGroup(Type => 'Requestor', Ticket => $self->Id); + } + return ($group); + +} + +# }}} + +# {{{ sub Cc + +=head2 Cc + +Takes nothing. +Returns an RT::Group object which contains this ticket's Ccs. +If the user doesn't have "ShowTicket" permission, returns an empty group + +=cut + +sub Cc { + my $self = shift; + + my $group = RT::Group->new($self->CurrentUser); + if ( $self->CurrentUserHasRight('ShowTicket') ) { + $group->LoadTicketRoleGroup(Type => 'Cc', Ticket => $self->Id); + } + return ($group); + +} + +# }}} + +# {{{ sub AdminCc + +=head2 AdminCc + +Takes nothing. +Returns an RT::Group object which contains this ticket's AdminCcs. +If the user doesn't have "ShowTicket" permission, returns an empty group + +=cut + +sub AdminCc { + my $self = shift; + + my $group = RT::Group->new($self->CurrentUser); + if ( $self->CurrentUserHasRight('ShowTicket') ) { + $group->LoadTicketRoleGroup(Type => 'AdminCc', Ticket => $self->Id); + } + return ($group); + +} + +# }}} + +# }}} + +# {{{ IsWatcher,IsRequestor,IsCc, IsAdminCc + +# {{{ sub IsWatcher +# a generic routine to be called by IsRequestor, IsCc and IsAdminCc + +=head2 IsWatcher { Type => TYPE, PrincipalId => PRINCIPAL_ID, Email => EMAIL } + +Takes a param hash with the attributes Type and either PrincipalId or Email + +Type is one of Requestor, Cc, AdminCc and Owner + +PrincipalId is an RT::Principal id, and Email is an email address. + +Returns true if the specified principal (or the one corresponding to the +specified address) is a member of the group Type for this ticket. + +=cut + +sub IsWatcher { + my $self = shift; + + my %args = ( Type => 'Requestor', + PrincipalId => undef, + Email => undef, + @_ + ); + + # Load the relevant group. + my $group = RT::Group->new($self->CurrentUser); + $group->LoadTicketRoleGroup(Type => $args{'Type'}, Ticket => $self->id); + + # Find the relevant principal. + my $principal = RT::Principal->new($self->CurrentUser); + if (!$args{PrincipalId} && $args{Email}) { + # Look up the specified user. + my $user = RT::User->new($self->CurrentUser); + $user->LoadByEmail($args{Email}); + if ($user->Id) { + $args{PrincipalId} = $user->PrincipalId; + } + else { + # A non-existent user can't be a group member. + return 0; + } + } + $principal->Load($args{'PrincipalId'}); + + # Ask if it has the member in question + return ($group->HasMember($principal)); +} + +# }}} + +# {{{ sub IsRequestor + +=head2 IsRequestor PRINCIPAL_ID + + Takes an RT::Principal id + Returns true if the principal is a requestor of the current ticket. + + +=cut + +sub IsRequestor { + my $self = shift; + my $person = shift; + + return ( $self->IsWatcher( Type => 'Requestor', PrincipalId => $person ) ); + +}; + +# }}} + +# {{{ sub IsCc + +=head2 IsCc PRINCIPAL_ID + + Takes an RT::Principal id. + Returns true if the principal is a requestor of the current ticket. + + +=cut + +sub IsCc { + my $self = shift; + my $cc = shift; + + return ( $self->IsWatcher( Type => 'Cc', PrincipalId => $cc ) ); + +} + +# }}} + +# {{{ sub IsAdminCc + +=head2 IsAdminCc PRINCIPAL_ID + + Takes an RT::Principal id. + Returns true if the principal is a requestor of the current ticket. + +=cut + +sub IsAdminCc { + my $self = shift; + my $person = shift; + + return ( $self->IsWatcher( Type => 'AdminCc', PrincipalId => $person ) ); + +} + +# }}} + +# {{{ sub IsOwner + +=head2 IsOwner + + Takes an RT::User object. Returns true if that user is this ticket's owner. +returns undef otherwise + +=cut + +sub IsOwner { + my $self = shift; + my $person = shift; + + # no ACL check since this is used in acl decisions + # unless ($self->CurrentUserHasRight('ShowTicket')) { + # return(undef); + # } + + #Tickets won't yet have owners when they're being created. + unless ( $self->OwnerObj->id ) { + return (undef); + } + + if ( $person->id == $self->OwnerObj->id ) { + return (1); + } + else { + return (undef); + } +} + +# }}} + +# }}} + +# }}} + +# {{{ Routines dealing with queues + +# {{{ sub ValidateQueue + +sub ValidateQueue { + my $self = shift; + my $Value = shift; + + if ( !$Value ) { + $RT::Logger->warning( " RT:::Queue::ValidateQueue called with a null value. this isn't ok."); + return (1); + } + + my $QueueObj = RT::Queue->new( $self->CurrentUser ); + my $id = $QueueObj->Load($Value); + + if ($id) { + return (1); + } + else { + return (undef); + } +} + +# }}} + +# {{{ sub SetQueue + +sub SetQueue { + my $self = shift; + my $NewQueue = shift; + + #Redundant. ACL gets checked in _Set; + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + + my $NewQueueObj = RT::Queue->new( $self->CurrentUser ); + $NewQueueObj->Load($NewQueue); + + unless ( $NewQueueObj->Id() ) { + return ( 0, $self->loc("That queue does not exist") ); + } + + if ( $NewQueueObj->Id == $self->QueueObj->Id ) { + return ( 0, $self->loc('That is the same value') ); + } + unless ( + $self->CurrentUser->HasRight( + Right => 'CreateTicket', + Object => $NewQueueObj + ) + ) + { + return ( 0, $self->loc("You may not create requests in that queue.") ); + } + + unless ( + $self->OwnerObj->HasRight( + Right => 'OwnTicket', + Object => $NewQueueObj + ) + ) + { + $self->Untake(); + } + + return ( $self->_Set( Field => 'Queue', Value => $NewQueueObj->Id() ) ); + +} + +# }}} + +# {{{ sub QueueObj + +=head2 QueueObj + +Takes nothing. returns this ticket's queue object + +=cut + +sub QueueObj { + my $self = shift; + + my $queue_obj = RT::Queue->new( $self->CurrentUser ); + + #We call __Value so that we can avoid the ACL decision and some deep recursion + my ($result) = $queue_obj->Load( $self->__Value('Queue') ); + return ($queue_obj); +} + +# }}} + +# }}} + +# {{{ Date printing routines + +# {{{ sub DueObj + +=head2 DueObj + + Returns an RT::Date object containing this ticket's due date + +=cut + +sub DueObj { + my $self = shift; + + my $time = new RT::Date( $self->CurrentUser ); + + # -1 is RT::Date slang for never + if ( $self->Due ) { + $time->Set( Format => 'sql', Value => $self->Due ); + } + else { + $time->Set( Format => 'unix', Value => -1 ); + } + + return $time; +} + +# }}} + +# {{{ sub DueAsString + +=head2 DueAsString + +Returns this ticket's due date as a human readable string + +=cut + +sub DueAsString { + my $self = shift; + return $self->DueObj->AsString(); +} + +# }}} + +# {{{ sub ResolvedObj + +=head2 ResolvedObj + + Returns an RT::Date object of this ticket's 'resolved' time. + +=cut + +sub ResolvedObj { + my $self = shift; + + my $time = new RT::Date( $self->CurrentUser ); + $time->Set( Format => 'sql', Value => $self->Resolved ); + return $time; +} + +# }}} + +# {{{ sub SetStarted + +=head2 SetStarted + +Takes a date in ISO format or undef +Returns a transaction id and a message +The client calls "Start" to note that the project was started on the date in $date. +A null date means "now" + +=cut + +sub SetStarted { + my $self = shift; + my $time = shift || 0; + + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, self->loc("Permission Denied") ); + } + + #We create a date object to catch date weirdness + my $time_obj = new RT::Date( $self->CurrentUser() ); + if ( $time != 0 ) { + $time_obj->Set( Format => 'ISO', Value => $time ); + } + else { + $time_obj->SetToNow(); + } + + #Now that we're starting, open this ticket + #TODO do we really want to force this as policy? it should be a scrip + + #We need $TicketAsSystem, in case the current user doesn't have + #ShowTicket + # + my $TicketAsSystem = new RT::Ticket($RT::SystemUser); + $TicketAsSystem->Load( $self->Id ); + if ( $TicketAsSystem->Status eq 'new' ) { + $TicketAsSystem->Open(); + } + + return ( $self->_Set( Field => 'Started', Value => $time_obj->ISO ) ); + +} + +# }}} + +# {{{ sub StartedObj + +=head2 StartedObj + + Returns an RT::Date object which contains this ticket's +'Started' time. + +=cut + +sub StartedObj { + my $self = shift; + + my $time = new RT::Date( $self->CurrentUser ); + $time->Set( Format => 'sql', Value => $self->Started ); + return $time; +} + +# }}} + +# {{{ sub StartsObj + +=head2 StartsObj + + Returns an RT::Date object which contains this ticket's +'Starts' time. + +=cut + +sub StartsObj { + my $self = shift; + + my $time = new RT::Date( $self->CurrentUser ); + $time->Set( Format => 'sql', Value => $self->Starts ); + return $time; +} + +# }}} + +# {{{ sub ToldObj + +=head2 ToldObj + + Returns an RT::Date object which contains this ticket's +'Told' time. + +=cut + +sub ToldObj { + my $self = shift; + + my $time = new RT::Date( $self->CurrentUser ); + $time->Set( Format => 'sql', Value => $self->Told ); + return $time; +} + +# }}} + +# {{{ sub ToldAsString + +=head2 ToldAsString + +A convenience method that returns ToldObj->AsString + +TODO: This should be deprecated + +=cut + +sub ToldAsString { + my $self = shift; + if ( $self->Told ) { + return $self->ToldObj->AsString(); + } + else { + return ("Never"); + } +} + +# }}} + +# {{{ sub TimeWorkedAsString + +=head2 TimeWorkedAsString + +Returns the amount of time worked on this ticket as a Text String + +=cut + +sub TimeWorkedAsString { + my $self = shift; + return "0" unless $self->TimeWorked; + + #This is not really a date object, but if we diff a number of seconds + #vs the epoch, we'll get a nice description of time worked. + + my $worked = new RT::Date( $self->CurrentUser ); + + #return the #of minutes worked turned into seconds and written as + # a simple text string + + return ( $worked->DurationAsString( $self->TimeWorked * 60 ) ); +} + +# }}} + +# }}} + +# {{{ Routines dealing with correspondence/comments + +# {{{ sub Comment + +=head2 Comment + +Comment on this ticket. +Takes a hashref with the following attributes: +If MIMEObj is undefined, Content will be used to build a MIME::Entity for this +commentl + +MIMEObj, TimeTaken, CcMessageTo, BccMessageTo, Content. + +=cut + +## Please see file perltidy.ERR +sub Comment { + my $self = shift; + + my %args = ( CcMessageTo => undef, + BccMessageTo => undef, + MIMEObj => undef, + Content => undef, + TimeTaken => 0, + @_ ); + + unless ( ( $self->CurrentUserHasRight('CommentOnTicket') ) + or ( $self->CurrentUserHasRight('ModifyTicket') ) ) { + return ( 0, $self->loc("Permission Denied") ); + } + + unless ( $args{'MIMEObj'} ) { + if ( $args{'Content'} ) { + use MIME::Entity; + $args{'MIMEObj'} = MIME::Entity->build( + Data => ( ref $args{'Content'} ? $args{'Content'} : [ $args{'Content'} ] ) + ); + } + else { + + return ( 0, $self->loc("No correspondence attached") ); + } + } + + RT::I18N::SetMIMEEntityToUTF8($args{'MIMEObj'}); # convert text parts into utf-8 + + # If we've been passed in CcMessageTo and BccMessageTo fields, + # add them to the mime object for passing on to the transaction handler + # The "NotifyOtherRecipients" scripAction will look for RT--Send-Cc: and + # RT-Send-Bcc: headers + + $args{'MIMEObj'}->head->add( 'RT-Send-Cc', $args{'CcMessageTo'} ) + if defined $args{'CcMessageTo'}; + $args{'MIMEObj'}->head->add( 'RT-Send-Bcc', $args{'BccMessageTo'} ) + if defined $args{'BccMessageTo'}; + + #Record the correspondence (write the transaction) + my ( $Trans, $Msg, $TransObj ) = $self->_NewTransaction( + Type => 'Comment', + Data => ( $args{'MIMEObj'}->head->get('subject') || 'No Subject' ), + TimeTaken => $args{'TimeTaken'}, + MIMEObj => $args{'MIMEObj'} + ); + + return ( $Trans, $self->loc("The comment has been recorded") ); +} + +# }}} + +# {{{ sub Correspond + +=head2 Correspond + +Correspond on this ticket. +Takes a hashref with the following attributes: + + +MIMEObj, TimeTaken, CcMessageTo, BccMessageTo, Content + +if there's no MIMEObj, Content is used to build a MIME::Entity object + + +=cut + +sub Correspond { + my $self = shift; + my %args = ( CcMessageTo => undef, + BccMessageTo => undef, + MIMEObj => undef, + Content => undef, + TimeTaken => 0, + @_ ); + + unless ( ( $self->CurrentUserHasRight('ReplyToTicket') ) + or ( $self->CurrentUserHasRight('ModifyTicket') ) ) { + return ( 0, $self->loc("Permission Denied") ); + } + + unless ( $args{'MIMEObj'} ) { + if ( $args{'Content'} ) { + use MIME::Entity; + $args{'MIMEObj'} = MIME::Entity->build( + Data => ( ref $args{'Content'} ? $args{'Content'} : [ $args{'Content'} ] ) + ); + + } + else { + + return ( 0, $self->loc("No correspondence attached") ); + } + } + + RT::I18N::SetMIMEEntityToUTF8($args{'MIMEObj'}); # convert text parts into utf-8 + + # If we've been passed in CcMessageTo and BccMessageTo fields, + # add them to the mime object for passing on to the transaction handler + # The "NotifyOtherRecipients" scripAction will look for RT-Send-Cc: and RT-Send-Bcc: + # headers + + $args{'MIMEObj'}->head->add( 'RT-Send-Cc', $args{'CcMessageTo'} ) + if defined $args{'CcMessageTo'}; + $args{'MIMEObj'}->head->add( 'RT-Send-Bcc', $args{'BccMessageTo'} ) + if defined $args{'BccMessageTo'}; + + #Record the correspondence (write the transaction) + my ( $Trans, $msg, $TransObj ) = $self->_NewTransaction( + Type => 'Correspond', + Data => ( $args{'MIMEObj'}->head->get('subject') || 'No Subject' ), + TimeTaken => $args{'TimeTaken'}, + MIMEObj => $args{'MIMEObj'} ); + + unless ($Trans) { + $RT::Logger->err( "$self couldn't init a transaction $msg"); + return ( $Trans, $self->loc("correspondence (probably) not sent"), $args{'MIMEObj'} ); + } + + #Set the last told date to now if this isn't mail from the requestor. + #TODO: Note that this will wrongly ack mail from any non-requestor as a "told" + + unless ( $TransObj->IsInbound ) { + $self->_SetTold; + } + + return ( $Trans, $self->loc("correspondence sent") ); +} + +# }}} + +# }}} + +# {{{ Routines dealing with Links and Relations between tickets + +# {{{ Link Collections + +# {{{ sub Members + +=head2 Members + + This returns an RT::Links object which references all the tickets +which are 'MembersOf' this ticket + +=cut + +sub Members { + my $self = shift; + return ( $self->_Links( 'Target', 'MemberOf' ) ); +} + +# }}} + +# {{{ sub MemberOf + +=head2 MemberOf + + This returns an RT::Links object which references all the tickets that this +ticket is a 'MemberOf' + +=cut + +sub MemberOf { + my $self = shift; + return ( $self->_Links( 'Base', 'MemberOf' ) ); +} + +# }}} + +# {{{ RefersTo + +=head2 RefersTo + + This returns an RT::Links object which shows all references for which this ticket is a base + +=cut + +sub RefersTo { + my $self = shift; + return ( $self->_Links( 'Base', 'RefersTo' ) ); +} + +# }}} + +# {{{ ReferredToBy + +=head2 ReferredToBy + + This returns an RT::Links object which shows all references for which this ticket is a target + +=cut + +sub ReferredToBy { + my $self = shift; + return ( $self->_Links( 'Target', 'RefersTo' ) ); +} + +# }}} + +# {{{ DependedOnBy + +=head2 DependedOnBy + + This returns an RT::Links object which references all the tickets that depend on this one + +=cut + +sub DependedOnBy { + my $self = shift; + return ( $self->_Links( 'Target', 'DependsOn' ) ); +} + +# }}} + + + +=head2 HasUnresolvedDependencies + + Takes a paramhash of Type (default to '__any'). Returns true if +$self->UnresolvedDependencies returns an object with one or more members +of that type. Returns false otherwise + + +=begin testing + +my $t1 = RT::Ticket->new($RT::SystemUser); +my ($id, $trans, $msg) = $t1->Create(Subject => 'DepTest1', Queue => 'general'); +ok($id, "Created dep test 1 - $msg"); + +my $t2 = RT::Ticket->new($RT::SystemUser); +my ($id2, $trans, $msg2) = $t2->Create(Subject => 'DepTest2', Queue => 'general'); +ok($id2, "Created dep test 2 - $msg2"); +my $t3 = RT::Ticket->new($RT::SystemUser); +my ($id3, $trans, $msg3) = $t3->Create(Subject => 'DepTest3', Queue => 'general', Type => 'approval'); +ok($id3, "Created dep test 3 - $msg3"); + +ok ($t1->AddLink( Type => 'DependsOn', Target => $t2->id)); +ok ($t1->AddLink( Type => 'DependsOn', Target => $t3->id)); + +ok ($t1->HasUnresolvedDependencies, "Ticket ".$t1->Id." has unresolved deps"); +ok (!$t1->HasUnresolvedDependencies( Type => 'blah' ), "Ticket ".$t1->Id." has no unresolved blahs"); +ok ($t1->HasUnresolvedDependencies( Type => 'approval' ), "Ticket ".$t1->Id." has unresolved approvals"); +ok (!$t2->HasUnresolvedDependencies, "Ticket ".$t2->Id." has no unresolved deps"); +my ($rid, $rmsg)= $t1->Resolve(); +ok(!$rid, $rmsg); +ok($t2->Resolve); +($rid, $rmsg)= $t1->Resolve(); +ok(!$rid, $rmsg); +ok($t3->Resolve); +($rid, $rmsg)= $t1->Resolve(); +ok($rid, $rmsg); + + +=end testing + +=cut + +sub HasUnresolvedDependencies { + my $self = shift; + my %args = ( + Type => undef, + @_ + ); + + my $deps = $self->UnresolvedDependencies; + + if ($args{Type}) { + $deps->Limit( FIELD => 'Type', + OPERATOR => '=', + VALUE => $args{Type}); + } + else { + $deps->IgnoreType; + } + + if ($deps->Count > 0) { + return 1; + } + else { + return (undef); + } +} + + +# {{{ UnresolvedDependencies + +=head2 UnresolvedDependencies + +Returns an RT::Tickets object of tickets which this ticket depends on +and which have a status of new, open or stalled. (That list comes from +RT::Queue->ActiveStatusArray + +=cut + + +sub UnresolvedDependencies { + my $self = shift; + my $deps = RT::Tickets->new($self->CurrentUser); + + my @live_statuses = RT::Queue->ActiveStatusArray(); + foreach my $status (@live_statuses) { + $deps->LimitStatus(VALUE => $status); + } + $deps->LimitDependedOnBy($self->Id); + + return($deps); + +} + +# }}} + +# {{{ AllDependedOnBy + +=head2 AllDependedOnBy + +Returns an array of RT::Ticket objects which (directly or indirectly) +depends on this ticket; takes an optional 'Type' argument in the param +hash, which will limit returned tickets to that type, as well as cause +tickets with that type to serve as 'leaf' nodes that stops the recursive +dependency search. + +=cut + +sub AllDependedOnBy { + my $self = shift; + my $dep = $self->DependedOnBy; + my %args = ( + Type => undef, + _found => {}, + _top => 1, + @_ + ); + + while (my $link = $dep->Next()) { + next unless ($link->BaseURI->IsLocal()); + next if $args{_found}{$link->BaseObj->Id}; + + if (!$args{Type}) { + $args{_found}{$link->BaseObj->Id} = $link->BaseObj; + $link->BaseObj->AllDependedOnBy( %args, _top => 0 ); + } + elsif ($link->BaseObj->Type eq $args{Type}) { + $args{_found}{$link->BaseObj->Id} = $link->BaseObj; + } + else { + $link->BaseObj->AllDependedOnBy( %args, _top => 0 ); + } + } + + if ($args{_top}) { + return map { $args{_found}{$_} } sort keys %{$args{_found}}; + } + else { + return 1; + } +} + +# }}} + +# {{{ DependsOn + +=head2 DependsOn + + This returns an RT::Links object which references all the tickets that this ticket depends on + +=cut + +sub DependsOn { + my $self = shift; + return ( $self->_Links( 'Base', 'DependsOn' ) ); +} + +# }}} + + + + +# {{{ sub _Links + +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"} ); +} + +# }}} + +# }}} + +# {{{ sub DeleteLink + +=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, + @_ + ); + + #check acls + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + $RT::Logger->debug("No permission to delete links\n"); + return ( 0, $self->loc('Permission Denied')) + + } + + #we want one of base and target. we don't care which + #but we only want _one_ + + my $direction; + my $remote_link; + + if ( $args{'Base'} and $args{'Target'} ) { + $RT::Logger->debug("$self ->_DeleteLink. got both Base and Target\n"); + return ( 0, $self->loc("Can't specifiy both base and target") ); + } + elsif ( $args{'Base'} ) { + $args{'Target'} = $self->URI(); + $remote_link = $args{'Base'}; + $direction = 'Target'; + } + elsif ( $args{'Target'} ) { + $args{'Base'} = $self->URI(); + $remote_link = $args{'Target'}; + $direction='Base'; + } + else { + $RT::Logger->debug("$self: Base or Target must be specified\n"); + return ( 0, $self->loc('Either base or target must be specified') ); + } + + my $link = new RT::Link( $self->CurrentUser ); + $RT::Logger->debug( "Trying to load link: " . $args{'Base'} . " " . $args{'Type'} . " " . $args{'Target'} . "\n" ); + + + $link->LoadByParams( Base=> $args{'Base'}, Type=> $args{'Type'}, Target=> $args{'Target'} ); + #it's a real link. + if ( $link->id ) { + + my $linkid = $link->id; + $link->Delete(); + + my $TransString = "Ticket $args{'Base'} no longer $args{Type} ticket $args{'Target'}."; + my $remote_uri = RT::URI->new( $RT::SystemUser ); + $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 + ); + + return ( $Trans, $self->loc("Link deleted ([_1])", $TransString)); + } + + #if it's not a link we can find + else { + $RT::Logger->debug("Couldn't find that link\n"); + return ( 0, $self->loc("Link not found") ); + } +} + +# }}} + +# {{{ sub AddLink + +=head2 AddLink + +Takes a paramhash of Type and one of Base or Target. Adds that link to this ticket. + + +=cut + +sub AddLink { + my $self = shift; + my %args = ( Target => '', + Base => '', + Type => '', + Silent => undef, + @_ ); + + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + + # Remote_link is the URI of the object that is not this ticket + my $remote_link; + my $direction; + + if ( $args{'Base'} and $args{'Target'} ) { + $RT::Logger->debug( +"$self tried to delete a link. both base and target were specified\n" ); + return ( 0, $self->loc("Can't specifiy both base and target") ); + } + elsif ( $args{'Base'} ) { + $args{'Target'} = $self->URI(); + $remote_link = $args{'Base'}; + $direction = 'Target'; + } + elsif ( $args{'Target'} ) { + $args{'Base'} = $self->URI(); + $remote_link = $args{'Target'}; + $direction='Base'; + } + else { + return ( 0, $self->loc('Either base or target must be specified') ); + } + + # If the base isn't a URI, make it a URI. + # If the target isn't a URI, make it a URI. + + # {{{ Check if the link already exists - we don't want duplicates + use RT::Link; + my $old_link = RT::Link->new( $self->CurrentUser ); + $old_link->LoadByParams( Base => $args{'Base'}, + Type => $args{'Type'}, + Target => $args{'Target'} ); + if ( $old_link->Id ) { + $RT::Logger->debug("$self Somebody tried to duplicate a link"); + return ( $old_link->id, $self->loc("Link already exists"), 0 ); + } + + # }}} + + # Storing the link in the DB. + my $link = RT::Link->new( $self->CurrentUser ); + my ($linkid) = $link->Create( Target => $args{Target}, + Base => $args{Base}, + Type => $args{Type} ); + + unless ($linkid) { + return ( 0, $self->loc("Link could not be created") ); + } + + my $TransString = + "Ticket $args{'Base'} $args{Type} ticket $args{'Target'}."; + + # Don't write the transaction if we're doing this on create + if ( $args{'Silent'} ) { + return ( 1, $self->loc( "Link created ([_1])", $TransString ) ); + } + else { + my $remote_uri = RT::URI->new( $RT::SystemUser ); + $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 ); + return ( $Trans, $self->loc( "Link created ([_1])", $TransString ) ); + } + +} + +# }}} + +# {{{ sub URI + +=head2 URI + +Returns this ticket's URI + +=cut + +sub URI { + my $self = shift; + my $uri = RT::URI::fsck_com_rt->new($self->CurrentUser); + return($uri->URIForObject($self)); +} + +# }}} + +# {{{ sub MergeInto + +=head2 MergeInto +MergeInto take the id of the ticket to merge this ticket into. + +=cut + +sub MergeInto { + my $self = shift; + my $MergeInto = shift; + + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + + # Load up the new ticket. + my $NewTicket = RT::Ticket->new($RT::SystemUser); + $NewTicket->Load($MergeInto); + + # make sure it exists. + unless ( defined $NewTicket->Id ) { + return ( 0, $self->loc("New ticket doesn't exist") ); + } + + # Make sure the current user can modify the new ticket. + unless ( $NewTicket->CurrentUserHasRight('ModifyTicket') ) { + $RT::Logger->debug("failed..."); + return ( 0, $self->loc("Permission Denied") ); + } + + $RT::Logger->debug( + "checking if the new ticket has the same id and effective id..."); + unless ( $NewTicket->id == $NewTicket->EffectiveId ) { + $RT::Logger->err( "$self trying to merge into " + . $NewTicket->Id + . " which is itself merged.\n" ); + return ( 0, + $self->loc("Can't merge into a merged ticket. You should never get this error") ); + } + + # We use EffectiveId here even though it duplicates information from + # the links table becasue of the massive performance hit we'd take + # by trying to do a seperate database query for merge info everytime + # loaded a ticket. + + #update this ticket's effective id to the new ticket's id. + my ( $id_val, $id_msg ) = $self->__Set( + Field => 'EffectiveId', + Value => $NewTicket->Id() + ); + + unless ($id_val) { + $RT::Logger->error( + "Couldn't set effective ID for " . $self->Id . ": $id_msg" ); + return ( 0, $self->loc("Merge failed. Couldn't set EffectiveId") ); + } + + my ( $status_val, $status_msg ) = $self->__Set( Field => 'Status', Value => 'resolved'); + + unless ($status_val) { + $RT::Logger->error( $self->loc("[_1] couldn't set status to resolved. RT's Database may be inconsistent.", $self) ); + } + + + # update all the links that point to that old ticket + my $old_links_to = RT::Links->new($self->CurrentUser); + $old_links_to->Limit(FIELD => 'Target', VALUE => $self->URI); + + while (my $link = $old_links_to->Next) { + if ($link->Base eq $NewTicket->URI) { + $link->Delete; + } else { + $link->SetTarget($NewTicket->URI); + } + + } + + my $old_links_from = RT::Links->new($self->CurrentUser); + $old_links_from->Limit(FIELD => 'Base', VALUE => $self->URI); + + while (my $link = $old_links_from->Next) { + if ($link->Target eq $NewTicket->URI) { + $link->Delete; + } else { + $link->SetBase($NewTicket->URI); + } + + } + + + #make a new link: this ticket is merged into that other ticket. + $self->AddLink( Type => 'MergedInto', Target => $NewTicket->Id()); + + #add all of this ticket's watchers to that ticket. + my $requestors = $self->Requestors->MembersObj; + while (my $watcher = $requestors->Next) { + $NewTicket->_AddWatcher( Type => 'Requestor', + Silent => 1, + PrincipalId => $watcher->MemberId); + } + + my $Ccs = $self->Cc->MembersObj; + while (my $watcher = $Ccs->Next) { + $NewTicket->_AddWatcher( Type => 'Cc', + Silent => 1, + PrincipalId => $watcher->MemberId); + } + + my $AdminCcs = $self->AdminCc->MembersObj; + while (my $watcher = $AdminCcs->Next) { + $NewTicket->_AddWatcher( Type => 'AdminCc', + Silent => 1, + PrincipalId => $watcher->MemberId); + } + + + #find all of the tickets that were merged into this ticket. + my $old_mergees = new RT::Tickets( $self->CurrentUser ); + $old_mergees->Limit( + FIELD => 'EffectiveId', + OPERATOR => '=', + VALUE => $self->Id + ); + + # update their EffectiveId fields to the new ticket's id + while ( my $ticket = $old_mergees->Next() ) { + my ( $val, $msg ) = $ticket->__Set( + Field => 'EffectiveId', + Value => $NewTicket->Id() + ); + } + + $NewTicket->_SetLastUpdated; + + return ( 1, $self->loc("Merge Successful") ); +} + +# }}} + +# }}} + +# {{{ Routines dealing with ownership + +# {{{ sub OwnerObj + +=head2 OwnerObj + +Takes nothing and returns an RT::User object of +this ticket's owner + +=cut + +sub OwnerObj { + my $self = shift; + + #If this gets ACLed, we lose on a rights check in User.pm and + #get deep recursion. if we need ACLs here, we need + #an equiv without ACLs + + my $owner = new RT::User( $self->CurrentUser ); + $owner->Load( $self->__Value('Owner') ); + + #Return the owner object + return ($owner); +} + +# }}} + +# {{{ sub OwnerAsString + +=head2 OwnerAsString + +Returns the owner's email address + +=cut + +sub OwnerAsString { + my $self = shift; + return ( $self->OwnerObj->EmailAddress ); + +} + +# }}} + +# {{{ sub SetOwner + +=head2 SetOwner + +Takes two arguments: + the Id or Name of the owner +and (optionally) the type of the SetOwner Transaction. It defaults +to 'Give'. 'Steal' is also a valid option. + +=begin testing + +my $root = RT::User->new($RT::SystemUser); +$root->Load('root'); +ok ($root->Id, "Loaded the root user"); +my $t = RT::Ticket->new($RT::SystemUser); +$t->Load(1); +$t->SetOwner('root'); +ok ($t->OwnerObj->Name eq 'root' , "Root owns the ticket"); +$t->Steal(); +ok ($t->OwnerObj->id eq $RT::SystemUser->id , "SystemUser owns the ticket"); +my $txns = RT::Transactions->new($RT::SystemUser); +$txns->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$txns->Limit(FIELD => 'Ticket', VALUE => '1'); +my $steal = $txns->First; +ok($steal->OldValue == $root->Id , "Stolen from root"); +ok($steal->NewValue == $RT::SystemUser->Id , "Stolen by the systemuser"); + +=end testing + +=cut + +sub SetOwner { + my $self = shift; + my $NewOwner = shift; + my $Type = shift || "Give"; + + # must have ModifyTicket rights + # or TakeTicket/StealTicket and $NewOwner is self + # see if it's a take + if ( $self->OwnerObj->Id == $RT::Nobody->Id ) { + unless ( $self->CurrentUserHasRight('ModifyTicket') + || $self->CurrentUserHasRight('TakeTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + } + + # see if it's a steal + elsif ( $self->OwnerObj->Id != $RT::Nobody->Id + && $self->OwnerObj->Id != $self->CurrentUser->id ) { + + unless ( $self->CurrentUserHasRight('ModifyTicket') + || $self->CurrentUserHasRight('StealTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + } + else { + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + } + my $NewOwnerObj = RT::User->new( $self->CurrentUser ); + my $OldOwnerObj = $self->OwnerObj; + + $NewOwnerObj->Load($NewOwner); + if ( !$NewOwnerObj->Id ) { + return ( 0, $self->loc("That user does not exist") ); + } + + #If thie ticket has an owner and it's not the current user + + if ( ( $Type ne 'Steal' ) + and ( $Type ne 'Force' ) + and #If we're not stealing + ( $self->OwnerObj->Id != $RT::Nobody->Id ) and #and the owner is set + ( $self->CurrentUser->Id ne $self->OwnerObj->Id() ) + ) { #and it's not us + return ( 0, + $self->loc( +"You can only reassign tickets that you own or that are unowned" ) ); + } + + #If we've specified a new owner and that user can't modify the ticket + elsif ( ( $NewOwnerObj->Id ) + and ( !$NewOwnerObj->HasRight( Right => 'OwnTicket', + Object => $self ) ) + ) { + return ( 0, $self->loc("That user may not own tickets in that queue") ); + } + + #If the ticket has an owner and it's the new owner, we don't need + #To do anything + elsif ( ( $self->OwnerObj ) + and ( $NewOwnerObj->Id eq $self->OwnerObj->Id ) ) { + return ( 0, $self->loc("That user already owns that ticket") ); + } + + $RT::Handle->BeginTransaction(); + + # Delete the owner in the owner group, then add a new one + # TODO: is this safe? it's not how we really want the API to work + # for most things, but it's fast. + my ( $del_id, $del_msg ) = $self->OwnerGroup->MembersObj->First->Delete(); + unless ($del_id) { + $RT::Handle->Rollback(); + return ( 0, $self->loc("Could not change owner. ") . $del_msg ); + } + + my ( $add_id, $add_msg ) = $self->OwnerGroup->_AddMember( + PrincipalId => $NewOwnerObj->PrincipalId, + InsideTransaction => 1 ); + unless ($add_id) { + $RT::Handle->Rollback(); + return ( 0, $self->loc("Could not change owner. ") . $add_msg ); + } + + # We call set twice with slightly different arguments, so + # as to not have an SQL transaction span two RT transactions + + my ( $val, $msg ) = $self->_Set( + Field => 'Owner', + RecordTransaction => 0, + Value => $NewOwnerObj->Id, + TimeTaken => 0, + TransactionType => $Type, + CheckACL => 0, # don't check acl + ); + + unless ($val) { + $RT::Handle->Rollback; + return ( 0, $self->loc("Could not change owner. ") . $msg ); + } + + $RT::Handle->Commit(); + + my ( $trans, $msg, undef ) = $self->_NewTransaction( + Type => $Type, + Field => 'Owner', + NewValue => $NewOwnerObj->Id, + OldValue => $OldOwnerObj->Id, + TimeTaken => 0 ); + + if ($trans) { + $msg = $self->loc( "Owner changed from [_1] to [_2]", + $OldOwnerObj->Name, $NewOwnerObj->Name ); + + # TODO: make sure the trans committed properly + } + return ( $trans, $msg ); + +} + +# }}} + +# {{{ sub Take + +=head2 Take + +A convenince method to set the ticket's owner to the current user + +=cut + +sub Take { + my $self = shift; + return ( $self->SetOwner( $self->CurrentUser->Id, 'Take' ) ); +} + +# }}} + +# {{{ sub Untake + +=head2 Untake + +Convenience method to set the owner to 'nobody' if the current user is the owner. + +=cut + +sub Untake { + my $self = shift; + return ( $self->SetOwner( $RT::Nobody->UserObj->Id, 'Untake' ) ); +} + +# }}} + +# {{{ sub Steal + +=head2 Steal + +A convenience method to change the owner of the current ticket to the +current user. Even if it's owned by another user. + +=cut + +sub Steal { + my $self = shift; + + if ( $self->IsOwner( $self->CurrentUser ) ) { + return ( 0, $self->loc("You already own this ticket") ); + } + else { + return ( $self->SetOwner( $self->CurrentUser->Id, 'Steal' ) ); + + } + +} + +# }}} + +# }}} + +# {{{ Routines dealing with status + +# {{{ sub ValidateStatus + +=head2 ValidateStatus STATUS + +Takes a string. Returns true if that status is a valid status for this ticket. +Returns false otherwise. + +=cut + +sub ValidateStatus { + my $self = shift; + my $status = shift; + + #Make sure the status passed in is valid + unless ( $self->QueueObj->IsValidStatus($status) ) { + return (undef); + } + + return (1); + +} + +# }}} + +# {{{ sub SetStatus + +=head2 SetStatus STATUS + +Set this ticket\'s status. STATUS can be one of: new, open, stalled, resolved, rejected or deleted. + +Alternatively, you can pass in a list of named parameters (Status => STATUS, Force => FORCE). If FORCE is true, ignore unresolved dependencies and force a status change. + +=begin testing + +my $tt = RT::Ticket->new($RT::SystemUser); +my ($id, $tid, $msg)= $tt->Create(Queue => 'general', + Subject => 'test'); +ok($id, $msg); +ok($tt->Status eq 'new', "New ticket is created as new"); + +($id, $msg) = $tt->SetStatus('open'); +ok($id, $msg); +ok ($msg =~ /open/i, "Status message is correct"); +($id, $msg) = $tt->SetStatus('resolved'); +ok($id, $msg); +ok ($msg =~ /resolved/i, "Status message is correct"); +($id, $msg) = $tt->SetStatus('resolved'); +ok(!$id,$msg); + + +=end testing + + +=cut + +sub SetStatus { + my $self = shift; + my %args; + + if (@_ == 1) { + $args{Status} = shift; + } + else { + %args = (@_); + } + + #Check ACL + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, $self->loc('Permission Denied') ); + } + + if (!$args{Force} && ($args{'Status'} eq 'resolved') && $self->HasUnresolvedDependencies) { + return (0, $self->loc('That ticket has unresolved dependencies')); + } + + my $now = RT::Date->new( $self->CurrentUser ); + $now->SetToNow(); + + #If we're changing the status from new, record that we've started + if ( ( $self->Status =~ /new/ ) && ( $args{Status} ne 'new' ) ) { + + #Set the Started time to "now" + $self->_Set( Field => 'Started', + Value => $now->ISO, + RecordTransaction => 0 ); + } + + if ( $args{Status} =~ /^(resolved|rejected|dead)$/ ) { + + #When we resolve a ticket, set the 'Resolved' attribute to now. + $self->_Set( Field => 'Resolved', + Value => $now->ISO, + RecordTransaction => 0 ); + } + + #Actually update the status + my ($val, $msg)= $self->_Set( Field => 'Status', + Value => $args{Status}, + TimeTaken => 0, + TransactionType => 'Status' ); + + return($val,$msg); +} + +# }}} + +# {{{ sub Kill + +=head2 Kill + +Takes no arguments. Marks this ticket for garbage collection + +=cut + +sub Kill { + my $self = shift; + $RT::Logger->crit("'Kill' is deprecated. use 'Delete' instead."); + return $self->Delete; +} + +sub Delete { + my $self = shift; + return ( $self->SetStatus('deleted') ); + + # TODO: garbage collection +} + +# }}} + +# {{{ sub Stall + +=head2 Stall + +Sets this ticket's status to stalled + +=cut + +sub Stall { + my $self = shift; + return ( $self->SetStatus('stalled') ); +} + +# }}} + +# {{{ sub Reject + +=head2 Reject + +Sets this ticket's status to rejected + +=cut + +sub Reject { + my $self = shift; + return ( $self->SetStatus('rejected') ); +} + +# }}} + +# {{{ sub Open + +=head2 Open + +Sets this ticket\'s status to Open + +=cut + +sub Open { + my $self = shift; + return ( $self->SetStatus('open') ); +} + +# }}} + +# {{{ sub Resolve + +=head2 Resolve + +Sets this ticket\'s status to Resolved + +=cut + +sub Resolve { + my $self = shift; + return ( $self->SetStatus('resolved') ); +} + +# }}} + +# }}} + +# {{{ Routines dealing with custom fields + + +# {{{ FirstCustomFieldValue + +=item FirstCustomFieldValue FIELD + +Return the content of the first value of CustomField FIELD for this ticket +Takes a field id or name + +=cut + +sub FirstCustomFieldValue { + my $self = shift; + my $field = shift; + my $values = $self->CustomFieldValues($field); + if ($values->First) { + return $values->First->Content; + } else { + return undef; + } + +} + + + +# {{{ CustomFieldValues + +=item CustomFieldValues FIELD + +Return a TicketCustomFieldValues object of all values of CustomField FIELD for this ticket. +Takes a field id or name. + + +=cut + +sub CustomFieldValues { + my $self = shift; + my $field = shift; + + my $cf = RT::CustomField->new($self->CurrentUser); + + if ($field =~ /^\d+$/) { + $cf->LoadById($field); + } else { + $cf->LoadByNameAndQueue(Name => $field, Queue => $self->QueueObj->Id); + } + my $cf_values = RT::TicketCustomFieldValues->new( $self->CurrentUser ); + $cf_values->LimitToCustomField($cf->id); + $cf_values->LimitToTicket($self->Id()); + + # @values is a CustomFieldValues object; + return ($cf_values); +} + +# }}} + +# {{{ AddCustomFieldValue + +=item AddCustomFieldValue { Field => FIELD, Value => VALUE } + +VALUE can either be a CustomFieldValue object or a string. +FIELD can be a CustomField object OR a CustomField ID. + + +Adds VALUE as a value of CustomField FIELD. If this is a single-value custom field, +deletes the old value. +If VALUE isn't a valid value for the custom field, returns +(0, 'Error message' ) otherwise, returns (1, 'Success Message') + +=cut + +sub AddCustomFieldValue { + my $self = shift; + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + $self->_AddCustomFieldValue(@_); +} + +sub _AddCustomFieldValue { + my $self = shift; + my %args = ( + Field => undef, + Value => undef, + RecordTransaction => 1, + @_ + ); + + my $cf = RT::CustomField->new( $self->CurrentUser ); + if ( UNIVERSAL::isa( $args{'Field'}, "RT::CustomField" ) ) { + $cf->Load( $args{'Field'}->id ); + } + else { + $cf->Load( $args{'Field'} ); + } + + unless ( $cf->Id ) { + return ( 0, $self->loc("Custom field [_1] not found", $args{'Field'}) ); + } + + # Load up a TicketCustomFieldValues object for this custom field and this ticket + my $values = $cf->ValuesForTicket( $self->id ); + + unless ( $cf->ValidateValue( $args{'Value'} ) ) { + return ( 0, $self->loc("Invalid value for custom field") ); + } + + # If the custom field only accepts a single value, delete the existing + # value and record a "changed from foo to bar" transaction + if ( $cf->SingleValue ) { + + # We need to whack any old values here. In most cases, the custom field should + # only have one value to delete. In the pathalogical case, this custom field + # used to be a multiple and we have many values to whack.... + my $cf_values = $values->Count; + + if ( $cf_values > 1 ) { + my $i = 0; #We want to delete all but the last one, so we can then + # execute the same code to "change" the value from old to new + while ( my $value = $values->Next ) { + $i++; + if ( $i < $cf_values ) { + my $old_value = $value->Content; + my ($val, $msg) = $cf->DeleteValueForTicket(Ticket => $self->Id, Content => $value->Content); + unless ($val) { + return (0,$msg); + } + my ( $TransactionId, $Msg, $TransactionObj ) = + $self->_NewTransaction( + Type => 'CustomField', + Field => $cf->Id, + OldValue => $old_value + ); + } + } + } + + my $old_value; + if (my $value = $cf->ValuesForTicket( $self->Id )->First) { + $old_value = $value->Content(); + return (1) if $old_value eq $args{'Value'}; + } + + my ( $new_value_id, $value_msg ) = $cf->AddValueForTicket( + Ticket => $self->Id, + Content => $args{'Value'} + ); + + unless ($new_value_id) { + return ( 0, + $self->loc("Could not add new custom field value for ticket. [_1] ", + ,$value_msg) ); + } + + my $new_value = RT::TicketCustomFieldValue->new( $self->CurrentUser ); + $new_value->Load($new_value_id); + + # now that adding the new value was successful, delete the old one + if ($old_value) { + my ($val, $msg) = $cf->DeleteValueForTicket(Ticket => $self->Id, Content => $old_value); + unless ($val) { + return (0,$msg); + } + } + + if ($args{'RecordTransaction'}) { + my ( $TransactionId, $Msg, $TransactionObj ) = $self->_NewTransaction( + Type => 'CustomField', + Field => $cf->Id, + OldValue => $old_value, + NewValue => $new_value->Content + ); + } + + if ( $old_value eq '' ) { + return ( 1, $self->loc("[_1] [_2] added", $cf->Name, $new_value->Content) ); + } + elsif ( $new_value->Content eq '' ) { + return ( 1, $self->loc("[_1] [_2] deleted", $cf->Name, $old_value) ); + } + else { + return ( 1, $self->loc("[_1] [_2] changed to [_3]", $cf->Name, $old_value, $new_value->Content ) ); + } + + } + + # otherwise, just add a new value and record "new value added" + else { + my ( $new_value_id ) = $cf->AddValueForTicket( + Ticket => $self->Id, + Content => $args{'Value'} + ); + + unless ($new_value_id) { + return ( 0, + $self->loc("Could not add new custom field value for ticket. ")); + } + if ( $args{'RecordTransaction'} ) { + my ( $TransactionId, $Msg, $TransactionObj ) = $self->_NewTransaction( + Type => 'CustomField', + Field => $cf->Id, + NewValue => $args{'Value'} + ); + unless ($TransactionId) { + return ( 0, + $self->loc( "Couldn't create a transaction: [_1]", $Msg ) ); + } + } + return ( 1, $self->loc("[_1] added as a value for [_2]",$args{'Value'}, $cf->Name)); + } + +} + +# }}} + +# {{{ DeleteCustomFieldValue + +=item DeleteCustomFieldValue { Field => FIELD, Value => VALUE } + +Deletes VALUE as a value of CustomField FIELD. + +VALUE can be a string, a CustomFieldValue or a TicketCustomFieldValue. + +If VALUE isn't a valid value for the custom field, returns +(0, 'Error message' ) otherwise, returns (1, 'Success Message') + +=cut + +sub DeleteCustomFieldValue { + my $self = shift; + my %args = ( + Field => undef, + Value => undef, + @_); + + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + my $cf = RT::CustomField->new( $self->CurrentUser ); + if ( UNIVERSAL::isa( $args{'Field'}, "RT::CustomField" ) ) { + $cf->LoadById( $args{'Field'}->id ); + } + else { + $cf->LoadById( $args{'Field'} ); + } + + unless ( $cf->Id ) { + return ( 0, $self->loc("Custom field not found") ); + } + + + my ($val, $msg) = $cf->DeleteValueForTicket(Ticket => $self->Id, Content => $args{'Value'}); + unless ($val) { + return (0,$msg); + } + my ( $TransactionId, $Msg, $TransactionObj ) = $self->_NewTransaction( + Type => 'CustomField', + Field => $cf->Id, + OldValue => $args{'Value'} + ); + unless($TransactionId) { + return(0, $self->loc("Couldn't create a transaction: [_1]", $Msg)); + } + + return($TransactionId, $self->loc("[_1] is no longer a value for custom field [_2]", $args{'Value'}, $cf->Name)); +} + +# }}} + +# }}} + +# {{{ Actions + Routines dealing with transactions + +# {{{ sub SetTold and _SetTold + +=head2 SetTold ISO [TIMETAKEN] + +Updates the told and records a transaction + +=cut + +sub SetTold { + my $self = shift; + my $told; + $told = shift if (@_); + my $timetaken = shift || 0; + + unless ( $self->CurrentUserHasRight('ModifyTicket') ) { + return ( 0, $self->loc("Permission Denied") ); + } + + my $datetold = new RT::Date( $self->CurrentUser ); + if ($told) { + $datetold->Set( Format => 'iso', + Value => $told ); + } + else { + $datetold->SetToNow(); + } + + return ( $self->_Set( Field => 'Told', + Value => $datetold->ISO, + TimeTaken => $timetaken, + TransactionType => 'Told' ) ); +} + +=head2 _SetTold + +Updates the told without a transaction or acl check. Useful when we're sending replies. + +=cut + +sub _SetTold { + my $self = shift; + + my $now = new RT::Date( $self->CurrentUser ); + $now->SetToNow(); + + #use __Set to get no ACLs ;) + return ( $self->__Set( Field => 'Told', + Value => $now->ISO ) ); +} + +# }}} + +# {{{ sub Transactions + +=head2 Transactions + + Returns an RT::Transactions object of all transactions on this ticket + +=cut + +sub Transactions { + my $self = shift; + + use RT::Transactions; + my $transactions = RT::Transactions->new( $self->CurrentUser ); + + #If the user has no rights, return an empty object + if ( $self->CurrentUserHasRight('ShowTicket') ) { + my $tickets = $transactions->NewAlias('Tickets'); + $transactions->Join( + ALIAS1 => 'main', + FIELD1 => 'Ticket', + ALIAS2 => $tickets, + FIELD2 => 'id' + ); + $transactions->Limit( + ALIAS => $tickets, + FIELD => 'EffectiveId', + VALUE => $self->id() + ); + + # if the user may not see comments do not return them + unless ( $self->CurrentUserHasRight('ShowTicketComments') ) { + $transactions->Limit( + FIELD => 'Type', + OPERATOR => '!=', + VALUE => "Comment" + ); + } + } + + return ($transactions); +} + +# }}} + +# {{{ sub _NewTransaction + +sub _NewTransaction { + my $self = shift; + my %args = ( + TimeTaken => 0, + Type => undef, + OldValue => undef, + NewValue => undef, + Data => undef, + Field => undef, + MIMEObj => undef, + @_ + ); + + require RT::Transaction; + my $trans = new RT::Transaction( $self->CurrentUser ); + my ( $transaction, $msg ) = $trans->Create( + Ticket => $self->Id, + TimeTaken => $args{'TimeTaken'}, + Type => $args{'Type'}, + Data => $args{'Data'}, + Field => $args{'Field'}, + NewValue => $args{'NewValue'}, + OldValue => $args{'OldValue'}, + MIMEObj => $args{'MIMEObj'} + ); + + + $self->Load($self->Id); + + $RT::Logger->warning($msg) unless $transaction; + + $self->_SetLastUpdated; + + if ( defined $args{'TimeTaken'} ) { + $self->_UpdateTimeTaken( $args{'TimeTaken'} ); + } + return ( $transaction, $msg, $trans ); +} + +# }}} + +# }}} + +# {{{ PRIVATE UTILITY METHODS. Mostly needed so Ticket can be a DBIx::Record + +# {{{ sub _ClassAccessible + +sub _ClassAccessible { + { + EffectiveId => { 'read' => 1, 'write' => 1, 'public' => 1 }, + Queue => { 'read' => 1, 'write' => 1 }, + Requestors => { 'read' => 1, 'write' => 1 }, + Owner => { 'read' => 1, 'write' => 1 }, + Subject => { 'read' => 1, 'write' => 1 }, + InitialPriority => { 'read' => 1, 'write' => 1 }, + FinalPriority => { 'read' => 1, 'write' => 1 }, + Priority => { 'read' => 1, 'write' => 1 }, + Status => { 'read' => 1, 'write' => 1 }, + TimeEstimated => { 'read' => 1, 'write' => 1 }, + TimeWorked => { 'read' => 1, 'write' => 1 }, + TimeLeft => { 'read' => 1, 'write' => 1 }, + Created => { 'read' => 1, 'auto' => 1 }, + Creator => { 'read' => 1, 'auto' => 1 }, + Told => { 'read' => 1, 'write' => 1 }, + Resolved => { 'read' => 1 }, + Type => { 'read' => 1 }, + Starts => { 'read' => 1, 'write' => 1 }, + Started => { 'read' => 1, 'write' => 1 }, + Due => { 'read' => 1, 'write' => 1 }, + Creator => { 'read' => 1, 'auto' => 1 }, + Created => { 'read' => 1, 'auto' => 1 }, + LastUpdatedBy => { 'read' => 1, 'auto' => 1 }, + LastUpdated => { 'read' => 1, 'auto' => 1 } + }; + +} + +# }}} + +# {{{ sub _Set + +sub _Set { + my $self = shift; + + my %args = ( Field => undef, + Value => undef, + TimeTaken => 0, + RecordTransaction => 1, + UpdateTicket => 1, + CheckACL => 1, + TransactionType => 'Set', + @_ ); + + if ($args{'CheckACL'}) { + unless ( $self->CurrentUserHasRight('ModifyTicket')) { + return ( 0, $self->loc("Permission Denied")); + } + } + + unless ($args{'UpdateTicket'} || $args{'RecordTransaction'}) { + $RT::Logger->error("Ticket->_Set called without a mandate to record an update or update the ticket"); + return(0, $self->loc("Internal Error")); + } + + #if the user is trying to modify the record + + #Take care of the old value we really don't want to get in an ACL loop. + # so ask the super::_Value + my $Old = $self->SUPER::_Value("$args{'Field'}"); + + my ($ret, $msg); + if ( $args{'UpdateTicket'} ) { + + #Set the new value + ( $ret, $msg ) = $self->SUPER::_Set( Field => $args{'Field'}, + Value => $args{'Value'} ); + + #If we can't actually set the field to the value, don't record + # a transaction. instead, get out of here. + if ( $ret == 0 ) { return ( 0, $msg ); } + } + + if ( $args{'RecordTransaction'} == 1 ) { + + my ( $Trans, $Msg, $TransObj ) = $self->_NewTransaction( + Type => $args{'TransactionType'}, + Field => $args{'Field'}, + NewValue => $args{'Value'}, + OldValue => $Old, + TimeTaken => $args{'TimeTaken'}, + ); + return ( $Trans, scalar $TransObj->Description ); + } + else { + return ( $ret, $msg ); + } +} + +# }}} + +# {{{ sub _Value + +=head2 _Value + +Takes the name of a table column. +Returns its value as a string, if the user passes an ACL check + +=cut + +sub _Value { + + my $self = shift; + my $field = shift; + + #if the field is public, return it. + if ( $self->_Accessible( $field, 'public' ) ) { + + #$RT::Logger->debug("Skipping ACL check for $field\n"); + return ( $self->SUPER::_Value($field) ); + + } + + #If the current user doesn't have ACLs, don't let em at it. + + unless ( $self->CurrentUserHasRight('ShowTicket') ) { + return (undef); + } + return ( $self->SUPER::_Value($field) ); + +} + +# }}} + +# {{{ sub _UpdateTimeTaken + +=head2 _UpdateTimeTaken + +This routine will increment the timeworked counter. it should +only be called from _NewTransaction + +=cut + +sub _UpdateTimeTaken { + my $self = shift; + my $Minutes = shift; + my ($Total); + + $Total = $self->SUPER::_Value("TimeWorked"); + $Total = ( $Total || 0 ) + ( $Minutes || 0 ); + $self->SUPER::_Set( + Field => "TimeWorked", + Value => $Total + ); + + return ($Total); +} + +# }}} + +# }}} + +# {{{ Routines dealing with ACCESS CONTROL + +# {{{ sub CurrentUserHasRight + +=head2 CurrentUserHasRight + + Takes the textual name of a Ticket scoped right (from RT::ACE) and returns +1 if the user has that right. It returns 0 if the user doesn't have that right. + +=cut + +sub CurrentUserHasRight { + my $self = shift; + my $right = shift; + + return ( + $self->HasRight( + Principal => $self->CurrentUser->UserObj(), + Right => "$right" + ) + ); + +} + +# }}} + +# {{{ sub HasRight + +=head2 HasRight + + Takes a paramhash with the attributes 'Right' and 'Principal' + 'Right' is a ticket-scoped textual right from RT::ACE + 'Principal' is an RT::User object + + Returns 1 if the principal has the right. Returns undef if not. + +=cut + +sub HasRight { + my $self = shift; + my %args = ( + Right => undef, + Principal => undef, + @_ + ); + + unless ( ( defined $args{'Principal'} ) and ( ref( $args{'Principal'} ) ) ) + { + $RT::Logger->warning("Principal attrib undefined for Ticket::HasRight"); + } + + return ( + $args{'Principal'}->HasRight( + Object => $self, + Right => $args{'Right'} + ) + ); +} + +# }}} + +# }}} + +1; + +=head1 AUTHOR + +Jesse Vincent, jesse@bestpractical.com + +=head1 SEE ALSO + +RT + +=cut + diff --git a/rt/lib/RT/Tickets_Overlay.pm b/rt/lib/RT/Tickets_Overlay.pm new file mode 100644 index 000000000..d8a1ac803 --- /dev/null +++ b/rt/lib/RT/Tickets_Overlay.pm @@ -0,0 +1,2055 @@ +# 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. +# +# 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 +# Major Changes: + +# - Decimated ProcessRestrictions and broke it into multiple +# functions joined by a LUT +# - Semi-Generic SQL stuff moved to another file + +# Known Issues: FIXME! + +# - ClearRestrictions and Reinitialization is messy and unclear. The +# only good way to do it is to create a new RT::Tickets object. + +=head1 NAME + + RT::Tickets - A collection of Ticket objects + + +=head1 SYNOPSIS + + use RT::Tickets; + my $tickets = new RT::Tickets($CurrentUser); + +=head1 DESCRIPTION + + A collection of RT::Tickets. + +=head1 METHODS + +=begin testing + +ok (require RT::Tickets); + +=end testing + +=cut +use strict; +no warnings qw(redefine); +use vars qw(@SORTFIELDS); + + +# Configuration Tables: + +# FIELDS is a mapping of searchable Field name, to Type, and other +# metadata. + +my %FIELDS = + ( Status => ['ENUM'], + Queue => ['ENUM' => 'Queue',], + Type => ['ENUM',], + Creator => ['ENUM' => 'User',], + LastUpdatedBy => ['ENUM' => 'User',], + Owner => ['ENUM' => 'User',], + EffectiveId => ['INT',], + id => ['INT',], + InitialPriority => ['INT',], + FinalPriority => ['INT',], + Priority => ['INT',], + TimeLeft => ['INT',], + TimeWorked => ['INT',], + MemberOf => ['LINK' => To => 'MemberOf', ], + DependsOn => ['LINK' => To => 'DependsOn',], + RefersTo => ['LINK' => To => 'RefersTo',], + HasMember => ['LINK' => From => 'MemberOf',], + DependentOn => ['LINK' => From => 'DependsOn',], + ReferredTo => ['LINK' => From => 'RefersTo',], +# HasDepender => ['LINK',], +# RelatedTo => ['LINK',], + Told => ['DATE' => 'Told',], + Starts => ['DATE' => 'Starts',], + Started => ['DATE' => 'Started',], + Due => ['DATE' => 'Due',], + Resolved => ['DATE' => 'Resolved',], + LastUpdated => ['DATE' => 'LastUpdated',], + Created => ['DATE' => 'Created',], + Subject => ['STRING',], + Type => ['STRING',], + Content => ['TRANSFIELD',], + ContentType => ['TRANSFIELD',], + Filename => ['TRANSFIELD',], + TransactionDate => ['TRANSDATE',], + Requestor => ['WATCHERFIELD' => 'Requestor',], + CC => ['WATCHERFIELD' => 'Cc',], + AdminCC => ['WATCHERFIELD' => 'AdminCC',], + Watcher => ['WATCHERFIELD'], + LinkedTo => ['LINKFIELD',], + CustomFieldValue =>['CUSTOMFIELD',], + CF => ['CUSTOMFIELD',], + ); + +# Mapping of Field Type to Function +my %dispatch = + ( ENUM => \&_EnumLimit, + INT => \&_IntLimit, + LINK => \&_LinkLimit, + DATE => \&_DateLimit, + STRING => \&_StringLimit, + TRANSFIELD => \&_TransLimit, + TRANSDATE => \&_TransDateLimit, + WATCHERFIELD => \&_WatcherLimit, + LINKFIELD => \&_LinkFieldLimit, + CUSTOMFIELD => \&_CustomFieldLimit, + ); + +# Default EntryAggregator per type +my %DefaultEA = ( + INT => 'AND', + ENUM => { '=' => 'OR', + '!='=> 'AND' + }, + DATE => 'AND', + STRING => { '=' => 'OR', + '!='=> 'AND', + 'LIKE'=> 'AND', + 'NOT LIKE' => 'AND' + }, + TRANSFIELD => 'AND', + TRANSDATE => 'AND', + LINKFIELD => 'AND', + TARGET => 'AND', + BASE => 'AND', + WATCHERFIELD => { '=' => 'OR', + '!='=> 'AND', + 'LIKE'=> 'OR', + 'NOT LIKE' => 'AND' + }, + + CUSTOMFIELD => 'OR', + ); + + +# Helper functions for passing the above lexically scoped tables above +# into Tickets_Overlay_SQL. +sub FIELDS { return \%FIELDS } +sub dispatch { return \%dispatch } + +# Bring in the clowns. +require RT::Tickets_Overlay_SQL; + +# {{{ sub SortFields + +@SORTFIELDS = qw(id Status + Queue Subject + Owner Created Due Starts Started + Told + Resolved LastUpdated Priority TimeWorked TimeLeft); + +=head2 SortFields + +Returns the list of fields that lists of tickets can easily be sorted by + +=cut + +sub SortFields { + my $self = shift; + return(@SORTFIELDS); +} + + +# }}} + + +# BEGIN SQL STUFF ********************************* + +=head1 Limit Helper Routines + +These routines are the targets of a dispatch table depending on the +type of field. They all share the same signature: + + my ($self,$field,$op,$value,@rest) = @_; + +The values in @rest should be suitable for passing directly to +DBIx::SearchBuilder::Limit. + +Essentially they are an expanded/broken out (and much simplified) +version of what ProcessRestrictions used to do. They're also much +more clearly delineated by the TYPE of field being processed. + +=head2 _EnumLimit + +Handle Fields which are limited to certain values, and potentially +need to be looked up from another class. + +This subroutine actually handles two different kinds of fields. For +some the user is responsible for limiting the values. (i.e. Status, +Type). + +For others, the value specified by the user will be looked by via +specified class. + +Meta Data: + name of class to lookup in (Optional) + +=cut + +sub _EnumLimit { + my ($sb,$field,$op,$value,@rest) = @_; + + # SQL::Statement changes != to <>. (Can we remove this now?) + $op = "!=" if $op eq "<>"; + + die "Invalid Operation: $op for $field" + unless $op eq "=" or $op eq "!="; + + my $meta = $FIELDS{$field}; + if (defined $meta->[1]) { + my $class = "RT::" . $meta->[1]; + my $o = $class->new($sb->CurrentUser); + $o->Load( $value ); + $value = $o->Id; + } + $sb->_SQLLimit( FIELD => $field,, + VALUE => $value, + OPERATOR => $op, + @rest, + ); +} + +=head2 _IntLimit + +Handle fields where the values are limited to integers. (For example, +Priority, TimeWorked.) + +Meta Data: + None + +=cut + +sub _IntLimit { + my ($sb,$field,$op,$value,@rest) = @_; + + die "Invalid Operator $op for $field" + unless $op =~ /^(=|!=|>|<|>=|<=)$/; + + $sb->_SQLLimit( + FIELD => $field, + VALUE => $value, + OPERATOR => $op, + @rest, + ); +} + + +=head2 _LinkLimit + +Handle fields which deal with links between tickets. (MemberOf, DependsOn) + +Meta Data: + 1: Direction (From,To) + 2: Relationship Type (MemberOf, DependsOn,RefersTo) + +=cut + +sub _LinkLimit { + my ($sb,$field,$op,$value,@rest) = @_; + + die "Op must be =" + unless $op eq "="; + + my $meta = $FIELDS{$field}; + die "Incorrect Meta Data for $field" + unless (defined $meta->[1] and defined $meta->[2]); + + my $LinkAlias = $sb->NewAlias ('Links'); + + $sb->_OpenParen(); + + $sb->_SQLLimit( + ALIAS => $LinkAlias, + FIELD => 'Type', + OPERATOR => '=', + VALUE => $meta->[2], + @rest, + ); + + if ($meta->[1] eq "To") { + my $matchfield = ( $value =~ /^(\d+)$/ ? "LocalTarget" : "Target" ); + + $sb->_SQLLimit( + ALIAS => $LinkAlias, + ENTRYAGGREGATOR => 'AND', + FIELD => $matchfield, + OPERATOR => '=', + VALUE => $value , + ); + + #If we're searching on target, join the base to ticket.id + $sb->Join( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'}, + ALIAS2 => $LinkAlias, FIELD2 => 'LocalBase'); + + } elsif ( $meta->[1] eq "From" ) { + my $matchfield = ( $value =~ /^(\d+)$/ ? "LocalBase" : "Base" ); + + $sb->_SQLLimit( + ALIAS => $LinkAlias, + ENTRYAGGREGATOR => 'AND', + FIELD => $matchfield, + OPERATOR => '=', + VALUE => $value , + ); + + #If we're searching on base, join the target to ticket.id + $sb->Join( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'}, + ALIAS2 => $LinkAlias, FIELD2 => 'LocalTarget'); + + } else { + die "Invalid link direction '$meta->[1]' for $field\n"; + } + + $sb->_CloseParen(); + +} + +=head2 _DateLimit + +Handle date fields. (Created, LastTold..) + +Meta Data: + 1: type of relationship. (Probably not necessary.) + +=cut + +sub _DateLimit { + my ($sb,$field,$op,$value,@rest) = @_; + + die "Invalid Date Op: $op" + unless $op =~ /^(=|!=|>|<|>=|<=)$/; + + my $meta = $FIELDS{$field}; + die "Incorrect Meta Data for $field" + unless (defined $meta->[1]); + + require Time::ParseDate; + use POSIX 'strftime'; + + my $time = Time::ParseDate::parsedate( $value, + UK => $RT::DateDayBeforeMonth, + PREFER_PAST => $RT::AmbiguousDayInPast, + PREFER_FUTURE => !($RT::AmbiguousDayInPast)); + $value = strftime("%Y-%m-%d %H:%M",localtime($time)); + + $sb->_SQLLimit( + FIELD => $meta->[1], + OPERATOR => $op, + VALUE => $value, + @rest, + ); +} + +=head2 _StringLimit + +Handle simple fields which are just strings. (Subject,Type) + +Meta Data: + None + +=cut + +sub _StringLimit { + my ($sb,$field,$op,$value,@rest) = @_; + + # FIXME: + # Valid Operators: + # =, !=, LIKE, NOT LIKE + + $sb->_SQLLimit( + FIELD => $field, + OPERATOR => $op, + VALUE => $value, + CASESENSITIVE => 0, + @rest, + ); +} + +=head2 _TransDateLimit + +Handle fields limiting based on Transaction Date. + +The inpupt value must be in a format parseable by Time::ParseDate + +Meta Data: + None + +=cut + +sub _TransDateLimit { + my ($sb,$field,$op,$value,@rest) = @_; + + # See the comments for TransLimit, they apply here too + + $sb->{_sql_transalias} = $sb->NewAlias ('Transactions') + unless defined $sb->{_sql_transalias}; + $sb->{_sql_trattachalias} = $sb->NewAlias ('Attachments') + unless defined $sb->{_sql_trattachalias}; + + $sb->_OpenParen; + + # Join Transactions To Attachments + $sb->Join( ALIAS1 => $sb->{_sql_trattachalias}, FIELD1 => 'TransactionId', + ALIAS2 => $sb->{_sql_transalias}, FIELD2 => 'id'); + + # Join Transactions to Tickets + $sb->Join( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'}, # UGH! + ALIAS2 => $sb->{_sql_transalias}, FIELD2 => 'Ticket'); + + my $d = new RT::Date( $sb->CurrentUser ); + $d->Set($value); + $value = $d->ISO; + + #Search for the right field + $sb->_SQLLimit(ALIAS => $sb->{_sql_trattachalias}, + FIELD => 'Created', + OPERATOR => $op, + VALUE => $value, + CASESENSITIVE => 0, + @rest + ); + + $sb->_CloseParen; +} + +=head2 _TransLimit + +Limit based on the Content of a transaction or the ContentType. + +Meta Data: + none + +=cut + +sub _TransLimit { + # Content, ContentType, Filename + + # If only this was this simple. We've got to do something + # complicated here: + + #Basically, we want to make sure that the limits apply to + #the same attachment, rather than just another attachment + #for the same ticket, no matter how many clauses we lump + #on. We put them in TicketAliases so that they get nuked + #when we redo the join. + + # In the SQL, we might have + # (( Content = foo ) or ( Content = bar AND Content = baz )) + # The AND group should share the same Alias. + + # Actually, maybe it doesn't matter. We use the same alias and it + # works itself out? (er.. different.) + + # Steal more from _ProcessRestrictions + + # FIXME: Maybe look at the previous FooLimit call, and if it was a + # TransLimit and EntryAggregator == AND, reuse the Aliases? + + # Or better - store the aliases on a per subclause basis - since + # those are going to be the things we want to relate to each other, + # anyway. + + # maybe we should not allow certain kinds of aggregation of these + # clauses and do a psuedo regex instead? - the problem is getting + # them all into the same subclause when you have (A op B op C) - the + # way they get parsed in the tree they're in different subclauses. + + my ($sb,$field,$op,$value,@rest) = @_; + + $sb->{_sql_transalias} = $sb->NewAlias ('Transactions') + unless defined $sb->{_sql_transalias}; + $sb->{_sql_trattachalias} = $sb->NewAlias ('Attachments') + unless defined $sb->{_sql_trattachalias}; + + $sb->_OpenParen; + + # Join Transactions To Attachments + $sb->Join( ALIAS1 => $sb->{_sql_trattachalias}, FIELD1 => 'TransactionId', + ALIAS2 => $sb->{_sql_transalias}, FIELD2 => 'id'); + + # Join Transactions to Tickets + $sb->Join( ALIAS1 => 'main', FIELD1 => $sb->{'primary_key'}, # UGH! + ALIAS2 => $sb->{_sql_transalias}, FIELD2 => 'Ticket'); + + #Search for the right field + $sb->_SQLLimit(ALIAS => $sb->{_sql_trattachalias}, + FIELD => $field, + OPERATOR => $op, + VALUE => $value, + CASESENSITIVE => 0, + @rest + ); + + $sb->_CloseParen; + +} + +=head2 _WatcherLimit + +Handle watcher limits. (Requestor, CC, etc..) + +Meta Data: + 1: Field to query on + +=cut + +sub _WatcherLimit { + my ($self,$field,$op,$value,@rest) = @_; + my %rest = @rest; + + $self->_OpenParen; + + my $groups = $self->NewAlias('Groups'); + my $group_princs = $self->NewAlias('Principals'); + my $groupmembers = $self->NewAlias('CachedGroupMembers'); + my $member_princs = $self->NewAlias('Principals'); + my $users = $self->NewAlias('Users'); + + + #Find user watchers +# my $subclause = undef; +# my $aggregator = 'OR'; +# if ($restriction->{'OPERATOR'} =~ /!|NOT/i ){ +# $subclause = 'AndEmailIsNot'; +# $aggregator = 'AND'; +# } + + + $self->_SQLLimit(ALIAS => $users, + FIELD => $rest{SUBKEY} || 'EmailAddress', + VALUE => $value, + OPERATOR => $op, + CASESENSITIVE => 0, + @rest, + ); + + # {{{ Tie to groups for tickets we care about + $self->_SQLLimit(ALIAS => $groups, + FIELD => 'Domain', + VALUE => 'RT::Ticket-Role', + ENTRYAGGREGATOR => 'AND'); + + $self->Join(ALIAS1 => $groups, FIELD1 => 'Instance', + ALIAS2 => 'main', FIELD2 => 'id'); + # }}} + + # If we care about which sort of watcher + my $meta = $FIELDS{$field}; + my $type = ( defined $meta->[1] ? $meta->[1] : undef ); + + if ( $type ) { + $self->_SQLLimit(ALIAS => $groups, + FIELD => 'Type', + VALUE => $type, + ENTRYAGGREGATOR => 'AND'); + } + + $self->Join (ALIAS1 => $groups, FIELD1 => 'id', + ALIAS2 => $group_princs, FIELD2 => 'ObjectId'); + $self->_SQLLimit(ALIAS => $group_princs, + FIELD => 'PrincipalType', + VALUE => 'Group', + ENTRYAGGREGATOR => 'AND'); + $self->Join( ALIAS1 => $group_princs, FIELD1 => 'id', + ALIAS2 => $groupmembers, FIELD2 => 'GroupId'); + + $self->Join( ALIAS1 => $groupmembers, FIELD1 => 'MemberId', + ALIAS2 => $member_princs, FIELD2 => 'id'); + $self->Join (ALIAS1 => $member_princs, FIELD1 => 'ObjectId', + ALIAS2 => $users, FIELD2 => 'id'); + + $self->_CloseParen; + +} + +sub _LinkFieldLimit { + my $restriction; + my $self; + my $LinkAlias; + my %args; + if ($restriction->{'TYPE'}) { + $self->SUPER::Limit(ALIAS => $LinkAlias, + ENTRYAGGREGATOR => 'AND', + FIELD => 'Type', + OPERATOR => '=', + VALUE => $restriction->{'TYPE'} ); + } + + #If we're trying to limit it to things that are target of + if ($restriction->{'TARGET'}) { + # If the TARGET is an integer that means that we want to look at + # the LocalTarget field. otherwise, we want to look at the + # "Target" field + my ($matchfield); + if ($restriction->{'TARGET'} =~/^(\d+)$/) { + $matchfield = "LocalTarget"; + } else { + $matchfield = "Target"; + } + $self->SUPER::Limit(ALIAS => $LinkAlias, + ENTRYAGGREGATOR => 'AND', + FIELD => $matchfield, + OPERATOR => '=', + VALUE => $restriction->{'TARGET'} ); + #If we're searching on target, join the base to ticket.id + $self->Join( ALIAS1 => 'main', FIELD1 => $self->{'primary_key'}, + ALIAS2 => $LinkAlias, + FIELD2 => 'LocalBase'); + } + #If we're trying to limit it to things that are base of + elsif ($restriction->{'BASE'}) { + # If we're trying to match a numeric link, we want to look at + # LocalBase, otherwise we want to look at "Base" + my ($matchfield); + if ($restriction->{'BASE'} =~/^(\d+)$/) { + $matchfield = "LocalBase"; + } else { + $matchfield = "Base"; + } + + $self->SUPER::Limit(ALIAS => $LinkAlias, + ENTRYAGGREGATOR => 'AND', + FIELD => $matchfield, + OPERATOR => '=', + VALUE => $restriction->{'BASE'} ); + #If we're searching on base, join the target to ticket.id + $self->Join( ALIAS1 => 'main', FIELD1 => $self->{'primary_key'}, + ALIAS2 => $LinkAlias, + FIELD2 => 'LocalTarget') + } +} + + +=head2 KeywordLimit + +Limit based on Keywords + +Meta Data: + none + +=cut + +sub _CustomFieldLimit { + my ($self,$_field,$op,$value,@rest) = @_; + + my %rest = @rest; + my $field = $rest{SUBKEY} || die "No field specified"; + + # For our sanity, we can only limit on one queue at a time + my $queue = undef; + # Ugh. This will not do well for things with underscores in them + + use RT::CustomFields; + my $CF = RT::CustomFields->new( $self->CurrentUser ); + #$CF->Load( $cfid} ); + + my $q; + if ($field =~ /^(.+?)\.{(.+)}$/) { + my $q = RT::Queue->new($self->CurrentUser); + $q->Load($1); + $field = $2; + $CF->LimitToQueue( $q->Id ); + $queue = $q->Id; + } else { + $CF->LimitToGlobal; + } + $CF->FindAllRows; + + my $cfid = 0; + + while ( my $CustomField = $CF->Next ) { + if ($CustomField->Name eq $field) { + $cfid = $CustomField->Id; + last; + } + } + die "No custom field named $field found\n" + unless $cfid; + +# use RT::CustomFields; +# my $CF = RT::CustomField->new( $self->CurrentUser ); +# $CF->Load( $cfid ); + + + my $null_columns_ok; + my $TicketCFs = $self->Join( TYPE => 'left', + ALIAS1 => 'main', + FIELD1 => 'id', + TABLE2 => 'TicketCustomFieldValues', + FIELD2 => 'Ticket' ); + + $self->_OpenParen; + + $self->_SQLLimit( ALIAS => $TicketCFs, + FIELD => 'Content', + OPERATOR => $op, + VALUE => $value, + QUOTEVALUE => 1, + @rest ); + + if ( $op =~ /^IS$/i + or ( $op eq '!=' ) ) { + $null_columns_ok = 1; + } + + #If we're trying to find tickets where the keyword isn't somethng, + #also check ones where it _IS_ null + + if ( $op eq '!=' ) { + $self->_SQLLimit( ALIAS => $TicketCFs, + FIELD => 'Content', + OPERATOR => 'IS', + VALUE => 'NULL', + QUOTEVALUE => 0, + ENTRYAGGREGATOR => 'OR', ); + } + + $self->_SQLLimit( LEFTJOIN => $TicketCFs, + FIELD => 'CustomField', + VALUE => $cfid, + ENTRYAGGREGATOR => 'OR' ); + + + + $self->_CloseParen; + +} + + +# End Helper Functions + +# End of SQL Stuff ------------------------------------------------- + +# {{{ Limit the result set based on content + +# {{{ sub Limit + +=head2 Limit + +Takes a paramhash with the fields FIELD, OPERATOR, VALUE and DESCRIPTION +Generally best called from LimitFoo methods + +=cut +sub Limit { + my $self = shift; + my %args = ( FIELD => undef, + OPERATOR => '=', + VALUE => undef, + DESCRIPTION => undef, + @_ + ); + $args{'DESCRIPTION'} = $self->loc( + "[_1] [_2] [_3]", $args{'FIELD'}, $args{'OPERATOR'}, $args{'VALUE'} + ) if (!defined $args{'DESCRIPTION'}) ; + + my $index = $self->_NextIndex; + + #make the TicketRestrictions hash the equivalent of whatever we just passed in; + + %{$self->{'TicketRestrictions'}{$index}} = %args; + + $self->{'RecalcTicketLimits'} = 1; + + # If we're looking at the effective id, we don't want to append the other clause + # which limits us to tickets where id = effective id + if ($args{'FIELD'} eq 'EffectiveId') { + $self->{'looking_at_effective_id'} = 1; + } + + if ($args{'FIELD'} eq 'Type') { + $self->{'looking_at_type'} = 1; + } + + return ($index); +} + +# }}} + + + + +=head2 FreezeLimits + +Returns a frozen string suitable for handing back to ThawLimits. + +=cut +# {{{ sub FreezeLimits + +sub FreezeLimits { + my $self = shift; + require FreezeThaw; + return (FreezeThaw::freeze($self->{'TicketRestrictions'}, + $self->{'restriction_index'} + )); +} + +# }}} + +=head2 ThawLimits + +Take a frozen Limits string generated by FreezeLimits and make this tickets +object have that set of limits. + +=cut +# {{{ sub ThawLimits + +sub ThawLimits { + my $self = shift; + my $in = shift; + + #if we don't have $in, get outta here. + return undef unless ($in); + + $self->{'RecalcTicketLimits'} = 1; + + require FreezeThaw; + + #We don't need to die if the thaw fails. + + eval { + ($self->{'TicketRestrictions'}, + $self->{'restriction_index'} + ) = FreezeThaw::thaw($in); + } + +} + +# }}} + +# {{{ Limit by enum or foreign key + +# {{{ sub LimitQueue + +=head2 LimitQueue + +LimitQueue takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of = or !=. (It defaults to =). +VALUE is a queue id or Name. + + +=cut + +sub LimitQueue { + my $self = shift; + my %args = (VALUE => undef, + OPERATOR => '=', + @_); + + #TODO VALUE should also take queue names and queue objects + #TODO FIXME why are we canonicalizing to name, not id, robrt? + if ($args{VALUE} =~ /^\d+$/) { + my $queue = new RT::Queue($self->CurrentUser); + $queue->Load($args{'VALUE'}); + $args{VALUE} = $queue->Name; + } + + # What if they pass in an Id? Check for isNum() and convert to + # string. + + #TODO check for a valid queue here + + $self->Limit (FIELD => 'Queue', + VALUE => $args{VALUE}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Queue'), $args{'OPERATOR'}, $args{VALUE}, + ), + ); + +} +# }}} + +# {{{ sub LimitStatus + +=head2 LimitStatus + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of = or !=. +VALUE is a status. + +=cut + +sub LimitStatus { + my $self = shift; + my %args = ( OPERATOR => '=', + @_); + $self->Limit (FIELD => 'Status', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Status'), $args{'OPERATOR'}, $self->loc($args{'VALUE'}) + ), + ); +} + +# }}} + +# {{{ sub IgnoreType + +=head2 IgnoreType + +If called, this search will not automatically limit the set of results found +to tickets of type "Ticket". Tickets of other types, such as "project" and +"approval" will be found. + +=cut + +sub IgnoreType { + my $self = shift; + + # Instead of faking a Limit that later gets ignored, fake up the + # fact that we're already looking at type, so that the check in + # Tickets_Overlay_SQL/FromSQL goes down the right branch + + # $self->LimitType(VALUE => '__any'); + $self->{looking_at_type} = 1; +} + +# }}} + +# {{{ sub LimitType + +=head2 LimitType + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of = or !=, it defaults to "=". +VALUE is a string to search for in the type of the ticket. + + + +=cut + +sub LimitType { + my $self = shift; + my %args = (OPERATOR => '=', + VALUE => undef, + @_); + $self->Limit (FIELD => 'Type', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Type'), $args{'OPERATOR'}, $args{'Limit'}, + ), + ); +} + +# }}} + +# }}} + +# {{{ Limit by string field + +# {{{ sub LimitSubject + +=head2 LimitSubject + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of = or !=. +VALUE is a string to search for in the subject of the ticket. + +=cut + +sub LimitSubject { + my $self = shift; + my %args = (@_); + $self->Limit (FIELD => 'Subject', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Subject'), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} + +# }}} + +# }}} + +# {{{ Limit based on ticket numerical attributes +# Things that can be > < = != + +# {{{ sub LimitId + +=head2 LimitId + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of =, >, < or !=. +VALUE is a ticket Id to search for + +=cut + +sub LimitId { + my $self = shift; + my %args = (OPERATOR => '=', + @_); + + $self->Limit (FIELD => 'id', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Id'), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} + +# }}} + +# {{{ sub LimitPriority + +=head2 LimitPriority + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of =, >, < or !=. +VALUE is a value to match the ticket\'s priority against + +=cut + +sub LimitPriority { + my $self = shift; + my %args = (@_); + $self->Limit (FIELD => 'Priority', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Priority'), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} + +# }}} + +# {{{ sub LimitInitialPriority + +=head2 LimitInitialPriority + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of =, >, < or !=. +VALUE is a value to match the ticket\'s initial priority against + + +=cut + +sub LimitInitialPriority { + my $self = shift; + my %args = (@_); + $self->Limit (FIELD => 'InitialPriority', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Initial Priority'), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} + +# }}} + +# {{{ sub LimitFinalPriority + +=head2 LimitFinalPriority + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of =, >, < or !=. +VALUE is a value to match the ticket\'s final priority against + +=cut + +sub LimitFinalPriority { + my $self = shift; + my %args = (@_); + $self->Limit (FIELD => 'FinalPriority', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Final Priority'), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} + +# }}} + +# {{{ sub LimitTimeWorked + +=head2 LimitTimeWorked + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of =, >, < or !=. +VALUE is a value to match the ticket's TimeWorked attribute + +=cut + +sub LimitTimeWorked { + my $self = shift; + my %args = (@_); + $self->Limit (FIELD => 'TimeWorked', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Time worked'), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} + +# }}} + +# {{{ sub LimitTimeLeft + +=head2 LimitTimeLeft + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of =, >, < or !=. +VALUE is a value to match the ticket's TimeLeft attribute + +=cut + +sub LimitTimeLeft { + my $self = shift; + my %args = (@_); + $self->Limit (FIELD => 'TimeLeft', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Time left'), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} + +# }}} + +# }}} + +# {{{ Limiting based on attachment attributes + +# {{{ sub LimitContent + +=head2 LimitContent + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of =, LIKE, NOT LIKE or !=. +VALUE is a string to search for in the body of the ticket + +=cut +sub LimitContent { + my $self = shift; + my %args = (@_); + $self->Limit (FIELD => 'Content', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Ticket content'), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} + +# }}} + +# {{{ sub LimitFilename + +=head2 LimitFilename + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of =, LIKE, NOT LIKE or !=. +VALUE is a string to search for in the body of the ticket + +=cut +sub LimitFilename { + my $self = shift; + my %args = (@_); + $self->Limit (FIELD => 'Filename', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Attachment filename'), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} + +# }}} +# {{{ sub LimitContentType + +=head2 LimitContentType + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of =, LIKE, NOT LIKE or !=. +VALUE is a content type to search ticket attachments for + +=cut + +sub LimitContentType { + my $self = shift; + my %args = (@_); + $self->Limit (FIELD => 'ContentType', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Ticket content type'), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} +# }}} + +# }}} + +# {{{ Limiting based on people + +# {{{ sub LimitOwner + +=head2 LimitOwner + +Takes a paramhash with the fields OPERATOR and VALUE. +OPERATOR is one of = or !=. +VALUE is a user id. + +=cut + +sub LimitOwner { + my $self = shift; + my %args = ( OPERATOR => '=', + @_); + + my $owner = new RT::User($self->CurrentUser); + $owner->Load($args{'VALUE'}); + # FIXME: check for a valid $owner + $self->Limit (FIELD => 'Owner', + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + DESCRIPTION => join( + ' ', $self->loc('Owner'), $args{'OPERATOR'}, $owner->Name(), + ), + ); + +} + +# }}} + +# {{{ Limiting watchers + +# {{{ sub LimitWatcher + + +=head2 LimitWatcher + + Takes a paramhash with the fields OPERATOR, TYPE and VALUE. + OPERATOR is one of =, LIKE, NOT LIKE or !=. + VALUE is a value to match the ticket\'s watcher email addresses against + TYPE is the sort of watchers you want to match against. Leave it undef if you want to search all of them + +=begin testing + +my $t1 = RT::Ticket->new($RT::SystemUser); +$t1->Create(Queue => 'general', Subject => "LimitWatchers test", Requestors => \['requestor1@example.com']); + +=end testing + +=cut + +sub LimitWatcher { + my $self = shift; + my %args = ( OPERATOR => '=', + VALUE => undef, + TYPE => undef, + @_); + + + #build us up a description + my ($watcher_type, $desc); + if ($args{'TYPE'}) { + $watcher_type = $args{'TYPE'}; + } + else { + $watcher_type = "Watcher"; + } + + $self->Limit (FIELD => $watcher_type, + VALUE => $args{'VALUE'}, + OPERATOR => $args{'OPERATOR'}, + TYPE => $args{'TYPE'}, + DESCRIPTION => join( + ' ', $self->loc($watcher_type), $args{'OPERATOR'}, $args{'VALUE'}, + ), + ); +} + + +sub LimitRequestor { + my $self = shift; + my %args = (@_); + my ($package, $filename, $line) = caller; + $RT::Logger->error("Tickets->LimitRequestor is deprecated. please rewrite call at $package - $filename: $line"); + $self->LimitWatcher(TYPE => 'Requestor', @_); + +} + +# }}} + + +# }}} + +# }}} + +# {{{ Limiting based on links + +# {{{ LimitLinkedTo + +=head2 LimitLinkedTo + +LimitLinkedTo takes a paramhash with two fields: TYPE and TARGET +TYPE limits the sort of relationship we want to search on + +TYPE = { RefersTo, MemberOf, DependsOn } + +TARGET is the id or URI of the TARGET of the link +(TARGET used to be 'TICKET'. 'TICKET' is deprecated, but will be treated as TARGET + +=cut + +sub LimitLinkedTo { + my $self = shift; + my %args = ( + TICKET => undef, + TARGET => undef, + TYPE => undef, + @_); + + $self->Limit( + FIELD => 'LinkedTo', + BASE => undef, + TARGET => ($args{'TARGET'} || $args{'TICKET'}), + TYPE => $args{'TYPE'}, + DESCRIPTION => $self->loc( + "Tickets [_1] by [_2]", $self->loc($args{'TYPE'}), ($args{'TARGET'} || $args{'TICKET'}) + ), + ); +} + + +# }}} + +# {{{ LimitLinkedFrom + +=head2 LimitLinkedFrom + +LimitLinkedFrom takes a paramhash with two fields: TYPE and BASE +TYPE limits the sort of relationship we want to search on + + +BASE is the id or URI of the BASE of the link +(BASE used to be 'TICKET'. 'TICKET' is deprecated, but will be treated as BASE + + +=cut + +sub LimitLinkedFrom { + my $self = shift; + my %args = ( BASE => undef, + TICKET => undef, + TYPE => undef, + @_); + + + $self->Limit( FIELD => 'LinkedTo', + TARGET => undef, + BASE => ($args{'BASE'} || $args{'TICKET'}), + TYPE => $args{'TYPE'}, + DESCRIPTION => $self->loc( + "Tickets [_1] [_2]", $self->loc($args{'TYPE'}), ($args{'BASE'} || $args{'TICKET'}) + ), + ); +} + + +# }}} + +# {{{ LimitMemberOf +sub LimitMemberOf { + my $self = shift; + my $ticket_id = shift; + $self->LimitLinkedTo ( TARGET=> "$ticket_id", + TYPE => 'MemberOf', + ); + +} +# }}} + +# {{{ LimitHasMember +sub LimitHasMember { + my $self = shift; + my $ticket_id =shift; + $self->LimitLinkedFrom ( BASE => "$ticket_id", + TYPE => 'HasMember', + ); + +} +# }}} + +# {{{ LimitDependsOn + +sub LimitDependsOn { + my $self = shift; + my $ticket_id = shift; + $self->LimitLinkedTo ( TARGET => "$ticket_id", + TYPE => 'DependsOn', + ); + +} + +# }}} + +# {{{ LimitDependedOnBy + +sub LimitDependedOnBy { + my $self = shift; + my $ticket_id = shift; + $self->LimitLinkedFrom ( BASE => "$ticket_id", + TYPE => 'DependentOn', + ); + +} + +# }}} + + +# {{{ LimitRefersTo + +sub LimitRefersTo { + my $self = shift; + my $ticket_id = shift; + $self->LimitLinkedTo ( TARGET => "$ticket_id", + TYPE => 'RefersTo', + ); + +} + +# }}} + +# {{{ LimitReferredToBy + +sub LimitReferredToBy { + my $self = shift; + my $ticket_id = shift; + $self->LimitLinkedFrom ( BASE=> "$ticket_id", + TYPE => 'ReferredTo', + ); + +} + +# }}} + +# }}} + +# {{{ limit based on ticket date attribtes + +# {{{ sub LimitDate + +=head2 LimitDate (FIELD => 'DateField', OPERATOR => $oper, VALUE => $ISODate) + +Takes a paramhash with the fields FIELD OPERATOR and VALUE. + +OPERATOR is one of > or < +VALUE is a date and time in ISO format in GMT +FIELD is one of Starts, Started, Told, Created, Resolved, LastUpdated + +There are also helper functions of the form LimitFIELD that eliminate +the need to pass in a FIELD argument. + +=cut + +sub LimitDate { + my $self = shift; + my %args = ( + FIELD => undef, + VALUE => undef, + OPERATOR => undef, + + @_); + + #Set the description if we didn't get handed it above + unless ($args{'DESCRIPTION'} ) { + $args{'DESCRIPTION'} = $args{'FIELD'} . " " .$args{'OPERATOR'}. " ". $args{'VALUE'} . " GMT" + } + + $self->Limit (%args); + +} + +# }}} + + + + +sub LimitCreated { + my $self = shift; + $self->LimitDate( FIELD => 'Created', @_); +} +sub LimitDue { + my $self = shift; + $self->LimitDate( FIELD => 'Due', @_); + +} +sub LimitStarts { + my $self = shift; + $self->LimitDate( FIELD => 'Starts', @_); + +} +sub LimitStarted { + my $self = shift; + $self->LimitDate( FIELD => 'Started', @_); +} +sub LimitResolved { + my $self = shift; + $self->LimitDate( FIELD => 'Resolved', @_); +} +sub LimitTold { + my $self = shift; + $self->LimitDate( FIELD => 'Told', @_); +} +sub LimitLastUpdated { + my $self = shift; + $self->LimitDate( FIELD => 'LastUpdated', @_); +} +# +# {{{ sub LimitTransactionDate + +=head2 LimitTransactionDate (OPERATOR => $oper, VALUE => $ISODate) + +Takes a paramhash with the fields FIELD OPERATOR and VALUE. + +OPERATOR is one of > or < +VALUE is a date and time in ISO format in GMT + + +=cut + +sub LimitTransactionDate { + my $self = shift; + my %args = ( + FIELD => 'TransactionDate', + VALUE => undef, + OPERATOR => undef, + + @_); + + # <20021217042756.GK28744@pallas.fsck.com> + # "Kill It" - Jesse. + + #Set the description if we didn't get handed it above + unless ($args{'DESCRIPTION'} ) { + $args{'DESCRIPTION'} = $args{'FIELD'} . " " .$args{'OPERATOR'}. " ". $args{'VALUE'} . " GMT" + } + + $self->Limit (%args); + +} + +# }}} + +# }}} + +# {{{ Limit based on custom fields +# {{{ sub LimitCustomField + +=head2 LimitCustomField + +Takes a paramhash of key/value pairs with the following keys: + +=over 4 + +=item KEYWORDSELECT - KeywordSelect id + +=item OPERATOR - (for KEYWORD only - KEYWORDSELECT operator is always `=') + +=item KEYWORD - Keyword id + +=back + +=cut + +sub LimitCustomField { + my $self = shift; + my %args = ( VALUE => undef, + CUSTOMFIELD => undef, + OPERATOR => '=', + DESCRIPTION => undef, + FIELD => 'CustomFieldValue', + QUOTEVALUE => 1, + @_ ); + + use RT::CustomFields; + my $CF = RT::CustomField->new( $self->CurrentUser ); + $CF->Load( $args{CUSTOMFIELD} ); + + #If we are looking to compare with a null value. + if ( $args{'OPERATOR'} =~ /^is$/i ) { + $args{'DESCRIPTION'} ||= $self->loc("Custom field [_1] has no value.", $CF->Name); + } + elsif ( $args{'OPERATOR'} =~ /^is not$/i ) { + $args{'DESCRIPTION'} ||= $self->loc("Custom field [_1] has a value.", $CF->Name); + } + + # if we're not looking to compare with a null value + else { + $args{'DESCRIPTION'} ||= $self->loc("Custom field [_1] [_2] [_3]", $CF->Name , $args{OPERATOR} , $args{VALUE}); + } + +# my $index = $self->_NextIndex; +# %{ $self->{'TicketRestrictions'}{$index} } = %args; + + + my $q = ""; + if ($CF->Queue) { + my $qo = new RT::Queue( $self->CurrentUser ); + $qo->load( $CF->Queue ); + $q = $qo->Name; + } + + $self->Limit( VALUE => $args{VALUE}, + FIELD => "CF.".( $q + ? $q . ".{" . $CF->Name . "}" + : $CF->Name + ), + OPERATOR => $args{OPERATOR}, + CUSTOMFIELD => 1, + ); + + + $self->{'RecalcTicketLimits'} = 1; + # return ($index); +} + +# }}} +# }}} + + +# {{{ sub _NextIndex + +=head2 _NextIndex + +Keep track of the counter for the array of restrictions + +=cut + +sub _NextIndex { + my $self = shift; + return ($self->{'restriction_index'}++); +} +# }}} + +# }}} + +# {{{ Core bits to make this a DBIx::SearchBuilder object + +# {{{ sub _Init +sub _Init { + my $self = shift; + $self->{'table'} = "Tickets"; + $self->{'RecalcTicketLimits'} = 1; + $self->{'looking_at_effective_id'} = 0; + $self->{'looking_at_type'} = 0; + $self->{'restriction_index'} =1; + $self->{'primary_key'} = "id"; + delete $self->{'items_array'}; + delete $self->{'item_map'}; + $self->SUPER::_Init(@_); + + $self->_InitSQL; + +} +# }}} + +# {{{ sub Count +sub Count { + my $self = shift; + $self->_ProcessRestrictions() if ($self->{'RecalcTicketLimits'} == 1 ); + return($self->SUPER::Count()); +} +# }}} + +# {{{ sub CountAll +sub CountAll { + my $self = shift; + $self->_ProcessRestrictions() if ($self->{'RecalcTicketLimits'} == 1 ); + return($self->SUPER::CountAll()); +} +# }}} + + +# {{{ sub ItemsArrayRef + +=head2 ItemsArrayRef + +Returns a reference to the set of all items found in this search + +=cut + +sub ItemsArrayRef { + my $self = shift; + my @items; + + unless ( $self->{'items_array'} ) { + + my $placeholder = $self->_ItemsCounter; + $self->GotoFirstItem(); + while ( my $item = $self->Next ) { + push ( @{ $self->{'items_array'} }, $item ); + } + $self->GotoItem($placeholder); + } + return ( $self->{'items_array'} ); +} +# }}} + +# {{{ sub Next +sub Next { + my $self = shift; + + $self->_ProcessRestrictions() if ($self->{'RecalcTicketLimits'} == 1 ); + + my $Ticket = $self->SUPER::Next(); + if ((defined($Ticket)) and (ref($Ticket))) { + + #Make sure we _never_ show deleted tickets + #TODO we should be doing this in the where clause. + #but you can't do multiple clauses on the same field just yet :/ + + if ($Ticket->__Value('Status') eq 'deleted') { + return($self->Next()); + } + # Since Ticket could be granted with more rights instead + # of being revoked, it's ok if queue rights allow + # ShowTicket. It seems need another query, but we have + # rights cache in Principal::HasRight. + elsif ($Ticket->QueueObj->CurrentUserHasRight('ShowTicket') || + $Ticket->CurrentUserHasRight('ShowTicket')) { + return($Ticket); + } + + #If the user doesn't have the right to show this ticket + else { + return($self->Next()); + } + } + #if there never was any ticket + else { + return(undef); + } + +} +# }}} + +# }}} + +# {{{ Deal with storing and restoring restrictions + +# {{{ sub LoadRestrictions + +=head2 LoadRestrictions + +LoadRestrictions takes a string which can fully populate the TicketRestrictons hash. +TODO It is not yet implemented + +=cut + +# }}} + +# {{{ sub DescribeRestrictions + +=head2 DescribeRestrictions + +takes nothing. +Returns a hash keyed by restriction id. +Each element of the hash is currently a one element hash that contains DESCRIPTION which +is a description of the purpose of that TicketRestriction + +=cut + +sub DescribeRestrictions { + my $self = shift; + + my ($row, %listing); + + foreach $row (keys %{$self->{'TicketRestrictions'}}) { + $listing{$row} = $self->{'TicketRestrictions'}{$row}{'DESCRIPTION'}; + } + return (%listing); +} +# }}} + +# {{{ sub RestrictionValues + +=head2 RestrictionValues FIELD + +Takes a restriction field and returns a list of values this field is restricted +to. + +=cut + +sub RestrictionValues { + my $self = shift; + my $field = shift; + map $self->{'TicketRestrictions'}{$_}{'VALUE'}, + grep { + $self->{'TicketRestrictions'}{$_}{'FIELD'} eq $field + && $self->{'TicketRestrictions'}{$_}{'OPERATOR'} eq "=" + } + keys %{$self->{'TicketRestrictions'}}; +} + +# }}} + +# {{{ sub ClearRestrictions + +=head2 ClearRestrictions + +Removes all restrictions irretrievably + +=cut + +sub ClearRestrictions { + my $self = shift; + delete $self->{'TicketRestrictions'}; + $self->{'looking_at_effective_id'} = 0; + $self->{'looking_at_type'} = 0; + $self->{'RecalcTicketLimits'} =1; +} + +# }}} + +# {{{ sub DeleteRestriction + +=head2 DeleteRestriction + +Takes the row Id of a restriction (From DescribeRestrictions' output, for example. +Removes that restriction from the session's limits. + +=cut + + +sub DeleteRestriction { + my $self = shift; + my $row = shift; + delete $self->{'TicketRestrictions'}{$row}; + + $self->{'RecalcTicketLimits'} = 1; + #make the underlying easysearch object forget all its preconceptions +} + +# }}} + +# {{{ sub _RestrictionsToClauses + +# Convert a set of oldstyle SB Restrictions to Clauses for RQL + +sub _RestrictionsToClauses { + my $self = shift; + + my $row; + my %clause; + foreach $row (keys %{$self->{'TicketRestrictions'}}) { + my $restriction = $self->{'TicketRestrictions'}{$row}; + #use Data::Dumper; + #print Dumper($restriction),"\n"; + + # We need to reimplement the subclause aggregation that SearchBuilder does. + # Default Subclause is ALIAS.FIELD, and default ALIAS is 'main', + # Then SB AND's the different Subclauses together. + + # So, we want to group things into Subclauses, convert them to + # SQL, and then join them with the appropriate DefaultEA. + # Then join each subclause group with AND. + + my $field = $restriction->{'FIELD'}; + my $realfield = $field; # CustomFields fake up a fieldname, so + # we need to figure that out + + # One special case + # Rewrite LinkedTo meta field to the real field + if ($field =~ /LinkedTo/) { + $realfield = $field = $restriction->{'TYPE'}; + } + + # Two special case + # CustomFields have a different real field + if ($field =~ /^CF\./) { + $realfield = "CF" + } + + die "I don't know about $field yet" + unless (exists $FIELDS{$realfield} or $restriction->{CUSTOMFIELD}); + + my $type = $FIELDS{$realfield}->[0]; + my $op = $restriction->{'OPERATOR'}; + + my $value = ( grep { defined } + map { $restriction->{$_} } qw(VALUE TICKET BASE TARGET))[0]; + + # this performs the moral equivalent of defined or/dor/C<//>, + # without the short circuiting.You need to use a 'defined or' + # type thing instead of just checking for truth values, because + # VALUE could be 0.(i.e. "false") + + # You could also use this, but I find it less aesthetic: + # (although it does short circuit) + #( defined $restriction->{'VALUE'}? $restriction->{VALUE} : + # defined $restriction->{'TICKET'} ? + # $restriction->{TICKET} : + # defined $restriction->{'BASE'} ? + # $restriction->{BASE} : + # defined $restriction->{'TARGET'} ? + # $restriction->{TARGET} ) + + my $ea = $DefaultEA{$type}; + if ( ref $ea ) { + die "Invalid operator $op for $field ($type)" + unless exists $ea->{$op}; + $ea = $ea->{$op}; + } + exists $clause{$realfield} or $clause{$realfield} = []; + # Escape Quotes + $field =~ s!(['"])!\\$1!g; + $value =~ s!(['"])!\\$1!g; + my $data = [ $ea, $type, $field, $op, $value ]; + + # here is where we store extra data, say if it's a keyword or + # something. (I.e. "TYPE SPECIFIC STUFF") + + #print Dumper($data); + push @{$clause{$realfield}}, $data; + } + return \%clause; +} + +# }}} + +# {{{ sub _ProcessRestrictions + +=head2 _ProcessRestrictions PARAMHASH + +# The new _ProcessRestrictions is somewhat dependent on the SQL stuff, +# but isn't quite generic enough to move into Tickets_Overlay_SQL. + +=cut + +sub _ProcessRestrictions { + my $self = shift; + + #Blow away ticket aliases since we'll need to regenerate them for + #a new search + delete $self->{'TicketAliases'}; + delete $self->{'items_array'}; + my $sql = $self->{_sql_query}; # Violating the _SQL namespace + if (!$sql||$self->{'RecalcTicketLimits'}) { + # "Restrictions to Clauses Branch\n"; + my $clauseRef = eval { $self->_RestrictionsToClauses; }; + if ($@) { + $RT::Logger->error( "RestrictionsToClauses: " . $@ ); + $self->FromSQL(""); + } else { + $sql = $self->ClausesToSQL($clauseRef); + $self->FromSQL($sql); + } + } + + + $self->{'RecalcTicketLimits'} = 0; + +} + +=head2 _BuildItemMap + + # Build up a map of first/last/next/prev items, so that we can display search nav quickly + +=cut + +sub _BuildItemMap { + my $self = shift; + + my $items = $self->ItemsArrayRef; + my $prev = 0 ; + + delete $self->{'item_map'}; + if ($items->[0]) { + $self->{'item_map'}->{'first'} = $items->[0]->Id; + while (my $item = shift @$items ) { + my $id = $item->Id; + $self->{'item_map'}->{$id}->{'defined'} = 1; + $self->{'item_map'}->{$id}->{prev} = $prev; + $self->{'item_map'}->{$id}->{next} = $items->[0]->Id if ($items->[0]); + $prev = $id; + } + $self->{'item_map'}->{'last'} = $prev; + } +} + + +=head2 ItemMap + +Returns an a map of all items found by this search. The map is of the form + +$ItemMap->{'first'} = first ticketid found +$ItemMap->{'last'} = last ticketid found +$ItemMap->{$id}->{prev} = the tikcet id found before $id +$ItemMap->{$id}->{next} = the tikcet id found after $id + +=cut + +sub ItemMap { + my $self = shift; + $self->_BuildItemMap() unless ($self->{'item_map'}); + return ($self->{'item_map'}); +} + + + + +=cut + +} + + + +# }}} + +# }}} + +=head2 PrepForSerialization + +You don't want to serialize a big tickets object, as the {items} hash will be instantly invalid _and_ eat lots of space + +=cut + + +sub PrepForSerialization { + my $self = shift; + delete $self->{'items'}; + $self->RedoSearch(); +} + +1; + diff --git a/rt/lib/RT/Tickets_Overlay_SQL.pm b/rt/lib/RT/Tickets_Overlay_SQL.pm new file mode 100644 index 000000000..d78a56db3 --- /dev/null +++ b/rt/lib/RT/Tickets_Overlay_SQL.pm @@ -0,0 +1,382 @@ +# 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. +# +# 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; +use warnings; + +# Import configuration data from the lexcial scope of __PACKAGE__ (or +# at least where those two Subroutines are defined.) + +my %FIELDS = %{FIELDS()}; +my %dispatch = %{dispatch()}; + +sub _InitSQL { + my $self = shift; + + # How many of these do we actually still use? + + # Private Member Variales (which should get cleaned) + $self->{'_sql_linksc'} = 0; + $self->{'_sql_watchersc'} = 0; + $self->{'_sql_keywordsc'} = 0; + $self->{'_sql_subclause'} = "a"; + $self->{'_sql_first'} = 0; + $self->{'_sql_opstack'} = ['']; + $self->{'_sql_transalias'} = undef; + $self->{'_sql_trattachalias'} = undef; + $self->{'_sql_keywordalias'} = undef; + $self->{'_sql_depth'} = 0; + $self->{'_sql_localdepth'} = 0; + $self->{'_sql_query'} = ''; + $self->{'_sql_looking_at'} = {}; + +} + +sub _SQLLimit { + # All SQL stuff goes into one SB subclause so we can deal with all + # the aggregation + my $this = shift; + $this->SUPER::Limit(@_, + SUBCLAUSE => 'ticketsql'); +} + +# Helpers +sub _OpenParen { + $_[0]->SUPER::_OpenParen( 'ticketsql' ); +} +sub _CloseParen { + $_[0]->SUPER::_CloseParen( 'ticketsql' ); +} + +=head1 SQL Functions + +=cut + +sub _match { + # Case insensitive equality + my ($y,$x) = @_; + return 1 if $x =~ /^$y$/i; + # return 1 if ((lc $x) eq (lc $y)); # Why isnt this equiv? + return 0; +} + +=head2 Robert's Simple SQL Parser + +Documentation In Progress + +The Parser/Tokenizer is a relatively simple state machine that scans through a SQL WHERE clause type string extracting a token at a time (where a token is: + + VALUE -> quoted string or number + AGGREGator -> AND or OR + KEYWORD -> quoted string or single word + OPerator -> =,!=,LIKE,etc.. + PARENthesis -> open or close. + +And that stream of tokens is passed through the "machine" in order to build up a structure that looks like: + + KEY OP VALUE + AND KEY OP VALUE + OR KEY OP VALUE + +That also deals with parenthesis for nesting. (The parentheses are +just handed off the SearchBuilder) + +=cut + +use Regexp::Common qw /delimited/; + +# States +use constant VALUE => 1; +use constant AGGREG => 2; +use constant OP => 4; +use constant PAREN => 8; +use constant KEYWORD => 16; +my @tokens = qw[VALUE AGGREG OP PAREN KEYWORD]; + +my $re_aggreg = qr[(?i:AND|OR)]; +my $re_value = qr[$RE{delimited}{-delim=>qq{\'\"}}|\d+]; +my $re_keyword = qr[$RE{delimited}{-delim=>qq{\'\"}}|(?:\{|\}|\w|\.)+]; +my $re_op = qr[=|!=|>=|<=|>|<|(?i:IS NOT)|(?i:IS)|(?i:NOT LIKE)|(?i:LIKE)]; # long to short +my $re_paren = qr'\(|\)'; + +sub _parser { + my ($self,$string) = @_; + my $want = KEYWORD | PAREN; + my $last = undef; + + my $depth = 0; + + my ($ea,$key,$op,$value) = ("","","",""); + + while ($string =~ /( + $re_aggreg + |$re_keyword + |$re_value + |$re_op + |$re_paren + )/igx ) { + my $val = $1; + my $current = 0; + + # Highest priority is last + $current = OP if _match($re_op,$val); + $current = VALUE if _match($re_value,$val); + $current = KEYWORD if _match($re_keyword,$val) && ($want & KEYWORD); + $current = AGGREG if _match($re_aggreg,$val); + $current = PAREN if _match($re_paren,$val); + + unless ($current && $want & $current) { + # Error + # FIXME: I will only print out the highest $want value + die "Error near ->$val<- expecting a ", $tokens[((log $want)/(log 2))], " in $string\n"; + } + + # State Machine: + + # Parens are highest priority + if ($current & PAREN) { + if ($val eq "(") { + $depth++; + $self->_OpenParen; + + } else { + $depth--; + $self->_CloseParen; + } + + $want = KEYWORD | PAREN | AGGREG; + } + elsif ( $current & AGGREG ) { + $ea = $val; + $want = KEYWORD | PAREN; + } + elsif ( $current & KEYWORD ) { + $key = $val; + $want = OP; + } + elsif ( $current & OP ) { + $op = $val; + $want = VALUE; + } + elsif ( $current & VALUE ) { + $value = $val; + + # Remove surrounding quotes from $key, $val + # (in future, simplify as for($key,$val) { action on $_ }) + if ($key =~ /$RE{delimited}{-delim=>qq{\'\"}}/) { + substr($key,0,1) = ""; + substr($key,-1,1) = ""; + } + if ($val =~ /$RE{delimited}{-delim=>qq{\'\"}}/) { + substr($val,0,1) = ""; + substr($val,-1,1) = ""; + } + # Unescape escaped characters + $key =~ s!\\(.)!$1!g; + $val =~ s!\\(.)!$1!g; + # print "$ea Key=[$key] op=[$op] val=[$val]\n"; + + + my $subkey; + if ($key =~ /^(.+?)\.(.+)$/) { + $key = $1; + $subkey = $2; + } + + my $class; + my ($stdkey) = grep { /^$key$/i } (keys %FIELDS); + if ($stdkey && exists $FIELDS{$stdkey}) { + $class = $FIELDS{$key}->[0]; + $key = $stdkey; + } + # no longer have a default, since CF's are now a real class, not fallthrough + # fixme: "default class" is not Generic. + + + die "Unknown field: $key" unless $class; + + $self->{_sql_localdepth} = 0; + die "No such dispatch method: $class" + unless exists $dispatch{$class}; + my $sub = $dispatch{$class} || die;; + $sub->( + $self, + $key, + $op, + $val, + SUBCLAUSE => "", # don't need anymore + ENTRYAGGREGATOR => $ea || "", + SUBKEY => $subkey, + ); + + $self->{_sql_looking_at}{lc $key} = 1; + + ($ea,$key,$op,$value) = ("","","",""); + + $want = PAREN | AGGREG; + } else { + die "I'm lost"; + } + + $last = $current; + } # while + + die "Incomplete query" + unless (($want | PAREN) || ($want | KEYWORD)); + + die "Incomplete Query" + unless ($last && ($last | PAREN) || ($last || VALUE)); + + # This will never happen, because the parser will complain + die "Mismatched parentheses" + unless $depth == 0; + +} + + +=head2 ClausesToSQL + +=cut + +sub ClausesToSQL { + my $self = shift; + my $clauses = shift; + my @sql; + + for my $f (keys %{$clauses}) { + my $sql; + my $first = 1; + + # Build SQL from the data hash + for my $data ( @{ $clauses->{$f} } ) { + $sql .= $data->[0] unless $first; $first=0; + $sql .= " '". $data->[2] . "' "; + $sql .= $data->[3] . " "; + $sql .= "'". $data->[4] . "' "; + } + + push @sql, " ( " . $sql . " ) "; + } + + return join("AND",@sql); +} + +=head2 FromSQL + +Convert a RT-SQL string into a set of SearchBuilder restrictions. + +Returns (1, 'Status message') on success and (0, 'Error Message') on +failure. + +=cut + +sub FromSQL { + my ($self,$query) = @_; + + $self->CleanSlate; + $self->_InitSQL(); + return (1,"No Query") unless $query; + + $self->{_sql_query} = $query; + eval { $self->_parser( $query ); }; + $RT::Logger->error( $@ ) if $@; + return(0,$@) if $@; + + # We only want to look at EffectiveId's (mostly) for these searches. + unless (exists $self->{_sql_looking_at}{'effectiveid'}) { + $self->SUPER::Limit( FIELD => 'EffectiveId', + ENTRYAGGREGATOR => 'AND', + OPERATOR => '=', + QUOTEVALUE => 0, + VALUE => 'main.id' + ); #TODO, we shouldn't be hard #coding the tablename to main. + } + # FIXME: Need to bring this logic back in + + # if ($self->_isLimited && (! $self->{'looking_at_effective_id'})) { + # $self->SUPER::Limit( FIELD => 'EffectiveId', + # OPERATOR => '=', + # QUOTEVALUE => 0, + # VALUE => 'main.id'); #TODO, we shouldn't be hard coding the tablename to main. + # } + # --- This is hardcoded above. This comment block can probably go. + # Or, we need to reimplement the looking_at_effective_id toggle. + + # Unless we've explicitly asked to look at a specific Type, we need + # to limit to it. + unless ($self->{looking_at_type}) { + $self->SUPER::Limit( FIELD => 'Type', + OPERATOR => '=', + VALUE => 'ticket'); + } + + # set SB's dirty flag + $self->{'must_redo_search'} = 1; + $self->{'RecalcTicketLimits'} = 0; + + return (1,"Good Query"); + +} + + +1; + +=pod + +=head2 Exceptions + +Most of the RT code does not use Exceptions (die/eval) but it is used +in the TicketSQL code for simplicity and historical reasons. Lest you +be worried that the dies will trigger user visible errors, all are +trapped via evals. + +99% of the dies fall in subroutines called via FromSQL and then parse. +(This includes all of the _FooLimit routines in Tickets_Overlay.pm.) +The other 1% or so are via _ProcessRestrictions. + +All dies are trapped by eval {}s, and will be logged at the 'error' +log level. The general failure mode is to not display any tickets. + +=head2 General Flow + +Legacy Layer: + + Legacy LimitFoo routines build up a RestrictionsHash + + _ProcessRestrictions converts the Restrictions to Clauses + ([key,op,val,rest]). + + Clauses are converted to RT-SQL (TicketSQL) + +New RT-SQL Layer: + + FromSQL calls the parser + + The parser calls the _FooLimit routines to do DBIx::SearchBuilder + limits. + +And then the normal SearchBuilder/Ticket routines are used for +display/navigation. + +=cut + diff --git a/rt/lib/RT/Transaction_Overlay.pm b/rt/lib/RT/Transaction_Overlay.pm new file mode 100644 index 000000000..54bb326a9 --- /dev/null +++ b/rt/lib/RT/Transaction_Overlay.pm @@ -0,0 +1,817 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Transaction - RT\'s transaction object + +=head1 SYNOPSIS + + use RT::Transaction; + + +=head1 DESCRIPTION + + +Each RT::Transaction describes an atomic change to a ticket object +or an update to an RT::Ticket object. +It can have arbitrary MIME attachments. + + +=head1 METHODS + +=begin testing + +ok(require RT::Transaction); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +use RT::Attachments; + +# {{{ sub Create + +=head2 Create + +Create a new transaction. + +This routine should _never_ be called anything other Than RT::Ticket. It should not be called +from client code. Ever. Not ever. If you do this, we will hunt you down. and break your kneecaps. +Then the unpleasant stuff will start. + +TODO: Document what gets passed to this + +=cut + +sub Create { + my $self = shift; + my %args = ( + id => undef, + TimeTaken => 0, + Ticket => 0, + Type => 'undefined', + Data => '', + Field => undef, + OldValue => undef, + NewValue => undef, + MIMEObj => undef, + ActivateScrips => 1, + @_ + ); + + #if we didn't specify a ticket, we need to bail + unless ( $args{'Ticket'} ) { + return ( 0, $self->loc( "Transaction->Create couldn't, as you didn't specify a ticket id")); + } + + + + #lets create our transaction + my %params = (Ticket => $args{'Ticket'}, + Type => $args{'Type'}, + Data => $args{'Data'}, + Field => $args{'Field'}, + OldValue => $args{'OldValue'}, + NewValue => $args{'NewValue'}, + Created => $args{'Created'} + ); + + # Parameters passed in during an import that we probably don't want to touch, otherwise + foreach my $attr qw(id Creator Created LastUpdated TimeTaken LastUpdatedBy) { + $params{$attr} = $args{$attr} if ($args{$attr}); + } + + my $id = $self->SUPER::Create(%params); + $self->Load($id); + $self->_Attach( $args{'MIMEObj'} ) + if defined $args{'MIMEObj'}; + + #Provide a way to turn off scrips if we need to + if ( $args{'ActivateScrips'} ) { + + #We're really going to need a non-acled ticket for the scrips to work + my $TicketAsSystem = RT::Ticket->new($RT::SystemUser); + $TicketAsSystem->Load( $args{'Ticket'} ) + || $RT::Logger->err("$self couldn't load ticket $args{'Ticket'}\n"); + + my $TransAsSystem = RT::Transaction->new($RT::SystemUser); + $TransAsSystem->Load( $self->id ) + || $RT::Logger->err( + "$self couldn't load a copy of itself as superuser\n"); + # {{{ Deal with Scrips + + use RT::Scrips; + my $PossibleScrips = RT::Scrips->new($RT::SystemUser); + + $PossibleScrips->LimitToQueue( $TicketAsSystem->QueueObj->Id ) + ; #Limit it to $Ticket->QueueObj->Id + $PossibleScrips->LimitToGlobal() + unless $TicketAsSystem->QueueObj->Disabled; # or to "global" + + + $PossibleScrips->Limit(FIELD => "Stage", VALUE => "TransactionCreate"); + + + my $ConditionsAlias = $PossibleScrips->NewAlias('ScripConditions'); + + $PossibleScrips->Join( + ALIAS1 => 'main', + FIELD1 => 'ScripCondition', + ALIAS2 => $ConditionsAlias, + FIELD2 => 'id' + ); + + #We only want things where the scrip applies to this sort of transaction + $PossibleScrips->Limit( + ALIAS => $ConditionsAlias, + FIELD => 'ApplicableTransTypes', + OPERATOR => 'LIKE', + VALUE => $args{'Type'}, + ENTRYAGGREGATOR => 'OR', + ); + + # Or where the scrip applies to any transaction + $PossibleScrips->Limit( + ALIAS => $ConditionsAlias, + FIELD => 'ApplicableTransTypes', + OPERATOR => 'LIKE', + VALUE => "Any", + ENTRYAGGREGATOR => 'OR', + ); + + #Iterate through each script and check it's applicability. + + while ( my $Scrip = $PossibleScrips->Next() ) { + $Scrip->Apply (TicketObj => $TicketAsSystem, + TransactionObj => $TransAsSystem); + } + + # }}} + + } + + return ( $id, $self->loc("Transaction Created") ); +} + +# }}} + +# {{{ sub Delete + +sub Delete { + my $self = shift; + return ( 0, + $self->loc('Deleting this object could break referential integrity') ); +} + +# }}} + +# {{{ Routines dealing with Attachments + +# {{{ sub Message + +=head2 Message + + Returns the RT::Attachments Object which contains the "top-level"object + attachment for this transaction + +=cut + +sub Message { + + my $self = shift; + + if ( !defined( $self->{'message'} ) ) { + + $self->{'message'} = new RT::Attachments( $self->CurrentUser ); + $self->{'message'}->Limit( + FIELD => 'TransactionId', + VALUE => $self->Id + ); + + $self->{'message'}->ChildrenOf(0); + } + return ( $self->{'message'} ); +} + +# }}} + +# {{{ sub Content + +=head2 Content PARAMHASH + +If this transaction has attached mime objects, returns the first text/plain part. +Otherwise, returns undef. + +Takes a paramhash. If the $args{'Quote'} parameter is set, wraps this message +at $args{'Wrap'}. $args{'Wrap'} defaults to 70. + + +=cut + +sub Content { + my $self = shift; + my %args = ( + Quote => 0, + Wrap => 70, + @_ + ); + + my $content; + my $content_obj = $self->ContentObj; + if ($content_obj) { + $content = $content_obj->Content; + } + + # If all else fails, return a message that we couldn't find any content + else { + $content = $self->loc('This transaction appears to have no content'); + } + + if ( $args{'Quote'} ) { + + # Remove quoted signature. + $content =~ s/\n-- \n(.*)$//s; + + # What's the longest line like? + my $max = 0; + foreach ( split ( /\n/, $content ) ) { + $max = length if ( length > $max ); + } + + if ( $max > 76 ) { + require Text::Wrapper; + my $wrapper = new Text::Wrapper( + columns => $args{'Wrap'}, + body_start => ( $max > 70 * 3 ? ' ' : '' ), + par_start => '' + ); + $content = $wrapper->wrap($content); + } + + $content = '[' + . $self->CreatorObj->Name() . ' - ' + . $self->CreatedAsString() . "]:\n\n" . $content . "\n\n"; + $content =~ s/^/> /gm; + + } + + return ($content); +} + +# }}} + +# {{{ ContentObj + +=head2 ContentObj + +Returns the RT::Attachment object which contains the content for this Transaction + +=cut + + + +sub ContentObj { + + my $self = shift; + + # If we don\'t have any content, return undef now. + unless ( $self->Attachments->First ) { + return (undef); + } + + # Get the set of toplevel attachments to this transaction. + my $Attachment = $self->Attachments->First(); + + # If it's a message or a plain part, just return the + # body. + if ( $Attachment->ContentType() =~ '^(text/plain$|message/)' ) { + return ($Attachment); + } + + # If it's a multipart object, first try returning the first + # text/plain part. + + elsif ( $Attachment->ContentType() =~ '^multipart/' ) { + my $plain_parts = $Attachment->Children(); + $plain_parts->ContentType( VALUE => 'text/plain' ); + + # If we actully found a part, return its content + if ( $plain_parts->First && $plain_parts->First->Content ne '' ) { + return ( $plain_parts->First ); + } + + # If that fails, return the first text/plain or message/ part + # which has some content. + + else { + my $all_parts = $Attachment->Children(); + while ( my $part = $all_parts->Next ) { + if (( $part->ContentType() =~ '^(text/plain$|message/)' ) && $part->Content() ) { + return ($part); + } + } + } + + } + + # We found no content. suck + return (undef); +} + +# }}} + +# {{{ sub Subject + +=head2 Subject + +If this transaction has attached mime objects, returns the first one's subject +Otherwise, returns null + +=cut + +sub Subject { + my $self = shift; + if ( $self->Attachments->First ) { + return ( $self->Attachments->First->Subject ); + } + else { + return (undef); + } +} + +# }}} + +# {{{ sub Attachments + +=head2 Attachments + + Returns all the RT::Attachment objects which are attached +to this transaction. Takes an optional parameter, which is +a ContentType that Attachments should be restricted to. + +=cut + +sub Attachments { + my $self = shift; + + unless ( $self->{'attachments'} ) { + $self->{'attachments'} = RT::Attachments->new( $self->CurrentUser ); + + #If it's a comment, return an empty object if they don't have the right to see it + if ( $self->Type eq 'Comment' ) { + unless ( $self->CurrentUserHasRight('ShowTicketComments') ) { + return ( $self->{'attachments'} ); + } + } + + #if they ain't got rights to see, return an empty object + else { + unless ( $self->CurrentUserHasRight('ShowTicket') ) { + return ( $self->{'attachments'} ); + } + } + + $self->{'attachments'}->Limit( FIELD => 'TransactionId', + VALUE => $self->Id ); + + # Get the self->{'attachments'} in the order they're put into + # the database. Arguably, we should be returning a tree + # of self->{'attachments'}, not a set...but no current app seems to need + # it. + + $self->{'attachments'}->OrderBy( ALIAS => 'main', + FIELD => 'id', + ORDER => 'asc' ); + + } + return ( $self->{'attachments'} ); + +} + +# }}} + +# {{{ sub _Attach + +=head2 _Attach + +A private method used to attach a mime object to this transaction. + +=cut + +sub _Attach { + my $self = shift; + my $MIMEObject = shift; + + if ( !defined($MIMEObject) ) { + $RT::Logger->error( +"$self _Attach: We can't attach a mime object if you don't give us one.\n" + ); + return ( 0, $self->loc("[_1]: no attachment specified", $self) ); + } + + my $Attachment = new RT::Attachment( $self->CurrentUser ); + $Attachment->Create( + TransactionId => $self->Id, + Attachment => $MIMEObject + ); + return ( $Attachment, $self->loc("Attachment created") ); + +} + +# }}} + +# }}} + +# {{{ Routines dealing with Transaction Attributes + +# {{{ sub Description + +=head2 Description + +Returns a text string which describes this transaction + +=cut + +sub Description { + my $self = shift; + + #Check those ACLs + #If it's a comment, we need to be extra special careful + if ( $self->__Value('Type') eq 'Comment' ) { + unless ( $self->CurrentUserHasRight('ShowTicketComments') ) { + return ( $self->loc("Permission Denied") ); + } + } + + #if they ain't got rights to see, don't let em + else { + unless ( $self->CurrentUserHasRight('ShowTicket') ) { + return ($self->loc("Permission Denied") ); + } + } + + if ( !defined( $self->Type ) ) { + return ( $self->loc("No transaction type specified")); + } + + return ( $self->loc("[_1] by [_2]",$self->BriefDescription , $self->CreatorObj->Name )); +} + +# }}} + +# {{{ sub BriefDescription + +=head2 BriefDescription + +Returns a text string which briefly describes this transaction + +=cut + +sub BriefDescription { + my $self = shift; + + + #Check those ACLs + #If it's a comment, we need to be extra special careful + if ( $self->__Value('Type') eq 'Comment' ) { + unless ( $self->CurrentUserHasRight('ShowTicketComments') ) { + return ( $self->loc("Permission Denied") ); + } + } + + #if they ain't got rights to see, don't let em + else { + unless ( $self->CurrentUserHasRight('ShowTicket') ) { + return ( $self->loc("Permission Denied") ); + } + } + + my $type = $self->Type; #cache this, rather than calling it 30 times + + if ( !defined( $type ) ) { + return $self->loc("No transaction type specified"); + } + + if ( $type eq 'Create' ) { + return ($self->loc("Ticket created")); + } + elsif ( $type =~ /Status/ ) { + if ( $self->Field eq 'Status' ) { + if ( $self->NewValue eq 'deleted' ) { + return ($self->loc("Ticket deleted")); + } + else { + return ( $self->loc("Status changed from [_1] to [_2]", $self->loc($self->OldValue), $self->loc($self->NewValue) )); + + } + } + + # Generic: + my $no_value = $self->loc("(no value)"); + return ( $self->loc( "[_1] changed from [_2] to [_3]", $self->Field , ( $self->OldValue || $no_value ) , $self->NewValue )); + } + + if ( $type eq 'Correspond' ) { + return $self->loc("Correspondence added"); + } + + elsif ( $type eq 'Comment' ) { + return $self->loc("Comments added"); + } + + elsif ( $type eq 'CustomField' ) { + + my $field = $self->loc('CustomField'); + + if ( $self->Field ) { + my $cf = RT::CustomField->new( $self->CurrentUser ); + $cf->Load( $self->Field ); + $field = $cf->Name(); + } + + if ( $self->OldValue eq '' ) { + return ( $self->loc("[_1] [_2] added", $field, $self->NewValue) ); + } + elsif ( $self->NewValue eq '' ) { + return ( $self->loc("[_1] [_2] deleted", $field, $self->OldValue) ); + + } + else { + return $self->loc("[_1] [_2] changed to [_3]", $field, $self->OldValue, $self->NewValue ); + } + } + + elsif ( $type eq 'Untake' ) { + return $self->loc("Untaken"); + } + + elsif ( $type eq "Take" ) { + return $self->loc("Taken"); + } + + elsif ( $type eq "Force" ) { + my $Old = RT::User->new( $self->CurrentUser ); + $Old->Load( $self->OldValue ); + my $New = RT::User->new( $self->CurrentUser ); + $New->Load( $self->NewValue ); + + return $self->loc("Owner forcibly changed from [_1] to [_2]" , $Old->Name , $New->Name); + } + elsif ( $type eq "Steal" ) { + my $Old = RT::User->new( $self->CurrentUser ); + $Old->Load( $self->OldValue ); + return $self->loc("Stolen from [_1] ", $Old->Name); + } + + elsif ( $type eq "Give" ) { + my $New = RT::User->new( $self->CurrentUser ); + $New->Load( $self->NewValue ); + return $self->loc( "Given to [_1]", $New->Name ); + } + + elsif ( $type eq 'AddWatcher' ) { + my $principal = RT::Principal->new($self->CurrentUser); + $principal->Load($self->NewValue); + return $self->loc( "[_1] [_2] added", $self->Field, $principal->Object->Name); + } + + elsif ( $type eq 'DelWatcher' ) { + my $principal = RT::Principal->new($self->CurrentUser); + $principal->Load($self->OldValue); + return $self->loc( "[_1] [_2] deleted", $self->Field, $principal->Object->Name); + } + + elsif ( $type eq 'Subject' ) { + return $self->loc( "Subject changed to [_1]", $self->Data ); + } + + elsif ( $type eq 'AddLink' ) { + my $value; + if ($self->NewValue) { + my $URI = RT::URI->new($self->CurrentUser); + $URI->FromURI($self->NewValue); + if ($URI->Resolver) { + $value = $URI->Resolver->AsString; + } else { + $value = $self->NewValue; + } + } + if ($self->Field eq 'DependsOn') { + return $self->loc("Dependency on [_1] added",$value); + } elsif ($self->Field eq 'DependedOnBy') { + return $self->loc("Dependency by [_1] added",$value); + + } elsif ($self->Field eq 'RefersTo') { + return $self->loc("Reference to [_1] added",$value); + } elsif ($self->Field eq 'ReferredToBy') { + return $self->loc("Reference by [_1] added",$value); + } elsif ($self->Field eq 'MemberOf') { + return $self->loc("Membership in [_1] added",$value); + } elsif ($self->Field eq 'HasMember') { + return $self->loc("Member [_1] added",$value); + } else { + return ( $self->Data ); + } + } + elsif ( $type eq 'DeleteLink' ) { + my $value; + if ($self->OldValue) { + my $URI = RT::URI->new($self->CurrentUser); + $URI->FromURI($self->OldValue); + if ($URI->Resolver) { + $value = $URI->Resolver->AsString; + } else { + $value = $self->OldValue; + } + } + + if ($self->Field eq 'DependsOn') { + return $self->loc("Dependency on [_1] deleted",$value); + } elsif ($self->Field eq 'DependedOnBy') { + return $self->loc("Dependency by [_1] deleted",$value); + + } elsif ($self->Field eq 'RefersTo') { + return $self->loc("Reference to [_1] deleted",$value); + } elsif ($self->Field eq 'ReferredToBy') { + return $self->loc("Reference by [_1] deleted",$value); + } elsif ($self->Field eq 'MemberOf') { + return $self->loc("Membership in [_1] deleted",$value); + } elsif ($self->Field eq 'HasMember') { + return $self->loc("Member [_1] deleted",$value); + } else { + return ( $self->Data ); + } + } + elsif ( $type eq 'Set' ) { + if ( $self->Field eq 'Queue' ) { + my $q1 = new RT::Queue( $self->CurrentUser ); + $q1->Load( $self->OldValue ); + my $q2 = new RT::Queue( $self->CurrentUser ); + $q2->Load( $self->NewValue ); + return $self->loc("[_1] changed from [_2] to [_3]", $self->Field , $q1->Name , $q2->Name); + } + + # Write the date/time change at local time: + elsif ($self->Field =~ /Due|Starts|Started|Told/) { + my $t1 = new RT::Date($self->CurrentUser); + $t1->Set(Format => 'ISO', Value => $self->NewValue); + my $t2 = new RT::Date($self->CurrentUser); + $t2->Set(Format => 'ISO', Value => $self->OldValue); + return $self->loc( "[_1] changed from [_2] to [_3]", $self->Field, $t2->AsString, $t1->AsString ); + } + else { + return $self->loc( "[_1] changed from [_2] to [_3]", $self->Field, $self->OldValue, $self->NewValue ); + } + } + elsif ( $type eq 'PurgeTransaction' ) { + return $self->loc("Transaction [_1] purged", $self->Data); + } + else { + return $self->loc( "Default: [_1]/[_2] changed from [_3] to [_4]", $type, $self->Field, $self->OldValue, $self->NewValue ); + + } +} + +# }}} + +# {{{ Utility methods + +# {{{ sub IsInbound + +=head2 IsInbound + +Returns true if the creator of the transaction is a requestor of the ticket. +Returns false otherwise + +=cut + +sub IsInbound { + my $self = shift; + return ( $self->TicketObj->IsRequestor( $self->CreatorObj->PrincipalId ) ); +} + +# }}} + +# }}} + +sub _ClassAccessible { + { + + id => { read => 1, type => 'int(11)', default => '' }, + EffectiveTicket => + { read => 1, write => 1, type => 'int(11)', default => '' }, + Ticket => + { read => 1, public => 1, type => 'int(11)', default => '' }, + TimeTaken => { read => 1, type => 'int(11)', default => '' }, + Type => { read => 1, type => 'varchar(20)', default => '' }, + Field => { read => 1, type => 'varchar(40)', default => '' }, + OldValue => { read => 1, type => 'varchar(255)', default => '' }, + NewValue => { read => 1, type => 'varchar(255)', default => '' }, + Data => { read => 1, type => 'varchar(100)', default => '' }, + Creator => { read => 1, auto => 1, type => 'int(11)', default => '' }, + Created => + { read => 1, auto => 1, type => 'datetime', default => '' }, + + } +}; + +# }}} + +# }}} + +# {{{ sub _Set + +sub _Set { + my $self = shift; + return ( 0, $self->loc('Transactions are immutable') ); +} + +# }}} + +# {{{ sub _Value + +=head2 _Value + +Takes the name of a table column. +Returns its value as a string, if the user passes an ACL check + +=cut + +sub _Value { + + my $self = shift; + my $field = shift; + + #if the field is public, return it. + if ( $self->_Accessible( $field, 'public' ) ) { + return ( $self->__Value($field) ); + + } + + #If it's a comment, we need to be extra special careful + if ( $self->__Value('Type') eq 'Comment' ) { + unless ( $self->CurrentUserHasRight('ShowTicketComments') ) { + return (undef); + } + } + + #if they ain't got rights to see, don't let em + else { + unless ( $self->CurrentUserHasRight('ShowTicket') ) { + return (undef); + } + } + + return ( $self->__Value($field) ); + +} + +# }}} + +# {{{ sub CurrentUserHasRight + +=head2 CurrentUserHasRight RIGHT + +Calls $self->CurrentUser->HasQueueRight for the right passed in here. +passed in here. + +=cut + +sub CurrentUserHasRight { + my $self = shift; + my $right = shift; + return ( + $self->CurrentUser->HasRight( + Right => "$right", + Object => $self->TicketObj + ) + ); +} + +# }}} + +1; diff --git a/rt/lib/RT/Transactions_Overlay.pm b/rt/lib/RT/Transactions_Overlay.pm new file mode 100644 index 000000000..3a7d4c14f --- /dev/null +++ b/rt/lib/RT/Transactions_Overlay.pm @@ -0,0 +1,86 @@ +# 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. +# +# 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 +=head1 NAME + + RT::Transactions - a collection of RT Transaction objects + +=head1 SYNOPSIS + + use RT::Transactions; + + +=head1 DESCRIPTION + + +=head1 METHODS + +=begin testing + +ok (require RT::Transactions); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +# {{{ sub _Init +sub _Init { + my $self = shift; + + $self->{'table'} = "Transactions"; + $self->{'primary_key'} = "id"; + + # By default, order by the date of the transaction, rather than ID. + $self->OrderBy( ALIAS => 'main', + FIELD => 'Created', + ORDER => 'ASC'); + + return ( $self->SUPER::_Init(@_)); +} +# }}} + +=head2 example methods + + Queue RT::Queue or Queue Id + Ticket RT::Ticket or Ticket Id + + +LimitDate + +Type TRANSTYPE +Field STRING +OldValue OLDVAL +NewValue NEWVAL +Data DATA +TimeTaken +Actor USEROBJ/USERID +ContentMatches STRING + +=cut + + +1; + diff --git a/rt/lib/RT/URI.pm b/rt/lib/RT/URI.pm new file mode 100644 index 000000000..7acc1dc98 --- /dev/null +++ b/rt/lib/RT/URI.pm @@ -0,0 +1,244 @@ +# 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. +# +# 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;; + +use strict; +use vars qw/@ISA/; +@ISA = qw(RT::Base); + +use RT::URI::base; +use Carp; + +=head1 NAME + +RT::URI + +=head1 DESCRIPTION + +This class provides a base class for URIs, such as those handled +by RT::Link objects. + +=head1 API + + + +=cut + + + + +=head2 new + +Create a new RT::URI object. + +=cut + + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless( $self, $class ); + + $self->CurrentUser(@_); + + return ($self); +} + + + +# {{{ FromObject + +=head2 FromObject <Object> + +Given a local object, such as an RT::Ticket or an RT::FM::Article, this routine will return a URI for +the local object + +=cut + +sub FromObject { + my $self = shift; + my $obj = shift; + + return undef unless $obj->can('URI'); + return $self->FromURI($obj->URI); +} + +# }}} + +# {{{ FromURI + +=head2 FromURI <URI> + +Returns a local object id for this content. You are expected to know what sort of object this is the Id +of + +=cut + +sub FromURI { + my $self = shift; + my $uri = shift; + + return undef unless ($uri); + + my $scheme; + # Special case: integers passed in as URIs must be ticket ids + if ($uri =~ /^(\d+)$/) { + $scheme = "fsck.com-rt"; + } elsif ($uri =~ /^((?:\w|\.|-)+?):/) { + $scheme = $1; + } + else { + $RT::Logger->warning("$self Could not determine a URI scheme for $uri"); + return (undef); + } + + # load up a resolver object for this scheme + $self->_GetResolver($scheme); + + unless ($self->Resolver->ParseURI($uri)) { + $RT::Logger->warning("Resolver ".ref($self->Resolver)." could not parse $uri"); + return (undef); + } + +} + +# }}} + +# {{{ _GetResolver + +=private _GetResolver <scheme> + +Gets an RT URI resolver for the scheme <scheme>. +Falls back to a null resolver. RT::URI::base. + +=cut + +sub _GetResolver { + my $self = shift; + my $scheme = shift; + + $scheme =~ s/(\.|-)/_/g; + my $resolver; + + + eval " + require RT::URI::$scheme; + \$resolver = RT::URI::$scheme->new(\$self->CurrentUser); + "; + + if ($resolver) { + $self->{'resolver'} = $resolver; + } else { + $self->{'resolver'} = RT::URI::base->new($self->CurrentUser); + } + +} + +# }}} + +# {{{ Scheme + +=head2 Scheme + +Returns a local object id for this content. You are expected to know what sort of object this is the Id +of + +=cut + +sub Scheme { + my $self = shift; + return ($self->Resolver->Scheme); + +} +# }}} +# {{{ URI + +=head2 URI + +Returns a local object id for this content. You are expected to know what sort of object this is the Id +of + +=cut + +sub URI { + my $self = shift; + return ($self->Resolver->URI); + +} +# }}} + +# {{{ Object + +=head2 Object + +Returns a local object for this content. This will usually be an RT::Ticket or somesuch + +=cut + + +sub Object { + my $self = shift; + return($self->Resolver->Object); + +} + + +# }}} + +# {{{ IsLocal + +=head2 IsLocal + +Returns a local object for this content. This will usually be an RT::Ticket or somesuch + +=cut + +sub IsLocal { + my $self = shift; + return $self->Resolver->IsLocal; +} + + +# }}} + + +=head Resolver + +Returns this URI's URI resolver object + +=cut + + +sub Resolver { + my $self =shift; + return ($self->{'resolver'}); +} + +eval "require RT::URI_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI_Vendor.pm}); +eval "require RT::URI_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI_Local.pm}); + +1; diff --git a/rt/lib/RT/URI/base.pm b/rt/lib/RT/URI/base.pm new file mode 100644 index 000000000..a599f3ad8 --- /dev/null +++ b/rt/lib/RT/URI/base.pm @@ -0,0 +1,129 @@ +# 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. +# +# 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::base; + +use strict; +use base qw(RT::Base); + +=head1 NAME + +RT::URI::base + +=head1 DESCRIPTION + +A baseclass (and fallback) RT::URI handler. Every URI handler needs to +handle the API presented here + +=cut + + +=head1 API + +=head2 new + +Create a new URI handler + +=cut + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless( $self, $class ); + $self->CurrentUser(@_); + return ($self); +} + +sub ParseObject { + my $self = shift; + my $obj = shift; + $self->{'uri'} = "unknown-object:".ref($obj); + + +} + + + +sub ParseURI { + my $self = shift; + my $uri = shift; + + if ($uri =~ /^(.*?):/) { + $self->{'scheme'} = $1; + } + $self->{'uri'} = $uri; + + +} + + +sub Object { + my $self = shift; + return undef; + +} + +sub URI { + my $self = shift; + return($self->{'uri'}); +} + +sub Scheme { + my $self = shift; + return($self->{'scheme'}); + +} + +sub HREF { + my $self = shift; + return($self->{'href'} || $self->{'uri'}); +} + +sub IsLocal { + my $self = shift; + return undef; +} + +=head2 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; + return $self->URI; +} + +eval "require RT::URI::base_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/base_Vendor.pm}); +eval "require RT::URI::base_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/base_Local.pm}); + +1; diff --git a/rt/lib/RT/URI/fsck_com_rt.pm b/rt/lib/RT/URI/fsck_com_rt.pm new file mode 100644 index 000000000..36e8f82fd --- /dev/null +++ b/rt/lib/RT/URI/fsck_com_rt.pm @@ -0,0 +1,247 @@ +# 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. +# +# 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::fsck_com_rt; + +use RT::Ticket; + +use RT::URI::base; + +use strict; +use vars qw(@ISA); +@ISA = qw/RT::URI::base/; + + + + +=head2 LocalURIPrefix + +Returns the prefix for a local ticket URI + +=begin testing + +use_ok("RT::URI::fsck_com_rt"); +my $uri = RT::URI::fsck_com_rt->new($RT::SystemUser); + +ok(ref($uri)); + +use Data::Dumper; + + +ok (UNIVERSAL::isa($uri,RT::URI::fsck_com_rt), "It's an RT::URI::fsck_com_rt"); + +ok ($uri->isa('RT::URI::base'), "It's an RT::URI::base"); +ok ($uri->isa('RT::Base'), "It's an RT::Base"); + +is ($uri->LocalURIPrefix , 'fsck.com-rt://example.com/ticket/'); + +=end testing + + + +=cut + +sub LocalURIPrefix { + my $self = shift; + my $prefix = $self->Scheme. "://$RT::Organization/ticket/"; + return ($prefix); +} + + + + + +=head2 URIForObject RT::Ticket + +Returns the RT URI for a local RT::Ticket object + +=begin testing + +my $ticket = RT::Ticket->new($RT::SystemUser); +$ticket->Load(1); +my $uri = RT::URI::fsck_com_rt->new($ticket->CurrentUser); +is($uri->LocalURIPrefix . "1" , $uri->URIForObject($ticket)); + +=end testing + +=cut + +sub URIForObject { + + my $self = shift; + + my $obj = shift; + return ($self->LocalURIPrefix. $obj->Id); +} + + +=head2 ParseObject $TicketObj + +When handed an RT::Ticekt object, figure out its URI + + +=cut + + + +=head2 ParseURI URI + +When handed an fsck.com-rt: URI, figures out things like whether its a local ticket +and what its ID is + +=cut + + +sub ParseURI { + my $self = shift; + my $uri = shift; + + my $ticket; + + if ($uri =~ /^(\d+)$/) { + $ticket = RT::Ticket->new($self->CurrentUser); + $ticket->Load($uri); + $self->{'uri'} = $ticket->URI; + } + else { + $self->{'uri'} = $uri; + } + + + + #If it's a local URI, load the ticket object and return its URI + if ( $self->IsLocal) { + + my $local_uri_prefix = $self->LocalURIPrefix; + if ($self->{'uri'} =~ /^$local_uri_prefix(\d+)$/) { + my $id = $1; + + + $ticket = RT::Ticket->new( $self->CurrentUser ); + $ticket->Load($id); + + #If we couldn't find a ticket, return undef. + unless ( defined $ticket->Id ) { + return undef; + } + } else { + return undef; + } + } + + $self->{'object'} = $ticket; + if ( UNIVERSAL::can( $ticket, 'Id' ) ) { + return ( $ticket->Id ); + } + else { + return undef; + } +} + +=head2 IsLocal + +Returns true if this URI is for a local ticket. +Returns undef otherwise. + + + +=cut + +sub IsLocal { + my $self = shift; + my $local_uri_prefix = $self->LocalURIPrefix; + if ($self->{'uri'} =~ /^$local_uri_prefix/) { + return 1; + } + else { + return undef; + } +} + + + +=head2 Object + +Returns the object for this URI, if it's local. Otherwise returns undef. + +=cut + +sub Object { + my $self = shift; + return ($self->{'object'}); + +} + +=head2 Scheme + +Return the URI scheme for RT tickets + +=cut + + +sub Scheme { + my $self = shift; + return "fsck.com-rt"; +} + +=head2 HREF + +If this is a local ticket, return an HTTP url to it. +Otherwise, return its URI + +=cut + + +sub HREF { + my $self = shift; + if ($self->IsLocal) { + return ( $RT::WebURL . "Ticket/Display.html?id=".$self->Object->Id); + } + else { + return ($self->URI); + } +} + +=head2 AsString + +Returns either a localized string 'ticket #23' or the full URI if the object is not local + +=cut + +sub AsString { + my $self = shift; + if ($self->IsLocal) { + return $self->loc("ticket #[_1]", $self->Object->Id); + + } + else { + return $self->Object->URI; + } +} + +eval "require RT::URI::fsck_com_rt_Vendor"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/fsck_com_rt_Vendor.pm}); +eval "require RT::URI::fsck_com_rt_Local"; +die $@ if ($@ && $@ !~ qr{^Can't locate RT/URI/fsck_com_rt_Local.pm}); + +1; diff --git a/rt/lib/RT/User_Overlay.pm b/rt/lib/RT/User_Overlay.pm new file mode 100644 index 000000000..e828ebd71 --- /dev/null +++ b/rt/lib/RT/User_Overlay.pm @@ -0,0 +1,1589 @@ +# 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. +# +# 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 +=head1 NAME + + RT::User - RT User object + +=head1 SYNOPSIS + + use RT::User; + +=head1 DESCRIPTION + + +=head1 METHODS + +=begin testing + +ok(require RT::User); + +=end testing + + +=cut + +use strict; +no warnings qw(redefine); + +use vars qw(%_USERS_KEY_CACHE); + +%_USERS_KEY_CACHE = (); + +use Digest::MD5; +use RT::Principals; +use RT::ACE; + + +# {{{ sub _Accessible + + +sub _ClassAccessible { + { + + id => + {read => 1, type => 'int(11)', default => ''}, + Name => + {read => 1, write => 1, public => 1, admin => 1, type => 'varchar(120)', default => ''}, + Password => + { write => 1, type => 'varchar(40)', default => ''}, + Comments => + {read => 1, write => 1, admin => 1, type => 'blob', default => ''}, + Signature => + {read => 1, write => 1, type => 'blob', default => ''}, + EmailAddress => + {read => 1, write => 1, public => 1, type => 'varchar(120)', default => ''}, + FreeformContactInfo => + {read => 1, write => 1, type => 'blob', default => ''}, + Organization => + {read => 1, write => 1, public => 1, admin => 1, type => 'varchar(200)', default => ''}, + RealName => + {read => 1, write => 1, public => 1, type => 'varchar(120)', default => ''}, + NickName => + {read => 1, write => 1, public => 1, type => 'varchar(16)', default => ''}, + Lang => + {read => 1, write => 1, public => 1, type => 'varchar(16)', default => ''}, + EmailEncoding => + {read => 1, write => 1, public => 1, type => 'varchar(16)', default => ''}, + WebEncoding => + {read => 1, write => 1, public => 1, type => 'varchar(16)', default => ''}, + ExternalContactInfoId => + {read => 1, write => 1, public => 1, admin => 1, type => 'varchar(100)', default => ''}, + ContactInfoSystem => + {read => 1, write => 1, public => 1, admin => 1, type => 'varchar(30)', default => ''}, + ExternalAuthId => + {read => 1, write => 1, public => 1, admin => 1, type => 'varchar(100)', default => ''}, + AuthSystem => + {read => 1, write => 1, public => 1, admin => 1,type => 'varchar(30)', default => ''}, + Gecos => + {read => 1, write => 1, public => 1, admin => 1, type => 'varchar(16)', default => ''}, + + PGPKey => { + {read => 1, write => 1, public => 1, admin => 1, type => 'text', default => ''}, + }, + HomePhone => + {read => 1, write => 1, type => 'varchar(30)', default => ''}, + WorkPhone => + {read => 1, write => 1, type => 'varchar(30)', default => ''}, + MobilePhone => + {read => 1, write => 1, type => 'varchar(30)', default => ''}, + PagerPhone => + {read => 1, write => 1, type => 'varchar(30)', default => ''}, + Address1 => + {read => 1, write => 1, type => 'varchar(200)', default => ''}, + Address2 => + {read => 1, write => 1, type => 'varchar(200)', default => ''}, + City => + {read => 1, write => 1, type => 'varchar(100)', default => ''}, + State => + {read => 1, write => 1, type => 'varchar(100)', default => ''}, + Zip => + {read => 1, write => 1, type => 'varchar(16)', default => ''}, + Country => + {read => 1, write => 1, type => 'varchar(50)', default => ''}, + Creator => + {read => 1, auto => 1, type => 'int(11)', default => ''}, + Created => + {read => 1, auto => 1, type => 'datetime', default => ''}, + LastUpdatedBy => + {read => 1, auto => 1, type => 'int(11)', default => ''}, + LastUpdated => + {read => 1, auto => 1, type => 'datetime', default => ''}, + + } +}; + + +# }}} + +# {{{ sub Create + +=head2 Create { PARAMHASH } + + +=begin testing + +# Make sure we can create a user + +my $u1 = RT::User->new($RT::SystemUser); +is(ref($u1), 'RT::User'); +my ($id, $msg) = $u1->Create(Name => 'CreateTest1', EmailAddress => 'create-test-1@example.com'); +ok ($id, "Creating user CreateTest1 - " . $msg ); + +# Make sure we can't create a second user with the same name +my $u2 = RT::User->new($RT::SystemUser); +($id, $msg) = $u2->Create(Name => 'CreateTest1', EmailAddress => 'create-test-2@example.com'); +ok (!$id, $msg); + + +# Make sure we can't create a second user with the same EmailAddress address +my $u3 = RT::User->new($RT::SystemUser); +($id, $msg) = $u3->Create(Name => 'CreateTest2', EmailAddress => 'create-test-1@example.com'); +ok (!$id, $msg); + +# Make sure we can create a user with no EmailAddress address +my $u4 = RT::User->new($RT::SystemUser); +($id, $msg) = $u4->Create(Name => 'CreateTest3'); +ok ($id, $msg); + +# make sure we can create a second user with no EmailAddress address +my $u5 = RT::User->new($RT::SystemUser); +($id, $msg) = $u5->Create(Name => 'CreateTest4'); +ok ($id, $msg); + +# make sure we can create a user with a blank EmailAddress address +my $u6 = RT::User->new($RT::SystemUser); +($id, $msg) = $u6->Create(Name => 'CreateTest6', EmailAddress => ''); +ok ($id, $msg); +# make sure we can create a second user with a blankEmailAddress address +my $u7 = RT::User->new($RT::SystemUser); +($id, $msg) = $u7->Create(Name => 'CreateTest7', EmailAddress => ''); +ok ($id, $msg); + +# Can we change the email address away from from ""; +($id,$msg) = $u7->SetEmailAddress('foo@bar'); +ok ($id, $msg); +# can we change the address back to ""; +($id,$msg) = $u7->SetEmailAddress(''); +ok ($id, $msg); +is ($u7->EmailAddress, ''); + + +=end testing + +=cut + + +sub Create { + my $self = shift; + my %args = ( + Privileged => 0, + Disabled => 0, + EmailAddress => '', + @_ # get the real argumentlist + ); + + + $args{'EmailAddress'} = $self->CanonicalizeEmailAddress($args{'EmailAddress'}); + + #Check the ACL + unless ( $self->CurrentUser->HasRight(Right => 'AdminUsers', Object => $RT::System) ) { + return ( 0, $self->loc('No permission to create users') ); + } + + + # Privileged is no longer a column in users + my $privileged = $args{'Privileged'}; + delete $args{'Privileged'}; + + + if ($args{'CryptedPassword'} ) { + $args{'Password'} = $args{'CryptedPassword'}; + delete $args{'CryptedPassword'}; + } + elsif ( !$args{'Password'} ) { + $args{'Password'} = '*NO-PASSWORD*'; + } + elsif ( length( $args{'Password'} ) < $RT::MinimumPasswordLength ) { + return ( 0, $self->loc("Password too short") ); + } + + else { + $args{'Password'} = $self->_GeneratePassword($args{'Password'}); + } + + #TODO Specify some sensible defaults. + + unless ( defined( $args{'Name'} ) ) { + return ( 0, $self->loc("Must specify 'Name' attribute") ); + } + + #SANITY CHECK THE NAME AND ABORT IF IT'S TAKEN + if ($RT::SystemUser) { #This only works if RT::SystemUser has been defined + my $TempUser = RT::User->new($RT::SystemUser); + $TempUser->Load( $args{'Name'} ); + return ( 0, $self->loc('Name in use') ) if ( $TempUser->Id ); + + return ( 0, $self->loc('Email address in use') ) + unless ( $self->ValidateEmailAddress( $args{'EmailAddress'} ) ); + } + else { + $RT::Logger->warning( "$self couldn't check for pre-existing users"); + } + + + $RT::Handle->BeginTransaction(); + # Groups deal with principal ids, rather than user ids. + # When creating this user, set up a principal Id for it. + my $principal = RT::Principal->new($self->CurrentUser); + my $principal_id = $principal->Create(PrincipalType => 'User', + Disabled => $args{'Disabled'}, + ObjectId => '0'); + $principal->__Set(Field => 'ObjectId', Value => $principal_id); + # If we couldn't create a principal Id, get the fuck out. + unless ($principal_id) { + $RT::Handle->Rollback(); + $RT::Logger->crit("Couldn't create a Principal on new user create. Strange things are afoot at the circle K"); + return ( 0, $self->loc('Could not create user') ); + } + + delete $args{'Disabled'}; + + $self->SUPER::Create(id => $principal_id , %args); + my $id = $self->Id; + + #If the create failed. + unless ($id) { + $RT::Logger->error("Could not create a new user - " .join('-'. %args)); + + return ( 0, $self->loc('Could not create user') ); + } + + + #TODO post 2.0 + #if ($args{'SendWelcomeMessage'}) { + # #TODO: Check if the email exists and looks valid + # #TODO: Send the user a "welcome message" + #} + + + + my $aclstash = RT::Group->new($self->CurrentUser); + my $stash_id = $aclstash->_CreateACLEquivalenceGroup($principal); + + unless ($stash_id) { + $RT::Handle->Rollback(); + $RT::Logger->crit("Couldn't stash the user in groumembers"); + return ( 0, $self->loc('Could not create user') ); + } + + $RT::Handle->Commit; + + #$RT::Logger->debug("Adding the user as a member of everyone"); + my $everyone = RT::Group->new($self->CurrentUser); + $everyone->LoadSystemInternalGroup('Everyone'); + $everyone->AddMember($self->PrincipalId); + + if ($privileged) { + my $priv = RT::Group->new($self->CurrentUser); + #$RT::Logger->debug("Making ".$self->Id." a privileged user"); + $priv->LoadSystemInternalGroup('Privileged'); + $priv->AddMember($self->PrincipalId); + } else { + my $unpriv = RT::Group->new($self->CurrentUser); + #$RT::Logger->debug("Making ".$self->Id." an unprivileged user"); + $unpriv->LoadSystemInternalGroup('Unprivileged'); + $unpriv->AddMember($self->PrincipalId); + } + + + # $RT::Logger->debug("Finished creating the user"); + return ( $id, $self->loc('User created') ); +} + +# }}} + + + +# {{{ SetPrivileged + +=head2 SetPrivileged BOOL + +If passed a true value, makes this user a member of the "Privileged" PseudoGroup. +Otherwise, makes this user a member of the "Unprivileged" pseudogroup. + +Returns a standard RT tuple of (val, msg); + +=begin testing + + +ok(my $user = RT::User->new($RT::SystemUser)); +ok($user->Load('root'), "Loaded user 'root'"); +ok($user->Privileged, "User 'root' is privileged"); +ok(my ($v,$m) = $user->SetPrivileged(0)); +ok ($v ==1, "Set unprivileged suceeded ($m)"); +ok(!$user->Privileged, "User 'root' is no longer privileged"); +ok(my ($v2,$m2) = $user->SetPrivileged(1)); +ok ($v2 ==1, "Set privileged suceeded ($m2"); +ok($user->Privileged, "User 'root' is privileged again"); + +=end testing + +=cut + +sub SetPrivileged { + my $self = shift; + my $val = shift; + + my $priv = RT::Group->new($self->CurrentUser); + $priv->LoadSystemInternalGroup('Privileged'); + + unless ($priv->Id) { + $RT::Logger->crit("Could not find Privileged pseudogroup"); + return(0,$self->loc("Failed to find 'Privileged' users pseudogroup.")); + } + + my $unpriv = RT::Group->new($self->CurrentUser); + $unpriv->LoadSystemInternalGroup('Unprivileged'); + unless ($unpriv->Id) { + $RT::Logger->crit("Could not find unprivileged pseudogroup"); + return(0,$self->loc("Failed to find 'Unprivileged' users pseudogroup")); + } + + if ($val) { + if ($priv->HasMember($self->PrincipalObj)) { + #$RT::Logger->debug("That user is already privileged"); + return (0,$self->loc("That user is already privileged")); + } + if ($unpriv->HasMember($self->PrincipalObj)) { + $unpriv->DeleteMember($self->PrincipalId); + } else { + # if we had layered transactions, life would be good + # sadly, we have to just go ahead, even if something + # bogus happened + $RT::Logger->crit("User ".$self->Id." is neither privileged nor ". + "unprivileged. something is drastically wrong."); + } + my ($status, $msg) = $priv->AddMember($self->PrincipalId); + if ($status) { + return (1, $self->loc("That user is now privileged")); + } else { + return (0, $msg); + } + } + else { + if ($unpriv->HasMember($self->PrincipalObj)) { + #$RT::Logger->debug("That user is already unprivileged"); + return (0,$self->loc("That user is already unprivileged")); + } + if ($priv->HasMember($self->PrincipalObj)) { + $priv->DeleteMember($self->PrincipalId); + } else { + # if we had layered transactions, life would be good + # sadly, we have to just go ahead, even if something + # bogus happened + $RT::Logger->crit("User ".$self->Id." is neither privileged nor ". + "unprivileged. something is drastically wrong."); + } + my ($status, $msg) = $unpriv->AddMember($self->PrincipalId); + if ($status) { + return (1, $self->loc("That user is now unprivileged")); + } else { + return (0, $msg); + } + } +} + +# }}} + +# {{{ Privileged + +=head2 Privileged + +Returns true if this user is privileged. Returns undef otherwise. + +=cut + +sub Privileged { + my $self = shift; + my $priv = RT::Group->new($self->CurrentUser); + $priv->LoadSystemInternalGroup('Privileged'); + if ($priv->HasMember($self->PrincipalObj)) { + return(1); + } + else { + return(undef); + } +} + +# }}} + +# {{{ sub _BootstrapCreate + +#create a user without validating _any_ data. + +#To be used only on database init. +# We can't localize here because it's before we _have_ a loc framework + +sub _BootstrapCreate { + my $self = shift; + my %args = (@_); + + $args{'Password'} = '*NO-PASSWORD*'; + + + $RT::Handle->BeginTransaction(); + + # Groups deal with principal ids, rather than user ids. + # When creating this user, set up a principal Id for it. + my $principal = RT::Principal->new($self->CurrentUser); + my $principal_id = $principal->Create(PrincipalType => 'User', ObjectId => '0'); + $principal->__Set(Field => 'ObjectId', Value => $principal_id); + + # If we couldn't create a principal Id, get the fuck out. + unless ($principal_id) { + $RT::Handle->Rollback(); + $RT::Logger->crit("Couldn't create a Principal on new user create. Strange things are afoot at the circle K"); + return ( 0, 'Could not create user' ); + } + $self->SUPER::Create(id => $principal_id, %args); + my $id = $self->Id; + #If the create failed. + unless ($id) { + $RT::Handle->Rollback(); + return ( 0, 'Could not create user' ) ; #never loc this + } + + my $aclstash = RT::Group->new($self->CurrentUser); + my $stash_id = $aclstash->_CreateACLEquivalenceGroup($principal); + + unless ($stash_id) { + $RT::Handle->Rollback(); + $RT::Logger->crit("Couldn't stash the user in groupmembers"); + return ( 0, $self->loc('Could not create user') ); + } + + + $RT::Handle->Commit(); + + return ( $id, 'User created' ); +} + +# }}} + +# {{{ sub Delete + +sub Delete { + my $self = shift; + + return ( 0, $self->loc('Deleting this object would violate referential integrity') ); + +} + +# }}} + +# {{{ sub Load + +=head2 Load + +Load a user object from the database. Takes a single argument. +If the argument is numerical, load by the column 'id'. Otherwise, load by +the "Name" column which is the user's textual username. + +=cut + +sub Load { + my $self = shift; + my $identifier = shift || return undef; + + #if it's an int, load by id. otherwise, load by name. + if ( $identifier !~ /\D/ ) { + $self->SUPER::LoadById($identifier); + } + else { + $self->LoadByCol( "Name", $identifier ); + } +} + +# }}} + +# {{{ sub LoadByEmail + +=head2 LoadByEmail + +Tries to load this user object from the database by the user's email address. + + +=cut + +sub LoadByEmail { + my $self = shift; + my $address = shift; + + # Never load an empty address as an email address. + unless ($address) { + return (undef); + } + + $address = $self->CanonicalizeEmailAddress($address); + + #$RT::Logger->debug("Trying to load an email address: $address\n"); + return $self->LoadByCol( "EmailAddress", $address ); +} + +# }}} + +# {{{ LoadOrCreateByEmail + +=head2 LoadOrCreateByEmail ADDRESS + +Attempts to find a user who has the provided email address. If that fails, creates an unprivileged user with +the provided email address. and loads them. + +Returns a tuple of the user's id and a status message. +0 will be returned in place of the user's id in case of failure. + +=cut + +sub LoadOrCreateByEmail { + my $self = shift; + my $email = shift; + + my ($val, $message); + + $self->LoadByEmail($email); + $message = $self->loc('User loaded'); + unless ($self->Id) { + ( $val, $message ) = $self->Create( + Name => $email, + EmailAddress => $email, + RealName => $email, + Privileged => 0, + Comments => 'Autocreated when added as a watcher'); + unless ($val) { + # Deal with the race condition of two account creations at once + $self->LoadByEmail($email); + unless ($self->Id) { + sleep 5; + $self->LoadByEmail($email); + } + if ($self->Id) { + $RT::Logger->error("Recovered from creation failure due to race condition"); + $message = $self->loc("User loaded"); + } + else { + $RT::Logger->crit("Failed to create user ".$email .": " .$message); + } + } + } + + if ($self->Id) { + return($self->Id, $message); + } + else { + return(0, $message); + } + + + } + +# }}} + +# {{{ sub ValidateEmailAddress + +=head2 ValidateEmailAddress ADDRESS + +Returns true if the email address entered is not in use by another user or is +undef or ''. Returns false if it's in use. + +=cut + +sub ValidateEmailAddress { + my $self = shift; + my $Value = shift; + + # if the email address is null, it's always valid + return (1) if ( !$Value || $Value eq "" ); + + my $TempUser = RT::User->new($RT::SystemUser); + $TempUser->LoadByEmail($Value); + + if ( $TempUser->id && ( $TempUser->id != $self->id ) ) + { # if we found a user with that address + # it's invalid to set this user's address to it + return (undef); + } + else { #it's a valid email address + return (1); + } +} + +# }}} + +# {{{ sub CanonicalizeEmailAddress + + + +=item CanonicalizeEmailAddress ADDRESS + +# CanonicalizeEmailAddress converts email addresses into canonical form. +# it takes one email address in and returns the proper canonical +# form. You can dump whatever your proper local config is in here + +=cut + +sub CanonicalizeEmailAddress { + my $self = shift; + my $email = shift; + # Example: the following rule would treat all email + # coming from a subdomain as coming from second level domain + # foo.com + if ($RT::CanonicalizeEmailAddressMatch && $RT::CanonicalizeEmailAddressReplace ) { + $email =~ s/$RT::CanonicalizeEmailAddressMatch/$RT::CanonicalizeEmailAddressReplace/gi; + } + return ($email); +} + + +# }}} + + +# {{{ Password related functions + +# {{{ sub SetRandomPassword + +=head2 SetRandomPassword + +Takes no arguments. Returns a status code and a new password or an error message. +If the status is 1, the second value returned is the new password. +If the status is anything else, the new value returned is the error code. + +=cut + +sub SetRandomPassword { + my $self = shift; + + unless ( $self->CurrentUserCanModify('Password') ) { + return ( 0, $self->loc("Permission Denied") ); + } + + my $pass = $self->GenerateRandomPassword( 6, 8 ); + + # If we have "notify user on + + my ( $val, $msg ) = $self->SetPassword($pass); + + #If we got an error return the error. + return ( 0, $msg ) unless ($val); + + #Otherwise, we changed the password, lets return it. + return ( 1, $pass ); + +} + +# }}} + +# {{{ sub ResetPassword + +=head2 ResetPassword + +Returns status, [ERROR or new password]. Resets this user\'s password to +a randomly generated pronouncable password and emails them, using a +global template called "RT_PasswordChange", which can be overridden +with global templates "RT_PasswordChange_Privileged" or "RT_PasswordChange_NonPrivileged" +for privileged and Non-privileged users respectively. + +=cut + +sub ResetPassword { + my $self = shift; + + unless ( $self->CurrentUserCanModify('Password') ) { + return ( 0, $self->loc("Permission Denied") ); + } + my ( $status, $pass ) = $self->SetRandomPassword(); + + unless ($status) { + return ( 0, "$pass" ); + } + + my $template = RT::Template->new( $self->CurrentUser ); + + if ( $self->IsPrivileged ) { + $template->LoadGlobalTemplate('RT_PasswordChange_Privileged'); + } + else { + $template->LoadGlobalTemplate('RT_PasswordChange_Privileged'); + } + + unless ( $template->Id ) { + $template->LoadGlobalTemplate('RT_PasswordChange'); + } + + unless ( $template->Id ) { + $RT::Logger->crit( "$self tried to send " + . $self->Name + . " a password reminder " + . "but couldn't find a password change template" ); + } + + my $notification = RT::Action::SendPasswordEmail->new( + TemplateObj => $template, + Argument => $pass + ); + + $notification->SetTo( $self->EmailAddress ); + + my ($ret); + $ret = $notification->Prepare(); + if ($ret) { + $ret = $notification->Commit(); + } + + if ($ret) { + return ( 1, $self->loc('New password notification sent') ); + } + else { + return ( 0, $self->loc('Notification could not be sent') ); + } + +} + +# }}} + +# {{{ sub GenerateRandomPassword + +=head2 GenerateRandomPassword MIN_LEN and MAX_LEN + +Returns a random password between MIN_LEN and MAX_LEN characters long. + +=cut + +sub GenerateRandomPassword { + my $self = shift; + my $min_length = shift; + my $max_length = shift; + + #This code derived from mpw.pl, a bit of code with a sordid history + # Its notes: + + # Perl cleaned up a bit by Jesse Vincent 1/14/2001. + # Converted to perl from C by Marc Horowitz, 1/20/2000. + # Converted to C from Multics PL/I by Bill Sommerfeld, 4/21/86. + # Original PL/I version provided by Jerry Saltzer. + + my ( $frequency, $start_freq, $total_sum, $row_sums ); + + #When munging characters, we need to know where to start counting letters from + my $a = ord('a'); + + # frequency of English digraphs (from D Edwards 1/27/66) + $frequency = [ + [ + 4, 20, 28, 52, 2, 11, 28, 4, 32, 4, 6, 62, 23, 167, + 2, 14, 0, 83, 76, 127, 7, 25, 8, 1, 9, 1 + ], # aa - az + [ + 13, 0, 0, 0, 55, 0, 0, 0, 8, 2, 0, 22, 0, 0, + 11, 0, 0, 15, 4, 2, 13, 0, 0, 0, 15, 0 + ], # ba - bz + [ + 32, 0, 7, 1, 69, 0, 0, 33, 17, 0, 10, 9, 1, 0, + 50, 3, 0, 10, 0, 28, 11, 0, 0, 0, 3, 0 + ], # ca - cz + [ + 40, 16, 9, 5, 65, 18, 3, 9, 56, 0, 1, 4, 15, 6, + 16, 4, 0, 21, 18, 53, 19, 5, 15, 0, 3, 0 + ], # da - dz + [ + 84, 20, 55, 125, 51, 40, 19, 16, 50, 1, + 4, 55, 54, 146, 35, 37, 6, 191, 149, 65, + 9, 26, 21, 12, 5, 0 + ], # ea - ez + [ + 19, 3, 5, 1, 19, 21, 1, 3, 30, 2, 0, 11, 1, 0, + 51, 0, 0, 26, 8, 47, 6, 3, 3, 0, 2, 0 + ], # fa - fz + [ + 20, 4, 3, 2, 35, 1, 3, 15, 18, 0, 0, 5, 1, 4, + 21, 1, 1, 20, 9, 21, 9, 0, 5, 0, 1, 0 + ], # ga - gz + [ + 101, 1, 3, 0, 270, 5, 1, 6, 57, 0, 0, 0, 3, 2, + 44, 1, 0, 3, 10, 18, 6, 0, 5, 0, 3, 0 + ], # ha - hz + [ + 40, 7, 51, 23, 25, 9, 11, 3, 0, 0, 2, 38, 25, 202, + 56, 12, 1, 46, 79, 117, 1, 22, 0, 4, 0, 3 + ], # ia - iz + [ + 3, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0 + ], # ja - jz + [ + 1, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 6, 2, 1, 0, 2, 0, 1, 0 + ], # ka - kz + [ + 44, 2, 5, 12, 62, 7, 5, 2, 42, 1, 1, 53, 2, 2, + 25, 1, 1, 2, 16, 23, 9, 0, 1, 0, 33, 0 + ], # la - lz + [ + 52, 14, 1, 0, 64, 0, 0, 3, 37, 0, 0, 0, 7, 1, + 17, 18, 1, 2, 12, 3, 8, 0, 1, 0, 2, 0 + ], # ma - mz + [ + 42, 10, 47, 122, 63, 19, 106, 12, 30, 1, + 6, 6, 9, 7, 54, 7, 1, 7, 44, 124, + 6, 1, 15, 0, 12, 0 + ], # na - nz + [ + 7, 12, 14, 17, 5, 95, 3, 5, 14, 0, 0, 19, 41, 134, + 13, 23, 0, 91, 23, 42, 55, 16, 28, 0, 4, 1 + ], # oa - oz + [ + 19, 1, 0, 0, 37, 0, 0, 4, 8, 0, 0, 15, 1, 0, + 27, 9, 0, 33, 14, 7, 6, 0, 0, 0, 0, 0 + ], # pa - pz + [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0 + ], # qa - qz + [ + 83, 8, 16, 23, 169, 4, 8, 8, 77, 1, 10, 5, 26, 16, + 60, 4, 0, 24, 37, 55, 6, 11, 4, 0, 28, 0 + ], # ra - rz + [ + 65, 9, 17, 9, 73, 13, 1, 47, 75, 3, 0, 7, 11, 12, + 56, 17, 6, 9, 48, 116, 35, 1, 28, 0, 4, 0 + ], # sa - sz + [ + 57, 22, 3, 1, 76, 5, 2, 330, 126, 1, + 0, 14, 10, 6, 79, 7, 0, 49, 50, 56, + 21, 2, 27, 0, 24, 0 + ], # ta - tz + [ + 11, 5, 9, 6, 9, 1, 6, 0, 9, 0, 1, 19, 5, 31, + 1, 15, 0, 47, 39, 31, 0, 3, 0, 0, 0, 0 + ], # ua - uz + [ + 7, 0, 0, 0, 72, 0, 0, 0, 28, 0, 0, 0, 0, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 + ], # va - vz + [ + 36, 1, 1, 0, 38, 0, 0, 33, 36, 0, 0, 4, 1, 8, + 15, 0, 0, 0, 4, 2, 0, 0, 1, 0, 0, 0 + ], # wa - wz + [ + 1, 0, 2, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, + 1, 5, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0 + ], # xa - xz + [ + 14, 5, 4, 2, 7, 12, 12, 6, 10, 0, 0, 3, 7, 5, + 17, 3, 0, 4, 16, 30, 0, 0, 5, 0, 0, 0 + ], # ya - yz + [ + 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ] + ]; # za - zz + + #We need to know the totals for each row + $row_sums = [ + map { + my $sum = 0; + map { $sum += $_ } @$_; + $sum; + } @$frequency + ]; + + #Frequency with which a given letter starts a word. + $start_freq = [ + 1299, 425, 725, 271, 375, 470, 93, 223, 1009, 24, + 20, 355, 379, 319, 823, 618, 21, 317, 962, 1991, + 271, 104, 516, 6, 16, 14 + ]; + + $total_sum = 0; + map { $total_sum += $_ } @$start_freq; + + my $length = $min_length + int( rand( $max_length - $min_length ) ); + + my $char = $self->GenerateRandomNextChar( $total_sum, $start_freq ); + my @word = ( $char + $a ); + for ( 2 .. $length ) { + $char = + $self->_GenerateRandomNextChar( $row_sums->[$char], + $frequency->[$char] ); + push ( @word, $char + $a ); + } + + #Return the password + return pack( "C*", @word ); + +} + +#A private helper function for RandomPassword +# Takes a row summary and a frequency chart for the next character to be searched +sub _GenerateRandomNextChar { + my $self = shift; + my ( $all, $freq ) = @_; + my ( $pos, $i ); + + for ( $pos = int( rand($all) ), $i = 0 ; + $pos >= $freq->[$i] ; + $pos -= $freq->[$i], $i++ ) + { + } + + return ($i); +} + +# }}} + +# {{{ sub SetPassword + +=head2 SetPassword + +Takes a string. Checks the string's length and sets this user's password +to that string. + +=cut + +sub SetPassword { + my $self = shift; + my $password = shift; + + unless ( $self->CurrentUserCanModify('Password') ) { + return ( 0, $self->loc('Permission Denied') ); + } + + if ( !$password ) { + return ( 0, $self->loc("No password set") ); + } + elsif ( length($password) < $RT::MinimumPasswordLength ) { + return ( 0, $self->loc("Password too short") ); + } + else { + $password = $self->_GeneratePassword($password); + return ( $self->SUPER::SetPassword( $password)); + } + +} + +=head2 _GeneratePassword PASSWORD + +returns an MD5 hash of the password passed in, in base64 encoding. + +=cut + +sub _GeneratePassword { + my $self = shift; + my $password = shift; + + my $md5 = Digest::MD5->new(); + $md5->add($password); + return ($md5->b64digest); + +} + +# }}} + +# {{{ sub IsPassword + +=head2 IsPassword + +Returns true if the passed in value is this user's password. +Returns undef otherwise. + +=cut + +sub IsPassword { + my $self = shift; + my $value = shift; + + #TODO there isn't any apparent way to legitimately ACL this + + # RT does not allow null passwords + if ( ( !defined($value) ) or ( $value eq '' ) ) { + return (undef); + } + + if ( $self->PrincipalObj->Disabled ) { + $RT::Logger->info( + "Disabled user " . $self->Name . " tried to log in" ); + return (undef); + } + + if ( ($self->__Value('Password') eq '') || + ($self->__Value('Password') eq undef) ) { + return(undef); + } + + # generate an md5 password + if ($self->_GeneratePassword($value) eq $self->__Value('Password')) { + return(1); + } + + # if it's a historical password we say ok. + + if ( $self->__Value('Password') eq crypt( $value, $self->__Value('Password') ) ) { + return (1); + } + + # no password check has succeeded. get out + + return (undef); +} + +# }}} + +# }}} + +# {{{ sub SetDisabled + +=head2 Sub SetDisabled + +Toggles the user's disabled flag. +If this flag is +set, all password checks for this user will fail. All ACL checks for this +user will fail. The user will appear in no user listings. + +=cut + +# }}} + +sub SetDisabled { + my $self = shift; + unless ( $self->CurrentUser->HasRight(Right => 'AdminUsers', Object => $RT::System) ) { + return (0, $self->loc('Permission Denied')); + } + return $self->PrincipalObj->SetDisabled(@_); +} + +sub Disabled { + my $self = shift; + return $self->PrincipalObj->Disabled(@_); +} + + +# {{{ Principal related routines + +=head2 PrincipalObj + +Returns the principal object for this user. returns an empty RT::Principal +if there's no principal object matching this user. +The response is cached. PrincipalObj should never ever change. + +=begin testing + +ok(my $u = RT::User->new($RT::SystemUser)); +ok($u->Load(1), "Loaded the first user"); +ok($u->PrincipalObj->ObjectId == 1, "user 1 is the first principal"); +ok($u->PrincipalObj->PrincipalType eq 'User' , "Principal 1 is a user, not a group"); + +=end testing + +=cut + + +sub PrincipalObj { + my $self = shift; + unless ($self->{'PrincipalObj'} && + ($self->{'PrincipalObj'}->ObjectId == $self->Id) && + ($self->{'PrincipalObj'}->PrincipalType eq 'User')) { + + $self->{'PrincipalObj'} = RT::Principal->new($self->CurrentUser); + $self->{'PrincipalObj'}->LoadByCols('ObjectId' => $self->Id, + 'PrincipalType' => 'User') ; + } + return($self->{'PrincipalObj'}); +} + + +=head2 PrincipalId + +Returns this user's PrincipalId + +=cut + +sub PrincipalId { + my $self = shift; + return $self->Id; +} + +# }}} + + + +# {{{ sub HasGroupRight + +=head2 HasGroupRight + +Takes a paramhash which can contain +these items: + GroupObj => RT::Group or Group => integer + Right => 'Right' + + +Returns 1 if this user has the right specified in the paramhash for the Group +passed in. + +Returns undef if they don't. + +=cut + +sub HasGroupRight { + my $self = shift; + my %args = ( + GroupObj => undef, + Group => undef, + Right => undef, + @_ + ); + + + if ( defined $args{'Group'} ) { + $args{'GroupObj'} = RT::Group->new( $self->CurrentUser ); + $args{'GroupObj'}->Load( $args{'Group'} ); + } + + # {{{ Validate and load up the GroupId + unless ( ( defined $args{'GroupObj'} ) and ( $args{'GroupObj'}->Id ) ) { + return undef; + } + + # }}} + + + # Figure out whether a user has the right we're asking about. + my $retval = $self->HasRight( + Object => $args{'GroupObj'}, + Right => $args{'Right'}, + ); + + return ($retval); + + +} + +# }}} + +# {{{ sub Rights testing + +=head2 Rights testing + + +=begin testing + +my $root = RT::User->new($RT::SystemUser); +$root->Load('root'); +ok($root->Id, "Found the root user"); +my $rootq = RT::Queue->new($root); +$rootq->Load(1); +ok($rootq->Id, "Loaded the first queue"); + +ok ($rootq->CurrentUser->HasRight(Right=> 'CreateTicket', Object => $rootq), "Root can create tickets"); + +my $new_user = RT::User->new($RT::SystemUser); +my ($id, $msg) = $new_user->Create(Name => 'ACLTest'); + +ok ($id, "Created a new user for acl test $msg"); + +my $q = RT::Queue->new($new_user); +$q->Load(1); +ok($q->Id, "Loaded the first queue"); + + +ok (!$q->CurrentUser->HasRight(Right => 'CreateTicket', Object => $q), "Some random user doesn't have the right to create tickets"); +ok (my ($gval, $gmsg) = $new_user->PrincipalObj->GrantRight( Right => 'CreateTicket', Object => $q), "Granted the random user the right to create tickets"); +ok ($gval, "Grant succeeded - $gmsg"); + + +ok ($q->CurrentUser->HasRight(Right => 'CreateTicket', Object => $q), "The user can create tickets after we grant him the right"); +ok (my ($gval, $gmsg) = $new_user->PrincipalObj->RevokeRight( Right => 'CreateTicket', Object => $q), "revoked the random user the right to create tickets"); +ok ($gval, "Revocation succeeded - $gmsg"); +ok (!$q->CurrentUser->HasRight(Right => 'CreateTicket', Object => $q), "The user can't create tickets anymore"); + + + + + +# Create a ticket in the queue +my $new_tick = RT::Ticket->new($RT::SystemUser); +my ($tickid, $tickmsg) = $new_tick->Create(Subject=> 'ACL Test', Queue => 'General'); +ok($tickid, "Created ticket: $tickid"); +# Make sure the user doesn't have the right to modify tickets in the queue +ok (!$new_user->HasRight( Object => $new_tick, Right => 'ModifyTicket'), "User can't modify the ticket without group membership"); +# Create a new group +my $group = RT::Group->new($RT::SystemUser); +$group->CreateUserDefinedGroup(Name => 'ACLTest'); +ok($group->Id, "Created a new group Ok"); +# Grant a group the right to modify tickets in a queue +ok(my ($gv,$gm) = $group->PrincipalObj->GrantRight( Object => $q, Right => 'ModifyTicket'),"Granted the group the right to modify tickets"); +ok($gv,"Grant succeeed - $gm"); +# Add the user to the group +ok( my ($aid, $amsg) = $group->AddMember($new_user->PrincipalId), "Added the member to the group"); +ok ($aid, "Member added to group: $amsg"); +# Make sure the user does have the right to modify tickets in the queue +ok ($new_user->HasRight( Object => $new_tick, Right => 'ModifyTicket'), "User can modify the ticket with group membership"); + + +# Remove the user from the group +ok( my ($did, $dmsg) = $group->DeleteMember($new_user->PrincipalId), "Deleted the member from the group"); +ok ($did,"Deleted the group member: $dmsg"); +# Make sure the user doesn't have the right to modify tickets in the queue +ok (!$new_user->HasRight( Object => $new_tick, Right => 'ModifyTicket'), "User can't modify the ticket without group membership"); + + +my $q_as_system = RT::Queue->new($RT::SystemUser); +$q_as_system->Load(1); +ok($q_as_system->Id, "Loaded the first queue"); + +# Create a ticket in the queue +my $new_tick2 = RT::Ticket->new($RT::SystemUser); +my ($tick2id, $tickmsg) = $new_tick2->Create(Subject=> 'ACL Test 2', Queue =>$q_as_system->Id); +ok($tick2id, "Created ticket: $tick2id"); +ok($new_tick2->QueueObj->id eq $q_as_system->Id, "Created a new ticket in queue 1"); + + +# make sure that the user can't do this without subgroup membership +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can't modify the ticket without group membership"); + +# Create a subgroup +my $subgroup = RT::Group->new($RT::SystemUser); +$subgroup->CreateUserDefinedGroup(Name => 'Subgrouptest'); +ok($subgroup->Id, "Created a new group ".$subgroup->Id."Ok"); +#Add the subgroup as a subgroup of the group +my ($said, $samsg) = $group->AddMember($subgroup->PrincipalId); +ok ($said, "Added the subgroup as a member of the group"); +# Add the user to a subgroup of the group + +my ($usaid, $usamsg) = $subgroup->AddMember($new_user->PrincipalId); +ok($usaid,"Added the user ".$new_user->Id."to the subgroup"); +# Make sure the user does have the right to modify tickets in the queue +ok ($new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can modify the ticket with subgroup membership"); + +# {{{ Deal with making sure that members of subgroups of a disabled group don't have rights + +my ($id, $msg); + ($id, $msg) = $group->SetDisabled(1); + ok ($id,$msg); +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can't modify the ticket when the group ".$group->Id. " is disabled"); + ($id, $msg) = $group->SetDisabled(0); +ok($id,$msg); +# Test what happens when we disable the group the user is a member of directly + +($id, $msg) = $subgroup->SetDisabled(1); + ok ($id,$msg); +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can't modify the ticket when the group ".$subgroup->Id. " is disabled"); + ($id, $msg) = $subgroup->SetDisabled(0); + ok ($id,$msg); +ok ($new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can modify the ticket without group membership"); + +# }}} + + +my ($usrid, $usrmsg) = $subgroup->DeleteMember($new_user->PrincipalId); +ok($usrid,"removed the user from the group - $usrmsg"); +# Make sure the user doesn't have the right to modify tickets in the queue +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can't modify the ticket without group membership"); + +#revoke the right to modify tickets in a queue +ok(($gv,$gm) = $group->PrincipalObj->RevokeRight( Object => $q, Right => 'ModifyTicket'),"Granted the group the right to modify tickets"); +ok($gv,"revoke succeeed - $gm"); + +# {{{ Test the user's right to modify a ticket as a _queue_ admincc for a right granted at the _queue_ level + +# Grant queue admin cc the right to modify ticket in the queue +ok(my ($qv,$qm) = $q_as_system->AdminCc->PrincipalObj->GrantRight( Object => $q_as_system, Right => 'ModifyTicket'),"Granted the queue adminccs the right to modify tickets"); +ok($qv, "Granted the right successfully - $qm"); + +# Add the user as a queue admincc +ok ((my $add_id, $add_msg) = $q_as_system->AddWatcher(Type => 'AdminCc', PrincipalId => $new_user->PrincipalId) , "Added the new user as a queue admincc"); +ok ($add_id, "the user is now a queue admincc - $add_msg"); + +# Make sure the user does have the right to modify tickets in the queue +ok ($new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can modify the ticket as an admincc"); +# Remove the user from the role group +ok ((my $del_id, $del_msg) = $q_as_system->DeleteWatcher(Type => 'AdminCc', PrincipalId => $new_user->PrincipalId) , "Deleted the new user as a queue admincc"); + +# Make sure the user doesn't have the right to modify tickets in the queue +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can't modify the ticket without group membership"); + +# }}} + +# {{{ Test the user's right to modify a ticket as a _ticket_ admincc with the right granted at the _queue_ level + +# Add the user as a ticket admincc +ok ((my $uadd_id, $uadd_msg) = $new_tick2->AddWatcher(Type => 'AdminCc', PrincipalId => $new_user->PrincipalId) , "Added the new user as a queue admincc"); +ok ($add_id, "the user is now a queue admincc - $add_msg"); + +# Make sure the user does have the right to modify tickets in the queue +ok ($new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can modify the ticket as an admincc"); + +# Remove the user from the role group +ok ((my $del_id, $del_msg) = $new_tick2->DeleteWatcher(Type => 'AdminCc', PrincipalId => $new_user->PrincipalId) , "Deleted the new user as a queue admincc"); + +# Make sure the user doesn't have the right to modify tickets in the queue +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can't modify the ticket without group membership"); + + +# Revoke the right to modify ticket in the queue +ok(my ($rqv,$rqm) = $q_as_system->AdminCc->PrincipalObj->RevokeRight( Object => $q_as_system, Right => 'ModifyTicket'),"Revokeed the queue adminccs the right to modify tickets"); +ok($rqv, "Revoked the right successfully - $rqm"); + +# }}} + + + +# {{{ Test the user's right to modify a ticket as a _queue_ admincc for a right granted at the _system_ level + +# Before we start Make sure the user does not have the right to modify tickets in the queue +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can not modify the ticket without it being granted"); +ok (!$new_user->HasRight( Object => $new_tick2->QueueObj, Right => 'ModifyTicket'), "User can not modify tickets in the queue without it being granted"); + +# Grant queue admin cc the right to modify ticket in the queue +ok(my ($qv,$qm) = $q_as_system->AdminCc->PrincipalObj->GrantRight( Object => $RT::System, Right => 'ModifyTicket'),"Granted the queue adminccs the right to modify tickets"); +ok($qv, "Granted the right successfully - $qm"); + +# Make sure the user can't modify the ticket before they're added as a watcher +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can not modify the ticket without being an admincc"); +ok (!$new_user->HasRight( Object => $new_tick2->QueueObj, Right => 'ModifyTicket'), "User can not modify tickets in the queue without being an admincc"); + +# Add the user as a queue admincc +ok ((my $add_id, $add_msg) = $q_as_system->AddWatcher(Type => 'AdminCc', PrincipalId => $new_user->PrincipalId) , "Added the new user as a queue admincc"); +ok ($add_id, "the user is now a queue admincc - $add_msg"); + +# Make sure the user does have the right to modify tickets in the queue +ok ($new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can modify the ticket as an admincc"); +ok ($new_user->HasRight( Object => $new_tick2->QueueObj, Right => 'ModifyTicket'), "User can modify tickets in the queue as an admincc"); +# Remove the user from the role group +ok ((my $del_id, $del_msg) = $q_as_system->DeleteWatcher(Type => 'AdminCc', PrincipalId => $new_user->PrincipalId) , "Deleted the new user as a queue admincc"); + +# Make sure the user doesn't have the right to modify tickets in the queue +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can't modify the ticket without group membership"); +ok (!$new_user->HasRight( Object => $new_tick2->QueueObj, Right => 'ModifyTicket'), "User can't modify tickets in the queue without group membership"); + +# }}} + +# {{{ Test the user's right to modify a ticket as a _ticket_ admincc with the right granted at the _queue_ level + +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can not modify the ticket without being an admincc"); +ok (!$new_user->HasRight( Object => $new_tick2->QueueObj, Right => 'ModifyTicket'), "User can not modify tickets in the queue obj without being an admincc"); + + +# Add the user as a ticket admincc +ok ((my $uadd_id, $uadd_msg) = $new_tick2->AddWatcher(Type => 'AdminCc', PrincipalId => $new_user->PrincipalId) , "Added the new user as a queue admincc"); +ok ($add_id, "the user is now a queue admincc - $add_msg"); + +# Make sure the user does have the right to modify tickets in the queue +ok ($new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can modify the ticket as an admincc"); +ok (!$new_user->HasRight( Object => $new_tick2->QueueObj, Right => 'ModifyTicket'), "User can not modify tickets in the queue obj being only a ticket admincc"); + +# Remove the user from the role group +ok ((my $del_id, $del_msg) = $new_tick2->DeleteWatcher(Type => 'AdminCc', PrincipalId => $new_user->PrincipalId) , "Deleted the new user as a queue admincc"); + +# Make sure the user doesn't have the right to modify tickets in the queue +ok (!$new_user->HasRight( Object => $new_tick2, Right => 'ModifyTicket'), "User can't modify the ticket without being an admincc"); +ok (!$new_user->HasRight( Object => $new_tick2->QueueObj, Right => 'ModifyTicket'), "User can not modify tickets in the queue obj without being an admincc"); + + +# Revoke the right to modify ticket in the queue +ok(my ($rqv,$rqm) = $q_as_system->AdminCc->PrincipalObj->RevokeRight( Object => $RT::System, Right => 'ModifyTicket'),"Revokeed the queue adminccs the right to modify tickets"); +ok($rqv, "Revoked the right successfully - $rqm"); + +# }}} + + + + +# Grant "privileged users" the system right to create users +# Create a privileged user. +# have that user create another user +# Revoke the right for privileged users to create users +# have the privileged user try to create another user and fail the ACL check + +=end testing + +=cut + +# }}} + + +# {{{ sub HasRight + +=head2 sub HasRight + +Shim around PrincipalObj->HasRight. See RT::Principal + +=cut + +sub HasRight { + + my $self = shift; + return $self->PrincipalObj->HasRight(@_); +} + +# }}} + +# {{{ sub CurrentUserCanModify + +=head2 CurrentUserCanModify RIGHT + +If the user has rights for this object, either because +he has 'AdminUsers' or (if he\'s trying to edit himself and the right isn\'t an +admin right) 'ModifySelf', return 1. otherwise, return undef. + +=cut + +sub CurrentUserCanModify { + my $self = shift; + my $right = shift; + + if ( $self->CurrentUser->HasRight(Right => 'AdminUsers', Object => $RT::System) ) { + return (1); + } + + #If the field is marked as an "administrators only" field, + # don\'t let the user touch it. + elsif ( $self->_Accessible( $right, 'admin' ) ) { + return (undef); + } + + #If the current user is trying to modify themselves + elsif ( ( $self->id == $self->CurrentUser->id ) + and ( $self->CurrentUser->HasRight(Right => 'ModifySelf', Object => $RT::System) ) ) + { + return (1); + } + + #If we don\'t have a good reason to grant them rights to modify + # by now, they lose + else { + return (undef); + } + +} + +# }}} + +# {{{ sub CurrentUserHasRight + +=head2 CurrentUserHasRight + + Takes a single argument. returns 1 if $Self->CurrentUser + has the requested right. returns undef otherwise + +=cut + +sub CurrentUserHasRight { + my $self = shift; + my $right = shift; + + return ( $self->CurrentUser->HasRight(Right => $right, Object => $RT::System) ); +} + +# }}} + +# {{{ sub _Set + +sub _Set { + my $self = shift; + + my %args = ( + Field => undef, + Value => undef, + @_ + ); + + # Nobody is allowed to futz with RT_System or Nobody + + if ( ($self->Id == $RT::SystemUser->Id ) || + ($self->Id == $RT::Nobody->Id)) { + return ( 0, $self->loc("Can not modify system users") ); + } + unless ( $self->CurrentUserCanModify( $args{'Field'} ) ) { + return ( 0, $self->loc("Permission Denied") ); + } + + #Set the new value + my ( $ret, $msg ) = $self->SUPER::_Set( + Field => $args{'Field'}, + Value => $args{'Value'} + ); + + return ( $ret, $msg ); +} + +# }}} + +# {{{ sub _Value + +=head2 _Value + +Takes the name of a table column. +Returns its value as a string, if the user passes an ACL check + +=cut + +sub _Value { + + my $self = shift; + my $field = shift; + + #If the current user doesn't have ACLs, don't let em at it. + + my @PublicFields = qw( Name EmailAddress Organization Disabled + RealName NickName Gecos ExternalAuthId + AuthSystem ExternalContactInfoId + ContactInfoSystem ); + + #if the field is public, return it. + if ( $self->_Accessible( $field, 'public' ) ) { + return ( $self->SUPER::_Value($field) ); + + } + + #If the user wants to see their own values, let them + # TODO figure ouyt a better way to deal with this + elsif ( $self->CurrentUser->Id == $self->Id ) { + return ( $self->SUPER::_Value($field) ); + } + + #If the user has the admin users right, return the field + elsif ( $self->CurrentUser->HasRight(Right =>'AdminUsers', Object => $RT::System) ) { + return ( $self->SUPER::_Value($field) ); + } + else { + return (undef); + } + +} + +# }}} + + +1; + + diff --git a/rt/lib/RT/Users_Overlay.pm b/rt/lib/RT/Users_Overlay.pm new file mode 100644 index 000000000..b397c3bc4 --- /dev/null +++ b/rt/lib/RT/Users_Overlay.pm @@ -0,0 +1,290 @@ +# BEGIN LICENSE BLOCK +# +# Copyright (c) 1996-2002 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 +=head1 NAME + + RT::Users - Collection of RT::User objects + +=head1 SYNOPSIS + + use RT::Users; + + +=head1 DESCRIPTION + + +=head1 METHODS + +=begin testing + +ok(require RT::Users); + +=end testing + +=cut + +use strict; +no warnings qw(redefine); + +# {{{ sub _Init +sub _Init { + my $self = shift; + $self->{'table'} = 'Users'; + $self->{'primary_key'} = 'id'; + + + + my @result = $self->SUPER::_Init(@_); + # By default, order by name + $self->OrderBy( ALIAS => 'main', + FIELD => 'Name', + ORDER => 'ASC' ); + + $self->{'princalias'} = $self->NewAlias('Principals'); + + $self->Join( ALIAS1 => 'main', + FIELD1 => 'id', + ALIAS2 => $self->{'princalias'}, + FIELD2 => 'id' ); + + $self->Limit( ALIAS => $self->{'princalias'}, + FIELD => 'PrincipalType', + OPERATOR => '=', + VALUE => 'User' ); + return (@result); +} + +# }}} + +# {{{ sub _DoSearch + +=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 + +sub _DoSearch { + my $self = shift; + + #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(@_) ); + +} + +# }}} +# {{{ sub LimitToEnabled + +=head2 LimitToEnabled + +Only find items that haven\'t been disabled + +=cut + +sub LimitToEnabled { + my $self = shift; + + $self->Limit( ALIAS => $self->{'princalias'}, + FIELD => 'Disabled', + VALUE => '0', + OPERATOR => '=' ); +} + +# }}} + +# {{{ LimitToEmail + +=head2 LimitToEmail + +Takes one argument. an email address. limits the returned set to +that email address + +=cut + +sub LimitToEmail { + my $self = shift; + my $addr = shift; + $self->Limit( FIELD => 'EmailAddress', VALUE => "$addr" ); +} + +# }}} + +# {{{ MemberOfGroup + +=head2 MemberOfGroup PRINCIPAL_ID + +takes one argument, a group's principal id. Limits the returned set +to members of a given group + +=cut + +sub MemberOfGroup { + my $self = shift; + my $group = shift; + + return $self->loc("No group specified") if ( !defined $group ); + + my $groupalias = $self->NewAlias('CachedGroupMembers'); + + # Join the principal to the groups table + $self->Join( ALIAS1 => $self->{'princalias'}, + FIELD1 => 'id', + ALIAS2 => $groupalias, + FIELD2 => 'MemberId' ); + + $self->Limit( ALIAS => "$groupalias", + FIELD => 'GroupId', + VALUE => "$group", + OPERATOR => "=" ); +} + +# }}} + +# {{{ LimitToPrivileged + +=head2 LimitToPrivileged + +Limits to users who can be made members of ACLs and groups + +=cut + +sub LimitToPrivileged { + my $self = shift; + + my $priv = RT::Group->new( $self->CurrentUser ); + $priv->LoadSystemInternalGroup('Privileged'); + unless ( $priv->Id ) { + $RT::Logger->crit("Couldn't find a privileged users group"); + } + $self->MemberOfGroup( $priv->PrincipalId ); +} + +# }}} + +# {{{ WhoHaveRight + +=head2 WhoHaveRight { Right => 'name', Object => $rt_object , IncludeSuperusers => undef, IncludeSubgroupMembers => undef, IncludeSystemRights => undef } + +=begin testing + +ok(my $users = RT::Users->new($RT::SystemUser)); +$users->WhoHaveRight(Object =>$RT::System, Right =>'SuperUser'); +ok($users->Count == 1, "There is one privileged superuser - Found ". $users->Count ); +# TODO: this wants more testing + + +=end testing + + +find all users who the right Right for this group, either individually +or as members of groups + + + + + +=cut + +sub WhoHaveRight { + my $self = shift; + my %args = ( Right => undef, + Object => => undef, + IncludeSystemRights => undef, + IncludeSuperusers => undef, + IncludeSubgroupMembers => 1, + @_ ); + + if (defined $args{'ObjectType'} || defined $args{'ObjectId'}) { + $RT::Logger->crit("$self WhoHaveRight called with the Obsolete ObjectId/ObjectType API"); + return(undef); + } + my @privgroups; + my $Groups = RT::Groups->new($RT::SystemUser); + $Groups->WithRight(Right=> $args{'Right'}, + Object => $args{'Object'}, + IncludeSystemRights => $args{'IncludeSystemRights'}, + IncludeSuperusers => $args{'IncludeSuperusers'}); + while (my $Group = $Groups->Next()) { + push @privgroups, $Group->Id(); + } + + $self->WhoBelongToGroups(Groups => \@privgroups, + IncludeSubgroupMembers => $args{'IncludeSubgroupMembers'}); +} + +# }}} + +# {{{ WhoBelongToGroups + +=head2 WhoBelongToGroups { Groups => ARRAYREF, IncludeSubgroupMembers => 1 } + +=cut + +sub WhoBelongToGroups { + my $self = shift; + my %args = ( Groups => undef, + IncludeSubgroupMembers => 1, + @_ ); + + # Unprivileged users can't be granted real system rights. + # is this really the right thing to be saying? + $self->LimitToPrivileged(); + + my $userprinc = $self->{'princalias'}; + my $cgm; + + # The cachedgroupmembers table is used for unrolling group memberships to allow fast lookups + # if we bind to CachedGroupMembers, we'll find all members of groups recursively. + # if we don't we'll find only 'direct' members of the group in question + + if ( $args{'IncludeSubgroupMembers'} ) { + $cgm = $self->NewAlias('CachedGroupMembers'); + } + else { + $cgm = $self->NewAlias('GroupMembers'); + } + + # {{{ Tie the users we're returning ($userprinc) to the groups that have rights granted to them ($groupprinc) + $self->Join( ALIAS1 => $cgm, FIELD1 => 'MemberId', + ALIAS2 => $userprinc, FIELD2 => 'id' ); + # }}} + + # my $and_check_groups = "($cgm.GroupId = NULL"; + foreach my $groupid (@{$args{'Groups'}}) { + $self->Limit(ALIAS => $cgm, FIELD => 'GroupId', VALUE => $groupid, QUOTEVALUE => 0, ENTRYAGGREGATOR=> 'OR') + + #$and_check_groups .= " OR $cgm.GroupId = $groupid"; + } + #$and_check_groups .= ")"; + + #$self->_AddSubClause("WhichGroup", $and_check_groups); +} +# }}} + + +1; diff --git a/rt/lib/t/00smoke.t b/rt/lib/t/00smoke.t new file mode 100644 index 000000000..4f36bb346 --- /dev/null +++ b/rt/lib/t/00smoke.t @@ -0,0 +1,14 @@ +#!/usr/bin/perl + +use Test::More qw(no_plan); + +use lib "/opt/rt3/lib"; +use RT; +ok(RT::LoadConfig); +ok(RT::Init, "Basic initialization and DB connectivity"); + +use File::Find; +File::Find::find({wanted => \&wanted}, '.'); +sub wanted { /^*\.pm\z/s && ok(require $_, "Requiring '$_'"); } + + diff --git a/rt/lib/t/00smoke.t.in b/rt/lib/t/00smoke.t.in new file mode 100644 index 000000000..11f0a9c43 --- /dev/null +++ b/rt/lib/t/00smoke.t.in @@ -0,0 +1,14 @@ +#!@PERL@ + +use Test::More qw(no_plan); + +use lib "@RT_LIB_PATH@"; +use RT; +ok(RT::LoadConfig); +ok(RT::Init, "Basic initialization and DB connectivity"); + +use File::Find; +File::Find::find({wanted => \&wanted}, '.'); +sub wanted { /^*\.pm\z/s && ok(require $_, "Requiring '$_'"); } + + diff --git a/rt/lib/t/01harness.t b/rt/lib/t/01harness.t new file mode 100644 index 000000000..98c28d2ba --- /dev/null +++ b/rt/lib/t/01harness.t @@ -0,0 +1,12 @@ +#!/usr/bin/perl + +use Test::More qw(no_plan); + +use lib "/opt/rt3/lib"; +use RT; +ok(RT::LoadConfig); +ok(RT::Init, "Basic initialization and DB connectivity"); + +my $test = shift @ARGV; +require $test; + diff --git a/rt/lib/t/01harness.t.in b/rt/lib/t/01harness.t.in new file mode 100644 index 000000000..d132330c2 --- /dev/null +++ b/rt/lib/t/01harness.t.in @@ -0,0 +1,12 @@ +#!@PERL@ + +use Test::More qw(no_plan); + +use lib "@RT_LIB_PATH@"; +use RT; +ok(RT::LoadConfig); +ok(RT::Init, "Basic initialization and DB connectivity"); + +my $test = shift @ARGV; +require $test; + diff --git a/rt/lib/t/02regression.t b/rt/lib/t/02regression.t new file mode 100644 index 000000000..62b4e9a69 --- /dev/null +++ b/rt/lib/t/02regression.t @@ -0,0 +1,44 @@ +#!/usr/bin/perl + +use Test::More qw(no_plan); + +use lib "/opt/rt3/lib"; +use RT; +ok(RT::LoadConfig); +ok(RT::Init, "Basic initialization and DB connectivity"); + +# Create a new queue +use_ok(RT::Queue); +my $q = RT::Queue->new($RT::SystemUser); + +$q->Load('regression'); +if ($q->id != 0) { + die "Regression tests not starting with a clean DB. Bailing"; +} + +my ($id, $msg) = $q->Create( Name => 'Regression', + Description => 'A regression test queue', + CorrespondAddress => 'correspond@a', + CommentAddress => 'comment@a'); + +isnt($id, 0, "Queue was created sucessfully - $msg"); + +my $q2 = RT::Queue->new($RT::SystemUser); + +ok($q2->Load($id)); +is($q2->id, $id, "Sucessfully loaded the queue again"); +is($q2->Name, 'Regression'); +is($q2->Description, 'A regression test queue'); +is($q2->CorrespondAddress, 'correspond@a'); +is($q2->CommentAddress, 'comment@a'); + + +use File::Find; +File::Find::find({wanted => \&wanted_autogen}, 'lib/t/autogen'); +sub wanted_autogen { /^autogen.*\.t\z/s && require $_; } + +File::Find::find({wanted => \&wanted_regression}, 'lib/t/regression'); +sub wanted_regression { /^*\.t\z/s && require $_; } + +require "lib/t/03web.pl"; +require "lib/t/04_send_email.pl"; diff --git a/rt/lib/t/02regression.t.in b/rt/lib/t/02regression.t.in new file mode 100644 index 000000000..51cd7e378 --- /dev/null +++ b/rt/lib/t/02regression.t.in @@ -0,0 +1,44 @@ +#!@PERL@ + +use Test::More qw(no_plan); + +use lib "@RT_LIB_PATH@"; +use RT; +ok(RT::LoadConfig); +ok(RT::Init, "Basic initialization and DB connectivity"); + +# Create a new queue +use_ok(RT::Queue); +my $q = RT::Queue->new($RT::SystemUser); + +$q->Load('regression'); +if ($q->id != 0) { + die "Regression tests not starting with a clean DB. Bailing"; +} + +my ($id, $msg) = $q->Create( Name => 'Regression', + Description => 'A regression test queue', + CorrespondAddress => 'correspond@a', + CommentAddress => 'comment@a'); + +isnt($id, 0, "Queue was created sucessfully - $msg"); + +my $q2 = RT::Queue->new($RT::SystemUser); + +ok($q2->Load($id)); +is($q2->id, $id, "Sucessfully loaded the queue again"); +is($q2->Name, 'Regression'); +is($q2->Description, 'A regression test queue'); +is($q2->CorrespondAddress, 'correspond@a'); +is($q2->CommentAddress, 'comment@a'); + + +use File::Find; +File::Find::find({wanted => \&wanted_autogen}, 'lib/t/autogen'); +sub wanted_autogen { /^autogen.*\.t\z/s && require $_; } + +File::Find::find({wanted => \&wanted_regression}, 'lib/t/regression'); +sub wanted_regression { /^*\.t\z/s && require $_; } + +require "lib/t/03web.pl"; +require "lib/t/04_send_email.pl"; diff --git a/rt/lib/t/03web.pl b/rt/lib/t/03web.pl new file mode 100644 index 000000000..4500ff281 --- /dev/null +++ b/rt/lib/t/03web.pl @@ -0,0 +1,62 @@ +#!/usr/bin/perl + +use strict; +use WWW::Mechanize; +use HTTP::Request::Common; +use HTTP::Cookies; +use LWP; + +my $cookie_jar = HTTP::Cookies->new; +my $agent = WWW::Mechanize->new(); + +# give the agent a place to stash the cookies + +$agent->cookie_jar($cookie_jar); + + +# get the top page +my $url = "http://localhost/"; +$agent->get($url); + +is ($agent->{'status'}, 200, "Loaded a page"); + + +# {{{ test a login + +# follow the link marked "Login" + +ok($agent->{form}->find_input('user')); + +ok($agent->{form}->find_input('pass')); +ok ($agent->{'content'} =~ /username:/i); +$agent->field( 'user' => 'root' ); +$agent->field( 'pass' => 'password' ); +# the field isn't named, so we have to click link 0 +$agent->click(0); +is($agent->{'status'}, 200, "Fetched the page ok"); +ok( $agent->{'content'} =~ /Logout/i, "Found a logout link"); + + +use File::Find; +find ( \&wanted , 'html/'); + +sub wanted { + -f && /\.html$/ && $_ !~ /Logout.html$/ && test_get($File::Find::name); +} + +sub test_get { + my $file = shift; + + + $file =~ s#^html/##; + ok ($agent->get("$url/$file", "GET $url/$file")); + is ($agent->{'status'}, 200, "Loaded $file"); + ok( $agent->{'content'} =~ /Logout/i, "Found a logout link on $file "); + ok( $agent->{'content'} !~ /Not logged in/i, "Still logged in for $file"); + ok( $agent->{'content'} !~ /System error/i, "Didn't get a Mason compilation error on $file"); + +} + +# }}} + +1; diff --git a/rt/lib/t/03web.pl.in b/rt/lib/t/03web.pl.in new file mode 100644 index 000000000..abe446eeb --- /dev/null +++ b/rt/lib/t/03web.pl.in @@ -0,0 +1,62 @@ +#!@PERL@ + +use strict; +use WWW::Mechanize; +use HTTP::Request::Common; +use HTTP::Cookies; +use LWP; + +my $cookie_jar = HTTP::Cookies->new; +my $agent = WWW::Mechanize->new(); + +# give the agent a place to stash the cookies + +$agent->cookie_jar($cookie_jar); + + +# get the top page +my $url = "http://localhost/"; +$agent->get($url); + +is ($agent->{'status'}, 200, "Loaded a page"); + + +# {{{ test a login + +# follow the link marked "Login" + +ok($agent->{form}->find_input('user')); + +ok($agent->{form}->find_input('pass')); +ok ($agent->{'content'} =~ /username:/i); +$agent->field( 'user' => 'root' ); +$agent->field( 'pass' => 'password' ); +# the field isn't named, so we have to click link 0 +$agent->click(0); +is($agent->{'status'}, 200, "Fetched the page ok"); +ok( $agent->{'content'} =~ /Logout/i, "Found a logout link"); + + +use File::Find; +find ( \&wanted , 'html/'); + +sub wanted { + -f && /\.html$/ && $_ !~ /Logout.html$/ && test_get($File::Find::name); +} + +sub test_get { + my $file = shift; + + + $file =~ s#^html/##; + ok ($agent->get("$url/$file", "GET $url/$file")); + is ($agent->{'status'}, 200, "Loaded $file"); + ok( $agent->{'content'} =~ /Logout/i, "Found a logout link on $file "); + ok( $agent->{'content'} !~ /Not logged in/i, "Still logged in for $file"); + ok( $agent->{'content'} !~ /System error/i, "Didn't get a Mason compilation error on $file"); + +} + +# }}} + +1; diff --git a/rt/lib/t/04_send_email.pl b/rt/lib/t/04_send_email.pl new file mode 100644 index 000000000..46e3d7472 --- /dev/null +++ b/rt/lib/t/04_send_email.pl @@ -0,0 +1,389 @@ +#!/usr/bin/perl -w + +use strict; +use RT::EmailParser; +use RT::Tickets; +use RT::Action::SendEmail; + +my @_outgoing_messages; +my @scrips_fired; + +#We're not testing acls here. +my $everyone = RT::Group->new($RT::SystemUser); +$everyone->LoadSystemInternalGroup('Everyone'); +$everyone->PrincipalObj->GrantRight(Right =>'SuperUser'); + + +is (__PACKAGE__, 'main', "We're operating in the main package"); + + +{ +no warnings qw/redefine/; +sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + + main::_fired_scrip($self->ScripObj); + main::ok(ref($MIME) eq 'MIME::Entity', "hey, look. it's a mime entity"); +} + +} + +# instrument SendEmail to pass us what it's about to send. +# create a regular ticket + +my $parser = RT::EmailParser->new(); +$parser->ParseMIMEEntityFromScalar('From: root@localhost +To: rt@example.com +Subject: This is a test of new ticket creation as an unknown user + +Blah! +Foob!'); + + +use Data::Dumper; + +my $ticket = RT::Ticket->new($RT::SystemUser); +my ($id, $tid, $msg ) = $ticket->Create(Requestor => ['root@localhost'], Queue => 'general', Subject => 'I18NTest', MIMEObj => $parser->Entity); +ok ($id,$msg); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); +ok ($tick->Subject eq 'I18NTest', "failed to create the new ticket from an unprivileged account"); + +# make sure it fires scrips. +is ($#scrips_fired, 1, "Fired 2 scrips on ticket creation"); +# make sure it sends an autoreply +# make sure it sends a notification to adminccs + + +# we need to swap out SendMessage to test the new things we care about; +&utf8_redef_sendmessage; + +# create an iso 8859-1 ticket +@scrips_fired = (); + +my $content = `cat ./lib/t/data/new-ticket-from-iso-8859-1` || die "couldn't find new content"; + + + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +use RT::Interface::Email; + + RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Content =~ /H\x{e5}vard/, "It's signed by havard. yay"); + + +# make sure it fires scrips. +is ($#scrips_fired, 1, "Fired 2 scrips on ticket creation"); +# make sure it sends an autoreply + + +# make sure it sends a notification to adminccs + +# If we correspond, does it do the right thing to the outbound messages? + +$parser->ParseMIMEEntityFromScalar($content); +my ($id, $msg) = $tick->Comment(MIMEObj => $parser->Entity); +ok ($id, $msg); + +$parser->ParseMIMEEntityFromScalar($content); +($id, $msg) = $tick->Correspond(MIMEObj => $parser->Entity); +ok ($id, $msg); + + +# we need to swap out SendMessage to test the new things we care about; +&iso8859_redef_sendmessage; +$RT::EmailOutputEncoding = 'iso-8859-1'; +# create an iso 8859-1 ticket +@scrips_fired = (); + +my $content = `cat ./lib/t/data/new-ticket-from-iso-8859-1` || die "couldn't find new content"; +# be as much like the mail gateway as possible. +use RT::Interface::Email; + + RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Content =~ /H\x{e5}vard/, "It's signed by havard. yay"); + + +# make sure it fires scrips. +is ($#scrips_fired, 1, "Fired 2 scrips on ticket creation"); +# make sure it sends an autoreply + + +# make sure it sends a notification to adminccs + + +# If we correspond, does it do the right thing to the outbound messages? + +$parser->ParseMIMEEntityFromScalar($content); +my ($id, $msg) = $tick->Comment(MIMEObj => $parser->Entity); +ok ($id, $msg); + +$parser->ParseMIMEEntityFromScalar($content); +($id, $msg) = $tick->Correspond(MIMEObj => $parser->Entity); +ok ($id, $msg); + + +sub _fired_scrip { + my $scrip = shift; + push @scrips_fired, $scrip; +} + +sub utf8_redef_sendmessage { + no warnings qw/redefine/; + eval ' + sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + + my $scrip = $self->ScripObj->id; + ok(1, $self->ScripObj->ConditionObj->Name . " ".$self->ScripObj->ActionObj->Name); + main::_fired_scrip($self->ScripObj); + $MIME->make_singlepart; + main::ok( ref($MIME) eq \'MIME::Entity\', + "hey, look. it\'s a mime entity" ); + main::ok( ref( $MIME->head ) eq \'MIME::Head\', + "its mime header is a mime header. yay" ); + main::ok( $MIME->head->get(\'Content-Type\') =~ /utf-8/, + "Its content type is utf-8" ); + my $message_as_string = $MIME->bodyhandle->as_string(); + use Encode; + $message_as_string = Encode::decode_utf8($message_as_string); + main::ok( + $message_as_string =~ /H\x{e5}vard/, +"The message\'s content contains havard\'s name. this will fail if it\'s not utf8 out"); + + }'; +} + +sub iso8859_redef_sendmessage { + no warnings qw/redefine/; + eval ' + sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + + my $scrip = $self->ScripObj->id; + ok(1, $self->ScripObj->ConditionObj->Name . " ".$self->ScripObj->ActionObj->Name); + main::_fired_scrip($self->ScripObj); + $MIME->make_singlepart; + main::ok( ref($MIME) eq \'MIME::Entity\', + "hey, look. it\'s a mime entity" ); + main::ok( ref( $MIME->head ) eq \'MIME::Head\', + "its mime header is a mime header. yay" ); + main::ok( $MIME->head->get(\'Content-Type\') =~ /iso-8859-1/, + "Its content type is iso-8859-1 - " . $MIME->head->get("Content-Type") ); + my $message_as_string = $MIME->bodyhandle->as_string(); + use Encode; + $message_as_string = Encode::decode("iso-8859-1",$message_as_string); + main::ok( + $message_as_string =~ /H\x{e5}vard/, "The message\'s content contains havard\'s name. this will fail if it\'s not utf8 out"); + + }'; +} + +# {{{ test a multipart alternative containing a text-html part with an umlaut + +my $content = `cat ./lib/t/data/multipart-alternative-with-umlaut` || die "couldn't find new content"; + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +¨auts_redef_sendmessage; + +RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Content =~ /causes Error/, "We recorded the content right as text-plain"); +is ($tick->Transactions->First->Attachments->Count , 3 , "Has three attachments, presumably a text-plain, a text-html and a multipart alternative"); + +sub umlauts_redef_sendmessage { + no warnings qw/redefine/; + eval 'sub RT::Action::SendEmail::SendMessage { }'; +} + +# }}} + +# {{{ test a text-html message with an umlaut + +my $content = `cat ./lib/t/data/text-html-with-umlaut` || die "couldn't find new content"; + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +&text_html_umlauts_redef_sendmessage; + +RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Attachments->First->Content =~ /causes Error/, "We recorded the content as containing 'causes error'"); +ok ($tick->Transactions->First->Attachments->First->ContentType =~ /text\/html/, "We recorded the content as text/html"); +ok ($tick->Transactions->First->Attachments->Count ==1 , "Has one attachment, presumably a text-html and a multipart alternative"); + +sub text_html_umlauts_redef_sendmessage { + no warnings qw/redefine/; + eval 'sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + use Data::Dumper; + return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" ); + ok (is $MIME->parts, 2, "generated correspondence mime entityis composed of three parts"); + is ($MIME->head->mime_type , "multipart/mixed", "The first part is a multipart mixed". $MIME->head->mime_type); + is ($MIME->parts(0)->head->mime_type , "text/plain", "The second part is a plain"); + is ($MIME->parts(1)->head->mime_type , "text/html", "The third part is an html "); + }'; +} + +# }}} + +# {{{ test a text-html message with russian characters + +my $content = `cat ./lib/t/data/text-html-in-russian` || die "couldn't find new content"; + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +&text_html_russian_redef_sendmessage; + +RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Attachments->First->ContentType =~ /text\/html/, "We recorded the content right as text-html"); +ok ($tick->Transactions->First->Attachments->Count ==1 , "Has one attachment, presumably a text-html and a multipart alternative"); + +sub text_html_russian_redef_sendmessage { + no warnings qw/redefine/; + eval 'sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + use Data::Dumper; + return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" ); + ok (is $MIME->parts, 2, "generated correspondence mime entityis composed of three parts"); + is ($MIME->head->mime_type , "multipart/mixed", "The first part is a multipart mixed". $MIME->head->mime_type); + is ($MIME->parts(0)->head->mime_type , "text/plain", "The second part is a plain"); + is ($MIME->parts(1)->head->mime_type , "text/html", "The third part is an html "); + my $content_1251; + $content_1251 = $MIME->parts(1)->bodyhandle->as_string(); + ok ($content_1251 =~ qr{Ó÷eáíûé Öeíòp "ÊÀÄÐÛ ÄÅËÎÂÎÃÎ ÌÈÐÀ" ïpèãëaøaeò ía òpeíèíã:}, +"Content matches drugim in codepage 1251" ); + }'; +} + +# }}} + +# {{{ test a message containing a russian subject and NO content type + +unshift (@RT::EmailInputEncodings, 'koi8-r'); +$RT::EmailOutputEncoding = 'koi8-r'; +my $content = `cat ./lib/t/data/russian-subject-no-content-type` || die "couldn't find new content"; + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +&text_plain_russian_redef_sendmessage; +RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Attachments->First->ContentType =~ /text\/plain/, "We recorded the content type right"); +ok ($tick->Transactions->First->Attachments->Count ==1 , "Has one attachment, presumably a text-plain"); +is ($tick->Subject, "\x{442}\x{435}\x{441}\x{442} \x{442}\x{435}\x{441}\x{442}", "Recorded the subject right"); +sub text_plain_russian_redef_sendmessage { + no warnings qw/redefine/; + eval 'sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" ); + is ($MIME->head->mime_type , "text/plain", "The only part is text/plain "); + my $subject = $MIME->head->get("subject"); + chomp($subject); + #is( $subject , /^=\?KOI8-R\?B\?W2V4YW1wbGUuY39tICM3XSDUxdPUINTF09Q=\?=/ , "The $subject is encoded correctly"); + }; + '; +} + +shift @RT::EmailInputEncodings; +$RT::EmailOutputEncoding = 'utf-8'; +# }}} + + +# {{{ test a message containing a nested RFC 822 message + +my $content = `cat ./lib/t/data/nested-rfc-822` || die "couldn't find new content"; +ok ($content, "Loaded nested-rfc-822 to test"); + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +&text_plain_nested_redef_sendmessage; +RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); +is ($tick->Subject, "[Jonas Liljegren] Re: [Para] Niv\x{e5}er?"); +ok ($tick->Transactions->First->Attachments->First->ContentType =~ /multipart\/mixed/, "We recorded the content type right"); +is ($tick->Transactions->First->Attachments->Count , 5 , "Has one attachment, presumably a text-plain and a message RFC 822 and another plain"); +sub text_plain_nested_redef_sendmessage { + no warnings qw/redefine/; + eval 'sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" ); + is ($MIME->head->mime_type , "multipart/mixed", "It is a mixed multipart"); + my $subject = $MIME->head->get("subject"); + $subject = MIME::Base64::decode_base64( $subject); + chomp($subject); + # TODO, why does this test fail + #ok($subject =~ qr{Niv\x{e5}er}, "The subject matches the word - $subject"); + 1; + }'; +} + +# }}} + + + + +# Don't taint the environment +$everyone->PrincipalObj->RevokeRight(Right =>'SuperUser'); +1; diff --git a/rt/lib/t/04_send_email.pl.in b/rt/lib/t/04_send_email.pl.in new file mode 100644 index 000000000..e171cdc9b --- /dev/null +++ b/rt/lib/t/04_send_email.pl.in @@ -0,0 +1,389 @@ +#!@PERL@ -w + +use strict; +use RT::EmailParser; +use RT::Tickets; +use RT::Action::SendEmail; + +my @_outgoing_messages; +my @scrips_fired; + +#We're not testing acls here. +my $everyone = RT::Group->new($RT::SystemUser); +$everyone->LoadSystemInternalGroup('Everyone'); +$everyone->PrincipalObj->GrantRight(Right =>'SuperUser'); + + +is (__PACKAGE__, 'main', "We're operating in the main package"); + + +{ +no warnings qw/redefine/; +sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + + main::_fired_scrip($self->ScripObj); + main::ok(ref($MIME) eq 'MIME::Entity', "hey, look. it's a mime entity"); +} + +} + +# instrument SendEmail to pass us what it's about to send. +# create a regular ticket + +my $parser = RT::EmailParser->new(); +$parser->ParseMIMEEntityFromScalar('From: root@localhost +To: rt@example.com +Subject: This is a test of new ticket creation as an unknown user + +Blah! +Foob!'); + + +use Data::Dumper; + +my $ticket = RT::Ticket->new($RT::SystemUser); +my ($id, $tid, $msg ) = $ticket->Create(Requestor => ['root@localhost'], Queue => 'general', Subject => 'I18NTest', MIMEObj => $parser->Entity); +ok ($id,$msg); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); +ok ($tick->Subject eq 'I18NTest', "failed to create the new ticket from an unprivileged account"); + +# make sure it fires scrips. +is ($#scrips_fired, 1, "Fired 2 scrips on ticket creation"); +# make sure it sends an autoreply +# make sure it sends a notification to adminccs + + +# we need to swap out SendMessage to test the new things we care about; +&utf8_redef_sendmessage; + +# create an iso 8859-1 ticket +@scrips_fired = (); + +my $content = `cat ./lib/t/data/new-ticket-from-iso-8859-1` || die "couldn't find new content"; + + + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +use RT::Interface::Email; + + RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Content =~ /H\x{e5}vard/, "It's signed by havard. yay"); + + +# make sure it fires scrips. +is ($#scrips_fired, 1, "Fired 2 scrips on ticket creation"); +# make sure it sends an autoreply + + +# make sure it sends a notification to adminccs + +# If we correspond, does it do the right thing to the outbound messages? + +$parser->ParseMIMEEntityFromScalar($content); +my ($id, $msg) = $tick->Comment(MIMEObj => $parser->Entity); +ok ($id, $msg); + +$parser->ParseMIMEEntityFromScalar($content); +($id, $msg) = $tick->Correspond(MIMEObj => $parser->Entity); +ok ($id, $msg); + + +# we need to swap out SendMessage to test the new things we care about; +&iso8859_redef_sendmessage; +$RT::EmailOutputEncoding = 'iso-8859-1'; +# create an iso 8859-1 ticket +@scrips_fired = (); + +my $content = `cat ./lib/t/data/new-ticket-from-iso-8859-1` || die "couldn't find new content"; +# be as much like the mail gateway as possible. +use RT::Interface::Email; + + RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Content =~ /H\x{e5}vard/, "It's signed by havard. yay"); + + +# make sure it fires scrips. +is ($#scrips_fired, 1, "Fired 2 scrips on ticket creation"); +# make sure it sends an autoreply + + +# make sure it sends a notification to adminccs + + +# If we correspond, does it do the right thing to the outbound messages? + +$parser->ParseMIMEEntityFromScalar($content); +my ($id, $msg) = $tick->Comment(MIMEObj => $parser->Entity); +ok ($id, $msg); + +$parser->ParseMIMEEntityFromScalar($content); +($id, $msg) = $tick->Correspond(MIMEObj => $parser->Entity); +ok ($id, $msg); + + +sub _fired_scrip { + my $scrip = shift; + push @scrips_fired, $scrip; +} + +sub utf8_redef_sendmessage { + no warnings qw/redefine/; + eval ' + sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + + my $scrip = $self->ScripObj->id; + ok(1, $self->ScripObj->ConditionObj->Name . " ".$self->ScripObj->ActionObj->Name); + main::_fired_scrip($self->ScripObj); + $MIME->make_singlepart; + main::ok( ref($MIME) eq \'MIME::Entity\', + "hey, look. it\'s a mime entity" ); + main::ok( ref( $MIME->head ) eq \'MIME::Head\', + "its mime header is a mime header. yay" ); + main::ok( $MIME->head->get(\'Content-Type\') =~ /utf-8/, + "Its content type is utf-8" ); + my $message_as_string = $MIME->bodyhandle->as_string(); + use Encode; + $message_as_string = Encode::decode_utf8($message_as_string); + main::ok( + $message_as_string =~ /H\x{e5}vard/, +"The message\'s content contains havard\'s name. this will fail if it\'s not utf8 out"); + + }'; +} + +sub iso8859_redef_sendmessage { + no warnings qw/redefine/; + eval ' + sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + + my $scrip = $self->ScripObj->id; + ok(1, $self->ScripObj->ConditionObj->Name . " ".$self->ScripObj->ActionObj->Name); + main::_fired_scrip($self->ScripObj); + $MIME->make_singlepart; + main::ok( ref($MIME) eq \'MIME::Entity\', + "hey, look. it\'s a mime entity" ); + main::ok( ref( $MIME->head ) eq \'MIME::Head\', + "its mime header is a mime header. yay" ); + main::ok( $MIME->head->get(\'Content-Type\') =~ /iso-8859-1/, + "Its content type is iso-8859-1 - " . $MIME->head->get("Content-Type") ); + my $message_as_string = $MIME->bodyhandle->as_string(); + use Encode; + $message_as_string = Encode::decode("iso-8859-1",$message_as_string); + main::ok( + $message_as_string =~ /H\x{e5}vard/, "The message\'s content contains havard\'s name. this will fail if it\'s not utf8 out"); + + }'; +} + +# {{{ test a multipart alternative containing a text-html part with an umlaut + +my $content = `cat ./lib/t/data/multipart-alternative-with-umlaut` || die "couldn't find new content"; + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +¨auts_redef_sendmessage; + +RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Content =~ /causes Error/, "We recorded the content right as text-plain"); +is ($tick->Transactions->First->Attachments->Count , 3 , "Has three attachments, presumably a text-plain, a text-html and a multipart alternative"); + +sub umlauts_redef_sendmessage { + no warnings qw/redefine/; + eval 'sub RT::Action::SendEmail::SendMessage { }'; +} + +# }}} + +# {{{ test a text-html message with an umlaut + +my $content = `cat ./lib/t/data/text-html-with-umlaut` || die "couldn't find new content"; + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +&text_html_umlauts_redef_sendmessage; + +RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Attachments->First->Content =~ /causes Error/, "We recorded the content as containing 'causes error'"); +ok ($tick->Transactions->First->Attachments->First->ContentType =~ /text\/html/, "We recorded the content as text/html"); +ok ($tick->Transactions->First->Attachments->Count ==1 , "Has one attachment, presumably a text-html and a multipart alternative"); + +sub text_html_umlauts_redef_sendmessage { + no warnings qw/redefine/; + eval 'sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + use Data::Dumper; + return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" ); + ok (is $MIME->parts, 2, "generated correspondence mime entityis composed of three parts"); + is ($MIME->head->mime_type , "multipart/mixed", "The first part is a multipart mixed". $MIME->head->mime_type); + is ($MIME->parts(0)->head->mime_type , "text/plain", "The second part is a plain"); + is ($MIME->parts(1)->head->mime_type , "text/html", "The third part is an html "); + }'; +} + +# }}} + +# {{{ test a text-html message with russian characters + +my $content = `cat ./lib/t/data/text-html-in-russian` || die "couldn't find new content"; + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +&text_html_russian_redef_sendmessage; + +RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Attachments->First->ContentType =~ /text\/html/, "We recorded the content right as text-html"); +ok ($tick->Transactions->First->Attachments->Count ==1 , "Has one attachment, presumably a text-html and a multipart alternative"); + +sub text_html_russian_redef_sendmessage { + no warnings qw/redefine/; + eval 'sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + use Data::Dumper; + return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" ); + ok (is $MIME->parts, 2, "generated correspondence mime entityis composed of three parts"); + is ($MIME->head->mime_type , "multipart/mixed", "The first part is a multipart mixed". $MIME->head->mime_type); + is ($MIME->parts(0)->head->mime_type , "text/plain", "The second part is a plain"); + is ($MIME->parts(1)->head->mime_type , "text/html", "The third part is an html "); + my $content_1251; + $content_1251 = $MIME->parts(1)->bodyhandle->as_string(); + ok ($content_1251 =~ qr{Ó÷eáíûé Öeíòp "ÊÀÄÐÛ ÄÅËÎÂÎÃÎ ÌÈÐÀ" ïpèãëaøaeò ía òpeíèíã:}, +"Content matches drugim in codepage 1251" ); + }'; +} + +# }}} + +# {{{ test a message containing a russian subject and NO content type + +unshift (@RT::EmailInputEncodings, 'koi8-r'); +$RT::EmailOutputEncoding = 'koi8-r'; +my $content = `cat ./lib/t/data/russian-subject-no-content-type` || die "couldn't find new content"; + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +&text_plain_russian_redef_sendmessage; +RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); + +ok ($tick->Transactions->First->Attachments->First->ContentType =~ /text\/plain/, "We recorded the content type right"); +ok ($tick->Transactions->First->Attachments->Count ==1 , "Has one attachment, presumably a text-plain"); +is ($tick->Subject, "\x{442}\x{435}\x{441}\x{442} \x{442}\x{435}\x{441}\x{442}", "Recorded the subject right"); +sub text_plain_russian_redef_sendmessage { + no warnings qw/redefine/; + eval 'sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" ); + is ($MIME->head->mime_type , "text/plain", "The only part is text/plain "); + my $subject = $MIME->head->get("subject"); + chomp($subject); + #is( $subject , /^=\?KOI8-R\?B\?W2V4YW1wbGUuY39tICM3XSDUxdPUINTF09Q=\?=/ , "The $subject is encoded correctly"); + }; + '; +} + +shift @RT::EmailInputEncodings; +$RT::EmailOutputEncoding = 'utf-8'; +# }}} + + +# {{{ test a message containing a nested RFC 822 message + +my $content = `cat ./lib/t/data/nested-rfc-822` || die "couldn't find new content"; +ok ($content, "Loaded nested-rfc-822 to test"); + +$parser->ParseMIMEEntityFromScalar($content); + + +# be as much like the mail gateway as possible. +&text_plain_nested_redef_sendmessage; +RT::Interface::Email::Gateway(message => $content, queue => 1, action => 'correspond'); +my $tickets = RT::Tickets->new($RT::SystemUser); +$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC'); +$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0'); +my $tick = $tickets->First(); +ok ($tick->Id, "found ticket ".$tick->Id); +is ($tick->Subject, "[Jonas Liljegren] Re: [Para] Niv\x{e5}er?"); +ok ($tick->Transactions->First->Attachments->First->ContentType =~ /multipart\/mixed/, "We recorded the content type right"); +is ($tick->Transactions->First->Attachments->Count , 5 , "Has one attachment, presumably a text-plain and a message RFC 822 and another plain"); +sub text_plain_nested_redef_sendmessage { + no warnings qw/redefine/; + eval 'sub RT::Action::SendEmail::SendMessage { + my $self = shift; + my $MIME = shift; + return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" ); + is ($MIME->head->mime_type , "multipart/mixed", "It is a mixed multipart"); + my $subject = $MIME->head->get("subject"); + $subject = MIME::Base64::decode_base64( $subject); + chomp($subject); + # TODO, why does this test fail + #ok($subject =~ qr{Niv\x{e5}er}, "The subject matches the word - $subject"); + 1; + }'; +} + +# }}} + + + + +# Don't taint the environment +$everyone->PrincipalObj->RevokeRight(Right =>'SuperUser'); +1; diff --git a/rt/lib/t/data/8859-15-message-series/dir b/rt/lib/t/data/8859-15-message-series/dir new file mode 100644 index 000000000..b9f8ec3ba --- /dev/null +++ b/rt/lib/t/data/8859-15-message-series/dir @@ -0,0 +1,356 @@ +Return-Path: <rt-users-admin@lists.fsck.com> +Delivered-To: j@pallas.eruditorum.org +Received: from pallas.eruditorum.org (localhost [127.0.0.1]) + by pallas.eruditorum.org (Postfix) with ESMTP + id 72E3A111B3; Mon, 26 May 2003 14:50:14 -0400 (EDT) +Delivered-To: rt-users@pallas.eruditorum.org +Received: from mail-in-02.arcor-online.net (mail-in-02.arcor-online.net [151.189.21.42]) + by pallas.eruditorum.org (Postfix) with ESMTP id 15E761118D + for <rt-users@lists.fsck.com>; Mon, 26 May 2003 14:49:56 -0400 (EDT) +Received: from otdial-212-144-012-186.arcor-ip.net (otdial-212-144-011-024.arcor-ip.net [212.144.11.24]) + by mail-in-02.arcor-online.net (Postfix) with ESMTP + id 745EE15E87; Mon, 26 May 2003 20:53:15 +0200 (CEST) +From: Dirk Pape <pape-rt@inf.fu-berlin.de> +To: Jesse Vincent <jesse@bestpractical.com>, + rt-users <rt-users@lists.fsck.com> +Subject: Re: [rt-users] [rt-announce] Development Snapshot 3.0.2++ +Message-ID: <2147483647.1053982235@otdial-212-144-011-024.arcor-ip.net> +In-Reply-To: <2147483647.1053974498@[10.0.255.35]> +References: <20030523202405.GF23719@fsck.com> + <2147483647.1053974498@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +MIME-Version: 1.0 +Content-Type: multipart/mixed; boundary="==========2147500486==========" +Sender: rt-users-admin@lists.fsck.com +Errors-To: rt-users-admin@lists.fsck.com +X-BeenThere: rt-users@lists.fsck.com +X-Mailman-Version: 2.0.12 +Precedence: bulk +List-Help: <mailto:rt-users-request@lists.fsck.com?subject=help> +List-Post: <mailto:rt-users@lists.fsck.com> +List-Subscribe: <http://lists.fsck.com/mailman/listinfo/rt-users>, + <mailto:rt-users-request@lists.fsck.com?subject=subscribe> +List-Id: For users of RT: Request Tracker <rt-users.lists.fsck.com> +List-Unsubscribe: <http://lists.fsck.com/mailman/listinfo/rt-users>, + <mailto:rt-users-request@lists.fsck.com?subject=unsubscribe> +List-Archive: <http://lists.fsck.com/pipermail/rt-users/> +Date: Mon, 26 May 2003 20:50:36 +0200 +X-Spam-Status: No, hits=-2.5 required=5.0 + tests=AWL,IN_REP_TO,KNOWN_MAILING_LIST,QUOTED_EMAIL_TEXT, + REFERENCES,REPLY_WITH_QUOTES + autolearn=ham version=2.55 +X-Spam-Level: +X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp) + +--==========2147500486========== +Content-Type: text/plain; charset=us-ascii; format=flowed +Content-Transfer-Encoding: 7bit +Content-Disposition: inline + +Hello, + +here is the digest I forgot to attach. And I also forgot to say, that these +were the only messages after a restart of apache. + +The messages in the digest are the copies which I - for testing purpose - +allways queue into a mailbox just befor it is queued via rt-mailgate into +the rt-system. + +--Am Montag, 26. Mai 2003 18:41 Uhr +0200 schrieb Dirk Pape +<pape-rt@inf.fu-berlin.de>: + +> I attach a digest with mails I send one after another to the rt-system +> and they get queued into one queue, each as a new ticket. + + + + +--==========2147500486========== +Content-Type: multipart/digest; boundary="==========2147489407==========" + +--==========2147489407========== +Content-Type: message/rfc822; name="test _________" + +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 27591 invoked by uid 9804); 26 May 2003 18:10:50 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:10:46 +0200 +Received: (Qmail 27575 invoked from network); 26 May 2003 18:10:46 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:10:46 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKYe-0000Yi-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:10:44 +0200 +Received: (qmail 27557 invoked by uid 9804); 26 May 2003 18:10:44 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:10:40 +0200 +Received: (Qmail 27540 invoked from network); 26 May 2003 18:10:40 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:10:40 +0200 +Date: Mon, 26 May 2003 18:11:00 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972660@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [27578] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 + +--==========2147489407========== +Content-Type: message/rfc822; name="test _________" + +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 27754 invoked by uid 9804); 26 May 2003 18:11:24 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:11:20 +0200 +Received: (Qmail 27704 invoked from network); 26 May 2003 18:11:19 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:11:19 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKZA-0000Yy-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:11:16 +0200 +Received: (qmail 27690 invoked by uid 9804); 26 May 2003 18:11:16 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:11:13 +0200 +Received: (Qmail 27677 invoked from network); 26 May 2003 18:11:13 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:11:13 +0200 +Date: Mon, 26 May 2003 18:11:32 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972692@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [27711] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 + +--==========2147489407========== +Content-Type: message/rfc822; name="test _________" + +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 27971 invoked by uid 9804); 26 May 2003 18:12:02 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:11:52 +0200 +Received: (Qmail 27908 invoked from network); 26 May 2003 18:11:52 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:11:52 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKZj-0000ZC-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:11:51 +0200 +Received: (qmail 27848 invoked by uid 9804); 26 May 2003 18:11:50 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:11:46 +0200 +Received: (Qmail 27809 invoked from network); 26 May 2003 18:11:45 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:11:45 +0200 +Date: Mon, 26 May 2003 18:12:05 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972725@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [27911] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 + +--==========2147489407========== +Content-Type: message/rfc822; name="test _________" + +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 28283 invoked by uid 9804); 26 May 2003 18:12:39 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:12:36 +0200 +Received: (Qmail 28256 invoked from network); 26 May 2003 18:12:35 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:12:35 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKaQ-0000ZQ-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:12:34 +0200 +Received: (qmail 28236 invoked by uid 9804); 26 May 2003 18:12:34 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:12:30 +0200 +Received: (Qmail 28224 invoked from network); 26 May 2003 18:12:30 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:12:30 +0200 +Date: Mon, 26 May 2003 18:12:50 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972770@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [28259] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 + +--==========2147489407========== +Content-Type: message/rfc822; name="test _________" + +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 28578 invoked by uid 9804); 26 May 2003 18:13:20 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:13:15 +0200 +Received: (Qmail 28534 invoked from network); 26 May 2003 18:13:14 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:13:14 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKb1-0000Ze-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:13:11 +0200 +Received: (qmail 28516 invoked by uid 9804); 26 May 2003 18:13:11 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:13:08 +0200 +Received: (Qmail 28479 invoked from network); 26 May 2003 18:13:07 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:13:07 +0200 +Date: Mon, 26 May 2003 18:13:27 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972807@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [28540] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 + + +--==========2147489407========== +Content-Type: message/rfc822; name="test _________" + +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 29108 invoked by uid 9804); 26 May 2003 18:14:15 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:14:10 +0200 +Received: (Qmail 29066 invoked from network); 26 May 2003 18:14:10 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:14:10 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKbw-0000Zr-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:14:08 +0200 +Received: (qmail 29054 invoked by uid 9804); 26 May 2003 18:14:08 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:14:04 +0200 +Received: (Qmail 29036 invoked from network); 26 May 2003 18:14:04 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:14:04 +0200 +Date: Mon, 26 May 2003 18:14:24 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972864@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [29069] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 + +--==========2147489407========== +Content-Type: message/rfc822; name="test _________" + +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 29551 invoked by uid 9804); 26 May 2003 18:15:16 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:15:12 +0200 +Received: (Qmail 29521 invoked from network); 26 May 2003 18:15:12 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:15:12 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKcx-0000a4-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:15:11 +0200 +Received: (qmail 29511 invoked by uid 9804); 26 May 2003 18:15:10 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:15:07 +0200 +Received: (Qmail 29465 invoked from network); 26 May 2003 18:15:06 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:15:06 +0200 +Date: Mon, 26 May 2003 18:15:26 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972926@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [29524] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 + + +--==========2147489407==========-- + +--==========2147500486==========-- + +_______________________________________________ +rt-users mailing list +rt-users@lists.fsck.com +http://lists.fsck.com/mailman/listinfo/rt-users + +Have you read the FAQ? The RT FAQ Manager lives at http://fsck.com/rtfm + diff --git a/rt/lib/t/data/8859-15-message-series/msg1 b/rt/lib/t/data/8859-15-message-series/msg1 new file mode 100644 index 000000000..cc99c406c --- /dev/null +++ b/rt/lib/t/data/8859-15-message-series/msg1 @@ -0,0 +1,36 @@ +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 27591 invoked by uid 9804); 26 May 2003 18:10:50 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:10:46 +0200 +Received: (Qmail 27575 invoked from network); 26 May 2003 18:10:46 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:10:46 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKYe-0000Yi-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:10:44 +0200 +Received: (qmail 27557 invoked by uid 9804); 26 May 2003 18:10:44 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:10:40 +0200 +Received: (Qmail 27540 invoked from network); 26 May 2003 18:10:40 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:10:40 +0200 +Date: Mon, 26 May 2003 18:11:00 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972660@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [27578] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 + diff --git a/rt/lib/t/data/8859-15-message-series/msg2 b/rt/lib/t/data/8859-15-message-series/msg2 new file mode 100644 index 000000000..dc442cfc3 --- /dev/null +++ b/rt/lib/t/data/8859-15-message-series/msg2 @@ -0,0 +1,36 @@ +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 27754 invoked by uid 9804); 26 May 2003 18:11:24 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:11:20 +0200 +Received: (Qmail 27704 invoked from network); 26 May 2003 18:11:19 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:11:19 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKZA-0000Yy-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:11:16 +0200 +Received: (qmail 27690 invoked by uid 9804); 26 May 2003 18:11:16 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:11:13 +0200 +Received: (Qmail 27677 invoked from network); 26 May 2003 18:11:13 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:11:13 +0200 +Date: Mon, 26 May 2003 18:11:32 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972692@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [27711] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 + diff --git a/rt/lib/t/data/8859-15-message-series/msg3 b/rt/lib/t/data/8859-15-message-series/msg3 new file mode 100644 index 000000000..e23866d5f --- /dev/null +++ b/rt/lib/t/data/8859-15-message-series/msg3 @@ -0,0 +1,35 @@ +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 27971 invoked by uid 9804); 26 May 2003 18:12:02 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:11:52 +0200 +Received: (Qmail 27908 invoked from network); 26 May 2003 18:11:52 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:11:52 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKZj-0000ZC-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:11:51 +0200 +Received: (qmail 27848 invoked by uid 9804); 26 May 2003 18:11:50 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:11:46 +0200 +Received: (Qmail 27809 invoked from network); 26 May 2003 18:11:45 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:11:45 +0200 +Date: Mon, 26 May 2003 18:12:05 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972725@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [27911] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 diff --git a/rt/lib/t/data/8859-15-message-series/msg4 b/rt/lib/t/data/8859-15-message-series/msg4 new file mode 100644 index 000000000..831695cc7 --- /dev/null +++ b/rt/lib/t/data/8859-15-message-series/msg4 @@ -0,0 +1,35 @@ +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 28283 invoked by uid 9804); 26 May 2003 18:12:39 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:12:36 +0200 +Received: (Qmail 28256 invoked from network); 26 May 2003 18:12:35 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:12:35 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKaQ-0000ZQ-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:12:34 +0200 +Received: (qmail 28236 invoked by uid 9804); 26 May 2003 18:12:34 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:12:30 +0200 +Received: (Qmail 28224 invoked from network); 26 May 2003 18:12:30 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:12:30 +0200 +Date: Mon, 26 May 2003 18:12:50 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972770@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [28259] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 diff --git a/rt/lib/t/data/8859-15-message-series/msg5 b/rt/lib/t/data/8859-15-message-series/msg5 new file mode 100644 index 000000000..272c93c4f --- /dev/null +++ b/rt/lib/t/data/8859-15-message-series/msg5 @@ -0,0 +1,35 @@ +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 28578 invoked by uid 9804); 26 May 2003 18:13:20 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:13:15 +0200 +Received: (Qmail 28534 invoked from network); 26 May 2003 18:13:14 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:13:14 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKb1-0000Ze-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:13:11 +0200 +Received: (qmail 28516 invoked by uid 9804); 26 May 2003 18:13:11 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:13:08 +0200 +Received: (Qmail 28479 invoked from network); 26 May 2003 18:13:07 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:13:07 +0200 +Date: Mon, 26 May 2003 18:13:27 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972807@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [28540] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 diff --git a/rt/lib/t/data/8859-15-message-series/msg6 b/rt/lib/t/data/8859-15-message-series/msg6 new file mode 100644 index 000000000..3ae9d3b69 --- /dev/null +++ b/rt/lib/t/data/8859-15-message-series/msg6 @@ -0,0 +1,35 @@ +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 29108 invoked by uid 9804); 26 May 2003 18:14:15 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:14:10 +0200 +Received: (Qmail 29066 invoked from network); 26 May 2003 18:14:10 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:14:10 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKbw-0000Zr-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:14:08 +0200 +Received: (qmail 29054 invoked by uid 9804); 26 May 2003 18:14:08 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:14:04 +0200 +Received: (Qmail 29036 invoked from network); 26 May 2003 18:14:04 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:14:04 +0200 +Date: Mon, 26 May 2003 18:14:24 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972864@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [29069] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 diff --git a/rt/lib/t/data/8859-15-message-series/msg7 b/rt/lib/t/data/8859-15-message-series/msg7 new file mode 100644 index 000000000..6149dd644 --- /dev/null +++ b/rt/lib/t/data/8859-15-message-series/msg7 @@ -0,0 +1,36 @@ +Return-Path: <pape@inf.fu-berlin.de> +Delivered-To: pape-rtdoublecheck@mi.fu-berlin.de +Received: (qmail 29551 invoked by uid 9804); 26 May 2003 18:15:16 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:15:12 +0200 +Received: (Qmail 29521 invoked from network); 26 May 2003 18:15:12 +0200 +Received: From es.inf.fu-berlin.de (160.45.110.22) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:15:12 +0200 +Received: from leibniz ([160.45.40.10] helo=math.fu-berlin.de) + by es.inf.fu-berlin.de with smtp (Exim 3.35 #1 (Debian)) + id 19KKcx-0000a4-00 + for <staff@tec.mi.fu-berlin.de>; Mon, 26 May 2003 18:15:11 +0200 +Received: (qmail 29511 invoked by uid 9804); 26 May 2003 18:15:10 +0200 +Received: from localhost (HELO math.fu-berlin.de) (127.0.0.1) + by localhost with SMTP; 26 May 2003 18:15:07 +0200 +Received: (Qmail 29465 invoked from network); 26 May 2003 18:15:06 +0200 +Received: From eremix.inf.fu-berlin.de (HELO eremix) (160.45.113.36) + by leibniz.math.fu-berlin.de with SMTP; 26 May 2003 18:15:06 +0200 +Date: Mon, 26 May 2003 18:15:26 +0200 +From: Dirk Pape <pape@inf.fu-berlin.de> +To: staff@tec.mi.fu-berlin.de +Subject: =?ISO-8859-15?Q?test_=E4=F6=FC=DF=C4=D6=DC=DF=A4?= +Message-ID: <2147483647.1053972926@[10.0.255.35]> +X-Mailer: Mulberry/3.0.3 (Mac OS X) +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Envelope-Sender: pape@inf.fu-berlin.de +X-Virus-Scanned: by AMaViS 0.3.12pre7-U23 [29524] (NAI-uvscan@math.fu-berlin.de) +X-Remote-IP: 160.45.110.22 +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-15; FORMAT=flowed +Content-Transfer-Encoding: quoted-printable +Content-Disposition: inline + +test nochmal in anderer Queue +test =E4=F6=FC=DF=C4=D6=DC=DF=A4 + diff --git a/rt/lib/t/data/multipart-alternative-with-umlaut b/rt/lib/t/data/multipart-alternative-with-umlaut new file mode 100644 index 000000000..1ad4fe323 --- /dev/null +++ b/rt/lib/t/data/multipart-alternative-with-umlaut @@ -0,0 +1,62 @@ +Return-Path: <gst@example.com> +Delivered-To: j@pallas.eruditorum.org +Received: from vis.example.com (vis.example.com [212.68.68.251]) + by pallas.eruditorum.org (Postfix) with SMTP id 59236111C3 + for <jesse@example.com>; Thu, 12 Jun 2003 02:14:44 -0400 (EDT) +Received: (qmail 29541 invoked by uid 502); 12 Jun 2003 06:14:42 -0000 +Received: from sivd.example.com (HELO example.com) (192.168.42.1) + by 192.168.42.42 with SMTP; 12 Jun 2003 06:14:42 -0000 +Received: received from 172.20.72.174 by odie.example.com; Thu, 12 Jun 2003 08:14:27 +0200 +Received: by mailserver.example.com with Internet Mail Service (5.5.2653.19) id <LJSB7T54>; Thu, 12 Jun 2003 08:14:39 +0200 +Message-ID: <50362EC956CBD411A339009027F6257E013DD495@mailserver.example.com> +Date: Thu, 12 Jun 2003 08:14:39 +0200 +From: "Stever, Gregor" <gst@example.com> +MIME-Version: 1.0 +X-Mailer: Internet Mail Service (5.5.2653.19) +To: "'jesse@example.com'" <jesse@example.com> +Subject: RE: [rt-users] HTML-encoded mails with umlaute +Date: Thu, 12 Jun 2003 08:14:39 +0200 +Content-Type: multipart/alternative; + boundary="----_=_NextPart_001_01C330A9.E7BDD590" +X-Spam-Status: No, hits=0.0 required=5.0 + tests=AWL,HTML_50_60,HTML_MESSAGE,INVALID_DATE + version=2.55 +X-Spam-Level: +X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp) + +------_=_NextPart_001_01C330A9.E7BDD590 +Content-Type: text/plain; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable + +Hello, + +ist this kind of Messages, that causes rt to crash.=20 + +Mit freundlichen Gr=FC=DFen +Gregor Stever ^^causes Error!! + + +------_=_NextPart_001_01C330A9.E7BDD590 +Content-Type: text/html; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<HTML><HEAD> +<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; charset=3Diso-8859-= +1"> + + +<META content=3D"MSHTML 6.00.2800.1170" name=3DGENERATOR></HEAD> +<BODY> +<DIV><FONT face=3DArial><FONT size=3D2>Hello,<BR><BR>ist this kind of Messa= +ges, that=20 +causes rt to crash.<BR><BR>Mit freundlichen Gr=FC=DFen<BR>Gregor=20 +Stever ^^causes Error<SPAN=20 +class=3D975501206-12062003>!!</SPAN></FONT></FONT></DIV></BODY></HTML> + + +------_=_NextPart_001_01C330A9.E7BDD590-- + + diff --git a/rt/lib/t/data/nested-mime-sample b/rt/lib/t/data/nested-mime-sample new file mode 100644 index 000000000..8b85d948c --- /dev/null +++ b/rt/lib/t/data/nested-mime-sample @@ -0,0 +1,396 @@ +Return-Path: <Xxxxxx_Yyyyyyy@some.net> +Delivered-To: jesse@pallas.eruditorum.org +Received: by pallas.eruditorum.org (Postfix) + id B5D3E1123A; Fri, 12 Jul 2002 11:35:27 -0400 (EDT) +Delivered-To: rt-2.0-bugs@pallas.eruditorum.org +Received: from postman.some.net (postman.some.net [193.0.0.199]) + by pallas.eruditorum.org (Postfix) with SMTP id 2736011234 + for <rt-2.0-bugs@fsck.com>; Fri, 12 Jul 2002 11:35:27 -0400 (EDT) +Received: (qmail 11615 invoked by uid 0); 12 Jul 2002 15:35:26 -0000 +Received: from x22.some.net (HELO x22.some.net.some.net) (193.0.1.22) + by postman.some.net with SMTP; 12 Jul 2002 15:35:26 -0000 +Date: Fri, 12 Jul 2002 17:35:26 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +To: rt-0.0-bugs@fsck.com +Subject: Example MIME within MIME within MIME message +Message-ID: <Pine.LNX.4.44.0207121734250.25020-120000@x22.some.net> +MIME-Version: 1.0 +Content-Type: MULTIPART/MIXED; BOUNDARY="12654081-192303556-1026488126=:25020" +X-Spam-Status: No, hits=4.0 required=7.0 + tests=DOUBLE_CAPSWORD,MIME_NULL_BLOCK,MIME_MISSING_BOUNDARY + version=2.31 +Content-Length: 11478 + + This message is in MIME format. The first part should be readable text, + while the remaining parts are likely unreadable without MIME-aware tools. + Send mail to mime@docserver.cac.washington.edu for more info. + +--12654081-192303556-1026488126=:25020 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + +MIME is fun at times. + + +-- + Xxxxxx Yyyyyyy SOME + Systems/Network Engineer NCC + www.some.net - PGP000C8B1B Operations/Security + +--12654081-192303556-1026488126=:25020 +Content-Type: MULTIPART/Digest; BOUNDARY="12654081-2102091261-1026488126=:25020" +Content-ID: <Pine.LNX.4.44.0207121734322.25020@x22.some.net> +Content-Description: Digest of 2 messages + + This message is in MIME format. The first part should be readable text, + while the remaining parts are likely unreadable without MIME-aware tools. + Send mail to mime@docserver.cac.washington.edu for more info. + +--12654081-2102091261-1026488126=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121734320.25020@x22.some.net> +Content-Description: first outer message (fwd) + +Date: Fri, 12 Jul 2002 17:32:37 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: first outer message +Message-ID: <Pine.LNX.4.44.0207121732180.25020-120000@x22.some.net> +MIME-Version: 1.0 +Content-Type: MULTIPART/MIXED; BOUNDARY="12654081-113777422-1026487957=:25020" + + +--12654081-113777422-1026487957=:25020 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + +first outer message + +--12654081-113777422-1026487957=:25020 +Content-Type: MULTIPART/Digest; BOUNDARY="12654081-387266385-1026487957=:25020" +Content-ID: <Pine.LNX.4.44.0207121732222.25020@x22.some.net> +Content-Description: Digest of 2 messages + +--12654081-387266385-1026487957=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121732220.25020@x22.some.net> +Content-Description: middle message (fwd) + +Date: Fri, 12 Jul 2002 17:31:45 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: middle message +Message-ID: <Pine.LNX.4.44.0207121731190.25020-120000@x22.some.net> +MIME-Version: 1.0 +Content-Type: MULTIPART/MIXED; BOUNDARY="12654081-1711788944-1026487905=:25020" + + +--12654081-1711788944-1026487905=:25020 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + +This is the first middle message + + +--12654081-1711788944-1026487905=:25020 +Content-Type: MULTIPART/Digest; BOUNDARY="12654081-1221085552-1026487905=:25020" +Content-ID: <Pine.LNX.4.44.0207121731262.25020@x22.some.net> +Content-Description: Digest of 2 messages + +--12654081-1221085552-1026487905=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121731260.25020@x22.some.net> +Content-Description: This is the inner-most message (fwd) + +Date: Fri, 12 Jul 2002 17:30:31 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: This is the inner-most message +Message-ID: <Pine.LNX.4.44.0207121730070.25020-100000@x22.some.net> +MIME-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + + +inner-msg + + + +--12654081-1221085552-1026487905=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121731261.25020@x22.some.net> +Content-Description: another inner message (need two before pine will do the mime-digest thing) (fwd) + +Date: Fri, 12 Jul 2002 17:31:12 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: another inner message (need two before pine will do the mime-digest + thing) +Message-ID: <Pine.LNX.4.44.0207121730480.25020-100000@x22.some.net> +MIME-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + + +again + + + +--12654081-1221085552-1026487905=:25020-- +--12654081-1711788944-1026487905=:25020-- + +--12654081-387266385-1026487957=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121732221.25020@x22.some.net> +Content-Description: middle message (fwd) + +Date: Fri, 12 Jul 2002 17:32:05 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: middle message +Message-ID: <Pine.LNX.4.44.0207121731470.25020-120000@x22.some.net> +MIME-Version: 1.0 +Content-Type: MULTIPART/MIXED; BOUNDARY="12654081-1731270459-1026487925=:25020" + + +--12654081-1731270459-1026487925=:25020 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + + +This is the second middle message + + +--12654081-1731270459-1026487925=:25020 +Content-Type: MULTIPART/Digest; BOUNDARY="12654081-128832654-1026487925=:25020" +Content-ID: <Pine.LNX.4.44.0207121731502.25020@x22.some.net> +Content-Description: Digest of 2 messages + +--12654081-128832654-1026487925=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121731500.25020@x22.some.net> +Content-Description: This is the inner-most message (fwd) + +Date: Fri, 12 Jul 2002 17:30:31 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: This is the inner-most message +Message-ID: <Pine.LNX.4.44.0207121730070.25020-100000@x22.some.net> +MIME-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + + +inner-msg + + + +--12654081-128832654-1026487925=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121731501.25020@x22.some.net> +Content-Description: another inner message (need two before pine will do the mime-digest thing) (fwd) + +Date: Fri, 12 Jul 2002 17:31:12 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: another inner message (need two before pine will do the mime-digest + thing) +Message-ID: <Pine.LNX.4.44.0207121730480.25020-100000@x22.some.net> +MIME-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + + +again + + + +--12654081-128832654-1026487925=:25020-- +--12654081-1731270459-1026487925=:25020-- + +--12654081-387266385-1026487957=:25020-- +--12654081-113777422-1026487957=:25020-- + +--12654081-2102091261-1026488126=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121734321.25020@x22.some.net> +Content-Description: 2nd outer message (fwd) + +Date: Fri, 12 Jul 2002 17:32:54 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: 2nd outer message +Message-ID: <Pine.LNX.4.44.0207121732380.25020-120000@x22.some.net> +MIME-Version: 1.0 +Content-Type: MULTIPART/MIXED; BOUNDARY="12654081-1955637437-1026487974=:25020" + + +--12654081-1955637437-1026487974=:25020 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + +2nd outer message + + +--12654081-1955637437-1026487974=:25020 +Content-Type: MULTIPART/Digest; BOUNDARY="12654081-362457126-1026487974=:25020" +Content-ID: <Pine.LNX.4.44.0207121732412.25020@x22.some.net> +Content-Description: Digest of 2 messages + +--12654081-362457126-1026487974=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121732410.25020@x22.some.net> +Content-Description: middle message (fwd) + +Date: Fri, 12 Jul 2002 17:31:45 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: middle message +Message-ID: <Pine.LNX.4.44.0207121731190.25020-120000@x22.some.net> +MIME-Version: 1.0 +Content-Type: MULTIPART/MIXED; BOUNDARY="12654081-1711788944-1026487905=:25020" + + +--12654081-1711788944-1026487905=:25020 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + +This is the first middle message + + +--12654081-1711788944-1026487905=:25020 +Content-Type: MULTIPART/Digest; BOUNDARY="12654081-1221085552-1026487905=:25020" +Content-ID: <Pine.LNX.4.44.0207121731262.25020@x22.some.net> +Content-Description: Digest of 2 messages + +--12654081-1221085552-1026487905=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121731260.25020@x22.some.net> +Content-Description: This is the inner-most message (fwd) + +Date: Fri, 12 Jul 2002 17:30:31 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: This is the inner-most message +Message-ID: <Pine.LNX.4.44.0207121730070.25020-100000@x22.some.net> +MIME-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + + +inner-msg + + + +--12654081-1221085552-1026487905=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121731261.25020@x22.some.net> +Content-Description: another inner message (need two before pine will do the mime-digest thing) (fwd) + +Date: Fri, 12 Jul 2002 17:31:12 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: another inner message (need two before pine will do the mime-digest + thing) +Message-ID: <Pine.LNX.4.44.0207121730480.25020-100000@x22.some.net> +MIME-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + + +again + + + +--12654081-1221085552-1026487905=:25020-- +--12654081-1711788944-1026487905=:25020-- + +--12654081-362457126-1026487974=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121732411.25020@x22.some.net> +Content-Description: middle message (fwd) + +Date: Fri, 12 Jul 2002 17:32:05 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: middle message +Message-ID: <Pine.LNX.4.44.0207121731470.25020-120000@x22.some.net> +MIME-Version: 1.0 +Content-Type: MULTIPART/MIXED; BOUNDARY="12654081-1731270459-1026487925=:25020" + + +--12654081-1731270459-1026487925=:25020 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + + +This is the second middle message + + +--12654081-1731270459-1026487925=:25020 +Content-Type: MULTIPART/Digest; BOUNDARY="12654081-128832654-1026487925=:25020" +Content-ID: <Pine.LNX.4.44.0207121731502.25020@x22.some.net> +Content-Description: Digest of 2 messages + +--12654081-128832654-1026487925=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121731500.25020@x22.some.net> +Content-Description: This is the inner-most message (fwd) + +Date: Fri, 12 Jul 2002 17:30:31 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: This is the inner-most message +Message-ID: <Pine.LNX.4.44.0207121730070.25020-100000@x22.some.net> +MIME-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + + +inner-msg + + + +--12654081-128832654-1026487925=:25020 +Content-Type: MESSAGE/RFC822; CHARSET=US-ASCII +Content-ID: <Pine.LNX.4.44.0207121731501.25020@x22.some.net> +Content-Description: another inner message (need two before pine will do the mime-digest thing) (fwd) + +Date: Fri, 12 Jul 2002 17:31:12 +0200 (CEST) +From: Xxxxxx Yyyyyyy <Xxxxxx_Yyyyyyy@some.net> +X-X-Sender: bc@x22.some.net +To: Xxxxxx_Yyyyyyy@some.net +Subject: another inner message (need two before pine will do the mime-digest + thing) +Message-ID: <Pine.LNX.4.44.0207121730480.25020-100000@x22.some.net> +MIME-Version: 1.0 +Content-Type: TEXT/PLAIN; charset=US-ASCII + + + +again + + + +--12654081-128832654-1026487925=:25020-- +--12654081-1731270459-1026487925=:25020-- + +--12654081-362457126-1026487974=:25020-- +--12654081-1955637437-1026487974=:25020-- + +--12654081-2102091261-1026488126=:25020-- +--12654081-192303556-1026488126=:25020-- + diff --git a/rt/lib/t/data/nested-rfc-822 b/rt/lib/t/data/nested-rfc-822 new file mode 100644 index 000000000..d4f118df2 --- /dev/null +++ b/rt/lib/t/data/nested-rfc-822 @@ -0,0 +1,253 @@ +Return-Path: <jonas@astral.example.com> +Delivered-To: j@pallas.eruditorum.org +Received: from example.com (example.com [213.88.137.35]) + by pallas.eruditorum.org (Postfix) with ESMTP id 869591115E + for <jesse@bestpractical.com>; Sun, 29 Jun 2003 18:04:04 -0400 (EDT) +Received: from jonas by example.com with local (Exim 4.20) + id 19WkLK-0004Vr-0I + for jesse@bestpractical.com; Mon, 30 Jun 2003 00:08:18 +0200 +Resent-To: jesse@bestpractical.com +Resent-From: Jonas Liljegren <jonas@example.com> +Resent-Date: Mon, 30 Jun 2003 00:08:17 +0200 +Received: from mail by example.com with spam-scanned (Exim 4.20) + id 19Wayz-00068j-KO + for jonas@astral.example.com; Sun, 29 Jun 2003 14:08:42 +0200 +Received: from jonas by example.com with local (Exim 4.20) + id 19Wayz-00068g-FY + for red@example.com; Sun, 29 Jun 2003 14:08:37 +0200 +To: Redaktionen <red@example.com> +Subject: [Jonas Liljegren] Re: [Para] =?iso-8859-1?q?Niv=E5er=3F?= +From: Jonas Liljegren <jonas@example.com> +Date: Sun, 29 Jun 2003 14:08:37 +0200 +Message-ID: <87d6gxt7ay.fsf@example.com> +User-Agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.2 (gnu/linux) +MIME-Version: 1.0 +Content-Type: multipart/mixed; boundary="=-=-=" +Sender: Jonas Liljegren <jonas@astral.example.com> +Resent-Message-Id: <E19WkLK-0004Vr-0I@example.com> +Resent-Sender: Jonas Liljegren <jonas@astral.example.com> +Resent-Date: Mon, 30 Jun 2003 00:08:18 +0200 +X-Spam-Status: No, hits=-5.7 required=5.0 + tests=AWL,BAYES_10,EMAIL_ATTRIBUTION,MAILTO_WITH_SUBJ, + QUOTED_EMAIL_TEXT,USER_AGENT_GNUS_UA + version=2.55 +X-Spam-Level: +X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp) + +--=-=-= +Content-Type: text/plain; charset=iso-8859-1 +Content-Transfer-Encoding: quoted-printable + +Material f=F6r att uppdatera texten om niv=E5er. + +Denna text b=F6r dessutom ligga som ett uppslagsord och inte d=E4r den ligg= +er nu. + + +--=-=-= +Content-Type: message/rfc822 +Content-Disposition: inline + +Return-path: <list-bounces@example.com> +Received: from mail by example.com with spam-scanned (Exim 4.20) + id 19WFzq-0005i1-WE + for jonas@example.com; Sat, 28 Jun 2003 15:44:13 +0200 +Received: from localhost + ([127.0.0.1] helo=example.com ident=list) + by example.com with esmtp (Exim 4.20) + id 19WFzp-0005hf-Tz; Sat, 28 Jun 2003 15:44:05 +0200 +Received: from mail by example.com with spam-scanned (Exim 4.20) + id 19WFzh-0005hR-Bu + for list@example.com; Sat, 28 Jun 2003 15:44:03 +0200 +Received: from jonas by example.com with local (Exim 4.20) + id 19WFzh-0005hO-AO + for list@example.com; Sat, 28 Jun 2003 15:43:57 +0200 +To: list@example.com +Subject: Re: [Para] =?iso-8859-1?q?Niv=E5er=3F?= +References: <002701c33d62$170fb2e0$a33740d5@TELIA.COM> + <002301c33d66$bf6483e0$d97864d5@remotel2tu76c8> + <64753.217.210.4.156.1056801224.squirrel@example.com> +From: Jonas Liljegren <jonas@example.com> +Date: Sat, 28 Jun 2003 15:43:57 +0200 +In-Reply-To: <64753.217.210.4.156.1056801224.squirrel@example.com> (Jakob + Carlsson's message of "Sat, 28 Jun 2003 13:53:44 +0200 (CEST)") +Message-ID: <877k76uxk2.fsf@example.com> +User-Agent: Gnus/5.1002 (Gnus v5.10.2) Emacs/21.2 (gnu/linux) +X-BeenThere: list@example.com +X-Mailman-Version: 2.1.2 +Precedence: list +List-Id: Öppen lista för alla medlemmar <list.example.com> +List-Unsubscribe: <http://example.com/cgi-bin/mailman/listinfo/list>, + <mailto:list-request@example.com?subject=unsubscribe> +List-Archive: <http://example.com/pipermail/list> +List-Post: <mailto:list@example.com> +List-Help: <mailto:list-request@example.com?subject=help> +List-Subscribe: <http://example.com/cgi-bin/mailman/listinfo/list>, + <mailto:list-request@example.com?subject=subscribe> +Sender: list-bounces@example.com +Errors-To: list-bounces@example.com +X-Spam-Status: No, hits=-7.0 required=5.0 + tests=BAYES_00,EMAIL_ATTRIBUTION,IN_REP_TO,QUOTED_EMAIL_TEXT, + REFERENCES,REPLY_WITH_QUOTES,USER_AGENT_GNUS_UA + version=2.55 +X-Spam-Level: +X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp) +MIME-Version: 1.0 +Content-Type: text/plain; charset=iso-8859-1 +Content-Transfer-Encoding: quoted-printable + +"Jakob Carlsson" <esrange@example.com> writes: + +>> Om du g=E5r in p=E5 Hemsidan och sen p=E5 Torget. +>> D=E4r ser du att det st=E5r ditt anv=E4ndarnamn och +>> bredvid det Niv=E5 5. +>> Klicka p=E5 niv=E5 5 s=E5 kommer du in p=E5 en sida som +>> f=F6rklarar allt om niv=E5systemet. +> +> Bra svar. Men jag k=E4nner f=F6r att ge en kort f=F6rklaring av niv=E5-sy= +stemet. + +Jag skulle kunna l=E4gga en massa tid p=E5 at skriva samma sak om och om +igen. Fliker in h=E4r f=F6r att s=E4ga detta =E4nnu en g=E5ng...: + + * Det =E4r jag som hittat p=E5 det h=E4r med niv=E5system + + * Det =E4r en stor skillnad p=E5 hur det =E4r t=E4nkt att vara och hur det= + =E4r + nu. Jag har stora planer och en massa id=E9er jag vill genomf=F6ra. + + * Niv=E5systemet =E4r en =E5terkoppling f=F6r vad man gjort f=F6r webbplat= +sen. + Som ett tack g=F6r hj=E4lpen. + + * Systemet finns som en inspiration f=F6r de som d=E5 k=E4nner f=F6r att g= +=F6ra + mer. Men jag vill inte att det ska ge en negativ influens f=F6r de + som inte gillar niv=E5er. Var och en ska kunna v=E4lja att ignorera + niv=E5n. Speciellt b=F6r de f=F6rst=E5 att det inte har att g=F6ra med + graden av andlig utveckling, esoteriska kunskaper eller n=E5got + s=E5dant. + + * Inspirationen till niv=E5erna kommer fr=E5n spel, hemliga ordenssystem, + kosmska hiearkier, skr=E5v=E4sen, akademier, politisk administration, + osv. Det =E4r ett element av rollspel. En lek. + + * Olika niv=E5er motsvarar olika roller p=E5 webbplatsen. Webbplatsen + webbmaster och ansvbariga har en viss niv=E5, bes=F6kare och g=E4ster har + en annan niv=E5. + + * Alla datorsystem har administrat=F6rssystem f=F6r dem som sk=F6ter + systemet. Jag har valt att arrangera dessa funktioner i en skala. + Niv=E5n anger hur mycket av systemet du har r=E4tt att administrera. + + * Att ha ett niv=E5system f=F6r access g=F6r att man kan g=F6ra som p=E5 f= +ilm; + att l=E5ta de med h=F6gre access komma =E5t mer information. De med + riktigt h=F6g niv=E5 kan n=E5 topphemlig information. P=E5 denna webbpl= +ats + kan varje anv=E4ndae v=E4lja att h=E5lla vissa personliga uppgifter. Har + du h=F6g niv=E5 har du rollen som anv=E4ndaradministrat=F6r och har + tillg=E5ng till dessa uppgifter. Just nu =E4r vi tre personer med + denna niv=E5n. + + * Niv=E5systemet =E4r ett m=E5tt p=E5 p=E5litlighet. Vi ger dig h=F6gre n= +iv=E5 n=E4r + vi litar p=E5 att du inte kommer att f=F6rst=F6ra f=F6r oss. F=F6r ju h= +=F6gre + niv=E5, desto l=E4ttare kan du sabbotera inneh=E5llet. + + * P=E5 en h=F6gre niv=E5 beh=F6vs det inte bara att vi litar p=E5 att du v= +ill + v=E4l. Du m=E5ste =E4ven ha ett gott omd=F6me, teknisk f=F6rst=E5else, + intresse och logiskt t=E4nkande. Utan detta =E4r det l=E4tt h=E4nt att = +du + f=F6rst=F6r saker av misstag. + + * Vi vill uppmuntra medlemmarna att g=F6ra det som =E4r bra f=F6r + webbplatsen. Tilldelandet av h=F6gre niv=E5 ska uppmuntra till att + g=F6ra det som =E4r bra. + + * F=F6r att minska missbruk av e-postadresser visar vi e-postadresser + bara f=F6r de med lite h=F6gre niv=E5. P=E5 s=E5 vis vill vi undvika att + n=E5gon g=E5r med som medlem bara f=F6r att samla e-postadresser f=F6r a= +tt + sedan g=F6ra reklamutskick. + + * Idag n=E5r du olika niv=E5er p=E5 detta vis: + + 0. Kom in p=E5 webbplatsen som g=E4st + + 1. V=E4lj anv=E4ndarnamn och ange e-postadress + + 2. Logga in med det l=F6senord som skickats till dig + + 3. Skrivit en presentation + + 5. Presentationen har godk=E4nts + + 6. Du har svarat p=E5 ett f=E5tal fr=E5gor om dina intressen + + 7. Du har svarat p=E5 en massa fr=E5gor om intressen och beskrivit dem + detaljerat + + 10. N=E5gon v=E4ktare tycker du f=F6rtj=E4nar h=F6gre niv=E5 f=F6r att du= + =E4r s=E5 + trevlig och engagerad i webbplatsen. + + 11. Du har gjort ett antal kopplingar mellan =E4mnen och =F6verv=E4gande + delan av dem har godk=E4nts av en v=E4ktare, och du accepterar att + b=F6rja som l=E4rling i v=E4ktarakademin (jobbet som + systemadministrat=F6r) + + 12-39. D=E5 och d=E5 tittar jag p=E5 vad du gjort i form av skrivande av + texter och arbetande med uppslagsverkets =E4mnen, och justerar din + niv=E5 i f=F6rh=E5llande till m=E4ngd och kvalit=E9 p=E5 arbetet + + 40. Du har full=E4ndat ett helt =E4mnesomr=E5de. En m=E4ngd sammanl=E4nk= +ade + =E4mnen med bra textinneh=E5ll. + + 41. F=F6rtroende att arbeta med adminstration av medlemsregistret. + + 42. Delaktig i utvecklandet av webbplatsens prgrammering. + + + * Allts=E5. Automatik tar dig till niv=E5 7. + + * Men som sagt. Jag har en massa andra planer d=E4r mycket mer kopplas + till niv=E5er och d=E4r det finns systemautomatik f=F6r hela v=E4gen till + niv=E5 40. + + * 41 och 42 ligger utanf=F6r niv=E5systemet i =F6vrigt. Den som har de + niv=E5erna har inte n=F6dv=E4ndigtvis tagit sig till niv=E5 40 innan. De + motsvaras av anv=E4ndaradministrat=F6r och systemadministrat=F6r och + niv=E5n speglar maktbefogenheterna snarare =E4n vad man i =F6vrigt gjort + f=F6r webbplatsen. + + * Alla texter. Allt inneh=E5ll =E4r =F6ppet f=F6r alla. =C4ven f=F6r bes= +=F6kare som + inte loggar in. Du kan till och med g=E5 in p=E5 + administrationssidorna utan att logga in. Vi g=F6mmer inte inneh=E5ll. + Det vi g=F6r =E4r att hindra dig fr=E5n att =E4ndra inneh=E5llet. Vi d= +=F6ljer + dock en del information om andra medlemmar i syfte att f=E5 s=E5 m=E5nga + som m=F6jligt att sj=E4lv skriva in sig och skriva en presentation. + +--=20 +/ Jonas - http://jonas.example.com/myself/en/index.html + +_______________________________________________ +List mailing list +List@example.com +http://example.com/cgi-bin/mailman/listinfo/list + + +--=-=-= + + + +-- +/ Jonas - http://jonas.example.com/myself/en/index.html + +--=-=-=-- + diff --git a/rt/lib/t/data/new-ticket-from-iso-8859-1 b/rt/lib/t/data/new-ticket-from-iso-8859-1 new file mode 100644 index 000000000..299392d26 --- /dev/null +++ b/rt/lib/t/data/new-ticket-from-iso-8859-1 @@ -0,0 +1,31 @@ +Return-Path: <hw@nordkapp.net> +Delivered-To: j@pallas.eruditorum.org +Received: from sm1.nordkapp.net (sm1.nordkapp.net [62.70.54.150]) + by pallas.eruditorum.org (Postfix) with ESMTP id 48F4E11112 + for <jesse@bestpractical.com>; Mon, 2 Jun 2003 14:58:37 -0400 (EDT) +Received: (qmail 3612 invoked by uid 1009); 2 Jun 2003 18:58:36 -0000 +Received: from unknown (HELO office.nordkapp.net) (213.161.186.83) + by 0 with SMTP; 2 Jun 2003 18:58:36 -0000 +Message-Id: <5.2.1.1.0.20030602205708.0314c5f8@mail.nordkapp.net> +X-Sender: hw@nordkapp.net@mail.nordkapp.net +X-Mailer: QUALCOMM Windows Eudora Version 5.2.1 +Date: Mon, 02 Jun 2003 20:58:30 +0200 +To: Jesse Vincent <jesse@bestpractical.com> +From: Wilhelmsen Håvard <hw@nordkapp.net> +Subject: Re: rt-3.0.3pre1 +In-Reply-To: <20030602185607.GN10811@fsck.com> +References: <5.2.1.1.0.20030602204834.031406d8@mail.nordkapp.net> + <5.2.1.1.0.20030530194214.0371c988@mail.nordkapp.net> + <5.2.1.1.0.20030530194214.0371c988@mail.nordkapp.net> + <5.2.1.1.0.20030602204834.031406d8@mail.nordkapp.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset="iso-8859-1"; format=flowed +Content-Transfer-Encoding: 8bit +X-Spam-Status: No, hits=-1.9 required=5.0 + tests=AWL,EMAIL_ATTRIBUTION,IN_REP_TO,QUOTED_EMAIL_TEXT, + REFERENCES,REPLY_WITH_QUOTES + autolearn=ham version=2.55 +X-Spam-Level: +X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp) + +Håvard diff --git a/rt/lib/t/data/new-ticket-from-iso-8859-1-full b/rt/lib/t/data/new-ticket-from-iso-8859-1-full new file mode 100644 index 000000000..493ca1591 --- /dev/null +++ b/rt/lib/t/data/new-ticket-from-iso-8859-1-full @@ -0,0 +1,38 @@ +X-Mailer: QUALCOMM Windows Eudora Version 5.2.1 +To: Jesse Vincent <jesse@bestpractical.com> +From: Wilhelmsen Håvard <hw@nordkapp.net> +Subject: Re: rt-3.0.3pre1 +X-Spam-Status: No, hits=-1.9 required=5.0 + tests=AWL,EMAIL_ATTRIBUTION,IN_REP_TO,QUOTED_EMAIL_TEXT, + REFERENCES,REPLY_WITH_QUOTES + autolearn=ham version=2.55 +X-Spam-Level: +X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp) + +At 14:56 02.06.2003 -0400, you wrote: +>> This patch didn't help us out. +>> We still got problems with auto responding e-mails sent from the system +>> when a new ticket is created. +>> The same problem appears when one of the staff replays to an new ticket. +>> All Norwegian letters is converted to strange letters like ø +>> +>> We would love if this bug could be fixed. On our mail server we are +>running +>> perl 5.6.1 since we are using debian stabel packet lists. +> +>I'd love it too. I just can't find it. Can you send me +>(jesse@bestpractical.com) a couple of email messages containing +>characters that break your RT? + +Hello again, + +Thanks for your fast replay! + +I don't know how this looks at your end but it is letters like: ø æ Ã¥ +If your want to make this in html it will be ø å and &aerlig; + + +-- +HÃ¥vard + + diff --git a/rt/lib/t/data/russian-subject-no-content-type b/rt/lib/t/data/russian-subject-no-content-type new file mode 100644 index 000000000..03d95b8c4 --- /dev/null +++ b/rt/lib/t/data/russian-subject-no-content-type @@ -0,0 +1,42 @@ +Return-Path: <mitya@fling-wing.example.com> +X-Real-To: <mitya@second.example.com> +Received: from [194.87.5.31] (HELO sinbin.example.com) + by cgp.second.example.com (CommuniGate Pro SMTP 4.0.5/D) + with ESMTP-TLS id 69661026 for mitya@second.example.com; Wed, 18 Jun 2003 11:14:49 +0400 +Received: (from daemon@localhost) + by sinbin.example.com (8.12.8/8.11.6) id h5I7EfOj096595 + for mitya@second.example.com; Wed, 18 Jun 2003 11:14:41 +0400 (MSD) + (envelope-from mitya@fling-wing.example.com) +Received: from example.com by sinbin.example.com with ESMTP id h5I7Ee8K096580; + (8.12.9/D) Wed, 18 Jun 2003 11:14:40 +0400 (MSD) +X-Real-To: <mitya@second.example.com> +Received: from [194.87.0.31] (HELO mail.example.com) + by example.com (CommuniGate Pro SMTP 4.1b7/D) + with ESMTP id 76217696 for mitya@example.com; Wed, 18 Jun 2003 11:14:40 +0400 +Received: by mail.example.com (CommuniGate Pro PIPE 4.1b7/D) + with PIPE id 63920083; Wed, 18 Jun 2003 11:14:40 +0400 +Received: from [194.87.5.69] (HELO fling-wing.example.com) + by mail.example.com (CommuniGate Pro SMTP 4.1b7/D) + with ESMTP-TLS id 63920055 for mitya@example.com; Wed, 18 Jun 2003 11:14:38 +0400 +Received: from fling-wing.example.com (localhost [127.0.0.1]) + by fling-wing.example.com (8.12.9/8.12.6) with ESMTP id h5I7Ec5R000153 + for <mitya@example.com>; Wed, 18 Jun 2003 11:14:38 +0400 (MSD) + (envelope-from mitya@fling-wing.example.com) +Received: (from mitya@localhost) + by fling-wing.example.com (8.12.9/8.12.6/Submit) id h5I7Ec0J000152 + for mitya@example.com; Wed, 18 Jun 2003 11:14:38 +0400 (MSD) +Date: Wed, 18 Jun 2003 11:14:38 +0400 (MSD) +From: "Dmitry S. Sivachenko" <mitya@fling-wing.example.com> +Message-Id: <200306180714.h5I7Ec0J000152@fling-wing.example.com> +To: mitya@example.com +Subject: ÔÅÓÔ ÔÅÓÔ +X-Spam-Checker-Version: SpamAssassin 2.60-cvs-mail.demos (1.193-2003-06-13-exp) +X-Spam-Level: + +X-Spam-Status: No, hits=1.0 required=5.0 tests=SUBJ_ILLEGAL_CHARS autolearn=no + version=2.60-cvs-mail.demos +X-Spam-Report: * SUBJ_ILLEGAL_CHARS 1.0 (Subject contains too many raw illegal characters) + +Content-Length: 6 + +ôåóô + diff --git a/rt/lib/t/data/text-html-in-russian b/rt/lib/t/data/text-html-in-russian new file mode 100644 index 000000000..b965b1b59 --- /dev/null +++ b/rt/lib/t/data/text-html-in-russian @@ -0,0 +1,87 @@ +From rickt@other-example.com Tue Jun 17 20:39:13 2003 +Return-Path: <rickt@other-example.com> +X-Original-To: info +Delivered-To: mitya@vh.example.com +Received: from example.com (mx.example.com [194.87.0.32]) + by vh.example.com (Postfix) with ESMTP id 8D77B16E6BD + for <info>; Tue, 17 Jun 2003 20:39:05 +0400 (MSD) +Received: from hotline@example.com + by example.com (CommuniGate Pro GROUP 4.1b7/D) + with GROUP id 76033026; Tue, 17 Jun 2003 20:38:00 +0400 +Received: by example.com (CommuniGate Pro PIPE 4.1b7/D) + with PIPE id 76033052; Tue, 17 Jun 2003 20:38:00 +0400 +Received: from [217.132.49.75] (HELO compuserve.com) + by example.com (CommuniGate Pro SMTP 4.1b7/D) + with SMTP id 76032971 for info@example.com; Tue, 17 Jun 2003 20:37:41 +0400 +Date: Wed, 18 Jun 2003 01:41:01 +0000 +From: Ó÷åáíûé Öåíòð <rickt@other-example.com> +Subject: Ïðèãëàøàåì ðóêîâîäèòåëÿ, íà÷àëüíèêîâ ïîäðàçäåëåíèé íà òðåíèíã YXLWLJ3LPT9UHuLyGTzyuKQc06eIZ96Y6RVTCZFt +To: Info <info@example.com> +References: <0ID97EGL951H1907@example.com> +In-Reply-To: <0ID97EGL951H1907@example.com> +Message-ID: <HDE46LIK8GGJJ72I@other-example.com> +MIME-Version: 1.0 +Content-Type: text/html; charset=Windows-1251 +Content-Transfer-Encoding: 8bit +X-Spam-Flag: YES +X-Spam-Checker-Version: SpamAssassin 2.60-cvs-jumbo.demos (1.190-2003-06-01-exp) +X-Spam-Level: ++++++++++++++ +X-Spam-Status: Yes, hits=14.9 required=5.0 tests=BAYES_99,DATE_IN_FUTURE_06_12 + FROM_ILLEGAL_CHARS,HTML_10_20,HTML_FONTCOLOR_UNKNOWN,HTML_FONT_BIG + MIME_HTML_ONLY,RCVD_IN_NJABL,SUBJ_HAS_SPACES,SUBJ_HAS_UNIQ_ID + SUBJ_ILLEGAL_CHARS autolearn=no version=2.60-cvs-jumbo.demos +X-Spam-Report: 14.9 points, 5.0 required; + * 2.3 -- Subject contains lots of white space + * 1.0 -- BODY: HTML font color is unknown to us + * 0.3 -- BODY: FONT Size +2 and up or 3 and up + [score: 1.0000] + * 2.8 -- BODY: Bayesian classifier spam probability is 99 to 100% + * 1.0 -- BODY: Message is 10% to 20% HTML + * 1.0 -- From contains too many raw illegal characters + * 1.0 -- Subject contains a unique ID + * 1.0 -- Subject contains too many raw illegal characters + * 1.2 -- Date: is 6 to 12 hours after Received: date + [217.132.49.75 listed in dnsbl.njabl.org] + * 1.2 -- RBL: Received via a relay in dnsbl.njabl.org + * 2.0 -- Message only has text/html MIME parts +Status: RO +Content-Length: 2743 +Lines: 36 + +<html><body><basefont face="times new roman, times, serif" size="2"> +<center>Ó÷eáíûé Öeíòp "ÊÀÄÐÛ ÄÅËÎÂÎÃÎ ÌÈÐÀ" ïpèãëaøaeò ía òpeíèíã:<br> +<font size="5"><b>ÌÎÒÈÂÀÖÈß ÊÀÊ ÈÍÑÒÐÓÌÅÍÒ ÓÏÐÀÂËÅÍÈß ÏÅÐÑÎÍÀËÎÌ</b></font><br> +<font color="red"><b>19 èþíÿ 2003 ã.</b></font><br> +<b><i>Òpeíèíã ïpeäíaçía÷eí äëÿ âûcøeão è cpeäíeão óïpaâëeí÷ecêoão ïepcoíaëa.</i></b><br></center><br> +<p align="justify"><b>Òpeíep: Áopìoòoâ Ïaâeë.</b> Ïpaêòè÷ecêèé ïcèõoëoã, oïûò paáoòû áoëee 10 ëeò â oáëacòè ïcèõoëoãèè è áèçíec-òpeíèíãoâ. Àâòop pÿäa ïóáëèêaöèé è ìeòoäè÷ecêèõ ïocoáèé paçëè÷íûõ íaïpaâëeíèé ïcèõoëoãèè, â òoì ÷ècëe: “Òeõíoëoãèÿ äeëoâoão oáùeíèÿ”, “Òeõíèêè è ïpèeìû ýôôeêòèâíûõ ïepeãoâopoâ”, “Ñòpaòeãèè ôopìèpoâaíèÿ êopïopaòèâíoão èìèäæa” è äp. Çaêoí÷èë ËÃÓ ôaêóëüòeò coöèaëüíoé ïcèõoëoãèè, Ðoccèécêóþ Àêaäeìèþ ãocóäapcòâeííoé cëóæáû ïpè Ïpeçèäeíòe ÐÔ, êópcû MBA.<br><br> +<b><u>Öeëè òpeíèíãa:</u></b><br> +1. Îcâoèòü ïpèeìû óïpaâëeíèÿ ìoòèâaöèeé;<br> +2. Ïoëó÷èòü ïpaêòè÷ecêèe íaâûêè ìoòèâaöèè ïepcoíaëa ê paáoòe;<br> +3. Îcâoèòü ocíoâíûe íaâûêè êoìaíäooápaçoâaíèÿ;<br> +4. Îâëaäeòü ïpaêòè÷ecêèìè ìeòoäaìè coçäaíèÿ è ócèëeíèÿ paáo÷eé ìoòèâaöèè, êoìaíäooápaçoâaíèÿ.<br><br> +<b><u>Çaäa÷è òpeíèíãa:</u></b><br> + - Îcâoèòü ìeòoäû ïoáóæäeíèÿ äpóãèõ ëþäeé ê âûïoëíeíèþ oïpeäeëeííoé äeÿòeëüíocòè;<br> + - Íaó÷èòücÿ íaïpaâëÿòü ïoáóæäeíèÿ coòpóäíèêoâ â cooòâeòcòâèe c çaäa÷aìè opãaíèçaöèè.<br><br> +<b><u>Ñoäepæaíèe ïpoãpaììû:</u></b><br> +<b>I. Ìaòepèaëüíûe è íeìaòepèaëüíûe ôopìû ìoòèâaöèè:</b><br> +1. Ìecòo è poëü ìoòèâaöèè â óïpaâëeíèè ïepcoíaëoì;<br> +2. Ïpaêòèêa óïpaâëeíèÿ opãaíèçaöèÿìè.<br> +<b>II. Ïpaêòè÷ecêoe ïpèìeíeíèe ìoòèâaöèè â óïpaâëeíèè ïepcoíaëoì:</b><br> +1. Àíòèìoòèâèpóþùèe pacïopÿæeíèÿ;<br> +2. Ìoòèâaöèÿ è oöeíêa äeÿòeëüíocòè (poëü aòòecòaöèè coòpóäíèêoâ);<br> +3. Ìoòèâaöèÿ è ïpaêòèêa íaêaçaíèé.<br><br> +<b><u> çaâepøeíèè ïpoãpaììû ó÷acòíèêè cìoãóò:</u></b><br> +1. Îpèeíòèpoâaòü coòpóäíèêoâ ía äocòèæeíèe oïpeäeëeííoão peçóëüòaòa;<br> +2. Îâëaäeòü íeoáõoäèìûìè íaâûêaìè óïpaâëeíèÿ ìoòèâaöèeé ïepcoíaëa;<br> +3. Ïpèìeíÿòü ïoëó÷eííûe çíaíèÿ â ïpaêòèêe óïpaâëeíèÿ ïepcoíaëoì;<br> +4. Îïpeäeëÿòü èíäèâèäóaëüíûe ocoáeííocòè (ïpeäïo÷òeíèÿ) ìoòèâaöèè coòpóäíèêoâ â opãaíèçaöèè.<br> +<i> õoäe òpeíèíãa ècïoëüçóeòcÿ paáo÷èé è cïpaâo÷íûé ìaòepèaë ïo ìoòèâaöèè è còèìóëèpoâaíèþ ïepcoíaëa poccèécêèõ êoìïaíèé. Ïo oêoí÷aíèè âûäaeòcÿ cepòèôèêaò.</i><br><br> +<center>Ïpoäoëæèòeëüíocòü: 1 äeíü, 8 ÷acoâ (äâa ïepepûâa, oáeä)<br> +<b>Ñòoèìocòü ó÷acòèÿ: 4 700 póáëeé áeç ÍÄÑ.</b><br> +921-5862, 928-4156, 928-4200, 928-5321</center><br> +<font size=1> Åcëè èíôopìaöèÿ ïoäoáíoão poäa Âac íe èíòepecóeò è ïo äpóãèì âoïpocaì - ïèøèòe: <a href="mailto:motiv@mailje.nl">seminar</a></font> +<br><font size="1" color="#ffffff">3ZkRPb60QBbiHef1IRVl</font> +</body></html> + + + diff --git a/rt/lib/t/data/text-html-with-umlaut b/rt/lib/t/data/text-html-with-umlaut new file mode 100644 index 000000000..90e5d3fa9 --- /dev/null +++ b/rt/lib/t/data/text-html-with-umlaut @@ -0,0 +1,35 @@ +Return-Path: <gst@example.com> +Delivered-To: j@pallas.eruditorum.org +Received: from vis.example.com (vis.example.com [212.68.68.251]) + by pallas.eruditorum.org (Postfix) with SMTP id 59236111C3 + for <jesse@example.com>; Thu, 12 Jun 2003 02:14:44 -0400 (EDT) +Received: (qmail 29541 invoked by uid 502); 12 Jun 2003 06:14:42 -0000 +Received: from sivd.example.com (HELO example.com) (192.168.42.1) + by 192.168.42.42 with SMTP; 12 Jun 2003 06:14:42 -0000 +Received: received from 172.20.72.174 by odie.example.com; Thu, 12 Jun 2003 08:14:27 +0200 +Received: by mailserver.example.com with Internet Mail Service (5.5.2653.19) id <LJSB7T54>; Thu, 12 Jun 2003 08:14:39 +0200 +Message-ID: <50362EC956CBD411A339009027F6257E013DD495@mailserver.example.com> +Date: Thu, 12 Jun 2003 08:14:39 +0200 +From: "Stever, Gregor" <gst@example.com> +MIME-Version: 1.0 +X-Mailer: Internet Mail Service (5.5.2653.19) +To: "'jesse@example.com'" <jesse@example.com> +Subject: An example of mail containing text-html with an umlaut in the content +Date: Thu, 12 Jun 2003 08:14:39 +0200 +Content-Type: text/html; + charset="iso-8859-1" +Content-Transfer-Encoding: quoted-printable + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<HTML><HEAD> +<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; charset=3Diso-8859-= +1"> + + +<META content=3D"MSHTML 6.00.2800.1170" name=3DGENERATOR></HEAD> +<BODY> +<DIV><FONT face=3DArial><FONT size=3D2>Hello,<BR><BR>ist this kind of Messa= +ges, that=20 +causes rt to crash.<BR><BR>Mit freundlichen Gr=FC=DFen<BR>Gregor=20 +Stever ^^causes Error<SPAN=20 +class=3D975501206-12062003>!!</SPAN></FONT></FONT></DIV></BODY></HTML> diff --git a/rt/lib/t/regression/00placeholder b/rt/lib/t/regression/00placeholder new file mode 100644 index 000000000..0afc6045c --- /dev/null +++ b/rt/lib/t/regression/00placeholder @@ -0,0 +1 @@ +1; diff --git a/rt/lib/t/regression/mime_tests b/rt/lib/t/regression/mime_tests new file mode 100644 index 000000000..26e4dbf84 --- /dev/null +++ b/rt/lib/t/regression/mime_tests @@ -0,0 +1,19 @@ +use RT::Ticket; +use RT::Queue; + +use MIME::Parser; +use File::Temp; +use RT::EmailParser; + +open (HANDLE, "data/nested-mime-sample"); +my $parser = RT::EmailParser->new() + $parser->ParseMIMEEntityFromFileHandle(\*HANDLE); +my $entity = $parser->Entity; + +my $q = RT::Queue->new($RT::SystemUser); +$q->Load('general'); +ok ($q->Id, "Queue is loaded"); +my $Ticket = RT::Ticket->new($RT::SystemUser); +my ($tid, $ttid, $msg) =$Ticket->Create( Queue => $q->Id, Subject => "Nested mime test", MIMEObj => $entity); +ok ($tid, $msg); +ok($Ticket->Id); |