import rt 3.4.5
authorivan <ivan>
Tue, 17 Oct 2006 08:51:01 +0000 (08:51 +0000)
committerivan <ivan>
Tue, 17 Oct 2006 08:51:01 +0000 (08:51 +0000)
72 files changed:
rt/Changelog
rt/README
rt/configure
rt/configure.ac
rt/etc/RT_Config.pm.in
rt/html/Approvals/Elements/PendingMyApproval
rt/html/Elements/Callback
rt/html/Elements/CollectionAsTable/Row
rt/html/Elements/EditCustomField
rt/html/Elements/EditCustomFieldSelect
rt/html/Elements/Header
rt/html/Elements/QueryString
rt/html/Elements/RT__Ticket/ColumnMap
rt/html/Elements/ScrubHTML
rt/html/Elements/ShowCustomFields
rt/html/NoAuth/printrt.css [new file with mode: 0644]
rt/html/NoAuth/webrt.css
rt/html/Search/Build.html
rt/html/Search/Elements/BuildFormatString
rt/html/Search/Results.rdf
rt/html/Search/Results.tsv
rt/html/Ticket/Elements/EditCustomFields
rt/html/Ticket/Elements/ShowTransactionAttachments
rt/html/User/Elements/Tabs
rt/lib/RT/ACE_Overlay.pm
rt/lib/RT/Action/SendEmail.pm
rt/lib/RT/Attachments_Overlay.pm
rt/lib/RT/CustomFieldValues.pm
rt/lib/RT/CustomField_Overlay.pm
rt/lib/RT/EmailParser.pm
rt/lib/RT/Groups_Overlay.pm
rt/lib/RT/I18N.pm
rt/lib/RT/I18N/cs.po
rt/lib/RT/I18N/da.po
rt/lib/RT/I18N/de.po
rt/lib/RT/I18N/en.po
rt/lib/RT/I18N/es.po
rt/lib/RT/I18N/fi.po
rt/lib/RT/I18N/fr.po
rt/lib/RT/I18N/he.po
rt/lib/RT/I18N/hu.po
rt/lib/RT/I18N/id.po
rt/lib/RT/I18N/it.po
rt/lib/RT/I18N/ja.po
rt/lib/RT/I18N/nl.po
rt/lib/RT/I18N/no.po
rt/lib/RT/I18N/pl.po
rt/lib/RT/I18N/pt_br.po
rt/lib/RT/I18N/ru.po
rt/lib/RT/I18N/zh_cn.po
rt/lib/RT/I18N/zh_tw.po
rt/lib/RT/Interface/Email.pm
rt/lib/RT/Link_Overlay.pm
rt/lib/RT/ObjectCustomFieldValues_Overlay.pm
rt/lib/RT/Principal_Overlay.pm
rt/lib/RT/Queue_Overlay.pm
rt/lib/RT/Record.pm
rt/lib/RT/Ticket_Overlay.pm
rt/lib/RT/Tickets_Overlay.pm
rt/lib/RT/Tickets_Overlay_SQL.pm
rt/lib/RT/Transaction_Overlay.pm
rt/lib/RT/Transactions_Overlay.pm
rt/lib/RT/Users_Overlay.pm
rt/lib/t/regression/06mailgateway.t
rt/lib/t/regression/07acl.t
rt/lib/t/regression/07rights.t
rt/lib/t/regression/09record_cf_api.t
rt/lib/t/regression/14linking.t [new file with mode: 0644]
rt/lib/t/regression/22search_tix_by_txn.t
rt/lib/t/regression/22search_tix_by_watcher.t [new file with mode: 0644]
rt/sbin/rt-setup-database.in
rt/sbin/rt-test-dependencies.in

index 2da390e..a01bc89 100644 (file)
@@ -1,9 +1,789 @@
 ------------------------------------------------------------------------
 ------------------------------------------------------------------------
-r3729 | jesse | 2005-08-28 15:45:06 -0400 (Sun, 28 Aug 2005) | 1 line
+r4386 | jesse | 2006-01-12 10:52:27 -0500 (Thu, 12 Jan 2006) | 1 line
 Changed paths:
 Changed paths:
-   A /rt/tags/3.4.4 (from /rt/branches/3.4-RELEASE:3728)
+   A /rt/tags/3.4.5 (from /rt/branches/3.4-RELEASE:4385)
+
+Tagged as 3.4.5 by svn RelEng 1.0
+------------------------------------------------------------------------
+r4385 | jesse | 2006-01-12 10:48:22 -0500 (Thu, 12 Jan 2006) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/releng.cnf
+
+ r22371@truegrounds:  jesse | 2006-01-12 16:25:39 +0100
+ * This be 3.4.5
+
+------------------------------------------------------------------------
+r4384 | jesse | 2006-01-12 10:48:13 -0500 (Thu, 12 Jan 2006) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/sbin/rt-setup-database.in
+
+ r22370@truegrounds:  jesse | 2006-01-12 16:25:19 +0100
+ * Silence a warning introduced by a patch to fix oracle installs
+
+------------------------------------------------------------------------
+r4383 | jesse | 2006-01-12 10:48:03 -0500 (Thu, 12 Jan 2006) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/t/regression/22search_tix_by_txn.t
+
+ r22369@truegrounds:  jesse | 2006-01-12 16:23:48 +0100
+ * Forced timezone for a date test to GMT, since it's searching on subjective dates
+
+------------------------------------------------------------------------
+r4372 | jesse | 2006-01-11 12:22:05 -0500 (Wed, 11 Jan 2006) | 7 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/de.po
+
+ r22357@truegrounds:  jesse | 2006-01-11 18:20:01 +0100
+ RT-Ticket: 7222
+ RT-Status: resolved
+ RT-Update: correspond
+ * German translation update from Dirk Pape
+
+------------------------------------------------------------------------
+r4307 | jesse | 2005-12-13 16:54:03 -0500 (Tue, 13 Dec 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/releng.cnf
+
+ r20436@truegrounds:  jesse | 2005-12-13 16:51:41 -0500
+ * 3.4.5rc3
+
+------------------------------------------------------------------------
+r4306 | jesse | 2005-12-13 16:53:52 -0500 (Tue, 13 Dec 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N.pm
+
+ r20435@truegrounds:  jesse | 2005-12-13 16:51:06 -0500
+ * warning silencing for a log message
+
+------------------------------------------------------------------------
+r4303 | alexmv | 2005-12-13 13:58:20 -0500 (Tue, 13 Dec 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm
+
+ r7707@zoq-fot-pik:  chmrr | 2005-12-13 13:54:45 -0500
+  * I don't think this join to Attachments is needed or useful -- it means you don't see changes with no attachments
+
+------------------------------------------------------------------------
+r4220 | jesse | 2005-12-02 17:59:40 -0500 (Fri, 02 Dec 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/releng.cnf
+
+ r19695@truegrounds:  jesse | 2005-12-02 17:58:50 -0500
+ * RC2
+
+------------------------------------------------------------------------
+r4216 | jesse | 2005-12-02 17:02:21 -0500 (Fri, 02 Dec 2005) | 8 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Search/Build.html
+
+ r19688@truegrounds:  jesse | 2005-12-02 17:01:28 -0500
+ RT-Ticket: 6962
+ RT-Status: resolved
+ RT-Update: correspond
+ * Patch from Rolf Grossmann to fix some bogosity in the query builder
+
+------------------------------------------------------------------------
+r4212 | jesse | 2005-12-01 23:14:40 -0500 (Thu, 01 Dec 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Elements/Header
+   A /rt/branches/3.4-RELEASE/html/NoAuth/printrt.css
+
+ r19674@truegrounds:  jesse | 2005-12-01 23:13:50 -0500
+  * Added a print stylesheet from Koos van den Hout
+
+------------------------------------------------------------------------
+r4175 | jesse | 2005-11-30 16:03:40 -0500 (Wed, 30 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/releng.cnf
+
+ r19588@truegrounds:  jesse | 2005-11-30 16:00:10 -0500
+ * Bump to 3.4.5rc1
+
+------------------------------------------------------------------------
+r4154 | jesse | 2005-11-29 18:55:07 -0500 (Tue, 29 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Elements/ShowCustomFields
+   M /rt/branches/3.4-RELEASE/html/Ticket/Elements/EditCustomFields
+
+ r19545@truegrounds:  jesse | 2005-11-29 18:51:07 -0500
+ * A pair of new callbacks to make it easier to hide away a custom field on ticket display/edit
+
+------------------------------------------------------------------------
+r4120 | robert | 2005-11-19 22:52:28 -0500 (Sat, 19 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm
+
+ r4186@bear:  rspier | 2005-11-19 19:51:38 -0800
+ typo fix: s/load/Load/ 
+
+------------------------------------------------------------------------
+r4096 | alexmv | 2005-11-14 18:34:44 -0500 (Mon, 14 Nov 2005) | 7 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/CustomFieldValues.pm
+
+ r7182@zoq-fot-pik:  chmrr | 2005-11-14 18:34:13 -0500
+ RT-Ticket: 6994
+ RT-Status: resolved
+ RT-Update: correspond
+  * Sort custom vield values by SortOrder, then *Name*, then id; patch
+    from Troy Davis <troy@nack.net>
+
+------------------------------------------------------------------------
+r4092 | alexmv | 2005-11-14 17:35:40 -0500 (Mon, 14 Nov 2005) | 6 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/EmailParser.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+
+ r7175@zoq-fot-pik:  chmrr | 2005-11-14 17:35:03 -0500
+ RT-Ticket: 7010
+ RT-Status: resolved
+ RT-Update: correspond
+  * Treat our email addresses as case-insensitive
+
+------------------------------------------------------------------------
+r4090 | ruz | 2005-11-14 17:02:36 -0500 (Mon, 14 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE/html/Elements/QueryString
+
+* /Elements/QueryString now supports ARRAY refs, this allow us to handle
+  multiple arguments with the same name, this behaviour is consistent with
+  how HTML::Mason handle arguments
+------------------------------------------------------------------------
+r4089 | ruz | 2005-11-14 16:57:36 -0500 (Mon, 14 Nov 2005) | 1 line
+Changed paths:
+   M /rt/branches/3.4-RELEASE/etc/schema.mysql
+
+* revert back mysql.schema, commited by accident
+------------------------------------------------------------------------
+r4087 | ruz | 2005-11-14 16:50:12 -0500 (Mon, 14 Nov 2005) | 2 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE/etc/schema.mysql
+   M /rt/branches/3.4-RELEASE/html/Elements/Callback
+
+* fix: really hide hidden paths from callbacks
+* fix: fetch data from the %cache by one key when store data with other
+------------------------------------------------------------------------
+r4086 | alexmv | 2005-11-14 16:49:33 -0500 (Mon, 14 Nov 2005) | 8 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/etc/RT_Config.pm.in
+   M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+
+ r7165@zoq-fot-pik:  chmrr | 2005-11-14 16:49:07 -0500
+ RT-Ticket: 7131
+ RT-Status: resolved
+ RT-Update: correspond
+  * The $RT::rtname regex should be case insensitive for matching
+    subjects; thanks to Phil Smith III <psmith@levanta.com> for the
+    catch
+
+------------------------------------------------------------------------
+r4085 | alexmv | 2005-11-14 16:30:12 -0500 (Mon, 14 Nov 2005) | 7 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/NoAuth/webrt.css
+
+ r7163@zoq-fot-pik:  chmrr | 2005-11-14 16:29:36 -0500
+ RT-Ticket: 6507
+ RT-Status: resolved
+ RT-Update: correspond
+  * Standardize fonts to "Verdana, Arial, Helvetica, sans-serif";
+    variant of patch from Maxime Henrion <mux@FreeBSD.org>
+
+------------------------------------------------------------------------
+r4084 | alexmv | 2005-11-14 15:51:27 -0500 (Mon, 14 Nov 2005) | 7 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Record.pm
+
+ r7161@zoq-fot-pik:  chmrr | 2005-11-14 15:50:56 -0500
+ RT-Ticket: 6458
+ RT-Status: resolved
+ RT-Update: correspond
+  * Removed extra return argument from _AddLink, thanks to Todd Chapman
+    <todd@chaka.net>
+
+------------------------------------------------------------------------
+r4083 | alexmv | 2005-11-14 15:43:24 -0500 (Mon, 14 Nov 2005) | 6 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+
+ r7159@zoq-fot-pik:  chmrr | 2005-11-14 15:42:48 -0500
+ RT-Ticket: 6457
+ RT-Status: resolved
+ RT-Update: correspond
+  * Typo in Ticket_Overlay.pm, found by Todd Chapman <todd@chaka.net>
+
+------------------------------------------------------------------------
+r4081 | alexmv | 2005-11-14 14:59:42 -0500 (Mon, 14 Nov 2005) | 7 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Elements/CollectionAsTable/Row
+
+ r7155@zoq-fot-pik:  chmrr | 2005-11-14 14:59:06 -0500
+ RT-Ticket: 7020
+ RT-Status: resolved
+ RT-Update: correspond
+  * Actually make use of 'style' if it is provided; thanks to Kelly
+   F. Hickel <kfh@mqsoftware.com>
+
+------------------------------------------------------------------------
+r4080 | alexmv | 2005-11-14 14:55:17 -0500 (Mon, 14 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/fr.po
+
+ r7152@zoq-fot-pik:  chmrr | 2005-11-14 14:54:43 -0500
+  * Restore rightful .po headers on new french translation
+
+------------------------------------------------------------------------
+r4079 | alexmv | 2005-11-14 14:52:57 -0500 (Mon, 14 Nov 2005) | 6 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/t/regression/09record_cf_api.t
+
+ r7148@zoq-fot-pik:  chmrr | 2005-11-14 14:51:58 -0500
+ RT-Ticket: 6559
+ RT-Status: resolved
+ RT-Update: correspond
+  * Tests from Todd Chapman for loading CF from a wrong queue
+
+------------------------------------------------------------------------
+r4078 | jesse | 2005-11-14 14:50:54 -0500 (Mon, 14 Nov 2005) | 7 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/fr.po
+
+ r18904@truegrounds:  jesse | 2005-11-14 14:49:25 -0500
+ RT-Ticket: 7105
+ RT-Status: resolved
+ RT-Update: correspond
+ Updated French translation from Jerome Fenal
+
+------------------------------------------------------------------------
+r4077 | alexmv | 2005-11-14 14:20:49 -0500 (Mon, 14 Nov 2005) | 6 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/ja.po
+
+ r7146@zoq-fot-pik:  chmrr | 2005-11-14 14:20:03 -0500
+ RT-Ticket: 7090
+ RT-Status: resolved
+ RT-Update: correspond
+  * New Japanese .po, from Daisuke Maki <daisuke@wafu.ne.jp>
+
+------------------------------------------------------------------------
+r4076 | jesse | 2005-11-14 14:18:48 -0500 (Mon, 14 Nov 2005) | 8 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/t/regression/06mailgateway.t
+
+ r18900@truegrounds:  jesse | 2005-11-14 13:57:34 -0500
+ RT-Ticket: 7122
+ RT-Status: resolved
+ RT-Update: correspond
+ * Patch from Todd Chapman to honor changed a $rtname variable when running
+   the test suite
+
+------------------------------------------------------------------------
+r4075 | jesse | 2005-11-14 14:18:36 -0500 (Mon, 14 Nov 2005) | 8 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/t/regression/07acl.t
+
+ r18899@truegrounds:  jesse | 2005-11-14 13:40:24 -0500
+ RT-Ticket: 7121 
+ RT-Status: resolved
+ RT-Update: correspond
+ * Patch from Todd Chapman to make the web based acl tests honor RT::WebPath
+
+------------------------------------------------------------------------
+r4074 | alexmv | 2005-11-14 13:52:00 -0500 (Mon, 14 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/etc/RT_Config.pm.in
+   M /rt/branches/3.4-RELEASE/lib/RT/Interface/Email.pm
+
+ r7140@zoq-fot-pik:  chmrr | 2005-11-14 13:51:14 -0500
+  * Better bounce handling, from Abhijit Menon-Sen <ams@oryx.com>
+
+------------------------------------------------------------------------
+r4073 | jesse | 2005-11-14 13:37:01 -0500 (Mon, 14 Nov 2005) | 16 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/sbin/rt-setup-database.in
+
+ r18895@truegrounds:  jesse | 2005-11-14 13:35:29 -0500
+ RT-Ticket: 7136
+ RT-Status: resolved
+ RT-Update: correspond
+ Stuart Knight reports:
+ As part of the "initdb" processing, the scripts went through and created a new database user, in my case called RT3.
+ When it came time to create the tables, the script was still logged on as the dba user "system", so all of tables/sequences were created under "system"'s schema.
+ I followed through the rt-setup-database script, and spotted that there was a database disconnect, followed by an immediate reconnect, as the same user. (in the case of Oracle this still being the "dba" account)
+ Putting an extra validation check in here for Oracle, and then connecting as the intended database user fixed up the issue.
+
+------------------------------------------------------------------------
+r4072 | alexmv | 2005-11-14 13:33:43 -0500 (Mon, 14 Nov 2005) | 8 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Principal_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/t/regression/07rights.t
+
+ r7135@zoq-fot-pik:  chmrr | 2005-11-14 13:32:23 -0500
+ RT-Ticket: 7101
+ RT-Status: resolved
+ RT-Update: correspond
+  * Don't modify EquivObjects arrayref, thanks to Todd Chapman
+
+------------------------------------------------------------------------
+r4071 | jesse | 2005-11-14 13:21:29 -0500 (Mon, 14 Nov 2005) | 10 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/etc/RT_Config.pm.in
+   M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+   A /rt/branches/3.4-RELEASE/lib/t/regression/14linking.t
+
+ r18893@truegrounds:  jesse | 2005-11-14 13:19:52 -0500
+ RT-Ticket: 7128
+ RT-Status: resolved
+ RT-Update: correspond
+ A big patch from Todd Chapman (with lots of juicy tests) to optionally
+ create two transactions when you create a link. (Also, this means that we'll
+ run scrips twice). This is off by default in RT 3.4
+
+------------------------------------------------------------------------
+r4069 | jesse | 2005-11-14 12:55:46 -0500 (Mon, 14 Nov 2005) | 7 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Elements/ScrubHTML
+
+ r18888@truegrounds:  jesse | 2005-11-14 12:54:25 -0500
+ RT-Ticket: 7048
+ RT-Status: resolved
+ RT-Update: correspond
+ * Akos Torok pointed out that our HTML scrubber removed "PRE" tags from HTML
+
+------------------------------------------------------------------------
+r4065 | jesse | 2005-11-14 12:44:41 -0500 (Mon, 14 Nov 2005) | 9 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/README
+
+ r18880@truegrounds:  jesse | 2005-11-14 12:42:48 -0500
+ RT-Ticket: 7081
+ RT-Status: resolved
+ RT-Update: correspond
+ * Added a note to the readme warning users to clean out the
+   mason cache on upgrades - Ruslan
+
+------------------------------------------------------------------------
+r4064 | alexmv | 2005-11-14 12:43:06 -0500 (Mon, 14 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/ru.po
+
+ r7122@zoq-fot-pik:  chmrr | 2005-11-14 12:42:37 -0500
+  * Updated russian translation from Andrew Kornilov <andy@eva.dp.ua>
+
+------------------------------------------------------------------------
+r4063 | jesse | 2005-11-14 12:38:59 -0500 (Mon, 14 Nov 2005) | 8 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Elements/RT__Ticket/ColumnMap
+
+ r18877@truegrounds:  jesse | 2005-11-14 12:37:37 -0500
+ RT-Ticket: 7087
+ RT-Status: resolved
+ RT-Update: correspond
+ Displayed linked tickets in search results were inverted
+
+------------------------------------------------------------------------
+r4061 | robert | 2005-11-13 00:14:57 -0500 (Sun, 13 Nov 2005) | 9 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Elements/Header
+   M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowTransactionAttachments
+
+ r4124@bear:  rspier | 2005-11-12 21:08:45 -0800
+ Undefined Warning Elimination:
+   - index.html passes in $session{'home_refresh_interval'} which can be null.  
+ r4125@bear:  rspier | 2005-11-12 21:14:28 -0800
+ Undefined Warning Elimination:
+   GetHeader will return undefined when the header doesn't exist.  (This is _good_, as that is different than empty.)
+   But.. =~ warns.
+
+------------------------------------------------------------------------
+r4060 | jesse | 2005-11-11 15:27:56 -0500 (Fri, 11 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/sbin/rt-test-dependencies.in
+
+ r18722@truegrounds:  jesse | 2005-11-11 15:26:34 -0500
+ * SB 1.35 dependency
+
+------------------------------------------------------------------------
+r4059 | jesse | 2005-11-11 00:12:49 -0500 (Fri, 11 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Groups_Overlay.pm
+
+ r18716@truegrounds:  jesse | 2005-11-11 00:10:08 -0500
+ * fix from ruslan for fallout from his WhoHaveRight refactoring
+
+------------------------------------------------------------------------
+r4035 | jesse | 2005-11-06 17:15:18 -0500 (Sun, 06 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/releng.cnf
+
+ r18412@truegrounds:  jesse | 2005-11-06 17:13:58 -0500
+ * Bumped to 3.4.5pre1
+
+------------------------------------------------------------------------
+r4034 | jesse | 2005-11-06 17:15:06 -0500 (Sun, 06 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Groups_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Principal_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Users_Overlay.pm
+
+ r18411@truegrounds:  jesse | 2005-11-06 17:13:33 -0500
+  * Patch to significantly improve performance on "WhoHaveRight" from Ruslan.
+
+------------------------------------------------------------------------
+r4033 | jesse | 2005-11-06 17:13:38 -0500 (Sun, 06 Nov 2005) | 4 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Attachments_Overlay.pm
+
+ r18409@truegrounds:  jesse | 2005-11-06 17:11:57 -0500
+ * Fix to attachment ordering when you ask for a txn's attachments.
+   (Postgres doesn't default to ordering by id, so we were getting the wrong txn content)
+
+------------------------------------------------------------------------
+r4011 | pdh | 2005-11-01 00:43:02 -0500 (Tue, 01 Nov 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowTransactionAttachments
+
+Add a missing space, before the Style Police come after me.
+
+
+------------------------------------------------------------------------
+r4010 | pdh | 2005-10-31 19:21:57 -0500 (Mon, 31 Oct 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE/html/Ticket/Elements/ShowTransactionAttachments
+
+Make $RT::MaxInlineBody work properly.
+
+
+------------------------------------------------------------------------
+r3989 | alexmv | 2005-10-24 17:26:18 -0400 (Mon, 24 Oct 2005) | 4 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Elements/EditCustomField
+   M /rt/branches/3.4-RELEASE/html/Elements/EditCustomFieldSelect
+
+ r6881@zoq-fot-pik:  chmrr | 2005-10-24 17:25:14 -0400
+  * Ensure custom fields keep correct fallback values; for instance, if
+ "add another attachment" is clicked
+
+------------------------------------------------------------------------
+r3967 | jesse | 2005-10-14 17:10:24 -0400 (Fri, 14 Oct 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+
+ r17368@hualien:  jesse | 2005-10-14 17:08:10 -0400
+ * When Robert made the change to how CustomFieldValues works, he broke the API. Fixed
+
+------------------------------------------------------------------------
+r3966 | jesse | 2005-10-14 17:10:11 -0400 (Fri, 14 Oct 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm
+
+ r17360@hualien:  jesse | 2005-10-14 15:21:46 -0400
+ * Perltidy
+
+------------------------------------------------------------------------
+r3958 | ruz | 2005-10-13 08:40:24 -0400 (Thu, 13 Oct 2005) | 1 line
+Changed paths:
+   M /rt/branches/3.4-RELEASE/html/User/Elements/Tabs
+
+* new callback in html/User/Elements/Tabs
+------------------------------------------------------------------------
+r3957 | ruz | 2005-10-13 08:37:47 -0400 (Thu, 13 Oct 2005) | 1 line
+Changed paths:
+   M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay_SQL.pm
+
+* code comments
+------------------------------------------------------------------------
+r3948 | ruz | 2005-10-10 20:01:50 -0400 (Mon, 10 Oct 2005) | 1 line
+Changed paths:
+   M /rt/branches/3.4-RELEASE/lib/RT/Action/SendEmail.pm
+
+* get rid of "not a number" warning
+------------------------------------------------------------------------
+r3945 | ruz | 2005-10-10 15:47:29 -0400 (Mon, 10 Oct 2005) | 4 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE/lib/RT/Action/SendEmail.pm
+
+backport of the 3.5-TESTING@3543
+Changes:
+* fix attachments ordering
+
+------------------------------------------------------------------------
+r3944 | ruz | 2005-10-10 15:27:36 -0400 (Mon, 10 Oct 2005) | 15 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay_SQL.pm
+   A /rt/branches/3.4-RELEASE/lib/t/regression/22search_tix_by_watcher.t
+
+backport of the 3.5-TESTING@3943
+Changes
+* fix for search by owner's fields, now owner is WATCHERFIELD instead of ENUM
+* added backward compatible variant for Owner, next searches should work
+** Owner = '<id>'
+** Owner != '<id>'
+** Owner = '<name>'
+** Owner != '<name>'
+** for other operators or if subfield(subkey) is specified search works
+   as for other watchers
+* Fix for searches like "Cc.Name <> 'SomeBody'", was skipping tickets
+  with empty Cc list.
+* get rid of some unint warnings
+* test suite for all corner cases
+
+------------------------------------------------------------------------
+r3938 | robert | 2005-10-07 00:20:15 -0400 (Fri, 07 Oct 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+
+ r3995@bear:  rspier | 2005-10-06 21:19:24 -0700
+  [fsck.com #7067] - If we can't find a customfield that the user is allowed to see on a ticket, don't return any values, (when specifying a custom field)
+
+------------------------------------------------------------------------
+r3901 | alexmv | 2005-10-03 14:15:35 -0400 (Mon, 03 Oct 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/cs.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/da.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/de.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/en.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/es.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/fi.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/fr.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/he.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/hu.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/id.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/it.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/ja.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/nl.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/no.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/pl.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/pt_br.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/ru.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/zh_cn.po
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/zh_tw.po
+
+ r6568@zoq-fot-pik:  chmrr | 2005-10-03 14:14:49 -0400
+  * Header fixes in PO files to include correct RT version
+
+------------------------------------------------------------------------
+r3900 | alexmv | 2005-10-03 13:32:45 -0400 (Mon, 03 Oct 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/I18N/es.po
+
+ r6566@zoq-fot-pik:  chmrr | 2005-10-03 13:28:24 -0400
+  * Updated spanish translation, thanks to Carlos Velasco
+
+------------------------------------------------------------------------
+r3896 | alexmv | 2005-09-30 15:56:31 -0400 (Fri, 30 Sep 2005) | 8 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Approvals/Elements/PendingMyApproval
+
+ r6558@zoq-fot-pik:  chmrr | 2005-09-30 15:56:06 -0400
+ RT-Ticket: 7029
+ RT-Status: resolved
+ RT-Update: correspond
+  * Applied missing limit for AdminCcs, from Todd Chapman
+
+------------------------------------------------------------------------
+r3895 | alexmv | 2005-09-30 15:19:57 -0400 (Fri, 30 Sep 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Elements/RT__Ticket/ColumnMap
+
+ r6555@zoq-fot-pik:  chmrr | 2005-09-30 15:18:22 -0400
+  * Link to the *other* end of the link, not the one that is us
+
+------------------------------------------------------------------------
+r3894 | alexmv | 2005-09-30 15:19:46 -0400 (Fri, 30 Sep 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Search/Elements/BuildFormatString
+
+ r6554@zoq-fot-pik:  chmrr | 2005-09-30 15:16:47 -0400
+  * Remove unused and deprecated code path (bugs 6605, 7008)
+
+------------------------------------------------------------------------
+r3893 | jesse | 2005-09-28 13:27:29 -0400 (Wed, 28 Sep 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE/html/Search/Results.tsv
+
+Switch from ->CustomFields to ->TicketCustomFields to stop using a deprecated API.
+  Thanks to T.J. Maciak
+
+------------------------------------------------------------------------
+r3892 | robert | 2005-09-28 12:16:03 -0400 (Wed, 28 Sep 2005) | 8 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Action/SendEmail.pm
+
+ r3945@bear:  rspier | 2005-09-28 09:15:08 -0700
+ Performance Improvement when Sending Email using sendmailpipe -
+ MIME::Entity would bog down in certain cases because of it's use of IO::Scalar during stringification.  MIME::Entity will be switching to IO::ScalarArray, which will help... but RT was causing it to store into a temporary string anyway, which was silly.
+ This change has MIME::Entity write directly to the pipe, which is a lot more efficient.  Seems to cut out ~33% of user time.  (Because we don't need to have a temporary IO::Scalar thingy around.)  Also will reduce peak memory usage.
+
+------------------------------------------------------------------------
+r3881 | jesse | 2005-09-23 15:39:36 -0400 (Fri, 23 Sep 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Transaction_Overlay.pm
+
+ r15970@hualien:  jesse | 2005-09-23 15:37:43 -0400
+ * Our algorithm for finding a fallback for transaction content wasn't trying hard enough. reported by John Gedeon.
+
+------------------------------------------------------------------------
+r3877 | alexmv | 2005-09-22 15:09:22 -0400 (Thu, 22 Sep 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/CustomField_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/EmailParser.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Link_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/ObjectCustomFieldValues_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Queue_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Record.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Ticket_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm
+   M /rt/branches/3.4-RELEASE/lib/RT/Transactions_Overlay.pm
+
+ r6458@zoq-fot-pik:  chmrr | 2005-09-22 15:08:37 -0400
+  * Add where the faulty caller was in deprecated warnings
+
+------------------------------------------------------------------------
+r3855 | jesse | 2005-09-16 12:26:10 -0400 (Fri, 16 Sep 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Search/Results.rdf
+
+ r15770@hualien:  jesse | 2005-09-16 12:23:15 -0400
+ * The RSS feeds should come with a default subject, as feeds really want to have article titles in some clients
+
+------------------------------------------------------------------------
+r3854 | jesse | 2005-09-16 12:25:42 -0400 (Fri, 16 Sep 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/ACE_Overlay.pm
+
+ r15749@hualien:  jesse | 2005-09-15 11:14:56 -0400
+ * It was possible to get into an infinite loop when removing a member from a group
+
+------------------------------------------------------------------------
+r3849 | jesse | 2005-09-13 12:07:54 -0400 (Tue, 13 Sep 2005) | 5 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Record.pm
+
+ r15723@hualien:  jesse | 2005-09-13 12:05:40 -0400
+ * When pulling data out of the database, we need to be more careful
+   about whether it's utf8 or not. Thanks to Ruslan Zakirov
+
+------------------------------------------------------------------------
+r3847 | glasser | 2005-09-12 18:11:43 -0400 (Mon, 12 Sep 2005) | 4 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/html/Search/Build.html
+
+ r41532@maclaurin-seven-twelve:  glasser | 2005-09-12 18:04:55 -0400
+ Defining subs in Mason components is dangerous, since they clash with subs defined
+ in every other component.
+
+------------------------------------------------------------------------
+r3754 | robert | 2005-09-01 17:47:36 -0400 (Thu, 01 Sep 2005) | 10 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/lib/RT/Tickets_Overlay.pm
+
+ r3800@bear:  rspier | 2005-09-01 14:46:59 -0700
+ RT-Ticket: 6986
+ RT-Status: resolved
+ RT-Update: correspond
+ If we didn't generate any SQL, don't pass it to FromSQL which will reset the dirty flag and then SB won't actually run anything.
+ Also, tests.
+     
+
+------------------------------------------------------------------------
+r3739 | robert | 2005-08-31 16:46:16 -0400 (Wed, 31 Aug 2005) | 3 lines
+Changed paths:
+   M /rt/branches/3.4-RELEASE
+   M /rt/branches/3.4-RELEASE/configure.ac
+
+ r3748@woof:  rspier | 2005-08-31 13:41:53 -0700
+ Check for invalid character (-) in mysql database names and prevent RT from allowing it to be configured.
 
 
-Tagged as 3.4.4 by svn RelEng 1.0
 ------------------------------------------------------------------------
 r3728 | jesse | 2005-08-28 15:44:18 -0400 (Sun, 28 Aug 2005) | 3 lines
 Changed paths:
 ------------------------------------------------------------------------
 r3728 | jesse | 2005-08-28 15:44:18 -0400 (Sun, 28 Aug 2005) | 3 lines
 Changed paths:
index caead27..76e9ea8 100755 (executable)
--- a/rt/README
+++ b/rt/README
@@ -147,6 +147,13 @@ want to read a more comprehensive installation guide at:
        /opt/rt3/sbin/rt-setup-database --action insert \
             --datadir etc/upgrade/<version>
 
        /opt/rt3/sbin/rt-setup-database --action insert \
             --datadir etc/upgrade/<version>
 
+     Clear mason cache dir:
+
+       rm -fr /opt/rt3/var/mason_data/obj
+
+     Stop and start web-server.
+
+
 8  If you're upgrading from RT 2.0:
 
     Please upgrade from RT 2.0 to RT 3.2 and then follow the instructions
 8  If you're upgrading from RT 2.0:
 
     Please upgrade from RT 2.0 to RT 3.2 and then follow the instructions
index 395fc0b..b1c5bba 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
 #! /bin/sh
-# From configure.ac Revision: 3070 .
+# From configure.ac Revision: 3739 .
 # Guess values for system-dependent variables and create Makefiles.
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for RT 3.4.4.
+# Generated by GNU Autoconf 2.59 for RT 3.4.5.
 #
 # Report bugs to <rt-bugs@fsck.com>.
 #
 #
 # Report bugs to <rt-bugs@fsck.com>.
 #
@@ -270,13 +270,13 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='RT'
 PACKAGE_TARNAME='rt'
 # Identity of this package.
 PACKAGE_NAME='RT'
 PACKAGE_TARNAME='rt'
-PACKAGE_VERSION='3.4.4'
-PACKAGE_STRING='RT 3.4.4'
+PACKAGE_VERSION='3.4.5'
+PACKAGE_STRING='RT 3.4.5'
 PACKAGE_BUGREPORT='rt-bugs@fsck.com'
 
 ac_unique_file="lib/RT.pm.in"
 ac_default_prefix=/opt/rt3
 PACKAGE_BUGREPORT='rt-bugs@fsck.com'
 
 ac_unique_file="lib/RT.pm.in"
 ac_default_prefix=/opt/rt3
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS rt_version_major rt_version_minor rt_version_patch INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PERL SPEEDY_BIN exp_prefix exp_exec_prefix exp_bindir exp_sbindir exp_sysconfdir exp_mandir exp_libdir exp_datadir htmldir exp_htmldir manualdir exp_manualdir exp_localstatedir logfiledir exp_logfiledir masonstatedir exp_masonstatedir sessionstatedir exp_sessionstatedir customdir exp_customdir custometcdir exp_custometcdir customhtmldir exp_customhtmldir customlexdir exp_customlexdir customlibdir exp_customlibdir rt_layout_name BIN_OWNER LIBS_OWNER LIBS_GROUP DB_TYPE DATABASE_ENV_PREF DB_HOST DB_PORT DB_RT_HOST DB_DBA DB_DATABASE DB_RT_USER DB_RT_PASS WEB_USER WEB_GROUP RTGROUP APACHECTL RT_DEVEL_MODE RT_VERSION_MAJOR RT_VERSION_MINOR RT_VERSION_PATCH RT_PATH RT_DOC_PATH RT_LOCAL_PATH RT_LIB_PATH RT_ETC_PATH CONFIG_FILE_PATH RT_BIN_PATH RT_SBIN_PATH RT_VAR_PATH RT_MAN_PATH MASON_DATA_PATH MASON_SESSION_PATH MASON_HTML_PATH LOCAL_ETC_PATH MASON_LOCAL_HTML_PATH LOCAL_LEXICON_PATH LOCAL_LIB_PATH DESTDIR RT_LOG_PATH LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS rt_version_major rt_version_minor rt_version_patch INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AWK PERL SPEEDY_BIN exp_prefix exp_exec_prefix exp_bindir exp_sbindir exp_sysconfdir exp_mandir exp_libdir exp_datadir htmldir exp_htmldir manualdir exp_manualdir exp_localstatedir logfiledir exp_logfiledir masonstatedir exp_masonstatedir sessionstatedir exp_sessionstatedir customdir exp_customdir custometcdir exp_custometcdir customhtmldir exp_customhtmldir customlexdir exp_customlexdir customlibdir exp_customlibdir rt_layout_name BIN_OWNER LIBS_OWNER LIBS_GROUP DB_TYPE DATABASE_ENV_PREF DB_HOST DB_PORT DB_RT_HOST DB_DBA DB_DATABASE DB_RT_USER DB_RT_PASS WEB_USER WEB_GROUP RTGROUP APACHECTL RT_DEVEL_MODE RT_VERSION_MAJOR RT_VERSION_MINOR RT_VERSION_PATCH RT_PATH RT_DOC_PATH RT_LOCAL_PATH RT_LIB_PATH RT_ETC_PATH CONFIG_FILE_PATH RT_BIN_PATH RT_SBIN_PATH RT_VAR_PATH RT_MAN_PATH MASON_DATA_PATH MASON_SESSION_PATH MASON_HTML_PATH LOCAL_ETC_PATH MASON_LOCAL_HTML_PATH LOCAL_LEXICON_PATH LOCAL_LIB_PATH DESTDIR RT_LOG_PATH LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -729,7 +729,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures RT 3.4.4 to adapt to many kinds of systems.
+\`configure' configures RT 3.4.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -786,7 +786,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of RT 3.4.4:";;
+     short | recursive ) echo "Configuration of RT 3.4.5:";;
    esac
   cat <<\_ACEOF
 
    esac
   cat <<\_ACEOF
 
@@ -927,7 +927,7 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-RT configure 3.4.4
+RT configure 3.4.5
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -941,7 +941,7 @@ cat >&5 <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by RT $as_me 3.4.4, which was
+It was created by RT $as_me 3.4.5, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1283,7 +1283,7 @@ rt_version_major=3
 
 rt_version_minor=4
 
 
 rt_version_minor=4
 
-rt_version_patch=4
+rt_version_patch=5
 
 test "x$rt_version_major" = 'x' && rt_version_major=0
 test "x$rt_version_minor" = 'x' && rt_version_minor=0
 
 test "x$rt_version_major" = 'x' && rt_version_major=0
 test "x$rt_version_minor" = 'x' && rt_version_minor=0
@@ -1393,6 +1393,46 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$AWK" && break
+done
+
 
 # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
 
 # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
@@ -1998,6 +2038,24 @@ if test "${with_my_user_group+set}" = set; then
             WEB_GROUP=$my_group
 fi;
 
             WEB_GROUP=$my_group
 fi;
 
+# Test for valid database names
+if  test "$DB_TYPE" == "mysql" ; then
+   echo "$as_me:$LINENO: checking if database name is valid" >&5
+echo $ECHO_N "checking if database name is valid... $ECHO_C" >&6
+          if  echo $DB_DATABASE | $AWK '/-/ { exit 1 }' ; then
+   echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+   { { echo "$as_me:$LINENO: error: no.  database name ($DB_DATABASE) contains '-' which is not valid for mysql" >&5
+echo "$as_me: error: no.  database name ($DB_DATABASE) contains '-' which is not valid for mysql" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+
+
+
+fi
+
 
 
 
 
 
 
@@ -2465,7 +2523,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by RT $as_me 3.4.4, which was
+This file was extended by RT $as_me 3.4.5, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -2520,7 +2578,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-RT config.status 3.4.4
+RT config.status 3.4.5
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -2726,6 +2784,7 @@ s,@rt_version_patch@,$rt_version_patch,;t t
 s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
 s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
 s,@INSTALL_DATA@,$INSTALL_DATA,;t t
 s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
 s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
 s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@AWK@,$AWK,;t t
 s,@PERL@,$PERL,;t t
 s,@SPEEDY_BIN@,$SPEEDY_BIN,;t t
 s,@exp_prefix@,$exp_prefix,;t t
 s,@PERL@,$PERL,;t t
 s,@SPEEDY_BIN@,$SPEEDY_BIN,;t t
 s,@exp_prefix@,$exp_prefix,;t t
index 1d0b95f..0d38ba4 100644 (file)
@@ -3,11 +3,11 @@ dnl
 dnl Process this file with autoconf to produce a configure script
 dnl
 dnl Embed in generated ./configure script the following CVS info:
 dnl Process this file with autoconf to produce a configure script
 dnl
 dnl Embed in generated ./configure script the following CVS info:
-AC_REVISION($Revision: 1.1.1.5 $)dnl
+AC_REVISION($Revision: 1.1.1.6 $)dnl
 
 dnl Setup autoconf
 AC_PREREQ(2.53)
 
 dnl Setup autoconf
 AC_PREREQ(2.53)
-AC_INIT(RT, [3.4.4], [rt-bugs@fsck.com])
+AC_INIT(RT, [3.4.5], [rt-bugs@fsck.com])
 AC_CONFIG_SRCDIR([lib/RT.pm.in])
 
 dnl Extract RT version number components
 AC_CONFIG_SRCDIR([lib/RT.pm.in])
 
 dnl Extract RT version number components
@@ -23,6 +23,7 @@ test "x$rt_version_patch" = 'x' && rt_version_patch=0
 
 dnl Check for programs
 AC_PROG_INSTALL
 
 dnl Check for programs
 AC_PROG_INSTALL
+AC_PROG_AWK
 AC_ARG_VAR([PERL],[Perl interpreter command])
 AC_PATH_PROG([PERL], [perl], [not found])
 if test "$PERL" = 'not found'; then
 AC_ARG_VAR([PERL],[Perl interpreter command])
 AC_PATH_PROG([PERL], [perl], [not found])
 if test "$PERL" = 'not found'; then
@@ -213,6 +214,15 @@ AC_ARG_WITH(my-user-group,
             WEB_USER=$my_user
             WEB_GROUP=$my_group)
 
             WEB_USER=$my_user
             WEB_GROUP=$my_group)
 
+# Test for valid database names
+AS_IF([ test "$DB_TYPE" == "mysql" ],
+      [ AC_MSG_CHECKING([if database name is valid])
+          AS_IF([ echo $DB_DATABASE | $AWK '/-/ { exit 1 }' ],
+                [ AC_MSG_RESULT([yes]) ],
+                [ AC_MSG_ERROR([no.  database name ($DB_DATABASE) contains '-' which is not valid for mysql]) ]
+               )
+      ]
+     )
 
 
 dnl Set the value of apachectl
 
 
 dnl Set the value of apachectl
index 773e3e2..10d46eb 100644 (file)
@@ -35,16 +35,16 @@ Set($rtname , "example.com");
 # token matching and that you should use only "non-capturing" parenthesis
 # grouping. For example:
 #
 # token matching and that you should use only "non-capturing" parenthesis
 # grouping. For example:
 #
-#      Set($EmailSubjectTagRegex, qr/(?:example.com|example.org)/ );
+#      Set($EmailSubjectTagRegex, qr/(?:example.com|example.org)/i );
 #
 # and NOT
 # 
 #
 # and NOT
 # 
-#      Set($EmailSubjectTagRegex, qr/(example.com|example.org)/ );
+#      Set($EmailSubjectTagRegex, qr/(example.com|example.org)/i );
 #
 # This setting would make RT behave exactly as it does without the 
 # setting enabled.
 #
 #
 # This setting would make RT behave exactly as it does without the 
 # setting enabled.
 #
-# Set($EmailSubjectTagRegex, qr/\Q$rtname\E/ );
+# Set($EmailSubjectTagRegex, qr/\Q$rtname\E/i );
 
 
 
 
 
 
@@ -210,6 +210,11 @@ Set($MailCommand , 'sendmailpipe');
 # These options are good for most sendmail wrappers and workalikes
 Set($SendmailArguments , "-oi -t");
 
 # These options are good for most sendmail wrappers and workalikes
 Set($SendmailArguments , "-oi -t");
 
+# $SendmailBounceArguments defines what flags to pass to $Sendmail
+# assuming RT needs to send an error (ie. bounce).
+
+Set($SendmailBounceArguments , '-f "<>"');
+
 # These arguments are good for sendmail brand sendmail 8 and newer
 #Set($SendmailArguments,"-oi -t -ODeliveryMode=b -OErrorMode=m");
 
 # These arguments are good for sendmail brand sendmail 8 and newer
 #Set($SendmailArguments,"-oi -t -ODeliveryMode=b -OErrorMode=m");
 
@@ -468,6 +473,11 @@ Set($AmbiguousDayInPast , 1);
 @ActiveStatus = qw(new open stalled) unless @ActiveStatus;
 @InactiveStatus = qw(resolved rejected deleted) unless @InactiveStatus;
 
 @ActiveStatus = qw(new open stalled) unless @ActiveStatus;
 @InactiveStatus = qw(resolved rejected deleted) unless @InactiveStatus;
 
+# Backward compatability setting. Add/Delete Link used to record one
+# transaction and run one scrip. Set this value to 0 if you want
+# both link transactions to have a scrip run.
+Set($LinkTransactionsRun1Scrip , 1);
+
 # }}}
 
 
 # }}}
 
 
index f13ddf0..8d19399 100644 (file)
@@ -77,6 +77,7 @@ $tickets->LimitOwner( VALUE => $session{'CurrentUser'}->Id );
 
 # also consider AdminCcs as potential approvers.
 my $group_tickets = RT::Tickets->new( $session{'CurrentUser'} );
 
 # also consider AdminCcs as potential approvers.
 my $group_tickets = RT::Tickets->new( $session{'CurrentUser'} );
+$group_tickets->LimitWatcher( VALUE => $session{'CurrentUser'}->UserObj->EmailAddress, TYPE => 'AdminCc' );
 
 my $created_before = RT::Date->new( $session{'CurrentUser'} );
 my $created_after = RT::Date->new( $session{'CurrentUser'} );
 
 my $created_before = RT::Date->new( $session{'CurrentUser'} );
 my $created_after = RT::Date->new( $session{'CurrentUser'} );
index 937e923..c7aeb9f 100644 (file)
@@ -68,14 +68,14 @@ if (!$callbacks) {
         push @$callbacks,
             # Skip backup files, files without a leading package name,
             # and files we've already seen
         push @$callbacks,
             # Skip backup files, files without a leading package name,
             # and files we've already seen
-            grep {     !/^\.|~$/
+            grep {     !/\/\.|~$/
                    and $_ ne "/Callbacks/$Page/$_CallbackName"
                    and not $seen{$_}++ }
                  $m->interp->resolver->glob_path($path, $root);
     }
     
     $m->notes($CacheKey => $callbacks);
                    and $_ ne "/Callbacks/$Page/$_CallbackName"
                    and not $seen{$_}++ }
                  $m->interp->resolver->glob_path($path, $root);
     }
     
     $m->notes($CacheKey => $callbacks);
-    $cache{$Page,$_CallbackName} = $callbacks if !$RT::DevelMode;
+    $cache{$CacheKey} = $callbacks if !$RT::DevelMode;
 }
 
 my @rv;
 }
 
 my @rv;
index 3316bc0..0de362e 100644 (file)
@@ -71,6 +71,7 @@ foreach my $column (@Format) {
     $item++;
     $m->out('<td class="collection-as-table" ');
     $m->out( 'align="' . $column->{align} . '"' ) if ( $column->{align} );
     $item++;
     $m->out('<td class="collection-as-table" ');
     $m->out( 'align="' . $column->{align} . '"' ) if ( $column->{align} );
+    $m->out( 'style="' . $column->{style} . '"' ) if ( $column->{style} );
     $m->out('>');
     foreach my $subcol ( @{ $column->{output} } ) {
         if ( $subcol =~ /^__(.*?)__$/o ) {
     $m->out('>');
     foreach my $subcol ( @{ $column->{output} } ) {
         if ( $subcol =~ /^__(.*?)__$/o ) {
index d2398c9..e443c76 100644 (file)
@@ -49,6 +49,10 @@ if ($Object) {
     $Values = $Object->CustomFieldValues($CustomField->id);
     $Values->Columns( qw( id CustomField ObjectType ObjectId Disabled Content ContentType ContentEncoding ) );
     $NamePrefix ||= join('-', 'Object', ref($Object), $Object->Id, 'CustomField', '');
     $Values = $Object->CustomFieldValues($CustomField->id);
     $Values->Columns( qw( id CustomField ObjectType ObjectId Disabled Content ContentType ContentEncoding ) );
     $NamePrefix ||= join('-', 'Object', ref($Object), $Object->Id, 'CustomField', '');
+} elsif (not $Default) {
+    my %TOP = $m->request_args;
+    $Default = $TOP{ $NamePrefix .$CustomField->Id . '-Values' }
+            || $TOP{ $NamePrefix .$CustomField->Id . '-Value' };
 }
 my $Type = $CustomField->Type;
 
 }
 my $Type = $CustomField->Type;
 
index db33a68..2a2a64a 100644 (file)
@@ -53,7 +53,8 @@
 % if ($Values) {
             <% $Values->HasEntry($value->Name) && ($selected = 1) && 'SELECTED' %>
 % } elsif ($Default) {
 % if ($Values) {
             <% $Values->HasEntry($value->Name) && ($selected = 1) && 'SELECTED' %>
 % } elsif ($Default) {
-            <% ($Default eq $value->Name) && ($selected = 1) && 'SELECTED' %>
+            <% (ref $Default ? (grep {$_ eq $value->Name} @{$Default}) : ($Default eq $value->Name))
+                && ($selected = 1) && 'SELECTED' %>
 % }
             ><% $value->Name%></option>
 % }
 % }
             ><% $value->Name%></option>
 % }
index 8c3775b..f5a616e 100644 (file)
 <HTML>
 <HEAD>
 <TITLE><%$Title%></TITLE>
 <HTML>
 <HEAD>
 <TITLE><%$Title%></TITLE>
-% if ($Refresh > 0) {
+% if ($Refresh && $Refresh > 0) {
 <META HTTP-EQUIV="REFRESH" CONTENT="<%$Refresh%>">
 % }
 
 <META HTTP-EQUIV="REFRESH" CONTENT="<%$Refresh%>">
 % }
 
-<link rel="shortcut icon" href="<%$RT::WebImagesURL%>/favicon.png" type="image/png">
-<link rel="stylesheet" href="<%$RT::WebPath%>/NoAuth/webrt.css" type="text/css">
+<link rel="shortcut icon" href="<%$RT::WebImagesURL%>/favicon.png" type="image/png" />
+<link media="all" rel="stylesheet" href="<%$RT::WebPath%>/NoAuth/webrt.css" type="text/css" />
+<link media="print" rel="stylesheet" href="<%$RT::WebPath%>/NoAuth/printrt.css" type="text/css" />
+
 <script>
 function hideshow(num) {
     idstring = "element-" + num;
 <script>
 function hideshow(num) {
     idstring = "element-" + num;
index 7d41f15..1ddab85 100644 (file)
 %# END BPS TAGGED BLOCK }}}
 <%init>
 my @params;
 %# END BPS TAGGED BLOCK }}}
 <%init>
 my @params;
-while ( (my $key, my $value) = each %ARGS ){
+while ( my ($key, $value) = each %ARGS ){
+    if( UNIVERSAL::isa( $value, 'ARRAY' ) ) {
+       push @params, map $key."=".$m->interp->apply_escapes($_,'u'), @$value;
+    } else {
        push @params, $key."=".$m->interp->apply_escapes($value,'u');
        push @params, $key."=".$m->interp->apply_escapes($value,'u');
+    }
 }
 return(join('&',@params));
 </%init>
 }
 return(join('&',@params));
 </%init>
index dade914..80e3c69 100644 (file)
@@ -95,6 +95,7 @@ sub LinkCallback {
 
     my $mode            = $RT::Ticket::LINKTYPEMAP{$method}{Mode};
     my $type            = $RT::Ticket::LINKTYPEMAP{$method}{Type};
 
     my $mode            = $RT::Ticket::LINKTYPEMAP{$method}{Mode};
     my $type            = $RT::Ticket::LINKTYPEMAP{$method}{Type};
+    my $other_mode      = ($mode eq "Target" ? "Base" : "Target");
     my $mode_uri        = $mode.'URI';
     my $local_type      = 'Local'.$mode;
 
     my $mode_uri        = $mode.'URI';
     my $local_type      = 'Local'.$mode;
 
@@ -105,7 +106,7 @@ sub LinkCallback {
             \'">',
             ( $_->$mode_uri->IsLocal ? $_->$local_type : $_->$mode ),
             \'</A><BR>',
             \'">',
             ( $_->$mode_uri->IsLocal ? $_->$local_type : $_->$mode ),
             \'</A><BR>',
-        } @{ $_[0]->Links($mode,$type)->ItemsArrayRef }
+        } @{ $_[0]->Links($other_mode,$type)->ItemsArrayRef }
     }
 }
 
     }
 }
 
index 94a7299..443ded9 100644 (file)
@@ -62,7 +62,7 @@ $scrubber->default(
 
 $scrubber->deny(qw[*]);
 $scrubber->allow(
 
 $scrubber->deny(qw[*]);
 $scrubber->allow(
-    qw[A B U P BR I HR BR SMALL EM FONT SPAN DIV UL OL LI DL DT DD]);
+    qw[A B U P BR I HR BR SMALL EM FONT SPAN DIV UL OL LI DL DT DD PRE]);
 $scrubber->comment(0);
 return ( $scrubber->scrub($Content) );
 </%init>
 $scrubber->comment(0);
 return ( $scrubber->scrub($Content) );
 </%init>
index 7591fa3..9861841 100644 (file)
@@ -71,6 +71,9 @@
 </table>
 <%INIT>
 my $CustomFields = $Object->CustomFields;
 </table>
 <%INIT>
 my $CustomFields = $Object->CustomFields;
+ $m->comp('/Elements/Callback', _CallbackName => 'MassageCustomFields',
+                                CustomFields => $CustomFields);
+
 </%INIT>
 <%ARGS>
 $Object => undef
 </%INIT>
 <%ARGS>
 $Object => undef
diff --git a/rt/html/NoAuth/printrt.css b/rt/html/NoAuth/printrt.css
new file mode 100644 (file)
index 0000000..72e7e8b
--- /dev/null
@@ -0,0 +1,77 @@
+%# {{{ BEGIN BPS TAGGED BLOCK
+%# 
+%# 
+%# 
+%# LICENSE:
+%# 
+%# This work is made available to you under the terms of Version 2 of
+%# the GNU General Public License. A copy of that license should have
+%# been provided with this software, but in any event can be snarfed
+%# from www.gnu.org.
+%# 
+%# This work is distributed in the hope that it will be useful, but
+%# WITHOUT ANY WARRANTY; without even the implied warranty of
+%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+%# General Public License for more details.
+%# 
+%# You should have received a copy of the GNU General Public License
+%# along with this program; if not, write to the Free Software
+%# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%# 
+%# 
+%# CONTRIBUTION SUBMISSION POLICY:
+%# 
+%# (The following paragraph is not intended to limit the rights granted
+%# to you to modify and distribute this software under the terms of
+%# the GNU General Public License and is only of importance to you if
+%# you choose to contribute your changes and enhancements to the
+%# community by submitting them to Best Practical Solutions, LLC.)
+%# 
+%# By intentionally submitting any modifications, corrections or
+%# derivatives to this work, or any other work intended for use with
+%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+%# you are the copyright holder for those contributions and you grant
+%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+%# royalty-free, perpetual, license to use, copy, create derivative
+%# works based on those contributions, and sublicense and distribute
+%# those contributions and any derivatives thereof.
+%# 
+%# }}} END BPS TAGGED BLOCK
+%#
+%# Special stylesheet for printing tickets
+%# Koos van den Hout koos@cs.uu.nl 2005-11-21
+%#
+
+SPAN.nav { display: none !important; }
+.nav2 { display: none !important; }
+.nav { display: none !important; }
+.topnav { display: none !important; }
+.blue { display: none !important; }
+.darkblue { display: none !important; }
+.blueright { display: none !important; }
+.currentnav { display: none !important; }
+th.titlebox { border-top: none; border-bottom: none; }
+th.titleboxright { display:none !important; border-top: none; border-bottom: none; }
+.titlebox { border-top: none; border-bottom: none; }
+
+div.downloadattachment, div.downloadcontenttype {
+       display: none !important;
+}
+
+
+a[href$="Respond"], a[href$="Comment"], a[href*="ShowEmailRecord"] {
+       display: none !important;
+}
+
+
+%# Provide a callback for adding/modifying the style sheet.
+%# http://www.w3.org/TR/REC-CSS1 - section 3.2, says:
+%#   "latter specified rule wins"
+<& /Elements/Callback &>
+<%flags>
+inherit => undef
+</%flags>
+<%init>
+$r->content_type('text/css');
+$r->headers_out->{'Expires'} = '+30m';
+</%init>
index ccdd49d..7fa2f83 100644 (file)
@@ -74,37 +74,37 @@ SPAN.nav {  font-family: Verdana, Arial, Helvetica, sans-serif;
 %# This modification sets a different class name for each level, allowing
 %# style sheet control over the formats.
 
 %# This modification sets a different class name for each level, allowing
 %# style sheet control over the formats.
 
-a.topnav-0 {  font-family: Verdana, sans-serif;
+a.topnav-0 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 16px;
         font-weight: normal;
         color: #FFFFFF;
         text-decoration: none;
         white-space: nowrap}
         font-size: 16px;
         font-weight: normal;
         color: #FFFFFF;
         text-decoration: none;
         white-space: nowrap}
-a.topnav-1 {  font-family: Verdana, sans-serif;
+a.topnav-1 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 14px;
         font-weight: normal;
         color: #FFFFFF;
         text-decoration: none;
         white-space: nowrap}
         font-size: 14px;
         font-weight: normal;
         color: #FFFFFF;
         text-decoration: none;
         white-space: nowrap}
-a.topnav-2 {  font-family: Verdana, sans-serif;
+a.topnav-2 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 12px;
         font-weight: normal;
         color: #FFFFFF;
         text-decoration: none;
         white-space: nowrap}
         font-size: 12px;
         font-weight: normal;
         color: #FFFFFF;
         text-decoration: none;
         white-space: nowrap}
-a.topnav-3 {  font-family: Verdana, sans-serif;
+a.topnav-3 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 11px;
         font-weight: normal;
         color: #FFFFFF;
         text-decoration: none;
         white-space: nowrap}
         font-size: 11px;
         font-weight: normal;
         color: #FFFFFF;
         text-decoration: none;
         white-space: nowrap}
-a.topnav-4 {  font-family: Verdana, sans-serif;
+a.topnav-4 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 11px;
         font-weight: normal;
         color: #FFFFFF;
         text-decoration: none;
         white-space: nowrap}
         font-size: 11px;
         font-weight: normal;
         color: #FFFFFF;
         text-decoration: none;
         white-space: nowrap}
-a.topnav-5 {  font-family: Verdana, sans-serif;
+a.topnav-5 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 11px;
         font-weight: normal;
         color: #FFFFFF;
         font-size: 11px;
         font-weight: normal;
         color: #FFFFFF;
@@ -183,37 +183,37 @@ li.topnav-5-major {
 %# This modification sets a different class name for each level, allowing
 %# style sheet control over the formats
 
 %# This modification sets a different class name for each level, allowing
 %# style sheet control over the formats
 
-a.currenttopnav-0 {  font-family: Verdana, sans-serif;
+a.currenttopnav-0 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 16px;
          font-weight: bold;
         color: #FFFF66;
         text-decoration: none;
         white-space: nowrap}
         font-size: 16px;
          font-weight: bold;
         color: #FFFF66;
         text-decoration: none;
         white-space: nowrap}
-a.currenttopnav-1 {  font-family: Verdana, sans-serif;
+a.currenttopnav-1 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 14px;
          font-weight: bold;
         color: #FFFF66;
         text-decoration: none;
         white-space: nowrap}
         font-size: 14px;
          font-weight: bold;
         color: #FFFF66;
         text-decoration: none;
         white-space: nowrap}
-a.currenttopnav-2 {  font-family: Verdana, sans-serif;
+a.currenttopnav-2 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 12px;
          font-weight: normal;
         color: #FFFF66;
         text-decoration: none;
         white-space: nowrap}
         font-size: 12px;
          font-weight: normal;
         color: #FFFF66;
         text-decoration: none;
         white-space: nowrap}
-a.currenttopnav-3 {  font-family: Verdana, sans-serif;
+a.currenttopnav-3 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 11px;
          font-weight: normal;
         color: #FFFF66;
         text-decoration: none;
         white-space: nowrap}
         font-size: 11px;
          font-weight: normal;
         color: #FFFF66;
         text-decoration: none;
         white-space: nowrap}
-a.currenttopnav-4 {  font-family: Verdana, sans-serif;
+a.currenttopnav-4 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 11px;
          font-weight: normal;
         color: #FFFF66;
         text-decoration: none;
         white-space: nowrap}
         font-size: 11px;
          font-weight: normal;
         color: #FFFF66;
         text-decoration: none;
         white-space: nowrap}
-a.currenttopnav-5 {  font-family: Verdana, sans-serif;
+a.currenttopnav-5 {  font-family: Verdana, Arial, Helvetica, sans-serif;
         font-size: 11px;
          font-weight: normal;
         color: #FFFF66;
         font-size: 11px;
          font-weight: normal;
         color: #FFFF66;
@@ -454,7 +454,7 @@ SPAN.message {
 BODY {
   color: #000;
   background: #FFFFFF;
 BODY {
   color: #000;
   background: #FFFFFF;
-  font-family: "Helvetica", sans-serif;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
   margin-top: 0px;
   margin-bottom: 0px;
   margin-left: 0px;
   margin-top: 0px;
   margin-bottom: 0px;
   margin-left: 0px;
@@ -477,7 +477,7 @@ TR.evenline {
 H1, H2, H3 { 
   margin-top: 0.2em;
   color: #336699;
 H1, H2, H3 { 
   margin-top: 0.2em;
   color: #336699;
-  font-family: "Helvetica", sans-serif;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
 
   clear: both;
 }
 
   clear: both;
 }
index cb64626..5a66e02 100644 (file)
@@ -256,237 +256,6 @@ if ( $ARGS{'LoadSavedSearch'} =~ /^(.*?)-(\d+)-SavedSearch-(\d+)$/ ) {
 # }}}
 
 # {{{ Parse the query
 # }}}
 
 # {{{ Parse the query
-my $tree;
-ParseQuery( $Query, \$tree, \@actions );
-
-# if parsing went poorly, send them to the edit page to fix it
-if ( $actions[0] ) {
-    $m->comp( "Edit.html", Query => $Query, actions => \@actions );
-    $m->abort();
-}
-
-$Query  = "";
-
-my @options = $tree->GetDisplayedNodes;
-
-my @current_values = grep { defined } @options[@clauses];
-
-# {{{ Try to find if we're adding a clause
-foreach my $arg ( keys %ARGS ) {
-    if (
-        $arg =~ m/^ValueOf(.+)/
-        && ( ref $ARGS{$arg} eq "ARRAY"
-            ? grep { $_ ne "" } @{ $ARGS{$arg} }
-            : $ARGS{$arg} ne "" )
-      )
-    {
-
-        # We're adding a $1 clause
-        my $field = $1;
-        my ( $keyword, $op, $value );
-
-        #figure out if it's a grouping
-        if ( $ARGS{ $field . "Field" } ) {
-            $keyword = $ARGS{ $field . "Field" };
-        }
-        else {
-            $keyword = $field;
-        }
-
-        my ( @ops, @values );
-        if ( ref $ARGS{ 'ValueOf' . $field } eq "ARRAY" ) {
-
-            # we have many keys/values to iterate over, because there is
-            # more than one CF with the same name.
-            @ops    = @{ $ARGS{ $field . 'Op' } };
-            @values = @{ $ARGS{ 'ValueOf' . $field } };
-        }
-        else {
-            @ops    = ( $ARGS{ $field . 'Op' } );
-            @values = ( $ARGS{ 'ValueOf' . $field } );
-        }
-        $RT::Logger->error("Bad Parameters passed into Query Builder")
-          unless @ops == @values;
-
-        for my $i ( 0 .. @ops - 1 ) {
-            my ( $op, $value ) = ( $ops[$i], $values[$i] );
-            next if $value eq "";
-
-            if ( $value eq 'NULL' && $op =~ /=/ ) {
-                if ( $op eq '=' ) {
-                    $op = "IS";
-                }
-                elsif ( $op eq '!=' ) {
-                    $op = "IS NOT";
-                }
-
-                # This isn't "right", but...
-                # It has to be this way until #5182 is fixed
-                $value = "'NULL'";
-            }
-            else {
-                $value = "'$value'";
-            }
-
-            my $clause = {
-                Key   => $keyword,
-                Op    => $op,
-                Value => $value
-            };
-
-            my $newnode = RT::Interface::Web::QueryBuilder::Tree->new($clause);
-            if (@current_values) {
-                foreach my $value (@current_values) {
-                    my $newindex = $value->getIndex() + 1;
-                    $value->insertSibling( $newindex, $newnode );
-                    $value = $newnode;
-                }
-            }
-            else {
-                $tree->getChild(0)->addChild($newnode);
-                @current_values = $newnode;
-            }
-            $newnode->getParent()->setNodeValue( $ARGS{'AndOr'} );
-        }
-    }
-}
-
-# }}}
-
-# {{{ Move things around
-if ( $ARGS{"Up"} ) {
-    if (@current_values) {
-        foreach my $value (@current_values) {
-            my $index = $value->getIndex();
-            if ( $value->getIndex() > 0 ) {
-                my $parent = $value->getParent();
-                $parent->removeChild($index);
-                $parent->insertChild( $index - 1, $value );
-                $value = $parent->getChild( $index - 1 );
-            }
-            else {
-                push( @actions, [ loc("error: can't move up"), -1 ] );
-            }
-        }
-    }
-    else {
-        push( @actions, [ loc("error: nothing to move"), -1 ] );
-    }
-}
-elsif ( $ARGS{"Down"} ) {
-    if (@current_values) {
-        foreach my $value (@current_values) {
-            my $index  = $value->getIndex();
-            my $parent = $value->getParent();
-            if ( $value->getIndex() < ( $parent->getChildCount - 1 ) ) {
-                $parent->removeChild($index);
-                $parent->insertChild( $index + 1, $value );
-                $value = $parent->getChild( $index + 1 );
-            }
-            else {
-                push( @actions, [ loc("error: can't move down"), -1 ] );
-            }
-        }
-    }
-    else {
-        push( @actions, [ loc("error: nothing to move"), -1 ] );
-    }
-}
-elsif ( $ARGS{"Left"} ) {
-    if (@current_values) {
-        foreach my $value (@current_values) {
-            my $parent      = $value->getParent();
-            my $grandparent = $parent->getParent();
-            if ( !$grandparent->isRoot ) {
-                my $index = $parent->getIndex();
-                $parent->removeChild($value);
-                $grandparent->insertChild( $index, $value );
-                if ( $parent->isLeaf() ) {
-                    $grandparent->removeChild($parent);
-                }
-            }
-            else {
-                push( @actions, [ loc("error: can't move left"), -1 ] );
-            }
-        }
-    }
-    else {
-        push( @actions, [ loc("error: nothing to move"), -1 ] );
-    }
-}
-elsif ( $ARGS{"Right"} ) {
-    if (@current_values) {
-        foreach my $value (@current_values) {
-            my $parent = $value->getParent();
-            my $index  = $value->getIndex();
-            my $newparent;
-            if ( $index > 0 ) {
-                my $sibling = $parent->getChild( $index - 1 );
-                if ( ref( $sibling->getNodeValue ) ) {
-                    $parent->removeChild($value);
-                    my $newtree = RT::Interface::Web::QueryBuilder::Tree->new( 'AND', $parent );
-                    $newtree->addChild($value);
-                }
-                else {
-                    $parent->removeChild($index);
-                    $sibling->addChild($value);
-                }
-            }
-            else {
-                $parent->removeChild($value);
-                $newparent = RT::Interface::Web::QueryBuilder::Tree->new( 'AND', $parent );
-                $newparent->addChild($value);
-            }
-        }
-    }
-    else {
-        push( @actions, [ loc("error: nothing to move"), -1 ] );
-    }
-}
-elsif ( $ARGS{"DeleteClause"} ) {
-    if (@current_values) {
-        $_->getParent()->removeChild($_) for @current_values;
-    }
-    else {
-        push( @actions, [ loc("error: nothing to delete"), -1 ] );
-    }
-}
-elsif ( $ARGS{"Toggle"} ) {
-    my $ea;
-    if (@current_values) {
-        foreach my $value (@current_values) {
-            my $parent = $value->getParent();
-
-            if ( $parent->getNodeValue eq 'AND' ) {
-                $parent->setNodeValue('OR');
-            }
-            else {
-                $parent->setNodeValue('AND');
-            }
-        }
-    }
-    else {
-        push( @actions, [ loc("error: nothing to toggle"), -1 ] );
-    }
-}
-
-$tree->PruneChildlessAggregators;
-
-# }}}
-
-# {{{ Rebuild $Query based on the additions / movements
-$Query      = "";
-my $optionlist_arrayref;
-
-($Query, $optionlist_arrayref) = $tree->GetQueryAndOptionList(\@current_values);
-  
-my $optionlist = join "\n", map { qq(<option value="$_->{INDEX}" $_->{SELECTED}>) 
-                                  . ("&nbsp;" x (5 * $_->{DEPTH}))
-                                  . $m->interp->apply_escapes($_->{TEXT}, 'h') . qq(</option>) } @$optionlist_arrayref;
-
-
-
-
 use Regexp::Common qw /delimited/;
 
 # States
 use Regexp::Common qw /delimited/;
 
 # States
@@ -496,7 +265,17 @@ use constant OP      => 4;
 use constant PAREN   => 8;
 use constant KEYWORD => 16;
 
 use constant PAREN   => 8;
 use constant KEYWORD => 16;
 
-sub ParseQuery {
+my $_match = sub {
+
+    # 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;
+};
+
+my $ParseQuery = sub {
     my $string  = shift;
     my $tree    = shift;
     my @actions = shift;
     my $string  = shift;
     my $tree    = shift;
     my @actions = shift;
@@ -548,12 +327,12 @@ sub ParseQuery {
         my $current = 0;
 
         # Highest priority is last
         my $current = 0;
 
         # Highest priority is last
-        $current = OP    if _match( $re_op,    $val );
-        $current = VALUE if _match( $re_value, $val );
+        $current = OP    if $_match->( $re_op,    $val );
+        $current = VALUE if $_match->( $re_value, $val );
         $current = KEYWORD
         $current = KEYWORD
-          if _match( $re_keyword, $val ) && ( $want & KEYWORD );
-        $current = AGGREG if _match( $re_aggreg, $val );
-        $current = PAREN  if _match( $re_paren,  $val );
+          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 ) {
 
 
         unless ( $current && $want & $current ) {
 
@@ -666,25 +445,242 @@ sub ParseQuery {
     # This will never happen, because the parser will complain
     push @actions, [ loc("Mismatched parentheses"), -1 ]
       unless $depth == 1;
     # This will never happen, because the parser will complain
     push @actions, [ loc("Mismatched parentheses"), -1 ]
       unless $depth == 1;
+};
+
+my $tree;
+$ParseQuery->( $Query, \$tree, \@actions );
+
+# if parsing went poorly, send them to the edit page to fix it
+if ( $actions[0] ) {
+    $m->comp( "Edit.html", Query => $Query, actions => \@actions );
+    $m->abort();
 }
 
 }
 
-sub _match {
+$Query  = "";
 
 
-    # Case insensitive equality
-    my ( $y, $x ) = @_;
-    return 1 if $x =~ /^$y$/i;
+my @options = $tree->GetDisplayedNodes;
 
 
-    #  return 1 if ((lc $x) eq (lc $y)); # Why isnt this equiv?
-    return 0;
+my @current_values = grep { defined } @options[@clauses];
+
+# {{{ Move things around
+if ( $ARGS{"Up"} ) {
+    if (@current_values) {
+        foreach my $value (@current_values) {
+            my $index = $value->getIndex();
+            if ( $value->getIndex() > 0 ) {
+                my $parent = $value->getParent();
+                $parent->removeChild($index);
+                $parent->insertChild( $index - 1, $value );
+                $value = $parent->getChild( $index - 1 );
+            }
+            else {
+                push( @actions, [ loc("error: can't move up"), -1 ] );
+            }
+        }
+    }
+    else {
+        push( @actions, [ loc("error: nothing to move"), -1 ] );
+    }
+}
+elsif ( $ARGS{"Down"} ) {
+    if (@current_values) {
+        foreach my $value (@current_values) {
+            my $index  = $value->getIndex();
+            my $parent = $value->getParent();
+            if ( $value->getIndex() < ( $parent->getChildCount - 1 ) ) {
+                $parent->removeChild($index);
+                $parent->insertChild( $index + 1, $value );
+                $value = $parent->getChild( $index + 1 );
+            }
+            else {
+                push( @actions, [ loc("error: can't move down"), -1 ] );
+            }
+        }
+    }
+    else {
+        push( @actions, [ loc("error: nothing to move"), -1 ] );
+    }
 }
 }
+elsif ( $ARGS{"Left"} ) {
+    if (@current_values) {
+        foreach my $value (@current_values) {
+            my $parent      = $value->getParent();
+            my $grandparent = $parent->getParent();
+            if ( !$grandparent->isRoot ) {
+                my $index = $parent->getIndex();
+                $parent->removeChild($value);
+                $grandparent->insertChild( $index, $value );
+                if ( $parent->isLeaf() ) {
+                    $grandparent->removeChild($parent);
+                }
+            }
+            else {
+                push( @actions, [ loc("error: can't move left"), -1 ] );
+            }
+        }
+    }
+    else {
+        push( @actions, [ loc("error: nothing to move"), -1 ] );
+    }
+}
+elsif ( $ARGS{"Right"} ) {
+    if (@current_values) {
+        foreach my $value (@current_values) {
+            my $parent = $value->getParent();
+            my $index  = $value->getIndex();
+            my $newparent;
+            if ( $index > 0 ) {
+                my $sibling = $parent->getChild( $index - 1 );
+                if ( ref( $sibling->getNodeValue ) ) {
+                    $parent->removeChild($value);
+                    my $newtree = RT::Interface::Web::QueryBuilder::Tree->new( 'AND', $parent );
+                    $newtree->addChild($value);
+                }
+                else {
+                    $parent->removeChild($index);
+                    $sibling->addChild($value);
+                }
+            }
+            else {
+                $parent->removeChild($value);
+                $newparent = RT::Interface::Web::QueryBuilder::Tree->new( 'AND', $parent );
+                $newparent->addChild($value);
+            }
+        }
+    }
+    else {
+        push( @actions, [ loc("error: nothing to move"), -1 ] );
+    }
+}
+elsif ( $ARGS{"DeleteClause"} ) {
+    if (@current_values) {
+        $_->getParent()->removeChild($_) for @current_values;
+               @current_values = ();
+    }
+    else {
+        push( @actions, [ loc("error: nothing to delete"), -1 ] );
+    }
+}
+elsif ( $ARGS{"Toggle"} ) {
+    my $ea;
+    if (@current_values) {
+        foreach my $value (@current_values) {
+            my $parent = $value->getParent();
+
+            if ( $parent->getNodeValue eq 'AND' ) {
+                $parent->setNodeValue('OR');
+            }
+            else {
+                $parent->setNodeValue('AND');
+            }
+        }
+    }
+    else {
+        push( @actions, [ loc("error: nothing to toggle"), -1 ] );
+    }
+}
+
+# {{{ Try to find if we're adding a clause
+foreach my $arg ( keys %ARGS ) {
+    if (
+        $arg =~ m/^ValueOf(.+)/
+        && ( ref $ARGS{$arg} eq "ARRAY"
+            ? grep { $_ ne "" } @{ $ARGS{$arg} }
+            : $ARGS{$arg} ne "" )
+      )
+    {
+
+        # We're adding a $1 clause
+        my $field = $1;
+        my ( $keyword, $op, $value );
+
+        #figure out if it's a grouping
+        if ( $ARGS{ $field . "Field" } ) {
+            $keyword = $ARGS{ $field . "Field" };
+        }
+        else {
+            $keyword = $field;
+        }
+
+        my ( @ops, @values );
+        if ( ref $ARGS{ 'ValueOf' . $field } eq "ARRAY" ) {
+
+            # we have many keys/values to iterate over, because there is
+            # more than one CF with the same name.
+            @ops    = @{ $ARGS{ $field . 'Op' } };
+            @values = @{ $ARGS{ 'ValueOf' . $field } };
+        }
+        else {
+            @ops    = ( $ARGS{ $field . 'Op' } );
+            @values = ( $ARGS{ 'ValueOf' . $field } );
+        }
+        $RT::Logger->error("Bad Parameters passed into Query Builder")
+          unless @ops == @values;
+
+        for my $i ( 0 .. @ops - 1 ) {
+            my ( $op, $value ) = ( $ops[$i], $values[$i] );
+            next if $value eq "";
 
 
-sub debug {
-    my $message = shift;
-    $m->print( $message . "<br>" );
+            if ( $value eq 'NULL' && $op =~ /=/ ) {
+                if ( $op eq '=' ) {
+                    $op = "IS";
+                }
+                elsif ( $op eq '!=' ) {
+                    $op = "IS NOT";
+                }
+
+                # This isn't "right", but...
+                # It has to be this way until #5182 is fixed
+                $value = "'NULL'";
+            }
+            else {
+                $value = "'$value'";
+            }
+
+            my $clause = {
+                Key   => $keyword,
+                Op    => $op,
+                Value => $value
+            };
+
+            my $newnode = RT::Interface::Web::QueryBuilder::Tree->new($clause);
+            if (@current_values) {
+                foreach my $value (@current_values) {
+                    my $newindex = $value->getIndex() + 1;
+                    $value->insertSibling( $newindex, $newnode );
+                    $value = $newnode;
+                }
+            }
+            else {
+                $tree->getChild(0)->addChild($newnode);
+                @current_values = $newnode;
+            }
+            $newnode->getParent()->setNodeValue( $ARGS{'AndOr'} );
+        }
+    }
 }
 
 # }}}
 
 }
 
 # }}}
 
+$tree->PruneChildlessAggregators;
+
+# }}}
+
+# {{{ Rebuild $Query based on the additions / movements
+$Query      = "";
+my $optionlist_arrayref;
+
+($Query, $optionlist_arrayref) = $tree->GetQueryAndOptionList(\@current_values);
+  
+my $optionlist = join "\n", map { qq(<option value="$_->{INDEX}" $_->{SELECTED}>) 
+                                  . ("&nbsp;" x (5 * $_->{DEPTH}))
+                                  . $m->interp->apply_escapes($_->{TEXT}, 'h') . qq(</option>) } @$optionlist_arrayref;
+
+
+
+
+# }}}
+
 # }}}
 
 my $queues = $tree->GetReferencedQueues;
 # }}}
 
 my $queues = $tree->GetReferencedQueues;
index 639e62c..cffb81a 100644 (file)
@@ -121,11 +121,7 @@ foreach my $id (keys %cfqueues) {
 $CustomFields->LimitToGlobal;
 
 while ( my $CustomField = $CustomFields->Next ) {
 $CustomFields->LimitToGlobal;
 
 while ( my $CustomField = $CustomFields->Next ) {
-    my $queuestr;
-    if ($CustomField->QueueObj && $CustomField->QueueObj->Id != 0) {
-       $queuestr = $CustomField->QueueObj->Name . ".";
-    }
-    push @fields, "CustomField." . $queuestr . "{" . $CustomField->Name . "}";
+    push @fields, "CustomField.{" . $CustomField->Name . "}";
 }
 
 my ( @seen);
 }
 
 my ( @seen);
index ee71fea..7cc2483 100644 (file)
@@ -75,7 +75,7 @@ $r->content_type('application/rdf+xml');
           link        => $RT::WebURL."/Ticket/Display.html?id=".$Ticket->id,
           description => $Ticket->Transactions->First->Content,
           dc => {
           link        => $RT::WebURL."/Ticket/Display.html?id=".$Ticket->id,
           description => $Ticket->Transactions->First->Content,
           dc => {
-            subject  => $Ticket->Subject,
+            subject  => ($Ticket->Subject  || loc('No subject')),
             creator  => $Ticket->CreatorObj->RealName . "<".$Ticket->CreatorObj->EmailAddress.">",
           },
         );
             creator  => $Ticket->CreatorObj->RealName . "<".$Ticket->CreatorObj->EmailAddress.">",
           },
         );
index 17aa88a..e6b2048 100644 (file)
@@ -64,7 +64,7 @@ my @attrs = qw( id QueueObj->Name Subject Status TimeEstimated TimeWorked TimeLe
             if ($@) {die "Failed to find $attr - ". $@}; 
        }
 
             if ($@) {die "Failed to find $attr - ". $@}; 
        }
 
-        my $cfs = $Ticket->QueueObj->CustomFields();
+        my $cfs = $Ticket->QueueObj->TicketCustomFields();
         while (my $cf = $cfs->Next) {
                 my @content;
                my $values = $Ticket->CustomFieldValues($cf->Id);
         while (my $cf = $cfs->Next) {
                 my @content;
                my $values = $Ticket->CustomFieldValues($cf->Id);
index d566f4e..6ae188f 100644 (file)
@@ -91,7 +91,8 @@ if ($TicketObj) {
   $NamePrefix = "Object-RT::Ticket--CustomField-";
 }
 
   $NamePrefix = "Object-RT::Ticket--CustomField-";
 }
 
-
+  $m->comp('/Elements/Callback', _CallbackName => 'MassageCustomFields',  
+                                CustomFields => $CustomFields);
 
 </%INIT>
 <%ARGS>
 
 </%INIT>
 <%ARGS>
index 8dabff4..d9e94ff 100644 (file)
@@ -89,13 +89,13 @@ foreach my $message ( grep { $_->Parent == $Parent } @$Attachments ) {
 <div class="messagebody">
 <%perl>
 # {{{   if it has a content-disposition: attachment, don't show inline
 <div class="messagebody">
 <%perl>
 # {{{   if it has a content-disposition: attachment, don't show inline
-unless ( $message->GetHeader('Content-Disposition') =~ /attachment/i ) {
+unless ( ($message->GetHeader('Content-Disposition')||"") =~ /attachment/i ) {
 
     my $content;
 
     # If it's text
     if (   $message->ContentType =~ m{^(text|message)}i
 
     my $content;
 
     # If it's text
     if (   $message->ContentType =~ m{^(text|message)}i
-        && $size <= $RT::MaxInlineBody )
+        && $message->ContentLength <= $RT::MaxInlineBody )
     {
 
         if (
     {
 
         if (
@@ -158,6 +158,11 @@ unless ( $message->GetHeader('Content-Disposition') =~ /attachment/i ) {
               . $message->Id
               . '/">' );
     }
               . $message->Id
               . '/">' );
     }
+    elsif ( $message->ContentLength > 0 ) {
+        $m->out(
+            loc( 'Message body not shown because it is too large or is not plain text.' )
+        );
+    }
 }
 
 # }}}
 }
 
 # }}}
index 1d25fb9..625b30f 100644 (file)
@@ -61,6 +61,9 @@
                         },
             };
 
                         },
             };
 
+  # Now let callbacks add their extra tabs
+  $m->comp('/Elements/Callback', tabs => $tabs, %ARGS);
+
   foreach my $tab (sort keys %{$tabs}) {
     if ($tabs->{$tab}->{'path'} eq $current_tab) {
       $tabs->{$tab}->{"subtabs"} = $subtabs;
   foreach my $tab (sort keys %{$tabs}) {
     if ($tabs->{$tab}->{'path'} eq $current_tab) {
       $tabs->{$tab}->{"subtabs"} = $subtabs;
index 75e39d0..a045d57 100644 (file)
@@ -814,7 +814,7 @@ sub Object {
     else {
         $RT::Logger->warning( "$self -> Object called for an object "
                               . "of an unknown type:"
     else {
         $RT::Logger->warning( "$self -> Object called for an object "
                               . "of an unknown type:"
-                              . $self->ObjectType );
+                              . $self->__Value('ObjectType') );
         return (undef);
     }
 }
         return (undef);
     }
 }
index 3c70dc4..431b97c 100755 (executable)
@@ -253,9 +253,9 @@ sub SendMessage {
 
     if ( $RT::MailCommand eq 'sendmailpipe' ) {
         eval {
 
     if ( $RT::MailCommand eq 'sendmailpipe' ) {
         eval {
-            open( MAIL, "|$RT::SendmailPath $RT::SendmailArguments" ) || die $!;
-            print MAIL $MIMEObj->as_string;
-            close(MAIL);
+            open( my $mail, "|$RT::SendmailPath $RT::SendmailArguments" ) || die $!;
+            $MIMEObj->print($mail);
+            close($mail);
         };
         if ($@) {
             $RT::Logger->crit( $msgid . "Could not send mail. -" . $@ );
         };
         if ($@) {
             $RT::Logger->crit( $msgid . "Could not send mail. -" . $@ );
@@ -323,7 +323,7 @@ sub AddAttachments {
         FIELD => 'TransactionId',
         VALUE => $self->TransactionObj->Id
     );
         FIELD => 'TransactionId',
         VALUE => $self->TransactionObj->Id
     );
-    $attachments->OrderBy('id');
+    $attachments->OrderBy( FIELD => 'id');
 
     my $transaction_content_obj = $self->TransactionObj->ContentObj;
 
 
     my $transaction_content_obj = $self->TransactionObj->ContentObj;
 
@@ -445,7 +445,7 @@ sub SetRTSpecialHeaders {
 
       # If there is one, and we can parse it, then base our Message-ID on it
       if ($msgid 
 
       # If there is one, and we can parse it, then base our Message-ID on it
       if ($msgid 
-          and $msgid =~ s/<(rt-.*?-\d+-\d+)\.(\d+-0-0)\@$RT::Organization>$/
+          and $msgid =~ s/<(rt-.*?-\d+-\d+)\.(\d+)-\d+-\d+\@\Q$RT::Organization\E>$/
                          "<$1." . $self->TicketObj->id
                           . "-" . $self->ScripObj->id
                           . "-" . $self->ScripActionObj->{_Message_ID}
                          "<$1." . $self->TicketObj->id
                           . "-" . $self->ScripObj->id
                           . "-" . $self->ScripActionObj->{_Message_ID}
index 1ea56e4..5afcd55 100644 (file)
@@ -81,6 +81,8 @@ sub _Init   {
  
   $self->{'table'} = "Attachments";
   $self->{'primary_key'} = "id";
  
   $self->{'table'} = "Attachments";
   $self->{'primary_key'} = "id";
+  $self->OrderBy ( FIELD => 'id',
+                   ORDER => 'ASC');
   return ( $self->SUPER::_Init(@_));
 }
 # }}}
   return ( $self->SUPER::_Init(@_));
 }
 # }}}
index 9a55af8..d4d2d1a 100644 (file)
@@ -81,17 +81,18 @@ sub _Init {
     $self->{'table'} = 'CustomFieldValues';
     $self->{'primary_key'} = 'id';
 
     $self->{'table'} = 'CustomFieldValues';
     $self->{'primary_key'} = 'id';
 
-
-
-  # By default, order by SortOrder
-  $self->OrderByCols(
-        { ALIAS => 'main',
-          FIELD => 'SortOrder',
-          ORDER => 'ASC' },
-        { ALIAS => 'main',
-          FIELD => 'id',
-          ORDER => 'ASC' },
-     );
+    # By default, order by SortOrder
+    $self->OrderByCols(
+         { ALIAS => 'main',
+           FIELD => 'SortOrder',
+           ORDER => 'ASC' },
+         { ALIAS => 'main',
+           FIELD => 'Name',
+           ORDER => 'ASC' },
+         { ALIAS => 'main',
+           FIELD => 'id',
+           ORDER => 'ASC' },
+    );
 
     return ( $self->SUPER::_Init(@_) );
 }
 
     return ( $self->SUPER::_Init(@_) );
 }
index 9e0ce24..743c85c 100644 (file)
@@ -461,7 +461,7 @@ sub ValuesForTicket {
        my $self = shift;
     my $ticket_id = shift;
     
        my $self = shift;
     my $ticket_id = shift;
     
-    $RT::Logger->debug( ref($self) . " -> ValuesForTicket deprecated in favor of ValuesForObject"); 
+    $RT::Logger->debug( ref($self) . " -> ValuesForTicket deprecated in favor of ValuesForObject at (". join(":",caller).")"); 
     my $ticket = RT::Ticket->new($self->CurrentUser);
     $ticket->Load($ticket_id);
 
     my $ticket = RT::Ticket->new($self->CurrentUser);
     $ticket->Load($ticket_id);
 
@@ -485,7 +485,7 @@ sub AddValueForTicket {
        my %args = ( Ticket => undef,
                  Content => undef,
                     @_ );
        my %args = ( Ticket => undef,
                  Content => undef,
                     @_ );
-    $RT::Logger->debug( ref($self) . " -> AddValueForTicket deprecated in favor of AddValueForObject"); 
+    $RT::Logger->debug( ref($self) . " -> AddValueForTicket deprecated in favor of AddValueForObject at (". join(":",caller).")");
 
 
     my $ticket = RT::Ticket->new($self->CurrentUser);
 
 
     my $ticket = RT::Ticket->new($self->CurrentUser);
@@ -513,7 +513,7 @@ sub DeleteValueForTicket {
                  Content => undef,
                     @_ );
 
                  Content => undef,
                     @_ );
 
-    $RT::Logger->debug( ref($self) . " -> DeleteValueForTicket deprecated in favor of DeleteValueForObject"); 
+    $RT::Logger->debug( ref($self) . " -> DeleteValueForTicket deprecated in favor of DeleteValueForObject at (". join(":",caller).")"); 
 
 
     my $ticket = RT::Ticket->new($self->CurrentUser);
 
 
     my $ticket = RT::Ticket->new($self->CurrentUser);
@@ -615,7 +615,7 @@ sub ValidateType {
     my $type = shift;
 
     if ($type =~ s/(?:Single|Multiple)$//) {
     my $type = shift;
 
     if ($type =~ s/(?:Single|Multiple)$//) {
-       $RT::Logger->warning( "Prefix 'Single' and 'Multiple' to Type deprecated, use MaxValues instead");
+       $RT::Logger->warning( "Prefix 'Single' and 'Multiple' to Type deprecated, use MaxValues instead at (". join(":",caller).")");
     }
 
     if( $FieldTypes{$type}) {
     }
 
     if( $FieldTypes{$type}) {
@@ -631,7 +631,7 @@ sub SetType {
     my $self = shift;
     my $type = shift;
     if ($type =~ s/(?:(Single)|Multiple)$//) {
     my $self = shift;
     my $type = shift;
     if ($type =~ s/(?:(Single)|Multiple)$//) {
-       warn "'Single' and 'Multiple' on SetType deprecated, use SetMaxValues instead";
+       $RT::Logger->warning("'Single' and 'Multiple' on SetType deprecated, use SetMaxValues instead at (". join(":",caller).")");
        $self->SetMaxValues($1 ? 1 : 0);
     }
     $self->SUPER::SetType($type);
        $self->SetMaxValues($1 ? 1 : 0);
     }
     $self->SUPER::SetType($type);
@@ -738,19 +738,19 @@ Takes a boolean.
 # }}}
 
 sub Queue {
 # }}}
 
 sub Queue {
-    $RT::Logger->debug( ref($_[0]) . " -> Queue deprecated");
+    $RT::Logger->debug( ref($_[0]) . " -> Queue deprecated at (". join(":",caller).")");
     
     return 0;
 }
 
 sub SetQueue {
     
     return 0;
 }
 
 sub SetQueue {
-    $RT::Logger->debug( ref($_[0]) . " -> SetQueue deprecated");
+    $RT::Logger->debug( ref($_[0]) . " -> SetQueue deprecated at (". join(":",caller).")");
 
     return 0;
 }
 
 sub QueueObj {
 
     return 0;
 }
 
 sub QueueObj {
-    $RT::Logger->debug( ref($_[0]) . " -> QueueObj deprecated");
+    $RT::Logger->debug( ref($_[0]) . " -> QueueObj deprecated at (". join(":",caller).")");
 
     return undef;
 }
 
     return undef;
 }
index 3a99e5a..eccc20a 100644 (file)
@@ -277,7 +277,7 @@ sub _PostProcessNewEntity {
 
 sub ParseTicketId {
     my $self = shift;
 
 sub ParseTicketId {
     my $self = shift;
-    $RT::Logger->warnings("RT::EmailParser->ParseTicketId deprecated. You should be using RT::Interface::Email");
+    $RT::Logger->warnings("RT::EmailParser->ParseTicketId deprecated. You should be using RT::Interface::Email at (". join(":",caller).")");
 
     require RT::Interface::Email;
     RT::Interface::Email::ParseTicketId(@_);
 
     require RT::Interface::Email;
     RT::Interface::Email::ParseTicketId(@_);
@@ -435,7 +435,7 @@ sub IsRTAddress {
     # Example: the following rule would tell RT not to Cc 
     #   "tickets@noc.example.com"
     if ( defined($RT::RTAddressRegexp) &&
     # Example: the following rule would tell RT not to Cc 
     #   "tickets@noc.example.com"
     if ( defined($RT::RTAddressRegexp) &&
-                       $address =~ /$RT::RTAddressRegexp/ ) {
+                       $address =~ /$RT::RTAddressRegexp/i ) {
         return(1);
     } else {
         return (undef);
         return(1);
     } else {
         return (undef);
index cf29114..815fbd9 100644 (file)
@@ -77,23 +77,79 @@ package RT::Groups;
 use strict;
 no warnings qw(redefine);
 
 use strict;
 no warnings qw(redefine);
 
+use RT::Users;
+
+# XXX: below some code is marked as subject to generalize in Groups, Users classes.
+# RUZ suggest name Principals::Generic or Principals::Base as abstract class, but
+# Jesse wants something that doesn't imply it's a Principals.pm subclass.
+# See comments below for candidats.
+
 
 # {{{ sub _Init
 
 
 # {{{ sub _Init
 
+=begin testing
+
+# next had bugs
+# Groups->Limit( FIELD => 'id', OPERATOR => '!=', VALUE => xx );
+my $g = RT::Group->new($RT::SystemUser);
+my ($id, $msg) = $g->CreateUserDefinedGroup(Name => 'GroupsNotEqualTest');
+ok ($id, "created group #". $g->id) or diag("error: $msg");
+
+my $groups = RT::Groups->new($RT::SystemUser);
+$groups->Limit( FIELD => 'id', OPERATOR => '!=', VALUE => $g->id );
+$groups->LimitToUserDefinedGroups();
+my $bug = grep $_->id == $g->id, @{$groups->ItemsArrayRef};
+ok (!$bug, "didn't find group");
+
+=end testing
+
+=cut
+
 sub _Init { 
   my $self = shift;
   $self->{'table'} = "Groups";
   $self->{'primary_key'} = "id";
 
 sub _Init { 
   my $self = shift;
   $self->{'table'} = "Groups";
   $self->{'primary_key'} = "id";
 
+  my @result = $self->SUPER::_Init(@_);
+
   $self->OrderBy( ALIAS => 'main',
                  FIELD => 'Name',
                  ORDER => 'ASC');
 
   $self->OrderBy( ALIAS => 'main',
                  FIELD => 'Name',
                  ORDER => 'ASC');
 
-
-  return ( $self->SUPER::_Init(@_));
+  # XXX: this code should be generalized
+  $self->{'princalias'} = $self->Join(
+    ALIAS1 => 'main',
+    FIELD1 => 'id',
+    TABLE2 => 'Principals',
+    FIELD2 => 'id'
+  );
+
+  # even if this condition is useless and ids in the Groups table
+  # only match principals with type 'Group' this could speed up
+  # searches in some DBs.
+  $self->Limit( ALIAS => $self->{'princalias'},
+                FIELD => 'PrincipalType',
+                VALUE => 'Group',
+              );
+
+  return (@result);
 }
 # }}}
 
 }
 # }}}
 
+=head2 PrincipalsAlias
+
+Returns the string that represents this Users object's primary "Principals" alias.
+
+=cut
+
+# XXX: should be generalized, code duplication
+sub PrincipalsAlias {
+    my $self = shift;
+    return($self->{'princalias'});
+
+}
+
+
 # {{{ LimiToSystemInternalGroups
 
 =head2 LimitToSystemInternalGroups
 # {{{ LimiToSystemInternalGroups
 
 =head2 LimitToSystemInternalGroups
@@ -215,7 +271,7 @@ 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');
 $u->Create(Name => 'Membertests');
 my $g = RT::Group->new($RT::SystemUser);
 my ($id, $msg) = $g->CreateUserDefinedGroup(Name => 'Membertests');
-ok ($id,$msg);
+ok ($id, $msg);
 
 my ($aid, $amsg) =$g->AddMember($u->id);
 ok ($aid, $amsg);
 
 my ($aid, $amsg) =$g->AddMember($u->id);
 ok ($aid, $amsg);
@@ -227,9 +283,6 @@ $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");
 
 ok ($groups->Count == 1,"found the 1 group - " . $groups->Count);
 ok ($groups->First->Id == $g->Id, "it's the right one");
 
-
-
-
 =end testing
 
 
 =end testing
 
 
@@ -285,7 +338,7 @@ ok ($testuser->HasRight(Object => $q, Right => 'OwnTicket') , "The test user doe
 $groups = RT::Groups->new($RT::SystemUser);
 $groups->WithRight(Right => 'OwnTicket', Object => $q);
 ok ($id,$msg);
 $groups = RT::Groups->new($RT::SystemUser);
 $groups->WithRight(Right => 'OwnTicket', Object => $q);
 ok ($id,$msg);
-is($groups->Count, 2);
+is($groups->Count, 3);
 
 my $RTxGroup = RT::Group->new($RT::SystemUser);
 ($id, $msg) = $RTxGroup->CreateUserDefinedGroup( Name => 'RTxGroup', Description => "RTx extension group");
 
 my $RTxGroup = RT::Group->new($RT::SystemUser);
 ($id, $msg) = $RTxGroup->CreateUserDefinedGroup( Name => 'RTxGroup', Description => "RTx extension group");
@@ -343,84 +396,66 @@ is($groups->Count, 1, "RTxGroupRight found for RTxObj2");
 
 =cut
 
 
 =cut
 
-
+#XXX: should be generilized
 sub WithRight {
     my $self = shift;
     my %args = ( Right                  => undef,
                  Object =>              => undef,
                  IncludeSystemRights    => 1,
                  IncludeSuperusers      => undef,
 sub WithRight {
     my $self = shift;
     my %args = ( Right                  => undef,
                  Object =>              => undef,
                  IncludeSystemRights    => 1,
                  IncludeSuperusers      => undef,
+                 IncludeSubgroupMembers => 0,
                  EquivObjects           => [ ],
                  @_ );
 
                  EquivObjects           => [ ],
                  @_ );
 
-    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        => ($args{Right} ? '=' : 'IS NOT'),
-                  VALUE           => $args{Right} || 'NULL',
-                  ENTRYAGGREGATOR => 'OR' );
-
-    if ( $args{'IncludeSuperusers'} and $args{'Right'} ) {
-        $self->Limit( ALIAS           => $acl,
-                      FIELD           => 'RightName',
-                      OPERATOR        => '=',
-                      VALUE           => 'SuperUser',
-                      ENTRYAGGREGATOR => 'OR' );
-    }
-    # }}}
-
-    my ($or_check_ticket_roles, $or_check_roles);
-    my $which_object = "$acl.ObjectType = 'RT::System'";
-
-    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) ";
-        }
-
-       if ( $args{'IncludeSystemRights'} ) {
-           $which_object .= ' OR ';
-       }
-       else {
-           $which_object = '';
-       }
-        foreach my $obj ( @{ $args{'EquivObjects'} } ) {
-             next unless ( UNIVERSAL::can( $obj, 'id' ) );
-             $which_object .= "($acl.ObjectType = '" . ref( $obj ) . "' AND $acl.ObjectId = " . $obj->id . ") OR ";
-         }
-        $which_object .=
-            " ($acl.ObjectType = '" . ref($args{'Object'}) . "'" .
-            " AND $acl.ObjectId = " . $args{'Object'}->Id . ") ";
-    }
+    my $from_role = $self->Clone;
+    $from_role->WithRoleRight( %args );
 
 
-    $self->_AddSubClause( "WhichObject", "($which_object)" );
-
-    $self->_AddSubClause( "WhichGroup",
-        qq{
-          ( (    $acl.PrincipalId = main.id
-             AND $acl.PrincipalType = 'Group'
-             AND (   main.Domain = 'SystemInternal'
-                  OR main.Domain = 'UserDefined'
-                  OR main.Domain = 'ACLEquivalence'))
-           $or_check_roles)
-        }
-    );
+    my $from_group = $self->Clone;
+    $from_group->WithGroupRight( %args );
+
+    #XXX: DIRTY HACK
+    use DBIx::SearchBuilder::Union;
+    my $union = new DBIx::SearchBuilder::Union;
+    $union->add($from_role);
+    $union->add($from_group);
+    %$self = %$union;
+    bless $self, ref($union);
+
+    return;
 }
 
 }
 
+#XXX: methods are active aliases to Users class to prevent code duplication
+# should be generalized
+sub _JoinGroups {
+    my $self = shift;
+    my %args = (@_);
+    return 'main' unless $args{'IncludeSubgroupMembers'};
+    return $self->RT::Users::_JoinGroups( %args );
+}
+sub _JoinGroupMembers {
+    my $self = shift;
+    my %args = (@_);
+    return 'main' unless $args{'IncludeSubgroupMembers'};
+    return $self->RT::Users::_JoinGroupMembers( %args );
+}
+sub _JoinGroupMembersForGroupRights {
+    my $self = shift;
+    my %args = (@_);
+    my $group_members = $self->_JoinGroupMembers( %args );
+    unless( $group_members eq 'main' ) {
+        return $self->RT::Users::_JoinGroupMembersForGroupRights( %args );
+    }
+    $self->Limit( ALIAS => $args{'ACLAlias'},
+                  FIELD => 'PrincipalId',
+                  VALUE => "main.id",
+                  QUOTEVALUE => 0,
+                );
+}
+sub _JoinACL          { return (shift)->RT::Users::_JoinACL( @_ ) }
+sub _GetEquivObjects  { return (shift)->RT::Users::_GetEquivObjects( @_ ) }
+sub WithGroupRight    { return (shift)->RT::Users::WhoHaveGroupRight( @_ ) }
+sub WithRoleRight     { return (shift)->RT::Users::WhoHaveRoleRight( @_ ) }
+
 # {{{ sub LimitToEnabled
 
 =head2 LimitToEnabled
 # {{{ sub LimitToEnabled
 
 =head2 LimitToEnabled
@@ -432,18 +467,11 @@ Only find items that haven\'t been disabled
 sub LimitToEnabled {
     my $self = shift;
     
 sub LimitToEnabled {
     my $self = shift;
     
-    my $alias = $self->Join(
-       TYPE   => 'left',
-       ALIAS1 => 'main',
-       FIELD1 => 'id',
-       TABLE2 => 'Principals',
-       FIELD2 => 'id'
-    );
-
-    $self->Limit( ALIAS => $alias,
-                 FIELD => 'Disabled',
-                 VALUE => '0',
-                 OPERATOR => '=' );
+    $self->Limit( ALIAS => $self->PrincipalsAlias,
+                         FIELD => 'Disabled',
+                         VALUE => '0',
+                         OPERATOR => '=',
+                );
 }
 # }}}
 
 }
 # }}}
 
@@ -458,20 +486,12 @@ Only find items that have been deleted.
 sub LimitToDeleted {
     my $self = shift;
     
 sub LimitToDeleted {
     my $self = shift;
     
-    my $alias = $self->Join(
-       TYPE   => 'left',
-       ALIAS1 => 'main',
-       FIELD1 => 'id',
-       TABLE2 => 'Principals',
-       FIELD2 => 'id'
-    );
-
     $self->{'find_disabled_rows'} = 1;
     $self->{'find_disabled_rows'} = 1;
-    $self->Limit( ALIAS => $alias,
-                 FIELD => 'Disabled',
-                 OPERATOR => '=',
-                 VALUE => '1'
-               );
+    $self->Limit( ALIAS => $self->PrincipalsAlias,
+                  FIELD => 'Disabled',
+                  OPERATOR => '=',
+                  VALUE => 1,
+                );
 }
 # }}}
 
 }
 # }}}
 
index affff98..e45faf3 100644 (file)
@@ -223,7 +223,7 @@ sub SetMIMEEntityToEncoding {
 
        # {{{ Convert the body
        eval {
 
        # {{{ Convert the body
        eval {
-           $RT::Logger->debug("Converting '$charset' to '$enc' for ". $head->mime_type . " - ". $head->get('subject'));
+           $RT::Logger->debug("Converting '$charset' to '$enc' for ". $head->mime_type . " - ". ($head->get('subject') || 'Subjectless message'));
 
            # NOTE:: see the comments at the end of the sub.
            Encode::_utf8_off( $lines[$_] ) foreach ( 0 .. $#lines );
 
            # NOTE:: see the comments at the end of the sub.
            Encode::_utf8_off( $lines[$_] ) foreach ( 0 .. $#lines );
index 224a316..83fc379 100644 (file)
@@ -1,9 +1,9 @@
 #
 msgid ""
 msgstr ""
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: RT 3.2.2\n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\n"
-"PO-Revision-Date: 2005-01-21 00:00+0100\n"
+"PO-Revision-Date: 2005-10-03 13:40-0400\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"
 "Last-Translator: Jan Okrouhly <okrouhly@civ.zcu.cz>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
index 76e97f5..dfb1666 100644 (file)
@@ -1,5 +1,10 @@
+#
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
+"Project-Id-Version: RT 3.4.x\n"
+"PO-Revision-Date: 2005-10-03 13:42-0400\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index 0b7f1ef..6c4c383 100644 (file)
@@ -4,11 +4,11 @@
 #
 msgid ""
 msgstr ""
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: RT 2.1.54\n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2002-06-22 06:06+0200\n"
 "POT-Creation-Date: 2002-06-22 06:06+0200\n"
-"PO-Revision-Date: 2003-02-20 04:47+0200\n"
+"PO-Revision-Date: 2005-10-03 13:43-0400\n"
 "Last-Translator: Karsten Konrad <karsten.konrad@uni-graz.at>\n"
 "Last-Translator: Karsten Konrad <karsten.konrad@uni-graz.at>\n"
-"Language-Team: RT German <rt@fxb.de>\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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -3785,15 +3785,15 @@ msgstr "Status von %1 auf %2 geändert"
 
 #: html/Ticket/Elements/Tabs:170
 msgid "Steal"
 
 #: html/Ticket/Elements/Tabs:170
 msgid "Steal"
-msgstr "Übernehmen"
+msgstr "Stehlen"
 
 #: lib/RT/Queue_Overlay.pm:118
 msgid "Steal tickets"
 
 #: lib/RT/Queue_Overlay.pm:118
 msgid "Steal tickets"
-msgstr "Anfragen übernehmen"
+msgstr "Anfragen stehlen"
 
 #: lib/RT/Queue_Overlay.pm:118
 msgid "StealTicket"
 
 #: lib/RT/Queue_Overlay.pm:118
 msgid "StealTicket"
-msgstr "AnfrageÜbernehmen"
+msgstr "AnfrageStehlen"
 
 #: lib/RT/Transaction_Overlay.pm:667
 #. ($Old->Name)
 
 #: lib/RT/Transaction_Overlay.pm:667
 #. ($Old->Name)
index 28a8406..f7fa3c7 100644 (file)
@@ -1,3 +1,14 @@
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: RT 3.4.x\n"
+"PO-Revision-Date: 2005-10-03 13:44-0400\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
+
 #: lib/RT/Date.pm:440
 msgid "Apr."
 msgstr "Apr"
 #: lib/RT/Date.pm:440
 msgid "Apr."
 msgstr "Apr"
index 87759ee..ebed9cc 100644 (file)
@@ -1,9 +1,9 @@
 #
 msgid ""
 msgstr ""
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: RT 2.1.x\n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\n"
-"PO-Revision-Date: 2003-03-23 12:38\n"
+"PO-Revision-Date: 2005-10-03 13:44-0400\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"
 "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"
@@ -95,7 +95,7 @@ msgstr ""
 #. ($TicketObj->OwnerObj->Name())
 #. (loc($Ticket->Status()))
 msgid "%1 (Unchanged)"
 #. ($TicketObj->OwnerObj->Name())
 #. (loc($Ticket->Status()))
 msgid "%1 (Unchanged)"
-msgstr ""
+msgstr "%1 (Sin cambios)"
 
 #: NOT FOUND IN SOURCE
 msgid "%1 - %2 shown"
 
 #: NOT FOUND IN SOURCE
 msgid "%1 - %2 shown"
@@ -106,7 +106,7 @@ msgstr "%1 - %2 mostrados"
 #. ("--condition-argument", "--condition")
 #. ("--action-argument", "--action")
 msgid "%1 - An argument to pass to %2"
 #. ("--condition-argument", "--condition")
 #. ("--action-argument", "--action")
 msgid "%1 - An argument to pass to %2"
-msgstr "%1 - Un parametro para pasar a %2"
+msgstr "%1 - Un parámetro para pasar a %2"
 
 #: bin/rt-crontool:210
 #. ("--verbose")
 
 #: bin/rt-crontool:210
 #. ("--verbose")
@@ -116,17 +116,17 @@ msgstr "%1 - El estado de la salida actualiza STDOUT"
 #: bin/rt-crontool:204
 #. ("--action")
 msgid "%1 - Specify the action module you want to use"
 #: bin/rt-crontool:204
 #. ("--action")
 msgid "%1 - Specify the action module you want to use"
-msgstr "%1 - Especifica el modulo de accion que quieres usar"
+msgstr "%1 - Especifica el módulo de accion que quieres usar"
 
 #: bin/rt-crontool:198
 #. ("--condition")
 msgid "%1 - Specify the condition module you want to use"
 
 #: bin/rt-crontool:198
 #. ("--condition")
 msgid "%1 - Specify the condition module you want to use"
-msgstr "%1 - Especifica el modulo de condicion que quieres usar"
+msgstr "%1 - Especifica el módulo de condición que quieres usar"
 
 #: bin/rt-crontool:191
 #. ("--search")
 msgid "%1 - Specify the search module you want to use"
 
 #: bin/rt-crontool:191
 #. ("--search")
 msgid "%1 - Specify the search module you want to use"
-msgstr "%1 - Especifica el modulo de busqueda que quieres usar"
+msgstr "%1 - Especifica el módulo de búsqueda que quieres usar"
 
      $RT::VERSION, 
      '2004', 
 
      $RT::VERSION, 
      '2004', 
@@ -201,7 +201,7 @@ msgstr "%1 ha cambiado de %2 a %3"
 #: html/Search/Build.html:212
 #. ($Description)
 msgid "%1 copy"
 #: html/Search/Build.html:212
 #. ($Description)
 msgid "%1 copy"
-msgstr ""
+msgstr "%1 copiar"
 
 #: lib/RT/Record.pm:930
 msgid "%1 could not be set to %2."
 
 #: lib/RT/Record.pm:930
 msgid "%1 could not be set to %2."
@@ -219,21 +219,21 @@ msgstr "%1 no pudo fijar el estado a resuelto. La base de datos de RT podría se
 #: lib/RT/Transaction_Overlay.pm:560
 #. ($obj_type)
 msgid "%1 created"
 #: lib/RT/Transaction_Overlay.pm:560
 #. ($obj_type)
 msgid "%1 created"
-msgstr ""
+msgstr "%1 creado"
 
 #: lib/RT/Transaction_Overlay.pm:565
 #. ($obj_type)
 msgid "%1 deleted"
 
 #: lib/RT/Transaction_Overlay.pm:565
 #. ($obj_type)
 msgid "%1 deleted"
-msgstr ""
+msgstr "%1 borrado"
 
 #: html/Elements/MyTickets:47
 #. ($rows)
 msgid "%1 highest priority tickets I own"
 
 #: html/Elements/MyTickets:47
 #. ($rows)
 msgid "%1 highest priority tickets I own"
-msgstr ""
+msgstr "Los %1 tickets de mayor prioridad que poseo..."
 
 #: NOT FOUND IN SOURCE
 msgid "%1 highest priority tickets I own..."
 
 #: NOT FOUND IN SOURCE
 msgid "%1 highest priority tickets I own..."
-msgstr "Los %1 tickets de mayor prioridad que poseo... "
+msgstr "Los %1 tickets de mayor prioridad que poseo..."
 
 #: NOT FOUND IN SOURCE
 msgid "%1 highest priority tickets I requested..."
 
 #: NOT FOUND IN SOURCE
 msgid "%1 highest priority tickets I requested..."
@@ -242,7 +242,7 @@ msgstr "Los %1 tickets de mayor prioridad que he pedido"
 #: bin/rt-crontool:186
 #. ($0)
 msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron."
 #: bin/rt-crontool:186
 #. ($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"
+msgstr "$1 es una herramienta para actuar sobre los tickets con una herramienta de planificación externa, como crom"
 
 #: lib/RT/Queue_Overlay.pm:860
 #. ($principal->Object->Name, $args{'Type'})
 
 #: lib/RT/Queue_Overlay.pm:860
 #. ($principal->Object->Name, $args{'Type'})
@@ -273,7 +273,7 @@ msgstr "%1 min"
 #: html/Elements/MyRequests:47
 #. ($rows)
 msgid "%1 newest unowned tickets"
 #: html/Elements/MyRequests:47
 #. ($rows)
 msgid "%1 newest unowned tickets"
-msgstr ""
+msgstr "Los %1 tickets más recientes sin propietario"
 
 #: NOT FOUND IN SOURCE
 msgid "%1 not shown"
 
 #: NOT FOUND IN SOURCE
 msgid "%1 not shown"
@@ -281,7 +281,7 @@ msgstr "%1 no mostrado"
 
 #: lib/RT/CustomField_Overlay.pm:827
 msgid "%1 objects"
 
 #: lib/RT/CustomField_Overlay.pm:827
 msgid "%1 objects"
-msgstr ""
+msgstr "%1 ibjetos"
 
 #: html/User/Elements/DelegateRights:97
 #. (loc($ObjectType =~ /^RT::(.*)$/))
 
 #: html/User/Elements/DelegateRights:97
 #. (loc($ObjectType =~ /^RT::(.*)$/))
@@ -315,17 +315,17 @@ msgstr "%1 pondrá como pendiente una BASE [local] si es dependiente [o miembro]
 
 #: lib/RT/CustomField_Overlay.pm:828
 msgid "%1's %2 objects"
 
 #: lib/RT/CustomField_Overlay.pm:828
 msgid "%1's %2 objects"
-msgstr ""
+msgstr "%1's %2 objetos"
 
 #: lib/RT/CustomField_Overlay.pm:829
 msgid "%1's %2's %3 objects"
 
 #: lib/RT/CustomField_Overlay.pm:829
 msgid "%1's %2's %3 objects"
-msgstr ""
+msgstr "%1's %2's %3 objetos"
 
 #: html/Search/Elements/SearchPrivacy:52 html/Search/Elements/SelectSearchObject:55 html/Search/Elements/SelectSearchesForObjects:56
 #. ($object->Name)
 #. ($Object->Name)
 msgid "%1's saved searches"
 
 #: html/Search/Elements/SearchPrivacy:52 html/Search/Elements/SelectSearchObject:55 html/Search/Elements/SelectSearchesForObjects:56
 #. ($object->Name)
 #. ($Object->Name)
 msgid "%1's saved searches"
-msgstr ""
+msgstr "búsquedas guardadas de %1"
 
 #: lib/RT/Transaction_Overlay.pm:470
 #. ($self)
 
 #: lib/RT/Transaction_Overlay.pm:470
 #. ($self)
@@ -369,15 +369,15 @@ msgstr "(Marque las cajas para borrar)"
 
 #: html/Ticket/Elements/PreviewScrips:94
 msgid "(Check boxes to disable notifications to the listed recipients)"
 
 #: html/Ticket/Elements/PreviewScrips:94
 msgid "(Check boxes to disable notifications to the listed recipients)"
-msgstr ""
+msgstr "(Marcar las casillas para deshabilitar notificaciones a los receptores listados)"
 
 #: html/Ticket/Elements/PreviewScrips:116
 msgid "(Check boxes to enable notifications to the listed recipients)"
 
 #: html/Ticket/Elements/PreviewScrips:116
 msgid "(Check boxes to enable notifications to the listed recipients)"
-msgstr ""
+msgstr "(Marcar las casillas para habilitar notificaciones a los receptores listados)"
 
 #: html/Ticket/Create.html:209
 msgid "(Enter ticket ids or URLs, separated with spaces)"
 
 #: html/Ticket/Create.html:209
 msgid "(Enter ticket ids or URLs, separated with spaces)"
-msgstr ""
+msgstr "(Entrar ids de los tickets o URLs, separados con espacios)"
 
 #: html/Admin/Queues/Modify.html:75 html/Admin/Queues/Modify.html:81
 #. ($RT::CorrespondAddress)
 
 #: html/Admin/Queues/Modify.html:75 html/Admin/Queues/Modify.html:81
 #. ($RT::CorrespondAddress)
@@ -407,11 +407,11 @@ msgstr "(Sin plantillas)"
 
 #: html/Admin/Elements/PickCustomFields:47 html/Admin/Elements/PickObjects:47
 msgid "(None)"
 
 #: html/Admin/Elements/PickCustomFields:47 html/Admin/Elements/PickObjects:47
 msgid "(None)"
-msgstr ""
+msgstr "(Ninguno)"
 
 #: html/Ticket/Update.html:88
 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.)"
 
 #: html/Ticket/Update.html:88
 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)"
+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 blind carbon-copy of this update to a comma-delimited list of email addresses. Does <b>not</b> change who will recieve future updates.)"
 
 #: 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.)"
@@ -435,7 +435,7 @@ msgstr "(Envia una copia de esta actualización a una lista de direcciones de co
 
 #: html/Admin/Elements/EditScrip:102
 msgid "(Use these fields when you choose 'User Defined' for a condition or action)"
 
 #: html/Admin/Elements/EditScrip:102
 msgid "(Use these fields when you choose 'User Defined' for a condition or action)"
-msgstr ""
+msgstr "(Usar estos campos cuando se selecciona 'Definido por el usuario' para una condición o acción)"
 
 #: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54
 msgid "(empty)"
 
 #: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54
 msgid "(empty)"
@@ -455,7 +455,7 @@ msgstr "(sin valor)"
 
 #: html/Admin/Elements/EditCustomFieldValues:47
 msgid "(no values)"
 
 #: html/Admin/Elements/EditCustomFieldValues:47
 msgid "(no values)"
-msgstr ""
+msgstr "(sin valores)"
 
 #: html/Elements/EditLinks:130 html/Ticket/Elements/BulkLinks:49
 msgid "(only one ticket)"
 
 #: html/Elements/EditLinks:130 html/Ticket/Elements/BulkLinks:49
 msgid "(only one ticket)"
@@ -463,11 +463,11 @@ msgstr "(solo un ticket)"
 
 #: html/Elements/RT__Ticket/ColumnMap:146
 msgid "(pending approval)"
 
 #: html/Elements/RT__Ticket/ColumnMap:146
 msgid "(pending approval)"
-msgstr "(pendiente de aprobacion)"
+msgstr "(pendiente de aprobación)"
 
 #: html/Elements/RT__Ticket/ColumnMap:149
 msgid "(pending other Collection)"
 
 #: html/Elements/RT__Ticket/ColumnMap:149
 msgid "(pending other Collection)"
-msgstr ""
+msgstr "(pendiente de otra Recopilación)"
 
 #: NOT FOUND IN SOURCE
 msgid "(pending other tickets)"
 
 #: NOT FOUND IN SOURCE
 msgid "(pending other tickets)"
@@ -516,7 +516,7 @@ msgstr "Una plantilla en blanco"
 
 #: html/Admin/Users/Modify.html:363
 msgid "A password was not set, so user won't be able to login."
 
 #: html/Admin/Users/Modify.html:363
 msgid "A password was not set, so user won't be able to login."
-msgstr ""
+msgstr "Una contraseña no fue especificada, por lo que el usuario no podrá acceder al sistema"
 
 #: NOT FOUND IN SOURCE
 msgid "ACE Deleted"
 
 #: NOT FOUND IN SOURCE
 msgid "ACE Deleted"
@@ -544,7 +544,7 @@ msgstr "ACEs solo pueden ser creadas o borradas."
 
 #: html/Search/Elements/SelectAndOr:46
 msgid "AND"
 
 #: html/Search/Elements/SelectAndOr:46
 msgid "AND"
-msgstr ""
+msgstr "Y"
 
 #: NOT FOUND IN SOURCE
 msgid "Aborting to avoid unintended ticket modifications.\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "Aborting to avoid unintended ticket modifications.\\n"
@@ -569,11 +569,11 @@ msgstr "Acción %1 no encontrada"
 
 #: NOT FOUND IN SOURCE
 msgid "Action committed."
 
 #: NOT FOUND IN SOURCE
 msgid "Action committed."
-msgstr "Action committed."
+msgstr "Acción realizada."
 
 #: bin/rt-crontool:148
 msgid "Action committed.\\n"
 
 #: bin/rt-crontool:148
 msgid "Action committed.\\n"
-msgstr ""
+msgstr "Acción realizada.\\n"
 
 #: bin/rt-crontool:144
 msgid "Action prepared..."
 
 #: bin/rt-crontool:144
 msgid "Action prepared..."
@@ -581,7 +581,7 @@ msgstr "Acción preparada..."
 
 #: html/Search/Build.html:85
 msgid "Add"
 
 #: html/Search/Build.html:85
 msgid "Add"
-msgstr ""
+msgstr "Añadir"
 
 #: html/Search/Bulk.html:114
 msgid "Add AdminCc"
 
 #: html/Search/Bulk.html:114
 msgid "Add AdminCc"
@@ -593,11 +593,11 @@ msgstr "Añadir Cc"
 
 #: html/Search/Elements/EditFormat:49
 msgid "Add Columns"
 
 #: html/Search/Elements/EditFormat:49
 msgid "Add Columns"
-msgstr ""
+msgstr "Añadir Columnas"
 
 #: html/Search/Elements/PickCriteria:46
 msgid "Add Criteria"
 
 #: html/Search/Elements/PickCriteria:46
 msgid "Add Criteria"
-msgstr ""
+msgstr "Añadir Criterio"
 
 #: html/Ticket/Create.html:144 html/Ticket/Update.html:114
 msgid "Add More Files"
 
 #: html/Ticket/Create.html:144 html/Ticket/Update.html:114
 msgid "Add More Files"
@@ -609,7 +609,7 @@ msgstr "Añadir solicitante"
 
 #: html/Admin/Elements/AddCustomFieldValue:46
 msgid "Add Value"
 
 #: html/Admin/Elements/AddCustomFieldValue:46
 msgid "Add Value"
-msgstr ""
+msgstr "Añadir Valor"
 
 #: NOT FOUND IN SOURCE
 msgid "Add a keyword selection to this queue"
 
 #: NOT FOUND IN SOURCE
 msgid "Add a keyword selection to this queue"
@@ -629,7 +629,7 @@ msgstr "Añadir un scrip que se aplicará a todas las colas"
 
 #: html/Search/Build.html:85
 msgid "Add additional criteria"
 
 #: html/Search/Build.html:85
 msgid "Add additional criteria"
-msgstr ""
+msgstr "Añadir criterio adicional"
 
 #: html/Search/Bulk.html:146
 msgid "Add comments or replies to selected tickets"
 
 #: html/Search/Bulk.html:146
 msgid "Add comments or replies to selected tickets"
@@ -645,7 +645,7 @@ msgstr "Añadir nuevos observadores"
 
 #: lib/RT/CustomField_Overlay.pm:103
 msgid "Add, delete and modify custom field values for objects"
 
 #: lib/RT/CustomField_Overlay.pm:103
 msgid "Add, delete and modify custom field values for objects"
-msgstr ""
+msgstr "Añadir, borrar y modificar campo personalizo para objetos"
 
 #: NOT FOUND IN SOURCE
 msgid "AddNextState"
 
 #: NOT FOUND IN SOURCE
 msgid "AddNextState"
@@ -751,7 +751,7 @@ msgstr "Cc Administrativa"
 
 #: html/Ticket/Elements/Tabs:197
 msgid "Advanced"
 
 #: html/Ticket/Elements/Tabs:197
 msgid "Advanced"
-msgstr ""
+msgstr "Avanzado"
 
 #: NOT FOUND IN SOURCE
 msgid "Advanced Search"
 
 #: NOT FOUND IN SOURCE
 msgid "Advanced Search"
@@ -767,15 +767,15 @@ msgstr "Edad"
 
 #: html/Search/Elements/PickCriteria:52
 msgid "Aggregator"
 
 #: html/Search/Elements/PickCriteria:52
 msgid "Aggregator"
-msgstr ""
+msgstr "Agregador"
 
 #: etc/initialdata:363
 msgid "All Approvals Passed"
 
 #: etc/initialdata:363
 msgid "All Approvals Passed"
-msgstr ""
+msgstr "Todas las Aprobaciones Superadas"
 
 #: NOT FOUND IN SOURCE
 msgid "All Custom Fields"
 
 #: NOT FOUND IN SOURCE
 msgid "All Custom Fields"
-msgstr "Todos los campos custom"
+msgstr "Todos los Campos Personalizados"
 
 #: html/Admin/Queues/index.html:75
 msgid "All Queues"
 
 #: html/Admin/Queues/index.html:75
 msgid "All Queues"
@@ -787,30 +787,30 @@ msgstr "Siempre envia un mensaje a los solicitantes independientemente del remit
 
 #: html/Search/Elements/EditQuery:56
 msgid "And/Or"
 
 #: html/Search/Elements/EditQuery:56
 msgid "And/Or"
-msgstr ""
+msgstr "Y/O"
 
 #: html/Admin/CustomFields/Modify.html:73 html/Admin/Elements/CustomFieldTabs:83
 msgid "Applies to"
 
 #: html/Admin/CustomFields/Modify.html:73 html/Admin/Elements/CustomFieldTabs:83
 msgid "Applies to"
-msgstr ""
+msgstr "Aplica a"
 
 #: html/Search/Edit.html:64
 msgid "Apply"
 
 #: html/Search/Edit.html:64
 msgid "Apply"
-msgstr ""
+msgstr "Aplicar"
 
 #: html/Search/Edit.html:64
 msgid "Apply your changes"
 
 #: html/Search/Edit.html:64
 msgid "Apply your changes"
-msgstr ""
+msgstr "Aplicar cambios"
 
 #: html/Elements/Tabs:74
 msgid "Approval"
 
 #: html/Elements/Tabs:74
 msgid "Approval"
-msgstr "Aprobacion"
+msgstr "Aprobación"
 
 #: html/Approvals/Display.html:67 html/Approvals/Elements/ShowDependency:63 html/Approvals/index.html:86
 #. ($Ticket->Id, $Ticket->Subject)
 #. ($ticket->id, $msg)
 #. ($link->BaseObj->Id, $link->BaseObj->Subject)
 msgid "Approval #%1: %2"
 
 #: html/Approvals/Display.html:67 html/Approvals/Elements/ShowDependency:63 html/Approvals/index.html:86
 #. ($Ticket->Id, $Ticket->Subject)
 #. ($ticket->id, $msg)
 #. ($link->BaseObj->Id, $link->BaseObj->Subject)
 msgid "Approval #%1: %2"
-msgstr "Aprobacion #%1: %2"
+msgstr "Aprobación #%1: %2"
 
 #: html/Approvals/index.html:75
 #. ($ticket->Id)
 
 #: html/Approvals/index.html:75
 #. ($ticket->Id)
@@ -820,7 +820,7 @@ msgstr "Aprobación #%1: No se han guardado las notas debido a un error del sist
 #: html/Approvals/index.html:73
 #. ($ticket->Id)
 msgid "Approval #%1: Notes recorded"
 #: html/Approvals/index.html:73
 #. ($ticket->Id)
 msgid "Approval #%1: Notes recorded"
-msgstr "Aprobacion #%1: Notas guardadas"
+msgstr "Aprobación #%1: Notas guardadas"
 
 #: NOT FOUND IN SOURCE
 msgid "Approval Details"
 
 #: NOT FOUND IN SOURCE
 msgid "Approval Details"
@@ -828,11 +828,11 @@ msgstr "Detalles de la aprobación"
 
 #: etc/initialdata:351
 msgid "Approval Passed"
 
 #: etc/initialdata:351
 msgid "Approval Passed"
-msgstr ""
+msgstr "Aprobación superada"
 
 #: etc/initialdata:374
 msgid "Approval Rejected"
 
 #: etc/initialdata:374
 msgid "Approval Rejected"
-msgstr ""
+msgstr "Aprobación rechazada"
 
 #: NOT FOUND IN SOURCE
 msgid "Approval diagram"
 
 #: NOT FOUND IN SOURCE
 msgid "Approval diagram"
@@ -860,7 +860,7 @@ msgstr "Ascendente"
 
 #: lib/RT/Queue_Overlay.pm:97
 msgid "Assign and remove custom fields"
 
 #: lib/RT/Queue_Overlay.pm:97
 msgid "Assign and remove custom fields"
-msgstr ""
+msgstr "Asignar y borrar campos personalizados"
 
 #: lib/RT/Queue_Overlay.pm:97
 msgid "AssignCustomFields"
 
 #: lib/RT/Queue_Overlay.pm:97
 msgid "AssignCustomFields"
@@ -897,7 +897,7 @@ msgstr "Archivos adjuntos"
 
 #: lib/RT/Attributes_Overlay.pm:172
 msgid "Attribute Deleted"
 
 #: lib/RT/Attributes_Overlay.pm:172
 msgid "Attribute Deleted"
-msgstr ""
+msgstr "Atributo borrado"
 
 #: lib/RT/Date.pm:444
 msgid "Aug."
 
 #: lib/RT/Date.pm:444
 msgid "Aug."
@@ -1002,11 +1002,11 @@ msgstr "No se puede agregar un campo personalizable si no tiene un nombre"
 #: html/Admin/CustomFields/Objects.html:86
 #. ($Class)
 msgid "Can't find a collection class for '%1'"
 #: html/Admin/CustomFields/Objects.html:86
 #. ($Class)
 msgid "Can't find a collection class for '%1'"
-msgstr ""
+msgstr "No se puede encontrar una clase de recopilación para '%1'"
 
 #: html/Search/Build.html:761
 msgid "Can't find a saved search to work with"
 
 #: html/Search/Build.html:761
 msgid "Can't find a saved search to work with"
-msgstr ""
+msgstr "No se puede encontrar una búsqueda guardada para trabajar"
 
 #: lib/RT/Link_Overlay.pm:160
 msgid "Can't link a ticket to itself"
 
 #: lib/RT/Link_Overlay.pm:160
 msgid "Can't link a ticket to itself"
@@ -1018,7 +1018,7 @@ msgstr "No se puede fusionar dentro de un caso ya fusionado. Nunca deberia recib
 
 #: html/Search/Build.html:766
 msgid "Can't save this search"
 
 #: html/Search/Build.html:766
 msgid "Can't save this search"
-msgstr ""
+msgstr "No se puede guardar esta búsqueda"
 
 #: lib/RT/Record.pm:1266 lib/RT/Record.pm:1344
 msgid "Can't specifiy both base and target"
 
 #: lib/RT/Record.pm:1266 lib/RT/Record.pm:1344
 msgid "Can't specifiy both base and target"
@@ -1039,11 +1039,11 @@ msgstr "Cambiar contraseña"
 
 #: html/Elements/Submit:100
 msgid "Check All"
 
 #: html/Elements/Submit:100
 msgid "Check All"
-msgstr ""
+msgstr "Seleccionar Todo"
 
 #: html/SelfService/Update.html:78 html/Ticket/Create.html:131 html/Ticket/Update.html:95
 msgid "Check box to delete"
 
 #: html/SelfService/Update.html:78 html/Ticket/Create.html:131 html/Ticket/Update.html:95
 msgid "Check box to delete"
-msgstr "Check box to delete"
+msgstr "Selecciona la casilla para borrar"
 
 #: html/Admin/Elements/SelectRights:55
 msgid "Check box to revoke right"
 
 #: html/Admin/Elements/SelectRights:55
 msgid "Check box to revoke right"
@@ -1059,7 +1059,7 @@ msgstr "Ciudad"
 
 #: html/Elements/Submit:102
 msgid "Clear All"
 
 #: html/Elements/Submit:102
 msgid "Clear All"
-msgstr ""
+msgstr "Borrar Todo"
 
 #: html/Ticket/Elements/ShowDates:68
 msgid "Closed"
 
 #: html/Ticket/Elements/ShowDates:68
 msgid "Closed"
@@ -1071,7 +1071,7 @@ msgstr "Solicitudes cerradas"
 
 #: html/SelfService/Closed.html:46 html/SelfService/Elements/Tabs:66
 msgid "Closed tickets"
 
 #: html/SelfService/Closed.html:46 html/SelfService/Elements/Tabs:66
 msgid "Closed tickets"
-msgstr ""
+msgstr "Tickets cerrados"
 
 #: NOT FOUND IN SOURCE
 msgid "Command not understood!\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "Command not understood!\\n"
@@ -1135,7 +1135,7 @@ msgstr "Condición"
 
 #: bin/rt-crontool:131
 msgid "Condition matches..."
 
 #: bin/rt-crontool:131
 msgid "Condition matches..."
-msgstr "La condicion coincide..."
+msgstr "La condición coincide..."
 
 #: lib/RT/Scrip_Overlay.pm:189
 msgid "Condition not found"
 
 #: lib/RT/Scrip_Overlay.pm:189
 msgid "Condition not found"
@@ -1171,7 +1171,7 @@ msgstr "No se pudo crear grupo"
 
 #: html/Search/Elements/EditSearches:64
 msgid "Copy"
 
 #: html/Search/Elements/EditSearches:64
 msgid "Copy"
-msgstr ""
+msgstr "Copiar"
 
 #: etc/initialdata:286
 msgid "Correspondence"
 
 #: etc/initialdata:286
 msgid "Correspondence"
@@ -1199,12 +1199,12 @@ msgstr "No se pudo añadir un nuevo valor de campo personalizable para el ticket
 
 #: lib/RT/Record.pm:1693
 msgid "Could not add new custom field value. "
 
 #: lib/RT/Record.pm:1693
 msgid "Could not add new custom field value. "
-msgstr ""
+msgstr "No se pudo añadir nuevo valor de campo personalizado."
 
 #: lib/RT/Record.pm:1646
 #. (, $value_msg)
 msgid "Could not add new custom field value. %1 "
 
 #: lib/RT/Record.pm:1646
 #. (, $value_msg)
 msgid "Could not add new custom field value. %1 "
-msgstr ""
+msgstr "No se pudo añadir nuevo valor de campo personalizado. %1 "
 
 #: lib/RT/Ticket_Overlay.pm:3004 lib/RT/Ticket_Overlay.pm:3012 lib/RT/Ticket_Overlay.pm:3029
 msgid "Could not change owner. "
 
 #: lib/RT/Ticket_Overlay.pm:3004 lib/RT/Ticket_Overlay.pm:3012 lib/RT/Ticket_Overlay.pm:3029
 msgid "Could not change owner. "
@@ -1218,7 +1218,7 @@ msgstr "No se puede crear un CampoPersonalizable"
 #: html/Admin/Elements/EditCustomField:113
 #. ($msg)
 msgid "Could not create CustomField: %1"
 #: html/Admin/Elements/EditCustomField:113
 #. ($msg)
 msgid "Could not create CustomField: %1"
-msgstr ""
+msgstr "No se pudo crear CustomField: %1"
 
 #: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:502 lib/RT/Group_Overlay.pm:509
 msgid "Could not create group"
 
 #: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:502 lib/RT/Group_Overlay.pm:509
 msgid "Could not create group"
@@ -1263,7 +1263,7 @@ msgstr "No se pudo encontrar el usuario %1."
 
 #: html/Admin/CustomFields/Objects.html:69
 msgid "Could not load CustomField %1"
 
 #: html/Admin/CustomFields/Objects.html:69
 msgid "Could not load CustomField %1"
-msgstr ""
+msgstr "No se pudo cargar CustomField %1"
 
 #: html/Admin/Groups/Members.html:109 html/User/Groups/Members.html:111 html/User/Groups/Modify.html:103
 msgid "Could not load group"
 
 #: html/Admin/Groups/Members.html:109 html/User/Groups/Members.html:111 html/User/Groups/Modify.html:103
 msgid "Could not load group"
@@ -1272,11 +1272,11 @@ msgstr "No se puede cargar el grupo"
 #: lib/RT/SavedSearch.pm:120
 #. ($privacy)
 msgid "Could not load object for %1"
 #: lib/RT/SavedSearch.pm:120
 #. ($privacy)
 msgid "Could not load object for %1"
-msgstr ""
+msgstr "No se pudo cargar objeto para %1"
 
 #: lib/RT/SavedSearch.pm:188
 msgid "Could not load search attribute"
 
 #: lib/RT/SavedSearch.pm:188
 msgid "Could not load search attribute"
-msgstr ""
+msgstr "No se pudo cargar atributo de búsqueda"
 
 #: lib/RT/Queue_Overlay.pm:758
 #. ($args{'Type'})
 
 #: lib/RT/Queue_Overlay.pm:758
 #. ($args{'Type'})
@@ -1299,7 +1299,7 @@ msgstr "No se pudo quitar ese principal como un %1 para este ticket"
 
 #: lib/RT/User_Overlay.pm:192
 msgid "Could not set user info"
 
 #: lib/RT/User_Overlay.pm:192
 msgid "Could not set user info"
-msgstr ""
+msgstr "No se pudo establecer la información del usuario"
 
 #: lib/RT/Group_Overlay.pm:1011
 msgid "Couldn't add member to group"
 
 #: lib/RT/Group_Overlay.pm:1011
 msgid "Couldn't add member to group"
@@ -1346,12 +1346,12 @@ msgstr "No se pudo cargar %1 desde la base de datos de usuarios.\\n"
 #: html/Admin/CustomFields/UserRights.html:149
 #. ($id)
 msgid "Couldn't load Class %1"
 #: html/Admin/CustomFields/UserRights.html:149
 #. ($id)
 msgid "Couldn't load Class %1"
-msgstr ""
+msgstr "No se pudo cargar Class %1"
 
 #: html/Admin/CustomFields/GroupRights.html:107
 #. ($id)
 msgid "Couldn't load CustomField %1"
 
 #: html/Admin/CustomFields/GroupRights.html:107
 #. ($id)
 msgid "Couldn't load CustomField %1"
-msgstr ""
+msgstr "No se pudo cargar CustomField %1"
 
 #: NOT FOUND IN SOURCE
 msgid "Couldn't load KeywordSelects."
 
 #: NOT FOUND IN SOURCE
 msgid "Couldn't load KeywordSelects."
@@ -1377,7 +1377,7 @@ msgstr "No se puedo cargar el enlace"
 #: html/Admin/Elements/ObjectCustomFields:83 html/Admin/Queues/CustomFields.html:59 html/Admin/Users/CustomFields.html:59
 #. ($id)
 msgid "Couldn't load object %1"
 #: html/Admin/Elements/ObjectCustomFields:83 html/Admin/Queues/CustomFields.html:59 html/Admin/Users/CustomFields.html:59
 #. ($id)
 msgid "Couldn't load object %1"
-msgstr ""
+msgstr "No se pudo cargar objeto %1"
 
 #: html/Admin/Queues/People.html:142
 #. ($id)
 
 #: html/Admin/Queues/People.html:142
 #. ($id)
@@ -1409,12 +1409,12 @@ msgstr "No se pudo cargar el ticket '%1'"
 #: lib/RT/Ticket_Overlay.pm:2612
 #. ($args{'Base'})
 msgid "Couldn't resolve base '%1' into a URI."
 #: lib/RT/Ticket_Overlay.pm:2612
 #. ($args{'Base'})
 msgid "Couldn't resolve base '%1' into a URI."
-msgstr ""
+msgstr "No se pudo resolver base '%1' en una URI."
 
 #: lib/RT/Ticket_Overlay.pm:2611
 #. ($args{'Target'})
 msgid "Couldn't resolve target '%1' into a URI."
 
 #: lib/RT/Ticket_Overlay.pm:2611
 #. ($args{'Target'})
 msgid "Couldn't resolve target '%1' into a URI."
-msgstr ""
+msgstr "No se pudo resolver objetivo '%1' en una URI."
 
 #: html/Admin/Users/Modify.html:173 html/User/Prefs.html:153
 msgid "Country"
 
 #: html/Admin/Users/Modify.html:173 html/User/Prefs.html:153
 msgid "Country"
@@ -1500,7 +1500,7 @@ msgstr "Crear una plantilla"
 
 #: html/SelfService/Create.html:46 html/SelfService/CreateTicketInQueue.html:46
 msgid "Create a ticket"
 
 #: html/SelfService/Create.html:46 html/SelfService/CreateTicketInQueue.html:46
 msgid "Create a ticket"
-msgstr ""
+msgstr "Crear un ticket"
 
 #: NOT FOUND IN SOURCE
 msgid "Create failed: %1 / %2 / %3 "
 
 #: NOT FOUND IN SOURCE
 msgid "Create failed: %1 / %2 / %3 "
@@ -1565,7 +1565,7 @@ msgstr "Plantilla %1 creada"
 
 #: html/Search/Elements/PickBasics:102
 msgid "Creator"
 
 #: html/Search/Elements/PickBasics:102
 msgid "Creator"
-msgstr ""
+msgstr "Creador"
 
 #: html/Elements/EditLinks:49
 msgid "Current Links"
 
 #: html/Elements/EditLinks:49
 msgid "Current Links"
@@ -1585,7 +1585,7 @@ msgstr "Permisos actuales"
 
 #: NOT FOUND IN SOURCE
 msgid "Current search criteria"
 
 #: NOT FOUND IN SOURCE
 msgid "Current search criteria"
-msgstr "Criterio de busqueda actual"
+msgstr "Criterio de búsqueda actual"
 
 #: html/Admin/Queues/People.html:62 html/Ticket/Elements/EditPeople:66
 msgid "Current watchers"
 
 #: html/Admin/Queues/People.html:62 html/Ticket/Elements/EditPeople:66
 msgid "Current watchers"
@@ -1602,19 +1602,19 @@ msgstr "Campos personalizables"
 #: html/Admin/CustomFields/index.html:59
 #. ($lookup)
 msgid "Custom Fields for %1"
 #: html/Admin/CustomFields/index.html:59
 #. ($lookup)
 msgid "Custom Fields for %1"
-msgstr ""
+msgstr "Campos Personalizados para %1"
 
 #: html/Admin/Elements/EditScrip:123
 msgid "Custom action cleanup code"
 
 #: html/Admin/Elements/EditScrip:123
 msgid "Custom action cleanup code"
-msgstr "Codigo de limpieza de accion personalizable"
+msgstr "Codigo de limpieza de acción personalizable"
 
 #: html/Admin/Elements/EditScrip:115
 msgid "Custom action preparation code"
 
 #: html/Admin/Elements/EditScrip:115
 msgid "Custom action preparation code"
-msgstr "Codigo de preparacion de accion personalizable"
+msgstr "Codigo de preparación de acción personalizable"
 
 #: html/Admin/Elements/EditScrip:107
 msgid "Custom condition"
 
 #: html/Admin/Elements/EditScrip:107
 msgid "Custom condition"
-msgstr "Condicion personalizable"
+msgstr "Condición personalizable"
 
 #: NOT FOUND IN SOURCE
 msgid "Custom field %1 %2 %3"
 
 #: NOT FOUND IN SOURCE
 msgid "Custom field %1 %2 %3"
@@ -1694,11 +1694,11 @@ msgstr "Plantilla de autorespuesta por defect"
 
 #: html/Tools/Offline.html:61
 msgid "Default Queue"
 
 #: html/Tools/Offline.html:61
 msgid "Default Queue"
-msgstr ""
+msgstr "Cola por Defecto"
 
 #: html/Tools/Offline.html:70
 msgid "Default Requestor"
 
 #: html/Tools/Offline.html:70
 msgid "Default Requestor"
-msgstr ""
+msgstr "Solicitante por Defecto"
 
 #: etc/initialdata:296
 msgid "Default admin comment template"
 
 #: etc/initialdata:296
 msgid "Default admin comment template"
@@ -1742,16 +1742,16 @@ msgstr "Borrar"
 
 #: html/Admin/Elements/EditTemplates:79
 msgid "Delete Template"
 
 #: html/Admin/Elements/EditTemplates:79
 msgid "Delete Template"
-msgstr ""
+msgstr "Borrar Plantilla"
 
 #: lib/RT/SavedSearch.pm:211
 #. ($msg)
 msgid "Delete failed: %1"
 
 #: lib/RT/SavedSearch.pm:211
 #. ($msg)
 msgid "Delete failed: %1"
-msgstr ""
+msgstr "Borrado fallido: %1"
 
 #: html/Admin/Elements/EditScrips:74
 msgid "Delete selected scrips"
 
 #: html/Admin/Elements/EditScrips:74
 msgid "Delete selected scrips"
-msgstr ""
+msgstr "Borrar scripts seleccionados"
 
 #: lib/RT/Queue_Overlay.pm:115
 msgid "Delete tickets"
 
 #: lib/RT/Queue_Overlay.pm:115
 msgid "Delete tickets"
@@ -1763,7 +1763,7 @@ msgstr "DeleteTicket"
 
 #: lib/RT/SavedSearch.pm:209
 msgid "Deleted search"
 
 #: lib/RT/SavedSearch.pm:209
 msgid "Deleted search"
-msgstr ""
+msgstr "Búsqueda borrada"
 
 #: NOT FOUND IN SOURCE
 msgid "Deleting this object could break referential integrity"
 
 #: NOT FOUND IN SOURCE
 msgid "Deleting this object could break referential integrity"
@@ -1800,22 +1800,22 @@ msgstr "Dependencias: \\n"
 #: lib/RT/Transaction_Overlay.pm:707
 #. ($value)
 msgid "Dependency by %1 added"
 #: lib/RT/Transaction_Overlay.pm:707
 #. ($value)
 msgid "Dependency by %1 added"
-msgstr ""
+msgstr "Dependencia para %1 añadida"
 
 #: lib/RT/Transaction_Overlay.pm:747
 #. ($value)
 msgid "Dependency by %1 deleted"
 
 #: lib/RT/Transaction_Overlay.pm:747
 #. ($value)
 msgid "Dependency by %1 deleted"
-msgstr ""
+msgstr "Dependencia para %1 borrada"
 
 #: lib/RT/Transaction_Overlay.pm:704
 #. ($value)
 msgid "Dependency on %1 added"
 
 #: lib/RT/Transaction_Overlay.pm:704
 #. ($value)
 msgid "Dependency on %1 added"
-msgstr ""
+msgstr "Dependencia en %1 añadida"
 
 #: lib/RT/Transaction_Overlay.pm:744
 #. ($value)
 msgid "Dependency on %1 deleted"
 
 #: lib/RT/Transaction_Overlay.pm:744
 #. ($value)
 msgid "Dependency on %1 deleted"
-msgstr ""
+msgstr "Dependencia en %1 borrada"
 
 #: html/Elements/EditLinks:134 html/Elements/EditLinks:57 html/Elements/SelectLinkType:48 html/Elements/ShowLinks:48 html/Ticket/Create.html:211 html/Ticket/Elements/BulkLinks:52 html/Ticket/Elements/ShowDependencies:46
 msgid "Depends on"
 
 #: html/Elements/EditLinks:134 html/Elements/EditLinks:57 html/Elements/SelectLinkType:48 html/Elements/ShowLinks:48 html/Ticket/Create.html:211 html/Ticket/Elements/BulkLinks:52 html/Ticket/Elements/ShowDependencies:46
 msgid "Depends on"
@@ -1851,7 +1851,7 @@ msgstr "Mostrar Lista de Control de Acceso"
 
 #: html/Search/Elements/DisplayOptions:46
 msgid "Display Columns"
 
 #: html/Search/Elements/DisplayOptions:46
 msgid "Display Columns"
-msgstr ""
+msgstr "Mostrar Columnas"
 
 #: lib/RT/Queue_Overlay.pm:100
 msgid "Display Scrip templates for this queue"
 
 #: lib/RT/Queue_Overlay.pm:100
 msgid "Display Scrip templates for this queue"
@@ -1867,7 +1867,7 @@ msgstr "Modo de despliegue"
 
 #: lib/RT/Group_Overlay.pm:176
 msgid "Display saved searches for this group"
 
 #: lib/RT/Group_Overlay.pm:176
 msgid "Display saved searches for this group"
-msgstr ""
+msgstr "Mostrar búsquedas guardadas para este grupo"
 
 #: NOT FOUND IN SOURCE
 msgid "Display ticket #%1"
 
 #: NOT FOUND IN SOURCE
 msgid "Display ticket #%1"
@@ -1883,7 +1883,7 @@ msgstr "Hacer cualquier cosa y todo"
 
 #: html/Search/Build.html:112
 msgid "Do the Search"
 
 #: html/Search/Build.html:112
 msgid "Do the Search"
-msgstr ""
+msgstr "Realizar búsqueda"
 
 #: html/Elements/Refresh:51
 msgid "Don't refresh this page."
 
 #: html/Elements/Refresh:51
 msgid "Don't refresh this page."
@@ -1891,7 +1891,7 @@ msgstr "No recargar esta página"
 
 #: NOT FOUND IN SOURCE
 msgid "Don't show search results"
 
 #: NOT FOUND IN SOURCE
 msgid "Don't show search results"
-msgstr "No mostrar los resultados de la busqueda"
+msgstr "No mostrar los resultados de la búsqueda"
 
 #: html/Ticket/Elements/ShowTransactionAttachments:82
 msgid "Download"
 
 #: html/Ticket/Elements/ShowTransactionAttachments:82
 msgid "Download"
@@ -1899,15 +1899,15 @@ msgstr "Descargar"
 
 #: html/Admin/Groups/index.html:61 html/Admin/Users/index.html:64
 msgid "Download as a tab-delimited file"
 
 #: html/Admin/Groups/index.html:61 html/Admin/Users/index.html:64
 msgid "Download as a tab-delimited file"
-msgstr ""
+msgstr "Descargar como un fichero tabulado"
 
 #: html/Elements/SelectDateType:53 html/Ticket/Create.html:197 html/Ticket/Elements/EditDates:66 html/Ticket/Elements/ShowDates:64 lib/RT/Ticket_Overlay.pm:1149
 msgid "Due"
 
 #: html/Elements/SelectDateType:53 html/Ticket/Create.html:197 html/Ticket/Elements/EditDates:66 html/Ticket/Elements/ShowDates:64 lib/RT/Ticket_Overlay.pm:1149
 msgid "Due"
-msgstr "Retraso"
+msgstr "Esperado"
 
 #: NOT FOUND IN SOURCE
 msgid "Due date '%1' could not be parsed"
 
 #: NOT FOUND IN SOURCE
 msgid "Due date '%1' could not be parsed"
-msgstr "La fecha de retraso '%1' no pudo ser leida"
+msgstr "La fecha esperada '%1' no pudo ser leída"
 
 #: NOT FOUND IN SOURCE
 msgid "ERROR: Couldn't load ticket '%1': %2.\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "ERROR: Couldn't load ticket '%1': %2.\\n"
@@ -1924,15 +1924,15 @@ msgstr "Editar campos personalizados para %1"
 
 #: html/Admin/Global/CustomFields/Groups.html:9
 msgid "Edit Custom Fields for all groups"
 
 #: html/Admin/Global/CustomFields/Groups.html:9
 msgid "Edit Custom Fields for all groups"
-msgstr ""
+msgstr "Editar Campos Personalizados para todos los grupos"
 
 #: html/Admin/Global/CustomFields/Users.html:9
 msgid "Edit Custom Fields for all users"
 
 #: html/Admin/Global/CustomFields/Users.html:9
 msgid "Edit Custom Fields for all users"
-msgstr ""
+msgstr "Editar Campos Personalizados para todos los usuarios"
 
 #: html/Admin/Global/CustomFields/Queue-Tickets.html:9 html/Admin/Global/CustomFields/Queue-Transactions.html:9
 msgid "Edit Custom Fields for tickets in all queues"
 
 #: html/Admin/Global/CustomFields/Queue-Tickets.html:9 html/Admin/Global/CustomFields/Queue-Transactions.html:9
 msgid "Edit Custom Fields for tickets in all queues"
-msgstr ""
+msgstr "Editar Campos Personalizados para tickets en todas las colas"
 
 #: html/Search/Bulk.html:173 html/Ticket/ModifyLinks.html:57
 msgid "Edit Links"
 
 #: html/Search/Bulk.html:173 html/Ticket/ModifyLinks.html:57
 msgid "Edit Links"
@@ -1940,7 +1940,7 @@ msgstr "Editar relaciones"
 
 #: html/Search/Edit.html:68
 msgid "Edit Query"
 
 #: html/Search/Edit.html:68
 msgid "Edit Query"
-msgstr ""
+msgstr "Editar Consulta"
 
 #: html/Admin/Queues/Templates.html:63
 #. ($QueueObj->Name)
 
 #: html/Admin/Queues/Templates.html:63
 #. ($QueueObj->Name)
@@ -1953,7 +1953,7 @@ msgstr "Editar palabras clave"
 
 #: lib/RT/Group_Overlay.pm:175
 msgid "Edit saved searches for this group"
 
 #: lib/RT/Group_Overlay.pm:175
 msgid "Edit saved searches for this group"
-msgstr ""
+msgstr "Editar búsquedas guardadas para este grupo"
 
 #: NOT FOUND IN SOURCE
 msgid "Edit scrips"
 
 #: NOT FOUND IN SOURCE
 msgid "Edit scrips"
@@ -2048,7 +2048,7 @@ msgstr "Estado %1 habilitado"
 #: html/Admin/CustomFields/Modify.html:143 html/Admin/Queues/Modify.html:162
 #. (loc_fuzzy($msg))
 msgid "Enabled status: %1"
 #: html/Admin/CustomFields/Modify.html:143 html/Admin/Queues/Modify.html:162
 #. (loc_fuzzy($msg))
 msgid "Enabled status: %1"
-msgstr ""
+msgstr "Estado habilitado: %1"
 
 #: lib/RT/CustomField_Overlay.pm:64
 msgid "Enter multiple values"
 
 #: lib/RT/CustomField_Overlay.pm:64
 msgid "Enter multiple values"
@@ -2056,7 +2056,7 @@ msgstr "Introducir multiples valores"
 
 #: html/Elements/EditLinks:124
 msgid "Enter objects or URIs to link objects to. Separate multiple entries with spaces."
 
 #: html/Elements/EditLinks:124
 msgid "Enter objects or URIs to link objects to. Separate multiple entries with spaces."
-msgstr ""
+msgstr "Entrar objetos o URIs para linkar a los objetos. Separar múltiples entradas con espacios."
 
 #: lib/RT/CustomField_Overlay.pm:65
 msgid "Enter one value"
 
 #: lib/RT/CustomField_Overlay.pm:65
 msgid "Enter one value"
@@ -2064,7 +2064,7 @@ msgstr "Introducir un valor"
 
 #: html/Elements/EditLinks:121
 msgid "Enter queues or URIs to link queues to. Separate multiple entries with spaces."
 
 #: html/Elements/EditLinks:121
 msgid "Enter queues or URIs to link queues to. Separate multiple entries with spaces."
-msgstr ""
+msgstr "Entrar colas o URIs para linkar a las colas. Separar múltiples entradas con espacios."
 
 #: html/Elements/EditLinks:117 html/Search/Bulk.html:174
 msgid "Enter tickets or URIs to link tickets to. Separate multiple entries with spaces."
 
 #: html/Elements/EditLinks:117 html/Search/Bulk.html:174
 msgid "Enter tickets or URIs to link tickets to. Separate multiple entries with spaces."
@@ -2072,7 +2072,7 @@ msgstr "Ingrese los números de ticket o las URL que llevan hacia el ticket. Sep
 
 #: lib/RT/CustomField_Overlay.pm:66
 msgid "Enter up to %1 values"
 
 #: lib/RT/CustomField_Overlay.pm:66
 msgid "Enter up to %1 values"
-msgstr ""
+msgstr "Entrar hasta %1 valor/es"
 
 #: html/Elements/Login:61 html/SelfService/Error.html:46 html/SelfService/Error.html:47
 msgid "Error"
 
 #: html/Elements/Login:61 html/SelfService/Error.html:46 html/SelfService/Error.html:47
 msgid "Error"
@@ -2092,7 +2092,7 @@ msgstr "Error en los parámetros para Queue->DelWatcher"
 
 #: lib/RT/Queue_Overlay.pm:830
 msgid "Error in parameters to Queue->DeleteWatcher"
 
 #: lib/RT/Queue_Overlay.pm:830
 msgid "Error in parameters to Queue->DeleteWatcher"
-msgstr ""
+msgstr "Error en los parámetros para Queue->DeleteWatcher"
 
 #: lib/RT/Ticket_Overlay.pm:1333
 msgid "Error in parameters to Ticket->AddWatcher"
 
 #: lib/RT/Ticket_Overlay.pm:1333
 msgid "Error in parameters to Ticket->AddWatcher"
@@ -2104,15 +2104,15 @@ msgstr "Error en los parámetros para Queue->DelWatcher"
 
 #: lib/RT/Ticket_Overlay.pm:1499
 msgid "Error in parameters to Ticket->DeleteWatcher"
 
 #: lib/RT/Ticket_Overlay.pm:1499
 msgid "Error in parameters to Ticket->DeleteWatcher"
-msgstr ""
+msgstr "Error en los parámetros para Ticket->DeleteWatcher"
 
 #: bin/rt-crontool:233
 msgid "Escalate tickets"
 
 #: bin/rt-crontool:233
 msgid "Escalate tickets"
-msgstr ""
+msgstr "Escalar tickets"
 
 #: html/Ticket/Elements/ShowBasics:57
 msgid "Estimated"
 
 #: html/Ticket/Elements/ShowBasics:57
 msgid "Estimated"
-msgstr ""
+msgstr "Estimado"
 
 #: etc/initialdata:20
 msgid "Everyone"
 
 #: etc/initialdata:20
 msgid "Everyone"
@@ -2136,7 +2136,7 @@ msgstr "Información extra"
 
 #: lib/RT/SavedSearch.pm:165
 msgid "Failed to create search attribute"
 
 #: lib/RT/SavedSearch.pm:165
 msgid "Failed to create search attribute"
-msgstr ""
+msgstr "Fallado en crear atributo de búsqueda"
 
 #: lib/RT/User_Overlay.pm:377
 msgid "Failed to find 'Privileged' users pseudogroup."
 
 #: lib/RT/User_Overlay.pm:377
 msgid "Failed to find 'Privileged' users pseudogroup."
@@ -2154,7 +2154,7 @@ msgstr "Error al cargar el modulo %1. (%2)"
 #: lib/RT/SavedSearch.pm:168
 #. ($privacy)
 msgid "Failed to load object for %1"
 #: lib/RT/SavedSearch.pm:168
 #. ($privacy)
 msgid "Failed to load object for %1"
-msgstr ""
+msgstr "Error al cargar objeto para %1"
 
 #: lib/RT/Date.pm:438
 msgid "Feb."
 
 #: lib/RT/Date.pm:438
 msgid "Feb."
@@ -2166,31 +2166,31 @@ msgstr "Febrero"
 
 #: html/Elements/SelectAttachmentField:50
 msgid "Filename"
 
 #: html/Elements/SelectAttachmentField:50
 msgid "Filename"
-msgstr ""
+msgstr "Nombre de fichero"
 
 #: lib/RT/CustomField_Overlay.pm:69
 msgid "Fill in multiple text areas"
 
 #: lib/RT/CustomField_Overlay.pm:69
 msgid "Fill in multiple text areas"
-msgstr ""
+msgstr "Rellenar en multiples areas de texto"
 
 #: lib/RT/CustomField_Overlay.pm:74
 msgid "Fill in multiple wikitext areas"
 
 #: lib/RT/CustomField_Overlay.pm:74
 msgid "Fill in multiple wikitext areas"
-msgstr ""
+msgstr "Rellenar en multiples areas wikitext"
 
 #: lib/RT/CustomField_Overlay.pm:70
 msgid "Fill in one text area"
 
 #: lib/RT/CustomField_Overlay.pm:70
 msgid "Fill in one text area"
-msgstr ""
+msgstr "Rellenar en un area de texto"
 
 #: lib/RT/CustomField_Overlay.pm:75
 msgid "Fill in one wikitext area"
 
 #: lib/RT/CustomField_Overlay.pm:75
 msgid "Fill in one wikitext area"
-msgstr ""
+msgstr "Rellenar en un area wikitext"
 
 #: lib/RT/CustomField_Overlay.pm:71
 msgid "Fill in up to %1 text areas"
 
 #: lib/RT/CustomField_Overlay.pm:71
 msgid "Fill in up to %1 text areas"
-msgstr ""
+msgstr "Rellenar en hasta %1 areas de texto"
 
 #: lib/RT/CustomField_Overlay.pm:76
 msgid "Fill in up to %1 wikitext areas"
 
 #: lib/RT/CustomField_Overlay.pm:76
 msgid "Fill in up to %1 wikitext areas"
-msgstr ""
+msgstr "Rellenar en hasta %1 areas wikitext"
 
 #: NOT FOUND IN SOURCE
 msgid "Fin"
 
 #: NOT FOUND IN SOURCE
 msgid "Fin"
@@ -2210,7 +2210,7 @@ msgstr "Encontrar grupo que"
 
 #: html/Admin/Groups/index.html:72 html/Admin/Queues/People.html:82 html/Ticket/Elements/EditPeople:55
 msgid "Find groups whose"
 
 #: html/Admin/Groups/index.html:72 html/Admin/Queues/People.html:82 html/Ticket/Elements/EditPeople:55
 msgid "Find groups whose"
-msgstr ""
+msgstr "Encontrar grupos cuyo"
 
 #: NOT FOUND IN SOURCE
 msgid "Find new/open tickets"
 
 #: NOT FOUND IN SOURCE
 msgid "Find new/open tickets"
@@ -2226,7 +2226,7 @@ msgstr "Encontrar tickets"
 
 #: NOT FOUND IN SOURCE
 msgid "Finish Approval"
 
 #: NOT FOUND IN SOURCE
 msgid "Finish Approval"
-msgstr "Aprobacion final"
+msgstr "Aprobación final"
 
 #: html/Ticket/Elements/Tabs:81
 msgid "First"
 
 #: html/Ticket/Elements/Tabs:81
 msgid "First"
@@ -2250,7 +2250,7 @@ msgstr "Forzar cambio"
 
 #: html/Search/Elements/EditFormat:52
 msgid "Format"
 
 #: html/Search/Elements/EditFormat:52
 msgid "Format"
-msgstr ""
+msgstr "Formato"
 
 #: html/Search/Results.html:107
 #. ($ticketcount)
 
 #: html/Search/Results.html:107
 #. ($ticketcount)
@@ -2283,7 +2283,7 @@ msgstr "Encabezados completos"
 
 #: html/Tools/Offline.html:87
 msgid "Get template from file"
 
 #: html/Tools/Offline.html:87
 msgid "Get template from file"
-msgstr ""
+msgstr "Obtener plantilla desde fichero"
 
 #: NOT FOUND IN SOURCE
 msgid "Getting the current user from a pgp sig\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "Getting the current user from a pgp sig\\n"
@@ -2300,11 +2300,11 @@ msgstr "Global"
 
 #: html/Admin/Elements/EditCustomFields:55
 msgid "Global Custom Fields"
 
 #: html/Admin/Elements/EditCustomFields:55
 msgid "Global Custom Fields"
-msgstr ""
+msgstr "Campos Personalizados Globales"
 
 #: NOT FOUND IN SOURCE
 msgid "Global Keyword Selections"
 
 #: NOT FOUND IN SOURCE
 msgid "Global Keyword Selections"
-msgstr "Seleccion de palabras clave globales"
+msgstr "Selección de palabras clave globales"
 
 #: NOT FOUND IN SOURCE
 msgid "Global Scrips"
 
 #: NOT FOUND IN SOURCE
 msgid "Global Scrips"
@@ -2312,7 +2312,7 @@ msgstr "Acciones Globales"
 
 #: html/Admin/Global/CustomFields/index.html:59
 msgid "Global custom field configuration"
 
 #: html/Admin/Global/CustomFields/index.html:59
 msgid "Global custom field configuration"
-msgstr ""
+msgstr "Configuración de Campos Personalizados Globales"
 
 #: html/Admin/Elements/SelectTemplate:59
 #. (loc($Template->Name))
 
 #: html/Admin/Elements/SelectTemplate:59
 #. (loc($Template->Name))
@@ -2321,7 +2321,7 @@ msgstr "Plantilla global"
 
 #: html/Tools/Offline.html:91
 msgid "Go"
 
 #: html/Tools/Offline.html:91
 msgid "Go"
-msgstr ""
+msgstr "Ir"
 
 #: html/Admin/Groups/index.html:67 html/Admin/Groups/index.html:73 html/Admin/Queues/People.html:80 html/Admin/Queues/People.html:84 html/Admin/Queues/index.html:66 html/Admin/Users/index.html:73 html/Search/Results.html:76 html/Ticket/Elements/EditPeople:53 html/Ticket/Elements/EditPeople:57 html/index.html:91
 msgid "Go!"
 
 #: html/Admin/Groups/index.html:67 html/Admin/Groups/index.html:73 html/Admin/Queues/People.html:80 html/Admin/Queues/People.html:84 html/Admin/Queues/index.html:66 html/Admin/Users/index.html:73 html/Search/Results.html:76 html/Ticket/Elements/EditPeople:53 html/Ticket/Elements/EditPeople:57 html/index.html:91
 msgid "Go!"
@@ -2394,11 +2394,11 @@ msgstr "Los grupos no pueden ser miembros de sus propios miembros"
 
 #: html/Admin/Groups/index.html:82
 msgid "Groups matching search criteria"
 
 #: html/Admin/Groups/index.html:82
 msgid "Groups matching search criteria"
-msgstr ""
+msgstr "Grupos coincidentes con el criterio de búsqueda"
 
 #: html/Ticket/Elements/ShowRequestor:77
 msgid "Groups this user belongs to"
 
 #: html/Ticket/Elements/ShowRequestor:77
 msgid "Groups this user belongs to"
-msgstr ""
+msgstr "Grupos a los que este usuario pertenece"
 
 #: lib/RT/Interface/CLI.pm:94 lib/RT/Interface/CLI.pm:94
 msgid "Hello!"
 
 #: lib/RT/Interface/CLI.pm:94 lib/RT/Interface/CLI.pm:94
 msgid "Hello!"
@@ -2416,12 +2416,12 @@ msgstr "Historial"
 #: html/Admin/Groups/History.html:62
 #. ($GroupObj->Name)
 msgid "History of the group %1"
 #: html/Admin/Groups/History.html:62
 #. ($GroupObj->Name)
 msgid "History of the group %1"
-msgstr ""
+msgstr "Historico del grupo %1"
 
 #: html/Admin/Users/History.html:62
 #. ($UserObj->Name)
 msgid "History of the user %1"
 
 #: html/Admin/Users/History.html:62
 #. ($UserObj->Name)
 msgid "History of the user %1"
-msgstr ""
+msgstr "Historico del usuario %1"
 
 #: NOT FOUND IN SOURCE
 msgid "HomePhone"
 
 #: NOT FOUND IN SOURCE
 msgid "HomePhone"
@@ -2442,7 +2442,7 @@ msgstr "Tengo [quant,_1,concrete mixer]."
 
 #: html/Search/Build.html:637
 msgid "I'm lost"
 
 #: html/Search/Build.html:637
 msgid "I'm lost"
-msgstr ""
+msgstr "Estoy perdido"
 
 #: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1494
 msgid "Id"
 
 #: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1494
 msgid "Id"
@@ -2454,15 +2454,15 @@ msgstr "Identidad"
 
 #: etc/initialdata:429
 msgid "If an approval is rejected, reject the original and delete pending approvals"
 
 #: etc/initialdata:429
 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"
+msgstr "Si una aprobación es rechazada, rechazar la original y borrar las aprobaciones pendientes"
 
 #: html/Tools/Offline.html:74
 msgid "If no Requestor is specified, create tickets with this requestor."
 
 #: html/Tools/Offline.html:74
 msgid "If no Requestor is specified, create tickets with this requestor."
-msgstr ""
+msgstr "Si no es especificado un Solicitante, crear tickets con este solicitante."
 
 #: html/Tools/Offline.html:65
 msgid "If no queue is specified, create tickets in this queue."
 
 #: html/Tools/Offline.html:65
 msgid "If no queue is specified, create tickets in this queue."
-msgstr ""
+msgstr "Si no es especificada una cola, crear tickets en esta cola."
 
 #: bin/rt-crontool:215
 msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT."
 
 #: bin/rt-crontool:215
 msgid "If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT."
@@ -2486,7 +2486,7 @@ msgstr "Incluir campos personalizables deshabilitados en el listado."
 
 #: html/Admin/Groups/index.html:65
 msgid "Include disabled groups in listing."
 
 #: html/Admin/Groups/index.html:65
 msgid "Include disabled groups in listing."
-msgstr ""
+msgstr "Incluir grupos deshabilitados en listado."
 
 #: html/Admin/Queues/index.html:65
 msgid "Include disabled queues in listing."
 
 #: html/Admin/Queues/index.html:65
 msgid "Include disabled queues in listing."
@@ -2498,11 +2498,11 @@ msgstr "Incluir usuarios deshabilitados en la búsqueda"
 
 #: html/Search/Build.html:663
 msgid "Incomplete Query"
 
 #: html/Search/Build.html:663
 msgid "Incomplete Query"
-msgstr ""
+msgstr "Consulta Incompleta"
 
 #: html/Search/Build.html:660
 msgid "Incomplete query"
 
 #: html/Search/Build.html:660
 msgid "Incomplete query"
-msgstr ""
+msgstr "Consulta incompleta"
 
 #: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1544
 msgid "Initial Priority"
 
 #: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1544
 msgid "Initial Priority"
@@ -2632,11 +2632,11 @@ msgstr "Leng"
 
 #: html/Admin/Users/Modify.html:94 html/User/Prefs.html:76
 msgid "Language"
 
 #: html/Admin/Users/Modify.html:94 html/User/Prefs.html:76
 msgid "Language"
-msgstr ""
+msgstr "Lenguaje"
 
 #: html/Search/Elements/EditFormat:79
 msgid "Large"
 
 #: html/Search/Elements/EditFormat:79
 msgid "Large"
-msgstr ""
+msgstr "Grande"
 
 #: html/Ticket/Elements/Tabs:96
 msgid "Last"
 
 #: html/Ticket/Elements/Tabs:96
 msgid "Last"
@@ -2668,7 +2668,7 @@ msgstr ""
 
 #: html/Ticket/Elements/ShowBasics:68
 msgid "Left"
 
 #: html/Ticket/Elements/ShowBasics:68
 msgid "Left"
-msgstr "Izquierda"
+msgstr "Queda"
 
 #: html/Admin/Users/Modify.html:109
 msgid "Let this user access RT"
 
 #: html/Admin/Users/Modify.html:109
 msgid "Let this user access RT"
@@ -2727,11 +2727,11 @@ msgstr "Enlaces"
 
 #: html/Search/Elements/EditSearches:76
 msgid "Load"
 
 #: html/Search/Elements/EditSearches:76
 msgid "Load"
-msgstr ""
+msgstr "Cargar"
 
 #: html/Search/Elements/EditSearches:74
 msgid "Load saved search:"
 
 #: html/Search/Elements/EditSearches:74
 msgid "Load saved search:"
-msgstr ""
+msgstr "Cargar búsqueda guardada:"
 
 #: lib/RT/System.pm:87
 msgid "LoadSavedSearch"
 
 #: lib/RT/System.pm:87
 msgid "LoadSavedSearch"
@@ -2739,16 +2739,16 @@ msgstr ""
 
 #: html/Admin/Tools/Configuration.html:64
 msgid "Loaded perl modules"
 
 #: html/Admin/Tools/Configuration.html:64
 msgid "Loaded perl modules"
-msgstr ""
+msgstr "Modulos perl cargados"
 
 #: lib/RT/SavedSearch.pm:112
 #. ($self->Name)
 msgid "Loaded search %1"
 
 #: lib/RT/SavedSearch.pm:112
 #. ($self->Name)
 msgid "Loaded search %1"
-msgstr ""
+msgstr "Cargada búsqueda %1"
 
 #: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126
 msgid "Location"
 
 #: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126
 msgid "Location"
-msgstr "Direccion"
+msgstr "Dirección"
 
 #: lib/RT.pm:212
 #. ($RT::LogDir)
 
 #: lib/RT.pm:212
 #. ($RT::LogDir)
@@ -2814,11 +2814,11 @@ msgstr "Establecer título"
 
 #: lib/RT/Group_Overlay.pm:177
 msgid "Make this group visible to user"
 
 #: lib/RT/Group_Overlay.pm:177
 msgid "Make this group visible to user"
-msgstr ""
+msgstr "Hacer este grupo visible al usuario"
 
 #: html/Admin/index.html:78
 msgid "Manage custom fields and custom field values"
 
 #: html/Admin/index.html:78
 msgid "Manage custom fields and custom field values"
-msgstr ""
+msgstr "Gestionar campos personalizados y valores de campos personalizados"
 
 #: html/Admin/index.html:69
 msgid "Manage groups and group membership"
 
 #: html/Admin/index.html:69
 msgid "Manage groups and group membership"
@@ -2826,7 +2826,7 @@ msgstr "Administrar grupos y miembros"
 
 #: html/Admin/index.html:85
 msgid "Manage properties and configuration which apply to all queues"
 
 #: html/Admin/index.html:85
 msgid "Manage properties and configuration which apply to all queues"
-msgstr "Administrar propiedades y configuracion que se aplique a todas las colas"
+msgstr "Administrar propiedades y configuración que se aplique a todas las colas"
 
 #: html/Admin/index.html:74
 msgid "Manage queues and queue-specific properties"
 
 #: html/Admin/index.html:74
 msgid "Manage queues and queue-specific properties"
@@ -2855,12 +2855,12 @@ msgstr "May."
 #: lib/RT/Transaction_Overlay.pm:720
 #. ($value)
 msgid "Member %1 added"
 #: lib/RT/Transaction_Overlay.pm:720
 #. ($value)
 msgid "Member %1 added"
-msgstr ""
+msgstr "Miembro %1 añadido"
 
 #: lib/RT/Transaction_Overlay.pm:760
 #. ($value)
 msgid "Member %1 deleted"
 
 #: lib/RT/Transaction_Overlay.pm:760
 #. ($value)
 msgid "Member %1 deleted"
-msgstr ""
+msgstr "Miembro %1 borrado"
 
 #: lib/RT/Group_Overlay.pm:1008
 msgid "Member added"
 
 #: lib/RT/Group_Overlay.pm:1008
 msgid "Member added"
@@ -2889,21 +2889,21 @@ msgstr "Miembros"
 #: lib/RT/Transaction_Overlay.pm:717
 #. ($value)
 msgid "Membership in %1 added"
 #: lib/RT/Transaction_Overlay.pm:717
 #. ($value)
 msgid "Membership in %1 added"
-msgstr ""
+msgstr "Pertenencia a %1 añadida"
 
 #: lib/RT/Transaction_Overlay.pm:757
 #. ($value)
 msgid "Membership in %1 deleted"
 
 #: lib/RT/Transaction_Overlay.pm:757
 #. ($value)
 msgid "Membership in %1 deleted"
-msgstr ""
+msgstr "Pertenencia a %1 añadida"
 
 #: html/Admin/Elements/UserTabs:61
 msgid "Memberships"
 
 #: html/Admin/Elements/UserTabs:61
 msgid "Memberships"
-msgstr ""
+msgstr "Pertenencias"
 
 #: html/Admin/Users/Memberships.html:60
 #. ($UserObj->Name)
 msgid "Memberships of the user %1"
 
 #: html/Admin/Users/Memberships.html:60
 #. ($UserObj->Name)
 msgid "Memberships of the user %1"
-msgstr ""
+msgstr "Pertenencias del usuario %1"
 
 #: lib/RT/Ticket_Overlay.pm:2849
 msgid "Merge Successful"
 
 #: lib/RT/Ticket_Overlay.pm:2849
 msgid "Merge Successful"
@@ -2915,7 +2915,7 @@ msgstr "Fusión fallida. No se pudo establecer el EffectiveId"
 
 #: lib/RT/Ticket_Overlay.pm:2744
 msgid "Merge failed. Couldn't set Status"
 
 #: lib/RT/Ticket_Overlay.pm:2744
 msgid "Merge failed. Couldn't set Status"
-msgstr ""
+msgstr "Unión fallida. No se pudo establecer el Estado"
 
 #: html/Elements/EditLinks:129 html/Ticket/Elements/BulkLinks:48
 msgid "Merge into"
 
 #: html/Elements/EditLinks:129 html/Ticket/Elements/BulkLinks:48
 msgid "Merge into"
@@ -2924,7 +2924,7 @@ msgstr "Fusionar dentro de"
 #: lib/RT/Transaction_Overlay.pm:723
 #. ($value)
 msgid "Merged into %1"
 #: lib/RT/Transaction_Overlay.pm:723
 #. ($value)
 msgid "Merged into %1"
-msgstr ""
+msgstr "Unido en %1"
 
 #: html/Search/Bulk.html:165 html/Ticket/Update.html:116
 msgid "Message"
 
 #: html/Search/Bulk.html:165 html/Ticket/Update.html:116
 msgid "Message"
@@ -2932,19 +2932,19 @@ msgstr "Mensaje"
 
 #: lib/RT/Ticket_Overlay.pm:2406
 msgid "Message could not be recorded"
 
 #: lib/RT/Ticket_Overlay.pm:2406
 msgid "Message could not be recorded"
-msgstr ""
+msgstr "Mensaje no pudo ser grabado"
 
 #: lib/RT/Ticket_Overlay.pm:2409
 msgid "Message recorded"
 
 #: lib/RT/Ticket_Overlay.pm:2409
 msgid "Message recorded"
-msgstr ""
+msgstr "Mensaje grabado"
 
 #: html/Ticket/Elements/PreviewScrips:115
 msgid "Messages about this ticket will not be sent to..."
 
 #: html/Ticket/Elements/PreviewScrips:115
 msgid "Messages about this ticket will not be sent to..."
-msgstr ""
+msgstr "Mensajes acerca de este ticket no seran enviados..."
 
 #: html/Search/Build.html:667
 msgid "Mismatched parentheses"
 
 #: html/Search/Build.html:667
 msgid "Mismatched parentheses"
-msgstr ""
+msgstr "Parentesis no coincidentes"
 
 #: lib/RT/Record.pm:940
 msgid "Missing a primary key?: %1"
 
 #: lib/RT/Record.pm:940
 msgid "Missing a primary key?: %1"
@@ -2969,12 +2969,12 @@ msgstr "Modificar el campo personalizable %1"
 #: html/Admin/Elements/ObjectCustomFields:96
 #. (loc(lc($FriendlySubTypes)), loc(lc($Types)))
 msgid "Modify Custom Fields which apply to %1 for all %2"
 #: html/Admin/Elements/ObjectCustomFields:96
 #. (loc(lc($FriendlySubTypes)), loc(lc($Types)))
 msgid "Modify Custom Fields which apply to %1 for all %2"
-msgstr ""
+msgstr "Modificar Campos Personalizados que aplican a %1 para todo %2"
 
 #: html/Admin/Elements/ObjectCustomFields:98
 #. (loc(lc($Types)))
 msgid "Modify Custom Fields which apply to all %1"
 
 #: html/Admin/Elements/ObjectCustomFields:98
 #. (loc(lc($Types)))
 msgid "Modify Custom Fields which apply to all %1"
-msgstr ""
+msgstr "Modificar Campos Personalizados que aplican a todo %1"
 
 #: NOT FOUND IN SOURCE
 msgid "Modify Custom Fields which apply to all queues"
 
 #: NOT FOUND IN SOURCE
 msgid "Modify Custom Fields which apply to all queues"
@@ -2982,15 +2982,15 @@ msgstr "Modificar los campos personalizables que se apliquen a todas las colas"
 
 #: html/Admin/Global/GroupRights.html:106 html/Admin/Groups/GroupRights.html:94 html/Admin/Queues/GroupRights.html:107
 msgid "Modify Group Rights"
 
 #: html/Admin/Global/GroupRights.html:106 html/Admin/Groups/GroupRights.html:94 html/Admin/Queues/GroupRights.html:107
 msgid "Modify Group Rights"
-msgstr ""
+msgstr "Modificar Derechos de Grupo"
 
 #: html/Admin/Groups/Members.html:102 html/User/Groups/Members.html:101
 msgid "Modify Members"
 
 #: html/Admin/Groups/Members.html:102 html/User/Groups/Members.html:101
 msgid "Modify Members"
-msgstr ""
+msgstr "Modificar Miembros"
 
 #: html/User/Delegation.html:58
 msgid "Modify Rights"
 
 #: html/User/Delegation.html:58
 msgid "Modify Rights"
-msgstr ""
+msgstr "Modificar Derechos"
 
 #: lib/RT/Queue_Overlay.pm:98
 msgid "Modify Scrip templates for this queue"
 
 #: lib/RT/Queue_Overlay.pm:98
 msgid "Modify Scrip templates for this queue"
@@ -3010,7 +3010,7 @@ msgstr "Modificar plantilla %1"
 
 #: html/Admin/Global/UserRights.html:75 html/Admin/Groups/UserRights.html:76 html/Admin/Queues/UserRights.html:75
 msgid "Modify User Rights"
 
 #: html/Admin/Global/UserRights.html:75 html/Admin/Groups/UserRights.html:76 html/Admin/Queues/UserRights.html:75
 msgid "Modify User Rights"
-msgstr ""
+msgstr "Modificar Derechos de Usuario"
 
 #: html/Admin/Queues/CustomField.html:66
 #. ($QueueObj->Name())
 
 #: html/Admin/Queues/CustomField.html:66
 #. ($QueueObj->Name())
@@ -3033,7 +3033,7 @@ msgstr "Modificar un scrip que se aplique a todas las colas"
 #: html/Admin/CustomFields/Objects.html:90
 #. ($CF->Name)
 msgid "Modify associated objects for %1"
 #: html/Admin/CustomFields/Objects.html:90
 #. ($CF->Name)
 msgid "Modify associated objects for %1"
-msgstr ""
+msgstr "Modificar objetos asociados para %1"
 
 #: NOT FOUND IN SOURCE
 msgid "Modify dates for # %1"
 
 #: NOT FOUND IN SOURCE
 msgid "Modify dates for # %1"
@@ -3051,7 +3051,7 @@ msgstr "Modificar fechas para ticket # %1"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:65 html/Admin/Global/index.html:72
 msgid "Modify global custom fields"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:65 html/Admin/Global/index.html:72
 msgid "Modify global custom fields"
-msgstr ""
+msgstr "Modificar campos personalizados globales"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:70 html/Admin/Global/GroupRights.html:46 html/Admin/Global/GroupRights.html:49 html/Admin/Global/index.html:77
 msgid "Modify global group rights"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:70 html/Admin/Global/GroupRights.html:46 html/Admin/Global/GroupRights.html:49 html/Admin/Global/index.html:77
 msgid "Modify global group rights"
@@ -3088,7 +3088,7 @@ msgstr "Modificar metadatos del grupo o borrar grupo"
 #: html/Admin/CustomFields/GroupRights.html:164
 #. ($CustomFieldObj->Name)
 msgid "Modify group rights for custom field %1"
 #: html/Admin/CustomFields/GroupRights.html:164
 #. ($CustomFieldObj->Name)
 msgid "Modify group rights for custom field %1"
-msgstr ""
+msgstr "Modificar derechos de grupo para campos personalizados %1"
 
 #: html/Admin/Groups/GroupRights.html:46 html/Admin/Groups/GroupRights.html:50 html/Admin/Groups/GroupRights.html:56
 #. ($GroupObj->Name)
 
 #: html/Admin/Groups/GroupRights.html:46 html/Admin/Groups/GroupRights.html:50 html/Admin/Groups/GroupRights.html:56
 #. ($GroupObj->Name)
@@ -3111,13 +3111,13 @@ msgstr "Modificar la propia cuenta RT"
 #: html/Admin/Queues/People.html:46 html/Admin/Queues/People.html:50
 #. ($QueueObj->Name)
 msgid "Modify people related to queue %1"
 #: html/Admin/Queues/People.html:46 html/Admin/Queues/People.html:50
 #. ($QueueObj->Name)
 msgid "Modify people related to queue %1"
-msgstr "Modificar personas relacionadas al cola %1"
+msgstr "Modificar personas relacionadas con la cola %1"
 
 #: html/Ticket/ModifyPeople.html:46 html/Ticket/ModifyPeople.html:50 html/Ticket/ModifyPeople.html:56
 #. ($Ticket->id)
 #. ($Ticket->Id)
 msgid "Modify people related to ticket #%1"
 
 #: html/Ticket/ModifyPeople.html:46 html/Ticket/ModifyPeople.html:50 html/Ticket/ModifyPeople.html:56
 #. ($Ticket->id)
 #. ($Ticket->Id)
 msgid "Modify people related to ticket #%1"
-msgstr "Modificar personas relacionadas al ticket #%1"
+msgstr "Modificar personas relacionadas con el ticket #%1"
 
 #: html/Admin/Queues/Scrips.html:67
 #. ($QueueObj->Name)
 
 #: html/Admin/Queues/Scrips.html:67
 #. ($QueueObj->Name)
@@ -3169,7 +3169,7 @@ msgstr "Modificar tickets"
 #: html/Admin/CustomFields/UserRights.html:157
 #. ($CustomFieldObj->Name)
 msgid "Modify user rights for custom field %1"
 #: html/Admin/CustomFields/UserRights.html:157
 #. ($CustomFieldObj->Name)
 msgid "Modify user rights for custom field %1"
-msgstr ""
+msgstr "Modificar derechos de usuario para campos personalidos %1"
 
 #: html/Admin/Groups/UserRights.html:46 html/Admin/Groups/UserRights.html:50 html/Admin/Groups/UserRights.html:56
 #. ($GroupObj->Name)
 
 #: html/Admin/Groups/UserRights.html:46 html/Admin/Groups/UserRights.html:50 html/Admin/Groups/UserRights.html:56
 #. ($GroupObj->Name)
@@ -3245,7 +3245,7 @@ msgstr "Se debe especificar un nombre"
 #: html/SelfService/Elements/MyRequests:70
 #. ($friendly_status)
 msgid "My %1 tickets"
 #: html/SelfService/Elements/MyRequests:70
 #. ($friendly_status)
 msgid "My %1 tickets"
-msgstr ""
+msgstr "Mis %1 tickets"
 
 #: NOT FOUND IN SOURCE
 msgid "My Approvals"
 
 #: NOT FOUND IN SOURCE
 msgid "My Approvals"
@@ -3257,7 +3257,7 @@ msgstr "Mis aprobaciones"
 
 #: html/Search/Elements/SearchPrivacy:50 html/Search/Elements/SelectSearchObject:53 html/Search/Elements/SelectSearchesForObjects:53
 msgid "My saved searches"
 
 #: html/Search/Elements/SearchPrivacy:50 html/Search/Elements/SelectSearchObject:53 html/Search/Elements/SelectSearchesForObjects:53
 msgid "My saved searches"
-msgstr ""
+msgstr "Mis búsquedas guardadas"
 
 #: html/Admin/CustomFields/Modify.html:58 html/Admin/Elements/AddCustomFieldValue:53 html/Admin/Elements/EditCustomField:55 html/Admin/Elements/EditCustomFieldValues:55 html/Admin/Elements/ModifyTemplate:49 html/Admin/Groups/Modify.html:65 html/User/Groups/Modify.html:65
 msgid "Name"
 
 #: html/Admin/CustomFields/Modify.html:58 html/Admin/Elements/AddCustomFieldValue:53 html/Admin/Elements/EditCustomField:55 html/Admin/Elements/EditCustomFieldValues:55 html/Admin/Elements/ModifyTemplate:49 html/Admin/Groups/Modify.html:65 html/User/Groups/Modify.html:65
 msgid "Name"
@@ -3269,7 +3269,7 @@ msgstr "Nombre en uso"
 
 #: NOT FOUND IN SOURCE
 msgid "Need approval from system administrator"
 
 #: NOT FOUND IN SOURCE
 msgid "Need approval from system administrator"
-msgstr "Se necesita aprobacion del administrador del sistema"
+msgstr "Se necesita aprobación del administrador del sistema"
 
 #: html/Ticket/Elements/ShowDates:73
 msgid "Never"
 
 #: html/Ticket/Elements/ShowDates:73
 msgid "Never"
@@ -3293,7 +3293,7 @@ msgstr "Nueva pendiente de aprobación"
 
 #: html/Ticket/Elements/Tabs:193
 msgid "New Query"
 
 #: html/Ticket/Elements/Tabs:193
 msgid "New Query"
-msgstr ""
+msgstr "Nueva Consulta"
 
 #: NOT FOUND IN SOURCE
 msgid "New Search"
 
 #: NOT FOUND IN SOURCE
 msgid "New Search"
@@ -3341,7 +3341,7 @@ msgstr "Nueva plantilla"
 
 #: html/SelfService/Elements/Tabs:69
 msgid "New ticket"
 
 #: html/SelfService/Elements/Tabs:69
 msgid "New ticket"
-msgstr ""
+msgstr "Nuevo ticket"
 
 #: lib/RT/Ticket_Overlay.pm:2713
 msgid "New ticket doesn't exist"
 
 #: lib/RT/Ticket_Overlay.pm:2713
 msgid "New ticket doesn't exist"
@@ -3369,7 +3369,7 @@ msgstr "Siguiente"
 
 #: html/Elements/TicketList:104
 msgid "Next Page"
 
 #: html/Elements/TicketList:104
 msgid "Next Page"
-msgstr ""
+msgstr "Pagina siguiente"
 
 #: NOT FOUND IN SOURCE
 msgid "Next page"
 
 #: NOT FOUND IN SOURCE
 msgid "Next page"
@@ -3385,7 +3385,7 @@ msgstr "Alias"
 
 #: html/Admin/CustomFields/UserRights.html:145
 msgid "No Class defined"
 
 #: html/Admin/CustomFields/UserRights.html:145
 msgid "No Class defined"
-msgstr ""
+msgstr "No existe Class definida"
 
 #: html/Admin/CustomFields/Modify.html:124 html/Admin/Elements/EditCustomField:119
 msgid "No CustomField"
 
 #: html/Admin/CustomFields/Modify.html:124 html/Admin/Elements/EditCustomField:119
 msgid "No CustomField"
@@ -3393,7 +3393,7 @@ msgstr "No hay campo personalizable"
 
 #: html/Admin/CustomFields/GroupRights.html:103
 msgid "No CustomField defined"
 
 #: html/Admin/CustomFields/GroupRights.html:103
 msgid "No CustomField defined"
-msgstr ""
+msgstr "No existe CustomField definido"
 
 #: html/Admin/Groups/GroupRights.html:105 html/Admin/Groups/UserRights.html:92
 msgid "No Group defined"
 
 #: html/Admin/Groups/GroupRights.html:105 html/Admin/Groups/UserRights.html:92
 msgid "No Group defined"
@@ -3401,7 +3401,7 @@ msgstr "No hay grupo definido"
 
 #: lib/RT/Tickets_Overlay_SQL.pm:477
 msgid "No Query"
 
 #: lib/RT/Tickets_Overlay_SQL.pm:477
 msgid "No Query"
-msgstr ""
+msgstr "No existe Consulta"
 
 #: html/Admin/Queues/GroupRights.html:118 html/Admin/Queues/UserRights.html:89
 msgid "No Queue defined"
 
 #: html/Admin/Queues/GroupRights.html:118 html/Admin/Queues/UserRights.html:89
 msgid "No Queue defined"
@@ -3425,7 +3425,7 @@ msgstr "No se especificó ticket. Abortando las modificaciones al ticket\\n\\n"
 
 #: html/Approvals/Elements/Approve:67
 msgid "No action"
 
 #: html/Approvals/Elements/Approve:67
 msgid "No action"
-msgstr "No action"
+msgstr "No acción"
 
 #: lib/RT/Record.pm:935
 msgid "No column specified"
 
 #: lib/RT/Record.pm:935
 msgid "No column specified"
@@ -3454,11 +3454,11 @@ msgstr "No hay grupo especificado"
 
 #: html/Admin/Groups/index.html:52
 msgid "No groups matching search criteria found."
 
 #: html/Admin/Groups/index.html:52
 msgid "No groups matching search criteria found."
-msgstr ""
+msgstr "No existen grupos coincidentes con el criterio de búsqueda."
 
 #: lib/RT/Ticket_Overlay.pm:2349
 msgid "No message attached"
 
 #: lib/RT/Ticket_Overlay.pm:2349
 msgid "No message attached"
-msgstr ""
+msgstr "Mensaje no adjuntado"
 
 #: lib/RT/User_Overlay.pm:1035
 msgid "No password set"
 
 #: lib/RT/User_Overlay.pm:1035
 msgid "No password set"
@@ -3507,7 +3507,7 @@ msgstr "Sin privilegios concedidos"
 
 #: lib/RT/SavedSearch.pm:187
 msgid "No search loaded"
 
 #: lib/RT/SavedSearch.pm:187
 msgid "No search loaded"
-msgstr ""
+msgstr "No hay búsqueda cargada"
 
 #: html/Search/Bulk.html:194
 msgid "No search to operate on."
 
 #: html/Search/Bulk.html:194
 msgid "No search to operate on."
@@ -3515,7 +3515,7 @@ msgstr "No hay búsqueda sobre la que operar"
 
 #: html/Elements/RT__Ticket/ColumnMap:134
 msgid "No subject"
 
 #: html/Elements/RT__Ticket/ColumnMap:134
 msgid "No subject"
-msgstr ""
+msgstr "No hay asunto"
 
 #: NOT FOUND IN SOURCE
 msgid "No ticket id specified"
 
 #: NOT FOUND IN SOURCE
 msgid "No ticket id specified"
@@ -3587,11 +3587,11 @@ msgstr "Notificar AdminCcs como comentario"
 
 #: etc/initialdata:93 etc/upgrade/3.1.17/content:6
 msgid "Notify Ccs"
 
 #: etc/initialdata:93 etc/upgrade/3.1.17/content:6
 msgid "Notify Ccs"
-msgstr ""
+msgstr "Notificar Ccs"
 
 #: etc/initialdata:89 etc/upgrade/3.1.17/content:2
 msgid "Notify Ccs as Comment"
 
 #: etc/initialdata:89 etc/upgrade/3.1.17/content:2
 msgid "Notify Ccs as Comment"
-msgstr ""
+msgstr "Notificar Ccs como Comentarios"
 
 #: etc/initialdata:128
 msgid "Notify Other Recipients"
 
 #: etc/initialdata:128
 msgid "Notify Other Recipients"
@@ -3611,15 +3611,15 @@ msgstr "Notificar al propietario como comentario"
 
 #: etc/initialdata:376
 msgid "Notify Owner of their rejected ticket"
 
 #: etc/initialdata:376
 msgid "Notify Owner of their rejected ticket"
-msgstr ""
+msgstr "Notificar al Propietario del ticket su rechazo"
 
 #: etc/initialdata:365
 msgid "Notify Owner of their ticket has been approved by all approvers"
 
 #: etc/initialdata:365
 msgid "Notify Owner of their ticket has been approved by all approvers"
-msgstr ""
+msgstr "Notificar al Propietario del ticket de la aprobación por todos los aprobadores"
 
 #: etc/initialdata:353
 msgid "Notify Owner of their ticket has been approved by some approver"
 
 #: etc/initialdata:353
 msgid "Notify Owner of their ticket has been approved by some approver"
-msgstr ""
+msgstr "Notificar al Propietario del ticket de la aprobación por algun aprobador"
 
 #: etc/initialdata:334
 msgid "Notify Owners and AdminCcs of new items pending their approval"
 
 #: etc/initialdata:334
 msgid "Notify Owners and AdminCcs of new items pending their approval"
@@ -3655,7 +3655,7 @@ msgstr "Noviembre"
 
 #: html/Search/Elements/SelectAndOr:47
 msgid "OR"
 
 #: html/Search/Elements/SelectAndOr:47
 msgid "OR"
-msgstr ""
+msgstr "O"
 
 #: lib/RT/Record.pm:319
 msgid "Object could not be created"
 
 #: lib/RT/Record.pm:319
 msgid "Object could not be created"
@@ -3663,7 +3663,7 @@ msgstr "No se pudo crear el objeto"
 
 #: lib/RT/Record.pm:124
 msgid "Object could not be deleted"
 
 #: lib/RT/Record.pm:124
 msgid "Object could not be deleted"
-msgstr ""
+msgstr "Objeto no pudo ser borrado"
 
 #: lib/RT/Record.pm:338
 msgid "Object created"
 
 #: lib/RT/Record.pm:338
 msgid "Object created"
@@ -3671,13 +3671,13 @@ msgstr "Objeto creado"
 
 #: lib/RT/Record.pm:121
 msgid "Object deleted"
 
 #: lib/RT/Record.pm:121
 msgid "Object deleted"
-msgstr ""
+msgstr "Objeto borrado"
 
 #: html/Admin/CustomFields/Objects.html:72 html/Admin/Elements/ObjectCustomFields:63
 #. ($ObjectType)
 #. ($LookupType)
 msgid "Object of type %1 cannot take custom fields"
 
 #: html/Admin/CustomFields/Objects.html:72 html/Admin/Elements/ObjectCustomFields:63
 #. ($ObjectType)
 #. ($LookupType)
 msgid "Object of type %1 cannot take custom fields"
-msgstr ""
+msgstr "Objeto de tipo %1 no puede tener campos personalizados"
 
 #: lib/RT/CustomField_Overlay.pm:901
 msgid "Object type mismatch"
 
 #: lib/RT/CustomField_Overlay.pm:901
 msgid "Object type mismatch"
@@ -3725,7 +3725,7 @@ msgstr "Al cambiar de propietario"
 
 #: etc/initialdata:177 etc/upgrade/3.1.17/content:15
 msgid "On Priority Change"
 
 #: etc/initialdata:177 etc/upgrade/3.1.17/content:15
 msgid "On Priority Change"
-msgstr ""
+msgstr "Al cambiar de prioridad"
 
 #: etc/initialdata:192
 msgid "On Queue Change"
 
 #: etc/initialdata:192
 msgid "On Queue Change"
@@ -3741,7 +3741,7 @@ msgstr "Al cambiar de status"
 
 #: etc/initialdata:150
 msgid "On Transaction"
 
 #: etc/initialdata:150
 msgid "On Transaction"
-msgstr "Al hacer transaccion"
+msgstr "Al hacer transacción"
 
 #: html/Approvals/Elements/PendingMyApproval:71
 #. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>")
 
 #: html/Approvals/Elements/PendingMyApproval:71
 #. ("<input size='15' value='".( $created_after->Unix >0 && $created_after->ISO)."' name='CreatedAfter'>")
@@ -3767,7 +3767,7 @@ msgstr "Solicitudes abiertas"
 
 #: html/SelfService/Elements/Tabs:63
 msgid "Open tickets"
 
 #: html/SelfService/Elements/Tabs:63
 msgid "Open tickets"
-msgstr ""
+msgstr "Tickets abiertos"
 
 #: NOT FOUND IN SOURCE
 msgid "Open tickets (from listing) in a new window"
 
 #: NOT FOUND IN SOURCE
 msgid "Open tickets (from listing) in a new window"
@@ -3783,7 +3783,7 @@ msgstr "Open tickets on correspondence"
 
 #: html/Search/Elements/DisplayOptions:56
 msgid "Order by"
 
 #: html/Search/Elements/DisplayOptions:56
 msgid "Order by"
-msgstr ""
+msgstr "Ordenar por"
 
 #: NOT FOUND IN SOURCE
 msgid "Ordering and sorting"
 
 #: NOT FOUND IN SOURCE
 msgid "Ordering and sorting"
@@ -3800,11 +3800,11 @@ msgstr "Ticket originario: #%1"
 
 #: lib/RT/Transaction_Overlay.pm:611
 msgid "Outgoing email about a comment recorded"
 
 #: lib/RT/Transaction_Overlay.pm:611
 msgid "Outgoing email about a comment recorded"
-msgstr ""
+msgstr "Email saliente acerca de un comentario grabado"
 
 #: lib/RT/Transaction_Overlay.pm:615
 msgid "Outgoing email recorded"
 
 #: lib/RT/Transaction_Overlay.pm:615
 msgid "Outgoing email recorded"
-msgstr ""
+msgstr "Email saliente grabado"
 
 #: html/Admin/Queues/Modify.html:90
 msgid "Over time, priority moves toward"
 
 #: html/Admin/Queues/Modify.html:90
 msgid "Over time, priority moves toward"
@@ -3828,7 +3828,7 @@ msgstr "Propietario cambiado de %1 a %2"
 
 #: lib/RT/Ticket_Overlay.pm:495
 msgid "Owner could not be set."
 
 #: lib/RT/Ticket_Overlay.pm:495
 msgid "Owner could not be set."
-msgstr ""
+msgstr "Propietario no pudo ser fijado."
 
 #: lib/RT/Transaction_Overlay.pm:661
 #. ($Old->Name , $New->Name)
 
 #: lib/RT/Transaction_Overlay.pm:661
 #. ($Old->Name , $New->Name)
@@ -3842,7 +3842,7 @@ msgstr "El propietario es"
 #: html/Elements/TicketList:78
 #. ($Page, int($TotalFound/$Rows)+$oddRows)
 msgid "Page %1 of %2"
 #: html/Elements/TicketList:78
 #. ($Page, int($TotalFound/$Rows)+$oddRows)
 msgid "Page %1 of %2"
-msgstr ""
+msgstr "Pagina %1 de %2"
 
 #: html/Admin/Users/Modify.html:198 html/User/Prefs.html:97
 msgid "Pager"
 
 #: html/Admin/Users/Modify.html:198 html/User/Prefs.html:97
 msgid "Pager"
@@ -3871,11 +3871,11 @@ msgstr "Contraseña cambiado"
 #: lib/RT/User_Overlay.pm:1038 lib/RT/User_Overlay.pm:215
 #. ($RT::MinimumPasswordLength)
 msgid "Password needs to be at least %1 characters long"
 #: lib/RT/User_Overlay.pm:1038 lib/RT/User_Overlay.pm:215
 #. ($RT::MinimumPasswordLength)
 msgid "Password needs to be at least %1 characters long"
-msgstr ""
+msgstr "La contraseña debe ser de al menos %1 caracteres de longitud"
 
 #: lib/RT/User_Overlay.pm:1045
 msgid "Password set"
 
 #: lib/RT/User_Overlay.pm:1045
 msgid "Password set"
-msgstr ""
+msgstr "Contraseña fijada"
 
 #: NOT FOUND IN SOURCE
 msgid "Password too short"
 
 #: NOT FOUND IN SOURCE
 msgid "Password too short"
@@ -3888,15 +3888,15 @@ msgstr "Contraseña: %1"
 
 #: lib/RT/User_Overlay.pm:1031
 msgid "Password: Permission Denied"
 
 #: lib/RT/User_Overlay.pm:1031
 msgid "Password: Permission Denied"
-msgstr ""
+msgstr "Contraseña: Permiso Denegado"
 
 #: html/Admin/Users/Modify.html:356
 msgid "Passwords do not match."
 
 #: html/Admin/Users/Modify.html:356
 msgid "Passwords do not match."
-msgstr ""
+msgstr "Las Contraseñas no coinciden"
 
 #: html/User/Prefs.html:234
 msgid "Passwords do not match. Your password has not been changed"
 
 #: html/User/Prefs.html:234
 msgid "Passwords do not match. Your password has not been changed"
-msgstr ""
+msgstr "Las contraseñas no coinciden. Tu contraseña no ha sido cambiada"
 
 #: html/Ticket/Elements/ShowSummary:66 html/Ticket/Elements/Tabs:119 html/Ticket/ModifyAll.html:72
 msgid "People"
 
 #: html/Ticket/Elements/ShowSummary:66 html/Ticket/Elements/Tabs:119 html/Ticket/ModifyAll.html:72
 msgid "People"
@@ -3904,7 +3904,7 @@ msgstr "Personas"
 
 #: etc/initialdata:133
 msgid "Perform a user-defined action"
 
 #: etc/initialdata:133
 msgid "Perform a user-defined action"
-msgstr "Realizar una acion definida por el usuario"
+msgstr "Realizar una acción definida por el usuario"
 
 #: html/Admin/Tools/Configuration.html:94
 msgid "Perl configuration"
 
 #: html/Admin/Tools/Configuration.html:94
 msgid "Perl configuration"
@@ -3952,7 +3952,7 @@ msgstr "Prev"
 
 #: html/Elements/TicketList:101
 msgid "Previous Page"
 
 #: html/Elements/TicketList:101
 msgid "Previous Page"
-msgstr ""
+msgstr "Página Anterior"
 
 #: NOT FOUND IN SOURCE
 msgid "Previous page"
 
 #: NOT FOUND IN SOURCE
 msgid "Previous page"
@@ -3998,11 +3998,11 @@ msgstr "Pseudogrupo para uso interno"
 
 #: html/Search/Elements/EditQuery:47
 msgid "Query"
 
 #: html/Search/Elements/EditQuery:47
 msgid "Query"
-msgstr ""
+msgstr "Consulta"
 
 #: html/Search/Build.html:124 html/Ticket/Elements/Tabs:195
 msgid "Query Builder"
 
 #: html/Search/Build.html:124 html/Ticket/Elements/Tabs:195
 msgid "Query Builder"
-msgstr ""
+msgstr "Constructor de Consulta"
 
 #: html/Elements/QuickCreate:55 html/Elements/Quicksearch:50 html/Search/Elements/PickBasics:71 html/SelfService/Create.html:54 html/Ticket/Create.html:59 html/Ticket/Elements/EditBasics:57 html/Ticket/Elements/ShowBasics:76 html/User/Elements/DelegateRights:101 lib/RT/Tickets_Overlay.pm:1345
 msgid "Queue"
 
 #: html/Elements/QuickCreate:55 html/Elements/Quicksearch:50 html/Search/Elements/PickBasics:71 html/SelfService/Create.html:54 html/Ticket/Create.html:59 html/Ticket/Elements/EditBasics:57 html/Ticket/Elements/ShowBasics:76 html/User/Elements/DelegateRights:101 lib/RT/Tickets_Overlay.pm:1345
 msgid "Queue"
@@ -4060,11 +4060,11 @@ msgstr "Colas"
 
 #: html/Elements/Quicksearch:46
 msgid "Quick search"
 
 #: html/Elements/Quicksearch:46
 msgid "Quick search"
-msgstr ""
+msgstr "Búsqueda rapida"
 
 #: html/Elements/QuickCreate:46
 msgid "Quick ticket creation"
 
 #: html/Elements/QuickCreate:46
 msgid "Quick ticket creation"
-msgstr ""
+msgstr "Creación rápida de ticket"
 
 #: html/Search/Results.html:83
 msgid "RSS"
 
 #: html/Search/Results.html:83
 msgid "RSS"
@@ -4138,7 +4138,7 @@ msgstr "RT no te pudo autenticar."
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't find requestor via its external database lookup"
 
 #: 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"
+msgstr "RT no pudo encontrar el solicitante a través de una búsqueda a la base de datos externa"
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't find the queue: %1"
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't find the queue: %1"
@@ -4146,7 +4146,7 @@ msgstr "RT no pudo encontrar la cola: %1"
 
 #: html/Elements/SetupSessionCookie:90
 msgid "RT couldn't store your session."
 
 #: html/Elements/SetupSessionCookie:90
 msgid "RT couldn't store your session."
-msgstr ""
+msgstr "RT no pudo almacenar tu sesión."
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't validate this PGP signature. \\n"
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't validate this PGP signature. \\n"
@@ -4192,22 +4192,22 @@ msgstr "Nombre real"
 #: lib/RT/Transaction_Overlay.pm:714
 #. ($value)
 msgid "Reference by %1 added"
 #: lib/RT/Transaction_Overlay.pm:714
 #. ($value)
 msgid "Reference by %1 added"
-msgstr ""
+msgstr "Referencia para %1 añadida"
 
 #: lib/RT/Transaction_Overlay.pm:754
 #. ($value)
 msgid "Reference by %1 deleted"
 
 #: lib/RT/Transaction_Overlay.pm:754
 #. ($value)
 msgid "Reference by %1 deleted"
-msgstr ""
+msgstr "Referencia para %1 borrada"
 
 #: lib/RT/Transaction_Overlay.pm:711
 #. ($value)
 msgid "Reference to %1 added"
 
 #: lib/RT/Transaction_Overlay.pm:711
 #. ($value)
 msgid "Reference to %1 added"
-msgstr ""
+msgstr "Referencia para %1 añadida"
 
 #: lib/RT/Transaction_Overlay.pm:751
 #. ($value)
 msgid "Reference to %1 deleted"
 
 #: lib/RT/Transaction_Overlay.pm:751
 #. ($value)
 msgid "Reference to %1 deleted"
-msgstr ""
+msgstr "Referencia para %1 borrada"
 
 #: html/Elements/EditLinks:103 html/Elements/EditLinks:154 html/Elements/ShowLinks:92 html/Ticket/Create.html:216 html/Ticket/Elements/BulkLinks:72
 msgid "Referred to by"
 
 #: html/Elements/EditLinks:103 html/Elements/EditLinks:154 html/Elements/ShowLinks:92 html/Ticket/Create.html:216 html/Ticket/Elements/BulkLinks:72
 msgid "Referred to by"
@@ -4252,11 +4252,11 @@ msgstr "Responder"
 
 #: html/Admin/Queues/Modify.html:72
 msgid "Reply Address"
 
 #: html/Admin/Queues/Modify.html:72
 msgid "Reply Address"
-msgstr ""
+msgstr "Dirección de Respuesta"
 
 #: html/Search/Bulk.html:151 html/Ticket/ModifyAll.html:94 html/Ticket/Update.html:76
 msgid "Reply to requestors"
 
 #: html/Search/Bulk.html:151 html/Ticket/ModifyAll.html:94 html/Ticket/Update.html:76
 msgid "Reply to requestors"
-msgstr ""
+msgstr "Responder a solicitantes"
 
 #: lib/RT/Queue_Overlay.pm:111
 msgid "Reply to tickets"
 
 #: lib/RT/Queue_Overlay.pm:111
 msgid "Reply to tickets"
@@ -4293,7 +4293,7 @@ msgstr "Las solicitudes entran en vencimiento en"
 #: lib/RT/Attribute_Overlay.pm:146
 #. ('Object')
 msgid "Required parameter '%1' not specified"
 #: lib/RT/Attribute_Overlay.pm:146
 #. ('Object')
 msgid "Required parameter '%1' not specified"
-msgstr ""
+msgstr "Parametro requerido '%1' no especificado"
 
 #: html/Elements/Submit:104
 msgid "Reset"
 
 #: html/Elements/Submit:104
 msgid "Reset"
@@ -4334,7 +4334,7 @@ msgstr "Confirmar contraseña"
 
 #: html/Search/Elements/EditSearches:61
 msgid "Revert"
 
 #: html/Search/Elements/EditSearches:61
 msgid "Revert"
-msgstr ""
+msgstr "Revertir"
 
 #: NOT FOUND IN SOURCE
 msgid "Right %1 not found for %2  %3 in scope %4 (%5)\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "Right %1 not found for %2  %3 in scope %4 (%5)\\n"
@@ -4392,7 +4392,7 @@ msgstr "RootApproval"
 
 #: html/Search/Elements/DisplayOptions:83
 msgid "Rows per page"
 
 #: html/Search/Elements/DisplayOptions:83
 msgid "Rows per page"
-msgstr ""
+msgstr "Filas por pagina"
 
 #: lib/RT/Date.pm:418
 msgid "Sat."
 
 #: lib/RT/Date.pm:418
 msgid "Sat."
@@ -4400,7 +4400,7 @@ msgstr "Sab."
 
 #: html/Search/Elements/EditSearches:70
 msgid "Save"
 
 #: html/Search/Elements/EditSearches:70
 msgid "Save"
-msgstr ""
+msgstr "Grabar"
 
 #: html/Admin/Global/Template.html:67 html/Admin/Groups/Modify.html:88 html/Admin/Queues/Modify.html:111 html/Admin/Queues/People.html:126 html/Admin/Users/Modify.html:238 html/SelfService/Prefs.html:58 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:127 html/Ticket/ModifyDates.html:60 html/Ticket/ModifyLinks.html:60 html/Ticket/ModifyPeople.html:59 html/User/Groups/Modify.html:77
 msgid "Save Changes"
 
 #: html/Admin/Global/Template.html:67 html/Admin/Groups/Modify.html:88 html/Admin/Queues/Modify.html:111 html/Admin/Queues/People.html:126 html/Admin/Users/Modify.html:238 html/SelfService/Prefs.html:58 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:127 html/Ticket/ModifyDates.html:60 html/Ticket/ModifyLinks.html:60 html/Ticket/ModifyPeople.html:59 html/User/Groups/Modify.html:77
 msgid "Save Changes"
@@ -4408,7 +4408,7 @@ msgstr "Guardar Cambios"
 
 #: html/User/Prefs.html:179
 msgid "Save Preferences"
 
 #: html/User/Prefs.html:179
 msgid "Save Preferences"
-msgstr ""
+msgstr "Guardar Preferencias"
 
 #: html/Ticket/Elements/PreviewScrips:124
 msgid "Save changes"
 
 #: html/Ticket/Elements/PreviewScrips:124
 msgid "Save changes"
@@ -4417,11 +4417,11 @@ msgstr "Guardar cambios"
 #: lib/RT/SavedSearch.pm:162
 #. ($name)
 msgid "Saved search %1"
 #: lib/RT/SavedSearch.pm:162
 #. ($name)
 msgid "Saved search %1"
-msgstr ""
+msgstr "Búsqueda grabada %1"
 
 #: html/Search/Elements/EditSearches:46
 msgid "Saved searches"
 
 #: html/Search/Elements/EditSearches:46
 msgid "Saved searches"
-msgstr ""
+msgstr "Búsquedas guardadas"
 
 #: html/Admin/Elements/ListGlobalScrips:61 html/Admin/Global/Scrip.html:70 html/Admin/Queues/Scrip.html:76
 #. ($scrip->Id)
 
 #: html/Admin/Elements/ListGlobalScrips:61 html/Admin/Global/Scrip.html:70 html/Admin/Queues/Scrip.html:76
 #. ($scrip->Id)
@@ -4481,19 +4481,19 @@ msgstr "Seguridad:"
 
 #: lib/RT/CustomField_Overlay.pm:100
 msgid "See custom fields"
 
 #: lib/RT/CustomField_Overlay.pm:100
 msgid "See custom fields"
-msgstr ""
+msgstr "Ver campos personalizados"
 
 #: lib/RT/Queue_Overlay.pm:107
 msgid "See exact outgoing email messages and their recipeients"
 
 #: lib/RT/Queue_Overlay.pm:107
 msgid "See exact outgoing email messages and their recipeients"
-msgstr ""
+msgstr "Ver mensajes email salientes exactos y sus receptores"
 
 #: lib/RT/Queue_Overlay.pm:105
 msgid "See ticket private commentary"
 
 #: lib/RT/Queue_Overlay.pm:105
 msgid "See ticket private commentary"
-msgstr ""
+msgstr "Ver comentario privado del ticket"
 
 #: lib/RT/Queue_Overlay.pm:104
 msgid "See ticket summaries"
 
 #: lib/RT/Queue_Overlay.pm:104
 msgid "See ticket summaries"
-msgstr ""
+msgstr "Ver sumarios del ticket"
 
 #: lib/RT/CustomField_Overlay.pm:100
 msgid "SeeCustomField"
 
 #: lib/RT/CustomField_Overlay.pm:100
 msgid "SeeCustomField"
@@ -4509,7 +4509,7 @@ msgstr "Ver cola"
 
 #: html/Admin/CustomFields/index.html:46 html/Admin/CustomFields/index.html:49
 msgid "Select a Custom Field"
 
 #: html/Admin/CustomFields/index.html:46 html/Admin/CustomFields/index.html:49
 msgid "Select a Custom Field"
-msgstr ""
+msgstr "Seleccionar un Campo Personalizado"
 
 #: html/Admin/Groups/index.html:78
 msgid "Select a group"
 
 #: html/Admin/Groups/index.html:78
 msgid "Select a group"
@@ -4521,7 +4521,7 @@ msgstr "Seleccione una cola"
 
 #: html/SelfService/CreateTicketInQueue.html:48
 msgid "Select a queue for your new ticket"
 
 #: html/SelfService/CreateTicketInQueue.html:48
 msgid "Select a queue for your new ticket"
-msgstr ""
+msgstr "Seleccionar una cola para su nuevo ticket"
 
 #: html/Admin/Users/index.html:46 html/Admin/Users/index.html:49 html/Admin/Users/index.html:52
 msgid "Select a user"
 
 #: html/Admin/Users/index.html:46 html/Admin/Users/index.html:49 html/Admin/Users/index.html:52
 msgid "Select a user"
@@ -4533,19 +4533,19 @@ msgstr "Seleccionar un campo personalizable"
 
 #: html/Admin/Global/CustomFields/index.html:70
 msgid "Select custom fields for all user groups"
 
 #: html/Admin/Global/CustomFields/index.html:70
 msgid "Select custom fields for all user groups"
-msgstr ""
+msgstr "Seleccionar campos personalizados para todos los grupos de usuarios"
 
 #: html/Admin/Global/CustomFields/index.html:65
 msgid "Select custom fields for all users"
 
 #: html/Admin/Global/CustomFields/index.html:65
 msgid "Select custom fields for all users"
-msgstr ""
+msgstr "Seleccionar campos personalizados para todos los usuarios"
 
 #: html/Admin/Global/CustomFields/index.html:76
 msgid "Select custom fields for tickets in all queues"
 
 #: html/Admin/Global/CustomFields/index.html:76
 msgid "Select custom fields for tickets in all queues"
-msgstr ""
+msgstr "Seleccionar campos personalizados para tickets en todas las colas"
 
 #: html/Admin/Global/CustomFields/index.html:83
 msgid "Select custom fields for transactions on tickets in all queues"
 
 #: html/Admin/Global/CustomFields/index.html:83
 msgid "Select custom fields for transactions on tickets in all queues"
-msgstr ""
+msgstr "Seleccionar campos personalizados para transacciones de tickets en todas las colas"
 
 #: html/Admin/Elements/GroupTabs:75 html/User/Elements/GroupTabs:71
 msgid "Select group"
 
 #: html/Admin/Elements/GroupTabs:75 html/User/Elements/GroupTabs:71
 msgid "Select group"
@@ -4573,7 +4573,7 @@ msgstr "Selecionar plantilla"
 
 #: lib/RT/CustomField_Overlay.pm:61
 msgid "Select up to %1 values"
 
 #: lib/RT/CustomField_Overlay.pm:61
 msgid "Select up to %1 values"
-msgstr ""
+msgstr "Seleccionar hasta %1 valores"
 
 #: html/Admin/Elements/UserTabs:75
 msgid "Select user"
 
 #: html/Admin/Elements/UserTabs:75
 msgid "Select user"
@@ -4589,11 +4589,11 @@ msgstr "SelectSingle"
 
 #: html/Admin/Elements/EditCustomFields:58
 msgid "Selected Custom Fields"
 
 #: html/Admin/Elements/EditCustomFields:58
 msgid "Selected Custom Fields"
-msgstr ""
+msgstr "Campos Personalizados Seleccionados"
 
 #: html/Admin/CustomFields/Objects.html:59
 msgid "Selected objects"
 
 #: html/Admin/CustomFields/Objects.html:59
 msgid "Selected objects"
-msgstr ""
+msgstr "Objetos seleccionados"
 
 #: NOT FOUND IN SOURCE
 msgid "Self Service"
 
 #: NOT FOUND IN SOURCE
 msgid "Self Service"
@@ -4625,11 +4625,11 @@ msgstr "Enviar mail a los Ccs y Bccs listados explicitamente"
 
 #: etc/initialdata:94 etc/upgrade/3.1.17/content:7
 msgid "Sends mail to the Ccs"
 
 #: etc/initialdata:94 etc/upgrade/3.1.17/content:7
 msgid "Sends mail to the Ccs"
-msgstr ""
+msgstr "Envia mail a los Ccs"
 
 #: etc/initialdata:90 etc/upgrade/3.1.17/content:3
 msgid "Sends mail to the Ccs as a comment"
 
 #: etc/initialdata:90 etc/upgrade/3.1.17/content:3
 msgid "Sends mail to the Ccs as a comment"
-msgstr ""
+msgstr "Envia mail a los Ccs como comentario"
 
 #: etc/initialdata:102
 msgid "Sends mail to the administrative Ccs"
 
 #: etc/initialdata:102
 msgid "Sends mail to the administrative Ccs"
@@ -4653,15 +4653,15 @@ msgstr "Septiembre"
 
 #: html/Ticket/Elements/ShowTransaction:150
 msgid "Show"
 
 #: html/Ticket/Elements/ShowTransaction:150
 msgid "Show"
-msgstr ""
+msgstr "Mostrar"
 
 #: html/Approvals/index.html:52
 msgid "Show Approvals"
 
 #: html/Approvals/index.html:52
 msgid "Show Approvals"
-msgstr ""
+msgstr "Mostrar Aprobaciones"
 
 #: html/Search/Elements/EditFormat:56
 msgid "Show Columns"
 
 #: html/Search/Elements/EditFormat:56
 msgid "Show Columns"
-msgstr ""
+msgstr "Mostrar Columnas"
 
 #: html/Ticket/Elements/Tabs:201
 msgid "Show Results"
 
 #: html/Ticket/Elements/Tabs:201
 msgid "Show Results"
@@ -4753,7 +4753,7 @@ msgstr "Sencillo"
 
 #: html/Search/Elements/EditFormat:75
 msgid "Size"
 
 #: html/Search/Elements/EditFormat:75
 msgid "Size"
-msgstr ""
+msgstr "Tamaño"
 
 #: html/Elements/Header:85
 msgid "Skip Menu"
 
 #: html/Elements/Header:85
 msgid "Skip Menu"
@@ -4765,7 +4765,7 @@ msgstr ""
 
 #: html/Admin/Elements/AddCustomFieldValue:49 html/Admin/Elements/EditCustomFieldValues:54
 msgid "Sort"
 
 #: html/Admin/Elements/AddCustomFieldValue:49 html/Admin/Elements/EditCustomFieldValues:54
 msgid "Sort"
-msgstr ""
+msgstr "Ordenar"
 
 #: NOT FOUND IN SOURCE
 msgid "Sort key"
 
 #: NOT FOUND IN SOURCE
 msgid "Sort key"
@@ -4793,7 +4793,7 @@ msgstr "Página de inicio"
 
 #: html/Elements/SelectDateType:48 html/Ticket/Elements/EditDates:53 html/Ticket/Elements/ShowDates:56
 msgid "Started"
 
 #: html/Elements/SelectDateType:48 html/Ticket/Elements/EditDates:53 html/Ticket/Elements/ShowDates:56
 msgid "Started"
-msgstr "Empezado"
+msgstr "Comenzado"
 
 #: NOT FOUND IN SOURCE
 msgid "Started date '%1' could not be parsed"
 
 #: NOT FOUND IN SOURCE
 msgid "Started date '%1' could not be parsed"
@@ -4801,11 +4801,11 @@ msgstr "La fecha de inicio '%1' no se pudo leer"
 
 #: html/Elements/SelectDateType:52 html/Ticket/Create.html:196 html/Ticket/Elements/EditDates:48 html/Ticket/Elements/ShowDates:52
 msgid "Starts"
 
 #: html/Elements/SelectDateType:52 html/Ticket/Create.html:196 html/Ticket/Elements/EditDates:48 html/Ticket/Elements/ShowDates:52
 msgid "Starts"
-msgstr "Empieza"
+msgstr "Comienzo"
 
 #: NOT FOUND IN SOURCE
 msgid "Starts By"
 
 #: NOT FOUND IN SOURCE
 msgid "Starts By"
-msgstr "Empezado por"
+msgstr "Comenzado por"
 
 #: NOT FOUND IN SOURCE
 msgid "Starts date '%1' could not be parsed"
 
 #: NOT FOUND IN SOURCE
 msgid "Starts date '%1' could not be parsed"
@@ -4837,7 +4837,7 @@ msgstr "Robar"
 
 #: lib/RT/Queue_Overlay.pm:118
 msgid "Steal tickets"
 
 #: lib/RT/Queue_Overlay.pm:118
 msgid "Steal tickets"
-msgstr ""
+msgstr "Robar tickets"
 
 #: lib/RT/Queue_Overlay.pm:118
 msgid "StealTicket"
 
 #: lib/RT/Queue_Overlay.pm:118
 msgid "StealTicket"
@@ -4850,7 +4850,7 @@ msgstr "Robado de %1"
 
 #: html/Search/Elements/EditFormat:81
 msgid "Style"
 
 #: html/Search/Elements/EditFormat:81
 msgid "Style"
-msgstr ""
+msgstr "Estilo"
 
 #: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:154 html/SelfService/Create.html:79 html/SelfService/Elements/MyRequests:49 html/SelfService/Update.html:65 html/Ticket/Create.html:105 html/Ticket/Elements/EditBasics:48 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:80 lib/RT/Ticket_Overlay.pm:1138 lib/RT/Tickets_Overlay.pm:1460
 msgid "Subject"
 
 #: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:154 html/SelfService/Create.html:79 html/SelfService/Elements/MyRequests:49 html/SelfService/Update.html:65 html/Ticket/Create.html:105 html/Ticket/Elements/EditBasics:48 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:80 lib/RT/Ticket_Overlay.pm:1138 lib/RT/Tickets_Overlay.pm:1460
 msgid "Subject"
@@ -4887,7 +4887,7 @@ msgstr "Sistema"
 
 #: html/Admin/Elements/ToolTabs:54 html/Admin/Tools/Configuration.html:48
 msgid "System Configuration"
 
 #: html/Admin/Elements/ToolTabs:54 html/Admin/Tools/Configuration.html:48
 msgid "System Configuration"
-msgstr ""
+msgstr "Configuración del Sistema"
 
 #: html/Admin/CustomFields/GroupRights.html:128 html/Admin/CustomFields/GroupRights.html:155 html/Admin/CustomFields/UserRights.html:128 html/Admin/CustomFields/UserRights.html:98 html/Admin/Elements/SelectRights:106 lib/RT/ACE_Overlay.pm:585 lib/RT/Interface/Web.pm:900 lib/RT/Interface/Web.pm:929
 msgid "System Error"
 
 #: html/Admin/CustomFields/GroupRights.html:128 html/Admin/CustomFields/GroupRights.html:155 html/Admin/CustomFields/UserRights.html:128 html/Admin/CustomFields/UserRights.html:98 html/Admin/Elements/SelectRights:106 lib/RT/ACE_Overlay.pm:585 lib/RT/Interface/Web.pm:900 lib/RT/Interface/Web.pm:929
 msgid "System Error"
@@ -4908,7 +4908,7 @@ msgstr ""
 
 #: html/Admin/Tools/index.html:47
 msgid "System Tools"
 
 #: html/Admin/Tools/index.html:47
 msgid "System Tools"
-msgstr ""
+msgstr "Herramientas del Sistema"
 
 #: lib/RT/ACE_Overlay.pm:634
 msgid "System error. Right not delegated."
 
 #: lib/RT/ACE_Overlay.pm:634
 msgid "System error. Right not delegated."
@@ -4940,7 +4940,7 @@ msgstr "Coger"
 
 #: lib/RT/Queue_Overlay.pm:116
 msgid "Take tickets"
 
 #: lib/RT/Queue_Overlay.pm:116
 msgid "Take tickets"
-msgstr ""
+msgstr "Coger tickets"
 
 #: lib/RT/Queue_Overlay.pm:116
 msgid "TakeTicket"
 
 #: lib/RT/Queue_Overlay.pm:116
 msgid "TakeTicket"
@@ -4997,7 +4997,7 @@ msgstr "Este es el mismo valor"
 
 #: lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:615
 msgid "That principal already has that right"
 
 #: lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:615
 msgid "That principal already has that right"
-msgstr ""
+msgstr "Ese principal ya tiene ese derecho"
 
 #: lib/RT/Queue_Overlay.pm:750
 #. ($args{'Type'})
 
 #: lib/RT/Queue_Overlay.pm:750
 #. ($args{'Type'})
@@ -5108,15 +5108,15 @@ msgstr "Estos comentarios generalmente no están visibles para el usuario"
 
 #: lib/RT/CustomField_Overlay.pm:912
 msgid "This custom field does not apply to that object"
 
 #: lib/RT/CustomField_Overlay.pm:912
 msgid "This custom field does not apply to that object"
-msgstr ""
+msgstr "Este campo personalizado no se aplica a este objeto"
 
 #: html/Admin/Tools/Configuration.html:50
 msgid "This feature is only available to system administrators"
 
 #: html/Admin/Tools/Configuration.html:50
 msgid "This feature is only available to system administrators"
-msgstr ""
+msgstr "Esa caracteristica solo esta disponible a administradores del sistema"
 
 #: html/Ticket/Elements/PreviewScrips:93
 msgid "This message will be sent to..."
 
 #: html/Ticket/Elements/PreviewScrips:93
 msgid "This message will be sent to..."
-msgstr ""
+msgstr "Este mensaje sera enviado a..."
 
 #: NOT FOUND IN SOURCE
 msgid "This ticket %1 %2 (%3)\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "This ticket %1 %2 (%3)\\n"
@@ -5149,7 +5149,7 @@ msgstr "Ticket # %1  %2"
 
 #: NOT FOUND IN SOURCE
 msgid "Ticket # %1 Jumbo update: %2"
 
 #: NOT FOUND IN SOURCE
 msgid "Ticket # %1 Jumbo update: %2"
-msgstr "Actualizacion Jumbo para el ticket # %1: %2"
+msgstr "Actualización Jumbo para el ticket # %1: %2"
 
 #: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50
 #. ($Ticket->Id, $Ticket->Subject)
 
 #: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50
 #. ($Ticket->Id, $Ticket->Subject)
@@ -5184,7 +5184,7 @@ msgstr "Ticket %1: %2"
 
 #: html/Admin/Elements/QueueTabs:74
 msgid "Ticket Custom Fields"
 
 #: html/Admin/Elements/QueueTabs:74
 msgid "Ticket Custom Fields"
-msgstr ""
+msgstr "Campos Personalizados del Ticket"
 
 #: html/Ticket/History.html:46 html/Ticket/History.html:49
 #. ($Ticket->Id, $Ticket->Subject)
 
 #: html/Ticket/History.html:46 html/Ticket/History.html:49
 #. ($Ticket->Id, $Ticket->Subject)
@@ -5201,7 +5201,7 @@ msgstr "Ticket resuelto"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:69 html/Admin/Global/CustomFields/index.html:81 lib/RT/CustomField_Overlay.pm:1085
 msgid "Ticket Transactions"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:69 html/Admin/Global/CustomFields/index.html:81 lib/RT/CustomField_Overlay.pm:1085
 msgid "Ticket Transactions"
-msgstr ""
+msgstr "Transacciones del Ticket"
 
 #: NOT FOUND IN SOURCE
 msgid "Ticket attachment"
 
 #: NOT FOUND IN SOURCE
 msgid "Ticket attachment"
@@ -5258,7 +5258,7 @@ msgstr "Observadores del ticket"
 #: lib/RT/Search/FromSQL.pm:83
 #. (ref $self)
 msgid "TicketSQL search module"
 #: lib/RT/Search/FromSQL.pm:83
 #. (ref $self)
 msgid "TicketSQL search module"
-msgstr ""
+msgstr "Modulo de búsqueda TicketSQL"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:64 html/Admin/Global/CustomFields/index.html:75 html/Elements/Tabs:68 lib/RT/CustomField_Overlay.pm:1084
 msgid "Tickets"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:64 html/Admin/Global/CustomFields/index.html:75 html/Elements/Tabs:68 lib/RT/CustomField_Overlay.pm:1084
 msgid "Tickets"
@@ -5282,7 +5282,7 @@ msgstr "Tickets que dependen de esta aprobación:"
 
 #: html/Search/Elements/PickBasics:148 html/Ticket/Elements/EditBasics:61
 msgid "Time Estimated"
 
 #: html/Search/Elements/PickBasics:148 html/Ticket/Elements/EditBasics:61
 msgid "Time Estimated"
-msgstr ""
+msgstr "Tiempo Estimado"
 
 #: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:187 html/Ticket/Elements/EditBasics:69
 msgid "Time Left"
 
 #: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:187 html/Ticket/Elements/EditBasics:69
 msgid "Time Left"
@@ -5314,7 +5314,7 @@ msgstr "TimeWorked"
 
 #: html/Search/Elements/EditFormat:74
 msgid "Title"
 
 #: html/Search/Elements/EditFormat:74
 msgid "Title"
-msgstr ""
+msgstr "Titulo"
 
 #: NOT FOUND IN SOURCE
 msgid "To generate a diff of this commit:"
 
 #: NOT FOUND IN SOURCE
 msgid "To generate a diff of this commit:"
@@ -5335,7 +5335,7 @@ msgstr "Última actualización"
 
 #: html/Admin/Elements/Tabs:68 html/Admin/index.html:88 html/Elements/Tabs:71
 msgid "Tools"
 
 #: html/Admin/Elements/Tabs:68 html/Admin/index.html:88 html/Elements/Tabs:71
 msgid "Tools"
-msgstr ""
+msgstr "Herramientas"
 
 #: etc/initialdata:252
 msgid "Transaction"
 
 #: etc/initialdata:252
 msgid "Transaction"
@@ -5352,15 +5352,15 @@ msgstr "Transacción creada"
 
 #: html/Admin/Elements/QueueTabs:78
 msgid "Transaction Custom Fields"
 
 #: html/Admin/Elements/QueueTabs:78
 msgid "Transaction Custom Fields"
-msgstr ""
+msgstr "Campos Personalizados de Transacción"
 
 #: NOT FOUND IN SOURCE
 msgid "Transaction->Create couldn't, as you didn't specify a ticket id"
 
 #: NOT FOUND IN SOURCE
 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"
+msgstr "Transaction->Create no pudo, ya que no especificó un ID de ticket"
 
 #: lib/RT/Transaction_Overlay.pm:125
 msgid "Transaction->Create couldn't, as you didn't specify an object type and id"
 
 #: lib/RT/Transaction_Overlay.pm:125
 msgid "Transaction->Create couldn't, as you didn't specify an object type and id"
-msgstr ""
+msgstr "Transaction->Create no pudo, ya que no especificó un tipo de objeto e ID"
 
 #: lib/RT/Transaction_Overlay.pm:838
 msgid "Transactions are immutable"
 
 #: lib/RT/Transaction_Overlay.pm:838
 msgid "Transactions are immutable"
@@ -5398,7 +5398,7 @@ msgstr "Codificación de contenido desconocida: %1"
 
 #: html/Search/Build.html:632
 msgid "Unknown field: $key"
 
 #: html/Search/Build.html:632
 msgid "Unknown field: $key"
-msgstr ""
+msgstr "Campo desconocido: $key"
 
 #: html/Elements/SelectResultsPerPage:58
 msgid "Unlimited"
 
 #: html/Elements/SelectResultsPerPage:58
 msgid "Unlimited"
@@ -5406,7 +5406,7 @@ msgstr "Ilimitado"
 
 #: html/Search/Elements/SelectSearchesForObjects:63
 msgid "Unnamed search"
 
 #: html/Search/Elements/SelectSearchesForObjects:63
 msgid "Unnamed search"
-msgstr ""
+msgstr "Búsqueda sin nombre"
 
 #: etc/initialdata:32
 msgid "Unprivileged"
 
 #: etc/initialdata:32
 msgid "Unprivileged"
@@ -5414,11 +5414,11 @@ msgstr "No privilegiado"
 
 #: html/Admin/Elements/EditCustomFields:60
 msgid "Unselected Custom Fields"
 
 #: html/Admin/Elements/EditCustomFields:60
 msgid "Unselected Custom Fields"
-msgstr ""
+msgstr "Campos Personalizados No Seleccionados"
 
 #: html/Admin/CustomFields/Objects.html:61
 msgid "Unselected objects"
 
 #: html/Admin/CustomFields/Objects.html:61
 msgid "Unselected objects"
-msgstr ""
+msgstr "Objetos No Seleccionados"
 
 #: lib/RT/Transaction_Overlay.pm:648
 msgid "Untaken"
 
 #: lib/RT/Transaction_Overlay.pm:648
 msgid "Untaken"
@@ -5430,7 +5430,7 @@ msgstr "Actualizar"
 
 #: html/Search/Bulk.html:178
 msgid "Update All"
 
 #: html/Search/Bulk.html:178
 msgid "Update All"
-msgstr ""
+msgstr "Actualizar Todo"
 
 #: NOT FOUND IN SOURCE
 msgid "Update ID"
 
 #: NOT FOUND IN SOURCE
 msgid "Update ID"
@@ -5438,7 +5438,7 @@ msgstr "Id de actualización"
 
 #: html/Ticket/Update.html:133
 msgid "Update Ticket"
 
 #: html/Ticket/Update.html:133
 msgid "Update Ticket"
-msgstr ""
+msgstr "Actualizar Ticket"
 
 #: html/Search/Bulk.html:148 html/Ticket/ModifyAll.html:87 html/Ticket/Update.html:70
 msgid "Update Type"
 
 #: html/Search/Bulk.html:148 html/Ticket/ModifyAll.html:87 html/Ticket/Update.html:70
 msgid "Update Type"
@@ -5454,7 +5454,7 @@ msgstr "Actualizar correo"
 
 #: html/Search/Results.html:80
 msgid "Update multiple tickets"
 
 #: html/Search/Results.html:80
 msgid "Update multiple tickets"
-msgstr ""
+msgstr "Actualizar multiples tickets"
 
 #: NOT FOUND IN SOURCE
 msgid "Update name"
 
 #: NOT FOUND IN SOURCE
 msgid "Update name"
@@ -5500,39 +5500,39 @@ msgstr "Actualizado"
 
 #: html/Tools/Offline.html:95
 msgid "Upload"
 
 #: html/Tools/Offline.html:95
 msgid "Upload"
-msgstr ""
+msgstr "Subir"
 
 #: lib/RT/CustomField_Overlay.pm:84
 msgid "Upload multiple files"
 
 #: lib/RT/CustomField_Overlay.pm:84
 msgid "Upload multiple files"
-msgstr ""
+msgstr "Subir multiples ficheros"
 
 #: lib/RT/CustomField_Overlay.pm:79
 msgid "Upload multiple images"
 
 #: lib/RT/CustomField_Overlay.pm:79
 msgid "Upload multiple images"
-msgstr ""
+msgstr "Subir multiples imagenes"
 
 #: lib/RT/CustomField_Overlay.pm:85
 msgid "Upload one file"
 
 #: lib/RT/CustomField_Overlay.pm:85
 msgid "Upload one file"
-msgstr ""
+msgstr "Subir un fichero"
 
 #: lib/RT/CustomField_Overlay.pm:80
 msgid "Upload one image"
 
 #: lib/RT/CustomField_Overlay.pm:80
 msgid "Upload one image"
-msgstr ""
+msgstr "Subir una imagen"
 
 #: lib/RT/CustomField_Overlay.pm:86
 msgid "Upload up to %1 files"
 
 #: lib/RT/CustomField_Overlay.pm:86
 msgid "Upload up to %1 files"
-msgstr ""
+msgstr "Subir hasta %1 ficheros"
 
 #: lib/RT/CustomField_Overlay.pm:81
 msgid "Upload up to %1 images"
 
 #: lib/RT/CustomField_Overlay.pm:81
 msgid "Upload up to %1 images"
-msgstr ""
+msgstr "Subir hasta %1 imagenes"
 
 #: html/Tools/Offline.html:95
 msgid "Upload your changes"
 
 #: html/Tools/Offline.html:95
 msgid "Upload your changes"
-msgstr ""
+msgstr "Subir cambios"
 
 #: html/Admin/index.html:90
 msgid "Use other RT administrative tools"
 
 #: html/Admin/index.html:90
 msgid "Use other RT administrative tools"
-msgstr ""
+msgstr "Usar otra herramienta administrativa RT"
 
 #: NOT FOUND IN SOURCE
 msgid "User %1 %2: %3\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "User %1 %2: %3\\n"
@@ -5545,7 +5545,7 @@ msgstr "Usuario %1 Contraseña: %2\\n"
 #: lib/RT/Ticket_Overlay.pm:496
 #. ($args{'Owner'})
 msgid "User '%1' could not be found."
 #: lib/RT/Ticket_Overlay.pm:496
 #. ($args{'Owner'})
 msgid "User '%1' could not be found."
-msgstr ""
+msgstr "No se encontro el Usuario '%1'"
 
 #: NOT FOUND IN SOURCE
 msgid "User '%1' not found"
 
 #: NOT FOUND IN SOURCE
 msgid "User '%1' not found"
@@ -5561,7 +5561,7 @@ msgstr "Definido por el usuario"
 
 #: html/Admin/Elements/EditScrip:98
 msgid "User Defined conditions and actions"
 
 #: html/Admin/Elements/EditScrip:98
 msgid "User Defined conditions and actions"
-msgstr ""
+msgstr "Condiciones y acciones Definidas por el Usuario"
 
 #: NOT FOUND IN SOURCE
 msgid "User ID"
 
 #: NOT FOUND IN SOURCE
 msgid "User ID"
@@ -5595,7 +5595,7 @@ msgstr "Grupos definidos por el usuario"
 
 #: lib/RT/User_Overlay.pm:593 lib/RT/User_Overlay.pm:613
 msgid "User loaded"
 
 #: lib/RT/User_Overlay.pm:593 lib/RT/User_Overlay.pm:613
 msgid "User loaded"
-msgstr ""
+msgstr "Usuario cargado"
 
 #: NOT FOUND IN SOURCE
 msgid "User notified"
 
 #: NOT FOUND IN SOURCE
 msgid "User notified"
@@ -5607,7 +5607,7 @@ msgstr "Vista de usuario"
 
 #: html/Admin/Groups/index.html:99
 msgid "User-defined groups"
 
 #: html/Admin/Groups/index.html:99
 msgid "User-defined groups"
-msgstr ""
+msgstr "Grupos definidos por el usuario"
 
 #: html/Admin/Users/Modify.html:69 html/Elements/Login:73 html/Ticket/Elements/AddWatchers:56
 msgid "Username"
 
 #: html/Admin/Users/Modify.html:69 html/Elements/Login:73 html/Ticket/Elements/AddWatchers:56
 msgid "Username"
@@ -5623,7 +5623,7 @@ msgstr "Usuarios que concuerdan con los criterios de búsqueda"
 
 #: lib/RT/Tickets_Overlay_SQL.pm:523
 msgid "Valid Query"
 
 #: lib/RT/Tickets_Overlay_SQL.pm:523
 msgid "Valid Query"
-msgstr ""
+msgstr "Consulta Valida"
 
 #: NOT FOUND IN SOURCE
 msgid "ValueOfQueue"
 
 #: NOT FOUND IN SOURCE
 msgid "ValueOfQueue"
@@ -5635,7 +5635,7 @@ msgstr "Valores"
 
 #: lib/RT/Queue_Overlay.pm:108
 msgid "Watch"
 
 #: lib/RT/Queue_Overlay.pm:108
 msgid "Watch"
-msgstr "Observar"
+msgstr ""
 
 #: lib/RT/Queue_Overlay.pm:109
 msgid "WatchAsAdminCc"
 
 #: lib/RT/Queue_Overlay.pm:109
 msgid "WatchAsAdminCc"
@@ -5671,7 +5671,7 @@ msgstr "Cuando un ticket se crea"
 
 #: etc/initialdata:418
 msgid "When an approval ticket is created, notify the Owner and AdminCc of the item awaiting their approval"
 
 #: etc/initialdata:418
 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"
+msgstr "Cuando una aprobación de ticket se crea, notifica al propietario y AdminCC del item que espera su aprobación"
 
 #: etc/initialdata:151
 msgid "When anything happens"
 
 #: etc/initialdata:151
 msgid "When anything happens"
@@ -5687,7 +5687,7 @@ msgstr "Siempre que el propietario de un ticket cambie"
 
 #: etc/initialdata:178 etc/upgrade/3.1.17/content:16
 msgid "Whenever a ticket's priority changes"
 
 #: etc/initialdata:178 etc/upgrade/3.1.17/content:16
 msgid "Whenever a ticket's priority changes"
-msgstr ""
+msgstr "Siempre que la prioridad de un ticket cambie"
 
 #: etc/initialdata:193
 msgid "Whenever a ticket's queue changes"
 
 #: etc/initialdata:193
 msgid "Whenever a ticket's queue changes"
@@ -5699,7 +5699,7 @@ msgstr "Siempre que el estado de un ticket cambie"
 
 #: etc/initialdata:207
 msgid "Whenever a user-defined condition occurs"
 
 #: etc/initialdata:207
 msgid "Whenever a user-defined condition occurs"
-msgstr "Siempre que ocurra una condicion definida por el usuario"
+msgstr "Siempre que ocurra una condición definida por el usuario"
 
 #: etc/initialdata:164
 msgid "Whenever comments come in"
 
 #: etc/initialdata:164
 msgid "Whenever comments come in"
@@ -5776,7 +5776,7 @@ msgstr "Su petición ha sido aprobada por %1. Otras aprobaciones pueden estar pe
 
 #: etc/initialdata:540
 msgid "Your request has been approved."
 
 #: etc/initialdata:540
 msgid "Your request has been approved."
-msgstr "Su peticion ha sido aprobada."
+msgstr "Su petición ha sido aprobada."
 
 #: NOT FOUND IN SOURCE
 msgid "Your request was rejected"
 
 #: NOT FOUND IN SOURCE
 msgid "Your request was rejected"
@@ -5800,11 +5800,11 @@ msgstr "[sin asunto]"
 
 #: lib/RT/System.pm:88
 msgid "allow creation of saved searches"
 
 #: lib/RT/System.pm:88
 msgid "allow creation of saved searches"
-msgstr ""
+msgstr "permitir creación de búsquedas guardadas"
 
 #: lib/RT/System.pm:87
 msgid "allow loading of saved searches"
 
 #: lib/RT/System.pm:87
 msgid "allow loading of saved searches"
-msgstr ""
+msgstr "permitir carga de búsquedas guardadas"
 
 #: html/User/Elements/DelegateRights:80
 #. ($right->PrincipalObj->Object->SelfDescription)
 
 #: html/User/Elements/DelegateRights:80
 #. ($right->PrincipalObj->Object->SelfDescription)
@@ -5813,11 +5813,11 @@ msgstr "como priviligiado para %1"
 
 #: html/Search/Elements/PickBasics:127
 msgid "belongs to"
 
 #: html/Search/Elements/PickBasics:127
 msgid "belongs to"
-msgstr ""
+msgstr "pertenece a"
 
 #: html/SelfService/Closed.html:49
 msgid "closed"
 
 #: html/SelfService/Closed.html:49
 msgid "closed"
-msgstr ""
+msgstr "cerrado"
 
 #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:55
 msgid "contains"
 
 #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:55
 msgid "contains"
@@ -5857,7 +5857,7 @@ msgstr "borrado"
 
 #: html/Search/Elements/PickBasics:128
 msgid "does not belong to"
 
 #: html/Search/Elements/PickBasics:128
 msgid "does not belong to"
-msgstr ""
+msgstr "no pertenece a"
 
 #: html/Search/Elements/PickBasics:61
 msgid "does not match"
 
 #: html/Search/Elements/PickBasics:61
 msgid "does not match"
@@ -5873,23 +5873,23 @@ msgstr "igual a"
 
 #: html/Search/Build.html:387
 msgid "error: can't move down"
 
 #: html/Search/Build.html:387
 msgid "error: can't move down"
-msgstr ""
+msgstr "error: no se puede mover abajo"
 
 #: html/Search/Build.html:409
 msgid "error: can't move left"
 
 #: html/Search/Build.html:409
 msgid "error: can't move left"
-msgstr ""
+msgstr "error: no se puede mover a la izquierda"
 
 #: html/Search/Build.html:368
 msgid "error: can't move up"
 
 #: html/Search/Build.html:368
 msgid "error: can't move up"
-msgstr ""
+msgstr "error: no se puede mover arriba"
 
 #: html/Search/Build.html:451
 msgid "error: nothing to delete"
 
 #: html/Search/Build.html:451
 msgid "error: nothing to delete"
-msgstr ""
+msgstr "error: nada a borrar"
 
 #: html/Search/Build.html:373 html/Search/Build.html:392 html/Search/Build.html:414 html/Search/Build.html:443
 msgid "error: nothing to move"
 
 #: html/Search/Build.html:373 html/Search/Build.html:392 html/Search/Build.html:414 html/Search/Build.html:443
 msgid "error: nothing to move"
-msgstr ""
+msgstr "error: nada a mover"
 
 #: html/Search/Build.html:469
 msgid "error: nothing to toggle"
 
 #: html/Search/Build.html:469
 msgid "error: nothing to toggle"
@@ -5958,7 +5958,7 @@ msgstr "nuevo"
 
 #: html/Admin/Elements/PickCustomFields:64 html/Admin/Elements/PickObjects:63
 msgid "no name"
 
 #: html/Admin/Elements/PickCustomFields:64 html/Admin/Elements/PickObjects:63
 msgid "no name"
-msgstr ""
+msgstr "sin nombre"
 
 #: html/Admin/Elements/EditScrips:64
 msgid "no value"
 
 #: html/Admin/Elements/EditScrips:64
 msgid "no value"
@@ -6004,7 +6004,7 @@ msgstr "sec"
 
 #: lib/RT/System.pm:86
 msgid "show Configuration tab"
 
 #: lib/RT/System.pm:86
 msgid "show Configuration tab"
-msgstr ""
+msgstr "mostrar etiqueta de Configuración"
 
 #: html/Search/Results.html:82
 msgid "spreadsheet"
 
 #: html/Search/Results.html:82
 msgid "spreadsheet"
index eaac6bf..cfe974b 100644 (file)
@@ -2,11 +2,11 @@
 # First Author: Janne Pirkkanen <jp@oppipoika.net>, Jul 2002
 msgid ""
 msgstr ""
 # First Author: Janne Pirkkanen <jp@oppipoika.net>, Jul 2002
 msgid ""
 msgstr ""
-"Project-Id-Version: RT 2.1.x\n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2002-07-08 17:41+0200\n"
 "POT-Creation-Date: 2002-07-08 17:41+0200\n"
-"PO-Revision-Date: 2004-01-13 15:21+0200\n"
+"PO-Revision-Date: 2005-10-03 13:45-0400\n"
 "Last-Translator: Tuukka Vainio <tuukka.vainio@utu.fi>\n"
 "Last-Translator: Tuukka Vainio <tuukka.vainio@utu.fi>\n"
-"Language-Team: Finnish\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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index 8d1f3c3..8bbbe10 100644 (file)
@@ -1,14 +1,16 @@
+# translation of fr.po to
+# jfenal <jfenal@free.fr>, 2005.
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
-"Project-Id-Version: fr\n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\n"
-"PO-Revision-Date: 2005-08-06 22:14+0200\n"
+"PO-Revision-Date: 2005-10-28 01:54+0200\n"
 "Last-Translator: jfenal <jfenal@free.fr>\n"
 "Last-Translator: jfenal <jfenal@free.fr>\n"
-"Language-Team:  <fr@li.org>\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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
+"X-Generator: KBabel 1.10.2\n"
 
 #: html/Approvals/Elements/Approve:48 html/Approvals/Elements/ShowDependency:71 html/SelfService/Display.html:46 html/Ticket/Display.html:47 html/Ticket/Display.html:51
 #. ($Ticket->id, $Ticket->Subject)
 
 #: html/Approvals/Elements/Approve:48 html/Approvals/Elements/ShowDependency:71 html/SelfService/Display.html:46 html/Ticket/Display.html:47 html/Ticket/Display.html:51
 #. ($Ticket->id, $Ticket->Subject)
@@ -16,9 +18,9 @@ msgstr ""
 #. ($link->BaseObj->Id, $link->BaseObj->Subject)
 #. ($TicketObj->Id, $TicketObj->Subject)
 msgid "#%1: %2"
 #. ($link->BaseObj->Id, $link->BaseObj->Subject)
 #. ($TicketObj->Id, $TicketObj->Subject)
 msgid "#%1: %2"
-msgstr "n°%1: %2"
+msgstr "n°%1 : %2"
 
 
-#: lib/RT/Record.pm:927
+#: lib/RT/Record.pm:934
 #. ($label)
 msgid "$prefix %1"
 msgstr "$prefix %1"
 #. ($label)
 msgid "$prefix %1"
 msgstr "$prefix %1"
@@ -38,7 +40,7 @@ msgstr "%1 %2"
 msgid "%1 %2 %3 %4:%5:%6 %7"
 msgstr "%1 %2 %3 %4:%5:%6 %7"
 
 msgid "%1 %2 %3 %4:%5:%6 %7"
 msgstr "%1 %2 %3 %4:%5:%6 %7"
 
-#: lib/RT/Record.pm:1672 lib/RT/Transaction_Overlay.pm:636 lib/RT/Transaction_Overlay.pm:679
+#: lib/RT/Record.pm:1678 lib/RT/Transaction_Overlay.pm:636 lib/RT/Transaction_Overlay.pm:679
 #. ($cf->Name, $new_value->Content)
 #. ($field, $self->NewValue)
 #. ($self->Field, $principal->Object->Name)
 #. ($cf->Name, $new_value->Content)
 #. ($field, $self->NewValue)
 #. ($self->Field, $principal->Object->Name)
@@ -50,13 +52,13 @@ msgstr "%1 %2 ajouté"
 msgid "%1 %2 ago"
 msgstr "il y a %1 %2"
 
 msgid "%1 %2 ago"
 msgstr "il y a %1 %2"
 
-#: lib/RT/Record.pm:1679 lib/RT/Transaction_Overlay.pm:643
+#: lib/RT/Record.pm:1685 lib/RT/Transaction_Overlay.pm:643
 #. ($cf->Name, $old_content,                $new_value->Content)
 #. ($field, $self->OldValue, $self->NewValue)
 msgid "%1 %2 changed to %3"
 msgstr "%1 %2 changé en %3"
 
 #. ($cf->Name, $old_content,                $new_value->Content)
 #. ($field, $self->OldValue, $self->NewValue)
 msgid "%1 %2 changed to %3"
 msgstr "%1 %2 changé en %3"
 
-#: lib/RT/Record.pm:1676 lib/RT/Transaction_Overlay.pm:639 lib/RT/Transaction_Overlay.pm:685
+#: lib/RT/Record.pm:1682 lib/RT/Transaction_Overlay.pm:639 lib/RT/Transaction_Overlay.pm:685
 #. ($cf->Name, $old_value->Content)
 #. ($field, $self->OldValue)
 #. ($self->Field, $principal->Object->Name)
 #. ($cf->Name, $old_value->Content)
 #. ($field, $self->OldValue)
 #. ($self->Field, $principal->Object->Name)
@@ -118,7 +120,7 @@ msgstr "%1 RT %2 Copyright 1996-%3 %4."
 msgid "%1 ScripAction loaded"
 msgstr "ScripAction %1 chargée"
 
 msgid "%1 ScripAction loaded"
 msgstr "ScripAction %1 chargée"
 
-#: lib/RT/Record.pm:1709
+#: lib/RT/Record.pm:1715
 #. ($args{'Value'}, $cf->Name)
 msgid "%1 added as a value for %2"
 msgstr "%1 ajouté(e) comme valeur de %2"
 #. ($args{'Value'}, $cf->Name)
 msgid "%1 added as a value for %2"
 msgstr "%1 ajouté(e) comme valeur de %2"
@@ -147,9 +149,9 @@ msgstr "%1 changé(e) de %2 à %3"
 msgid "%1 copy"
 msgstr "%1 copie"
 
 msgid "%1 copy"
 msgstr "%1 copie"
 
-#: lib/RT/Record.pm:931
+#: lib/RT/Record.pm:938
 msgid "%1 could not be set to %2."
 msgid "%1 could not be set to %2."
-msgstr "%1 n'a pas pu être positionné à %2"
+msgstr "%1 n'a pas pu être positionné à %2."
 
 #: lib/RT/Ticket_Overlay.pm:2751
 #. ($self)
 
 #: lib/RT/Ticket_Overlay.pm:2751
 #. ($self)
@@ -226,12 +228,12 @@ msgstr "Recherches sauvées de %1"
 #: lib/RT/Transaction_Overlay.pm:470
 #. ($self)
 msgid "%1: no attachment specified"
 #: lib/RT/Transaction_Overlay.pm:470
 #. ($self)
 msgid "%1: no attachment specified"
-msgstr "%1: pas d'attachement spécifié"
+msgstr "%1 : pas d'attachement spécifié"
 
 #: html/Ticket/Elements/ShowTransactionAttachments:78
 #. ($size)
 msgid "%1b"
 
 #: html/Ticket/Elements/ShowTransactionAttachments:78
 #. ($size)
 msgid "%1b"
-msgstr "%1b"
+msgstr "%1o"
 
 #: html/Ticket/Elements/ShowTransactionAttachments:75
 #. (int( $size / 102.4 ) / 10)
 
 #: html/Ticket/Elements/ShowTransactionAttachments:75
 #. (int( $size / 102.4 ) / 10)
@@ -303,7 +305,7 @@ msgstr "(Transmettre une copie de cette mise à jour à une liste d'adresses ema
 
 #: html/Admin/Elements/EditScrip:102
 msgid "(Use these fields when you choose 'User Defined' for a condition or action)"
 
 #: html/Admin/Elements/EditScrip:102
 msgid "(Use these fields when you choose 'User Defined' for a condition or action)"
-msgstr "(Utilisez ces champs lorsque vous sélectionnez 'User Defined' pour une condition ou une action)"
+msgstr "(Utilisez ces champs lorsque vous sélectionnez « Défini par l'utilisateur » pour une condition ou une action)"
 
 #: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54
 msgid "(empty)"
 
 #: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54
 msgid "(empty)"
@@ -313,7 +315,7 @@ msgstr "(vide)"
 msgid "(no name listed)"
 msgstr "(aucun nom)"
 
 msgid "(no name listed)"
 msgstr "(aucun nom)"
 
-#: html/Admin/Elements/SelectRights:72 html/Elements/EditCustomFieldSelect:60 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:65 lib/RT/I18N/fr.po.orig:146 lib/RT/Transaction_Overlay.pm:580
+#: html/Admin/Elements/SelectRights:72 html/Elements/EditCustomFieldSelect:61 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:65 lib/RT/I18N/fr.po.mine:143 lib/RT/I18N/fr.po.orig:146 lib/RT/I18N/fr.po.r3834:141 lib/RT/I18N/fr.po.r3942:142 lib/RT/I18N/ru.po.orig:236 lib/RT/Transaction_Overlay.pm:580
 msgid "(no value)"
 msgstr "(sans information)"
 
 msgid "(no value)"
 msgstr "(sans information)"
 
@@ -325,11 +327,11 @@ msgstr "(aucune valeur)"
 msgid "(only one ticket)"
 msgstr "(un seul ticket)"
 
 msgid "(only one ticket)"
 msgstr "(un seul ticket)"
 
-#: html/Elements/RT__Ticket/ColumnMap:146
+#: html/Elements/RT__Ticket/ColumnMap:147
 msgid "(pending approval)"
 msgstr "(en attente d'approbation)"
 
 msgid "(pending approval)"
 msgstr "(en attente d'approbation)"
 
-#: html/Elements/RT__Ticket/ColumnMap:149
+#: html/Elements/RT__Ticket/ColumnMap:150
 msgid "(pending other Collection)"
 msgstr "(en attente d'autres Collection)"
 
 msgid "(pending other Collection)"
 msgstr "(en attente d'autres Collection)"
 
@@ -578,17 +580,17 @@ msgstr "Approbations"
 #. ($ticket->id, $msg)
 #. ($link->BaseObj->Id, $link->BaseObj->Subject)
 msgid "Approval #%1: %2"
 #. ($ticket->id, $msg)
 #. ($link->BaseObj->Id, $link->BaseObj->Subject)
 msgid "Approval #%1: %2"
-msgstr "Approbation n°%1: %2"
+msgstr "Approbation n°%1 : %2"
 
 #: html/Approvals/index.html:75
 #. ($ticket->Id)
 msgid "Approval #%1: Notes not recorded due to a system error"
 
 #: html/Approvals/index.html:75
 #. ($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"
+msgstr "Approbation n°%1 : Notes non enregistrées en raison d'une erreur système"
 
 #: html/Approvals/index.html:73
 #. ($ticket->Id)
 msgid "Approval #%1: Notes recorded"
 
 #: html/Approvals/index.html:73
 #. ($ticket->Id)
 msgid "Approval #%1: Notes recorded"
-msgstr "Approbation n°%1: Notes non enregistrées"
+msgstr "Approbation n°%1 : Notes non enregistrées"
 
 #: etc/initialdata:351
 msgid "Approval Passed"
 
 #: etc/initialdata:351
 msgid "Approval Passed"
@@ -604,7 +606,7 @@ msgstr "Approuver"
 
 #: etc/initialdata:504
 msgid "Approver's notes: %1"
 
 #: etc/initialdata:504
 msgid "Approver's notes: %1"
-msgstr "Notes de l'approbateur : %1"
+msgstr "Notes de l'approbateur : %1"
 
 #: lib/RT/Date.pm:440
 msgid "Apr."
 
 #: lib/RT/Date.pm:440
 msgid "Apr."
@@ -643,7 +645,7 @@ msgstr "Attachement '%1' ne peut pas être chargé"
 msgid "Attachment created"
 msgstr "Attachement créé"
 
 msgid "Attachment created"
 msgstr "Attachement créé"
 
-#: lib/RT/Tickets_Overlay.pm:1702
+#: lib/RT/Tickets_Overlay.pm:1773
 msgid "Attachment filename"
 msgstr "Nom de fichier de l'attachement"
 
 msgid "Attachment filename"
 msgstr "Nom de fichier de l'attachement"
 
@@ -724,7 +726,7 @@ msgstr "Impossible d'ajouter une valeur de champ personnalisé sans un nom"
 msgid "Can't find a collection class for '%1'"
 msgstr "Impossible de trouver une collection pour la classe '%1'"
 
 msgid "Can't find a collection class for '%1'"
 msgstr "Impossible de trouver une collection pour la classe '%1'"
 
-#: html/Search/Build.html:761
+#: html/Search/Build.html:756
 msgid "Can't find a saved search to work with"
 msgstr "Impossible de trouver une recherche sauvée et de l'utiliser"
 
 msgid "Can't find a saved search to work with"
 msgstr "Impossible de trouver une recherche sauvée et de l'utiliser"
 
@@ -732,18 +734,18 @@ msgstr "Impossible de trouver une recherche sauvée et de l'utiliser"
 msgid "Can't link a ticket to itself"
 msgstr "Un ticket ne peut être lié à lui même"
 
 msgid "Can't link a ticket to itself"
 msgstr "Un ticket ne peut être lié à lui même"
 
-#: html/Search/Build.html:766
+#: html/Search/Build.html:761
 msgid "Can't save this search"
 msgstr "Impossible de sauver cette recherche"
 
 msgid "Can't save this search"
 msgstr "Impossible de sauver cette recherche"
 
-#: lib/RT/Record.pm:1267 lib/RT/Record.pm:1345
+#: lib/RT/Record.pm:1274 lib/RT/Record.pm:1352
 msgid "Can't specifiy both base and target"
 msgstr "Impossible de spécifier à la fois la base et la cible"
 
 #: html/autohandler:148
 #. ($msg)
 msgid "Cannot create user: %1"
 msgid "Can't specifiy both base and target"
 msgstr "Impossible de spécifier à la fois la base et la cible"
 
 #: html/autohandler:148
 #. ($msg)
 msgid "Cannot create user: %1"
-msgstr "Impossible de créer l'utilisateur: %1"
+msgstr "Impossible de créer l'utilisateur : %1"
 
 #: etc/initialdata:50 html/Admin/Queues/People.html:65 html/SelfService/Create.html:71 html/Ticket/Create.html:85 html/Ticket/Elements/EditPeople:72 html/Ticket/Elements/ShowPeople:56 html/Ticket/Update.html:81 lib/RT/ACE_Overlay.pm:113
 msgid "Cc"
 
 #: etc/initialdata:50 html/Admin/Queues/People.html:65 html/SelfService/Create.html:71 html/Ticket/Create.html:85 html/Ticket/Elements/EditPeople:72 html/Ticket/Elements/ShowPeople:56 html/Ticket/Update.html:81 lib/RT/ACE_Overlay.pm:113
 msgid "Cc"
@@ -861,11 +863,11 @@ msgstr "Courrier"
 msgid "Correspondence added"
 msgstr "Courrier ajouté"
 
 msgid "Correspondence added"
 msgstr "Courrier ajouté"
 
-#: lib/RT/Record.pm:1694
+#: lib/RT/Record.pm:1700
 msgid "Could not add new custom field value. "
 msgstr "Impossible d'ajouter une nouvelle valeur de champ personnalisé. "
 
 msgid "Could not add new custom field value. "
 msgstr "Impossible d'ajouter une nouvelle valeur de champ personnalisé. "
 
-#: lib/RT/Record.pm:1647
+#: lib/RT/Record.pm:1653
 #. (, $value_msg)
 msgid "Could not add new custom field value. %1 "
 msgstr "Impossible d'ajouter une nouvelle valeur de champ personnalisé. %1"
 #. (, $value_msg)
 msgid "Could not add new custom field value. %1 "
 msgstr "Impossible d'ajouter une nouvelle valeur de champ personnalisé. %1"
@@ -882,7 +884,7 @@ msgstr "Impossible de créer le champ personnalisé"
 #: html/Admin/Elements/EditCustomField:113
 #. ($msg)
 msgid "Could not create CustomField: %1"
 #: html/Admin/Elements/EditCustomField:113
 #. ($msg)
 msgid "Could not create CustomField: %1"
-msgstr "Impossible de créer le champ personnalisé : %1"
+msgstr "Impossible de créer le champ personnalisé : %1"
 
 #: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:494 lib/RT/Group_Overlay.pm:501
 msgid "Could not create group"
 
 #: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:494 lib/RT/Group_Overlay.pm:501
 msgid "Could not create group"
@@ -891,7 +893,7 @@ msgstr "Impossible de créer un groupe"
 #: html/Admin/Global/Template.html:96 html/Admin/Queues/Template.html:93
 #. ($msg)
 msgid "Could not create template: %1"
 #: html/Admin/Global/Template.html:96 html/Admin/Queues/Template.html:93
 #. ($msg)
 msgid "Could not create template: %1"
-msgstr "Impossible de créer le modèle : %1"
+msgstr "Impossible de créer le modèle : %1"
 
 #: lib/RT/Ticket_Overlay.pm:1051 lib/RT/Ticket_Overlay.pm:396
 msgid "Could not create ticket. Queue not set"
 
 #: lib/RT/Ticket_Overlay.pm:1051 lib/RT/Ticket_Overlay.pm:396
 msgid "Could not create ticket. Queue not set"
@@ -949,12 +951,12 @@ msgstr "Impossible de sauver les informations utilisateur"
 msgid "Couldn't add member to group"
 msgstr "Impossible d'ajouter un membre à ce groupe"
 
 msgid "Couldn't add member to group"
 msgstr "Impossible d'ajouter un membre à ce groupe"
 
-#: lib/RT/Record.pm:1706 lib/RT/Record.pm:1758
+#: lib/RT/Record.pm:1712 lib/RT/Record.pm:1764
 #. ($Msg)
 msgid "Couldn't create a transaction: %1"
 #. ($Msg)
 msgid "Couldn't create a transaction: %1"
-msgstr "Impossible de créer une transaction : %1"
+msgstr "Impossible de créer une transaction : %1"
 
 
-#: lib/RT/Record.pm:940
+#: lib/RT/Record.pm:947
 msgid "Couldn't find row"
 msgstr "Colonne introuvable"
 
 msgid "Couldn't find row"
 msgstr "Colonne introuvable"
 
@@ -1164,17 +1166,17 @@ msgstr "Programme de préparation d'action personnalisé "
 msgid "Custom condition"
 msgstr "Condition personnalisée"
 
 msgid "Custom condition"
 msgstr "Condition personnalisée"
 
-#: lib/RT/Tickets_Overlay.pm:2176
+#: lib/RT/Tickets_Overlay.pm:2244
 #. ($CF->Name)
 msgid "Custom field %1 has a value."
 msgstr "Le champ personnalisé %1 a une valeur."
 
 #. ($CF->Name)
 msgid "Custom field %1 has a value."
 msgstr "Le champ personnalisé %1 a une valeur."
 
-#: lib/RT/Tickets_Overlay.pm:2172
+#: lib/RT/Tickets_Overlay.pm:2240
 #. ($CF->Name)
 msgid "Custom field %1 has no value."
 msgstr "Le champ personnalisé %1 n'a pas de valeur."
 
 #. ($CF->Name)
 msgid "Custom field %1 has no value."
 msgstr "Le champ personnalisé %1 n'a pas de valeur."
 
-#: lib/RT/Record.pm:1580 lib/RT/Record.pm:1741
+#: lib/RT/Record.pm:1586 lib/RT/Record.pm:1747
 #. ($args{'Field'})
 msgid "Custom field %1 not found"
 msgstr "Le champ personnalisé %1 est introuvable"
 #. ($args{'Field'})
 msgid "Custom field %1 not found"
 msgstr "Le champ personnalisé %1 est introuvable"
@@ -1263,7 +1265,7 @@ msgstr "Détruire le modèle"
 #: lib/RT/SavedSearch.pm:211
 #. ($msg)
 msgid "Delete failed: %1"
 #: lib/RT/SavedSearch.pm:211
 #. ($msg)
 msgid "Delete failed: %1"
-msgstr "Échec de la destruction : %1"
+msgstr "Échec de la destruction : %1"
 
 #: html/Admin/Elements/EditScrips:74
 msgid "Delete selected scrips"
 
 #: html/Admin/Elements/EditScrips:74
 msgid "Delete selected scrips"
@@ -1451,7 +1453,7 @@ msgstr "Modifier les membres du groupe %1"
 msgid "Editing membership for personal group %1"
 msgstr "Modifier les membres du groupe personnel %1"
 
 msgid "Editing membership for personal group %1"
 msgstr "Modifier les membres du groupe personnel %1"
 
-#: lib/RT/Record.pm:1282 lib/RT/Record.pm:1359
+#: lib/RT/Record.pm:1289 lib/RT/Record.pm:1366
 msgid "Either base or target must be specified"
 msgstr "La base ou la cible doivent être spécifiées"
 
 msgid "Either base or target must be specified"
 msgstr "La base ou la cible doivent être spécifiées"
 
@@ -1487,7 +1489,7 @@ msgstr "État %1 activé"
 #: html/Admin/CustomFields/Modify.html:143 html/Admin/Queues/Modify.html:162
 #. (loc_fuzzy($msg))
 msgid "Enabled status: %1"
 #: html/Admin/CustomFields/Modify.html:143 html/Admin/Queues/Modify.html:162
 #. (loc_fuzzy($msg))
 msgid "Enabled status: %1"
-msgstr "État actif : %1"
+msgstr "État actif : %1"
 
 #: lib/RT/CustomField_Overlay.pm:64
 msgid "Enter multiple values"
 
 #: lib/RT/CustomField_Overlay.pm:64
 msgid "Enter multiple values"
@@ -1547,7 +1549,7 @@ msgstr "Tout le monde"
 
 #: bin/rt-crontool:219
 msgid "Example:"
 
 #: bin/rt-crontool:219
 msgid "Example:"
-msgstr "Exemple :"
+msgstr "Exemple : "
 
 #: html/Admin/Users/Modify.html:99
 msgid "Extra info"
 
 #: html/Admin/Users/Modify.html:99
 msgid "Extra info"
@@ -1607,7 +1609,7 @@ msgstr "Saisir au plus %1 champs de type texte"
 msgid "Fill in up to %1 wikitext areas"
 msgstr "Saisir au plus %1 champs de type wiki"
 
 msgid "Fill in up to %1 wikitext areas"
 msgstr "Saisir au plus %1 champs de type wiki"
 
-#: html/Search/Elements/PickBasics:162 html/Ticket/Create.html:185 html/Ticket/Elements/EditBasics:79 lib/RT/Tickets_Overlay.pm:1598
+#: html/Search/Elements/PickBasics:162 html/Ticket/Create.html:185 html/Ticket/Elements/EditBasics:79 lib/RT/Tickets_Overlay.pm:1669
 msgid "Final Priority"
 msgstr "Priorité finale"
 
 msgid "Final Priority"
 msgstr "Priorité finale"
 
@@ -1637,7 +1639,7 @@ msgstr "Foo Bar Baz"
 
 #: docs/design_docs/string-extraction-guide.txt:24 lib/RT/StyleGuide.pod:757
 msgid "Foo!"
 
 #: docs/design_docs/string-extraction-guide.txt:24 lib/RT/StyleGuide.pod:757
 msgid "Foo!"
-msgstr "Foo !"
+msgstr "Foo ! "
 
 #: html/Search/Bulk.html:105
 msgid "Force change"
 
 #: html/Search/Bulk.html:105
 msgid "Force change"
@@ -1652,7 +1654,7 @@ msgstr "Format"
 msgid "Found %quant(%1,ticket)"
 msgstr "%quant(%1,ticket) trouvés"
 
 msgid "Found %quant(%1,ticket)"
 msgstr "%quant(%1,ticket) trouvés"
 
-#: lib/RT/Record.pm:943
+#: lib/RT/Record.pm:950
 msgid "Found Object"
 msgstr "Objet trouvé"
 
 msgid "Found Object"
 msgstr "Objet trouvé"
 
@@ -1666,7 +1668,7 @@ msgstr "En-têtes complets"
 
 #: html/Tools/Offline.html:87
 msgid "Get template from file"
 
 #: html/Tools/Offline.html:87
 msgid "Get template from file"
-msgstr "Obtenir le modèle àpartir d'un fichier"
+msgstr "Obtenir le modèle à partir d'un fichier"
 
 #: lib/RT/Transaction_Overlay.pm:673
 #. ($New->Name)
 
 #: lib/RT/Transaction_Overlay.pm:673
 #. ($New->Name)
@@ -1688,7 +1690,7 @@ msgstr "Configuration globale des champs personnalisés"
 #: html/Admin/Elements/SelectTemplate:59
 #. (loc($Template->Name))
 msgid "Global template: %1"
 #: html/Admin/Elements/SelectTemplate:59
 #. (loc($Template->Name))
 msgid "Global template: %1"
-msgstr "Modèle global : %1"
+msgstr "Modèle global :  %1"
 
 #: html/Tools/Offline.html:91
 msgid "Go"
 
 #: html/Tools/Offline.html:91
 msgid "Go"
@@ -1696,7 +1698,7 @@ msgstr "Lancer"
 
 #: html/Admin/Groups/index.html:67 html/Admin/Groups/index.html:73 html/Admin/Queues/People.html:80 html/Admin/Queues/People.html:84 html/Admin/Queues/index.html:66 html/Admin/Users/index.html:73 html/Search/Results.html:76 html/Ticket/Elements/EditPeople:53 html/Ticket/Elements/EditPeople:57 html/index.html:91
 msgid "Go!"
 
 #: html/Admin/Groups/index.html:67 html/Admin/Groups/index.html:73 html/Admin/Queues/People.html:80 html/Admin/Queues/People.html:84 html/Admin/Queues/index.html:66 html/Admin/Users/index.html:73 html/Search/Results.html:76 html/Ticket/Elements/EditPeople:53 html/Ticket/Elements/EditPeople:57 html/index.html:91
 msgid "Go!"
-msgstr "Lancer !"
+msgstr "Lancer !"
 
 #: html/Elements/GotoTicket:46 html/SelfService/Elements/GotoTicket:46
 msgid "Goto ticket"
 
 #: html/Elements/GotoTicket:46 html/SelfService/Elements/GotoTicket:46
 msgid "Goto ticket"
@@ -1749,7 +1751,7 @@ msgstr "Cette utilisateur appartient aux groupes"
 
 #: lib/RT/Interface/CLI.pm:94 lib/RT/Interface/CLI.pm:94
 msgid "Hello!"
 
 #: lib/RT/Interface/CLI.pm:94 lib/RT/Interface/CLI.pm:94
 msgid "Hello!"
-msgstr "Bonjour !"
+msgstr "Bonjour !"
 
 #: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:773
 #. ($name)
 
 #: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:773
 #. ($name)
@@ -1779,11 +1781,11 @@ msgstr "Page d'accueil"
 msgid "I have %quant(%1,concrete mixer)."
 msgstr "J'ai %quant(%1, toupie à béton)."
 
 msgid "I have %quant(%1,concrete mixer)."
 msgstr "J'ai %quant(%1, toupie à béton)."
 
-#: html/Search/Build.html:637
+#: html/Search/Build.html:416
 msgid "I'm lost"
 msgstr "Je suis perdu"
 
 msgid "I'm lost"
 msgstr "Je suis perdu"
 
-#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1523
+#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1594
 msgid "Id"
 msgstr "Identifiant"
 
 msgid "Id"
 msgstr "Identifiant"
 
@@ -1811,11 +1813,11 @@ msgstr "Si cet outil était setgid, un utilisateur local mal intentionné pourra
 msgid "If you've updated anything above, be sure to"
 msgstr "Si vous avez fait une modification, assurez vous de"
 
 msgid "If you've updated anything above, be sure to"
 msgstr "Si vous avez fait une modification, assurez vous de"
 
-#: lib/RT/Record.pm:934
+#: lib/RT/Record.pm:941
 msgid "Illegal value for %1"
 msgstr "Valeur incorrecte pour %1"
 
 msgid "Illegal value for %1"
 msgstr "Valeur incorrecte pour %1"
 
-#: lib/RT/Record.pm:937
+#: lib/RT/Record.pm:944
 msgid "Immutable field"
 msgstr "Champ non modifiable"
 
 msgid "Immutable field"
 msgstr "Champ non modifiable"
 
@@ -1831,15 +1833,15 @@ msgstr "Afficher les files inactives."
 msgid "Include disabled users in search."
 msgstr "Inclure les utilisateurs désactivés dans le résultat."
 
 msgid "Include disabled users in search."
 msgstr "Inclure les utilisateurs désactivés dans le résultat."
 
-#: html/Search/Build.html:663
+#: html/Search/Build.html:442
 msgid "Incomplete Query"
 msgstr "Requête incomplète"
 
 msgid "Incomplete Query"
 msgstr "Requête incomplète"
 
-#: html/Search/Build.html:660
+#: html/Search/Build.html:439
 msgid "Incomplete query"
 msgstr "Requête incomplète"
 
 msgid "Incomplete query"
 msgstr "Requête incomplète"
 
-#: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1573
+#: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1644
 msgid "Initial Priority"
 msgstr "Priorité initiale"
 
 msgid "Initial Priority"
 msgstr "Priorité initiale"
 
@@ -1858,7 +1860,7 @@ msgstr "Erreur interne"
 #: lib/RT/Record.pm:305
 #. ($id->{error_message})
 msgid "Internal Error: %1"
 #: lib/RT/Record.pm:305
 #. ($id->{error_message})
 msgid "Internal Error: %1"
-msgstr "Erreur interne : %1"
+msgstr "Erreur interne : %1"
 
 #: lib/RT/Group_Overlay.pm:668
 msgid "Invalid Group Type"
 
 #: lib/RT/Group_Overlay.pm:668
 msgid "Invalid Group Type"
@@ -1868,7 +1870,7 @@ msgstr "Type de groupe invalide"
 msgid "Invalid Right"
 msgstr "Droit invalide"
 
 msgid "Invalid Right"
 msgstr "Droit invalide"
 
-#: lib/RT/Record.pm:939
+#: lib/RT/Record.pm:946
 msgid "Invalid data"
 msgstr "Données invalides"
 
 msgid "Invalid data"
 msgstr "Données invalides"
 
@@ -1885,7 +1887,7 @@ msgstr "Droit invalide"
 msgid "Invalid value for %1"
 msgstr "File invalide pour %1"
 
 msgid "Invalid value for %1"
 msgstr "File invalide pour %1"
 
-#: lib/RT/Record.pm:1598
+#: lib/RT/Record.pm:1604
 msgid "Invalid value for custom field"
 msgstr "Valeur incorrecte pour le champ personnalisé"
 
 msgid "Invalid value for custom field"
 msgstr "Valeur incorrecte pour le champ personnalisé"
 
@@ -1903,7 +1905,7 @@ msgstr "Il est suggéré de créer un utilisateur Unix non privilégié apparten
 
 #: bin/rt-crontool:188
 msgid "It takes several arguments:"
 
 #: bin/rt-crontool:188
 msgid "It takes several arguments:"
-msgstr "Il faut plusieurs paramètres :"
+msgstr "Il faut plusieurs paramètres : "
 
 #: html/Search/Elements/EditFormat:85
 msgid "Italic"
 
 #: html/Search/Elements/EditFormat:85
 msgid "Italic"
@@ -1973,25 +1975,25 @@ msgstr "Autoriser cet utilisateur à recevoir des droits"
 msgid "Link"
 msgstr "Relation"
 
 msgid "Link"
 msgstr "Relation"
 
-#: lib/RT/Record.pm:1293
+#: lib/RT/Record.pm:1300
 msgid "Link already exists"
 msgstr "Le lien existe déja"
 
 msgid "Link already exists"
 msgstr "Le lien existe déja"
 
-#: lib/RT/Record.pm:1307
+#: lib/RT/Record.pm:1314
 msgid "Link could not be created"
 msgstr "Le lien ne peut être ajouté"
 
 msgid "Link could not be created"
 msgstr "Le lien ne peut être ajouté"
 
-#: lib/RT/Record.pm:1313
+#: lib/RT/Record.pm:1320
 #. ($TransString)
 msgid "Link created (%1)"
 msgstr "Le lien est ajouté (%1)"
 
 #. ($TransString)
 msgid "Link created (%1)"
 msgstr "Le lien est ajouté (%1)"
 
-#: lib/RT/Record.pm:1374
+#: lib/RT/Record.pm:1381
 #. ($TransString)
 msgid "Link deleted (%1)"
 msgstr "Le lien est effacé (%1)"
 
 #. ($TransString)
 msgid "Link deleted (%1)"
 msgstr "Le lien est effacé (%1)"
 
-#: lib/RT/Record.pm:1380
+#: lib/RT/Record.pm:1387
 msgid "Link not found"
 msgstr "Lien introuvable"
 
 msgid "Link not found"
 msgstr "Lien introuvable"
 
@@ -2010,7 +2012,7 @@ msgstr "Charger"
 
 #: html/Search/Elements/EditSearches:74
 msgid "Load saved search:"
 
 #: html/Search/Elements/EditSearches:74
 msgid "Load saved search:"
-msgstr "Charger les recherches sauvées :"
+msgstr "Charger les recherches sauvées :"
 
 #: lib/RT/System.pm:87
 msgid "LoadSavedSearch"
 
 #: lib/RT/System.pm:87
 msgid "LoadSavedSearch"
@@ -2209,13 +2211,13 @@ msgstr "Message sauvegardé"
 msgid "Messages about this ticket will not be sent to..."
 msgstr "Les messages relatifs à ce ticket ne seront pas envoyés à..."
 
 msgid "Messages about this ticket will not be sent to..."
 msgstr "Les messages relatifs à ce ticket ne seront pas envoyés à..."
 
-#: html/Search/Build.html:667
+#: html/Search/Build.html:446
 msgid "Mismatched parentheses"
 msgstr "Parenthèses non correspondantes"
 
 msgid "Mismatched parentheses"
 msgstr "Parenthèses non correspondantes"
 
-#: lib/RT/Record.pm:941
+#: lib/RT/Record.pm:948
 msgid "Missing a primary key?: %1"
 msgid "Missing a primary key?: %1"
-msgstr "Clé primaire manquante ? : %1"
+msgstr "Clé primaire manquante ? : %1"
 
 #: html/Admin/Users/Modify.html:193 html/User/Prefs.html:93
 msgid "Mobile"
 
 #: html/Admin/Users/Modify.html:193 html/User/Prefs.html:93
 msgid "Mobile"
@@ -2590,7 +2592,7 @@ msgstr "Aucun champ personnalisé défini"
 msgid "No Group defined"
 msgstr "Aucun groupe défini"
 
 msgid "No Group defined"
 msgstr "Aucun groupe défini"
 
-#: lib/RT/Tickets_Overlay_SQL.pm:477
+#: lib/RT/Tickets_Overlay_SQL.pm:479
 msgid "No Query"
 msgstr "Aucune requête"
 
 msgid "No Query"
 msgstr "Aucune requête"
 
@@ -2610,7 +2612,7 @@ msgstr "Pas de modèle"
 msgid "No action"
 msgstr "Pas d'action"
 
 msgid "No action"
 msgstr "Pas d'action"
 
-#: lib/RT/Record.pm:936
+#: lib/RT/Record.pm:943
 msgid "No column specified"
 msgstr "Aucune colonne spécifiée"
 
 msgid "No column specified"
 msgstr "Aucune colonne spécifiée"
 
@@ -2688,7 +2690,7 @@ msgstr "Pas de recherche chargée"
 msgid "No search to operate on."
 msgstr "Pas de critère de recherche."
 
 msgid "No search to operate on."
 msgstr "Pas de critère de recherche."
 
-#: html/Elements/RT__Ticket/ColumnMap:134
+#: html/Elements/RT__Ticket/ColumnMap:135 html/Search/Results.rdf:78
 msgid "No subject"
 msgstr "Pas de sujet"
 
 msgid "No subject"
 msgstr "Pas de sujet"
 
@@ -2700,17 +2702,17 @@ msgstr "Aucun type de transaction spécifié"
 msgid "No users matching search criteria found."
 msgstr "Aucun utilisateur ne correspond aux critères de recherche."
 
 msgid "No users matching search criteria found."
 msgstr "Aucun utilisateur ne correspond aux critères de recherche."
 
-#: lib/RT/Record.pm:933
+#: lib/RT/Record.pm:940
 msgid "No value sent to _Set!\\n"
 msgid "No value sent to _Set!\\n"
-msgstr "Pas de valeur à positionner !\\n"
+msgstr "Pas de valeur à positionner  \\n"
 
 #: html/Elements/QuickCreate:61
 msgid "Nobody"
 msgstr "Personne"
 
 
 #: html/Elements/QuickCreate:61
 msgid "Nobody"
 msgstr "Personne"
 
-#: lib/RT/Record.pm:938
+#: lib/RT/Record.pm:945
 msgid "Nonexistant field?"
 msgid "Nonexistant field?"
-msgstr "Champ inexistant ?"
+msgstr "Champ inexistant ? "
 
 #: html/Elements/Header:96
 msgid "Not logged in."
 
 #: html/Elements/Header:96
 msgid "Not logged in."
@@ -2927,7 +2929,7 @@ msgstr "Organisation"
 #: html/Approvals/Elements/Approve:54
 #. ($approving->Id, $approving->Subject)
 msgid "Originating ticket: #%1"
 #: html/Approvals/Elements/Approve:54
 #. ($approving->Id, $approving->Subject)
 msgid "Originating ticket: #%1"
-msgstr "Ticket source: n°%1"
+msgstr "Ticket source : n°%1"
 
 #: lib/RT/Transaction_Overlay.pm:611
 msgid "Outgoing email about a comment recorded"
 
 #: lib/RT/Transaction_Overlay.pm:611
 msgid "Outgoing email about a comment recorded"
@@ -2949,7 +2951,7 @@ msgstr "Tickets propres"
 msgid "OwnTicket"
 msgstr "PrendreTicket"
 
 msgid "OwnTicket"
 msgstr "PrendreTicket"
 
-#: etc/initialdata:38 html/Elements/QuickCreate:58 html/Search/Elements/PickBasics:101 html/SelfService/Elements/MyRequests:51 html/Ticket/Create.html:69 html/Ticket/Elements/EditPeople:64 html/Ticket/Elements/EditPeople:65 html/Ticket/Elements/ShowPeople:48 html/Ticket/Update.html:62 lib/RT/ACE_Overlay.pm:111 lib/RT/Tickets_Overlay.pm:1763
+#: etc/initialdata:38 html/Elements/QuickCreate:58 html/Search/Elements/PickBasics:101 html/SelfService/Elements/MyRequests:51 html/Ticket/Create.html:69 html/Ticket/Elements/EditPeople:64 html/Ticket/Elements/EditPeople:65 html/Ticket/Elements/ShowPeople:48 html/Ticket/Update.html:62 lib/RT/ACE_Overlay.pm:111 lib/RT/Tickets_Overlay.pm:1834
 msgid "Owner"
 msgstr "Intervenant"
 
 msgid "Owner"
 msgstr "Intervenant"
 
@@ -2999,11 +3001,11 @@ msgstr "Mot de passe défini"
 #: html/User/Prefs.html:232
 #. (loc_fuzzy($msg))
 msgid "Password: %1"
 #: html/User/Prefs.html:232
 #. (loc_fuzzy($msg))
 msgid "Password: %1"
-msgstr "Mot de passe : %1"
+msgstr "Mot de passe :  %1"
 
 #: lib/RT/User_Overlay.pm:1031
 msgid "Password: Permission Denied"
 
 #: lib/RT/User_Overlay.pm:1031
 msgid "Password: Permission Denied"
-msgstr "Mot de passe : permission refusée"
+msgstr "Mot de passe :  permission refusée"
 
 #: html/Admin/Users/Modify.html:356
 msgid "Passwords do not match."
 
 #: html/Admin/Users/Modify.html:356
 msgid "Passwords do not match."
@@ -3039,7 +3041,7 @@ msgstr "Groupes personnels"
 
 #: html/User/Elements/DelegateRights:58
 msgid "Personal groups:"
 
 #: html/User/Elements/DelegateRights:58
 msgid "Personal groups:"
-msgstr "Groupes personnels:"
+msgstr "Groupes personnels :"
 
 #: html/Admin/Users/Modify.html:180 html/User/Prefs.html:82
 msgid "Phone numbers"
 
 #: html/Admin/Users/Modify.html:180 html/User/Prefs.html:82
 msgid "Phone numbers"
@@ -3066,7 +3068,7 @@ msgstr "Page précédente"
 msgid "Principal %1 not found."
 msgstr "Personne/groupe %1 non trouvé."
 
 msgid "Principal %1 not found."
 msgstr "Personne/groupe %1 non trouvé."
 
-#: html/Search/Elements/PickBasics:160 html/Ticket/Create.html:184 html/Ticket/Elements/EditBasics:74 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1547
+#: html/Search/Elements/PickBasics:160 html/Ticket/Create.html:184 html/Ticket/Elements/EditBasics:74 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1618
 msgid "Priority"
 msgstr "Priorité"
 
 msgid "Priority"
 msgstr "Priorité"
 
@@ -3076,7 +3078,7 @@ msgstr "La priorité débute à "
 
 #: html/Search/Elements/EditSearches:50
 msgid "Privacy:"
 
 #: html/Search/Elements/EditSearches:50
 msgid "Privacy:"
-msgstr "Privé:"
+msgstr "Confidentialité :"
 
 #: etc/initialdata:25
 msgid "Privileged"
 
 #: etc/initialdata:25
 msgid "Privileged"
@@ -3085,7 +3087,7 @@ msgstr "Privilégié"
 #: html/Admin/Users/Modify.html:334 html/User/Prefs.html:223
 #. (loc_fuzzy($msg))
 msgid "Privileged status: %1"
 #: html/Admin/Users/Modify.html:334 html/User/Prefs.html:223
 #. (loc_fuzzy($msg))
 msgid "Privileged status: %1"
-msgstr "Statut privilégiés : %1"
+msgstr "Statut privilégiés :  %1"
 
 #: html/Admin/Users/index.html:102
 msgid "Privileged users"
 
 #: html/Admin/Users/index.html:102
 msgid "Privileged users"
@@ -3103,7 +3105,7 @@ msgstr "Requête"
 msgid "Query Builder"
 msgstr "Constructeur de requête"
 
 msgid "Query Builder"
 msgstr "Constructeur de requête"
 
-#: html/Elements/QuickCreate:55 html/Elements/Quicksearch:50 html/Search/Elements/PickBasics:71 html/SelfService/Create.html:54 html/Ticket/Create.html:59 html/Ticket/Elements/EditBasics:57 html/Ticket/Elements/ShowBasics:76 html/User/Elements/DelegateRights:101 lib/RT/Tickets_Overlay.pm:1374
+#: html/Elements/QuickCreate:55 html/Elements/Quicksearch:50 html/Search/Elements/PickBasics:71 html/SelfService/Create.html:54 html/Ticket/Create.html:59 html/Ticket/Elements/EditBasics:57 html/Ticket/Elements/ShowBasics:76 html/User/Elements/DelegateRights:101 lib/RT/Tickets_Overlay.pm:1445
 msgid "Queue"
 msgstr "File"
 
 msgid "Queue"
 msgstr "File"
 
@@ -3432,7 +3434,7 @@ msgstr "Mise à jour de la recherche %1"
 
 #: bin/rt-crontool:213
 msgid "Security:"
 
 #: bin/rt-crontool:213
 msgid "Security:"
-msgstr "Sécurité :"
+msgstr "Sécurité : "
 
 #: lib/RT/CustomField_Overlay.pm:100
 msgid "See custom fields"
 
 #: lib/RT/CustomField_Overlay.pm:100
 msgid "See custom fields"
@@ -3710,7 +3712,7 @@ msgstr "Débute"
 msgid "State"
 msgstr "Etat"
 
 msgid "State"
 msgstr "Etat"
 
-#: html/Search/Elements/PickBasics:87 html/SelfService/Elements/MyRequests:50 html/SelfService/Update.html:57 html/Ticket/Create.html:63 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:52 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1142 lib/RT/Tickets_Overlay.pm:1407
+#: html/Search/Elements/PickBasics:87 html/SelfService/Elements/MyRequests:50 html/SelfService/Update.html:57 html/Ticket/Create.html:63 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:52 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1142 lib/RT/Tickets_Overlay.pm:1479
 msgid "Status"
 msgstr "Statut"
 
 msgid "Status"
 msgstr "Statut"
 
@@ -3739,7 +3741,7 @@ msgstr "Volé à %1"
 msgid "Style"
 msgstr "Style"
 
 msgid "Style"
 msgstr "Style"
 
-#: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:154 html/SelfService/Create.html:79 html/SelfService/Elements/MyRequests:49 html/SelfService/Update.html:65 html/Ticket/Create.html:105 html/Ticket/Elements/EditBasics:48 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:80 lib/RT/Ticket_Overlay.pm:1138 lib/RT/Tickets_Overlay.pm:1489
+#: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:154 html/SelfService/Create.html:79 html/SelfService/Elements/MyRequests:49 html/SelfService/Update.html:65 html/Ticket/Create.html:105 html/Ticket/Elements/EditBasics:48 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:80 lib/RT/Ticket_Overlay.pm:1138 lib/RT/Tickets_Overlay.pm:1561
 msgid "Subject"
 msgstr "Sujet"
 
 msgid "Subject"
 msgstr "Sujet"
 
@@ -3779,7 +3781,7 @@ msgstr "Erreur système"
 #: lib/RT/Transaction_Overlay.pm:215 lib/RT/Transaction_Overlay.pm:221
 #. ($msg)
 msgid "System Error: %1"
 #: lib/RT/Transaction_Overlay.pm:215 lib/RT/Transaction_Overlay.pm:221
 #. ($msg)
 msgid "System Error: %1"
-msgstr "Erreur système : %1"
+msgstr "Erreur système :  %1"
 
 #: html/Admin/Tools/index.html:47
 msgid "System Tools"
 
 #: html/Admin/Tools/index.html:47
 msgid "System Tools"
@@ -3846,7 +3848,7 @@ msgstr "Modèle analysé"
 msgid "Templates"
 msgstr "Modèles"
 
 msgid "Templates"
 msgstr "Modèles"
 
-#: lib/RT/CustomField_Overlay.pm:877 lib/RT/Record.pm:932
+#: lib/RT/CustomField_Overlay.pm:877 lib/RT/Record.pm:939
 msgid "That is already the current value"
 msgstr "Ceci est déjà la valeur actuelle"
 
 msgid "That is already the current value"
 msgstr "Ceci est déjà la valeur actuelle"
 
@@ -3931,9 +3933,9 @@ msgstr "L'AdminCC d'un ticket"
 
 #: bin/rt-crontool:223
 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:"
 
 #: bin/rt-crontool:223
 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 file 'general' et positionne leur priorité à 99 s'ils n'ont pas été touchés depuis quatre heures:"
+msgstr "Cette commande trouve tous les tickets actifs de la file 'general' et positionne leur priorité à 99 s'ils n'ont pas été touchés depuis quatre heures :"
 
 
-#: lib/RT/Record.pm:935
+#: lib/RT/Record.pm:942
 msgid "The new value has been set."
 msgstr "La nouvelle valeur est enregistrée."
 
 msgid "The new value has been set."
 msgstr "La nouvelle valeur est enregistrée."
 
@@ -3981,12 +3983,12 @@ msgstr "Jeu."
 #: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50
 #. ($Ticket->Id, $Ticket->Subject)
 msgid "Ticket #%1 Jumbo update: %2"
 #: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50
 #. ($Ticket->Id, $Ticket->Subject)
 msgid "Ticket #%1 Jumbo update: %2"
-msgstr "Ticket n°%1 mise à jour globale : %2"
+msgstr "Ticket n°%1 mise à jour globale : %2"
 
 #: html/Approvals/Elements/ShowDependency:67
 #. ($link->BaseObj->Id, $link->BaseObj->Subject)
 msgid "Ticket #%1: %2"
 
 #: html/Approvals/Elements/ShowDependency:67
 #. ($link->BaseObj->Id, $link->BaseObj->Subject)
 msgid "Ticket #%1: %2"
-msgstr "Ticket n°%1: %2"
+msgstr "Ticket n°%1 : %2"
 
 #: lib/RT/Action/CreateTickets.pm:1258 lib/RT/Action/CreateTickets.pm:1267 lib/RT/Action/CreateTickets.pm:595 lib/RT/Action/CreateTickets.pm:716 lib/RT/Action/CreateTickets.pm:729
 #. ($T::Tickets{$template_id}->Id)
 
 #: lib/RT/Action/CreateTickets.pm:1258 lib/RT/Action/CreateTickets.pm:1267 lib/RT/Action/CreateTickets.pm:595 lib/RT/Action/CreateTickets.pm:716 lib/RT/Action/CreateTickets.pm:729
 #. ($T::Tickets{$template_id}->Id)
@@ -4003,7 +4005,7 @@ msgstr "Ticket %1 créé dans la file '%2'"
 #: html/Search/Bulk.html:269
 #. ($Ticket->Id,$_)
 msgid "Ticket %1: %2"
 #: html/Search/Bulk.html:269
 #. ($Ticket->Id,$_)
 msgid "Ticket %1: %2"
-msgstr "Ticket %1 : %2"
+msgstr "Ticket %1 :  %2"
 
 #: html/Admin/Elements/QueueTabs:74
 msgid "Ticket Custom Fields"
 
 #: html/Admin/Elements/QueueTabs:74
 msgid "Ticket Custom Fields"
@@ -4022,11 +4024,11 @@ msgstr "Ticket résolu"
 msgid "Ticket Transactions"
 msgstr "Transactions du ticket"
 
 msgid "Ticket Transactions"
 msgstr "Transactions du ticket"
 
-#: lib/RT/Tickets_Overlay.pm:1677
+#: lib/RT/Tickets_Overlay.pm:1748
 msgid "Ticket content"
 msgstr "Contenu du ticket"
 
 msgid "Ticket content"
 msgstr "Contenu du ticket"
 
-#: lib/RT/Tickets_Overlay.pm:1726
+#: lib/RT/Tickets_Overlay.pm:1797
 msgid "Ticket content type"
 msgstr "Type du contenu du ticket"
 
 msgid "Ticket content type"
 msgstr "Type du contenu du ticket"
 
@@ -4053,7 +4055,7 @@ msgstr "Tickets"
 
 #: html/Approvals/Elements/ShowDependency:48
 msgid "Tickets which depend on this approval:"
 
 #: html/Approvals/Elements/ShowDependency:48
 msgid "Tickets which depend on this approval:"
-msgstr "Tickets dépendant de cette approbation:"
+msgstr "Tickets dépendant de cette approbation :"
 
 #: html/Search/Elements/PickBasics:148 html/Ticket/Elements/EditBasics:61
 msgid "Time Estimated"
 
 #: html/Search/Elements/PickBasics:148 html/Ticket/Elements/EditBasics:61
 msgid "Time Estimated"
@@ -4067,7 +4069,7 @@ msgstr "Temps restant"
 msgid "Time Worked"
 msgstr "Temps passé"
 
 msgid "Time Worked"
 msgstr "Temps passé"
 
-#: lib/RT/Tickets_Overlay.pm:1648
+#: lib/RT/Tickets_Overlay.pm:1719
 msgid "Time left"
 msgstr "Temps restant"
 
 msgid "Time left"
 msgstr "Temps restant"
 
@@ -4075,7 +4077,7 @@ msgstr "Temps restant"
 msgid "Time to display"
 msgstr "Temps de calcul"
 
 msgid "Time to display"
 msgstr "Temps de calcul"
 
-#: lib/RT/Tickets_Overlay.pm:1623
+#: lib/RT/Tickets_Overlay.pm:1694
 msgid "Time worked"
 msgstr "Temps passé"
 
 msgid "Time worked"
 msgstr "Temps passé"
 
@@ -4129,7 +4131,7 @@ msgstr "Les transactions ne peuvent être transférées"
 msgid "Tue."
 msgstr "Mar."
 
 msgid "Tue."
 msgstr "Mar."
 
-#: html/Admin/CustomFields/Modify.html:66 html/Admin/Elements/EditCustomField:65 html/Ticket/Elements/AddWatchers:54 html/Ticket/Elements/AddWatchers:65 html/Ticket/Elements/AddWatchers:75 lib/RT/Ticket_Overlay.pm:1144 lib/RT/Tickets_Overlay.pm:1461
+#: html/Admin/CustomFields/Modify.html:66 html/Admin/Elements/EditCustomField:65 html/Ticket/Elements/AddWatchers:54 html/Ticket/Elements/AddWatchers:65 html/Ticket/Elements/AddWatchers:75 lib/RT/Ticket_Overlay.pm:1144 lib/RT/Tickets_Overlay.pm:1533
 msgid "Type"
 msgstr "Type"
 
 msgid "Type"
 msgstr "Type"
 
@@ -4141,15 +4143,15 @@ msgstr "Fonction non disponible"
 msgid "Unix login"
 msgstr "Identifiant Unix"
 
 msgid "Unix login"
 msgstr "Identifiant Unix"
 
-#: lib/RT/Attachment_Overlay.pm:290 lib/RT/Record.pm:848
+#: lib/RT/Attachment_Overlay.pm:290 lib/RT/Record.pm:855
 #. ($self->ContentEncoding)
 #. ($ContentEncoding)
 msgid "Unknown ContentEncoding %1"
 #. ($self->ContentEncoding)
 #. ($ContentEncoding)
 msgid "Unknown ContentEncoding %1"
-msgstr "Type d'encodage de courrier inconnu: %1"
+msgstr "Type d'encodage de courrier inconnu : %1"
 
 
-#: html/Search/Build.html:632
+#: html/Search/Build.html:411
 msgid "Unknown field: $key"
 msgid "Unknown field: $key"
-msgstr "Champ inconnu : $key"
+msgstr "Champ inconnu :  $key"
 
 #: html/Elements/SelectResultsPerPage:58
 msgid "Unlimited"
 
 #: html/Elements/SelectResultsPerPage:58
 msgid "Unlimited"
@@ -4197,7 +4199,7 @@ msgstr "Mettre à jour plusieurs tickets"
 
 #: lib/RT/Action/CreateTickets.pm:737 lib/RT/Interface/Web.pm:524
 msgid "Update not recorded."
 
 #: lib/RT/Action/CreateTickets.pm:737 lib/RT/Interface/Web.pm:524
 msgid "Update not recorded."
-msgstr "Mise à jour non enregistrée"
+msgstr "Mise à jour non enregistrée."
 
 #: html/Search/Bulk.html:99
 msgid "Update selected tickets"
 
 #: html/Search/Bulk.html:99
 msgid "Update selected tickets"
@@ -4264,15 +4266,15 @@ msgstr "Utiliser les autres outils d'administration de RT"
 #: lib/RT/Ticket_Overlay.pm:496
 #. ($args{'Owner'})
 msgid "User '%1' could not be found."
 #: lib/RT/Ticket_Overlay.pm:496
 #. ($args{'Owner'})
 msgid "User '%1' could not be found."
-msgstr "L'utilisateur %1 ne peut être trouvé"
+msgstr "L'utilisateur %1 est introuvable."
 
 #: etc/initialdata:132 etc/initialdata:206
 msgid "User Defined"
 
 #: etc/initialdata:132 etc/initialdata:206
 msgid "User Defined"
-msgstr "Utilisateur défini"
+msgstr "Défini par l'utilisateur"
 
 #: html/Admin/Elements/EditScrip:98
 msgid "User Defined conditions and actions"
 
 #: html/Admin/Elements/EditScrip:98
 msgid "User Defined conditions and actions"
-msgstr "Conditions et actions définies par l'usager"
+msgstr "Conditions et actions définies par l'utilisateur"
 
 #: html/Admin/Elements/CustomFieldTabs:72 html/Admin/Elements/GroupTabs:68 html/Admin/Elements/QueueTabs:85 html/Admin/Elements/SystemTabs:68 html/Admin/Global/index.html:80
 msgid "User Rights"
 
 #: html/Admin/Elements/CustomFieldTabs:72 html/Admin/Elements/GroupTabs:68 html/Admin/Elements/QueueTabs:85 html/Admin/Elements/SystemTabs:68 html/Admin/Global/index.html:80
 msgid "User Rights"
@@ -4286,7 +4288,7 @@ msgstr "L'utilisateur a demandé un type de mise à jour non connu pour le champ
 #: html/Admin/Users/Modify.html:293
 #. ($msg)
 msgid "User could not be created: %1"
 #: html/Admin/Users/Modify.html:293
 #. ($msg)
 msgid "User could not be created: %1"
-msgstr "Utilisateur ne peut pas être créé : %1"
+msgstr "L'utilisateur ne peut pas être créé :  %1"
 
 #: lib/RT/User_Overlay.pm:331
 msgid "User created"
 
 #: lib/RT/User_Overlay.pm:331
 msgid "User created"
@@ -4294,7 +4296,7 @@ msgstr "Utilisateur créé"
 
 #: html/Admin/CustomFields/GroupRights.html:74 html/Admin/Global/GroupRights.html:88 html/Admin/Groups/GroupRights.html:75 html/Admin/Queues/GroupRights.html:90
 msgid "User defined groups"
 
 #: html/Admin/CustomFields/GroupRights.html:74 html/Admin/Global/GroupRights.html:88 html/Admin/Groups/GroupRights.html:75 html/Admin/Queues/GroupRights.html:90
 msgid "User defined groups"
-msgstr "Groupes utilisateur"
+msgstr "Groupes définis par l'utilisateur"
 
 #: lib/RT/User_Overlay.pm:593 lib/RT/User_Overlay.pm:613
 msgid "User loaded"
 
 #: lib/RT/User_Overlay.pm:593 lib/RT/User_Overlay.pm:613
 msgid "User loaded"
@@ -4316,7 +4318,7 @@ msgstr "Utilisateurs"
 msgid "Users matching search criteria"
 msgstr "Utilisateurs correspondants aux critères de recherche"
 
 msgid "Users matching search criteria"
 msgstr "Utilisateurs correspondants aux critères de recherche"
 
-#: lib/RT/Tickets_Overlay_SQL.pm:523
+#: lib/RT/Tickets_Overlay_SQL.pm:525
 msgid "Valid Query"
 msgstr "Valider la requête"
 
 msgid "Valid Query"
 msgstr "Valider la requête"
 
@@ -4506,29 +4508,29 @@ msgstr "ne contient pas"
 msgid "equal to"
 msgstr "égal à"
 
 msgid "equal to"
 msgstr "égal à"
 
-#: html/Search/Build.html:387
+#: html/Search/Build.html:578
 msgid "error: can't move down"
 msgid "error: can't move down"
-msgstr "erreur : ne peut aller plus bas"
+msgstr "erreur : ne peut aller plus bas"
 
 
-#: html/Search/Build.html:409
+#: html/Search/Build.html:600
 msgid "error: can't move left"
 msgid "error: can't move left"
-msgstr "erreur : ne peut aller à gauche"
+msgstr "erreur :  ne peut aller à gauche"
 
 
-#: html/Search/Build.html:368
+#: html/Search/Build.html:559
 msgid "error: can't move up"
 msgid "error: can't move up"
-msgstr "erreur : ne peut aller plus haut"
+msgstr "erreur :  ne peut aller plus haut"
 
 
-#: html/Search/Build.html:451
+#: html/Search/Build.html:642
 msgid "error: nothing to delete"
 msgid "error: nothing to delete"
-msgstr "erreur : rien à effacer"
+msgstr "erreur :  rien à effacer"
 
 
-#: html/Search/Build.html:373 html/Search/Build.html:392 html/Search/Build.html:414 html/Search/Build.html:443
+#: html/Search/Build.html:564 html/Search/Build.html:583 html/Search/Build.html:605 html/Search/Build.html:634
 msgid "error: nothing to move"
 msgid "error: nothing to move"
-msgstr "erreur : rien à déplacer"
+msgstr "erreur :  rien à déplacer"
 
 
-#: html/Search/Build.html:469
+#: html/Search/Build.html:660
 msgid "error: nothing to toggle"
 msgid "error: nothing to toggle"
-msgstr "erreur : rien à commuter"
+msgstr "erreur :  rien à commuter"
 
 #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59
 msgid "greater than"
 
 #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59
 msgid "greater than"
@@ -4585,7 +4587,7 @@ msgstr "sans nom"
 
 #: html/Admin/Elements/EditScrips:64
 msgid "no value"
 
 #: html/Admin/Elements/EditScrips:64
 msgid "no value"
-msgstr "Non renseigné"
+msgstr "non renseigné"
 
 #: html/Admin/Elements/EditQueueWatchers:48 html/Ticket/Elements/EditWatchers:49
 msgid "none"
 
 #: html/Admin/Elements/EditQueueWatchers:48 html/Ticket/Elements/EditWatchers:49
 msgid "none"
@@ -4631,7 +4633,7 @@ msgstr "feuille de calcul"
 
 #: lib/RT/Queue_Overlay.pm:85
 msgid "stalled"
 
 #: lib/RT/Queue_Overlay.pm:85
 msgid "stalled"
-msgstr "bloqué"
+msgstr "stagnant"
 
 #: lib/RT/Group_Overlay.pm:222
 #. ($self->Type)
 
 #: lib/RT/Group_Overlay.pm:222
 #. ($self->Type)
@@ -4655,7 +4657,7 @@ msgstr "ticket n°%1 %2"
 #: lib/RT/Group_Overlay.pm:236
 #. ($self->Id)
 msgid "undescribed group %1"
 #: lib/RT/Group_Overlay.pm:236
 #. ($self->Id)
 msgid "undescribed group %1"
-msgstr "Groupe %1 non décrit"
+msgstr "groupe %1 non décrit"
 
 #: lib/RT/Group_Overlay.pm:211
 #. ($user->Object->Name)
 
 #: lib/RT/Group_Overlay.pm:211
 #. ($user->Object->Name)
index b3c5338..f895f35 100644 (file)
@@ -1,7 +1,9 @@
-# Hebrew Translation of the RT interface by Shimi.
-# Comments: shimi@shimi.net
+#
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
+"Project-Id-Version: RT 3.4.x\n"
+"PO-Revision-Date: 2005-10-03 13:47-0400\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
index 8573508..3c199e0 100644 (file)
@@ -1,11 +1,11 @@
+#
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
-"Project-Id-Version: RT 3.0.7\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2002-06-22 06:06+0200\n"
 "POT-Creation-Date: 2002-06-22 06:06+0200\n"
-"PO-Revision-Date: 2003-12-01 11:26+0100\n"
+"PO-Revision-Date: 2005-10-03 13:48-0400\n"
 "Last-Translator: Attila K. Mergl <mergl@astron.hu>\n"
 "Last-Translator: Attila K. Mergl <mergl@astron.hu>\n"
-"Language-Team: Hungarian <hu@gnome.hu>\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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit"
index f532848..b02e15b 100644 (file)
@@ -2,9 +2,9 @@
 #
 msgid ""
 msgstr ""
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: \n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2005-06-03\n"
+"PO-Revision-Date: 2005-10-03 13:48-0400\n"
 "Last-Translator: James <james@actionmessage.com>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
 "Last-Translator: James <james@actionmessage.com>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
index 95d8c18..1f23e18 100644 (file)
@@ -1,8 +1,9 @@
+#
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
-"Project-Id-Version: RT 3.4.1\n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\n"
-"PO-Revision-Date: 2005-02-12 02:00+0800\n"
+"PO-Revision-Date: 2005-10-03 13:48-0400\n"
 "Last-Translator: Angelo Turetta <aturetta@bestunion.it>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
 "Last-Translator: Angelo Turetta <aturetta@bestunion.it>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
index 259f857..880346b 100644 (file)
@@ -1,11 +1,9 @@
-# Japanese translation by Interactive Artists LLC 
-# 0.1 2002 08 15
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
-"Project-Id-Version: RT 2.1.x\n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\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"
+"PO-Revision-Date: 2005-10-20 02:00+0800\n"
+"Last-Translator: Daisuke Maki <daisuke@wafu.ne.jp>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
@@ -178,7 +176,7 @@ msgstr ""
 #. ($self->BriefDescription , $self->CreatorObj->Name)
 #. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name)
 msgid "%1 by %2"
 #. ($self->BriefDescription , $self->CreatorObj->Name)
 #. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name)
 msgid "%1 by %2"
-msgstr "%2による%1"
+msgstr "%1 (%2)"
 
 #: lib/RT/Transaction_Overlay.pm:777 lib/RT/Transaction_Overlay.pm:786 lib/RT/Transaction_Overlay.pm:789
 #. ($self->Field , $q1->Name , $q2->Name)
 
 #: lib/RT/Transaction_Overlay.pm:777 lib/RT/Transaction_Overlay.pm:786 lib/RT/Transaction_Overlay.pm:789
 #. ($self->Field , $q1->Name , $q2->Name)
@@ -198,12 +196,12 @@ msgstr ""
 
 #: NOT FOUND IN SOURCE
 msgid "%1 couldn't init a transaction (%2)\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "%1 couldn't init a transaction (%2)\\n"
-msgstr "%1はトランザクションをはじめることができませんでした(%2)\\n"
+msgstr "%1はトランザクションを開始することができませんでした(%2)\\n"
 
 #: lib/RT/Ticket_Overlay.pm:2743
 #. ($self)
 msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent."
 
 #: lib/RT/Ticket_Overlay.pm:2743
 #. ($self)
 msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent."
-msgstr "%1ã\81¯å\88\86解ã\81\99ã\82\8bã\82¹ã\83\86ã\83¼ã\82¿ã\82¹ã\82\92設定できませんでした。RTのデータベースに一貫性がない可能性があります。"
+msgstr "%1ã\82\92解決ç\8a¶æ\85\8bã\81«設定できませんでした。RTのデータベースに一貫性がない可能性があります。"
 
 #: lib/RT/Transaction_Overlay.pm:560
 #. ($obj_type)
 
 #: lib/RT/Transaction_Overlay.pm:560
 #. ($obj_type)
@@ -218,7 +216,7 @@ msgstr ""
 #: html/Elements/MyTickets:47
 #. ($rows)
 msgid "%1 highest priority tickets I own"
 #: html/Elements/MyTickets:47
 #. ($rows)
 msgid "%1 highest priority tickets I own"
-msgstr ""
+msgstr "優先度の高いチケット%1件"
 
 #: bin/rt-crontool:186
 #. ($0)
 
 #: bin/rt-crontool:186
 #. ($0)
@@ -254,7 +252,7 @@ msgstr "%1分"
 #: html/Elements/MyRequests:47
 #. ($rows)
 msgid "%1 newest unowned tickets"
 #: html/Elements/MyRequests:47
 #. ($rows)
 msgid "%1 newest unowned tickets"
-msgstr ""
+msgstr "担当されていないチケット%1件"
 
 #: NOT FOUND IN SOURCE
 msgid "%1 not shown"
 
 #: NOT FOUND IN SOURCE
 msgid "%1 not shown"
@@ -284,7 +282,7 @@ msgstr "%1タイプは%2では不明です"
 #: lib/RT/Action/ResolveMembers.pm:63
 #. (ref $self)
 msgid "%1 will resolve all members of a resolved group ticket."
 #: lib/RT/Action/ResolveMembers.pm:63
 #. (ref $self)
 msgid "%1 will resolve all members of a resolved group ticket."
-msgstr "%1は分解されたグループチケットのすべてのメンバーを分解します。"
+msgstr "%1はグループチケットのすべてのメンバーを解決状態にします。"
 
 #: NOT FOUND IN SOURCE
 msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request."
 
 #: NOT FOUND IN SOURCE
 msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request."
@@ -307,7 +305,7 @@ msgstr ""
 #: lib/RT/Transaction_Overlay.pm:470
 #. ($self)
 msgid "%1: no attachment specified"
 #: lib/RT/Transaction_Overlay.pm:470
 #. ($self)
 msgid "%1: no attachment specified"
-msgstr "%1:アタッチメントが特定できません"
+msgstr "%1:アタッチメントが指定されていません"
 
 #: html/Ticket/Elements/ShowTransactionAttachments:78
 #. ($size)
 
 #: html/Ticket/Elements/ShowTransactionAttachments:78
 #. ($size)
@@ -436,20 +434,12 @@ msgstr ""
 
 #: html/Admin/Users/Modify.html:71
 msgid "(required)"
 
 #: html/Admin/Users/Modify.html:71
 msgid "(required)"
-msgstr "(必です)"
+msgstr "(必須項目です)"
 
 #: html/Ticket/Elements/ShowTransactionAttachments:82
 msgid "(untitled)"
 msgstr ""
 
 
 #: html/Ticket/Elements/ShowTransactionAttachments:82
 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:53
 msgid "<% $Ticket->Status%>"
 msgstr ""
 #: html/Ticket/Elements/ShowBasics:53
 msgid "<% $Ticket->Status%>"
 msgstr ""
@@ -469,7 +459,7 @@ msgstr ""
 #: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:47 lib/RT/StyleGuide.pod:787
 #. ($m->scomp('/Elements/SelectNewTicketQueue'))
 msgid "<input type=\"submit\" value=\"New ticket in\">&nbsp;%1"
 #: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:47 lib/RT/StyleGuide.pod:787
 #. ($m->scomp('/Elements/SelectNewTicketQueue'))
 msgid "<input type=\"submit\" value=\"New ticket in\">&nbsp;%1"
-msgstr "<input type=\"submit\" value=\"新しいチケット\">&nbsp;%1"
+msgstr "<input type=\"submit\" value=\"新規作成\">&nbsp;%1"
 
 #: etc/initialdata:218
 msgid "A blank template"
 
 #: etc/initialdata:218
 msgid "A blank template"
@@ -546,7 +536,7 @@ msgstr ""
 
 #: html/Search/Bulk.html:106
 msgid "Add Requestor"
 
 #: html/Search/Bulk.html:106
 msgid "Add Requestor"
-msgstr "リクエストする人をを追加する"
+msgstr "作成者をを追加する"
 
 #: html/Admin/Elements/AddCustomFieldValue:46
 msgid "Add Value"
 
 #: html/Admin/Elements/AddCustomFieldValue:46
 msgid "Add Value"
@@ -676,7 +666,7 @@ msgstr "絞込み検索"
 
 #: html/Elements/SelectDateRelation:57
 msgid "After"
 
 #: html/Elements/SelectDateRelation:57
 msgid "After"
-msgstr ""
+msgstr "が以下より後である"
 
 #: html/Search/Elements/PickCriteria:52
 msgid "Aggregator"
 
 #: html/Search/Elements/PickCriteria:52
 msgid "Aggregator"
@@ -745,7 +735,7 @@ msgstr ""
 
 #: lib/RT/Date.pm:440
 msgid "Apr."
 
 #: lib/RT/Date.pm:440
 msgid "Apr."
-msgstr "月"
+msgstr "4月"
 
 #: html/Elements/SelectSortOrder:56 html/Search/Elements/DisplayOptions:73
 msgid "Ascending"
 
 #: html/Elements/SelectSortOrder:56 html/Search/Elements/DisplayOptions:73
 msgid "Ascending"
@@ -794,7 +784,7 @@ msgstr ""
 
 #: lib/RT/Date.pm:444
 msgid "Aug."
 
 #: lib/RT/Date.pm:444
 msgid "Aug."
-msgstr "月"
+msgstr "8月"
 
 #: NOT FOUND IN SOURCE
 msgid "AuthSystem"
 
 #: NOT FOUND IN SOURCE
 msgid "AuthSystem"
@@ -838,7 +828,7 @@ msgstr "本当に変更を保存してもよろしいですか"
 
 #: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:360
 msgid "Before"
 
 #: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:360
 msgid "Before"
-msgstr ""
+msgstr "が以下より前である"
 
 #: html/Elements/Header:80
 msgid "Best Practical Solutions, LLC corporate logo"
 
 #: html/Elements/Header:80
 msgid "Best Practical Solutions, LLC corporate logo"
@@ -903,7 +893,7 @@ msgstr ""
 
 #: lib/RT/Record.pm:1266 lib/RT/Record.pm:1344
 msgid "Can't specifiy both base and target"
 
 #: lib/RT/Record.pm:1266 lib/RT/Record.pm:1344
 msgid "Can't specifiy both base and target"
-msgstr "ベースとターゲットを特定できません"
+msgstr "ベースとターゲット両方を指定する事はできません"
 
 #: html/autohandler:148
 #. ($msg)
 
 #: html/autohandler:148
 #. ($msg)
@@ -931,8 +921,9 @@ msgid "Check box to revoke right"
 msgstr "権利を無効にするチェックボックス"
 
 #: html/Elements/EditLinks:146 html/Elements/EditLinks:85 html/Elements/ShowLinks:78 html/Ticket/Create.html:214 html/Ticket/Elements/BulkLinks:64
 msgstr "権利を無効にするチェックボックス"
 
 #: html/Elements/EditLinks:146 html/Elements/EditLinks:85 html/Elements/ShowLinks:78 html/Ticket/Create.html:214 html/Ticket/Elements/BulkLinks:64
+# XXX - I can't come up with a good translation yet. leave as is in English
 msgid "Children"
 msgid "Children"
-msgstr "子供"
+msgstr ""
 
 #: html/Admin/Users/Modify.html:156 html/User/Prefs.html:141
 msgid "City"
 
 #: html/Admin/Users/Modify.html:156 html/User/Prefs.html:141
 msgid "City"
@@ -944,7 +935,7 @@ msgstr ""
 
 #: html/Ticket/Elements/ShowDates:68
 msgid "Closed"
 
 #: html/Ticket/Elements/ShowDates:68
 msgid "Closed"
-msgstr ""
+msgstr "解決日時"
 
 #: NOT FOUND IN SOURCE
 msgid "Closed requests"
 
 #: NOT FOUND IN SOURCE
 msgid "Closed requests"
@@ -1081,7 +1072,7 @@ msgstr ""
 
 #: lib/RT/Ticket_Overlay.pm:3004 lib/RT/Ticket_Overlay.pm:3012 lib/RT/Ticket_Overlay.pm:3029
 msgid "Could not change owner. "
 
 #: lib/RT/Ticket_Overlay.pm:3004 lib/RT/Ticket_Overlay.pm:3012 lib/RT/Ticket_Overlay.pm:3029
 msgid "Could not change owner. "
-msgstr "オーナー変更ができませんでした"
+msgstr "担当者変更ができませんでした"
 
 #: html/Admin/CustomFields/Modify.html:119
 #. ($msg)
 
 #: html/Admin/CustomFields/Modify.html:119
 #. ($msg)
@@ -1393,7 +1384,7 @@ msgstr ""
 
 #: html/Elements/SelectDateType:47 html/Ticket/Elements/ShowDates:48 lib/RT/Ticket_Overlay.pm:1145
 msgid "Created"
 
 #: html/Elements/SelectDateType:47 html/Ticket/Elements/ShowDates:48 lib/RT/Ticket_Overlay.pm:1145
 msgid "Created"
-msgstr "作成しました"
+msgstr "作成日時"
 
 #: html/Admin/CustomFields/Modify.html:121 html/Admin/Elements/EditCustomField:117
 #. ($CustomFieldObj->Name())
 
 #: html/Admin/CustomFields/Modify.html:121 html/Admin/Elements/EditCustomField:117
 #. ($CustomFieldObj->Name())
@@ -1503,7 +1494,7 @@ msgstr "日付"
 
 #: lib/RT/Date.pm:448
 msgid "Dec."
 
 #: lib/RT/Date.pm:448
 msgid "Dec."
-msgstr "十二月"
+msgstr "12月"
 
 #: etc/initialdata:222
 msgid "Default Autoresponse template"
 
 #: etc/initialdata:222
 msgid "Default Autoresponse template"
@@ -1596,7 +1587,7 @@ msgstr ""
 
 #: html/Elements/EditLinks:138 html/Elements/EditLinks:66 html/Elements/ShowLinks:58 html/Ticket/Create.html:212 html/Ticket/Elements/BulkLinks:56 html/Ticket/Elements/ShowDependencies:53
 msgid "Depended on by"
 
 #: html/Elements/EditLinks:138 html/Elements/EditLinks:66 html/Elements/ShowLinks:58 html/Ticket/Create.html:212 html/Ticket/Elements/BulkLinks:56 html/Ticket/Elements/ShowDependencies:53
 msgid "Depended on by"
-msgstr "次のもの次第である"
+msgstr "依存されているチケット"
 
 #: NOT FOUND IN SOURCE
 msgid "Dependencies: \\n"
 
 #: NOT FOUND IN SOURCE
 msgid "Dependencies: \\n"
@@ -1624,15 +1615,15 @@ msgstr ""
 
 #: html/Elements/EditLinks:134 html/Elements/EditLinks:57 html/Elements/SelectLinkType:48 html/Elements/ShowLinks:48 html/Ticket/Create.html:211 html/Ticket/Elements/BulkLinks:52 html/Ticket/Elements/ShowDependencies:46
 msgid "Depends on"
 
 #: html/Elements/EditLinks:134 html/Elements/EditLinks:57 html/Elements/SelectLinkType:48 html/Elements/ShowLinks:48 html/Ticket/Create.html:211 html/Ticket/Elements/BulkLinks:52 html/Ticket/Elements/ShowDependencies:46
 msgid "Depends on"
-msgstr "による"
+msgstr "依存しているチケット"
 
 #: html/Elements/SelectSortOrder:56 html/Search/Elements/DisplayOptions:78
 msgid "Descending"
 
 #: html/Elements/SelectSortOrder:56 html/Search/Elements/DisplayOptions:78
 msgid "Descending"
-msgstr "降順する"
+msgstr "降順"
 
 #: html/SelfService/Create.html:100 html/Ticket/Create.html:149
 msgid "Describe the issue below"
 
 #: html/SelfService/Create.html:100 html/Ticket/Create.html:149
 msgid "Describe the issue below"
-msgstr "下の問題点を表す"
+msgstr "チケットの本文を以下に書き込んでください"
 
 #: html/Admin/CustomFields/Modify.html:61 html/Admin/Elements/AddCustomFieldValue:57 html/Admin/Elements/EditCustomField:60 html/Admin/Elements/EditCustomFieldValues:56 html/Admin/Elements/EditScrip:56 html/Admin/Elements/ModifyTemplate:57 html/Admin/Groups/Modify.html:71 html/Admin/Queues/Modify.html:69 html/Search/Elements/EditSearches:56 html/User/Groups/Modify.html:70
 msgid "Description"
 
 #: html/Admin/CustomFields/Modify.html:61 html/Admin/Elements/AddCustomFieldValue:57 html/Admin/Elements/EditCustomField:60 html/Admin/Elements/EditCustomFieldValues:56 html/Admin/Elements/EditScrip:56 html/Admin/Elements/ModifyTemplate:57 html/Admin/Groups/Modify.html:71 html/Admin/Queues/Modify.html:69 html/Search/Elements/EditSearches:56 html/User/Groups/Modify.html:70
 msgid "Description"
@@ -1688,7 +1679,7 @@ msgstr ""
 
 #: html/Elements/Refresh:51
 msgid "Don't refresh this page."
 
 #: html/Elements/Refresh:51
 msgid "Don't refresh this page."
-msgstr "ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92æ\9b´æ\96°ã\81\97ã\81ªã\81\84ã\81§ã\81\8fã\81 ã\81\95い"
+msgstr "ã\83\9aã\83¼ã\82¸ã\82\92å®\9aæ\9c\9fç\9a\84ã\81«æ\9b´æ\96°ã\81\97ã\81ªい"
 
 #: html/Ticket/Elements/ShowTransactionAttachments:82
 msgid "Download"
 
 #: html/Ticket/Elements/ShowTransactionAttachments:82
 msgid "Download"
@@ -1700,7 +1691,7 @@ msgstr ""
 
 #: html/Elements/SelectDateType:53 html/Ticket/Create.html:197 html/Ticket/Elements/EditDates:66 html/Ticket/Elements/ShowDates:64 lib/RT/Ticket_Overlay.pm:1149
 msgid "Due"
 
 #: html/Elements/SelectDateType:53 html/Ticket/Create.html:197 html/Ticket/Elements/EditDates:66 html/Ticket/Elements/ShowDates:64 lib/RT/Ticket_Overlay.pm:1149
 msgid "Due"
-msgstr "期限切れ"
+msgstr "終了予定日時"
 
 #: NOT FOUND IN SOURCE
 msgid "Due date '%1' could not be parsed"
 
 #: NOT FOUND IN SOURCE
 msgid "Due date '%1' could not be parsed"
@@ -1794,7 +1785,7 @@ msgstr "テンプレート%1を編集する"
 
 #: lib/RT/Record.pm:1281 lib/RT/Record.pm:1358
 msgid "Either base or target must be specified"
 
 #: lib/RT/Record.pm:1281 lib/RT/Record.pm:1358
 msgid "Either base or target must be specified"
-msgstr "ベースもしくはターゲットを定しなければなりません"
+msgstr "ベースもしくはターゲットを定しなければなりません"
 
 #: html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65
 msgid "Email"
 
 #: html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65
 msgid "Email"
@@ -1942,7 +1933,7 @@ msgstr ""
 
 #: lib/RT/Date.pm:438
 msgid "Feb."
 
 #: lib/RT/Date.pm:438
 msgid "Feb."
-msgstr "月"
+msgstr "2月"
 
 #: html/Elements/SelectAttachmentField:50
 msgid "Filename"
 
 #: html/Elements/SelectAttachmentField:50
 msgid "Filename"
@@ -2138,7 +2129,7 @@ msgstr "グループが見つかりません。\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "Group not specified.\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "Group not specified.\\n"
-msgstr "グループが特定できません。\\n"
+msgstr "グループが指定されていません。\\n"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:59 html/Admin/Elements/SelectNewGroupMembers:56 html/Admin/Elements/Tabs:56 html/Admin/Global/CustomFields/index.html:69 html/Admin/Groups/Members.html:85 html/Admin/Queues/People.html:104 html/Admin/Users/Memberships.html:53 html/Admin/index.html:67 html/User/Groups/Members.html:88 lib/RT/CustomField_Overlay.pm:1088
 msgid "Groups"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:59 html/Admin/Elements/SelectNewGroupMembers:56 html/Admin/Elements/Tabs:56 html/Admin/Global/CustomFields/index.html:69 html/Admin/Groups/Members.html:85 html/Admin/Queues/People.html:104 html/Admin/Users/Memberships.html:53 html/Admin/index.html:67 html/User/Groups/Members.html:88 lib/RT/CustomField_Overlay.pm:1088
 msgid "Groups"
@@ -2163,11 +2154,11 @@ msgstr "こんにちは!"
 #: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:773
 #. ($name)
 msgid "Hello, %1"
 #: docs/design_docs/string-extraction-guide.txt:40 lib/RT/StyleGuide.pod:773
 #. ($name)
 msgid "Hello, %1"
-msgstr "こんにちは、%1"
+msgstr "こんにちは、%1さん"
 
 #: html/Admin/Elements/GroupTabs:70 html/Admin/Elements/UserTabs:64 html/Ticket/Elements/ShowHistory:51 html/Ticket/Elements/Tabs:111
 msgid "History"
 
 #: html/Admin/Elements/GroupTabs:70 html/Admin/Elements/UserTabs:64 html/Ticket/Elements/ShowHistory:51 html/Ticket/Elements/Tabs:111
 msgid "History"
-msgstr "ヒストリー"
+msgstr "更新履歴"
 
 #: html/Admin/Groups/History.html:62
 #. ($GroupObj->Name)
 
 #: html/Admin/Groups/History.html:62
 #. ($GroupObj->Name)
@@ -2181,11 +2172,11 @@ msgstr ""
 
 #: NOT FOUND IN SOURCE
 msgid "HomePhone"
 
 #: NOT FOUND IN SOURCE
 msgid "HomePhone"
-msgstr "自宅の電話"
+msgstr "電話(自宅)"
 
 #: html/Elements/Tabs:65
 msgid "Homepage"
 
 #: html/Elements/Tabs:65
 msgid "Homepage"
-msgstr "ホームページ"
+msgstr "ホーム"
 
 #: lib/RT/Base.pm:110
 #. (6)
 
 #: lib/RT/Base.pm:110
 #. (6)
@@ -2206,7 +2197,7 @@ msgstr "ID"
 
 #: html/Admin/Users/Modify.html:65 html/User/Prefs.html:60
 msgid "Identity"
 
 #: html/Admin/Users/Modify.html:65 html/User/Prefs.html:60
 msgid "Identity"
-msgstr "身分証明書"
+msgstr "基本情報"
 
 #: etc/initialdata:429
 msgid "If an approval is rejected, reject the original and delete pending approvals"
 
 #: etc/initialdata:429
 msgid "If an approval is rejected, reject the original and delete pending approvals"
@@ -2226,7 +2217,7 @@ msgstr ""
 
 #: html/Admin/Queues/People.html:126 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:128 html/Ticket/ModifyPeople.html:59
 msgid "If you've updated anything above, be sure to"
 
 #: html/Admin/Queues/People.html:126 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:128 html/Ticket/ModifyPeople.html:59
 msgid "If you've updated anything above, be sure to"
-msgstr "上の何かをアップデートしたなら、次のことを確認してください"
+msgstr "変更を反映するにはボタンを推してください"
 
 #: lib/RT/Record.pm:933
 msgid "Illegal value for %1"
 
 #: lib/RT/Record.pm:933
 msgid "Illegal value for %1"
@@ -2291,7 +2282,7 @@ msgstr ""
 
 #: NOT FOUND IN SOURCE
 msgid "Invalid owner. Defaulting to 'nobody'."
 
 #: NOT FOUND IN SOURCE
 msgid "Invalid owner. Defaulting to 'nobody'."
-msgstr "無効なオーナーです。 '誰でもない'に初期設定します."
+msgstr "無効な担当者です。 '誰でもない'に初期設定します."
 
 #: lib/RT/Scrip_Overlay.pm:158 lib/RT/Template_Overlay.pm:276
 msgid "Invalid queue"
 
 #: lib/RT/Scrip_Overlay.pm:158 lib/RT/Template_Overlay.pm:276
 msgid "Invalid queue"
@@ -2332,7 +2323,7 @@ msgstr ""
 
 #: lib/RT/Date.pm:437
 msgid "Jan."
 
 #: lib/RT/Date.pm:437
 msgid "Jan."
-msgstr "月"
+msgstr "1月"
 
 #: lib/RT/Group_Overlay.pm:174
 msgid "Join or leave this group"
 
 #: lib/RT/Group_Overlay.pm:174
 msgid "Join or leave this group"
@@ -2340,15 +2331,15 @@ msgstr ""
 
 #: lib/RT/Date.pm:443
 msgid "Jul."
 
 #: lib/RT/Date.pm:443
 msgid "Jul."
-msgstr "月"
+msgstr "7月"
 
 #: html/Ticket/Elements/Tabs:122
 msgid "Jumbo"
 
 #: html/Ticket/Elements/Tabs:122
 msgid "Jumbo"
-msgstr "大きい"
+msgstr "総合"
 
 #: lib/RT/Date.pm:442
 msgid "Jun."
 
 #: lib/RT/Date.pm:442
 msgid "Jun."
-msgstr "月"
+msgstr "6月"
 
 #: NOT FOUND IN SOURCE
 msgid "Keyword"
 
 #: NOT FOUND IN SOURCE
 msgid "Keyword"
@@ -2372,7 +2363,7 @@ msgstr "最後の"
 
 #: html/Ticket/Elements/EditDates:59 html/Ticket/Elements/ShowDates:60
 msgid "Last Contact"
 
 #: html/Ticket/Elements/EditDates:59 html/Ticket/Elements/ShowDates:60
 msgid "Last Contact"
-msgstr "最後のコンタクト"
+msgstr "最終更新日時"
 
 #: html/Elements/SelectDateType:50
 msgid "Last Contacted"
 
 #: html/Elements/SelectDateType:50
 msgid "Last Contacted"
@@ -2380,7 +2371,7 @@ msgstr "最後にコンタクトした"
 
 #: html/Elements/SelectDateType:51
 msgid "Last Updated"
 
 #: html/Elements/SelectDateType:51
 msgid "Last Updated"
-msgstr "最後にアップデートした"
+msgstr "最終更新日時"
 
 #: html/Search/Elements/PickBasics:103
 msgid "LastUpdatedBy"
 
 #: html/Search/Elements/PickBasics:103
 msgid "LastUpdatedBy"
@@ -2388,7 +2379,7 @@ msgstr ""
 
 #: html/Ticket/Elements/ShowBasics:68
 msgid "Left"
 
 #: html/Ticket/Elements/ShowBasics:68
 msgid "Left"
-msgstr "æ®\8bã\81£ã\81\9f"
+msgstr "æ®\8bã\82\8aæ\99\82é\96\93"
 
 #: html/Admin/Users/Modify.html:109
 msgid "Let this user access RT"
 
 #: html/Admin/Users/Modify.html:109
 msgid "Let this user access RT"
@@ -2400,7 +2391,7 @@ msgstr "このユーザーの権利を認めます"
 
 #: NOT FOUND IN SOURCE
 msgid "Limiting owner to %1 %2"
 
 #: NOT FOUND IN SOURCE
 msgid "Limiting owner to %1 %2"
-msgstr "オーナーを%1 %2に制限します"
+msgstr "担当者を%1 %2に制限します"
 
 #: NOT FOUND IN SOURCE
 msgid "Limiting queue to %1 %2"
 
 #: NOT FOUND IN SOURCE
 msgid "Limiting queue to %1 %2"
@@ -2464,7 +2455,7 @@ msgstr ""
 
 #: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126
 msgid "Location"
 
 #: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126
 msgid "Location"
-msgstr "所"
+msgstr "所"
 
 #: lib/RT.pm:212
 #. ($RT::LogDir)
 
 #: lib/RT.pm:212
 #. ($RT::LogDir)
@@ -2474,7 +2465,7 @@ msgstr "ログディレクトリー%1が見つからない、または書き出
 #: html/Elements/Header:94
 #. ("<b>".$session{'CurrentUser'}->Name."</b>")
 msgid "Logged in as %1"
 #: html/Elements/Header:94
 #. ("<b>".$session{'CurrentUser'}->Name."</b>")
 msgid "Logged in as %1"
-msgstr "%1としてサインする"
+msgstr "\"%1\"でログインしています"
 
 #: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:57 html/Elements/Login:66 html/Elements/Login:76 lib/RT/StyleGuide.pod:797
 msgid "Login"
 
 #: docs/design_docs/string-extraction-guide.txt:71 html/Elements/Login:57 html/Elements/Login:66 html/Elements/Login:76 lib/RT/StyleGuide.pod:797
 msgid "Login"
@@ -2490,7 +2481,7 @@ msgstr ""
 
 #: html/Search/Bulk.html:104
 msgid "Make Owner"
 
 #: html/Search/Bulk.html:104
 msgid "Make Owner"
-msgstr "オーナーを決める"
+msgstr "担当者を決める"
 
 #: html/Search/Bulk.html:128
 msgid "Make Status"
 
 #: html/Search/Bulk.html:128
 msgid "Make Status"
@@ -2554,11 +2545,11 @@ msgstr ""
 
 #: lib/RT/Date.pm:439
 msgid "Mar."
 
 #: lib/RT/Date.pm:439
 msgid "Mar."
-msgstr "月"
+msgstr "3月"
 
 #: lib/RT/Date.pm:441
 msgid "May."
 
 #: lib/RT/Date.pm:441
 msgid "May."
-msgstr "月"
+msgstr "5月"
 
 #: lib/RT/Transaction_Overlay.pm:720
 #. ($value)
 
 #: lib/RT/Transaction_Overlay.pm:720
 #. ($value)
@@ -2916,7 +2907,7 @@ msgstr "多くの"
 
 #: lib/RT/User_Overlay.pm:227
 msgid "Must specify 'Name' attribute"
 
 #: lib/RT/User_Overlay.pm:227
 msgid "Must specify 'Name' attribute"
-msgstr "'名前'の属性を定してください"
+msgstr "'名前'の属性を定してください"
 
 #: html/SelfService/Elements/MyRequests:70
 #. ($friendly_status)
 
 #: html/SelfService/Elements/MyRequests:70
 #. ($friendly_status)
@@ -3077,11 +3068,11 @@ msgstr "テンプレートがありません"
 
 #: NOT FOUND IN SOURCE
 msgid "No Ticket specified. Aborting ticket "
 
 #: NOT FOUND IN SOURCE
 msgid "No Ticket specified. Aborting ticket "
-msgstr "チケットが特定できません。チケットを終了します"
+msgstr "チケットが指定されていません。"
 
 #: NOT FOUND IN SOURCE
 msgid "No Ticket specified. Aborting ticket modifications\\n\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "No Ticket specified. Aborting ticket modifications\\n\\n"
-msgstr "チケットが特定できません。チケットの修正を終了します\\n\\n"
+msgstr "チケットが指定されていません。チケットの修正を終了します\\n\\n"
 
 #: html/Approvals/Elements/Approve:67
 msgid "No action"
 
 #: html/Approvals/Elements/Approve:67
 msgid "No action"
@@ -3110,7 +3101,7 @@ msgstr "%1記述はありません"
 
 #: lib/RT/Users_Overlay.pm:185
 msgid "No group specified"
 
 #: lib/RT/Users_Overlay.pm:185
 msgid "No group specified"
-msgstr "グループが特定できません"
+msgstr "グループが指定されていません"
 
 #: html/Admin/Groups/index.html:52
 msgid "No groups matching search criteria found."
 
 #: html/Admin/Groups/index.html:52
 msgid "No groups matching search criteria found."
@@ -3147,7 +3138,7 @@ msgstr "アップデートチケットを見る許可がさありません"
 
 #: lib/RT/Queue_Overlay.pm:792 lib/RT/Ticket_Overlay.pm:1450
 msgid "No principal specified"
 
 #: lib/RT/Queue_Overlay.pm:792 lib/RT/Ticket_Overlay.pm:1450
 msgid "No principal specified"
-msgstr "責任者が特定できません"
+msgstr "責任者が指定されていません"
 
 #: html/Admin/Queues/People.html:175 html/Admin/Queues/People.html:185
 msgid "No principals selected."
 
 #: html/Admin/Queues/People.html:175 html/Admin/Queues/People.html:185
 msgid "No principals selected."
@@ -3179,11 +3170,11 @@ msgstr ""
 
 #: NOT FOUND IN SOURCE
 msgid "No ticket id specified"
 
 #: NOT FOUND IN SOURCE
 msgid "No ticket id specified"
-msgstr "チケットIDが特定できません"
+msgstr "チケットIDが指定されていません"
 
 #: lib/RT/Transaction_Overlay.pm:517 lib/RT/Transaction_Overlay.pm:554
 msgid "No transaction type specified"
 
 #: lib/RT/Transaction_Overlay.pm:517 lib/RT/Transaction_Overlay.pm:554
 msgid "No transaction type specified"
-msgstr "トランザクションタイプが特定できません"
+msgstr "トランザクションタイプが指定されていません"
 
 #: html/Admin/Users/index.html:55
 msgid "No users matching search criteria found."
 
 #: html/Admin/Users/index.html:55
 msgid "No users matching search criteria found."
@@ -3207,19 +3198,19 @@ msgstr ""
 
 #: html/Elements/Header:96
 msgid "Not logged in."
 
 #: html/Elements/Header:96
 msgid "Not logged in."
-msgstr "ã\83­ã\82°ã\82¤ã\83³ã\81§ã\81\8dません"
+msgstr "ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦ã\81\84ません"
 
 #: lib/RT/Date.pm:393
 msgid "Not set"
 
 #: lib/RT/Date.pm:393
 msgid "Not set"
-msgstr "セットできません"
+msgstr "未指定"
 
 #: html/NoAuth/Reminder.html:48
 msgid "Not yet implemented."
 
 #: html/NoAuth/Reminder.html:48
 msgid "Not yet implemented."
-msgstr "まだ実行できません"
+msgstr "未実装"
 
 #: NOT FOUND IN SOURCE
 msgid "Not yet implemented...."
 
 #: NOT FOUND IN SOURCE
 msgid "Not yet implemented...."
-msgstr "まだ実行できません。。。"
+msgstr "未実装..."
 
 #: html/Approvals/Elements/Approve:70
 msgid "Notes"
 
 #: html/Approvals/Elements/Approve:70
 msgid "Notes"
@@ -3333,7 +3324,7 @@ msgstr ""
 
 #: lib/RT/Date.pm:446
 msgid "Oct."
 
 #: lib/RT/Date.pm:446
 msgid "Oct."
-msgstr "月"
+msgstr "10月"
 
 #: html/Tools/Elements/Tabs:53
 msgid "Offline"
 
 #: html/Tools/Elements/Tabs:53
 msgid "Offline"
@@ -3349,7 +3340,7 @@ msgstr ""
 
 #: html/Elements/SelectDateRelation:56
 msgid "On"
 
 #: html/Elements/SelectDateRelation:56
 msgid "On"
-msgstr "ã\81«"
+msgstr "ã\81\8c以ä¸\8bã\81§ã\81\82ã\82\8b"
 
 #: etc/initialdata:163
 msgid "On Comment"
 
 #: etc/initialdata:163
 msgid "On Comment"
@@ -3399,7 +3390,7 @@ msgstr ""
 
 #: html/Elements/Quicksearch:52
 msgid "Open"
 
 #: html/Elements/Quicksearch:52
 msgid "Open"
-msgstr "開く"
+msgstr "着手済み" 
 
 #: html/Ticket/Elements/Tabs:159
 msgid "Open it"
 
 #: html/Ticket/Elements/Tabs:159
 msgid "Open it"
@@ -3464,7 +3455,7 @@ msgstr ""
 
 #: etc/initialdata:38 html/Elements/QuickCreate:58 html/Search/Elements/PickBasics:101 html/SelfService/Elements/MyRequests:51 html/Ticket/Create.html:69 html/Ticket/Elements/EditPeople:64 html/Ticket/Elements/EditPeople:65 html/Ticket/Elements/ShowPeople:48 html/Ticket/Update.html:62 lib/RT/ACE_Overlay.pm:111 lib/RT/Tickets_Overlay.pm:1734
 msgid "Owner"
 
 #: etc/initialdata:38 html/Elements/QuickCreate:58 html/Search/Elements/PickBasics:101 html/SelfService/Elements/MyRequests:51 html/Ticket/Create.html:69 html/Ticket/Elements/EditPeople:64 html/Ticket/Elements/EditPeople:65 html/Ticket/Elements/ShowPeople:48 html/Ticket/Update.html:62 lib/RT/ACE_Overlay.pm:111 lib/RT/Tickets_Overlay.pm:1734
 msgid "Owner"
-msgstr "オーナー"
+msgstr "担当者"
 
 #: lib/RT/Ticket_Overlay.pm:495
 msgid "Owner could not be set."
 
 #: lib/RT/Ticket_Overlay.pm:495
 msgid "Owner could not be set."
@@ -3473,11 +3464,11 @@ msgstr ""
 #: lib/RT/Transaction_Overlay.pm:661
 #. ($Old->Name , $New->Name)
 msgid "Owner forcibly changed from %1 to %2"
 #: lib/RT/Transaction_Overlay.pm:661
 #. ($Old->Name , $New->Name)
 msgid "Owner forcibly changed from %1 to %2"
-msgstr "オーナーは強制的に%1から%2を変更しました"
+msgstr "担当者は強制的に%1から%2を変更しました"
 
 #: NOT FOUND IN SOURCE
 msgid "Owner is"
 
 #: NOT FOUND IN SOURCE
 msgid "Owner is"
-msgstr "オーナーは"
+msgstr "担当者は"
 
 #: html/Elements/TicketList:78
 #. ($Page, int($TotalFound/$Rows)+$oddRows)
 
 #: html/Elements/TicketList:78
 #. ($Page, int($TotalFound/$Rows)+$oddRows)
@@ -3493,8 +3484,9 @@ msgid "PagerPhone"
 msgstr "ポケットベル電話"
 
 #: html/Elements/EditLinks:142 html/Elements/EditLinks:76 html/Elements/ShowLinks:68 html/Ticket/Create.html:213 html/Ticket/Elements/BulkLinks:60
 msgstr "ポケットベル電話"
 
 #: html/Elements/EditLinks:142 html/Elements/EditLinks:76 html/Elements/ShowLinks:68 html/Ticket/Create.html:213 html/Ticket/Elements/BulkLinks:60
+# XXX - I can't come up with a good translation yet. leave as is in English
 msgid "Parents"
 msgid "Parents"
-msgstr "両親"
+msgstr ""
 
 #: html/Elements/Login:74 html/User/Prefs.html:105
 msgid "Password"
 
 #: html/Elements/Login:74 html/User/Prefs.html:105
 msgid "Password"
@@ -3539,8 +3531,10 @@ msgid "Passwords do not match. Your password has not been changed"
 msgstr ""
 
 #: html/Ticket/Elements/ShowSummary:66 html/Ticket/Elements/Tabs:119 html/Ticket/ModifyAll.html:72
 msgstr ""
 
 #: html/Ticket/Elements/ShowSummary:66 html/Ticket/Elements/Tabs:119 html/Ticket/ModifyAll.html:72
+# XXX - this is not really a good translation... but much better than
+# "人々" (daisuke)
 msgid "People"
 msgid "People"
-msgstr "人々"
+msgstr "担当者等"
 
 #: etc/initialdata:133
 msgid "Perform a user-defined action"
 
 #: etc/initialdata:133
 msgid "Perform a user-defined action"
@@ -3600,7 +3594,7 @@ msgstr "前のページ"
 
 #: NOT FOUND IN SOURCE
 msgid "Pri"
 
 #: NOT FOUND IN SOURCE
 msgid "Pri"
-msgstr "優先"
+msgstr "優先"
 
 #: lib/RT/ACE_Overlay.pm:158 lib/RT/ACE_Overlay.pm:240 lib/RT/ACE_Overlay.pm:570
 #. ($args{'PrincipalId'})
 
 #: lib/RT/ACE_Overlay.pm:158 lib/RT/ACE_Overlay.pm:240 lib/RT/ACE_Overlay.pm:570
 #. ($args{'PrincipalId'})
@@ -3609,7 +3603,7 @@ msgstr ""
 
 #: html/Search/Elements/PickBasics:160 html/Ticket/Create.html:184 html/Ticket/Elements/EditBasics:74 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1518
 msgid "Priority"
 
 #: html/Search/Elements/PickBasics:160 html/Ticket/Create.html:184 html/Ticket/Elements/EditBasics:74 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1518
 msgid "Priority"
-msgstr "優先"
+msgstr "優先"
 
 #: html/Admin/Queues/Modify.html:86
 msgid "Priority starts at"
 
 #: html/Admin/Queues/Modify.html:86
 msgid "Priority starts at"
@@ -3692,11 +3686,11 @@ msgstr "キュー"
 
 #: html/Elements/Quicksearch:46
 msgid "Quick search"
 
 #: html/Elements/Quicksearch:46
 msgid "Quick search"
-msgstr ""
+msgstr "簡易検索"
 
 #: html/Elements/QuickCreate:46
 msgid "Quick ticket creation"
 
 #: html/Elements/QuickCreate:46
 msgid "Quick ticket creation"
-msgstr ""
+msgstr "チケット新規作成"
 
 #: html/Search/Results.html:83
 msgid "RSS"
 
 #: html/Search/Results.html:83
 msgid "RSS"
@@ -3766,7 +3760,7 @@ msgstr "RTでは、ただいまお使いの方の認証ができませんでし
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't find requestor via its external database lookup"
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't find requestor via its external database lookup"
-msgstr "RTは外部のデータベースルックアップを使ってリクエストする人を見つけることができませんでした"
+msgstr "RTは外部のデータベースルックアップを使って作成者を見つけることができませんでした"
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't find the queue: %1"
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't find the queue: %1"
@@ -3835,11 +3829,11 @@ msgstr ""
 
 #: html/Elements/EditLinks:103 html/Elements/EditLinks:154 html/Elements/ShowLinks:92 html/Ticket/Create.html:216 html/Ticket/Elements/BulkLinks:72
 msgid "Referred to by"
 
 #: html/Elements/EditLinks:103 html/Elements/EditLinks:154 html/Elements/ShowLinks:92 html/Ticket/Create.html:216 html/Ticket/Elements/BulkLinks:72
 msgid "Referred to by"
-msgstr "次のものによって参照した"
+msgstr "参照されているチケット"
 
 #: html/Elements/EditLinks:150 html/Elements/EditLinks:94 html/Elements/SelectLinkType:49 html/Elements/ShowLinks:82 html/Ticket/Create.html:215 html/Ticket/Elements/BulkLinks:68
 msgid "Refers to"
 
 #: html/Elements/EditLinks:150 html/Elements/EditLinks:94 html/Elements/SelectLinkType:49 html/Elements/ShowLinks:82 html/Ticket/Create.html:215 html/Ticket/Elements/BulkLinks:68
 msgid "Refers to"
-msgstr "å\8f\82ç\85§ã\81\99ã\82\8b"
+msgstr "å\8f\82ç\85§ã\81\97ã\81¦ã\81\84ã\82\8bã\83\81ã\82±ã\83\83ã\83\88"
 
 #: NOT FOUND IN SOURCE
 msgid "Refine"
 
 #: NOT FOUND IN SOURCE
 msgid "Refine"
@@ -3852,7 +3846,7 @@ msgstr "絞込み検索"
 #: html/Elements/Refresh:57
 #. ($value/60)
 msgid "Refresh this page every %1 minutes."
 #: html/Elements/Refresh:57
 #. ($value/60)
 msgid "Refresh this page every %1 minutes."
-msgstr "ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92%1å\88\86ã\81\8aã\81\8dã\81«æ\9b´æ\96°ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84"
+msgstr "ã\83\9aã\83¼ã\82¸ã\82\92%1å\88\86ã\81\8aã\81\8dã\81«æ\9b´æ\96°ã\81\99ã\82\8b"
 
 #: html/Search/Bulk.html:116
 msgid "Remove AdminCc"
 
 #: html/Search/Bulk.html:116
 msgid "Remove AdminCc"
@@ -3864,7 +3858,7 @@ msgstr "Ccを削除する"
 
 #: html/Search/Bulk.html:108
 msgid "Remove Requestor"
 
 #: html/Search/Bulk.html:108
 msgid "Remove Requestor"
-msgstr "リクエストする人を削除する"
+msgstr "作成者を削除する"
 
 #: html/Ticket/Elements/ShowTransaction:171 html/Ticket/Elements/Tabs:145
 msgid "Reply"
 
 #: html/Ticket/Elements/ShowTransaction:171 html/Ticket/Elements/Tabs:145
 msgid "Reply"
@@ -3872,7 +3866,7 @@ msgstr "返信"
 
 #: html/Admin/Queues/Modify.html:72
 msgid "Reply Address"
 
 #: html/Admin/Queues/Modify.html:72
 msgid "Reply Address"
-msgstr ""
+msgstr "返信アドレス"
 
 #: html/Search/Bulk.html:151 html/Ticket/ModifyAll.html:94 html/Ticket/Update.html:76
 msgid "Reply to requestors"
 
 #: html/Search/Bulk.html:151 html/Ticket/ModifyAll.html:94 html/Ticket/Update.html:76
 msgid "Reply to requestors"
@@ -3888,15 +3882,15 @@ msgstr ""
 
 #: etc/initialdata:44 lib/RT/ACE_Overlay.pm:112
 msgid "Requestor"
 
 #: etc/initialdata:44 lib/RT/ACE_Overlay.pm:112
 msgid "Requestor"
-msgstr "リクエストする人"
+msgstr "作成者"
 
 #: NOT FOUND IN SOURCE
 msgid "Requestor email address"
 
 #: NOT FOUND IN SOURCE
 msgid "Requestor email address"
-msgstr "リクエストする人のEメールアドレス"
+msgstr "作成者のEメールアドレス"
 
 #: html/SelfService/Create.html:63 html/Ticket/Create.html:77 html/Ticket/Elements/EditPeople:69 html/Ticket/Elements/ShowPeople:52
 msgid "Requestors"
 
 #: html/SelfService/Create.html:63 html/Ticket/Create.html:77 html/Ticket/Elements/EditPeople:69 html/Ticket/Elements/ShowPeople:52
 msgid "Requestors"
-msgstr "リクエストする人"
+msgstr "作成者"
 
 #: html/Admin/Queues/Modify.html:96
 msgid "Requests should be due in"
 
 #: html/Admin/Queues/Modify.html:96
 msgid "Requests should be due in"
@@ -3917,7 +3911,7 @@ msgstr "住所"
 
 #: html/Ticket/Elements/Tabs:155
 msgid "Resolve"
 
 #: html/Ticket/Elements/Tabs:155
 msgid "Resolve"
-msgstr "分解する"
+msgstr "解決済みにする"
 
 #: html/Ticket/Update.html:154
 #. ($TicketObj->id, $TicketObj->Subject)
 
 #: html/Ticket/Update.html:154
 #. ($TicketObj->id, $TicketObj->Subject)
@@ -3926,11 +3920,11 @@ msgstr ""
 
 #: etc/initialdata:323 html/Elements/SelectDateType:49 lib/RT/Ticket_Overlay.pm:1148
 msgid "Resolved"
 
 #: etc/initialdata:323 html/Elements/SelectDateType:49 lib/RT/Ticket_Overlay.pm:1148
 msgid "Resolved"
-msgstr "分解した"
+msgstr "解決済み"
 
 #: NOT FOUND IN SOURCE
 msgid "Response to requestors"
 
 #: NOT FOUND IN SOURCE
 msgid "Response to requestors"
-msgstr "リクエストする人に返答する"
+msgstr "作成者に返答する"
 
 #: html/Elements/ListActions:47 html/Search/Elements/NewListActions:47
 msgid "Results"
 
 #: html/Elements/ListActions:47 html/Search/Elements/NewListActions:47
 msgid "Results"
@@ -4016,7 +4010,7 @@ msgstr "変更を保存する"
 
 #: html/User/Prefs.html:179
 msgid "Save Preferences"
 
 #: html/User/Prefs.html:179
 msgid "Save Preferences"
-msgstr ""
+msgstr "変更を保存する"
 
 #: html/Ticket/Elements/PreviewScrips:124
 msgid "Save changes"
 
 #: html/Ticket/Elements/PreviewScrips:124
 msgid "Save changes"
@@ -4245,7 +4239,7 @@ msgstr ""
 
 #: lib/RT/Date.pm:445
 msgid "Sep."
 
 #: lib/RT/Date.pm:445
 msgid "Sep."
-msgstr "月"
+msgstr "9月"
 
 #: html/Ticket/Elements/ShowTransaction:150
 msgid "Show"
 
 #: html/Ticket/Elements/ShowTransaction:150
 msgid "Show"
@@ -4385,7 +4379,7 @@ msgstr "開始日'%1'は見つかりませんでした"
 
 #: html/Elements/SelectDateType:52 html/Ticket/Create.html:196 html/Ticket/Elements/EditDates:48 html/Ticket/Elements/ShowDates:52
 msgid "Starts"
 
 #: html/Elements/SelectDateType:52 html/Ticket/Create.html:196 html/Ticket/Elements/EditDates:48 html/Ticket/Elements/ShowDates:52
 msgid "Starts"
-msgstr "開始する"
+msgstr "開始予定日時"
 
 #: NOT FOUND IN SOURCE
 msgid "Starts By"
 
 #: NOT FOUND IN SOURCE
 msgid "Starts By"
@@ -4397,11 +4391,11 @@ msgstr "開始日'%1'を解析できませんでした"
 
 #: html/Admin/Users/Modify.html:162 html/User/Prefs.html:145
 msgid "State"
 
 #: html/Admin/Users/Modify.html:162 html/User/Prefs.html:145
 msgid "State"
-msgstr "状態"
+msgstr "都道府県"
 
 #: html/Search/Elements/PickBasics:87 html/SelfService/Elements/MyRequests:50 html/SelfService/Update.html:57 html/Ticket/Create.html:63 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:52 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1142 lib/RT/Tickets_Overlay.pm:1378
 msgid "Status"
 
 #: html/Search/Elements/PickBasics:87 html/SelfService/Elements/MyRequests:50 html/SelfService/Update.html:57 html/Ticket/Create.html:63 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:52 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1142 lib/RT/Tickets_Overlay.pm:1378
 msgid "Status"
-msgstr "ステータス"
+msgstr "状態"
 
 #: etc/initialdata:309
 msgid "Status Change"
 
 #: etc/initialdata:309
 msgid "Status Change"
@@ -4413,7 +4407,7 @@ msgstr "ステータスが%1から%2に変更されました"
 
 #: html/Ticket/Elements/Tabs:170
 msgid "Steal"
 
 #: html/Ticket/Elements/Tabs:170
 msgid "Steal"
-msgstr "盗用する"
+msgstr "担当者変更"
 
 #: lib/RT/Queue_Overlay.pm:118
 msgid "Steal tickets"
 
 #: lib/RT/Queue_Overlay.pm:118
 msgid "Steal tickets"
@@ -4426,7 +4420,7 @@ msgstr ""
 #: lib/RT/Transaction_Overlay.pm:667
 #. ($Old->Name)
 msgid "Stolen from %1"
 #: lib/RT/Transaction_Overlay.pm:667
 #. ($Old->Name)
 msgid "Stolen from %1"
-msgstr "%1から盗用した"
+msgstr "%1から担当者を変更しました"
 
 #: NOT FOUND IN SOURCE
 msgid "Stolen from %1 "
 
 #: NOT FOUND IN SOURCE
 msgid "Stolen from %1 "
@@ -4438,7 +4432,7 @@ msgstr ""
 
 #: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:154 html/SelfService/Create.html:79 html/SelfService/Elements/MyRequests:49 html/SelfService/Update.html:65 html/Ticket/Create.html:105 html/Ticket/Elements/EditBasics:48 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:80 lib/RT/Ticket_Overlay.pm:1138 lib/RT/Tickets_Overlay.pm:1460
 msgid "Subject"
 
 #: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:154 html/SelfService/Create.html:79 html/SelfService/Elements/MyRequests:49 html/SelfService/Update.html:65 html/Ticket/Create.html:105 html/Ticket/Elements/EditBasics:48 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:80 lib/RT/Ticket_Overlay.pm:1138 lib/RT/Tickets_Overlay.pm:1460
 msgid "Subject"
-msgstr "サブジェクト"
+msgstr "件名"
 
 #: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm:689
 #. ($self->Data)
 
 #: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm:689
 #. ($self->Data)
@@ -4503,8 +4497,9 @@ msgid "TEST_STRING"
 msgstr "テスト_ストリング"
 
 #: html/Elements/MyRequests:50 html/Search/Elements/EditFormat:72 html/Ticket/Elements/Tabs:166
 msgstr "テスト_ストリング"
 
 #: html/Elements/MyRequests:50 html/Search/Elements/EditFormat:72 html/Ticket/Elements/Tabs:166
+# XXX - what the...
 msgid "Take"
 msgid "Take"
-msgstr "る"
+msgstr "担当する"
 
 #: lib/RT/Queue_Overlay.pm:116
 msgid "Take tickets"
 
 #: lib/RT/Queue_Overlay.pm:116
 msgid "Take tickets"
@@ -4592,7 +4587,7 @@ msgstr "そのキューはありません"
 
 #: lib/RT/Ticket_Overlay.pm:3189
 msgid "That ticket has unresolved dependencies"
 
 #: lib/RT/Ticket_Overlay.pm:3189
 msgid "That ticket has unresolved dependencies"
-msgstr "そのチケットは従属物をすでに分解しました"
+msgstr "未解決の依存関係が存在します"
 
 #: NOT FOUND IN SOURCE
 msgid "That user already has that right"
 
 #: NOT FOUND IN SOURCE
 msgid "That user already has that right"
@@ -4714,7 +4709,7 @@ msgstr "チケット# %1  %2"
 #: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50
 #. ($Ticket->Id, $Ticket->Subject)
 msgid "Ticket #%1 Jumbo update: %2"
 #: html/Ticket/ModifyAll.html:46 html/Ticket/ModifyAll.html:50
 #. ($Ticket->Id, $Ticket->Subject)
 msgid "Ticket #%1 Jumbo update: %2"
-msgstr "チケット #%1 大きいアップデート: %2"
+msgstr "チケット #%1 更新(総合ビュー): %2"
 
 #: html/Approvals/Elements/ShowDependency:67
 #. ($link->BaseObj->Id, $link->BaseObj->Subject)
 
 #: html/Approvals/Elements/ShowDependency:67
 #. ($link->BaseObj->Id, $link->BaseObj->Subject)
@@ -4793,7 +4788,7 @@ msgstr "チケットが削除されました"
 
 #: html/Ticket/Display.html:55
 msgid "Ticket metadata"
 
 #: html/Ticket/Display.html:55
 msgid "Ticket metadata"
-msgstr ""
+msgstr "チケット情報"
 
 #: etc/initialdata:310
 msgid "Ticket status changed"
 
 #: etc/initialdata:310
 msgid "Ticket status changed"
@@ -4826,15 +4821,15 @@ msgstr ""
 
 #: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:187 html/Ticket/Elements/EditBasics:69
 msgid "Time Left"
 
 #: html/Search/Elements/PickBasics:149 html/Ticket/Create.html:187 html/Ticket/Elements/EditBasics:69
 msgid "Time Left"
-msgstr "æ\99\82é\96\93ã\81\8cæ®\8bã\81£ã\81¦ã\81\84ã\81¾ã\81\99"
+msgstr "æ®\8bã\82\8aæ\99\82é\96\93"
 
 #: html/Search/Elements/PickBasics:147 html/Ticket/Create.html:186 html/Ticket/Elements/EditBasics:65
 msgid "Time Worked"
 
 #: html/Search/Elements/PickBasics:147 html/Ticket/Create.html:186 html/Ticket/Elements/EditBasics:65
 msgid "Time Worked"
-msgstr "使ã\81£ã\81\9f時間"
+msgstr "ä½\9c業時間"
 
 #: lib/RT/Tickets_Overlay.pm:1619
 msgid "Time left"
 
 #: lib/RT/Tickets_Overlay.pm:1619
 msgid "Time left"
-msgstr "æ®\8bã\81£ã\81¦ã\81\84ã\82\8b時間"
+msgstr "æ®\8bã\82\8a時間"
 
 #: html/Elements/Footer:71
 msgid "Time to display"
 
 #: html/Elements/Footer:71
 msgid "Time to display"
@@ -5028,7 +5023,7 @@ msgstr "アップデートタイプは通知でもコメントでもありませ
 
 #: html/Elements/SelectDateType:54 html/Ticket/Elements/ShowDates:72 lib/RT/Ticket_Overlay.pm:1147
 msgid "Updated"
 
 #: html/Elements/SelectDateType:54 html/Ticket/Elements/ShowDates:72 lib/RT/Ticket_Overlay.pm:1147
 msgid "Updated"
-msgstr "アップデートしました"
+msgstr "最終更新日時"
 
 #: html/Tools/Offline.html:95
 msgid "Upload"
 
 #: html/Tools/Offline.html:95
 msgid "Upload"
@@ -5247,23 +5242,23 @@ msgstr ""
 
 #: NOT FOUND IN SOURCE
 msgid "WorkPhone"
 
 #: NOT FOUND IN SOURCE
 msgid "WorkPhone"
-msgstr "仕事先の電話"
+msgstr "電話(仕事)"
 
 #: html/Ticket/Elements/ShowBasics:63 html/Ticket/Update.html:64
 msgid "Worked"
 
 #: html/Ticket/Elements/ShowBasics:63 html/Ticket/Update.html:64
 msgid "Worked"
-msgstr "Worked"
+msgstr "累積作業時間"
 
 #: lib/RT/Ticket_Overlay.pm:3096
 msgid "You already own this ticket"
 
 #: lib/RT/Ticket_Overlay.pm:3096
 msgid "You already own this ticket"
-msgstr "ã\81\82ã\81ªã\81\9fã\81¯ã\81\99ã\81§ã\81«ã\81\93ã\81®ã\83\81ã\82±ã\83\83ã\83\88ã\82\92æ\89\80æ\9c\89しています"
+msgstr "ã\81\99ã\81§ã\81«ã\81\93ã\81®ã\83\81ã\82±ã\83\83ã\83\88ã\82\92æ\8b\85å½\93しています"
 
 #: html/autohandler:158 html/autohandler:166
 msgid "You are not an authorized user"
 
 #: html/autohandler:158 html/autohandler:166
 msgid "You are not an authorized user"
-msgstr "あなたは認証されたユーザーではありません"
+msgstr "認証されていません。"
 
 #: lib/RT/Ticket_Overlay.pm:2978
 msgid "You can only reassign tickets that you own or that are unowned"
 
 #: lib/RT/Ticket_Overlay.pm:2978
 msgid "You can only reassign tickets that you own or that are unowned"
-msgstr "あなたは所有、または所有されていないチケットのみを止めることができます"
+msgstr "自分が担当しているチケットか、担当者のいないチケットしか変更する事ができません。"
 
 #: NOT FOUND IN SOURCE
 msgid "You don't have permission to view that ticket.\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "You don't have permission to view that ticket.\\n"
@@ -5272,23 +5267,23 @@ msgstr "あなたはそのチケットを見る許可がありません。\\n"
 #: docs/design_docs/string-extraction-guide.txt:47 lib/RT/StyleGuide.pod:780
 #. ($num, $queue)
 msgid "You found %1 tickets in queue %2"
 #: docs/design_docs/string-extraction-guide.txt:47 lib/RT/StyleGuide.pod:780
 #. ($num, $queue)
 msgid "You found %1 tickets in queue %2"
-msgstr "ã\81\82ã\81ªã\81\9fã\81¯%2ã\81§ã\83\81ã\82±ã\83\83ã\83\88%1ã\82\92è¦\8bã\81¤ã\81\91ました"
+msgstr "ã\82­ã\83¥ã\83¼%2ã\81§%1件ã\81®ã\83\81ã\82±ã\83\83ã\83\88ã\81\8cã\83\92ã\83\83ã\83\88ã\81\97ました"
 
 #: html/NoAuth/Logout.html:52
 msgid "You have been logged out of RT."
 
 #: html/NoAuth/Logout.html:52
 msgid "You have been logged out of RT."
-msgstr "あなたはRTからログアウトしたままです"
+msgstr "RTからログアウトしました"
 
 #: html/SelfService/Display.html:109
 msgid "You have no permission to create tickets in that queue."
 
 #: html/SelfService/Display.html:109
 msgid "You have no permission to create tickets in that queue."
-msgstr "あなたはこのキューでチケット作成の許可がありません"
+msgstr "指定ののキューでチケット作成の許可がありません"
 
 #: lib/RT/Ticket_Overlay.pm:1964
 msgid "You may not create requests in that queue."
 
 #: lib/RT/Ticket_Overlay.pm:1964
 msgid "You may not create requests in that queue."
-msgstr "あなたはこのキューでリクエストの作成ができるでしょう"
+msgstr "指定のキューでリクエストの作成ができません"
 
 #: html/NoAuth/Logout.html:56
 msgid "You're welcome to login again"
 
 #: html/NoAuth/Logout.html:56
 msgid "You're welcome to login again"
-msgstr "ã\81\9cã\81²ã\81¾ã\81\9fã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84"
+msgstr "ã\83\88ã\83\83ã\83\97ã\83\9aã\83¼ã\82¸"
 
 #: NOT FOUND IN SOURCE
 msgid "Your %1 requests"
 
 #: NOT FOUND IN SOURCE
 msgid "Your %1 requests"
@@ -5341,7 +5336,7 @@ msgstr ""
 
 #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:55
 msgid "contains"
 
 #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:55
 msgid "contains"
-msgstr "含む"
+msgstr "が以下を含む"
 
 #: NOT FOUND IN SOURCE
 msgid "correspondence (probably) not sent"
 
 #: NOT FOUND IN SOURCE
 msgid "correspondence (probably) not sent"
@@ -5361,7 +5356,7 @@ msgstr "削除"
 
 #: lib/RT/Queue_Overlay.pm:88
 msgid "deleted"
 
 #: lib/RT/Queue_Overlay.pm:88
 msgid "deleted"
-msgstr "削除された"
+msgstr "削除"
 
 #: html/Search/Elements/PickBasics:128
 msgid "does not belong to"
 
 #: html/Search/Elements/PickBasics:128
 msgid "does not belong to"
@@ -5373,7 +5368,7 @@ msgstr "あいません"
 
 #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:56
 msgid "doesn't contain"
 
 #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:56
 msgid "doesn't contain"
-msgstr "含みません"
+msgstr "が以下を含まない"
 
 #: html/Elements/SelectEqualityOperator:59
 msgid "equal to"
 
 #: html/Elements/SelectEqualityOperator:59
 msgid "equal to"
@@ -5422,15 +5417,15 @@ msgstr "ID"
 
 #: html/Elements/SelectBoolean:53 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:57 html/Search/Elements/PickBasics:175 html/Search/Elements/PickBasics:74 html/Search/Elements/PickBasics:90 html/Search/Elements/PickCFs:53
 msgid "is"
 
 #: html/Elements/SelectBoolean:53 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:57 html/Search/Elements/PickBasics:175 html/Search/Elements/PickBasics:74 html/Search/Elements/PickBasics:90 html/Search/Elements/PickCFs:53
 msgid "is"
-msgstr "ã\81§ã\81\99"
+msgstr "ã\81\8c以ä¸\8bã\81§ã\81\82ã\82\8b"
 
 #: html/Elements/SelectBoolean:57 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:58 html/Search/Elements/PickBasics:176 html/Search/Elements/PickBasics:75 html/Search/Elements/PickBasics:91 html/Search/Elements/PickCFs:54
 msgid "isn't"
 
 #: html/Elements/SelectBoolean:57 html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectMatch:58 html/Search/Elements/PickBasics:176 html/Search/Elements/PickBasics:75 html/Search/Elements/PickBasics:91 html/Search/Elements/PickCFs:54
 msgid "isn't"
-msgstr "ã\81§ない"
+msgstr "ã\81\8c以ä¸\8bã\81§ã\81¯ない"
 
 #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59
 msgid "less than"
 
 #: html/Elements/SelectCustomFieldOperator:59 html/Elements/SelectEqualityOperator:59
 msgid "less than"
-msgstr "ã\82\88ã\82\8aå°\91ã\81ªい"
+msgstr "ã\82\88ã\82\8aå°\8fã\81\95い"
 
 #: html/Search/Elements/PickBasics:60
 msgid "matches"
 
 #: html/Search/Elements/PickBasics:60
 msgid "matches"
@@ -5438,7 +5433,7 @@ msgstr "合う"
 
 #: lib/RT/Date.pm:334
 msgid "min"
 
 #: lib/RT/Date.pm:334
 msgid "min"
-msgstr "最低"
+msgstr ""
 
 #: html/Ticket/Update.html:64
 msgid "minutes"
 
 #: html/Ticket/Update.html:64
 msgid "minutes"
@@ -5454,7 +5449,7 @@ msgstr "月"
 
 #: lib/RT/Queue_Overlay.pm:83
 msgid "new"
 
 #: lib/RT/Queue_Overlay.pm:83
 msgid "new"
-msgstr "新しい"
+msgstr "新"
 
 #: html/Admin/Elements/PickCustomFields:64 html/Admin/Elements/PickObjects:63
 msgid "no name"
 
 #: html/Admin/Elements/PickCustomFields:64 html/Admin/Elements/PickObjects:63
 msgid "no name"
@@ -5474,7 +5469,7 @@ msgstr "等しくない"
 
 #: html/SelfService/Elements/MyRequests:83 lib/RT/Queue_Overlay.pm:84
 msgid "open"
 
 #: html/SelfService/Elements/MyRequests:83 lib/RT/Queue_Overlay.pm:84
 msgid "open"
-msgstr "開く"
+msgstr "着手"
 
 #: lib/RT/Group_Overlay.pm:227
 #. ($self->Name, $user->Name)
 
 #: lib/RT/Group_Overlay.pm:227
 #. ($self->Name, $user->Name)
@@ -5488,11 +5483,11 @@ msgstr "キュー %1 %2"
 
 #: lib/RT/Queue_Overlay.pm:87
 msgid "rejected"
 
 #: lib/RT/Queue_Overlay.pm:87
 msgid "rejected"
-msgstr "拒否されました"
+msgstr "拒否"
 
 #: lib/RT/Queue_Overlay.pm:86
 msgid "resolved"
 
 #: lib/RT/Queue_Overlay.pm:86
 msgid "resolved"
-msgstr "分解されました"
+msgstr "解決済み"
 
 #: lib/RT/Date.pm:330
 msgid "sec"
 
 #: lib/RT/Date.pm:330
 msgid "sec"
@@ -5508,7 +5503,7 @@ msgstr ""
 
 #: lib/RT/Queue_Overlay.pm:85
 msgid "stalled"
 
 #: lib/RT/Queue_Overlay.pm:85
 msgid "stalled"
-msgstr "止まりました"
+msgstr "保留"
 
 #: lib/RT/Group_Overlay.pm:230
 #. ($self->Type)
 
 #: lib/RT/Group_Overlay.pm:230
 #. ($self->Type)
@@ -5555,3 +5550,7 @@ msgstr "テンプレート %1と"
 msgid "years"
 msgstr "年"
 
 msgid "years"
 msgstr "年"
 
+#: share/html/Elements/Quicksearch, et al
+msgid "New"
+msgstr "新規"
+
index 91547c8..51892b0 100644 (file)
@@ -1,5 +1,9 @@
+#
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
+"Project-Id-Version: RT 3.4.x\n"
+"PO-Revision-Date: 2005-10-03 13:50-0400\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
index 995ab78..92b2ed8 100644 (file)
@@ -1,10 +1,11 @@
+#
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
-"Project-Id-Version: RT 3.0.11\n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2003-04-01 06:06+0200\n"
 "POT-Creation-Date: 2003-04-01 06:06+0200\n"
-"PO-Revision-Date: 2003-05-01 04:47+0200\n"
+"PO-Revision-Date: 2005-10-03 13:50-0400\n"
 "Last-Translator: Ronny Pettersen <ronny.pettersen@edb.com>\n"
 "Last-Translator: Ronny Pettersen <ronny.pettersen@edb.com>\n"
-"Language-Team: RT Norwegian <rt@thefeed.no>\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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index 3faa4ec..e7a334b 100644 (file)
@@ -2,9 +2,9 @@
 #
 msgid ""
 msgstr ""
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: RT 3.2.2\n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2007-01-18 11:36+0800\n"
 "POT-Creation-Date: 2007-01-18 11:36+0800\n"
-"PO-Revision-Date: 2005-01-18 02:00+0800\n"
+"PO-Revision-Date: 2005-10-03 13:51-0400\n"
 "Last-Translator: Piotr Śliwa <piotr.sliwa@comarch.pl>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
 "Last-Translator: Piotr Śliwa <piotr.sliwa@comarch.pl>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
index cbf92c5..cf172b1 100644 (file)
@@ -1,9 +1,9 @@
-# $Id: pt_br.po,v 1.1.1.4 2005-10-15 09:10:38 ivan Exp $
+# $Id: pt_br.po,v 1.1.1.5 2006-10-17 08:50:11 ivan Exp $
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
-"Project-Id-Version: RT 2.1.x\n"
+"Project-Id-Version: RT 3.4.x\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\n"
 "POT-Creation-Date: 2002-05-02 11:36+0800\n"
-"PO-Revision-Date: 2002-12-07 23:20-02:00\n"
+"PO-Revision-Date: 2005-10-03 13:51-0400\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"
 "Last-Translator: Gustavo Chaves <gustavo@cpqd.com.br>\n"
 "Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "MIME-Version: 1.0\n"
index cd93e04..8688cde 100644 (file)
@@ -1,15 +1,15 @@
-# translation of ru-nortfm.po to Russian
-# translation of ru.po to Russian
-# Andrew Kornilov <andy@eva.dp.ua>, 2004, 2005.
+# translation of Request Tracker en.po to Russian
+# Andrew Kornilov <hiddenman@tpway.com>, 2004, 2005.
+# 
+# 
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
-"Last-Translator: Andrew Kornilov <andy@eva.dp.ua>\n"
-"PO-Revision-Date: 2005-03-11 15:38+0200\n"
-"Language-Team: Russian <ru@li.org>\n"
+"Last-Translator: Andrew Kornilov <hiddenman@tpway.com>\n"
+"PO-Revision-Date: 2005-09-25 22:16+0300\n"
+"Language-Team: rt-devel <rt-devel@lists.fsck.com>\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-"Project-Id-Version: ru\n"
+"Project-Id-Version: RT 3.4.x\n"
 "MIME-Version: 1.0\n"
 
 #: NOT FOUND IN SOURCE
 "MIME-Version: 1.0\n"
 
 #: NOT FOUND IN SOURCE
@@ -24,7 +24,7 @@ msgstr "&#8470;"
 msgid "#%1: %2"
 msgstr ""
 
 msgid "#%1: %2"
 msgstr ""
 
-#: lib/RT/Record.pm:926
+#: lib/RT/Record.pm:925
 #. ($label)
 msgid "$prefix %1"
 msgstr ""
 #. ($label)
 msgid "$prefix %1"
 msgstr ""
@@ -34,35 +34,35 @@ msgstr ""
 msgid "%1 #%2"
 msgstr ""
 
 msgid "%1 #%2"
 msgstr ""
 
-#: lib/RT/Date.pm:361
+#: lib/RT/Date.pm:360
 #. ($s, $time_unit)
 msgid "%1 %2"
 msgstr ""
 
 #. ($s, $time_unit)
 msgid "%1 %2"
 msgstr ""
 
-#: lib/RT/Date.pm:397
+#: lib/RT/Date.pm:396
 #. ($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"
 
 #. ($self->GetWeekday($wday), $self->GetMonth($mon), map {sprintf "%02d", $_} ($mday, $hour, $min, $sec), ($year+1900))
 msgid "%1 %2 %3 %4:%5:%6 %7"
 msgstr "%1 %2 %3 %4:%5:%6 %7"
 
-#: lib/RT/Record.pm:1671 lib/RT/Transaction_Overlay.pm:636 lib/RT/Transaction_Overlay.pm:679
+#: lib/RT/Record.pm:1674 lib/RT/Transaction_Overlay.pm.orig:634 lib/RT/Transaction_Overlay.pm.orig:677 lib/RT/Transaction_Overlay.pm:634 lib/RT/Transaction_Overlay.pm:677
 #. ($cf->Name, $new_value->Content)
 #. ($field, $self->NewValue)
 #. ($self->Field, $principal->Object->Name)
 msgid "%1 %2 added"
 msgstr "%1 %2 добавлен"
 
 #. ($cf->Name, $new_value->Content)
 #. ($field, $self->NewValue)
 #. ($self->Field, $principal->Object->Name)
 msgid "%1 %2 added"
 msgstr "%1 %2 добавлен"
 
-#: lib/RT/Date.pm:358
+#: lib/RT/Date.pm:357
 #. ($s, $time_unit)
 msgid "%1 %2 ago"
 msgstr "%1 %2 назад"
 
 #. ($s, $time_unit)
 msgid "%1 %2 ago"
 msgstr "%1 %2 назад"
 
-#: lib/RT/Record.pm:1678 lib/RT/Transaction_Overlay.pm:643
+#: lib/RT/Record.pm:1681 lib/RT/Transaction_Overlay.pm.orig:641 lib/RT/Transaction_Overlay.pm:641
 #. ($cf->Name, $old_content,                $new_value->Content)
 #. ($field, $self->OldValue, $self->NewValue)
 msgid "%1 %2 changed to %3"
 msgstr "%1 %2 изменено на %3"
 
 #. ($cf->Name, $old_content,                $new_value->Content)
 #. ($field, $self->OldValue, $self->NewValue)
 msgid "%1 %2 changed to %3"
 msgstr "%1 %2 изменено на %3"
 
-#: lib/RT/Record.pm:1675 lib/RT/Transaction_Overlay.pm:639 lib/RT/Transaction_Overlay.pm:685
+#: lib/RT/Record.pm:1678 lib/RT/Transaction_Overlay.pm.orig:637 lib/RT/Transaction_Overlay.pm.orig:683 lib/RT/Transaction_Overlay.pm:637 lib/RT/Transaction_Overlay.pm:683
 #. ($cf->Name, $old_value->Content)
 #. ($field, $self->OldValue)
 #. ($self->Field, $principal->Object->Name)
 #. ($cf->Name, $old_value->Content)
 #. ($field, $self->OldValue)
 #. ($self->Field, $principal->Object->Name)
@@ -73,8 +73,9 @@ msgstr "%1 %2 удален"
 msgid "%1 %2 of group %3"
 msgstr "%1 %2 of group %3"
 
 msgid "%1 %2 of group %3"
 msgstr "%1 %2 of group %3"
 
-#: html/Admin/Elements/EditScrips:65 html/Admin/Elements/ListGlobalScrips:64 html/Ticket/Elements/PreviewScrips:98
+#: html/Admin/Elements/EditScrips:65 html/Admin/Elements/ListGlobalScrips:49 html/Ticket/Elements/PreviewScrips:98
 #. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name))
 #. (loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name))
+#. ($scrip->ConditionObj->Name, $scrip->ActionObj->Name, $scrip->TemplateObj->Name)
 msgid "%1 %2 with template %3"
 msgstr "%1 %2 с шаблоном %3"
 
 msgid "%1 %2 with template %3"
 msgstr "%1 %2 с шаблоном %3"
 
@@ -126,26 +127,16 @@ msgstr ""
 msgid "%1 - Specify the search module you want to use"
 msgstr ""
 
 msgid "%1 - Specify the search module you want to use"
 msgstr ""
 
-     $RT::VERSION, 
-     '2005', 
-    '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',)
-     $RT::VERSION, 
-     '2005', 
-    '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',)
 #: html/Elements/Footer:58
 #: html/Elements/Footer:58
-#. ('&#187;&#124;&#171;', 
-     $RT::VERSION, 
-     '2005', 
-    '<a href="http://www.bestpractical.com?rt='.$RT::VERSION.'">Best Practical Solutions, LLC</a>',)
 msgid "%1 RT %2 Copyright 1996-%3 %4."
 msgstr ""
 
 msgid "%1 RT %2 Copyright 1996-%3 %4."
 msgstr ""
 
-#: lib/RT/ScripAction_Overlay.pm:151
+#: lib/RT/ScripAction_Overlay.pm:139
 #. ($self->Id)
 msgid "%1 ScripAction loaded"
 msgstr "%1 СкриплетНаДействие загружен"
 
 #. ($self->Id)
 msgid "%1 ScripAction loaded"
 msgstr "%1 СкриплетНаДействие загружен"
 
-#: lib/RT/Record.pm:1708
+#: lib/RT/Record.pm:1711
 #. ($args{'Value'}, $cf->Name)
 msgid "%1 added as a value for %2"
 msgstr "%1 добавлено как значение для %2"
 #. ($args{'Value'}, $cf->Name)
 msgid "%1 added as a value for %2"
 msgstr "%1 добавлено как значение для %2"
@@ -162,31 +153,31 @@ msgstr "%1 псевдонимы требуют идентификатор зая
 msgid "%1 aliases require a TicketId to work on (from %2) %3"
 msgstr "%1 псевдонимы требуют идентификатор заявки для продолжения работы над (от %2) %3"
 
 msgid "%1 aliases require a TicketId to work on (from %2) %3"
 msgstr "%1 псевдонимы требуют идентификатор заявки для продолжения работы над (от %2) %3"
 
-#: lib/RT/Link_Overlay.pm:145 lib/RT/Link_Overlay.pm:152
+#: lib/RT/Link_Overlay.pm:144 lib/RT/Link_Overlay.pm:151
 #. ($args{'Base'})
 #. ($args{'Target'})
 msgid "%1 appears to be a local object, but can't be found in the database"
 msgstr "%1 является локальным объектом, но не найден в базе данных"
 
 #. ($args{'Base'})
 #. ($args{'Target'})
 msgid "%1 appears to be a local object, but can't be found in the database"
 msgstr "%1 является локальным объектом, но не найден в базе данных"
 
-#: html/Ticket/Elements/ShowDates:73 lib/RT/Transaction_Overlay.pm:520
+#: html/Ticket/Elements/ShowDates:73 lib/RT/Transaction_Overlay.pm.orig:518 lib/RT/Transaction_Overlay.pm:518
 #. ($self->BriefDescription , $self->CreatorObj->Name)
 #. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name)
 msgid "%1 by %2"
 msgstr "%1 пользователем %2"
 
 #. ($self->BriefDescription , $self->CreatorObj->Name)
 #. ($Ticket->LastUpdatedAsString, $Ticket->LastUpdatedByObj->Name)
 msgid "%1 by %2"
 msgstr "%1 пользователем %2"
 
-#: lib/RT/Transaction_Overlay.pm:777 lib/RT/Transaction_Overlay.pm:786 lib/RT/Transaction_Overlay.pm:789
+#: lib/RT/Transaction_Overlay.pm.orig:775 lib/RT/Transaction_Overlay.pm.orig:784 lib/RT/Transaction_Overlay.pm.orig:787 lib/RT/Transaction_Overlay.pm:775 lib/RT/Transaction_Overlay.pm:784 lib/RT/Transaction_Overlay.pm:787
 #. ($self->Field , $q1->Name , $q2->Name)
 #. ($self->Field, $t2->AsString, $t1->AsString)
 #. ($self->Field, ($self->OldValue? "'".$self->OldValue ."'" : $self->loc("(no value)")) , "'". $self->NewValue."'")
 msgid "%1 changed from %2 to %3"
 msgstr "%1 изменена с %2 на %3"
 
 #. ($self->Field , $q1->Name , $q2->Name)
 #. ($self->Field, $t2->AsString, $t1->AsString)
 #. ($self->Field, ($self->OldValue? "'".$self->OldValue ."'" : $self->loc("(no value)")) , "'". $self->NewValue."'")
 msgid "%1 changed from %2 to %3"
 msgstr "%1 изменена с %2 на %3"
 
-#: html/Search/Build.html:212
+#: html/Search/Build.html:192
 #. ($Description)
 msgid "%1 copy"
 msgstr "%1 копия"
 
 #. ($Description)
 msgid "%1 copy"
 msgstr "%1 копия"
 
-#: lib/RT/Record.pm:930
+#: lib/RT/Record.pm:928
 msgid "%1 could not be set to %2."
 msgstr "%1 невозможно установить в %2."
 
 msgid "%1 could not be set to %2."
 msgstr "%1 невозможно установить в %2."
 
@@ -194,17 +185,17 @@ msgstr "%1 невозможно установить в %2."
 msgid "%1 couldn't init a transaction (%2)\\n"
 msgstr "%1 не может инициировать транзакцию (%2)\\n"
 
 msgid "%1 couldn't init a transaction (%2)\\n"
 msgstr "%1 не может инициировать транзакцию (%2)\\n"
 
-#: lib/RT/Ticket_Overlay.pm:2743
+#: lib/RT/Ticket_Overlay.pm:2710
 #. ($self)
 msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent."
 msgstr "%1 не может изменить статус на Решено. Возможно, база данных RT испорчена."
 
 #. ($self)
 msgid "%1 couldn't set status to resolved. RT's Database may be inconsistent."
 msgstr "%1 не может изменить статус на Решено. Возможно, база данных RT испорчена."
 
-#: lib/RT/Transaction_Overlay.pm:560
+#: lib/RT/Transaction_Overlay.pm.orig:558 lib/RT/Transaction_Overlay.pm:558
 #. ($obj_type)
 msgid "%1 created"
 msgstr "%1 создана"
 
 #. ($obj_type)
 msgid "%1 created"
 msgstr "%1 создана"
 
-#: lib/RT/Transaction_Overlay.pm:565
+#: lib/RT/Transaction_Overlay.pm.orig:563 lib/RT/Transaction_Overlay.pm:563
 #. ($obj_type)
 msgid "%1 deleted"
 msgstr "%1 удалена"
 #. ($obj_type)
 msgid "%1 deleted"
 msgstr "%1 удалена"
@@ -227,7 +218,7 @@ msgstr "%1 заявок с наивысшими приоритетами, соз
 msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron."
 msgstr ""
 
 msgid "%1 is a tool to act on tickets from an external scheduling tool, such as cron."
 msgstr ""
 
-#: lib/RT/Queue_Overlay.pm:860
+#: lib/RT/Queue_Overlay.pm:847
 #. ($principal->Object->Name, $args{'Type'})
 msgid "%1 is no longer a %2 for this queue."
 msgstr "%1 больше не является %2 для этой очереди."
 #. ($principal->Object->Name, $args{'Type'})
 msgid "%1 is no longer a %2 for this queue."
 msgstr "%1 больше не является %2 для этой очереди."
@@ -266,7 +257,7 @@ msgstr "%1 последних неназначенных заявок"
 msgid "%1 not shown"
 msgstr "%1 не отображается"
 
 msgid "%1 not shown"
 msgstr "%1 не отображается"
 
-#: lib/RT/CustomField_Overlay.pm:827
+#: lib/RT/CustomField_Overlay.pm:813
 msgid "%1 objects"
 msgstr "%1 объектов"
 
 msgid "%1 objects"
 msgstr "%1 объектов"
 
@@ -300,11 +291,11 @@ msgstr "%1 решит все заявки, входящие в группово
 msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request."
 msgstr "%1 приостановит заявки, которые зависят от запроса или включены в него"
 
 msgid "%1 will stall a [local] BASE if it's dependent [or member] of a linked up request."
 msgstr "%1 приостановит заявки, которые зависят от запроса или включены в него"
 
-#: lib/RT/CustomField_Overlay.pm:828
+#: lib/RT/CustomField_Overlay.pm:814
 msgid "%1's %2 objects"
 msgstr "%1 %2 объектов"
 
 msgid "%1's %2 objects"
 msgstr "%1 %2 объектов"
 
-#: lib/RT/CustomField_Overlay.pm:829
+#: lib/RT/CustomField_Overlay.pm:815
 msgid "%1's %2's %3 objects"
 msgstr ""
 
 msgid "%1's %2's %3 objects"
 msgstr ""
 
@@ -314,7 +305,7 @@ msgstr ""
 msgid "%1's saved searches"
 msgstr "%1 сохраненных запросов"
 
 msgid "%1's saved searches"
 msgstr "%1 сохраненных запросов"
 
-#: lib/RT/Transaction_Overlay.pm:470
+#: lib/RT/Transaction_Overlay.pm.orig:468 lib/RT/Transaction_Overlay.pm:468
 #. ($self)
 msgid "%1: no attachment specified"
 msgstr "%1: без вложений"
 #. ($self)
 msgid "%1: no attachment specified"
 msgstr "%1: без вложений"
@@ -373,8 +364,8 @@ msgstr "(Введите идентификаторы или ссылки на з
 #: html/Admin/Queues/Modify.html:75 html/Admin/Queues/Modify.html:81
 #. ($RT::CorrespondAddress)
 #. ($RT::CommentAddress)
 #: html/Admin/Queues/Modify.html:75 html/Admin/Queues/Modify.html:81
 #. ($RT::CorrespondAddress)
 #. ($RT::CommentAddress)
-msgid "(If left blank, will default to %1)"
-msgstr "(Если пустое, то по-умолчанию равно %1)"
+msgid "(If left blank, will default to %1"
+msgstr "(Если пустое, то по-умолчанию равно %1"
 
 #: NOT FOUND IN SOURCE
 msgid "(No Value)"
 
 #: NOT FOUND IN SOURCE
 msgid "(No Value)"
@@ -388,7 +379,7 @@ msgstr "(Нет дополнительных полей)"
 msgid "(No members)"
 msgstr "(Нет пользователей)"
 
 msgid "(No members)"
 msgstr "(Нет пользователей)"
 
-#: html/Admin/Elements/EditScrips:53 html/Admin/Elements/ListGlobalScrips:49
+#: html/Admin/Elements/EditScrips:53 html/Admin/Elements/ListGlobalScrips:53
 msgid "(No scrips)"
 msgstr "(Нет скриплетов)"
 
 msgid "(No scrips)"
 msgstr "(Нет скриплетов)"
 
@@ -426,7 +417,7 @@ msgstr "(Отправить копию сообщения об этом обно
 
 #: html/Admin/Elements/EditScrip:102
 msgid "(Use these fields when you choose 'User Defined' for a condition or action)"
 
 #: html/Admin/Elements/EditScrip:102
 msgid "(Use these fields when you choose 'User Defined' for a condition or action)"
-msgstr "(Используйте эти поля при выборе 'Задано пользователем' для уловий или действий)"
+msgstr "(Используйте эти поля при выборе 'Задано пользователем' для условий или действий)"
 
 #: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54
 msgid "(empty)"
 
 #: html/Admin/Groups/index.html:57 html/User/Groups/index.html:54
 msgid "(empty)"
@@ -448,7 +439,7 @@ msgstr "(нет имени)"
 msgid "(no subject)"
 msgstr "(нет темы)"
 
 msgid "(no subject)"
 msgstr "(нет темы)"
 
-#: html/Admin/Elements/SelectRights:72 html/Elements/EditCustomFieldSelect:60 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:65 lib/RT/Transaction_Overlay.pm:580
+#: html/Admin/Elements/SelectRights:72 html/Elements/EditCustomFieldSelect:60 html/Elements/SelectCustomFieldValue:51 html/Elements/ShowCustomFields:65 lib/RT/Transaction_Overlay.pm.orig:578 lib/RT/Transaction_Overlay.pm:578
 msgid "(no value)"
 msgstr "(нет значения)"
 
 msgid "(no value)"
 msgstr "(нет значения)"
 
@@ -476,7 +467,7 @@ msgstr "(в ожидании других заявок)"
 msgid "(requestor's group)"
 msgstr "(группа автора заявки)"
 
 msgid "(requestor's group)"
 msgstr "(группа автора заявки)"
 
-#: html/Admin/Users/Modify.html:71
+#: html/Admin/Users/Modify.html.orig:71 html/Admin/Users/Modify.html:71
 msgid "(required)"
 msgstr "(требуется)"
 
 msgid "(required)"
 msgstr "(требуется)"
 
@@ -504,10 +495,6 @@ msgstr ""
 msgid "<%$_%>"
 msgstr ""
 
 msgid "<%$_%>"
 msgstr ""
 
-#: html/Search/Elements/DisplayOptions:65
-msgid "<%$field%>"
-msgstr ""
-
 #: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:47 lib/RT/StyleGuide.pod:787
 #. ($m->scomp('/Elements/SelectNewTicketQueue'))
 msgid "<input type=\"submit\" value=\"New ticket in\">&nbsp;%1"
 #: docs/design_docs/string-extraction-guide.txt:54 html/Elements/CreateTicket:47 lib/RT/StyleGuide.pod:787
 #. ($m->scomp('/Elements/SelectNewTicketQueue'))
 msgid "<input type=\"submit\" value=\"New ticket in\">&nbsp;%1"
@@ -517,10 +504,6 @@ msgstr "<input type=\"submit\" value=\"Создать заявку в очере
 msgid "A blank template"
 msgstr "Пустой шаблон"
 
 msgid "A blank template"
 msgstr "Пустой шаблон"
 
-#: html/Admin/Users/Modify.html:363
-msgid "A password was not set, so user won't be able to login."
-msgstr ""
-
 #: NOT FOUND IN SOURCE
 msgid "ACE could not be deleted"
 msgstr "Невозможно удалить ACE"
 #: NOT FOUND IN SOURCE
 msgid "ACE could not be deleted"
 msgstr "Невозможно удалить ACE"
@@ -529,17 +512,17 @@ msgstr "Невозможно удалить ACE"
 msgid "ACE could not be found"
 msgstr "Невозможно найти ACE"
 
 msgid "ACE could not be found"
 msgstr "Невозможно найти ACE"
 
-#: lib/RT/ACE_Overlay.pm:175 lib/RT/Principal_Overlay.pm:219
+#: lib/RT/ACE_Overlay.pm:181 lib/RT/Principal_Overlay.pm:224
 msgid "ACE not found"
 msgstr "ACE не найден"
 
 msgid "ACE not found"
 msgstr "ACE не найден"
 
-#: lib/RT/ACE_Overlay.pm:854
+#: lib/RT/ACE_Overlay.pm:866
 msgid "ACEs can only be created and deleted."
 msgstr "ACEы можно только создавать и удалять"
 
 #: html/Search/Elements/SelectAndOr:46
 msgid "AND"
 msgid "ACEs can only be created and deleted."
 msgstr "ACEы можно только создавать и удалять"
 
 #: html/Search/Elements/SelectAndOr:46
 msgid "AND"
-msgstr ""
+msgstr "И"
 
 #: NOT FOUND IN SOURCE
 msgid "Aborting to avoid unintended ticket modifications.\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "Aborting to avoid unintended ticket modifications.\\n"
@@ -549,7 +532,7 @@ msgstr "Прекращаем работу во избежание нежелат
 msgid "About me"
 msgstr "Обо мне"
 
 msgid "About me"
 msgstr "Обо мне"
 
-#: html/Admin/Users/Modify.html:106
+#: html/Admin/Users/Modify.html.orig:106 html/Admin/Users/Modify.html:106
 msgid "Access control"
 msgstr "Права доступа"
 
 msgid "Access control"
 msgstr "Права доступа"
 
@@ -557,7 +540,7 @@ msgstr "Права доступа"
 msgid "Action"
 msgstr "Действие"
 
 msgid "Action"
 msgstr "Действие"
 
-#: lib/RT/Scrip_Overlay.pm:173
+#: lib/RT/Scrip_Overlay.pm:172
 #. ($args{'ScripAction'})
 msgid "Action %1 not found"
 msgstr "Действие %1 не найдено"
 #. ($args{'ScripAction'})
 msgid "Action %1 not found"
 msgstr "Действие %1 не найдено"
@@ -568,13 +551,13 @@ msgstr "Действие принято."
 
 #: bin/rt-crontool:148
 msgid "Action committed.\\n"
 
 #: bin/rt-crontool:148
 msgid "Action committed.\\n"
-msgstr ""
+msgstr "Действие зафиксировано.\\n"
 
 #: bin/rt-crontool:144
 msgid "Action prepared..."
 msgstr "Действие подготовлено..."
 
 
 #: bin/rt-crontool:144
 msgid "Action prepared..."
 msgstr "Действие подготовлено..."
 
-#: html/Search/Build.html:85
+#: html/Search/Build.html:65
 msgid "Add"
 msgstr "Добавить"
 
 msgid "Add"
 msgstr "Добавить"
 
@@ -588,7 +571,7 @@ msgstr "Добавить Копию"
 
 #: html/Search/Elements/EditFormat:49
 msgid "Add Columns"
 
 #: html/Search/Elements/EditFormat:49
 msgid "Add Columns"
-msgstr ""
+msgstr "Добавить колонки"
 
 #: html/Search/Elements/PickCriteria:46
 msgid "Add Criteria"
 
 #: html/Search/Elements/PickCriteria:46
 msgid "Add Criteria"
@@ -630,7 +613,7 @@ msgstr "Добавить скриплет для этой очереди"
 msgid "Add a scrip which will apply to all queues"
 msgstr "Добавить скриплет, который будет действовать на все очереди"
 
 msgid "Add a scrip which will apply to all queues"
 msgstr "Добавить скриплет, который будет действовать на все очереди"
 
-#: html/Search/Build.html:85
+#: html/Search/Build.html:65
 msgid "Add additional criteria"
 msgstr "Добавить дополнительный критерий"
 
 msgid "Add additional criteria"
 msgstr "Добавить дополнительный критерий"
 
@@ -655,7 +638,7 @@ msgstr "Добавить, удалить или изменить значени
 msgid "AddNextState"
 msgstr "ДобавлятьСледующееСостояние"
 
 msgid "AddNextState"
 msgstr "ДобавлятьСледующееСостояние"
 
-#: lib/RT/Queue_Overlay.pm:760
+#: lib/RT/Queue_Overlay.pm:747
 #. ($args{'Type'})
 msgid "Added principal as a %1 for this queue"
 msgstr "Пользователь добавлен как %1 для этой очереди"
 #. ($args{'Type'})
 msgid "Added principal as a %1 for this queue"
 msgstr "Пользователь добавлен как %1 для этой очереди"
@@ -665,11 +648,11 @@ msgstr "Пользователь добавлен как %1 для этой оч
 msgid "Added principal as a %1 for this ticket"
 msgstr "Пользователь добавлен как %1 для этой заявки"
 
 msgid "Added principal as a %1 for this ticket"
 msgstr "Пользователь добавлен как %1 для этой заявки"
 
-#: html/Admin/Users/Modify.html:146 html/User/Prefs.html:133
+#: html/Admin/Users/Modify.html.orig:146 html/Admin/Users/Modify.html:146 html/User/Prefs.html:133
 msgid "Address1"
 msgstr "Адрес1"
 
 msgid "Address1"
 msgstr "Адрес1"
 
-#: html/Admin/Users/Modify.html:151 html/User/Prefs.html:137
+#: html/Admin/Users/Modify.html.orig:151 html/Admin/Users/Modify.html:151 html/User/Prefs.html:137
 msgid "Address2"
 msgstr "Адрес2"
 
 msgid "Address2"
 msgstr "Адрес2"
 
@@ -709,7 +692,7 @@ msgstr "Основные параметры очереди"
 msgid "AdminAllPersonalGroups"
 msgstr "АдминистрироватьВсеПерсональныеГруппы"
 
 msgid "AdminAllPersonalGroups"
 msgstr "АдминистрироватьВсеПерсональныеГруппы"
 
-#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:60 lib/RT/ACE_Overlay.pm:114
+#: etc/initialdata:56 html/Ticket/Elements/ShowPeople:60 lib/RT/ACE_Overlay.pm:113
 msgid "AdminCc"
 msgstr "АдминистративнаяКопия"
 
 msgid "AdminCc"
 msgstr "АдминистративнаяКопия"
 
@@ -737,15 +720,15 @@ msgstr "АдминистрироватьГруппу"
 msgid "AdminGroupMembership"
 msgstr "АдминистрироватьЧленствоВГруппах"
 
 msgid "AdminGroupMembership"
 msgstr "АдминистрироватьЧленствоВГруппах"
 
-#: lib/RT/System.pm:81
+#: lib/RT/System.pm:80
 msgid "AdminOwnPersonalGroups"
 msgstr "АдминистрироватьСобственныеГруппы"
 
 msgid "AdminOwnPersonalGroups"
 msgstr "АдминистрироватьСобственныеГруппы"
 
-#: lib/RT/Queue_Overlay.pm:93
+#: lib/RT/Queue_Overlay.pm:92
 msgid "AdminQueue"
 msgstr "АдминистрироватьОчередь"
 
 msgid "AdminQueue"
 msgstr "АдминистрироватьОчередь"
 
-#: lib/RT/System.pm:82
+#: lib/RT/System.pm:81
 msgid "AdminUsers"
 msgstr "АдминистрироватьПользователей"
 
 msgid "AdminUsers"
 msgstr "АдминистрироватьПользователей"
 
@@ -807,7 +790,7 @@ msgstr "Всегода отправлять сообщения авторам з
 
 #: html/Search/Elements/EditQuery:56
 msgid "And/Or"
 
 #: html/Search/Elements/EditQuery:56
 msgid "And/Or"
-msgstr ""
+msgstr "И/Или"
 
 #: html/Admin/CustomFields/Modify.html:73 html/Admin/Elements/CustomFieldTabs:83
 msgid "Applies to"
 
 #: html/Admin/CustomFields/Modify.html:73 html/Admin/Elements/CustomFieldTabs:83
 msgid "Applies to"
@@ -866,7 +849,7 @@ msgstr "Подтвердить"
 msgid "Approver's notes: %1"
 msgstr "Примечания подтвердившего: %1"
 
 msgid "Approver's notes: %1"
 msgstr "Примечания подтвердившего: %1"
 
-#: lib/RT/Date.pm:440
+#: lib/RT/Date.pm:437
 msgid "Apr."
 msgstr "Апр."
 
 msgid "Apr."
 msgstr "Апр."
 
@@ -878,11 +861,11 @@ msgstr "Апрель"
 msgid "Ascending"
 msgstr "В порядке возрастания"
 
 msgid "Ascending"
 msgstr "В порядке возрастания"
 
-#: lib/RT/Queue_Overlay.pm:97
+#: lib/RT/Queue_Overlay.pm:96
 msgid "Assign and remove custom fields"
 msgstr "Назначение и удаление дополнительных полей"
 
 msgid "Assign and remove custom fields"
 msgstr "Назначение и удаление дополнительных полей"
 
-#: lib/RT/Queue_Overlay.pm:97
+#: lib/RT/Queue_Overlay.pm:96
 msgid "AssignCustomFields"
 msgstr "НазначатьДополнительныеПоля"
 
 msgid "AssignCustomFields"
 msgstr "НазначатьДополнительныеПоля"
 
@@ -903,11 +886,11 @@ msgstr "Вложенный файл"
 msgid "Attachment '%1' could not be loaded"
 msgstr "Вложение '%1' не может быть загружено"
 
 msgid "Attachment '%1' could not be loaded"
 msgstr "Вложение '%1' не может быть загружено"
 
-#: lib/RT/Transaction_Overlay.pm:478
+#: lib/RT/Transaction_Overlay.pm.orig:476 lib/RT/Transaction_Overlay.pm:476
 msgid "Attachment created"
 msgstr "Вложение создано"
 
 msgid "Attachment created"
 msgstr "Вложение создано"
 
-#: lib/RT/Tickets_Overlay.pm:1673
+#: lib/RT/Tickets_Overlay.pm:1672
 msgid "Attachment filename"
 msgstr "Имя файла для вложения"
 
 msgid "Attachment filename"
 msgstr "Имя файла для вложения"
 
@@ -915,11 +898,11 @@ msgstr "Имя файла для вложения"
 msgid "Attachments"
 msgstr "Вложения"
 
 msgid "Attachments"
 msgstr "Вложения"
 
-#: lib/RT/Attributes_Overlay.pm:172
+#: lib/RT/Attributes_Overlay.pm:170
 msgid "Attribute Deleted"
 msgstr "Атрибут удален"
 
 msgid "Attribute Deleted"
 msgstr "Атрибут удален"
 
-#: lib/RT/Date.pm:444
+#: lib/RT/Date.pm:441
 msgid "Aug."
 msgstr "Авг."
 
 msgid "Aug."
 msgstr "Авг."
 
@@ -975,7 +958,7 @@ msgstr "Скрытая копия"
 msgid "Be sure to save your changes"
 msgstr "Не забудьте сохранить настройки"
 
 msgid "Be sure to save your changes"
 msgstr "Не забудьте сохранить настройки"
 
-#: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:360
+#: html/Elements/SelectDateRelation:55 lib/RT/CurrentUser.pm:358
 msgid "Before"
 msgstr "До"
 
 msgid "Before"
 msgstr "До"
 
@@ -997,7 +980,7 @@ msgstr "Пустой"
 
 #: html/Search/Elements/EditFormat:84
 msgid "Bold"
 
 #: html/Search/Elements/EditFormat:84
 msgid "Bold"
-msgstr ""
+msgstr "Жирный"
 
 #: NOT FOUND IN SOURCE
 msgid "Bookmarkable URL for this search"
 
 #: NOT FOUND IN SOURCE
 msgid "Bookmarkable URL for this search"
@@ -1015,28 +998,28 @@ msgstr "Сокращенные заголовки"
 msgid "Bulk ticket update"
 msgstr "Множественное обновление заявки"
 
 msgid "Bulk ticket update"
 msgstr "Множественное обновление заявки"
 
-#: lib/RT/User_Overlay.pm:1722
+#: lib/RT/User_Overlay.pm:1717
 msgid "Can not modify system users"
 msgstr "Невомзожно изменить системных пользователей"
 
 msgid "Can not modify system users"
 msgstr "Невомзожно изменить системных пользователей"
 
-#: lib/RT/Queue_Overlay.pm:92
+#: lib/RT/Queue_Overlay.pm:91
 msgid "Can this principal see this queue"
 msgstr "Может ли данный пользователь просматривать эту очередь"
 
 msgid "Can this principal see this queue"
 msgstr "Может ли данный пользователь просматривать эту очередь"
 
-#: lib/RT/CustomField_Overlay.pm:370
+#: lib/RT/CustomField_Overlay.pm:364
 msgid "Can't add a custom field value without a name"
 msgstr "Невозможно добавление значения допольнительного поля без наименования"
 
 #: html/Admin/CustomFields/Objects.html:86
 #. ($Class)
 msgid "Can't find a collection class for '%1'"
 msgid "Can't add a custom field value without a name"
 msgstr "Невозможно добавление значения допольнительного поля без наименования"
 
 #: html/Admin/CustomFields/Objects.html:86
 #. ($Class)
 msgid "Can't find a collection class for '%1'"
-msgstr ""
+msgstr "Невозможно найти класс коллекции для '%1'"
 
 
-#: html/Search/Build.html:761
+#: html/Search/Build.html:819
 msgid "Can't find a saved search to work with"
 msgstr "Невозможно найти сохраненный запрос для работы с ним"
 
 msgid "Can't find a saved search to work with"
 msgstr "Невозможно найти сохраненный запрос для работы с ним"
 
-#: lib/RT/Link_Overlay.pm:160
+#: lib/RT/Link_Overlay.pm:159
 msgid "Can't link a ticket to itself"
 msgstr "Невозможно связать заявку саму с собой"
 
 msgid "Can't link a ticket to itself"
 msgstr "Невозможно связать заявку саму с собой"
 
@@ -1044,11 +1027,11 @@ msgstr "Невозможно связать заявку саму с собой"
 msgid "Can't merge into a merged ticket. You should never get this error"
 msgstr "Невозможно объединить с объединенной заявкой (эта ошибка никогда не должна происходить)."
 
 msgid "Can't merge into a merged ticket. You should never get this error"
 msgstr "Невозможно объединить с объединенной заявкой (эта ошибка никогда не должна происходить)."
 
-#: html/Search/Build.html:766
+#: html/Search/Build.html:824
 msgid "Can't save this search"
 msgstr "Невозможно сохранить этот запрос"
 
 msgid "Can't save this search"
 msgstr "Невозможно сохранить этот запрос"
 
-#: lib/RT/Record.pm:1266 lib/RT/Record.pm:1344
+#: lib/RT/Record.pm:1257 lib/RT/Record.pm:1335
 msgid "Can't specifiy both base and target"
 msgstr "Невозможно указывать одновременно и источник и адрес назначения"
 
 msgid "Can't specifiy both base and target"
 msgstr "Невозможно указывать одновременно и источник и адрес назначения"
 
@@ -1057,7 +1040,7 @@ msgstr "Невозможно указывать одновременно и ис
 msgid "Cannot create user: %1"
 msgstr "Невозможно создать пользователя: %1"
 
 msgid "Cannot create user: %1"
 msgstr "Невозможно создать пользователя: %1"
 
-#: etc/initialdata:50 html/Admin/Queues/People.html:65 html/SelfService/Create.html:71 html/Ticket/Create.html:85 html/Ticket/Elements/EditPeople:72 html/Ticket/Elements/ShowPeople:56 html/Ticket/Update.html:81 lib/RT/ACE_Overlay.pm:113
+#: etc/initialdata:50 html/Admin/Queues/People.html:65 html/SelfService/Create.html:71 html/Ticket/Create.html:85 html/Ticket/Elements/EditPeople:72 html/Ticket/Elements/ShowPeople:56 html/Ticket/Update.html:81 lib/RT/ACE_Overlay.pm:112
 msgid "Cc"
 msgstr "Копия"
 
 msgid "Cc"
 msgstr "Копия"
 
@@ -1081,7 +1064,7 @@ msgstr "Выделите права, которые хотите отозват
 msgid "Children"
 msgstr "Потомки"
 
 msgid "Children"
 msgstr "Потомки"
 
-#: html/Admin/Users/Modify.html:156 html/User/Prefs.html:141
+#: html/Admin/Users/Modify.html.orig:156 html/Admin/Users/Modify.html:156 html/User/Prefs.html:141
 msgid "City"
 msgstr "Город"
 
 msgid "City"
 msgstr "Город"
 
@@ -1113,7 +1096,7 @@ msgstr "Код"
 msgid "Command not understood!\\n"
 msgstr "Команда не распознана!\\n"
 
 msgid "Command not understood!\\n"
 msgstr "Команда не распознана!\\n"
 
-#: html/Ticket/Elements/ShowTransaction:182 html/Ticket/Elements/Tabs:176
+#: html/Ticket/Elements/ShowTransaction:181 html/Ticket/Elements/Tabs:176
 msgid "Comment"
 msgstr "Комментировать"
 
 msgid "Comment"
 msgstr "Комментировать"
 
@@ -1125,11 +1108,11 @@ msgstr "Адрес для комментариев"
 msgid "Comment not recorded"
 msgstr "Комментарий не записан"
 
 msgid "Comment not recorded"
 msgstr "Комментарий не записан"
 
-#: lib/RT/Queue_Overlay.pm:112
+#: lib/RT/Queue_Overlay.pm:111
 msgid "Comment on tickets"
 msgstr "Комментарии заявки"
 
 msgid "Comment on tickets"
 msgstr "Комментарии заявки"
 
-#: lib/RT/Queue_Overlay.pm:112
+#: lib/RT/Queue_Overlay.pm:111
 msgid "CommentOnTicket"
 msgstr "КомментироватьЗаявку"
 
 msgid "CommentOnTicket"
 msgstr "КомментироватьЗаявку"
 
@@ -1149,15 +1132,15 @@ msgstr "Комментарии (Не отправляются авторам з
 msgid "Comments about %1"
 msgstr "Комментарии о %1"
 
 msgid "Comments about %1"
 msgstr "Комментарии о %1"
 
-#: html/Admin/Users/Modify.html:224 html/Ticket/Elements/ShowRequestor:67
+#: html/Admin/Users/Modify.html.orig:224 html/Admin/Users/Modify.html:224 html/Ticket/Elements/ShowRequestor:67
 msgid "Comments about this user"
 msgstr "Комментарии об этом пользователе"
 
 msgid "Comments about this user"
 msgstr "Комментарии об этом пользователе"
 
-#: lib/RT/Transaction_Overlay.pm:623
+#: lib/RT/Transaction_Overlay.pm.orig:621 lib/RT/Transaction_Overlay.pm:621
 msgid "Comments added"
 msgstr "Комментарии добавлены"
 
 msgid "Comments added"
 msgstr "Комментарии добавлены"
 
-#: lib/RT/Action/Generic.pm:176
+#: lib/RT/Action/Generic.pm:168
 msgid "Commit Stubbed"
 msgstr ""
 
 msgid "Commit Stubbed"
 msgstr ""
 
@@ -1173,7 +1156,7 @@ msgstr "Условие"
 msgid "Condition matches..."
 msgstr "Подходящее условие..."
 
 msgid "Condition matches..."
 msgstr "Подходящее условие..."
 
-#: lib/RT/Scrip_Overlay.pm:189
+#: lib/RT/Scrip_Overlay.pm:188
 msgid "Condition not found"
 msgstr "Условие не найдено"
 
 msgid "Condition not found"
 msgstr "Условие не найдено"
 
@@ -1217,7 +1200,7 @@ msgstr "Корреспонденция"
 msgid "Correspondence Address"
 msgstr "Адрес для корреспонденции"
 
 msgid "Correspondence Address"
 msgstr "Адрес для корреспонденции"
 
-#: lib/RT/Transaction_Overlay.pm:619
+#: lib/RT/Transaction_Overlay.pm.orig:617 lib/RT/Transaction_Overlay.pm:617
 msgid "Correspondence added"
 msgstr "Корреспонденция добавлена"
 
 msgid "Correspondence added"
 msgstr "Корреспонденция добавлена"
 
@@ -1233,16 +1216,16 @@ msgstr "Невозможно добавить новое значение доп
 msgid "Could not add new custom field value for ticket. %1 "
 msgstr "Невозможно добавить новое значение дополнительного поля заявки. %1"
 
 msgid "Could not add new custom field value for ticket. %1 "
 msgstr "Невозможно добавить новое значение дополнительного поля заявки. %1"
 
-#: lib/RT/Record.pm:1693
+#: lib/RT/Record.pm:1696
 msgid "Could not add new custom field value. "
 msgid "Could not add new custom field value. "
-msgstr ""
+msgstr "Ошибка добавления нового значения дополнительного поля"
 
 
-#: lib/RT/Record.pm:1646
+#: lib/RT/Record.pm:1649
 #. (, $value_msg)
 msgid "Could not add new custom field value. %1 "
 msgstr "Ошибка добавления нового значения для дополнительного поля. %1"
 
 #. (, $value_msg)
 msgid "Could not add new custom field value. %1 "
 msgstr "Ошибка добавления нового значения для дополнительного поля. %1"
 
-#: lib/RT/Ticket_Overlay.pm:3004 lib/RT/Ticket_Overlay.pm:3012 lib/RT/Ticket_Overlay.pm:3029
+#: lib/RT/Ticket_Overlay.pm:2971 lib/RT/Ticket_Overlay.pm:2979 lib/RT/Ticket_Overlay.pm:2996
 msgid "Could not change owner. "
 msgstr "Невозможно изменить ответственного."
 
 msgid "Could not change owner. "
 msgstr "Невозможно изменить ответственного."
 
@@ -1254,9 +1237,9 @@ msgstr "Невозможно создать дополнительное пол
 #: html/Admin/Elements/EditCustomField:113
 #. ($msg)
 msgid "Could not create CustomField: %1"
 #: html/Admin/Elements/EditCustomField:113
 #. ($msg)
 msgid "Could not create CustomField: %1"
-msgstr ""
+msgstr "Ошибка создания дополнительного поля: %1"
 
 
-#: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:502 lib/RT/Group_Overlay.pm:509
+#: html/User/Groups/Modify.html:98 lib/RT/Group_Overlay.pm:501 lib/RT/Group_Overlay.pm:508
 msgid "Could not create group"
 msgstr "Невозможно создать группу"
 
 msgid "Could not create group"
 msgstr "Невозможно создать группу"
 
@@ -1269,7 +1252,7 @@ msgstr "Невозможно создать шаблон: %1"
 msgid "Could not create ticket. Queue not set"
 msgstr "Невозможно создать заявку. Не задана очередь."
 
 msgid "Could not create ticket. Queue not set"
 msgstr "Невозможно создать заявку. Не задана очередь."
 
-#: lib/RT/User_Overlay.pm:256 lib/RT/User_Overlay.pm:270 lib/RT/User_Overlay.pm:279 lib/RT/User_Overlay.pm:288 lib/RT/User_Overlay.pm:297 lib/RT/User_Overlay.pm:311 lib/RT/User_Overlay.pm:321 lib/RT/User_Overlay.pm:497
+#: lib/RT/User_Overlay.pm:255 lib/RT/User_Overlay.pm:269 lib/RT/User_Overlay.pm:278 lib/RT/User_Overlay.pm:287 lib/RT/User_Overlay.pm:296 lib/RT/User_Overlay.pm:310 lib/RT/User_Overlay.pm:320 lib/RT/User_Overlay.pm:496
 msgid "Could not create user"
 msgstr "Невозможно создать пользователя"
 
 msgid "Could not create user"
 msgstr "Невозможно создать пользователя"
 
@@ -1285,11 +1268,11 @@ msgstr "Невозможно найти заявку с идентификато
 msgid "Could not find group %1."
 msgstr "Невозможно найти группу %1."
 
 msgid "Could not find group %1."
 msgstr "Невозможно найти группу %1."
 
-#: lib/RT/Queue_Overlay.pm:738 lib/RT/Ticket_Overlay.pm:1384
+#: lib/RT/Queue_Overlay.pm:725 lib/RT/Ticket_Overlay.pm:1384
 msgid "Could not find or create that user"
 msgstr "Невозможно найти или создать этого пользователя"
 
 msgid "Could not find or create that user"
 msgstr "Невозможно найти или создать этого пользователя"
 
-#: lib/RT/Queue_Overlay.pm:799 lib/RT/Ticket_Overlay.pm:1465
+#: lib/RT/Queue_Overlay.pm:786 lib/RT/Ticket_Overlay.pm:1465
 msgid "Could not find that principal"
 msgstr "Невозможно найти этого пользователя"
 
 msgid "Could not find that principal"
 msgstr "Невозможно найти этого пользователя"
 
@@ -1305,16 +1288,16 @@ msgstr "Невозможно загрузить дополнительное п
 msgid "Could not load group"
 msgstr "Невозможно загрузить группу"
 
 msgid "Could not load group"
 msgstr "Невозможно загрузить группу"
 
-#: lib/RT/SavedSearch.pm:120
+#: lib/RT/SavedSearch.pm:119
 #. ($privacy)
 msgid "Could not load object for %1"
 #. ($privacy)
 msgid "Could not load object for %1"
-msgstr ""
+msgstr "Ошибка загрузки объекта для %1"
 
 
-#: lib/RT/SavedSearch.pm:188
+#: lib/RT/SavedSearch.pm:187
 msgid "Could not load search attribute"
 msgid "Could not load search attribute"
-msgstr ""
+msgstr "Ошибка загрузки атрибута запроса"
 
 
-#: lib/RT/Queue_Overlay.pm:758
+#: lib/RT/Queue_Overlay.pm:745
 #. ($args{'Type'})
 msgid "Could not make that principal a %1 for this queue"
 msgstr "Невозможно назначить этого пользователя %1 для этой очереди"
 #. ($args{'Type'})
 msgid "Could not make that principal a %1 for this queue"
 msgstr "Невозможно назначить этого пользователя %1 для этой очереди"
@@ -1324,7 +1307,7 @@ msgstr "Невозможно назначить этого пользовате
 msgid "Could not make that principal a %1 for this ticket"
 msgstr "Невозможно назначить этого пользователя %1 для этой заявки"
 
 msgid "Could not make that principal a %1 for this ticket"
 msgstr "Невозможно назначить этого пользователя %1 для этой заявки"
 
-#: lib/RT/Queue_Overlay.pm:857
+#: lib/RT/Queue_Overlay.pm:844
 #. ($args{'Type'})
 msgid "Could not remove that principal as a %1 for this queue"
 msgstr "Невозможно отозвать функции у пользователя как %1 для этой очереди"
 #. ($args{'Type'})
 msgid "Could not remove that principal as a %1 for this queue"
 msgstr "Невозможно отозвать функции у пользователя как %1 для этой очереди"
@@ -1333,15 +1316,15 @@ msgstr "Невозможно отозвать функции у пользова
 msgid "Could not remove that principal as a %1 for this ticket"
 msgstr "Невозможно отозвать функции у пользователя как %1 для этой заявки"
 
 msgid "Could not remove that principal as a %1 for this ticket"
 msgstr "Невозможно отозвать функции у пользователя как %1 для этой заявки"
 
-#: lib/RT/User_Overlay.pm:192
+#: lib/RT/User_Overlay.pm:191
 msgid "Could not set user info"
 msgstr "Невозможно установить информацию о пользователе"
 
 msgid "Could not set user info"
 msgstr "Невозможно установить информацию о пользователе"
 
-#: lib/RT/Group_Overlay.pm:1011
+#: lib/RT/Group_Overlay.pm:1009
 msgid "Couldn't add member to group"
 msgstr "Невозможно добавить пользователя в группу"
 
 msgid "Couldn't add member to group"
 msgstr "Невозможно добавить пользователя в группу"
 
-#: lib/RT/Record.pm:1705 lib/RT/Record.pm:1757
+#: lib/RT/Record.pm:1708 lib/RT/Record.pm:1767
 #. ($Msg)
 msgid "Couldn't create a transaction: %1"
 msgstr "Невозможно создать транзакцию: %1"
 #. ($Msg)
 msgid "Couldn't create a transaction: %1"
 msgstr "Невозможно создать транзакцию: %1"
@@ -1354,15 +1337,15 @@ msgstr "Невозможно определить дальнейшие дейс
 msgid "Couldn't find group\\n"
 msgstr "Невезможно найти группу\\n"
 
 msgid "Couldn't find group\\n"
 msgstr "Невезможно найти группу\\n"
 
-#: lib/RT/Record.pm:939
+#: lib/RT/Record.pm:937
 msgid "Couldn't find row"
 msgstr "Невозможно найти строку"
 
 msgid "Couldn't find row"
 msgstr "Невозможно найти строку"
 
-#: lib/RT/Group_Overlay.pm:985
+#: lib/RT/Group_Overlay.pm:983
 msgid "Couldn't find that principal"
 msgstr "Невозможно найти этого пользователя"
 
 msgid "Couldn't find that principal"
 msgstr "Невозможно найти этого пользователя"
 
-#: lib/RT/CustomField_Overlay.pm:404
+#: lib/RT/CustomField_Overlay.pm:398
 msgid "Couldn't find that value"
 msgstr "Невозможно найти это значение"
 
 msgid "Couldn't find that value"
 msgstr "Невозможно найти это значение"
 
@@ -1374,7 +1357,7 @@ msgstr "Невозможно найти этого наблюдателя"
 msgid "Couldn't find user\\n"
 msgstr "Невозможно найти пользователя\\n"
 
 msgid "Couldn't find user\\n"
 msgstr "Невозможно найти пользователя\\n"
 
-#: lib/RT/CurrentUser.pm:146
+#: lib/RT/CurrentUser.pm:145
 #. ($self->Id)
 msgid "Couldn't load %1 from the users database.\\n"
 msgstr "Невозможно загрузить %1 из базы пользователей.\\n"
 #. ($self->Id)
 msgid "Couldn't load %1 from the users database.\\n"
 msgstr "Невозможно загрузить %1 из базы пользователей.\\n"
@@ -1382,7 +1365,7 @@ msgstr "Невозможно загрузить %1 из базы пользов
 #: html/Admin/CustomFields/UserRights.html:149
 #. ($id)
 msgid "Couldn't load Class %1"
 #: html/Admin/CustomFields/UserRights.html:149
 #. ($id)
 msgid "Couldn't load Class %1"
-msgstr ""
+msgstr "Ошибка загрузки класса %1"
 
 #: html/Admin/CustomFields/GroupRights.html:107
 #. ($id)
 
 #: html/Admin/CustomFields/GroupRights.html:107
 #. ($id)
@@ -1402,7 +1385,7 @@ msgstr "Невозможно загрузить скриплеты."
 msgid "Couldn't load group %1"
 msgstr "Невозможно загрузить группу %1"
 
 msgid "Couldn't load group %1"
 msgstr "Невозможно загрузить группу %1"
 
-#: lib/RT/Link_Overlay.pm:203 lib/RT/Link_Overlay.pm:212 lib/RT/Link_Overlay.pm:239
+#: lib/RT/Link_Overlay.pm:202 lib/RT/Link_Overlay.pm:211 lib/RT/Link_Overlay.pm:238
 msgid "Couldn't load link"
 msgstr "Невозможно загрузить ссылку"
 
 msgid "Couldn't load link"
 msgstr "Невозможно загрузить ссылку"
 
@@ -1433,22 +1416,12 @@ msgstr "Невозможно загрузить шаблон"
 msgid "Couldn't load that user (%1)"
 msgstr "Невозможно загрузить этого пользователя (%1)"
 
 msgid "Couldn't load that user (%1)"
 msgstr "Невозможно загрузить этого пользователя (%1)"
 
-#: html/SelfService/Display.html:156
+#: html/SelfService/Display.html:149
 #. ($id)
 msgid "Couldn't load ticket '%1'"
 msgstr "Невозможно загрузить заявку '%1'"
 
 #. ($id)
 msgid "Couldn't load ticket '%1'"
 msgstr "Невозможно загрузить заявку '%1'"
 
-#: lib/RT/Ticket_Overlay.pm:2612
-#. ($args{'Base'})
-msgid "Couldn't resolve base '%1' into a URI."
-msgstr ""
-
-#: lib/RT/Ticket_Overlay.pm:2611
-#. ($args{'Target'})
-msgid "Couldn't resolve target '%1' into a URI."
-msgstr ""
-
-#: html/Admin/Users/Modify.html:173 html/User/Prefs.html:153
+#: html/Admin/Users/Modify.html.orig:173 html/Admin/Users/Modify.html:173 html/User/Prefs.html:153
 msgid "Country"
 msgstr "Страна"
 
 msgid "Country"
 msgstr "Страна"
 
@@ -1485,7 +1458,7 @@ msgstr "Создать новый глобальный скриплет"
 msgid "Create a new global scrip"
 msgstr "Создать новый глобальный скриплет"
 
 msgid "Create a new global scrip"
 msgstr "Создать новый глобальный скриплет"
 
-#: html/Admin/Groups/Modify.html:125 html/Admin/Groups/Modify.html:99
+#: html/Admin/Groups/Modify.html:124 html/Admin/Groups/Modify.html:98
 msgid "Create a new group"
 msgstr "Создать новую группу"
 
 msgid "Create a new group"
 msgstr "Создать новую группу"
 
@@ -1509,7 +1482,7 @@ msgstr "Создать новый шаблон"
 msgid "Create a new ticket"
 msgstr "Создать новую заявку"
 
 msgid "Create a new ticket"
 msgstr "Создать новую заявку"
 
-#: html/Admin/Users/Modify.html:251 html/Admin/Users/Modify.html:306
+#: html/Admin/Users/Modify.html.orig:251 html/Admin/Users/Modify.html.orig:308 html/Admin/Users/Modify.html:251 html/Admin/Users/Modify.html:306
 msgid "Create a new user"
 msgstr "Создать нового пользователя"
 
 msgid "Create a new user"
 msgstr "Создать нового пользователя"
 
@@ -1554,7 +1527,7 @@ msgstr "Создать новые заявки на основе этого ша
 msgid "Create ticket"
 msgstr "Создать заявку"
 
 msgid "Create ticket"
 msgstr "Создать заявку"
 
-#: lib/RT/Queue_Overlay.pm:110
+#: lib/RT/Queue_Overlay.pm:109
 msgid "Create tickets in this queue"
 msgstr "Создать заявки в этой очереди"
 
 msgid "Create tickets in this queue"
 msgstr "Создать заявки в этой очереди"
 
@@ -1562,7 +1535,7 @@ msgstr "Создать заявки в этой очереди"
 msgid "Create, delete and modify custom fields"
 msgstr "Создать, удалить или изменить дополнительные поля"
 
 msgid "Create, delete and modify custom fields"
 msgstr "Создать, удалить или изменить дополнительные поля"
 
-#: lib/RT/Queue_Overlay.pm:93
+#: lib/RT/Queue_Overlay.pm:92
 msgid "Create, delete and modify queues"
 msgstr "Создать, удалить или изменить очереди"
 
 msgid "Create, delete and modify queues"
 msgstr "Создать, удалить или изменить очереди"
 
@@ -1570,19 +1543,19 @@ msgstr "Создать, удалить или изменить очереди"
 msgid "Create, delete and modify the members of any user's personal groups"
 msgstr "Создать, удалить или изменить членов любой пользовательской персональной группы"
 
 msgid "Create, delete and modify the members of any user's personal groups"
 msgstr "Создать, удалить или изменить членов любой пользовательской персональной группы"
 
-#: lib/RT/System.pm:81
+#: lib/RT/System.pm:80
 msgid "Create, delete and modify the members of personal groups"
 msgstr "Создать, удалить или изменить членов персональных групп"
 
 msgid "Create, delete and modify the members of personal groups"
 msgstr "Создать, удалить или изменить членов персональных групп"
 
-#: lib/RT/System.pm:82
+#: lib/RT/System.pm:81
 msgid "Create, delete and modify users"
 msgstr "Создать, удалить или изменить пользователей"
 
 msgid "Create, delete and modify users"
 msgstr "Создать, удалить или изменить пользователей"
 
-#: lib/RT/System.pm:88
+#: lib/RT/System.pm:87
 msgid "CreateSavedSearch"
 msgid "CreateSavedSearch"
-msgstr ""
+msgstr "СоздаватьСохраненныйЗапрос"
 
 
-#: lib/RT/Queue_Overlay.pm:110
+#: lib/RT/Queue_Overlay.pm:109
 msgid "CreateTicket"
 msgstr "Создать Заявку"
 
 msgid "CreateTicket"
 msgstr "Создать Заявку"
 
@@ -1643,7 +1616,7 @@ msgstr "Текущие наблюдатели"
 msgid "Custom Field #%1"
 msgstr "Дополнительное поле #%1"
 
 msgid "Custom Field #%1"
 msgstr "Дополнительное поле #%1"
 
-#: html/Admin/Elements/SystemTabs:61 html/Admin/Elements/Tabs:62 html/Admin/Global/index.html:71 html/Admin/Users/Modify.html:208 html/Admin/index.html:77 html/Ticket/Elements/ShowSummary:57
+#: html/Admin/Elements/SystemTabs:61 html/Admin/Elements/Tabs:62 html/Admin/Global/index.html:71 html/Admin/Users/Modify.html.orig:208 html/Admin/Users/Modify.html:208 html/Admin/index.html:77 html/Ticket/Elements/ShowSummary:57
 msgid "Custom Fields"
 msgstr "Дополнительные поля"
 
 msgid "Custom Fields"
 msgstr "Дополнительные поля"
 
@@ -1682,7 +1655,7 @@ msgstr "Дополнительное поле %1 имеет значение."
 msgid "Custom field %1 has no value."
 msgstr "Дополнительное поле %1 не имеет значения."
 
 msgid "Custom field %1 has no value."
 msgstr "Дополнительное поле %1 не имеет значения."
 
-#: lib/RT/Record.pm:1579 lib/RT/Record.pm:1740
+#: lib/RT/Record.pm:1581
 #. ($args{'Field'})
 msgid "Custom field %1 not found"
 msgstr "Невозможно найти дополнительное поле %1"
 #. ($args{'Field'})
 msgid "Custom field %1 not found"
 msgstr "Невозможно найти дополнительное поле %1"
@@ -1691,11 +1664,11 @@ msgstr "Невозможно найти дополнительное поле %1
 msgid "Custom field deleted"
 msgstr "Дополнительное поле удалено"
 
 msgid "Custom field deleted"
 msgstr "Дополнительное поле удалено"
 
-#: NOT FOUND IN SOURCE
+#: lib/RT/CustomField_Overlay.pm:289 lib/RT/Record.pm:1749
 msgid "Custom field not found"
 msgstr "Невозможно найти дополнительное поле"
 
 msgid "Custom field not found"
 msgstr "Невозможно найти дополнительное поле"
 
-#: lib/RT/CustomField_Overlay.pm:1041
+#: lib/RT/CustomField_Overlay.pm:1027
 #. ($args{'Content'}, $self->Name)
 msgid "Custom field value %1 could not be found for custom field %2"
 msgstr "Невозможно найти значение %1 дополнительного поля %2"
 #. ($args{'Content'}, $self->Name)
 msgid "Custom field value %1 could not be found for custom field %2"
 msgstr "Невозможно найти значение %1 дополнительного поля %2"
@@ -1704,19 +1677,19 @@ msgstr "Невозможно найти значение %1 дополнител
 msgid "Custom field value changed from %1 to %2"
 msgstr "Значение дополнительного поля изменено с %1 на %2"
 
 msgid "Custom field value changed from %1 to %2"
 msgstr "Значение дополнительного поля изменено с %1 на %2"
 
-#: lib/RT/CustomField_Overlay.pm:414
+#: lib/RT/CustomField_Overlay.pm:408
 msgid "Custom field value could not be deleted"
 msgstr "Невозможно удалить значение дополнительного поля"
 
 msgid "Custom field value could not be deleted"
 msgstr "Невозможно удалить значение дополнительного поля"
 
-#: lib/RT/CustomField_Overlay.pm:1047
+#: lib/RT/CustomField_Overlay.pm:1033
 msgid "Custom field value could not be found"
 msgstr "Невозможно найти значение дополнительного поля "
 
 msgid "Custom field value could not be found"
 msgstr "Невозможно найти значение дополнительного поля "
 
-#: lib/RT/CustomField_Overlay.pm:1049 lib/RT/CustomField_Overlay.pm:412
+#: lib/RT/CustomField_Overlay.pm:1035 lib/RT/CustomField_Overlay.pm:406
 msgid "Custom field value deleted"
 msgstr "Значение дополнительного поля удалено"
 
 msgid "Custom field value deleted"
 msgstr "Значение дополнительного поля удалено"
 
-#: html/Elements/SelectGroups:51 html/Elements/SelectUsers:51 lib/RT/Transaction_Overlay.pm:627
+#: html/Elements/SelectGroups:51 html/Elements/SelectUsers:51 lib/RT/Transaction_Overlay.pm.orig:625 lib/RT/Transaction_Overlay.pm:625
 msgid "CustomField"
 msgstr "ДополнительноеПоле"
 
 msgid "CustomField"
 msgstr "ДополнительноеПоле"
 
@@ -1728,7 +1701,7 @@ msgstr "Ошибка данных"
 msgid "Dates"
 msgstr "Даты"
 
 msgid "Dates"
 msgstr "Даты"
 
-#: lib/RT/Date.pm:448
+#: lib/RT/Date.pm:445
 msgid "Dec."
 msgstr "Дек."
 
 msgid "Dec."
 msgstr "Дек."
 
@@ -1776,11 +1749,11 @@ msgstr "Умолчание: %1/%2 изменено с %3 на %4"
 msgid "Delegate rights"
 msgstr "Делегирование прав"
 
 msgid "Delegate rights"
 msgstr "Делегирование прав"
 
-#: lib/RT/System.pm:85
+#: lib/RT/System.pm:84
 msgid "Delegate specific rights which have been granted to you."
 msgstr "Делегирование отдельных прав, которые выданы вам."
 
 msgid "Delegate specific rights which have been granted to you."
 msgstr "Делегирование отдельных прав, которые выданы вам."
 
-#: lib/RT/System.pm:85
+#: lib/RT/System.pm:84
 msgid "DelegateRights"
 msgstr "ДелегироватьПрава"
 
 msgid "DelegateRights"
 msgstr "ДелегироватьПрава"
 
@@ -1796,36 +1769,36 @@ msgstr "Удалить"
 msgid "Delete Template"
 msgstr "Удалить шаблон"
 
 msgid "Delete Template"
 msgstr "Удалить шаблон"
 
-#: lib/RT/SavedSearch.pm:211
+#: lib/RT/SavedSearch.pm:210
 #. ($msg)
 msgid "Delete failed: %1"
 #. ($msg)
 msgid "Delete failed: %1"
-msgstr ""
+msgstr "Ошибка удаления: %1"
 
 #: html/Admin/Elements/EditScrips:74
 msgid "Delete selected scrips"
 msgstr "Удалить выбранные скриплеты"
 
 
 #: html/Admin/Elements/EditScrips:74
 msgid "Delete selected scrips"
 msgstr "Удалить выбранные скриплеты"
 
-#: lib/RT/Queue_Overlay.pm:115
+#: lib/RT/Queue_Overlay.pm:114
 msgid "Delete tickets"
 msgstr "Удалить заявки"
 
 msgid "Delete tickets"
 msgstr "Удалить заявки"
 
-#: lib/RT/Queue_Overlay.pm:115
+#: lib/RT/Queue_Overlay.pm:114
 msgid "DeleteTicket"
 msgstr "УдалятьЗаявку"
 
 msgid "DeleteTicket"
 msgstr "УдалятьЗаявку"
 
-#: lib/RT/SavedSearch.pm:209
+#: lib/RT/SavedSearch.pm:208
 msgid "Deleted search"
 msgid "Deleted search"
-msgstr ""
+msgstr "Удаленный запрос"
 
 #: NOT FOUND IN SOURCE
 msgid "Deleting this object could break referential integrity"
 msgstr "Удаление этого объекта может нарушить ссылочную целостность"
 
 
 #: NOT FOUND IN SOURCE
 msgid "Deleting this object could break referential integrity"
 msgstr "Удаление этого объекта может нарушить ссылочную целостность"
 
-#: lib/RT/Queue_Overlay.pm:391
+#: lib/RT/Queue_Overlay.pm:378
 msgid "Deleting this object would break referential integrity"
 msgstr "Удаление этого объекта нарушит ссылочную целостность"
 
 msgid "Deleting this object would break referential integrity"
 msgstr "Удаление этого объекта нарушит ссылочную целостность"
 
-#: lib/RT/User_Overlay.pm:513
+#: lib/RT/User_Overlay.pm:512
 msgid "Deleting this object would violate referential integrity"
 msgstr "Удаление этого объекта нарушит ссылочную целостность"
 
 msgid "Deleting this object would violate referential integrity"
 msgstr "Удаление этого объекта нарушит ссылочную целостность"
 
@@ -1849,22 +1822,22 @@ msgstr "От неё зависят"
 msgid "Dependencies: \\n"
 msgstr "Зависимости: \\n"
 
 msgid "Dependencies: \\n"
 msgstr "Зависимости: \\n"
 
-#: lib/RT/Transaction_Overlay.pm:707
+#: lib/RT/Transaction_Overlay.pm.orig:705 lib/RT/Transaction_Overlay.pm:705
 #. ($value)
 msgid "Dependency by %1 added"
 msgstr "Добавлено требование заявкой %1"
 
 #. ($value)
 msgid "Dependency by %1 added"
 msgstr "Добавлено требование заявкой %1"
 
-#: lib/RT/Transaction_Overlay.pm:747
+#: lib/RT/Transaction_Overlay.pm.orig:745 lib/RT/Transaction_Overlay.pm:745
 #. ($value)
 msgid "Dependency by %1 deleted"
 msgstr "Удалено требование заявкой %1"
 
 #. ($value)
 msgid "Dependency by %1 deleted"
 msgstr "Удалено требование заявкой %1"
 
-#: lib/RT/Transaction_Overlay.pm:704
+#: lib/RT/Transaction_Overlay.pm.orig:702 lib/RT/Transaction_Overlay.pm:702
 #. ($value)
 msgid "Dependency on %1 added"
 msgstr "Добавлена зависимость от %1"
 
 #. ($value)
 msgid "Dependency on %1 added"
 msgstr "Добавлена зависимость от %1"
 
-#: lib/RT/Transaction_Overlay.pm:744
+#: lib/RT/Transaction_Overlay.pm.orig:742 lib/RT/Transaction_Overlay.pm:742
 #. ($value)
 msgid "Dependency on %1 deleted"
 msgstr "Удалена зависимость от %1"
 #. ($value)
 msgid "Dependency on %1 deleted"
 msgstr "Удалена зависимость от %1"
@@ -1897,7 +1870,7 @@ msgstr "Подробности"
 msgid "Display"
 msgstr "Показать"
 
 msgid "Display"
 msgstr "Показать"
 
-#: lib/RT/Queue_Overlay.pm:94
+#: lib/RT/Queue_Overlay.pm:93
 msgid "Display Access Control List"
 msgstr "Показать список прав доступа"
 
 msgid "Display Access Control List"
 msgstr "Показать список прав доступа"
 
@@ -1905,11 +1878,11 @@ msgstr "Показать список прав доступа"
 msgid "Display Columns"
 msgstr "Показать колонки"
 
 msgid "Display Columns"
 msgstr "Показать колонки"
 
-#: lib/RT/Queue_Overlay.pm:100
+#: lib/RT/Queue_Overlay.pm:99
 msgid "Display Scrip templates for this queue"
 msgstr "Показать шаблоны скриплетов для этой очереди"
 
 msgid "Display Scrip templates for this queue"
 msgstr "Показать шаблоны скриплетов для этой очереди"
 
-#: lib/RT/Queue_Overlay.pm:103
+#: lib/RT/Queue_Overlay.pm:102
 msgid "Display Scrips for this queue"
 msgstr "Показать скриплеты для этой очереди"
 
 msgid "Display Scrips for this queue"
 msgstr "Показать скриплеты для этой очереди"
 
@@ -1929,13 +1902,13 @@ msgstr "Показать заявку #%1"
 msgid "Distributed under version 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> of the GNU GPL.</a>"
 msgstr "Распространяется по версии 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> GNU GPL.</a>"
 
 msgid "Distributed under version 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> of the GNU GPL.</a>"
 msgstr "Распространяется по версии 2 <a href=\"http://www.gnu.org/copyleft/gpl.html\"> GNU GPL.</a>"
 
-#: lib/RT/System.pm:76
+#: lib/RT/System.pm:75
 msgid "Do anything and everything"
 msgstr "Делать все и везде"
 
 msgid "Do anything and everything"
 msgstr "Делать все и везде"
 
-#: html/Search/Build.html:112
+#: html/Search/Build.html:92
 msgid "Do the Search"
 msgid "Do the Search"
-msgstr ""
+msgstr "Искать"
 
 #: html/Elements/Refresh:51
 msgid "Don't refresh this page."
 
 #: html/Elements/Refresh:51
 msgid "Don't refresh this page."
@@ -1984,15 +1957,19 @@ msgstr "Редактирование дополнительных полей д
 
 #: html/Admin/Global/CustomFields/Groups.html:9
 msgid "Edit Custom Fields for all groups"
 
 #: html/Admin/Global/CustomFields/Groups.html:9
 msgid "Edit Custom Fields for all groups"
-msgstr ""
+msgstr "Редактирование дополнительных полей всех групп"
 
 #: html/Admin/Global/CustomFields/Users.html:9
 msgid "Edit Custom Fields for all users"
 
 #: html/Admin/Global/CustomFields/Users.html:9
 msgid "Edit Custom Fields for all users"
-msgstr ""
+msgstr "Редактирование дополнительных полей всех пользователей"
 
 #: html/Admin/Global/CustomFields/Queue-Tickets.html:9 html/Admin/Global/CustomFields/Queue-Transactions.html:9
 msgid "Edit Custom Fields for tickets in all queues"
 
 #: html/Admin/Global/CustomFields/Queue-Tickets.html:9 html/Admin/Global/CustomFields/Queue-Transactions.html:9
 msgid "Edit Custom Fields for tickets in all queues"
-msgstr ""
+msgstr "Редактирование дополнительных полей заявок во всех очередях"
+
+#: html/Admin/Global/CustomFields/Queue-T2.html:9
+msgid "Edit Custom Fields for transactions on tickets in all queues"
+msgstr "Редактирование дополнительных полей транзакций заявок во всех очередях"
 
 #: html/Search/Bulk.html:173 html/Ticket/ModifyLinks.html:57
 msgid "Edit Links"
 
 #: html/Search/Bulk.html:173 html/Ticket/ModifyLinks.html:57
 msgid "Edit Links"
@@ -2063,15 +2040,15 @@ msgstr "Редактирование списка пользователей п
 msgid "Editing template %1"
 msgstr "Редактирование шаблона %1"
 
 msgid "Editing template %1"
 msgstr "Редактирование шаблона %1"
 
-#: lib/RT/Record.pm:1281 lib/RT/Record.pm:1358
+#: lib/RT/Record.pm:1272 lib/RT/Record.pm:1349
 msgid "Either base or target must be specified"
 msgstr "Нужно указать либо источник, либо адрес назначения"
 
 msgid "Either base or target must be specified"
 msgstr "Нужно указать либо источник, либо адрес назначения"
 
-#: html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65
+#: html/Admin/Users/Modify.html.orig:74 html/Admin/Users/Modify.html:74 html/Ticket/Elements/AddWatchers:77 html/User/Prefs.html:65
 msgid "Email"
 msgstr "Email"
 
 msgid "Email"
 msgstr "Email"
 
-#: lib/RT/User_Overlay.pm:236
+#: lib/RT/User_Overlay.pm:235
 msgid "Email address in use"
 msgstr "Email адрес уже занят"
 
 msgid "Email address in use"
 msgstr "Email адрес уже занят"
 
@@ -2103,7 +2080,7 @@ msgstr "Используемые дополнительные поля"
 msgid "Enabled Queues"
 msgstr "Используемые очереди"
 
 msgid "Enabled Queues"
 msgstr "Используемые очереди"
 
-#: html/Admin/Elements/EditCustomField:136 html/Admin/Groups/Modify.html:150 html/Admin/Users/Modify.html:342 html/User/Groups/Modify.html:138
+#: html/Admin/Elements/EditCustomField:136 html/Admin/Groups/Modify.html:149 html/Admin/Users/Modify.html.orig:349 html/Admin/Users/Modify.html:347 html/User/Groups/Modify.html:138
 #. (loc_fuzzy($msg))
 msgid "Enabled status %1"
 msgstr "Активирован статус %1"
 #. (loc_fuzzy($msg))
 msgid "Enabled status %1"
 msgstr "Активирован статус %1"
@@ -2149,7 +2126,7 @@ msgstr "Ошибка"
 msgid "Error adding watcher"
 msgstr "Ошибка добавления наблюдателя"
 
 msgid "Error adding watcher"
 msgstr "Ошибка добавления наблюдателя"
 
-#: lib/RT/Queue_Overlay.pm:669
+#: lib/RT/Queue_Overlay.pm:656
 msgid "Error in parameters to Queue->AddWatcher"
 msgstr "Ошибка в параметрах Queue->AddWatcher"
 
 msgid "Error in parameters to Queue->AddWatcher"
 msgstr "Ошибка в параметрах Queue->AddWatcher"
 
@@ -2157,7 +2134,7 @@ msgstr "Ошибка в параметрах Queue->AddWatcher"
 msgid "Error in parameters to Queue->DelWatcher"
 msgstr "Ошибка в параметрах Queue->DelWatcher"
 
 msgid "Error in parameters to Queue->DelWatcher"
 msgstr "Ошибка в параметрах Queue->DelWatcher"
 
-#: lib/RT/Queue_Overlay.pm:830
+#: lib/RT/Queue_Overlay.pm:817
 msgid "Error in parameters to Queue->DeleteWatcher"
 msgstr "Ошибка в параметрах Queue->DeleteWatcher"
 
 msgid "Error in parameters to Queue->DeleteWatcher"
 msgstr "Ошибка в параметрах Queue->DeleteWatcher"
 
@@ -2201,19 +2178,19 @@ msgstr "ExternalAuthId"
 msgid "ExternalContactInfoId"
 msgstr "ExternalContactInfoId"
 
 msgid "ExternalContactInfoId"
 msgstr "ExternalContactInfoId"
 
-#: html/Admin/Users/Modify.html:99
+#: html/Admin/Users/Modify.html.orig:99 html/Admin/Users/Modify.html:99
 msgid "Extra info"
 msgstr "Дополнительная информация"
 
 msgid "Extra info"
 msgstr "Дополнительная информация"
 
-#: lib/RT/SavedSearch.pm:165
+#: lib/RT/SavedSearch.pm:164
 msgid "Failed to create search attribute"
 msgid "Failed to create search attribute"
-msgstr ""
+msgstr "Ошибка создания атрибута запроса"
 
 
-#: lib/RT/User_Overlay.pm:377
+#: lib/RT/User_Overlay.pm:376
 msgid "Failed to find 'Privileged' users pseudogroup."
 msgstr "Невозможно найти псевдо-группу 'Привилегированные'"
 
 msgid "Failed to find 'Privileged' users pseudogroup."
 msgstr "Невозможно найти псевдо-группу 'Привилегированные'"
 
-#: lib/RT/User_Overlay.pm:384
+#: lib/RT/User_Overlay.pm:383
 msgid "Failed to find 'Unprivileged' users pseudogroup"
 msgstr "Невозможно найти псевдо-группу 'Непривилегированные'"
 
 msgid "Failed to find 'Unprivileged' users pseudogroup"
 msgstr "Невозможно найти псевдо-группу 'Непривилегированные'"
 
@@ -2222,12 +2199,12 @@ msgstr "Невозможно найти псевдо-группу 'Неприв
 msgid "Failed to load module %1. (%2)"
 msgstr "Ошибка загрузки модуля %1. (%2)"
 
 msgid "Failed to load module %1. (%2)"
 msgstr "Ошибка загрузки модуля %1. (%2)"
 
-#: lib/RT/SavedSearch.pm:168
+#: lib/RT/SavedSearch.pm:167
 #. ($privacy)
 msgid "Failed to load object for %1"
 #. ($privacy)
 msgid "Failed to load object for %1"
-msgstr ""
+msgstr "Ошибка загрузки объекта для %1"
 
 
-#: lib/RT/Date.pm:438
+#: lib/RT/Date.pm:435
 msgid "Feb."
 msgstr "Фев."
 
 msgid "Feb."
 msgstr "Фев."
 
@@ -2245,7 +2222,7 @@ msgstr "Заполнить несколько текстовых полей"
 
 #: lib/RT/CustomField_Overlay.pm:74
 msgid "Fill in multiple wikitext areas"
 
 #: lib/RT/CustomField_Overlay.pm:74
 msgid "Fill in multiple wikitext areas"
-msgstr ""
+msgstr "Заполнить несколько полей wikitext"
 
 #: lib/RT/CustomField_Overlay.pm:70
 msgid "Fill in one text area"
 
 #: lib/RT/CustomField_Overlay.pm:70
 msgid "Fill in one text area"
@@ -2253,7 +2230,7 @@ msgstr "Заполнить одно текстоввое поле"
 
 #: lib/RT/CustomField_Overlay.pm:75
 msgid "Fill in one wikitext area"
 
 #: lib/RT/CustomField_Overlay.pm:75
 msgid "Fill in one wikitext area"
-msgstr ""
+msgstr "Заполнить одно поле wikitext"
 
 #: lib/RT/CustomField_Overlay.pm:71
 msgid "Fill in up to %1 text areas"
 
 #: lib/RT/CustomField_Overlay.pm:71
 msgid "Fill in up to %1 text areas"
@@ -2261,13 +2238,13 @@ msgstr "Заполнить до %1 текстовых полей"
 
 #: lib/RT/CustomField_Overlay.pm:76
 msgid "Fill in up to %1 wikitext areas"
 
 #: lib/RT/CustomField_Overlay.pm:76
 msgid "Fill in up to %1 wikitext areas"
-msgstr ""
+msgstr "Заполнить до %1 полей wikitext"
 
 #: NOT FOUND IN SOURCE
 msgid "Fin"
 msgstr "Конец"
 
 
 #: NOT FOUND IN SOURCE
 msgid "Fin"
 msgstr "Конец"
 
-#: html/Search/Elements/PickBasics:162 html/Ticket/Create.html:185 html/Ticket/Elements/EditBasics:79 lib/RT/Tickets_Overlay.pm:1569
+#: html/Search/Elements/PickBasics:162 html/Ticket/Create.html:185 html/Ticket/Elements/EditBasics:79 lib/RT/Tickets_Overlay.pm:1568
 msgid "Final Priority"
 msgstr "Конечный приоритет"
 
 msgid "Final Priority"
 msgstr "Конечный приоритет"
 
@@ -2321,14 +2298,14 @@ msgstr "Изменить принудительно"
 
 #: html/Search/Elements/EditFormat:52
 msgid "Format"
 
 #: html/Search/Elements/EditFormat:52
 msgid "Format"
-msgstr ""
+msgstr "Форматировать"
 
 #: html/Search/Results.html:107
 #. ($ticketcount)
 msgid "Found %quant(%1,ticket)"
 msgstr "Найдено %quant(%1,ticket)"
 
 
 #: html/Search/Results.html:107
 #. ($ticketcount)
 msgid "Found %quant(%1,ticket)"
 msgstr "Найдено %quant(%1,ticket)"
 
-#: lib/RT/Record.pm:942
+#: lib/RT/Record.pm:939
 msgid "Found Object"
 msgstr "Найден объект"
 
 msgid "Found Object"
 msgstr "Найден объект"
 
@@ -2336,7 +2313,7 @@ msgstr "Найден объект"
 msgid "FreeformContactInfo"
 msgstr "FreeformContactInfo"
 
 msgid "FreeformContactInfo"
 msgstr "FreeformContactInfo"
 
-#: lib/RT/Date.pm:417
+#: lib/RT/Date.pm:415
 msgid "Fri."
 msgstr "Птн."
 
 msgid "Fri."
 msgstr "Птн."
 
@@ -2352,7 +2329,7 @@ msgstr "Взять шаблон из файла"
 msgid "Getting the current user from a pgp sig\\n"
 msgstr "Берем текущего пользователя из pgp подписи\\n"
 
 msgid "Getting the current user from a pgp sig\\n"
 msgstr "Берем текущего пользователя из pgp подписи\\n"
 
-#: lib/RT/Transaction_Overlay.pm:673
+#: lib/RT/Transaction_Overlay.pm.orig:671 lib/RT/Transaction_Overlay.pm:671
 #. ($New->Name)
 msgid "Given to %1"
 msgstr "Назначено %1"
 #. ($New->Name)
 msgid "Given to %1"
 msgstr "Назначено %1"
@@ -2371,7 +2348,7 @@ msgstr "Общие скриплеты"
 
 #: html/Admin/Global/CustomFields/index.html:59
 msgid "Global custom field configuration"
 
 #: html/Admin/Global/CustomFields/index.html:59
 msgid "Global custom field configuration"
-msgstr ""
+msgstr "Конфигурирование общих дополнительных полей"
 
 #: html/Admin/Elements/SelectTemplate:59
 #. (loc($Template->Name))
 
 #: html/Admin/Elements/SelectTemplate:59
 #. (loc($Template->Name))
@@ -2410,7 +2387,7 @@ msgstr "Группа %1 %2: %3"
 msgid "Group Rights"
 msgstr "Права группы"
 
 msgid "Group Rights"
 msgstr "Права группы"
 
-#: lib/RT/Group_Overlay.pm:991
+#: lib/RT/Group_Overlay.pm:989
 msgid "Group already has member"
 msgstr "Пользователь уже входит в группу"
 
 msgid "Group already has member"
 msgstr "Пользователь уже входит в группу"
 
@@ -2418,20 +2395,20 @@ msgstr "Пользователь уже входит в группу"
 msgid "Group could not be created."
 msgstr "Невозможно создать группу."
 
 msgid "Group could not be created."
 msgstr "Невозможно создать группу."
 
-#: html/Admin/Groups/Modify.html:109
+#: html/Admin/Groups/Modify.html:108
 #. ($create_msg)
 msgid "Group could not be created: %1"
 msgstr "Невозможно создать группу: %1"
 
 #. ($create_msg)
 msgid "Group could not be created: %1"
 msgstr "Невозможно создать группу: %1"
 
-#: lib/RT/Group_Overlay.pm:529
+#: lib/RT/Group_Overlay.pm:528
 msgid "Group created"
 msgstr "Группа создана"
 
 msgid "Group created"
 msgstr "Группа создана"
 
-#: lib/RT/Group_Overlay.pm:1163
+#: lib/RT/Group_Overlay.pm:1161
 msgid "Group has no such member"
 msgstr "В группе нет такого пользователя"
 
 msgid "Group has no such member"
 msgstr "В группе нет такого пользователя"
 
-#: lib/RT/Group_Overlay.pm:971 lib/RT/Queue_Overlay.pm:745 lib/RT/Queue_Overlay.pm:805 lib/RT/Ticket_Overlay.pm:1391 lib/RT/Ticket_Overlay.pm:1471
+#: lib/RT/Group_Overlay.pm:969 lib/RT/Queue_Overlay.pm:732 lib/RT/Queue_Overlay.pm:792 lib/RT/Ticket_Overlay.pm:1391 lib/RT/Ticket_Overlay.pm:1471
 msgid "Group not found"
 msgstr "Группа не найдена"
 
 msgid "Group not found"
 msgstr "Группа не найдена"
 
@@ -2443,11 +2420,11 @@ msgstr "Группа не найдена.\\n"
 msgid "Group not specified.\\n"
 msgstr "Не задана группа.\\n"
 
 msgid "Group not specified.\\n"
 msgstr "Не задана группа.\\n"
 
-#: html/Admin/Elements/GlobalCustomFieldTabs:59 html/Admin/Elements/SelectNewGroupMembers:56 html/Admin/Elements/Tabs:56 html/Admin/Global/CustomFields/index.html:69 html/Admin/Groups/Members.html:85 html/Admin/Queues/People.html:104 html/Admin/Users/Memberships.html:53 html/Admin/index.html:67 html/User/Groups/Members.html:88 lib/RT/CustomField_Overlay.pm:1088
+#: html/Admin/Elements/GlobalCustomFieldTabs:59 html/Admin/Elements/SelectNewGroupMembers:56 html/Admin/Elements/Tabs:56 html/Admin/Global/CustomFields/index.html:69 html/Admin/Groups/Members.html:85 html/Admin/Queues/People.html:104 html/Admin/Users/Memberships.html:53 html/Admin/index.html:67 html/User/Groups/Members.html:88 lib/RT/CustomField_Overlay.pm:1074
 msgid "Groups"
 msgstr "Группы"
 
 msgid "Groups"
 msgstr "Группы"
 
-#: lib/RT/Group_Overlay.pm:997
+#: lib/RT/Group_Overlay.pm:995
 msgid "Groups can't be members of their members"
 msgstr "Группы не могут быть членами входящих в них пользователей"
 
 msgid "Groups can't be members of their members"
 msgstr "Группы не могут быть членами входящих в них пользователей"
 
@@ -2499,15 +2476,15 @@ msgstr "Имеется %quant(%1,concrete mixer)."
 msgid "I have [quant,_1,concrete mixer]."
 msgstr "Имеется [quant,_1,concrete mixer]."
 
 msgid "I have [quant,_1,concrete mixer]."
 msgstr "Имеется [quant,_1,concrete mixer]."
 
-#: html/Search/Build.html:637
+#: html/Search/Build.html:697
 msgid "I'm lost"
 msgstr ""
 
 msgid "I'm lost"
 msgstr ""
 
-#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1494
+#: html/Ticket/Elements/ShowBasics:48 lib/RT/Tickets_Overlay.pm:1493
 msgid "Id"
 msgstr "Заявка"
 
 msgid "Id"
 msgstr "Заявка"
 
-#: html/Admin/Users/Modify.html:65 html/User/Prefs.html:60
+#: html/Admin/Users/Modify.html.orig:65 html/Admin/Users/Modify.html:65 html/User/Prefs.html:60
 msgid "Identity"
 msgstr "Личность"
 
 msgid "Identity"
 msgstr "Личность"
 
@@ -2531,7 +2508,7 @@ msgstr "Если бы эта программа имела установлен
 msgid "If you've updated anything above, be sure to"
 msgstr "После любых изменений необходимо"
 
 msgid "If you've updated anything above, be sure to"
 msgstr "После любых изменений необходимо"
 
-#: lib/RT/Record.pm:933
+#: lib/RT/Record.pm:931
 msgid "Illegal value for %1"
 msgstr "Недопустимое значение для %1"
 
 msgid "Illegal value for %1"
 msgstr "Недопустимое значение для %1"
 
@@ -2539,7 +2516,7 @@ msgstr "Недопустимое значение для %1"
 msgid "Image"
 msgstr "Изображение"
 
 msgid "Image"
 msgstr "Изображение"
 
-#: lib/RT/Record.pm:936
+#: lib/RT/Record.pm:934
 msgid "Immutable field"
 msgstr "Неизменяемое поле"
 
 msgid "Immutable field"
 msgstr "Неизменяемое поле"
 
@@ -2559,15 +2536,15 @@ msgstr "Показывать неиспользуемые очереди."
 msgid "Include disabled users in search."
 msgstr "Показывать отключенных пользователей."
 
 msgid "Include disabled users in search."
 msgstr "Показывать отключенных пользователей."
 
-#: html/Search/Build.html:663
+#: html/Search/Build.html:723
 msgid "Incomplete Query"
 msgid "Incomplete Query"
-msgstr ""
+msgstr "Незавершенный запрос"
 
 
-#: html/Search/Build.html:660
+#: html/Search/Build.html:720
 msgid "Incomplete query"
 msgid "Incomplete query"
-msgstr ""
+msgstr "Незавершенный запрос"
 
 
-#: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1544
+#: html/Search/Elements/PickBasics:161 lib/RT/Tickets_Overlay.pm:1543
 msgid "Initial Priority"
 msgstr "Начальный приоритет"
 
 msgid "Initial Priority"
 msgstr "Начальный приоритет"
 
@@ -2575,24 +2552,24 @@ msgstr "Начальный приоритет"
 msgid "InitialPriority"
 msgstr "Начальный приоритет"
 
 msgid "InitialPriority"
 msgstr "Начальный приоритет"
 
-#: lib/RT/ScripAction_Overlay.pm:134
+#: lib/RT/ScripAction_Overlay.pm:122
 msgid "Input error"
 msgstr "Ошибка ввода"
 
 msgid "Input error"
 msgstr "Ошибка ввода"
 
-#: lib/RT/Ticket_Overlay.pm:3454
+#: lib/RT/Ticket_Overlay.pm:3421
 msgid "Internal Error"
 msgstr "Внутренняя ошибка"
 
 msgid "Internal Error"
 msgstr "Внутренняя ошибка"
 
-#: lib/RT/Record.pm:305
+#: lib/RT/Record.pm:304
 #. ($id->{error_message})
 msgid "Internal Error: %1"
 msgstr "Внутренняя ошибка: %1"
 
 #. ($id->{error_message})
 msgid "Internal Error: %1"
 msgstr "Внутренняя ошибка: %1"
 
-#: lib/RT/Group_Overlay.pm:676
+#: lib/RT/Group_Overlay.pm:675
 msgid "Invalid Group Type"
 msgstr "Недопустимый тип группы"
 
 msgid "Invalid Group Type"
 msgstr "Недопустимый тип группы"
 
-#: lib/RT/Principal_Overlay.pm:161
+#: lib/RT/Principal_Overlay.pm:166
 msgid "Invalid Right"
 msgstr "Недопустимое право"
 
 msgid "Invalid Right"
 msgstr "Недопустимое право"
 
@@ -2600,7 +2577,7 @@ msgstr "Недопустимое право"
 msgid "Invalid Type"
 msgstr "Недопустимый тип"
 
 msgid "Invalid Type"
 msgstr "Недопустимый тип"
 
-#: lib/RT/Record.pm:938
+#: lib/RT/Record.pm:936
 msgid "Invalid data"
 msgstr "Недопустимые данные"
 
 msgid "Invalid data"
 msgstr "Недопустимые данные"
 
@@ -2608,20 +2585,20 @@ msgstr "Недопустимые данные"
 msgid "Invalid owner. Defaulting to 'nobody'."
 msgstr "Несуществующий ответственный. Используем 'nobody'."
 
 msgid "Invalid owner. Defaulting to 'nobody'."
 msgstr "Несуществующий ответственный. Используем 'nobody'."
 
-#: lib/RT/Scrip_Overlay.pm:158 lib/RT/Template_Overlay.pm:276
+#: lib/RT/Scrip_Overlay.pm:157 lib/RT/Template_Overlay.pm:276
 msgid "Invalid queue"
 msgstr "Недопустимая очередь"
 
 msgid "Invalid queue"
 msgstr "Недопустимая очередь"
 
-#: lib/RT/ACE_Overlay.pm:265 lib/RT/ACE_Overlay.pm:274 lib/RT/ACE_Overlay.pm:280 lib/RT/ACE_Overlay.pm:291
+#: lib/RT/ACE_Overlay.pm:274 lib/RT/ACE_Overlay.pm:283 lib/RT/ACE_Overlay.pm:289 lib/RT/ACE_Overlay.pm:300 lib/RT/ACE_Overlay.pm:305
 msgid "Invalid right"
 msgstr "Недопустимое право"
 
 msgid "Invalid right"
 msgstr "Недопустимое право"
 
-#: lib/RT/Record.pm:280
+#: lib/RT/Record.pm:279
 #. ($key)
 msgid "Invalid value for %1"
 msgstr "Недопустимое значение для %1"
 
 #. ($key)
 msgid "Invalid value for %1"
 msgstr "Недопустимое значение для %1"
 
-#: lib/RT/Record.pm:1597
+#: lib/RT/Record.pm:1600
 msgid "Invalid value for custom field"
 msgstr "Недопустимое значение дополнительного поля"
 
 msgid "Invalid value for custom field"
 msgstr "Недопустимое значение дополнительного поля"
 
@@ -2643,13 +2620,13 @@ msgstr "Это требует несколько параметров:"
 
 #: html/Search/Elements/EditFormat:85
 msgid "Italic"
 
 #: html/Search/Elements/EditFormat:85
 msgid "Italic"
-msgstr ""
+msgstr "Наклонный"
 
 #: NOT FOUND IN SOURCE
 msgid "Items pending my approval"
 msgstr "Заявки, ожидающие вашего подтверждения"
 
 
 #: NOT FOUND IN SOURCE
 msgid "Items pending my approval"
 msgstr "Заявки, ожидающие вашего подтверждения"
 
-#: lib/RT/Date.pm:437
+#: lib/RT/Date.pm:434
 msgid "Jan."
 msgstr "Янв."
 
 msgid "Jan."
 msgstr "Янв."
 
@@ -2661,7 +2638,7 @@ msgstr "Январь"
 msgid "Join or leave this group"
 msgstr "Присоединиться или покинуть эту группу"
 
 msgid "Join or leave this group"
 msgstr "Присоединиться или покинуть эту группу"
 
-#: lib/RT/Date.pm:443
+#: lib/RT/Date.pm:440
 msgid "Jul."
 msgstr "Июл."
 
 msgid "Jul."
 msgstr "Июл."
 
@@ -2673,7 +2650,7 @@ msgstr "Июль"
 msgid "Jumbo"
 msgstr "Все данные"
 
 msgid "Jumbo"
 msgstr "Все данные"
 
-#: lib/RT/Date.pm:442
+#: lib/RT/Date.pm:439
 msgid "Jun."
 msgstr "Июн."
 
 msgid "Jun."
 msgstr "Июн."
 
@@ -2689,13 +2666,13 @@ msgstr "Ключевое слово"
 msgid "Lang"
 msgstr "Язык"
 
 msgid "Lang"
 msgstr "Язык"
 
-#: html/Admin/Users/Modify.html:94 html/User/Prefs.html:76
+#: html/Admin/Users/Modify.html.orig:94 html/Admin/Users/Modify.html:94 html/User/Prefs.html:76
 msgid "Language"
 msgstr "Язык"
 
 #: html/Search/Elements/EditFormat:79
 msgid "Large"
 msgid "Language"
 msgstr "Язык"
 
 #: html/Search/Elements/EditFormat:79
 msgid "Large"
-msgstr ""
+msgstr "Большой"
 
 #: html/Ticket/Elements/Tabs:96
 msgid "Last"
 
 #: html/Ticket/Elements/Tabs:96
 msgid "Last"
@@ -2733,11 +2710,11 @@ msgstr "Последний раз обновлено"
 msgid "Left"
 msgstr "Осталось"
 
 msgid "Left"
 msgstr "Осталось"
 
-#: html/Admin/Users/Modify.html:109
+#: html/Admin/Users/Modify.html.orig:109 html/Admin/Users/Modify.html:109
 msgid "Let this user access RT"
 msgstr "Разрешить доступ к RT"
 
 msgid "Let this user access RT"
 msgstr "Разрешить доступ к RT"
 
-#: html/Admin/Users/Modify.html:113
+#: html/Admin/Users/Modify.html.orig:113 html/Admin/Users/Modify.html:113
 msgid "Let this user be granted rights"
 msgstr "Предоставить пользователю права"
 
 msgid "Let this user be granted rights"
 msgstr "Предоставить пользователю права"
 
@@ -2751,27 +2728,27 @@ msgstr "Ограничиваем очередь для %1 %2"
 
 #: html/Search/Elements/EditFormat:68
 msgid "Link"
 
 #: html/Search/Elements/EditFormat:68
 msgid "Link"
-msgstr ""
+msgstr "Ссылка"
 
 
-#: lib/RT/Record.pm:1292
+#: lib/RT/Record.pm:1283
 msgid "Link already exists"
 msgstr "Связь уже существует"
 
 msgid "Link already exists"
 msgstr "Связь уже существует"
 
-#: lib/RT/Record.pm:1306
+#: lib/RT/Record.pm:1297
 msgid "Link could not be created"
 msgstr "Невозможно создать связь"
 
 msgid "Link could not be created"
 msgstr "Невозможно создать связь"
 
-#: lib/RT/Record.pm:1312
+#: lib/RT/Record.pm:1303
 #. ($TransString)
 msgid "Link created (%1)"
 msgstr "Связь создана (%1)"
 
 #. ($TransString)
 msgid "Link created (%1)"
 msgstr "Связь создана (%1)"
 
-#: lib/RT/Record.pm:1373
+#: lib/RT/Record.pm:1364
 #. ($TransString)
 msgid "Link deleted (%1)"
 msgstr "Связь удалена (%1)"
 
 #. ($TransString)
 msgid "Link deleted (%1)"
 msgstr "Связь удалена (%1)"
 
-#: lib/RT/Record.pm:1379
+#: lib/RT/Record.pm:1370
 msgid "Link not found"
 msgstr "Связь не найдена"
 
 msgid "Link not found"
 msgstr "Связь не найдена"
 
@@ -2796,24 +2773,24 @@ msgstr "Загрузить"
 msgid "Load saved search:"
 msgstr "Загрузить сохраненный запрос:"
 
 msgid "Load saved search:"
 msgstr "Загрузить сохраненный запрос:"
 
-#: lib/RT/System.pm:87
+#: lib/RT/System.pm:86
 msgid "LoadSavedSearch"
 msgid "LoadSavedSearch"
-msgstr ""
+msgstr "ЗагружатьСохраненныеЗапросы"
 
 #: html/Admin/Tools/Configuration.html:64
 msgid "Loaded perl modules"
 msgstr "Загруженные модули perl"
 
 
 #: html/Admin/Tools/Configuration.html:64
 msgid "Loaded perl modules"
 msgstr "Загруженные модули perl"
 
-#: lib/RT/SavedSearch.pm:112
+#: lib/RT/SavedSearch.pm:111
 #. ($self->Name)
 msgid "Loaded search %1"
 #. ($self->Name)
 msgid "Loaded search %1"
-msgstr ""
+msgstr "Загружен запрос %1"
 
 
-#: html/Admin/Users/Modify.html:138 html/User/Prefs.html:126
+#: html/Admin/Users/Modify.html.orig:138 html/Admin/Users/Modify.html:138 html/User/Prefs.html:126
 msgid "Location"
 msgstr "Местонахождение"
 
 msgid "Location"
 msgstr "Местонахождение"
 
-#: lib/RT.pm:212
+#: lib/RT.pm:204
 #. ($RT::LogDir)
 msgid "Log directory %1 not found or couldn't be written.\\n RT can't run."
 msgstr "Не найден каталог для протоколирования %1 или не доступен на запись.\\n RT не может продолжить работу."
 #. ($RT::LogDir)
 msgid "Log directory %1 not found or couldn't be written.\\n RT can't run."
 msgstr "Не найден каталог для протоколирования %1 или не доступен на запись.\\n RT не может продолжить работу."
@@ -2831,7 +2808,7 @@ msgstr "Войти"
 msgid "Logout"
 msgstr "Выйти"
 
 msgid "Logout"
 msgstr "Выйти"
 
-#: lib/RT/CustomField_Overlay.pm:866
+#: lib/RT/CustomField_Overlay.pm:852
 msgid "Lookup type mismatch"
 msgstr ""
 
 msgid "Lookup type mismatch"
 msgstr ""
 
@@ -2877,7 +2854,7 @@ msgstr "Установить тему"
 
 #: lib/RT/Group_Overlay.pm:177
 msgid "Make this group visible to user"
 
 #: lib/RT/Group_Overlay.pm:177
 msgid "Make this group visible to user"
-msgstr ""
+msgstr "Сделать эту группу видимой для пользователя"
 
 #: html/Admin/index.html:78
 msgid "Manage custom fields and custom field values"
 
 #: html/Admin/index.html:78
 msgid "Manage custom fields and custom field values"
@@ -2899,7 +2876,7 @@ msgstr "Управление очередями и их параметрами"
 msgid "Manage users and passwords"
 msgstr "Управление пользователями и паролями"
 
 msgid "Manage users and passwords"
 msgstr "Управление пользователями и паролями"
 
-#: lib/RT/Date.pm:439
+#: lib/RT/Date.pm:436
 msgid "Mar."
 msgstr "Мар."
 
 msgid "Mar."
 msgstr "Мар."
 
@@ -2911,29 +2888,29 @@ msgstr "Март"
 msgid "May"
 msgstr "Май"
 
 msgid "May"
 msgstr "Май"
 
-#: lib/RT/Date.pm:441
+#: lib/RT/Date.pm:438
 msgid "May."
 msgstr "Май"
 
 msgid "May."
 msgstr "Май"
 
-#: lib/RT/Transaction_Overlay.pm:720
+#: lib/RT/Transaction_Overlay.pm.orig:718 lib/RT/Transaction_Overlay.pm:718
 #. ($value)
 msgid "Member %1 added"
 msgstr "Участник %1 добавлен"
 
 #. ($value)
 msgid "Member %1 added"
 msgstr "Участник %1 добавлен"
 
-#: lib/RT/Transaction_Overlay.pm:760
+#: lib/RT/Transaction_Overlay.pm.orig:758 lib/RT/Transaction_Overlay.pm:758
 #. ($value)
 msgid "Member %1 deleted"
 msgstr "Участник %1 удален"
 
 #. ($value)
 msgid "Member %1 deleted"
 msgstr "Участник %1 удален"
 
-#: lib/RT/Group_Overlay.pm:1008
+#: lib/RT/Group_Overlay.pm:1006
 msgid "Member added"
 msgstr "Пользователь добавлен в группу"
 
 msgid "Member added"
 msgstr "Пользователь добавлен в группу"
 
-#: lib/RT/Group_Overlay.pm:1170
+#: lib/RT/Group_Overlay.pm:1168
 msgid "Member deleted"
 msgstr "Пользователь удален из группы"
 
 msgid "Member deleted"
 msgstr "Пользователь удален из группы"
 
-#: lib/RT/Group_Overlay.pm:1174
+#: lib/RT/Group_Overlay.pm:1172
 msgid "Member not deleted"
 msgstr "Пользователь не удален из группы"
 
 msgid "Member not deleted"
 msgstr "Пользователь не удален из группы"
 
@@ -2949,12 +2926,12 @@ msgstr "Состоит в"
 msgid "Members"
 msgstr "Участники"
 
 msgid "Members"
 msgstr "Участники"
 
-#: lib/RT/Transaction_Overlay.pm:717
+#: lib/RT/Transaction_Overlay.pm.orig:715 lib/RT/Transaction_Overlay.pm:715
 #. ($value)
 msgid "Membership in %1 added"
 msgstr "Участие в %1 добавлено"
 
 #. ($value)
 msgid "Membership in %1 added"
 msgstr "Участие в %1 добавлено"
 
-#: lib/RT/Transaction_Overlay.pm:757
+#: lib/RT/Transaction_Overlay.pm.orig:755 lib/RT/Transaction_Overlay.pm:755
 #. ($value)
 msgid "Membership in %1 deleted"
 msgstr "Участие в %1 удалено"
 #. ($value)
 msgid "Membership in %1 deleted"
 msgstr "Участие в %1 удалено"
@@ -2968,23 +2945,23 @@ msgstr "Участие в группах"
 msgid "Memberships of the user %1"
 msgstr "Участие в группах данного пользователя %1"
 
 msgid "Memberships of the user %1"
 msgstr "Участие в группах данного пользователя %1"
 
-#: lib/RT/Ticket_Overlay.pm:2849
+#: lib/RT/Ticket_Overlay.pm:2816
 msgid "Merge Successful"
 msgstr "Заявки успешно объединены"
 
 msgid "Merge Successful"
 msgstr "Заявки успешно объединены"
 
-#: lib/RT/Ticket_Overlay.pm:2736
+#: lib/RT/Ticket_Overlay.pm:2703
 msgid "Merge failed. Couldn't set EffectiveId"
 msgstr "Ошибка объединения. Невозможно установить идентификатор заявки."
 
 msgid "Merge failed. Couldn't set EffectiveId"
 msgstr "Ошибка объединения. Невозможно установить идентификатор заявки."
 
-#: lib/RT/Ticket_Overlay.pm:2744
+#: lib/RT/Ticket_Overlay.pm:2711
 msgid "Merge failed. Couldn't set Status"
 msgid "Merge failed. Couldn't set Status"
-msgstr ""
+msgstr "Ошибка объединения. Невозможно установить статус"
 
 #: html/Elements/EditLinks:129 html/Ticket/Elements/BulkLinks:48
 msgid "Merge into"
 msgstr "Объединить с заявкой"
 
 
 #: html/Elements/EditLinks:129 html/Ticket/Elements/BulkLinks:48
 msgid "Merge into"
 msgstr "Объединить с заявкой"
 
-#: lib/RT/Transaction_Overlay.pm:723
+#: lib/RT/Transaction_Overlay.pm.orig:721 lib/RT/Transaction_Overlay.pm:721
 #. ($value)
 msgid "Merged into %1"
 msgstr "Объединено в %1"
 #. ($value)
 msgid "Merged into %1"
 msgstr "Объединено в %1"
@@ -2997,7 +2974,7 @@ msgstr "Сообщение"
 msgid "Message body not shown because it is too large or is not plain text."
 msgstr "Тело сообщения не показано потому, что оно или слишком большое или не является текстом."
 
 msgid "Message body not shown because it is too large or is not plain text."
 msgstr "Тело сообщения не показано потому, что оно или слишком большое или не является текстом."
 
-#: lib/RT/Ticket_Overlay.pm:2406
+#: lib/RT/Ticket_Overlay.pm:2383
 msgid "Message could not be recorded"
 msgstr "Невозможно записать сообщение"
 
 msgid "Message could not be recorded"
 msgstr "Невозможно записать сообщение"
 
@@ -3005,7 +2982,7 @@ msgstr "Невозможно записать сообщение"
 msgid "Message recipients"
 msgstr "Получатели сообщения"
 
 msgid "Message recipients"
 msgstr "Получатели сообщения"
 
-#: lib/RT/Ticket_Overlay.pm:2409
+#: lib/RT/Ticket_Overlay.pm:2386
 msgid "Message recorded"
 msgstr "Сообщение записано"
 
 msgid "Message recorded"
 msgstr "Сообщение записано"
 
@@ -3013,15 +2990,15 @@ msgstr "Сообщение записано"
 msgid "Messages about this ticket will not be sent to..."
 msgstr "Сообщения об этой заявке не будет отправлены..."
 
 msgid "Messages about this ticket will not be sent to..."
 msgstr "Сообщения об этой заявке не будет отправлены..."
 
-#: html/Search/Build.html:667
+#: html/Search/Build.html:727
 msgid "Mismatched parentheses"
 msgid "Mismatched parentheses"
-msgstr ""
+msgstr "Несовпадающие скобки"
 
 
-#: lib/RT/Record.pm:940
+#: lib/RT/Record.pm:938
 msgid "Missing a primary key?: %1"
 msgstr "Пропущен первичный ключ?: %1"
 
 msgid "Missing a primary key?: %1"
 msgstr "Пропущен первичный ключ?: %1"
 
-#: html/Admin/Users/Modify.html:193 html/User/Prefs.html:93
+#: html/Admin/Users/Modify.html.orig:193 html/Admin/Users/Modify.html:193 html/User/Prefs.html:93
 msgid "Mobile"
 msgstr "Мобильный"
 
 msgid "Mobile"
 msgstr "Мобильный"
 
@@ -3037,7 +3014,7 @@ msgstr "Изменено"
 msgid "Modify"
 msgstr "Изменить"
 
 msgid "Modify"
 msgstr "Изменить"
 
-#: lib/RT/Queue_Overlay.pm:95
+#: lib/RT/Queue_Overlay.pm:94
 msgid "Modify Access Control List"
 msgstr "Изменить список контроля доступа"
 
 msgid "Modify Access Control List"
 msgstr "Изменить список контроля доступа"
 
@@ -3048,7 +3025,7 @@ msgstr "Изменить дополнительное поле %1"
 #: html/Admin/Elements/ObjectCustomFields:96
 #. (loc(lc($FriendlySubTypes)), loc(lc($Types)))
 msgid "Modify Custom Fields which apply to %1 for all %2"
 #: html/Admin/Elements/ObjectCustomFields:96
 #. (loc(lc($FriendlySubTypes)), loc(lc($Types)))
 msgid "Modify Custom Fields which apply to %1 for all %2"
-msgstr ""
+msgstr "Изменение дополнительных полей, которые применяются к %1 для всех %2"
 
 #: html/Admin/Elements/ObjectCustomFields:98
 #. (loc(lc($Types)))
 
 #: html/Admin/Elements/ObjectCustomFields:98
 #. (loc(lc($Types)))
@@ -3071,11 +3048,11 @@ msgstr "Изменить участников"
 msgid "Modify Rights"
 msgstr "Изменить права"
 
 msgid "Modify Rights"
 msgstr "Изменить права"
 
-#: lib/RT/Queue_Overlay.pm:98
+#: lib/RT/Queue_Overlay.pm:97
 msgid "Modify Scrip templates for this queue"
 msgstr "Изменить шаблоны скриплетов для данной очереди"
 
 msgid "Modify Scrip templates for this queue"
 msgstr "Изменить шаблоны скриплетов для данной очереди"
 
-#: lib/RT/Queue_Overlay.pm:101
+#: lib/RT/Queue_Overlay.pm:100
 msgid "Modify Scrips for this queue"
 msgstr "Изменить скриплеты для данной очереди"
 
 msgid "Modify Scrips for this queue"
 msgstr "Изменить скриплеты для данной очереди"
 
@@ -3130,7 +3107,7 @@ msgstr "Изменить даты заявки #%1"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:65 html/Admin/Global/index.html:72
 msgid "Modify global custom fields"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:65 html/Admin/Global/index.html:72
 msgid "Modify global custom fields"
-msgstr ""
+msgstr "Изменить общие дополнительные поля"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:70 html/Admin/Global/GroupRights.html:46 html/Admin/Global/GroupRights.html:49 html/Admin/Global/index.html:77
 msgid "Modify global group rights"
 
 #: html/Admin/Elements/GlobalCustomFieldTabs:70 html/Admin/Global/GroupRights.html:46 html/Admin/Global/GroupRights.html:49 html/Admin/Global/index.html:77
 msgid "Modify global group rights"
@@ -3183,7 +3160,7 @@ msgstr "Изменить права группы на очередь %1"
 msgid "Modify membership roster for this group"
 msgstr "Изменить список участников этой группы"
 
 msgid "Modify membership roster for this group"
 msgstr "Изменить список участников этой группы"
 
-#: lib/RT/System.pm:83
+#: lib/RT/System.pm:82
 msgid "Modify one's own RT account"
 msgstr "Изменить собственную учетную запись RT"
 
 msgid "Modify one's own RT account"
 msgstr "Изменить собственную учетную запись RT"
 
@@ -3217,16 +3194,16 @@ msgstr "Изменить шаблон %1"
 msgid "Modify templates which apply to all queues"
 msgstr "Изменить шаблоны, которые применяются ко всем очередям"
 
 msgid "Modify templates which apply to all queues"
 msgstr "Изменить шаблоны, которые применяются ко всем очередям"
 
-#: html/Admin/Groups/Modify.html:119 html/User/Groups/Modify.html:107
+#: html/Admin/Groups/Modify.html:118 html/User/Groups/Modify.html:107
 #. ($Group->Name)
 msgid "Modify the group %1"
 msgstr "Изменить группу %1"
 
 #. ($Group->Name)
 msgid "Modify the group %1"
 msgstr "Изменить группу %1"
 
-#: lib/RT/Queue_Overlay.pm:96
+#: lib/RT/Queue_Overlay.pm:95
 msgid "Modify the queue watchers"
 msgstr "Изменить очередь наблюдателей"
 
 msgid "Modify the queue watchers"
 msgstr "Изменить очередь наблюдателей"
 
-#: html/Admin/Users/Modify.html:301
+#: html/Admin/Users/Modify.html.orig:303 html/Admin/Users/Modify.html:301
 #. ($UserObj->Name)
 msgid "Modify the user %1"
 msgstr "Изменить пользователя %1"
 #. ($UserObj->Name)
 msgid "Modify the user %1"
 msgstr "Изменить пользователя %1"
@@ -3241,7 +3218,7 @@ msgstr "Изменить заявку # %1"
 msgid "Modify ticket #%1"
 msgstr "Изменить заявку # %1"
 
 msgid "Modify ticket #%1"
 msgstr "Изменить заявку # %1"
 
-#: lib/RT/Queue_Overlay.pm:114
+#: lib/RT/Queue_Overlay.pm:113
 msgid "Modify tickets"
 msgstr "Изменить заявки"
 
 msgid "Modify tickets"
 msgstr "Изменить заявки"
 
@@ -3264,7 +3241,7 @@ msgstr "Изменить права пользователя на очередь
 msgid "Modify watchers for queue '%1'"
 msgstr "Изменить наблюдателей очереди '%1'"
 
 msgid "Modify watchers for queue '%1'"
 msgstr "Изменить наблюдателей очереди '%1'"
 
-#: lib/RT/Queue_Overlay.pm:95
+#: lib/RT/Queue_Overlay.pm:94
 msgid "ModifyACL"
 msgstr "ИзменятьПраваДоступа"
 
 msgid "ModifyACL"
 msgstr "ИзменятьПраваДоступа"
 
@@ -3276,27 +3253,27 @@ msgstr "ИзменятьДополнительноеПоле"
 msgid "ModifyOwnMembership"
 msgstr "ИзменятьСобственноеУчастиеВГруппах"
 
 msgid "ModifyOwnMembership"
 msgstr "ИзменятьСобственноеУчастиеВГруппах"
 
-#: lib/RT/Queue_Overlay.pm:96
+#: lib/RT/Queue_Overlay.pm:95
 msgid "ModifyQueueWatchers"
 msgstr "ИзменятьНаблюдателейОчереди"
 
 msgid "ModifyQueueWatchers"
 msgstr "ИзменятьНаблюдателейОчереди"
 
-#: lib/RT/Queue_Overlay.pm:101
+#: lib/RT/Queue_Overlay.pm:100
 msgid "ModifyScrips"
 msgstr "ИзменятьСкриплеты"
 
 msgid "ModifyScrips"
 msgstr "ИзменятьСкриплеты"
 
-#: lib/RT/System.pm:83
+#: lib/RT/System.pm:82
 msgid "ModifySelf"
 msgstr "ИзменятьСебя"
 
 msgid "ModifySelf"
 msgstr "ИзменятьСебя"
 
-#: lib/RT/Queue_Overlay.pm:98
+#: lib/RT/Queue_Overlay.pm:97
 msgid "ModifyTemplate"
 msgstr "ИзменятьШаблон"
 
 msgid "ModifyTemplate"
 msgstr "ИзменятьШаблон"
 
-#: lib/RT/Queue_Overlay.pm:114
+#: lib/RT/Queue_Overlay.pm:113
 msgid "ModifyTicket"
 msgstr "ИзменятьЗаявку"
 
 msgid "ModifyTicket"
 msgstr "ИзменятьЗаявку"
 
-#: lib/RT/Date.pm:413
+#: lib/RT/Date.pm:411
 msgid "Mon."
 msgstr "Пнд."
 
 msgid "Mon."
 msgstr "Пнд."
 
@@ -3321,7 +3298,7 @@ msgstr "Переместить вверх"
 msgid "Multiple"
 msgstr "Несколько значений"
 
 msgid "Multiple"
 msgstr "Несколько значений"
 
-#: lib/RT/User_Overlay.pm:227
+#: lib/RT/User_Overlay.pm:226
 msgid "Must specify 'Name' attribute"
 msgstr "Вы должны указать Имя"
 
 msgid "Must specify 'Name' attribute"
 msgstr "Вы должны указать Имя"
 
@@ -3346,7 +3323,7 @@ msgstr "Ваши сохраненные запросы"
 msgid "Name"
 msgstr "Имя"
 
 msgid "Name"
 msgstr "Имя"
 
-#: lib/RT/User_Overlay.pm:234
+#: lib/RT/User_Overlay.pm:233
 msgid "Name in use"
 msgstr "Имя уже используется"
 
 msgid "Name in use"
 msgstr "Имя уже используется"
 
@@ -3370,7 +3347,7 @@ msgstr "Новых"
 msgid "New Links"
 msgstr "Новые связи"
 
 msgid "New Links"
 msgstr "Новые связи"
 
-#: html/Admin/Users/Modify.html:119 html/User/Prefs.html:109
+#: html/Admin/Users/Modify.html.orig:119 html/Admin/Users/Modify.html:119 html/User/Prefs.html:109
 msgid "New Password"
 msgstr "Новый пароль"
 
 msgid "New Password"
 msgstr "Новый пароль"
 
@@ -3378,7 +3355,7 @@ msgstr "Новый пароль"
 msgid "New Pending Approval"
 msgstr "Новое ожидающее подтверждение"
 
 msgid "New Pending Approval"
 msgstr "Новое ожидающее подтверждение"
 
-#: html/Ticket/Elements/Tabs:193
+#: html/Ticket/Elements/Tabs.rej:16 html/Ticket/Elements/Tabs.rej:8 html/Ticket/Elements/Tabs:193
 msgid "New Query"
 msgstr "Новый запрос"
 
 msgid "New Query"
 msgstr "Новый запрос"
 
@@ -3402,7 +3379,7 @@ msgstr "Новая группа"
 msgid "New password"
 msgstr "Новый пароль"
 
 msgid "New password"
 msgstr "Новый пароль"
 
-#: lib/RT/User_Overlay.pm:817
+#: lib/RT/User_Overlay.pm:814
 msgid "New password notification sent"
 msgstr "Отправлено сообщение с новым паролем"
 
 msgid "New password notification sent"
 msgstr "Отправлено сообщение с новым паролем"
 
@@ -3434,7 +3411,7 @@ msgstr "Новый шаблон"
 msgid "New ticket"
 msgstr "Новая заявка"
 
 msgid "New ticket"
 msgstr "Новая заявка"
 
-#: lib/RT/Ticket_Overlay.pm:2713
+#: lib/RT/Ticket_Overlay.pm:2680
 msgid "New ticket doesn't exist"
 msgstr "Новая заявка не существует"
 
 msgid "New ticket doesn't exist"
 msgstr "Новая заявка не существует"
 
@@ -3470,7 +3447,7 @@ msgstr "Следующая страница"
 msgid "NickName"
 msgstr "Псевдоним"
 
 msgid "NickName"
 msgstr "Псевдоним"
 
-#: html/Admin/Users/Modify.html:84 html/User/Prefs.html:72
+#: html/Admin/Users/Modify.html.orig:84 html/Admin/Users/Modify.html:84 html/User/Prefs.html:72
 msgid "Nickname"
 msgstr "Псевдоним"
 
 msgid "Nickname"
 msgstr "Псевдоним"
 
@@ -3480,7 +3457,7 @@ msgstr "Нет"
 
 #: html/Admin/CustomFields/UserRights.html:145
 msgid "No Class defined"
 
 #: html/Admin/CustomFields/UserRights.html:145
 msgid "No Class defined"
-msgstr ""
+msgstr "Класс не указан"
 
 #: html/Admin/CustomFields/Modify.html:124 html/Admin/Elements/EditCustomField:119
 msgid "No CustomField"
 
 #: html/Admin/CustomFields/Modify.html:124 html/Admin/Elements/EditCustomField:119
 msgid "No CustomField"
@@ -3522,7 +3499,7 @@ msgstr "Заявка не указана. Отменяем изменения з
 msgid "No action"
 msgstr "Нет действия"
 
 msgid "No action"
 msgstr "Нет действия"
 
-#: lib/RT/Record.pm:935
+#: lib/RT/Record.pm:933
 msgid "No column specified"
 msgstr "Колонка не указана"
 
 msgid "No column specified"
 msgstr "Колонка не указана"
 
@@ -3538,12 +3515,12 @@ msgstr "Нет комментариев о пользователе"
 msgid "No correspondence attached"
 msgstr "Пустое сообщение"
 
 msgid "No correspondence attached"
 msgstr "Пустое сообщение"
 
-#: lib/RT/Action/Generic.pm:186 lib/RT/Condition/Generic.pm:198 lib/RT/Search/ActiveTicketsInQueue.pm:78 lib/RT/Search/Generic.pm:135
+#: lib/RT/Action/Generic.pm:178 lib/RT/Condition/Generic.pm:197 lib/RT/Search/ActiveTicketsInQueue.pm:77 lib/RT/Search/Generic.pm:134
 #. (ref $self)
 msgid "No description for %1"
 msgstr "Нет описания для %1"
 
 #. (ref $self)
 msgid "No description for %1"
 msgstr "Нет описания для %1"
 
-#: lib/RT/Users_Overlay.pm:185
+#: lib/RT/Users_Overlay.pm:184
 msgid "No group specified"
 msgstr "Не указана группа"
 
 msgid "No group specified"
 msgstr "Не указана группа"
 
@@ -3551,15 +3528,15 @@ msgstr "Не указана группа"
 msgid "No groups matching search criteria found."
 msgstr "Группы, удовелятворяющие условию поиска, не найдены."
 
 msgid "No groups matching search criteria found."
 msgstr "Группы, удовелятворяющие условию поиска, не найдены."
 
-#: lib/RT/Ticket_Overlay.pm:2349
+#: lib/RT/Ticket_Overlay.pm:2344
 msgid "No message attached"
 msgstr "Нет присоединенных сообщений"
 
 msgid "No message attached"
 msgstr "Нет присоединенных сообщений"
 
-#: lib/RT/User_Overlay.pm:1035
+#: lib/RT/User_Overlay.pm:1032
 msgid "No password set"
 msgstr "Пароль не установлен"
 
 msgid "No password set"
 msgstr "Пароль не установлен"
 
-#: lib/RT/Queue_Overlay.pm:358
+#: lib/RT/Queue_Overlay.pm:345
 msgid "No permission to create queues"
 msgstr "Нет прав для создания очередей"
 
 msgid "No permission to create queues"
 msgstr "Нет прав для создания очередей"
 
@@ -3568,11 +3545,11 @@ msgstr "Нет прав для создания очередей"
 msgid "No permission to create tickets in the queue '%1'"
 msgstr "Нет прав для создания заявок в очереди '%1'"
 
 msgid "No permission to create tickets in the queue '%1'"
 msgstr "Нет прав для создания заявок в очереди '%1'"
 
-#: lib/RT/User_Overlay.pm:187
+#: lib/RT/User_Overlay.pm:186
 msgid "No permission to create users"
 msgstr "Нет прав для создания пользователей"
 
 msgid "No permission to create users"
 msgstr "Нет прав для создания пользователей"
 
-#: html/SelfService/Display.html:165
+#: html/SelfService/Display.html:158
 msgid "No permission to display that ticket"
 msgstr "Нет прав для просмотра этой заявки"
 
 msgid "No permission to display that ticket"
 msgstr "Нет прав для просмотра этой заявки"
 
@@ -3580,7 +3557,7 @@ msgstr "Нет прав для просмотра этой заявки"
 msgid "No permission to view update ticket"
 msgstr "Нет прав для просмотра обновлений этой заявки"
 
 msgid "No permission to view update ticket"
 msgstr "Нет прав для просмотра обновлений этой заявки"
 
-#: lib/RT/Queue_Overlay.pm:792 lib/RT/Ticket_Overlay.pm:1450
+#: lib/RT/Queue_Overlay.pm:779 lib/RT/Ticket_Overlay.pm:1450
 msgid "No principal specified"
 msgstr "Пользователь не указан"
 
 msgid "No principal specified"
 msgstr "Пользователь не указан"
 
@@ -3600,9 +3577,9 @@ msgstr "Права не найдены"
 msgid "No rights granted."
 msgstr "Права не выданы."
 
 msgid "No rights granted."
 msgstr "Права не выданы."
 
-#: lib/RT/SavedSearch.pm:187
+#: lib/RT/SavedSearch.pm:186
 msgid "No search loaded"
 msgid "No search loaded"
-msgstr ""
+msgstr "Ни один запрос не загружен"
 
 #: html/Search/Bulk.html:194
 msgid "No search to operate on."
 
 #: html/Search/Bulk.html:194
 msgid "No search to operate on."
@@ -3616,7 +3593,7 @@ msgstr "Нет темы"
 msgid "No ticket id specified"
 msgstr "Идентификатор заявки не указан"
 
 msgid "No ticket id specified"
 msgstr "Идентификатор заявки не указан"
 
-#: lib/RT/Transaction_Overlay.pm:517 lib/RT/Transaction_Overlay.pm:554
+#: lib/RT/Transaction_Overlay.pm.orig:515 lib/RT/Transaction_Overlay.pm.orig:552 lib/RT/Transaction_Overlay.pm:515 lib/RT/Transaction_Overlay.pm:552
 msgid "No transaction type specified"
 msgstr "Тип транзакции не указан"
 
 msgid "No transaction type specified"
 msgstr "Тип транзакции не указан"
 
@@ -3632,7 +3609,7 @@ msgstr "Пользователи, удовелятворяющие услови
 msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n"
 msgstr "Не найден пользователь RT. Обработчик CVS отключен. Обратитесь к администратору RT.\\n"
 
 msgid "No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\\n"
 msgstr "Не найден пользователь RT. Обработчик CVS отключен. Обратитесь к администратору RT.\\n"
 
-#: lib/RT/Record.pm:932
+#: lib/RT/Record.pm:930
 msgid "No value sent to _Set!\\n"
 msgstr "Никакое значение не отправлено _Set!\\n"
 
 msgid "No value sent to _Set!\\n"
 msgstr "Никакое значение не отправлено _Set!\\n"
 
@@ -3640,7 +3617,7 @@ msgstr "Никакое значение не отправлено _Set!\\n"
 msgid "Nobody"
 msgstr "Никто"
 
 msgid "Nobody"
 msgstr "Никто"
 
-#: lib/RT/Record.pm:937
+#: lib/RT/Record.pm:935
 msgid "Nonexistant field?"
 msgstr "Несуществующее поле?"
 
 msgid "Nonexistant field?"
 msgstr "Несуществующее поле?"
 
@@ -3652,7 +3629,7 @@ msgstr "Не зарегистрирован"
 msgid "Not logged in."
 msgstr "Не зарегистрирован."
 
 msgid "Not logged in."
 msgstr "Не зарегистрирован."
 
-#: lib/RT/Date.pm:393
+#: lib/RT/Date.pm:392
 msgid "Not set"
 msgstr "Не установлено"
 
 msgid "Not set"
 msgstr "Не установлено"
 
@@ -3668,7 +3645,7 @@ msgstr "Еще не реализовано..."
 msgid "Notes"
 msgstr "Примечания"
 
 msgid "Notes"
 msgstr "Примечания"
 
-#: lib/RT/User_Overlay.pm:820
+#: lib/RT/User_Overlay.pm:817
 msgid "Notification could not be sent"
 msgstr "Невозможно отправить уведомление"
 
 msgid "Notification could not be sent"
 msgstr "Невозможно отправить уведомление"
 
@@ -3740,7 +3717,7 @@ msgstr "Уведомлять Авторов заявки, Копии и Адми
 msgid "Notify Requestors, Ccs and AdminCcs as Comment"
 msgstr "Уведомлять Авторов заявки, Копии и АдминистративныеКопии как Комментарии"
 
 msgid "Notify Requestors, Ccs and AdminCcs as Comment"
 msgstr "Уведомлять Авторов заявки, Копии и АдминистративныеКопии как Комментарии"
 
-#: lib/RT/Date.pm:447
+#: lib/RT/Date.pm:444
 msgid "Nov."
 msgstr "Ноя."
 
 msgid "Nov."
 msgstr "Ноя."
 
@@ -3750,23 +3727,23 @@ msgstr "Ноябрь"
 
 #: html/Search/Elements/SelectAndOr:47
 msgid "OR"
 
 #: html/Search/Elements/SelectAndOr:47
 msgid "OR"
-msgstr ""
+msgstr "ИЛИ"
 
 
-#: lib/RT/Record.pm:319
+#: lib/RT/Record.pm:318
 msgid "Object could not be created"
 msgstr "Невозможно создать объект"
 
 msgid "Object could not be created"
 msgstr "Невозможно создать объект"
 
-#: lib/RT/Record.pm:124
+#: lib/RT/Record.pm:123
 msgid "Object could not be deleted"
 msgid "Object could not be deleted"
-msgstr ""
+msgstr "Объект не может быть удален"
 
 
-#: lib/RT/Record.pm:338
+#: lib/RT/Record.pm:337
 msgid "Object created"
 msgstr "Объект создан"
 
 msgid "Object created"
 msgstr "Объект создан"
 
-#: lib/RT/Record.pm:121
+#: lib/RT/Record.pm:120
 msgid "Object deleted"
 msgid "Object deleted"
-msgstr ""
+msgstr "Объект удален"
 
 #: html/Admin/CustomFields/Objects.html:72 html/Admin/Elements/ObjectCustomFields:63
 #. ($ObjectType)
 
 #: html/Admin/CustomFields/Objects.html:72 html/Admin/Elements/ObjectCustomFields:63
 #. ($ObjectType)
@@ -3774,11 +3751,11 @@ msgstr ""
 msgid "Object of type %1 cannot take custom fields"
 msgstr "Тип объекта %1 не может содержать дополнительные поля"
 
 msgid "Object of type %1 cannot take custom fields"
 msgstr "Тип объекта %1 не может содержать дополнительные поля"
 
-#: lib/RT/CustomField_Overlay.pm:901
+#: lib/RT/CustomField_Overlay.pm:887
 msgid "Object type mismatch"
 msgstr "Несовпадение типа объекта"
 
 msgid "Object type mismatch"
 msgstr "Несовпадение типа объекта"
 
-#: lib/RT/Date.pm:446
+#: lib/RT/Date.pm:443
 msgid "Oct."
 msgstr "Окт."
 
 msgid "Oct."
 msgstr "Окт."
 
@@ -3884,7 +3861,7 @@ msgstr "Сортировать по"
 msgid "Ordering and sorting"
 msgstr "Порядок и сортировка"
 
 msgid "Ordering and sorting"
 msgstr "Порядок и сортировка"
 
-#: html/Admin/Users/Modify.html:141 html/User/Prefs.html:129
+#: html/Admin/Users/Modify.html.orig:141 html/Admin/Users/Modify.html:141 html/User/Prefs.html:129
 msgid "Organization"
 msgstr "Организация"
 
 msgid "Organization"
 msgstr "Организация"
 
@@ -3893,11 +3870,11 @@ msgstr "Организация"
 msgid "Originating ticket: #%1"
 msgstr "Заявка-первоисточник: #%1"
 
 msgid "Originating ticket: #%1"
 msgstr "Заявка-первоисточник: #%1"
 
-#: lib/RT/Transaction_Overlay.pm:611
+#: lib/RT/Transaction_Overlay.pm.orig:609 lib/RT/Transaction_Overlay.pm:609
 msgid "Outgoing email about a comment recorded"
 msgstr "Исходящая почта о комментарии записана"
 
 msgid "Outgoing email about a comment recorded"
 msgstr "Исходящая почта о комментарии записана"
 
-#: lib/RT/Transaction_Overlay.pm:615
+#: lib/RT/Transaction_Overlay.pm.orig:613 lib/RT/Transaction_Overlay.pm:613
 msgid "Outgoing email recorded"
 msgstr "Исходящая почта записана"
 
 msgid "Outgoing email recorded"
 msgstr "Исходящая почта записана"
 
@@ -3909,15 +3886,15 @@ msgstr "Со временем поднять приоритет до"
 msgid "Overview"
 msgstr "Обзор"
 
 msgid "Overview"
 msgstr "Обзор"
 
-#: lib/RT/Queue_Overlay.pm:113
+#: lib/RT/Queue_Overlay.pm:112
 msgid "Own tickets"
 msgstr "Назначить себя"
 
 msgid "Own tickets"
 msgstr "Назначить себя"
 
-#: lib/RT/Queue_Overlay.pm:113
+#: lib/RT/Queue_Overlay.pm:112
 msgid "OwnTicket"
 msgstr "БытьОтветственнымЗаЗаявку"
 
 msgid "OwnTicket"
 msgstr "БытьОтветственнымЗаЗаявку"
 
-#: etc/initialdata:38 html/Elements/QuickCreate:58 html/Search/Elements/PickBasics:101 html/SelfService/Elements/MyRequests:51 html/Ticket/Create.html:69 html/Ticket/Elements/EditPeople:64 html/Ticket/Elements/EditPeople:65 html/Ticket/Elements/ShowPeople:48 html/Ticket/Update.html:62 lib/RT/ACE_Overlay.pm:111 lib/RT/Tickets_Overlay.pm:1734
+#: etc/initialdata:38 html/Elements/QuickCreate:58 html/Search/Elements/PickBasics:101 html/SelfService/Elements/MyRequests:51 html/Ticket/Create.html:69 html/Ticket/Elements/EditPeople:64 html/Ticket/Elements/EditPeople:65 html/Ticket/Elements/ShowPeople:48 html/Ticket/Update.html:62 lib/RT/ACE_Overlay.pm:110 lib/RT/Tickets_Overlay.pm:1733
 msgid "Owner"
 msgstr "Ответственный"
 
 msgid "Owner"
 msgstr "Ответственный"
 
@@ -3929,7 +3906,7 @@ msgstr "Ответственный изменен с %1 на %2"
 msgid "Owner could not be set."
 msgstr "Ответственный не может быть назначен"
 
 msgid "Owner could not be set."
 msgstr "Ответственный не может быть назначен"
 
-#: lib/RT/Transaction_Overlay.pm:661
+#: lib/RT/Transaction_Overlay.pm.orig:659 lib/RT/Transaction_Overlay.pm:659
 #. ($Old->Name , $New->Name)
 msgid "Owner forcibly changed from %1 to %2"
 msgstr "Ответственный принудительно изменен с %1 на %2"
 #. ($Old->Name , $New->Name)
 msgid "Owner forcibly changed from %1 to %2"
 msgstr "Ответственный принудительно изменен с %1 на %2"
@@ -3943,7 +3920,7 @@ msgstr "Ответственный"
 msgid "Page %1 of %2"
 msgstr "Страница %1 из %2"
 
 msgid "Page %1 of %2"
 msgstr "Страница %1 из %2"
 
-#: html/Admin/Users/Modify.html:198 html/User/Prefs.html:97
+#: html/Admin/Users/Modify.html.orig:198 html/Admin/Users/Modify.html:198 html/User/Prefs.html:97
 msgid "Pager"
 msgstr "Пейджер"
 
 msgid "Pager"
 msgstr "Пейджер"
 
@@ -3967,33 +3944,25 @@ msgstr "Пароль"
 msgid "Password Reminder"
 msgstr "Подсказка к паролю"
 
 msgid "Password Reminder"
 msgstr "Подсказка к паролю"
 
-#: lib/RT/Transaction_Overlay.pm:770 lib/RT/User_Overlay.pm:1046
+#: lib/RT/Transaction_Overlay.pm.orig:768 lib/RT/Transaction_Overlay.pm:768 lib/RT/User_Overlay.pm:1041
 msgid "Password changed"
 msgid "Password changed"
-msgstr ""
+msgstr "Пароль изменен"
 
 
-#: lib/RT/User_Overlay.pm:1038 lib/RT/User_Overlay.pm:215
+#: lib/RT/User_Overlay.pm:1035 lib/RT/User_Overlay.pm:214
 #. ($RT::MinimumPasswordLength)
 msgid "Password needs to be at least %1 characters long"
 #. ($RT::MinimumPasswordLength)
 msgid "Password needs to be at least %1 characters long"
-msgstr ""
-
-#: lib/RT/User_Overlay.pm:1045
-msgid "Password set"
-msgstr ""
+msgstr "Пароль должен состоят не менее чем из %1 символов"
 
 #: NOT FOUND IN SOURCE
 msgid "Password too short"
 msgstr "Пароль слишком короткий"
 
 
 #: NOT FOUND IN SOURCE
 msgid "Password too short"
 msgstr "Пароль слишком короткий"
 
-#: html/User/Prefs.html:232
+#: html/Admin/Users/Modify.html.orig:357 html/Admin/Users/Modify.html:355 html/User/Prefs.html:232
 #. (loc_fuzzy($msg))
 msgid "Password: %1"
 msgstr "Пароль: %1"
 
 #. (loc_fuzzy($msg))
 msgid "Password: %1"
 msgstr "Пароль: %1"
 
-#: lib/RT/User_Overlay.pm:1031
-msgid "Password: Permission Denied"
-msgstr ""
-
-#: html/Admin/Users/Modify.html:356
+#: html/Admin/Users/Modify.html.orig:359 html/Admin/Users/Modify.html:357
 msgid "Passwords do not match."
 msgstr "Пароли не совпадают"
 
 msgid "Passwords do not match."
 msgstr "Пароли не совпадают"
 
@@ -4013,7 +3982,7 @@ msgstr "Выволнить действие, указанное пользова
 msgid "Perl configuration"
 msgstr "Конфигурация Perl"
 
 msgid "Perl configuration"
 msgstr "Конфигурация Perl"
 
-#: lib/RT/ACE_Overlay.pm:252 lib/RT/ACE_Overlay.pm:258 lib/RT/ACE_Overlay.pm:581 lib/RT/ACE_Overlay.pm:591 lib/RT/ACE_Overlay.pm:601 lib/RT/ACE_Overlay.pm:666 lib/RT/Attribute_Overlay.pm:158 lib/RT/Attribute_Overlay.pm:164 lib/RT/Attribute_Overlay.pm:402 lib/RT/Attribute_Overlay.pm:411 lib/RT/Attribute_Overlay.pm:424 lib/RT/CurrentUser.pm:117 lib/RT/CurrentUser.pm:126 lib/RT/CustomField_Overlay.pm:1022 lib/RT/CustomField_Overlay.pm:167 lib/RT/CustomField_Overlay.pm:184 lib/RT/CustomField_Overlay.pm:195 lib/RT/CustomField_Overlay.pm:366 lib/RT/CustomField_Overlay.pm:398 lib/RT/CustomField_Overlay.pm:697 lib/RT/CustomField_Overlay.pm:870 lib/RT/CustomField_Overlay.pm:905 lib/RT/CustomField_Overlay.pm:950 lib/RT/Group_Overlay.pm:1125 lib/RT/Group_Overlay.pm:1129 lib/RT/Group_Overlay.pm:1138 lib/RT/Group_Overlay.pm:1248 lib/RT/Group_Overlay.pm:1252 lib/RT/Group_Overlay.pm:1258 lib/RT/Group_Overlay.pm:453 lib/RT/Group_Overlay.pm:550 lib/RT/Group_Overlay.pm:628 lib/RT/Group_Overlay.pm:636 lib/RT/Group_Overlay.pm:734 lib/RT/Group_Overlay.pm:738 lib/RT/Group_Overlay.pm:744 lib/RT/Group_Overlay.pm:930 lib/RT/Group_Overlay.pm:934 lib/RT/Group_Overlay.pm:947 lib/RT/Queue_Overlay.pm:1051 lib/RT/Queue_Overlay.pm:141 lib/RT/Queue_Overlay.pm:159 lib/RT/Queue_Overlay.pm:654 lib/RT/Queue_Overlay.pm:664 lib/RT/Queue_Overlay.pm:678 lib/RT/Queue_Overlay.pm:816 lib/RT/Queue_Overlay.pm:825 lib/RT/Queue_Overlay.pm:838 lib/RT/Scrip_Overlay.pm:150 lib/RT/Scrip_Overlay.pm:161 lib/RT/Scrip_Overlay.pm:226 lib/RT/Scrip_Overlay.pm:540 lib/RT/Template_Overlay.pm:112 lib/RT/Template_Overlay.pm:118 lib/RT/Template_Overlay.pm:309 lib/RT/Ticket_Overlay.pm:1318 lib/RT/Ticket_Overlay.pm:1328 lib/RT/Ticket_Overlay.pm:1342 lib/RT/Ticket_Overlay.pm:1483 lib/RT/Ticket_Overlay.pm:1493 lib/RT/Ticket_Overlay.pm:1507 lib/RT/Ticket_Overlay.pm:1624 lib/RT/Ticket_Overlay.pm:1944 lib/RT/Ticket_Overlay.pm:2082 lib/RT/Ticket_Overlay.pm:2252 lib/RT/Ticket_Overlay.pm:2302 lib/RT/Ticket_Overlay.pm:2474 lib/RT/Ticket_Overlay.pm:2577 lib/RT/Ticket_Overlay.pm:2625 lib/RT/Ticket_Overlay.pm:2704 lib/RT/Ticket_Overlay.pm:2718 lib/RT/Ticket_Overlay.pm:2942 lib/RT/Ticket_Overlay.pm:2952 lib/RT/Ticket_Overlay.pm:2957 lib/RT/Ticket_Overlay.pm:3180 lib/RT/Ticket_Overlay.pm:3184 lib/RT/Ticket_Overlay.pm:3327 lib/RT/Ticket_Overlay.pm:3448 lib/RT/Transaction_Overlay.pm:505 lib/RT/Transaction_Overlay.pm:512 lib/RT/Transaction_Overlay.pm:540 lib/RT/Transaction_Overlay.pm:547 lib/RT/User_Overlay.pm:1184 lib/RT/User_Overlay.pm:1725 lib/RT/User_Overlay.pm:370 lib/RT/User_Overlay.pm:736 lib/RT/User_Overlay.pm:775
+#: lib/RT/ACE_Overlay.pm:261 lib/RT/ACE_Overlay.pm:267 lib/RT/ACE_Overlay.pm:593 lib/RT/ACE_Overlay.pm:603 lib/RT/ACE_Overlay.pm:613 lib/RT/ACE_Overlay.pm:678 lib/RT/Attribute_Overlay.pm:158 lib/RT/Attribute_Overlay.pm:164 lib/RT/Attribute_Overlay.pm:402 lib/RT/Attribute_Overlay.pm:411 lib/RT/Attribute_Overlay.pm:424 lib/RT/CurrentUser.pm:116 lib/RT/CurrentUser.pm:125 lib/RT/CustomField_Overlay.pm:1008 lib/RT/CustomField_Overlay.pm:162 lib/RT/CustomField_Overlay.pm:179 lib/RT/CustomField_Overlay.pm:190 lib/RT/CustomField_Overlay.pm:360 lib/RT/CustomField_Overlay.pm:392 lib/RT/CustomField_Overlay.pm:684 lib/RT/CustomField_Overlay.pm:856 lib/RT/CustomField_Overlay.pm:891 lib/RT/CustomField_Overlay.pm:936 lib/RT/Group_Overlay.pm:1123 lib/RT/Group_Overlay.pm:1127 lib/RT/Group_Overlay.pm:1136 lib/RT/Group_Overlay.pm:1246 lib/RT/Group_Overlay.pm:1250 lib/RT/Group_Overlay.pm:1256 lib/RT/Group_Overlay.pm:452 lib/RT/Group_Overlay.pm:549 lib/RT/Group_Overlay.pm:627 lib/RT/Group_Overlay.pm:635 lib/RT/Group_Overlay.pm:732 lib/RT/Group_Overlay.pm:736 lib/RT/Group_Overlay.pm:742 lib/RT/Group_Overlay.pm:928 lib/RT/Group_Overlay.pm:932 lib/RT/Group_Overlay.pm:945 lib/RT/Queue_Overlay.pm:1038 lib/RT/Queue_Overlay.pm:140 lib/RT/Queue_Overlay.pm:158 lib/RT/Queue_Overlay.pm:641 lib/RT/Queue_Overlay.pm:651 lib/RT/Queue_Overlay.pm:665 lib/RT/Queue_Overlay.pm:803 lib/RT/Queue_Overlay.pm:812 lib/RT/Queue_Overlay.pm:825 lib/RT/Scrip_Overlay.pm:149 lib/RT/Scrip_Overlay.pm:160 lib/RT/Scrip_Overlay.pm:225 lib/RT/Scrip_Overlay.pm:539 lib/RT/Template_Overlay.pm:112 lib/RT/Template_Overlay.pm:118 lib/RT/Template_Overlay.pm:309 lib/RT/Ticket_Overlay.pm:1318 lib/RT/Ticket_Overlay.pm:1328 lib/RT/Ticket_Overlay.pm:1342 lib/RT/Ticket_Overlay.pm:1483 lib/RT/Ticket_Overlay.pm:1493 lib/RT/Ticket_Overlay.pm:1507 lib/RT/Ticket_Overlay.pm:1624 lib/RT/Ticket_Overlay.pm:1944 lib/RT/Ticket_Overlay.pm:2082 lib/RT/Ticket_Overlay.pm:2250 lib/RT/Ticket_Overlay.pm:2297 lib/RT/Ticket_Overlay.pm:2451 lib/RT/Ticket_Overlay.pm:2552 lib/RT/Ticket_Overlay.pm:2592 lib/RT/Ticket_Overlay.pm:2671 lib/RT/Ticket_Overlay.pm:2685 lib/RT/Ticket_Overlay.pm:2909 lib/RT/Ticket_Overlay.pm:2919 lib/RT/Ticket_Overlay.pm:2924 lib/RT/Ticket_Overlay.pm:3147 lib/RT/Ticket_Overlay.pm:3151 lib/RT/Ticket_Overlay.pm:3294 lib/RT/Ticket_Overlay.pm:3415 lib/RT/Transaction_Overlay.pm.orig:503 lib/RT/Transaction_Overlay.pm.orig:510 lib/RT/Transaction_Overlay.pm.orig:538 lib/RT/Transaction_Overlay.pm.orig:545 lib/RT/Transaction_Overlay.pm:503 lib/RT/Transaction_Overlay.pm:510 lib/RT/Transaction_Overlay.pm:538 lib/RT/Transaction_Overlay.pm:545 lib/RT/User_Overlay.pm:1028 lib/RT/User_Overlay.pm:1179 lib/RT/User_Overlay.pm:1720 lib/RT/User_Overlay.pm:369 lib/RT/User_Overlay.pm:733 lib/RT/User_Overlay.pm:772
 msgid "Permission Denied"
 msgstr "Нет доступа"
 
 msgid "Permission Denied"
 msgstr "Нет доступа"
 
@@ -4029,7 +3998,7 @@ msgstr "Личные группы"
 msgid "Personal groups:"
 msgstr "Личные группы:"
 
 msgid "Personal groups:"
 msgstr "Личные группы:"
 
-#: html/Admin/Users/Modify.html:180 html/User/Prefs.html:82
+#: html/Admin/Users/Modify.html.orig:180 html/Admin/Users/Modify.html:180 html/User/Prefs.html:82
 msgid "Phone numbers"
 msgstr "Номера телефонов"
 
 msgid "Phone numbers"
 msgstr "Номера телефонов"
 
@@ -4037,7 +4006,7 @@ msgstr "Номера телефонов"
 msgid "Placeholder"
 msgstr "Заполнитель"
 
 msgid "Placeholder"
 msgstr "Заполнитель"
 
-#: html/Elements/Header:87 html/Elements/Tabs:88 html/SelfService/Elements/Tabs:75 html/SelfService/Prefs.html:46 html/User/Prefs.html:46 html/User/Prefs.html:49
+#: html/Elements/Header:87 html/Elements/Tabs:88 html/SelfService/Elements/Tabs:72 html/SelfService/Prefs.html:46 html/User/Prefs.html:46 html/User/Prefs.html:49
 msgid "Preferences"
 msgstr "Настройки"
 
 msgid "Preferences"
 msgstr "Настройки"
 
@@ -4045,7 +4014,7 @@ msgstr "Настройки"
 msgid "Prefs"
 msgstr "Настройки"
 
 msgid "Prefs"
 msgstr "Настройки"
 
-#: lib/RT/Action/Generic.pm:196
+#: lib/RT/Action/Generic.pm:188
 msgid "Prepare Stubbed"
 msgstr "Подготовка не реализована"
 
 msgid "Prepare Stubbed"
 msgstr "Подготовка не реализована"
 
@@ -4065,12 +4034,12 @@ msgstr "Предыдущая страница"
 msgid "Pri"
 msgstr "Приоритет"
 
 msgid "Pri"
 msgstr "Приоритет"
 
-#: lib/RT/ACE_Overlay.pm:158 lib/RT/ACE_Overlay.pm:240 lib/RT/ACE_Overlay.pm:570
+#: lib/RT/ACE_Overlay.pm:157 lib/RT/ACE_Overlay.pm:238 lib/RT/ACE_Overlay.pm:582
 #. ($args{'PrincipalId'})
 msgid "Principal %1 not found."
 msgstr "Пользователь %1 не найден."
 
 #. ($args{'PrincipalId'})
 msgid "Principal %1 not found."
 msgstr "Пользователь %1 не найден."
 
-#: html/Search/Elements/PickBasics:160 html/Ticket/Create.html:184 html/Ticket/Elements/EditBasics:74 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1518
+#: html/Search/Elements/PickBasics:160 html/Ticket/Create.html:184 html/Ticket/Elements/EditBasics:74 html/Ticket/Elements/ShowBasics:72 lib/RT/Tickets_Overlay.pm:1517
 msgid "Priority"
 msgstr "Приоритет"
 
 msgid "Priority"
 msgstr "Приоритет"
 
@@ -4086,7 +4055,7 @@ msgstr "Конфиденциальность:"
 msgid "Privileged"
 msgstr "Привилегированные"
 
 msgid "Privileged"
 msgstr "Привилегированные"
 
-#: html/Admin/Users/Modify.html:334 html/User/Prefs.html:223
+#: html/Admin/Users/Modify.html.orig:337 html/Admin/Users/Modify.html:335 html/User/Prefs.html:223
 #. (loc_fuzzy($msg))
 msgid "Privileged status: %1"
 msgstr "Состояние привилегий: %1"
 #. (loc_fuzzy($msg))
 msgid "Privileged status: %1"
 msgstr "Состояние привилегий: %1"
@@ -4107,11 +4076,11 @@ msgstr "Псевдогруппы для внутреннего использо
 msgid "Query"
 msgstr "Запрос"
 
 msgid "Query"
 msgstr "Запрос"
 
-#: html/Search/Build.html:124 html/Ticket/Elements/Tabs:195
+#: html/Search/Build.html:103 html/Ticket/Elements/Tabs:195
 msgid "Query Builder"
 msgstr "Построитель запроса"
 
 msgid "Query Builder"
 msgstr "Построитель запроса"
 
-#: html/Elements/QuickCreate:55 html/Elements/Quicksearch:50 html/Search/Elements/PickBasics:71 html/SelfService/Create.html:54 html/Ticket/Create.html:59 html/Ticket/Elements/EditBasics:57 html/Ticket/Elements/ShowBasics:76 html/User/Elements/DelegateRights:101 lib/RT/Tickets_Overlay.pm:1345
+#: html/Elements/QuickCreate:55 html/Elements/Quicksearch:50 html/Search/Elements/PickBasics:71 html/SelfService/Create.html:54 html/Ticket/Create.html:59 html/Ticket/Elements/EditBasics:57 html/Ticket/Elements/ShowBasics:76 html/User/Elements/DelegateRights:101 lib/RT/Tickets_Overlay.pm:1344
 msgid "Queue"
 msgstr "Очередь"
 
 msgid "Queue"
 msgstr "Очередь"
 
@@ -4133,11 +4102,11 @@ msgstr "Наименование очереди"
 msgid "Queue Scrips"
 msgstr "Скриплеты очереди"
 
 msgid "Queue Scrips"
 msgstr "Скриплеты очереди"
 
-#: lib/RT/Queue_Overlay.pm:362
+#: lib/RT/Queue_Overlay.pm:349
 msgid "Queue already exists"
 msgstr "Очередь уже существует"
 
 msgid "Queue already exists"
 msgstr "Очередь уже существует"
 
-#: lib/RT/Queue_Overlay.pm:371 lib/RT/Queue_Overlay.pm:377
+#: lib/RT/Queue_Overlay.pm:358 lib/RT/Queue_Overlay.pm:364
 msgid "Queue could not be created"
 msgstr "Невозможно создать очередь"
 
 msgid "Queue could not be created"
 msgstr "Невозможно создать очередь"
 
@@ -4145,7 +4114,7 @@ msgstr "Невозможно создать очередь"
 msgid "Queue could not be loaded."
 msgstr "Невозможно загрузить очередь"
 
 msgid "Queue could not be loaded."
 msgstr "Невозможно загрузить очередь"
 
-#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:381 lib/RT/StyleGuide.pod:809
+#: docs/design_docs/string-extraction-guide.txt:83 lib/RT/Queue_Overlay.pm:368 lib/RT/StyleGuide.pod:809
 msgid "Queue created"
 msgstr "Очередь создана"
 
 msgid "Queue created"
 msgstr "Очередь создана"
 
@@ -4153,7 +4122,7 @@ msgstr "Очередь создана"
 msgid "Queue is not specified."
 msgstr "Очередь не указана."
 
 msgid "Queue is not specified."
 msgstr "Очередь не указана."
 
-#: html/SelfService/Display.html:102 lib/RT/CustomField_Overlay.pm:192
+#: html/SelfService/Display.html:95 lib/RT/CustomField_Overlay.pm:187
 msgid "Queue not found"
 msgstr "Очередь не найдена"
 
 msgid "Queue not found"
 msgstr "Очередь не найдена"
 
@@ -4211,7 +4180,7 @@ msgstr "Ошибка конфигурации RT"
 msgid "RT Critical error. Message not recorded!"
 msgstr "Критическая ошибка RT: Сообщение не было сохранено!"
 
 msgid "RT Critical error. Message not recorded!"
 msgstr "Критическая ошибка RT: Сообщение не было сохранено!"
 
-#: html/Elements/Error:65 html/SelfService/Error.html:62
+#: html/Elements/Error:63 html/SelfService/Error.html:62
 msgid "RT Error"
 msgstr "Ошибка RT"
 
 msgid "RT Error"
 msgstr "Ошибка RT"
 
@@ -4253,13 +4222,13 @@ msgstr "RT не может найти очередь: %1"
 
 #: html/Elements/SetupSessionCookie:90
 msgid "RT couldn't store your session."
 
 #: html/Elements/SetupSessionCookie:90
 msgid "RT couldn't store your session."
-msgstr ""
+msgstr "Ошибка сохранения вашей сессии"
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't validate this PGP signature. \\n"
 msgstr "RT не может проверить эту подпись PGP. \\n"
 
 
 #: NOT FOUND IN SOURCE
 msgid "RT couldn't validate this PGP signature. \\n"
 msgstr "RT не может проверить эту подпись PGP. \\n"
 
-#: html/Elements/PageLayout:108
+#: html/Elements/PageLayout:107
 #. ($RT::rtname)
 msgid "RT for %1"
 msgstr "RT для %1"
 #. ($RT::rtname)
 msgid "RT for %1"
 msgstr "RT для %1"
@@ -4296,7 +4265,7 @@ msgstr "RT будет обрабатывать это сообщение как
 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 email требует использования подписи .PGP. Вы либо не подписали сообщение, либо ваша подпись не может быть проверена."
 
 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 email требует использования подписи .PGP. Вы либо не подписали сообщение, либо ваша подпись не может быть проверена."
 
-#: html/Admin/Users/Modify.html:79 html/User/Prefs.html:69
+#: html/Admin/Users/Modify.html.orig:79 html/Admin/Users/Modify.html:79 html/User/Prefs.html:69
 msgid "Real Name"
 msgstr "Полное имя"
 
 msgid "Real Name"
 msgstr "Полное имя"
 
@@ -4304,22 +4273,22 @@ msgstr "Полное имя"
 msgid "RealName"
 msgstr "Полное имя"
 
 msgid "RealName"
 msgstr "Полное имя"
 
-#: lib/RT/Transaction_Overlay.pm:714
+#: lib/RT/Transaction_Overlay.pm.orig:712 lib/RT/Transaction_Overlay.pm:712
 #. ($value)
 msgid "Reference by %1 added"
 msgstr "Ссылка на заявку заявки %1 добавлена"
 
 #. ($value)
 msgid "Reference by %1 added"
 msgstr "Ссылка на заявку заявки %1 добавлена"
 
-#: lib/RT/Transaction_Overlay.pm:754
+#: lib/RT/Transaction_Overlay.pm.orig:752 lib/RT/Transaction_Overlay.pm:752
 #. ($value)
 msgid "Reference by %1 deleted"
 msgstr "Ссылка на заявку заявки %1 удалена"
 
 #. ($value)
 msgid "Reference by %1 deleted"
 msgstr "Ссылка на заявку заявки %1 удалена"
 
-#: lib/RT/Transaction_Overlay.pm:711
+#: lib/RT/Transaction_Overlay.pm.orig:709 lib/RT/Transaction_Overlay.pm:709
 #. ($value)
 msgid "Reference to %1 added"
 msgstr "Ссылка на %1 добавлена"
 
 #. ($value)
 msgid "Reference to %1 added"
 msgstr "Ссылка на %1 добавлена"
 
-#: lib/RT/Transaction_Overlay.pm:751
+#: lib/RT/Transaction_Overlay.pm.orig:749 lib/RT/Transaction_Overlay.pm:749
 #. ($value)
 msgid "Reference to %1 deleted"
 msgstr "Ссылка на %1 удалена"
 #. ($value)
 msgid "Reference to %1 deleted"
 msgstr "Ссылка на %1 удалена"
@@ -4365,7 +4334,7 @@ msgstr "Удалить копию"
 msgid "Remove Requestor"
 msgstr "Удалить Автора Заявки"
 
 msgid "Remove Requestor"
 msgstr "Удалить Автора Заявки"
 
-#: html/Ticket/Elements/ShowTransaction:171 html/Ticket/Elements/Tabs:145
+#: html/Ticket/Elements/ShowTransaction:170 html/Ticket/Elements/Tabs:145
 msgid "Reply"
 msgstr "Ответить"
 
 msgid "Reply"
 msgstr "Ответить"
 
@@ -4377,15 +4346,15 @@ msgstr "Адрес для ответа"
 msgid "Reply to requestors"
 msgstr "Отвечать авторам заявки"
 
 msgid "Reply to requestors"
 msgstr "Отвечать авторам заявки"
 
-#: lib/RT/Queue_Overlay.pm:111
+#: lib/RT/Queue_Overlay.pm:110
 msgid "Reply to tickets"
 msgstr "Отвечать на заявки"
 
 msgid "Reply to tickets"
 msgstr "Отвечать на заявки"
 
-#: lib/RT/Queue_Overlay.pm:111
+#: lib/RT/Queue_Overlay.pm:110
 msgid "ReplyToTicket"
 msgstr "ОтвечатьНаЗаявку"
 
 msgid "ReplyToTicket"
 msgstr "ОтвечатьНаЗаявку"
 
-#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:112
+#: etc/initialdata:44 lib/RT/ACE_Overlay.pm:111
 msgid "Requestor"
 msgstr "Автор заявки"
 
 msgid "Requestor"
 msgstr "Автор заявки"
 
@@ -4418,7 +4387,7 @@ msgstr "Необходимый параметр '%1' не указан"
 msgid "Reset"
 msgstr "Очистить"
 
 msgid "Reset"
 msgstr "Очистить"
 
-#: html/Admin/Users/Modify.html:183 html/User/Prefs.html:85
+#: html/Admin/Users/Modify.html.orig:183 html/Admin/Users/Modify.html:183 html/User/Prefs.html:85
 msgid "Residence"
 msgstr "Домашний"
 
 msgid "Residence"
 msgstr "Домашний"
 
@@ -4426,7 +4395,7 @@ msgstr "Домашний"
 msgid "Resolve"
 msgstr "Решить"
 
 msgid "Resolve"
 msgstr "Решить"
 
-#: html/Ticket/Update.html:154
+#: html/Ticket/Update.html:151
 #. ($TicketObj->id, $TicketObj->Subject)
 msgid "Resolve ticket #%1 (%2)"
 msgstr "Решить заявка #%1 (%2)"
 #. ($TicketObj->id, $TicketObj->Subject)
 msgid "Resolve ticket #%1 (%2)"
 msgstr "Решить заявка #%1 (%2)"
@@ -4447,7 +4416,7 @@ msgstr "Результаты"
 msgid "Results per page"
 msgstr "Результатов на странице"
 
 msgid "Results per page"
 msgstr "Результатов на странице"
 
-#: html/Admin/Users/Modify.html:126 html/User/Prefs.html:116
+#: html/Admin/Users/Modify.html.orig:126 html/Admin/Users/Modify.html:126 html/User/Prefs.html:116
 msgid "Retype Password"
 msgstr "Повторите пароль"
 
 msgid "Retype Password"
 msgstr "Повторите пароль"
 
@@ -4459,19 +4428,19 @@ msgstr "Обратить"
 msgid "Right %1 not found for %2  %3 in scope %4 (%5)\\n"
 msgstr "Право %1 не найдено для %2  %3 в рамках %4 (%5)\\n"
 
 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:631
+#: lib/RT/ACE_Overlay.pm:643
 msgid "Right Delegated"
 msgstr "Право делегировано"
 
 msgid "Right Delegated"
 msgstr "Право делегировано"
 
-#: lib/RT/ACE_Overlay.pm:321
+#: lib/RT/ACE_Overlay.pm:333
 msgid "Right Granted"
 msgstr "Право выдано"
 
 msgid "Right Granted"
 msgstr "Право выдано"
 
-#: lib/RT/ACE_Overlay.pm:179
+#: lib/RT/ACE_Overlay.pm:185
 msgid "Right Loaded"
 msgstr "Право загружено"
 
 msgid "Right Loaded"
 msgstr "Право загружено"
 
-#: lib/RT/ACE_Overlay.pm:696 lib/RT/ACE_Overlay.pm:717
+#: lib/RT/ACE_Overlay.pm:708 lib/RT/ACE_Overlay.pm:729
 msgid "Right could not be revoked"
 msgstr "Право не может быть отозвано"
 
 msgid "Right could not be revoked"
 msgstr "Право не может быть отозвано"
 
@@ -4479,11 +4448,11 @@ msgstr "Право не может быть отозвано"
 msgid "Right not found"
 msgstr "Право не найдено"
 
 msgid "Right not found"
 msgstr "Право не найдено"
 
-#: lib/RT/ACE_Overlay.pm:561 lib/RT/ACE_Overlay.pm:656
+#: lib/RT/ACE_Overlay.pm:573 lib/RT/ACE_Overlay.pm:668
 msgid "Right not loaded."
 msgstr "Право не загружено"
 
 msgid "Right not loaded."
 msgstr "Право не загружено"
 
-#: lib/RT/ACE_Overlay.pm:713
+#: lib/RT/ACE_Overlay.pm:725
 msgid "Right revoked"
 msgstr "Право отозвано"
 
 msgid "Right revoked"
 msgstr "Право отозвано"
 
@@ -4491,12 +4460,12 @@ msgstr "Право отозвано"
 msgid "Rights"
 msgstr "Права"
 
 msgid "Rights"
 msgstr "Права"
 
-#: html/Admin/CustomFields/GroupRights.html:129 lib/RT/Interface/Web.pm:901
+#: html/Admin/CustomFields/GroupRights.html:129 lib/RT/Interface/Web.pm:869
 #. ($object_type)
 msgid "Rights could not be granted for %1"
 msgstr "Невозможно выдать права для %1"
 
 #. ($object_type)
 msgid "Rights could not be granted for %1"
 msgstr "Невозможно выдать права для %1"
 
-#: html/Admin/CustomFields/GroupRights.html:156 lib/RT/Interface/Web.pm:930
+#: html/Admin/CustomFields/GroupRights.html:156 lib/RT/Interface/Web.pm:898
 #. ($object_type)
 msgid "Rights could not be revoked for %1"
 msgstr "Невозможно отозвать права %1"
 #. ($object_type)
 msgid "Rights could not be revoked for %1"
 msgstr "Невозможно отозвать права %1"
@@ -4509,7 +4478,7 @@ msgstr "Псевдо-группы"
 msgid "Rows per page"
 msgstr "Строк на странице"
 
 msgid "Rows per page"
 msgstr "Строк на странице"
 
-#: lib/RT/Date.pm:418
+#: lib/RT/Date.pm:416
 msgid "Sat."
 msgstr "Суб."
 
 msgid "Sat."
 msgstr "Суб."
 
@@ -4517,7 +4486,7 @@ msgstr "Суб."
 msgid "Save"
 msgstr "Сохранить"
 
 msgid "Save"
 msgstr "Сохранить"
 
-#: html/Admin/Global/Template.html:67 html/Admin/Groups/Modify.html:88 html/Admin/Queues/Modify.html:111 html/Admin/Queues/People.html:126 html/Admin/Users/Modify.html:238 html/SelfService/Prefs.html:58 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:127 html/Ticket/ModifyDates.html:60 html/Ticket/ModifyLinks.html:60 html/Ticket/ModifyPeople.html:59 html/User/Groups/Modify.html:77
+#: html/Admin/Global/Template.html:67 html/Admin/Groups/Modify.html:87 html/Admin/Queues/Modify.html:111 html/Admin/Queues/People.html:126 html/Admin/Users/Modify.html.orig:238 html/Admin/Users/Modify.html:238 html/SelfService/Prefs.html:58 html/Ticket/Modify.html:60 html/Ticket/ModifyAll.html:127 html/Ticket/ModifyDates.html:60 html/Ticket/ModifyLinks.html:60 html/Ticket/ModifyPeople.html:59 html/User/Groups/Modify.html:77
 msgid "Save Changes"
 msgstr "Сохранить изменения"
 
 msgid "Save Changes"
 msgstr "Сохранить изменения"
 
@@ -4529,23 +4498,22 @@ msgstr "Сохранить настройки"
 msgid "Save changes"
 msgstr "Сохранить изменения"
 
 msgid "Save changes"
 msgstr "Сохранить изменения"
 
-#: lib/RT/SavedSearch.pm:162
+#: lib/RT/SavedSearch.pm:161
 #. ($name)
 msgid "Saved search %1"
 #. ($name)
 msgid "Saved search %1"
-msgstr ""
+msgstr "Сохраненный запрос %1"
 
 #: html/Search/Elements/EditSearches:46
 msgid "Saved searches"
 msgstr "Сохраненные запросы"
 
 
 #: html/Search/Elements/EditSearches:46
 msgid "Saved searches"
 msgstr "Сохраненные запросы"
 
-#: html/Admin/Elements/ListGlobalScrips:61 html/Admin/Global/Scrip.html:70 html/Admin/Queues/Scrip.html:76
-#. ($scrip->Id)
+#: html/Admin/Global/Scrip.html:70 html/Admin/Queues/Scrip.html:76
 #. ($id)
 #. ($ARGS{'id'})
 msgid "Scrip #%1"
 msgstr "Скриплет #%1"
 
 #. ($id)
 #. ($ARGS{'id'})
 msgid "Scrip #%1"
 msgstr "Скриплет #%1"
 
-#: lib/RT/Scrip_Overlay.pm:205
+#: lib/RT/Scrip_Overlay.pm:204
 msgid "Scrip Created"
 msgstr "Скриплет создан"
 
 msgid "Scrip Created"
 msgstr "Скриплет создан"
 
@@ -4569,7 +4537,7 @@ msgstr "Скриплеты для %1\\n"
 msgid "Scrips which apply to all queues"
 msgstr "Скриплеты, которые действуют для всех очередей"
 
 msgid "Scrips which apply to all queues"
 msgstr "Скриплеты, которые действуют для всех очередей"
 
-#: html/Elements/SimpleSearch:48 html/Search/Build.html:112
+#: html/Elements/SimpleSearch:48 html/Search/Build.html:92
 msgid "Search"
 msgstr "Поиск"
 
 msgid "Search"
 msgstr "Поиск"
 
@@ -4577,18 +4545,18 @@ msgstr "Поиск"
 msgid "Search Criteria"
 msgstr "Критерии поиска"
 
 msgid "Search Criteria"
 msgstr "Критерии поиска"
 
-#: lib/RT/SavedSearch.pm:116
+#: lib/RT/SavedSearch.pm:115
 msgid "Search attribute load failure"
 msgid "Search attribute load failure"
-msgstr ""
+msgstr "Ошибка загрузки атрибута запроса"
 
 #: html/Approvals/Elements/PendingMyApproval:60
 msgid "Search for approvals"
 msgstr "Поиск подтверждений"
 
 
 #: html/Approvals/Elements/PendingMyApproval:60
 msgid "Search for approvals"
 msgstr "Поиск подтверждений"
 
-#: lib/RT/SavedSearch.pm:194
+#: lib/RT/SavedSearch.pm:193
 #. ($msg)
 msgid "Search update: %1"
 #. ($msg)
 msgid "Search update: %1"
-msgstr ""
+msgstr "Обновление запроса: %1"
 
 #: NOT FOUND IN SOURCE
 msgid "Searches can't be associated with that kind of object"
 
 #: NOT FOUND IN SOURCE
 msgid "Searches can't be associated with that kind of object"
@@ -4602,15 +4570,15 @@ msgstr "Безопасность:"
 msgid "See custom fields"
 msgstr "Просмотреть дополнительные поля"
 
 msgid "See custom fields"
 msgstr "Просмотреть дополнительные поля"
 
-#: lib/RT/Queue_Overlay.pm:107
+#: lib/RT/Queue_Overlay.pm:106
 msgid "See exact outgoing email messages and their recipeients"
 msgstr "Просмотреть полностью исходящую почту и ее получателей"
 
 msgid "See exact outgoing email messages and their recipeients"
 msgstr "Просмотреть полностью исходящую почту и ее получателей"
 
-#: lib/RT/Queue_Overlay.pm:105
+#: lib/RT/Queue_Overlay.pm:104
 msgid "See ticket private commentary"
 msgstr "Просмотреть конфиденциальный комментарий заявки"
 
 msgid "See ticket private commentary"
 msgstr "Просмотреть конфиденциальный комментарий заявки"
 
-#: lib/RT/Queue_Overlay.pm:104
+#: lib/RT/Queue_Overlay.pm:103
 msgid "See ticket summaries"
 msgstr "Просмотреть сводную информацию заявки"
 
 msgid "See ticket summaries"
 msgstr "Просмотреть сводную информацию заявки"
 
@@ -4620,9 +4588,9 @@ msgstr "ПросматриватьДополнительныеПоля"
 
 #: lib/RT/Group_Overlay.pm:177
 msgid "SeeGroup"
 
 #: lib/RT/Group_Overlay.pm:177
 msgid "SeeGroup"
-msgstr ""
+msgstr "ПросматриватьГруппу"
 
 
-#: lib/RT/Queue_Overlay.pm:92
+#: lib/RT/Queue_Overlay.pm:91
 msgid "SeeQueue"
 msgstr "ПросмативатьОчередь"
 
 msgid "SeeQueue"
 msgstr "ПросмативатьОчередь"
 
@@ -4660,19 +4628,19 @@ msgstr "Выберите дополнительное поле"
 
 #: html/Admin/Global/CustomFields/index.html:70
 msgid "Select custom fields for all user groups"
 
 #: html/Admin/Global/CustomFields/index.html:70
 msgid "Select custom fields for all user groups"
-msgstr ""
+msgstr "Выберите дополнительные поля всех пользовательских групп"
 
 #: html/Admin/Global/CustomFields/index.html:65
 msgid "Select custom fields for all users"
 
 #: html/Admin/Global/CustomFields/index.html:65
 msgid "Select custom fields for all users"
-msgstr ""
+msgstr "Выберите дополнительные поля всех пользователей"
 
 #: html/Admin/Global/CustomFields/index.html:76
 msgid "Select custom fields for tickets in all queues"
 
 #: html/Admin/Global/CustomFields/index.html:76
 msgid "Select custom fields for tickets in all queues"
-msgstr ""
+msgstr "Выберите дополнительные поля заявок во всех очередях"
 
 #: html/Admin/Global/CustomFields/index.html:83
 msgid "Select custom fields for transactions on tickets in all queues"
 
 #: html/Admin/Global/CustomFields/index.html:83
 msgid "Select custom fields for transactions on tickets in all queues"
-msgstr ""
+msgstr "Выберите дополнительные поля транзакций заявок во всех очередях"
 
 #: html/Admin/Elements/GroupTabs:75 html/User/Elements/GroupTabs:71
 msgid "Select group"
 
 #: html/Admin/Elements/GroupTabs:75 html/User/Elements/GroupTabs:71
 msgid "Select group"
@@ -4708,11 +4676,11 @@ msgstr "Выберите пользователя"
 
 #: NOT FOUND IN SOURCE
 msgid "SelectMultiple"
 
 #: NOT FOUND IN SOURCE
 msgid "SelectMultiple"
-msgstr "Выбрать несколько"
+msgstr "ВыбиратьНесколько"
 
 #: NOT FOUND IN SOURCE
 msgid "SelectSingle"
 
 #: NOT FOUND IN SOURCE
 msgid "SelectSingle"
-msgstr "Выбрать одно"
+msgstr "ВыбиратьОдно"
 
 #: html/Admin/Elements/EditCustomFields:58
 msgid "Selected Custom Fields"
 
 #: html/Admin/Elements/EditCustomFields:58
 msgid "Selected Custom Fields"
@@ -4770,7 +4738,7 @@ msgstr "Отправлять почту АдминистративнымКопи
 msgid "Sends mail to the owner"
 msgstr "Отправлять почту Ответственному"
 
 msgid "Sends mail to the owner"
 msgstr "Отправлять почту Ответственному"
 
-#: lib/RT/Date.pm:445
+#: lib/RT/Date.pm:442
 msgid "Sep."
 msgstr "Сен."
 
 msgid "Sep."
 msgstr "Сен."
 
@@ -4782,7 +4750,7 @@ msgstr "Разделяйте несколько ссылок пробелами"
 msgid "September"
 msgstr "Сентябрь"
 
 msgid "September"
 msgstr "Сентябрь"
 
-#: html/Ticket/Elements/ShowTransaction:150
+#: html/Ticket/Elements/ShowTransaction:149
 msgid "Show"
 msgstr "Показать"
 
 msgid "Show"
 msgstr "Показать"
 
@@ -4834,15 +4802,15 @@ msgstr "Показать конфиденциальный комментарий
 msgid "Show ticket summaries"
 msgstr "Показать сводную информацию заявки"
 
 msgid "Show ticket summaries"
 msgstr "Показать сводную информацию заявки"
 
-#: lib/RT/Queue_Overlay.pm:94
+#: lib/RT/Queue_Overlay.pm:93
 msgid "ShowACL"
 msgstr "ПоказыватьПраваДоступа"
 
 msgid "ShowACL"
 msgstr "ПоказыватьПраваДоступа"
 
-#: lib/RT/System.pm:86
+#: lib/RT/System.pm:85
 msgid "ShowConfigTab"
 msgid "ShowConfigTab"
-msgstr ""
+msgstr "ПоказыватьЗакладкуКонфигурации"
 
 
-#: lib/RT/Queue_Overlay.pm:107
+#: lib/RT/Queue_Overlay.pm:106
 msgid "ShowOutgoingEmail"
 msgstr "ПоказыватьИсходящуюПочту"
 
 msgid "ShowOutgoingEmail"
 msgstr "ПоказыватьИсходящуюПочту"
 
@@ -4850,31 +4818,31 @@ msgstr "ПоказыватьИсходящуюПочту"
 msgid "ShowSavedSearches"
 msgstr "ПоказыватьСохраненныеЗапросы"
 
 msgid "ShowSavedSearches"
 msgstr "ПоказыватьСохраненныеЗапросы"
 
-#: lib/RT/Queue_Overlay.pm:103
+#: lib/RT/Queue_Overlay.pm:102
 msgid "ShowScrips"
 msgstr "ПоказыватьСкриплеты"
 
 msgid "ShowScrips"
 msgstr "ПоказыватьСкриплеты"
 
-#: lib/RT/Queue_Overlay.pm:100
+#: lib/RT/Queue_Overlay.pm:99
 msgid "ShowTemplate"
 msgstr "ПоказыватьШаблон"
 
 msgid "ShowTemplate"
 msgstr "ПоказыватьШаблон"
 
-#: lib/RT/Queue_Overlay.pm:104
+#: lib/RT/Queue_Overlay.pm:103
 msgid "ShowTicket"
 msgstr "ПоказыватьЗаявку"
 
 msgid "ShowTicket"
 msgstr "ПоказыватьЗаявку"
 
-#: lib/RT/Queue_Overlay.pm:105
+#: lib/RT/Queue_Overlay.pm:104
 msgid "ShowTicketComments"
 msgstr "ПоказыватьКомментарииЗаявки"
 
 msgid "ShowTicketComments"
 msgstr "ПоказыватьКомментарииЗаявки"
 
-#: lib/RT/Queue_Overlay.pm:108
+#: lib/RT/Queue_Overlay.pm:107
 msgid "Sign up as a ticket Requestor or ticket or queue Cc"
 msgstr "Подписаться как Автор заявки или Копия заявки или очереди"
 
 msgid "Sign up as a ticket Requestor or ticket or queue Cc"
 msgstr "Подписаться как Автор заявки или Копия заявки или очереди"
 
-#: lib/RT/Queue_Overlay.pm:109
+#: lib/RT/Queue_Overlay.pm:108
 msgid "Sign up as a ticket or queue AdminCc"
 msgstr "Подписаться как АдминистративнаяКопия заявки или очереди"
 
 msgid "Sign up as a ticket or queue AdminCc"
 msgstr "Подписаться как АдминистративнаяКопия заявки или очереди"
 
-#: html/Admin/Users/Modify.html:229 html/User/Prefs.html:167
+#: html/Admin/Users/Modify.html.orig:229 html/Admin/Users/Modify.html:229 html/User/Prefs.html:167
 msgid "Signature"
 msgstr "Подпись"
 
 msgid "Signature"
 msgstr "Подпись"
 
@@ -4888,7 +4856,7 @@ msgstr "Одно значение"
 
 #: html/Search/Elements/EditFormat:75
 msgid "Size"
 
 #: html/Search/Elements/EditFormat:75
 msgid "Size"
-msgstr ""
+msgstr "Размер"
 
 #: html/Elements/Header:85
 msgid "Skip Menu"
 
 #: html/Elements/Header:85
 msgid "Skip Menu"
@@ -4896,7 +4864,7 @@ msgstr "Пропустить меню"
 
 #: html/Search/Elements/EditFormat:78
 msgid "Small"
 
 #: html/Search/Elements/EditFormat:78
 msgid "Small"
-msgstr ""
+msgstr "Маленький"
 
 #: html/Admin/Elements/AddCustomFieldValue:49 html/Admin/Elements/EditCustomFieldValues:54
 msgid "Sort"
 
 #: html/Admin/Elements/AddCustomFieldValue:49 html/Admin/Elements/EditCustomFieldValues:54
 msgid "Sort"
@@ -4954,11 +4922,11 @@ msgstr "Начато"
 msgid "Starts date '%1' could not be parsed"
 msgstr "Не могу разобрать дату 'Начато': '%1'"
 
 msgid "Starts date '%1' could not be parsed"
 msgstr "Не могу разобрать дату 'Начато': '%1'"
 
-#: html/Admin/Users/Modify.html:162 html/User/Prefs.html:145
+#: html/Admin/Users/Modify.html.orig:162 html/Admin/Users/Modify.html:162 html/User/Prefs.html:145
 msgid "State"
 msgstr "Состояние"
 
 msgid "State"
 msgstr "Состояние"
 
-#: html/Search/Elements/PickBasics:87 html/SelfService/Elements/MyRequests:50 html/SelfService/Update.html:57 html/Ticket/Create.html:63 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:52 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1142 lib/RT/Tickets_Overlay.pm:1378
+#: html/Search/Elements/PickBasics:87 html/SelfService/Elements/MyRequests:50 html/SelfService/Update.html:57 html/Ticket/Create.html:63 html/Ticket/Elements/EditBasics:53 html/Ticket/Elements/ShowBasics:52 html/Ticket/Update.html:59 lib/RT/Ticket_Overlay.pm:1142 lib/RT/Tickets_Overlay.pm:1377
 msgid "Status"
 msgstr "Статус"
 
 msgid "Status"
 msgstr "Статус"
 
@@ -4978,37 +4946,33 @@ msgstr "ИзменятьСтатус"
 msgid "Steal"
 msgstr "Переназначать себе"
 
 msgid "Steal"
 msgstr "Переназначать себе"
 
-#: lib/RT/Queue_Overlay.pm:118
+#: lib/RT/Queue_Overlay.pm:117
 msgid "Steal tickets"
 msgstr "Переназначить заявки себе"
 
 msgid "Steal tickets"
 msgstr "Переназначить заявки себе"
 
-#: lib/RT/Queue_Overlay.pm:118
+#: lib/RT/Queue_Overlay.pm:117
 msgid "StealTicket"
 msgstr "ПереназначатьЗаявкуСебе"
 
 msgid "StealTicket"
 msgstr "ПереназначатьЗаявкуСебе"
 
-#: lib/RT/Transaction_Overlay.pm:667
+#: lib/RT/Transaction_Overlay.pm.orig:665 lib/RT/Transaction_Overlay.pm:665
 #. ($Old->Name)
 #. ($Old->Name)
-msgid "Stolen from %1"
-msgstr "Ответственный переназначен с %1"
-
-#: NOT FOUND IN SOURCE
 msgid "Stolen from %1 "
 msgid "Stolen from %1 "
-msgstr "Ответственный переназначен с %1 "
+msgstr "Ответственный переназначен с %1"
 
 #: html/Search/Elements/EditFormat:81
 msgid "Style"
 
 #: html/Search/Elements/EditFormat:81
 msgid "Style"
-msgstr ""
+msgstr "Стиль"
 
 
-#: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:154 html/SelfService/Create.html:79 html/SelfService/Elements/MyRequests:49 html/SelfService/Update.html:65 html/Ticket/Create.html:105 html/Ticket/Elements/EditBasics:48 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:80 lib/RT/Ticket_Overlay.pm:1138 lib/RT/Tickets_Overlay.pm:1460
+#: html/Elements/QuickCreate:52 html/Elements/SelectAttachmentField:47 html/Search/Bulk.html:154 html/SelfService/Create.html:79 html/SelfService/Elements/MyRequests:49 html/SelfService/Update.html:65 html/Ticket/Create.html:105 html/Ticket/Elements/EditBasics:48 html/Ticket/ModifyAll.html:100 html/Ticket/Update.html:80 lib/RT/Ticket_Overlay.pm:1138 lib/RT/Tickets_Overlay.pm:1459
 msgid "Subject"
 msgstr "Тема"
 
 msgid "Subject"
 msgstr "Тема"
 
-#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm:689
+#: docs/design_docs/string-extraction-guide.txt:89 lib/RT/StyleGuide.pod:815 lib/RT/Transaction_Overlay.pm.orig:687 lib/RT/Transaction_Overlay.pm:687
 #. ($self->Data)
 msgid "Subject changed to %1"
 msgstr "Тема изменена на %1"
 
 #. ($self->Data)
 msgid "Subject changed to %1"
 msgstr "Тема изменена на %1"
 
-#: html/Elements/Submit:97
+#: html/Elements/Submit.rej:17 html/Elements/Submit.rej:9 html/Elements/Submit:97
 msgid "Submit"
 msgstr "Отправить"
 
 msgid "Submit"
 msgstr "Отправить"
 
@@ -5020,7 +4984,7 @@ msgstr "Отправить запрос"
 msgid "Submit Workflow"
 msgstr "Отправить последовательность действий"
 
 msgid "Submit Workflow"
 msgstr "Отправить последовательность действий"
 
-#: lib/RT/Group_Overlay.pm:782
+#: lib/RT/Group_Overlay.pm:780
 msgid "Succeeded"
 msgstr "Успешно"
 
 msgid "Succeeded"
 msgstr "Успешно"
 
@@ -5032,11 +4996,11 @@ msgstr "Сводная информация"
 msgid "Summary matches"
 msgstr "Всего совпадений"
 
 msgid "Summary matches"
 msgstr "Всего совпадений"
 
-#: lib/RT/Date.pm:419
+#: lib/RT/Date.pm:417
 msgid "Sun."
 msgstr "Вск."
 
 msgid "Sun."
 msgstr "Вск."
 
-#: lib/RT/System.pm:76
+#: lib/RT/System.pm:75
 msgid "SuperUser"
 msgstr "Администратор"
 
 msgid "SuperUser"
 msgstr "Администратор"
 
@@ -5048,7 +5012,7 @@ msgstr "Системные"
 msgid "System Configuration"
 msgstr "Системная конфигурация"
 
 msgid "System Configuration"
 msgstr "Системная конфигурация"
 
-#: html/Admin/CustomFields/GroupRights.html:128 html/Admin/CustomFields/GroupRights.html:155 html/Admin/CustomFields/UserRights.html:128 html/Admin/CustomFields/UserRights.html:98 html/Admin/Elements/SelectRights:106 lib/RT/ACE_Overlay.pm:585 lib/RT/Interface/Web.pm:900 lib/RT/Interface/Web.pm:929
+#: html/Admin/CustomFields/GroupRights.html:128 html/Admin/CustomFields/GroupRights.html:155 html/Admin/CustomFields/UserRights.html:128 html/Admin/CustomFields/UserRights.html:98 html/Admin/Elements/SelectRights:106 lib/RT/ACE_Overlay.pm:597 lib/RT/Interface/Web.pm:868 lib/RT/Interface/Web.pm:897
 msgid "System Error"
 msgstr "Системная ошибка"
 
 msgid "System Error"
 msgstr "Системная ошибка"
 
@@ -5060,20 +5024,20 @@ msgstr "Системная ошибка. Право не выдано"
 msgid "System Error. right not granted"
 msgstr "Системная ошибка. Право не выдано"
 
 msgid "System Error. right not granted"
 msgstr "Системная ошибка. Право не выдано"
 
-#: lib/RT/Transaction_Overlay.pm:215 lib/RT/Transaction_Overlay.pm:221
+#: lib/RT/Transaction_Overlay.pm.orig:213 lib/RT/Transaction_Overlay.pm.orig:219 lib/RT/Transaction_Overlay.pm:213 lib/RT/Transaction_Overlay.pm:219
 #. ($msg)
 msgid "System Error: %1"
 #. ($msg)
 msgid "System Error: %1"
-msgstr ""
+msgstr "Системная ошибка: %1"
 
 #: html/Admin/Tools/index.html:47
 msgid "System Tools"
 msgstr "Системные утилиты"
 
 
 #: html/Admin/Tools/index.html:47
 msgid "System Tools"
 msgstr "Системные утилиты"
 
-#: lib/RT/ACE_Overlay.pm:634
+#: lib/RT/ACE_Overlay.pm:646
 msgid "System error. Right not delegated."
 msgstr "Системная ошибка. Право не делегировано."
 
 msgid "System error. Right not delegated."
 msgstr "Системная ошибка. Право не делегировано."
 
-#: lib/RT/ACE_Overlay.pm:164 lib/RT/ACE_Overlay.pm:229 lib/RT/ACE_Overlay.pm:324 lib/RT/ACE_Overlay.pm:921
+#: lib/RT/ACE_Overlay.pm:170 lib/RT/ACE_Overlay.pm:253 lib/RT/ACE_Overlay.pm:336 lib/RT/ACE_Overlay.pm:933
 msgid "System error. Right not granted."
 msgstr "Cистемная ошибка. Право не выдано."
 
 msgid "System error. Right not granted."
 msgstr "Cистемная ошибка. Право не выдано."
 
@@ -5089,25 +5053,25 @@ msgstr "Системные группы"
 msgid "SystemRolegroup for internal use"
 msgstr "Системная псевдо-группа для внутреннего использования"
 
 msgid "SystemRolegroup for internal use"
 msgstr "Системная псевдо-группа для внутреннего использования"
 
-#: lib/RT/CurrentUser.pm:358
+#: lib/RT/CurrentUser.pm:356
 msgid "TEST_STRING"
 msgstr "TEST_STRING"
 
 #: html/Elements/MyRequests:50 html/Search/Elements/EditFormat:72 html/Ticket/Elements/Tabs:166
 msgid "Take"
 msgid "TEST_STRING"
 msgstr "TEST_STRING"
 
 #: html/Elements/MyRequests:50 html/Search/Elements/EditFormat:72 html/Ticket/Elements/Tabs:166
 msgid "Take"
-msgstr "Ð\92зÑ\8fÑ\82Ñ\8c Ñ\81ебе"
+msgstr "Ð\9dазнаÑ\87иÑ\82Ñ\8c Ñ\81ебÑ\8f Ð¾Ñ\82веÑ\82Ñ\81Ñ\82веннÑ\8bм"
 
 
-#: lib/RT/Queue_Overlay.pm:116
+#: lib/RT/Queue_Overlay.pm:115
 msgid "Take tickets"
 msgid "Take tickets"
-msgstr "Ð\92зÑ\8fÑ\82Ñ\8c Ð·Ð°Ñ\8fвки Ñ\81ебÑ\8f"
+msgstr "Ð\9dазнаÑ\87иÑ\82Ñ\8c Ñ\81ебÑ\8f Ð¾Ñ\82веÑ\82Ñ\81Ñ\82веннÑ\8bм Ð·Ð° Ð·Ð°Ñ\8fвки"
 
 
-#: lib/RT/Queue_Overlay.pm:116
+#: lib/RT/Queue_Overlay.pm:115
 msgid "TakeTicket"
 msgid "TakeTicket"
-msgstr "Ð\91Ñ\80аÑ\82Ñ\8cÐ\97аÑ\8fвкÑ\83Себе"
+msgstr "Ð\9dазнаÑ\87аÑ\82Ñ\8cСебÑ\8fÐ\9eÑ\82веÑ\82Ñ\81Ñ\82веннÑ\8bмÐ\97аÐ\97аÑ\8fвкÑ\83"
 
 
-#: lib/RT/Transaction_Overlay.pm:652
+#: lib/RT/Transaction_Overlay.pm.orig:650 lib/RT/Transaction_Overlay.pm:650
 msgid "Taken"
 msgid "Taken"
-msgstr "Ð\92зÑ\8fÑ\82а"
+msgstr "Ð\9dазнаÑ\87ен Ð¾Ñ\82веÑ\82Ñ\81Ñ\82веннÑ\8bм"
 
 #: NOT FOUND IN SOURCE
 msgid "Task"
 
 #: NOT FOUND IN SOURCE
 msgid "Task"
@@ -5126,7 +5090,7 @@ msgstr "Шаблон #%1"
 msgid "Template deleted"
 msgstr "Шаблон удален"
 
 msgid "Template deleted"
 msgstr "Шаблон удален"
 
-#: lib/RT/Scrip_Overlay.pm:181
+#: lib/RT/Scrip_Overlay.pm:180
 msgid "Template not found"
 msgstr "Шаблон не найден"
 
 msgid "Template not found"
 msgstr "Шаблон не найден"
 
@@ -5134,7 +5098,7 @@ msgstr "Шаблон не найден"
 msgid "Template not found\\n"
 msgstr "Шаблон не найден\\n"
 
 msgid "Template not found\\n"
 msgstr "Шаблон не найден\\n"
 
-#: lib/RT/Template_Overlay.pm:376
+#: lib/RT/Template_Overlay.pm:373
 msgid "Template parsed"
 msgstr "Шаблон обработан"
 
 msgid "Template parsed"
 msgstr "Шаблон обработан"
 
@@ -5150,11 +5114,11 @@ msgstr "Шаблоны для %1\\n"
 msgid "Text"
 msgstr "Текст"
 
 msgid "Text"
 msgstr "Текст"
 
-#: lib/RT/CustomField_Overlay.pm:877 lib/RT/Record.pm:931
+#: lib/RT/CustomField_Overlay.pm:863 lib/RT/Record.pm:929
 msgid "That is already the current value"
 msgstr "Это уже текущее значение"
 
 msgid "That is already the current value"
 msgstr "Это уже текущее значение"
 
-#: lib/RT/CustomField_Overlay.pm:407
+#: lib/RT/CustomField_Overlay.pm:401
 msgid "That is not a value for this custom field"
 msgstr "Это поле не может иметь такого значения"
 
 msgid "That is not a value for this custom field"
 msgstr "Это поле не может иметь такого значения"
 
@@ -5162,11 +5126,11 @@ msgstr "Это поле не может иметь такого значения
 msgid "That is the same value"
 msgstr "Значение не изменилось"
 
 msgid "That is the same value"
 msgstr "Значение не изменилось"
 
-#: lib/RT/ACE_Overlay.pm:306 lib/RT/ACE_Overlay.pm:615
+#: lib/RT/ACE_Overlay.pm:318 lib/RT/ACE_Overlay.pm:627
 msgid "That principal already has that right"
 msgstr "Этот пользователь уже имеет это право."
 
 msgid "That principal already has that right"
 msgstr "Этот пользователь уже имеет это право."
 
-#: lib/RT/Queue_Overlay.pm:750
+#: lib/RT/Queue_Overlay.pm:737
 #. ($args{'Type'})
 msgid "That principal is already a %1 for this queue"
 msgstr "Этот пользователь уже %1 для этой очереди"
 #. ($args{'Type'})
 msgid "That principal is already a %1 for this queue"
 msgstr "Этот пользователь уже %1 для этой очереди"
@@ -5176,7 +5140,7 @@ msgstr "Этот пользователь уже %1 для этой очеред
 msgid "That principal is already a %1 for this ticket"
 msgstr "Этот пользователь уже %1 для этой заявки "
 
 msgid "That principal is already a %1 for this ticket"
 msgstr "Этот пользователь уже %1 для этой заявки "
 
-#: lib/RT/Queue_Overlay.pm:849
+#: lib/RT/Queue_Overlay.pm:836
 #. ($args{'Type'})
 msgid "That principal is not a %1 for this queue"
 msgstr "Этот пользователь не %1 для этой очереди"
 #. ($args{'Type'})
 msgid "That principal is not a %1 for this queue"
 msgstr "Этот пользователь не %1 для этой очереди"
@@ -5189,7 +5153,7 @@ msgstr "Этот пользователь не %1 для этой заявки"
 msgid "That queue does not exist"
 msgstr "Эта очередь не существует"
 
 msgid "That queue does not exist"
 msgstr "Эта очередь не существует"
 
-#: lib/RT/Ticket_Overlay.pm:3189
+#: lib/RT/Ticket_Overlay.pm:3156
 msgid "That ticket has unresolved dependencies"
 msgstr "Эта заявка имеет неразрешенные зависимости"
 
 msgid "That ticket has unresolved dependencies"
 msgstr "Эта заявка имеет неразрешенные зависимости"
 
@@ -5197,27 +5161,27 @@ msgstr "Эта заявка имеет неразрешенные зависим
 msgid "That user already has that right"
 msgstr "Пользователь уже имеет это право"
 
 msgid "That user already has that right"
 msgstr "Пользователь уже имеет это право"
 
-#: lib/RT/Ticket_Overlay.pm:2993
+#: lib/RT/Ticket_Overlay.pm:2960
 msgid "That user already owns that ticket"
 msgstr "Пользователь уже ответственен за эту заявку"
 
 msgid "That user already owns that ticket"
 msgstr "Пользователь уже ответственен за эту заявку"
 
-#: lib/RT/Ticket_Overlay.pm:2965
+#: lib/RT/Ticket_Overlay.pm:2932
 msgid "That user does not exist"
 msgstr "Пользователь не существует"
 
 msgid "That user does not exist"
 msgstr "Пользователь не существует"
 
-#: lib/RT/User_Overlay.pm:390
+#: lib/RT/User_Overlay.pm:389
 msgid "That user is already privileged"
 msgstr "Этот пользователь уже привилегированный"
 
 msgid "That user is already privileged"
 msgstr "Этот пользователь уже привилегированный"
 
-#: lib/RT/User_Overlay.pm:411
+#: lib/RT/User_Overlay.pm:410
 msgid "That user is already unprivileged"
 msgstr "Этот пользователь уже непривилегированный"
 
 msgid "That user is already unprivileged"
 msgstr "Этот пользователь уже непривилегированный"
 
-#: lib/RT/User_Overlay.pm:403
+#: lib/RT/User_Overlay.pm:402
 msgid "That user is now privileged"
 msgstr "Этот пользователь теперь привилегированный"
 
 msgid "That user is now privileged"
 msgstr "Этот пользователь теперь привилегированный"
 
-#: lib/RT/User_Overlay.pm:424
+#: lib/RT/User_Overlay.pm:423
 msgid "That user is now unprivileged"
 msgstr "Этот пользователь теперь непривилегированный"
 
 msgid "That user is now unprivileged"
 msgstr "Этот пользователь теперь непривилегированный"
 
@@ -5225,11 +5189,11 @@ msgstr "Этот пользователь теперь непривилегир
 msgid "That user is now unprivilegedileged"
 msgstr "Пользователь теперь непривилегированный"
 
 msgid "That user is now unprivilegedileged"
 msgstr "Пользователь теперь непривилегированный"
 
-#: lib/RT/Ticket_Overlay.pm:2986
+#: lib/RT/Ticket_Overlay.pm:2953
 msgid "That user may not own tickets in that queue"
 msgstr "Этот пользователь не может быть ответственным за заявки в этой очереди"
 
 msgid "That user may not own tickets in that queue"
 msgstr "Этот пользователь не может быть ответственным за заявки в этой очереди"
 
-#: lib/RT/Link_Overlay.pm:234
+#: lib/RT/Link_Overlay.pm:233
 msgid "That's not a numerical id"
 msgstr "Это не числовой идентификатор"
 
 msgid "That's not a numerical id"
 msgstr "Это не числовой идентификатор"
 
@@ -5237,11 +5201,11 @@ msgstr "Это не числовой идентификатор"
 msgid "The Basics"
 msgstr "Основное"
 
 msgid "The Basics"
 msgstr "Основное"
 
-#: lib/RT/ACE_Overlay.pm:113
+#: lib/RT/ACE_Overlay.pm:112
 msgid "The CC of a ticket"
 msgstr "Копия заявки"
 
 msgid "The CC of a ticket"
 msgstr "Копия заявки"
 
-#: lib/RT/ACE_Overlay.pm:114
+#: lib/RT/ACE_Overlay.pm:113
 msgid "The administrative CC of a ticket"
 msgstr "Административная копия заявки"
 
 msgid "The administrative CC of a ticket"
 msgstr "Административная копия заявки"
 
@@ -5257,15 +5221,15 @@ msgstr "Нижеследующая команда найдет все актив
 msgid "The following commands were not proccessed:\\n\\n"
 msgstr "Эти команды не были выполнены:\\n\\n"
 
 msgid "The following commands were not proccessed:\\n\\n"
 msgstr "Эти команды не были выполнены:\\n\\n"
 
-#: lib/RT/Record.pm:934
+#: lib/RT/Record.pm:932
 msgid "The new value has been set."
 msgstr "Новое значение установлено"
 
 msgid "The new value has been set."
 msgstr "Новое значение установлено"
 
-#: lib/RT/ACE_Overlay.pm:111
+#: lib/RT/ACE_Overlay.pm:110
 msgid "The owner of a ticket"
 msgstr "Ответственный за заявку"
 
 msgid "The owner of a ticket"
 msgstr "Ответственный за заявку"
 
-#: lib/RT/ACE_Overlay.pm:112
+#: lib/RT/ACE_Overlay.pm:111
 msgid "The requestor of a ticket"
 msgstr "Автор заявки"
 
 msgid "The requestor of a ticket"
 msgstr "Автор заявки"
 
@@ -5273,7 +5237,7 @@ msgstr "Автор заявки"
 msgid "These comments aren't generally visible to the user"
 msgstr "Эти комментарии не показываются обыкновенному пользователю"
 
 msgid "These comments aren't generally visible to the user"
 msgstr "Эти комментарии не показываются обыкновенному пользователю"
 
-#: lib/RT/CustomField_Overlay.pm:912
+#: lib/RT/CustomField_Overlay.pm:898
 msgid "This custom field does not apply to that object"
 msgstr "Это дополнительное поле не относится к этому объекту"
 
 msgid "This custom field does not apply to that object"
 msgstr "Это дополнительное поле не относится к этому объекту"
 
@@ -5293,7 +5257,7 @@ msgstr "Эта заявка %1 %2 (%3)\\n"
 msgid "This tool allows the user to run arbitrary perl modules from within RT."
 msgstr "Этот инструмент позволяет пользователю запускать некоторые модули Perl из RT."
 
 msgid "This tool allows the user to run arbitrary perl modules from within RT."
 msgstr "Этот инструмент позволяет пользователю запускать некоторые модули Perl из RT."
 
-#: lib/RT/Transaction_Overlay.pm:288
+#: lib/RT/Transaction_Overlay.pm.orig:286 lib/RT/Transaction_Overlay.pm:286
 msgid "This transaction appears to have no content"
 msgstr "Похоже, что эта транзакция не имеет содержимого"
 
 msgid "This transaction appears to have no content"
 msgstr "Похоже, что эта транзакция не имеет содержимого"
 
@@ -5306,7 +5270,7 @@ msgstr "%1 заявок максимального приоритета этог
 msgid "This user's 25 highest priority tickets"
 msgstr "25 важнейших заявок пользователя..."
 
 msgid "This user's 25 highest priority tickets"
 msgstr "25 важнейших заявок пользователя..."
 
-#: lib/RT/Date.pm:416
+#: lib/RT/Date.pm:414
 msgid "Thu."
 msgstr "Чтв."
 
 msgid "Thu."
 msgstr "Чтв."
 
@@ -5332,7 +5296,7 @@ msgstr "Заявка #%1 Изменение всех данных: %2"
 msgid "Ticket #%1: %2"
 msgstr "Заявка #%1: %2"
 
 msgid "Ticket #%1: %2"
 msgstr "Заявка #%1: %2"
 
-#: lib/RT/Action/CreateTickets.pm:1258 lib/RT/Action/CreateTickets.pm:1267 lib/RT/Action/CreateTickets.pm:595 lib/RT/Action/CreateTickets.pm:716 lib/RT/Action/CreateTickets.pm:729
+#: lib/RT/Action/CreateTickets.pm:1255 lib/RT/Action/CreateTickets.pm:1264 lib/RT/Action/CreateTickets.pm:593 lib/RT/Action/CreateTickets.pm:713 lib/RT/Action/CreateTickets.pm:726
 #. ($T::Tickets{$template_id}->Id)
 #. ($T::Tickets{$template_id}->id)
 #. ($ticket->Id)
 #. ($T::Tickets{$template_id}->Id)
 #. ($T::Tickets{$template_id}->id)
 #. ($ticket->Id)
@@ -5370,7 +5334,7 @@ msgstr "Заявка #"
 msgid "Ticket Resolved"
 msgstr "Заявка решена"
 
 msgid "Ticket Resolved"
 msgstr "Заявка решена"
 
-#: html/Admin/Elements/GlobalCustomFieldTabs:69 html/Admin/Global/CustomFields/index.html:81 lib/RT/CustomField_Overlay.pm:1085
+#: html/Admin/Elements/GlobalCustomFieldTabs:69 html/Admin/Global/CustomFields/index.html:81 lib/RT/CustomField_Overlay.pm:1071
 msgid "Ticket Transactions"
 msgstr "Транзакции заявки"
 
 msgid "Ticket Transactions"
 msgstr "Транзакции заявки"
 
@@ -5378,11 +5342,11 @@ msgstr "Транзакции заявки"
 msgid "Ticket attachment"
 msgstr "Вложения заявки"
 
 msgid "Ticket attachment"
 msgstr "Вложения заявки"
 
-#: lib/RT/Tickets_Overlay.pm:1648
+#: lib/RT/Tickets_Overlay.pm:1647
 msgid "Ticket content"
 msgstr "Содержимое заявки"
 
 msgid "Ticket content"
 msgstr "Содержимое заявки"
 
-#: lib/RT/Tickets_Overlay.pm:1697
+#: lib/RT/Tickets_Overlay.pm:1696
 msgid "Ticket content type"
 msgstr "Тип данных содержимого заявки"
 
 msgid "Ticket content type"
 msgstr "Тип данных содержимого заявки"
 
@@ -5426,12 +5390,12 @@ msgstr "Статус заявки изменен"
 msgid "Ticket watchers"
 msgstr "Наблюдатели за заявкой"
 
 msgid "Ticket watchers"
 msgstr "Наблюдатели за заявкой"
 
-#: lib/RT/Search/FromSQL.pm:83
+#: lib/RT/Search/FromSQL.pm:82
 #. (ref $self)
 msgid "TicketSQL search module"
 msgstr ""
 
 #. (ref $self)
 msgid "TicketSQL search module"
 msgstr ""
 
-#: html/Admin/Elements/GlobalCustomFieldTabs:64 html/Admin/Global/CustomFields/index.html:75 html/Elements/Tabs:68 lib/RT/CustomField_Overlay.pm:1084
+#: html/Admin/Elements/GlobalCustomFieldTabs:64 html/Admin/Global/CustomFields/index.html:75 html/Elements/Tabs:68 lib/RT/CustomField_Overlay.pm:1070
 msgid "Tickets"
 msgstr "Поиск заявки"
 
 msgid "Tickets"
 msgstr "Поиск заявки"
 
@@ -5463,7 +5427,7 @@ msgstr "Осталось времени"
 msgid "Time Worked"
 msgstr "Время в работе"
 
 msgid "Time Worked"
 msgstr "Время в работе"
 
-#: lib/RT/Tickets_Overlay.pm:1619
+#: lib/RT/Tickets_Overlay.pm:1618
 msgid "Time left"
 msgstr "Осталось времени"
 
 msgid "Time left"
 msgstr "Осталось времени"
 
@@ -5471,7 +5435,7 @@ msgstr "Осталось времени"
 msgid "Time to display"
 msgstr "Время для показа"
 
 msgid "Time to display"
 msgstr "Время для показа"
 
-#: lib/RT/Tickets_Overlay.pm:1594
+#: lib/RT/Tickets_Overlay.pm:1593
 msgid "Time worked"
 msgstr "Время в работе"
 
 msgid "Time worked"
 msgstr "Время в работе"
 
@@ -5485,7 +5449,7 @@ msgstr "Время в работе"
 
 #: html/Search/Elements/EditFormat:74
 msgid "Title"
 
 #: html/Search/Elements/EditFormat:74
 msgid "Title"
-msgstr ""
+msgstr "Заголовок"
 
 #: NOT FOUND IN SOURCE
 msgid "To generate a diff of this commit:"
 
 #: NOT FOUND IN SOURCE
 msgid "To generate a diff of this commit:"
@@ -5512,12 +5476,12 @@ msgstr "Утилиты"
 msgid "Transaction"
 msgstr "Транзакция"
 
 msgid "Transaction"
 msgstr "Транзакция"
 
-#: lib/RT/Transaction_Overlay.pm:794
+#: lib/RT/Transaction_Overlay.pm.orig:792 lib/RT/Transaction_Overlay.pm:792
 #. ($self->Data)
 msgid "Transaction %1 purged"
 msgstr "Транзакция %1 удалена"
 
 #. ($self->Data)
 msgid "Transaction %1 purged"
 msgstr "Транзакция %1 удалена"
 
-#: lib/RT/Transaction_Overlay.pm:174
+#: lib/RT/Transaction_Overlay.pm.orig:172 lib/RT/Transaction_Overlay.pm:172
 msgid "Transaction Created"
 msgstr "Транзакция создана"
 
 msgid "Transaction Created"
 msgstr "Транзакция создана"
 
@@ -5529,11 +5493,11 @@ msgstr "Дополнительные поля транзакции"
 msgid "Transaction->Create couldn't, as you didn't specify a ticket id"
 msgstr "Транзакция->Создать невозможно, так как вы не указали идентификатор заявки"
 
 msgid "Transaction->Create couldn't, as you didn't specify a ticket id"
 msgstr "Транзакция->Создать невозможно, так как вы не указали идентификатор заявки"
 
-#: lib/RT/Transaction_Overlay.pm:125
+#: lib/RT/Transaction_Overlay.pm.orig:123 lib/RT/Transaction_Overlay.pm:123
 msgid "Transaction->Create couldn't, as you didn't specify an object type and id"
 msgstr "Транзакция->Создать невозможно, так как вы не указали тип объекта и идентификатор"
 
 msgid "Transaction->Create couldn't, as you didn't specify an object type and id"
 msgstr "Транзакция->Создать невозможно, так как вы не указали тип объекта и идентификатор"
 
-#: lib/RT/Transaction_Overlay.pm:838
+#: lib/RT/Transaction_Overlay.pm.orig:836 lib/RT/Transaction_Overlay.pm:836
 msgid "Transactions are immutable"
 msgstr "Неизменяемые транзакции"
 
 msgid "Transactions are immutable"
 msgstr "Неизменяемые транзакции"
 
@@ -5541,19 +5505,19 @@ msgstr "Неизменяемые транзакции"
 msgid "Trying to delete a right: %1"
 msgstr "Пытаемся удалить право: %1"
 
 msgid "Trying to delete a right: %1"
 msgstr "Пытаемся удалить право: %1"
 
-#: lib/RT/Date.pm:414
+#: lib/RT/Date.pm:412
 msgid "Tue."
 msgstr "Втр."
 
 msgid "Tue."
 msgstr "Втр."
 
-#: html/Admin/CustomFields/Modify.html:66 html/Admin/Elements/EditCustomField:65 html/Ticket/Elements/AddWatchers:54 html/Ticket/Elements/AddWatchers:65 html/Ticket/Elements/AddWatchers:75 lib/RT/Ticket_Overlay.pm:1144 lib/RT/Tickets_Overlay.pm:1432
+#: html/Admin/CustomFields/Modify.html:66 html/Admin/Elements/EditCustomField:65 html/Ticket/Elements/AddWatchers:54 html/Ticket/Elements/AddWatchers:65 html/Ticket/Elements/AddWatchers:75 lib/RT/Ticket_Overlay.pm:1144 lib/RT/Tickets_Overlay.pm:1431
 msgid "Type"
 msgstr "Тип"
 
 msgid "Type"
 msgstr "Тип"
 
-#: lib/RT/ScripCondition_Overlay.pm:129
+#: lib/RT/ScripCondition_Overlay.pm:128
 msgid "Unimplemented"
 msgstr "Не реализовано"
 
 msgid "Unimplemented"
 msgstr "Не реализовано"
 
-#: html/Admin/Users/Modify.html:89
+#: html/Admin/Users/Modify.html.orig:89 html/Admin/Users/Modify.html:89
 msgid "Unix login"
 msgstr "Логин UNIX"
 
 msgid "Unix login"
 msgstr "Логин UNIX"
 
@@ -5561,15 +5525,15 @@ msgstr "Логин UNIX"
 msgid "UnixUsername"
 msgstr "Имя пользователя UNIX"
 
 msgid "UnixUsername"
 msgstr "Имя пользователя UNIX"
 
-#: lib/RT/Attachment_Overlay.pm:290 lib/RT/Record.pm:847
+#: lib/RT/Attachment_Overlay.pm:289 lib/RT/Record.pm:846
 #. ($self->ContentEncoding)
 #. ($ContentEncoding)
 msgid "Unknown ContentEncoding %1"
 msgstr "Неизвестная кодировка %1"
 
 #. ($self->ContentEncoding)
 #. ($ContentEncoding)
 msgid "Unknown ContentEncoding %1"
 msgstr "Неизвестная кодировка %1"
 
-#: html/Search/Build.html:632
+#: html/Search/Build.html:692
 msgid "Unknown field: $key"
 msgid "Unknown field: $key"
-msgstr ""
+msgstr "Неизвестное поле: $key"
 
 #: html/Elements/SelectResultsPerPage:58
 msgid "Unlimited"
 
 #: html/Elements/SelectResultsPerPage:58
 msgid "Unlimited"
@@ -5591,9 +5555,9 @@ msgstr "Невыбранные дополнительные поля"
 msgid "Unselected objects"
 msgstr "Невыбранные объекты"
 
 msgid "Unselected objects"
 msgstr "Невыбранные объекты"
 
-#: lib/RT/Transaction_Overlay.pm:648
+#: lib/RT/Transaction_Overlay.pm.orig:646 lib/RT/Transaction_Overlay.pm:646
 msgid "Untaken"
 msgid "Untaken"
-msgstr "Не взята"
+msgstr "Нет ответственного"
 
 #: NOT FOUND IN SOURCE
 msgid "Untitled search"
 
 #: NOT FOUND IN SOURCE
 msgid "Untitled search"
@@ -5611,7 +5575,7 @@ msgstr "Обновить все"
 msgid "Update ID"
 msgstr "Обновить идентификатор"
 
 msgid "Update ID"
 msgstr "Обновить идентификатор"
 
-#: html/Ticket/Update.html:133
+#: html/Ticket/Update.html:130
 msgid "Update Ticket"
 msgstr "Обновить заявку"
 
 msgid "Update Ticket"
 msgstr "Обновить заявку"
 
@@ -5635,7 +5599,7 @@ msgstr "Обновить несколько заявок"
 msgid "Update name"
 msgstr "Обновить имя"
 
 msgid "Update name"
 msgstr "Обновить имя"
 
-#: lib/RT/Action/CreateTickets.pm:737 lib/RT/Interface/Web.pm:524
+#: lib/RT/Action/CreateTickets.pm:734 lib/RT/Interface/Web.pm:492
 msgid "Update not recorded."
 msgstr "Обновление не записано."
 
 msgid "Update not recorded."
 msgstr "Обновление не записано."
 
@@ -5660,12 +5624,12 @@ msgstr "Обновление заявки # %1"
 msgid "Update ticket #%1"
 msgstr "Обновление заявки #%1"
 
 msgid "Update ticket #%1"
 msgstr "Обновление заявки #%1"
 
-#: html/Ticket/Update.html:156
+#: html/Ticket/Update.html:153
 #. ($TicketObj->id, $TicketObj->Subject)
 msgid "Update ticket #%1 (%2)"
 msgstr "Обновление заявки #%1 (%2)"
 
 #. ($TicketObj->id, $TicketObj->Subject)
 msgid "Update ticket #%1 (%2)"
 msgstr "Обновление заявки #%1 (%2)"
 
-#: lib/RT/Action/CreateTickets.pm:735 lib/RT/Interface/Web.pm:523
+#: lib/RT/Action/CreateTickets.pm:732 lib/RT/Interface/Web.pm:490
 msgid "Update type was neither correspondence nor comment."
 msgstr "Обновление не было ни сообщением, ни комментарием."
 
 msgid "Update type was neither correspondence nor comment."
 msgstr "Обновление не было ни сообщением, ни комментарием."
 
@@ -5707,7 +5671,7 @@ msgstr "Загрузить ваши изменения."
 
 #: html/Admin/index.html:90
 msgid "Use other RT administrative tools"
 
 #: html/Admin/index.html:90
 msgid "Use other RT administrative tools"
-msgstr ""
+msgstr "Другие административные утилиты RT"
 
 #: NOT FOUND IN SOURCE
 msgid "User %1 %2: %3\\n"
 
 #: NOT FOUND IN SOURCE
 msgid "User %1 %2: %3\\n"
@@ -5750,17 +5714,17 @@ msgstr "Логин"
 msgid "User Rights"
 msgstr "Права пользователя"
 
 msgid "User Rights"
 msgstr "Права пользователя"
 
-#: lib/RT/Interface/Web.pm:1283
+#: lib/RT/Interface/Web.pm:1251
 #. ($cf->Name, $class, $Object->id)
 msgid "User asked for an unknown update type for custom field %1 for %2 object #%3"
 msgstr "Пользователь запросил обновление неизвестного типа для дополнительного поля %1 для объекта %2  #%3"
 
 #. ($cf->Name, $class, $Object->id)
 msgid "User asked for an unknown update type for custom field %1 for %2 object #%3"
 msgstr "Пользователь запросил обновление неизвестного типа для дополнительного поля %1 для объекта %2  #%3"
 
-#: html/Admin/Users/Modify.html:293
+#: html/Admin/Users/Modify.html.orig:292 html/Admin/Users/Modify.html.rej:14 html/Admin/Users/Modify.html.rej:4 html/Admin/Users/Modify.html:292
 #. ($msg)
 msgid "User could not be created: %1"
 msgstr "Невозможно создать пользователя: %1"
 
 #. ($msg)
 msgid "User could not be created: %1"
 msgstr "Невозможно создать пользователя: %1"
 
-#: lib/RT/User_Overlay.pm:331
+#: lib/RT/User_Overlay.pm:330
 msgid "User created"
 msgstr "Пользователь создан"
 
 msgid "User created"
 msgstr "Пользователь создан"
 
@@ -5768,7 +5732,7 @@ msgstr "Пользователь создан"
 msgid "User defined groups"
 msgstr "Группы, определенные пользователем"
 
 msgid "User defined groups"
 msgstr "Группы, определенные пользователем"
 
-#: lib/RT/User_Overlay.pm:593 lib/RT/User_Overlay.pm:613
+#: lib/RT/User_Overlay.pm:592 lib/RT/User_Overlay.pm:612
 msgid "User loaded"
 msgstr "Пользовать загружен"
 
 msgid "User loaded"
 msgstr "Пользовать загружен"
 
@@ -5784,11 +5748,11 @@ msgstr "Пользовательские настройки"
 msgid "User-defined groups"
 msgstr "Группы, заданные пользователем"
 
 msgid "User-defined groups"
 msgstr "Группы, заданные пользователем"
 
-#: html/Admin/Users/Modify.html:69 html/Elements/Login:73 html/Ticket/Elements/AddWatchers:56
+#: html/Admin/Users/Modify.html.orig:69 html/Admin/Users/Modify.html:69 html/Elements/Login:73 html/Ticket/Elements/AddWatchers:56
 msgid "Username"
 msgstr "Имя пользователя"
 
 msgid "Username"
 msgstr "Имя пользователя"
 
-#: html/Admin/Elements/GlobalCustomFieldTabs:55 html/Admin/Elements/SelectNewGroupMembers:47 html/Admin/Elements/Tabs:53 html/Admin/Global/CustomFields/index.html:64 html/Admin/Groups/Members.html:76 html/Admin/Queues/People.html:89 html/Admin/index.html:62 html/User/Groups/Members.html:79 lib/RT/CustomField_Overlay.pm:1086
+#: html/Admin/Elements/GlobalCustomFieldTabs:55 html/Admin/Elements/SelectNewGroupMembers:47 html/Admin/Elements/Tabs:53 html/Admin/Global/CustomFields/index.html:64 html/Admin/Groups/Members.html:76 html/Admin/Queues/People.html:89 html/Admin/index.html:62 html/User/Groups/Members.html:79 lib/RT/CustomField_Overlay.pm:1072
 msgid "Users"
 msgstr "Пользователи"
 
 msgid "Users"
 msgstr "Пользователи"
 
@@ -5808,11 +5772,11 @@ msgstr "Значение запроса"
 msgid "Values"
 msgstr "Значения"
 
 msgid "Values"
 msgstr "Значения"
 
-#: lib/RT/Queue_Overlay.pm:108
+#: lib/RT/Queue_Overlay.pm:107
 msgid "Watch"
 msgstr "Наблюдать"
 
 msgid "Watch"
 msgstr "Наблюдать"
 
-#: lib/RT/Queue_Overlay.pm:109
+#: lib/RT/Queue_Overlay.pm:108
 msgid "WatchAsAdminCc"
 msgstr "НаблюдатьАдминистративнойКопией"
 
 msgid "WatchAsAdminCc"
 msgstr "НаблюдатьАдминистративнойКопией"
 
@@ -5828,7 +5792,7 @@ msgstr "Наблюдатели"
 msgid "WebEncoding"
 msgstr "WebEncoding"
 
 msgid "WebEncoding"
 msgstr "WebEncoding"
 
-#: lib/RT/Date.pm:415
+#: lib/RT/Date.pm:413
 msgid "Wed."
 msgstr "Срд."
 
 msgid "Wed."
 msgstr "Срд."
 
@@ -5892,7 +5856,7 @@ msgstr "Которая связана пользователем"
 msgid "Which refer to"
 msgstr "Которая ссылается на"
 
 msgid "Which refer to"
 msgstr "Которая ссылается на"
 
-#: html/Admin/Users/Modify.html:188 html/User/Prefs.html:89
+#: html/Admin/Users/Modify.html.orig:188 html/Admin/Users/Modify.html:188 html/User/Prefs.html:89
 msgid "Work"
 msgstr "Рабочий"
 
 msgid "Work"
 msgstr "Рабочий"
 
@@ -5902,7 +5866,7 @@ msgstr "Работать автономно"
 
 #: NOT FOUND IN SOURCE
 msgid "WorkPhone"
 
 #: NOT FOUND IN SOURCE
 msgid "WorkPhone"
-msgstr "Рабочий"
+msgstr "Рабочий телефон"
 
 #: html/Ticket/Elements/ShowBasics:63 html/Ticket/Update.html:64
 msgid "Worked"
 
 #: html/Ticket/Elements/ShowBasics:63 html/Ticket/Update.html:64
 msgid "Worked"
@@ -5912,7 +5876,7 @@ msgstr "В работе"
 msgid "Yes"
 msgstr "Да"
 
 msgid "Yes"
 msgstr "Да"
 
-#: lib/RT/Ticket_Overlay.pm:3096
+#: lib/RT/Ticket_Overlay.pm:3063
 msgid "You already own this ticket"
 msgstr "Вы уже ответственный за эту заявку"
 
 msgid "You already own this ticket"
 msgstr "Вы уже ответственный за эту заявку"
 
@@ -5924,7 +5888,7 @@ msgstr "Вы незарегистрированный пользователь"
 msgid "You can access it with the Download button on the right."
 msgstr "Вы можете получить это, нажав справа кнопку Загрузить"
 
 msgid "You can access it with the Download button on the right."
 msgstr "Вы можете получить это, нажав справа кнопку Загрузить"
 
-#: lib/RT/Ticket_Overlay.pm:2978
+#: lib/RT/Ticket_Overlay.pm:2945
 msgid "You can only reassign tickets that you own or that are unowned"
 msgstr "Вы можете назначать ответственного только для своих или ничьих заявок."
 
 msgid "You can only reassign tickets that you own or that are unowned"
 msgstr "Вы можете назначать ответственного только для своих или ничьих заявок."
 
@@ -5941,7 +5905,7 @@ msgstr "Найдено %1 заявок в очереди %2"
 msgid "You have been logged out of RT."
 msgstr "Вы вышли из RT."
 
 msgid "You have been logged out of RT."
 msgstr "Вы вышли из RT."
 
-#: html/SelfService/Display.html:109
+#: html/SelfService/Display.html:102
 msgid "You have no permission to create tickets in that queue."
 msgstr "У вас нет права создавать заявки в этой очереди."
 
 msgid "You have no permission to create tickets in that queue."
 msgstr "У вас нет права создавать заявки в этой очереди."
 
@@ -5981,7 +5945,7 @@ msgstr "Ваш запрос отклонен."
 msgid "Your username or password is incorrect"
 msgstr "Имя пользователя или пароль неверные"
 
 msgid "Your username or password is incorrect"
 msgstr "Имя пользователя или пароль неверные"
 
-#: html/Admin/Users/Modify.html:168 html/User/Prefs.html:149
+#: html/Admin/Users/Modify.html.orig:168 html/Admin/Users/Modify.html:168 html/User/Prefs.html:149
 msgid "Zip"
 msgstr "Индекс"
 
 msgid "Zip"
 msgstr "Индекс"
 
@@ -5989,13 +5953,13 @@ msgstr "Индекс"
 msgid "[no subject]"
 msgstr "[нет темы]"
 
 msgid "[no subject]"
 msgstr "[нет темы]"
 
-#: lib/RT/System.pm:88
+#: lib/RT/System.pm:87
 msgid "allow creation of saved searches"
 msgid "allow creation of saved searches"
-msgstr ""
+msgstr "разрешить создание сохраненных запросов"
 
 
-#: lib/RT/System.pm:87
+#: lib/RT/System.pm:86
 msgid "allow loading of saved searches"
 msgid "allow loading of saved searches"
-msgstr ""
+msgstr "разрешить загрузку сохраненных запросов"
 
 #: NOT FOUND IN SOURCE
 msgid "and is not"
 
 #: NOT FOUND IN SOURCE
 msgid "and is not"
@@ -6012,7 +5976,7 @@ msgstr "с правами %1"
 
 #: html/Search/Elements/PickBasics:127
 msgid "belongs to"
 
 #: html/Search/Elements/PickBasics:127
 msgid "belongs to"
-msgstr ""
+msgstr "относится к"
 
 #: html/SelfService/Closed.html:49
 msgid "closed"
 
 #: html/SelfService/Closed.html:49
 msgid "closed"
@@ -6038,7 +6002,7 @@ msgstr "корреспонденция (возможно) не отправле
 msgid "correspondence sent"
 msgstr "корреспонденция отправлена"
 
 msgid "correspondence sent"
 msgstr "корреспонденция отправлена"
 
-#: html/Admin/Queues/Modify.html:98 lib/RT/Date.pm:342
+#: html/Admin/Queues/Modify.html:98 lib/RT/Date.pm:341
 msgid "days"
 msgstr "дней"
 
 msgid "days"
 msgstr "дней"
 
@@ -6046,13 +6010,13 @@ msgstr "дней"
 msgid "delete"
 msgstr "удалить"
 
 msgid "delete"
 msgstr "удалить"
 
-#: lib/RT/Queue_Overlay.pm:88
+#: lib/RT/Queue_Overlay.pm:87
 msgid "deleted"
 msgstr "удалена"
 
 #: html/Search/Elements/PickBasics:128
 msgid "does not belong to"
 msgid "deleted"
 msgstr "удалена"
 
 #: html/Search/Elements/PickBasics:128
 msgid "does not belong to"
-msgstr ""
+msgstr "не относится к"
 
 #: html/Search/Elements/PickBasics:61
 msgid "does not match"
 
 #: html/Search/Elements/PickBasics:61
 msgid "does not match"
@@ -6070,29 +6034,29 @@ msgstr "адрес email"
 msgid "equal to"
 msgstr "равняется"
 
 msgid "equal to"
 msgstr "равняется"
 
-#: html/Search/Build.html:387
+#: html/Search/Build.html:371
 msgid "error: can't move down"
 msgid "error: can't move down"
-msgstr ""
+msgstr "ошибка: невозможно переместить вниз"
 
 
-#: html/Search/Build.html:409
+#: html/Search/Build.html:393
 msgid "error: can't move left"
 msgid "error: can't move left"
-msgstr ""
+msgstr "ошибка: невозможно переместить влево"
 
 
-#: html/Search/Build.html:368
+#: html/Search/Build.html:352
 msgid "error: can't move up"
 msgid "error: can't move up"
-msgstr ""
+msgstr "ошибка: невозможно переместить вверх"
 
 
-#: html/Search/Build.html:451
+#: html/Search/Build.html:435
 msgid "error: nothing to delete"
 msgid "error: nothing to delete"
-msgstr ""
+msgstr "ошибка: нет данных для удаления"
 
 
-#: html/Search/Build.html:373 html/Search/Build.html:392 html/Search/Build.html:414 html/Search/Build.html:443
+#: html/Search/Build.html:357 html/Search/Build.html:376 html/Search/Build.html:398 html/Search/Build.html:427
 msgid "error: nothing to move"
 msgid "error: nothing to move"
-msgstr ""
+msgstr "ошибка: нет данных для перемещения"
 
 
-#: html/Search/Build.html:469
+#: html/Search/Build.html:453
 msgid "error: nothing to toggle"
 msgid "error: nothing to toggle"
-msgstr ""
+msgstr "ошибка: нет данных для переключения"
 
 #: NOT FOUND IN SOURCE
 msgid "false"
 
 #: NOT FOUND IN SOURCE
 msgid "false"
@@ -6111,7 +6075,7 @@ msgstr "больше чем"
 msgid "group '%1'"
 msgstr "группа '%1'"
 
 msgid "group '%1'"
 msgstr "группа '%1'"
 
-#: lib/RT/Date.pm:338
+#: lib/RT/Date.pm:337
 msgid "hours"
 msgstr "часов"
 
 msgid "hours"
 msgstr "часов"
 
@@ -6135,7 +6099,7 @@ msgstr "меньше чем"
 msgid "matches"
 msgstr "совпадает"
 
 msgid "matches"
 msgstr "совпадает"
 
-#: lib/RT/Date.pm:334
+#: lib/RT/Date.pm:333
 msgid "min"
 msgstr "мин"
 
 msgid "min"
 msgstr "мин"
 
@@ -6147,11 +6111,11 @@ msgstr "минут"
 msgid "modifications\\n\\n"
 msgstr "изменения\\n\\n"
 
 msgid "modifications\\n\\n"
 msgstr "изменения\\n\\n"
 
-#: lib/RT/Date.pm:350
+#: lib/RT/Date.pm:349
 msgid "months"
 msgstr "месяцев"
 
 msgid "months"
 msgstr "месяцев"
 
-#: lib/RT/Queue_Overlay.pm:83
+#: lib/RT/Queue_Overlay.pm:82
 msgid "new"
 msgstr "новая"
 
 msgid "new"
 msgstr "новая"
 
@@ -6175,7 +6139,7 @@ msgstr "не равно"
 msgid "notlike"
 msgstr "неравно"
 
 msgid "notlike"
 msgstr "неравно"
 
-#: html/SelfService/Elements/MyRequests:83 lib/RT/Queue_Overlay.pm:84
+#: html/SelfService/Elements/MyRequests:83 lib/RT/Queue_Overlay.pm:83
 msgid "open"
 msgstr "открыта"
 
 msgid "open"
 msgstr "открыта"
 
@@ -6189,27 +6153,27 @@ msgstr "личная группа '%1' для пользователя '%2'"
 msgid "queue %1 %2"
 msgstr "очередь %1 %2"
 
 msgid "queue %1 %2"
 msgstr "очередь %1 %2"
 
-#: lib/RT/Queue_Overlay.pm:87
+#: lib/RT/Queue_Overlay.pm:86
 msgid "rejected"
 msgstr "отклонена"
 
 msgid "rejected"
 msgstr "отклонена"
 
-#: lib/RT/Queue_Overlay.pm:86
+#: lib/RT/Queue_Overlay.pm:85
 msgid "resolved"
 msgstr "решена"
 
 msgid "resolved"
 msgstr "решена"
 
-#: lib/RT/Date.pm:330
+#: lib/RT/Date.pm:329
 msgid "sec"
 msgstr "сек"
 
 msgid "sec"
 msgstr "сек"
 
-#: lib/RT/System.pm:86
+#: lib/RT/System.pm:85
 msgid "show Configuration tab"
 msgid "show Configuration tab"
-msgstr ""
+msgstr "показывать закладку Конфигурация"
 
 #: html/Search/Results.html:82
 msgid "spreadsheet"
 
 #: html/Search/Results.html:82
 msgid "spreadsheet"
-msgstr "электронная таблица (.xls)"
+msgstr "электронная таблица"
 
 
-#: lib/RT/Queue_Overlay.pm:85
+#: lib/RT/Queue_Overlay.pm:84
 msgid "stalled"
 msgstr "приостановлена"
 
 msgid "stalled"
 msgstr "приостановлена"
 
@@ -6223,7 +6187,7 @@ msgstr "система %1"
 msgid "system group '%1'"
 msgstr "системная группа '%1'"
 
 msgid "system group '%1'"
 msgstr "системная группа '%1'"
 
-#: html/Elements/Error:66 html/SelfService/Error.html:63
+#: html/Elements/Error:64 html/SelfService/Error.html:63
 msgid "the calling component did not specify why"
 msgstr "вызывающий компонент не указал причину"
 
 msgid "the calling component did not specify why"
 msgstr "вызывающий компонент не указал причину"
 
@@ -6258,7 +6222,7 @@ msgstr "группа без описания: %1"
 msgid "user %1"
 msgstr "пользователь %1"
 
 msgid "user %1"
 msgstr "пользователь %1"
 
-#: lib/RT/Date.pm:346
+#: lib/RT/Date.pm:345
 msgid "weeks"
 msgstr "недель"
 
 msgid "weeks"
 msgstr "недель"
 
@@ -6266,7 +6230,7 @@ msgstr "недель"
 msgid "with template %1"
 msgstr "с шаблоном %1"
 
 msgid "with template %1"
 msgstr "с шаблоном %1"
 
-#: lib/RT/Date.pm:354
+#: lib/RT/Date.pm:353
 msgid "years"
 msgstr "лет"
 
 msgid "years"
 msgstr "лет"
 
index 1f87998..ed6aff8 100644 (file)
@@ -1,8 +1,10 @@
-# Chinese localization catalog for Request Tracker (RT)
+#
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
+"Project-Id-Version: RT 3.4.x\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
 "Last-Translator: Autrijus Tang <autrijus@autrijus.org>\n"
 "Last-Translator: Autrijus Tang <autrijus@autrijus.org>\n"
-"Language-Team: Chinese <members@ourinet.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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index 7fbda21..d9c64e8 100644 (file)
@@ -1,8 +1,10 @@
-# Chinese localization catalog for Request Tracker (RT)
+#
 msgid ""
 msgstr ""
 msgid ""
 msgstr ""
+"Project-Id-Version: RT 3.4.x\n"
+"PO-Revision-Date: 2005-10-03 13:54-0400\n"
 "Last-Translator: Autrijus Tang <autrijus@autrijus.org>\n"
 "Last-Translator: Autrijus Tang <autrijus@autrijus.org>\n"
-"Language-Team: Chinese <members@ourinet.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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
index 5db7c8a..efc4c26 100755 (executable)
@@ -56,7 +56,7 @@ BEGIN {
     use vars qw ($VERSION  @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
     
     # set the version for version checking
     use vars qw ($VERSION  @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
     
     # set the version for version checking
-    $VERSION = do { my @r = (q$Revision: 1.1.1.5 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker
+    $VERSION = do { my @r = (q$Revision: 1.1.1.6 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # must be all one line, for MakeMaker
     
     @ISA         = qw(Exporter);
     
     
     @ISA         = qw(Exporter);
     
@@ -68,6 +68,7 @@ BEGIN {
               &CheckForLoops 
               &CheckForSuspiciousSender
               &CheckForAutoGenerated 
               &CheckForLoops 
               &CheckForSuspiciousSender
               &CheckForAutoGenerated 
+              &CheckForBounce 
               &MailError 
               &ParseCcAddressesFromHead
               &ParseSenderAddressFromHead 
               &MailError 
               &ParseCcAddressesFromHead
               &ParseSenderAddressFromHead 
@@ -171,6 +172,16 @@ sub CheckForAutoGenerated {
 
 # }}}
 
 
 # }}}
 
+# {{{ sub CheckForBounce
+sub CheckForBounce {
+    my $head = shift;
+   
+    my $ReturnPath = $head->get("Return-path") || "" ;
+    return ($ReturnPath =~ /<>/);
+}
+
+# }}}
+
 # {{{ IsRTAddress
 
 =head2 IsRTAddress ADDRESS
 # {{{ IsRTAddress
 
 =head2 IsRTAddress ADDRESS
@@ -187,7 +198,7 @@ sub IsRTAddress {
     # Example: the following rule would tell RT not to Cc 
     #   "tickets@noc.example.com"
     if ( defined($RT::RTAddressRegexp) &&
     # Example: the following rule would tell RT not to Cc 
     #   "tickets@noc.example.com"
     if ( defined($RT::RTAddressRegexp) &&
-                       $address =~ /$RT::RTAddressRegexp/ ) {
+                       $address =~ /$RT::RTAddressRegexp/i ) {
         return(1);
     } else {
         return (undef);
         return(1);
     } else {
         return (undef);
@@ -250,7 +261,7 @@ sub MailError {
     }
 
     if ($RT::MailCommand eq 'sendmailpipe') {
     }
 
     if ($RT::MailCommand eq 'sendmailpipe') {
-        open (MAIL, "|$RT::SendmailPath $RT::SendmailArguments") || return(0);
+        open (MAIL, "|$RT::SendmailPath $RT::SendmailBounceArguments $RT::SendmailArguments") || return(0);
         print MAIL $entity->as_string;
         close(MAIL);
     }
         print MAIL $entity->as_string;
         close(MAIL);
     }
@@ -378,7 +389,8 @@ sub ParseSenderAddressFromHead {
 =head2 ParseErrorsToAddressFromHead
 
 Takes a MIME::Header object. Return a single value : user@host
 =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)
+of the From (evaluated in order of Return-path:,Errors-To:,Reply-To:,
+From:, Sender)
 
 =cut
 
 
 =cut
 
@@ -386,7 +398,7 @@ sub ParseErrorsToAddressFromHead {
     my $head = shift;
     #Figure out who's sending this message.
 
     my $head = shift;
     #Figure out who's sending this message.
 
-    foreach my $header ('Errors-To' , 'Reply-To', 'From', 'Sender' ) {
+    foreach my $header ('Return-path', 'Errors-To' , 'Reply-To', 'From', 'Sender' ) {
        # If there's a header of that name
        my $headerobj = $head->get($header);
        if ($headerobj) {
        # If there's a header of that name
        my $headerobj = $head->get($header);
        if ($headerobj) {
@@ -436,7 +448,7 @@ sub ParseTicketId {
     my $Subject = shift;
     my $id;
 
     my $Subject = shift;
     my $id;
 
-    my $test_name = $RT::EmailSubjectTagRegex || qr/\Q$RT::rtname\E/;
+    my $test_name = $RT::EmailSubjectTagRegex || qr/\Q$RT::rtname\E/i;
 
     if ( $Subject =~ s/\[$test_name\s+\#(\d+)\s*\]//i ) {
         my $id = $1;
 
     if ( $Subject =~ s/\[$test_name\s+\#(\d+)\s*\]//i ) {
         my $id = $1;
@@ -655,6 +667,8 @@ EOT
     # }}}
 
     # {{{ Lets check for mail loops of various sorts.
     # }}}
 
     # {{{ Lets check for mail loops of various sorts.
+    my $IsBounce = CheckForBounce($head);
+
     my $IsAutoGenerated = CheckForAutoGenerated($head);
 
     my $IsSuspiciousSender = CheckForSuspiciousSender($head);
     my $IsAutoGenerated = CheckForAutoGenerated($head);
 
     my $IsSuspiciousSender = CheckForSuspiciousSender($head);
@@ -665,7 +679,7 @@ EOT
 
     #If the message is autogenerated, we need to know, so we can not
     # send mail to the sender
 
     #If the message is autogenerated, we need to know, so we can not
     # send mail to the sender
-    if ( $IsSuspiciousSender || $IsAutoGenerated || $IsALoop ) {
+    if ( $IsBounce || $IsSuspiciousSender || $IsAutoGenerated || $IsALoop ) {
         $SquelchReplies = 1;
         $ErrorsTo       = $RT::OwnerEmail;
     }
         $SquelchReplies = 1;
         $ErrorsTo       = $RT::OwnerEmail;
     }
index 28143cf..c870ee4 100644 (file)
@@ -315,7 +315,7 @@ Returns true if the base of this link is a local ticket
 
 sub BaseIsLocal {
   my $self = shift;
 
 sub BaseIsLocal {
   my $self = shift;
-  $RT::Logger->crit("Link::BaseIsLocal is deprecated in favor of Link->BaseURI->IsLocal");
+  $RT::Logger->crit("Link::BaseIsLocal is deprecated in favor of Link->BaseURI->IsLocal at (". join(":",caller).")");
   return $self->BaseURI->IsLocal;
 }
 
   return $self->BaseURI->IsLocal;
 }
 
@@ -331,7 +331,7 @@ Returns true if the target of this link is a local ticket
 
 sub TargetIsLocal {
   my $self = shift;
 
 sub TargetIsLocal {
   my $self = shift;
-  $RT::Logger->crit("Link::BaseIsLocal is deprecated in favor of Link->BaseURI->IsLocal");
+  $RT::Logger->crit("Link::BaseIsLocal is deprecated in favor of Link->BaseURI->IsLocal at (". join(":",caller).")");
   return $self->TargetURI->IsLocal;
 }
 
   return $self->TargetURI->IsLocal;
 }
 
@@ -348,7 +348,7 @@ Returns an HTTP url to access the base of this link
 
 sub BaseAsHREF {
   my $self = shift;
 
 sub BaseAsHREF {
   my $self = shift;
-  $RT::Logger->crit("Link::BaseAsHREF deprecated in favor of ->BaseURI->AsHREF");
+  $RT::Logger->crit("Link::BaseAsHREF deprecated in favor of ->BaseURI->AsHREF at (". join(":",caller).")");
   return $self->BaseURI->HREF;
 }
 # }}}
   return $self->BaseURI->HREF;
 }
 # }}}
@@ -363,7 +363,7 @@ return an HTTP url to access the target of this link
 
 sub TargetAsHREF {
   my $self = shift;
 
 sub TargetAsHREF {
   my $self = shift;
-  $RT::Logger->crit("Link::TargetAsHREF deprecated in favor of ->TargetURI->AsHREF");
+  $RT::Logger->crit("Link::TargetAsHREF deprecated in favor of ->TargetURI->AsHREF at (". join(":",caller).")");
   return $self->TargetURI->HREF;
 }
 # }}}
   return $self->TargetURI->HREF;
 }
 # }}}
index 315c16f..3e6e62a 100644 (file)
@@ -80,7 +80,7 @@ sub LimitToTicket {
     my $ticket = shift;
 
 
     my $ticket = shift;
 
 
-    $RT::Logger->warning(ref($self) . " -> LimitToTicket deprecated in favor of LimitToObject");
+    $RT::Logger->warning(ref($self) . " -> LimitToTicket deprecated in favor of LimitToObject at (". join(":",caller).")");
 
     $self->Limit( FIELD => 'ObjectType',
                  VALUE => 'RT::Ticket',
 
     $self->Limit( FIELD => 'ObjectType',
                  VALUE => 'RT::Ticket',
index 4783c5c..1986470 100644 (file)
@@ -280,8 +280,6 @@ This takes the params:
     Object => an RT style object (->id will get its id)
 
 
     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.
 Returns 1 if a matching ACE was found.
 
 Returns undef if no ACE was found.
@@ -295,38 +293,41 @@ sub HasRight {
         Right        => undef,
         Object       => undef,
         EquivObjects => undef,
         Right        => undef,
         Object       => undef,
         EquivObjects => undef,
-        @_
+        @_,
     );
 
     );
 
+    unless ( $args{'Right'} ) {
+        $RT::Logger->crit("HasRight called without a right");
+        return (undef);
+    }
+
+    $args{EquivObjects} = [ @{ $args{EquivObjects} } ] if $args{EquivObjects};
+
     if ( $self->Disabled ) {
     if ( $self->Disabled ) {
-        $RT::Logger->err( "Disabled User:  "
+        $RT::Logger->error( "Disabled User:  "
               . $self->id
               . " failed access check for "
               . $args{'Right'} );
         return (undef);
     }
 
               . $self->id
               . " failed access check for "
               . $args{'Right'} );
         return (undef);
     }
 
-    if ( !defined $args{'Right'} ) {
-        $RT::Logger->crit("HasRight called without a right");
-        return (undef);
-    }
-
     if (   defined( $args{'Object'} )
         && UNIVERSAL::can( $args{'Object'}, 'id' )
     if (   defined( $args{'Object'} )
         && UNIVERSAL::can( $args{'Object'}, 'id' )
-        && $args{'Object'}->id )
-    {
+        && $args{'Object'}->id ) {
+
         push( @{ $args{'EquivObjects'} }, $args{Object} );
     }
     else {
         push( @{ $args{'EquivObjects'} }, $args{Object} );
     }
     else {
-        $RT::Logger->crit("$self HasRight called with no valid object");
+        $RT::Logger->crit("HasRight called with no valid object");
         return (undef);
     }
 
     # If this object is a ticket, we care about ticket roles and queue roles
         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 ) {
+    if ( UNIVERSAL::isa( $args{'Object'} => 'RT::Ticket' ) ) {
 
 
-# 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.
+        # 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 );
 
     }
         push( @{ $args{'EquivObjects'} }, $args{'Object'}->QueueObj );
 
     }
@@ -354,161 +355,119 @@ sub HasRight {
 
     # }}}
 
 
     # }}}
 
-    # {{{ if we've cached a positive result for this query, return 1
-
-    my $cached_answer = $_ACL_CACHE->fetch($hashkey);
-
     # Returns undef on cache miss
     # Returns undef on cache miss
+    my $cached_answer = $_ACL_CACHE->fetch($hashkey);
     if ( defined $cached_answer ) {
         if ( $cached_answer == 1 ) {
             return (1);
         }
         elsif ( $cached_answer == -1 ) {
     if ( defined $cached_answer ) {
         if ( $cached_answer == 1 ) {
             return (1);
         }
         elsif ( $cached_answer == -1 ) {
-            return (0);
+            return (undef);
         }
     }
 
         }
     }
 
-    my ( $or_look_at_object_rights, $or_check_roles );
-    my $right = $args{'Right'};
+    my $hitcount = $self->_HasRight( %args );
+
+    $_ACL_CACHE->set( $hashkey => $hitcount? 1:-1 );
+    return ($hitcount);
+}
+
+=head2 _HasRight
 
 
-    # {{{ Construct Right Match
+Low level HasRight implementation, use HasRight method instead.
+
+=cut
+
+sub _HasRight
+{
+    my $self = shift;
+    my %args = (
+        Right        => undef,
+        Object       => undef,
+        EquivObjects => [],
+        @_
+    );
+
+    my $right = $args{'Right'};
+    my @objects = @{ $args{'EquivObjects'} };
 
     # If an object is defined, we want to look at rights for that object
 
 
     # 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'" )
+    push( @objects, 'RT::System' )
       unless $self->can('_IsOverrideGlobalACL')
       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;
-
-        unless ($id) {
-            use Carp;
-            Carp::cluck(
-                "Trying to check $type rights for an unspecified $type");
-            $RT::Logger->crit(
-                "Trying to check $type rights for an unspecified $type");
+             && $self->_IsOverrideGlobalACL( $args{Object} );
+
+    my ($check_roles, $check_objects) = ('','');
+    if( @objects ) {
+        my @role_clauses;
+        my @object_clauses;
+        foreach my $obj ( @objects ) {
+            my $type = ref($obj)? ref($obj): $obj;
+            my $id;
+            $id = $obj->id if ref($obj) && UNIVERSAL::can($obj, 'id') && $obj->id;
+
+            my $role_clause = "Groups.Domain = '$type-Role'";
+            # XXX: Groups.Instance is VARCHAR in DB, we should quote value
+            # if we want mysql 4.0 use indexes here. we MUST convert that
+            # field to integer and drop this quotes.
+            $role_clause   .= " AND Groups.Instance = '$id'" if $id;
+            push @role_clauses, "($role_clause)";
+
+            my $object_clause = "ACL.ObjectType = '$type'";
+            $object_clause   .= " AND ACL.ObjectId = $id" if $id;
+            push @object_clauses, "($object_clause)";
         }
         }
-        push @look_at_objects,
-          "(ACL.ObjectType = '$type' AND ACL.ObjectId = '$id')";
-    }
 
 
-    # }}}
-
-    # {{{ Build that honkin-big SQL query
+        $check_roles .= join ' OR ', @role_clauses;
+        $check_objects = join ' OR ', @object_clauses;
+    }
 
     my $query_base =
       "SELECT ACL.id from ACL, Groups, Principals, CachedGroupMembers WHERE  " .
 
       # Only find superuser or rights with the name $right
 
     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') " .
+      "(ACL.RightName = 'SuperUser' OR  ACL.RightName = '$right') "
 
       # Never find disabled groups.
 
       # 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 . "' "
-      .
+      . "AND Principals.Disabled = 0 "
+      . "AND CachedGroupMembers.Disabled = 0 "
 
 
-  # 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'))"
-      .
-
-      " ) ";
-    $self->_Handle->ApplyLimits( \$groups_query, 1 );    #only return one result
-
-    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') ";
-        $self->_Handle->ApplyLimits( \$roles_query, 1 ); #only return one result
-
-    }
-
-    # }}}
-
-    # {{{ Actually check the ACL by performing an SQL query
-    #   $RT::Logger->debug("Now Trying $groups_query");
+      # We always grant rights to Groups
+      . "AND Principals.id = Groups.id "
+      . "AND Principals.PrincipalType = 'Group' "
+
+      # 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 ($check_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. All this we do
+      # via (ACL.PrincipalType = 'Group') condition
+      . "AND ACL.PrincipalId = Principals.id "
+      . "AND ACL.PrincipalType = 'Group' ";
+
+    $self->_Handle->ApplyLimits( \$groups_query, 1 ); #only return one result
     my $hitcount = $self->_Handle->FetchResult($groups_query);
     my $hitcount = $self->_Handle->FetchResult($groups_query);
+    return 1 if $hitcount; # get out of here if success
 
 
-    # }}}
-
-    # {{{ if there's a match, the right is granted
-    if ($hitcount) {
-        $_ACL_CACHE->set( $hashkey => 1 );
-        return (1);
-    }
+    # The roles query does the query based on roles
+    my $roles_query = $query_base
+      . "AND ACL.PrincipalType = Groups.Type "
+      . "AND ($check_roles) ";
+    $self->_Handle->ApplyLimits( \$roles_query, 1 ); #only return one result
 
 
-    # Now check the roles query
     $hitcount = $self->_Handle->FetchResult($roles_query);
     $hitcount = $self->_Handle->FetchResult($roles_query);
+    return 1 if $hitcount; # get out of here if success
 
 
-    if ($hitcount) {
-        $_ACL_CACHE->set( $hashkey => 1 );
-        return (1);
-    }
-
-    # We failed to find an acl hit
-    $_ACL_CACHE->set( $hashkey => -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;
-
-    unless ($id) {
-       $id = '0';
-   }
-
-   # This should never be true.
-   unless ($id =~ /^\d+$/) {
-       $RT::Logger->crit("RT::Prinicipal::_RolesForObject called with type $type and a non-integer id: '$id'");
-       $id = "'$id'";
-   }
-
-    my $clause = "(Groups.Domain = '".$type."-Role' AND Groups.Instance = $id) ";
-
-    return($clause);
+    return 0;
 }
 
 # }}}
 }
 
 # }}}
@@ -578,6 +537,8 @@ sub _ReferenceId {
     # just return the value for non-objects
     return $scalar unless UNIVERSAL::can($scalar, 'id');
 
     # just return the value for non-objects
     return $scalar unless UNIVERSAL::can($scalar, 'id');
 
+    return ref($scalar) unless $scalar->id;
+
     # an object -- return the class and id
     return(ref($scalar)."-". $scalar->id);
 }
     # an object -- return the class and id
     return(ref($scalar)."-". $scalar->id);
 }
index 2f180fc..299072e 100644 (file)
@@ -521,7 +521,7 @@ Returns an RT::CustomFields object containing all global custom fields, as well
 
 sub CustomFields {
     my $self = shift;
 
 sub CustomFields {
     my $self = shift;
-    warn "Queue->CustomFields is deprecated, use Queue->TicketCustomFields instead";
+    warn "Queue->CustomFields is deprecated, use Queue->TicketCustomFields instead at (". join(":",caller).")";
     return $self->TicketCustomFields(@_);
 }
 
     return $self->TicketCustomFields(@_);
 }
 
index d3a8268..341d88b 100755 (executable)
@@ -670,7 +670,14 @@ sub __Value {
 
     return('') if ( !defined($value) || $value eq '');
 
 
     return('') if ( !defined($value) || $value eq '');
 
-    return Encode::decode_utf8($value) || $value if $args{'decode_utf8'};
+    if( $args{'decode_utf8'} ) {
+       # XXX: is_utf8 check should be here unless Encode bug would be fixed
+        # see http://rt.cpan.org/NoAuth/Bug.html?id=14559 
+        return Encode::decode_utf8($value) unless Encode::is_utf8($value);
+    } else {
+        # check is_utf8 here just to be shure
+        return Encode::encode_utf8($value) if Encode::is_utf8($value);
+    }
     return $value;
 }
 
     return $value;
 }
 
@@ -1290,7 +1297,7 @@ sub _AddLink {
                              Target => $args{'Target'} );
     if ( $old_link->Id ) {
         $RT::Logger->debug("$self Somebody tried to duplicate a link");
                              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 );
+        return ( $old_link->id, $self->loc("Link already exists") );
     }
 
     # }}}
     }
 
     # }}}
@@ -1538,8 +1545,7 @@ sub CustomFieldLookupType {
 #TODO Deprecated API. Destroy in 3.6
 sub _LookupTypes { 
     my  $self = shift;
 #TODO Deprecated API. Destroy in 3.6
 sub _LookupTypes { 
     my  $self = shift;
-    $RT::Logger->warning("_LookupTypes call is deprecated. Replace with CustomFieldLookupType");
-    $RT::Logger->warning("Besides, it was a private API. Were you doing using it?");
+    $RT::Logger->warning("_LookupTypes call is deprecated at (". join(":",caller)."). Replace with CustomFieldLookupType");
 
     return($self->CustomFieldLookupType);
 
 
     return($self->CustomFieldLookupType);
 
index d04ecec..1ab91e2 100644 (file)
@@ -750,7 +750,7 @@ sub Create {
         $RT::Handle->Commit();
         $ErrStr = $self->loc( "Ticket [_1] created in queue '[_2]'", $self->Id, $QueueObj->Name );
         $ErrStr = join( "\n", $ErrStr, @non_fatal_errors );
         $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 );
+        return ( $self->Id, 0, $ErrStr );
 
     }
 }
 
     }
 }
@@ -2501,8 +2501,11 @@ sub DeleteLink {
         $direction='Base';
     }
 
         $direction='Base';
     }
 
-    if ( $val ) {
-       my $remote_uri = RT::URI->new( $RT::SystemUser );
+    if ( $args{'Silent'} ) {
+        return ( $val, $Msg );
+    }
+    else {
+       my $remote_uri = RT::URI->new( $self->CurrentUser );
        $remote_uri->FromURI( $remote_link );
 
         my ( $Trans, $Msg, $TransObj ) = $self->_NewTransaction(
        $remote_uri->FromURI( $remote_link );
 
         my ( $Trans, $Msg, $TransObj ) = $self->_NewTransaction(
@@ -2512,6 +2515,17 @@ sub DeleteLink {
             TimeTaken => 0
         );
 
             TimeTaken => 0
         );
 
+        if ( $remote_uri->IsLocal ) {
+
+            my $OtherObj = $remote_uri->Object;
+            my ( $val, $Msg ) = $OtherObj->_NewTransaction(Type  => 'DeleteLink',
+                                                           Field => $direction eq 'Target' ? $LINKDIRMAP{$args{'Type'}}->{Base}
+                                                                                           : $LINKDIRMAP{$args{'Type'}}->{Target},
+                                                           OldValue => $self->URI,
+                                                           ActivateScrips => ! $RT::LinkTransactionsRun1Scrip,
+                                                           TimeTaken => 0 );
+        }
+
         return ( $Trans, $Msg );
     }
 }
         return ( $Trans, $Msg );
     }
 }
@@ -2524,52 +2538,6 @@ sub DeleteLink {
 
 Takes a paramhash of Type and one of Base or Target. Adds that link to this ticket.
 
 
 Takes a paramhash of Type and one of Base or Target. Adds that link to this ticket.
 
-=begin testing 
-
-my $q1 = RT::Queue->new($RT::SystemUser);
-my ($id,$msg) = $q1->Create(Name => 'LinkTest1');
-ok ($id,$msg);
-my $q2 = RT::Queue->new($RT::SystemUser);
-($id,$msg) = $q2->Create(Name => 'LinkTest2');
-ok ($id,$msg);
-
-my $u1 = RT::User->new($RT::SystemUser);
-($id,$msg) =$u1->Create(Name => 'LinkTestUser');
-
-ok ($id,$msg);
-
-($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q1, Right => 'CreateTicket');
-ok ($id,$msg);
-($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q1, Right => 'ModifyTicket');
-ok ($id,$msg);
-
-my $tid;
-
-my $creator = RT::CurrentUser->new($u1->id);
-
-my $ticket = RT::Ticket->new( $creator);
-ok($ticket->isa('RT::Ticket'));
-($id,$tid, $msg) = $ticket->Create(Subject => 'Link test 1', Queue => $q1->id);
-ok ($id,$msg);
-
-
-my $ticket2 = RT::Ticket->new($RT::SystemUser);
-($id, $tid, $msg) = $ticket2->Create(Subject => 'Link test 2', Queue => $q2->id);
-ok ($id, $msg);
-
-($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => $ticket2->id);
-ok(!$id,$msg);
-($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q2, Right => 'CreateTicket');
-ok ($id,$msg);
-($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q2, Right => 'ModifyTicket');
-ok ($id,$msg);
-($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => $ticket2->id);
-ok($id,$msg);
-($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => -1);
-ok(!$id,$msg);
-
-=end testing 
-
 =cut
 
 sub AddLink {
 =cut
 
 sub AddLink {
@@ -2657,7 +2625,7 @@ sub _AddLink {
         return ( $val, $Msg );
     }
     else {
         return ( $val, $Msg );
     }
     else {
-       my $remote_uri = RT::URI->new( $RT::SystemUser );
+       my $remote_uri = RT::URI->new( $self->CurrentUser );
        $remote_uri->FromURI( $remote_link );
 
         #Write the transaction
        $remote_uri->FromURI( $remote_link );
 
         #Write the transaction
@@ -2666,6 +2634,17 @@ sub _AddLink {
                                   Field => $LINKDIRMAP{$args{'Type'}}->{$direction},
                                   NewValue =>  $remote_uri->URI || $remote_link,
                                   TimeTaken => 0 );
                                   Field => $LINKDIRMAP{$args{'Type'}}->{$direction},
                                   NewValue =>  $remote_uri->URI || $remote_link,
                                   TimeTaken => 0 );
+
+        if ( $remote_uri->IsLocal ) {
+
+            my $OtherObj = $remote_uri->Object;
+            my ( $val, $Msg ) = $OtherObj->_NewTransaction(Type  => 'AddLink',
+                                                           Field => $direction eq 'Target' ? $LINKDIRMAP{$args{'Type'}}->{Base} 
+                                                                                           : $LINKDIRMAP{$args{'Type'}}->{Target},
+                                                           NewValue => $self->URI,
+                                                           ActivateScrips => ! $RT::LinkTransactionsRun1Scrip,
+                                                           TimeTaken => 0 );
+        }
         return ( $val, $Msg );
     }
 
         return ( $val, $Msg );
     }
 
@@ -3239,7 +3218,7 @@ Takes no arguments. Marks this ticket for garbage collection
 
 sub Kill {
     my $self = shift;
 
 sub Kill {
     my $self = shift;
-    $RT::Logger->crit("'Kill' is deprecated. use 'Delete' instead.");
+    $RT::Logger->crit("'Kill' is deprecated. use 'Delete' instead at (". join(":",caller).").");
     return $self->Delete;
 }
 
     return $self->Delete;
 }
 
@@ -3482,7 +3461,7 @@ sub _Set {
     
         #If we can't actually set the field to the value, don't record
         # a transaction. instead, get out of here.
     
         #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 ); }
+        return ( 0, $msg ) unless $ret;
     }
 
     if ( $args{'RecordTransaction'} == 1 ) {
     }
 
     if ( $args{'RecordTransaction'} == 1 ) {
@@ -3698,13 +3677,17 @@ See L<RT::Record>
 sub CustomFieldValues {
     my $self  = shift;
     my $field = shift;
 sub CustomFieldValues {
     my $self  = shift;
     my $field = shift;
-    unless ( $field =~ /^\d+$/ ) {
+    if ( $field and $field !~ /^\d+$/ ) {
         my $cf = RT::CustomField->new( $self->CurrentUser );
         $cf->LoadByNameAndQueue( Name => $field, Queue => $self->QueueObj->Id );
         unless ( $cf->id ) {
             $cf->LoadByNameAndQueue( Name => $field, Queue => '0' );
         }
         $field = $cf->id;
         my $cf = RT::CustomField->new( $self->CurrentUser );
         $cf->LoadByNameAndQueue( Name => $field, Queue => $self->QueueObj->Id );
         unless ( $cf->id ) {
             $cf->LoadByNameAndQueue( Name => $field, Queue => '0' );
         }
         $field = $cf->id;
+        unless ( $field =~ /^\d+$/ ) {
+          # If we didn't find a valid cfid, give up.
+          return RT::CustomFieldValues->new($self->CurrentUser);
+        }
     }
     return $self->SUPER::CustomFieldValues($field);
 }
     }
     return $self->SUPER::CustomFieldValues($field);
 }
index 0e6585c..1c31f3f 100644 (file)
@@ -1,38 +1,38 @@
 # BEGIN BPS TAGGED BLOCK {{{
 # BEGIN BPS TAGGED BLOCK {{{
-# 
+#
 # COPYRIGHT:
 # COPYRIGHT:
-#  
-# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC 
+#
+# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC
 #                                          <jesse@bestpractical.com>
 #                                          <jesse@bestpractical.com>
-# 
+#
 # (Except where explicitly superseded by other copyright notices)
 # (Except where explicitly superseded by other copyright notices)
-# 
-# 
+#
+#
 # LICENSE:
 # LICENSE:
-# 
+#
 # This work is made available to you under the terms of Version 2 of
 # the GNU General Public License. A copy of that license should have
 # been provided with this software, but in any event can be snarfed
 # from www.gnu.org.
 # This work is 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.
 # This work is distributed in the hope that it will be useful, but
 # WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 # General Public License for more details.
-# 
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-# 
-# 
+#
+#
 # CONTRIBUTION SUBMISSION POLICY:
 # CONTRIBUTION SUBMISSION POLICY:
-# 
+#
 # (The following paragraph is not intended to limit the rights granted
 # to you to modify and distribute this software under the terms of
 # the GNU General Public License and is only of importance to you if
 # you choose to contribute your changes and enhancements to the
 # community by submitting them to Best Practical Solutions, LLC.)
 # (The following paragraph is not intended to limit the rights granted
 # to you to modify and distribute this software under the terms of
 # the GNU General Public License and is only of importance to you if
 # you choose to contribute your changes and enhancements to the
 # community by submitting them to Best Practical Solutions, LLC.)
-# 
+#
 # By intentionally submitting any modifications, corrections or
 # derivatives to this work, or any other work intended for use with
 # Request Tracker, to Best Practical Solutions, LLC, you confirm that
 # By intentionally submitting any modifications, corrections or
 # derivatives to this work, or any other work intended for use with
 # Request Tracker, to Best Practical Solutions, LLC, you confirm that
@@ -41,7 +41,7 @@
 # royalty-free, perpetual, license to use, copy, create derivative
 # works based on those contributions, and sublicense and distribute
 # those contributions and any derivatives thereof.
 # royalty-free, perpetual, license to use, copy, create derivative
 # works based on those contributions, and sublicense and distribute
 # those contributions and any derivatives thereof.
-# 
+#
 # END BPS TAGGED BLOCK }}}
 # Major Changes:
 
 # END BPS TAGGED BLOCK }}}
 # Major Changes:
 
@@ -103,7 +103,7 @@ my %FIELDS = (
     Type            => [ 'ENUM', ],
     Creator         => [ 'ENUM' => 'User', ],
     LastUpdatedBy   => [ 'ENUM' => 'User', ],
     Type            => [ 'ENUM', ],
     Creator         => [ 'ENUM' => 'User', ],
     LastUpdatedBy   => [ 'ENUM' => 'User', ],
-    Owner           => [ 'ENUM' => 'User', ],
+    Owner           => [ 'WATCHERFIELD' => 'Owner', ],
     EffectiveId     => [ 'INT', ],
     id              => [ 'INT', ],
     InitialPriority => [ 'INT', ],
     EffectiveId     => [ 'INT', ],
     id              => [ 'INT', ],
     InitialPriority => [ 'INT', ],
@@ -118,26 +118,26 @@ my %FIELDS = (
     DependentOn     => [ 'LINK' => From => 'DependsOn', ],
     DependedOnBy    => [ 'LINK' => From => 'DependsOn', ],
     ReferredToBy    => [ 'LINK' => From => 'RefersTo', ],
     DependentOn     => [ 'LINK' => From => 'DependsOn', ],
     DependedOnBy    => [ 'LINK' => From => 'DependsOn', ],
     ReferredToBy    => [ 'LINK' => From => 'RefersTo', ],
-    Told           => ['DATE' => 'Told',],
-    Starts         => ['DATE' => 'Starts',],
-    Started        => ['DATE' => 'Started',],
-    Due                    => ['DATE' => 'Due',],
-    Resolved       => ['DATE' => 'Resolved',],
-    LastUpdated            => ['DATE' => 'LastUpdated',],
-    Created        => ['DATE' => 'Created',],
-    Subject        => ['STRING',],
-    Content        => ['TRANSFIELD',],
-    ContentType            => ['TRANSFIELD',],
-    Filename        => ['TRANSFIELD',],
-    TransactionDate => ['TRANSDATE',],
-    Requestor       => ['WATCHERFIELD' => 'Requestor',],
-    Requestors       => ['WATCHERFIELD' => 'Requestor',],
-    Cc              => ['WATCHERFIELD' => 'Cc',],
-    AdminCc         => ['WATCHERFIELD' => 'AdminCc',],
-    Watcher        => ['WATCHERFIELD'],
-    LinkedTo       => ['LINKFIELD',],
-    CustomFieldValue =>['CUSTOMFIELD',],
-    CF              => ['CUSTOMFIELD',],
+    Told             => [ 'DATE'            => 'Told', ],
+    Starts           => [ 'DATE'            => 'Starts', ],
+    Started          => [ 'DATE'            => 'Started', ],
+    Due              => [ 'DATE'            => 'Due', ],
+    Resolved         => [ 'DATE'            => 'Resolved', ],
+    LastUpdated      => [ 'DATE'            => 'LastUpdated', ],
+    Created          => [ 'DATE'            => 'Created', ],
+    Subject          => [ 'STRING', ],
+    Content          => [ 'TRANSFIELD', ],
+    ContentType      => [ 'TRANSFIELD', ],
+    Filename         => [ 'TRANSFIELD', ],
+    TransactionDate  => [ 'TRANSDATE', ],
+    Requestor        => [ 'WATCHERFIELD'    => 'Requestor', ],
+    Requestors       => [ 'WATCHERFIELD'    => 'Requestor', ],
+    Cc               => [ 'WATCHERFIELD'    => 'Cc', ],
+    AdminCc          => [ 'WATCHERFIELD'    => 'AdminCc', ],
+    Watcher          => ['WATCHERFIELD'],
+    LinkedTo         => [ 'LINKFIELD', ],
+    CustomFieldValue => [ 'CUSTOMFIELD', ],
+    CF               => [ 'CUSTOMFIELD', ],
     Updated          => [ 'TRANSDATE', ],
     RequestorGroup   => [ 'MEMBERSHIPFIELD' => 'Requestor', ],
     CCGroup          => [ 'MEMBERSHIPFIELD' => 'Cc', ],
     Updated          => [ 'TRANSDATE', ],
     RequestorGroup   => [ 'MEMBERSHIPFIELD' => 'Requestor', ],
     CCGroup          => [ 'MEMBERSHIPFIELD' => 'Cc', ],
@@ -159,7 +159,7 @@ my %dispatch = (
     LINKFIELD       => \&_LinkFieldLimit,
     CUSTOMFIELD     => \&_CustomFieldLimit,
 );
     LINKFIELD       => \&_LinkFieldLimit,
     CUSTOMFIELD     => \&_CustomFieldLimit,
 );
-my %can_bundle = ( WATCHERFIELD => "yeps", );
+my %can_bundle = ( WATCHERFIELD => "yes", );
 
 # Default EntryAggregator per type
 # if you specify OP, you must specify all valid OPs
 
 # Default EntryAggregator per type
 # if you specify OP, you must specify all valid OPs
@@ -210,10 +210,10 @@ require RT::Tickets_Overlay_SQL;
 # {{{ sub SortFields
 
 @SORTFIELDS = qw(id Status
 # {{{ sub SortFields
 
 @SORTFIELDS = qw(id Status
-  Queue Subject
-  Owner Created Due Starts Started
-  Told
-  Resolved LastUpdated Priority TimeWorked TimeLeft);
+    Queue Subject
+    Owner Created Due Starts Started
+    Told
+    Resolved LastUpdated Priority TimeWorked TimeLeft);
 
 =head2 SortFields
 
 
 =head2 SortFields
 
@@ -268,7 +268,8 @@ sub _EnumLimit {
     $op = "!=" if $op eq "<>";
 
     die "Invalid Operation: $op for $field"
     $op = "!=" if $op eq "<>";
 
     die "Invalid Operation: $op for $field"
-      unless $op eq "=" or $op eq "!=";
+        unless $op eq "="
+        or $op     eq "!=";
 
     my $meta = $FIELDS{$field};
     if ( defined $meta->[1] ) {
 
     my $meta = $FIELDS{$field};
     if ( defined $meta->[1] ) {
@@ -299,7 +300,7 @@ sub _IntLimit {
     my ( $sb, $field, $op, $value, @rest ) = @_;
 
     die "Invalid Operator $op for $field"
     my ( $sb, $field, $op, $value, @rest ) = @_;
 
     die "Invalid Operator $op for $field"
-      unless $op =~ /^(=|!=|>|<|>=|<=)$/;
+        unless $op =~ /^(=|!=|>|<|>=|<=)$/;
 
     $sb->_SQLLimit(
         FIELD    => $field,
 
     $sb->_SQLLimit(
         FIELD    => $field,
@@ -326,7 +327,7 @@ sub _LinkLimit {
     die "Invalid Operator $op for $field" unless $op =~ /^(=|!=|IS)/io;
 
     die "Incorrect Metadata for $field"
     die "Invalid Operator $op for $field" unless $op =~ /^(=|!=|IS)/io;
 
     die "Incorrect Metadata for $field"
-      unless ( defined $meta->[1] and defined $meta->[2] );
+        unless ( defined $meta->[1] and defined $meta->[2] );
 
     my $direction = $meta->[1];
 
 
     my $direction = $meta->[1];
 
@@ -388,17 +389,17 @@ sub _LinkLimit {
         $sb->_SQLLimit(
             ALIAS           => $linkalias,
             ENTRYAGGREGATOR => 'AND',
         $sb->_SQLLimit(
             ALIAS           => $linkalias,
             ENTRYAGGREGATOR => 'AND',
-            FIELD           => ( $is_local ? "Local$matchfield" : $matchfield ),
-            OPERATOR        => 'IS',
-            VALUE           => 'NULL',
-            QUOTEVALUE      => '0',
+            FIELD      => ( $is_local ? "Local$matchfield" : $matchfield ),
+            OPERATOR   => 'IS',
+            VALUE      => 'NULL',
+            QUOTEVALUE => '0',
         );
 
     }
     else {
 
         $sb->{_sql_linkalias} = $sb->NewAlias('Links')
         );
 
     }
     else {
 
         $sb->{_sql_linkalias} = $sb->NewAlias('Links')
-          unless defined $sb->{_sql_linkalias};
+            unless defined $sb->{_sql_linkalias};
 
         $sb->_OpenParen();
 
 
         $sb->_OpenParen();
 
@@ -413,9 +414,9 @@ sub _LinkLimit {
         $sb->_SQLLimit(
             ALIAS           => $sb->{_sql_linkalias},
             ENTRYAGGREGATOR => 'AND',
         $sb->_SQLLimit(
             ALIAS           => $sb->{_sql_linkalias},
             ENTRYAGGREGATOR => 'AND',
-            FIELD           => ( $is_local ? "Local$matchfield" : $matchfield ),
-            OPERATOR        => '=',
-            VALUE           => $value,
+            FIELD    => ( $is_local ? "Local$matchfield" : $matchfield ),
+            OPERATOR => '=',
+            VALUE    => $value,
         );
 
         #If we're searching on target, join the base to ticket.id
         );
 
         #If we're searching on target, join the base to ticket.id
@@ -443,16 +444,16 @@ sub _DateLimit {
     my ( $sb, $field, $op, $value, @rest ) = @_;
 
     die "Invalid Date Op: $op"
     my ( $sb, $field, $op, $value, @rest ) = @_;
 
     die "Invalid Date Op: $op"
-      unless $op =~ /^(=|>|<|>=|<=)$/;
+        unless $op =~ /^(=|>|<|>=|<=)$/;
 
     my $meta = $FIELDS{$field};
     die "Incorrect Meta Data for $field"
 
     my $meta = $FIELDS{$field};
     die "Incorrect Meta Data for $field"
-      unless ( defined $meta->[1] );
+        unless ( defined $meta->[1] );
 
     use POSIX 'strftime';
 
     use POSIX 'strftime';
-    
-    my $date = RT::Date->new($sb->CurrentUser);
-    $date->Set(Format => 'unknown', Value => $value); 
+
+    my $date = RT::Date->new( $sb->CurrentUser );
+    $date->Set( Format => 'unknown', Value => $value );
     my $time = $date->Unix;
 
     if ( $op eq "=" ) {
     my $time = $date->Unix;
 
     if ( $op eq "=" ) {
@@ -461,8 +462,8 @@ sub _DateLimit {
         # particular single day.  in the database, we need to check for >
         # and < the edges of that day.
 
         # particular single day.  in the database, we need to check for >
         # and < the edges of that day.
 
-        my $daystart =
-          strftime( "%Y-%m-%d %H:%M", gmtime( $time - ( $time % 86400 ) ) );
+        my $daystart = strftime( "%Y-%m-%d %H:%M",
+            gmtime( $time - ( $time % 86400 ) ) );
         my $dayend = strftime( "%Y-%m-%d %H:%M",
             gmtime( $time + ( 86399 - $time % 86400 ) ) );
 
         my $dayend = strftime( "%Y-%m-%d %H:%M",
             gmtime( $time + ( 86399 - $time % 86400 ) ) );
 
@@ -541,8 +542,6 @@ sub _TransDateLimit {
 
     $sb->{_sql_transalias} = $sb->NewAlias('Transactions')
         unless defined $sb->{_sql_transalias};
 
     $sb->{_sql_transalias} = $sb->NewAlias('Transactions')
         unless defined $sb->{_sql_transalias};
-    $sb->{_sql_trattachalias} = $sb->NewAlias('Attachments')
-        unless defined $sb->{_sql_trattachalias};
 
     my $date = RT::Date->new( $sb->CurrentUser );
     $date->Set( Format => 'unknown', Value => $value );
 
     my $date = RT::Date->new( $sb->CurrentUser );
     $date->Set( Format => 'unknown', Value => $value );
@@ -569,11 +568,11 @@ sub _TransDateLimit {
             @rest
         );
         $sb->_SQLLimit(
             @rest
         );
         $sb->_SQLLimit(
-            ALIAS           => $sb->{_sql_transalias},
-            FIELD           => 'Created',
-            OPERATOR        => "<=",
-            VALUE           => $dayend,
-            CASESENSITIVE   => 0,
+            ALIAS         => $sb->{_sql_transalias},
+            FIELD         => 'Created',
+            OPERATOR      => "<=",
+            VALUE         => $dayend,
+            CASESENSITIVE => 0,
             @rest,
             ENTRYAGGREGATOR => 'AND',
         );
             @rest,
             ENTRYAGGREGATOR => 'AND',
         );
@@ -594,15 +593,6 @@ sub _TransDateLimit {
         );
     }
 
         );
     }
 
-    # Join Transactions To Attachments
-
-    $sb->_SQLJoin(
-        ALIAS1 => $sb->{_sql_trattachalias},
-        FIELD1 => 'TransactionId',
-        ALIAS2 => $sb->{_sql_transalias},
-        FIELD2 => 'id',
-    );
-
     # Join Transactions to Tickets
     $sb->_SQLJoin(
         ALIAS1 => 'main',
     # Join Transactions to Tickets
     $sb->_SQLJoin(
         ALIAS1 => 'main',
@@ -666,9 +656,9 @@ sub _TransLimit {
     my ( $self, $field, $op, $value, @rest ) = @_;
 
     $self->{_sql_transalias} = $self->NewAlias('Transactions')
     my ( $self, $field, $op, $value, @rest ) = @_;
 
     $self->{_sql_transalias} = $self->NewAlias('Transactions')
-      unless defined $self->{_sql_transalias};
+        unless defined $self->{_sql_transalias};
     $self->{_sql_trattachalias} = $self->NewAlias('Attachments')
     $self->{_sql_trattachalias} = $self->NewAlias('Attachments')
-      unless defined $self->{_sql_trattachalias};
+        unless defined $self->{_sql_trattachalias};
 
     $self->_OpenParen;
 
 
     $self->_OpenParen;
 
@@ -791,8 +781,6 @@ sub _WatcherLimit {
     my $value = shift;
     my %rest  = (@_);
 
     my $value = shift;
     my %rest  = (@_);
 
-    $self->_OpenParen;
-
     # Find out what sort of watcher we're looking for
     my $fieldname;
     if ( ref $field ) {
     # Find out what sort of watcher we're looking for
     my $fieldname;
     if ( ref $field ) {
@@ -800,84 +788,151 @@ sub _WatcherLimit {
     }
     else {
         $fieldname = $field;
     }
     else {
         $fieldname = $field;
+        $field = [ [ $field, $op, $value, %rest ] ];    # gross hack
     }
     my $meta = $FIELDS{$fieldname};
     my $type = ( defined $meta->[1] ? $meta->[1] : undef );
 
     }
     my $meta = $FIELDS{$fieldname};
     my $type = ( defined $meta->[1] ? $meta->[1] : undef );
 
-# We only want _one_ clause for all of requestors, cc, admincc
-# It's less flexible than what we used to do, but now it sort of actually works. (no huge cartesian products that hose the db)
-    my $groups = $self->{ 'watcherlimit_' . ('global') . "_groups" } ||=
-      $self->NewAlias('Groups');
-    my $groupmembers =
-      $self->{ 'watcherlimit_' . ('global') . "_groupmembers" } ||=
-      $self->NewAlias('CachedGroupMembers');
-    my $users = $self->{ 'watcherlimit_' . ('global') . "_users" } ||=
-      $self->NewAlias('Users');
-
-# Use regular joins instead of SQL joins since we don't want the joins inside ticketsql or we get a huge cartesian product
-    $self->SUPER::Limit(
-        ALIAS           => $groups,
-        FIELD           => 'Domain',
-        VALUE           => 'RT::Ticket-Role',
-        ENTRYAGGREGATOR => 'AND'
-    );
-    $self->Join(
-        ALIAS1 => $groups,
-        FIELD1 => 'Instance',
-        ALIAS2 => 'main',
-        FIELD2 => 'id'
-    );
-    $self->Join(
-        ALIAS1 => $groups,
-        FIELD1 => 'id',
-        ALIAS2 => $groupmembers,
-        FIELD2 => 'GroupId'
-    );
-    $self->Join(
-        ALIAS1 => $groupmembers,
-        FIELD1 => 'MemberId',
-        ALIAS2 => $users,
-        FIELD2 => 'id'
-    );
+    # Owner was ENUM field, so "Owner = 'xxx'" allowed user to
+    # search by id and Name at the same time, this is workaround
+    # to preserve backward compatibility
+    if ( $fieldname eq 'Owner' ) {
+        my $flag = 0;
+        for my $chunk ( splice @$field ) {
+            my ( $f, $op, $value, %rest ) = @$chunk;
+            if ( !$rest{SUBKEY} && $op =~ /^!?=$/ ) {
+                $self->_OpenParen unless $flag++;
+                my $o = RT::User->new( $self->CurrentUser );
+                $o->Load($value);
+                $value = $o->Id;
+                $self->_SQLLimit(
+                    FIELD    => 'Owner',
+                    OPERATOR => $op,
+                    VALUE    => $value,
+                    %rest,
+                );
+            }
+            else {
+                push @$field, $chunk;
+            }
+        }
+        $self->_CloseParen if $flag;
+        return unless @$field;
+    }
+
+    my $users = $self->_WatcherJoin($type);
 
     # If we're looking for multiple watchers of a given type,
     # TicketSQL will be handing it to us as an array of clauses in
     # $field
 
     # If we're looking for multiple watchers of a given type,
     # TicketSQL will be handing it to us as an array of clauses in
     # $field
-    if ( ref $field ) {    # gross hack
-        $self->_OpenParen;
-        for my $chunk (@$field) {
-            ( $field, $op, $value, %rest ) = @$chunk;
-            $self->_SQLLimit(
-                ALIAS         => $users,
-                FIELD         => $rest{SUBKEY} || 'EmailAddress',
-                VALUE         => $value,
-                OPERATOR      => $op,
-                CASESENSITIVE => 0,
-                %rest
-            );
-        }
-        $self->_CloseParen;
-    }
-    else {
+    $self->_OpenParen;
+    for my $chunk (@$field) {
+        ( $field, $op, $value, %rest ) = @$chunk;
+        $rest{SUBKEY} ||= 'EmailAddress';
+
+        my $re_negative_op = qr[!=|NOT LIKE];
+        $self->_OpenParen if $op =~ /$re_negative_op/;
+
         $self->_SQLLimit(
             ALIAS         => $users,
         $self->_SQLLimit(
             ALIAS         => $users,
-            FIELD         => $rest{SUBKEY} || 'EmailAddress',
+            FIELD         => $rest{SUBKEY},
             VALUE         => $value,
             OPERATOR      => $op,
             CASESENSITIVE => 0,
             %rest
         );
             VALUE         => $value,
             OPERATOR      => $op,
             CASESENSITIVE => 0,
             %rest
         );
+
+        if ( $op =~ /$re_negative_op/ ) {
+            $self->_SQLLimit(
+                ALIAS           => $users,
+                FIELD           => $rest{SUBKEY},
+                OPERATOR        => 'IS',
+                VALUE           => 'NULL',
+                ENTRYAGGREGATOR => 'OR',
+            );
+            $self->_CloseParen;
+        }
     }
     }
+    $self->_CloseParen;
+}
 
 
-    $self->_SQLLimit(
+=head2 _WatcherJoin
+
+Helper function which provides joins to a watchers table both for limits
+and for ordering.
+
+=cut
+
+sub _WatcherJoin {
+    my $self = shift;
+    my $type = shift;
+
+    # we cache joins chain per watcher type
+    # if we limit by requestor then we shouldn't join requestors again
+    # for sort or limit on other requestors
+    if ( $self->{'_watcher_join_users_alias'}{ $type || 'any' } ) {
+        return $self->{'_watcher_join_users_alias'}{ $type || 'any' };
+    }
+
+# we always have watcher groups for ticket
+# this join should be NORMAL
+# XXX: if we change this from Join to NewAlias+Limit
+# then Pg will complain because SB build wrong query.
+# Query looks like "FROM (Tickets LEFT JOIN CGM ON(Groups.id = CGM.GroupId)), Groups"
+# Pg doesn't like that fact that it doesn't know about Groups table yet when
+# join CGM table into Tickets. Problem is in Join method which doesn't use
+# ALIAS1 argument when build braces.
+    my $groups = $self->Join(
+        ALIAS1          => 'main',
+        FIELD1          => 'id',
+        TABLE2          => 'Groups',
+        FIELD2          => 'Instance',
+        ENTRYAGGREGATOR => 'AND'
+    );
+    $self->SUPER::Limit(
+        ALIAS           => $groups,
+        FIELD           => 'Domain',
+        VALUE           => 'RT::Ticket-Role',
+        ENTRYAGGREGATOR => 'AND'
+    );
+    $self->SUPER::Limit(
         ALIAS           => $groups,
         FIELD           => 'Type',
         VALUE           => $type,
         ENTRYAGGREGATOR => 'AND'
         ALIAS           => $groups,
         FIELD           => 'Type',
         VALUE           => $type,
         ENTRYAGGREGATOR => 'AND'
-      )
-      if ($type);
+        )
+        if ($type);
 
 
-    $self->_CloseParen;
+    my $groupmembers = $self->Join(
+        TYPE   => 'LEFT',
+        ALIAS1 => $groups,
+        FIELD1 => 'id',
+        TABLE2 => 'CachedGroupMembers',
+        FIELD2 => 'GroupId'
+    );
+
+    # XXX: work around, we must hide groups that
+    # are members of the role group we search in,
+    # otherwise them result in wrong NULLs in Users
+    # table and break ordering. Now, we know that
+    # RT doesn't allow to add groups as members of the
+    # ticket roles, so we just hide entries in CGM table
+    # with MemberId == GroupId from results
+    my $groupmembers = $self->SUPER::Limit(
+        LEFTJOIN   => $groupmembers,
+        FIELD      => 'GroupId',
+        OPERATOR   => '!=',
+        VALUE      => "$groupmembers.MemberId",
+        QUOTEVALUE => 0,
+    );
+    my $users = $self->Join(
+        TYPE   => 'LEFT',
+        ALIAS1 => $groupmembers,
+        FIELD1 => 'MemberId',
+        TABLE2 => 'Users',
+        FIELD2 => 'id'
+    );
+    return $self->{'_watcher_join_users_alias'}{ $type || 'any' } = $users;
 }
 
 =head2 _WatcherMembershipLimit
 }
 
 =head2 _WatcherMembershipLimit
@@ -1110,11 +1165,10 @@ sub _CustomFieldLimit {
     }
     $field = $1 if $field =~ /^{(.+)}$/;    # trim { }
 
     }
     $field = $1 if $field =~ /^{(.+)}$/;    # trim { }
 
-
-# If we're trying to find custom fields that don't match something, we
-# want tickets where the custom field has no value at all.  Note that
-# we explicitly don't include the "IS NULL" case, since we would
-# otherwise end up with a redundant clause.
+    # If we're trying to find custom fields that don't match something, we
+    # want tickets where the custom field has no value at all.  Note that
+    # we explicitly don't include the "IS NULL" case, since we would
+    # otherwise end up with a redundant clause.
 
     my $null_columns_ok;
     if ( ( $op =~ /^NOT LIKE$/i ) or ( $op eq '!=' ) ) {
 
     my $null_columns_ok;
     if ( ( $op =~ /^NOT LIKE$/i ) or ( $op eq '!=' ) ) {
@@ -1162,12 +1216,13 @@ sub _CustomFieldLimit {
                 VALUE           => $cfid,
                 ENTRYAGGREGATOR => 'AND'
             );
                 VALUE           => $cfid,
                 ENTRYAGGREGATOR => 'AND'
             );
-        } else {
+        }
+        else {
             my $cfalias = $self->Join(
             my $cfalias = $self->Join(
-                TYPE   => 'left',
-                EXPRESSION =>   "'$field'",
-                TABLE2 => 'CustomFields',
-                FIELD2 => 'Name',
+                TYPE       => 'left',
+                EXPRESSION => "'$field'",
+                TABLE2     => 'CustomFields',
+                FIELD2     => 'Name',
             );
 
             $TicketCFs = $self->{_sql_object_cf_alias}{$cfkey} = $self->Join(
             );
 
             $TicketCFs = $self->{_sql_object_cf_alias}{$cfkey} = $self->Join(
@@ -1178,10 +1233,10 @@ sub _CustomFieldLimit {
                 FIELD2 => 'CustomField',
             );
             $self->SUPER::Limit(
                 FIELD2 => 'CustomField',
             );
             $self->SUPER::Limit(
-                LEFTJOIN => $TicketCFs,
-                FIELD => 'ObjectId',
-                VALUE => 'main.id',
-                QUOTEVALUE => 0,
+                LEFTJOIN        => $TicketCFs,
+                FIELD           => 'ObjectId',
+                VALUE           => 'main.id',
+                QUOTEVALUE      => 0,
                 ENTRYAGGREGATOR => 'AND',
             );
         }
                 ENTRYAGGREGATOR => 'AND',
             );
         }
@@ -1193,11 +1248,12 @@ sub _CustomFieldLimit {
             ENTRYAGGREGATOR => 'AND'
         );
         $self->SUPER::Limit(
             ENTRYAGGREGATOR => 'AND'
         );
         $self->SUPER::Limit(
-            LEFTJOIN => $TicketCFs,
-            FIELD    => 'Disabled',
-            OPERATOR    => '=',
-            VALUE => '0',
-            ENTRYAGGREGATOR => 'AND');
+            LEFTJOIN        => $TicketCFs,
+            FIELD           => 'Disabled',
+            OPERATOR        => '=',
+            VALUE           => '0',
+            ENTRYAGGREGATOR => 'AND'
+        );
     }
 
     $self->_OpenParen if ($null_columns_ok);
     }
 
     $self->_OpenParen if ($null_columns_ok);
@@ -1223,8 +1279,6 @@ sub _CustomFieldLimit {
     }
     $self->_CloseParen if ($null_columns_ok);
 
     }
     $self->_CloseParen if ($null_columns_ok);
 
-
-
 }
 
 # End Helper Functions
 }
 
 # End Helper Functions
@@ -1251,13 +1305,15 @@ sub Limit {
         DESCRIPTION => undef,
         @_
     );
         DESCRIPTION => undef,
         @_
     );
-    $args{'DESCRIPTION'} = $self->loc( "[_1] [_2] [_3]",
-        $args{'FIELD'}, $args{'OPERATOR'}, $args{'VALUE'} )
-      if ( !defined $args{'DESCRIPTION'} );
+    $args{'DESCRIPTION'} = $self->loc(
+        "[_1] [_2] [_3]",  $args{'FIELD'},
+        $args{'OPERATOR'}, $args{'VALUE'}
+        )
+        if ( !defined $args{'DESCRIPTION'} );
 
     my $index = $self->_NextIndex;
 
 
     my $index = $self->_NextIndex;
 
- #make the TicketRestrictions hash the equivalent of whatever we just passed in;
+#make the TicketRestrictions hash the equivalent of whatever we just passed in;
 
     %{ $self->{'TicketRestrictions'}{$index} } = %args;
 
 
     %{ $self->{'TicketRestrictions'}{$index} } = %args;
 
@@ -1265,11 +1321,15 @@ sub Limit {
 
 # 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 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' ) {
+    if ( $args{'FIELD'} eq 'EffectiveId'
+        && ( !$args{'ALIAS'} || $args{'ALIAS'} eq 'main' ) )
+    {
         $self->{'looking_at_effective_id'} = 1;
     }
 
         $self->{'looking_at_effective_id'} = 1;
     }
 
-    if ( $args{'FIELD'} eq 'Type' ) {
+    if ( $args{'FIELD'} eq 'Type'
+        && ( !$args{'ALIAS'} || $args{'ALIAS'} eq 'main' ) )
+    {
         $self->{'looking_at_type'} = 1;
     }
 
         $self->{'looking_at_type'} = 1;
     }
 
@@ -1286,7 +1346,7 @@ Returns a frozen string suitable for handing back to ThawLimits.
 
 sub _FreezeThawKeys {
     'TicketRestrictions', 'restriction_index', 'looking_at_effective_id',
 
 sub _FreezeThawKeys {
     'TicketRestrictions', 'restriction_index', 'looking_at_effective_id',
-      'looking_at_type';
+        'looking_at_type';
 }
 
 # {{{ sub FreezeLimits
 }
 
 # {{{ sub FreezeLimits
@@ -1323,8 +1383,8 @@ sub ThawLimits {
     require MIME::Base64;
 
     #We don't need to die if the thaw fails.
     require MIME::Base64;
 
     #We don't need to die if the thaw fails.
-    @{$self}{ $self->_FreezeThawKeys } =
-      eval { @{ Storable::thaw( MIME::Base64::base64_decode($in) ) }; };
+    @{$self}{ $self->_FreezeThawKeys }
+        = eval { @{ Storable::thaw( MIME::Base64::base64_decode($in) ) }; };
 
     $RT::Logger->error($@) if $@;
 
 
     $RT::Logger->error($@) if $@;
 
@@ -1370,8 +1430,9 @@ sub LimitQueue {
         FIELD       => 'Queue',
         VALUE       => $args{VALUE},
         OPERATOR    => $args{'OPERATOR'},
         FIELD       => 'Queue',
         VALUE       => $args{VALUE},
         OPERATOR    => $args{'OPERATOR'},
-        DESCRIPTION =>
-          join( ' ', $self->loc('Queue'), $args{'OPERATOR'}, $args{VALUE}, ),
+        DESCRIPTION => join(
+            ' ', $self->loc('Queue'), $args{'OPERATOR'}, $args{VALUE},
+        ),
     );
 
 }
     );
 
 }
@@ -1457,8 +1518,8 @@ sub LimitType {
         FIELD       => 'Type',
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
         FIELD       => 'Type',
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
-        DESCRIPTION =>
-          join( ' ', $self->loc('Type'), $args{'OPERATOR'}, $args{'Limit'}, ),
+        DESCRIPTION => join( ' ',
+            $self->loc('Type'), $args{'OPERATOR'}, $args{'Limit'}, ),
     );
 }
 
     );
 }
 
@@ -1485,9 +1546,8 @@ sub LimitSubject {
         FIELD       => 'Subject',
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
         FIELD       => 'Subject',
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
-        DESCRIPTION => join(
-            ' ', $self->loc('Subject'), $args{'OPERATOR'}, $args{'VALUE'},
-        ),
+        DESCRIPTION => join( ' ',
+            $self->loc('Subject'), $args{'OPERATOR'}, $args{'VALUE'}, ),
     );
 }
 
     );
 }
 
@@ -1520,7 +1580,7 @@ sub LimitId {
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
         DESCRIPTION =>
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
         DESCRIPTION =>
-          join( ' ', $self->loc('Id'), $args{'OPERATOR'}, $args{'VALUE'}, ),
+            join( ' ', $self->loc('Id'), $args{'OPERATOR'}, $args{'VALUE'}, ),
     );
 }
 
     );
 }
 
@@ -1595,8 +1655,8 @@ sub LimitFinalPriority {
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
         DESCRIPTION => join( ' ',
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
         DESCRIPTION => join( ' ',
-            $self->loc('Final Priority'),
-            $args{'OPERATOR'}, $args{'VALUE'}, ),
+            $self->loc('Final Priority'), $args{'OPERATOR'},
+            $args{'VALUE'}, ),
     );
 }
 
     );
 }
 
@@ -1674,8 +1734,8 @@ sub LimitContent {
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
         DESCRIPTION => join( ' ',
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
         DESCRIPTION => join( ' ',
-            $self->loc('Ticket content'),
-            $args{'OPERATOR'}, $args{'VALUE'}, ),
+            $self->loc('Ticket content'), $args{'OPERATOR'},
+            $args{'VALUE'}, ),
     );
 }
 
     );
 }
 
@@ -1759,8 +1819,8 @@ sub LimitOwner {
         FIELD       => 'Owner',
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
         FIELD       => 'Owner',
         VALUE       => $args{'VALUE'},
         OPERATOR    => $args{'OPERATOR'},
-        DESCRIPTION =>
-          join( ' ', $self->loc('Owner'), $args{'OPERATOR'}, $owner->Name(), ),
+        DESCRIPTION => join( ' ',
+            $self->loc('Owner'), $args{'OPERATOR'}, $owner->Name(), ),
     );
 
 }
     );
 
 }
@@ -1819,10 +1879,9 @@ sub LimitWatcher {
 sub LimitRequestor {
     my $self = shift;
     my %args = (@_);
 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"
-    );
+    $RT::Logger->error( "Tickets->LimitRequestor is deprecated  at ("
+            . join( ":", caller )
+            . ")" );
     $self->LimitWatcher( TYPE => 'Requestor', @_ );
 
 }
     $self->LimitWatcher( TYPE => 'Requestor', @_ );
 
 }
@@ -1898,8 +1957,8 @@ sub LimitLinkedFrom {
 
     # translate RT2 From/To naming to RT3 TicketSQL naming
     my %fromToMap = qw(DependsOn DependentOn
 
     # translate RT2 From/To naming to RT3 TicketSQL naming
     my %fromToMap = qw(DependsOn DependentOn
-      MemberOf  HasMember
-      RefersTo  ReferredToBy);
+        MemberOf  HasMember
+        RefersTo  ReferredToBy);
 
     my $type = $args{'TYPE'};
     $type = $fromToMap{$type} if exists( $fromToMap{$type} );
 
     my $type = $args{'TYPE'};
     $type = $fromToMap{$type} if exists( $fromToMap{$type} );
@@ -2032,10 +2091,9 @@ sub LimitDate {
 
     #Set the description if we didn't get handed it above
     unless ( $args{'DESCRIPTION'} ) {
 
     #Set the description if we didn't get handed it above
     unless ( $args{'DESCRIPTION'} ) {
-        $args{'DESCRIPTION'} =
-            $args{'FIELD'} . " "
-          . $args{'OPERATOR'} . " "
-          . $args{'VALUE'} . " GMT";
+        $args{'DESCRIPTION'} = $args{'FIELD'} . " "
+            . $args{'OPERATOR'} . " "
+            . $args{'VALUE'} . " GMT";
     }
 
     $self->Limit(%args);
     }
 
     $self->Limit(%args);
@@ -2109,10 +2167,9 @@ sub LimitTransactionDate {
 
     #Set the description if we didn't get handed it above
     unless ( $args{'DESCRIPTION'} ) {
 
     #Set the description if we didn't get handed it above
     unless ( $args{'DESCRIPTION'} ) {
-        $args{'DESCRIPTION'} =
-            $args{'FIELD'} . " "
-          . $args{'OPERATOR'} . " "
-          . $args{'VALUE'} . " GMT";
+        $args{'DESCRIPTION'} = $args{'FIELD'} . " "
+            . $args{'OPERATOR'} . " "
+            . $args{'VALUE'} . " GMT";
     }
 
     $self->Limit(%args);
     }
 
     $self->Limit(%args);
@@ -2168,12 +2225,12 @@ sub LimitCustomField {
 
     #If we are looking to compare with a null value.
     if ( $args{'OPERATOR'} =~ /^is$/i ) {
 
     #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 );
+        $args{'DESCRIPTION'}
+            ||= $self->loc( "Custom field [_1] has no value.", $CF->Name );
     }
     elsif ( $args{'OPERATOR'} =~ /^is not$/i ) {
     }
     elsif ( $args{'OPERATOR'} =~ /^is not$/i ) {
-        $args{'DESCRIPTION'} ||=
-          $self->loc( "Custom field [_1] has a value.", $CF->Name );
+        $args{'DESCRIPTION'}
+            ||= $self->loc( "Custom field [_1] has a value.", $CF->Name );
     }
 
     # if we're not looking to compare with a null value
     }
 
     # if we're not looking to compare with a null value
@@ -2185,22 +2242,22 @@ sub LimitCustomField {
     my $q = "";
     if ( $CF->Queue ) {
         my $qo = new RT::Queue( $self->CurrentUser );
     my $q = "";
     if ( $CF->Queue ) {
         my $qo = new RT::Queue( $self->CurrentUser );
-        $qo->load( $CF->Queue );
+        $qo->Load( $CF->Queue );
         $q = $qo->Name;
     }
 
     my @rest;
     @rest = ( ENTRYAGGREGATOR => 'AND' )
         $q = $qo->Name;
     }
 
     my @rest;
     @rest = ( ENTRYAGGREGATOR => 'AND' )
-      if ( $CF->Type eq 'SelectMultiple' );
+        if ( $CF->Type eq 'SelectMultiple' );
 
     $self->Limit(
         VALUE => $args{VALUE},
         FIELD => "CF."
 
     $self->Limit(
         VALUE => $args{VALUE},
         FIELD => "CF."
-          . (
+            . (
               $q
             ? $q . ".{" . $CF->Name . "}"
             : $CF->Name
               $q
             ? $q . ".{" . $CF->Name . "}"
             : $CF->Name
-          ),
+            ),
         OPERATOR    => $args{OPERATOR},
         CUSTOMFIELD => 1,
         @rest,
         OPERATOR    => $args{OPERATOR},
         CUSTOMFIELD => 1,
         @rest,
@@ -2289,7 +2346,8 @@ sub ItemsArrayRef {
             push( @{ $self->{'items_array'} }, $item );
         }
         $self->GotoItem($placeholder);
             push( @{ $self->{'items_array'} }, $item );
         }
         $self->GotoItem($placeholder);
-        $self->{'items_array'} = $self->ItemsOrderBy( $self->{'items_array'} );
+        $self->{'items_array'}
+            = $self->ItemsOrderBy( $self->{'items_array'} );
     }
     return ( $self->{'items_array'} );
 }
     }
     return ( $self->{'items_array'} );
 }
@@ -2305,18 +2363,21 @@ sub Next {
     my $Ticket = $self->SUPER::Next();
     if ( ( defined($Ticket) ) and ( ref($Ticket) ) ) {
 
     my $Ticket = $self->SUPER::Next();
     if ( ( defined($Ticket) ) and ( ref($Ticket) ) ) {
 
-           if ( $Ticket->__Value('Status') eq 'deleted' &&
-                       !$self->{'allow_deleted_search'} ) {
-               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 ( $Ticket->__Value('Status') eq 'deleted'
+            && !$self->{'allow_deleted_search'} )
+        {
+            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 ( $Ticket->__Value('Status') eq 'deleted' ) {
             return ( $self->Next() );
 
         if ( $Ticket->__Value('Status') eq 'deleted' ) {
             return ( $self->Next() );
@@ -2399,10 +2460,10 @@ sub RestrictionValues {
     my $self  = shift;
     my $field = shift;
     map $self->{'TicketRestrictions'}{$_}{'VALUE'}, grep {
     my $self  = shift;
     my $field = shift;
     map $self->{'TicketRestrictions'}{$_}{'VALUE'}, grep {
-             $self->{'TicketRestrictions'}{$_}{'FIELD'}    eq $field
-          && $self->{'TicketRestrictions'}{$_}{'OPERATOR'} eq "="
-      }
-      keys %{ $self->{'TicketRestrictions'} };
+               $self->{'TicketRestrictions'}{$_}{'FIELD'}    eq $field
+            && $self->{'TicketRestrictions'}{$_}{'OPERATOR'} eq "="
+        }
+        keys %{ $self->{'TicketRestrictions'} };
 }
 
 # }}}
 }
 
 # }}}
@@ -2461,9 +2522,9 @@ sub _RestrictionsToClauses {
         #use Data::Dumper;
         #print Dumper($restriction),"\n";
 
         #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.
+   # 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.
 
         # So, we want to group things into Subclauses, convert them to
         # SQL, and then join them with the appropriate DefaultEA.
@@ -2486,14 +2547,15 @@ sub _RestrictionsToClauses {
         }
 
         die "I don't know about $field yet"
         }
 
         die "I don't know about $field yet"
-          unless ( exists $FIELDS{$realfield} or $restriction->{CUSTOMFIELD} );
+            unless ( exists $FIELDS{$realfield}
+            or $restriction->{CUSTOMFIELD} );
 
         my $type = $FIELDS{$realfield}->[0];
         my $op   = $restriction->{'OPERATOR'};
 
         my $value = (
 
         my $type = $FIELDS{$realfield}->[0];
         my $op   = $restriction->{'OPERATOR'};
 
         my $value = (
-            grep  { defined }
-              map { $restriction->{$_} } qw(VALUE TICKET BASE TARGET)
+            grep    {defined}
+                map { $restriction->{$_} } qw(VALUE TICKET BASE TARGET)
         )[0];
 
         # this performs the moral equivalent of defined or/dor/C<//>,
         )[0];
 
         # this performs the moral equivalent of defined or/dor/C<//>,
@@ -2511,10 +2573,12 @@ sub _RestrictionsToClauses {
         # defined $restriction->{'TARGET'} ?
         # $restriction->{TARGET} )
 
         # defined $restriction->{'TARGET'} ?
         # $restriction->{TARGET} )
 
-        my $ea = $restriction->{ENTRYAGGREGATOR} || $DefaultEA{$type} || "AND";
+        my $ea = $restriction->{ENTRYAGGREGATOR}
+            || $DefaultEA{$type}
+            || "AND";
         if ( ref $ea ) {
             die "Invalid operator $op for $field ($type)"
         if ( ref $ea ) {
             die "Invalid operator $op for $field ($type)"
-              unless exists $ea->{$op};
+                unless exists $ea->{$op};
             $ea = $ea->{$op};
         }
 
             $ea = $ea->{$op};
         }
 
@@ -2574,7 +2638,7 @@ sub _ProcessRestrictions {
         }
         else {
             $sql = $self->ClausesToSQL($clauseRef);
         }
         else {
             $sql = $self->ClausesToSQL($clauseRef);
-            $self->FromSQL($sql);
+            $self->FromSQL($sql) if $sql;
         }
     }
 
         }
     }
 
@@ -2602,7 +2666,7 @@ sub _BuildItemMap {
             $self->{'item_map'}->{$id}->{'defined'} = 1;
             $self->{'item_map'}->{$id}->{prev}      = $prev;
             $self->{'item_map'}->{$id}->{next}      = $items->[0]->EffectiveId
             $self->{'item_map'}->{$id}->{'defined'} = 1;
             $self->{'item_map'}->{$id}->{prev}      = $prev;
             $self->{'item_map'}->{$id}->{next}      = $items->[0]->EffectiveId
-              if ( $items->[0] );
+                if ( $items->[0] );
             $prev = $id;
         }
         $self->{'item_map'}->{'last'} = $prev;
             $prev = $id;
         }
         $self->{'item_map'}->{'last'} = $prev;
@@ -2623,13 +2687,14 @@ $ItemMap->{$id}->{next} = the ticket id found after $id
 sub ItemMap {
     my $self = shift;
     $self->_BuildItemMap()
 sub ItemMap {
     my $self = shift;
     $self->_BuildItemMap()
-      unless ( $self->{'items_array'} and $self->{'item_map'} );
+        unless ( $self->{'items_array'} and $self->{'item_map'} );
     return ( $self->{'item_map'} );
 }
 
 =cut
 
 
     return ( $self->{'item_map'} );
 }
 
 =cut
 
 
+
 }
 
 
 }
 
 
@@ -2650,7 +2715,6 @@ sub PrepForSerialization {
     $self->RedoSearch();
 }
 
     $self->RedoSearch();
 }
 
-
 =head1 FLAGS
 
 RT::Tickets supports several flags which alter search behavior:
 =head1 FLAGS
 
 RT::Tickets supports several flags which alter search behavior:
@@ -2667,6 +2731,15 @@ BUG: There should be an API for this
 
 =cut
 
 
 =cut
 
+=begin testing
+
+# We assume that we've got some tickets hanging around from before.
+ok( my $unlimittickets = RT::Tickets->new( $RT::SystemUser ) );
+ok( $unlimittickets->UnLimit );
+ok( $unlimittickets->Count > 0, "UnLimited tickets object should return tickets" );
+
+=end testing
+
 1;
 
 
 1;
 
 
index 6773917..525f252 100644 (file)
@@ -85,11 +85,13 @@ sub _InitSQL {
 sub _SQLLimit {
   my $self = shift;
     my %args = (@_);
 sub _SQLLimit {
   my $self = shift;
     my %args = (@_);
-    if ($args{'FIELD'} eq 'EffectiveId') {
+    if ($args{'FIELD'} eq 'EffectiveId' &&
+         (!$args{'ALIAS'} || $args{'ALIAS'} eq 'main' ) ) {
         $self->{'looking_at_effective_id'} = 1;
     }      
     
         $self->{'looking_at_effective_id'} = 1;
     }      
     
-    if ($args{'FIELD'} eq 'Type') {
+    if ($args{'FIELD'} eq 'Type' &&
+         (!$args{'ALIAS'} || $args{'ALIAS'} eq 'main' ) ) {
         $self->{'looking_at_type'} = 1;
     }
 
         $self->{'looking_at_type'} = 1;
     }
 
@@ -288,7 +290,7 @@ sub _parser {
       #    print "$ea Key=[$key] op=[$op]  val=[$val]\n";
 
 
       #    print "$ea Key=[$key] op=[$op]  val=[$val]\n";
 
 
-   my $subkey;
+   my $subkey = '';
    if ($key =~ /^(.+?)\.(.+)$/) {
      $key = $1;
      $subkey = $2;
    if ($key =~ /^(.+?)\.(.+)$/) {
      $key = $1;
      $subkey = $2;
@@ -377,11 +379,11 @@ sub ClausesToSQL {
     my $first = 1;
 
     # Build SQL from the data hash
     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] . "' ";
+    for my $data ( @{ $clauses->{$f} } ) {
+      $sql .= $data->[0] unless $first; $first=0; # ENTRYAGGREGATOR
+      $sql .= " '". $data->[2] . "' ";            # FIELD
+      $sql .= $data->[3] . " ";                   # OPERATOR
+      $sql .= "'". $data->[4] . "' ";             # VALUE
     }
 
     push @sql, " ( " . $sql . " ) ";
     }
 
     push @sql, " ( " . $sql . " ) ";
index b179084..f6647c6 100644 (file)
@@ -365,7 +365,7 @@ sub ContentObj {
         # which has some content.
 
         else {
         # which has some content.
 
         else {
-            my $all_parts = $Attachment->Children();
+            my $all_parts = $self->Attachments;
             while ( my $part = $all_parts->Next ) {
                 if (( $part->ContentType() =~ '^(text/plain$|message/)' ) &&  $part->Content()  ) {
                     return ($part);
             while ( my $part = $all_parts->Next ) {
                 if (( $part->ContentType() =~ '^(text/plain$|message/)' ) &&  $part->Content()  ) {
                     return ($part);
index fe51575..3ea8f12 100644 (file)
@@ -100,7 +100,7 @@ sub Limit {
        my %args = (@_);
 
        if ($args{'FIELD'} eq 'Ticket') {
        my %args = (@_);
 
        if ($args{'FIELD'} eq 'Ticket') {
-               Carp::cluck("Historical code calling RT::Transactions::Limit with a 'Ticket'.  This deprecated API will be deleted in 3.6");
+               Carp::cluck("Historical code calling RT::Transactions::Limit with a 'Ticket' at (". join(":",caller).").  This deprecated API will be deleted in 3.6");
                $self->SUPER::Limit(FIELD => 'ObjectType', OPERATOR => '=', VALUE =>'RT::Ticket');
                $args{'FIELD'} = 'ObjectId';
                $self->SUPER::Limit(%args);
                $self->SUPER::Limit(FIELD => 'ObjectType', OPERATOR => '=', VALUE =>'RT::Ticket');
                $args{'FIELD'} = 'ObjectId';
                $self->SUPER::Limit(%args);
index 4bb9f8f..19f1bea 100644 (file)
@@ -88,10 +88,15 @@ sub _Init {
 
     $self->{'princalias'} = $self->NewAlias('Principals');
 
 
     $self->{'princalias'} = $self->NewAlias('Principals');
 
+    # XXX: should be generalized
     $self->Join( ALIAS1 => 'main',
                  FIELD1 => 'id',
                  ALIAS2 => $self->{'princalias'},
                  FIELD2 => 'id' );
     $self->Join( ALIAS1 => 'main',
                  FIELD1 => 'id',
                  ALIAS2 => $self->{'princalias'},
                  FIELD2 => 'id' );
+    $self->Limit( ALIAS => $self->{'princalias'},
+                  FIELD => 'PrincipalType',
+                  VALUE => 'User',
+                );
 
     return (@result);
 }
 
     return (@result);
 }
@@ -102,9 +107,9 @@ sub _Init {
 
 Returns the string that represents this Users object's primary "Principals" alias.
 
 
 Returns the string that represents this Users object's primary "Principals" alias.
 
-
 =cut
 
 =cut
 
+# XXX: should be generalized
 sub PrincipalsAlias {
     my $self = shift;
     return($self->{'princalias'});
 sub PrincipalsAlias {
     my $self = shift;
     return($self->{'princalias'});
@@ -141,10 +146,11 @@ Only find items that haven\'t been disabled
 
 =cut
 
 
 =cut
 
+# XXX: should be generalized
 sub LimitToEnabled {
     my $self = shift;
 
 sub LimitToEnabled {
     my $self = shift;
 
-    $self->Limit( ALIAS    => $self->{'princalias'},
+    $self->Limit( ALIAS    => $self->PrincipalsAlias,
                   FIELD    => 'Disabled',
                   VALUE    => '0',
                   OPERATOR => '=' );
                   FIELD    => 'Disabled',
                   VALUE    => '0',
                   OPERATOR => '=' );
@@ -187,7 +193,7 @@ sub MemberOfGroup {
     my $groupalias = $self->NewAlias('CachedGroupMembers');
 
     # Join the principal to the groups table
     my $groupalias = $self->NewAlias('CachedGroupMembers');
 
     # Join the principal to the groups table
-    $self->Join( ALIAS1 => $self->{'princalias'},
+    $self->Join( ALIAS1 => $self->PrincipalsAlias,
                  FIELD1 => 'id',
                  ALIAS2 => $groupalias,
                  FIELD2 => 'MemberId' );
                  FIELD1 => 'id',
                  ALIAS2 => $groupalias,
                  FIELD2 => 'MemberId' );
@@ -288,69 +294,75 @@ is($users->Count, 1, "RTxUserRight found for RTxObj2");
 
 =end testing
 
 
 =end testing
 
-
 find all users who the right Right for this group, either individually
 or as members of groups
 
 find all users who the right Right for this group, either individually
 or as members of groups
 
-
 If passed a queue object, with no id, it will find users who have that right for _any_ queue
 
 If passed a queue object, with no id, it will find users who have that right for _any_ queue
 
-
-
 =cut
 
 =cut
 
-sub WhoHaveRight {
+# XXX: should be generalized
+sub _JoinGroupMembers
+{
     my $self = shift;
     my %args = (
     my $self = shift;
     my %args = (
-        Right                  => undef,
-        Object                 => undef,
-        IncludeSystemRights    => undef,
-        IncludeSuperusers      => undef,
         IncludeSubgroupMembers => 1,
         IncludeSubgroupMembers => 1,
-        EquivObjects           => [ ],
         @_
     );
 
         @_
     );
 
-    if ( defined $args{'ObjectType'} || defined $args{'ObjectId'} ) {
-        $RT::Logger->crit( "$self WhoHaveRight called with the Obsolete ObjectId/ObjectType API");
-        return (undef);
-    }
-    
-
-    # Find only members of groups that have the right.
-
-    my $acl       = $self->NewAlias('ACL');
-    my $groups    = $self->NewAlias('Groups');
-    my $userprinc = $self->{'princalias'};
-
-# 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
-    my $cgm;
+    my $principals = $self->PrincipalsAlias;
 
 
+    # 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
+    my $group_members;
     if ( $args{'IncludeSubgroupMembers'} ) {
     if ( $args{'IncludeSubgroupMembers'} ) {
-        $cgm = $self->NewAlias('CachedGroupMembers');
+        $group_members = $self->NewAlias('CachedGroupMembers');
     }
     else {
     }
     else {
-        $cgm = $self->NewAlias('GroupMembers');
+        $group_members = $self->NewAlias('GroupMembers');
     }
 
     }
 
-#Tie the users we're returning ($userprinc) to the groups that have rights granted to them ($groupprinc)
     $self->Join(
     $self->Join(
-        ALIAS1 => $cgm,
+        ALIAS1 => $group_members,
         FIELD1 => 'MemberId',
         FIELD1 => 'MemberId',
-        ALIAS2 => $userprinc,
+        ALIAS2 => $principals,
         FIELD2 => 'id'
     );
 
         FIELD2 => 'id'
     );
 
+    return $group_members;
+}
+
+# XXX: should be generalized
+sub _JoinGroups
+{
+    my $self = shift;
+    my %args = (@_);
+
+    my $group_members = $self->_JoinGroupMembers( %args );
+    my $groups = $self->NewAlias('Groups');
     $self->Join(
         ALIAS1 => $groups,
         FIELD1 => 'id',
     $self->Join(
         ALIAS1 => $groups,
         FIELD1 => 'id',
-        ALIAS2 => $cgm,
+        ALIAS2 => $group_members,
         FIELD2 => 'GroupId'
     );
 
         FIELD2 => 'GroupId'
     );
 
-# {{{ Find only rows where the right granted is the one we're looking up or _possibly_ superuser
+    return $groups;
+}
+
+# XXX: should be generalized
+sub _JoinACL
+{
+    my $self = shift;
+    my %args = (
+        Right                  => undef,
+        IncludeSuperusers      => undef,
+        @_,
+    );
+
+    my $acl = $self->NewAlias('ACL');
     $self->Limit(
         ALIAS    => $acl,
         FIELD    => 'RightName',
     $self->Limit(
         ALIAS    => $acl,
         FIELD    => 'RightName',
@@ -358,7 +370,6 @@ sub WhoHaveRight {
         VALUE => $args{Right} || 'NULL',
         ENTRYAGGREGATOR => 'OR'
     );
         VALUE => $args{Right} || 'NULL',
         ENTRYAGGREGATOR => 'OR'
     );
-
     if ( $args{'IncludeSuperusers'} and $args{'Right'} ) {
         $self->Limit(
             ALIAS           => $acl,
     if ( $args{'IncludeSuperusers'} and $args{'Right'} ) {
         $self->Limit(
             ALIAS           => $acl,
@@ -368,97 +379,240 @@ sub WhoHaveRight {
             ENTRYAGGREGATOR => 'OR'
         );
     }
             ENTRYAGGREGATOR => 'OR'
         );
     }
+    return $acl;
+}
 
 
-    # }}}
+# XXX: should be generalized
+sub _GetEquivObjects
+{
+    my $self = shift;
+    my %args = (
+        Object                 => undef,
+        IncludeSystemRights    => undef,
+        EquivObjects           => [ ],
+        @_
+    );
+    return () unless $args{'Object'};
+
+    my @objects = ($args{'Object'});
+    if ( UNIVERSAL::isa( $args{'Object'}, 'RT::Ticket' ) ) {
+        # 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.
+
+        # XXX: This should be abstracted into object itself
+        if( $args{'Object'}->id ) {
+            push @objects, $args{'Object'}->QueueObj;
+        } else {
+            push @objects, 'RT::Queue';
+        }
+    }
 
 
-    my ( $or_check_ticket_roles, $or_check_roles );
-    my $which_object = "$acl.ObjectType = 'RT::System'";
+    if( $args{'IncludeSystemRights'} ) {
+        push @objects, 'RT::System';
+    }
+    push @objects, @{ $args{'EquivObjects'} };
+    return grep $_, @objects;
+}
 
 
-    if ( defined $args{'Object'} ) {
-        if ( ref( $args{'Object'} ) eq 'RT::Ticket' ) {
-            $or_check_ticket_roles = " OR ( $groups.Domain = 'RT::Ticket-Role' AND $groups.Instance = " . $args{'Object'}->Id . ") ";
+# XXX: should be generalized
+sub WhoHaveRight {
+    my $self = shift;
+    my %args = (
+        Right                  => undef,
+        Object                 => undef,
+        IncludeSystemRights    => undef,
+        IncludeSuperusers      => undef,
+        IncludeSubgroupMembers => 1,
+        EquivObjects           => [ ],
+        @_
+    );
 
 
-# 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;
-        }
+    if ( defined $args{'ObjectType'} || defined $args{'ObjectId'} ) {
+        $RT::Logger->crit( "WhoHaveRight called with the Obsolete ObjectId/ObjectType API");
+        return (undef);
+    }
 
 
-        # TODO XXX This really wants some refactoring
-        if ( ref( $args{'Object'} ) eq 'RT::Queue' ) {
-            $or_check_roles = " OR ( ( ($groups.Domain = 'RT::Queue-Role' ";
-            $or_check_roles .= "AND $groups.Instance = " . $args{'Object'}->id if ( $args{'Object'}->id );
-            $or_check_roles .= ") $or_check_ticket_roles ) " . " AND $groups.Type = $acl.PrincipalType) ";
-        }
-        if ( $args{'IncludeSystemRights'} ) {
-            $which_object .= ' OR ';
-        }
-        else {
-            $which_object = '';
-        }
-        foreach my $obj ( @{ $args{'EquivObjects'} } ) {
-            $which_object .= "($acl.ObjectType = '" . ref( $obj ) . "' AND $acl.ObjectId = " . $obj->id . ") OR ";
-        }
-        $which_object .= " ($acl.ObjectType = '" . ref( $args{'Object'} ) . "'";
-        if ( $args{'Object'}->id ) {
-            $which_object .= " AND $acl.ObjectId = " . $args{'Object'}->id;
+    my $from_role = $self->Clone;
+    $from_role->WhoHaveRoleRight( %args );
+
+    my $from_group = $self->Clone;
+    $from_group->WhoHaveGroupRight( %args );
+
+    #XXX: DIRTY HACK
+    use DBIx::SearchBuilder::Union;
+    my $union = new DBIx::SearchBuilder::Union;
+    $union->add($from_role);
+    $union->add($from_group);
+    %$self = %$union;
+    bless $self, ref($union);
+
+    return;
+}
+# }}}
+
+# XXX: should be generalized
+sub WhoHaveRoleRight
+{
+    my $self = shift;
+    my %args = (
+        Right                  => undef,
+        Object                 => undef,
+        IncludeSystemRights    => undef,
+        IncludeSuperusers      => undef,
+        IncludeSubgroupMembers => 1,
+        EquivObjects           => [ ],
+        @_
+    );
+
+    my $groups = $self->_JoinGroups( %args );
+    my $acl = $self->_JoinACL( %args );
+
+    my ($check_roles, $check_objects) = ('','');
+    
+    my @objects = $self->_GetEquivObjects( %args );
+    if ( @objects ) {
+        my @role_clauses;
+        my @object_clauses;
+        foreach my $obj ( @objects ) {
+            my $type = ref($obj)? ref($obj): $obj;
+            my $id;
+            $id = $obj->id if ref($obj) && UNIVERSAL::can($obj, 'id') && $obj->id;
+
+            my $role_clause = "$groups.Domain = '$type-Role'";
+            # XXX: Groups.Instance is VARCHAR in DB, we should quote value
+            # if we want mysql 4.0 use indexes here. we MUST convert that
+            # field to integer and drop this quotes.
+            $role_clause   .= " AND $groups.Instance = '$id'" if $id;
+            push @role_clauses, "($role_clause)";
+
+            my $object_clause = "$acl.ObjectType = '$type'";
+            $object_clause   .= " AND $acl.ObjectId = $id" if $id;
+            push @object_clauses, "($object_clause)";
         }
 
         }
 
-        $which_object .=  ") ";
+        $check_roles .= join ' OR ', @role_clauses;
+        $check_objects = join ' OR ', @object_clauses;
+    } else {
+        if( !$args{'IncludeSystemRights'} ) {
+            $check_objects = "($acl.ObjectType != 'RT::System')";
+        }
     }
     }
-    $self->_AddSubClause( "WhichObject", "($which_object)" );
-    $self->_AddSubClause(
-        "WhichGroup",
-            qq{ ( (    $acl.PrincipalId = $groups.id AND $acl.PrincipalType = 'Group' 
-                AND (   $groups.Domain = 'SystemInternal' OR $groups.Domain = 'UserDefined' OR $groups.Domain = 'ACLEquivalence')) 
-                $or_check_roles) }
-    );
-    # only include regular RT users
-    $self->LimitToEnabled;
+
+    $self->_AddSubClause( "WhichObject", "($check_objects)" );
+    $self->_AddSubClause( "WhichRole", "($check_roles)" );
+
+    $self->Limit( ALIAS => $acl,
+                  FIELD => 'PrincipalType',
+                  VALUE => "$groups.Type",
+                  QUOTEVALUE => 0,
+                );
 
     # no system user
 
     # no system user
-    $self->Limit( ALIAS => $userprinc, FIELD => 'id', OPERATOR => '!=', VALUE => $RT::SystemUser->id);
+    $self->Limit( ALIAS => $self->PrincipalsAlias,
+                  FIELD => 'id',
+                  OPERATOR => '!=',
+                  VALUE => $RT::SystemUser->id
+                );
+    return;
+}
 
 
+# XXX: should be generalized
+sub _JoinGroupMembersForGroupRights
+{
+    my $self = shift;
+    my %args = (@_);
+    my $group_members = $self->_JoinGroupMembers( %args );
+    $self->Limit( ALIAS => $args{'ACLAlias'},
+                  FIELD => 'PrincipalId',
+                  VALUE => "$group_members.GroupId",
+                  QUOTEVALUE => 0,
+                );
+}
+
+# XXX: should be generalized
+sub WhoHaveGroupRight
+{
+    my $self = shift;
+    my %args = (
+        Right                  => undef,
+        Object                 => undef,
+        IncludeSystemRights    => undef,
+        IncludeSuperusers      => undef,
+        IncludeSubgroupMembers => 1,
+        EquivObjects           => [ ],
+        @_
+    );
+
+    # Find only rows where the right granted is
+    # the one we're looking up or _possibly_ superuser
+    my $acl = $self->_JoinACL( %args );
+
+    my ($check_objects) = ('');
+    my @objects = $self->_GetEquivObjects( %args );
+
+    if ( @objects ) {
+        my @object_clauses;
+        foreach my $obj ( @objects ) {
+            my $type = ref($obj)? ref($obj): $obj;
+            my $id;
+            $id = $obj->id if ref($obj) && UNIVERSAL::can($obj, 'id') && $obj->id;
+
+            my $object_clause = "$acl.ObjectType = '$type'";
+            $object_clause   .= " AND $acl.ObjectId   = $id" if $id;
+            push @object_clauses, "($object_clause)";
+        }
+
+        $check_objects = join ' OR ', @object_clauses;
+    } else {
+        if( !$args{'IncludeSystemRights'} ) {
+            $check_objects = "($acl.ObjectType != 'RT::System')";
+        }
+    }
+    $self->_AddSubClause( "WhichObject", "($check_objects)" );
+    
+    $self->_JoinGroupMembersForGroupRights( %args, ACLAlias => $acl );
+    # Find only members of groups that have the right.
+    $self->Limit( ALIAS => $acl,
+                  FIELD => 'PrincipalType',
+                  VALUE => 'Group',
+                );
+    
+    # no system user
+    $self->Limit( ALIAS => $self->PrincipalsAlias,
+                  FIELD => 'id',
+                  OPERATOR => '!=',
+                  VALUE => $RT::SystemUser->id
+                );
+    return;
 }
 }
-# }}}
 
 
-# {{{ WhoBelongToGroups 
+# {{{ WhoBelongToGroups
 
 =head2 WhoBelongToGroups { Groups => ARRAYREF, IncludeSubgroupMembers => 1 }
 
 =cut
 
 
 =head2 WhoBelongToGroups { Groups => ARRAYREF, IncludeSubgroupMembers => 1 }
 
 =cut
 
+# XXX: should be generalized
 sub WhoBelongToGroups {
     my $self = shift;
     my %args = ( Groups                 => undef,
                  IncludeSubgroupMembers => 1,
                  @_ );
 
 sub WhoBelongToGroups {
     my $self = shift;
     my %args = ( Groups                 => undef,
                  IncludeSubgroupMembers => 1,
                  @_ );
 
-    # Unprivileged users can't be granted real system rights. 
+    # Unprivileged users can't be granted real system rights.
     # is this really the right thing to be saying?
     $self->LimitToPrivileged();
 
     # 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 $group_members = $self->_JoinGroupMembers( %args );
 
     foreach my $groupid (@{$args{'Groups'}}) {
 
     foreach my $groupid (@{$args{'Groups'}}) {
-        $self->Limit(ALIAS => $cgm, FIELD => 'GroupId', VALUE => $groupid, QUOTEVALUE => 0, ENTRYAGGREGATOR=> 'OR')
-
+        $self->Limit( ALIAS           => $group_members,
+                      FIELD           => 'GroupId',
+                      VALUE           => $groupid,
+                      QUOTEVALUE      => 0,
+                      ENTRYAGGREGATOR => 'OR',
+                    );
     }
 }
 # }}}
     }
 }
 # }}}
index 8486aea..1bdc38a 100644 (file)
@@ -62,7 +62,7 @@ use RT::I18N;
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url http://this.test.for.non-connection.is.expected.to.generate.an.error"), "Opened the mailgate - The error below is expected - $@");
 print MAIL <<EOF;
 From: root\@localhost
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url http://this.test.for.non-connection.is.expected.to.generate.an.error"), "Opened the mailgate - The error below is expected - $@");
 print MAIL <<EOF;
 From: root\@localhost
-To: rt\@example.com
+To: rt\@$RT::rtname
 Subject: This is a test of new ticket creation
 
 Foob!
 Subject: This is a test of new ticket creation
 
 Foob!
@@ -78,7 +78,7 @@ is ( $? >> 8, 75, "The error message above is expected The mail gateway exited w
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 From: root\@localhost
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 From: root\@localhost
-To: rt\@example.com
+To: rt\@$RT::rtname
 Subject: This is a test of new ticket creation
 
 Blah!
 Subject: This is a test of new ticket creation
 
 Blah!
@@ -105,8 +105,8 @@ ok ($tick->Subject eq 'This is a test of new ticket creation', "Created the tick
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
-From: doesnotexist\@example.com
-To: rt\@example.com
+From: doesnotexist\@$RT::rtname
+To: rt\@$RT::rtname
 Subject: This is a test of new ticket creation as an unknown user
 
 Blah!
 Subject: This is a test of new ticket creation as an unknown user
 
 Blah!
@@ -123,7 +123,7 @@ $tick = $tickets->First();
 ok ($tick->Id, "found ticket ".$tick->Id);
 ok ($tick->Subject ne 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account");
 my $u = RT::User->new($RT::SystemUser);
 ok ($tick->Id, "found ticket ".$tick->Id);
 ok ($tick->Subject ne 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account");
 my $u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist@example.com');
+$u->Load("doesnotexist\@$RT::rtname");
 ok( $u->Id == 0, " user does not exist and was not created by failed ticket submission");
 
 
 ok( $u->Id == 0, " user does not exist and was not created by failed ticket submission");
 
 
@@ -141,8 +141,8 @@ ok ($val, "Granted everybody the right to create tickets - $msg");
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
-From: doesnotexist\@example.com
-To: rt\@example.com
+From: doesnotexist\@$RT::rtname
+To: rt\@$RT::rtname
 Subject: This is a test of new ticket creation as an unknown user
 
 Blah!
 Subject: This is a test of new ticket creation as an unknown user
 
 Blah!
@@ -160,7 +160,7 @@ $tick = $tickets->First();
 ok ($tick->Id, "found ticket ".$tick->Id);
 ok ($tick->Subject eq 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account");
  $u = RT::User->new($RT::SystemUser);
 ok ($tick->Id, "found ticket ".$tick->Id);
 ok ($tick->Subject eq 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account");
  $u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist@example.com');
+$u->Load("doesnotexist\@$RT::rtname");
 ok( $u->Id != 0, " user does not exist and was created by ticket submission");
 
 # }}}
 ok( $u->Id != 0, " user does not exist and was created by ticket submission");
 
 # }}}
@@ -174,9 +174,9 @@ ok( $u->Id != 0, " user does not exist and was created by ticket submission");
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
-From: doesnotexist-2\@example.com
-To: rt\@example.com
-Subject: [example.com #@{[$tick->Id]}] This is a test of a reply as an unknown user
+From: doesnotexist-2\@$RT::rtname
+To: rt\@$RT::rtname
+Subject: [$RT::rtname #@{[$tick->Id]}] This is a test of a reply as an unknown user
 
 Blah!  (Should not work.)
 Foob!
 
 Blah!  (Should not work.)
 Foob!
@@ -186,7 +186,7 @@ close (MAIL);
 is ($? >> 8, 0, "The mail gateway exited normally. yay");
 
 $u = RT::User->new($RT::SystemUser);
 is ($? >> 8, 0, "The mail gateway exited normally. yay");
 
 $u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist-2@example.com');
+$u->Load('doesnotexist-2@$RT::rtname');
 ok( $u->Id == 0, " user does not exist and was not created by ticket correspondence submission");
 # }}}
 
 ok( $u->Id == 0, " user does not exist and was not created by ticket correspondence submission");
 # }}}
 
@@ -199,9 +199,9 @@ ok ($val, "Granted everybody the right to reply to  tickets - $msg");
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
-From: doesnotexist-2\@example.com
-To: rt\@example.com
-Subject: [example.com #@{[$tick->Id]}] This is a test of a reply as an unknown user
+From: doesnotexist-2\@$RT::rtname
+To: rt\@$RT::rtname
+Subject: [$RT::rtname #@{[$tick->Id]}] This is a test of a reply as an unknown user
 
 Blah!
 Foob!
 
 Blah!
 Foob!
@@ -212,7 +212,7 @@ is ($? >> 8, 0, "The mail gateway exited normally. yay");
 
 
 $u = RT::User->new($RT::SystemUser);
 
 
 $u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist-2@example.com');
+$u->Load("doesnotexist-2\@$RT::rtname");
 ok( $u->Id != 0, " user exists and was created by ticket correspondence submission");
 
 # }}}
 ok( $u->Id != 0, " user exists and was created by ticket correspondence submission");
 
 # }}}
@@ -225,9 +225,9 @@ ok( $u->Id != 0, " user exists and was created by ticket correspondence submissi
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action comment"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action comment"), "Opened the mailgate - $@");
 print MAIL <<EOF;
-From: doesnotexist-3\@example.com
-To: rt\@example.com
-Subject: [example.com #@{[$tick->Id]}] This is a test of a comment as an unknown user
+From: doesnotexist-3\@$RT::rtname
+To: rt\@$RT::rtname
+Subject: [$RT::rtname #@{[$tick->Id]}] This is a test of a comment as an unknown user
 
 Blah!  (Should not work.)
 Foob!
 
 Blah!  (Should not work.)
 Foob!
@@ -238,7 +238,7 @@ close (MAIL);
 is ($? >> 8, 0, "The mail gateway exited normally. yay");
 
 $u = RT::User->new($RT::SystemUser);
 is ($? >> 8, 0, "The mail gateway exited normally. yay");
 
 $u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist-3@example.com');
+$u->Load("doesnotexist-3\@$RT::rtname");
 ok( $u->Id == 0, " user does not exist and was not created by ticket comment submission");
 
 # }}}
 ok( $u->Id == 0, " user does not exist and was not created by ticket comment submission");
 
 # }}}
@@ -250,9 +250,9 @@ ok ($val, "Granted everybody the right to reply to  tickets - $msg");
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action comment"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action comment"), "Opened the mailgate - $@");
 print MAIL <<EOF;
-From: doesnotexist-3\@example.com
-To: rt\@example.com
-Subject: [example.com #@{[$tick->Id]}] This is a test of a comment as an unknown user
+From: doesnotexist-3\@$RT::rtname
+To: rt\@$RT::rtname
+Subject: [$RT::rtname #@{[$tick->Id]}] This is a test of a comment as an unknown user
 
 Blah!
 Foob!
 
 Blah!
 Foob!
@@ -263,7 +263,7 @@ close (MAIL);
 is ($? >> 8, 0, "The mail gateway exited normally. yay");
 
 $u = RT::User->new($RT::SystemUser);
 is ($? >> 8, 0, "The mail gateway exited normally. yay");
 
 $u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist-3@example.com');
+$u->Load("doesnotexist-3\@$RT::rtname");
 ok( $u->Id != 0, " user exists and was created by ticket comment submission");
 
 # }}}
 ok( $u->Id != 0, " user exists and was created by ticket comment submission");
 
 # }}}
@@ -351,7 +351,7 @@ ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --act
                                                                          
 print MAIL <<EOF;
 From: root\@localhost
                                                                          
 print MAIL <<EOF;
 From: root\@localhost
-To: rtemail\@example.com
+To: rtemail\@$RT::rtname
 Subject: This is a test of I18N ticket creation
 Content-Type: text/plain; charset="utf-8"
 
 Subject: This is a test of I18N ticket creation
 Content-Type: text/plain; charset="utf-8"
 
@@ -385,7 +385,7 @@ ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --act
                                                                          
 print MAIL <<EOF;
 From: root\@localhost
                                                                          
 print MAIL <<EOF;
 From: root\@localhost
-To: rtemail\@example.com
+To: rtemail\@$RT::rtname
 Subject: This is a test of I18N ticket creation
 Content-Type: text/plain; charset="utf-8"
 
 Subject: This is a test of I18N ticket creation
 Content-Type: text/plain; charset="utf-8"
 
@@ -436,7 +436,7 @@ is( $tick->Owner, $RT::Nobody->Id, 'owner of the new ticket is nobody' );
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action take"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 From: root\@localhost
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action take"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 From: root\@localhost
-Subject: [example.com \#$id] test
+Subject: [$RT::rtname \#$id] test
 
 EOF
 close (MAIL);
 
 EOF
 close (MAIL);
@@ -461,7 +461,7 @@ is( $tick->Owner, $RT::Nobody->Id, 'set owner back to nobody');
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action take-correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 From: root\@localhost
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action take-correspond"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 From: root\@localhost
-Subject: [example.com \#$id] correspondence
+Subject: [$RT::rtname \#$id] correspondence
 
 test
 EOF
 
 test
 EOF
@@ -474,14 +474,14 @@ is( $tick->Id, $id, 'load correct ticket');
 is( $tick->OwnerObj->EmailAddress, 'root@localhost', 'successfuly take ticket via email');
 my $txns = $tick->Transactions;
 $txns->Limit( FIELD => 'Type', VALUE => 'Correspond');
 is( $tick->OwnerObj->EmailAddress, 'root@localhost', 'successfuly take ticket via email');
 my $txns = $tick->Transactions;
 $txns->Limit( FIELD => 'Type', VALUE => 'Correspond');
-is( $txns->Last->Subject, "[example.com \#$id] correspondence", 'successfuly add correspond within take via email' );
+is( $txns->Last->Subject, "[$RT::rtname \#$id] correspondence", 'successfuly add correspond within take via email' );
 # +1 because of auto open
 is( $tick->Transactions->Count, 6, 'no superfluous transactions');
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action resolve"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 From: root\@localhost
 # +1 because of auto open
 is( $tick->Transactions->Count, 6, 'no superfluous transactions');
 
 ok(open(MAIL, "|$RT::BinPath/rt-mailgate --url $RT::WebURL --queue general --action resolve"), "Opened the mailgate - $@");
 print MAIL <<EOF;
 From: root\@localhost
-Subject: [example.com \#$id] test
+Subject: [$RT::rtname \#$id] test
 
 EOF
 close (MAIL);
 
 EOF
 close (MAIL);
index bb1ccdc..e30a59b 100644 (file)
@@ -49,9 +49,9 @@ is($agent->{'status'}, 200, "Fetched the page ok");
 ok($agent->{'content'} =~ /Logout/i, "Found a logout link");
 
 # Test for absence of Configure and Preferences tabs.
 ok($agent->{'content'} =~ /Logout/i, "Found a logout link");
 
 # Test for absence of Configure and Preferences tabs.
-ok(!$agent->find_link( url => '/Admin/',
+ok(!$agent->find_link( url => "$RT::WebPath/Admin/",
                       text => 'Configuration'), "No config tab" );
                       text => 'Configuration'), "No config tab" );
-ok(!$agent->find_link( url => '/User/Prefs.html',
+ok(!$agent->find_link( url => "$RT::WebPath/User/Prefs.html",
                       text => 'Preferences'), "No prefs pane" );
 
 # Now test for their presence, one at a time.  Sleep for a bit after
                       text => 'Preferences'), "No prefs pane" );
 
 # Now test for their presence, one at a time.  Sleep for a bit after
@@ -59,18 +59,18 @@ ok(!$agent->find_link( url => '/User/Prefs.html',
 $user_obj->PrincipalObj->GrantRight(Right => 'ShowConfigTab');
 $agent->reload();
 ok($agent->{'content'} =~ /Logout/i, "Reloaded page successfully");
 $user_obj->PrincipalObj->GrantRight(Right => 'ShowConfigTab');
 $agent->reload();
 ok($agent->{'content'} =~ /Logout/i, "Reloaded page successfully");
-ok($agent->find_link( url => '/Admin/',
+ok($agent->find_link( url => "$RT::WebPath/Admin/",
                       text => 'Configuration'), "Found config tab" );
 $user_obj->PrincipalObj->RevokeRight(Right => 'ShowConfigTab');
 $user_obj->PrincipalObj->GrantRight(Right => 'ModifySelf');
 $agent->reload();
 ok($agent->{'content'} =~ /Logout/i, "Reloaded page successfully");
                       text => 'Configuration'), "Found config tab" );
 $user_obj->PrincipalObj->RevokeRight(Right => 'ShowConfigTab');
 $user_obj->PrincipalObj->GrantRight(Right => 'ModifySelf');
 $agent->reload();
 ok($agent->{'content'} =~ /Logout/i, "Reloaded page successfully");
-ok($agent->find_link( url => '/User/Prefs.html',
+ok($agent->find_link( url => "$RT::WebPath/User/Prefs.html",
                       text => 'Preferences'), "Found prefs pane" );
 $user_obj->PrincipalObj->RevokeRight(Right => 'ModifySelf');
 
 # Good.  Now load the search page and test Load/Save Search.
                       text => 'Preferences'), "Found prefs pane" );
 $user_obj->PrincipalObj->RevokeRight(Right => 'ModifySelf');
 
 # Good.  Now load the search page and test Load/Save Search.
-$agent->follow_link( url => '/Search/Build.html',
+$agent->follow_link( url => "$RT::WebPath/Search/Build.html",
                     text => 'Tickets');
 is($agent->{'status'}, 200, "Fetched search builder page");
 ok($agent->{'content'} !~ /Load saved search/i, "No search loading box");
                     text => 'Tickets');
 is($agent->{'status'}, 200, "Fetched search builder page");
 ok($agent->{'content'} !~ /Load saved search/i, "No search loading box");
index 4764b49..d346277 100644 (file)
@@ -45,7 +45,7 @@
 # 
 # END BPS TAGGED BLOCK }}}
 
 # 
 # END BPS TAGGED BLOCK }}}
 
-use Test::More tests => 14;
+use Test::More tests => 26;
 use RT;
 RT::LoadConfig();
 RT::Init();
 use RT;
 RT::LoadConfig();
 RT::Init();
@@ -108,3 +108,33 @@ is( $ticket->Owner, $user_id, "set correct owner" );
 
 ok( $user->HasRight( Right => 'ReplyToTicket', Object => $ticket ), "user is owner and can reply to ticket" );
 
 
 ok( $user->HasRight( Right => 'ReplyToTicket', Object => $ticket ), "user is owner and can reply to ticket" );
 
+# Testing of EquivObjects
+$group = RT::Group->new( $RT::SystemUser );
+ok( $group->LoadQueueRoleGroup( Queue => $queue_id, Type=> 'AdminCc' ), "load queue AdminCc role group" );
+$ace = RT::ACE->new( $RT::SystemUser );
+my ($ace_id, $msg) = $group->PrincipalObj->GrantRight( Right => 'ModifyTicket', Object => $queue );
+ok( $ace_id, "Granted queue AdminCc role group with ModifyTicket right: $msg" );
+ok( $group->PrincipalObj->HasRight( Right => 'ModifyTicket', Object => $queue ), "role group can modify ticket" );
+ok( !$user->HasRight( Right => 'ModifyTicket', Object => $ticket ), "user is not AdminCc and can't modify ticket" );
+($status, $msg) = $ticket->AddWatcher(Type => 'AdminCc', PrincipalId => $user->PrincipalId);
+ok( $status, "successfuly added user as AdminCc");
+ok( $user->HasRight( Right => 'ModifyTicket', Object => $ticket ), "user is AdminCc and can modify ticket" );
+
+my $ticket2 = RT::Ticket->new($RT::SystemUser);
+my ($ticket2_id) = $ticket2->Create( Queue => $queue_id, Subject => 'test2');
+ok( $ticket2_id, 'new ticket created' );
+ok( !$user->HasRight( Right => 'ModifyTicket', Object => $ticket2 ), "user is not AdminCc and can't modify ticket2" );
+
+# now we can finally test EquivObjects
+my $equiv = [ $ticket ];
+ok( $user->HasRight( Right => 'ModifyTicket', Object => $ticket2, EquivObjects => $equiv ), 
+    "user is not AdminCc but can modify ticket2 because of EquivObjects" );
+
+# the first a third test below are the same, so they should both pass
+my $equiv2 = [];
+ok( !$user->HasRight( Right => 'ModifyTicket', Object => $ticket2, EquivObjects => $equiv2 ), 
+    "user is not AdminCc and can't modify ticket2" );
+ok( $user->HasRight( Right => 'ModifyTicket', Object => $ticket, EquivObjects => $equiv2 ), 
+    "user is AdminCc and can modify ticket" );
+ok( !$user->HasRight( Right => 'ModifyTicket', Object => $ticket2, EquivObjects => $equiv2 ), 
+    "user is not AdminCc and can't modify ticket2 (same question different answer)" );
index 1428a28..78f111b 100644 (file)
@@ -2,7 +2,7 @@
 
 use strict;
 use warnings FATAL => 'all';
 
 use strict;
 use warnings FATAL => 'all';
-use Test::More tests => 131;
+use Test::More tests => 133;
 
 use RT;
 RT::LoadConfig();
 
 use RT;
 RT::LoadConfig();
@@ -21,6 +21,9 @@ my $queue = RT::Queue->new( $RT::SystemUser );
 $queue->Create( Name => 'RecordCustomFields-'.$$ );
 ok ($queue->id, "Created the queue");
 
 $queue->Create( Name => 'RecordCustomFields-'.$$ );
 ok ($queue->id, "Created the queue");
 
+my $queue2 = RT::Queue->new( $RT::SystemUser );
+$queue2->Create( Name => 'RecordCustomFields2' );
+
 my $ticket = RT::Ticket->new( $RT::SystemUser );
 $ticket->Create(
        Queue => $queue->Id,
 my $ticket = RT::Ticket->new( $RT::SystemUser );
 $ticket->Create(
        Queue => $queue->Id,
@@ -51,6 +54,11 @@ $global_cf3->Create( Name => 'RecordCustomFields3-'.$$, Type => 'SelectSingle',
 $global_cf3->AddValue( Name => 'RecordCustomFieldValues31' );
 $global_cf3->AddValue( Name => 'RecordCustomFieldValues32' );
 
 $global_cf3->AddValue( Name => 'RecordCustomFieldValues31' );
 $global_cf3->AddValue( Name => 'RecordCustomFieldValues32' );
 
+my $local_cf4 = RT::CustomField->new( $RT::SystemUser );
+$local_cf4->Create( Name => 'RecordCustomFields4', Type => 'SelectSingle', Queue => $queue2->id );
+$local_cf4->AddValue( Name => 'RecordCustomFieldValues41' );
+$local_cf4->AddValue( Name => 'RecordCustomFieldValues42' );
+
 
 my @custom_fields = ($local_cf1, $local_cf2, $global_cf3);
 
 
 my @custom_fields = ($local_cf1, $local_cf2, $global_cf3);
 
@@ -178,6 +186,14 @@ $test_add_delete_cycle->( sub { return $_[0]->id } );
 # lets test cycle via CF object reference
 $test_add_delete_cycle->( sub { return $_[0] } );
 
 # lets test cycle via CF object reference
 $test_add_delete_cycle->( sub { return $_[0] } );
 
+$ticket->AddCustomFieldValue( Field => $local_cf2->id , Value => 'Baz' );
+$ticket->AddCustomFieldValue( Field => $global_cf3->id , Value => 'Baz' );
+# now if we ask for cf values on RecordCustomFields4 we should not get any
+$cfvs = $ticket->CustomFieldValues( 'RecordCustomFields4' );
+is( $cfvs->Count, 0, "No custom field values for non-Queue cf" );
+is( $ticket->FirstCustomFieldValue( 'RecordCustomFields4' ), undef, "No first custom field value for non-Queue cf" );
+
+
 #SKIP: {
 #      skip "TODO: should we add CF values to objects via CF Name?", 48;
 # names are not unique
 #SKIP: {
 #      skip "TODO: should we add CF values to objects via CF Name?", 48;
 # names are not unique
diff --git a/rt/lib/t/regression/14linking.t b/rt/lib/t/regression/14linking.t
new file mode 100644 (file)
index 0000000..6fdf614
--- /dev/null
@@ -0,0 +1,143 @@
+use Test::More  tests => '39';
+use_ok('RT');
+use_ok('RT::Ticket');
+use_ok('RT::ScripConditions');
+use_ok('RT::ScripActions');
+use_ok('RT::Template');
+use_ok('RT::Scrips');
+use_ok('RT::Scrip');
+RT::LoadConfig();
+RT::Init();
+
+use File::Temp qw/tempfile/;
+my ($fh, $filename) = tempfile( UNLINK => 1, SUFFIX => '.rt');
+my $link_scrips_orig = $RT::LinkTransactionsRun1Scrip;
+$RT::LinkTransactionsRun1Scrip = 1;
+
+my $condition = RT::ScripCondition->new( $RT::SystemUser );
+$condition->Load('User Defined');
+ok($condition->id);
+my $action = RT::ScripAction->new( $RT::SystemUser );
+$action->Load('User Defined');
+ok($action->id);
+my $template = RT::Template->new( $RT::SystemUser );
+$template->Load('Blank');
+ok($template->id);
+
+my $q1 = RT::Queue->new($RT::SystemUser);
+my ($id,$msg) = $q1->Create(Name => "LinkTest1.$$");
+ok ($id,$msg);
+my $q2 = RT::Queue->new($RT::SystemUser);
+($id,$msg) = $q2->Create(Name => "LinkTest2.$$");
+ok ($id,$msg);
+
+my $commit_code = <<END;
+open(FILE, "<$filename");
+my \$data = <FILE>;
+chomp \$data;
+close FILE;
+open(FILE, ">$filename");
+if (\$self->TransactionObj->Type eq 'AddLink') {
+    print FILE \$data+1, "\n";
+}
+else {
+    print FILE \$data-1, "\n";
+}
+close FILE;
+1;
+END
+
+my $Scrips = RT::Scrips->new( $RT::SystemUser );
+$Scrips->UnLimit;
+while ( my $Scrip = $Scrips->Next ) {
+    $Scrip->Delete if $Scrip->Description =~ /Add or Delete Link \d+/;
+}
+
+
+my $scrip = RT::Scrip->new($RT::SystemUser);
+($id,$msg) = $scrip->Create( Description => "Add or Delete Link $$",
+                          ScripCondition => $condition->id,
+                          ScripAction    => $action->id,
+                          Template       => $template->id,
+                          Stage          => 'TransactionCreate',
+                          Queue          => 0,
+                  CustomIsApplicableCode => '$self->TransactionObj->Type =~ /(Add|Delete)Link/;',
+                       CustomPrepareCode => '1;',
+                       CustomCommitCode  => $commit_code,
+                           );
+ok($id, "Scrip created");
+
+my $u1 = RT::User->new($RT::SystemUser);
+($id,$msg) =$u1->Create(Name => "LinkTestUser.$$");
+
+ok ($id,$msg);
+
+($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q1, Right => 'CreateTicket');
+ok ($id,$msg);
+($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q1, Right => 'ModifyTicket');
+ok ($id,$msg);
+
+my $tid;
+
+my $creator = RT::CurrentUser->new($u1->id);
+
+my $ticket = RT::Ticket->new( $creator);
+ok($ticket->isa('RT::Ticket'));
+($id,$tid, $msg) = $ticket->Create(Subject => 'Link test 1', Queue => $q1->id);
+ok ($id,$msg);
+
+
+my $ticket2 = RT::Ticket->new($RT::SystemUser);
+($id, $tid, $msg) = $ticket2->Create(Subject => 'Link test 2', Queue => $q2->id);
+ok ($id, $msg);
+
+($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => $ticket2->id);
+ok(!$id,$msg);
+ok(link_count($filename) == 0, "scrips ok");
+($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q2, Right => 'CreateTicket');
+ok ($id,$msg);
+($id,$msg) = $u1->PrincipalObj->GrantRight ( Object => $q2, Right => 'ModifyTicket');
+ok ($id,$msg);
+($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => $ticket2->id);
+ok($id,$msg);
+ok(link_count($filename) == 1, "scrips ok");
+($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => -1);
+ok(!$id,$msg);
+ok(link_count($filename) == 1, "scrips ok");
+
+my $transactions = $ticket2->Transactions;
+$transactions->Limit( FIELD => 'Type', VALUE => 'AddLink' );
+ok( $transactions->Count == 1, "Transaction found in other ticket" );
+ok( $transactions->First->Field eq 'ReferredToBy');
+ok( $transactions->First->NewValue eq $ticket->URI );
+
+($id,$msg) =$ticket->DeleteLink(Type => 'RefersTo', Target => $ticket2->id);
+ok($id,$msg);
+ok(link_count($filename) == 0, "scrips ok");
+$transactions = $ticket2->Transactions;
+$transactions->Limit( FIELD => 'Type', VALUE => 'DeleteLink' );
+ok( $transactions->Count == 1, "Transaction found in other ticket" );
+ok( $transactions->First->Field eq 'ReferredToBy');
+ok( $transactions->First->OldValue eq $ticket->URI );
+
+$RT::LinkTransactionsRun1Scrip = 0;
+($id,$msg) =$ticket->AddLink(Type => 'RefersTo', Target => $ticket2->id);
+ok($id,$msg);
+ok(link_count($filename) == 2, "scrips ok");
+($id,$msg) =$ticket->DeleteLink(Type => 'RefersTo', Target => $ticket2->id);
+ok($id,$msg);
+ok(link_count($filename) == 0, "scrips ok");
+
+# restore
+$RT::LinkTransactionsRun1Scrip = $link_scrips_orig;
+
+sub link_count {
+
+    my $file = shift;
+    open(FILE, "<$file");
+    my $data = <FILE>;
+    chomp $data;
+    return $data + 0;
+    close FILE;
+
+}
index 54dad98..958273c 100644 (file)
@@ -1,6 +1,6 @@
 #use Test::More tests => 26;
 use Test::More qw/no_plan/;
 #use Test::More tests => 26;
 use Test::More qw/no_plan/;
-
+$ENV{'TZ'} = 'GMT';
 use RT;
 RT::LoadConfig();
 RT::Init();
 use RT;
 RT::LoadConfig();
 RT::Init();
diff --git a/rt/lib/t/regression/22search_tix_by_watcher.t b/rt/lib/t/regression/22search_tix_by_watcher.t
new file mode 100644 (file)
index 0000000..dd87de9
--- /dev/null
@@ -0,0 +1,215 @@
+#!/usr/bin/perl -w
+use strict;
+use warnings;
+
+use Test::More qw/no_plan/;
+use_ok('RT');
+RT::LoadConfig();
+RT::Init();
+use RT::Ticket;
+
+my $q = RT::Queue->new($RT::SystemUser);
+my $queue = 'SearchTests-'.rand(200);
+$q->Create(Name => $queue);
+
+my @data = (
+    { Subject => '1', Requestor => 'bravo@example.com' },
+    { Subject => '2', Cc => 'alpha@example.com' },
+);
+
+my $total = 0;
+
+sub add_tix_from_data {
+    my @res = ();
+    while (@data) {
+        my $t = RT::Ticket->new($RT::SystemUser);
+        my ( $id, undef $msg ) = $t->Create(
+            Queue => $q->id,
+            %{ shift(@data) },
+        );
+        ok( $id, "ticket created" ) or diag("error: $msg");
+        push @res, $t;
+        $total++;
+    }
+    return @res;
+}
+add_tix_from_data();
+
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue'");
+    is($tix->Count, $total, "found $total tickets");
+}
+
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Requestor = 'bravo\@example.com'");
+    is($tix->Count, 1, "found ticket(s)");
+    is($tix->First->RequestorAddresses, 'bravo@example.com',"correct requestor");
+}
+
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Cc = 'alpha\@example.com'");
+    is($tix->Count, 1, "found ticket(s)");
+    is($tix->First->CcAddresses, 'alpha@example.com', "correct Cc");
+}
+
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND (Cc = 'alpha\@example.com' OR Requestor = 'bravo\@example.com')");
+    is($tix->Count, 2, "found ticket(s)");
+    my @mails;
+    while (my $t = $tix->Next) {
+        push @mails, $t->RequestorAddresses;
+        push @mails, $t->CcAddresses;
+    }
+    @mails = sort grep $_, @mails;
+    is_deeply(\@mails, ['alpha@example.com', 'bravo@example.com'], "correct addresses");
+}
+
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND (Cc = 'alpha\@example.com' AND Requestor = 'bravo\@example.com')");
+    is($tix->Count, 0, "found ticket(s)");
+}
+
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Cc != 'alpha\@example.com'");
+    is($tix->Count, 1, "found ticket(s)");
+    is($tix->First->RequestorAddresses, 'bravo@example.com',"correct requestor");
+}
+
+@data = ( { Subject => '3' } );
+add_tix_from_data();
+
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Cc != 'alpha\@example.com'");
+    is($tix->Count, 2, "found ticket(s)");
+    my @mails;
+    while (my $t = $tix->Next) { push @mails, ($t->CcAddresses||'') }
+    is( scalar(grep 'alpha@example.com' eq $_, @mails), 0, "no tickets with non required data");
+}
+
+{
+    # has no requestor search
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Requestor IS NULL");
+    is($tix->Count, 2, "found ticket(s)");
+    my @mails;
+    while (my $t = $tix->Next) { push @mails, ($t->RequestorAddresses||'') }
+    is( scalar(grep $_, @mails), 0, "no tickets with non required data");
+}
+
+{
+    # has at least one requestor search
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Requestor IS NOT NULL");
+    is($tix->Count, 1, "found ticket(s)");
+    my @mails;
+    while (my $t = $tix->Next) { push @mails, ($t->RequestorAddresses||'') }
+    is( scalar(grep !$_, @mails), 0, "no tickets with non required data");
+}
+
+@data = ( { Subject => '3', Requestor => 'charly@example.com' } );
+add_tix_from_data();
+
+{
+    # has no requestor search
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND
+                   (Requestor = 'bravo\@example.com' OR Requestor = 'charly\@example.com')");
+    is($tix->Count, 2, "found ticket(s)");
+    my @mails;
+    while (my $t = $tix->Next) { push @mails, ($t->RequestorAddresses||'') }
+    is_deeply( [sort @mails],
+               ['bravo@example.com', 'charly@example.com'],
+               "requestor addresses are correct"
+             );
+}
+
+# owner is special watcher because reference is duplicated in two places,
+# owner was an ENUM field now it's WATCHERFIELD, but should support old
+# style ENUM searches for backward compatibility
+my $nobody = RT::Nobody();
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Owner = '". $nobody->id ."'");
+    is($tix->Count, 4, "found ticket(s)");
+}
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Owner = '". $nobody->Name ."'");
+    is($tix->Count, 4, "found ticket(s)");
+}
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Owner != '". $nobody->id ."'");
+    is($tix->Count, 0, "found ticket(s)");
+}
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Owner != '". $nobody->Name ."'");
+    is($tix->Count, 0, "found ticket(s)");
+}
+
+{
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Owner.Name LIKE 'nob'");
+    is($tix->Count, 4, "found ticket(s)");
+}
+
+{
+    # create ticket and force type to not a 'ticket' value
+    # bug #6898@rt3.fsck.com
+    # and http://marc.theaimsgroup.com/?l=rt-devel&m=112662934627236&w=2
+    @data = ( { Subject => 'not a ticket' } );
+    my($t) = add_tix_from_data();
+    $t->_Set( Field             => 'Type',
+              Value             => 'not a ticket',
+              CheckACL          => 0,
+              RecordTransaction => 0,
+            );
+    $total--;
+
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND Owner = 'Nobody'");
+    is($tix->Count, 4, "found ticket(s)");
+}
+
+{
+    my $everyone = RT::Group->new( $RT::SystemUser );
+    $everyone->LoadSystemInternalGroup('Everyone');
+    ok($everyone->id, "loaded 'everyone' group");
+    my($id, $msg) = $everyone->PrincipalObj->GrantRight( Right => 'OwnTicket',
+                                                         Object => $q
+                                                       );
+    ok($id, "granted OwnTicket right to Everyone on '$queue'") or diag("error: $msg");
+
+    my $u = RT::User->new( $RT::SystemUser );
+    $u->LoadByCols( EmailAddress => 'alpha@example.com' );
+    ok($u->id, "loaded user");
+    @data = ( { Subject => '4', Owner => $u->id } );
+    my($t) = add_tix_from_data();
+    is( $t->Owner, $u->id, "created ticket with custom owner" );
+    my $u_alpha_id = $u->id;
+
+    $u = RT::User->new( $RT::SystemUser );
+    $u->LoadByCols( EmailAddress => 'bravo@example.com' );
+    ok($u->id, "loaded user");
+    @data = ( { Subject => '5', Owner => $u->id } );
+    ($t) = add_tix_from_data();
+    is( $t->Owner, $u->id, "created ticket with custom owner" );
+    my $u_bravo_id = $u->id;
+
+    my $tix = RT::Tickets->new($RT::SystemUser);
+    $tix->FromSQL("Queue = '$queue' AND
+                   ( Owner = '$u_alpha_id' OR
+                     Owner = '$u_bravo_id' )"
+                 );
+    is($tix->Count, 2, "found ticket(s)");
+}
+
+exit(0)
index 01c7b3c..c432cc9 100644 (file)
@@ -130,7 +130,14 @@ if ( $args{'action'} eq 'init' ) {
     unless ($RT::DatabaseType eq 'SQLite') {
 
         $dbh->disconnect;
     unless ($RT::DatabaseType eq 'SQLite') {
 
         $dbh->disconnect;
+
+       if ($RT::DatabaseType eq "Oracle") {
+        $RT::DatabasePassword = $RT::DatabasePassword; #Warning avidance
+        $dbh = DBI->connect( $Handle->DSN, ${RT::DatabaseUser}, ${RT::DatabasePassword} ) || die $DBI::errstr;
+       } else {
+       
         $dbh = DBI->connect( $Handle->DSN, $args{'dba'}, $args{'dba-password'} ) || die $DBI::errstr;
         $dbh = DBI->connect( $Handle->DSN, $args{'dba'}, $args{'dba-password'} ) || die $DBI::errstr;
+       }
     }
     print "Now populating database schema.\n";
     insert_schema();
     }
     print "Now populating database schema.\n";
     insert_schema();
index f79e4e5..ce1f441 100644 (file)
@@ -153,7 +153,7 @@ Digest::MD5 2.27
 DBI 1.37
 Test::Inline
 Class::ReturnValue 0.40
 DBI 1.37
 Test::Inline
 Class::ReturnValue 0.40
-DBIx::SearchBuilder 1.26
+DBIx::SearchBuilder 1.35
 Text::Template
 File::Spec 0.8
 HTML::Entities 
 Text::Template
 File::Spec 0.8
 HTML::Entities